我希望能够使用 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}