传递更多命令行参数

传递更多命令行参数

我是 Latex 的新手。我想将命令行参数(可能更多)传递给\newcommand宏并期望得到如下所示的输出。

if input is 1
      /include {1.tex}  

else if input is 2
      /include {2.tex}
else if input is 3
      /include {3.tex}     
else if input is 1 and 2          
      /include {1.tex}        
      /include {2.tex}
else if input is 1 and 2  and 3       
      /include {1.tex} 
      /include {2.tex}    
      /include {3.tex} 

等等。我听说有些xkeyval, xargs软件包是这样做的。但我不确定它的实现。

我如何才能为 latex 提供过多的参数?我如何才能解析/区分参数,然后相应地传递?

答案1

以下是一个文件示例umaraman.tex

\documentclass{article}

\makeatletter
\ifdefined\umafiles\else\let\umafiles\@empty\fi
\newcommand{\umainput}[1]{%
 \ifx\umafiles\@empty\input{#1}\else
   \@for\next:=\umafiles\do{%
     \ifnum\pdfstrcmp{#1}{\next}=\z@\input{#1}\fi
   }
 \fi}
\makeatother

\begin{document}
\umainput{uma1}
\umainput{uma2}
\umainput{uma3}
\umainput{uma4}
\umainput{uma5}
\end{document}

当然,文件可以按你的意愿命名。如果你从命令行调用

pdflatex "\def\umafiles{uma1,uma3}\input{umaraman.tex}"

uma1输入uma3。如果您改为正常调用

pdflatex umaraman.tex

所有文件都将被输入。

相关内容