%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % version.sty version 2.0 % % Copyright 2009 by Donald Arseneau (asnd@triumf.ca) % based on version.sty Copyright 1990 by Stephen Bellantoni, % loosely based on "annotation.sty" by Tom Hofmann. % % These macros may be freely used, transmitted, reproduced, or modified % provided that the copyright notice and this permission is retained. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Version control macros. This package lets you define environments whose % contents will be optionally included in or excluded from the text when % you run LaTeX. % % Maybe you should be using one of versions.sty, comment.sty, or optional.sty. % % Usage: % % \includeversion{NAME} % After this declaration, contents of the environment "NAME", that is, % text between \begin{NAME} and \end{NAME}, will be processed in the % normal way. If an environment called NAME is already defined, that % definition is retained; if no such environment exists a simple % definition is provided. % % \excludeversion{NAME} % This indicates that text between \begin{NAME} and \end{NAME} will % be totally deleted. Very long sections of excluded text might cause % a `TeX capacity exceeded' error. Exclusion ends with the first % detected \end{NAME}, even if there are additional \begin{NAME} % declarations in the skipped text; that is, nesting of environments % is not permitted. Skipped text may have unbalanced braces, if % they would also work in the \includeversion case. % % \excludeversion[text]{NAME} % This indicates that text between \begin{NAME} and \end{NAME} will % be replaced by the specified text. % % You can define environments for as many versions as you want. % A `comment' environment has already been pre-defined with % \excludeversion{comment}; you can override this by declaring % \includeversion{comment}. % % Example: % \includeversion{abridged}\excludeversion{unabridged} % \excludeversion[(redacted)]{redact} % Text for the % \begin{abridged} % short % \end{abridged} % \begin{unabridged} % long and really longwinded, opaque and boring % \end{unabridged} % version of the paper. Punctuation works correctly\begin{unabridged} % because sphack is used\end{unabridged}. % \begin{comment} This is deleted by default. \end{comment} % \begin{redact}This information was withdrawn\end{redact} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ProvidesPackage{version}[2009/09/15 \space v 2.0] \newcommand\includeversion[1]{% \def\@tempa{\@ifundefined{@Esphack}{\@esphack}{\@Esphack}}% \expandafter\ifx\csname #1\endcsname\@tempa % previously excluded ... \expandafter\let\csname #1\endcsname\@undefined \fi % ... so do not retain existing definition \@ifundefined{#1}{% Undefined, define a stub \expandafter\gdef\csname #1\endcsname{}% \expandafter\gdef\csname end#1\endcsname{}% \PackageInfo{version}{Including #1 environments declared} }{% % defined, so retain meaning \PackageInfo{version}{Retain meaning of #1 environment declared}% }% }% % \newcommand\excludeversion[2][]{% \expandafter\gdef\csname #2\endcsname{% #1% optional replacement text \@bsphack % avoid double spaces \catcode`\&=12\catcode`\{=12\catcode`\}=12\relax \@Vii@ExcludeToEnd % Do exclusion until \end{\@currenvir} }% \expandafter\gdef\csname end#2\endcsname{% \@ifundefined{@Esphack}{\@esphack}{\@Esphack}}% \PackageInfo{version}{Excluding #2 environments declared}% }% % % Consume text delimited by the token \end followed by % the current environment name. Nesting is **NOT** followed % \long\def\@Vii@ExcludeToEnd#1\end#2{% \def\@tempa{#2}% \ifx\@tempa\@Vii@Brace \let\@tempa\@Vii@ReadEnd \else \ifx\@tempa\@currenvir \def\@tempa{\end{#2}}% \else \def\@tempa{\@Vii@ExcludeToEnd}% \fi \fi \@tempa } % \edef\@Vii@Brace{\string{}% % \expandafter\def\expandafter\@Vii@ReadEnd\expandafter#\expandafter1\string}{% \@Vii@ExcludeToEnd \end{#1}% } % \excludeversion{comment} \endinput %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % version v. 2 based on version.sty by: % Stephen Bellantoni 1990, loosely based on "annotation.sty" by Tom Hofmann. % % Donald Arseneau produced this version because Stephen Bellantoni had no % permissions explicitly stated in his version. DA has tried to remain % compatible but has indulged in "upgrades" (bloat) which might not be % proper. % % Although the code is entirely rewritten, there are a few principal % differences with version 2: % % Verbatim catcoding of braces (to scan over unbalanced braces) is % still applied, but is not required to be effective: the \end{NAME} % will be detected whether the catcode changes are effective or not. % % Verbatim catcode for & is set to allow skipping rows of a tabular. % % Definitions of existing environments are now retained by \includeversion, % unless the existing definition is the one made by \excludeversion. % % Added optional argument for \excludeversion for a textual tag to % replace the excluded content.