\input
在环境内部使用tabular
似乎并不总是有效,但我不知道为什么。
下面的 MWE 给出了以下错误消息:
! Misplaced \noalign.
\toprule ->\noalign
{\ifnum 0=`}\fi \@aboverulesep =\abovetopsep \global \@b...
l.1 \toprule
文件main.tex
:
\documentclass{standalone}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{ll}
\input{inp}
\end{tabular}
\end{document}
文件inp.tex
:
\toprule
a & b \\
c & d \\
\bottomrule
inp.tex
如果将 的内容粘贴到环境中,文档将正确编译tabular
。这里发生了什么?
\documentclass{standalone}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{ll}
\toprule
a & b \\
c & d \\
\bottomrule
\end{tabular}
\end{document}
编辑:以下问题相关:为什么 \input 不可扩展?
答案1
\input
正在尝试变得智能,而这似乎扰乱了 LaTeX 挑剔的表格定义。
但是您可以从 TeX 访问原始\input
原语,此时危险性较小。
定义后
\makeatletter
\newcommand\primitiveinput[1]
{\@@input #1 }
\makeatother
\primitiveinput
在表格内部使用应该可以。
答案2
有些命令(例如\toprule
、\hline
或 )\multicolumn
必须直接位于单元格的开头。 之前不能有任何内容,这包括 之类的命令\input
。