%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % **************************************** % * 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 lambe 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 * % **************************************** % \RequirePackage{picture} \@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. %% begin section to influence the notes file \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}} %% end section to influence the notes file % \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 lambe 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 * % **************************************** % \RequirePackage{picture} \@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. %% begin section to influence the notes file \let\@doantabnote=0 \let\@endantabnote=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\@tabnotetext#1{% \if@mbenotesopen \else \@openmbenotes \fi \immediate\write\@mbenotes{\@doantabnote{\@thetabmark}}% \begingroup \def\next{#1}% \newlinechar='40 \immediate\write\@mbenotes{\meaning\next}% \endgroup \immediate\write\@mbenotes{\@endantabnote}} %% end section to influence the notes file % \addtotabnotes works the way the other tabnote macros probably should % have, requiring the use of \protect for fragile commands. \long\def\addtotabnotes#1{% \if@mbenotesopen \else \@openmbenotes \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\@mbenotes \global\@mbenotesopenfalse \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.mbe}% \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 lambe 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 * % **************************************** % \RequirePackage{picture} \@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. %% begin section to influence the notes file \let\@doanimgnote=0 \let\@endanimgnote=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\@imgnotetext#1{% \if@mbenotesopen \else \@openmbenotes \fi \immediate\write\@mbenotes{\@doanimgnote{\@theimgmark}}% \begingroup \def\next{#1}% \newlinechar='40 \immediate\write\@mbenotes{\meaning\next}% \endgroup \immediate\write\@mbenotes{\@endanimgnote}} %% end section to influence the notes file % \addtoimgnotes works the way the other imgnote macros probably should % have, requiring the use of \protect for fragile commands. \long\def\addtoimgnotes#1{% \if@mbenotesopen \else \@openmbenotes \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\@mbenotes \global\@mbenotesopenfalse \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.mbe}% \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 lambe 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 * % **************************************** % \RequirePackage{picture} \@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. %% begin section to influence the notes file \let\@doanmathnote=0 \let\@endanmathnote=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\@mathnotetext#1{% \if@mbenotesopen \else \@openmbenotes \fi \immediate\write\@mbenotes{\@doanmathnote{\@themathmark}}% \begingroup \def\next{#1}% \newlinechar='40 \immediate\write\@mbenotes{\meaning\next}% \endgroup \immediate\write\@mbenotes{\@endanmathnote}} %% end section to influence the notes file % \addtomathnotes works the way the other mathnote macros probably should % have, requiring the use of \protect for fragile commands. \long\def\addtomathnotes#1{% \if@mbenotesopen \else \@openmbenotes \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\@mbenotes \global\@mbenotesopenfalse \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.mbe}% \setcounter{mathnote}{0} \vspace{1.8em} \endgroup} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%