梅威瑟:
\documentclass{article}
\usepackage{subfig}
\usepackage{ifthen}
\begin{document}
\begin{figure}
\subfloat[\ifthenelse{1>0}{foo}{bar}]{\rule{3cm}{3cm}}
\end{figure}
\end{document}
错误消息:
! \sf@captionlist 定义中的参数数量非法。
l.6 ...ifthenelse{1>0}{foo}{bar}]{\rule{3cm}{3cm}}
\subfloat[][\ifthenelse{1>0}{foo}{bar}]{\rule{3cm}{3cm}}
如果需要在文档中显示图列表,这种方法效果很好。但是,如果我确实需要图列表,有人能为我解释一下这种冲突是如何发生的以及如何避免吗?
答案1
由于这两个命令的工作方式,您不能\ifthenelse
输入可选参数。在前面添加似乎是一种很好的解决方法,但它不起作用(请参阅后面的输出)。\subfloat
\protect
\ifthenelse
如果您需要可选参数中的条件\subfloat
,则可以使用etoolbox
;例如
\documentclass{article}
\usepackage{subfig}
\usepackage{etoolbox}
\begin{document}
\begin{figure}
\subfloat[\ifnumcomp{1}{>}{0}{foo}{bar}]{\rule{3cm}{3cm}}
\end{figure}
\end{document}
其中有很多,请参阅文档中的第 3.6 节。
\protect
这是在代码前面添加后的输出\ifthenelse
:编译错误消失,但输出错误。