summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/mbenotes
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2011-05-21 22:08:34 +0000
committerKarl Berry <karl@freefriends.org>2011-05-21 22:08:34 +0000
commitecc03587e3d0f4321a37770dea1ac62ccd244fad (patch)
tree11f743f57661bdc3600a623def6d3b4c0f7b7ffc /Master/texmf-dist/tex/latex/mbenotes
parent520198f8b03fc0f780f9223793bbb3d61d40b255 (diff)
new latex package mbenotes, renamed from tablenotes (21may11)
git-svn-id: svn://tug.org/texlive/trunk@22556 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/mbenotes')
-rw-r--r--Master/texmf-dist/tex/latex/mbenotes/mbenotes.sty1091
1 files changed, 1091 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/mbenotes/mbenotes.sty b/Master/texmf-dist/tex/latex/mbenotes/mbenotes.sty
new file mode 100644
index 00000000000..927e5f8d6ab
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mbenotes/mbenotes.sty
@@ -0,0 +1,1091 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% ****************************************
+% * mbeNOTES
+% ****************************************
+%
+% Date of this version: 2011-5-1
+% Matthias Borck-Elsner
+%
+%% Based on endnotes.sty Copyright 2002 John Lavagnino
+%%
+%% This file may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.2
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.2 or later is part of all distributions of LaTeX
+%% version 1999/12/01 or later.
+%%
+%% Uses an extra external file, with .mbe extension, to hold the
+%% text of the mbenotes. This may be deleted after the run; a new
+%% version is generated each time--it doesn't require information
+%% collected from the previous run.
+%%
+%% This code does not obey \nofiles. Perhaps it should.
+%%
+%%
+%% To turn all the footnotes in your documents into mbenotes, say
+%%
+%% \let\footnote=\mbenote
+%%
+%% in your preamble, and then add something like
+%%
+%% \newpage
+%% \begingroup
+%% \parindent 0pt
+%% \parskip 2ex
+%% \def\mbenotesize{\normalsize}
+%% \thembenotes
+%% \endgroup
+%%
+% as the last thing in your document. (But \thembenotes all
+% by itself will work.)
+%
+
+%
+%
+% ****************************************
+% * mbeNOTE COMMANDS *
+% ****************************************
+%
+%
+% \mbenote{NOTE} : User command to insert a mbenote.
+%
+% \mbenote[NUM]{NOTE} : User command to insert a mbenote numbered
+% NUM, where NUM is a number -- 1, 2,
+% etc. For example, if mbenotes are numbered
+% *, **, etc. within pages, then \mbenote[2]{...}
+% produces mbenote '**'. This command does not
+% step the mbenote counter.
+%
+% \mbenotemark[NUM] : Command to produce just the mbenote mark in
+% the text, but no mbenote. With no argument,
+% it steps the mbenote counter before generating
+% the mark.
+%
+% \mbenotetext[NUM]{TEXT} : Command to produce the mbenote but no
+% mark. \mbenote is equivalent to
+% \mbenotemark \mbenotetext .
+%
+% \addtombenotes{TEXT} : Command to add text or commands to current
+% mbenotes file: for inserting headings,
+% pagebreaks, and the like into mbenotes
+% sections. TEXT a moving argument:
+% \protect required for fragile commands.
+%
+% ****************************************
+% * mbeNOTE USER COMMANDS *
+% ****************************************
+%
+% mbenotes use the following parameters, similar to those relating
+% to footnotes:
+%
+% \mbenotesize : Size-changing command for mbenotes.
+%
+% \thembenote : In usual LaTeX style, produces the mbenote number.
+%
+% \thembemark : Holds the current mbenote's mark--e.g., \dag or '1' or 'a'.
+% (You don't want to set this yourself, as it comes
+% either from the autonumbering of notes or from
+% the optional argument to \mbenote. But you'll need
+% to use it if you define your own \makembemark.)
+%
+% \makembemark : A macro to generate the mbenote marker from \thembemark
+% The default definition is \hbox{$^\thembemark$}.
+%
+% \@makembetext{NOTE} :
+% Must produce the actual mbenote, using \thembemark as the mark
+% of the mbenote and NOTE as the text. It is called when effectively
+% inside a \parbox, with \hsize = \columnwidth. For example, it might
+% be as simple as
+% $^{\thembemark}$ NOTE
+%
+%
+% ****************************************
+% * mbeNOTE MACROS *
+% ****************************************
+%
+
+\@definecounter{mbenote}
+\def\thembenote{\@arabic\c@mbenote}
+
+\def\@makembemark{\hbox{\@textsuperscript{{\tiny{\@thembemark}}}}}
+\def\makembemark{\@makembemark}
+
+\def\thembemark{\@thembemark}
+
+\newdimen\mbenotesep
+
+\def\mbenote{\@ifnextchar[\@xmbenote{\stepcounter{mbenote}%
+ \protected@xdef\@thembemark{\thembenote}%
+ \@mbenotemark\@mbenotetext}}
+
+\def\@xmbenote[#1]{
+ \begingroup
+ \c@mbenote=#1\relax
+ \unrestored@protected@xdef\@thembemark{\thembenote}%
+ \endgroup
+ \@mbenotemark\@mbenotetext }
+
+% Here begins a section of mbenote code that's really different from
+% the footnote code of LaTeX.
+
+\let\@doanmbenote=0
+\let\@endanmbenote=0
+
+\newwrite\@mbenotes
+\newif\if@mbenotesopen \global\@mbenotesopenfalse
+
+\def\@openmbenotes{\immediate\openout\@mbenotes=\jobname.mbe\relax
+ \global\@mbenotesopentrue}
+
+% The stuff with \next and \meaning is a trick from the TeXbook, 382,
+% there intended for setting verbatim text, but here used to avoid
+% macro expansion when the footnote text is written. \next will have
+% the entire text of the footnote as one long line, which might well
+% overflow limits on output line length; the business with \newlinechar
+% makes every space become a newline in the \@mbenotes file, so that all
+% of the lines wind up being quite short.
+
+\long\def\@mbenotetext#1{%
+ \if@mbenotesopen \else \@openmbenotes \fi
+ \immediate\write\@mbenotes{\@doanmbenote{\@thembemark}}%
+ \begingroup
+ \def\next{#1}%
+ \newlinechar='40
+ \immediate\write\@mbenotes{\meaning\next}%
+ \endgroup
+ \immediate\write\@mbenotes{\@endanmbenote}}
+
+% \addtombenotes works the way the other mbenote macros probably should
+% have, requiring the use of \protect for fragile commands.
+
+\long\def\addtombenotes#1{%
+ \if@mbenotesopen \else \@openmbenotes \fi
+ \begingroup
+ \newlinechar='40
+ \let\protect\string
+ \immediate\write\@mbenotes{#1}%
+ \endgroup}
+
+% End of unique mbenote code
+
+\def\mbenotemark{%
+ \@ifnextchar[\@xmbenotemark
+ {\stepcounter{mbenote}%
+ \protected@xdef\@thembemark{\thembenote}%
+ \@mbenotemark}}
+
+\def\@xmbenotemark[#1]{%
+ \begingroup
+ \c@mbenote #1\relax
+ \unrestored@protected@xdef\@thembemark{\thembenote}%
+ \endgroup
+ \@mbenotemark}
+
+\def\@mbenotemark{%
+ \leavevmode
+ \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi
+ \makembemark
+ \ifhmode\spacefactor\@x@sf\fi
+ \relax}
+
+\def\mbenotetext{
+ \@ifnextchar [\@xmbenotenext
+ {\protected@xdef\@thembemark{\thembenote}%
+ \@mbenotetext}}
+
+\def\@xmbenotenext[#1]{\begingroup \c@mbenote=#1\relax
+ \xdef\@thembemark{\thembenote}\endgroup \@mbenotetext}
+
+\def\@xmbenotenext[#1]{%
+ \begingroup
+ \c@mbenote=#1\relax
+ \unrestored@protected@xdef\@thembemark{\thembenote}%
+ \endgroup
+ \@mbenotetext}
+
+
+% \thembenotes actually prints out the mbenotes.
+
+% The user may want separate mbenotes for each chapter, or a big
+% block of them at the end of the whole document. As it stands,
+% either will work; you just say \thembenotes wherever you want the
+% mbenotes so far to be inserted. The counter is always set to 0
+% \mbenoteformat is provided so user can specify some special formatting
+% for the mbenotes. It needs to set up the paragraph parameters, start
+% the paragraph, and print the label. The \mbox stuff in \mbenoteheading
+% is to make and undo a dummbe paragraph, to get around the games \section*
+% plays with paragraph indenting and instead give us uniform
+% indenting for all notes.
+
+\def\mbenotesname{mbenotes}
+\def\mbenoteheading{\subsubsection*{\footnotesize{\mbenotesname} \@mkboth{\MakeUppercase{\mbenotesname}}{\MakeUppercase{\mbenotesname}}}
+ \mbox{ }\par\vskip-\baselineskip}
+
+\def\mbenoteformat{\rightskip\z@ \leftskip\z@ \parindent=1.8em
+ \leavevmode\llap{\makembemark}}
+
+\def\mbenotesize{\footnotesize}
+
+\def\thembenotes[#1]{\def\mbenotesname{#1}\immediate\closeout\@mbenotes \global\@mbenotesopenfalse
+ \begingroup
+ \makeatletter
+ %
+ % The machinery with \@ResetGT and > here ensures that
+ % \@doanmbenote works properly even if > is an active character
+ % at the point where \thembenotes is invoked. > needs to have
+ % catcode 12 when the arguments of \@doanmbenote are scanned, so
+ % that the > in the string "macro:->" is matched. The actual
+ % footnote text is not an argument to \@doanmbenote, but just
+ % follows it in the .mbe file; so \@ResetGT can reset the
+ % category code for > that should be used when processing
+ % that text. That resetting takes place within a
+ % \begingroup-\endgroup block set up by \@doanmbenote and
+ % \@endanmbenote, so the catcode for > is back to 12 for the
+ % next note.
+ %
+ \edef\@tempa{`\string >}%
+ \ifnum\catcode\@tempa=12%
+ \let\@ResetGT\relax
+ \else
+ \edef\@ResetGT{\noexpand\catcode\@tempa=\the\catcode\@tempa}%
+ \@makeother\>%
+ \fi
+ \def\@doanmbenote##1##2>{\def\@thembemark{##1}\par\begingroup
+ \@ResetGT
+ \edef\@currentlabel{\csname p@mbenote\endcsname\@thembemark}%
+ \mbenoteformat}
+ \def\@endanmbenote{\par\endgroup}%
+ \mbenoteheading
+ \mbenotesize
+ \input{\jobname.mbe}%
+ \setcounter{mbenote}{0} \vspace{1.8em}
+ \endgroup}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% ****************************************
+% * tabNOTES
+% ****************************************
+%
+% Date of this version: 2011-5-1
+% Matthias Borck-Elsner
+%
+%% Based on endnotes.sty Copyright 2002 John Lavagnino
+%%
+%% This file may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.2
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.2 or later is part of all distributions of LaTeX
+%% version 1999/12/01 or later.
+%%
+%% Uses an extra external file, with .tab extension, to hold the
+%% text of the tabnotes. This may be deleted after the run; a new
+%% version is generated each time--it doesn't require information
+%% collected from the previous run.
+%%
+%% This code does not obey \nofiles. Perhaps it should.
+%%
+%%
+%% To turn all the footnotes in your documents into tabnotes, say
+%%
+%% \let\footnote=\tabnote
+%%
+%% in your preamble, and then add something like
+%%
+%% \newpage
+%% \begingroup
+%% \parindent 0pt
+%% \parskip 2ex
+%% \def\tabnotesize{\normalsize}
+%% \thetabnotes
+%% \endgroup
+%%
+% as the last thing in your document. (But \thetabnotes all
+% by itself will work.)
+%
+
+%
+%
+% ****************************************
+% * tabNOTE COMMANDS *
+% ****************************************
+%
+%
+% \tabnote{NOTE} : User command to insert a tabnote.
+%
+% \tabnote[NUM]{NOTE} : User command to insert a tabnote numbered
+% NUM, where NUM is a number -- 1, 2,
+% etc. For example, if tabnotes are numbered
+% *, **, etc. within pages, then \tabnote[2]{...}
+% produces tabnote '**'. This command does not
+% step the tabnote counter.
+%
+% \tabnotemark[NUM] : Command to produce just the tabnote mark in
+% the text, but no tabnote. With no argument,
+% it steps the tabnote counter before generating
+% the mark.
+%
+% \tabnotetext[NUM]{TEXT} : Command to produce the tabnote but no
+% mark. \tabnote is equivalent to
+% \tabnotemark \tabnotetext .
+%
+% \addtotabnotes{TEXT} : Command to add text or commands to current
+% tabnotes file: for inserting headings,
+% pagebreaks, and the like into tabnotes
+% sections. TEXT a moving argument:
+% \protect required for fragile commands.
+%
+% ****************************************
+% * tabNOTE USER COMMANDS *
+% ****************************************
+%
+% tabnotes use the following parameters, similar to those relating
+% to footnotes:
+%
+% \tabnotesize : Size-changing command for tabnotes.
+%
+% \thetabnote : In usual LaTeX style, produces the tabnote number.
+%
+% \thetabmark : Holds the current tabnote's mark--e.g., \dag or '1' or 'a'.
+% (You don't want to set this yourself, as it comes
+% either from the autonumbering of notes or from
+% the optional argument to \tabnote. But you'll need
+% to use it if you define your own \maketabmark.)
+%
+% \maketabmark : A macro to generate the tabnote marker from \thetabmark
+% The default definition is \hbox{$^\thetabmark$}.
+%
+% \@maketabtext{NOTE} :
+% Must produce the actual tabnote, using \thetabmark as the mark
+% of the tabnote and NOTE as the text. It is called when effectively
+% inside a \parbox, with \hsize = \columnwidth. For example, it might
+% be as simple as
+% $^{\thetabmark}$ NOTE
+%
+%
+% ****************************************
+% * tabNOTE MACROS *
+% ****************************************
+%
+
+\@definecounter{tabnote}
+\def\thetabnote{\@arabic\c@tabnote}
+
+\def\@maketabmark{\hbox{\@textsuperscript{{\tiny{\@thetabmark}}}}}
+\def\maketabmark{\@maketabmark}
+
+\def\thetabmark{\@thetabmark}
+
+\newdimen\tabnotesep
+
+\def\tabnote{\@ifnextchar[\@xtabnote{\stepcounter{tabnote}%
+ \protected@xdef\@thetabmark{\thetabnote}%
+ \@tabnotemark\@tabnotetext}}
+
+\def\@xtabnote[#1]{
+ \begingroup
+ \c@tabnote=#1\relax
+ \unrestored@protected@xdef\@thetabmark{\thetabnote}%
+ \endgroup
+ \@tabnotemark\@tabnotetext }
+
+% Here begins a section of tabnote code that's really different from
+% the footnote code of LaTeX.
+
+\let\@doantabnote=0
+\let\@endantabnote=0
+
+\newwrite\@tabnotes
+\newif\if@tabnotesopen \global\@tabnotesopenfalse
+
+\def\@opentabnotes{\immediate\openout\@tabnotes=\jobname.tab\relax
+ \global\@tabnotesopentrue}
+
+% The stuff with \next and \meaning is a trick from the TeXbook, 382,
+% there intended for setting verbatim text, but here used to avoid
+% macro expansion when the footnote text is written. \next will have
+% the entire text of the footnote as one long line, which might well
+% overflow limits on output line length; the business with \newlinechar
+% makes every space become a newline in the \@tabnotes file, so that all
+% of the lines wind up being quite short.
+
+\long\def\@tabnotetext#1{%
+ \if@tabnotesopen \else \@opentabnotes \fi
+ \immediate\write\@tabnotes{\@doantabnote{\@thetabmark}}%
+ \begingroup
+ \def\next{#1}%
+ \newlinechar='40
+ \immediate\write\@tabnotes{\meaning\next}%
+ \endgroup
+ \immediate\write\@tabnotes{\@endantabnote}}
+
+% \addtotabnotes works the way the other tabnote macros probably should
+% have, requiring the use of \protect for fragile commands.
+
+\long\def\addtotabnotes#1{%
+ \if@tabnotesopen \else \@opentabnotes \fi
+ \begingroup
+ \newlinechar='40
+ \let\protect\string
+ \immediate\write\@tabnotes{#1}%
+ \endgroup}
+
+% End of unique tabnote code
+
+\def\tabnotemark{%
+ \@ifnextchar[\@xtabnotemark
+ {\stepcounter{tabnote}%
+ \protected@xdef\@thetabmark{\thetabnote}%
+ \@tabnotemark}}
+
+\def\@xtabnotemark[#1]{%
+ \begingroup
+ \c@tabnote #1\relax
+ \unrestored@protected@xdef\@thetabmark{\thetabnote}%
+ \endgroup
+ \@tabnotemark}
+
+\def\@tabnotemark{%
+ \leavevmode
+ \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi
+ \maketabmark
+ \ifhmode\spacefactor\@x@sf\fi
+ \relax}
+
+\def\tabnotetext{
+ \@ifnextchar [\@xtabnotenext
+ {\protected@xdef\@thetabmark{\thetabnote}%
+ \@tabnotetext}}
+
+\def\@xtabnotenext[#1]{\begingroup \c@tabnote=#1\relax
+ \xdef\@thetabmark{\thetabnote}\endgroup \@tabnotetext}
+
+\def\@xtabnotenext[#1]{%
+ \begingroup
+ \c@tabnote=#1\relax
+ \unrestored@protected@xdef\@thetabmark{\thetabnote}%
+ \endgroup
+ \@tabnotetext}
+
+
+% \thetabnotes actually prints out the tabnotes.
+
+% The user may want separate tabnotes for each chapter, or a big
+% block of them at the end of the whole document. As it stands,
+% either will work; you just say \thetabnotes wherever you want the
+% tabnotes so far to be inserted. The counter is always set to 0
+% \tabnoteformat is provided so user can specify some special formatting
+% for the tabnotes. It needs to set up the paragraph parameters, start
+% the paragraph, and print the label. The \mbox stuff in \tabnoteheading
+% is to make and undo a dummbe paragraph, to get around the games \section*
+% plays with paragraph indenting and instead give us uniform
+% indenting for all notes.
+
+\def\tabnotesname{tabnotes}
+\def\tabnoteheading{\subsubsection*{\footnotesize{\tabnotesname} \@mkboth{\MakeUppercase{\tabnotesname}}{\MakeUppercase{\tabnotesname}}}
+ \mbox{ }\par\vskip-\baselineskip}
+
+\def\tabnoteformat{\rightskip\z@ \leftskip\z@ \parindent=1.8em
+ \leavevmode\llap{\maketabmark}}
+
+\def\tabnotesize{\footnotesize}
+
+\def\thetabnotes[#1]{\def\tabnotesname{#1}\immediate\closeout\@tabnotes \global\@tabnotesopenfalse
+ \begingroup
+ \makeatletter
+ %
+ % The machinery with \@ResetGT and > here ensures that
+ % \@doantabnote works properly even if > is an active character
+ % at the point where \thetabnotes is invoked. > needs to have
+ % catcode 12 when the arguments of \@doantabnote are scanned, so
+ % that the > in the string "macro:->" is matched. The actual
+ % footnote text is not an argument to \@doantabnote, but just
+ % follows it in the .tab file; so \@ResetGT can reset the
+ % category code for > that should be used when processing
+ % that text. That resetting takes place within a
+ % \begingroup-\endgroup block set up by \@doantabnote and
+ % \@endantabnote, so the catcode for > is back to 12 for the
+ % next note.
+ %
+ \edef\@tempa{`\string >}%
+ \ifnum\catcode\@tempa=12%
+ \let\@ResetGT\relax
+ \else
+ \edef\@ResetGT{\noexpand\catcode\@tempa=\the\catcode\@tempa}%
+ \@makeother\>%
+ \fi
+ \def\@doantabnote##1##2>{\def\@thetabmark{##1}\par\begingroup
+ \@ResetGT
+ \edef\@currentlabel{\csname p@tabnote\endcsname\@thetabmark}%
+ \tabnoteformat}
+ \def\@endantabnote{\par\endgroup}%
+ \tabnoteheading
+ \tabnotesize
+ \input{\jobname.tab}%
+ \setcounter{tabnote}{0} \vspace{1.8em}
+ \endgroup}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% ****************************************
+% * imgNOTES
+% ****************************************
+%
+% Date of this version: 2011-5-1
+% Matthias Borck-Elsner
+%
+%% Based on endnotes.sty Copyright 2002 John Lavagnino
+%%
+%% This file may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.2
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.2 or later is part of all distributions of LaTeX
+%% version 1999/12/01 or later.
+%%
+%% Uses an extra external file, with .img extension, to hold the
+%% text of the imgnotes. This may be deleted after the run; a new
+%% version is generated each time--it doesn't require information
+%% collected from the previous run.
+%%
+%% This code does not obey \nofiles. Perhaps it should.
+%%
+%%
+%% To turn all the footnotes in your documents into imgnotes, say
+%%
+%% \let\footnote=\imgnote
+%%
+%% in your preamble, and then add something like
+%%
+%% \newpage
+%% \begingroup
+%% \parindent 0pt
+%% \parskip 2ex
+%% \def\imgnotesize{\normalsize}
+%% \theimgnotes
+%% \endgroup
+%%
+% as the last thing in your document. (But \theimgnotes all
+% by itself will work.)
+%
+
+%
+%
+% ****************************************
+% * imgNOTE COMMANDS *
+% ****************************************
+%
+%
+% \imgnote{NOTE} : User command to insert a imgnote.
+%
+% \imgnote[NUM]{NOTE} : User command to insert a imgnote numbered
+% NUM, where NUM is a number -- 1, 2,
+% etc. For example, if imgnotes are numbered
+% *, **, etc. within pages, then \imgnote[2]{...}
+% produces imgnote '**'. This command does not
+% step the imgnote counter.
+%
+% \imgnotemark[NUM] : Command to produce just the imgnote mark in
+% the text, but no imgnote. With no argument,
+% it steps the imgnote counter before generating
+% the mark.
+%
+% \imgnotetext[NUM]{TEXT} : Command to produce the imgnote but no
+% mark. \imgnote is equivalent to
+% \imgnotemark \imgnotetext .
+%
+% \addtoimgnotes{TEXT} : Command to add text or commands to current
+% imgnotes file: for inserting headings,
+% pagebreaks, and the like into imgnotes
+% sections. TEXT a moving argument:
+% \protect required for fragile commands.
+%
+% ****************************************
+% * imgNOTE USER COMMANDS *
+% ****************************************
+%
+% imgnotes use the following parameters, similar to those relating
+% to footnotes:
+%
+% \imgnotesize : Size-changing command for imgnotes.
+%
+% \theimgnote : In usual LaTeX style, produces the imgnote number.
+%
+% \theimgmark : Holds the current imgnote's mark--e.g., \dag or '1' or 'a'.
+% (You don't want to set this yourself, as it comes
+% either from the autonumbering of notes or from
+% the optional argument to \imgnote. But you'll need
+% to use it if you define your own \makeimgmark.)
+%
+% \makeimgmark : A macro to generate the imgnote marker from \theimgmark
+% The default definition is \hbox{$^\theimgmark$}.
+%
+% \@makeimgtext{NOTE} :
+% Must produce the actual imgnote, using \theimgmark as the mark
+% of the imgnote and NOTE as the text. It is called when effectively
+% inside a \parbox, with \hsize = \columnwidth. For example, it might
+% be as simple as
+% $^{\theimgmark}$ NOTE
+%
+%
+% ****************************************
+% * imgNOTE MACROS *
+% ****************************************
+%
+
+\@definecounter{imgnote}
+\def\theimgnote{\@arabic\c@imgnote}
+
+\def\@makeimgmark{\hbox{\@textsuperscript{{\tiny{\@theimgmark}}}}}
+\def\makeimgmark{\@makeimgmark}
+
+\def\theimgmark{\@theimgmark}
+
+\newdimen\imgnotesep
+
+\def\imgnote{\@ifnextchar[\@ximgnote{\stepcounter{imgnote}%
+ \protected@xdef\@theimgmark{\theimgnote}%
+ \@imgnotemark\@imgnotetext}}
+
+\def\@ximgnote[#1]{
+ \begingroup
+ \c@imgnote=#1\relax
+ \unrestored@protected@xdef\@theimgmark{\theimgnote}%
+ \endgroup
+ \@imgnotemark\@imgnotetext }
+
+% Here begins a section of imgnote code that's really different from
+% the footnote code of LaTeX.
+
+\let\@doanimgnote=0
+\let\@endanimgnote=0
+
+\newwrite\@imgnotes
+\newif\if@imgnotesopen \global\@imgnotesopenfalse
+
+\def\@openimgnotes{\immediate\openout\@imgnotes=\jobname.img\relax
+ \global\@imgnotesopentrue}
+
+% The stuff with \next and \meaning is a trick from the TeXbook, 382,
+% there intended for setting verbatim text, but here used to avoid
+% macro expansion when the footnote text is written. \next will have
+% the entire text of the footnote as one long line, which might well
+% overflow limits on output line length; the business with \newlinechar
+% makes every space become a newline in the \@imgnotes file, so that all
+% of the lines wind up being quite short.
+
+\long\def\@imgnotetext#1{%
+ \if@imgnotesopen \else \@openimgnotes \fi
+ \immediate\write\@imgnotes{\@doanimgnote{\@theimgmark}}%
+ \begingroup
+ \def\next{#1}%
+ \newlinechar='40
+ \immediate\write\@imgnotes{\meaning\next}%
+ \endgroup
+ \immediate\write\@imgnotes{\@endanimgnote}}
+
+% \addtoimgnotes works the way the other imgnote macros probably should
+% have, requiring the use of \protect for fragile commands.
+
+\long\def\addtoimgnotes#1{%
+ \if@imgnotesopen \else \@openimgnotes \fi
+ \begingroup
+ \newlinechar='40
+ \let\protect\string
+ \immediate\write\@imgnotes{#1}%
+ \endgroup}
+
+% End of unique imgnote code
+
+\def\imgnotemark{%
+ \@ifnextchar[\@ximgnotemark
+ {\stepcounter{imgnote}%
+ \protected@xdef\@theimgmark{\theimgnote}%
+ \@imgnotemark}}
+
+\def\@ximgnotemark[#1]{%
+ \begingroup
+ \c@imgnote #1\relax
+ \unrestored@protected@xdef\@theimgmark{\theimgnote}%
+ \endgroup
+ \@imgnotemark}
+
+\def\@imgnotemark{%
+ \leavevmode
+ \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi
+ \makeimgmark
+ \ifhmode\spacefactor\@x@sf\fi
+ \relax}
+
+\def\imgnotetext{
+ \@ifnextchar [\@ximgnotenext
+ {\protected@xdef\@theimgmark{\theimgnote}%
+ \@imgnotetext}}
+
+\def\@ximgnotenext[#1]{\begingroup \c@imgnote=#1\relax
+ \xdef\@theimgmark{\theimgnote}\endgroup \@imgnotetext}
+
+\def\@ximgnotenext[#1]{%
+ \begingroup
+ \c@imgnote=#1\relax
+ \unrestored@protected@xdef\@theimgmark{\theimgnote}%
+ \endgroup
+ \@imgnotetext}
+
+
+% \theimgnotes actually prints out the imgnotes.
+
+% The user may want separate imgnotes for each chapter, or a big
+% block of them at the end of the whole document. As it stands,
+% either will work; you just say \theimgnotes wherever you want the
+% imgnotes so far to be inserted. The counter is always set to 0
+% \imgnoteformat is provided so user can specify some special formatting
+% for the imgnotes. It needs to set up the paragraph parameters, start
+% the paragraph, and print the label. The \mbox stuff in \imgnoteheading
+% is to make and undo a dummbe paragraph, to get around the games \section*
+% plays with paragraph indenting and instead give us uniform
+% indenting for all notes.
+
+\def\imgnotesname{imgnotes}
+\def\imgnoteheading{\subsubsection*{\footnotesize{\imgnotesname} \@mkboth{\MakeUppercase{\imgnotesname}}{\MakeUppercase{\imgnotesname}}}
+ \mbox{ }\par\vskip-\baselineskip}
+
+\def\imgnoteformat{\rightskip\z@ \leftskip\z@ \parindent=1.8em
+ \leavevmode\llap{\makeimgmark}}
+
+\def\imgnotesize{\footnotesize}
+
+\def\theimgnotes[#1]{\def\imgnotesname{#1}\immediate\closeout\@imgnotes \global\@imgnotesopenfalse
+ \begingroup
+ \makeatletter
+ %
+ % The machinery with \@ResetGT and > here ensures that
+ % \@doanimgnote works properly even if > is an active character
+ % at the point where \theimgnotes is invoked. > needs to have
+ % catcode 12 when the arguments of \@doanimgnote are scanned, so
+ % that the > in the string "macro:->" is matched. The actual
+ % footnote text is not an argument to \@doanimgnote, but just
+ % follows it in the .img file; so \@ResetGT can reset the
+ % category code for > that should be used when processing
+ % that text. That resetting takes place within a
+ % \begingroup-\endgroup block set up by \@doanimgnote and
+ % \@endanimgnote, so the catcode for > is back to 12 for the
+ % next note.
+ %
+ \edef\@tempa{`\string >}%
+ \ifnum\catcode\@tempa=12%
+ \let\@ResetGT\relax
+ \else
+ \edef\@ResetGT{\noexpand\catcode\@tempa=\the\catcode\@tempa}%
+ \@makeother\>%
+ \fi
+ \def\@doanimgnote##1##2>{\def\@theimgmark{##1}\par\begingroup
+ \@ResetGT
+ \edef\@currentlabel{\csname p@imgnote\endcsname\@theimgmark}%
+ \imgnoteformat}
+ \def\@endanimgnote{\par\endgroup}%
+ \imgnoteheading
+ \imgnotesize
+ \input{\jobname.img}%
+ \setcounter{imgnote}{0} \vspace{1.8em}
+ \endgroup}
+ \newlength\imgheight{} \newlength\imgwidth{} \def\imgsize#1#2{\imgwidth=#1 \imgheight#2 }
+\def\putimgnote#1#2#3{\put(#1\imgwidth,#2\imgheight){\imgnote{#3 }}}\def\ruler#1#2{\begin{picture}(0,0)(#1,#2)\begin{tiny}
+%%horizontal
+\put(0\imgwidth,0){\rotatebox{270}{ -0.00}}
+\put(-0.10\imgwidth,0){\rotatebox{270}{ -0.10}}
+\put(-0.20\imgwidth,0){\rotatebox{270}{ -0.20}}
+\put(-0.30\imgwidth,0){\rotatebox{270}{ -0.30}}
+\put(-0.40\imgwidth,0){\rotatebox{270}{ -0.40}}
+\put(-0.50\imgwidth,0){\rotatebox{270}{ -0.50}}
+\put(-0.60\imgwidth,0){\rotatebox{270}{ -0.60}}
+\put(-0.70\imgwidth,0){\rotatebox{270}{ -0.70}}
+\put(-0.80\imgwidth,0){\rotatebox{270}{ -0.80}}
+\put(-0.90\imgwidth,0){\rotatebox{270}{ -0.90}}
+\put(-1.00\imgwidth,0){\rotatebox{270}{ -1.00}}
+%vertical
+\put(0,0\imgheight){{\rotatebox{0}{+0.0}}}
+\put(0,0.10\imgheight){{\rotatebox{0}{+0.10}}}
+\put(0,0.20\imgheight){{\rotatebox{0}{+0.20}}}
+\put(0,0.30\imgheight){{\rotatebox{0}{+0.30}}}
+\put(0,0.40\imgheight){{\rotatebox{0}{+0.40}}}
+\put(0,0.50\imgheight){{\rotatebox{0}{+0.50}}}
+\put(0,0.60\imgheight){{\rotatebox{0}{+0.60}}}
+\put(0,0.70\imgheight){{\rotatebox{0}{+0.70}}}
+\put(0,0.80\imgheight){{\rotatebox{0}{+0.80}}}
+\put(0,0.90\imgheight){{\rotatebox{0}{+0.90}}}
+\put(0,1.00\imgheight){{\rotatebox{0}{+1.00}}}
+\end{tiny} \end{picture}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% ****************************************
+% * mathNOTES
+% ****************************************
+%
+% Date of this version: 2011-5-1
+% Matthias Borck-Elsner
+%
+%% Based on endnotes.sty Copyright 2002 John Lavagnino
+%%
+%% This file may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.2
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.2 or later is part of all distributions of LaTeX
+%% version 1999/12/01 or later.
+%%
+%% Uses an extra external file, with .math extension, to hold the
+%% text of the mathnotes. This may be deleted after the run; a new
+%% version is generated each time--it doesn't require information
+%% collected from the previous run.
+%%
+%% This code does not obey \nofiles. Perhaps it should.
+%%
+%%
+%% To turn all the footnotes in your documents into mathnotes, say
+%%
+%% \let\footnote=\mathnote
+%%
+%% in your preamble, and then add something like
+%%
+%% \newpage
+%% \begingroup
+%% \parindent 0pt
+%% \parskip 2ex
+%% \def\mathnotesize{\normalsize}
+%% \themathnotes
+%% \endgroup
+%%
+% as the last thing in your document. (But \themathnotes all
+% by itself will work.)
+%
+
+%
+%
+% ****************************************
+% * mathNOTE COMMANDS *
+% ****************************************
+%
+%
+% \mathnote{NOTE} : User command to insert a mathnote.
+%
+% \mathnote[NUM]{NOTE} : User command to insert a mathnote numbered
+% NUM, where NUM is a number -- 1, 2,
+% etc. For example, if mathnotes are numbered
+% *, **, etc. within pages, then \mathnote[2]{...}
+% produces mathnote '**'. This command does not
+% step the mathnote counter.
+%
+% \mathnotemark[NUM] : Command to produce just the mathnote mark in
+% the text, but no mathnote. With no argument,
+% it steps the mathnote counter before generating
+% the mark.
+%
+% \mathnotetext[NUM]{TEXT} : Command to produce the mathnote but no
+% mark. \mathnote is equivalent to
+% \mathnotemark \mathnotetext .
+%
+% \addtomathnotes{TEXT} : Command to add text or commands to current
+% mathnotes file: for inserting headings,
+% pagebreaks, and the like into mathnotes
+% sections. TEXT a moving argument:
+% \protect required for fragile commands.
+%
+% ****************************************
+% * mathNOTE USER COMMANDS *
+% ****************************************
+%
+% mathnotes use the following parameters, similar to those relating
+% to footnotes:
+%
+% \mathnotesize : Size-changing command for mathnotes.
+%
+% \themathnote : In usual LaTeX style, produces the mathnote number.
+%
+% \themathmark : Holds the current mathnote's mark--e.g., \dag or '1' or 'a'.
+% (You don't want to set this yourself, as it comes
+% either from the autonumbering of notes or from
+% the optional argument to \mathnote. But you'll need
+% to use it if you define your own \makemathmark.)
+%
+% \makemathmark : A macro to generate the mathnote marker from \themathmark
+% The default definition is \hbox{$^\themathmark$}.
+%
+% \@makemathtext{NOTE} :
+% Must produce the actual mathnote, using \themathmark as the mark
+% of the mathnote and NOTE as the text. It is called when effectively
+% inside a \parbox, with \hsize = \columnwidth. For example, it might
+% be as simple as
+% $^{\themathmark}$ NOTE
+%
+%
+% ****************************************
+% * mathNOTE MACROS *
+% ****************************************
+%
+
+\@definecounter{mathnote}
+\def\themathnote{\@arabic\c@mathnote}
+
+\def\@makemathmark{\hbox{\@textsuperscript{\textcolor{red}{\tiny{\@themathmark}}}}}
+\def\makemathmark{\@makemathmark}
+
+\def\themathmark{\@themathmark}
+
+\newdimen\mathnotesep
+
+\def\mathnote{\@ifnextchar[\@xmathnote{\stepcounter{mathnote}%
+ \protected@xdef\@themathmark{\themathnote}%
+ \@mathnotemark\@mathnotetext}}
+
+\def\@xmathnote[#1]{
+ \begingroup
+ \c@mathnote=#1\relax
+ \unrestored@protected@xdef\@themathmark{\themathnote}%
+ \endgroup
+ \@mathnotemark\@mathnotetext }
+
+% Here begins a section of mathnote code that's really different from
+% the footnote code of LaTeX.
+
+\let\@doanmathnote=0
+\let\@endanmathnote=0
+
+\newwrite\@mathnotes
+\newif\if@mathnotesopen \global\@mathnotesopenfalse
+
+\def\@openmathnotes{\immediate\openout\@mathnotes=\jobname.math\relax
+ \global\@mathnotesopentrue}
+
+% The stuff with \next and \meaning is a trick from the TeXbook, 382,
+% there intended for setting verbatim text, but here used to avoid
+% macro expansion when the footnote text is written. \next will have
+% the entire text of the footnote as one long line, which might well
+% overflow limits on output line length; the business with \newlinechar
+% makes every space become a newline in the \@mathnotes file, so that all
+% of the lines wind up being quite short.
+
+\long\def\@mathnotetext#1{%
+ \if@mathnotesopen \else \@openmathnotes \fi
+ \immediate\write\@mathnotes{\@doanmathnote{\@themathmark}}%
+ \begingroup
+ \def\next{#1}%
+ \newlinechar='40
+ \immediate\write\@mathnotes{\meaning\next}%
+ \endgroup
+ \immediate\write\@mathnotes{\@endanmathnote}}
+
+% \addtomathnotes works the way the other mathnote macros probably should
+% have, requiring the use of \protect for fragile commands.
+
+\long\def\addtomathnotes#1{%
+ \if@mathnotesopen \else \@openmathnotes \fi
+ \begingroup
+ \newlinechar='40
+ \let\protect\string
+ \immediate\write\@mathnotes{#1}%
+ \endgroup}
+
+% End of unique mathnote code
+
+\def\mathnotemark{%
+ \@ifnextchar[\@xmathnotemark
+ {\stepcounter{mathnote}%
+ \protected@xdef\@themathmark{\themathnote}%
+ \@mathnotemark}}
+
+\def\@xmathnotemark[#1]{%
+ \begingroup
+ \c@mathnote #1\relax
+ \unrestored@protected@xdef\@themathmark{\themathnote}%
+ \endgroup
+ \@mathnotemark}
+
+\def\@mathnotemark{%
+ \leavevmode
+ \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi
+ \makemathmark
+ \ifhmode\spacefactor\@x@sf\fi
+ \relax}
+
+\def\mathnotetext{
+ \@ifnextchar [\@xmathnotenext
+ {\protected@xdef\@themathmark{\themathnote}%
+ \@mathnotetext}}
+
+\def\@xmathnotenext[#1]{\begingroup \c@mathnote=#1\relax
+ \xdef\@themathmark{\themathnote}\endgroup \@mathnotetext}
+
+\def\@xmathnotenext[#1]{%
+ \begingroup
+ \c@mathnote=#1\relax
+ \unrestored@protected@xdef\@themathmark{\themathnote}%
+ \endgroup
+ \@mathnotetext}
+
+
+% \themathnotes actually prints out the mathnotes.
+
+% The user may want separate mathnotes for each chapter, or a big
+% block of them at the end of the whole document. As it stands,
+% either will work; you just say \themathnotes wherever you want the
+% mathnotes so far to be inserted. The counter is always set to 0
+% \mathnoteformat is provided so user can specify some special formatting
+% for the mathnotes. It needs to set up the paragraph parameters, start
+% the paragraph, and print the label. The \mbox stuff in \mathnoteheading
+% is to make and undo a dummbe paragraph, to get around the games \section*
+% plays with paragraph indenting and instead give us uniform
+% indenting for all notes.
+
+\def\mathnotesname{mathnotes}
+\def\mathnoteheading{\subsubsection*{\footnotesize{\mathnotesname} \@mkboth{\MakeUppercase{\mathnotesname}}{\MakeUppercase{\mathnotesname}}}
+ \mbox{ }\par\vskip-\baselineskip}
+
+\def\mathnoteformat{\rightskip\z@ \leftskip\z@ \parindent=1.8em
+ \leavevmode\llap{\makemathmark}}
+
+\def\mathnotesize{\footnotesize}
+
+\def\themathnotes[#1]{\def\mathnotesname{#1}\immediate\closeout\@mathnotes \global\@mathnotesopenfalse
+ \begingroup
+ \makeatletter
+ %
+ % The machinery with \@ResetGT and > here ensures that
+ % \@doanmathnote works properly even if > is an active character
+ % at the point where \themathnotes is invoked. > needs to have
+ % catcode 12 when the arguments of \@doanmathnote are scanned, so
+ % that the > in the string "macro:->" is matched. The actual
+ % footnote text is not an argument to \@doanmathnote, but just
+ % follows it in the .math file; so \@ResetGT can reset the
+ % category code for > that should be used when processing
+ % that text. That resetting takes place within a
+ % \begingroup-\endgroup block set up by \@doanmathnote and
+ % \@endanmathnote, so the catcode for > is back to 12 for the
+ % next note.
+ %
+ \edef\@tempa{`\string >}%
+ \ifnum\catcode\@tempa=12%
+ \let\@ResetGT\relax
+ \else
+ \edef\@ResetGT{\noexpand\catcode\@tempa=\the\catcode\@tempa}%
+ \@makeother\>%
+ \fi
+ \def\@doanmathnote##1##2>{\def\@themathmark{##1}\par\begingroup
+ \@ResetGT
+ \edef\@currentlabel{\csname p@mathnote\endcsname\@themathmark}%
+ \mathnoteformat}
+ \def\@endanmathnote{\par\endgroup}%
+ \mathnoteheading
+ \mathnotesize
+ \input{\jobname.math}%
+ \setcounter{mathnote}{0} \vspace{1.8em}
+ \endgroup}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%