My answer to this question came from exactly this situation. The code is there, I shan't repeat that, but I'll try to explain what it does so that you can see if it's worth clicking through to that question.
My solution is exactly what you outline in your first paragraph. I have a main file that contains all the code, say seminar.tex
, and then a set of symlinks which all point to this file and are of the form seminar.beamer.tex
, seminar.handout.tex
and the same for trans
or article
if appropriate. The class that I load is actually a wrapper class which looks at various parameters - both the \jobname
and any passed to it from the document - to decide which real class to load (and with what options). Thus the start of my real document is something like:
\documentclass[beamer,defaults]{myclass}
beamer
tells it to load the beamer class, defaults
sets up some stuff that I almost always use. Then it looks at the \jobname
to see what type of document it is: beamer
, handout
, etc, and passes the appropriate option to the beamer
class.
For lectures, I have a further option in that the format for my symlinks is actually:
main_file[.type[.lecture_name]].tex
When I'm editing the document, I make sure that I load it via the symlink that I'm most interested in (usually the beamer
version) and then my editor correctly compiles that version.
I used to use a method like the one Seamus outlines. I switched to this method because:
When doing a lecture series, it's much easier to create a batch load of symlinks than a batch load of files with specific content.
If I do compile the master document, it falls back to something sensible.
It doesn't actually need all the symlinks to still work. Since you can reset the jobname via the commandline, you could just do pdflatex -jobname=seminar.beamer.tex seminar.tex
to get the right version compiled.
Best Answer
Use the
handout
mode:It collapses each frame to one page. Sometimes its method of collapsing needs a little fine-tuning, but it's generally okay. For more on that fine-tuning, read about mode-specific instructions in the beamer user guide. As lockstep says, it also sets up some other defaults such as removing the navigation symbols (which, after all, don't make sense on a handout version). All of these changes are customisable.
The sections to read in the beamer user guide are in Part IV (Creating Supporting Material), in particular section 21 (Creating Handouts and Lecture Notes). Section 21.3 has the details on how to achieve the fine-tuning using mode specifications.
Mikael included this link to a version of this question on MathOverflow. As I answered that question, and I think that it's good to keep TeX-related stuff here rather than there, I'm copying my answer to that question below, with very minor modification, which deals with variants of the basic answer.
Print it 4-up using the pgfpages package (from the pgf/TikZ meta-package). If you want to distinguish the pages, don't change the background colour (waste of ink), rather use pgfpages to put a border around each frame (this isn't one of the standard page-type declarations, but it isn't hard and I can make mine available if anyone wants it).
It's possible to change the type of the output (between beamer, handout, trans, or article) without modifying the file. The trick is to put the main document in one file, say
geometry.tex
but without the documentclass declaration. Then you create a new file for each type with just the documentclass declaration. For example,geometry.beamer.tex
could contain:whilst
geometry.handout.tex
might containand
geometry.article.tex
might beNot only does this make sure that you are always compiling the correct version of the document, it also means that if you use a version control system then it doesn't keep complaining about you modifying the file just because you change the output type.
If you are strong in the ways of beamer and TeX, you can go one step further. I use beamer for lectures which means that one single file contains the beamer versions and the handout versions of nearly 30 lectures. To produce a given version of a given lecture, I need to have a way of telling TeX what I want. I could have 60 separate files all with variations on the above, but I've found a simpler way is to have TeX examine the jobname to determine this. Then I just have to have 60 symlinks to the main file (and I can create all 60 symlinks with a single
zsh
command). That is,lecture.beamer.2009-11-19.tex
is a symlink tolectures.tex
and when I run LaTeX on it then I get tomorrow's lecture in beamer format (well, I would if I'd written it yet). Again, I'd be happy to share the code for this if anyone's interested.