在标题中使用 \input{}

在标题中使用 \input{}

我想知道为什么当我尝试使用 \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}

相关内容