我想知道为什么当我尝试使用 \input 命令向表格添加标题时会出现错误。下面是一个最小示例。文件 cap2test.tex 可以是任何文本文件。例如,我的只包含字符“前三个”
\documentclass{article}
\begin{document}
\begin{table}
\caption{\input{cap2test.tex}}
\begin{tabular}{c}
asd
\end{tabular}
\end{table}
\end{document}
对于其他人来说,错误可能也是相同的:
./test.tex:4: \@caption 的参数有一个额外的 }。\par l.4 \caption{\input cap2test.tex}
我还要补充一点,多年来我一直遇到这样的错误,通常通过不以这种方式模块化我的表格或图形来解决这个问题。这是一个错误吗?
尼古拉
答案1
命令参数中的非健壮宏(或用 LaTeX 术语来说为“脆弱”宏)将引发此错误。必须编辑\caption
参数中的非健壮命令以避免收到错误消息。因此,您应该编写\caption
\protect
\caption{\protect\input{cap2test.tex}}
答案2
您可以使用\DeclareRobustCommand
它来声明可以在标题中使用的命令。
\DeclareRobustCommand{\myname}{\input{cap.tex}}
\documentclass{article}
\begin{document}
\begin{table}
\caption{\myname}
\begin{tabular}{c}
asd
\end{tabular}
\end{table}
\end{document}