Passing parameters to a document
Here's a hacky way, probably this is the wrong way :).
Instead of passing a filename, you can pass a sequence of commands. So in particular, you could do something like
pdflatex "\def\ishandout{1} \input{foo.tex}"
which defines the macro \ishandout
(to be 1
) and then reads foo.tex
.
And then, inside foo.tex
, you can check whether \ishandout
is defined:
\ifdefined\ishandout
\documentclass[handout]{beamer}
\else
\documentclass{beamer}
\fi
I used to do it like in Neil Olver's answer, but found a better way:
Instead of:
pdflatex "\def\ishandout{1} \input{foo.tex}"
with a manual \ifdefined\ishandout
statement, you can use:
pdflatex "\PassOptionsToClass{handout}{beamer}\input{foo}"
if you only want to set the a class option (use PassOptionsToPackage
for package options).
In the case of beamer
you can then also use the following statement in the main file:
\mode<handout>{%
<code>
}
if you want to use different settings in that mode.
Have the target in your Makefile clobber a file that is \input
by your Latex document, which, say, sets or resets a \newif
conditional.
For example, let the Makefile run echo "\handouttrue">flags.tex; latex manuscript
on the handout
goal. Then manuscript.tex
might begin:
\newif\ifhandout \input{flags} \documentclass...
in document:
\ifhandout
...
\else
...
\fi