From 12b887dd18265b4fa23960d385992f4bf0001959 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 26 Apr 2007 12:39:02 +0000 Subject: custom-bib 420 (25apr07) git-svn-id: svn://tug.org/texlive/trunk@4195 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/custom-bib/merlin.mbs | 284 ++++++++++++++++++++-- 1 file changed, 267 insertions(+), 17 deletions(-) (limited to 'Master/texmf-dist/tex/latex/custom-bib') diff --git a/Master/texmf-dist/tex/latex/custom-bib/merlin.mbs b/Master/texmf-dist/tex/latex/custom-bib/merlin.mbs index 6e5014dc22b..f1c9cd61aac 100644 --- a/Master/texmf-dist/tex/latex/custom-bib/merlin.mbs +++ b/Master/texmf-dist/tex/latex/custom-bib/merlin.mbs @@ -1,6 +1,6 @@ -%\iffalse THIS IS A META COMMENT +%\iffalse THIS IS A META COMMENT -*- TeX -*- -*- DTX -*- % File: merlin.mbs -%% Copyright 1994-2005 Patrick W Daly +%% Copyright 1994-2007 Patrick W Daly % Max-Planck-Institut f\"ur Sonnensystemforschung % Max-Planck-Str. 2 % D-37191 Katlenburg-Lindau @@ -44,7 +44,7 @@ % =============================================================== % Name and version information of the main mbs file: %\fi - % \ProvidesFile{merlin.mbs}[2005/10/17 4.14 (PWD, AO, DPC)] + % \ProvidesFile{merlin.mbs}[2007/04/24 4.20 (PWD, AO, DPC)] %\iffalse % %<*a&!a> @@ -88,7 +88,7 @@ % Grave accent \` Left brace \{ Vertical bar \| % Right brace \} Tilde \~} % -% \CheckSum{450} +% \CheckSum{516} % \setcounter{StandardModuleDepth}{1} % \setcounter{IndexColumns}{2} % \setlength{\IndexMin}{10cm} @@ -248,7 +248,7 @@ % \texttt{pp-last} and \texttt{dt-beg}} % \changes{4.06}{2003 Apr 2}{PWD: add \texttt{nmd-2} and \texttt{nmd-3} for use with \texttt{nmdash}} % \changes{4.10}{2003 May 28}{PWD: add DOI} -% \changes{4.10}{2003 June 3}{PWD: use \texttt{\backslash providecommand} +% \changes{4.10}{2003 June 3}{PWD: use \texttt{\protect\bslash providecommand} % instead of \TeX\ commands, but provide \texttt{noprov} option to undo it.} % \changes{4.10}{2003 June 3}{PWD: make \texttt{eid} available not just for Rev\TeX} % \changes{4.10}{2003 June 11}{PWD: add \texttt{pg-pre} for total book pages location} @@ -263,6 +263,10 @@ % \changes{4.13}{2004 Feb 9}{PWD: add option \texttt{tit-col} for colon after titles} % \changes{4.14}{2005 Oct 17}{PWD: add option \texttt{nm-rvvc}, spaceless initials with comma} % \changes{4.14}{2005 Oct 17}{PWD: add option \texttt{etal-xc} to suppress comma before et al.} +% \changes{4.15}{2006 Jan 4}{PWD: add option \texttt{pres} for conference talks, presentations} +% \changes{4.16}{2006 Feb 15}{PWD: fix bug in \texttt{proceedings} that suppress number/series at times} +% \changes{4.20}{2007 Apr 23}{PWD: add option to allow more than one author in cites before et al.} +% \changes{4.20}{2007 Apr 24}{PWD: allow variable number of authors before truncating citation} % % \pagestyle{myheadings} % \markboth{P. W. Daly}{A General Master Bibliography Style} @@ -849,6 +853,22 @@ % \item[annote] annotations enabled, with \texttt{annote} field. % \end{opt} % +% \textbf{Presentations:} +% add a non-standard type to handle talks (presentations). This is similar to the +% \texttt{inproceedings} but without \texttt{booktitle} and with the presenting +% author in bold face. This author is specified by the \texttt{key} entry, which +% is that author's position in the author list (1, 2, \dots). The type of presentation +% (oral or poster) is specified by the entry \texttt{type}. The date without year is given +% in \texttt{month}, which must be present. +% \begin{opt} +% \item[--] no presentations +% \item[pres] include a \texttt{presentation} type +% \item[pres-bf] (with \texttt{pres}) to put speaker in bold face +% \item[pres-it] (with \texttt{pres}) to put speaker in italics +% \item[pres-sc] (with \texttt{pres}) to put speaker in small caps +% \end{opt} +% Without any of the extra font options, the speaker's name is not highlighted. +% % \textbf{Missing names:} % If the author and/or editor is missing, the standard \texttt{.bst} files % use the \texttt{key} field in place of the names for purposes of ordering the @@ -894,7 +914,7 @@ % junior part last, after the (reversed) first name % \end{opt} % -% \textbf{Number of names:} normally all names listed (in reference list) +% \textbf{Number of names in bibliography:} normally all names listed (in reference list) % \begin{opt} % \item[nmlm] limit number of names % \item[x1...x90] (with \texttt{nmlm}) maximum number of names to appear; @@ -906,6 +926,17 @@ % one \texttt{m} number must be given, and {\tt x}$\le${\tt m} % \end{opt} % +% \textbf{Number of names in citation:} before \textsl{et al.} +% +% The default is to cite one or two names at most, but for three or more, to +% cite only one name with \textsl{et~ al.} +% \begin{opt} +% \item[mcite] to change the default +% \item[mct-1...mct-5] (with \texttt{mcite}) number of names preceding \textsl{et~al.} +% \item[mct-x2...mct-x5] (with \texttt{mcite}) max number of authors without truncating +% \end{opt} +% The default is equivalent to \texttt{mct-1} and \texttt{mct-x2}. +% % \textbf{Names font:} in the reference list % \begin{opt} % \item[--] default is names in normal typeface @@ -1532,6 +1563,23 @@ \endoptiongroup % \end{macrocode} % +% \subsection*{Presentations} +% Presentations are talks at meetings, oral or poster, that are not otherwise +% published. The author making the presentation is indicated with the \texttt{key} +% entry, which is the speaker's number within the author list. The font used +% to highlight the speaker is either bold or italics, depending on the secondary +% option, otherwise not highlighted. +% \begin{macrocode} +\beginoptiongroup{PRESENTATIONS:}{} +\optdef{*}{}{Do not add presentation type}{for conference talks} +\optdef{p}{pres}{Add presentation, speaker not highlighted}{} +\optdef{b}{pres,pres-bf}{Presentation, speaker bold face}{} +\optdef{i}{pres,pres-it}{Presentaion, speaker italic}{} +\optdef{c}{pres,pres-sc}{Presentaion, speaker in small caps}{} +\getans +\endoptiongroup +% \end{macrocode} +% % \subsection*{Ordering of the listed references} % Choices here depend on citation style. The default in both cases is % alphabetical order of all authors. For numerical style, one may also @@ -1710,7 +1758,7 @@ % \texttt{.bst} file itself (it might be possible, but I found it too complex), % this is done here. % \begin{macrocode} -\beginoptiongroup{NUMBER OF AUTHORS:}{} +\beginoptiongroup{NUMBER OF AUTHORS IN BIBLIOGRAPHY:}{} \optdef{*}{}{All authors}{included in listing} \optdef{l}{nmlm}{Limited authors}{(et al replaces missing names)} \getans @@ -1737,6 +1785,38 @@ \mes{\spsp You have selected minimum \num\space authors} \fi +% \end{macrocode} +% +% Something that I finally add after being asked many times, is to allow for +% more than one name in the citation before inserting \textsl{et~al.} +% to allow more than 2 authors before truncating +% \begin{macrocode} +\beginoptiongroup{AUTHORS IN CITATIONS:}{} +\optdef{*}{}{One author et al}{for three or more authors} +\optdef{m}{mcite}{Some other truncation scheme}{} +\getans +\endoptiongroup +\mytempfalse +\if\ans m\mytemptrue\fi +\beginoptiongroup{MAX AUTHORS BEFORE ET AL: + (if regular cite not selected)} + {\ifmytemp*\fi}% +\optdef{*}{mct-1}{One et al}{} +\optdef{2}{mct-2}{One, Two et al}{} +\optdef{3}{mct-3}{One, Two, Three et al}{} +\optdef{4}{mct-4}{One, Two, Three, Four et al}{} +\optdef{5}{mct-5}{One, Two, Three, Four, Five et al}{} +\getans +\endoptiongroup +\beginoptiongroup{MAX AUTHORS WITHOUT ET AL: + (if regular cite not selected)} + {\ifmytemp*\fi}% +\optdef{*}{mct-x2}{Two authors without truncating}{} +\optdef{3}{mct-x3}{Three authors}{without truncating} +\optdef{4}{mct-x4}{Four authors}{without truncating} +\optdef{5}{mct-x5}{Five authors}{without truncating} +\getans +\endoptiongroup % \end{macrocode} % % \subsection*{Typeface of names} @@ -3415,7 +3495,7 @@ FUNCTION {emphasize} % The bold font command may be NFSS or the regular \LaTeX~2.09 declaration. %\changes{1.3(2.1)}{1994 Jul 1}{Add \texttt{nfss} option} % \begin{macrocode} -%<*nmft-bf|vol-bf|vol-2bf|lab-bf|dtbf> +%<*nmft-bf|vol-bf|vol-2bf|lab-bf|dtbf|pres-bf> FUNCTION {bolden} { duplicate$ empty$ { pop$ "" } @@ -3426,7 +3506,7 @@ FUNCTION {bolden} % if$ } -% +% % \end{macrocode} % \end{macro} % @@ -3434,7 +3514,7 @@ FUNCTION {bolden} % To put text into small caps. %\changes{3.0}{1995 Mar 3}{Add function} % \begin{macrocode} -%<*lab-sc|nmft-sc> +%<*lab-sc|nmft-sc|pres-sc> FUNCTION {scaps} { duplicate$ empty$ { pop$ "" } @@ -3445,7 +3525,7 @@ FUNCTION {scaps} % if$ } -% +% % \end{macrocode} % \end{macro} % @@ -4260,6 +4340,35 @@ FUNCTION {format.url} % \end{macrocode} % \end{macro} % +% \begin{macro}{`check.speaker'} +% \changes{4.15}{2006 Jan 4}{Add \texttt{presentation}, which needs this function +% to highlight speaker name} +% The \texttt{presentation} type uses the \texttt{key} entry to indicate which +% author is the speaker, as the sequence number in the author list. The speaker's +% name is put into a different font, depending on the extra option. If no font +% is specified, all names are the same. +% \begin{macrocode} +INTEGERS { nameptr namesleft numnames } + +%<*pres-bf|pres-it|pres-sc> +FUNCTION {check.speaker} +{ key empty$ 'skip$ + { key nameptr int.to.str$ = + { +% bolden +% emphasize +% scaps + } + 'skip$ + if$ + } + if$ +} + +% +% \end{macrocode} +% \end{macro} + % \begin{macro}{`format.names'} % \changes{1.5(2.3)}{1994 Sep 16}{Add \texttt{harvard} command for `and' with % new option \texttt{harnm}} @@ -4309,7 +4418,6 @@ FUNCTION {format.url} % just before the call. % \begin{macrocode} STRINGS { bibinfo} -INTEGERS { nameptr namesleft numnames } % \end{macrocode} % @@ -4541,6 +4649,12 @@ FUNCTION {format.names} * % bibinfo bibinfo.check +%<*pres-bf|pres-it|pres-sc> + type$ "presentation" = + { check.speaker } + 'skip$ + if$ +% 't := nameptr #1 > { @@ -5253,6 +5367,7 @@ FUNCTION {end.quote.btitle} % \changes{3.89}{1999 May 20}{Reset \texttt{t}; might still be ``others'' % from last format function} % \changes{3.98}{1999 May 28}{Fix bug with \texttt{harnm}, missing brace} +% \changes{4.20}{2007 Apr 23}{Format juniors to be same as for \texttt{format.lab.names}} % \begin{macrocode} %<*har|cay|nat> FUNCTION {format.full.names} @@ -5263,7 +5378,11 @@ FUNCTION {format.full.names} numnames 'namesleft := { namesleft #0 > } { s nameptr - "{vv~}{ll}" format.name$ +% "{vv~}{ll}" format.name$ +%<*jnrlab> +% "{vv~}{ll}{, jj}" format.name$ +% "{vv~}{ll}{ jj}" format.name$ +% % cite.name.font 't := nameptr #1 > @@ -7004,7 +7123,7 @@ FUNCTION {booklet} % \changes{4.13}{2004 Feb 9}{Restore chap specification with \texttt{dt-jnl} option.} % Restore the chapter specification (2004 Feb 9) after someone complained. % There are still some bugs here. If some date punctuation is specified, say -% with \texttt{yrp-semi) for a semi-colon after the year, this appears always, +% with \texttt{yrp-semi} for a semi-colon after the year, this appears always, % even if there is no text following. But then this to be an unlikely wish anyway, % since such punctuation options are best suited for \texttt{dt-beg}. % \begin{macrocode} @@ -7506,12 +7625,50 @@ FUNCTION {phdthesis} %<(harnm|url-nl)&!revdata> write.url } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`presentation'} +% \begin{macrocode} +%<*pres> +FUNCTION {presentation} +{ output.bibitem + format.authors output +% author format.key output +% add.colon +% name.or.dash +% new.block + format.title output +% end.quote.title +% new.block +% new.sentence +% add.colon + format.organization.address "organization and address" output.check + month "month" output.check + year "year" output.check +% new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output + new.sentence + type missing$ 'skip$ + {"(" type capitalize * ")" * output} + if$ +%<*url-blk&!harnm> +% new.block + format.url output +% + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} + +% % \end{macrocode} % \end{macro} % % \begin{macro}{`proceedings'} % \changes{3.89d1}{1999 July 20}{AO: call \texttt{format.eprint}, and \texttt{format.url}.} % \changes{4.10}{2003 May 28}{Add \texttt{format.doi}} +% \changes{4.16}{2006 Feb 15}{For numerical, the number/series could be missing when editor there; fixed} % \begin{macrocode} %<*ay> FUNCTION {proceedings} @@ -7574,7 +7731,7 @@ FUNCTION {proceedings} % format.number.series output editor empty$ { publisher empty$ - 'skip$ +% { format.number.series output } { % new.sentence % format.number.series output @@ -7585,9 +7742,11 @@ FUNCTION {proceedings} { publisher empty$ { % new.sentence +% format.number.series output format.organization.address output } { % new.sentence +% format.number.series output organization "organization" bibinfo.check output format.publisher.address output } @@ -7855,8 +8014,10 @@ FUNCTION {format.lab.names} % \end{macrocode} % \changes{3.89}{1999 May 20}{Reset \texttt{t}; might still be ``others'' % from last format function} +% The function for the standard citation: one or two authors cited full, but for +% more than two, only the first with \emph{et~al.} given. % \begin{macrocode} -%<*ay> +%<*ay&!mcite> FUNCTION {format.lab.names} { 's := "" 't := @@ -7921,7 +8082,96 @@ FUNCTION {format.lab.names} % } -% +% +% \end{macrocode} +% +% \changes{4.20}{2007 Apr 23}{Add citations with more than one author with \emph{et~al.}} +% \changes{4.20}{2007 Apr 24}{Select number of authors before truncating} +% The code for formating author--year citations with more than one author +% before \emph{et al.} or selecting a number other than two for truncating, +% is much the same as the \texttt{format.full.names} function. +% \begin{macrocode} +%<*ay&mcite> +FUNCTION {format.lab.names} +{'s := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr +% "{vv~}{ll}" format.name$ +%<*jnrlab> +% "{vv~}{ll}{, jj}" format.name$ +% "{vv~}{ll}{ jj}" format.name$ +% +% cite.name.font + 't := + nameptr #1 > + { +% nameptr #2 = +% nameptr #3 = +% nameptr #4 = +% nameptr #5 = +% nameptr #6 = +% numnames #2 > and +% numnames #3 > and +% numnames #4 > and +% numnames #5 > and + { "others" 't := + #1 'namesleft := } + 'skip$ + if$ + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { +% cite.name.font +%<*!etal-it> +% " " * bbl.etal cite.name.font * +% " " * bbl.etal * +% +% " " * bbl.etal emphasize * +% cite.name.font + } + { +%<*!harnm> +%<*!and-xcom> + numnames #2 > + { "," * } + 'skip$ + if$ +% +% bbl.and +% "\&" +% +% "\harvardand{}" + space.word * t * + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +%<*lab&!and-rm> + t "others" = + 'skip$ + { cite.name.font } + if$ +% +} + +% % \end{macrocode} % \end{macro} % -- cgit v1.2.3