Passing command-line arguments to LaTeX document
latex, tex
Solution
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:
One
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}"
Two
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
Three
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.
Problem
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?