From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/psizzl/citation.psizzl | 607 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 607 insertions(+) create mode 100644 macros/psizzl/citation.psizzl (limited to 'macros/psizzl/citation.psizzl') diff --git a/macros/psizzl/citation.psizzl b/macros/psizzl/citation.psizzl new file mode 100644 index 0000000000..97031c7670 --- /dev/null +++ b/macros/psizzl/citation.psizzl @@ -0,0 +1,607 @@ +% CITATION PSIZZL - citation macros +% +% The first time you cite the reference, use the `=' syntax: +% this creates an entry in the table of references. +% here's how to refer to a reference the first time: +% "...as was shown first in\reference\DrellYan={% +% Drell,~S.~D., Levy,~D.~J., Yan,~T.~M., +% A FIELD THEORETIC MODEL FOR ELECTRON - NUCLEON DEEP INELASTIC +% SCATTERING, +% Phys.~Rev.~Lett. \refspec{22, 744-8(1969)}. +% }% +% here's how to cite the ref: +% "...hadrons produced in this way\cite\DrellYan\ obey a distribution..." +% or: +% "...as was shown first in \reference\DrellYan . " +% or: +% "...end of sentence. \Reference\DrellYan\ has the somewhat curious.." +% References cited this way will have automatic style switching. +% +% Figures and tables are to be defined in an analogous way +% The first time a figure is referred to: +% "... these data are displayed in +% \figure\= +% {Title of the figure}{caption}{} more text..." +% and on subsequent references: +% "...the cross section ( see \figure\nanobarn)..." +% or: +% "...end of sentence. \Figure\newcross\ shows how the new physics..." +% Tables are exactly analogous to figures. +% +% Equations are defined: +% \equation\={}% +% e.g.: +% \equation\quadrature={x^2+y^2=z^2}% +% to use this construct: +% "...end of sentence. \Equation\quadrature\ therefore represents..." +% +\def\p@gerightglue{\hss}\def\p@geleftglue{\hss}% +\def\Ps@zerr#1#2{\errhelp=#2\errmessage{Psizzl: #1}}% +\newhelp\Ps@zmsngtxt{% + I expected you to define this name here, but you didn't. + You need to define this name here. + Hit to continue processing. + }% +\newhelp\Ps@zmltptxt{% + I already encountered this name, but you're trying to define it here. + You need to give the defining text the first time the name is used, + not here. Hit to continue. + }% +\newif\iftitleincaption\titleincaptiontrue +\newif\ifv@ta +\def\vita#1{% + \v@tatrue\def\v@ta{#1}% + }% +\def\v@tahead{\uppercase{Vita}}% +% needed: macros to assist in the preparation of the author list on the +% titlepage +% +% Macros common to references and title page addresses +% +\def\c@tset{\c@tMactive\c@tVset\l@twrite}% +\def\xd@fnumber#1#2{\xdef#1{{\number\m@decount}}\m@debump}% +\def\xd@fletter#1#2{\xdef#1{{\char\number\m@decount}}\m@debump}% +\def\xd@ftext#1#2{\xdef#1{{\it#2}}}% +\def\xd@fch@pt#1{% + \xdef#1{\ch@ptercite{\ch@ptername}{\number\m@decount}}\m@debump + }% +\def\m@debump{% + \global\advance\m@decount\@ne \global\advance\m@detotal\@ne + }% +\def\m@deref#1{% + \begingroup + \ifx=\next + \aftergroup\m@detypr\aftergroup#1% + \c@tset + \begingroup\aftergroup\g@ttok\aftergroup\m@decap + \begingroup\aftergroup\g@ttok\aftergroup\m@deeqs + \else + \Ps@zerr{missing text for \string#1}\Ps@zmsngtxt + \fi + \endgroup + }% +\def\m@detypr#1{\c@tMeoline + \edef\next{\noexpand#1{\the\m@decap}}\global\m@decap{}% + \begingroup\aftergroup\expandafter\aftergroup\m@dedoembed + \endgroup\next + }% +% +% Reference Macros +% +\newcount\r@ftotal\r@ftotal\z@ +\newcount\r@fcount\r@fcount\@ne +\newif\ifr@frenumber\r@frenumberfalse% +\newif\ifch@pterrenumber\ch@pterrenumberfalse% +\newwrite\r@fcapwrite\def\r@fcapfile{refcap.psiztemp }% +\def\r@fcaphead{\uppercase{References}}% +\newwrite\r@ftabwrite\def\r@ftabfile{reftab.psiztemp }% +\def\r@ftabhead{\uppercase{List of References}}% +\def\hyphen{-}\def\comma{,}% +\newif\ifciter@f +\newif\ifsuperr@f\superr@ftrue +\newif\ifc@tenull +\newif\ifnewr@f +\def\refspec#1,#2(#3){{\bf#1}, #2 (#3)}% +\def\volyearpageref{\gdef\refspec##1,##2(##3){{\bf##1} (##3) ##2}}% +\def\cernref{%vol + \gdef\refspec##1,##2(##3){% + %author, year, {\it Journal} Publisher {\fb Vol}, page. + }% + }% +\def\refstyle{% + \r@fstyle + }% +\def\r@fstyle#1{\r@fbeg#1\r@fend}% +\def\lapperiod{% + \hbox to \z@{.\hss}% + }% +\def\r@fsupbeg{$^\bgroup}\def\r@fsupend{\egroup$}% +\def\r@fsupparbeg{$^\bgroup(}\def\r@fsupparend{)\egroup$}% +\def\r@fbrabeg{[}\def\r@fbraend{]}% +\def\r@fparbeg{(}\def\r@fparend{)}% +\def\superreference{% + \let\r@fbeg\r@fsupbeg\let\r@fend\r@fsupend + }\superreference +\def\bracketreference{% + \let\r@fbeg\r@fbrabeg\let\r@fend\r@fbraend + }% +\def\parenreference{% + \let\r@fbeg\r@fparbeg\let\r@fend\r@fparend + }% +\def\superparenreference{% + \let\r@fbeg\r@fsupparbeg\let\r@fend\r@fsupparend + }% +\def\cite{% + \let\t@g=\r@fstyle\r@fget + }% +\def\hideref{% + \let\t@g\g@ble\r@fget + }% +\def\bareref{% + \let\t@g\relax\r@fget + }% +\def\reference{% + \let\t@g=\r@f\r@fget + }% +\def\Reference{% + \let\t@g=\R@f\r@fget + }% +\def\r@f{Ref.\tie}% +\def\R@f{Reference\tie}% +\def\r@fget{% + \let\m@dedef=\m@deref\let\m@degobble=\g@bble + \let\m@decount=\r@fcount\let\m@detotal=\r@ftotal + \let\m@dedoembed\r@fembed + \let\p@riod=\p@int + \l@tnxt\m@denxt + }% +\def\r@fembed#1#2{\xd@fnumber#1{#2}% + \t@g{#1}\c@tMeoline\@dd\r@fcapwrite{#1\p@riod}{{\rm#2}}% + }% +% following 6 lines define macros to be used in mutiple references +\def\f@rstcite{\let\cite\s@ccite\let\sp@nit\g@ble\bareref}% +\def\s@ccite{\let\cite\th@rdcite\let\sp@nit\comma\hideref}% +\def\th@rdcite{\let\cite\hideref\let\sp@nit\dash\hideref}% +\def\spancite{\begingroup\let\cite\f@rstcite\r@fbeg}% +\def\groupcite{\begingroup\let\cite\bareref\let\sp@nit\g@ble\r@fbeg}% +\def\endcite{\sp@nit\mn@m\r@fend\endgroup}% +\def\comma{,}\def\dash{-}% +% +% +% author address macros +% +% +% three styles: +% +% 1 - inline author addresses +% +% 2 - footnoted address +% +% 3 - addresses in ref list +% +\newcount\@ddrcount +\newcount\@ddrtotal +\newif\ifc@teaddress +\def\rm@a{`a}\def\gr@a{\tw@}% +\def\@ddsuper#1{$^{(#1)}$}% +\adddef\resd@c{\@ddrcount\@ddrz@\@ddrtotal\z@}% +\def\pr@sent{Present address: }% +\def\authoraddress{% + \let\@ddrpre=\relax\@ddrget + }% +\def\presentaddress{% + \let\@ddrpre=\pr@sent\@ddrget + }% +\def\addressreference{% author addresses are references + \let\@ddraction=\@ddradd + \let\@ddrxdef=\xd@fletter + \let\@ddrtag=\@ddsuper + \let\@ddrt@tal=\r@ftotal + \let\@ddrz@\rm@a % alt: \let\@ddrz@\gr@a + \c@teaddresstrue + }% +\def\@ddradd#1#2{% + \t@g{#1}\c@tMeoline\@dd\r@fcapwrite{(#1)}{{\rm\@ddrpre#2}}% + }% +\def\addressfootnote{% author addresses are footnotes + \let\@ddraction=\@ddrfoot + \let\@ddrxdef=\xd@fletter + \let\@ddrtag=\@ddsuper + \let\@ddrt@tal=\@ddrtotal + \let\@ddrz@\rm@a + \c@teaddresstrue + }% +\def\@ddrfoot#1#2{\footnote{\t@g{#1}}{{\rm\@ddrpre#2}}}% +\def\addressinline{% author addresses are inline + \let\@ddraction=\@ddrinline + \let\@ddrxdef=\xd@ftext + \let\@ddrtag=\breaktitle + \let\@ddrt@tal=\@ddrtotal + \let\@ddrz@\z@ + \c@teaddressfalse + }% +\def\@ddrinline#1#2{{\rm\t@g#2}}% +\def\@ddrget{% + \let\m@dedef=\m@deref\let\m@degobble=\g@bble + \let\m@decount=\@ddrcount\let\m@detotal=\@ddrt@tal + \let\t@g=\@ddrtag + \let\m@dedoembed=\@ddrembed + \let\p@riod=\p@int + \l@tnxt\m@denxt + }% +\def\@ddrembed#1#2{\@ddrxdef#1{#2}\@ddraction#1{#2}}% +\addressfootnote +% +% EQUATION NUMBER MACRO +% +\newcount\eq@count\eq@count\@ne\newcount\eq@total\eq@total\z@ +\newwrite\eq@write +\def\eq@file{equation.textemp }% +\def\eq@head{\uppercase{List of Equations}}% +\def\display{% + \let\t@g\g@ble\eq@get + }% +\def\Equation{% + \let\t@g\Eq@\eq@get + }% +\def\Eq@{Equation\tie}% +\def\equation{% + \let\t@g\eq@\eq@get + }% +\def\eq@{Eqn.\tie}% +\def\eq@get{% + \let\m@dedef=\m@deref\let\m@degobble=\g@bble + \let\m@decount=\eq@count\let\m@detotal=\eq@total + \let\m@dedoembed=\@qnembed + \let\p@riod=\d@sh + \l@tnxt\m@denxt + }% +\def\@qnembed#1#2{\xd@fch@pt#1\t@g{#1}{\l@tMspace$$#2\eqno(#1)$$}}% +% +% macros common to \figure and \table commands +% +\def\m@denxt#1{\def\mn@m{#1}% + \ifx\undefined#1\let\temp\m@dedef\else\let\temp\m@dechk\fi + \temp#1% + }% +\def\m@dechk#1{\t@g{#1}% + \ifx=\next\let\temp\m@lterr\else\let\temp\g@ble\fi\temp#1% + }% +\def\m@lterr#1{% + \Ps@zerr{multiple text for \string#1}\Ps@zmltptxt\m@degobble + }% +\def\g@bbbble#1#2#3#4{}% +\def\g@bbble#1#2#3{}% +\def\g@bble#1#2{}% +\def\g@ble#1{}% +\def\m@deset#1{% + \begingroup + \ifx=\next + \aftergroup\m@detype\aftergroup#1% + \c@tset + \begingroup\aftergroup\g@ttok\aftergroup\m@defig + \begingroup\aftergroup\g@ttok\aftergroup\m@decap + \begingroup\aftergroup\g@ttok\aftergroup\m@detit + \begingroup\aftergroup\g@ttok\aftergroup\m@deeqs + \else + \Ps@zerr{missing text for \string#1}\Ps@zmsngtxt + \fi + \xd@fch@pt#1% chapter number is embedded in this number. + \t@g#1% the rest of this must not generate any unwanted spaces! + \endgroup + }% +\newtoks\m@deeqs\newtoks\m@detit\newtoks\m@decap\newtoks\m@defig +\def\m@detype#1{\c@tMeoline + \edef\next{\noexpand#1{\the\m@detit}{\the\m@decap}{\the\m@defig}}% + \global\m@detit{}\global\m@decap{}\global\m@defig{}% + \begingroup\aftergroup\expandafter + \ifm@dembed\aftergroup\m@dedoembed\else\aftergroup\m@denoembed\fi + \endgroup\next + }% +% +% end of macros common to \table and \figure commands +% +% FIGURE CAPTION MACRO +% +% The Figure Caption macro generates a list of figure captions. It +% is similar to the reference macro. +% +\newif\iffigureembed\figureembedtrue +\newif\iff@gmidpage\f@gmidpagetrue +\newif\iff@gfullpage +\newcount\f@gcount\f@gcount\@ne +\newcount\f@gtotal\f@gtotal\z@ +\newwrite\f@gcapwrite\def\f@gcapfile{figcap.psiztemp }% +\def\f@gcaphead{\uppercase{Figure Captions}}% +\newwrite\f@gtabwrite\def\f@gtabfile{figtab.psiztemp }% +\def\f@gtabhead{{List of Figures}}% +\newwrite\f@gfigwrite\def\f@gfigfile{figfig.psiztemp }% +\def\f@ginsert{% + \iff@gfullpage\let\next=\pageinsert + \else\iff@gmidpage\let\next=\ordinsert + \else\let\next=\topinsert + \fi + \fi\next + }% +\def\f@gcaptext#1#2#3{% + \noindent\F@g#1. \iftitleincaption#2\fi#3% + }% +\def\f@gcaption#1#2#3{% + \iff@gfullpage\vfill\f@gcaptext{#1}{#2}{#3}% + \else{\narrower{\f@gcaptext{#1}{#2}{#3}}\par}% + \fi + }% +\def\figure{% + \def\t@g{\f@g}\f@gget% + }% +\def\Figure{% + \def\t@g{\F@g}\f@gget + }% +\def\hidefig{% + \let\t@g\g@ble\f@gget + }% +\def\barefig{% + \let\t@g\relax\f@gget + }% +\def\f@g{Fig.\tie}% +\def\F@g{Figure\tie}% +\def\f@gget{% + \let\m@dedef=\m@deset\let\m@degobble\g@bbbble + \let\m@decount=\f@gcount\let\m@detotal=\f@gtotal + \let\ifm@dembed=\iffigureembed + \let\m@dedoembed\f@gpar\let\m@denoembed\f@gnow + \let\p@riod=\p@int + \l@tnxt\m@denxt + }% +\def\f@gpar#1#2#3#4{\ch@ckpar + \adddef\m@dpar{\l@tMspace + \f@ginsert + \singlespace + \ifdraft\else\line{\p@geleftglue\vbox{#4}\p@gerightglue}\fi + \f@gcaption#1{#2}{#3}% + \@ddtab\f@gtabwrite#1{#2}% + \endinsert + }% + }% +\def\f@gnow#1#2#3#4{% + {\l@twrite + \@ddtab\f@gtabwrite#1{#2}% + \@dd\f@gcapwrite{#1.}{\iftitleincaption#2\fi#3}% + \immediate\write\f@gfigwrite{#4}% + \immediate\write\f@gfigwrite{\hang\F@g#1.\endpage}% + }% + }% +% +% TABLE CAPTION MACRO +% +% The Table Caption macro generates a list of table captions. +% It is similar to the figure macro. +% +\newif\iftableembed\tableembedtrue +\newif\ift@bmidpage\t@bmidpagetrue +\newif\ift@bfullpage +\newcount\t@bcount\t@bcount\@ne \newcount\t@btotal\t@btotal\z@ +\newwrite\t@bcapwrite\def\t@bcapfile{tabcap.psiztemp }% +\def\t@bcaphead{\uppercase{Table Captions}}% +\newwrite\t@btabwrite\def\t@btabfile{tabtab.psiztemp }% +\def\t@btabhead{{List of Tables}}% +\newwrite\t@bfigwrite\def\t@bfigfile{tabfig.psiztemp }% +\def\t@binsert{% + \ift@bfullpage\let\next=\pageinsert + \else\ift@bmidpage\let\next=\ordinsert + \else\let\next=\topinsert + \fi + \fi\next + }% +\def\t@bcaptext#1#2#3{% + \noindent\T@b#1\p@riod\ \iftitleincaption#2\fi#3% + }% +\def\t@bcaption#1#2#3{% + \ift@bfullpage\t@bcaptext{#1}{#2}{#3}\par + \else\ift@bmidpage\bigskip\fi + {\narrower{\t@bcaptext{#1}{#2}{#3}\par}}\medskip + \fi + }% +\def\table{% + \let\t@g\t@b\t@bget + }% +\def\Table{% + \let\t@g\T@b\t@bget + }% +\def\hidetab{% + \let\t@g\g@ble\t@bget + }% +\def\baretab{% + \let\t@g\relax\t@bget + }% +\def\t@b{Table\tie}\def\T@b{Table\tie}% +\def\t@bget{% + \let\m@dedef=\m@deset\let\m@degobble=\g@bbbble + \let\m@decount=\t@bcount\let\m@detotal=\t@btotal + \let\ifm@dembed=\iftableembed + \let\m@dedoembed\t@bpar\let\m@denoembed\t@bnow + \let\p@riod=\p@int + \l@tnxt\m@denxt + }% +\def\t@bpar#1#2#3#4{\ch@ckpar + \adddef\m@dpar{\l@tMspace + \t@binsert + \singlespace + \t@bcaption#1{#2}{#3}% + \ifdraft\else\line{\p@geleftglue\vbox{#4}\p@gerightglue}\fi + \@ddtab\t@btabwrite#1{#2}% + \endinsert + }% + }% +\def\t@bnow#1#2#3#4{% + {\l@twrite + \@ddtab\t@btabwrite#1{#2}% + \@dd\t@bcapwrite{#1.}{\iftitleincaption#2\fi#3}% + \immediate\write\t@bfigwrite{#4}% + \immediate\write\t@bfigwrite{\hang\T@b#1.\endpage}% + }% + }% +% +% COMMON MACROS FOR ALL THE ABOVE +% +% Following three macros implement the ordered midinsert: \ordinsert. +% This repairs the defect in \midinsert which can cause the order of +% the inserts in the typeset document to be different from the +% order in which they appear in the source. +% Note that a \midinsert is translated into a \topinsert if it is too big +% or if there are any inserts carried over at all. So a split footnote +% would have an interference effect here. +\newif\if@ord +\def\ordinsert{\@ordtrue\@midtrue\@ins}% +\def\endinsert{\egroup % finish the \vbox + \if@mid\p@gefalse\if@ord\ifnum\insertpenalties>\z@\@midfalse\fi\fi\fi + \if@mid + \dimen@\ht\z@\advance\dimen@\dp\z@\advance\dimen@\bigskipamount + \advance\dimen@\pagetotal\advance\dimen@\pagedepth + \advance\dimen@-\pageshrink\advance\dimen@-\pagegoal + \ifdim\dimen@>\z@\@midfalse\fi + \fi + \if@mid \bigskip\box\z@\bigbreak + \else\insert\topins{\penalty100 % floating insertion + \splittopskip\z@skip + \splitmaxdepth\maxdimen \floatingpenalty\z@ + \ifp@ge \dimen@\dp\z@ + \vbox to\vsize{\unvbox\z@\kern-\dimen@}% depth is zero + \else \box\z@\nobreak\vskip\@ne\bigskipamount + \fi + }% + \fi\endgroup\@ordfalse + }% +% Following five macros examine successive tokens until something other +% than a is seen. This, then becomes the tokens put into the +% token register which is the argument of \g@ttok. +% In this way, the tokens are absorbed with as an active character +% but still preserving TeX's property of spacing past blanks (including +% a ) as it is absorbing the arguments of a macro. +\def\g@ttok#1{\let\temp#1\l@kt@k}% +\def\l@kt@k{\futurelet\next\d@ct@k}% +\def\d@ct@k{% + \if\next\h@tMactive\let\next\g@bt@k\else\let\next\g@tt@k\fi\next + }% +\def\g@tt@k#1{\global\temp{#1}\endgroup}% +\def\g@bt@k#1{\l@kt@k}% +\def\ch@ckpar{% + \ifx\par\endgraf\gdef\par{\m@dpar}% + \gdef\m@dpar{\gdef\m@dpar{}\global\let\par\endgraf\par}% + \fi + }% +\def\l@tnxt#1#2{\def\temp{#1#2}\futurelet\next\temp}% +\def\lowercasecite{% + \gdef\r@f{ref.\tie}\gdef\f@g{fig.\tie}% + \gdef\t@b{table\tie}\gdef\eq@{eqn.\tie}% + }% +\adddef\l@twrite{% define in macros + \l@tMother + \let\figure=0\let\Figure=0% + \let\table=0\let\Table=0% + \let\reference=0\let\Reference=0\let\cite=0% + \let\authoraddress=0\let\presentaddress=0% + \let\equation=0\let\Equation=0\let\display=0% + \let\picture=0% + }% +\gdef\@dd#1#2#3{% add something to the specified file + {\l@twrite + \immediate\write#1{\noexpand\hangpar{.08}{#2\quad}\percent}% + \immediate\write#1{#3}% + }% + }% +\def\hangpar#1#2{% + \par\noindent\hangindent#1\refsize + \hbox to #1\refsize{\hfill#2}% + }% +\def\@ddtab#1#2#3{% + {\l@twrite + \write#1{% + \line{% + \quad\strut#2\quad\h@tMother#3\h@tMother + \leaderfil\number\p@gecount + }% + }% + }% + }% +% +% MACROS FOR OUTPUTTING CITATIONS AND FOR RESETTING THEM +% +\def\re@dback#1#2#3#4{% + \ifnum#4>\z@ + \ifproof\bigskip\else\endpage\fi + {\bf\centertitle#3}% + \immediate\closeout#1 + \unlock\input#2\lock + \fi + }% +\def\c@teout{% + \ifnum\r@ftotal>\z@ + \ifproof\else\endpage\fi + \xdef\writeit{% + \write\ch@pterwrite{% + \line{% + \strut\h@tMother\r@fcaphead\h@tMother + \leaderfil\noexpand\number\p@gecount + }% + }% + }\writeit + \re@dback\r@fcapwrite\r@fcapfile\r@fcaphead\r@ftotal + \ifproof\else\endpage\fi + \fi + \ifv@ta + \endpage + \xdef\writeit{% + \write\ch@pterwrite{% + \line{% + \strut\h@tMother\v@tahead\h@tMother + \leaderfil\noexpand\number\p@gecount + }% + }% + }\writeit + \centertitle{\v@tahead}\v@ta + \fi + \iftableembed\else + \re@dback\t@bcapwrite\t@bcapfile\t@bcaphead\t@btotal + \fi + \iffigureembed\else + \re@dback\f@gcapwrite\f@gcapfile\f@gcaphead\f@gtotal + \fi + }% +\def\c@tereset{% + \global\f@gcount\@ne + \global\t@bcount\@ne + \global\eq@count\@ne + \global\r@fcount\@ne + \global\f@gtotal\z@ + \global\t@btotal\z@ + \global\r@ftotal\z@ + \n@llout\r@ftabwrite\r@ftabfile + \n@llout\r@fcapwrite\r@fcapfile + \n@llout\f@gtabwrite\f@gtabfile + \n@llout\f@gcapwrite\f@gcapfile + \n@llout\f@gfigwrite\f@gfigfile + \n@llout\t@btabwrite\t@btabfile + \n@llout\t@bcapwrite\t@bcapfile + \n@llout\t@bfigwrite\t@bfigfile + \n@llout\eq@write\eq@file + }% +\adddef\b@dyreset{\c@tereset}% +\def\c@teclear{% + \ifch@pterrenumber + \global\f@gcount\@ne + \global\t@bcount\@ne + \global\eq@count\@ne + \fi + \ifr@frenumber\global\r@fcount\@ne\fi + }% +\def\f@gt@bhead{\f@gt@bheadfalse + \ifnum\t@btotal>\z@\f@gt@bheadtrue + \line{\strut\t@btabhead\leaderfil\romannumeral-\t@bpagecount}% + \fi + \ifnum\f@gtotal>\z@\f@gt@bheadtrue + \line{\strut\f@gtabhead\leaderfil\romannumeral-\f@gpagecount}% + \fi + }% +% when text is missing, must still typeset the ref number. +% show error messages in the documentation -- cgit v1.2.3