Sometimes, I define new commands such as the following.
\newcommand{\comment}[1]{\textbf{#1}} %\necommand{\comment}[1]{\emph{#1}}
The above commands enable me to change the style of parts of my code all at once. If I want to generate both of the possible styles, I have to compile my LaTeX document two times each time modifying the source code to enable the desired style.
Is there a way to avoid the source code modification in such cases? That is, can I pass latex some command-line arguments so that I can choose which style to use based on that argument?
That is, can I pass latex some command-line arguments so that I can choose which style to use based on that argument?
Yes. Three options:
In your source file, write
\providecommand{\comment}[1]{\emph{#1}}% fallback definition
and then compile the LaTeX document ("myfile.tex") as
pdflatex (whatever options you need) "\newcommand\comment[1]{\textbf{#1}}\input{myfile}"
Alternatively,
pdflatex "\let\ifmyflag\iftrue\input{myfile}"
and then have in the source
\ifcsname ifmyflag\endcsname\else \expandafter\let\csname ifmyflag\expandafter\endcsname \csname iffalse\endcsname \fi ... \ifmyflag \newcommand\comment[1]{\emph{#1}} \else \newcommand\comment[1]{\textbf{#1}} \fi
Or even
pdflatex "\def\myflag{}\input{myfile}"
with
\ifdefined\myflag \newcommand\comment[1]{\emph{#1}} \else \newcommand\comment[1]{\textbf{#1}} \fi
which is probably the shortest, albeit slightly fragile because you never know when a package might define \myflag
behind your back.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With