假设我有大量.tex
文件,名称为1.tex
,2.tex
,...
,N.tex
(其中N
= 某个整数)。
我想编写一个 LaTeX 文档,在其中设置一些参数,例如:
howMany = 10, from = 21
然后,当我编译此文件时,我获得了包含输入文件、、、21.tex
的内容的 pdf 输出。如果或我想在 pdf 输出中显示一些错误消息。22.tex
...
30.tex
howMany > N
from + howMany > N
用 LaTeX 可以做到这一点吗?
答案1
是的!我定义了一个命令\MultiInput[<ini>]{<num>}{<name template>}
,它从<ini>
(默认为1
)循环到<ini>+<num>-1
,用当前数字替换#1
in<name template>
并检查文件是否存在。如果存在,则文件已输入,否则它会打印!ERROR!
到 PDF 文件并在控制台中显示错误消息。
下面的代码产生:
\RequirePackage{filecontents}
\begin{filecontents}{file_1.tex}
Hello
\end{filecontents}
\begin{filecontents}{file_2.tex}
World
\end{filecontents}
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand \MultiInput { O{1} m m }
{
\int_step_inline:nnn {#1} {#1+#2-1}
{
\file_if_exist:nTF {#3}
{ \input {#3} }
{
!ERROR!
\msg_error:nnn { azonips } { file-not-found } {#3}
}
}
}
\msg_new:nnn { azonips } { file-not-found }
{ File~`#1'~not~found. }
\ExplSyntaxOff
\begin{document}
\MultiInput{1}{file_#1.tex}
\MultiInput{2}{file_#1.tex}
\MultiInput{3}{file_#1.tex}
\MultiInput[2]{1}{file_#1.tex}
\end{document}