From ecc03587e3d0f4321a37770dea1ac62ccd244fad Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 21 May 2011 22:08:34 +0000 Subject: new latex package mbenotes, renamed from tablenotes (21may11) git-svn-id: svn://tug.org/texlive/trunk@22556 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/mbenotes/mbenotes.sty | 1091 +++++++++++++++++++++ 1 file changed, 1091 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/mbenotes/mbenotes.sty (limited to 'Master/texmf-dist/tex/latex') 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} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -- cgit v1.2.3