\input 与 \hline 结合出现的问题

\input 与 \hline 结合出现的问题

我一直认为这\input完全等同于在主 latex 文件中复制粘贴一些代码。但我目前遇到了这种奇怪的行为。这是一个最小的例子。

我的主要文件是:

\documentclass{article}
\begin{document}
\begin{tabular}{lcc} 
\input{table_file}
\hline
\end{tabular}
\end{document}

输入的文件为table_file.tex

$T$ & 2.3 & 1.3 \\
average &  9.1 & 0.393 \\

编译主 tex 文件会抛出一串错误。以下是日志文件的相关部分:

(./table_file.tex)
! Misplaced \noalign.
\hline ->\noalign 
                  {\ifnum 0=`}\fi \hrule \@height \arrayrulewidth \futurelet...
l.5 \hline

! You can't use `\hrule' here except with leaders.
\hline ->\noalign {\ifnum 0=`}\fi \hrule 
                                         \@height \arrayrulewidth \futurelet...
l.5 \hline

! Missing number, treated as zero.
<to be read again> 
                   \futurelet 
l.5 \hline

! Illegal unit of measure (pt inserted).
<to be read again> 
                   \futurelet 
l.5 \hline
          

我不确定这里发生了什么...如果我尝试将内容复制粘贴table_file.tex到主文件中:

\documentclass{article}
\begin{document}
\begin{tabular}{lcc} 
$T$ & 2.3 & 1.3 \\
average &  9.1 & 0.393 \\
\hline
\end{tabular}
\end{document}

它现在运行完美(日志中没有错误)。

最后(重要)的事情:如果我在没有的情况下编译主文件\hline,则不会出现任何问题。

知道发生了什么事以及如何解决这个问题吗?我非常依赖于将表格行输入表格环境,所以我很想了解是什么造成了这种情况!

答案1

您可以使用“原始\input”:

\begin{filecontents*}{\jobname-table.tex}
$T$ & 2.3 & 1.3 \\
average &  9.1 & 0.393 \\
\end{filecontents*}

\documentclass{article}

\makeatletter
\newcommand\tableinput[1]{\@@input{#1}}
\makeatother

\begin{document}

\begin{tabular}{lcc}
\tableinput{\jobname-table}
\hline
\end{tabular}

\end{document}

在此处输入图片描述

您需要一个相当新的 TeX 发行版才能实现此目的。否则

\makeatletter
\newcommand\tableinput[1]{\@@input #1 }
\makeatother

也应该可以工作。

相关内容