`subfig` 和 `ifthen` 中的包冲突

`subfig` 和 `ifthen` 中的包冲突

梅威瑟:

\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:编译错误消失,但输出错误。

在此处输入图片描述

相关内容