summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/version
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-09-17 00:24:43 +0000
committerKarl Berry <karl@freefriends.org>2009-09-17 00:24:43 +0000
commita0f0ba87dbcf2517da2ce8cf713c075d8e98d281 (patch)
tree4097c399e0cc8ecc483e02cc0be35b731943a224 /Master/texmf-dist/tex/latex/version
parent06c6518659b5ddb3a7973db835cf060cf839d02d (diff)
version.sty rewrite (16sep09)
git-svn-id: svn://tug.org/texlive/trunk@15327 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/version')
-rw-r--r--Master/texmf-dist/tex/latex/version/version.sty141
1 files changed, 141 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/version/version.sty b/Master/texmf-dist/tex/latex/version/version.sty
new file mode 100644
index 00000000000..2f5868e8a7b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/version/version.sty
@@ -0,0 +1,141 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% 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.