我有一张输入订单表,例如:
\input{something}
\input{another thing}
\input{some other thing}
- ...
我想制作一个类似的命令,\myinput{}
这样如果我使用\myinput{24}
那么它将在主 tex 中输入我的第 24 个 tex。
我知道我可以这样\myinput{}
定义
\ifnum #1=1 \input{...}
\else\ifnum #1=2 \input{...}
\else\ifnum #1=3 \input{...}
\fi
但是这太长了...我怎样才能使这个命令更简短?
答案1
从文件列表中定义一个序列并使用\seq_item:Nn
。
\begin{filecontents*}{aa}
I am file aa
\end{filecontents*}
\begin{filecontents*}{xyz}
I am file xyz
\end{filecontents*}
\begin{filecontents*}{cc}
I am file cc
\end{filecontents*}
\documentclass{article}
\ExplSyntaxOn
\NewDocumentCommand{\varinput}{m}
{
\file_input:n { \seq_item:Nn \g_ngiap_varinput_seq { #1 } }
}
\seq_new:N \g_ngiap_varinput_seq
\NewDocumentCommand{\varinputlist}{m}
{
\seq_gset_from_clist:Nn \g_ngiap_varinput_seq { #1 }
}
\ExplSyntaxOff
\varinputlist{aa,xyz,cc}
\begin{document}
\varinput{1}
\varinput{3}
\varinput{2}
\end{document}