8

How do I decide a Boolean operation in LaTeX via Linux terminal? That is, I have:

%myfile.tex
\documentclass{article}

if parameter=true
is true
else
is false

\begin{document}
parameter
\end{document}

And I wanted to type in something like terminal

pdflatex -p myfile.tex #is true

or

pdflatex myfile.tex #is false
Andrey Vihrov
  • 22,325
Regis Santos
  • 14,463

2 Answers2

11

The best way is outlined in Passing parameters to a document, which should be better known. If the document starts as

\ifcase\flag\relax
  <what to do when \flag=0>\or
  <what to do when \flag=1>\or
  <what to do when \flag=2>\or
  ...
  <what to do when \flag=n>\else
  <what to do otherwise>\fi

we are free to choose among many cases by calling the compilation through

pdflatex '\def\flag{<value>}\input{myfile}'

One can also choose a "default mode" by enclosing the above code in

\ifdefined\flag
   <code above>
\else
   <default setting>
\fi

and the call pdflatex myfile will compile with the <default setting>.

Of course the code may also be after the \documentclass declaration, for choosing packages at run time, for example, or different definitions of some command. I'm thinking to a "printable" version (with black colored links) as opposed to a "web" version where links are colored. But with \ifcase we can define as many versions as we want.

For two versions only one can use a simplified version:

\documentclass{article}
...
\usepackage{hyperref}
\ifdefined\coloredoutput
  \hypersetup{colorlinks,...}
\else
  \hypersetup{colorlinks=false,...}
\fi

and the call

pdflatex '\let\coloredoutput=T\input{myfile}'

will color the links, while

pdflatex myfile

will use no color.

egreg
  • 1,121,712
0
pdflatex '\scrollmode\newif\ifflag\flagtrue\input{myfile.tex}'
pdflatex '\scrollmode\newif\ifflag\flagfalse\input{myfile.tex}'

The \scrollmode makes TeX not to stop in case of errors. It's convenient when used in a Makefile but you could omit it if you are calling pdflatex from the command line.

Inside myfile.tex you can use \ifflag .. \else .. \fi to process your document depending on the value of the flag.