summaryrefslogtreecommitdiff
path: root/texmf-dist/doc/latex/eqexam/examples/aeb-comment.sty
diff options
context:
space:
mode:
Diffstat (limited to 'texmf-dist/doc/latex/eqexam/examples/aeb-comment.sty')
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/aeb-comment.sty294
1 files changed, 294 insertions, 0 deletions
diff --git a/texmf-dist/doc/latex/eqexam/examples/aeb-comment.sty b/texmf-dist/doc/latex/eqexam/examples/aeb-comment.sty
new file mode 100644
index 00000000..84aa9074
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/aeb-comment.sty
@@ -0,0 +1,294 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Comment.sty version 3.8, July 2016
+% copyright 1998-2016 Victor Eijkhout
+%
+% Purpose:
+% selectively in/exclude pieces of text: the user can define new
+% comment versions, and each is controlled separately.
+% Special comments can be defined where the user specifies the
+% action that is to be taken with each comment line.
+%
+% Author
+% Victor Eijkhout
+% Texas Advanced Computing Center
+% The University of Texas at Austin
+% Austin TX 78758
+% USA
+%
+% victor@eijkhout.net
+%
+% This program is free software; you can redistribute it and/or
+% modify it under the terms of the GNU General Public License
+% as published by the Free Software Foundation; either version 2
+% of the License, or (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% For a copy of the GNU General Public License, write to the
+% Free Software Foundation, Inc.,
+% 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA,
+% or find it on the net, for instance at
+% http://www.gnu.org/copyleft/gpl.html
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Usage: all text included between
+% \begin{comment}
+% ...
+% \end{comment}
+% is discarded.
+%
+% The opening and closing commands should appear on a line
+% of their own. No starting spaces, nothing after it.
+% This environment should work with arbitrary amounts
+% of comment, and the comment can be arbitrary text.
+%
+% Other `comment' environments are defined by
+% and are selected/deselected with
+% \includecomment{versiona}
+% \excludecoment{versionb}
+%
+% These environments are used as
+% \begin{versiona} ... \end{versiona}
+% with the opening and closing commands again on a line of
+% their own.
+%
+% This is not a LaTeX environment: for an included comment, the
+% \begin and \end lines act as if they don't exist.
+% In particular, they don't imply grouping, so assignments
+% &c are not local.
+%
+%%
+%% Guide to special effects
+%%
+% To understand what happens here, you need to know just a bit about
+% the implementation. Lines inside a comment are scooped up one at a
+% time, and written to an external file. This file can then be
+% included, or ignored. Or you can do stuff with it as you'll see now.
+%
+% Special comments are defined as
+% \specialcomment{name}{before commands}{after commands}
+% where the second and third arguments are executed before
+% and after each comment block. You can use this for global
+% formatting commands.
+% To keep definitions &c local, you can include \begingroup
+% in the `before commands' and \endgroup in the `after commands'.
+% ex:
+% \specialcomment{smalltt}
+% {\begingroup\ttfamily\footnotesize}{\endgroup}
+% Of course, in this case you could probably have used the standard
+% LaTeX \newenvironment.
+%
+% With \specialcomment you do *not* have to do an additional
+% \includecomment{smalltt}
+% To remove 'smalltt' blocks, give \excludecomment{smalltt}
+% after the definition.
+%
+% The comment environments use two auxiliary commands. You can get
+% nifty special effects by redefining them.
+% 1/ the commented text is written to an external file. Default definition:
+% \def\CommentCutFile{comment.cut}
+% 2/ included comments are processed like this:
+% \def\ProcessCutFile{\input{\CommentCutFile}\relax}
+% and excluded files have
+% \def\ProcessCutFile{}
+%
+% Fun use of special comments: the inclusion of the comment is done
+% by \ProcessCutFile, so you can redefine that:
+% \specialcomment{mathexamplewithcode}
+% {\begingroup\def\ProcessCutFile{}} %1
+% {\verbatiminput{\CommentCutFile} %2
+% \endgroup
+% This gives:
+% \begin{equation} \input{\CommentCutFile} \end{equation}
+% }
+% 1: do not standard include the file
+% 2: input it verbatim, then again inside display math
+%
+% You can also apply processing to each line.
+% By defining a control sequence
+% \def\Thiscomment##1{...} in the before commands the user can
+% specify what is to be done with each comment line. If something
+% needs to be written to file, use \WriteCommentLine{the stuff}
+% Example:
+% \specialcomment{underlinecomment}
+% {\def\ThisComment##1{\WriteCommentLine{\underline{##1}\par}}
+% \par}
+% {\par}
+%
+% Trick for short in/exclude macros (such as \maybe{this snippet}):
+%\includecomment{cond}
+%\newcommand{\maybe}[1]{}
+%\begin{cond}
+%\renewcommand{\maybe}[1]{#1}
+%\end{cond}
+%
+% Changes in 3.8
+% - utf8 is now correctly handled, at least if you use eTeX.
+% (Thanks Henry Gregory for the solution)
+% Changes in 3.7
+% - only LaTeX support from now on
+% - code cleanup, and improvements on \specialcomment
+% - cleanup of the docs.
+% Changed in 3.6
+% - documentation update
+% - comment file inclusion is now a customizable command
+% Changes in 3.5
+% - corrected typo in header.
+% - changed author email
+% - corrected \specialcomment yet again.
+% - fixed excludecomment of an earlier defined environment.
+% Changes in 3.4
+% - added GNU public license
+% - added \processcomment, because Ivo's fix (above) brought an
+% inconsistency to light.
+% Changes in 3.3
+% - updated author's address again
+% - parametrised \CommentCutFile
+% Changes in 3.2
+% - \specialcomment brought up to date (thanks to Ivo Welch).
+% Changes in version 3.1
+% - updated author's address
+% - cleaned up some code
+% - trailing contents on \begin{env} line is always discarded
+% even if you've done \includecomment{env}
+% - comments no longer define grouping!! you can even
+% \includecomment{env}
+% \begin{env}
+% \begin{itemize}
+% \end{env}
+% Isn't that something ...
+% - included comments are written to file and input again.
+%
+% Known bugs:
+% - excludecomment leads to one superfluous space
+% - processcomment leads to a superfluous line break at the start
+%
+\def\makeinnocent#1{\catcode`#1=12 }
+\def\csarg#1#2{\expandafter#1\csname#2\endcsname}
+\def\latexname{lplain}\def\latexename{LaTeX2e}
+\newwrite\CommentStream
+\def\DefaultCutFileName{\def\CommentCutFile{comment.cut}}
+\DefaultCutFileName
+
+% begin / end processing
+%
+% this contains the only real begin/endgroup commands, to keep the
+% catcode changes local.
+\def\ProcessComment#1% start it all of
+ {\def\CurrentComment{#1}%
+ \begingroup
+ \let\do\makeinnocent \dospecials
+ \makeinnocent\^^L% and whatever other special cases
+ \endlinechar`\^^M\relax \catcode`\^^M=12\relax \xComment}
+{\catcode`\^^M=12 \endlinechar=-1 %
+ \gdef\xComment#1^^M{\ProcessCommentLine}
+ \gdef\ProcessCommentLine#1^^M{\def\test{#1}
+ \csarg\ifx{End\CurrentComment Test}\test
+ \edef\next{\endgroup\noexpand\EndOfComment{\CurrentComment}}%
+ \else \ThisComment{#1}\let\next\ProcessCommentLine
+ \fi \next}
+}
+
+%%
+%% Initial action: SetUpCutFile opens the CommentCutFile
+%% hook for initial actions: PrepareCutFile, default null
+%%
+\def\SetUpCutFile
+ {\immediate\openout\CommentStream=\CommentCutFile
+ \PrepareCutFile}
+\def\PrepareCutFile{}
+
+%%
+%% Each line action: ThisComment,
+%% default: WriteCommentLine on line contents
+%% version 3.8: write unexpanded if using eTeX
+%%
+\expandafter\ifx\csname eTeXversion\endcsname\relax
+ \long\def\WriteCommentLine#1{\immediate\write\CommentStream{#1}}
+\else
+ \long\def\WriteCommentLine#1{\immediate\write\CommentStream{\unexpanded{#1}}}
+\fi
+\let\ThisComment\WriteCommentLine
+
+%%
+%% Final action: ProcessCutFile
+%% hook for final action before file closing: FinalizeCutFile, default null
+%%
+\def\ProcessCutFile
+ {\message{Straight input of \CommentCutFile.}%
+ \input{\CommentCutFile}\relax}
+\def\CloseAndInputCutFile
+ {\FinalizeCutFile
+ \immediate\closeout\CommentStream
+ \ProcessCutFile}
+\def\FinalizeCutFile{}
+
+%%
+%% Define the different comment types
+%%
+% included comments: all the default actions
+\def\includecomment
+ #1{\message{Include comment '#1'}%
+ \csarg\def{After#1Comment}{\CloseAndInputCutFile}
+ \csarg\def{#1}{\endgroup \message{Including '#1' comment.}%
+ \DefaultCutFileName \SetUpCutFile \ProcessComment{#1}}%
+ \CommentEndDef{#1}}
+% excluded comment: also default
+\def\excludecomment
+ #1{\message{Excluding comment '#1'}%
+ \csarg\def{#1}{\endgroup \message{Excluding '#1' comment.}%
+ \begingroup
+ \DefaultCutFileName \def\ProcessCutFile{}%
+ \def\ThisComment####1{}\ProcessComment{#1}}%
+ \csarg\def{After#1Comment}{\CloseAndInputCutFile \endgroup}
+ \CommentEndDef{#1}}
+% special comment
+\long\def\specialcomment
+ #1#2#3{\message{Special comment '#1'}%
+ \csarg\def{#1}{\endgroup \message{Processing '#1' comment.}%
+ \DefaultCutFileName
+ #2\relax \SetUpCutFile
+ % #2 before SetUp, so we can do renaming.
+ \message{Comment '#1' writing to \CommentCutFile.}%
+ \ProcessComment{#1}}%
+ \csarg\def{After#1Comment}{\CloseAndInputCutFile #3}%
+ \CommentEndDef{#1}}
+\long\def\generalcomment
+ #1#2#3{\message{General comment '#1'}%
+ \csarg\def{#1}{\endgroup % counter the environment open of LaTeX
+ #2 \relax \SetUpCutFile \ProcessComment{#1}}%
+ \csarg\def{After#1Comment}{\CloseAndInputCutFile #3}%
+ \CommentEndDef{#1}}
+\long\def\processcomment
+ #1#2#3#4{\message{Lines-Processing comment '#1'}%
+ \csarg\def{#1}{\endgroup \SetUpCutFile #2\relax
+ \ProcessComment{#1}}%
+ \csarg\def{After#1Comment}{#3\CloseAndInputCutFile #4}%
+ \CommentEndDef{#1}}
+\def\leveledcomment
+ #1#2{\message{Include comment '#1' up to level '#2'}%
+ %\csarg\newif{if#1IsStreamingComment}
+ %\csarg\newif{if#1IsLeveledComment}
+ %\csname #1IsLeveledCommenttrue\endcsname
+ \csarg\let{After#1Comment}\CloseAndInputCutFile
+ \csarg\def{#1}{\SetUpCutFile
+ \ProcessCommentWithArg{#1}}%
+ \CommentEndDef{#1}}
+
+\makeatletter
+\def\EndOfComment#1{%
+ \csname After#1Comment\endcsname
+ % sabotage LaTeX's environment testing
+ \begingroup\def\@currenvir{#1}\end{#1}}
+\def\CommentEndDef#1{{\escapechar=-1\relax
+ \csarg\xdef{End#1Test}{\string\\end\string\{#1\string\}}%
+ }}
+\makeatother
+
+\excludecomment{comment}
+
+\endinput