The document class options draft
is extremely useful to speed up typesetting and visualize overfull \hbox
warnings. Even more so, when you work on a large document. I previously introduced the draft
and final
options here and here.
The ifdraft package adds more flexibility to the draft
and final
options. It implements three commands with slightly different behavior when draft
or final
are set.
\usepackage{ifdraft} % load package \ifdraft {⟨draft case⟩} {⟨final case⟩} \ifoptiondraft {⟨option draft given⟩} {⟨option draft not given⟩} \ifoptionfinal {⟨option final given⟩} {⟨option final not given⟩}
The command \ifdraft
assumes final
if no option is set. Furthermore, both options, draft
and final
, should not be used at the same time.
Let’s see a few examples.
Example 1: Line spacing
It is often easier to proof-read a text with extra space between lines. Especially, if the reader adds his comments on paper. In this case, \ifdraft
allows automatic switching between double and single spacing, depending on the option set (draft
or final
). In the example, the setspace package is used to switch between single and double line spacing (see here for examples on package usage).
\documentclass[draft]{article} % draft or final option \usepackage{setspace, ifdraft, blindtext} \ifdraft{\doublespace}{\singlespace} % draft: double; final: single spacing \begin{document} \blindtext \end{document}
Example 2: Single column / two columns
It may be easier to edit a document using a single column style, even if the final version will have two or more columns. Sure, it would be sufficient to replace onecolumn
with twocolumn
in the list of document class options.
\documentclass[draft, onecolumn]{article} \documentclass[final, twocolumn]{article}
It might not seem like a big thing to do, but often the author switches frequently between draft and final or there are other draft-specific options, e.g. line spacing as shown in the previous example. In this case, it is faster and cleaner to hook all changes to the draft and final options.
\documentclass[draft]{article} \usepackage{ifdraft, blindtext} \ifdraft{\onecolumn}{\twocolumn} \begin{document} \Blindtext \end{document}
Example 3: Removing TODO notes
Todonotes provides functionality to visualize TODOs in the margins of the output PDF. The option disable
removes all TODOs from the document. But then again, it’s cleaner and faster to link this behavior to the draft option.
In the following example the todonotes package is loaded without or with the option disable
, depending on whether draft
or final
is used:
\documentclass[draft]{article} \usepackage{ifdraft, blindtext} \ifdraft{% \usepackage{todonotes}}{ % draft with TODOs \usepackage[disable]{todonotes} % final without TODOs } \begin{document} \blindtext\todo{Insert a more meaningful text here} \end{document}
Example 4: Draft watermark
This last example shows how the \ifoptiondraft
command can be used to produce the watermark “DRAFT” only when draft
is set. To learn more about watermarks, see my post on the topic here. In this example, the second argument is empty as nothing is to be done when no option is not given or final
is used.
\documentclass[11pt,draft]{article} \usepackage{ifdraft, blindtext} \ifoptiondraft{% \usepackage{draftwatermark} \SetWatermarkText{DRAFT} \SetWatermarkScale{5} \SetWatermarkColor[rgb]{0.7,0,0} }{% % nothing to be done here } \begin{document} \Blindtext \end{document}
rafaellerm
Great explanation. But the todonotes solution is overkill — it has already implemented this functionality. All you need to do is pass it the “obeyFinal” option:
And done.
tom
I agree, thanks for the comment! Tom