2020 年秋季 LaTeX 发布后,表格中 \input 出现 \noalign 错误

2020 年秋季 LaTeX 发布后,表格中 \input 出现 \noalign 错误

随着 2020 年秋季更新,的行为发生了\input{}变化。以前,我会有一个主 latex 文档 ( main.tex),然后在另一个文件 ( table.tex) 中保存表格内容。重要的是,该文件table.tex可以位于我的 PC 上的任何位置,因为我可以添加命令\input经过的目录。所以我的设置如下所示:

main.tex 文件:

\documentclass[11pt, a4paper]{article}  

\makeatletter
\providecommand*{\input@path}{}
\g@addto@macro\input@path{{"C:/Users/me/inpath/"}}% \input finds files in this directory
\makeatother

\begin{document}

\begin{tabular}{lll}
\hline
\input{table.tex}
\hline
\end{tabular}

\end{document}

然后文件 table.tex 将被放置在目录“C:/Users/me/inpath/”中:

1 & 2 \\
3 & 4 \\

不幸的是,这种设置不再有效。我的问题是:复制此行为的最佳方法是什么?目前,我的解决方案是将其更改为main.tex

\documentclass[11pt, a4paper]{article}      

\newcommand{\inpath}{"C:/Users/me/inpath/"}

\makeatletter\let\expandableinput\@@input\makeatother



\begin{document}

\begin{tabular}{lll}
\hline
\expandableinput{\inpath table.tex}
\hline
\end{tabular}



%%% Or alternatively
\begin{tabular}{lll}
\hline
\input \inpath table.tex
\hline
\end{tabular}

\end{document}

有没有更优雅的方法来实现这一点?与 latex fall 更新之前的工作方式类似的解决方案?我可以在其中告诉 TeX 原语\@@input在哪里查找文件?到目前为止,我发现的信息这里这里

答案1

LaTeX\input在表格中总是很棘手,因为它从来都不可扩展,然后在表格单元格的开头有时无法正常工作,所以它从未得到完全支持。现在这已经中断了,因为代码必须\input做一些簿记该文件被读取(之前不存在),这会中断对的扫描\noalign,然后当\hline出现时\noalign,会出现在意想不到的地方。

您可以使用可扩展的\input' expl3s\file_full_name:n来查找\input@path,并\@@input以可扩展的方式读取文件。这在某种程度上(但不完全)等同于 LaTeX\input过去所做的(当然,没有文件挂钩):

\ExplSyntaxOn
\cs_new:Npn \expandableinput #1
  { \use:c { @@input } { \file_full_name:n {#1} } }
\ExplSyntaxOff

这是可编译的示例:

\begin{filecontents}{table.tex}
1 & 2 \\
3 & 4 \\
\end{filecontents}

\documentclass[11pt, a4paper]{article}

\ExplSyntaxOn % providing \expandableinput
\cs_new:Npn \expandableinput #1
  { \use:c { @@input } { \file_full_name:n {#1} } }
\ExplSyntaxOff

\makeatletter % setting your search path
\providecommand*{\input@path}{}
\g@addto@macro\input@path{{"C:/Users/me/inpath/"}}% \input finds files in this directory
\makeatother

\begin{document}

\begin{tabular}{lll}
\hline
% \input{table.tex}
\expandableinput{table.tex}
\hline
\end{tabular}

\end{document}

在此处输入图片描述

相关内容