diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex209/contrib/misc/draft.sty |
Initial commit
Diffstat (limited to 'macros/latex209/contrib/misc/draft.sty')
-rw-r--r-- | macros/latex209/contrib/misc/draft.sty | 253 |
1 files changed, 253 insertions, 0 deletions
diff --git a/macros/latex209/contrib/misc/draft.sty b/macros/latex209/contrib/misc/draft.sty new file mode 100644 index 0000000000..e494f9dcf8 --- /dev/null +++ b/macros/latex209/contrib/misc/draft.sty @@ -0,0 +1,253 @@ +% +% new email address: jeb@risc.com +% +% NAME THIS FILE: draft.sty (or name it draft.doc and run it through +% doc2sty) AND PUT IT IN YOUR MACROS OR TEXFORMATS DIRECTORY +% +% This is a first attempt at a draft option for the standard LaTeX styles. +% It still has several problems, which are detailed below. +% The draft option attempts to accomplish the following: +% Without requiring any changes to a LaTeX file (other than specifying +% the draft option :-) and without changing the formatting of the +% ``real'' text , mark the spots where \label, \cite, \ref, \index, +% or \glossary commands occur in text, and print the command arguments +% in the margin. +% +% USAGE: +% Specify draft as an optional argument to the documentstyle command +% e.g., \documentstyle[11pt,draft]{book} +% +% JUSTIFICATION: +% Why am I submitting this, even though it still has some problems? +% +% 1) Even in its present shape, I think it is fairly useful. +% I was going crazy before, trying to remember labels, keys, +% and so forth. I am still going crazy, but now for different +% reasons. +% 2) I'm just learning TeX, and don't expect to know enough to do this +% correctly for a while. Hopefully, someone who knows TeX will +% agree this is a useful option, and will point out my mistakes. +% Since the changes to the standard LateX routines are fairly minor, +% and my mistakes are probably silly and quite obvious, this +% may be easy to do. +% 3) I am interested in hearing ideas for other features for this +% option. This option includes some of the ideas of Dr. Rouben +% Rostamian (rostamia@umbc3.UMD.EDU) and I am interested in +% hearing from others. +% 4) Because of 2) and 3), I think we will end up with a better +% draft option if I post this in its present form and ask for +% help. +% +% Please send bugs, fixes, and suggestions to: +% Joe Baker +% 6731 Boelter Hall UCLA L.A., CA 90024 (213) 825-7079, 825-2327 +% INTERNET: jbaker@ee.ucla.edu +% UUCP: {ucbvax, or other backbone}!ucla-cs!uclaee!jbaker +% +% FINALLY, THE DETAILS +% +% The option marks \label,\cite,\ref,\index, and \glossary commands in the +% text with a scriptsize calligraphic letter in the interline space +% (L for label, +% C for cite, R for ref, I for index and G for glossary. +% The label, citation, is printed in the margin in scriptsize bold letters. +% +% For items which are input in horizontal mode, a \marginpar box holding +% the text is put in the right margin (if there are no free boxes left, +% the next option is used.) +% +% Items which are input in display math mode are shoved into the left +% margin (parboxes are not used, so it is possible for one label to +% overwrite another, or for a label to run off the left edge of the page.) +% +% Items which are input in non-display math mode and equation arrays +% are giving me problems. The left margin code works fine for equations +% in the middle of text, but doesn't produce anything for equation arrays. +% Unfortunately, I haven't found a way to distinguish between the two +% cases. For now, I simply raise the item and print it in small letters, +% and hope to avoid hitting any superscripts. +% +% Right now, a space or extra bit of glue is getting inserted where the +% item is, and thus the ``real'' text is not formatted quite the same in +% draft mode. On the tests I've run so far, there hasn't been enough +% added space to actually change any of the linebreaks, so it doesn't +% seem to be a serious problem. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Okay, here it is %%%%%%%%%%%%%%%%%%%%%%%%%% +% NOTE THIS: +% force all marginpar items into the right margin, to leave the left +% margin for calls to marginalnote. +\@mparswitchfalse +% +% +% MARGINALNOTE +% +% The following is a slightly rewritten version of Knuth's marginalstar stuff +% from the TeXBook, pg. 316. It is used to put a marginalnote in the left +% margin. The note is just shoved out and made right justified w.r.t. the +% left margin. Two calls to marginalnote for the same line of text will +% be written one over the other. Long marginal notes will extend off the +% page to the left. +% +\def\strutdepth{\dp\strutbox}% +\def\marginalnote#1{\strut\vadjust{\kern-\strutdepth\specialnote{#1}}}% +\def\specialnote#1{\vtop to \strutdepth{\baselineskip% +\strutdepth\vss\llap{\hbox{\scriptsize \bf #1}}\null}}% +% +% NOTEMARK +% This is used to put a little calligraphic letter in the text to mark +% the spot where the item occurred. +% +\def\notemark#1{\rlap{% +\specialnote{\raise8pt\hbox{$\scriptscriptstyle\cal#1$}}}} +% +% Since I haven't found one approach that works in all modes, I +% have set up the makenote routine to use the following options +% (draftimm, draftdmm, draftinm, drafthm) in inner math mode, +% display math mode, inner non-math mode, and horizontal mode. +% If you don't like one, redefine it before the begin{document} +% line. +\def\draftimm#1{\hbox{\bf \scriptsize #1}} +\def\draftdmm#1{\marginalnote{#1}} +\def\draftinm#1{\notemark{\bf \scriptsize #1}} +\def\drafthm#1{\ifx\@freelist\@empty % if there are no boxes for a marginpar, + \marginalnote{#1} % use a marginalnote + \else + {\marginpar{\scriptsize \bf #1}} + \fi} + +% +% MAKENOTE +% this routine prints the command argument. It tries to do the best it +% can for the given mode. +% +%\def\makenote#1{ +% +% +% \ifmmode % In math mode, we can't use +% % \marginpar, so we use marginalnote +% % in display mode, and for now, +% % just use bold print in inner mode +% % marginalnote works okay in regular +% % non-display math, but not in +% % eqnarrays. By redefining draft... +% % you can change this behavior. +% \ifinner +% \draftimm{#1} +% \else +% \draftdmm{#1} +% \fi +% \else +% \ifinner +% \draftinm{#1} +% \else +% \drafthm{#1} +% \fi +% \fi} +\def\makenote#1{\ifmmode\ifinner\draftimm{#1}% +\else\draftdmm{#1}\fi% +\else\ifinner\draftinm{#1}% +\else% +\drafthm{#1}% +\fi\fi} +% +% MODIFIED LATEX ROUTINES +% We add the \notemark and \makenote routines to the \ref, \pageref, +% \label, \index, \glossary, and \cite commands. +% +% REF +% +% \ref{FOO} == +% BEGIN +% make a reference mark in the text (calligraphic R) +% if \r@foo undefined +% then ?? +% Warning: 'reference foo on page ... undefined' +% else \@car \eval(\r@FOO)\@nil +% fi +% make a reference note (hopefully in the margin) listing the +% reference key +% END +% +\def\ref#1{\notemark{R}% +\@ifundefined{r@#1}{{\bf ??}\@warning% +{Reference `#1' on page \thepage \space % +undefined}}{\edef\@tempa{\@nameuse{r@#1}}\expandafter% +\@car\@tempa \@nil\null}\makenote{R:#1}} +% +% PAGEREF +% +% \pageref{foo} = +% BEGIN +% make a page reference mark in the text (calligraphic PR) +% if \r@foo undefined +% then ?? +% Warning: 'reference foo on page ... undefined' +% else \@cdr \eval(\r@FOO)\@nil +% fi +% make a reference note (hopefully in the margin) listing the +% page reference key +% END +% +\def\pageref#1{\notemark{PR}% +\@ifundefined{r@#1}{{\bf ??}\@warning% +{Reference `#1' on page \thepage \space % +undefined}}{\edef\@tempa{\@nameuse{r@#1}}\expandafter% +\@cdr\@tempa\@nil\null}\makenote{PR:#1}}% +% +% LABEL +% +% same story for the label routine +\def\label#1% +{\notemark{L}\makenote{L:#1}\@bsphack% +\if@filesw{\let\thepage\relax% +\xdef\@gtempa{\write\@auxout{\string% +\newlabel{#1}{{\@currentlabel}{\thepage}}}}}\@gtempa% +\if@nobreak\ifvmode\nobreak\fi\fi\fi\@esphack} +% +% INDEX +% note that \@wrindex is normally used by both the index and the +% glossary commands. We will make a new version for the glossary +% command that differs only in putting out a G instead of an I. +% +% \@wrindex{ITEM} == +% BEGIN +% make an I mark in the text, and put the index item in the margin +% write of {\indexentry{ITEM}{page number}} +% \endgroup +% \@esphack +% END +% +\def\@wrindex#1#2{\notemark{I}\makenote{I:#2}% +\let\thepage\relax% +\xdef\@gtempa{\write#1{\string \indexentry{#2}{\thepage}}}\endgroup\@gtempa% +\if@nobreak \ifvmode\nobreak\fi\fi\@esphack}% +% +% GLOSSARY +% version for use by glossary commands +% +\def\@wrindexg#1#2{\notemark{G}\makenote{G:#2}% +\let\thepage\relax% +\xdef\@gtempa{\write#1{\string \indexentry{#2}{\thepage}}}\endgroup\@gtempa% +\if@nobreak \ifvmode\nobreak\fi\fi\@esphack}% +% +% new version of the glossary stuff: just changed @wrindex to @wrindexg +% +\def\makeglossary{\if@filesw \newwrite\@glossaryfile + \immediate\openout\@glossaryfile=\jobname.glo + \def\glossary{\@bsphack\begingroup\@sanitize\@wrindexg\@glossaryfile}\typeout + {Writing glossary file \jobname.glo }\fi} +% +% CITE +% +% citex is used by the bibliography citation routines +% the second argument is the citation key +% +\def\@citex[#1]#2{\notemark{C}\makenote{C:#2}% +\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi% +\def\@citea{}\@cite{\@for\@citeb:=#2\do% +{\@citea\def\@citea{,}\@ifundefined% +{b@\@citeb}{{\bf ?}\@warning% +{Citation `\@citeb' on page \thepage \space undefined}}% +\hbox{\csname b@\@citeb\endcsname}}}{#1}} + |