%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % **************************************** % * mbeNOTES % **************************************** % % Date of this version: 2012-9-21 % 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 * %% **************************************** %% %% \ProvidesPackage{mbenotes}[2012/09/21 (Version 2) Notes for Text,tables,images and equations ]\RequirePackage{graphicx,xcolor}\@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: 2012-9-21 % 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 * %% **************************************** %% %% \ProvidesPackage{mbenotes}[2012/09/21 (Version 2) Notes for Text,tables,images and equations ]\RequirePackage{graphicx,xcolor}\@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: 2012-9-21 % 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 * %% **************************************** %% %% \ProvidesPackage{mbenotes}[2012/09/21 (Version 2) Notes for Text,tables,images and equations ]\RequirePackage{graphicx,xcolor}\@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: 2012-9-21 % 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 * %% **************************************** %% %% \ProvidesPackage{mbenotes}[2012/09/21 (Version 2) Notes for Text,tables,images and equations ]\RequirePackage{graphicx,xcolor}\@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{% \ifmeasuring@% \else% \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}% \fi}%% \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} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%