Modes

From Wiki
Revision as of 09:32, 22 November 2005 by 193.50.49.137 (talk)
Jump to navigation Jump to search

< The ConTeXt Way | Inside ConTeXt | Project structure >

Often you'd like to publish different versions of a document, say a presentation and a handout or a student's and a teacher's version.

ConTeXt supports such filtering with its modes:

ConTeXt is a great TeX macro package.
\startmode[handout] % The following text will only appear in the handout
It’s based on Plain TeX like the better known LaTeX.
\stopmode
\startnotmode[print]
Here's a link to my homepage: \url[...]
\stopnotmode
\doifmode[answers]{The answer to the homework is 42.}
\doifmodeelse[draft]{Draft Version}{Final Version}

...mode and ...notmode let you filter your content sufficient in most cases. You can also give several modes like \startmode[handout,print].

Modes are also a convenient way to comment out sections (typical: "obsolete" mode).

You can typeset the different modes like:

texexec myfile --mode=handout --result=handout.pdf

You don't need the --result, but otherwise you'd get the same filename for both modes.

Modes are extremely powerful when applied to text. However, they can be applied to configuration problems as well. A user wanted to generate different versions of the same file with different fonts:

\startmode[palatino]
   \usetypescript[adobekb][8r]
   \usetypescript[palatino][8r]
   \setupbodyfont[palatino,12pt]
\stopmode

\startmode[times]
   \usetypescript[adobekb][8r]
   \usetypescript[postscript][8r]
   \setupbodyfont[postscript,12pt]
\stopmode

\starttext
\input knuth
\showfontstrip
\stoptext

And run with one of the following:

 texexec --pdf --mode=palatino filename
 texexec --pdf --mode=times    filename

If you want to enable some mode(s) without changing the command line (e.g. because you use some TeX GUI), you can use \enablemode[mymode] in your source. Put this before you load your environment! You can even enable several modes at once like [a4,print].