从外部文件输入数据导致放错位置的 \noalign 错误

从外部文件输入数据导致放错位置的 \noalign 错误

我希望能够使用 python 脚本处理数据并将其写入可导入到 latex 表环境中的外部文件。

数据的格式与主文件中的格式完全相同(每行末尾.tex&, 和分隔),所以我希望能够在编译时使用命令将其直接输入到 latex 源中,但它出现了一个错误的错误并且不显示表格的底部规则。\\\input\noalign

下面是一个使用 的最小工作示例\input,它会产生错误 - 以及一个反例,其中相同的数据直接写入乳胶源,工作正常:

\documentclass{article}
\usepackage{booktabs} 

\begin{filecontents}{test.tab}
1 & 2 & 3 & 4\\
5 & 6 & 7 & 8\\
\end{filecontents}

\begin{document}
\begin{table}[t]
\centering
\caption{Test table (input)}
\begin{tabular}{lrrr} \toprule
test 1 & test 2 & test 3 & test 4\\ \midrule
%
\input{test.tab}
%
\bottomrule
\end{tabular}
\end{table}

\begin{table}[h!]
\centering
\caption{Test table (no input)}
\begin{tabular}{lrrr} \toprule
test 1 & test 2 & test 3 & test 4\\ \midrule
%
1 & 2 & 3 & 4\\
5 & 6 & 7 & 8\\
%
\bottomrule
\end{tabular}
\end{table}
\end{document}

结果是:

在此处输入图片描述

奇怪的是,如果我将整个表格环境放入文件中,然后\input{test.tab}在表环境标签内使用,它可以正常工作:

\begin{filecontents}{test.tab}
\begin{tabular}{lrrr} \toprule
test 1 & test 2 & test 3 & test 4\\ \midrule
%
1 & 2 & 3 & 4\\
5 & 6 & 7 & 8\\
%
\bottomrule
\end{tabular}
\end{filecontents}

但我不想这样做,因为我希望能够轻松地编辑表格本身,并且不想每次进行更改时都必须重新生成所有数据(或手动编辑所有文件)。

是否有一种简单的方法可以使用这样的命令(或类似命令)将数据直接从外部文件输入到表中\input?还是我必须pgfplotstables先使用类似的东西来解析我的数据?

答案1

您需要在那里扩展输入:

\documentclass{article}
\usepackage{booktabs} 

\begin{filecontents}{test.tab}
1 & 2 & 3 & 4\\
5 & 6 & 7 & 8\\
\end{filecontents}

\makeatletter
\def\expinput#1{\@@input#1 }
\makeatother

\begin{document}
\begin{table}[t]
\centering
\caption{Test table (input)}
\begin{tabular}{lrrr} \toprule
test 1 & test 2 & test 3 & test 4\\ \midrule
%
\expinput{test.tab}
%
\bottomrule
\end{tabular}
\end{table}

\begin{table}[h!]
\centering
\caption{Test table (no input)}
\begin{tabular}{lrrr} \toprule
test 1 & test 2 & test 3 & test 4\\ \midrule
%
1 & 2 & 3 & 4\\
5 & 6 & 7 & 8\\
%
\bottomrule
\end{tabular}
\end{table}
\end{document}

在此处输入图片描述

相关内容