I am new to latex. I would like to pass command line arguments (probably more) to \newcommand macro and expecting output like below.

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} 

and so on. I have heard some xkeyval, xargs packages do like this. But i am not sure about its implementations.

How can i give too many arguments to latex? How can i parse/differentiate the arguments and then pass accordingly?

  • It looks like you want to have something like a \multiinput{1,2,3}, in other words input is the name of the files to be added. Am I right?
    – percusse
    Commented Mar 26, 2013 at 14:41
  • Hi Thanks for the reply.Input is not the name of file. It is actually any word (for example bird, vehicle), depends on the word i should add files probably, in following loop (ex:if word =bird then /include{parrot.tex} /include{dove.tex} else if word = vehicle then /include{car.tex} /include{bike.tex} )
    – BusyBee
    Commented Mar 27, 2013 at 12:16
  • Related question: automation - Passing parameters to a document - TeX - LaTeX Stack Exchange
    – user202729
    Commented Nov 18, 2023 at 2:11

1 Answer 1


Here's an example of a umaraman.tex file:




Of course the files can be named as you wish. If you call from the command line

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

only uma1 and uma3 will be input. If you instead call normally

pdflatex umaraman.tex

all files will be input.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .