diff options
author | Karl Berry <karl@freefriends.org> | 2024-07-14 20:14:08 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2024-07-14 20:14:08 +0000 |
commit | b78a525060cf1ff47052f4f6757f00a9a3e8f867 (patch) | |
tree | d8195e8c4587c10673c0e4ba87597b1e0ff52b31 /Master/texmf-dist/source | |
parent | 7dfb9e87da2cae3811e28b3cd9ec7771cc59490d (diff) |
cjs-rcs-article (14jul24)
git-svn-id: svn://tug.org/texlive/trunk@71799 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source')
7 files changed, 10779 insertions, 257 deletions
diff --git a/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-article.dtx b/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-article.dtx index 9376ddbbf3e..cab40dfb504 100644 --- a/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-article.dtx +++ b/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-article.dtx @@ -3,7 +3,7 @@ % Article class for The Canadian Journal of Statistics | La revue % canadienne de statistique % -% Copyright (C) Statistical Society of Canada | Société +% Copyright (C) 2023-2024 Statistical Society of Canada | Société % canadienne de statistique % % The class file and templates derived from this file are licenced @@ -25,10 +25,10 @@ %<*driver> \ProvidesFile{cjs-rcs-article.dtx} %</driver> -%<class>\NeedsTeXFormat{LaTeX2e}[2009/09/24] +%<class>\NeedsTeXFormat{LaTeX2e}[2021/06/01] %<class>\ProvidesClass{cjs-rcs-article}% %<*class> - [2023/11/29 v1.0 Article class for The Canadian Journal of +[2024/07/14 v1.1 Article class for The Canadian Journal of Statistics | La revue canadienne de statistique] %</class> %<*driver> @@ -122,6 +122,10 @@ \OnlyDescription \fi + %% Additional colors + \colorlet{codebg}{LightYellow1} % code background + \colorlet{prompt}{Orchid4} % command prompt + %% New \DescribeMacro type environments for class options and lengths \NewDocElement[envlike,notoplevel,printtype=\emph{option}]{Option}{option} \NewDocElement[macrolike,notoplevel,printtype=$\ell$]{Length}{length} @@ -139,9 +143,12 @@ \newcommand*\CJSbstfr{\code{cjs-rcs-fr}} \makeatother + %% URL of the project repository + \newcommand*\reposurl{https://gitlab.com/cjs-rcs/cjs-rcs-article} + %% Redefine \year using information from \filedate instead of using %% compilation time - \def\parsedate#1/#2/#3\relax{\def\year{#1}} + \def\parsedate#1/#2/#3\relax{\def\year{#1}\def\isodate{#1-#2-#3}} %% Definition of a shorthand to either hyphenate a word or insert a %% regular dash. Use in the long names of Creative Commons licences. @@ -149,6 +156,26 @@ \useshorthands*{"} \defineshorthand{"-}{\discretionary{-}{}{-}} + %% Source code + \usepackage{listings} + \lstset{% + basicstyle=\ttfamily\NoAutoSpacing, + moredelim=[is][\color{prompt}]{---}{-}, + escapeinside=`', + showstringspaces=false, + backgroundcolor=\color{codebg}, + frame=leftline, + framerule=2pt, + framesep=5pt, + xleftmargin=7.4pt + } + + %% The \meta command from memoir needs an additionnel \normalfont to + %% use the document font in listings. + \makeatletter + \def\meta@font@select{\normalfont\itshape} + \makeatother + \begin{document} \DocInput{cjs-rcs-article.dtx} \end{document} @@ -257,6 +284,18 @@ % CTAN.} % \changes{1.0}{2023-11-29}{Fix various typos and cosmetic issues in % the documentation.} +% \changes{1.1}{2024-06-26}{Provide support to acknowledge usage of +% data from the Alzheimer’s Disease Neuroimaging Initiative (ADNI) and +% the Alzheimer’s Disease Neuroimaging Metabolomics Consortium +% (ADMC).} +% \changes{1.1}{2024-06-26}{Introduce new commands \cs{specialack} and +% \cs{specialackmark} for the editors.} +% \changes{1.1}{2024-06-23}{Improve the documentation, in particular +% the installation instructions and access to the templates.} +% \changes{1.1}{2024-07-02}{Add the References section to the table of +% contents of the PDF.} +% \changes{1.1}{2024-07-13}{Add the command \cs{matit} to typeset bold +% italic in math in a portable way.} % % \ifenglish% % \title[Guide to the class {\CJSclass}]{% @@ -353,11 +392,9 @@ % {\CJSclass} requiert une distribution {\TeX} récente et % à jour. Nous recommandons les distributions % % \fi -% \href{https://tug.org/texlive}{{\TeX}~Live} % -% --- % +% \href{https://tug.org/texlive}{{\TeX}~Live}\ifenglish---\else~--- \fi% % \ifenglish or its variant for macOS \else ou sa variante pour macOS \fi% -% \href{https://tug.org/mactex}{Mac{\TeX}} % -% --- % +% \href{https://tug.org/mactex}{Mac{\TeX}}\ifenglish---\else~--- \fi% % \ifenglish and \else et \fi% % \href{https://miktex.org}{MiK{\TeX}}. % % \ifenglish% @@ -425,17 +462,28 @@ % \section{Démarrage rapide} % \fi % \label{sec:quick-start} +% \changes{1.1}{2024-06-05}{Documentation: add a link to obtain the +% templates in the \emph{Quick start} section.} % % \ifenglish% % The class ships with templates for articles in English and in % French. In {\TeX}~Live, these are located with the -% documentation of the class. To quickly start writing your article, -% copy the appropriate template to your working directory and follow -% the brief instructions therein. % +% documentation of the class. You may also obtain the templates from +% the % % \else% % La classe est livrée avec des gabarits pour des articles en français % et en anglais. Dans la distribution {\TeX}~Live, ceux-ci sont -% classés avec la documentation. Pour débuter rapidement la rédaction +% classés avec la documentation. Vous pouvez aussi les récupérer +% depuis le % +% \fi% +% \href{\reposurl/-/releases/\fileversion}{% +% \ifenglish project repository\else dépôt du projet\fi}. % +% \ifenglish% +% To quickly start writing your article, copy the appropriate template +% to your working directory and follow the brief instructions +% therein. % +% \else% +% Pour débuter rapidement la rédaction % de votre article, copiez le gabarit approprié dans votre dossier de % travail et suivez les directives succinctes qui s'y trouvent. % % \fi @@ -490,6 +538,9 @@ % \changes{0.91}{2023-10-16}{Change the name of the archive containing % a ``local'' installation of the class from % \texttt{-no-local-tex.zip} to \texttt{-project-install.zip}.} +% \changes{1.1}{2024-06-05}{Documentation: provide a direct link to +% the release corresponding to the version of the documentation in the +% \emph{Installation} section.} % % \ifenglish% % The class {\CJSclass} is distributed as the package % @@ -507,21 +558,33 @@ % the command line: % % \else% % via le réseau de sites \emph{Comprehensive {\TeX} Archive Network} -% (CTAN). Elle fait partie des distributions {\TeX} standards telles -% que {TeX}~Live, Mac{\TeX} et MiK{\TeX}. Nous recommandons fortement -% d'installer ou de mettre à jour le paquetage à l'aide du +% (CTAN). Celui-ci fait partie des distributions {\TeX} standards +% telles que {TeX}~Live, Mac{\TeX} et MiK{\TeX}. Nous recommandons +% fortement d'installer ou de mettre à jour le paquetage à l'aide du % gestionnaire de paquetages de votre distribution {\TeX}. Par -% exemple, avec {\TeX}~Live, vous pouvez effectuer ces opérations dans -% l'assistant graphique, ou encore avec l'une ou l'autre des commandes -% ci-dessous: % +% exemple, avec {\TeX}~Live, vous pouvez effectuer ces opérations +% dans l'assistant graphique, ou encore avec l'une ou l'autre des +% commandes ci-dessous: % +% \fi +% \iffalse +%<*example> +% \fi +\begin{lstlisting} +---$- tlmgr install cjs-rcs-article +\end{lstlisting} +% \iffalse +%</example> % \fi -% \begin{quote} -% \code{tlmgr install cjs-rcs-article} -% \end{quote} % \ifenglish or\else ou\fi -% \begin{quote} -% \code{tlmgr update cjs-rcs-article} -% \end{quote} +% \iffalse +%<*example> +% \fi +\begin{lstlisting} +---$- tlmgr update cjs-rcs-article +\end{lstlisting} +% \iffalse +%</example> +% \fi % % \ifenglish% % If you are not in position to install packages or update the {\TeX} @@ -530,23 +593,23 @@ % limited in scope to your project. Download the archive % % \else% % S'il vous est impossible d'installer des paquetages ou de mettre à -% jour la distribution {\TeX} --- notamment si vous utilisez une -% plateforme de rédaction en ligne --- vous pouvez procéder à une +% jour la distribution {\TeX}~--- notamment si vous utilisez une +% plateforme de rédaction en ligne~--- vous pouvez procéder à une % installation simplifiée de la classe, mais dont la portée sera % limitée à votre projet. Pour ce faire, téléchargez l'archive % % \fi% % \code{cjs-rcs-article-project-install.zip} % % \ifenglish from the \else depuis le \fi% -% \href{https://gitlab.com/cjs-rcs/cjs-rcs-article/-/releases}{% -% \ifenglish project repository\else dépôt du projet\fi} % +% \href{\reposurl/-/releases/\fileversion}{% +% \ifenglish project repository\else dépôt du projet\fi}, % % \ifenglish% -% and uncompress it in the directory of your project. You will then -% have access to all the essential files of the class within this -% project. % +% uncompress it and place its contents in the directory of your +% project. You will then have access to all the essential files of the +% class within this project. % % \else% -% et décompressez celle-ci dans le répertoire de votre projet. Vous -% disposerez alors de tous les fichiers essentiels de la classe à -% l'intérieur de ce projet. % +% décompressez celle-ci et placez son contenu dans le répertoire de +% votre projet. Vous disposerez alorsà l'intérieur de ce projet de +% tous les fichiers essentiels de la classe. % % \fi % % \ifenglish% @@ -631,7 +694,7 @@ % {pdf\LaTeX} utilise les versions Type~1 des polices STIX~Two et % Fira. Or, la technologie Type~1 PostScript étant aujourd'hui % obsolète, ces polices ne sont plus mises à jour. Le moteur -% {\XeLaTeX} utilise les plus modernes --- et complètes --- versions +% {\XeLaTeX} utilise les plus modernes~--- et complètes~--- versions % OpenType des polices.}, % % nous recommandons de compiler votre manuscript avec le plus moderne % moteur {\XeLaTeX}. % @@ -643,24 +706,34 @@ % \subsection{Gabarits} % \fi % \label{sec:usage:templates} +% \changes{1.1}{2024-06-05}{Documentation: add a link to the templates +% in the \emph{Templates} sub-section.} % % \ifenglish% % The class is distributed with templates for articles in English % and in French. If you are using the version of the class included % with your {\TeX} distribution, the templates may be located with the -% documentation (this is the case in {\TeX}~Live). If you installed -% the class manually by following the instructions in -% \autoref{sec:installation}, the templates reside in your working -% directory. % +% documentation (this is the case in {\TeX}~Live). You may also obtain +% them from the % % \else % La classe est distribuée avec des gabarits pour des articles en français % et en anglais. Si vous utilisez la version de la classe fournie avec % votre distribution {\TeX}, les gabarits peuvent être classés avec -% la documentation (c'est le cas dans {\TeX}~Live). Si vous avez +% la documentation (c'est le cas dans {\TeX}~Live). Vous pouvez aussi +% les récupérer depuis le % +% \fi +% \href{\reposurl/-/releases/\fileversion}{% +% \ifenglish project repository\else dépôt du projet\fi}. %% +% \ifenglish +% If you installed the class manually by following the instructions in +% \autoref{sec:installation}, the templates reside in your working +% directory. % +% \else% +% Si vous avez % plutôt installé la classe manuellement en suivant les instructions % de la \autoref{sec:installation}, les gabarits se trouvent dans % votre dossier de travail. % -% \fi +% \fi% % % \ifenglish% % We strongly encourage to start from a template to write your @@ -705,13 +778,19 @@ % \label{sec:usage:options} % % \ifenglish% -% The class is loaded with the command % +% The class is loaded with the command: % % \else% -% On charge la classe avec la commande % +% On charge la classe avec la commande: % +% \fi +% \iffalse +%<*example> +% \fi +\begin{lstlisting} +\documentclass`\oarg{options}\marg{cjs-rcs-article}' +\end{lstlisting} +% \iffalse +%</example> % \fi -% \begin{quote} -% \cmdprint{\documentclass}\oarg{options}\code{\{cjs-rcs-article\}} -% \end{quote} % \ifenglish% % Some \meta{options} of the class are intended for the authors, % whereas others are instead intended for the editors of {\TheCJS*}. @@ -931,22 +1010,28 @@ % du titre qui sera utilisée dans les entêtes. La syntaxe de la % commande est donc: % % \fi -% \begin{quote} -% \def\OPT{\ifenglish Short title\else Titre court\fi} -% \def\ARG{\ifenglish Full title\else Titre complet\fi} -% \cmdprint{\title}\oarg{\OPT}\marg{\ARG} -% \end{quote} -% \ifenglish% -% Write the title in sentence style, that is, with only an initial -% capital. In English, also capitalize the first word after a colon. -% Break a long title needing more than one line using \code{\bs\bs} -% or \cmdprint{\newline}. % -% \else% -% Entrez le titre en minuscules (sauf pour la majuscule initiale). -% En anglais, utilisez toutefois une majuscule initiale après un -% deux-points. Vous devez couper manuellement avec \code{\bs\bs} ou -% \cmdprint{\newline} un titre qui nécessite plus d'une ligne. -% \fi +% \iffalse +%<*example> +% \fi +\def\OPT{\ifenglish Short title\else Titre court\fi} +\def\ARG{\ifenglish Full title\else Titre complet\fi} +\begin{lstlisting} +\title`\oarg{\OPT}\marg{\ARG}' +\end{lstlisting} +% \iffalse +%</example> +% \fi +% \ifenglish% +% Write the title in sentence style, that is, with only an initial +% capital. In English, also capitalize the first word after a colon. +% Break a long title needing more than one line using \code{\bs\bs} +% or \cmdprint{\newline}. % +% \else% +% Entrez le titre en minuscules (sauf pour la majuscule initiale). +% En anglais, utilisez toutefois une majuscule initiale après un +% deux-points. Vous devez couper manuellement avec \code{\bs\bs} ou +% \cmdprint{\newline} un titre qui nécessite plus d'une ligne. +% \fi % \end{DescribeMacro} % % \ifenglish% @@ -994,11 +1079,17 @@ % informations relatives à un auteur de l'article. Sa syntaxe % générale est la suivante: % % \fi -% \begin{quote} -% \def\FORENAME{\ifenglish Forename\else Prénom\fi} -% \def\SURNAME{\ifenglish Surname\else Nom\fi} -% \cmdprint{\author}\oarg{options}\code{\{}\meta{\FORENAME}\code{ }\cmdprint{\surname}\marg{\SURNAME}\code{\}} -% \end{quote} +% \iffalse +%<*example> +% \fi +\def\FORENAME{\ifenglish Forename\else Prénom\fi} +\def\SURNAME{\ifenglish Surname\else Nom\fi} +\begin{lstlisting} +\author`\oarg{options}'{`\meta{\FORENAME}' \surname`\marg{\SURNAME}'} +\end{lstlisting} +% \iffalse +%</example> +% \fi % \ifenglish% % The \meta{Surname} must be entered using the command % \cmd{\surname}. Write the \meta{Forename} and \meta{Surname} in @@ -1113,15 +1204,27 @@ % \def\FORENAME{\ifenglish Forename\else Prénom\fi} % \def\SURNAME{\ifenglish Surname\else Nom\fi} % \item \ifenglish For the corresponding author\else Pour l'auteur correspondant\fi: -% \begin{quote} -% \cmdprint{\author}\code{[orcid=}\meta{id}\code{, email=}\meta{\EMAIL}\code{, corresponding]} \\ -% \verb+ +\code{\{}\meta{\FORENAME}\code{ }\cmdprint{\surname}\marg{\SURNAME}\code{\}} -% \end{quote} +% \iffalse +%<*example> +% \fi +\begin{lstlisting} +\author[orcid=`\meta{id}', email=`\meta{\EMAIL}', corresponding] + {`\meta{\FORENAME}' \surname`\marg{\SURNAME}'} +\end{lstlisting} +% \iffalse +%</example> +% \fi % \item \ifenglish For all other authors\else Pour tous les autres auteurs\fi: -% \begin{quote} -% \cmdprint{\author}\code{[orcid=}\meta{id}\code{, email=}\meta{\EMAIL}\code{]} \\ -% \verb+ +\code{\{}\meta{\FORENAME}\code{ }\cmdprint{\surname}\marg{\SURNAME}\code{\}} -% \end{quote} +% \iffalse +%<*example> +% \fi +\begin{lstlisting} +\author[orcid=`\meta{id}', email=`\meta{\EMAIL}'] + {`\meta{\FORENAME}' \surname`\marg{\SURNAME}'} +\end{lstlisting} +% \iffalse +%</example> +% \fi % \end{itemize} % \end{DescribeMacro} % \end{DescribeMacro} @@ -1136,11 +1239,17 @@ % mentionné dans la commande \cmd{\author} qui la précède. La forme % générale de l'affiliation est: % % \fi -% \begin{quote} -% \def\AFFIL{\ifenglish Department, University, City, Country\else% -% Département, Université, Ville, Pays\fi} -% \cmd{\affil}\marg{\AFFIL} -% \end{quote} +% \iffalse +%<*example> +% \fi +\def\AFFIL{\ifenglish Department, University, City, Country\else% + Département, Université, Ville, Pays\fi} +\begin{lstlisting} +\affil`\marg{\AFFIL}' +\end{lstlisting} +% \iffalse +%</example> +% \fi % \ifenglish% % Give the country name in the main language of the article. % % \else% @@ -1164,13 +1273,19 @@ % premier auteur suivi de la locution «et collab.» (en français) ou % «et al.» (en anglais): % % \fi -% \begin{quote} -% \def\SURNAME{\ifenglish Surname\else Nom\fi} -% \def\ETAL{\ifenglish et al.\else et collab.\fi} -% \def\ETCOLLAB{\ifenglish et collab.\else et al.\fi} -% \cmdprint{\runningauthor}\code{\{}\meta{\SURNAME}\code{ \ETAL\}} \\ -% \cmdprint{\runningauthor}\code{\{}\meta{\SURNAME}\code{ \ETCOLLAB\}} -% \end{quote} +% \iffalse +%<*example> +% \fi +\def\SURNAME{\ifenglish Surname\else Nom\fi} +\def\ETAL{\ifenglish et al.\else et collab.\fi} +\def\ETCOLLAB{\ifenglish et collab.\else et al.\fi} +\begin{lstlisting} +\runningauthor{`\meta{\SURNAME} \ETAL'} +\runningauthor{`\meta{\SURNAME} \ETCOLLAB'} +\end{lstlisting} +% \iffalse +%</example> +% \fi % \end{DescribeMacro} % % \ifenglish% @@ -1224,16 +1339,22 @@ % mots-clés de l'article. Il s'utilise comme une liste % \code{itemize} ou \code{enumerate}: % % \fi -% \begin{quote} -% \def\KEYWORDC{\ifenglish Key word\else Mot-clé\fi} -% \def\KEYWORD{\ifenglish key word\else mot-clé\fi} -% \cmdprint{\begin}\code{\{keywords\}} \\ -% \cmdprint{\item} \emph{{\KEYWORDC} 1} \\ -% \cmdprint{\item} \emph{{\KEYWORD} 2} \\ -% \cmdprint{\item} \emph{{\KEYWORD} 3} \\ -% \code{...} \\ -% \cmdprint{\end}\code{\{keywords\}} -% \end{quote} +% \iffalse +%<*example> +% \fi +\def\KEYWORDC{\ifenglish Key word\else Mot-clé\fi} +\def\KEYWORD{\ifenglish key word\else mot-clé\fi} +\begin{lstlisting} +\begin{keywords} +\item `\normalfont\itshape{\KEYWORDC} 1' +\item `\normalfont\itshape{\KEYWORD} 2' +\item `\normalfont\itshape{\KEYWORD} 3' +... +\end{keywords} +\end{lstlisting} +% \iffalse +%</example> +% \fi % \ifenglish% % As shown above, use an initial capital for the first key word % only. Punctuation will be added automatically. % @@ -1261,15 +1382,21 @@ % classification mathématique par matières de l'article. Son % interface est la suivante: % % \fi -% \begin{quote} -% \def\LEVEL{\ifenglish level\else niveau\fi} -% \def\CODE{\ifenglish code\else rubrique\fi} -% \cmdprint{\begin}\code{\{classification\}}\oarg{type} \\ -% \cmdprint{\item}\oarg{\LEVEL} \emph{{\CODE} 1}, \emph{{\CODE} 2}, \dots \\ -% \cmdprint{\item}\oarg{\LEVEL} \emph{{\CODE} 1}, \emph{{\CODE} 2}, \dots \\ -% \code{...} \\ -% \cmdprint{\end}\code{\{classification\}} -% \end{quote} +% \iffalse +%<*example> +% \fi +\def\LEVEL{\ifenglish level\else niveau\fi} +\def\CODE{\ifenglish code\else rubrique\fi} +\begin{lstlisting} +\begin{classification}`\oarg{type}' +\item`\oarg{\LEVEL} \normalfont\itshape{\CODE} 1, {\CODE} 2, \dots' +\item`\oarg{\LEVEL} \normalfont\itshape{\CODE} 1, {\CODE} 2, \dots' +... +\end{classification} +\end{lstlisting} +% \iffalse +%</example> +% \fi % \ifenglish% % The classification system used is % % \else% @@ -1331,7 +1458,53 @@ % les options \code{review}, \code{supplement} et \code{nocjs}, % l'espace est remplacé par un pied de page contenant le numéro de % page. % -% \fi% +% \fi +% +% \ifenglish% +% \subsubsection{ADNI data use agreement} +% \else% +% \subsubsection{Contrat d'utilisation des données de l'ADNI} +% \fi +% \label{sec:usage:titling:adni} +% +% \ifenglish% +% The Alzheimer’s Disease Neuroimaging Initiative (ADNI) % +% \else% +% Le % +% \fi +% \href{https://adni.loni.usc.edu/wp-content/uploads/how_to_apply/ADNI_DSP_Policy.pdf}{\ifenglish Data Sharing and Publication Policy\else contrat d'utilisation des données\fi} % +% \ifenglish% +% requires authors using their data to acknowledge ADNI in the list of +% authors and give a specific statement on the title page. % +% \else% +% de l'Alzheimer’s Disease Neuroimaging Initiative (ADNI) stipule que +% les auteurs qui ont recours à leurs données doivent reconnaitre la +% contribution de l'ADNI parmi les auteurs et inclure une déclaration +% spécifique sur la page de titre de l'article. % +% \fi +% +% \begin{DescribeMacro}{\ADNIacknowledgement} +% \ifenglish% +% The command \cmd{\ADNIacknowledgement} adds these two +% requirements. The command has no arguments; simply insert it after +% the declarations of the authors. % +% \else% +% La commande \cmd{\ADNIacknowledgement} ajoute ces deux exigences. +% La commande n'a aucun argument; insérez simplement celle-ci après +% toutes les autres définitions des auteurs. % +% \fi +% \end{DescribeMacro} +% +% \begin{DescribeMacro}{\ADMCacknowledgement} +% \ifenglish% +% Similarly, the command \cmd{\ADMCacknowledgement} acknowledges the +% Alzheimer’s Disease Meta\-bo\-lomics Consortium (ADMC). % +% \else% +% De manière analogue, la commande \cmd{\ADMCacknowledgement} +% reconnait la contribution du +% Alzheimer’s Disease Metabolomics Consortium (ADMC). % +% \fi +% \end{DescribeMacro} % % \ifenglish% % \subsection{Back matter information} @@ -1342,17 +1515,19 @@ % % \ifenglish% % Articles in {\TheCJS} end with elements forming the so-called back -% matter: supplementary material available online, acknowledgements, -% etc. The class {\CJSclass} provides specialized environments to -% enter this information. See \autoref{tab:titling} for a summary; the -% detailed descriptions follow. % +% matter: supplementary material available online, data sharing +% statement, acknowledgements, etc. The class {\CJSclass} provides +% specialized environments to enter this information. See +% \autoref{tab:titling} for a summary; the detailed descriptions +% follow. % % \else% % Un article de {\LaRevue} se termine par la présentation d'un % ensemble d'informations dans des parties annexes: matériel -% additionnel disponible en ligne, remerciements, etc. La classe -% {\CJSclass} définit des environnements pour entrer ce type -% d'information de manière uniforme. Le \autoref{tab:backmatter} en -% présente un sommaire; les descriptions détaillées suivent. \fi +% additionnel disponible en ligne, conditions de partage des données, +% remerciements, etc. La classe {\CJSclass} définit des environnements +% pour entrer ce type d'information de manière uniforme. Le +% \autoref{tab:backmatter} en présente un sommaire; les descriptions +% détaillées suivent. \fi % % \begin{table}[t] % \centering @@ -1428,18 +1603,34 @@ % \fi % \end{DescribeEnv} % +% \changes{1.1}{2024-01-23}{Documentation: revise the description of +% the \texttt{sharing} environment now that the CJS adhered to the +% Expects Data Sharing editorial policy of Wiley.} % \begin{DescribeEnv}{sharing} +% \def\POLICYNAME{\ifenglish Expects Data Sharing\else \emph{Expects Data Sharing}\fi} +% \ifenglish% +% {\TheCJS} adheres to the % +% \else% +% {\LaRevue} respecte la politique éditoriale % +% \fi% +% \href{https://authorservices.wiley.com/author-resources/Journal-Authors/open-access/data-sharing-citation/data-sharing-policy.html}{\POLICYNAME} % % \ifenglish% -% If you wish to share data or the code, use the environment -% \code{sharing} to describe how to access this material, providing -% a persistent identifier, such as a digital object identifier (DOI) -% or a URL. % +% editorial policy of Wiley. Therefore, you must use the environment +% \code{sharing} to make a statement about the availability or +% absence of shared data. In case of ethical or legal concerns, we +% encourage you to provide synthetic data instead if possible. +% Provide a persistent identifier to access the data, such as a +% digital object identifier (DOI) or a URL. You may also use the +% environment to describe how to access shared computer code. % % \else% -% Si vous mettez les données ou le code de votre article à -% disposition, utilisez l'environnement \code{sharing} pour -% expliquer comment accéder à ce matériel et pour indiquer un lien -% permanent, comme un identificateur d'objets numériques (DOI) ou -% une adresse URL. % +% de Wiley. Par conséquent, vous devez utiliser l'environnement +% \code{sharing} pour préciser les conditions de partage des données +% de recherche, ou encore leur absence, le cas échéant. En cas +% d'enjeux éthiques ou légaux, veuillez utiliser si possible des +% données de synthèse. Indiquez un lien permanent pour accéder aux +% données, comme un identificateur d'objets numériques (DOI) ou une +% adresse URL. Vous pouvez aussi utiliser l'environnement pour +% indiquer comment accéder à du code informatique partagé. % % \fi % \end{DescribeEnv} % @@ -1644,10 +1835,16 @@ % la page de titre du présent document a été composée avec la commande % suivante: % % \fi -% \begin{quote} -% \cmd{\licence}\code{\{\{}\cmdprint{\ccbysa*}\code{\} {\year}, Statistical Society of Canada \{}\cmdprint{\textbar}\code{\}} \\ -% \verb+ +\code{Société canadienne de statistique\}} -% \end{quote} +% \iffalse +%<*example> +% \fi +\begin{lstlisting} +\licence{{\ccbysa*} `\year', Statistical Society of Canada {\textbar} + Société canadienne de statistique} +\end{lstlisting} +% \iffalse +%</example> +% \fi % % \ifenglish% % \subsection{Mathematics} @@ -1655,6 +1852,8 @@ % \subsection{Mathématiques} % \fi % \label{sec:usage:mathematics} +% \changes{1.1}{2024-01-23}{Documentation: specify that the class is +% not compatible with the package \textbf{amssymb}.} % % \ifenglish% % The class automatically loads the packages % @@ -1666,16 +1865,18 @@ % \ifenglish% % and, when the document is compiled with {\XeLaTeX}, % % \else% -% et, lorsque le document est compilé avec {\XeLaTeX}, +% et, lorsque le document est compilé avec {\XeLaTeX}, % % \fi% % \href{https://ctan.org/pkg/unicode-math}{\pkg{unicode-math}}. % % \ifenglish% -% The class also defines a number of commands and environments to -% standardize the typesetting of mathematical content in {\TheCJS}. +% Note that it is not compatible with the package \pkg{amssymb}. The +% class also defines a number of commands and environments to +% standardize the typesetting of mathematical content in {\TheCJS}. % % \else% -% Elle définit également des commandes et des environnements pour -% assurer une mise en forme standardisée des mathématiques dans -% {\LaRevue}. +% En revanche, elle n'est pas compatible avec le paquetage +% \pkg{amssymb}. La classe définit également des commandes et des +% environnements pour assurer une mise en forme standardisée des +% mathématiques dans {\LaRevue}. % % \fi % % \ifenglish% @@ -1724,6 +1925,9 @@ % \cmd{\mat} & % \ifenglish matrix or vector \else matrice ou vecteur \fi & % \cmdprint{\mat}\code{\{A\}} & $\mat{A}$ \\ +% \cmd{\matit} & +% \ifenglish matrix or vector (italic) \else matrice ou vecteur (italique) \fi & +% \cmdprint{\matit}\code{\{x\}} & $\matit{x}$ \\ % \cmd{\trsp} & % \ifenglish transposition \else transposée \fi & % \cmdprint{\mat}\code{\{A\}}\cmdprint{\trsp} & $\mat{A}\trsp$ \\ @@ -1800,7 +2004,7 @@ % \begin{tabbing} % \hspace*{2.5em}\=\cmd{\prdist}\code{\{E\}(\cmd{\lambda})}% % \quad\=$\rightarrow$ \quad\=$\prdist{N}(0, 1)$ \quad\=\kill -% \>\cmd{\prdist}\code{\{N\}(0, 1)}% +% \>\cmd{\prdist}\code{\{N\}(0, 1)} % % \>$\rightarrow$ % % \>$\prdist{N}(0, 1)$ % % \>(\ifenglish Normal\else normale\fi) \\ @@ -1816,26 +2020,36 @@ % \end{DescribeMacro} % % \begin{DescribeMacro}{\mat} -% \begin{DescribeMacro}{\trsp} -% \begin{DescribeMacro}{\tr} -% \begin{DescribeMacro}{\diag} +% \begin{DescribeMacro}{\matit} % \ifenglish% % The command \cmd{\mat} typesets a variable in roman bold, a style % often used for matrices and vectors (hence the name of the -% command). To indicate matrix transposition, use only the command -% \cmd{\trsp}. The commands \cmd{\tr} and \cmd{\diag} define two -% other common linear algebra operators, the trace and the -% diagonal. % +% command). The command \cmd{\matit} is similar, but for a variable +% in bold italic. % \else% % La commande \cmd{\mat} compose une variable en romain gras, ce qui % est souvent utilisé pour les matrices et les vecteurs (d'où le nom -% de la commande). Pour indiquer la transposée d'une matrice, -% utilisez uniquement la commande \cmd{\trsp}. Les commandes -% \cmd{\tr} et \cmd{\diag} définissent deux autres opérateurs -% courants en algèbre linéaire, la trace et la diagonale. % +% de la commande). La commande \cmd{\matit} produit plutôt une +% variable en gras italique. % \fi % \end{DescribeMacro} % \end{DescribeMacro} +% +% \begin{DescribeMacro}{\trsp} +% \begin{DescribeMacro}{\tr} +% \begin{DescribeMacro}{\diag} +% \ifenglish% +% To indicate matrix transposition, use only the command +% \cmd{\trsp}. The commands \cmd{\tr} and \cmd{\diag} define +% two other common linear algebra operators, the trace and the +% diagonal. % +% \else% +% Pour indiquer la transposée d'une matrice, utilisez uniquement la +% commande \cmd{\trsp}. Les commandes \cmd{\tr} et \cmd{\diag} +% définissent deux autres opérateurs courants en algèbre linéaire, +% la trace et la diagonale. % +% \fi +% \end{DescribeMacro} % \end{DescribeMacro} % \end{DescribeMacro} % @@ -1999,6 +2213,23 @@ % Évitez si possible les indices doubles et n'utilisez jamais % d'indices triples. % % \fi +% \changes{1.1}{2024-03-06}{Documentation: add an advice on the +% typesetting of bold symbols in mathematics.} +% \item % +% \ifenglish% +% Bold in mathematics is a tricky issue. Use the aforementioned +% class commands \cmdprint{\mat} and \cmdprint{\matit} to generate +% bold symbols reliably across {\TeX} engines. With {\XeLaTeX}, +% \cmdprint{\mat} also works with Greek letters (that will be +% typeset in italic). % +% \else% +% La composition en gras en mathématiques est une opération +% délicate. Utilisez les commandes de la classe \cmdprint{\mat} et +% \cmdprint{\matit} mentionnées précédemment pour composer +% automatiquement des symboles en gras quelque soit le moteur +% {\TeX}. Avec {\XeLaTeX}, \cmdprint{\mat} fonctionne aussi avec les +% lettres grecques (qui sont alors composées en italique). % +% \fi % \item % % \ifenglish% % Always use the command \cmdprint{\ell} to obtain the symbol @@ -2094,13 +2325,19 @@ % («équation», «inégalité», «relation», etc.), ainsi que par une % espace insécable: % % \fi -% \begin{quote} -% \def\LABEL{\ifenglish label\else étiquette\fi} -% \def\EQN{\ifenglish equation\else équation\fi} -% \def\INEQ{\ifenglish inequalities\else inégalités\fi} -% \code{\EQN~}\cmdprint{\eqref}\marg{\LABEL} \\ -% \code{\INEQ~}\cmdprint{\eqref}\marg{\LABEL}\code{{-}{-}}\cmdprint{\eqref}\marg{\LABEL} -% \end{quote} +% \iffalse +%<*example> +% \fi + \def\LABEL{\ifenglish label\else étiquette\fi} + \def\EQN{\ifenglish equation\else équation\fi} + \def\INEQ{\ifenglish inequalities\else inégalités\fi} +\begin{lstlisting} +`\EQN'~\eqref`\marg{\LABEL}' +`\INEQ'~\eqref`\marg{\LABEL}'--\eqref`\marg{\LABEL}' +\end{lstlisting} +% \iffalse +%</example> +% \fi % \end{itemize} % % \ifenglish% @@ -2533,72 +2770,137 @@ % description pour un nouvel environnement \meta{env}, insérez la % commande suivante dans le préambule de votre document: % % \fi -% \begin{quote} -% \cmdprint{\addto}\cmdprint{\extras}\code{\languagename}\code{\{}\cmdprint{\def}\code{\bs}\meta{env}\code{autorefname}\marg{description}\code{\}} -% \end{quote} +% \iffalse +%<*example> +% \fi +\begin{lstlisting} +\addto\extras`\languagename'{\def\`\meta{env}'autorefname`\marg{description}'} +\end{lstlisting} +% \iffalse +%</example> +% \fi % \ifenglish% % (If the main language of the article is French, replace % \cmdprint{\extras}\code{\languagename} by -% \cmdprint{\extrasfrench}.)\footnote{% +% \cmdprint{\extrasfrench}.\footnote{% % For further details, see Section~6 of the documentation of -% \pkg{hyperref}.} % +% \pkg{hyperref}.}) % % \else% % (Si la langue principale de l'article est l'anglais, remplacez % \cmdprint{\extras}\code{\languagename} par -% \cmdprint{\extrasenglish}.)\footnote{% +% \cmdprint{\extrasenglish}.\footnote{% % Consultez au besoin la section~6 de la documentation de -% \pkg{hyperref}.} % +% \pkg{hyperref}.}) % % \fi % % \begin{DescribeMacro}{\texorpdfstring} % \changes{0.93}{2023-11-07}{Fix the name of a command from % \cs{textorpdfstring} to the correct \cs{texorpdfstring} in the -% documentation.} +% documentation.}% +% \changes{1.1}{2024-03-12}{Documentation: mention to also use +% \cs{texorpdfstring} to fix \texttt{Token not allowed in a PDF +% string} warnings.} % \ifenglish% -% The compilation of your manuscript may halt with the error message +% The package \pkg{hyperref} builds the table of contents of the +% PDF. If you use mathematical notation or symbols in a section +% title, compilation of your manuscript may either result in +% warnings of the form % +% \else% +% Le paquetage \pkg{hyperref} se charge de produire la table des +% matières du fichier PDF. Si vous utilisez de la notation ou des +% symboles mathématiques dans un titre de section, la compilation de +% votre article pourrait soit résulter en des avertissements de la +% forme % +% \fi% % \begin{quote} -% \code{Improper alphabetic constant} +% Token not allowed in a PDF string % \end{quote} -% The reason is most likely that you use a mathematical symbol in a -% section title that \pkg{hyperref} is not able to properly -% translate for the table of contents of the PDF. If you need -% the symbol, try wrapping it in \cmd{\texorpdfstring}. This -% command takes two arguments: the symbol that should appear in the -% document, and the replacement text for the table of contents. For -% example, you would replace % +% \ifenglish% +% or halt with the error message % % \else% -% Il se pourrait que la compilation de votre article échoue avec le -% message d'erreur +% ou échouer avec le message d'erreur % +% \fi% % \begin{quote} % \code{Improper alphabetic constant} % \end{quote} -% La cause en est probablement un symbole mathématique placé dans un -% titre de section que \pkg{hyperref} n'arrive pas à traduire pour -% la table des matières du fichier PDF. Si vous ne pouvez vous -% passer du symbole dans le titre, essayez d'utiliser la commande -% \cmd{\texorpdfstring} dans celui-ci. Cette commande requiert deux -% arguments: le texte qui doit apparaitre dans le document et celui -% qui peut figurer dans la table des matières. Par exemple, vous -% devriez remplacer % +% \ifenglish% +% If you need the notation or symbol in the title, wrap it in +% \cmd{\texorpdfstring}. This command takes two arguments: the +% notation or symbol that should appear in the document, and the +% replacement text for the table of contents. For example, you would +% replace % +% \else% +% Si vous ne pouvez vous passer de la notation ou du symbole dans le +% titre, utilisez la commande \cmd{\texorpdfstring} dans celui-ci. +% Cette commande requiert deux arguments: le texte qui doit +% apparaitre dans le document et celui qui peut figurer dans la +% table des matières. Par exemple, vous devriez remplacer % % \fi% -% \def\TEXT{Contribution \ifenglish of \else de \fi} -% \begin{quote} -% \cmdprint{\subsection}\code{\{\TEXT $}\cmdprint{\beta}\code{$\}} -% \end{quote} +% \iffalse +%<*example> +% \fi +\def\TEXT{\ifenglish Algorithm for\else Algorithme pour\fi} +\begin{lstlisting} +\section{`\TEXT' $U_n$} +\end{lstlisting} +% \iffalse +%</example> +% \fi +% \ifenglish% +% by something along the lines of % +% \else% +% par quelque chose comme % +% \fi% +% \iffalse +%<*example> +% \fi +\begin{lstlisting} +\section{`\TEXT' \texorpdfstring{$U_n$}{U[n]}} +\end{lstlisting} +% \iffalse +%</example> +% \fi +% \ifenglish% +% You would also replace % +% \else +% De même, vous devriez remplacer % +% \fi% +% \iffalse +%<*example> +% \fi +\def\TEXT{Contribution \ifenglish of\else de\fi} +\begin{lstlisting} +\subsection{`\TEXT' $\beta$} +\end{lstlisting} +% \iffalse +%</example> +% \fi % \ifenglish by\else par\fi -% \begin{quote} -% \cmdprint{\subsection}\code{\{\TEXT}\cmdprint{\texorpdfstring}\code{\{$}\cmdprint{\beta}\code{$\}\{beta\}\}} -% \end{quote} +% \iffalse +%<*example> +% \fi +\begin{lstlisting} +\subsection{`\TEXT' \texorpdfstring{$\beta$}{beta}} +\end{lstlisting} +% \iffalse +%</example> +% \fi +% \ifenglish or even\else ou encore\fi +% \iffalse +%<*example> +% \fi +\begin{lstlisting} +\subsection{`\TEXT' \texorpdfstring{$\beta$}{`β'}} +\end{lstlisting} +% \iffalse +%</example> +% \fi % \ifenglish% -% or, even better if you can enter Unicode characters on the -% keyboard, by % +% if you can enter Unicode characters on the keyboard. % % \else% -% ou même, si vous pouvez entrer des caractères Unicode au clavier, -% par % +% si vous êtes en mesure d'entrer des caractères Unicode au +% clavier. % % \fi -% \begin{quote} -% \cmdprint{\subsection}\code{\{\TEXT}\cmdprint{\texorpdfstring}\code{\{$}\cmdprint{\beta}\code{$\}\{β\}\}} -% \end{quote} % \end{DescribeMacro} % % \warningbox{% @@ -2782,12 +3084,12 @@ % \fi % \item % % \ifenglish% -% (Optional) Appendices --- sections numbered A, B, \dots\ after the -% command \cmd{\appendix} --- for proofs and longer mathematical +% (Optional) Appendices---sections numbered A, B, \dots\ after the +% command \cmd{\appendix}---for proofs and longer mathematical % arguments. Each appendix must be cited in the main article. % % \else% -% (Optionnel) Les annexes --- des sections numérotées A, B, \dots\ -% suite à la commande \cmd{\appendix} ---- pour les démontrations de +% (Optionnel) Les annexes~--- des sections numérotées A, B, \dots\ +% suite à la commande \cmd{\appendix}~--- pour les démontrations de % théorèmes ou autres longs développements mathématiques. Chaque % annexe doit être citée dans l'article. % % \fi @@ -2871,10 +3173,11 @@ % \end{itemize} % Les informations de la page de titre et des parties annexes peuvent % toujours figurer dans le code source. Autrement dit, vous pouvez -% créer le matérial additionnel directement à partir du même préambule -% --- ou gabarit --- que votre article principal; il suffit d'ajouter +% créer le matérial additionnel directement à partir du même +% préambule que votre article principal; il suffit d'ajouter % \code{supplement} aux options de la classe. % -% \fi \endgroup +% \fi +% \endgroup % % \ifenglish% % The option \code{supplement} is compatible with the option @@ -2955,7 +3258,7 @@ % at the bottom of the first page. The option has no other effect on % the rendering of the article. % % \else% -% L'option \code{final} --- qui a préséance sur \code{review} --- +% L'option \code{final}~--- qui a préséance sur \code{review}~--- % active la vérification que les informations de publication et que % l'historique de révision sont fournis. De plus, si les % informations d'octroi de licence sont fournies à l'aide des @@ -3006,10 +3309,79 @@ % \else% % AAAA-MM-JJ. Par exemple: % % \fi +% \iffalse +%<*example> +% \fi +\begin{lstlisting} +\received{`\isodate'} +\end{lstlisting} +% \iffalse +%</example> +% \fi +% \end{DescribeMacro} +% \end{DescribeMacro} +% +% \begin{DescribeMacro}{\specialack} +% \ifenglish% +% The command \cmd{\specialack} provides a generic interface to +% give special acknowledgement on the title page, such as the one +% required by ADNI (\autoref{sec:usage:titling:adni}). The +% command takes two arguments: % +% \else% +% La commande \cmd{\specialack} permet de reconnaitre une +% contribution spéciale sur la page de titre, telle que celle exigée +% par l'ADNI (\autoref{sec:usage:titling:adni}). La commande requiert +% deux arguments: % +% \fi% % \begin{quote} -% \cmdprint{\received}\code{\{2023-06-20\}} +% \cmdprint{\specialack}\marg{\ifenglish by-line\else signature\fi}\marg{\ifenglish statement\else déclaration\fi} % \end{quote} +% \ifenglish% +% The \meta{by-line} is inserted in the list of authors, whereas the +% \meta{statement} is typeset at the bottom of the title page, with +% the licensing information. Each argument may be empty, in which +% case the corresponding information is not printed. For example, +% the command \cmd{\ADNIacknowledgement} is effectively defined +% as: % +% \else% +% La \meta{signature} est ajoutée à la liste des auteurs, alors que +% la \meta{déclaration} est affichée au bas de la page de titre, +% avec la déclaration de licence. Chaque argument peut être vide, +% auquel cas l'information correspondante n'est pas affichée. À +% titre d'exemple, la commande \cmd{\ADNIacknowledgement} est +% définie ainsi: % +% \fi% +% \begin{quote} +% \cmdprint{\specialack}\code{\{}\cmdprint{\CJS@adnibyline}\code{\}\{}\cmdprint{\CJS@adnistatement}\code{\}} +% \end{quote} +% \ifenglish% +% (The internal commands \cmd{\CJS@adnibyline} and +% \cmd{\CJS@adnistatement} typeset the official ADNI by-line and +% statement. The analogous commands \cmd{\CJS@admcbyline} and +% \cmd{\CJS@admcstatement} serve the same purpose for the +% Alzheimer’s Disease Metabolomics Consortium.) % +% \else% +% (Les commandes internes \cmd{\CJS@adnibyline} et +% \cmd{\CJS@adnistatement} contiennent le texte officiel de la +% signature et de la déclaration de l'ADNI. Les commandes analogues +% \cmd{\CJS@admcbyline} et \cmd{\CJS@admcstatement} pour +% l'Alzheimer’s Disease Metabolomics Consortium sont également +% définies dans la classe.) % +% \fi% % \end{DescribeMacro} +% +% \begin{DescribeMacro}{\specialackmark} +% \ifenglish% +% The command \cmd{\specialackmark} sets the footnote marker used by +% \cmd{\specialack}. The default definition of the marker is: % +% \else% +% La commande \cmd{\specialackmark} permet de modifier l'appel de +% note de bas de page utilisé par \cmd{\specialack}. La définition +% par défaut de l'appel de note est: % +% \fi% +% \begin{quote} +% \cmdprint{\textsuperscript}\code{\{}\cmdprint{\ensuremath}\code{\{*\}\}} +% \end{quote} % \end{DescribeMacro} % % \ifenglish% @@ -3118,6 +3490,7 @@ \newif\ifCJS@final \CJS@finalfalse % final version? \newif\ifCJS@titlingfooter \CJS@titlingfooterfalse % footer on title page? \newif\ifCJS@journalinfo \CJS@journalinfotrue % display journal info? +\newif\ifCJS@specialack \CJS@specialackfalse % special acknowledgement? \newif\ifCJS@fancybreak \CJS@fancybreaktrue % display fancy break? \newif\ifCJS@history \CJS@historyfalse % history present? \newif\ifCJS@corrauth \CJS@corrauthfalse % corresponding author? @@ -3198,13 +3571,6 @@ % Useful packages like \pkg{iftex} and \pkg{etoolbox} are already % loaded by \class{memoir}. % -% The package \pkg{iflang} provides expandable checks for the current -% language based on the macro \cmdprint{\languagename} or hyphenation -% patterns. -% \begin{macrocode} -\RequirePackage{iflang} -% \end{macrocode} -% % We rely on \pkg{natbib} for author-year citations. This package must % be loaded before \pkg{babel}. The option \code{sectionbib} ensures % that the bibliography (or list of references) is typeset as a @@ -3369,6 +3735,9 @@ % {\LuaTeX}, commands from \pkg{fontspec} and \pkg{unicode-math} load % the OpenType variants of the fonts. The encoding is UTF-8 by default % for these engines. +% \changes{1.1}{2024-03-06}{Implementation: explicitly set the option +% \texttt{bold-style!=TeX} when loading the math font with the modern +% engines.} % \begin{macrocode} \iftutex \RequirePackage[babel=true]{microtype} @@ -3388,7 +3757,7 @@ [ Extension = .otf, Scale = 1, - Ligatures = TeX + bold-style = TeX ] \setmathfont{FiraMath-Regular} [ @@ -3436,7 +3805,8 @@ % \label{sec:implementation:layout:colours} % % We define some colours used by the class. First, the three main -% colours of {\TheCJS} logo: % +% colours of {\TheCJS} logo, hand-picked from the SVG code of the +% latter: % % \textcolor{CJSpink}{\rule{1.5em}{1.2ex}} % % \textcolor{CJSred}{\rule{1.5em}{1.2ex}} % % \textcolor{CJSyellow}{\rule{1.5em}{1.2ex}}\,. @@ -3455,8 +3825,8 @@ \definecolor{CJSurl}{rgb}{0.6,0,0} % external links \definecolor{CJScitation}{rgb}{0,0.5,0} % citations % \end{macrocode} -% Finally, the colour of the ORCID icon\footnote{% -% See \url{https://info.orcid.org/brand-guidelines}.}: % +% Finally, the colour of the % +% \href{https://info.orcid.org/brand-guidelines}{ORCID icon}: % % \textcolor{CJSorcid}{\rule{1.5em}{1.2ex}}\,. % \begin{macrocode} \definecolor{CJSorcid}{HTML}{A6CE39} @@ -3535,7 +3905,7 @@ % % First, a command to set the font. % \begin{macrocode} -\newcommand*\CJS@setheadfootfont{% +\def\CJS@setheadfootfont{% \firalining\fontsize{9}{13}\selectfont} % \end{macrocode} % @@ -3545,7 +3915,7 @@ \newlength\CJS@headdivheight \settoheight\CJS@headdivheight{\CJS@setheadfootfont 1} \setlength\CJS@headdivheight{0.9\CJS@headdivheight} -\newcommand*\CJS@headdivrule{% +\def\CJS@headdivrule{% \rule[0.05\CJS@headdivheight]{0.75\normalrulethickness}{\CJS@headdivheight}} % \end{macrocode} % @@ -3614,7 +3984,7 @@ % \label{sec:implementation:layout:titles} % % The \class{memoir} class assumes that sectioning starts at the -% chapter level --- even with the \code{article} option. To get around +% chapter level---even with the \code{article} option. To get around % this requirement, we disable the effect of \cmdprint{\chapter}. A % desirable side effect is to make \cmd{\autoref} work correctly for % appendices. @@ -4160,6 +4530,11 @@ \fancybreak{\pfbreakdisplay} \fi % \end{macrocode} +% \changes{1.1}{2024-06-19}{Implementation: fix the positioning of the +% licensing information at the bottom of the title page.} +% \changes{1.1}{2024-06-26}{Implementation: include the special +% acknowledgement statement in the licensing information, if +% required.} % Finally, unless overridden by a class option, allocate space % for the licence statement at the bottom of the title page. By % default, a notice indicates that the licence will appear @@ -4173,11 +4548,12 @@ \iflanguage{french}{Futur emplacement de la déclaration de licence.}% {Licence statement to appear here.}} \begin{figure}[!b] - \raisebox{0pt}[0pt][\footskip]{% + \raisebox{0pt}[0pt][\dimexpr\CJS@licenceht-\footskip\relax]{% \vbox{% \CJS@setlicencefont \rule{\textwidth}{\normalrulethickness} \parbox[t][\CJS@licenceht][t]{\textwidth}{% + \ifCJS@specialack\CJS@specialackstatement\fi \ifCJS@final\CJS@licence \else\textit\CJS@notice \fi}}} \end{figure} \fi @@ -4185,6 +4561,45 @@ % \end{macrocode} % \end{macro} % +% \subsubsection{ADNI data use agreement} +% \label{sec:implementation:titling:adni} +% +% \changes{1.1}{2024-06-26}{Implementation: define the new commands +% \cs{ADNIacknowledgement} and \cs{ADMCacknowledgement}.} +% \begin{macro}{\ADNIacknowledgement} +% \begin{macro}{\ADMCacknowledgement} +% The commands \cmd{\ADNIacknowledgement} and +% \cmd{\ADMCacknowledgement} automatically create special +% acknowledgements for the Alzheimer’s Disease Neuroimaging +% Initiative (ADNI) and the Alzheimer’s Disease Metabolomics +% Consortium (ADMC), respectively. +% \begin{macrocode} +\newcommand*\CJS@adnibyline{for the Alzheimer’s Disease Neuroimaging Initiative} +\newcommand*\CJS@adnistatement{% + Data used in preparation of this article were obtained + from the \href{https://adni.loni.usc.edu}{Alzheimer’s Disease Neuroimaging Initiative} + (ADNI) database. As such, the investigators within the ADNI + contributed to the design and implementation of ADNI and/or provided + data but did not participate in the analysis or writing of this + report. A complete listing of ADNI investigators can be found at: + \url{https://adni.loni.usc.edu/wp-content/uploads/how_to_apply/ADNI_Acknowledgement_List.pdf}.} +\newcommand*\CJS@admcbyline{for the Alzheimer’s Disease Metabolomics Consortium} +\newcommand*\CJS@admcstatement{% + Data used in preparation of this article were generated by the + Alzheimer’s Disease Metabolomics Consortium (ADMC). As such, the + investigators within the ADMC provided data but did not participate + in analysis or writing of this report. A complete listing of ADMC + investigators can be found at: + \url{https://sites.duke.edu/adnimetab/team/}.} +\newcommand*\ADNIacknowledgement{% + \specialack{\CJS@adnibyline}{\CJS@adnistatement}} +\newcommand*\ADMCacknowledgement{% + \renewcommand*\CJS@specialackmark{\textsuperscript{\ensuremath{**}}} + \specialack{\CJS@admcbyline}{\CJS@admcstatement}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% % \subsection{Back matter} % \label{sec:implementation:backmatter} % @@ -4292,20 +4707,20 @@ % % First, set the font for the licence statement. % \begin{macrocode} -\newcommand*\CJS@setlicencefont{% +\def\CJS@setlicencefont{% \firalining\fontsize{8pt}{9pt}\selectfont} % \end{macrocode} % % \begin{macro}{\CJS@measurelicence} -% We need to compute the required space for a licence statement. The -% internal command \cmd{\CJS@measurelicence} measures the total -% height of either the licence statement provided with -% \cmd{\licence}, or the seemingly longest version of the license -% statement used by the publisher. The command is used inside -% \cmd{\maketitle}. +% We need to compute the required space for a licence statement and, +% possibly, the ADNI statement. The internal command +% \cmd{\CJS@measurelicence} measures the total height required using +% either the licence statement provided with \cmd{\licence}, or the +% seemingly longest version of the license statement used by the +% publisher. The command is used inside \cmd{\maketitle}. % \begin{macrocode} \newlength\CJS@licenceht -\newcommand\CJS@licencesample{% +\def\CJS@licencesample{% {\ccbyncnd*} 2023 The Authors. The Canadian Journal of Statistics~{\textbar}~La revue canadienne de statistique published by Wiley Periodicals LLC on behalf of Statistical Society of @@ -4319,6 +4734,7 @@ \newcommand\CJS@measurelicence{% \setbox\CJS@licencebox=\vbox{% \CJS@setlicencefont + \ifCJS@specialack\CJS@specialackstatement\fi \ifdefempty{\CJS@licence}{\CJS@licencesample}{\CJS@licence}} \setlength\CJS@licenceht{\dimexpr\ht\CJS@licencebox+\dp\CJS@licencebox}} % \end{macrocode} @@ -4348,7 +4764,7 @@ % licence: {\ccby}. % \begin{macrocode} \newcommand*\ccby{\ccby@\@ifstar{~\faCopyright[regular]}\relax} -\newcommand*\ccby@{\mbox{% +\def\ccby@{\mbox{% \faCreativeCommons\kern0.1em% \faCreativeCommonsBy\kern0.1em}} % \end{macrocode} @@ -4359,7 +4775,7 @@ % Attribution"-ShareAlike licence: {\ccbysa}. % \begin{macrocode} \newcommand*\ccbysa{\ccbysa@\@ifstar{~\faCopyright[regular]}\relax} -\newcommand*\ccbysa@{\mbox{% +\def\ccbysa@{\mbox{% \faCreativeCommons\kern0.1em% \faCreativeCommonsBy\kern0.1em% \faCreativeCommonsSa}} @@ -4371,7 +4787,7 @@ % Attribution"-NonCommercial licence: {\ccbync}. % \begin{macrocode} \newcommand*\ccbync{\ccbync@\@ifstar{~\faCopyright[regular]}\relax} -\newcommand*\ccbync@{\mbox{% +\def\ccbync@{\mbox{% \faCreativeCommons\kern0.1em% \faCreativeCommonsBy\kern0.1em% \faCreativeCommonsNc}} @@ -4384,7 +4800,7 @@ % {\ccbyncsa}. % \begin{macrocode} \newcommand*\ccbyncsa{\ccbyncsa@\@ifstar{~\faCopyright[regular]}\relax} -\newcommand*\ccbyncsa@{\mbox{% +\def\ccbyncsa@{\mbox{% \faCreativeCommons\kern0.1em% \faCreativeCommonsBy\kern0.1em% \faCreativeCommonsNc\kern0.1em% @@ -4397,7 +4813,7 @@ % Attribution"-NoDerivatives licence: {\ccbynd}. % \begin{macrocode} \newcommand*\ccbynd{\ccbynd@\@ifstar{~\faCopyright[regular]}\relax} -\newcommand*\ccbynd@{\mbox{% +\def\ccbynd@{\mbox{% \faCreativeCommons\kern0.1em% \faCreativeCommonsBy\kern0.1em% \faCreativeCommonsNd}} @@ -4409,7 +4825,7 @@ % Attribution"-NonCommercial"-NoDerivatives licence: {\ccbyncnd}. % \begin{macrocode} \newcommand*\ccbyncnd{\ccbyncnd@\@ifstar{~\faCopyright[regular]}\relax} -\newcommand*\ccbyncnd@{\mbox{% +\def\ccbyncnd@{\mbox{% \faCreativeCommons\kern0.1em% \faCreativeCommonsBy\kern0.1em% \faCreativeCommonsNc\kern0.1em% @@ -4447,16 +4863,20 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\mat,\trsp,\tr,\diag} +% \changes{1.1}{2024-07-13}{Implementation: simpler definition of +% \cs{mat} and \cs{matit} using \cs{let} instead of \cs{newcommand*}.} +% \begin{macro}{\mat,\matit,\trsp,\tr,\diag} % The class provides special commands to typeset matrix and vector % names, a carefully designed transpose symbol, and the most common % linear algebra operators. % \begin{macrocode} \iftutex - \newcommand*\mat[1]{\symbf{#1}} + \let\mat\symbf + \let\matit\symbfit \newcommand*\trsp{^{\mkern-1.5mu\symsfup{T}}} \else - \newcommand*\mat[1]{\mathbf{#1}} + \let\mat\mathbf + \let\matit\mathbfit \newcommand*\trsp{^{\mkern-1.5mu\mathsf{T}}} \fi \DeclareMathOperator{\tr}{tr} @@ -4545,13 +4965,13 @@ \newcommand*\Pylang{\proglang{Python}} \newcommand*\Julialang{\proglang{Julia}} \newcommand*\Clang{\proglang{C}} -\newcommand*\CJS@plus{% +\newcommand*\Cpplang{\proglang{C\CJS@plus\CJS@plus}} +\def\CJS@plus{% \ifx\f@family\sfdefault% \protect\hspace{-.04em}\protect\raisebox{-.125ex}{\larger+}% \else% \protect\hspace{-.03em}\protect\raisebox{.25ex}{\smaller+}% \fi} -\newcommand*\Cpplang{\proglang{C\CJS@plus\CJS@plus}} % \end{macrocode} % \end{macro} % @@ -4595,10 +5015,18 @@ % is handled by \pkg{natbib}. We loaded the package with the option % \code{sectionbib} to obtain the list of references as a section, but % \class{memoir} will use \cmd{\section} in such instances. We want an -% unnumbered section. To achieve this efficiently, we redefine -% the internal command of \class{memoir}. +% unnumbered section (yet showing in the virtual table of contents of +% the PDF). To achieve this efficiently, we redefine the internal +% command of \class{memoir}. +% \changes{1.1}{2024-07-02}{Implementation: add a +% \cs{addtocontentsline} command to the redefinition of +% \cs{@memb@bsec} to include the References section in the virtual +% table of contents of the PDF.} % \begin{macrocode} -\renewcommand{\@memb@bsec}{\section*{\bibname}\prebibhook} +\renewcommand{\@memb@bsec}{% + \section*{\bibname}% + \addcontentsline{toc}{section}{\bibname}% + \prebibhook} % \end{macrocode} % % Furthermore, we need to redefine the title of the section, because @@ -4706,14 +5134,14 @@ % \end{macro} % % \begin{macro}{\received,\accepted} -% The article history --- dates when the article was received and -% accepted --- is printed at the very end of the article when present. +% The article history---dates when the article was received and +% accepted---is printed at the very end of the article when present. % Its treatment involves a number of steps. % % First, the dates themselves are input in ISO format YYYY-MM-DD and % converted in language dependent strings using the package % \pkg{datetime2}. In English, we want to use the British format -% without the ordinal for the day: ``1 January 1970''. In French, we +% without the ordinal for the day: 1 January 1970. In French, we % can simply rely on the default format. % \begin{macrocode} \DTMlangsetup[en-GB]{ord=omit} @@ -4767,19 +5195,54 @@ % Finally, the history information, when present, is printed at the % end of the article. % \begin{macrocode} -\newcommand*\CJS@historybox{ +\def\CJS@historybox{ \par\addvspace{2\baselineskip}\noindent% \smash{\box\CJS@historyornament \CJS@history}\par% \vspace*{40pt}} \AtEndDocument{\ifCJS@journalinfo\ifCJS@history\CJS@historybox\fi\fi} % \end{macrocode} % \end{macro} +% +% \changes{1.1}{2024-06-26}{Implementation: define the new command +% \cs{specialack}.} +% \begin{macro}{\specialack} +% The command \cmd{\specialack} is the generic interface to give +% special acknowledgement on the title page. The command inserts its +% first argument in the list of authors, and its second argument at +% the bottom of the title page, with the licensing information. Each +% argument may be empty, in which case the corresponding information +% is not displayed. +% \begin{macrocode} +\def\CJS@specialackstatement{} +\newcommand*\specialack[2]{% + \ifstrempty{#1}{}{% + \author{#1\CJS@specialackmark}} + \ifstrempty{#2}{}{% + \CJS@specialacktrue + \renewcommand*\CJS@specialackstatement{\CJS@specialackmark\,#2\medskip\newline}}} +% \end{macrocode} +% \end{macro} +% +% \changes{1.1}{2024-06-26}{Implementation: define the new command +% \cs{specialackmark}.} +% \begin{macro}{\specialackmark} +% The command \cmd{\specialackmark} changes the footnote marker used +% by \cmd{\specialack} from its default definition. +% \begin{macrocode} +\def\CJS@specialackmark{\textsuperscript{\ensuremath{*}}} +\newcommand*\specialackmark[1]{% + \renewcommand*\CJS@specialackmark{#1}} +% \end{macrocode} +% \end{macro} +% %</class> % ^^A <<<<< End of the code of the class % % ^^A Change notes for the templates must appear before \Finale % \changes{0.93}{2023-11-07}{Templates: fix a missing closing brace in % \cs{author} commands.} +% \changes{1.1}{2024-01-23}{Templates: revise the description of the +% \texttt{sharing} environment.} % \Finale % % \iffalse @@ -4893,18 +5356,18 @@ %<fr> %% la page de titre automatiquement. \begin{englishabstract} <Insert your English abstract here. The abstract should be concise - --- up to 10 lines long --- and descriptive. Avoid symbols as much - as possible. Formulas are strongly discouraged, and citations - should be avoided.> + (up to 10 lines long) and descriptive. Avoid symbols as much as + possible. Formulas are strongly discouraged, and citations should + be avoided.> %<fr> [Un résumé en anglais sera fourni pour les auteurs qui ne peuvent %<fr> le préparer eux-mêmes.] \end{englishabstract} \begin{frenchabstract} <Insérer le texte du résumé en français ici. Le résumé doit être - concis --- une dizaine de lignes --- et descriptif. Éviter autant - que possible les symboles. Les équations mathématiques sont - fortement découragées et les citations sont à éviter.> + concis (une dizaine de lignes) et descriptif. Éviter autant que + possible les symboles. Les équations mathématiques sont fortement + déconseillées et les citations sont à éviter.> %<en> [We will supply a French abstract for those authors who %<en> can't prepare it themselves.] \end{frenchabstract} @@ -4958,13 +5421,15 @@ %<fr> <Texte libre> \end{supplement} -%<en> %% DATA SHARING (optional - comment out if unused). Describe how to -%<en> %% access data that you wish to share. Provide a permanent link such -%<en> %% as a Document Object Identifier (DOI) or an URL. -%<fr> %% PARTAGE DES DONNÉES (optionnel - commenter si inutilisé). -%<fr> %% Expliquer comment accéder à des données de l'article mises à -%<fr> %% disposition. Fournir un lien permanent, comme un identificateur -%<fr> %% d'objets numériques (DOI) ou une adresse URL. +%<en> %% DATA SHARING (mandatory). In accordance with the Expect Data +%<en> %% Sharing editorial policy of Wiley, make a statement about the +%<en> %% availability or absence of shared data. Provide a permanent link +%<en> %% such as a Document Object Identifier (DOI) or an URL. +%<fr> %% PARTAGE DES DONNÉES (obligatoire). Conformément à la politique +%<fr> %% éditoriale «Expect Data Sharing» de Wiley, vous devez indiquer +%<fr> %% les conditions de partage des données de recherche, ou l'absence +%<fr> %% de celles-ci, le cas échéant. Fournir un lien permanent, comme un +%<fr> %% identificateur d'objets numériques (DOI) ou une adresse URL. \begin{sharing} %<en> <Free form text> %<fr> <Texte libre> diff --git a/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-bst-en.dbj b/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-bst-en.dbj new file mode 100644 index 00000000000..98372dceb78 --- /dev/null +++ b/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-bst-en.dbj @@ -0,0 +1,611 @@ +%% Driver file to produce cjs-rcs-en.bst from cjs-rcs-merlin.mbs +%% Originally generated with makebst, version 4.1 (2003/09/08), +%% on 2023/10/05 at 15:25, then hand edited by Vincent Goulet. +%% +\input docstrip + +\preamble + +Copyright (C) 2023-2024 Statistical Society of Canada | Société +canadienne de statistique + +This file may be distributed and/or modified under the conditions +of the LaTeX Project Public License, either version 1.3c of this +license or (at your option) any later version. The latest version +of this license is in: + + https://www.latex-project.org/lppl.txt + +This work has the LPPL maintenance status `maintained'. + +The Current Maintainer of this work is Vincent Goulet +<vincent.goulet@act.ulaval.ca>. + +This work consists of the master bibliographic style file +cjs-rcs-merlin.mbs, the language definition file cjs-rcs-english.mbs, +the driver file cjs-rcs-en.dbj, and the derived file cjs-rcs-en.bst. + +\endpreamble + +\postamble +End of customized bst file +\endpostamble + +\keepsilent + +\askforoverwritefalse +\def\MBopts{\from{cjs-rcs-merlin.mbs}{% +%EXTERNAL FILES: +%Name of language file: \cfile=cjs-rcs-english.mbs. +%No included files. + head,\MBopta} +\from{cjs-rcs-english.mbs}{\MBopta} +\from{cjs-rcs-merlin.mbs}{tail,\MBopta}} +\def\MBopta{% +%INTERNAL LANGUAGE SUPPORT (if no external language file) +% %: (def) English +% babel,%: Babel +%-------------------- + exlang,%: External language file +%STYLE OF CITATIONS: +% %: (def) Numerical + ay,%: Author-year +% alph,%: Alpha style, Jon90 or JWB90 +% alph,alf-1,%: Alpha style, Jon90 +% alph,alf-f,%: Alpha style, Jones90 +% cite,%: Cite key +%-------------------- +%HTML OUTPUT (if non author-year citations) +% %: (def) Normal LaTeX +% html,%: Hypertext +% html,htlist,%: Hypertext list +% html,htdes,%: Hypertext with keys +%-------------------- +%AUTHOR--YEAR SUPPORT SYSTEM (if author-year citations) + nat,%: Natbib +% %: (def) Older Natbib +% alk,%: Apalike +% har,%: Harvard +% ast,%: Astronomy +% cay,%: Chicago +% nmd,%: Named +% cn,%: Author-date +%-------------------- +%HARVARD EXTENSIONS INCLUDED (if Harvard support selected) +% harnm,%: With Harvard extensions +% %: (def) Older Harvard +%-------------------- +%LANGUAGE FIELD +% %: (def) No language field + lang,%: Add language field +%-------------------- +%ANNOTATIONS: + %: (def) No annotations +% annote,%: Annotations +%-------------------- +%PRESENTATIONS: + %: (def) Do not add presentation type +% pres,%: Add presentation, speaker not highlighted +% pres,pres-bf,%: Presentation, speaker bold face +% pres,pres-it,%: Presentaion, speaker italic +% pres,pres-sc,%: Presentaion, speaker in small caps +%-------------------- +%ORDERING OF REFERENCES (if non-author/year and non-alph) +% %: (def) Alphabetical +% seq-no,%: Citation order +% seq-yr,%: Year ordered +% seq-yrr,%: Reverse year ordered +%-------------------- +%ORDERING OF REFERENCES (if author-year citations) + %: (def) Alphabetical +% seq-lab,%: By label +% seq-labc,%: By label and cite order +% seq-key,%: By label and cite key +% seq-yr,%: Year ordered +% seq-yrr,%: Reverse year ordered +% seq-no,%: Citation order +%-------------------- +%ORDER ON VON PART (if not citation order) + %: (def) Sort on von part +% vonx,%: Sort without von part +%-------------------- +%IGNORE FIRST NAMES (if author-year citations) + %: (def) Respect first names +% xintls,%: Sort on surname only +%-------------------- +%AUTHOR NAMES: +% ed-au,%: Full, surname last +% nm-revf,%: Full, surname first +% nm-init,ed-au,%: Initials + surname + nm-rev,%: Surname + initials +% nm-rv,%: Surname + dotless initials +% nm-rvvc,%: Surname + comma + spaceless initials +% nm-rvx,%: Surname + pure initials +% nm-rvcx,%: Surname + comma + pure initials +% nm-rvv,%: Surname + spaceless initials +% nm-rev1,%: Only first name reversed, initials +% nm-revv1,%: First name reversed, with full names +%-------------------- +%EDITOR NAMES IN COLLECTIONS (if author names reversed) + %: (def) Editor names NOT reversed +% ed-rev,%: Editor names reversed +%-------------------- +%POSITION OF JUNIOR (if author names reversed) + jnrlst,%: Junior comes last +% %: (def) Junior between +%-------------------- +%JUNIOR PART IN THE CITATION (if author-year citations) + %: (def) No `junior' part in the citations +% jnrlab,%: `Junior' in citations +%-------------------- +%PUNCTUATION BETWEEN AUTHOR NAMES: + %: (def) Author names separated by commas +% aunm-semi,%: Names separated by semi-colon +% aunm-sl,%: Names separated by slash +%-------------------- +%ADJACENT REFERENCES WITH REPEATED NAMES: + %: (def) Author/editor names always present +% nmdash,%: Repeated author/editor names replaced by dash +% nmdash,nmd-2,%: Repeated author/editor names replaced by 2 dashes +% nmdash,nmd-3,%: Repeated author/editor names replaced by 3 dashes +%-------------------- +%NUMBER OF AUTHORS IN BIBLIOGRAPHY: + %: (def) All authors +% nmlm,%: Limited authors +%-------------------- +%AUTHORS IN CITATIONS: + %: (def) One author et al +% mcite,%: Some other truncation scheme +%-------------------- +%MAX AUTHORS BEFORE ET AL: (if regular cite not selected) +% mct-1,%: One et al +% mct-2,%: One, Two et al +% mct-3,%: One, Two, Three et al +% mct-4,%: One, Two, Three, Four et al +% mct-5,%: One, Two, Three, Four, Five et al +% mct-6,%: One, Two, Three, Four, Five, Six et al +%-------------------- +%MAX AUTHORS WITHOUT ET AL: (if regular cite not selected) +% mct-x2,%: Two authors without truncating +% mct-x3,%: Three authors +% mct-x4,%: Four authors +% mct-x5,%: Five authors +% mct-x6,%: Six authors +%-------------------- +%TYPEFACE FOR AUTHORS IN LIST OF REFERENCES: + %: (def) Normal font for author names +% nmft,nmft-sc,%: Small caps authors +% nmft,nmft-it,%: Italic authors +% nmft,nmft-bf,%: Bold authors +% nmft,nmft-def,%: User defined author font +%-------------------- +%FONT FOR FIRST NAMES (if non-default font for authors) +% %: (def) First names same font as surnames +% fnm-rm,%: First names in normal font +% fnm-def,%: First names in user defined font +%-------------------- +%EDITOR NAMES IN INCOLLECTION ETC: +% %: (def) Editors incollection normal font +% nmfted,%: Editors incollection like authors +%-------------------- +%FONT FOR `AND' IN LIST: +% %: (def) `And' in author font +% nmand-rm,%: `And' in normal font +%-------------------- +%FONT OF CITATION LABELS IN TEXT (if author-year citations) + %: (def) Cited authors plain +% lab,lab-it,%: Cited authors italic +% lab,lab-sc,%: Cited authors small caps +% lab,lab-bf,%: Cited authors bold +% lab,lab-def,%: User defined citation font +%-------------------- +%FONT FOR `AND' IN CITATIONS (if non-default font for citation lables) +% %: (def) Cited `and' in author font +% and-rm,%: Cited `and' in normal font +%-------------------- +%FONT OF EXTRA LABEL (The extra letter on the year) + %: (def) Extra label plain +% xlab-it,%: Extra label italic +%-------------------- +%LABEL WHEN AUTHORS MISSING (if author-year citations) + keyxyr,%: Year blank when KEY replaces missing author +% %: (def) Year included when KEY replaces missing author +%-------------------- +%MISSING DATE (if author-year citations) +% %: (def) Missing date set to ???? + blkyear,%: Missing date left blank +%-------------------- +%DATE POSITION: +% %: (def) Date at end + dt-beg,%: Date after authors +% dt-jnl,%: Date part of journal spec. +% dt-end,%: Date at very end +%-------------------- +%DATE FORMAT (if non author-year citations) +% %: (def) Plain month and year +% yr-par,%: Date in parentheses +% yr-brk,%: Date in brackets +% yr-col,%: Date preceded by colon +% yr-per,%: Date preceded by period +% yr-com,%: Date preceded by comma +% yr-blk,%: Date preceded by space +%-------------------- +%SUPPRESS MONTH: +% %: (def) Date is month and year +% xmth,%: Date is year only +%-------------------- +%REVERSED DATE (if including month) +% %: (def) Date as month year +% dtrev,%: Date as year month +%-------------------- +%DATE FORMAT (if author-year citations) +% %: (def) Year plain + yr-par,%: Year in parentheses +% yr-brk,%: Year in brackets +% yr-col,%: Year preceded by colon +% yr-per,%: Year preceded by period +% yr-com,%: Date preceded by comma +% yr-blk,%: Year preceded by space +%-------------------- +%INCLUDE MONTHS: + %: (def) Date is year only +% aymth,%: Include month in date +%-------------------- +%REVERSED DATE (if including month) +% %: (def) Date as month year +% dtrev,%: Date as year month +%-------------------- +%DATE PUNCTUATION (if date not at end) +% %: (def) Date with standard block punctuation +% yrp-col,%: Colon after date +% yrp-semi,%: Semi-colon after date + yrp-per,%: Period after date +% yrp-x,%: No punct. after date +%-------------------- +%BLANK AFTER DATE: + %: (def) Space after date +% yrpp-xsp,%: No space after date +%-------------------- +%DATE FONT: + %: (def) Date in normal font +% dtbf,%: Date in bold face +%-------------------- +%TRUNCATE YEAR (if author-year citations) + note-yr,%: Year text full +% %: (def) Year truncated +%-------------------- +%TITLE OF ARTICLE: + %: (def) Title plain +% tit-it,%: Title italic +% tit-qq,qt-s,%: Title and punctuation in single quotes +% tit-qq,%: Title and punctuation in double quotes +% tit-qq,qt-g,%: Title and punctuation in guillemets +% tit-qq,qt-s,qx,%: Title in single quotes +% tit-qq,qx,%: Title in double quotes +% tit-qq,qt-g,qx,%: Title in guillemets +%-------------------- +%COLLECTION/PROCEEDINGS TITLES (if quoted title) +% bt-qq,%: Quote collection and proceedings titles +% %: (def) Collection and proceedings titles not in quotes +%-------------------- +%CAPITALIZATION OF ARTICLE TITLE: + %: (def) Sentence style +% atit-u,%: Title style +%-------------------- +%ARTICLE TITLE PRESENT: + %: (def) Article title present +% jtit-x,%: No article title +%-------------------- +%JOURNAL NAMES: + %: (def) Periods in journal names +% jxper,%: Dotless journal names +%-------------------- +%JOURNAL NAME FONT: + %: (def) Journal name italics +% jttl-rm,%: Journal name normal +%-------------------- +%THESIS TITLE: + %: (def) Thesis titles like books +% thtit-a,%: Thesis title like article +% thtit-x,%: No thesis title +%-------------------- +%TECHNICAL REPORT TITLE: +% %: (def) Tech. report title like articles + trtit-b,%: Tech. report title like books +%-------------------- +%TECHNICAL REPORT NUMBER: + %: (def) Tech. report and number plain +% trnum-it,%: Tech. report and number italic +%-------------------- +%JOURNAL VOLUME: + %: (def) Volume plain +% vol-it,%: Volume italic +% vol-bf,%: Volume bold +% vol-2bf,%: Volume and number bold +%-------------------- +%JOURNAL VOL AND NUMBER: + %: (def) Journal vol(num) +% vnum-sp,%: Journal vol (num) +% vnum-cm,%: Journal vol, num +% vnum-nr,%: Journal vol, no. num +% vnum-h,%: Journal vol, \# number +% vnum-b,%: Journal vol number +% vnum-x,%: Journal vol, without number +%-------------------- +%VOLUME PUNCTUATION: + %: (def) Volume with colon +% volp-sp,%: Volume with colon and space +% volp-semi,%: Volume with semi-colon +% volp-com,%: Volume with comma +% volp-blk,%: Volume with blank +%-------------------- +%YEAR IN JOURNAL SPECIFICATION: + %: (def) Journal year like others +% jdt-v,%: Journal vol(year) +% jdt-vs,%: Journal vol (year) +% jdt-p,%: Year with pages +% jdt-pc,%: Year, comma, pages +%-------------------- +%PAGE NUMBERS: + %: (def) Start and stop page numbers +% jpg-1,%: Only start page number +%-------------------- +%LARGE PAGE NUMBERS: + %: (def) No separators for large page numbers +% pgsep-c,%: Comma inserted over 9999 +% pgsep-s,%: Thin space inserted over 9999 +% pgsep-p,%: Period inserted over 9999 +%-------------------- +%WORD `PAGE' IN ARTICLES: + %: (def) Article pages numbers only +% jwdpg,%: Include `page' in articles +%-------------------- +%POSITION OF PAGES: + %: (def) Pages given mid text +% pp-last,%: Pages at end +%-------------------- +%WORD `VOLUME' IN ARTICLES: + %: (def) Article volume as number only +% jwdvol,%: Include `volume' in articles +%-------------------- +%NUMBER AND SERIES FOR COLLECTIONS: + num-xser,%: Allows number without series +% %: (def) Standard BibTeX +%-------------------- +%POSITION OF NUMBER AND SERIES: +% %: (def) After chapter and pages + numser,%: Just before publisher +%-------------------- +%VOLUME AND SERIES FOR BOOKS/COLLECTIONS: + %: (def) Vol. 23 of Series +% ser-vol,%: Series, vol. 23 +%-------------------- +%POSITION OF VOLUME AND SERIES FOR INCOLLECTIONS: +% %: (def) Series and volume after the editors + ser-ed,%: Series and volume after booktitle +%-------------------- +%JOURNAL NAME PUNCTUATION: + %: (def) Comma after journal +% jnm-x,%: Space after journal +%-------------------- +%BOOK TITLE: + %: (def) Book title italic +% btit-rm,bt-rm,%: Book title plain +%-------------------- +%PAGES IN BOOKS: + %: (def) Pages in book plain +% bkpg-par,%: Pages in book in parentheses +% bkpg-x,%: Pages in book bare +%-------------------- +%TOTAL PAGES OF A BOOK: + %: (def) Total book pages not printed +% pg-bk,%: For book: 345 pages +% pg-bk,pg-pre,%: Total book pages before publisher +%-------------------- +%PUBLISHER ADDRESS: + %: (def) Publisher, address +% add-pub,%: Address: Publisher +%-------------------- +%PUBLISHER IN PARENTHESES: + %: (def) Publisher as normal block +% pub-par,%: Publisher in parentheses +% pub-date,%: Publisher and date in parentheses +% pub-date,pub-xc,%: Publisher and date in parentheses, no comma +% pub-date,pub-xpar,%: Publisher and date without parentheses +% pub-date,pub-xpar,pub-xc,%: Publisher and date, no parentheses, no comma +%-------------------- +%PUBLISHER POSITION: +% %: (def) Publisher after chapter, pages +% pre-pub,%: Publisher before chapter, pages + pre-edn,%: Publisher after edition +%-------------------- +%ISBN NUMBER: + isbn,%: Include ISBN +% %: (def) No ISBN +%-------------------- +%ISSN NUMBER: +% issn,%: Include ISSN + %: (def) No ISSN +%-------------------- +%DOI NUMBER: +% doi,%: Include DOI + url-doi,%: Format DOI as URL //dx.doi.org/doi +% agu-doi,doi,%: Insert DOI AGU style +% %: (def) No DOI +%-------------------- +%`EDITOR' AFTER NAMES (EDITED BOOKS WITHOUT AUTHORS): + %: (def) Word `editor' after name +% edpar,%: `Name (editor),' +% edpar,bkedcap,%: `Name (Editor),' +% edparc,%: `Name, (editor)' +% edparc,bkedcap,%: `Name, (Editor)' +% edparxc,%: `Name (editor)' +% edparxc,bkedcap,%: `Name (Editor)' +%-------------------- +%EDITOR IN COLLECTIONS: + %: (def) Same as for edited book +% edby,%: In booktitle, edited by .. +% edby-par,%: In booktitle (edited by ..) +% edby-parc,%: In booktitle, (edited by ..) +% edby,edbyx,%: In booktitle, editor .. +% edby,edbyw,%: In booktitle, (editor) .. +% edby-par,edbyx,%: In booktitle (editor..) +% edby-parc,edbyx,%: In booktitle, (editor..) +% edby,edbyy,%: In booktitle, .., editor +% edby-par,edbyy,%: In booktitle (.., editor) +%-------------------- +%CAPITALIZE `EDITOR' OR `EDITED BY' (if editor capitalizable) +% %: (def) `(editor,..)' or `(edited by..)' +% edcap,%: `(Editor,..)' or `(Edited by..)' +%-------------------- +%PUNCTUATION BETWEEN SECTIONS (BLOCKS): + %: (def) \newblock after blocks +% blk-com,%: Comma between blocks +% blk-com,com-semi,%: Semi-colon between blocks +% blk-com,com-blank,%: Blanks between blocks +% blk-tit,%: Period after titles of articles, books, etc +% blk-tit,tit-col,%: Colon after titles of articles, books, etc +% blk-tita,%: Period after titles of articles +% blk-tita,tit-col,%: Colon after titles of articles +%-------------------- +%PUNCTUATION BEFORE NOTES (if not using \newblock) +% %: (def) Notes have regular punctuation +% blknt,%: Notes preceded by period +%-------------------- +%PUNCTUATION AFTER AUTHORS: + %: (def) Author block normal +% au-col,%: Author block with colon +%-------------------- +%PUNCTUATION AFTER `IN': + %: (def) Space after `in' +% in-col,%: Colon after `in' +% in-it,%: Italic `in' +% in-col,in-it,%: Italic `in' and colon +% in-x,%: No word `in' +%-------------------- +%`IN' WITH JOURNAL NAMES (if using 'in' with collections) + %: (def) No `in' before journal name +% injnl,%: Add `in' before journal name +%-------------------- +%FINAL PUNCTUATION: + %: (def) Period at very end +% fin-bare,%: No period at end +%-------------------- +%ABBREVIATE WORD `PAGES' (if not using external language file) +% %: (def) `Page(s)' +% pp,%: `Page' abbreviated +% ppx,%: `Page' omitted +%-------------------- +%ABBREVIATE WORD `EDITORS': +% %: (def) `Editor(s)' +% ed,%: `Editor' abbreviated +%-------------------- +%OTHER ABBREVIATIONS: +% %: (def) No abbreviations +% abr,%: Abbreviations +%-------------------- +%ABBREVIATION FOR `EDITION' (if abbreviating words) +% %: (def) `Edition' abbreviated as `edn' +% ednx,%: `Edition' abbreviated as `ed' +%-------------------- +%MONTHS WITH DOTS: +% %: (def) Months with dots +% mth-bare,%: Months without dots +%-------------------- +%EDITION NUMBERS: +% xedn,%: Editions as in database +% %: (def) Write out editions +% ord,%: Numerical editions +%-------------------- +%Reading external language file \cfile=cjs-rcs-english.mbs + english,%: English language +%ABBREVIATE WORD `PAGES' + %: (def) `Page(s)' +% pp,%: `Page' abbreviated +% ppx,%: `Page' omitted +%-------------------- +%ABBREVIATE WORD `EDITORS': + %: (def) `Editor(s)' +% ed,%: `Editor' abbreviated +%-------------------- +%OTHER ABBREVIATIONS: +% %: (def) No abbreviations + abr,%: Abbreviations +%-------------------- +%ABBREVIATION FOR `EDITION' (if abbreviating words) +% %: (def) `Edition' abbreviated as `edn' + ednx,%: `Edition' abbreviated as `ed' +%-------------------- +%MONTHS WITH DOTS: + %: (def) Months with dots +% mth-bare,%: Months without dots +%-------------------- +%EDITION NUMBERS: +% xedn,%: Editions as in database +% %: (def) Write out editions + ord,%: Numerical editions +%-------------------- +%STORED JOURNAL NAMES: + %: (def) Full journal names +% jabr,%: Abbreviated journal names +% jabr,jaa,%: Abbreviated with astronomy shorthands +%-------------------- +%AMPERSAND: + %: (def) Use word `and' +% amper,%: Use ampersand +% varand,%: Use \BIBand +%-------------------- +%COMMA BEFORE `AND': + %: (def) Comma before `and' +% and-xcom,%: No comma before `and' +% and-com,%: Comma even with 2 authors +%-------------------- +%COMMA BEFORE `AND' EVEN FOR COLLECTION EDITORS (if using comma before `and' with authors) +% and-com-ed,%: Comma with 2 editors +% %: (def) Two editors without comma +%-------------------- +%NO `AND' IN REFERENCE LIST: + %: (def) With `and' +% xand,%: No `and' +%-------------------- +%COMMA BEFORE `ET AL': +% %: (def) Comma before `et al' + etal-xc,%: No comma before `et al' +%-------------------- +%FONT OF `ET AL': + %: (def) Plain et al +% etal-it,%: Italic et al +% etal-rm,%: Roman et al +%-------------------- +%ADDITIONAL REVTeX DATA FIELDS: + %: (def) No additional fields +% revdata,eprint,url,url-blk,%: Include REVTeX data fields +%-------------------- +%E-PRINT DATA FIELD: (without REVTeX fields) + %: (def) Do not include eprint field +% eprint,%: Include eprint and archive fields +%-------------------- +%URL ADDRESS: (without REVTeX fields) +% %: (def) No URL + url,url-blk,%: Include URL +% url,url-nt,%: URL as note +% url,url-nl,%: URL on new line +%-------------------- +%REFERENCE COMPONENT TAGS: + %: (def) No reference component tags +% bibinfo,%: Reference component tags +%-------------------- +%EMPHASIS: (affects all so-called italics) + %: (def) Use emphasis +% em-it,%: Use true italics +% em-x,%: No italics +% em-ul,%: Underlining +%-------------------- +%COMPATIBILITY WITH PLAIN TEX: + nfss,%: Use LaTeX commands +% plntx,%: Use only Plain TeX +%-------------------- +,{% + }} +\generate{\file{cjs-rcs-en.bst}{\MBopts}} +\endbatchfile diff --git a/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-bst-fr.dbj b/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-bst-fr.dbj new file mode 100644 index 00000000000..13be31421c3 --- /dev/null +++ b/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-bst-fr.dbj @@ -0,0 +1,603 @@ +%% Driver file to produce cjs-rcs-fr.bst from cjs-rcs-merlin.mbs +%% Originally generated with makebst, version 4.1 (2003/09/08), +%% on 2023/10/11 at 12:01, then hand edited by Vincent Goulet. +%% +\input docstrip + +\preamble + +Copyright (C) 2023-2024 Statistical Society of Canada | Société +canadienne de statistique + +This file may be distributed and/or modified under the conditions +of the LaTeX Project Public License, either version 1.3c of this +license or (at your option) any later version. The latest version +of this license is in: + + https://www.latex-project.org/lppl.txt + +This work has the LPPL maintenance status `maintained'. + +The Current Maintainer of this work is Vincent Goulet +<vincent.goulet@act.ulaval.ca>. + +This work consists of the master bibliographic style file +cjs-rcs-merlin.mbs, the language definition file cjs-rcs-french.mbs, +the driver file cjs-rcs-fr.dbj, and the derived file cjs-rcs-fr.bst. + +\endpreamble + +\postamble +End of customized bst file +\endpostamble + +\keepsilent + +\askforoverwritefalse +\def\MBopts{\from{cjs-rcs-merlin.mbs}{% +%EXTERNAL FILES: +%Name of language file: \cfile=cjs-rcs-french.mbs. +%No included files. + head,\MBopta} +\from{cjs-rcs-french.mbs}{\MBopta} +\from{cjs-rcs-merlin.mbs}{tail,\MBopta}} +\def\MBopta{% +%INTERNAL LANGUAGE SUPPORT (if no external language file) +% %: (def) English +% babel,%: Babel +%-------------------- + exlang,%: External language file +%STYLE OF CITATIONS: +% %: (def) Numerical + ay,%: Author-year +% alph,%: Alpha style, Jon90 or JWB90 +% alph,alf-1,%: Alpha style, Jon90 +% alph,alf-f,%: Alpha style, Jones90 +% cite,%: Cite key +%-------------------- +%HTML OUTPUT (if non author-year citations) +% %: (def) Normal LaTeX +% html,%: Hypertext +% html,htlist,%: Hypertext list +% html,htdes,%: Hypertext with keys +%-------------------- +%AUTHOR--YEAR SUPPORT SYSTEM (if author-year citations) + nat,%: Natbib +% %: (def) Older Natbib +% alk,%: Apalike +% har,%: Harvard +% ast,%: Astronomy +% cay,%: Chicago +% nmd,%: Named +% cn,%: Author-date +%-------------------- +%HARVARD EXTENSIONS INCLUDED (if Harvard support selected) +% harnm,%: With Harvard extensions +% %: (def) Older Harvard +%-------------------- +%LANGUAGE FIELD +% %: (def) No language field + lang,%: Add language field +%-------------------- +%ANNOTATIONS: + %: (def) No annotations +% annote,%: Annotations +%-------------------- +%PRESENTATIONS: + %: (def) Do not add presentation type +% pres,%: Add presentation, speaker not highlighted +% pres,pres-bf,%: Presentation, speaker bold face +% pres,pres-it,%: Presentaion, speaker italic +% pres,pres-sc,%: Presentaion, speaker in small caps +%-------------------- +%ORDERING OF REFERENCES (if non-author/year and non-alph) +% %: (def) Alphabetical +% seq-no,%: Citation order +% seq-yr,%: Year ordered +% seq-yrr,%: Reverse year ordered +%-------------------- +%ORDERING OF REFERENCES (if author-year citations) + %: (def) Alphabetical +% seq-lab,%: By label +% seq-labc,%: By label and cite order +% seq-key,%: By label and cite key +% seq-yr,%: Year ordered +% seq-yrr,%: Reverse year ordered +% seq-no,%: Citation order +%-------------------- +%ORDER ON VON PART (if not citation order) +% %: (def) Sort on von part + vonx,%: Sort without von part +%-------------------- +%IGNORE FIRST NAMES (if author-year citations) + %: (def) Respect first names +% xintls,%: Sort on surname only +%-------------------- +%AUTHOR NAMES: +% ed-au,%: Full, surname last +% nm-revf,%: Full, surname first +% nm-init,ed-au,%: Initials + surname +% nm-rev,%: Surname + initials +% nm-rv,%: Surname + dotless initials +% nm-rvvc,%: Surname + comma + spaceless initials +% nm-rvx,%: Surname + pure initials +% nm-rvcx,%: Surname + comma + pure initials +% nm-rvv,%: Surname + spaceless initials + nm-rev1,%: Only first name reversed, initials +% nm-revv1,%: First name reversed, with full names +%-------------------- +%EDITOR NAMES IN COLLECTIONS (if author names reversed) + %: (def) Editor names NOT reversed +% ed-rev,%: Editor names reversed +%-------------------- +%POSITION OF JUNIOR (if author names reversed) + jnrlst,%: Junior comes last +% %: (def) Junior between +%-------------------- +%JUNIOR PART IN THE CITATION (if author-year citations) + %: (def) No `junior' part in the citations +% jnrlab,%: `Junior' in citations +%-------------------- +%PUNCTUATION BETWEEN AUTHOR NAMES: + %: (def) Author names separated by commas +% aunm-semi,%: Names separated by semi-colon +% aunm-sl,%: Names separated by slash +%-------------------- +%ADJACENT REFERENCES WITH REPEATED NAMES: + %: (def) Author/editor names always present +% nmdash,%: Repeated author/editor names replaced by dash +% nmdash,nmd-2,%: Repeated author/editor names replaced by 2 dashes +% nmdash,nmd-3,%: Repeated author/editor names replaced by 3 dashes +%-------------------- +%NUMBER OF AUTHORS IN BIBLIOGRAPHY: + %: (def) All authors +% nmlm,%: Limited authors +%-------------------- +%AUTHORS IN CITATIONS: + %: (def) One author et al +% mcite,%: Some other truncation scheme +%-------------------- +%MAX AUTHORS BEFORE ET AL: (if regular cite not selected) +% mct-1,%: One et al +% mct-2,%: One, Two et al +% mct-3,%: One, Two, Three et al +% mct-4,%: One, Two, Three, Four et al +% mct-5,%: One, Two, Three, Four, Five et al +% mct-6,%: One, Two, Three, Four, Five, Six et al +%-------------------- +%MAX AUTHORS WITHOUT ET AL: (if regular cite not selected) +% mct-x2,%: Two authors without truncating +% mct-x3,%: Three authors +% mct-x4,%: Four authors +% mct-x5,%: Five authors +% mct-x6,%: Six authors +%-------------------- +%TYPEFACE FOR AUTHORS IN LIST OF REFERENCES: + %: (def) Normal font for author names +% nmft,nmft-sc,%: Small caps authors +% nmft,nmft-it,%: Italic authors +% nmft,nmft-bf,%: Bold authors +% nmft,nmft-def,%: User defined author font +%-------------------- +%FONT FOR FIRST NAMES (if non-default font for authors) +% %: (def) First names same font as surnames +% fnm-rm,%: First names in normal font +% fnm-def,%: First names in user defined font +%-------------------- +%EDITOR NAMES IN INCOLLECTION ETC: +% %: (def) Editors incollection normal font +% nmfted,%: Editors incollection like authors +%-------------------- +%FONT FOR `AND' IN LIST: +% %: (def) `And' in author font +% nmand-rm,%: `And' in normal font +%-------------------- +%FONT OF CITATION LABELS IN TEXT (if author-year citations) + %: (def) Cited authors plain +% lab,lab-it,%: Cited authors italic +% lab,lab-sc,%: Cited authors small caps +% lab,lab-bf,%: Cited authors bold +% lab,lab-def,%: User defined citation font +%-------------------- +%FONT FOR `AND' IN CITATIONS (if non-default font for citation lables) +% %: (def) Cited `and' in author font +% and-rm,%: Cited `and' in normal font +%-------------------- +%FONT OF EXTRA LABEL (The extra letter on the year) + %: (def) Extra label plain +% xlab-it,%: Extra label italic +%-------------------- +%LABEL WHEN AUTHORS MISSING (if author-year citations) + keyxyr,%: Year blank when KEY replaces missing author +% %: (def) Year included when KEY replaces missing author +%-------------------- +%MISSING DATE (if author-year citations) +% %: (def) Missing date set to ???? + blkyear,%: Missing date left blank +%-------------------- +%DATE POSITION: +% %: (def) Date at end + dt-beg,%: Date after authors +% dt-jnl,%: Date part of journal spec. +% dt-end,%: Date at very end +%-------------------- +%DATE FORMAT (if non author-year citations) +% %: (def) Plain month and year +% yr-par,%: Date in parentheses +% yr-brk,%: Date in brackets +% yr-col,%: Date preceded by colon +% yr-per,%: Date preceded by period +% yr-com,%: Date preceded by comma +% yr-blk,%: Date preceded by space +%-------------------- +%SUPPRESS MONTH: +% %: (def) Date is month and year +% xmth,%: Date is year only +%-------------------- +%REVERSED DATE (if including month) +% %: (def) Date as month year +% dtrev,%: Date as year month +%-------------------- +%DATE FORMAT (if author-year citations) +% %: (def) Year plain +% yr-par,%: Year in parentheses +% yr-brk,%: Year in brackets +% yr-col,%: Year preceded by colon + yr-per,%: Year preceded by period +% yr-com,%: Date preceded by comma +% yr-blk,%: Year preceded by space +%-------------------- +%INCLUDE MONTHS: + %: (def) Date is year only +% aymth,%: Include month in date +%-------------------- +%REVERSED DATE (if including month) +% %: (def) Date as month year +% dtrev,%: Date as year month +%-------------------- +%DATE PUNCTUATION (if date not at end) + %: (def) Date with standard block punctuation +% yrp-col,%: Colon after date +% yrp-semi,%: Semi-colon after date +% yrp-per,%: Period after date +% yrp-x,%: No punct. after date +%-------------------- +%BLANK AFTER DATE: + %: (def) Space after date +% yrpp-xsp,%: No space after date +%-------------------- +%DATE FONT: + %: (def) Date in normal font +% dtbf,%: Date in bold face +%-------------------- +%TRUNCATE YEAR (if author-year citations) + note-yr,%: Year text full +% %: (def) Year truncated +%-------------------- +%TITLE OF ARTICLE: +% %: (def) Title plain +% tit-it,%: Title italic +% tit-qq,qt-s,%: Title and punctuation in single quotes +% tit-qq,%: Title and punctuation in double quotes +% tit-qq,qt-g,%: Title and punctuation in guillemets +% tit-qq,qt-s,qx,%: Title in single quotes +% tit-qq,qx,%: Title in double quotes + tit-qq,qt-g,qx,%: Title in guillemets +%-------------------- +%COLLECTION/PROCEEDINGS TITLES (if quoted title) +% bt-qq,%: Quote collection and proceedings titles + %: (def) Collection and proceedings titles not in quotes +%-------------------- +%CAPITALIZATION OF ARTICLE TITLE: + %: (def) Sentence style +% atit-u,%: Title style +%-------------------- +%ARTICLE TITLE PRESENT: + %: (def) Article title present +% jtit-x,%: No article title +%-------------------- +%JOURNAL NAMES: + %: (def) Periods in journal names +% jxper,%: Dotless journal names +%-------------------- +%JOURNAL NAME FONT: + %: (def) Journal name italics +% jttl-rm,%: Journal name normal +%-------------------- +%THESIS TITLE: + %: (def) Thesis titles like books +% thtit-a,%: Thesis title like article +% thtit-x,%: No thesis title +%-------------------- +%TECHNICAL REPORT TITLE: +% %: (def) Tech. report title like articles + trtit-b,%: Tech. report title like books +%-------------------- +%TECHNICAL REPORT NUMBER: + %: (def) Tech. report and number plain +% trnum-it,%: Tech. report and number italic +%-------------------- +%JOURNAL VOLUME: + %: (def) Volume plain +% vol-it,%: Volume italic +% vol-bf,%: Volume bold +% vol-2bf,%: Volume and number bold +%-------------------- +%JOURNAL VOL AND NUMBER: +% %: (def) Journal vol(num) +% vnum-sp,%: Journal vol (num) +% vnum-cm,%: Journal vol, num + vnum-nr,%: Journal vol, no. num +% vnum-h,%: Journal vol, \# number +% vnum-b,%: Journal vol number +% vnum-x,%: Journal vol, without number +%-------------------- +%VOLUME PUNCTUATION: +% %: (def) Volume with colon +% volp-sp,%: Volume with colon and space +% volp-semi,%: Volume with semi-colon + volp-com,%: Volume with comma +% volp-blk,%: Volume with blank +%-------------------- +%YEAR IN JOURNAL SPECIFICATION: + %: (def) Journal year like others +% jdt-v,%: Journal vol(year) +% jdt-vs,%: Journal vol (year) +% jdt-p,%: Year with pages +% jdt-pc,%: Year, comma, pages +%-------------------- +%PAGE NUMBERS: + %: (def) Start and stop page numbers +% jpg-1,%: Only start page number +%-------------------- +%LARGE PAGE NUMBERS: +% %: (def) No separators for large page numbers +% pgsep-c,%: Comma inserted over 9999 + pgsep-s,%: Thin space inserted over 9999 +% pgsep-p,%: Period inserted over 9999 +%-------------------- +%WORD `PAGE' IN ARTICLES: +% %: (def) Article pages numbers only + jwdpg,%: Include `page' in articles +%-------------------- +%POSITION OF PAGES: + %: (def) Pages given mid text +% pp-last,%: Pages at end +%-------------------- +%WORD `VOLUME' IN ARTICLES: +% %: (def) Article volume as number only + jwdvol,%: Include `volume' in articles +%-------------------- +%NUMBER AND SERIES FOR COLLECTIONS: + num-xser,%: Allows number without series +% %: (def) Standard BibTeX +%-------------------- +%POSITION OF NUMBER AND SERIES: +% %: (def) After chapter and pages + numser,%: Just before publisher +%-------------------- +%VOLUME AND SERIES FOR BOOKS/COLLECTIONS: +% %: (def) Vol. 23 of Series + ser-vol,%: Series, vol. 23 +%-------------------- +%POSITION OF VOLUME AND SERIES FOR INCOLLECTIONS: +% %: (def) Series and volume after the editors + ser-ed,%: Series and volume after booktitle +%-------------------- +%JOURNAL NAME PUNCTUATION: + %: (def) Comma after journal +% jnm-x,%: Space after journal +%-------------------- +%BOOK TITLE: + %: (def) Book title italic +% btit-rm,bt-rm,%: Book title plain +%-------------------- +%PAGES IN BOOKS: + %: (def) Pages in book plain +% bkpg-par,%: Pages in book in parentheses +% bkpg-x,%: Pages in book bare +%-------------------- +%TOTAL PAGES OF A BOOK: +% %: (def) Total book pages not printed + pg-bk,%: For book: 345 pages +% pg-bk,pg-pre,%: Total book pages before publisher +%-------------------- +%PUBLISHER ADDRESS: + %: (def) Publisher, address +% add-pub,%: Address: Publisher +%-------------------- +%PUBLISHER IN PARENTHESES: + %: (def) Publisher as normal block +% pub-par,%: Publisher in parentheses +% pub-date,%: Publisher and date in parentheses +% pub-date,pub-xc,%: Publisher and date in parentheses, no comma +% pub-date,pub-xpar,%: Publisher and date without parentheses +% pub-date,pub-xpar,pub-xc,%: Publisher and date, no parentheses, no comma +%-------------------- +%PUBLISHER POSITION: +% %: (def) Publisher after chapter, pages + pre-pub,%: Publisher before chapter, pages + pre-edn,%: Publisher after edition +%-------------------- +%ISBN NUMBER: + isbn,%: Include ISBN +% %: (def) No ISBN +%-------------------- +%ISSN NUMBER: +% issn,%: Include ISSN + %: (def) No ISSN +%-------------------- +%DOI NUMBER: +% doi,%: Include DOI + url-doi,%: Format DOI as URL //doi.org/doi +% agu-doi,doi,%: Insert DOI AGU style +% %: (def) No DOI +%-------------------- +%`EDITOR' AFTER NAMES (EDITED BOOKS WITHOUT AUTHORS): +% %: (def) Word `editor' after name +% edpar,%: `Name (editor),' +% edpar,bkedcap,%: `Name (Editor),' +% edparc,%: `Name, (editor)' +% edparc,bkedcap,%: `Name, (Editor)' + edparxc,%: `Name (editor)' +% edparxc,bkedcap,%: `Name (Editor)' +%-------------------- +%EDITOR IN COLLECTIONS: +% %: (def) Same as for edited book + edby,%: In booktitle, edited by .. +% edby-par,%: In booktitle (edited by ..) +% edby-parc,%: In booktitle, (edited by ..) +% edby,edbyx,%: In booktitle, editor .. +% edby,edbyw,%: In booktitle, (editor) .. +% edby-par,edbyx,%: In booktitle (editor..) +% edby-parc,edbyx,%: In booktitle, (editor..) +% edby,edbyy,%: In booktitle, .., editor +% edby-par,edbyy,%: In booktitle (.., editor) +%-------------------- +%CAPITALIZE `EDITOR' OR `EDITED BY' (if editor capitalizable) +% %: (def) `(editor,..)' or `(edited by..)' +% edcap,%: `(Editor,..)' or `(Edited by..)' +%-------------------- +%PUNCTUATION BETWEEN SECTIONS (BLOCKS): +% %: (def) \newblock after blocks + blk-com,%: Comma between blocks +% blk-com,com-semi,%: Semi-colon between blocks +% blk-com,com-blank,%: Blanks between blocks +% blk-tit,%: Period after titles of articles, books, etc +% blk-tit,tit-col,%: Colon after titles of articles, books, etc +% blk-tita,%: Period after titles of articles +% blk-tita,tit-col,%: Colon after titles of articles +%-------------------- +%PUNCTUATION BEFORE NOTES (if not using \newblock) +% %: (def) Notes have regular punctuation + blknt,%: Notes preceded by period +%-------------------- +%PUNCTUATION AFTER AUTHORS: + %: (def) Author block normal +% au-col,%: Author block with colon +%-------------------- +%PUNCTUATION AFTER `IN': + %: (def) Space after `in' +% in-col,%: Colon after `in' +% in-it,%: Italic `in' +% in-col,in-it,%: Italic `in' and colon +% in-x,%: No word `in' +%-------------------- +%`IN' WITH JOURNAL NAMES (if using 'in' with collections) + %: (def) No `in' before journal name +% injnl,%: Add `in' before journal name +%-------------------- +%FINAL PUNCTUATION: + %: (def) Period at very end +% fin-bare,%: No period at end +%-------------------- +%ABBREVIATE WORD `PAGES' (if not using external language file) +% %: (def) `Page(s)' +% pp,%: `Page' abbreviated +% ppx,%: `Page' omitted +%-------------------- +%ABBREVIATE WORD `EDITORS': +% %: (def) `Editor(s)' +% ed,%: `Editor' abbreviated +%-------------------- +%OTHER ABBREVIATIONS: +% %: (def) No abbreviations +% abr,%: Abbreviations +%-------------------- +%ABBREVIATION FOR `EDITION' (if abbreviating words) +% %: (def) `Edition' abbreviated as `edn' +% ednx,%: `Edition' abbreviated as `ed' +%-------------------- +%MONTHS WITH DOTS: +% %: (def) Months with dots +% mth-bare,%: Months without dots +%-------------------- +%EDITION NUMBERS: +% xedn,%: Editions as in database +% %: (def) Write out editions +% ord,%: Numerical editions +%-------------------- +%Reading external language file \cfile=cjs-rcs-french.mbs + french,%: French language +%ABBREVIATE WORD `PAGES': +% %: (def) `Page(s)' + pp,%: `Page' abbreviated +% ppx,%: `Page' omitted +%-------------------- +%ABBREVIATE WORD `EDITEUR: +% %: (def) `\'Editeur(s)' + ed,%: `\'Editeur' abbreviated +%-------------------- +%OTHER ABBREVIATIONS: +% %: (def) No abbreviations + abr,%: Abbreviations +%-------------------- +%EDITION NUMBERS: +% xedn,%: Editions as in database +% %: (def) Write out editions + ord,%: Numerical editions +%-------------------- +%STORED JOURNAL NAMES: + %: (def) Full journal names +% jabr,%: Abbreviated journal names +% jabr,jaa,%: Abbreviated with astronomy shorthands +%-------------------- +%AMPERSAND: + %: (def) Use word `and' +% amper,%: Use ampersand +% varand,%: Use \BIBand +%-------------------- +%COMMA BEFORE `AND': +% %: (def) Comma before `and' + and-xcom,%: No comma before `and' +% and-com,%: Comma even with 2 authors +%-------------------- +%COMMA BEFORE `AND' EVEN FOR COLLECTION EDITORS (if using comma before `and' with authors) +% and-com-ed,%: Comma with 2 editors +% %: (def) Two editors without comma +%-------------------- +%NO `AND' IN REFERENCE LIST: + %: (def) With `and' +% xand,%: No `and' +%-------------------- +%COMMA BEFORE `ET AL': +% %: (def) Comma before `et al' + etal-xc,%: No comma before `et al' +%-------------------- +%FONT OF `ET AL': + %: (def) Plain et al +% etal-it,%: Italic et al +% etal-rm,%: Roman et al +%-------------------- +%ADDITIONAL REVTeX DATA FIELDS: + %: (def) No additional fields +% revdata,eprint,url,url-blk,%: Include REVTeX data fields +%-------------------- +%E-PRINT DATA FIELD: (without REVTeX fields) + %: (def) Do not include eprint field +% eprint,%: Include eprint and archive fields +%-------------------- +%URL ADDRESS: (without REVTeX fields) +% %: (def) No URL + url,url-blk,%: Include URL +% url,url-nt,%: URL as note +% url,url-nl,%: URL on new line +%-------------------- +%REFERENCE COMPONENT TAGS: + %: (def) No reference component tags +% bibinfo,%: Reference component tags +%-------------------- +%EMPHASIS: (affects all so-called italics) + %: (def) Use emphasis +% em-it,%: Use true italics +% em-x,%: No italics +% em-ul,%: Underlining +%-------------------- +%COMPATIBILITY WITH PLAIN TEX: + nfss,%: Use LaTeX commands +% plntx,%: Use only Plain TeX +%-------------------- +,{% + }} +\generate{\file{cjs-rcs-fr.bst}{\MBopts}} +\endbatchfile diff --git a/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-class.dbj b/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-class.dbj new file mode 100644 index 00000000000..3ef16366bdf --- /dev/null +++ b/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-class.dbj @@ -0,0 +1,39 @@ +\input docstrip.tex +\keepsilent +\askforoverwritefalse +\nopostamble +\preamble + +This is a generated file. + +Copyright (C) 2023-2024 Statistical Society of Canada | Société +canadienne de statistique + +This file may be distributed and/or modified under the conditions +of the LaTeX Project Public License, either version 1.3c of this +license or (at your option) any later version. The latest version +of this license is in: + + https://www.latex-project.org/lppl.txt + +and version 1.3c or later is part of all distributions of LaTeX +version 2006/05/20 or later. + +This work has the LPPL maintenance status `maintained'. + +The Current Maintainer of this work is Vincent Goulet +<vincent.goulet@act.ulaval.ca>. + +This work consists of the file cjs-rcs-article.dtx and the derived +files cjs-rcs-article.cls, cjs-rcs-article-fr.tex, cjs-template.tex +and rcs-gabarit.tex. + +\endpreamble + +\generate{ + \file{cjs-rcs-article.cls}{\from{cjs-rcs-article.dtx}{class}} + \file{cjs-rcs-article-fr.tex}{\nopreamble\from{cjs-rcs-article.dtx}{fr-doc}} + \file{cjs-template.tex}{\nopreamble\from{cjs-rcs-article.dtx}{template,en}} + \file{rcs-gabarit.tex}{\nopreamble\from{cjs-rcs-article.dtx}{template,fr}} +} +\endbatchfile diff --git a/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-english.mbs b/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-english.mbs new file mode 100644 index 00000000000..b23be11c434 --- /dev/null +++ b/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-english.mbs @@ -0,0 +1,422 @@ +% \iffalse meta-comment -*- mode: doctex -*- +% +% English language definition file of the master bibliography style +% for The Canadian Journal of Statistics | La revue canadienne de +% statistique +% +% Copyright (C) 2023-2024 Statistical Society of Canada | Société +% canadienne de statistique +% +% This file may be distributed and/or modified under the conditions +% of the LaTeX Project Public License, either version 1.3c of this +% license or (at your option) any later version. The latest version +% of this license is in: +% +% https://www.latex-project.org/lppl.txt +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Vincent Goulet +% <vincent.goulet@act.ulaval.ca>. +% +% This work derives from english.mbs, part of the custom-bib +% collection, a contribution to the LaTeX2e system. +% Copyright 1994-2002 Patrick W Daly +% Max-Planck-Institut f\"ur Sonnensystemforschung +% Max-Planck-Str. 2 +% D-37191 Katlenburg-Lindau +% Germany +% E-mail: daly@mps.mpg.de +% + %------------------------------------------------------------------- + % Begin module: +%\fi + % \ProvidesFile{cjs-rcs-english.mbs}[2024/07/14 v1.1 (VG, PWD)] +%\iffalse +%<*a&!a> +% The following ensures that the driver part is not seen by makebst +% The driver part must not contain any \end other than \end{document} ! +\ifx\endoptions\undefined\let\tempx=\relax\else + \long\def\tempx#1\end#2{}\fi\tempx +%</a&!a> +%<*driver> +\NeedsTeXFormat{LaTeX2e}% +\documentclass[nocjs,x11names,french,english]{cjs-rcs-article} + + %% Loading doc.sty creates some conflicts with the class and memoir. We + %% need to: + %% + %% - keep a copy of the class' \maketitle command; + %% - undefine the 'glossary' environment created by memoir; + %% - restore the standard LaTeX commands for the glossary that + %% doc.sty relies upon. + \let\makeCJStitle\maketitle % keep class definition + \let\theglossary\relax % avoid conflict with doc.sty + \let\endtheglossary\relax % avoid conflict with doc.sty + \makeatletter + \def\makeglossary{% + \newwrite\@glossaryfile + \immediate\openout\@glossaryfile=\jobname.glo + \def\glossary{\@bsphack\begingroup + \@sanitize + \@wrglossary}\typeout + {Writing glossary file \jobname.glo }% + \let\makeglossary\@empty + } + \@onlypreamble\makeglossary + \def\@wrglossary#1{% + \protected@write\@glossaryfile{}% + {\string\glossaryentry{#1}{\thepage}}% + \endgroup + \@esphack} + \def\glossary{\@bsphack\begingroup\@sanitize\@index} + \@twosidefalse\@mparswitchfalse % turn off twoside option + \makeatother + \usepackage{doc} + \def\changes#1#2#3{\glossary{#1>#3}} % simplified + \DisableCrossrefs + \CodelineNumbered + \RecordChanges + \OnlyDescription + \DontCheckModules + + \AtEndPreamble{% + \hypersetup{% + pdfauthor = {Statistical Society of Canada}, + pdftitle = {French language definition file cjs-rcs-french.mbs}}} + + %% Configuration of the glossary + \addto\extrasenglish{% + \def\glossaryname{Version history}} + \GlossaryPrologue{\section*{\glossaryname}% + \addcontentsline{toc}{section}{\glossaryname}} + \setlength{\GlossaryMin}{5cm} + + %% Additional semantic typesetting + \newcommand*\class[1]{\textsf{#1}} + \newcommand*\dtx{\textsf{docstrip}} + + %% Name of the journal + \makeatletter + \newcommand*\TheCJS{\@ifstar{\emph{The Journal}}{\emph{\CJS@journalname@en}}} + \newcommand*\LaRevue{\@ifstar{\emph{La revue}}{\emph{\CJS@journalname@fr}}} + \newcommand*\CJSclass{\class{cjs-rcs-article}} + \newcommand*\CJSbsten{\texttt{cjs-rcs-en.bst}} + \newcommand*\CJSbstfr{\texttt{cjs-rcs-fr.bst}} + \makeatother + + %% Redefine \year using information from \filedate instead of using + %% compilation time + \def\parsedate#1/#2/#3\relax{\def\year{#1}} + + \MakeShortVerb{\|} + +\begin{document} + \DocInput{cjs-rcs-english.mbs} +\end{document} +%</driver> +% end of meta-comment \fi +% \GetFileInfo{cjs-rcs-english.mbs} +% \expandafter\parsedate\filedate\relax +% +% \changes{0.9}{2023-10-14}{Initial version based on version 4.2 of +% \texttt{english.mbs} from \textbf{custom-bib}.} +% \changes{0.93}{2023-11-06}{Add a prefix v in the version number like +% the main file.} +% \changes{1.0}{2023-11-29}{First official release distributed through +% CTAN.} +% \changes{1.1}{2024-07-14}{No changes to the English language +% definition file.} +% +% \title[English language definition file \filename]{% +% English language definition file \\ +% of the master bibliographic style file \\ +% for \TheCJS} +% \author{Statistical Society of Canada} +% \affil{Developed by Vincent Goulet, Université Laval} +% +% \begin{englishabstract} +% The list of references in {\TheCJS} is typeset using the +% bibliographic styles {\CJSbsten} for articles in English and +% {\CJSbstfr} for articles in French. These styles are created using +% the program \texttt{makebst} from the master bibliographic file +% \texttt{cjs-rcs-merlin.mbs}, and the language definition files +% \texttt{cjs-rcs-english.mbs} and \texttt{cjs-rcs-french.mbs}. +% \end{englishabstract} +% \begin{frenchabstract} +% La liste des références dans {\LaRevue} est composée avec les +% style de bibliographie {\CJSbstfr} pour les articles en français +% et {\CJSbsten} pour les articles en anglais. Ceux-ci sont générés +% par le programme \texttt{makebst} à partir du fichier maitre +% \texttt{cjs-rcs-merlin.mbs} et des fichiers de localisation +% \texttt{cjs-rcs-english.mbs} et \texttt{cjs-rcs-french.mbs}. +% \end{frenchabstract} +% +% ^^A abusing the 'classification' environment. The final period is +% ^^A added by the environment. +% \begin{classification}[Version] +% \item[] This is the documentation for the file \code{\filename} +% {\fileversion}, dated {\filedate} +% \end{classification} +% +% \licence{{\year}, Statistical Society of Canada~{\textbar}~Société +% canadienne de statistique} +% +% \makeCJStitle +% +% \section{Introduction} +% +% This file is to be used as a language definition file with the +% master bibliographic file for {\TheCJS}. The language it defines is +% English. +% +% This is not a self-sufficient \texttt{.mbs} file, but rather may +% be used together with one that contains language support via +% external definition files. +% +% See the documentation for \texttt{makebst} for formatting details. +% +% \section{The Menu Information} +% +% All the menu information is nested between \dtx{} guard options +% |%<*options>| \dots\ |%</options>|, and the last command is +% |\endoptions|. The rest of the file is nested between |%<*!options&!driver>| +% \dots\ |%</!options&!driver>| in order to exclude it if \dtx{} is used to +% extract only the menu information or the documentation driver. +% +% \begin{macrocode} +%<*options> +\mes{^^JOptions for ENGLISH} +\wr{\spsp\spsp english,\pc: English language} + +\beginoptiongroup{ABBREVIATE WORD `PAGES'}{} +\optdef{*}{}{`Page(s)'}{(no abbreviation)} +\optdef{a}{pp}{`Page' abbreviated}{as p. or pp.} +\optdef{x}{ppx}{`Page' omitted}{} +\getans +\endoptiongroup +\beginoptiongroup{ABBREVIATE WORD `EDITORS':}{} +\optdef{*}{}{`Editor(s)'}{(no abbreviation)} +\optdef{a}{ed}{`Editor' abbreviated}{as ed. or eds.} +\getans +\endoptiongroup +\beginoptiongroup{OTHER ABBREVIATIONS:}{} +\optdef{*}{}{No abbreviations}{of volume, edition, chapter, etc} +\optdef{a}{abr}{Abbreviations}{of such words} +\getans +\endoptiongroup +\beginoptiongroup{ABBREVIATION FOR `EDITION' + (if abbreviating words)} + {\if\ans a*\fi}% +\optdef{*}{}{`Edition' abbreviated as `edn'}{} +\optdef{a}{ednx}{`Edition' abbreviated as `ed'}{} +\getans +\beginoptiongroup{MONTHS WITH DOTS:}{} +\optdef{*}{}{Months with dots}{as Jan.} +\optdef{x}{mth-bare}{Months without dots}{as Feb Mar} +\getans +\endoptiongroup +\endoptiongroup +\beginoptiongroup{EDITION NUMBERS:}{} +\optdef{*}{xedn}{Editions as in database}{saving much processing memory} +\optdef{w}{}{Write out editions}{as first, second, third, etc} +\optdef{n}{ord}{Numerical editions}{as 1st, 2nd, 3rd, etc} +\getans +\endoptiongroup +\endoptions +%</options> +% \end{macrocode} +% +% \StopEventually{\PrintChanges} +% +% \section{The Coding} +% \begin{macrocode} +%<*!options&!driver> + + % The language selected here is ENGLISH +FUNCTION {bbl.and} +{ "and"} + +FUNCTION {bbl.etal} +{ "et~al." } + +FUNCTION {bbl.editors} +%<!ed>{ "editors" } +%<ed>{ "eds." } + +FUNCTION {bbl.editor} +%<!ed>{ "editor" } +%<ed>{ "ed." } + +FUNCTION {bbl.edby} +{ "edited by" } + +FUNCTION {bbl.edition} +%<!abr>{ "edition" } +%<abr&!ednx>{ "edn." } +%<abr&ednx>{ "ed." } + +FUNCTION {bbl.volume} +%<!abr>{ "volume" } +%<abr>{ "vol." } + +FUNCTION {bbl.of} +{ "of" } + +FUNCTION {bbl.number} +%<!abr>{ "number" } +%<abr>{ "no." } + +FUNCTION {bbl.nr} +{ "no." } + +FUNCTION {bbl.in} +{ "in" } + +FUNCTION {bbl.pages} +%<!pp&!ppx>{ "pages" } +%<pp>{ "pp." } +%<!pp&ppx>{ "" } + +FUNCTION {bbl.page} +%<!pp&!ppx>{ "page" } +%<pp>{ "p." } +%<!pp&ppx>{ "" } + +%<*revdata> +FUNCTION {bbl.eidpp} +{ "pages" } + +%</revdata> +FUNCTION {bbl.chapter} +%<!abr>{ "chapter" } +%<abr>{ "chap." } + +FUNCTION {bbl.techrep} +%<!abr>{ "Technical Report" } +%<abr>{ "Tech. Rep." } + +FUNCTION {bbl.mthesis} +{ "Master's thesis" } + +FUNCTION {bbl.phdthesis} +{ "Ph.D. thesis" } + +%<*!xedn> +FUNCTION {bbl.first} +%<!ord>{ "First" } +%<ord>{ "1st" } + +FUNCTION {bbl.second} +%<!ord>{ "Second" } +%<ord>{ "2nd" } + +FUNCTION {bbl.third} +%<!ord>{ "Third" } +%<ord>{ "3rd" } + +FUNCTION {bbl.fourth} +%<!ord>{ "Fourth" } +%<ord>{ "4th" } + +FUNCTION {bbl.fifth} +%<!ord>{ "Fifth" } +%<ord>{ "5th" } + +FUNCTION {bbl.st} +{ "st" } + +FUNCTION {bbl.nd} +{ "nd" } + +FUNCTION {bbl.rd} +{ "rd" } + +FUNCTION {bbl.th} +{ "th" } +% \end{macrocode} +% This function adds English endings for ordinals 1, 2, 3. However, if +% the second last digit is 1, then the ending is `th' for all last digits. +% So far, all other languages included do not have this problem, and it is +% sufficient to add the \textsl{th} equivalent. This might change with further +% languages. +% +% \begin{macrocode} +FUNCTION {eng.ord} +{ duplicate$ "1" swap$ * + #-2 #1 substring$ "1" = + { bbl.th * } + { duplicate$ #-1 #1 substring$ + duplicate$ "1" = + { pop$ bbl.st * } + { duplicate$ "2" = + { pop$ bbl.nd * } + { "3" = + { bbl.rd * } + { bbl.th * } + if$ + } + if$ + } + if$ + } + if$ +} + +%</!xedn> +%<*!abr> +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +%</!abr> +%<*abr> +MACRO {jan} {"Jan."} + +MACRO {feb} {"Feb."} + +MACRO {mar} {"Mar."} + +MACRO {apr} {"Apr."} + +MACRO {may} {"May"} + +MACRO {jun} {"Jun."} + +MACRO {jul} {"Jul."} + +MACRO {aug} {"Aug."} + +MACRO {sep} {"Sep."} + +MACRO {oct} {"Oct."} + +MACRO {nov} {"Nov."} + +MACRO {dec} {"Dec."} + +%</abr> +%</!options&!driver> + % End module: cjs-rcs-english.mbs +% \end{macrocode} +% \Finale diff --git a/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-french.mbs b/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-french.mbs new file mode 100644 index 00000000000..748d449383b --- /dev/null +++ b/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-french.mbs @@ -0,0 +1,372 @@ +% \iffalse meta-comment -*- mode: doctex -*- +% +% French language definition file of the master bibliography style for +% The Canadian Journal of Statistics | La revue canadienne de +% statistique +% +% Copyright (C) 2023-2024 Statistical Society of Canada | Société +% canadienne de statistique +% +% This file may be distributed and/or modified under the conditions +% of the LaTeX Project Public License, either version 1.3c of this +% license or (at your option) any later version. The latest version +% of this license is in: +% +% https://www.latex-project.org/lppl.txt +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Vincent Goulet +% <vincent.goulet@act.ulaval.ca>. +% +% This work derives from french.mbs, part of the custom-bib +% collection, a contribution to the LaTeX2e system. +% Copyright 1994-2002 Patrick W Daly +% Max-Planck-Institut f\"ur Sonnensystemforschung +% Max-Planck-Str. 2 +% D-37191 Katlenburg-Lindau +% Germany +% E-mail: daly@mps.mpg.de +% + %------------------------------------------------------------------- + % Begin module: +%\fi + % \ProvidesFile{cjs-rcs-french.mbs}[2024/07/14 v1.1 (VG, PWD)] +%\iffalse +%<*a&!a> +% The following ensures that the driver part is not seen by makebst +% The driver part must not contain any \end other than \end{document} ! +\ifx\endoptions\undefined\let\tempx=\relax\else + \long\def\tempx#1\end#2{}\fi\tempx +%</a&!a> +%<*driver> +\NeedsTeXFormat{LaTeX2e}% +\documentclass[nocjs,x11names,french,english]{cjs-rcs-article} + + %% Loading doc.sty creates some conflicts with the class and memoir. We + %% need to: + %% + %% - keep a copy of the class' \maketitle command; + %% - undefine the 'glossary' environment created by memoir; + %% - restore the standard LaTeX commands for the glossary that + %% doc.sty relies upon. + \let\makeCJStitle\maketitle % keep class definition + \let\theglossary\relax % avoid conflict with doc.sty + \let\endtheglossary\relax % avoid conflict with doc.sty + \makeatletter + \def\makeglossary{% + \newwrite\@glossaryfile + \immediate\openout\@glossaryfile=\jobname.glo + \def\glossary{\@bsphack\begingroup + \@sanitize + \@wrglossary}\typeout + {Writing glossary file \jobname.glo }% + \let\makeglossary\@empty + } + \@onlypreamble\makeglossary + \def\@wrglossary#1{% + \protected@write\@glossaryfile{}% + {\string\glossaryentry{#1}{\thepage}}% + \endgroup + \@esphack} + \def\glossary{\@bsphack\begingroup\@sanitize\@index} + \@twosidefalse\@mparswitchfalse % turn off twoside option + \makeatother + \usepackage{doc} + \def\changes#1#2#3{\glossary{#1>#3}} % simplified + \DisableCrossrefs + \CodelineNumbered + \RecordChanges + \OnlyDescription + \DontCheckModules + + \AtEndPreamble{% + \hypersetup{% + pdfauthor = {Statistical Society of Canada}, + pdftitle = {French language definition file cjs-rcs-french.mbs}}} + + %% Configuration of the glossary + \addto\extrasenglish{% + \def\glossaryname{Version history}} + \GlossaryPrologue{\section*{\glossaryname}% + \addcontentsline{toc}{section}{\glossaryname}} + \setlength{\GlossaryMin}{5cm} + + %% Additional semantic typesetting + \newcommand*\class[1]{\textsf{#1}} + \newcommand*\dtx{\textsf{docstrip}} + + %% Name of the journal + \makeatletter + \newcommand*\TheCJS{\@ifstar{\emph{The Journal}}{\emph{\CJS@journalname@en}}} + \newcommand*\LaRevue{\@ifstar{\emph{La revue}}{\emph{\CJS@journalname@fr}}} + \newcommand*\CJSclass{\class{cjs-rcs-article}} + \newcommand*\CJSbsten{\texttt{cjs-rcs-en.bst}} + \newcommand*\CJSbstfr{\texttt{cjs-rcs-fr.bst}} + \makeatother + + %% Redefine \year using information from \filedate instead of using + %% compilation time + \def\parsedate#1/#2/#3\relax{\def\year{#1}} + + \MakeShortVerb{\|} + +\begin{document} + \DocInput{cjs-rcs-french.mbs} +\end{document} +%</driver> +% end of meta-comment \fi +% \GetFileInfo{cjs-rcs-french.mbs} +% \expandafter\parsedate\filedate\relax +% +% \changes{0.9}{2023-10-14}{Initial version based on version 4.2 of +% \texttt{french.mbs} from \textbf{custom-bib}.} +% \changes{0.93}{2023-11-06}{Add a prefix v in the version number like +% the main file.} +% \changes{1.0}{2023-11-29}{First official release distributed through +% CTAN.} +% \changes{1.1}{2024-07-14}{No changes to the French language +% definition file.} +% +% \title[French language definition file \filename]{% +% French language definition file \\ +% of the master bibliographic style file \\ +% for \TheCJS} +% \author{Statistical Society of Canada} +% \affil{Developed by Vincent Goulet, Université Laval} +% +% \begin{englishabstract} +% The list of references in {\TheCJS} is typeset using the +% bibliographic styles {\CJSbsten} for articles in English and +% {\CJSbstfr} for articles in French. These styles are created using +% the program \texttt{makebst} from the master bibliographic file +% \texttt{cjs-rcs-merlin.mbs}, and the language definition files +% \texttt{cjs-rcs-english.mbs} and \texttt{cjs-rcs-french.mbs}. +% \end{englishabstract} +% \begin{frenchabstract} +% La liste des références dans {\LaRevue} est composée avec les +% style de bibliographie {\CJSbstfr} pour les articles en français +% et {\CJSbsten} pour les articles en anglais. Ceux-ci sont générés +% par le programme \texttt{makebst} à partir du fichier maitre +% \texttt{cjs-rcs-merlin.mbs} et des fichiers de localisation +% \texttt{cjs-rcs-english.mbs} et \texttt{cjs-rcs-french.mbs}. +% \end{frenchabstract} +% +% ^^A abusing the 'classification' environment. The final period is +% ^^A added by the environment. +% \begin{classification}[Version] +% \item[] This is the documentation for the file \code{\filename} +% {\fileversion}, dated {\filedate} +% \end{classification} +% +% \licence{{\year}, Statistical Society of Canada~{\textbar}~Société +% canadienne de statistique} +% +% \makeCJStitle +% +% \section{Introduction} +% +% This file is to be used as a language definition file with the +% master bibliographic file for {\TheCJS}. The language it defines is +% French. +% +% This is not a self-sufficient \texttt{.mbs} file, but rather may +% be used together with one that contains language support via +% external definition files. +% +% See the documentation for \texttt{makebst} for formatting details. +% +% \section{The Menu Information} +% +% All the menu information is nested between \dtx{} guard options +% |%<*options>| \dots\ |%</options>|, and the last command is +% |\endoptions|. The rest of the file is nested between |%<*!options&!driver>| +% \dots\ |%</!options&!driver>| in order to exclude it if \dtx{} is used to +% extract only the menu information or the documentation driver. +% +% \begin{macrocode} +%<*options> +\mes{^^JOptions for FRENCH} +\wr{\spsp\spsp french,\pc: French language} + +\beginoptiongroup{ABBREVIATE WORD `PAGES':}{} +\optdef{*}{}{`Page(s)'}{(no abbreviation)} +\optdef{a}{pp}{`Page' abbreviated}{as p. or pp.} +\optdef{x}{ppx}{`Page' omitted}{} +\getans +\endoptiongroup +\beginoptiongroup{ABBREVIATE WORD `EDITEUR:}{} +\optdef{*}{}{`\string\'Editeur(s)'}{(no abbreviation)} +\optdef{a}{ed}{`\string\'Editeur' abbreviated}{as \string\'Ed.} +\getans +\endoptiongroup +\beginoptiongroup{OTHER ABBREVIATIONS:}{} +\optdef{*}{}{No abbreviations}{of Tome, \string\'edition, chapitre} +\optdef{a}{abr}{Abbreviations}{of such words} +\getans +\endoptiongroup +\beginoptiongroup{EDITION NUMBERS:}{} +\optdef{*}{xedn}{Editions as in database}{saving much processing memory} +\optdef{w}{}{Write out editions}{as premi\string\`ere, deuxi\string\`eme,...} +\optdef{n}{ord}{Numerical editions}{as 1re, 2e, 3e, etc} +\getans +\endoptiongroup +\endoptions +%</options> +% \end{macrocode} +% +% \StopEventually{\PrintChanges} +% +% \section{The Coding} +% \begin{macrocode} +%<*!options&!driver> + + % The language selected here is FRENCH +FUNCTION {bbl.and} +{ "et"} + +FUNCTION {bbl.etal} +{ "et~collab." } + +FUNCTION {bbl.editors} +%<!ed>{ "directeurs" } +%<ed>{ "dir." } + +FUNCTION {bbl.editor} +%<!ed>{ "directeur" } +%<ed>{ "dir." } + +FUNCTION {bbl.edby} +{ "sous la direction de" } + +FUNCTION {bbl.edition} +%<!abr>{ "\'edition" } +%<abr>{ "\'ed." } + +FUNCTION {bbl.volume} +%<!abr>{ "volume" } +%<abr>{ "vol." } + +FUNCTION {bbl.of} +{ "de" } + +FUNCTION {bbl.number} +%<!abr>{ "num\'ero" } +%<abr>{ "{\no}" } + +FUNCTION {bbl.nr} +{ "{\no}" } + +FUNCTION {bbl.in} +{ "dans" } + +FUNCTION {bbl.pages} +%<!pp&!ppx>{ "pages" } +%<pp>{ "p." } +%<!pp&ppx>{ "" } + +FUNCTION {bbl.page} +%<!pp&!ppx>{ "page" } +%<pp>{ "p." } +%<!pp&ppx>{ "" } + +%<*revdata> +FUNCTION {bbl.eidpp} +{ "pages" } + +%</revdata> +FUNCTION {bbl.chapter} +%<!abr>{ "chapitre" } +%<abr>{ "chap." } + +FUNCTION {bbl.techrep} +%<!abr>{ "rapport technique" } +%<abr>{ "rapport technique" } + +FUNCTION {bbl.mthesis} +{ "m\'emoire de ma\^itrise" } + +FUNCTION {bbl.phdthesis} +{ "th\`ese de doctorat" } + +%<*!xedn> +FUNCTION {bbl.first} +%<!ord>{ "Premi\`ere" } +%<ord>{ "1{\iere}" } + +FUNCTION {bbl.second} +%<!ord>{ "Deuxi\`eme" } +%<ord>{ "2{\ieme}" } + +FUNCTION {bbl.third} +%<!ord>{ "Troisi\`eme" } +%<ord>{ "3{\ieme}" } + +FUNCTION {bbl.fourth} +%<!ord>{ "Quatri\`eme" } +%<ord>{ "4{\ieme}" } + +FUNCTION {bbl.fifth} +%<!ord>{ "Cinqui\`eme" } +%<ord>{ "5{\ieme}" } + +FUNCTION {bbl.th} +{ "{\ieme}" } + +%</!xedn> +%<*!abr> +MACRO {jan} {"janvier"} + +MACRO {feb} {"f\'evrier"} + +MACRO {mar} {"mars"} + +MACRO {apr} {"avril"} + +MACRO {may} {"mai"} + +MACRO {jun} {"juin"} + +MACRO {jul} {"juillet"} + +MACRO {aug} {"ao\^ut"} + +MACRO {sep} {"septembre"} + +MACRO {oct} {"octobre"} + +MACRO {nov} {"novembre"} + +MACRO {dec} {"d\'ecembre"} + +%</!abr> +%<*abr> +MACRO {jan} {"jan."} + +MACRO {feb} {"f\'ev."} + +MACRO {mar} {"mars"} + +MACRO {apr} {"avr."} + +MACRO {may} {"mai"} + +MACRO {jun} {"juin"} + +MACRO {jul} {"juil."} + +MACRO {aug} {"ao\^ut"} + +MACRO {sep} {"sept."} + +MACRO {oct} {"oct."} + +MACRO {nov} {"nov."} + +MACRO {dec} {"d\'ec."} + +%</abr> +%</!options&!driver> + % End module: cjs-rcs-french.mbs +% \end{macrocode} +% \Finale diff --git a/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-merlin.mbs b/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-merlin.mbs new file mode 100644 index 00000000000..75ca76a256f --- /dev/null +++ b/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-merlin.mbs @@ -0,0 +1,8010 @@ +% \iffalse meta-comment -*- mode: doctex -*- +% +% Master bibliography style for The Canadian Journal of Statistics | +% La revue canadienne de statistique +% +% Copyright (C) 2023-2024 Statistical Society of Canada | Société +% canadienne de statistique +% +% This file may be distributed and/or modified under the conditions +% of the LaTeX Project Public License, either version 1.3c of this +% license or (at your option) any later version. The latest version +% of this license is in: +% +% https://www.latex-project.org/lppl.txt +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Vincent Goulet +% <vincent.goulet@act.ulaval.ca>. +% +% This work derives from merlin.mbs, part of the custom-bib +% collection, a contribution to the LaTeX2e system. +% Copyright 1994-2011 Patrick W Daly +% Max-Planck-Institut f\"ur Sonnensystemforschung +% Max-Planck-Str. 2 +% D-37191 Katlenburg-Lindau +% Germany +% E-mail: daly@mps.mpg.de +% +%<*!tail> +% (The following notice appears in bst files generated from this file) + % ------------------------------------------------------------------- + % Name and version information of the main mbs file: +%\fi + % \ProvidesFile{cjs-rcs-merlin.mbs}[2023/11/29 v1.0 (VG, PWD, AO, DPC)] +%\iffalse +%</!tail> +%<*a&!a> +% The following ensures that the driver part is not seen by makebst +% The driver part must not contain any \end other than \end{document} ! +\ifx\endoptions\undefined\let\tempx=\relax\else + \long\def\tempx#1\end#2{}\fi\tempx +%</a&!a> +%<*driver> +\NeedsTeXFormat{LaTeX2e}% +\documentclass[nocjs,x11names,french,english]{cjs-rcs-article} + \usepackage{metalogo} + \setlrmarginsandblock{40mm}{30mm}{*} % increase left margin + \checkandfixthelayout + + %% Loading doc.sty creates some conflicts with the class and memoir. We + %% need to: + %% + %% - keep a copy of the class' \maketitle command; + %% - undefine the 'glossary' environment created by memoir; + %% - restore the standard LaTeX commands for the glossary that + %% doc.sty relies upon. + \let\makeCJStitle\maketitle % keep class definition + \let\theglossary\relax % avoid conflict with doc.sty + \let\endtheglossary\relax % avoid conflict with doc.sty + \makeatletter + \def\makeglossary{% + \newwrite\@glossaryfile + \immediate\openout\@glossaryfile=\jobname.glo + \def\glossary{\@bsphack\begingroup + \@sanitize + \@wrglossary}\typeout + {Writing glossary file \jobname.glo }% + \let\makeglossary\@empty + } + \@onlypreamble\makeglossary + \def\@wrglossary#1{% + \protected@write\@glossaryfile{}% + {\string\glossaryentry{#1}{\thepage}}% + \endgroup + \@esphack} + \def\glossary{\@bsphack\begingroup\@sanitize\@index} + \@twosidefalse\@mparswitchfalse % turn off twoside option + \makeatother + \usepackage{doc} + \def\changes#1#2#3{\glossary{#1>#3}} % simplified + \DisableCrossrefs + \CodelineNumbered + \RecordChanges + \OnlyDescription + \DontCheckModules + + \AtEndPreamble{% + \hypersetup{% + pdfauthor = {Statistical Society of Canada}, + pdftitle = {Master bibliographic style cjs-rcs-merlin.mbs}}} + + %% Configuration of the glossary + \addto\extrasenglish{% + \def\glossaryname{Version history}} + \GlossaryPrologue{\section*{\glossaryname}% + \addcontentsline{toc}{section}{\glossaryname}} + \setlength{\GlossaryMin}{5cm} + + %% Additional semantic typesetting + \newcommand*\class[1]{\textsf{#1}} + \newcommand*\btx{\textsc{Bib}\TeX} + \newcommand*\dtx{\textsf{docstrip}} + + %% Name of the journal + \makeatletter + \newcommand*\TheCJS{\@ifstar{\emph{The Journal}}{\emph{\CJS@journalname@en}}} + \newcommand*\LaRevue{\@ifstar{\emph{La revue}}{\emph{\CJS@journalname@fr}}} + \newcommand*\CJSclass{\class{cjs-rcs-article}} + \newcommand*\CJSbsten{\texttt{cjs-rcs-en.bst}} + \newcommand*\CJSbstfr{\texttt{cjs-rcs-fr.bst}} + \makeatother + + %% Redefine \year using information from \filedate instead of using + %% compilation time + \def\parsedate#1/#2/#3\relax{\def\year{#1}} + + \MakeShortVerb{\|} + +\begin{document} + \DocInput{cjs-rcs-merlin.mbs} +\end{document} +%</driver> +% end of meta-comment \fi +% \GetFileInfo{cjs-rcs-merlin.mbs} +% \expandafter\parsedate\filedate\relax +% +% \changes{0.9}{2023-10-14}{Initial version based on version 4.33 of +% \texttt{merlin.mbs}.} +% \changes{0.92}{2023-10-27}{Relegate the \texttt{makebst} menu +% information to the complete documentation.} +% \changes{0.93}{2023-11-06}{Add a prefix v in the version number like +% the main file.} +% \changes{1.0}{2023-11-29}{First official release distributed through +% CTAN.} +% \changes{1.1}{2024-07-14}{No changes to the master bibliographic style.} +% +% \title[Master bibliographic style file \filename]{% +% Master bibliographic style file \\ +% of \TheCJS} +% \author{Statistical Society of Canada} +% \affil{Developed by Vincent Goulet, Université Laval} +% +% \begin{englishabstract} +% The list of references in {\TheCJS} is typeset using the +% bibliographic styles {\CJSbsten} for articles in English and +% {\CJSbstfr} for articles in French. These styles are created using +% the program \texttt{makebst} from the master bibliographic file +% \texttt{cjs-rcs-merlin.mbs}, and the language definition files +% \texttt{cjs-rcs-english.mbs} and \texttt{cjs-rcs-french.mbs}. +% \end{englishabstract} +% \begin{frenchabstract} +% La liste des références dans {\LaRevue} est composée avec les +% style de bibliographie {\CJSbstfr} pour les articles en français +% et {\CJSbsten} pour les articles en anglais. Ceux-ci sont générés +% par le programme \texttt{makebst} à partir du fichier maitre +% \texttt{cjs-rcs-merlin.mbs} et des fichiers de localisation +% \texttt{cjs-rcs-english.mbs} et \texttt{cjs-rcs-french.mbs}. +% \end{frenchabstract} +% +% ^^A abusing the 'classification' environment. The final period is +% ^^A added by the environment. +% \begin{classification}[Version] +% \item[] This is the documentation for the file \code{\filename} +% {\fileversion}, dated {\filedate} +% \end{classification} +% +% \licence{{\year}, Statistical Society of Canada~{\textbar}~Société +% canadienne de statistique} +% +% \makeCJStitle +% +% \section{Introduction} +% +% The class {\CJSclass} typesets manuscripts immediately in accordance +% with the presentation rules of {\TheCJS}. The class uses its own +% bibliographic styles: {\CJSbsten} for articles in English, and +% {\CJSbstfr} for articles in French. The style {\CJSbsten} could best +% be described as ``not unlike \code{apalike}'', whereas {\CJSbstfr} +% is closely derived from the style \code{francais} provided by the +% package % +% \href{https://ctan.org/pkg/francais-bst}{\pkg{francais-bst}}. +% +% The styles were originally generated using the program +% \code{makebst} by Patrick W.~Daly. The master bibliographic style +% and the language definition files are heavily based on their +% counterparts of the package % +% \href{https://ctan.org/pkg/custom-bib}{\pkg{custom-bib}}, % +% namely \code{merlin.mbs}, \code{english.mbs}, and \code{french.mbs}. +% +% \section{Generation of the bibliographic styles} +% \label{sec:generation} +% +% The English style {\CJSbsten} is produced from this master +% bibliographic style file and the language definition file +% \code{cjs-rcs-english.mbs} by running the driver +% \code{cjs-rcs-bst-en.dbj} through {\LaTeX}: +% \begin{quote} +% \code{latex cjs-rcs-bst-en.dbj} +% \end{quote} +% The French style {\CJSbstfr} is produced similarly using the driver +% \code{cjs-rcs-bst-fr.dbj}: +% \begin{quote} +% \code{latex cjs-rcs-bst-fr.dbj} +% \end{quote} +% +% \section{Changes compared to \texorpdfstring{\code{merlin.mbs}}{merlin.mbs}} +% \label{sec:changes} +% +% The master bibliographic style \code{\filename} introduces the following +% changes compared to \code{merlin.mbs}. +% +% \begin{enumerate} +% \item The function \code{format.url} is reworked to provide a +% cleaner URL for digital object identifiers (DOIs). The +% \code{merlin.mbs} definition would generate a DOI of the form +% \begin{quote} +% URL \texttt{http://dx.doi.org/\meta{doi}} +% \end{quote} +% The revised definition instead generates the simpler string +% \begin{quote} +% doi: \meta{doi} +% \end{quote} +% When the package \pkg{hyperref} is loaded, \meta{doi} is a +% hyperlink to the now recommended URL +% \code{https://doi.org/\meta{doi}}. This behaviour relies on a +% command \cmd{\urldoi} provided in the \texttt{.bbl} file. If +% needed, this command may be redefined by the user. +% \item The command \cmd{\urlprefix} is empty. Again, this may be +% redefined by the user. +% \item The quotes «~» are typeset by the macro \cmd{\frquote} of +% \pkg{babel-french} (version $\geq$ 3.1), rather than by the custom +% commands \cmd{\guillemotleft} and \cmd{\guillemotright}. +% \item The \code{makebst} menu information is only included in the +% complete documentation. The latter is obtained by commenting out +% the command \cmd{\OnlyDescription} in \code{\filename} and +% compiling the file with {pdf\LaTeX} or {\XeLaTeX}. +% \end{enumerate} +% +% \StopEventually{\PrintChanges} +% +% \begin{quote} +% \itshape From this point on, the documentation is taken without +% modification from \code{merlin.mbs} by Patrick W.~Daly, but for +% minute details such as filenames. +% \end{quote} +% +% \section{The Menu Information}\label{sec:menu} +% +% Here I describe the options and menu information for this particular +% master file \texttt{\filename}. To construct a \dtx{} driver file +% to generate a desired \texttt{.bst} file, simply process \texttt{makebst.tex} +% with \TeX\ or \LaTeX, and give +% \begin{quote}\code{\filename}\end{quote} +% when prompted for the name of the master file. Then answer the questions +% in the menus that follow. The menu information is extracted from here. +% +% All the menu information is nested between \dtx{} guard options +% |%<*options>| \dots\ |%</options>|, and the last command is +% |\endoptions|. The rest of the file is nested between +% \begin{quote} +% |%<*!options&!driver&!bblbst>| \dots\ |</!options&!driver&!bblbst>| +% \end{quote} +% in order to exclude it if \dtx{} is used to +% extract the menu information, the documentation driver, or the +% \texttt{babelbst.tex} file. +% +% The main coding is divided into two sections, the \emph{head} and +% \emph{tail}; in between come any external language or journal name +% support files. The head part is marked with the \dtx{} guard option +% |<!tail>| and the tail with |<!head>|. This roundabout means of +% doing things makes it possible to process \texttt{\filename} with +% \texttt{.dbj} files that were generated for the older +% \texttt{genbst.mbs} file by simply changing the name of the source +% file. If both \texttt{head} and \texttt{tail} (and \texttt{exlang}) +% options are omitted, as they are in the older \texttt{.dbj} files, +% \texttt{\filename} is processed completely in one pass. To include +% external files, two passes are needed, one for each part, with the +% external file(s) coming in between. +% +% Note too that if the internal language commands are taken (i.e., if +% \texttt{exlang} option is not given) then the default language is +% English, which is tested for as |<!babel>|. This too permits the simple +% update of older \texttt{.dbj}, at least for English. +% +% \subsection*{Selecting Language} +% Explicit words in the bibliography style, such as \textsl{and}, +% \textsl{editor}, etc., +% are represented by functions \texttt{bbl.and}, \texttt{bbl.editor}, and so on. +% By default these functions translate to the normal English text, but +% other languages are also possible. +% +% The definitions of these functions for other languages are contained in +% external files. At this point, we can make use of features in +% \texttt{makebst} (version~3.0 or later) to ask for the name of such a +% definition file, and store it in |\cfile|. If no external file is +% specified, then the internal definitions are taken, for which there are +% two possibilities: English or \LaTeX{} commands (Babel). +% +% The commands |\MBswitch|, |\mes|, |\MBaskfile|, |\wr|, |\pc|, |\spsp| are +% defined in \texttt{makebst.tex}. +% +% If |\MBswitch| does not exist, then the version of \texttt{makebst} +% cannot support external files. +% +% \begin{macrocode} +%<*options> +\expandafter\ifx\csname beginoptiongroup\endcsname\relax + \mes{^^J******************^^J% + !!!!!! VERSION CLASH !!!!!!!!!^^J% + This mbs file requires makebst version 4.0 or more^^J% + You must update makebst to run it with this mbs file^^J% + No docstrip batch file can be produced on this run^^J% + ******************} + \let\temp\endinput\else\let\temp\relax\fi\temp + +\newif\ifnumerical +\newif\ifmytemp +\mes{<<< For more information about the meanings of^^J% + <<< the various options, see the section on ^^J% + <<< Menu Information in the .mbs file documentation.} + +\umes{EXTERNAL FILES:} +\expandafter\ifx\csname MBswitch\endcsname\relax + \mes{^^J**************^^J% + Makebst version is less than 3.0^^J% + Cannot add external file for language definition^^J% + **************} + \umes{No included files.}% + \def\cfile{}\def\jfile{}% +\else + \MBaskfile{^^JName of language definition file}(\mroot.\mext)i\cfile + \edef\ctemp{\mroot.\mext} + \ifx\ctemp\cfile\def\cfile{}\fi + \umes{Name of language file: \string\cfile=\cfile.}% +% \end{macrocode} +% +% A second type of external file that can be added is one containing names +% of journals that are to be prestored into the \texttt{.bst} file. +% Several file names are allowed here, with the root names separated by +% commas, and with the common extension added at the end. To assist later +% parsing of the names, an additional comma is added before the extension. +% +% Note that in this case |\MBaskfile| treats the file(s) as output, i.e., +% it does not check if the file(s) actually exist. +% +% The macro |\Mgetnext| allows the root names to be extracted from the +% list of file names. +% \begin{macrocode} + \def\jfile{} + \ask{\yn}{^^JInclude file(s) for extra journal names? (NO)} + \mytempfalse + \if!\yn!\else\if\yn n\else\if\yn N\else\mytemptrue\fi\fi\fi + \ifmytemp + \MBaskfile{^^JFile to include}(physjour,geojour,photjour.mbs)o\jfile + \edef\jfile{\froot,.\fext} + \umes{Name of included files: \string\jfile=\jfile.}% + \else + \umes{No included files.}% + \fi +\fi%MBswitch +\def\Mgetnext#1,#2.#3??{\def\froot{#1}\def\Mrest{#2}\def\fext{#3}} +% \end{macrocode} +% +% If no external files are specified, then both |\cfile| and |\jfile| are +% empty. In this case, do \emph{not} set the options \texttt{head} and +% \texttt{tail}, which control the \dtx{} passes through +% \texttt{filename}. Now only one pass is made. +% +% If there is an external definition file, or an external list of +% journal names, then some extra text must be +% written to fit in with that already written by \texttt{makebst}. This is +% explained in that documentation. The |\MBswitch| command turns the curly +% braces |{..}| into normal characters, and the parentheses |(..)| take on +% their grouping functionality. This permits unbalanced braces to be +% written to the output file. +% +% \begin{macrocode} +\if!\cfile\jfile!\else + \begingroup\MBswitch + \wr(\spsp head,\string\MBopta}) + \if!\cfile!\else + \wr(\string\from{\cfile}{\string\MBopta}) + \fi + \if!\jfile!\else + \let\jxfile\jfile + \loop +% \end{macrocode} +% +% Parse the list of journal name files, adding a new |\from| for each one. +% +% \begin{macrocode} + \expandafter\Mgetnext\jxfile?? + \wr(\string\from{\froot.\fext}{\string\MBopta}) + \edef\jxfile(\Mrest.\fext) + \if!\Mrest!\def\Mtst(1)\else\def\Mtst()\fi + \if!\Mtst! + \repeat + \fi + \wr(\string\from{\mroot.\mext}{tail,\string\MBopta}}) + \wr(\string\def\string\MBopta{\pc) + \endgroup +\fi +% \end{macrocode} +% +% Ask whether there is a need for +% explicit English words or \LaTeX{} commands whose definitions are +% to be found in the file \texttt{babelbst.tex}. +% +% \begin{macrocode} +\beginoptiongroup{INTERNAL LANGUAGE SUPPORT + (if no external language file)}% + {\if!\cfile!\relax*\fi}% +\optdef{*}{}{English}{words used explicitly} +\optdef{b}{babel}{Babel} + {(words replaced by commands defined in babelbst.tex)} +\getans +\endoptiongroup +\if!\cfile!\relax\else +\wr{\spsp\spsp exlang,\pc: External language file} +\fi +% \end{macrocode} +% +% \subsection*{Author--year or numerical} +% The first question is whether a numerical or author--year citation +% style is to be used. If the latter, the supporting system is my +% \code{natbib.sty}, which expects |\bibitem| to have an optional +% argument containing the short form of the authors, plus year in +% parentheses. E.g., +% \begin{quote} +% |\bibitem[Daly et al.(1990)]{key}...| +% \end{quote} +% There is now a newer version of \texttt{natbib.sty} (v5.3) that +% supports an optional full author list too, as +% \begin{quote} +% |\bibitem[Daly et al.(1990)Daly, Keppler, and Williams]{key}...| +% \end{quote} +% Other systems are also supported, such as the Harvard family of +% bibliography styles (with \texttt{harvard.sty}), which have entries in the +% form +% \begin{quote} +% |\harvarditem[Daly et al.]{Daly, Keppler,|\\ +% | and Williams}{1990}{key}...| +% \end{quote} +% or the astronomy family (with \texttt{astron.sty}) with entries like +% \begin{quote} +% |\bibitem[\protect\astroncite{Daly et al.}{1990}]{key}...| +% \end{quote} +% or the Chicago family (with \texttt{chicago.sty}) with entries like +% \begin{quote} +% |\bibitem[\protect\citeautheryear{Daly, Keppler, and|\\ +% | Williams}{Daly et al.}{1990}]{key}...| +% \end{quote} +% or the `named' variant of Chicago (with \texttt{named.sty}) with entries like +% \begin{quote} +% |\bibitem[\protect\citeauthoryear{Daly et al.}{1990}]{key}...| +% \end{quote} +% or the so-called ``author--date'' group (with \texttt{authordate1-4.sty}) +% with entries of the form +% \begin{quote} +% |\bibitem[\protect\citename{Daly et al.}1990]{key}...| +% \end{quote} +% Finally, there is the \texttt{apalike} format of Oren Patashnik, for use +% with \texttt{apalike.sty} that has entries of the form +% \begin{quote} +% |\bibitem[Daly et al., 1990]{key}...| +% \end{quote} +% +% In addition to numerical or author--year citation styles, there is also a +% \texttt{cite} style available in which the label is the same as the cite +% key. This is for listing entire contents of databases with the cite key +% visible. +% +% A flag |\ifnumerical| is established because some of the following menu +% features depend on which system is to be used. +% +% The \texttt{alph} option produces labels as in \texttt{alpha.bst}; options +% \texttt{alf-1} and \texttt{alf-f} modify these. Standard is: first three +% letters of the single author (Dal90 for Daly, 1990) and first letters of +% first three authors (DK90 for Daly and Kopka, 1990). Alternatives are first +% three letters of the first author, no matter how many authors there are, and +% full name of first author. +% \begin{macrocode} +\beginoptiongroup{STYLE OF CITATIONS:}{} +\optdef{*}{}{Numerical}{as in standard LaTeX} +\optdef{a}{ay}{Author-year}{with some non-standard interface} +\optdef{b}{alph}{Alpha style, Jon90 or JWB90}{for single or multiple authors} +\optdef{o}{alph,alf-1}{Alpha style, Jon90}{even for multiple authors} +\optdef{f}{alph,alf-f}{Alpha style, Jones90}{(full name of first author)} +\optdef{c}{cite}{Cite key}{(special for listing contents of bib file)} +\getans +\endoptiongroup +\if\ans a\numericalfalse\else\numericaltrue\fi +\if\ans b\mytempfalse \else\mytemptrue \fi +\beginoptiongroup{HTML OUTPUT + (if non author-year citations)} + {\ifnumerical*\fi} +\optdef{*}{}{Normal LaTeX}{output} +\optdef{h}{html}{Hypertext}{output, in HTML code, in paragraphs} +\optdef{n}{html,htlist}{Hypertext list}{with sequence numbers} +\optdef{k}{html,htdes}{Hypertext with keys}{for viewing databases} +\getans +\endoptiongroup +\beginoptiongroup{AUTHOR--YEAR SUPPORT SYSTEM + (if author-year citations)} + {\ifnumerical\else*\fi} +\optdef{*}{nat}{Natbib}{for use with natbib v5.3 or later} +\optdef{o}{}{Older Natbib}{without full authors citations} +\optdef{l}{alk}{Apalike}{for use with apalike.sty} +\optdef{h}{har}{Harvard}{system with harvard.sty} +\optdef{a}{ast}{Astronomy}{system with astron.sty} +\optdef{c}{cay}{Chicago}{system with chicago.sty} +\optdef{n}{nmd}{Named}{system with named.sty} +\optdef{d}{cn}{Author-date}{system with authordate1-4.sty} +\getans +% \end{macrocode} +% The \texttt{harvard} family has been extended for \LaTeXe, and the new +% \texttt{.bst} files allow the word \textsl{and} and the brackets around years +% to be variable with commands. These features may be added too. +% The URL field used to be exclusively part of Harvard, but now exists +% independently of it too. +% +% \begin{macrocode} +\beginoptiongroup{HARVARD EXTENSIONS INCLUDED + (if Harvard support selected)} + {\if\ans h*\fi}% +\optdef{*}{harnm}{With Harvard extensions}{for LaTeX2e version of harvard.sty} +\optdef{n}{}{Older Harvard}{style, for LaTeX 2.09} +\getans +\endoptiongroup +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Language switching} +% A \texttt{language} field can be present to specify the original language of +% the reference; with \verb!\setlanguage!, the hyphenation patterns are set for +% setting the title in that language. +% \begin{macrocode} +\beginoptiongroup{LANGUAGE FIELD}{} +\optdef{*}{}{No language field}{} +\optdef{l}{lang}{Add language field}{to switch hyphenation patterns temporarily} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Annotations} +% Annotations to a reference are additional information not normally printed +% out in the list of references. They are used for listing databases. +% The coding here was offered by Soren Dayton. +% \begin{macrocode} +\beginoptiongroup{ANNOTATIONS:}{} +\optdef{*}{}{No annotations}{will be recognized} +\optdef{a}{annote}{Annotations}{in annote field or in .tex file of citekey name} +\getans +\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 +% choose an unsorted order, which means the order is the same as the original +% citations. This corresponds to \texttt{unsrt.bst}. Order of citation is +% also offered for author--year for \texttt{natbib}-type styles that can +% also be used for numerical listings. +% +% Another possibility is to order first by year, then authors. This too only +% makes sense for numerical citations. However, it is offered for author--year +% in the event that a \texttt{natbib}-type style is used for numerical +% listings. +% +% For the alpha style, the ordering is by label only, so no option is +% offered here (|\ifnumerical| is \meta{true} and |\ifmytemp| is \meta{false}). +% +% For author--year, the second choice is by label. (The label is the +% optional |\bibitem| argument, and is what is printed in place of the +% |\cite| command.) With this option, all the papers with the same first +% author are ordered so that the one-author papers come first, followed by +% the two-author papers, followed by the multiple-author papers. This is a +% more sensible system for author--year citations, and is demanded by some +% journals (like JGR). +% +% One problem that can arise here is when two or more references have the +% same set of authors and year; normally they are then ordered by the +% title, ignoring initial words like \textsl{the} and \textsl{a}, with the +% letters a, b, +% c, \dots, added to the year. This can mean that a set of references with +% a natural sequence will be put into a different order. An alternative is +% to order them by the citation keyword instead of by title. This of course +% assumes that the keywords in this case reflect that natural sequence. +% \begin{macrocode} +\let\ans\relax +\beginoptiongroup{ORDERING OF REFERENCES + (if non-author/year and non-alph)} + {\ifnumerical\ifmytemp*\fi\fi}% +\optdef{*}{}{Alphabetical}{by all authors} +\optdef{c}{seq-no}{Citation order}{(unsorted, like unsrt.bst)} +\optdef{d}{seq-yr}{Year ordered}{and then by authors} +\optdef{r}{seq-yrr}{Reverse year ordered}{and then by authors} +\getans +\endoptiongroup +% +\beginoptiongroup{ORDERING OF REFERENCES + (if author-year citations)} + {\ifnumerical\else*\fi}% +\optdef{*}{}{Alphabetical}{by all authors} +\optdef{l}{seq-lab}{By label}% + {(Jones before Jones and James before Jones et al)} +\optdef{m}{seq-labc}{By label and cite order}% + {(like above but all Jones et al ordered as cited)} +\optdef{k}{seq-key}{By label and cite key}{instead of label and title, as above} +\optdef{d}{seq-yr}{Year ordered}{and then by authors (for publication lists)} +\optdef{r}{seq-yrr}{Reverse year ordered}{and then by authors (most recent first)} +\optdef{c}{seq-no}{Citation order}{(unsorted, only meaningful for numericals)} +\getans +\endoptiongroup +% \end{macrocode} +% The standard \btx\ styles consider the \emph{von} part of the name to be a +% fixed part of the surname. European usage tends to alphabetize ignoring these +% honorifics. +% \begin{macrocode} +\beginoptiongroup{ORDER ON VON PART + (if not citation order)} + {\if\ans c\else*\fi}% +\optdef{*}{}{Sort on von part}{(de la Maire before Defoe)} +\optdef{x}{vonx}{Sort without von part}{(de la Maire after Mahone)} +\getans +\endoptiongroup +% \end{macrocode} +% +% Sorting normally treats authors with the same surname but different initials +% or first name separately; but a strict ordering by cite label would lump all +% Smiths together. +% \begin{macrocode} +\beginoptiongroup{IGNORE FIRST NAMES (if author-year citations)} + {\ifnumerical\else*\fi}% +\optdef{*}{}{Respect first names}{or initials, treat as different authors} +\optdef{x}{xintls}{Sort on surname only}{and treat all Smiths as one} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Formatting author names} +% The default is that the full names of the authors are listed, given names +% first, unabbreviated. Of course, if only the initials have been given in +% the \texttt{.bib} file, then that is all that can appear in the list. Other +% possibilities are to use initials (even if full names in the \texttt{.bib} +% file) either before or after the surnames. A specialty of the journals of +% the American Geophysical Union is to have only the first name with +% reversed initials. +% +% If the reference is part of a larger work with editors, then the editor +% names appear later in the reference text, usually as ``edited by \dots'' +% or as ``\emph{names} (editors)''. In these cases, the editor names are +% not usually reversed (surname first) even if the authors' names are. +% An option is provided to format such editor names exactly as the authors'. +% \begin{macrocode} +\beginoptiongroup{AUTHOR NAMES:}{} +\optdef{*}{ed-au}{Full, surname last}{(John Frederick Smith)} +\optdef{f}{nm-revf}{Full, surname first}{(Smith, John Frederick)} +\optdef{i}{nm-init,ed-au}{Initials + surname}{(J. F. Smith)} +\optdef{r}{nm-rev}{Surname + initials}{(Smith, J. F.)} +\optdef{s}{nm-rv}{Surname + dotless initials}{(Smith J F)} +\optdef{w}{nm-rvvc}{Surname + comma + spaceless initials}{(Smith, J.F.)} +\optdef{x}{nm-rvx}{Surname + pure initials}{(Smith JF)} +\optdef{y}{nm-rvcx}{Surname + comma + pure initials}{(Smith, JF)} +\optdef{z}{nm-rvv}{Surname + spaceless initials}{(Smith J.F.)} +\optdef{a}{nm-rev1}{Only first name reversed, initials}% + {(AGU style: Smith, J. F., H. K. Jones)} +\optdef{b}{nm-revv1}{First name reversed, with full names}% + {(Smith, John Fred, Harry Kab Jones)} +\getans +\endoptiongroup +\mytempfalse +\if\ans f\mytemptrue\fi +\if\ans r\mytemptrue\fi +\if\ans s\mytemptrue\fi +\if\ans x\mytemptrue\fi +\if\ans y\mytemptrue\fi +\if\ans a\mytemptrue\fi +\if\ans b\mytemptrue\fi +\beginoptiongroup{EDITOR NAMES IN COLLECTIONS + (if author names reversed)} + {\ifmytemp*\fi} +\if\ans r +\optdef{*}{}{Editor names NOT reversed}{as edited by J. J. Smith} +\fi +\if\ans s +\optdef{*}{}{Editor names NOT reversed}{as edited by J J Smith} +\fi +\if\ans a +\optdef{*}{}{Editor names NOT reversed}{as edited by J. J. Smith} +\fi +\if\ans x +\optdef{*}{}{Editor names NOT reversed}{as edited by JJ Smith} +\fi +\if\ans f +\optdef{*}{}{Editor names NOT reversed}{as edited by John James Smith} +\fi +\if\ans y +\optdef{*}{}{Editor names NOT reversed}{as edited by J.J. Smith} +\fi +\if\ans b +\optdef{*}{}{Editor names NOT reversed}{as edited by John James Smith} +\fi +\optdef{r}{ed-rev}{Editor names reversed}{just like authors'} +\getans +\beginoptiongroup{POSITION OF JUNIOR + (if author names reversed)} + {} +\optdef{*}{jnrlst}{Junior comes last}{as Smith, John, Jr.} +\optdef{m}{}{Junior between}{as Smith, Jr., John} +\getans +\endoptiongroup +\endoptiongroup + +\beginoptiongroup{JUNIOR PART IN THE CITATION + (if author-year citations)} + {\ifnumerical\else*\fi}% +\optdef{*}{}{No `junior' part in the citations}{but in the ref listing} +\optdef{j}{jnrlab}{`Junior' in citations}{as well as in ref listing} +\getans +\endoptiongroup + +\beginoptiongroup{PUNCTUATION BETWEEN AUTHOR NAMES:}{} +\optdef{*}{}{Author names separated by commas}{} +\optdef{s}{aunm-semi}{Names separated by semi-colon}{} +\optdef{h}{aunm-sl}{Names separated by slash}{/} +\getans +\endoptiongroup + +\beginoptiongroup{ADJACENT REFERENCES WITH REPEATED NAMES:}{} +\optdef{*}{}{Author/editor names always present}{} +\optdef{d}{nmdash}{Repeated author/editor names replaced by dash}{} +\optdef{2}{nmdash,nmd-2}{Repeated author/editor names replaced by 2 dashes}{} +\optdef{3}{nmdash,nmd-3}{Repeated author/editor names replaced by 3 dashes}{} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Number of authors} +% Normally the complete list of authors as given in the \texttt{.bib} file is +% presented in the reference list. However, some journals prefer to limit +% them to a maximum. If there are more than this maximum number of author +% names, then a minimum number plus \textsl{et al.} are listed. +% +% Because no test for consistency of the numbers is carried out in the +% \texttt{.bst} file itself (it might be possible, but I found it too complex), +% this is done here. +% \begin{macrocode} +\beginoptiongroup{NUMBER OF AUTHORS IN BIBLIOGRAPHY:}{} +\optdef{*}{}{All authors}{included in listing} +\optdef{l}{nmlm}{Limited authors}{(et al replaces missing names)} +\getans +\endoptiongroup +\if\ans l +\loop + \ask{\num}{Maximum number of authors (1-99)} + \ifnum\num>99\relax + \mes{*** Must be between 1 and 99} +\repeat +\def\parsenum#1#2{\if#2\relax\wr{\spsp\spsp x#1,\pc: Maximum of #1\space authors} + \else\wr{\spsp\spsp x#10,x#2,\pc: Maximum of #1#2\space authors}\fi} +\expandafter\parsenum\num\relax +\mes{\spsp You have selected maximum \num\space authors} +\edef\numx{\num} +\loop + \ask{\num}{Minimum number (before et al given) (1-\numx)} + \ifnum\num>\numx + \mes{*** Must be between 1 and \numx} +\repeat +\def\parsenum#1#2{\if#2\relax\wr{\spsp\spsp m#1,\pc: Minimum of #1\space authors} + \else\wr{\spsp\spsp m#10,m#2,\pc: Minimum of #1#2\space authors}\fi} +\expandafter\parsenum\num\relax +\mes{\spsp You have selected minimum \num\space authors} +\fi + +% \end{macrocode} +% +% Something that I finally added 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}{} +\optdef{6}{mct-6}{One, Two, Three, Four, Five, Six 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} +\optdef{6}{mct-x6}{Six authors}{without truncating} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Typeface of names} +% The author names in the list of references normally appear in the current +% typeface. This may be changed to small caps, bold, or italics. +% +% Alternatively, the surnames only can be formatted, with the first names in the +% regular font. One can also specify that the words `and' and `et~al.'\ should be +% in the regular font, or that `et~al.'\ be italic. +% +% Another possibility is that the names be put into a command |\bibnamefont{..}|, +% which must be defined in the \LaTeX\ document. By default, this command does +% not format its argument. There is also a |\bibfnamefont| command for the first +% names, to be user-defined. +% +% Editor names in a collection or in a book will not normally have these +% fonts applied to them; this may be additionally selected. +% +% \begin{macrocode} +\beginoptiongroup{TYPEFACE FOR AUTHORS IN LIST OF REFERENCES:}{} +\optdef{*}{}{Normal font for author names}{} +\optdef{s}{nmft,nmft-sc}{Small caps authors}{(\string\sc)} +\optdef{i}{nmft,nmft-it}{Italic authors}{(\string\it\space or \string\em)} +\optdef{b}{nmft,nmft-bf}{Bold authors}{(\string\bf)} +\optdef{u}{nmft,nmft-def}{User defined author font}{(\string\bibnamefont)} +\getans +\endoptiongroup +\mytempfalse +\if\ans i\mytemptrue\fi +\if\ans s\mytemptrue\fi +\if\ans b\mytemptrue\fi +\if\ans u\mytemptrue\fi +\beginoptiongroup{FONT FOR FIRST NAMES + (if non-default font for authors)} + {\ifmytemp*\fi}% +\optdef{*}{}{First names same font as surnames}{} +\optdef{r}{fnm-rm}{First names in normal font}{} +\optdef{u}{fnm-def}{First names in user defined font}{(\string\bibfnamefont)} +\getans +\beginoptiongroup{EDITOR NAMES IN INCOLLECTION ETC:}{} +\optdef{*}{}{Editors incollection normal font}{} +\optdef{a}{nmfted}{Editors incollection like authors}{font} +\getans +\endoptiongroup + +\beginoptiongroup{FONT FOR `AND' IN LIST:}{} +\optdef{*}{}{`And' in author font}{(JONES AND JAMES)} +\optdef{r}{nmand-rm}{`And' in normal font}{(JONES and JAMES)} +\getans +\endoptiongroup +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Names in Citation label} +% This applies to author--year style only. The label is the text written +% by the |\cite| command, and for author--year style, this is something like +% `Daly et al.\ (1990b)'. One may select italics for the authors and for the +% extra label attached to the year. The year always remains plain. +% +% This parallels the font selection for the names in the list of references +% except that there no choice for the first names, since only surnames +% are used in the labels. A user-defined |\citefontname| may also +% be selected, but this \emph{must} be defined by the user since there +% will be no default definition for it. +% +% If a font is selected for the cited authors, then the word `and' may be +% optionally put in the normal font. +% +% It is not possible to select the type of brackets for the year, since +% this is determined by the \LaTeX{} style option that manages the +% author--year citations. This is not standard \LaTeX, so that there are a +% number of private style files for achieving this. +% \begin{macrocode} +\beginoptiongroup{FONT OF CITATION LABELS IN TEXT + (if author-year citations)} + {\ifnumerical\else*\fi}% +\optdef{*}{}{Cited authors plain}{as result of \string\cite\space command} +\optdef{i}{lab,lab-it}{Cited authors italic}{} +\optdef{s}{lab,lab-sc}{Cited authors small caps}{} +\optdef{b}{lab,lab-bf}{Cited authors bold}{} +\optdef{u}{lab,lab-def}{User defined citation font}{(\string\citenamefont)} +\getans + +\mytempfalse +\if\ans i\mytemptrue\fi +\if\ans s\mytemptrue\fi +\if\ans b\mytemptrue\fi +\if\ans u\mytemptrue\fi +\beginoptiongroup{FONT FOR `AND' IN CITATIONS + (if non-default font for citation lables)} + {\ifmytemp*\fi}% +\optdef{*}{}{Cited `and' in author font}{} +\optdef{r}{and-rm}{Cited `and' in normal font}{} +\getans +\endoptiongroup +\beginoptiongroup{FONT OF EXTRA LABEL + (The extra letter on the year)}{} +\optdef{*}{}{Extra label plain}{} +\optdef{i}{xlab-it}{Extra label italic}{} +\getans +\endoptiongroup +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Label for missing author 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 +% entries. +% +% For author--year styles, the \texttt{key} field is even inserted in the +% reference list and in the label in place of the authors. Optionally, one can +% suppress the year in this case, which causes \texttt{natbib} (version~7) +% to print only that key text as a code designation for the work. Thus if +% \texttt{KEY = "CS1-345"} and there are no authors, then |\citep| produces +% (CS1-345) and |\citet| simply CS1-345. That is, they behave like +% |\citeauthor|. If \texttt{natbib} did not recognize the blank year, one would +% get (CS1-345, ) and CS1-345 (). (Earlier versions of \texttt{natbib} crash on +% a blank year.) +% \begin{macrocode} +\beginoptiongroup{LABEL WHEN AUTHORS MISSING + (if author-year citations)} + {\ifnumerical\else*\fi}% +\optdef{*}{keyxyr}{Year blank when KEY replaces missing author}{(for natbib 7.0)} +\optdef{y}{}{Year included when KEY replaces missing author}{} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Missing date} +% A missing date can be set to ???? or simply left blank. In the latter case, +% \texttt{natbib} version~7 will print only the authors without any year +% punctuation or brackets. +% +% \begin{macrocode} +\beginoptiongroup{MISSING DATE + (if author-year citations)} + {\ifnumerical\else*\fi}% +\optdef{*}{}{Missing date set to ????}{in label and text} +\optdef{b}{blkyear}{Missing date left blank}{} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Position of date} +% This applies to author--year style only. It makes sense to put the date +% immediately after the author list, since the two items (author and year) +% are the identifiers of the reference. Default position is at the +% end of the references, before any notes. It is also possible to place +% it even after the notes. +% +% Medical journals have a system where the date is part of the journal +% specification, as Lancet 1994;45(2):34--40. Otherwise the date appears at +% the end. +% \begin{macrocode} +\beginoptiongroup{DATE POSITION:}{} +\optdef{*}{}{Date at end}{} +\optdef{b}{dt-beg}{Date after authors}{} +\optdef{j}{dt-jnl}{Date part of journal spec.}{(as 1994;45:34-40) else at end} +\optdef{e}{dt-end}{Date at very end}{after any notes} +\getans +\endoptiongroup +\if\ans b\mytemptrue\else\if\ans j\mytemptrue\else\mytempfalse\fi\fi +% \end{macrocode} +% +% \subsection*{Format of date} +% The year may be enclosed in parentheses, brackets, or preceded by a +% colon. If none of these are selected, the date (month plus year) appears. +% For author--year, the date normally consists only of the year, no month, +% but this may be overridden. +% +% If the date comes just after the authors, then one might want special +% punctuation following it, like a colon, or space only. The latter is +% probably desirable if the date is brackets or parentheses. +% +% The date can even be put into bold face. +% \begin{macrocode} +\beginoptiongroup{DATE FORMAT + (if non author-year citations)} + {\ifnumerical*\fi}% +\optdef{*}{}{Plain month and year}{without any brackets} +\optdef{p}{yr-par}{Date in parentheses}{as (May 1993)} +\optdef{b}{yr-brk}{Date in brackets}{as [May 1993]} +\optdef{c}{yr-col}{Date preceded by colon}{as `: May 1993'} +\optdef{d}{yr-per}{Date preceded by period}{as `. May 1993'} +\optdef{m}{yr-com}{Date preceded by comma}{as `, May 1993'} +\optdef{s}{yr-blk}{Date preceded by space}{only, as ` May 1993'} +\getans +\beginoptiongroup{SUPPRESS MONTH:}{} +\optdef{*}{}{Date is month and year}{} +\optdef{x}{xmth}{Date is year only}{} +\getans +\endoptiongroup +\beginoptiongroup{REVERSED DATE + (if including month)} + {\if\ans x\else*\fi}% +\optdef{*}{}{Date as month year}{} +\optdef{r}{dtrev}{Date as year month}{} +\getans +\endoptiongroup +\endoptiongroup + +\beginoptiongroup{DATE FORMAT + (if author-year citations)} + {\ifnumerical\else*\fi}% +\optdef{*}{}{Year plain}{without any brackets} +\optdef{p}{yr-par}{Year in parentheses}{as (1993)} +\optdef{b}{yr-brk}{Year in brackets}{as [1993]} +\optdef{c}{yr-col}{Year preceded by colon}{as `: 1993'} +\optdef{d}{yr-per}{Year preceded by period}{as `. 1993'} +\optdef{m}{yr-com}{Date preceded by comma}{as `, 1993'} +\optdef{s}{yr-blk}{Year preceded by space}{only, as ` 1993'} +\getans +\beginoptiongroup{INCLUDE MONTHS:}{} +\optdef{*}{}{Date is year only}{without the month} +\optdef{m}{aymth}{Include month in date}{} +\getans +\endoptiongroup +\beginoptiongroup{REVERSED DATE + (if including month)} + {\if\ans m*\fi}% +\optdef{*}{}{Date as month year}{} +\optdef{r}{dtrev}{Date as year month}{} +\getans +\endoptiongroup +\endoptiongroup + +\beginoptiongroup{DATE PUNCTUATION + (if date not at end)} + {\ifmytemp*\fi}% +\optdef{*}{}{Date with standard block punctuation}{(comma or period)} +\optdef{c}{yrp-col}{Colon after date}{as 1994:} +\optdef{s}{yrp-semi}{Semi-colon after date}{as 1994;} +\optdef{p}{yrp-per}{Period after date}{even when blocks use commas} +\optdef{x}{yrp-x}{No punct. after date}{} +\getans +\beginoptiongroup{BLANK AFTER DATE:}{} +\optdef{*}{}{Space after date}{and punctuation} +\optdef{x}{yrpp-xsp}{No space after date}{as 1994:45} +\getans +\endoptiongroup +\endoptiongroup +\beginoptiongroup{DATE FONT:}{} +\optdef{*}{}{Date in normal font}{} +\optdef{b}{dtbf}{Date in bold face}{} +\getans +\endoptiongroup +% \end{macrocode} +% +% Normally in author--year citations, the \texttt{year} entry is truncated +% to the last 4 characters, which should be the 4 digits of the year. Some +% users have requested the possibility of suppressing this truncation so +% that they may put text in the \texttt{year} field, such as ``in press.'' +% Another use for it is when years are given as ``1968--72''. Actually, +% I have no idea why the year should be truncated at all. +% \begin{macrocode} +\beginoptiongroup{TRUNCATE YEAR + (if author-year citations)} + {\ifnumerical\else*\fi}% +\optdef{*}{note-yr}{Year text full}{as 1990--1993 or `in press'} +\optdef{t}{}{Year truncated}{to last 4 digits} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Article title in journal} +% The title of an article in a journal or in a collection (a book, or +% conference proceedings) may appear plain, in italics, within single +% or double quotes or even in guillemets. The last is best with T1 coding; a +% poor man's version for OT1 is provided; \LaTeXe\ is required in both cases. +% +% Furthermore, it may have sentence capitalization (first +% word and word following colon) or be capitalized as in the \texttt{.bib} file +% entry. That is why it is recommended to capitalize the entry text as it +% should appear when fully capitalized, putting words that are always +% capitalized in braces. Example: +% \begin{quote} +% |TITLE="The Results of the {Giotto} Mission"| +% \end{quote} +% which produces either ``The results of the Giotto mission'' or ``The +% Results of the Giotto Mission'', depending on option. +% +% Additionally, the article titles may be fully suppressed. +% \begin{macrocode} +\beginoptiongroup{TITLE OF ARTICLE:}{} +\optdef{*}{}{Title plain}{with no special font} +\optdef{i}{tit-it}{Title italic}{(\string\em)} +\optdef{q}{tit-qq,qt-s}{Title and punctuation in single quotes}{(`Title,' ..)} +\optdef{d}{tit-qq}{Title and punctuation in double quotes}{(``Title,'' ..)} +\optdef{g}{tit-qq,qt-g}{Title and punctuation in guillemets}{(<<Title,>> ..)} +\optdef{x}{tit-qq,qt-s,qx}{Title in single quotes}{(`Title', ..)} +\optdef{y}{tit-qq,qx}{Title in double quotes}{(``Title'', ..)} +\optdef{z}{tit-qq,qt-g,qx}{Title in guillemets}{(<<Title>>, ..)} +\getans +\endoptiongroup +\mytempfalse +\if\ans q\mytemptrue\fi +\if\ans d\mytemptrue\fi +\if\ans g\mytemptrue\fi +\if\ans x\mytemptrue\fi +\if\ans y\mytemptrue\fi +\if\ans z\mytemptrue\fi +\beginoptiongroup{COLLECTION/PROCEEDINGS TITLES + (if quoted title)} + {\ifmytemp*\fi}% +\optdef{*}{bt-qq}{Quote collection and proceedings titles}{too} +\optdef{x}{}{Collection and proceedings titles not in quotes}{} +\getans +\endoptiongroup +\beginoptiongroup{CAPITALIZATION OF ARTICLE TITLE:}{} +\optdef{*}{}{Sentence style}{(capitalize first word and those in braces)} +\optdef{t}{atit-u}{Title style}{(just as in bib entry)} +\getans +\endoptiongroup + +\beginoptiongroup{ARTICLE TITLE PRESENT:}{} +\optdef{*}{}{Article title present}{in journals and proceedings} +\optdef{x}{jtit-x}{No article title}{} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Journal names} +% Abbreviated journal names normally contain periods; the periods may be +% removed with this option. In fact, only letters, numbers, and spacing are +% retained. +% \begin{macrocode} +\beginoptiongroup{JOURNAL NAMES:}{} +\optdef{*}{}{Periods in journal names}{are retained, as `Phys. Rev.'} +\optdef{x}{jxper}{Dotless journal names}{as `Phys Rev'} +\getans +\endoptiongroup +% \end{macrocode} +% Journal name is normally printed in italics; can be left in normal font. +% \begin{macrocode} +\beginoptiongroup{JOURNAL NAME FONT:}{} +\optdef{*}{}{Journal name italics}{} +\optdef{r}{jttl-rm}{Journal name normal}{font} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Title of Theses and Technical Reports} +% The title of a these (PhD or Master's) is normally treated the same +% as that of a book. Optionally, it may be formatted like that of +% an article. +% +% The title of a technical report is normally treated the same as that +% of an article. Optionally, it may be formatted like that of a book. +% +% \begin{macrocode} +\beginoptiongroup{THESIS TITLE:}{} +\optdef{*}{}{Thesis titles like books}{} +\optdef{a}{thtit-a}{Thesis title like article}{} +\optdef{x}{thtit-x}{No thesis title}{} +\getans +\endoptiongroup + +\beginoptiongroup{TECHNICAL REPORT TITLE:}{} +\optdef{*}{}{Tech. report title like articles}{} +\optdef{b}{trtit-b}{Tech. report title like books}{} +\getans +\endoptiongroup + +\beginoptiongroup{TECHNICAL REPORT NUMBER:}{} +\optdef{*}{}{Tech. report and number plain}{as `Tech. Rep. 123'} +\optdef{i}{trnum-it}{Tech. report and number italic}% + {as `{\string\it\space Tech. Rep. 123'}} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Journal reference} +% Great diversity of opinion exists as to how a journal reference is to be +% formatted. It consists of a volume, possibly a number, and page limits. +% The number is really only necessary if the page numbers within one volume +% start at 1 for each physical `number'. Since journals are often bound +% together in one volume later, it makes more sense to number the pages +% continuously through the whole volume. +% +% I am only aware of one journal that used to reset the pagination for each +% `number', in which case the number was part of the page designation. +% I had erroneously provided an option \texttt{vnum-pg} to achieve this, but I +% now realize that instead, for this one journal, the database entries must +% contain \texttt{pages="(2)33--2(55)"}. This option has been removed at +% version 3.84. +% +% A number of styles for journal specifications are +% \begin{quote} +% \begin{tabular}{l@{\qquad}l} +% 21(2):33--55 & 21, no.\ 2: 33--55\\ +% \textbf{21}(2):33--55 & \textbf{21}, \#2, 33--55\\ +% \textit{21}(2), 33--55 & \textit{21} (2); 33--55 \\ +% 21(2) (1995) 33--55 & 21(1995), 33-55\\ +% 21(2) 33--55 & vol.~21 (2), pp.~33--55 +% \end{tabular} +% \end{quote} +% +% Here both start and stop page numbers have been given; often only the +% start page is wanted. +% +% It is also possible to include the year as part of the journal specification, +% in which case the year is always in parentheses, attached snugly or with space +% to the volume, or preceding the pages. +% +% \begin{macrocode} +\beginoptiongroup{JOURNAL VOLUME:}{} +\optdef{*}{}{Volume plain}{as vol(num)} +\optdef{i}{vol-it}{Volume italic}{as {\string\em\space vol}(num)} +\optdef{b}{vol-bf}{Volume bold}{as {\string\bf\space vol}(num)} +\optdef{d}{vol-2bf}{Volume and number bold}{as {\string\bf\space vol(num)}} +\getans +\endoptiongroup +% \end{macrocode} +% +% The form of the `number' is also given: in parentheses, with `no.', +% with \#, or omitted. The \texttt{vnum-b} option is meant to be used +% with \texttt{jdt-v} and \texttt{jdt-vs} but could be used alone. +% \begin{macrocode} +\beginoptiongroup{JOURNAL VOL AND NUMBER:}{} +\optdef{*}{}{Journal vol(num)}{as 34(2)} +\optdef{s}{vnum-sp}{Journal vol (num)}{as 34 (2)} +\optdef{c}{vnum-cm}{Journal vol, num}{as 34, 2} +\optdef{n}{vnum-nr}{Journal vol, no. num}{as 34, no. 2} +\optdef{h}{vnum-h}{Journal vol, \string\# number}{as 34, \string\#2} +\optdef{b}{vnum-b}{Journal vol number}{as 34 2} +\optdef{x}{vnum-x}{Journal vol, without number}{as 34} +\getans +\endoptiongroup + +\beginoptiongroup{VOLUME PUNCTUATION:}{} +\optdef{*}{}{Volume with colon}{as vol(num):ppp} +\optdef{s}{volp-sp}{Volume with colon and space}{as vol(num): ppp} +\optdef{h}{volp-semi}{Volume with semi-colon}{as vol(num); ppp} +\optdef{c}{volp-com}{Volume with comma}{as vol(num), ppp} +\optdef{b}{volp-blk}{Volume with blank}{as vol(num) ppp} +\getans +\endoptiongroup + +\beginoptiongroup{YEAR IN JOURNAL SPECIFICATION:}{} +\optdef{*}{}{Journal year like others}{as given by date position} +\optdef{v}{jdt-v}{Journal vol(year)}{as 34(1995)} +\optdef{s}{jdt-vs}{Journal vol (year)}{as 34 (1995)} +\optdef{p}{jdt-p}{Year with pages}{as 34(2), (1995) 1345--1387} +\optdef{c}{jdt-pc}{Year, comma, pages}{as 34(2), (1995), 1345--1387} +\getans +\endoptiongroup + +\beginoptiongroup{PAGE NUMBERS:}{} +\optdef{*}{}{Start and stop page numbers}{given} +\optdef{f}{jpg-1}{Only start page number}{} +\getans +\endoptiongroup + +\beginoptiongroup{LARGE PAGE NUMBERS:}{} +\optdef{*}{}{No separators for large page numbers}{} +\optdef{c}{pgsep-c}{Comma inserted over 9999}{as 11,234} +\optdef{s}{pgsep-s}{Thin space inserted over 9999}{as 11 234} +\optdef{p}{pgsep-p}{Period inserted over 9999}{as 11.234} +\getans +\endoptiongroup + +\beginoptiongroup{WORD `PAGE' IN ARTICLES:}{} +\optdef{*}{}{Article pages numbers only}{as 234-256} +\optdef{p}{jwdpg}{Include `page' in articles}{as pp. 234--256} +\getans +\endoptiongroup +% \end{macrocode} +% +% Some journals want page numbers at the end, even for books, proceedings, as +% well as for journals. +% \begin{macrocode} +\beginoptiongroup{POSITION OF PAGES:}{} +\optdef{*}{}{Pages given mid text}{as is normal} +\optdef{e}{pp-last}{Pages at end}{but before any notes} +\getans +\endoptiongroup + +\beginoptiongroup{WORD `VOLUME' IN ARTICLES:}{} +\optdef{*}{}{Article volume as number only}{as 21} +\optdef{p}{jwdvol}{Include `volume' in articles}{as vol. 21} +\getans +\endoptiongroup +% \end{macrocode} +% +% Fiddle with the format and location of the number/series for collections and +% inproceedings. +% \begin{macrocode} +\beginoptiongroup{NUMBER AND SERIES FOR COLLECTIONS:}{} +\optdef{*}{num-xser}{Allows number without series}{and suppresses word "number"} +\optdef{s}{}{Standard BibTeX}{as: "number 123 in Total Works"; error if number and no series} +\getans +\endoptiongroup + +\beginoptiongroup{POSITION OF NUMBER AND SERIES:}{} +\optdef{*}{}{After chapter and pages}{as in standard BibTeX} +\optdef{t}{numser}{Just before publisher}{or organization} +\getans +\endoptiongroup +% \end{macrocode} +% +% Fiddle with the format and location of series and volume with books and collections. +% \begin{macrocode} +\beginoptiongroup{VOLUME AND SERIES FOR BOOKS/COLLECTIONS:}{} +\optdef{*}{}{Vol. 23 of Series}{as in standard BibTeX} +\optdef{s}{ser-vol}{Series, vol. 23}{} +\getans +\endoptiongroup + +\beginoptiongroup{POSITION OF VOLUME AND SERIES FOR INCOLLECTIONS:}{} +\optdef{*}{}{Series and volume after the editors}{} +\optdef{e}{ser-ed}{Series and volume after booktitle}{and before editors} +\getans +\endoptiongroup +% \end{macrocode} +% +% It is possible to decide whether the journal name should be +% separated from the following specifications with a blank or comma. +% \begin{macrocode} +\beginoptiongroup{JOURNAL NAME PUNCTUATION:}{} +\optdef{*}{}{Comma after journal}{name} +\optdef{x}{jnm-x}{Space after journal}{name} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Books} +% The title of a book (as opposed to an article in a book or journal) is +% normally italicized. This may be set to the regular font. +% +% The page numbers in books may be set in parentheses, as (pp.\ 345--350). +% \begin{macrocode} +\beginoptiongroup{BOOK TITLE:}{} +\optdef{*}{}{Book title italic}{(\string\em)} +\optdef{p}{btit-rm,bt-rm}{Book title plain}{(no font command)} +\getans +\endoptiongroup + +\beginoptiongroup{PAGES IN BOOKS:}{} +\optdef{*}{}{Pages in book plain}{as pp. 50-55} +\optdef{p}{bkpg-par}{Pages in book in parentheses}{as (pp. 50-55)} +\optdef{x}{bkpg-x}{Pages in book bare}{as 50-55} +\getans +\endoptiongroup +\beginoptiongroup{TOTAL PAGES OF A BOOK:}{} +\optdef{*}{}{Total book pages not printed}{} +\optdef{p}{pg-bk}{For book: 345 pages}{or pp.} +\optdef{a}{pg-bk,pg-pre}{Total book pages before publisher}{} +\getans +\endoptiongroup +% \end{macrocode} +% Some psychology journals wish to have the publisher's address preceding +% the name, separated by colon, as +% \begin{quote}New York: Wiley and Sons\end{quote} +% +% Some journals (e.g.\ Nature) put publisher in parentheses with date, +% as (Wiley and Sons, New York, 1983). These normally put the date in +% parentheses at the end anyway, so this is a merging of the two sets of +% parentheses. +% \begin{macrocode} +\beginoptiongroup{PUBLISHER ADDRESS:}{} +\optdef{*}{}{Publisher, address}{as Harcourt, New York} +\optdef{a}{add-pub}{Address: Publisher}{as New York: Harcourt} +\getans +\endoptiongroup + +\beginoptiongroup{PUBLISHER IN PARENTHESES:}{} +\optdef{*}{}{Publisher as normal block}{without parentheses} +\optdef{p}{pub-par}{Publisher in parentheses}{} +\optdef{d}{pub-date}{Publisher and date in parentheses}{(Oxford, 1994)} +\optdef{c}{pub-date,pub-xc}{Publisher and date in parentheses, no comma}{(Oxford 1994)} +\optdef{f}{pub-date,pub-xpar}{Publisher and date without parentheses}{Oxford, 1994} +\optdef{k}{pub-date,pub-xpar,pub-xc}{Publisher and date, no parentheses, no comma}{Oxford 1994} +\getans +\endoptiongroup + +\beginoptiongroup{PUBLISHER POSITION:}{} +\optdef{*}{}{Publisher after chapter, pages}{} +\optdef{p}{pre-pub}{Publisher before chapter, pages}{} +\optdef{e}{pre-edn}{Publisher after edition}{} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{ISBN, ISSN, DOI numbers} +% Books normally possess an ISBN number. This may be included as an +% optional entry for \texttt{book}, \texttt{inbook}, \texttt{booklet}, +% \texttt{incollection}, \texttt{proceedings}, \texttt{inproceedings}. +% However, it should be suppressed for \texttt{inbook} etc.\ when +% there is a crossref to another book with the ISBN number. +% +% Periodicals contain an ISSN number. Add this to \texttt{article}, or +% course, but also to \texttt{inproceedings} and \texttt{proceedings}, since +% they are sometimes printed in a periodical. +% +% Journal articles that appear online are given a DOI number, something more +% robust than a URL that can change as machines are upgraded. +% The American Geophysical Union (AGU) uses the DOI as part of the +% page number substitution for electronic journals, placing the number +% where the pages would normally appear. +% \begin{macrocode} +\beginoptiongroup{ISBN NUMBER:}{} +\optdef{*}{isbn}{Include ISBN}{for books, booklets, etc.} +\optdef{x}{}{No ISBN}{} +\getans +\endoptiongroup + +\beginoptiongroup{ISSN NUMBER:}{} +\optdef{*}{issn}{Include ISSN}{for periodicals} +\optdef{x}{}{No ISSN}{} +\getans +\endoptiongroup + +\beginoptiongroup{DOI NUMBER:}{} +\optdef{*}{doi}{Include DOI}{as "doi: number"} +\optdef{u}{url-doi}{Format DOI as URL //doi.org/doi}{(must give url options!)} +\optdef{a}{agu-doi,doi}{Insert DOI AGU style}{as part of page number} +\optdef{x}{}{No DOI}{} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Editor of book without author} +% +% This is normally +% \begin{quote} +% J. K. James, editor +% \end{quote} +% but may also be +% \begin{quote} +% J. K. James, (editor)\\ +% J. K. James (editor), +% \end{quote} +% Alternatively, the word \textsl{editor} may be capitalized and/or +% abbreviated. +% +% \begin{macrocode} +\beginoptiongroup{`EDITOR' AFTER NAMES (EDITED BOOKS WITHOUT AUTHORS):}{} +\optdef{*}{}{Word `editor' after name}{} +\optdef{a}{edpar}{`Name (editor),'}{in parentheses, after name, comma after} +\optdef{b}{edpar,bkedcap}{`Name (Editor),'}{as above, editor upper case} +\optdef{c}{edparc}{`Name, (editor)'}{in parentheses, after name, comma between} +\optdef{d}{edparc,bkedcap}{`Name, (Editor)'}{as above, editor upper case} +\optdef{e}{edparxc}{`Name (editor)'}{in parentheses, after name, no commas} +\optdef{f}{edparxc,bkedcap}{`Name (Editor)'}{as above, editor upper case} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Edited by} +% For an article within an edited collection, the normal form is +% \begin{quote} +% In J. K. James, editor, \emph{Title of Collection} \dots +% \end{quote} +% Alternative forms are +% \begin{quote} +% In J. K. James (editor), \emph{Title} \dots\\ +% In \emph{Title}, edited by J. K. James \dots\\ +% In \emph{Title} (Edited by J. K. James) \dots +% \end{quote} +% If none of the \texttt{edby} variations is used, then the same system is +% used as for edited books, i.e. \texttt{edpar} applies. +% \begin{macrocode} +\beginoptiongroup{EDITOR IN COLLECTIONS:}{} +\optdef{*}{}{Same as for edited book}{(names before booktitle)} +\optdef{b}{edby}{In booktitle, edited by .. }{(where .. is names)} +\optdef{p}{edby-par}{In booktitle (edited by ..)}{} +\optdef{c}{edby-parc}{In booktitle, (edited by ..)}{} +\optdef{e}{edby,edbyx}{In booktitle, editor ..}{} +\optdef{f}{edby,edbyw}{In booktitle, (editor) ..}{} +\optdef{k}{edby-par,edbyx}{In booktitle (editor..)}{} +\optdef{g}{edby-parc,edbyx}{In booktitle, (editor..)}{} +\optdef{j}{edby,edbyy}{In booktitle, .., editor}{} +\optdef{m}{edby-par,edbyy}{In booktitle (.., editor)}{} +\getans +\endoptiongroup +\mytempfalse +\if\ans p\mytemptrue\fi +\if\ans k\mytemptrue\fi +\if\ans c\mytemptrue\fi +\if\ans f\mytemptrue\fi +\beginoptiongroup{CAPITALIZE `EDITOR' OR `EDITED BY' + (if editor capitalizable)} + {\ifmytemp*\fi}% +\optdef{*}{}{`(editor,..)' or `(edited by..)'}{in lower case} +\optdef{c}{edcap}{`(Editor,..)' or `(Edited by..)'}{in upper case} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Block punctuation} +% Blocks are logical sections of the reference specification, such as the +% author block, the journal block, editor block, etc. These are normally +% separated by periods, but alternatively a comma may be used. Another +% choice is to use commas except after titles where a period is given. +% +% \LaTeX\ offers an \texttt{openbib} option, which means that the blocks +% are not only new sentences, but new lines as well. This can only +% function when the default option here is taken, for then the command +% |\newblock| is placed between the blocks. This command is normally +% defined to do nothing, but \LaTeX\ redefines it to issue a new line +% when open bibliographies are wanted. +% \begin{macrocode} +\beginoptiongroup{PUNCTUATION BETWEEN SECTIONS (BLOCKS):}{} +\optdef{*}{}{\string\newblock\space after blocks} + {(periods or new lines with openbib option)} +\optdef{c}{blk-com}{Comma between blocks}{} +\optdef{s}{blk-com,com-semi}{Semi-colon between blocks}{} +\optdef{b}{blk-com,com-blank}{Blanks between blocks}{} +\optdef{t}{blk-tit}{Period after titles of articles, books, etc}{else commas} +\optdef{u}{blk-tit,tit-col}{Colon after titles of articles, books, etc}{else commas} +\optdef{a}{blk-tita}{Period after titles of articles}{else commas} +\optdef{d}{blk-tita,tit-col}{Colon after titles of articles}{else commas} +\getans +\endoptiongroup +\mytempfalse +\if\ans c\mytemptrue\fi +\if\ans s\mytemptrue\fi +\if\ans b\mytemptrue\fi +\if\ans t\mytemptrue\fi +\if\ans a\mytemptrue\fi +\beginoptiongroup{PUNCTUATION BEFORE NOTES + (if not using \string\newblock)} + {\ifmytemp*\fi}% +\optdef{*}{}{Notes have regular punctuation}{like all other blocks} +\optdef{p}{blknt}{Notes preceded by period}{} +\getans +\endoptiongroup +\beginoptiongroup{PUNCTUATION AFTER AUTHORS:}{} +\optdef{*}{}{Author block normal}{with regular block punctuation} +\optdef{c}{au-col}{Author block with colon}{} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{\textsl{In} with colon} +% When referring to works in a collection, one begins the block describing +% that collection with \textsl{In}. Optionally, one may add a colon. +% \begin{macrocode} +\beginoptiongroup{PUNCTUATION AFTER `IN':}{} +\optdef{*}{}{Space after `in'}{for incollection or inproceedings} +\optdef{c}{in-col}{Colon after `in'}{(as `In: ...')} +\optdef{i}{in-it}{Italic `in'}{and space} +\optdef{d}{in-col,in-it}{Italic `in' and colon}{} +\optdef{x}{in-x}{No word `in'}{for edited works} +\getans +\endoptiongroup +\beginoptiongroup{`IN' WITH JOURNAL NAMES + (if using 'in' with collections)} + {\if\ans x\else*\fi} +\optdef{*}{}{No `in' before journal name}{} +\optdef{i}{injnl}{Add `in' before journal name}{in style for incollection} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Final punctuation} +% The punctuation at the end of the reference is normally a period. This +% may be suppressed. +% \begin{macrocode} +\beginoptiongroup{FINAL PUNCTUATION:}{} +\optdef{*}{}{Period at very end}{of the listed reference} +\optdef{x}{fin-bare}{No period at end}{} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Abbreviations} +% A number of words may be abbreviated: pages, editors, volume, chapter, +% and so on. The first two may be independently set to abbreviation, the +% rest with a single option. +% +% Additionally, the edition numbers may be +% output as words (first, second, etc.) or as numbers (1st, 2nd, etc.). +% (Recall that the input in the \texttt{.bib} file is always as English +% words.) +% \begin{macrocode} +\beginoptiongroup{ABBREVIATE WORD `PAGES' + (if not using external language file)} + {\if!\cfile!\relax*\fi}% +\optdef{*}{}{`Page(s)'}{(no abbreviation)} +\optdef{a}{pp}{`Page' abbreviated}{as p. or pp.} +\optdef{x}{ppx}{`Page' omitted}{} +\getans +\beginoptiongroup{ABBREVIATE WORD `EDITORS':}{} +\optdef{*}{}{`Editor(s)'}{(no abbreviation)} +\optdef{a}{ed}{`Editor' abbreviated}{as ed. or eds.} +\getans +\endoptiongroup + +\beginoptiongroup{OTHER ABBREVIATIONS:}{} +\optdef{*}{}{No abbreviations}{of volume, edition, chapter, etc} +\optdef{a}{abr}{Abbreviations}{of such words} +\getans +\endoptiongroup +\beginoptiongroup{ABBREVIATION FOR `EDITION' + (if abbreviating words)} + {\if\ans a*\fi}% +\optdef{*}{}{`Edition' abbreviated as `edn'}{} +\optdef{a}{ednx}{`Edition' abbreviated as `ed'}{} +\getans +\beginoptiongroup{MONTHS WITH DOTS:}{} +\optdef{*}{}{Months with dots}{as Jan.} +\optdef{x}{mth-bare}{Months without dots}{as Feb Mar} +\getans +\endoptiongroup +\endoptiongroup +\beginoptiongroup{EDITION NUMBERS:}{} +\optdef{*}{xedn}{Editions as in database}{saving much processing memory} +\optdef{w}{}{Write out editions}{as first, second, third, etc} +\optdef{n}{ord}{Numerical editions}{as 1st, 2nd, 3rd, etc} +\getans +\endoptiongroup +\endoptiongroup +% \end{macrocode} +% +% The above choices about abbreviations are made only if the internal +% languages are taken (English or \texttt{babel}). For an external language +% definition file, these choices, along with possible other ones, are made +% in the external file, which is read in at this point. +% \begin{macrocode} +\umes{Reading external language file \string\cfile=\cfile}% +\if!\cfile!\relax\else + \input\cfile +\fi +% \end{macrocode} +% +% This file contains the standard set of stored journal names present in +% the basic bibliography style files. If other files containing journal +% names are to be included, they may only contain the options \texttt{jabr} +% or \texttt{jaa} since these options are selected here. No option +% menus from the journal-name files will be read in. +% \begin{macrocode} +\beginoptiongroup{STORED JOURNAL NAMES:}{} +\optdef{*}{}{Full journal names}{for prestored journals} +\optdef{a}{jabr}{Abbreviated journal names}{} +\optdef{s}{jabr,jaa}{Abbreviated with astronomy shorthands}{like ApJ and AJ} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Variations on \textsl{and}} +% It is possible to replace the word \textsl{and} with an ampersand \&, and to +% specify whether a comma is to precede \textsl{and} in a list of more than two +% names. +% +% A variable \textsl{and} may be provided for with the command |\BIBand| +% in place of the word. In this case, the command must be defined in the +% document file or some other package called. (This is intended for situations +% where an ampersand is wanted in parenthetical citations, but the word in +% textual ones.) +% +% \begin{macrocode} +\beginoptiongroup{AMPERSAND:}{} +\optdef{*}{}{Use word `and'}{in author lists} +\optdef{a}{amper}{Use ampersand}{in place of `and'} +\optdef{v}{varand}{Use \string\BIBand}{in place of `and'} +\getans +\endoptiongroup + +\beginoptiongroup{COMMA BEFORE `AND':}{} +\optdef{*}{}{Comma before `and'}{as `Tom, Dick, and Harry'} +\optdef{n}{and-xcom}{No comma before `and'}{as `Tom, Dick and Harry'} +\optdef{c}{and-com}{Comma even with 2 authors}{as `Tom, and Harry'} +\getans +\endoptiongroup +\beginoptiongroup{COMMA BEFORE `AND' EVEN FOR COLLECTION EDITORS + (if using comma before `and' with authors)} + {\if\ans c*\fi}% +\optdef{*}{and-com-ed}{Comma with 2 editors}{in collections} +\optdef{x}{}{Two editors without comma}{as `Tom and Harry'} +\getans +\endoptiongroup +\beginoptiongroup{NO `AND' IN REFERENCE LIST:}{} +\optdef{*}{}{With `and'}{before last author in reference list} +\optdef{x}{xand}{No `and'}{as `Tom, Dick, Harry'} +\getans +\endoptiongroup + +\beginoptiongroup{COMMA BEFORE `ET AL':}{} +\optdef{*}{}{Comma before `et al'}{in reference list} +\optdef{x}{etal-xc}{No comma before `et al'}{} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Font of \textsl{et al}} +% One can chose that \textsl{et~al.}\ be put into italics. +% Or, if the authors are in a different font from the regular one, the +% \textsl{et~al.}\ can still be Roman. +% \begin{macrocode} +\beginoptiongroup{FONT OF `ET AL':}{} +\optdef{*}{}{Plain et al}{} +\optdef{i}{etal-it}{Italic et al}{} +\optdef{r}{etal-rm}{Roman et al}{even when authors something else} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Additional Data Fields}\label{sec:revtex} +% The American Physical Society's REV\TeX\ package contains \btx\ support +% with a \texttt{bst} file generated from a variant of +% \texttt{\filename}. The extra fields are also available here. +% \begin{itemize} +% \item \textbf{collaboration}: A collaboration name associated with a +% reference. +% \item \textbf{eprint}: The e-print citation for the reference (Los Alamos +% or otherwise). E-print numbers can be turned into hyperlinks to the +% online article. The output is\\ +% \hspace*{2em}|\eprint{|\textit{eprint-spec}|}| +% \item \textbf{archive}: is an optional argument for |\eprint|, as\\ +% \hspace*{2em}|\eprint[|\textit{archive-des}|]{|\textit{eprint-spec}|}|\\ +% The \textit{archive-des} is some code such as \texttt{arXiv} that is +% translated to a base URL by a class or package file. The default definition +% of |\eprint| ignores \textit{archive-des} and prints \textit{eprint-spec} +% as a URL. +% \item \textbf{url}: A URL associated with the reference. Can be turned +% into a hyperlink. +% \end{itemize} +% +% A collaboration appears as part of the author list and the other two +% appear at the end of the citaton. The URL field can be selected +% independently of this option. +% +% In addition there are new fields for journals like Phys.\ Rev.~D that +% no longer use page numbers. +% \begin{itemize} +% \item \textbf{eid}: Electronic article identifier. +% \item \textbf{numpages}: Number of pages in an article. For use in +% conjunction with the \textbf{eid} field when page counts are +% desired. Deprecated when submitting to Phys.\ Rev. +% +% The \texttt{eprint} (with \texttt{archive}) and \texttt{url} fields may be +% included independently of the other REV\TeX\ fields. +% +% The \texttt{eid} field is now always included, although it is optional for +% the bibliography entries. This electronic identifier is a replacement for the +% page number in electronic journals: it is the sequence number in the printed +% volume. If present, it will be used in place of the page number. +% +% \end{itemize} +% +% \begin{macrocode} +\beginoptiongroup{ADDITIONAL REVTeX DATA FIELDS:}{} +\optdef{*}{}{No additional fields}{for REVTeX} +\optdef{r}{revdata,eprint,url,url-blk}{Include REVTeX data fields} + {collaboration, eid, eprint, archive, numpages, url} +\getans +\mytemptrue +\if\ans r\mytempfalse\fi +\beginoptiongroup{E-PRINT DATA FIELD: +(without REVTeX fields)} +{\ifmytemp*\fi} +\optdef{*}{}{Do not include eprint field}{} +\optdef{e}{eprint}{Include eprint and archive fields}{for electronic publications} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{URL address} +% For electronic documents with an Internet address, add a URL entry. +% Harvard already has this, but here it is done for all styles. +% The URL text will be set with the \verb!\url! command in the \texttt{url} +% package by Donald Arseneau. This package must be loaded for the command +% to work right. It allows line breaks at punctuations. Otherwise, +% \verb!\texttt! is used instead, with no line breaks. The URL text is preceded +% by \verb!\urlprefix! which defaults to ``URL '' but may be redefined by the +% user to be whatever s/he wants. The final space must be included. +% +% Note: selecting the REV\TeX\ fields automatically includes this, so the +% offer only is made if REV\TeX\ has been rejected. +% +% \begin{macrocode} +\beginoptiongroup{URL ADDRESS: +(without REVTeX fields)}{\ifmytemp*\fi} +\optdef{*}{}{No URL}{for electronic (Internet) documents} +\optdef{u}{url,url-blk}{Include URL}{as regular item block} +\optdef{n}{url,url-nt}{URL as note}{} +\optdef{l}{url,url-nl}{URL on new line}{after rest of reference} +\getans +\endoptiongroup +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Reference Component Tagging} +% If reference component tagging is enabled, we +% apply tags like |\bibinfo| and |\eprint| to the fields of data +% in the content of the |\bibitem| statement. We also ensure that +% these commands have a default meaning within the scope of the |thebibliography| +% environment. The default definitions simply print the field and ignore the +% tag. However, other programs or packages might make use of the tag +% information to separate authors from title, for example. +% +% \begin{macrocode} +\beginoptiongroup{REFERENCE COMPONENT TAGS:}{} +\optdef{*}{}{No reference component tags} + {in the \string\bibitem\space entries} +\optdef{b}{bibinfo}{Reference component tags} + {like \string\bibinfo\space in the content of \string\bibitem} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Define emphasis} +% In everything that been mentioned so far, italicization should be +% understood to mean `emphasize' in the \LaTeX{} sense. This means that the +% command |\em| is used. This is not the same as |\it|, which is always +% italics. Rather, with |\em|, the font style switches between |\rm| and +% |\it| depending on the context. Here one may choose to true italics, or +% to switch off italics altogether. +% \begin{macrocode} +\beginoptiongroup{EMPHASIS: + (affects all so-called italics)}{} +\optdef{*}{}{Use emphasis}{ie, \string\em, allows font switching} +\optdef{i}{em-it}{Use true italics}{ie, \string\it, absolute italics} +\optdef{x}{em-x}{No italics}{at all} +\optdef{u}{em-ul}{Underlining}{in place of italics, best with ulem package} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Plain \TeX\ compatibility} +% Bold face, italics, and emphasis are made with the \LaTeXe\ commands, +% which makes them incompatible with the obsolete \LaTeX2.09, and with +% Plain \TeX. There are also some extra testing for existing commands +% that best work with \LaTeXe\ syntax. +% +% If the bibliography style file is to be fully compatible with Plain \TeX, +% do not select the option \texttt{nfss} but do take \texttt{plntx}. +% \begin{macrocode} +\beginoptiongroup{COMPATIBILITY WITH PLAIN TEX:}{} +\optdef{*}{nfss}{Use LaTeX commands}{which may not work with Plain TeX} +\optdef{t}{plntx}{Use only Plain TeX}{commands for fonts and testing} +\getans +\endoptiongroup +% \end{macrocode} +% +% Terminate the options list. If a language definition file has been called, +% then we have a closing brace too many, so add another dummy opening brace. +% \begin{macrocode} +\if!\cfile\jfile!\else +\begingroup\MBswitch +\wr(,{\pc) +\endgroup +\fi + +\endoptions +%</options> +% \end{macrocode} +% +% \section{The Bibliographic Coding} +% +% \begin{macrocode} +%<*!options&!driver&!bblbst> +%<*!tail> + % For use with BibTeX version 0.99a or later + % ------------------------------------------------------------------- +%<*(!nmft&(nmft-it|nmft-sc|nmft-bf|nmft-def))|(!lab&(lab-it|lab-bf|lab-sc|lab-def))> + % WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING + % The input dbj file contains one of the options +%<nmft-it|nmft-sc|nmft-bf|nmft-def> % nmft-it, nmft-bf, nmft-sc, or nmft-def +%<lab-it|lab-sc|lab-bf|lab-def> % lab-it, lab-bf, lab-sc, or lab-def + % without the corresponding general option(s): +%<nmft-it|nmft-sc|nmft-bf|nmft-def> % nmft +%<lab-it|lab-sc|lab-bf|lab-def> % lab + % (You may be using an older dbj with a newer version of merlin.mbs) + % Please edit your dbj file to add the general option(s) and reprocess. + % +%</(!nmft&(nmft-it|nmft-sc|nmft-bf|nmft-def))|(!lab&(lab-it|lab-bf|lab-sc|lab-def))> +%<*!exlang> +%<!babel> % This bibliography style file is intended for texts in ENGLISH +%<*babel> + % This bibliography style file requires a file named babelbst.tex + % containing the definitions of word commands like \bbleditor, etc. +%</babel> +%</!exlang> +%<*exlang> + % This bibliography style file is intended for texts in +%<bahasa> % BAHASA +%<brazilian> % BRAZILIAN +%<catalan> % CATALAN +%<croatian> % CROATIAN +%<czech> % CZECH +%<danish> % DANISH +%<dansk> % DANSK +%<dutch> % DUTCH +%<english> % ENGLISH +%<esperanto> % ESPERANTO +%<finnish> % FINNISH +%<french> % FRENCH +%<galacian> % GALACIAN +%<german> % GERMAN +%<hungarian> % HUNGARIAN +%<italian> % ITALIAN +%<norwegian> % NORWEGIAN +%<norsk> % NORWEGIAN +%<polski> % POLISH +%<polish> % POLISH +%<portuguese> % PORTUGUESE +%<romanian> % ROMANIAN +%<russian> % RUSSIAN +%<slovak> % SLOVAK +%<slovenian> % SLOVENIAN +%<slovene> % SLOVENIAN +%<spanish> % SPANISH +%<swedish> % SWEDISH +%<turkish> % TURKISH +%</exlang> +%<*!html> +%<*ay> + % This is an author-year citation style bibliography. As such, it is + % non-standard LaTeX, and requires a special package file to function properly. + % Such a package is natbib.sty by Patrick W. Daly +%<*alk> + % or: apalike.sty by Oren Patashnik + % The form of the \bibitem entries is + % \bibitem[Jones et al., 1990]{key}... +%</alk> +%<*!(har|ast|alk|cay|nmd|cn)> + % The form of the \bibitem entries is + % \bibitem[Jones et al.(1990)]{key}... +%<nat> % \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}... + % The essential feature is that the label (the part in brackets) consists + % of the author names, as they should appear in the citation, with the year + % in parentheses following. There must be no space before the opening + % parenthesis! +%<nat> % With natbib v5.3, a full list of authors may also follow the year. + % In natbib.sty, it is possible to define the type of enclosures that is + % really wanted (brackets or parentheses), but in either case, there must + % be parentheses in the label. + % The \cite command functions as follows: + % \citet{key} ==>> Jones et al. (1990) +%<nat> % \citet*{key} ==>> Jones, Baker, and Smith (1990) + % \citep{key} ==>> (Jones et al., 1990) +%<nat> % \citep*{key} ==>> (Jones, Baker, and Smith, 1990) + % \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2) + % \citep[e.g.][]{key} ==>> (e.g. Jones et al., 1990) + % \citep[e.g.][p. 32]{key} ==>> (e.g. Jones et al., 1990, p. 32) + % \citeauthor{key} ==>> Jones et al. +%<nat> % \citeauthor*{key} ==>> Jones, Baker, and Smith + % \citeyear{key} ==>> 1990 +%</!(har|ast|alk|cay|nmd|cn)> +%<*har> + % or: harvard.sty by Peter Williams and Thorsten Schnier +%<harnm> % (needs natbib v5.3 or harvard v2.0.3) + % The form of the bibitem entries is + % \harvarditem[Jones et al.]{Jones, Baker, and Smith}{1990}{key}... +%</har> +%<*cay> + % or: chicago.sty + % The form of the bibitem entries is + % \bibitem[\protect\citeauthoryear{Jones, Baker, and Smith} + % {Jones et al.}{1990}{key}... +%</cay> +%<*nmd> + % or: named.sty + % The form of the bibitem entries is + % \bibitem[\protect\citeauthoryear{Jones et al.}{1990}]{key}... +%</nmd> +%<*ast> + % or: astron.sty + % The form of the bibitem entries is + % \bibitem[\protect\astroncite{Jones et al.}{1990}]{key}... +%</ast> +%<*cn> + % or: authordate1-4.sty + % The form of the bibitem entries is + % \bibitem[\protect\citename{Jones et al.}1990]{key}... +%</cn> +%</ay> +%<*!ay> +%<*!alph&!cite> + % This is a numerical citation style, and as such is standard LaTeX. +%</!alph&!cite> +%<*alph> + % This is a labelled citation style similar to the standard alpha.bst, + % where labels are of the form Dal90 or DBK89. +%</alph> +%<*cite&!alph> + % This is a special pseudo-numerical bibliography style, intended to be + % used to list all the entries in a bib database +%</cite&!alph> + % It requires no extra package to interface to the main text. + % The form of the \bibitem entries is +%<!alph&!cite> % \bibitem{key}... +%<alph> % \bibitem[label]{key}... +%<!alph&cite> % \bibitem[key]{key}... +%<*!cite|alph> + % Usage of \cite is as follows: +%<*!alph&!cite> + % \cite{key} ==>> [#] + % \cite[chap. 2]{key} ==>> [#, chap. 2] + % where # is a number determined by the ordering in the reference list. +%</!alph&!cite> +%<*alph> + % \cite{key} ==>> [label] + % \cite[chap. 2]{key} ==>> [label, chap. 2] + % The order in the reference list is by label. +%</alph> +%<*seq-no&!alph> + % The order in the reference list is that by which the works were originally + % cited in the text, or that in the database. +%</seq-no&!alph> +%<*!seq-no&!alph> + % The order in the reference list is alphabetical by authors. +%</!seq-no&!alph> +%</!cite|alph> +%</!ay> +%</!html> +%<*html> + % This bibliographic style file produces HTML output instead of LaTeX. + % The LaTeX special characters are not translated, so that the output + % (which has the .bbl ending still) will have to be further massaged, + % and renamed with .html or .htm. The title and heading may also need + % to be revised. + % +%<htlist&!htdes> % The output is a numbered list. +%<htdes> % The output is an unnumbered list with the keys printed +%<htdes> % before each entry. +%<!htlist&!htdes> % The output is lists each entry as one paragraph. +%</html> + % ------------------------------------------------------------------- + +% \end{macrocode} +% +% \begin{macro}{`ENTRY'} +% The new \texttt{harvard.sty} of \LaTeXe{} includes an entry URL, or +% rather it is included in the new \texttt{.bst} files for it. Add it +% here too, but only for option \texttt{harnm}. +% +% Books normally have an ISBN number. +% This entry is (optionally) included, modelled after that in +% \texttt{xbtxbst.doc}. +% \begin{macrocode} +ENTRY + { address +%<annote> annote +%<eprint> archive + author + booktitle + chapter +%<revdata> collaboration +%<doi|url-doi> doi + edition + editor + eid +%<eprint> eprint + howpublished + institution +%<isbn> isbn +%<issn> issn + journal + key +%<lang> language + month + note + number +%<revdata> numpages + organization + pages + publisher + school + series + title + type +%<url|harnm|revdata> url + volume + year + } + {} +%<!ay&!alph> { label } +%<!ay&alph> { label extra.label sort.label } +%<ay> { label extra.label sort.label short.list } +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +INTEGERS { output.state before.all mid.sentence after.sentence after.block } +% \end{macrocode} +% +% \begin{macro}{`init.state.consts'} +% \begin{macrocode} +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} +% \end{macrocode} +% \end{macro} +% +% |s| and |t| are general-purpose scratch registers whose value does not persist +% past the end of a function. They also do not appear to be used to communicate +% between functions or to be clobbered within a sub-function call. Hopefully. +% \begin{macrocode} +STRINGS { s t} +% \end{macrocode} +% +% \begin{macro}{`output.nonnull'} +% \begin{macrocode} +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = +%<!blk-com|(!com-semi&!com-blank)> { ", " * write$ } +%<blk-com&com-semi> { "; " * write$ } +%<blk-com&!com-semi&com-blank> { " " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ +%<!html> "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`output'} +% \begin{macrocode} +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`output.check'} +% \begin{macrocode} +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`fin.entry'} +% I have often been asked to add an annotation function. This suggestion is +% from Soren Dayton; it inputs a file with the same name as the cite key, or +% uses the text in the \texttt{annote} field. It will only work with \LaTeXe. +% \begin{macrocode} +FUNCTION {fin.entry} +%<*!fin-bare> +{ add.period$ + write$ +%</!fin-bare> +%<*fin-bare> +{ duplicate$ empty$ + 'pop$ + 'write$ + if$ +%</fin-bare> +%<html&htdes> "</dd>" write$ +%<html&!htdes&htlist> "</li>" write$ +%<html&!htdes&!htlist> "</p>" write$ + newline$ +%<*annote> +%<*!html> + annote missing$ + { "\bibAnnoteFile{" cite$ * "}" * write$ newline$ } + { "\bibAnnote{" cite$ * "}{" * annote * "}" * write$ newline$ + } + if$ +%</!html> +%<*html> + "<blockquote><strong>Key:</strong> " + cite$ * write$ + annote missing$ + { newline$ } + { "<br><strong>Annotation:</strong>" write$ newline$ + annote write$ newline$ + } + if$ + "</blockquote>" write$ newline$ +%</html> +%</annote> +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`new.block'} +% \begin{macrocode} +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`new.sentence'} +% \begin{macrocode} +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`add.blank'} +% When text is printed with \texttt{output} or +% \texttt{output.check}, the \texttt{output.state} is set such that +% a comma will precede the next output text. For special effects, we want to +% suppress this comma, inserting a blank instead. Hence the +% \texttt{output.state} is changed to \texttt{before.all}, meaning no +% punctuation is to be inserted. +% \begin{macrocode} +FUNCTION {add.blank} +{ " " * before.all 'output.state := +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`add.colon'} +% \begin{macrocode} +%<*au-col|tit-col> +FUNCTION {add.colon} +{ duplicate$ empty$ + 'skip$ + { ":" * add.blank } + if$ +} + +%</au-col|tit-col> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`no.blank.or.punct'} +% Another frill is to suppresss both blanks and punctuation. The |\hspace| +% permits a line break at this point. +% \begin{macrocode} +%<*yrpp-xsp> +FUNCTION {no.blank.or.punct} +%<*!html> +{ "\hspace{0pt}" * before.all 'output.state := +} +%</!html> +%<html>{ before.all 'output.state := } + +%</yrpp-xsp> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`date.block'} +% The \texttt{date.block} function is used for special punctuating effects +% after the date. +% \begin{macrocode} +FUNCTION {date.block} +{ +%<*!yrp-x> +%<yrp-col> ":" * +%<*!yrp-col> +%<yrp-semi> ";" * +%<*!yrp-semi> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&!yrp-per> skip$ +%<(blk-com|blk-tit|blk-tita)&yrp-per> new.sentence +%</!yrp-semi> +%</!yrp-col> +%</!yrp-x> +%<*yrp-x|yrp-col|yrp-semi> +%<!yrpp-xsp> add.blank +%<yrpp-xsp> no.blank.or.punct +%</yrp-x|yrp-col|yrp-semi> +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`not'} +% \begin{macrocode} +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`and'} +% \begin{macrocode} +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`or'} +% \begin{macrocode} +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`non.stop'} +% This function (my invention) tests if the last character in the string +% on the stack is \texttt{. ! ?} by using \texttt{add.period\$}. It is to +% be used for conditional italic correction or adding commas. +% \begin{macrocode} +%<*!tit-it&tit-qq> +FUNCTION {non.stop} +{ duplicate$ + "}" * add.period$ + #-1 #1 substring$ "." = +} + +%</!tit-it&tit-qq> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`remove.dots'} +% This macro removes any periods from the string on the stack. To be used +% for undotting journal names, months, and juniors. Previously +% \texttt{purify\$} was used for this, but that removes more than just +% dots. +% +% May 2007, Joseph A. Wright (Morning Star, UK) contributed a revision to allow +% the dot accent |\.| to be retained. +% \begin{macrocode} +%<*nm-rv|nm-rvx|nm-rvcx|mth-bare|jxper> +STRINGS {z} + +FUNCTION {remove.dots} +{ 'z := + "" + { z empty$ not } + { z #1 #2 substring$ + duplicate$ "\." = + { z #3 global.max$ substring$ 'z := * } + { pop$ + z #1 #1 substring$ + z #2 global.max$ substring$ 'z := + duplicate$ "." = 'pop$ + { * } + if$ + } + if$ + } + while$ +} +%</nm-rv|nm-rvx|nm-rvcx|mth-bare|jxper> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`new.block.checka'} +% \begin{macrocode} +%<*!ay> +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} +%</!ay> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`new.block.checkb'} +% \begin{macrocode} +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`new.sentence.checka'} +% \begin{macrocode} +%<*!ay> +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} +%</!ay> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`new.sentence.checkb'} +% \begin{macrocode} +%<*!ay> +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} +%</!ay> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`field.or.null'} +% \begin{macrocode} +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`emphasize'} +% Emphasis can be either italic or the alternating font. The font command +% may be NFSS or regular \LaTeX~2.09 declarations. +% \begin{macrocode} +FUNCTION {emphasize} +%<*!em-x> +{ duplicate$ empty$ + { pop$ "" } +%<html> { "<i>" swap$ * "</i>" * } +%<*!html> +%<em-ul> { "\uline{" swap$ * "}" * } +%<*!em-ul> +%<*!nfss> +%<!em-it> { "{\em " swap$ * "\/}" * } +%<em-it> { "{\it " swap$ * "\/}" * } +%</!nfss> +%<*nfss> +%<!em-it> { "\emph{" swap$ * "}" * } +%<em-it> { "\textit{" swap$ * "}" * } +%</nfss> +%</!em-ul> +%</!html> + if$ +} +%</!em-x> +%<em-x>{ skip$ } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`bolden'} +% The bold font command may be NFSS or the regular \LaTeX~2.09 declaration. +% \begin{macrocode} +%<*nmft-bf|vol-bf|vol-2bf|lab-bf|dtbf|pres-bf> +FUNCTION {bolden} +{ duplicate$ empty$ + { pop$ "" } +%<html> { "<b>" swap$ * "</b>" * } +%<*!html> +%<!nfss> { "{\bf " swap$ * "}" * } +%<nfss> { "\textbf{" swap$ * "}" * } +%</!html> + if$ +} +%</nmft-bf|vol-bf|vol-2bf|lab-bf|dtbf|pres-bf> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`scaps'} +% To put text into small caps. +% \begin{macrocode} +%<*lab-sc|nmft-sc|pres-sc> +FUNCTION {scaps} +{ duplicate$ empty$ + { pop$ "" } +%<html> { skip$ } +%<*!html> +%<!nfss> { "{\sc " swap$ * "}" * } +%<nfss> { "\textsc{" swap$ * "}" * } +%</!html> + if$ +} +%</lab-sc|nmft-sc|pres-sc> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`bib.name.font'} +% \begin{macro}{`bib.fname.font'} +% \begin{macro}{`cite.name.font'} +% Define functions for formatting the author/editor names, one for the +% surnames (\texttt{bib.name.font}) and one for the first names +% (\texttt{bib.fname.font}). These could be identical, or the latter is +% deactivated if first names are not to be formatted, only the last names. +% +% For citations, we have \texttt{cite.name.font}. Here only surnames appear. +% +% It is also possible to have a user-defined font command for each, which the +% user must define in his work. These are |\bibnamefont{}| and |\bibfnamefont{}|, +% and some defaults are provided that simply repeat the arguments. Two commands +% are needed if \texttt{nmft-def} and \texttt{fnm-def} are both given. +% +% If neither \texttt{fnm-def} nor \texttt{fnm-rm} are given, then the first names +% are formatted the same as the surnames. +% \begin{macrocode} +%<*nmft> +FUNCTION {bib.name.font} +%<nmft-it>{ emphasize } +%<!nmft-it&nmft-bf>{ bolden } +%<!nmft-it&!nmft-bf&nmft-sc>{ scaps } +%<*!nmft-it&!nmft-bf&!nmft-sc&nmft-def> +{ duplicate$ empty$ + { pop$ "" } +%<!html> { "\bibnamefont{" swap$ * "}" * } +%<html> { skip$ } + if$ +} +%</!nmft-it&!nmft-bf&!nmft-sc&nmft-def> +FUNCTION {bib.fname.font} +%<!fnm-rm&!fnm-def>{ bib.name.font } +%<fnm-rm>{ skip$ } +%<*!fnm-rm&fnm-def> +{ duplicate$ empty$ + { pop$ "" } +%<!html> { "\bibfnamefont{" swap$ * "}" * } +%<html> { skip$ } + if$ +} +%</!fnm-rm&fnm-def> +%</nmft> +% \end{macrocode} +% +% \begin{macrocode} +%<*lab> +FUNCTION {cite.name.font} +%<lab-it>{ emphasize } +%<!lab-it&lab-bf>{ bolden } +%<!lab-it&!lab-bf&lab-sc>{ scaps } +%<*!lab-it&!lab-bf&!lab-sc&lab-def> +{ duplicate$ empty$ + { pop$ "" } +%<!html> { "\citenamefont{" swap$ * "}" * } +%<html> { skip$ } + if$ +} +%</!lab-it&!lab-bf&!lab-sc&lab-def> +%</lab> +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{`tie.or.space.prefix'} +% The function \texttt{tie.or.space.prefix} determines whether +% the top item on the stack requires a tie character and +% slips that (or a space character if not) ahead of it. +% At this point a font switch or other function can be applied to +% the top item on the stack, and the appropriate space found +% just ahead of it on the stack. +% +% The sequence \texttt{tie.or.space.prefix} \texttt{*} \texttt{*} is a common idiom +% for joining the top two stack objects with a tie or space +% depending on the length of the top object. +% +% Another idiom is to apply \texttt{tie.or.space.prefix}, apply a font switch, +% and then swap and join. In this case the tie or space follows the object. +% \begin{macrocode} +FUNCTION {tie.or.space.prefix} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`capitalize'} +% Capitalizing is easy for regular languages, but for \texttt{babel}, +% some trickery stuff is needed; definitions of |\capitalize| and +% |\Capitalize| are written to the \texttt{.bbl} file. +% \begin{macrocode} + +FUNCTION {capitalize} +%<!babel>{ "u" change.case$ "t" change.case$ } +%<babel>{ "\capitalize" swap$ * } + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`space.word'} +% The function \texttt{space.word} adds a space before and after the word or +% words currently on the stack. This was added for the \texttt{bbl.}$nnn$ +% functions, that contain only a word without spacing, but replace explicit +% text in the originals that were spaced out. Its seems more flexible to +% define the word functions to be without spacing. +% \begin{macrocode} +FUNCTION {space.word} +{ " " swap$ * " " * } +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} + % Here are the language-specific definitions for explicit words. + % Each function has a name bbl.xxx where xxx is the English word. +% \end{macrocode} +% +% \begin{macrocode} +%<*!exlang> +% \end{macrocode} +% +% \begin{macro}{`bbl.xxx'} +% These are the default English words. There is no default language +% option: one of \texttt{english} or \texttt{babel} must be given. +% \begin{macrocode} +%<*!babel> + % The language selected here is ENGLISH +FUNCTION {bbl.and} +%<!varand|html>{ "and"} +%<varand&!html>{ "\protect\BIBand{}"} + +FUNCTION {bbl.etal} +{ "et~al." } + +FUNCTION {bbl.editors} +%<!ed>{ "editors" } +%<ed>{ "eds." } + +FUNCTION {bbl.editor} +%<!ed>{ "editor" } +%<ed>{ "ed." } + +FUNCTION {bbl.edby} +{ "edited by" } + +FUNCTION {bbl.edition} +%<!abr>{ "edition" } +%<abr&!ednx>{ "edn." } +%<abr&ednx>{ "ed." } + +FUNCTION {bbl.volume} +%<!abr>{ "volume" } +%<abr>{ "vol." } + +FUNCTION {bbl.of} +{ "of" } + +FUNCTION {bbl.number} +%<!abr>{ "number" } +%<abr>{ "no." } + +FUNCTION {bbl.nr} +{ "no." } + +FUNCTION {bbl.in} +{ "in" } + +FUNCTION {bbl.pages} +%<!pp&!ppx>{ "pages" } +%<pp>{ "pp." } +%<!pp&ppx>{ "" } + +FUNCTION {bbl.page} +%<!pp&!ppx>{ "page" } +%<pp>{ "p." } +%<!pp&ppx>{ "" } + +%<*revdata> +FUNCTION {bbl.eidpp} +{ "pages" } + +%</revdata> +FUNCTION {bbl.chapter} +%<!abr>{ "chapter" } +%<abr>{ "chap." } + +FUNCTION {bbl.techrep} +%<!abr>{ "Technical Report" } +%<abr>{ "Tech. Rep." } + +FUNCTION {bbl.mthesis} +{ "Master's thesis" } + +FUNCTION {bbl.phdthesis} +{ "Ph.D. thesis" } + +%<*!xedn> +FUNCTION {bbl.first} +%<!ord>{ "First" } +%<ord>{ "1st" } + +FUNCTION {bbl.second} +%<!ord>{ "Second" } +%<ord>{ "2nd" } + +FUNCTION {bbl.third} +%<!ord>{ "Third" } +%<ord>{ "3rd" } + +FUNCTION {bbl.fourth} +%<!ord>{ "Fourth" } +%<ord>{ "4th" } + +FUNCTION {bbl.fifth} +%<!ord>{ "Fifth" } +%<ord>{ "5th" } + +FUNCTION {bbl.st} +{ "st" } + +FUNCTION {bbl.nd} +{ "nd" } + +FUNCTION {bbl.rd} +{ "rd" } + +FUNCTION {bbl.th} +{ "th" } + +%</!xedn> +%<*!abr> +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +%</!abr> +%<*abr> +MACRO {jan} {"Jan."} + +MACRO {feb} {"Feb."} + +MACRO {mar} {"Mar."} + +MACRO {apr} {"Apr."} + +MACRO {may} {"May"} + +MACRO {jun} {"Jun."} + +MACRO {jul} {"Jul."} + +MACRO {aug} {"Aug."} + +MACRO {sep} {"Sep."} + +MACRO {oct} {"Oct."} + +MACRO {nov} {"Nov."} + +MACRO {dec} {"Dec."} + +%</abr> +%</!babel> +% \end{macrocode} +% +% Here are the definitions for \texttt{babel} option, i.e., explicit +% translations are not used, but rather only \LaTeX{} macros that must be +% defined in the file \texttt{babelbst.tex}. This could allow automatic +% language selection. +% \begin{macrocode} +%<*babel> + % The BABEL language selection is made here; definitions in babelbst.tex. +FUNCTION {bbl.and} +{ "\bbland{}"} + +FUNCTION {bbl.etal} +{ "\bbletal{}"} + +FUNCTION {bbl.editors} +%<!ed>{ "\bbleditors{}" } +%<ed>{ "\bbleds{}" } + +FUNCTION {bbl.editor} +%<!ed>{ "\bbleditor{}" } +%<ed>{ "\bbled{}" } + +FUNCTION {bbl.edby} +{ "\bbledby{}" } + +FUNCTION {bbl.edition} +%<!abr>{ "\bbledition{}" } +%<abr>{ "\bbledn{}" } + +FUNCTION {bbl.volume} +%<!abr>{ "\bblvolume{}" } +%<abr>{ "\bblvol{}" } + +FUNCTION {bbl.of} +{ "\bblof{}" } + +FUNCTION {bbl.number} +%<!abr>{ "\bblnumber{}" } +%<abr>{ "\bblno{}" } + +FUNCTION {bbl.nr} +{ "\bblno{}" } + +FUNCTION {bbl.in} +{ "\bblin{}" } + +FUNCTION {bbl.pages} +%<!pp&!ppx>{ "\bblpages{}" } +%<pp>{ "\bblpp{}" } +%<!pp&ppx>{ "" } + +FUNCTION {bbl.page} +%<!pp&!ppx>{ "\bblpage{}" } +%<pp>{ "\bblp{}" } +%<!pp&ppx>{ "" } + +FUNCTION {bbl.chapter} +%<!abr>{ "\bblchapter{}" } +%<abr>{ "\bblchap{}" } + +FUNCTION {bbl.techrep} +%<!abr>{ "\bbltechreport{}" } +%<abr>{ "\bbltechrep{}" } + +FUNCTION {bbl.mthesis} +{ "\bblmthesis{}" } + +FUNCTION {bbl.phdthesis} +{ "\bblphdthesis{}" } + +%<*revdata> +FUNCTION {bbl.eidpp} +{ "\bbleidpp{}" } + +%</revdata> +%<*!xedn> +FUNCTION {bbl.first} +%<!ord>{ "\bblfirst{}" } +%<ord>{ "\bblfirsto{}" } + +FUNCTION {bbl.second} +%<!ord>{ "\bblsecond{}" } +%<ord>{ "\bblsecondo{}" } + +FUNCTION {bbl.third} +%<!ord>{ "\bblthird{}" } +%<ord>{ "\bblthirdo{}" } + +FUNCTION {bbl.fourth} +%<!ord>{ "\bblfourth{}" } +%<ord>{ "\bblfourtho{}" } + +FUNCTION {bbl.fifth} +%<!ord>{ "\bblfifth{}" } +%<ord>{ "\bblfiftho{}" } + +FUNCTION {bbl.st} +{ "\bblst{}" } + +FUNCTION {bbl.nd} +{ "\bblnd{}" } + +FUNCTION {bbl.rd} +{ "\bblrd{}" } + +FUNCTION {bbl.th} +{ "\bblth{}" } + +%</!xedn> +MACRO {jan} {"\bbljan{}"} + +MACRO {feb} {"\bblfeb{}"} + +MACRO {mar} {"\bblmar{}"} + +MACRO {apr} {"\bblapr{}"} + +MACRO {may} {"\bblmay{}"} + +MACRO {jun} {"\bbljun{}"} + +MACRO {jul} {"\bbljul{}"} + +MACRO {aug} {"\bblaug{}"} + +MACRO {sep} {"\bblsep{}"} + +MACRO {oct} {"\bbloct{}"} + +MACRO {nov} {"\bblnov{}"} + +MACRO {dec} {"\bbldec{}"} + +%</babel> +% \end{macrocode} +% +% \begin{macro}{`eng.ord'} +% This function adds English endings for ordinals 1, 2, 3. However, if +% the second last digit is 1, then the ending is `th' for all last digits. +% So far, all other languages included do not have this problem, and it is +% sufficient to add the \textsl{th} equivalent. This might change with further +% languages. +% +% This function must be included with \texttt{babel} too, since that includes +% English. This means that the language definition files must also provide +% for |\bblst|, |\bblnd|, and |\bblrd|, setting them all equal to |\bblth|. +% +% \begin{macrocode} +%<*(english|!exlang)&!xedn> +FUNCTION {eng.ord} +{ duplicate$ "1" swap$ * + #-2 #1 substring$ "1" = + { bbl.th * } + { duplicate$ #-1 #1 substring$ + duplicate$ "1" = + { pop$ bbl.st * } + { duplicate$ "2" = + { pop$ bbl.nd * } + { "3" = + { bbl.rd * } + { bbl.th * } + if$ + } + if$ + } + if$ + } + if$ +} + +%</(english|!exlang)&!xedn> +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</!exlang> +% \end{macrocode} +% +% \begin{macrocode} +%</!tail> +% \end{macrocode} +% +% \begin{macrocode} +%<*!head> +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%<*!jabr> +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} +%</!jabr> +% \end{macrocode} +% +% Journal abbreviations have been revised from the original Patashnik +% ones with help of Conrado Badenas and the IUA recommendations. +% \begin{macrocode} +%<*jabr> +MACRO {acmcs} {"ACM Comput. Surv."} + +MACRO {acta} {"Acta Inf."} + +MACRO {cacm} {"Commun. ACM"} + +MACRO {ibmjrd} {"IBM J. Res. Dev."} + +MACRO {ibmsj} {"IBM Syst.~J."} + +MACRO {ieeese} {"IEEE Trans. Software Eng."} + +MACRO {ieeetc} {"IEEE Trans. Comput."} + +MACRO {ieeetcad} + {"IEEE Trans. Comput. Aid. Des."} + +MACRO {ipl} {"Inf. Process. Lett."} + +MACRO {jacm} {"J.~ACM"} + +MACRO {jcss} {"J.~Comput. Syst. Sci."} + +MACRO {scp} {"Sci. Comput. Program."} + +MACRO {sicomp} {"SIAM J. Comput."} + +MACRO {tocs} {"ACM Trans. Comput. Syst."} + +MACRO {tods} {"ACM Trans. Database Syst."} + +MACRO {tog} {"ACM Trans. Graphic."} + +MACRO {toms} {"ACM Trans. Math. Software"} + +MACRO {toois} {"ACM Trans. Office Inf. Syst."} + +MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."} + +MACRO {tcs} {"Theor. Comput. Sci."} + +%</jabr> +% \end{macrocode} +% +% \begin{macro}{`bibinfo.check'} +% Define functions that encapsulate the argument +% in a \TeX\ macro that allows for further processing when the +% bibliography is processed, or allows for a separate computer +% program to parse the |\bibitem| contents. +% +% The following table summarizes how each of the \btx{} entries +% is accessed for output; these are the points where +% the \texttt{format.bibinfo} or \texttt{bibinfo.check} functions +% are called. +% \subsubsection*{Trapped via \texttt{format.bibinfo}} +% \begin{description} +% \item[ \texttt{author} ]\texttt{format.names} +% \item[ \texttt{collaboration} ]\texttt{format.authors} +% \item[ \texttt{editor} ]\texttt{format.editors} (\texttt{book}, \texttt{inbook}, \texttt{proceedings}), \texttt{format.names.ed} (\texttt{format.in.ed.booktitle}) +% \item[ \texttt{eid} ]\texttt{format.journal.eid} (\texttt{format.vol.num.pages}, article) checks the output from \texttt{format.journal.pages} +% \item[ \texttt{isbn} ]\texttt{format.isbn} +% \item[ \texttt{issn} ]\texttt{format.issn} +% \item[ \texttt{journal} ]\texttt{format.article.crossref}, article +% \item[ \texttt{numpages} ]\texttt{format.journal.eid} +% \item[ \texttt{organization} ]\texttt{format.organization.address} (\texttt{inproceedings}, \texttt{proceedings}), \texttt{manual} +% \item[ \texttt{pages} ]\texttt{format.book}.pages (\texttt{book}, \texttt{booklet}), \texttt{format.pages} (\texttt{format.journal.pages}, \texttt{format.chapter.pages}, \texttt{article}, \texttt{inbook}, \texttt{incollection}, \texttt{inproceedings}) +% \item[ \texttt{publisher} ]\texttt{format.publisher.address} (like \texttt{output.check}, \texttt{inproceedings}, \texttt{proceedings}) +% \item[ \texttt{title} ]\texttt{format.title}, \texttt{format.btitle}, \texttt{misc}, \texttt{presort}, \texttt{bib.sort.order} +% \item[ \texttt{volume} ]\texttt{format.bvolume}, \texttt{format.vol.num.pages}, \texttt{format.book.crossref} +% \item[ \texttt{year} ]in optional argument of \texttt{\char`\\bibitem}, \texttt{format.date} (as part of date), \texttt{format.year}, \texttt{format.org.or.pub} +% \item[ \texttt{booktitle} ]\texttt{format.in.ed.booktitle} (\texttt{incollection}, \texttt{inproceedings}), \texttt{format.incoll.inproc.crossref} +% \item[ \texttt{howpublished} ]\texttt{booklet}, \texttt{misc} +% \item[ \texttt{edition} ]\texttt{convert.edition.format.edition} +% \item[ \texttt{institution} ]\texttt{techreport} +% \item[ \texttt{school} ]\texttt{mastersthesis}, \texttt{phdthesis} +% \item[ \texttt{address} ]\texttt{format.org.or.pub}, \texttt{booklet}, \texttt{manual}, \texttt{mastersthesis}, \texttt{phdthesis}, \texttt{techreport} +% \item[ \texttt{chapter} ]\texttt{format.chapter.pages} +% \item[ \texttt{number} ]\texttt{format.number.series}, \texttt{format.vol.num.pages}, \texttt{format.tr.number} +% \item[ \texttt{series} ]\texttt{format.bvolume}, \texttt{format.number.series}, \texttt{format.book.crossref} +% \item[ \texttt{type} ]\texttt{format.chapter.pages}, \texttt{format.thesis.type}, \texttt{format.tr.number} +% \item[ \texttt{month} ]\texttt{format.date} +% \item[ \texttt{note} ]\texttt{format.note} +% \item[ \texttt{annote} ]\texttt{fin.entry} +% \end{description} +% +% \subsubsection*{Encapsulated via \texttt{\char`\\url}} +% \begin{description} +% \item[ \texttt{url} ]\texttt{format.url} (\texttt{\char`\\harvardurl}, \texttt{\char`\\url}), \texttt{format.url} (\texttt{\char`\\url}), \texttt{format.note} (\texttt{\char`\\url}) +% \end{description} +% +% \subsubsection*{Encapsulated via \texttt{\char`\\doi}} +% \begin{description} +% \item[ \texttt{doi} ]\texttt{format.doi} (\texttt{\char`\\doi}) +% \end{description} +% +% \subsubsection*{Encapsulated via \texttt{\char`\\eprint}} +% \begin{description} +% \item[ \texttt{eprint} ]\texttt{format.eprint} +% \item[ \texttt{archive} ]\texttt{format.eprint} +% \end{description} +% +% \subsubsection*{Not encapsulated:} +% \begin{description} +% \item[ \texttt{key} ]cite key +% \item[ \texttt{language} ]operand of \texttt{\char`\\selectlanguage} +% \end{description} +% +% \subsubsection*{\texttt{bibinfo} tag, but not a \btx{} field} +% \begin{description} +% \item[ \texttt{date} ]\texttt{format.date} +% \end{description} +% +% Provides robust access to fields, checking against \texttt{missing\$} +% and \texttt{empty\$}. A \dtx{} option allows giving +% a warning if either is the case. +% +% If not, it encapsulates the argument in a \TeX\ macro |\bibinfo|. +% The encapsulation is enabled by the \texttt{bibinfo} \dtx{} option: +% if turned off, it simply pops the unneeded object. +% +% \texttt{field} \texttt{string} \texttt{->} \texttt{encapsulated-field} +% +% \texttt{empty} \texttt{string} \texttt{->} \texttt{empty} +% Side effect: warning. +% \begin{macrocode} +FUNCTION {bibinfo.check} +{ swap$ + duplicate$ missing$ + { +%<bibinfo.warning> swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ +%<!bibinfo.warning> pop$ pop$ + "" + } + { duplicate$ empty$ + { +%<bibinfo.warning> swap$ "empty " swap$ * " in " * cite$ * warning$ +%<!bibinfo.warning> swap$ pop$ + } + { swap$ +%<bibinfo> "\bibinfo{" swap$ * "}{" * swap$ * "}" * +%<!bibinfo> pop$ + } + if$ + } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`bibinfo.warn'} +% Replaces \texttt{output.check} +% with \texttt{bibinfo.warn} followed by \texttt{output}. +% +% \texttt{field} \texttt{string} \texttt{->} \texttt{encapsulated-field} +% +% \texttt{empty} \texttt{string} \texttt{->} \texttt{empty} +% +% Side effect: warning if the field is empty. +% Note: if the \dtx{} option \texttt{bibinfo} is not in effect, +% then no encapsulation is done. +% \begin{macrocode} +FUNCTION {bibinfo.warn} +{ swap$ + duplicate$ missing$ + { + swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ + "" + } + { duplicate$ empty$ + { + swap$ "empty " swap$ * " in " * cite$ * warning$ + } + { swap$ +%<bibinfo> "\bibinfo{" swap$ * "}{" * swap$ * "}" * +%<!bibinfo> pop$ + } + if$ + } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.eprint'} +% The access function for the \texttt{eprint} field. +% +% If the \texttt{bibinfo} \dtx{} option is selected, then this function +% encapsulates the argument in a \TeX\ macro |\eprint|. +% +% \texttt{->} \texttt{encapsulated-URL} +% \begin{macrocode} +%<*eprint> +FUNCTION {format.eprint} +{ eprint duplicate$ empty$ + 'skip$ + { "\eprint" + archive empty$ + 'skip$ + { "[" * archive * "]" * } + if$ + "{" * swap$ * "}" * + } + if$ +} +%</eprint> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`write.url'} +% This function taken over from \texttt{agsm.sty}, the main \texttt{harvard} +% bib style. For non-Harvard styles that want to add the URL on a new line +% after the reference, use this function too, but defined slightly +% differently. +% \begin{macrocode} +%<*(harnm|url-nl)&!revdata> +FUNCTION {write.url} +%<*!html> +{ +%<*url-doi&url> + doi empty$ + { url } + { "http://dx.doi.org/" doi * } + if$ +%</url-doi&url> +%<!url-doi|!url> url + duplicate$ empty$ + { pop$ } +%<harnm> { "\newline\harvardurl{" swap$ * "}" * write$ newline$ } +%<!harnm&url-nl> { "\newline\urlprefix\url{" swap$ * "}" * write$ newline$ } + if$ +} +%</!html> +%<*html> +{ +%<*url-doi&url> + doi empty$ + { url } + { "http://dx.doi.org/" doi * } + if$ +%</url-doi&url> +%<!url-doi|!url> url + duplicate$ empty$ + { pop$ } + { duplicate$ "<br><a href=" quote$ * swap$ * quote$ + * ">" * swap$ * "</a>" * write$ newline$ } + if$ +} +%</html> + +%</(harnm|url-nl)&!revdata> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.url'} +% This function is reworked for \texttt{\filename} to provide a +% cleaner URL for DOIs. The definition of \cmd{\urldoi} is written in +% the \texttt{.bbl} file by the function \texttt{begin.bib}. When the +% package \pkg{hyperref} is loaded, the \meta{doi} is a hyperlink to +% \texttt{https://doi.org/\meta{doi}}. +% \begin{macrocode} +%<*(url-blk&!harnm)|revdata> +FUNCTION {format.url} +{ +%<url-doi&url> doi empty$ +%<url-doi&url> { + url + duplicate$ empty$ + { pop$ "" } +%<!html> { "\urlprefix\url{" swap$ * "}" * } +%<html> { +%<html> duplicate$ "<a href=" quote$ * swap$ * quote$ * +%<html> ">" * swap$ * "</a>" * +%<html> } + if$ +%<*url-doi&url> + } + { + doi +%<!html> "\doiprefix\urldoi{" swap$ * "}" * +%<html> duplicate$ "doi:<a href=" quote$ * "https://doi.org/" * +%<html> swap$ * quote$ * ">" * swap$ * "</a>" * + } + if$ +%</url-doi&url> +} + +%</(url-blk&!harnm)|revdata> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`check.speaker'} +% 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$ = + { +%<pres-bf> bolden +%<pres-it&!pres-bf> emphasize +%<pres-sc&!pres-it&!pres-bf> scaps + } + 'skip$ + if$ + } + if$ +} + +%</pres-bf|pres-it|pres-sc> +% \end{macrocode} +% \end{macro} + +% \begin{macro}{`format.names'} +% The \texttt{harvard} package now (version 2.0.3, for \LaTeXe) uses +% |\harvardand| in place of the word \textsl{and} so that it can be changed +% at run time. This is allowed for with the option \texttt{harnm}, which +% need not be used only with the \texttt{har} option. +% This seems like a useless feature for \texttt{.bst} files made from +% this multilanguage source. However, it is included anyway, which means +% if \texttt{harnm} option selected, one must redefine |\harvardand| +% in the document for the language being used. +% +% The location of the junior part for reversed name is not obvious. Prior +% to version 4.0, I always had it attached to the last name, as +% Smith, Jr, John, put it probably is better as Smith, John, Jr. For the +% AGU \texttt{nm-rev1} I always did it this way, probably because I had a +% good AGU example to follow. Dilemma: do I just change them all or add an +% option to do it? The option will maintain consistency with older +% versions, but this could also be considered a bug fix rather than a new +% feature. Solution: use the option, since I have found other \texttt{.bst} +% files from Beebe and Harvard that put junior between surname and first +% name. +% +% |bibinfo| is a variable used to store a string telling it whether the +% names being formatted are authors or editors, since this function is called +% for both purposes. Every call to this function must push the string onto the stack +% just before the call. +% \begin{macrocode} +STRINGS { bibinfo} + +% \end{macrocode} +% +% Stack note: if the names argument is a non-nil list, this function returns +% one object on the stack, the formatted list of names. +% +% \texttt{names`string} \texttt{bibinfo`string} \texttt{->} \texttt{author-list`string} +% \begin{macrocode} +FUNCTION {format.names} +{ 'bibinfo := + duplicate$ empty$ 'skip$ { + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr +% \end{macrocode} +% Here is the author formatting when the names are not set in any special +% font, or when the entire name set in a single special font. +% \begin{macrocode} +%<*!(nmft&(fnm-rm|fnm-def))> +%<*!nm-rev1&!nm-revv1> +%<nm-init> "{f.~}{vv~}{ll}{, jj}" +%<*!nm-init> +%<nm-rev&!jnrlst> "{vv~}{ll}{, jj}{, f.}" +%<nm-rev&jnrlst> "{vv~}{ll}{, f.}{, jj}" +%<*!nm-rev> +%<nm-rv&!jnrlst> "{vv~}{ll}{ jj}{ f{~}}" +%<nm-rv&jnrlst> "{vv~}{ll}{ f{~}}{ jj}" +%<*!nm-rv> +%<nm-rvx&!jnrlst> "{vv~}{ll}{ jj}{ f{}}" +%<nm-rvx&jnrlst> "{vv~}{ll}{ f{}}{ jj}" +%<*!nm-rvx> +%<nm-rvcx&!jnrlst> "{vv~}{ll}{, jj}{, f{}}" +%<nm-rvcx&jnrlst> "{vv~}{ll}{, f{}}{, jj}" +%<*!nm-rvcx> +%<nm-rvv&!jnrlst> "{vv~}{ll}{ jj}{ f{.}.}" +%<nm-rvv&jnrlst> "{vv~}{ll}{ f{.}.}{ jj}" +%<*!nm-rvv> +%<nm-rvvc&!jnrlst> "{vv~}{ll}{, jj}{, f{.}.}" +%<nm-rvvc&jnrlst> "{vv~}{ll}{, f{.}.}{, jj}" +%<*!nm-rvvc> +%<nm-revf&!jnrlst> "{vv~}{ll}{, jj}{, ff}" +%<nm-revf&jnrlst> "{vv~}{ll}{, ff}{, jj}" +%<*!nm-revf> + "{ff~}{vv~}{ll}{, jj}" +%</!nm-revf> +%</!nm-rvvc> +%</!nm-rvv> +%</!nm-rvcx> +%</!nm-rvx> +%</!nm-rv> +%</!nm-rev> +%</!nm-init> +%</!nm-rev1&!nm-revv1> +%<*nm-rev1> + duplicate$ #1 > + { "{f.~}{vv~}{ll}{, jj}" } +%<!jnrlst> { "{vv~}{ll}{, jj}{, f.}" } +%<jnrlst> { "{vv~}{ll}{, f.}{, jj}" } + if$ +%</nm-rev1> +%<*!nm-rev1&nm-revv1> + duplicate$ #1 > + { "{ff~}{vv~}{ll}{, jj}" } +%<!jnrlst> { "{vv~}{ll}{, jj}{, ff}" } +%<jnrlst> { "{vv~}{ll}{, ff}{, jj}" } + if$ +%</!nm-rev1&nm-revv1> + format.name$ +%<nm-rv|nm-rvx> remove.dots +%<nmft&nmand-rm> bib.name.font +%</!(nmft&(fnm-rm|fnm-def))> +% \end{macrocode} +% Here is the author formatting when the first and last names are +% set in (possibly different) special fonts. +% +% The junior part is optionally between the reversed names, or after them. +% \begin{macrocode} +%<*nmft&(fnm-rm|fnm-def)> +%<*!nm-rev1&!nm-revv1> +%<*nm-init> + "{f.}" format.name$ duplicate$ empty$ 'skip$ + { tie.or.space.prefix bib.fname.font swap$ * } + if$ + s nameptr + "{vv~}{ll}" format.name$ bib.name.font * + s nameptr + "{jj}" format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ +%</nm-init> +%<*!nm-init> +%<*nm-rev> + "{vv~}{ll}" format.name$ bib.name.font + s nameptr +%<!jnrlst> "{jj, }{f.}" +%<jnrlst> "{f.}{, jj}" + format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ +%</nm-rev> +%<*!nm-rev> +%<*nm-rv> + "{vv~}{ll}" format.name$ bib.name.font + s nameptr +%<!jnrlst> "{jj }{f{~}}" +%<jnrlst> "{f{~}}{ jj}" + format.name$ duplicate$ empty$ 'skip$ + { remove.dots bib.fname.font " " swap$ * } + if$ +%</nm-rv> +%<*!nm-rv> +%<*nm-rvx> + "{vv~}{ll}" format.name$ bib.name.font + s nameptr +%<!jnrlst> "{jj }{f{}}" +%<jnrlst> "{f{}}{ jj}" + format.name$ duplicate$ empty$ 'skip$ + { remove.dots bib.fname.font " " swap$ * } + if$ +%</nm-rvx> +%<*!nm-rvx> +%<*nm-rvcx> + "{vv~}{ll}" format.name$ bib.name.font + s nameptr +%<!jnrlst> "{jj, }{f{}}" +%<jnrlst> "{f{}}{, jj}" + format.name$ duplicate$ empty$ 'skip$ + { remove.dots bib.fname.font ", " swap$ * } + if$ +%</nm-rvcx> +%<*!nm-rvcx> +%<*nm-rvv> + "{vv~}{ll}" format.name$ bib.name.font + s nameptr +%<!jnrlst> "{jj }{f{.}.}" +%<jnrlst> "{f{.}.}{ jj}" + format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font " " swap$ * } + if$ +%</nm-rvv> +%<*!nm-rvv> +%<*nm-rvvc> + "{vv~}{ll}" format.name$ bib.name.font + s nameptr +%<!jnrlst> "{jj, }{f{.}.}" +%<jnrlst> "{f{.}.}{, jj}" + format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ +%</nm-rvvc> +%<*!nm-rvvc> +%<*nm-revf> + "{vv~}{ll}" format.name$ bib.name.font + s nameptr +%<!jnrlst> "{jj, }{ff}" +%<jnrlst> "{ff}{, jj}" + format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ +%</nm-revf> +%<*!nm-revf> + "{ff}" format.name$ duplicate$ empty$ 'skip$ + { tie.or.space.prefix bib.fname.font swap$ * } + if$ + s nameptr + "{vv~}{ll}" format.name$ bib.name.font * + s nameptr + "{jj}" format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ +%</!nm-revf> +%</!nm-rvvc> +%</!nm-rvv> +%</!nm-rvcx> +%</!nm-rvx> +%</!nm-rv> +%</!nm-rev> +%</!nm-init> +%</!nm-rev1&!nm-revv1> +%<*nm-rev1> + nameptr #1 > + { "{f.}" format.name$ duplicate$ empty$ 'skip$ + { tie.or.space.prefix bib.fname.font swap$ * } + if$ + s nameptr + "{vv~}{ll}" format.name$ bib.name.font * + s nameptr + "{jj}" format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ + } + { "{vv~}{ll}" format.name$ bib.name.font + s nameptr +%<!jnrlst> "{jj, }{f.}" +%<jnrlst> "{f.}{, jj}" + format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ + } + if$ +%</nm-rev1> +%<*!nm-rev1&nm-revv1> + nameptr #1 > + { "{ff}" format.name$ duplicate$ empty$ 'skip$ + { tie.or.space.prefix bib.fname.font swap$ * } + if$ + s nameptr + "{vv~}{ll}" format.name$ bib.name.font * + s nameptr + "{jj}" format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ + } + { "{vv~}{ll}" format.name$ bib.name.font + s nameptr +%<!jnrlst> "{jj, }{ff}" +%<jnrlst> "{ff}{, jj}" + format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ + } + if$ +%</!nm-rev1&nm-revv1> + * +%</nmft&(fnm-rm|fnm-def)> + bibinfo bibinfo.check +%<*pres-bf|pres-it|pres-sc> + type$ "presentation" = + { check.speaker } + 'skip$ + if$ +%</pres-bf|pres-it|pres-sc> + 't := + nameptr #1 > + { +%<*nmlm> +%<m1> nameptr #1 +%<m2> nameptr #2 +%<m3> nameptr #3 +%<m4> nameptr #4 +%<m5> nameptr #5 +%<m6> nameptr #6 +%<m7> nameptr #7 +%<m8> nameptr #8 +%<m9> nameptr #9 +%<m0> nameptr #0 +%<m10> #10 + +%<m20> #20 + +%<m30> #30 + +%<m40> #40 + +%<m50> #50 + +%<m60> #60 + +%<m70> #70 + +%<m80> #80 + +%<m90> #90 + + #1 + = +%<x1> numnames #1 +%<x2> numnames #2 +%<x3> numnames #3 +%<x4> numnames #4 +%<x5> numnames #5 +%<x6> numnames #6 +%<x7> numnames #7 +%<x8> numnames #8 +%<x9> numnames #9 +%<x0> numnames #0 +%<x10> #10 + +%<x20> #20 + +%<x30> #30 + +%<x40> #40 + +%<x50> #50 + +%<x60> #60 + +%<x70> #70 + +%<x80> #80 + +%<x90> #90 + + > and + { "others" 't := + #1 'namesleft := } + 'skip$ + if$ +%</nmlm> + namesleft #1 > +%<!aunm-semi&!aunm-sl> { ", " * t * } +%<aunm-semi> { "; " * t * } +%<aunm-sl&!aunm-semi> { "/ " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ +%<(and-com|xand)&!aunm-semi&!aunm-sl> "," * +%<(and-com|xand)&aunm-semi> ";" * +%<(and-com|xand)&aunm-sl&!aunm-semi> "/" * +%<*!and-xcom&!and-com&!xand> + numnames #2 > +%<etal-xc> t "others" = not and +%<!aunm-semi&!aunm-sl> { "," * } +%<aunm-semi> { ";" * } +%<aunm-sl&!aunm-semi> { "/" * } + 'skip$ + if$ +%</!and-xcom&!and-com&!xand> + t "others" = + { +%<nmft&!nmand-rm&!(fnm-rm|fnm-def)&(etal-it|etal-rm)> bib.name.font +%<*!etal-it> +%<nmft&(nmand-rm|(fnm-rm|fnm-def))&!etal-rm> " " * bbl.etal bib.name.font * +%<!(nmft&(nmand-rm|(fnm-rm|fnm-def)))|etal-rm> " " * bbl.etal * +%</!etal-it> +%<etal-it> " " * bbl.etal emphasize * +%<nmft&!nmand-rm&!(fnm-rm|fnm-def)&!(etal-it|etal-rm)> bib.name.font + } +%<*!xand> + { +%<*!harnm> +%<!amper> bbl.and +%<amper> "\&" +%</!harnm> +%<harnm> "\harvardand{}" +%<nmft&!nmand-rm&(fnm-rm|fnm-def)> bib.name.font + space.word * t * + } +%</!xand> +%<xand> { " " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +%<*nmft&!nmand-rm&!(fnm-rm|fnm-def)> + t "others" = + 'skip$ + { bib.name.font } + if$ +%</nmft&!nmand-rm&!(fnm-rm|fnm-def)> + } if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.names.ed'} +% When editors are used in place of authors to identify the work, the +% names are always formatted just like authors'. However, in collections, +% where ``edited by'' or ``\emph{names} (editors)'' are given, it is +% normal not to reverse the names, even if the authors' are. The option +% \texttt{ed-rev} sees to it that editor names are always formatted exactly +% like those of authors, being reversed if necessary. +% +% The option \texttt{ed-au} is identical to \texttt{ed-rev}, but is more +% logical. It means editors (in incollections) are formatted exactly like +% authors, with all the font, reversing, and number limitations. This is +% selected automatically with \texttt{nm-init} and \texttt{nm-} default to save +% programming memory. +% +% The option \texttt{nm-revf} in this case acts the same as the default +% when no \texttt{nm-} option given: full names with surname last. Therefore +% it is not necessary to test for it at all, since it, like the default, +% has the lowest priority: any other \texttt{nm-} option clobbers it. +% +% The options \texttt{aunm-semi} and \texttt{aunm-sl} will put a semi-colon or +% slash between editor names, just as for authors, when \texttt{ed-rev} not +% selected, in keeping with the idea that in this case both authors and editors +% are to be formatted the same. +% +% This function either dispatches to \texttt{format.names} or executes code +% which is similar. In the latter case, names are always presented first +% followed by surname (``last name''); name limit processing (\texttt{nmlm}) is not executed; +% and endgame processing differs in being qualified by \texttt{nmfted}. +% +% Stack note: if the names (second) argument is a non-nil list, this function returns +% with one object on the stack, the formatted list of names. +% +% \texttt{names`string} \texttt{bibinfo`string} \texttt{->} \texttt{author-list`string} +% \begin{macrocode} +FUNCTION {format.names.ed} +{ +%<ed-rev|ed-au> format.names +%<*!ed-rev&!ed-au> + 'bibinfo := + duplicate$ empty$ 'skip$ { + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr +% \end{macrocode} +% Editor name is handled as a single object, with no separation of first and last name. +% \begin{macrocode} +%<*!(nmft&nmfted&(fnm-rm|fnm-def))> +%<nm-init|nm-rev|nm-rev1> "{f.~}{vv~}{ll}{, jj}" +%<*!nm-init&!nm-rev&!nm-rev1> +%<nm-revv1> "{ff~}{vv~}{ll}{, jj}" +%<*!nm-revv1> +%<nm-rv> "{f{~}~}{vv~}{ll}{ jj}" +%<*!nm-rv> +%<nm-rvx> "{f{}~}{vv~}{ll}{ jj}" +%<*!nm-rvx> +%<nm-rvcx> "{f{}~}{vv~}{ll}{ jj}" +%<*!nm-rvcx> +%<nm-rvv|nm-rvvc> "{f{.}.~}{vv~}{ll}{ jj}" +%<*!nm-rvv&!nm-rvvc> + "{ff~}{vv~}{ll}{, jj}" +%</!nm-rvv&!nm-rvvc> +%</!nm-rvcx> +%</!nm-rvx> +%</!nm-rv> +%</!nm-revv1> +%</!nm-init&!nm-rev&!nm-rev1> + format.name$ +%<nm-rv|nm-rvx|nm-rvcx> remove.dots +%<nmft&nmfted&nmand-rm> bib.name.font +%</!(nmft&nmfted&(fnm-rm|fnm-def))> +% \end{macrocode} +% Editor first and last name handled separately. +% \begin{macrocode} +%<*(nmft&nmfted&(fnm-rm|fnm-def))> +%<*nm-init|nm-rev|nm-rev1> + "{f.}" format.name$ duplicate$ empty$ 'skip$ + { tie.or.space.prefix bib.fname.font swap$ * } + if$ + s nameptr + "{vv~}{ll}" format.name$ bib.name.font * + s nameptr + "{jj}" format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ +%</nm-init|nm-rev|nm-rev1> +%<*!nm-init&!nm-rev&!nm-rev1> +%<*nm-revv1> + "{ff}" format.name$ duplicate$ empty$ 'skip$ + { tie.or.space.prefix bib.fname.font swap$ * } + if$ + s nameptr + "{vv~}{ll}" format.name$ bib.name.font * + s nameptr + "{jj}" format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ +%</nm-revv1> +%<*!nm-revv1> +%<*nm-rv> + "{f{~}}" format.name$ duplicate$ empty$ 'skip$ + { tie.or.space.prefix bib.fname.font swap$ * } + if$ + s nameptr + "{vv~}{ll}" format.name$ bib.name.font * + s nameptr + "{jj}" format.name$ duplicate$ empty$ 'skip$ + { remove.dots bib.fname.font " " swap$ * } + if$ +%</nm-rv> +%<*!nm-rv> +%<*nm-rvx|nm-rvcx> + "{f{}}" format.name$ duplicate$ empty$ 'skip$ + { tie.or.space.prefix bib.fname.font swap$ * } + if$ + s nameptr + "{vv~}{ll}" format.name$ bib.name.font * + s nameptr + "{jj}" format.name$ duplicate$ empty$ 'skip$ + { remove.dots bib.fname.font " " swap$ * } + if$ +%</nm-rvx|nm-rvcx> +%<*!nm-rvx&!nm-rvcx> +%<*nm-rvv|nm-rvvc> + "{f{.}.}" format.name$ duplicate$ empty$ 'skip$ + { tie.or.space.prefix bib.fname.font swap$ * } + if$ + s nameptr + "{vv~}{ll}" format.name$ bib.name.font * + s nameptr + "{jj}" format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font " " swap$ * } + if$ +%</nm-rvv|nm-rvvc> +%<*!nm-rvv&!nm-rvvc> + "{ff}" format.name$ duplicate$ empty$ 'skip$ + { tie.or.space.prefix bib.fname.font swap$ * } + if$ + s nameptr + "{vv~}{ll}" format.name$ bib.name.font * + s nameptr + "{jj}" format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ +%</!nm-rvv&!nm-rvvc> +%</!nm-rvx&!nm-rvcx> +%</!nm-rv> +%</!nm-revv1> +%</!nm-init&!nm-rev&!nm-rev1> + * +%</(nmft&nmfted&(fnm-rm|fnm-def))> + bibinfo bibinfo.check + 't := + nameptr #1 > + { + namesleft #1 > +%<!aunm-semi&!aunm-sl> { ", " * t * } +%<aunm-semi> { "; " * t * } +%<aunm-sl&!aunm-semi> { "/ " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ +%<(and-com-ed|xand)&!aunm-semi&!aunm-sl> "," * +%<(and-com-ed|xand)&aunm-semi> ";" * +%<(and-com-ed|xand)&aunm-sl&!aunm-semi> "/" * +%<*!and-xcom&!and-com-ed&!xand> + numnames #2 > +%<etal-xc> t "others" = not and +%<!aunm-semi&!aunm-sl> { "," * } +%<aunm-semi> { ";" * } +%<aunm-sl&!aunm-semi> { "/" * } + 'skip$ + if$ +%</!and-xcom&!and-com-ed&!xand> + t "others" = + { + +%<nmft&nmfted&!nmand-rm&!(fnm-rm|fnm-def)&(etal-it|etal-rm)> bib.name.font +%<*!etal-it> +%<nmft&nmfted&(nmand-rm|(fnm-rm|fnm-def))&!etal-rm> " " * bbl.etal bib.name.font * +%<!(nmft&nmfted&(nmand-rm|(fnm-rm|fnm-def)))|etal-rm> " " * bbl.etal * +%</!etal-it> +%<etal-it> " " * bbl.etal emphasize * +%<nmft&nmfted&!nmand-rm&!(fnm-rm|fnm-def)&!(etal-it|etal-rm)> bib.name.font + } +%<*!xand> + { +%<*!harnm> +%<!amper> bbl.and +%<amper> "\&" +%</!harnm> +%<harnm> "\harvardand{}" +%<nmft&nmfted&!nmand-rm&(fnm-rm|fnm-def)> bib.name.font + space.word * t * + } +%</!xand> +%<xand> { " " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +%<*nmft&nmfted&!nmand-rm&!(fnm-rm|fnm-def)> + t "others" = + 'skip$ + { bib.name.font } + if$ +%</nmft&nmfted&!nmand-rm&!(fnm-rm|fnm-def)> + } if$ +%</!ed-rev&!ed-au> +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.key'} +% \begin{macrocode} +%<*ay> +FUNCTION {format.key} +{ empty$ + { key field.or.null } + { "" } + if$ +} + +%</ay> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.authors'} +% +% \begin{macrocode} +FUNCTION {format.authors} +{ author "author" format.names +%<*revdata> + duplicate$ empty$ 'skip$ + { collaboration "collaboration" bibinfo.check + duplicate$ empty$ 'skip$ + { " (" swap$ * ")" * } + if$ + * + } + if$ +%</revdata> +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`get.bbl.editor'} +% Use this function universally when accessing the ``editor'' text entity. +% \begin{macrocode} +FUNCTION {get.bbl.editor} +{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.editors'} +% The option \texttt{edpar} puts the word `editor' in parentheses. +% In \texttt{genbst.mbs}, this occurred automatically with the option +% \texttt{ed}, to abbreviate `editor' to `ed'. In \texttt{babel.mbs}, +% this was not the case, because of complications with the word functions. +% Now this possibility is added as a special option, which means there is +% some inconsistency with older \texttt{.dbj} files that called \texttt{ed}: +% the abbreviated `ed' is not put in parentheses unless \texttt{edpar} is +% also called. +% +% Note that the code here is very similar to code in \texttt{format.in.ed.booktitle}; +% the two should be kept coordinated. +% \begin{macrocode} +FUNCTION {format.editors} +{ editor "editor" format.names duplicate$ empty$ 'skip$ + { +%<!edpar&!edparxc> "," * + " " * + get.bbl.editor +%<bkedcap> capitalize +%<edpar|edparc|edparxc> "(" swap$ * ")" * + * + } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.in.editors'} +% See the note about the option \texttt{edpar} above. +% +% \end{macro} +% +% \begin{macro}{`format.book.pages'} +% \begin{macrocode} +%<*pg-bk> +FUNCTION {format.book.pages} +{ pages "pages" bibinfo.check + duplicate$ empty$ 'skip$ + { " " * bbl.pages * } + if$ +} +%</pg-bk> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.isbn'} +% \begin{macrocode} +%<*isbn> +FUNCTION {format.isbn} +{ isbn "isbn" bibinfo.check + duplicate$ empty$ 'skip$ + { +%<!blk-com&!blk-tit&!blk-tita> new.block + "ISBN " swap$ * + } + if$ +} + +%</isbn> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.issn'} +% \begin{macrocode} +%<*issn> +FUNCTION {format.issn} +{ issn "issn" bibinfo.check + duplicate$ empty$ 'skip$ + { +%<!blk-com&!blk-tit&!blk-tita> new.block + "ISSN " swap$ * + } + if$ +} + +%</issn> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.doi'} +% DOIs like URLs are encapsulated by their own commands, so need no \texttt{bibinfo.check}. +% \begin{macrocode} +%<*doi|(url-doi&!url)> +FUNCTION {format.doi} +{ doi empty$ + { "" } + { +%<!blk-com&!blk-tit&!blk-tita> new.block +%<!html> "\doi{" doi * "}" * +%<html> "doi:" doi * + } + if$ +} +%</doi|(url-doi&!url)> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`select.language'} +% The \texttt{language} field code has been provided by Bernd Feige, of the +% University of Freiburg. +% \begin{macrocode} +%<*lang> +FUNCTION {select.language} +{ duplicate$ empty$ + 'pop$ + { language empty$ + 'skip$ + { "{\selectlanguage{" language * "}" * swap$ * "}" * } + if$ + } + if$ +} + +%</lang> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.note'} +% Notes should be entered as though they were a sentence on their own. +% However, if they appear mid-sentence rather than after a block or sentence, +% the first letter must be lowercase. Thus if a note begins with a proper +% noun, it must be in braces. To avoid a warning about unmatched braces +% with the \texttt{change.case\$} function, check first if the leading +% character is an opening brace. +% +% With options \texttt{url,url-nt}, the URL text is treated as a note, and +% added here. It is output directly, not prepended to the note text. This +% means, if the note is to be a new sentence, the URL text starts that +% sentence, and the regular note is added to that sentence, comma between. +% +% \begin{macrocode} +FUNCTION {format.note} +{ +%<*url-nt&!revdata> + url empty$ + 'skip$ +%<!html> { "\urlprefix\url{" url * "}" * output } +%<html> { "<a href=" quote$ * url * quote$ +%<html> * ">" * url * "</a>" * output } + if$ +%</url-nt&!revdata> + note empty$ + { "" } + { note #1 #1 substring$ + duplicate$ "{" = + 'skip$ + { output.state mid.sentence = + { "l" } + { "u" } + if$ + change.case$ + } + if$ + note #2 global.max$ substring$ * "note" bibinfo.check + } + if$ +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.title'} +% For a quoted title, any punctuation in the title goes inside the quote. +% Otherwise, the comma or period following the title also goes inside. +% Exception is with \texttt{qx} option, in which case the comma goes +% outside, even when punctuation present; for period (\texttt{!blk-com}) +% is added outside only when punctuation is absent. +% \begin{macrocode} +FUNCTION {format.title} +{ title +%<*!atit-u> + duplicate$ empty$ 'skip$ + { "t" change.case$ } + if$ +%</!atit-u> + "title" bibinfo.check +%<*tit-it|tit-qq|lang> + duplicate$ empty$ 'skip$ + { +%<tit-it> emphasize +%<*!tit-it&tit-qq> + "\enquote{" swap$ * +%<*!qx> +%<*blk-com> + non.stop +%<!com-semi&!com-blank> { ",} " * } +%<com-semi> { ";} " * } +%<!com-semi&com-blank> { "} " * } + { "} " * } + if$ +%</blk-com> +%<!blk-com> add.period$ "}" * +%</!qx> +%<*qx> +%<*blk-com> +%<!com-semi&!com-blank> "}, " * +%<com-semi> "}; " * +%<!com-semi&com-blank> "} " * +%</blk-com> +%<!blk-com> "}" * +%</qx> +%</!tit-it&tit-qq> +%<lang> select.language + } + if$ +%</tit-it|tit-qq|lang> +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`end.quote.title'} +% For a quoted title, the punctuation appears in the quotes. For commas +% between block, this means the inter-block punctuation is already present, +% so it must be suppressed after every \texttt{format.title output}. This +% is done by setting the \texttt{output.state} to \texttt{before.all}, but +% only if there really was a title. Call this macro every time after +% titles are output. +% \begin{macrocode} +%<*blk-com&tit-qq> +FUNCTION {end.quote.title} +{ title empty$ + 'skip$ + { before.all 'output.state := } + if$ +} +%</blk-com&tit-qq> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`end.quote.btitle'} +% Similar to |end.quote.title| except that it is only applied if titles of +% proceedings and collections are quoted, and if +% neither \texttt{edby}, \texttt{edby-par}, nor \texttt{edby-par} are selected +% (this is the default case in the relevant menu of the \texttt{makebst.tex} run). +% These options add text after the booktitle, +% so additional punctuation need not be suppressed. Unless there is no editor! +% +% Note: this function is called after the result of \texttt{format.in.ed.booktitle} +% has been output, and attempts to predict what that output had been. +% Would it not be better to call this function while that result is still +% on the stack? +% \begin{macrocode} +%<*bt-qq> +FUNCTION {end.quote.btitle} +{ booktitle empty$ + 'skip$ +%<!edby&!edby-par&!edby-parc> { before.all 'output.state := } +%<*edby|edby-par|edby-parc> + { editor empty$ + { before.all 'output.state := } + 'skip$ + if$ + } +%</edby|edby-par|edby-parc> + if$ +} +%</bt-qq> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`make.full.names'} +% In versions before 2.2, there were two functions \texttt{calc.long.label} +% and \texttt{format.long.lab.names} that made up the string +% \texttt{long.label} for each entry. This contains the full author list. +% However, there was a bug in the one routine, entered by mistake when an +% earlier bug was removed, and more seriously, the string +% \texttt{long.label} was limited to \texttt{entry.max\$} characters, 100 on +% my system. Author lists were truncated. Thus, \texttt{make.full.names} +% is used instead to enter the full list of names directly in the +% \texttt{output.bibitem} function, without an intermediate string. This +% involves changing the order of some function definitions, especially +% \texttt{output.bibitem} must come later. +% \begin{macrocode} +%<*har|cay|nat> +FUNCTION {format.full.names} +{'s := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr +%<!jnrlab> "{vv~}{ll}" format.name$ +%<*jnrlab> +%<!nm-rv&!nm-rvv&!nm-rvx&!nm-rvcx> "{vv~}{ll}{, jj}" format.name$ +%<nm-rv|nm-rvv|nm-rvx|nm-rvcx> "{vv~}{ll}{ jj}" format.name$ +%</jnrlab> +%<lab&and-rm> cite.name.font + 't := + nameptr #1 > + { +%<*nmlm> +%<m1> nameptr #1 +%<m2> nameptr #2 +%<m3> nameptr #3 +%<m4> nameptr #4 +%<m5> nameptr #5 +%<m6> nameptr #6 +%<m7> nameptr #7 +%<m8> nameptr #8 +%<m9> nameptr #9 +%<m0> nameptr #0 +%<m10> #10 + +%<m20> #20 + +%<m30> #30 + +%<m40> #40 + +%<m50> #50 + +%<m60> #60 + +%<m70> #70 + +%<m80> #80 + +%<m90> #90 + + #1 + = +%<x1> numnames #1 +%<x2> numnames #2 +%<x3> numnames #3 +%<x4> numnames #4 +%<x5> numnames #5 +%<x6> numnames #6 +%<x7> numnames #7 +%<x8> numnames #8 +%<x9> numnames #9 +%<x0> numnames #0 +%<x10> #10 + +%<x20> #20 + +%<x30> #30 + +%<x40> #40 + +%<x50> #50 + +%<x60> #60 + +%<x70> #70 + +%<x80> #80 + +%<x90> #90 + + > and + { "others" 't := + #1 'namesleft := } + 'skip$ + if$ +%</nmlm> + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { +%<lab&!and-rm&(etal-it|etal-rm)> cite.name.font +%<*!etal-it> +%<lab&and-rm&!etal-rm> " " * bbl.etal cite.name.font * +%<!lab|!and-rm|etal-rm> " " * bbl.etal * +%</!etal-it> +%<etal-it> " " * bbl.etal emphasize * +%<lab&!and-rm&!(etal-it|etal-rm)> cite.name.font + } + { +%<*!harnm> +%<*!and-xcom> + numnames #2 > + { "," * } + 'skip$ + if$ +%</!and-xcom> +%<!amper> bbl.and +%<amper> "\&" +%</!harnm> +%<harnm> "\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$ +%</lab&!and-rm> +} + +FUNCTION {author.editor.key.full} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.full.names } + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {author.key.full} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {editor.key.full} +{ editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.full.names } + if$ +} + +FUNCTION {make.full.names} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.full + { type$ "proceedings" = + 'editor.key.full + 'author.key.full + if$ + } + if$ +} + +%</har|cay|nat> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`output.bibitem'} +% A user has pointed out to me that if the label argument in square brackets +% are put into braces (within the squares) it is then resistent to any +% problems if square braces should appear within the label. Do this, but +% only for the \texttt{nat} option. +% \begin{macrocode} +FUNCTION {output.bibitem} +{ newline$ +%<*!html> +%<*ay> +%<!har&!nat> "\bibitem[" write$ +%<!har&nat> "\bibitem[{" write$ +%<har> "\harvarditem" write$ +%<nmd> "\protect\citeauthoryear{" write$ +%<ast> "\protect\astroncite{" write$ +%<cay> "\protect\citeauthoryear{" make.full.names * "}{" * write$ +%<cn> "\protect\citename{" write$ +%<!har> label write$ +%<har> make.full.names duplicate$ label = +%<har> 'skip$ +%<har> { "[" label * "]" * write$ } +%<har> if$ +%<har> "{" swap$ * "}{" * write$ +%<har> year duplicate$ empty$ +%<cn> ", }" year duplicate$ empty$ +%<cay|nmd|ast> "}{" year duplicate$ empty$ +%<(har|cn|cay|nmd|ast)&blkyear> { pop$ "" } +%<(har|cn|cay|nmd|ast)&!blkyear> { pop$ "????" } +%<har|cn|cay|nmd|ast> 'skip$ +%<har|cn|cay|nmd|ast> if$ +%<har> extra.label * "}{" * write$ +%<cn> * extra.label * "]{" * write$ +%<cay|nmd|ast> * extra.label * "}]{" * write$ +%<alk> "]{" write$ +%<!(har|cay|nmd|ast|alk|cn|nat)> ")]{" write$ +%<nat> ")" make.full.names duplicate$ short.list = +%<nat> { pop$ } +%<nat> { * } +%<nat> if$ +%<nat> "}]{" * write$ +%</ay> +%<!ay&!(cite|alph)> "\bibitem{" write$ +%<!ay&(cite|alph)> "\bibitem[" label * "]{" * write$ + cite$ write$ + "}" write$ + newline$ + "" +%</!html> +%<*html> +%<*htdes> + "<dt><strong><tt>" write$ + cite$ write$ + "</tt></strong></dt>" write$ newline$ + "<dd>" +%</htdes> +%<htlist&!htdes> "<li>" +%<!htlist&!htdes> "<p>" +%</html> + before.all 'output.state := +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`if.digit'} +% Add \texttt{if.digit} and \texttt{n.separate} to convert large page numbers +% to a separated number. +% \begin{macrocode} +%<*pgsep-c|pgsep-s|pgsep-p> +FUNCTION {if.digit} +{ duplicate$ "0" = + swap$ duplicate$ "1" = + swap$ duplicate$ "2" = + swap$ duplicate$ "3" = + swap$ duplicate$ "4" = + swap$ duplicate$ "5" = + swap$ duplicate$ "6" = + swap$ duplicate$ "7" = + swap$ duplicate$ "8" = + swap$ "9" = or or or or or or or or or +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`n.separate'} +% \texttt{pgsep-s}, \texttt{pgsep-p} +% Large page numbers are to be separated in threes, with thin space, comma +% or period. The number must be 5 digits before the separation occurs. +% No provision is made for numbers of 7 or more digits. +% \begin{macrocode} +FUNCTION {n.separate} +{ 't := + "" + #0 'numnames := + { t empty$ not } + { t #-1 #1 substring$ if.digit + { numnames #1 + 'numnames := } + { #0 'numnames := } + if$ + t #-1 #1 substring$ swap$ * + t #-2 global.max$ substring$ 't := + numnames #5 = + { duplicate$ #1 #2 substring$ swap$ + #3 global.max$ substring$ +%<pgsep-c> "," swap$ * * +%<pgsep-p> "." swap$ * * +%<pgsep-s&!html> "\," swap$ * * +%<pgsep-s&html> " " swap$ * * + } + 'skip$ + if$ + } + while$ +} +%</pgsep-c|pgsep-s|pgsep-p> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`n.dashify'} +% \begin{macrocode} +FUNCTION {n.dashify} +{ +%<pgsep-c|pgsep-s|pgsep-p> n.separate + 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`word.in'} +% The function \texttt{word.in} prints the word \textsl{in} for references +% that are +% contained in a larger work, or in conference proceedings. One may have a +% colon after the word with the option \texttt{in-col}. If blocks of text are +% to be separated with commas (option \texttt{blk-com}) then the word remains +% in lower case, as it is defined in \texttt{bbl.in}; but if blocks act as +% sentences, then it must be capitalized. +% \begin{macrocode} +FUNCTION {word.in} +%<in-x>{ "" } +%<*!in-x> +%<blk-com|blk-tita>{ bbl.in +%<!blk-com&!blk-tita>{ bbl.in capitalize +%<in-col> ":" * +%<in-it> emphasize + " " * } +%</!in-x> + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.date'} +% The new \texttt{harvard.sty} allows variable brackets around the date +% in the reference list. It uses |\harvardyearleft| and |\harvardyearright| +% in the \texttt{.bst} files. Allow this with the option \texttt{harnm}, +% which could actually be used without the \texttt{har} option. Note that +% this overrides the other year formatting options, except for the preceding punctuation. +% \begin{macrocode} +%<*ay> +FUNCTION {format.date} +{ year "year" bibinfo.check duplicate$ empty$ + { +%<*!blkyear> + "empty year in " cite$ * "; set to ????" * warning$ + pop$ "????" +%</!blkyear> + } + 'skip$ + if$ +%<*aymth> + month "month" bibinfo.check duplicate$ empty$ + 'skip$ + { +%<dtrev> swap$ + " " * swap$ + } + if$ + * +%<mth-bare> remove.dots +%</aymth> +%<dtbf> bolden + extra.label * +%<*!harnm> +%<*yr-par|yr-brk|yr-col|yr-blk|yr-com|yr-per> + before.all 'output.state := +%<yr-par> " (" swap$ * ")" * +%<!yr-par&yr-brk> " [" swap$ * "]" * +%<!yr-par&!yr-brk&yr-col> ": " swap$ * +%<!yr-par&!yr-brk&!yr-col&yr-com> ", " swap$ * +%<!yr-par&!yr-brk&!yr-col&!yr-com&yr-per> after.sentence 'output.state := +%<!yr-par&!yr-brk&!yr-col&!yr-com&!yr-per&yr-blk> " " swap$ * +%</yr-par|yr-brk|yr-col|yr-blk|yr-com|yr-per> +%</!harnm> +%<*harnm> + before.all 'output.state := + " \harvardyearleft " swap$ * "\harvardyearright{}" * +%<yr-col> ":" swap$ * +%<!yr-col&yr-com> "," swap$ * +%<!yr-col&!yr-com&yr-per> after.sentence 'output.state := +%<!yr-col&!yr-com&!yr-per&yr-blk> " " swap$ * +%</harnm> +} +%</ay> +%<*!ay> +FUNCTION {format.date} +{ +%<!xmth> month "month" bibinfo.check +%<xmth> "" + duplicate$ empty$ + year "year" bibinfo.check duplicate$ empty$ + { swap$ 'skip$ + { "there's a month but no year in " cite$ * warning$ } + if$ + * + } + { swap$ 'skip$ + { +%<showstack> month year +%<!dtrev> swap$ + " " * swap$ + } + if$ + * +%<mth-bare> remove.dots + } + if$ +%<dtbf> bolden +%<*yr-par|yr-brk|yr-col|yr-com|yr-per|yr-blk> + duplicate$ empty$ + 'skip$ + { + before.all 'output.state := +%<yr-par> " (" swap$ * ")" * +%<!yr-par&yr-brk> " [" swap$ * "]" * +%<!yr-par&!yr-brk&yr-col> ": " swap$ * +%<!yr-par&!yr-brk&!yr-col&yr-com> ", " swap$ * +%<!yr-par&!yr-brk&!yr-col&!yr-com&yr-per> after.sentence 'output.state := +%<!yr-par&!yr-brk&!yr-col&!yr-com&!yr-per&yr-blk> " " swap$ * + } + if$ +%</yr-par|yr-brk|yr-col|yr-com|yr-per|yr-blk> +} +%</!ay> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.year'} +% For the options that put the year into the journal specifications, use a +% special formatter separate from the regular date formatter. +% The year is always in parentheses (except for appended to journal name). +% \begin{macrocode} +%<*jdt-p|jdt-pc|jdt-v|jdt-vs> +FUNCTION{format.year} +{ year "year" bibinfo.check duplicate$ empty$ + { "empty year in " cite$ * +%<ay&!blkyear> "; set to ????" * + warning$ +%<ay&!blkyear> pop$ "????" + } + { +%<!ay&jdt-vs> " (" swap$ * ")" * +%<!ay&!jdt-vs> "(" swap$ * ")" * + } + if$ +%<*ay> + extra.label * +%<jdt-vs> " (" swap$ * ")" * +%<!jdt-vs> "(" swap$ * ")" * +%</ay> +} +%</jdt-p|jdt-pc|jdt-v|jdt-vs> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.btitle'} +% \begin{macrocode} +FUNCTION {format.btitle} +{ title "title" bibinfo.check + duplicate$ empty$ 'skip$ + { +%<!btit-rm> emphasize +%<lang> select.language + } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`either.or.check'} +% \begin{macrocode} +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.bvolume'} +% \begin{macrocode} +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { bbl.volume volume tie.or.space.prefix + "volume" bibinfo.check * * + series "series" bibinfo.check + duplicate$ empty$ 'pop$ +%<*!ser-vol> + { swap$ bbl.of space.word * swap$ + emphasize * } +%</!ser-vol> +%<ser-vol> { emphasize ", " * swap$ * } + if$ + "volume and number" number either.or.check + } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.number.series'} +% \begin{macrocode} +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } +%<*num-xser> + { series empty$ + { number "number" bibinfo.check } + { output.state mid.sentence = + { bbl.number } + { bbl.number capitalize } + if$ + number tie.or.space.prefix "number" bibinfo.check * * + bbl.in space.word * + series "series" bibinfo.check * + } + if$ + } +%</num-xser> +%<*!num-xser> + { output.state mid.sentence = + { bbl.number } + { bbl.number capitalize } + if$ + number tie.or.space.prefix "number" bibinfo.check * * + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { bbl.in space.word * + series "series" bibinfo.check * + } + if$ + } +%</!num-xser> + if$ + } + { "" } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`is.num'} +% This function takes the single-character string on the stack and returns +% 1 if it is a digit, else 0. +% \begin{macrocode} +%<*!xedn> +FUNCTION {is.num} +{ chr.to.int$ + duplicate$ "0" chr.to.int$ < not + swap$ "9" chr.to.int$ > not and +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`extract.num'} +% This function tests the string on the stack to see if it begins with a +% number. If so, that number is left on the stack; if the string contains +% no numbers at the start, it is left unchanged. The idea is to convert +% \textsl{1st} to \textsl{1} and leave \textsl{first} as is. +% This is used by \code{convert.edition}. +% \begin{macrocode} +FUNCTION {extract.num} +{ duplicate$ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ + t #2 global.max$ substring$ 't := + duplicate$ is.num + { s swap$ * 's := } + { pop$ "" 't := } + if$ + } + while$ + s empty$ + 'skip$ + { pop$ s } + if$ +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`convert.edition'} +% The function \texttt{convert.edition} takes the text in the field +% \texttt{edition} and changes it to the language-specific equivalent. As +% originally planned for \btx, this field should contain the words +% \textsl{First}, \textsl{Second}, etc. Being so explicit, +% it is not so easy to translate, nor to +% convert to \textsl{1st}, \textsl{2nd}, etc., if one wanted. +% This function carries out the translation, by changing +% \textsl{first} or \textsl{1} to \texttt{bbl.first}, and so +% on. The field is reduced to lower case to make it case insensitive. If no +% translation is found, then the original text in \texttt{edition} is used +% instead, as it stands. However, if the original is a number greater than +% the maximum for which text is provided, then \texttt{bbl.th} is added to +% it. +% \begin{macrocode} +FUNCTION {convert.edition} +{ extract.num "l" change.case$ 's := + s "first" = s "1" = or + { bbl.first 't := } + { s "second" = s "2" = or + { bbl.second 't := } + { s "third" = s "3" = or + { bbl.third 't := } + { s "fourth" = s "4" = or + { bbl.fourth 't := } + { s "fifth" = s "5" = or + { bbl.fifth 't := } + { s #1 #1 substring$ is.num +%<!english&exlang> { s bbl.th * 't := } +%<english|!exlang> { s eng.ord 't := } + { edition 't := } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + t +} +%</!xedn> + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.edition'} +% This function formats the text for the edition specification, such as +% ``Second edition''. It combines the edition number with the word +% \textsl{edition}. +% \begin{macrocode} +FUNCTION {format.edition} +{ edition duplicate$ empty$ 'skip$ + { +%<!xedn> convert.edition + output.state mid.sentence = + { "l" } + { "t" } + if$ change.case$ + "edition" bibinfo.check + " " * bbl.edition * + } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +INTEGERS { multiresult } +% \end{macrocode} +% +% \begin{macro}{`multi.page.check'} +% \begin{macrocode} +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.pages'} +% \begin{macrocode} +FUNCTION {format.pages} +{ pages duplicate$ empty$ 'skip$ + { duplicate$ multi.page.check + { +%<!bkpg-x&!ppx> bbl.pages swap$ + n.dashify + } + { +%<!bkpg-x&!ppx> bbl.page swap$ + } + if$ +%<!bkpg-x&!ppx> tie.or.space.prefix + "pages" bibinfo.check +%<!bkpg-x&!ppx> * * +%<bkpg-par> "(" swap$ * ")" * + } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`first.page'} +% \begin{macrocode} +%<*jpg-1> +FUNCTION {first.page} +{ 't := + "" + { t empty$ not t #1 #1 substring$ "-" = not and } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + while$ +} + +%</jpg-1> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.journal.pages'} +% Note: this function gets called with something on the stack. +% It may be the volume and number. +% \begin{macrocode} +FUNCTION {format.journal.pages} +{ pages duplicate$ empty$ 'pop$ + { swap$ duplicate$ empty$ + { pop$ pop$ format.pages } + { +%<volp-sp> ": " * +%<*!volp-sp> +%<volp-blk> " " * +%<*!volp-blk> +%<volp-com> ", " * +%<*!volp-com> +%<volp-semi> "; " * +%<!volp-semi> ":" * +%</!volp-com> +%</!volp-blk> +%</!volp-sp> +%<!jdt-v&!jdt-vs&jdt-p> format.year * " " * +%<!jdt-v&!jdt-vs&!jdt-p&jdt-pc> format.year * ", " * + swap$ +%<jpg-1> first.page +%<!jpg-1> n.dashify +%<*jwdpg> + pages multi.page.check + 'bbl.pages + 'bbl.page + if$ + swap$ tie.or.space.prefix +%</jwdpg> + "pages" bibinfo.check +%<jwdpg> * * + * + } + if$ + } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.journal.eid'} +% +% This function is called with something on the stack (journal vol, number) +% and appends \texttt{eid} and \texttt{numpages} if those field are non-empty. +% Very similar to \texttt{format.journal.pages}. +% +% For the AGU style of including the DOI as part of the EID, the DOI number +% is appended too. +% \begin{macrocode} +FUNCTION {format.journal.eid} +{ eid "eid" bibinfo.check + duplicate$ empty$ 'pop$ + { swap$ duplicate$ empty$ 'skip$ + { +%<volp-sp> ": " * +%<*!volp-sp> +%<volp-blk> " " * +%<*!volp-blk> +%<volp-com> ", " * +%<*!volp-com> +%<volp-semi> "; " * +%<!volp-semi> ":" * +%</!volp-com> +%</!volp-blk> +%</!volp-sp> + } + if$ + swap$ * +%<*revdata> + numpages empty$ 'skip$ + { bbl.eidpp numpages tie.or.space.prefix + "numpages" bibinfo.check * * + " (" swap$ * ")" * * + } + if$ +%</revdata> + } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.vol.num.pages'} +% Version 3.84, I have rationalized several options that placed the date in the +% journal specifications. It was rather chaotic before, but now it should be +% more systematic. This means some options have been removed, something that I +% do not like to do. +% +% The option \texttt{pp-last} suppresses the pages in the formatting macros, and +% sees to it that the pages are added just before any notes in those entries +% that take pages. This applies to more than just \texttt{article}, but to +% \texttt{inbook}, \texttt{incollection} as well. +% +% \begin{macrocode} +FUNCTION {format.vol.num.pages} +{ volume field.or.null + duplicate$ empty$ 'skip$ + { +%<jwdvol> bbl.volume swap$ tie.or.space.prefix + "volume" bibinfo.check +%<jwdvol> * * + } + if$ +%<vol-bf&!vol-2bf> bolden +%<!vol-bf&!vol-2bf&vol-it> emphasize +%<jdt-v|jdt-vs> format.year * +%<*!vnum-x> + number "number" bibinfo.check duplicate$ empty$ 'skip$ + { + swap$ duplicate$ empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + swap$ +%<vnum-sp> "~(" swap$ * ")" * +%<!vnum-sp&vnum-cm> ", " swap$ * +%<!vnum-sp&!vnum-cm&vnum-nr> ", " bbl.nr * number tie.or.space.prefix pop$ * swap$ * +%<!vnum-sp&!vnum-cm&!vnum-nr&vnum-h> ", \#" swap$ * +%<!vnum-sp&!vnum-cm&!vnum-nr&!vnum-h&vnum-b> " " swap$ * +%<!vnum-sp&!vnum-cm&!vnum-nr&!vnum-h&!vnum-b> "(" swap$ * ")" * + } + if$ * +%<!vol-bf&vol-2bf> bolden +%</!vnum-x> +%<*!pp-last> + eid empty$ + { format.journal.pages } + { format.journal.eid } + if$ +%</!pp-last> +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.chapter.pages'} +% \begin{macrocode} +FUNCTION {format.chapter.pages} +{ chapter empty$ +%<!pp-last> 'format.pages +%<pp-last> { "" } + { type empty$ + { bbl.chapter } + { type "l" change.case$ + "type" bibinfo.check + } + if$ + chapter tie.or.space.prefix + "chapter" bibinfo.check + * * +%<*!pp-last> + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ +%</!pp-last> + } + if$ +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`bt.enquote'} +% This is to place the booktitle for proceedings and collections into quotes. +% If punctuation is to be included, then add a comma unless a stop already +% exists, or add a period under the only circumstances that +% |format.in.ed.booktitle| is followed by |new.sentence|. +% \begin{macrocode} +%<*bt-qq> +FUNCTION {bt.enquote} +{ duplicate$ empty$ 'skip$ + { "\enquote{" swap$ * +%<*!qx> + non.stop + { ",} " * } + { "}, " * } + if$ +%</!qx> +%<*qx> + "}, " * +%</qx> + } + if$ +} +%</bt-qq> +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{`format.booktitle'} +% The function \texttt{format.booktitle} pushes one object +% (the book title, suitably encapsulated) onto the stack. +% It is currently used in \texttt{format.incoll.inproc.crossref} +% and in \texttt{format.in.ed.booktitle}, and should be used whenever accessing +% the \texttt{booktitle} field for eventual output. +% +% If the book title is empty or missing, the function pushes an empty string. +% \begin{macrocode} +FUNCTION {format.booktitle} +{ + booktitle "booktitle" bibinfo.check +%<!bt-qq&!bt-rm> emphasize +%<bt-qq> bt.enquote +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.in.ed.booktitle'} +% Prior to version 3.81, the \textsl{Editor} or \textsl{Edited by} in +% parentheses was meant to be capitalized, but this did not work properly. +% Now the option \texttt{edcap} produces this, and default is not capitalized. +% +% Notes on \dtx{} options: +% \begin{itemize} +% \item +% The following combinations are available through the \texttt{makebst.tex} interface: +% \begin{quote} +% \verb+(+ \\ +% \verb+ <default>+ \\ +% \verb+ |edby ( |edbyx |edbyy|edbyw[edcap])+ \\ +% \verb+ |edby-par (|edcap|edbyx[edcap]|edbyy )+ \\ +% \verb+ |edby-parc(|edcap|edbyx )+ \\ +% \verb+)+ +% \end{quote} +% \item +% \texttt{edby}, \texttt{edby-par}, and \texttt{edby-parc} are mutually exclusive +% and, except for the default, exhaustive. +% \item +% \texttt{edbyx}, \texttt{edbyw}, and \texttt{edbyy} are mutually exclusive +% and, except for the default, exhaustive. +% \item +% \texttt{edcap} is independent of the above two groups of options. +% \item +% When parentheses need to be applied, we make sure that the respective +% \dtx{} guard expressions are mutually exclusive. +% It makes no sense for \texttt{edbyw} to be in effect if either of +% \texttt{edby-par} or \texttt{edby-parc} is in effect. +% \item +% \texttt{makebst.tex} only activates \texttt{edcap} in certain cases, +% but we do no checking here, applying it consistently to the +% ``editor'' text entity. +% \item +% The code between \texttt{<!edpar>} and \verb+<edpar\|edparc>+ +% \emph{must} match the corresponding code in \texttt{format.editors}. +% This means that in the default case, formatting is controlled by +% a \dtx{} mechanism entirely different from the other cases. +% \item \texttt{ser-ed} has been added to suit AGU. Result of series plus +% volume to go between booktitle and editors; must remove \texttt{format.bvolume} +% from \texttt{incollection} and \texttt{inproceedings}. +% \end{itemize} +% +% \begin{macrocode} +FUNCTION {format.in.ed.booktitle} +{ format.booktitle duplicate$ empty$ 'skip$ + { +%<showstack>% btitle +%<*ser-ed> + format.bvolume duplicate$ empty$ 'pop$ + { ", " swap$ * * } + if$ +%</ser-ed> + editor "editor" format.names.ed duplicate$ empty$ 'pop$ + { +%<*!(edby|edby-par|edby-parc)> +%<showstack>% btitle ednms +%<!edpar&!edparxc> "," * + " " * + get.bbl.editor +%<bkedcap> capitalize +%<edpar> "(" swap$ * "), " * +%<!edpar&(edparc|edparxc)> "(" swap$ * ") " * +%<!edpar&!(edparc|edparxc)> ", " * + * swap$ +%<showstack>% eds btitle +%</!(edby|edby-par|edby-parc)> +%<*edby|edby-par|edby-parc> +%<showstack>% btitle ednms +%<edbyx|edbyy|edbyw> get.bbl.editor +%<!(edbyx|edbyy|edbyw)> bbl.edby +%<edcap> capitalize +%<!(edby-par|edby-parc)&edbyw> "(" swap$ * ")" * +%<showstack>% btitle ednms ed +%<(edby-par|edby)&edbyy> swap$ "," * + " " * swap$ * +%<showstack>% btitle ednms-ed +%<(edby-par|edby-parc)&!edbyw> "(" swap$ * ")" * + swap$ +%<edby|edby-parc> "," * + " " * swap$ +%</edby|edby-par|edby-parc> +%<showstack>% btitle ednms-ed (or ednms-ed btitle) + * } + if$ +%<showstack>% btitle-ednms-ed (or ednms-ed-btitle) (or btitle) + word.in swap$ * + } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`empty.misc.check'} +% \begin{macrocode} +%<*!ay> +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and +%<!seq-no|alph> key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} +%</!ay> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.thesis.type'} +% \begin{macrocode} +FUNCTION {format.thesis.type} +{ type duplicate$ empty$ + 'pop$ + { swap$ pop$ + "t" change.case$ "type" bibinfo.check + } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.tr.number'} +% \begin{macrocode} +FUNCTION {format.tr.number} +{ number "number" bibinfo.check + type duplicate$ empty$ + { pop$ bbl.techrep } + 'skip$ + if$ + "type" bibinfo.check + swap$ duplicate$ empty$ + { pop$ "t" change.case$ } + { tie.or.space.prefix * * } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.article.crossref'} +% The \texttt{journal} field was emphasized emplicitly, but it should be +% done by command. +% \begin{macrocode} +FUNCTION {format.article.crossref} +{ +%<*!ay> + key duplicate$ empty$ + { pop$ + journal duplicate$ empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * warning$ } + { "journal" bibinfo.check emphasize word.in swap$ * } + if$ + } + { word.in swap$ * " " *} + if$ +%</!ay> +%<ay> word.in +%<!html> " \cite{" * crossref * "}" * +%<html> " <tt>" * crossref * "</tt>" * +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.crossref.editor'} +% \begin{macrocode} +%<*!ay> +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ +%<nmft&nmfted&nmand-rm> bib.name.font + "editor" bibinfo.check + editor num.names$ duplicate$ + #2 > + { pop$ +%<nmft&nmfted&!nmand-rm&(etal-it|etal-rm)> bib.name.font + "editor" bibinfo.check + " " * bbl.etal +%<etal-it> emphasize + * +%<nmft&nmfted&!nmand-rm&!(etal-it|etal-rm)> bib.name.font +%<nmft&nmfted&!nmand-rm&!(etal-it|etal-rm)> "others" 't := + } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { +%<nmft&nmfted&!nmand-rm&(etal-it|etal-rm)> bib.name.font + "editor" bibinfo.check + " " * bbl.etal +%<etal-it> emphasize + * +%<nmft&nmfted&!nmand-rm&!(etal-it|etal-rm)> bib.name.font +%<nmft&nmfted&!nmand-rm&!(etal-it|etal-rm)> "others" 't := + } + { +%<*!harnm> +%<!amper> bbl.and space.word +%<amper> " \& " +%</!harnm> +%<harnm> " \harvardand\ " + * editor #2 "{vv~}{ll}" format.name$ +%<nmft&nmfted&nmand-rm> bib.name.font + "editor" bibinfo.check + * + } + if$ + } + if$ + } + if$ +%<*nmft&nmfted&!nmand-rm> + t "others" = + 'skip$ + { bib.name.font "editor" bibinfo.check } + if$ +%</nmft&nmfted&!nmand-rm> +} +%</!ay> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.book.crossref'} +% The \texttt{series} field was emphasized emplicitly, but it should be +% done by command. +% \begin{macrocode} +FUNCTION {format.book.crossref} +{ volume duplicate$ empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + pop$ word.in + } + { bbl.volume +%<!(blk-com|blk-tita)> capitalize + swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * + } + if$ +%<*!ay> + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { series emphasize * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ +%</!ay> +%<!html> " \cite{" * crossref * "}" * +%<html> " <tt>" * crossref * "</tt>" * +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.incoll.inproc.crossref'} +% The \texttt{booktitle} field was emphasized emplicitly, but it should be +% done by command. +% \begin{macrocode} +FUNCTION {format.incoll.inproc.crossref} +{ +%<*!ay> + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { format.booktitle duplicate$ empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + } + { word.in swap$ * } + if$ + } + { word.in key * " " *} + if$ + } + { word.in format.crossref.editor * " " *} + if$ +%</!ay> +%<ay> word.in +%<!html> " \cite{" * crossref * "}" * +%<html> " <tt>" * crossref * "</tt>" * +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.org.or.pub'} +% Psychology journals often want \textit{address}: \textit{publisher}. +% +% \textsl{Nature} wants publisher and date in parentheses, and when both +% are there, they are merged into one set. +% +% Call function \texttt{add.blank} before parentheses so suppress preceding +% punctuation, which looks strange when publisher in parentheses. +% +% MPG Jahrbuch wants publisher and year, but without parentheses. Add +% \texttt{pub-nopar} to be used with \texttt{pub-date}. +% +% Have now (3.87.h) extended this function to include the organization, if +% present. This is for \texttt{inproceedings} and \texttt{proceedings} where +% the publisher is optional, and organization too. If the publisher is missing, +% but the organization present, it is formatted like the publisher. This +% complication comes from styles that want the publisher/organization to have +% the date included, all in parentheses. +% +% This function is called by \texttt{format.publisher.address} and +% \texttt{format.organization.address}, each putting the appropriate text +% into the stack first. +% +% \begin{macrocode} +FUNCTION {format.org.or.pub} +{ 't := + "" +%<*pub-date&!ay> + year empty$ + { "empty year in " cite$ * warning$ } + 'skip$ + if$ +%</pub-date&!ay> +%<*!(pub-date&ay)> + address empty$ t empty$ and +%<pub-date> year empty$ and + 'skip$ + { +%</!(pub-date&ay)> +%<pub-par|(pub-date&!pub-xpar)> add.blank "(" * +%<*add-pub> + address "address" bibinfo.check * + t empty$ + 'skip$ +%</add-pub> +%<*!add-pub> + t empty$ + { address "address" bibinfo.check * + } + { t * + address empty$ + 'skip$ + { ", " * address "address" bibinfo.check * } + if$ + } +%</!add-pub> +%<*add-pub> + { address empty$ + 'skip$ + { ": " * } + if$ + t * + } +%</add-pub> + if$ +%<*pub-date&!ay> + year empty$ + 'skip$ + { t empty$ address empty$ and + 'skip$ +%<!pub-xc> { ", " swap$ * * } +%<pub-xc> { " " swap$ * * } + if$ + year "year" bibinfo.check +%<dtbf> bolden + * + } + if$ +%</pub-date&!ay> +%<*pub-date&ay> + year duplicate$ empty$ +%<*!blkyear> + { "empty year in " cite$ * "; set to ????" * warning$ + pop$ "????" } +%</!blkyear> +%<*blkyear> + { "empty year in " cite$ * warning$ + pop$ "" } +%</blkyear> +%<!dtbf> { "year" bibinfo.check extra.label * } +%<dtbf> { "year" bibinfo.check bolden extra.label * } + if$ + t empty$ address empty$ and + { * } +%<!pub-xc> { ", " swap$ * * } +%<pub-xc> { " " swap$ * * } + if$ +%</pub-date&ay> +%<pub-par|(pub-date&!pub-xpar)> ")" * +%<*!(pub-date&ay)> + } + if$ +%</!(pub-date&ay)> +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.publisher.address'} +% \begin{macrocode} +FUNCTION {format.publisher.address} +{ publisher "publisher" bibinfo.warn format.org.or.pub +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.organization.address'} +% \begin{macrocode} +FUNCTION {format.organization.address} +{ organization "organization" bibinfo.check format.org.or.pub +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`name.or.dash'} +% This function stores what is on the stack, compares it with previous value, +% and replaces it with a long dash if they are equal. What is on the stack +% should be author or editor names for the current entry. +% \begin{macrocode} +%<*nmdash> +STRINGS {oldname} + +FUNCTION {name.or.dash} +{ 's := + oldname empty$ + { s 'oldname := s } + { s oldname = +%<*!au-col> +%<!nmd-2&!nmd-3> { "---" } +%<nmd-2&!nmd-3> { "---{}---" } +%<nmd-3> { "---{}---{}---" } +%</!au-col> +%<*au-col> +%<!nmd-2&!nmd-3> { "---" add.blank } +%<nmd-2&!nmd-3> { "---{}---" add.blank } +%<nmd-3> { "---{}---{}---" add.blank } +%</au-col> + { s 'oldname := s } + if$ + } + if$ +} + +%</nmdash> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`article'} +% \begin{macrocode} +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check +%<ay> author format.key output +%<au-col> add.colon +%<nmdash> name.or.dash +%<*dt-beg&!jdt-p&!jdt-pc&!jdt-vs&!jdt-v> + format.date "year" output.check + date.block +%</dt-beg&!jdt-p&!jdt-pc&!jdt-vs&!jdt-v> +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block +%<*!jtit-x> + format.title "title" output.check +%<blk-com&tit-qq> end.quote.title +%<!blk-com&!blk-tit&!blk-tita> new.block +%<*blk-tit|blk-tita> +%<!tit-col> new.sentence +%<tit-col> add.colon +%</blk-tit|blk-tita> +%</!jtit-x> + crossref missing$ + { + journal +%<jxper> remove.dots + "journal" bibinfo.check +%<!jttl-rm> emphasize +%<injnl> word.in swap$ * + "journal" output.check +%<jnm-x> add.blank +%<*!dt-beg&!dt-end&dt-jnl&!jdt-p&!jdt-pc&!jdt-vs&!jdt-v> + format.date "year" output.check + date.block +%</!dt-beg&!dt-end&dt-jnl&!jdt-p&!jdt-pc&!jdt-vs&!jdt-v> + format.vol.num.pages output +%<doi&agu-doi> format.doi output +%<*!dt-beg&!dt-end&!dt-jnl&!jdt-p&!jdt-pc&!jdt-vs&!jdt-v> + format.date "year" output.check +%</!dt-beg&!dt-end&!dt-jnl&!jdt-p&!jdt-pc&!jdt-vs&!jdt-v> + } + { format.article.crossref output.nonnull +%<!pp-last> format.pages output + } + if$ +%<*pp-last> + eid empty$ + { format.journal.pages } + { format.journal.eid } + if$ +%</pp-last> +%<issn> format.issn output +%<(doi|(url-doi&!url))&!agu-doi> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*!dt-beg&dt-end&!jdt-p&!jdt-pc&!jdt-vs&!jdt-v> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</!dt-beg&dt-end&!jdt-p&!jdt-pc&!jdt-vs&!jdt-v> +%<eprint> format.eprint output +%<*revdata> + format.url output +%</revdata> + fin.entry +%<harnm|url-nl> write.url +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`book'} +% \begin{macrocode} +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check +%<ay> editor format.key output +%<!edpar&(edparc|edparxc)&!au-col> add.blank +%<au-col> add.colon +%<nmdash> name.or.dash + } + { format.authors output.nonnull +%<au-col> add.colon +%<nmdash> name.or.dash + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ +%<dt-beg&!pub-date> format.date "year" output.check +%<dt-beg&!pub-date> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output +%<!blk-com&!blk-tit&!blk-tita> new.block +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon +%<!numser> format.number.series output +%<pre-edn> format.edition output +%<!blk-com&!blk-tit&!blk-tita> new.sentence +%<numser> format.number.series output +%<pg-bk&pg-pre> format.book.pages output + format.publisher.address output + } + { +%<!blk-com&!blk-tit&!blk-tita> new.block +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon + format.book.crossref output.nonnull +%<!dt-beg&!dt-end&pub-date> format.date "year" output.check + } + if$ +%<!pre-edn> format.edition output +%<!dt-beg&!dt-end&!pub-date> format.date "year" output.check +%<isbn> format.isbn output +%<pg-bk&!pg-pre> format.book.pages output +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*!dt-beg&dt-end&!pub-date> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</!dt-beg&dt-end&!pub-date> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`booklet'} +% \begin{macrocode} +FUNCTION {booklet} +{ output.bibitem + format.authors output +%<ay> author format.key output +%<au-col> add.colon +%<nmdash> name.or.dash +%<ay&dt-beg> format.date "year" output.check +%<!ay&dt-beg> format.date output +%<dt-beg> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block + format.title "title" output.check +%<blk-com&tit-qq> end.quote.title +%<!blk-com&!blk-tit&!blk-tita> new.block +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon + howpublished "howpublished" bibinfo.check output + address "address" bibinfo.check output +%<ay&!dt-beg&!dt-end> format.date "year" output.check +%<!ay&!dt-beg&!dt-end> format.date output +%<isbn> format.isbn output +%<pg-bk> format.book.pages output +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*ay&!dt-beg&dt-end> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</ay&!dt-beg&dt-end> +%<*!ay&!dt-beg&dt-end> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date output +%</!ay&!dt-beg&dt-end> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`inbook'} +% The medical journals, with option \texttt{dt-jnl}, have the date as part of +% the journal specification. For chapters in books, they want date and pages +% to appear at the end, with a space between them. (For journals, there is to be +% no space.) Suppress the chapter specification (for now). +% +% The \texttt{dt-jnl} option usually behaves as the default, except for some +% special entries, like this one. +% +% 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, +% 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} +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check +%<ay> editor format.key output +%<au-col> add.colon +%<nmdash> name.or.dash + } + { format.authors output.nonnull +%<au-col> add.colon +%<nmdash> name.or.dash + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ +%<dt-beg&!pub-date> format.date "year" output.check +%<dt-beg&!pub-date> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block + format.btitle "title" output.check + crossref missing$ + { +%<pre-pub&numser> format.number.series output +%<pre-pub> format.publisher.address output + format.bvolume output +%<*dt-beg|dt-end|!dt-jnl|a|!a> + format.chapter.pages "chapter and pages" output.check +%</dt-beg|dt-end|!dt-jnl|a|!a> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon +%<!numser> format.number.series output +%<pre-edn> format.edition output +%<!blk-com&!blk-tit&!blk-tita> new.sentence +%<!pre-pub&numser> format.number.series output +%<!pre-pub> format.publisher.address output + } + { +%<*dt-beg|dt-end|!dt-jnl|a|!a> + format.chapter.pages "chapter and pages" output.check +%</dt-beg|dt-end|!dt-jnl|a|!a> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon + format.book.crossref output.nonnull +%<!dt-beg&!dt-end&!dt-jnl&pub-date> format.date "year" output.check + } + if$ +%<!pre-edn> format.edition output +%<!dt-beg&!dt-end&!dt-jnl&!pub-date> format.date "year" output.check +%<*isbn> + crossref missing$ + { format.isbn output } + 'skip$ + if$ +%</isbn> +%<*(!dt-beg&!dt-end&dt-jnl)&!pub-date> + format.date "year" output.check + date.block +%</(!dt-beg&!dt-end&dt-jnl)&!pub-date> +%<pp-last> format.pages "pages" output.check +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*!dt-beg&dt-end&!pub-date> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</!dt-beg&dt-end&!pub-date> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`incollection'} +% \begin{macrocode} +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check +%<ay> author format.key output +%<au-col> add.colon +%<nmdash> name.or.dash +%<dt-beg&!pub-date> format.date "year" output.check +%<dt-beg&!pub-date> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block +%<*!jtit-x> + format.title "title" output.check +%<blk-com&tit-qq> end.quote.title +%<!blk-com&!blk-tit&!blk-tita> new.block +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon +%</!jtit-x> + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check +%<bt-qq> end.quote.btitle +%<pre-pub&numser> format.number.series output +%<pre-pub> format.publisher.address output +%<!ser-ed> format.bvolume output +%<!numser> format.number.series output +%<pre-edn> format.edition output + format.chapter.pages output +%<!blk-com&!blk-tit&!blk-tita> new.sentence +%<!pre-pub&numser> format.number.series output +%<!pre-pub> format.publisher.address output +%<!pre-edn> format.edition output +%<!dt-beg&!dt-end&!dt-jnl&!pub-date> format.date "year" output.check +%<isbn> format.isbn output + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ +%<*(!dt-beg&!dt-end&dt-jnl)&!pub-date> + format.date "year" output.check + date.block +%</(!dt-beg&!dt-end&dt-jnl)&!pub-date> +%<pp-last> format.pages "pages" output.check +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*!dt-beg&dt-end&!pub-date> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</!dt-beg&dt-end&!pub-date> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`inproceedings'} +% \begin{macrocode} +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check +%<ay> author format.key output +%<au-col> add.colon +%<nmdash> name.or.dash +%<dt-beg&!pub-date> format.date "year" output.check +%<dt-beg&!pub-date> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block +%<*!jtit-x> + format.title "title" output.check +%<blk-com&tit-qq> end.quote.title +%<!blk-com&!blk-tit&!blk-tita> new.block +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon +%</!jtit-x> + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check +%<bt-qq> end.quote.btitle +%<*!pre-pub> +%<!ser-ed> format.bvolume output +%<!numser> format.number.series output +%<(dt-beg|dt-end|!dt-jnl)&!pp-last> format.pages output +%</!pre-pub> +%<!blk-com&!blk-tit&!blk-tita> new.sentence +%<numser> format.number.series output + publisher empty$ + { format.organization.address output } + { organization "organization" bibinfo.check output + format.publisher.address output + } + if$ +%<!dt-beg&!dt-end&!dt-jnl&!pub-date> format.date "year" output.check +%<*pre-pub> + format.bvolume output +%<!numser> format.number.series output +%<(dt-beg|dt-end|!dt-jnl)&!pp-last> format.pages output +%</pre-pub> +%<isbn> format.isbn output +%<issn> format.issn output + } + { format.incoll.inproc.crossref output.nonnull +%<(dt-beg|dt-end|!dt-jnl)&!pp-last> format.pages output + } + if$ +%<*!dt-beg&!dt-end&dt-jnl&!pp-last> +%<!pub-date> format.date "year" output.check +%<!pub-date> date.block +%<jdt-v|jdt-vs|jdt-p|!jdt-pc> add.blank + format.pages "pages" output.check +%</!dt-beg&!dt-end&dt-jnl&!pp-last> +%<pp-last> format.pages "pages" output.check +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*!dt-beg&dt-end&!pub-date> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</!dt-beg&dt-end&!pub-date> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`conference'} +% \begin{macrocode} +FUNCTION {conference} { inproceedings } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`manual'} +% \begin{macrocode} +%<*ay> +FUNCTION {manual} +{ output.bibitem + format.authors output + author format.key output +%<au-col> add.colon +%<nmdash> name.or.dash +%<dt-beg> format.date "year" output.check +%<dt-beg> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block + format.btitle "title" output.check +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon +%<!blk-com&!blk-tit&!blk-tita> organization address new.block.checkb + organization "organization" bibinfo.check output + address "address" bibinfo.check output + format.edition output +%<!dt-beg&!dt-end> format.date "year" output.check +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*!dt-beg&dt-end> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</!dt-beg&dt-end> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} + +%</ay> +%<*!ay> +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization "organization" bibinfo.check + duplicate$ empty$ 'pop$ + { output + address "address" bibinfo.check output + } + if$ + } + { format.authors output.nonnull } + if$ +%<au-col> add.colon +%<nmdash> name.or.dash +%<ay&dt-beg> format.date "year" output.check +%<!ay&dt-beg> format.date output +%<dt-beg> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block + format.btitle "title" output.check +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon + author empty$ + { organization empty$ + { +%<!blk-com&!blk-tit&!blk-tita> address new.block.checka + address "address" bibinfo.check output + } + 'skip$ + if$ + } + { +%<!blk-com&!blk-tit&!blk-tita> organization address new.block.checkb + organization "organization" bibinfo.check output + address "address" bibinfo.check output + } + if$ + format.edition output +%<ay&!dt-beg&!dt-end> format.date "year" output.check +%<!ay&!dt-beg&!dt-end> format.date output +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*ay&!dt-beg&dt-end> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</ay&!dt-beg&dt-end> +%<*!ay&!dt-beg&dt-end> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date output +%</!ay&!dt-beg&dt-end> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} + +%</!ay> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`mastersthesis'} +% To format a master's thesis. +% \begin{macrocode} +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check +%<ay> author format.key output +%<au-col> add.colon +%<nmdash> name.or.dash +%<dt-beg> format.date "year" output.check +%<dt-beg> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block +%<*!thtit-x> +%<!thtit-a> format.btitle +%<thtit-a> format.title + "title" output.check +%<thtit-a&blk-com&tit-qq> end.quote.title +%<!blk-com&!blk-tit&!blk-tita> new.block +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon +%</!thtit-x> + bbl.mthesis format.thesis.type output.nonnull + school "school" bibinfo.warn output + address "address" bibinfo.check output +%<!dt-beg&!dt-end> format.date "year" output.check +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*!dt-beg&dt-end> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</!dt-beg&dt-end> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`misc'} +% \begin{macrocode} +FUNCTION {misc} +{ output.bibitem + format.authors output +%<ay> author format.key output +%<au-col> add.colon +%<nmdash> name.or.dash +%<ay&dt-beg> format.date "year" output.check +%<!ay&dt-beg> format.date output +%<*ay> +%<dt-beg> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block + format.title output +%<blk-com&tit-qq> end.quote.title +%<!blk-com&!blk-tit&!blk-tita> new.block +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon +%</ay> +%<*!ay> +%<!blk-com&!blk-tit&!blk-tita> title howpublished new.block.checkb + format.title output +%<blk-com&tit-qq> end.quote.title +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon +%<!blk-com&!blk-tit&!blk-tita> howpublished new.block.checka +%</!ay> + howpublished "howpublished" bibinfo.check output +%<ay&!dt-beg&!dt-end> format.date "year" output.check +%<!ay&!dt-beg&!dt-end> format.date output +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*ay&!dt-beg&dt-end> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</ay&!dt-beg&dt-end> +%<*!ay&!dt-beg&dt-end> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date output +%</!ay&!dt-beg&dt-end> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +%<!ay> empty.misc.check +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`phdthesis'} +% To format a doctoral thesis. +% \begin{macrocode} +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check +%<ay> author format.key output +%<au-col> add.colon +%<nmdash> name.or.dash +%<dt-beg> format.date "year" output.check +%<dt-beg> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block +%<*!thtit-x> +%<!thtit-a> format.btitle +%<thtit-a> format.title + "title" output.check +%<thtit-a&blk-com&tit-qq> end.quote.title +%<!blk-com&!blk-tit&!blk-tita> new.block +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon +%</!thtit-x> + bbl.phdthesis format.thesis.type output.nonnull + school "school" bibinfo.warn output + address "address" bibinfo.check output +%<!dt-beg&!dt-end> format.date "year" output.check +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*!dt-beg&dt-end> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</!dt-beg&dt-end> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`presentation'} +% \begin{macrocode} +%<*pres> +FUNCTION {presentation} +{ output.bibitem + format.authors output +%<ay> author format.key output +%<au-col> add.colon +%<nmdash> name.or.dash +%<!blk-com&!blk-tit&!blk-tita> new.block + format.title output +%<blk-com&tit-qq> end.quote.title +%<!blk-com&!blk-tit&!blk-tita> new.block +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon + format.organization.address "organization and address" output.check + month "month" output.check + year "year" output.check +%<!blk-com&!blk-tit&!blk-tita> 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> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm> + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} + +%</pres> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`proceedings'} +% \begin{macrocode} +%<*ay> +FUNCTION {proceedings} +{ output.bibitem + format.editors output + editor format.key output +%<au-col> add.colon +%<nmdash> name.or.dash +%<dt-beg> format.date "year" output.check +%<dt-beg> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block + format.btitle "title" output.check + format.bvolume output +%<!numser> format.number.series output +%<!blk-com&!blk-tit&!blk-tita> new.sentence +%<numser> format.number.series output + publisher empty$ + { format.organization.address output } + { organization "organization" bibinfo.check output + format.publisher.address output + } + if$ +%<!dt-beg&!dt-end&!pub-date> format.date "year" output.check +%<isbn> format.isbn output +%<issn> format.issn output +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*!dt-beg&dt-end&!pub-date> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</!dt-beg&dt-end&!pub-date> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} + +%</ay> +% \end{macrocode} +% \begin{macrocode} +%<*!ay> +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization "organization" bibinfo.check output + } + { format.editors output.nonnull } + if$ +%<au-col> add.colon +%<nmdash> name.or.dash +%<dt-beg> format.date "year" output.check +%<dt-beg> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block + format.btitle "title" output.check + format.bvolume output +%<!numser> format.number.series output + editor empty$ + { publisher empty$ +%<!numser> 'skip$ +%<numser> { format.number.series output } + { +%<!blk-com&!blk-tit&!blk-tita> new.sentence +%<numser> format.number.series output + format.publisher.address output + } + if$ + } + { publisher empty$ + { +%<!blk-com&!blk-tit&!blk-tita> new.sentence +%<numser> format.number.series output + format.organization.address output } + { +%<!blk-com&!blk-tit&!blk-tita> new.sentence +%<numser> format.number.series output + organization "organization" bibinfo.check output + format.publisher.address output + } + if$ + } + if$ +%<!dt-beg&!dt-end&!pub-date> format.date "year" output.check +%<isbn> format.isbn output +%<issn> format.issn output +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*!dt-beg&dt-end> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</!dt-beg&dt-end> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} + +%</!ay> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`techreport'} +% \begin{macrocode} +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check +%<ay> author format.key output +%<au-col> add.colon +%<nmdash> name.or.dash +%<dt-beg> format.date "year" output.check +%<dt-beg> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block +%<trtit-b> format.btitle +%<!trtit-b> format.title + "title" output.check +%<!trtit-b&blk-com&tit-qq> end.quote.title +%<!blk-com&!blk-tit&!blk-tita> new.block +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon +%<!trnum-it> format.tr.number output.nonnull +%<trnum-it> format.tr.number emphasize output.nonnull + institution "institution" bibinfo.warn output + address "address" bibinfo.check output +%<!dt-beg&!dt-end> format.date "year" output.check +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*!dt-beg&dt-end> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</!dt-beg&dt-end> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`unpublished'} +% \begin{macrocode} +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check +%<ay> author format.key output +%<au-col> add.colon +%<nmdash> name.or.dash +%<ay&dt-beg> format.date "year" output.check +%<!ay&dt-beg> format.date output +%<dt-beg> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block + format.title "title" output.check +%<blk-com&tit-qq> end.quote.title +%<ay&!dt-beg&!dt-end> format.date "year" output.check +%<!ay&!dt-beg&!dt-end> format.date output +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note "note" output.check +%<*ay&!dt-beg&dt-end> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date output +%</ay&!dt-beg&dt-end> +%<*!ay&!dt-beg&dt-end> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date output +%</!ay&!dt-beg&dt-end> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`default.type'} +% \begin{macrocode} +FUNCTION {default.type} { misc } +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +READ +% \end{macrocode} +% +% \begin{macrocode} +%<*ay|alph|!seq-no> +% \end{macrocode} +% +% \begin{macro}{`sortify'} +% In \texttt{btxbst.doc}/\texttt{.mbs}, the \texttt{sortify} function is +% left out for unsorted alpha-style citations. This leads to an error, +% because it is still used. So leave it in here too. \emph{In fact, do away +% with unsorted alpha style, since it is as useless as unsorted author--year +% listings.} +% \begin{macrocode} +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +INTEGERS { len } +% \end{macrocode} +% +% \begin{macro}{`chop.word'} +% \begin{macrocode} +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%<*!ay&alph> +% \end{macrocode} +% +% \begin{macro}{`format.lab.names'} +% The function \texttt{format.lab.names} formats by author--year or the +% \texttt{alpha} style as in the original \texttt{alpha.bst}. +% Only major difference is that there should be no unsorted (\texttt{seq-no}) +% versions of this. Patashnik was clearly very unhappy about accommodating +% such an animal, and in fact, his unsorted alpha style crashes \btx. +% I also provide the \texttt{vonx} option here to ignore the \textsl{von} +% part of the name. +% +% \begin{macrocode} +INTEGERS { et.al.char.used } +% \end{macrocode} +% +% \begin{macrocode} +FUNCTION {initialize.et.al.char.used} +{ #0 'et.al.char.used := +} +% \end{macrocode} +% +% \begin{macrocode} +EXECUTE {initialize.et.al.char.used} +% \end{macrocode} +% +% \begin{macrocode} +FUNCTION {format.lab.names} +{ 's := +%<*alf-1> +%<!vonx> s #1 "{v{}}{l{}}" format.name$ +%<vonx> s #1 "{l{}}" format.name$ + duplicate$ text.length$ #2 < + { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ } + 'skip$ + if$ +%</alf-1> +%<*!alf-1&alf-f> +%<!vonx> s #1 "{vv{}}{ll}" format.name$ +%<vonx> s #1 "{ll}" format.name$ +%</!alf-1&alf-f> +%<*!alf-1&!alf-f> + s num.names$ 'numnames := + numnames #1 > + { numnames #4 > + { #3 'namesleft := } + { numnames 'namesleft := } + if$ + #1 'nameptr := + "" + { namesleft #0 > } + { nameptr numnames = + { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { "{\etalchar{+}}" * + #1 'et.al.char.used := + } +%<!vonx> { s nameptr "{v{}}{l{}}" format.name$ * } +%<vonx> { s nameptr "{l{}}" format.name$ * } + if$ + } +%<!vonx> { s nameptr "{v{}}{l{}}" format.name$ * } +%<vonx> { s nameptr "{l{}}" format.name$ * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + numnames #4 > + { "{\etalchar{+}}" * + #1 'et.al.char.used := + } + 'skip$ + if$ + } +%<!vonx> { s #1 "{v{}}{l{}}" format.name$ +%<vonx> { s #1 "{l{}}" format.name$ + duplicate$ text.length$ #2 < + { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ } + 'skip$ + if$ + } + if$ +%</!alf-1&!alf-f> +} +% \end{macrocode} +% +% \begin{macrocode} +%</!ay&alph> +% \end{macrocode} +% 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&!mcite> +FUNCTION {format.lab.names} +{ 's := + "" 't := +%<!jnrlab> s #1 "{vv~}{ll}" format.name$ +%<*jnrlab> +%<!nm-rv&!nm-rvv&!nm-rvx&!nm-rvcx> s #1 "{vv~}{ll}{, jj}" format.name$ +%<nm-rv|nm-rvv|nm-rvx|nm-rvcx> s #1 "{vv~}{ll}{ jj}" format.name$ +%</jnrlab> +%<lab&and-rm> cite.name.font + s num.names$ duplicate$ + #2 > + { pop$ +%<lab&!and-rm&(etal-it|etal-rm)> cite.name.font +%<*!etal-it> +%<lab&and-rm&!etal-rm> " " * bbl.etal cite.name.font * +%<!lab|!and-rm|etal-rm> " " * bbl.etal * +%</!etal-it> +%<etal-it> " " * bbl.etal emphasize * +%<lab&!and-rm&!(etal-it|etal-rm)> cite.name.font +%<lab&!and-rm> "others" 't := + } + { #2 < + 'skip$ + { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { +% %<lab&!and-rm&(etal-it|etal-rm)> cite.name.font +%<*!etal-it> +%<lab&and-rm&!etal-rm> " " * bbl.etal cite.name.font * +%<!lab|!and-rm|etal-rm> " " * bbl.etal * +%</!etal-it> +%<etal-it> " " * bbl.etal emphasize * +%<lab&!and-rm&!(etal-it|etal-rm)> cite.name.font +%<lab&!and-rm> "others" 't := + } +%<*!harnm> +%<*!amper> + { bbl.and space.word * s #2 "{vv~}{ll}" format.name$ +%<lab&and-rm> cite.name.font + * } +%</!amper> +%<*amper> + { " \& " * s #2 "{vv~}{ll}" format.name$ +%<lab&and-rm> cite.name.font + * } +%</amper> +%</!harnm> +%<*harnm> + { " \harvardand{} " * s #2 "{vv~}{ll}" format.name$ +%<lab&and-rm> cite.name.font + * } +%</harnm> + if$ + } + if$ + } + if$ +%<*lab&!and-rm> + t "others" = + 'skip$ + { cite.name.font } + if$ +%</lab&!and-rm> +} + +%</ay&!mcite> +% \end{macrocode} +% +% 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 +%<!jnrlab> "{vv~}{ll}" format.name$ +%<*jnrlab> +%<!nm-rv&!nm-rvv&!nm-rvx&!nm-rvcx> "{vv~}{ll}{, jj}" format.name$ +%<nm-rv|nm-rvv|nm-rvx|nm-rvcx> "{vv~}{ll}{ jj}" format.name$ +%</jnrlab> +%<lab&and-rm> cite.name.font + 't := + nameptr #1 > + { +%<mct-1> nameptr #2 = +%<mct-2> nameptr #3 = +%<mct-3> nameptr #4 = +%<mct-4> nameptr #5 = +%<mct-5> nameptr #6 = +%<mct-6> nameptr #7 = +%<mct-x2> numnames #2 > and +%<mct-x3> numnames #3 > and +%<mct-x4> numnames #4 > and +%<mct-x5> numnames #5 > and +%<mct-x6> numnames #6 > and + { "others" 't := + #1 'namesleft := } + 'skip$ + if$ + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { +%<lab&!and-rm&(etal-it|etal-rm)> cite.name.font +%<*!etal-it> +%<lab&and-rm&!etal-rm> " " * bbl.etal cite.name.font * +%<!lab|!and-rm|etal-rm> " " * bbl.etal * +%</!etal-it> +%<etal-it> " " * bbl.etal emphasize * +%<lab&!and-rm&!(etal-it|etal-rm)> cite.name.font + } + { +%<*!harnm> +%<*!and-xcom> + numnames #2 > + { "," * } + 'skip$ + if$ +%</!and-xcom> +%<!amper> bbl.and +%<amper> "\&" +%</!harnm> +%<harnm> "\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$ +%</lab&!and-rm> +} + +%</ay&mcite> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`author.key.label'} +% \begin{macro}{`author.editor.key.label'} +% \begin{macro}{`author.key.organization.label'} +% \begin{macro}{`editor.key.organization.label'} +% \begin{macro}{`editor.key.label'} +% Have to be very careful with the options \texttt{ay}, \texttt{alph}, and +% \texttt{seq-no} here. The first two are actually mutually exclusive, and +% \texttt{ay} should dominate. The \texttt{seq-no} option only applies for +% numerical (\texttt{!ay}) but not alphabetic (\texttt{alph}) selections. +% This whole block of coding dealing with labels is only included for +% author--year or alphabetic or ordered numerical. +% That is, \texttt{ay} or \texttt{alph} or \texttt{!seq-no} is true. +% \begin{macrocode} +%<*ay|alph> +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } +%<ay> 'key +%<!ay> { key #3 text.prefix$ } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } +%<ay> 'key +%<!ay> { key #3 text.prefix$ } + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +%</ay|alph> +%<*!ay&alph> +FUNCTION {author.key.organization.label} +{ author empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + { key #3 text.prefix$ } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.organization.label} +{ editor empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + { key #3 text.prefix$ } + if$ + } + { editor format.lab.names } + if$ +} + +%</!ay&alph> +%<*ay> +FUNCTION {editor.key.label} +{ editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ +} + +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{`calc.short.authors'} +% \begin{macrocode} +FUNCTION {calc.short.authors} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.label + 'author.key.label + if$ + } + if$ + 'short.list := +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`calc.label'} +% \begin{macrocode} +FUNCTION {calc.label} +{ calc.short.authors + short.list +%<!(har|ast|cay|nmd|alk|cn)> "(" +%<har|ast|cay|nmd|alk|cn> ", " + * + year duplicate$ empty$ +%<keyxyr> short.list key field.or.null = or +%<(blkyear|keyxyr)> { pop$ "" } +%<!(blkyear|keyxyr)> { pop$ "????" } +%<!note-yr> { purify$ #-1 #4 substring$ } +%<note-yr> 'skip$ + if$ + * + 'label := +} + +%</ay> +%<*!ay&alph> +FUNCTION {calc.label} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.organization.label + { type$ "manual" = + 'author.key.organization.label + 'author.key.label + if$ + } + if$ + } + if$ + duplicate$ + year field.or.null purify$ #-1 #2 substring$ + * + 'label := + year field.or.null purify$ #-1 #4 substring$ + * + sortify 'sort.label := +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</!ay&alph> +% \end{macrocode} +% +% \begin{macrocode} +%<*ay> +% \end{macrocode} +% +% \begin{macrocode} +%<*har|cay|nmd|ast|cn> +% \end{macrocode} +% +% \begin{macro}{`calc.short.label'} +% \begin{macrocode} +FUNCTION {calc.short.label} +{ calc.short.authors short.list + 'label := +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</har|cay|nmd|ast|cn> +% \end{macrocode} +% +% \begin{macrocode} +%</ay> +% \end{macrocode} +% +% \begin{macro}{`sort.format.names'} +% \begin{macrocode} +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr +%<*xintls> +%<!vonx> "{vv{ } }{ll{ }}" +%<vonx> "{ll{ }}" +%</xintls> +%<*!xintls> +%<*!nm-init&!nm-rev&!nm-rev1&!nm-rv&!nm-rvx&!nm-rvcx&!nm-rvv&!nm-rvvc> +%<!vonx> "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" +%<vonx> "{ll{ }}{ ff{ }}{ jj{ }}" +%</!nm-init&!nm-rev&!nm-rev1&!nm-rv&!nm-rvx&!nm-rvcx&!nm-rvv&!nm-rvvc> +%<*nm-init|nm-rev|nm-rev1|nm-rv|nm-rvx|nm-rvcx|nm-rvv|nm-rvvc> +%<!vonx> "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" +%<vonx> "{ll{ }}{ f{ }}{ jj{ }}" +%</nm-init|nm-rev|nm-rev1|nm-rv|nm-rvx|nm-rvcx|nm-rvv|nm-rvvc> +%</!xintls> + format.name$ 't := + nameptr #1 > + { +%<*nmlm> +%<m1> nameptr #1 +%<m2> nameptr #2 +%<m3> nameptr #3 +%<m4> nameptr #4 +%<m5> nameptr #5 +%<m6> nameptr #6 +%<m7> nameptr #7 +%<m8> nameptr #8 +%<m9> nameptr #9 +%<m0> nameptr #0 +%<m10> #10 + +%<m20> #20 + +%<m30> #30 + +%<m40> #40 + +%<m50> #50 + +%<m60> #60 + +%<m70> #70 + +%<m80> #80 + +%<m90> #90 + + #1 + = +%<x1> numnames #1 +%<x2> numnames #2 +%<x3> numnames #3 +%<x4> numnames #4 +%<x5> numnames #5 +%<x6> numnames #6 +%<x7> numnames #7 +%<x8> numnames #8 +%<x9> numnames #9 +%<x0> numnames #0 +%<x10> #10 + +%<x20> #20 + +%<x30> #30 + +%<x40> #40 + +%<x50> #50 + +%<x60> #60 + +%<x70> #70 + +%<x80> #80 + +%<x90> #90 + + > and + { "others" 't := + #1 'namesleft := } + 'skip$ + if$ +%</nmlm> + " " * + namesleft #1 = t "others" = and + { "zzzzz" 't := } + 'skip$ + if$ +%<*seq-lab|seq-key|seq-labc> + numnames #2 > nameptr #2 = and + { "zz" * year field.or.null * " " * +%<seq-labc> #1 'namesleft := + } +%<seq-labc> { t sortify * } +%<!seq-labc> 'skip$ + if$ +%</seq-lab|seq-key|seq-labc> +%<!seq-labc> t sortify * + } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`sort.format.title'} +% \begin{macrocode} +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`author.sort'} +% \begin{macrocode} +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`author.editor.sort'} +% \begin{macrocode} +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`negate.year'} +% This function negates the year by substituting each digit by its +% complement. That is, 0 $\rightarrow$ 9, 1 $\rightarrow$ 8, etc. This is used +% to provide ordering by descending year (latest year first). +% \begin{macrocode} +%<*seq-yrr&!seq-yr> +FUNCTION {negate.year} +{ year empty$ + { "99999" } + { year #1 #1 substring$ chr.to.int$ #105 swap$ - int.to.chr$ + year #2 #1 substring$ chr.to.int$ #105 swap$ - int.to.chr$ * + year #3 #1 substring$ chr.to.int$ #105 swap$ - int.to.chr$ * + year #4 #1 substring$ chr.to.int$ #105 swap$ - int.to.chr$ * + } + if$ +} +%</seq-yrr&!seq-yr> +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%<*ay> +% \end{macrocode} +% +% \begin{macro}{`editor.sort'} +% \begin{macrocode} +FUNCTION {editor.sort} +{ editor empty$ + { key empty$ + { "to sort, need editor or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%<*seq-no> +% \end{macrocode} +% +% \begin{macrocode} +INTEGERS { seq.num } +% \end{macrocode} +% +% \begin{macro}{`init.seq'} +% \begin{macrocode} +FUNCTION {init.seq} +{ #0 'seq.num :=} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +EXECUTE {init.seq} +% \end{macrocode} +% +% \begin{macro}{`int.to.fix'} +% \begin{macrocode} +FUNCTION {int.to.fix} +{ "000000000" swap$ int.to.str$ * + #-1 #10 substring$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</seq-no> +% \end{macrocode} +% +% \begin{macro}{`presort'} +% For unsorted author--year, make up the final sorting order in +% \texttt{sort.label} with the original sequence number, for unsorting later. +% \begin{macrocode} +FUNCTION {presort} +{ calc.label + label sortify + " " + * +%<*!seq-no> + type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.sort + 'author.sort + if$ + } + if$ + #1 entry.max$ substring$ +%</!seq-no> +%<*seq-no> + seq.num #1 + 'seq.num := + seq.num int.to.fix +%</seq-no> + 'sort.label := + sort.label + * +%<seq-yr> " " * year field.or.null * +%<seq-yrr&!seq-yr> " " * negate.year field.or.null * +%<*!seq-key&!seq-labc&!seq-yr&!seq-yrr> + " " + * + title field.or.null + sort.format.title + * +%</!seq-key&!seq-labc&!seq-yr&!seq-yrr> +%<seq-key|seq-yr|seq-yrr> " " * cite$ * + #1 entry.max$ substring$ + 'sort.key$ := +% "For " cite$ * ", sort.key=" * sort.key$ * warning$ +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</ay> +% \end{macrocode} +% +% \begin{macrocode} +%<*!ay> +% \end{macrocode} +% +% \begin{macro}{`author.organization.sort'} +% \begin{macrocode} +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`editor.organization.sort'} +% \begin{macrocode} +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`presort'} +% \begin{macrocode} +FUNCTION {presort} +%<*alph> +{ calc.label + sort.label + " " + * + type$ "book" = +%</alph> +%<!alph>{ type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ +%<alph> * + " " + * +%<seq-yrr> negate.year field.or.null sortify +%<!seq-yrr> year field.or.null sortify +%<!(seq-yr|seq-yrr)|alph> * + " " + * +%<(seq-yr|seq-yrr)&!alph> swap$ * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</!ay> +% \end{macrocode} +% +% \begin{macrocode} +ITERATE {presort} +% \end{macrocode} +% +% \begin{macrocode} +SORT +% \end{macrocode} +% +% \begin{macrocode} +%</ay|alph|!seq-no> +% \end{macrocode} +% +% With version~6.0 of \texttt{natbib}, the author-year styles can also be +% used for numerical citations; then the \texttt{thebibliography} environment +% must have an argument indicating the length of the longest label. +% Simply count the references and add this number as the argument. +% \begin{macrocode} +%<*ay> +% \end{macrocode} +% +% \begin{macrocode} +STRINGS { last.label next.extra } +% \end{macrocode} +% +% With computer-generated articles, it is possible to have more than 26 articles +% in one year. It has finally occurred that the extra labels go beyond `z'. +% The current code now allows for `aa', \dots `az', 'ba', \dots `zz'. This +% code was provided by Joseph Wright (2007 Oct 10). +% \begin{macrocode} +INTEGERS { last.extra.num last.extra.num.extended last.extra.num.blank number.label } +% \end{macrocode} +% +% \begin{macro}{`initialize.extra.label.stuff'} +% \begin{macrocode} +FUNCTION {initialize.extra.label.stuff} +{ #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'last.extra.num := + "a" chr.to.int$ #1 - 'last.extra.num.blank := + last.extra.num.blank 'last.extra.num.extended := + #0 'number.label := +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`forward.pass'} +% \begin{macrocode} +FUNCTION {forward.pass} +{ last.label label = + { last.extra.num #1 + 'last.extra.num := + last.extra.num "z" chr.to.int$ > + { "a" chr.to.int$ 'last.extra.num := + last.extra.num.extended #1 + 'last.extra.num.extended := + } + 'skip$ + if$ + last.extra.num.extended last.extra.num.blank > + { last.extra.num.extended int.to.chr$ + last.extra.num int.to.chr$ + * 'extra.label := } + { last.extra.num int.to.chr$ 'extra.label := } + if$ + } + { "a" chr.to.int$ 'last.extra.num := + "" 'extra.label := + label 'last.label := + } + if$ + number.label #1 + 'number.label := +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</ay> +% \end{macrocode} +% +% \begin{macrocode} +%<*!ay&alph> +% \end{macrocode} +% +% \begin{macrocode} +STRINGS { longest.label last.sort.label next.extra } +% \end{macrocode} +% +% \begin{macrocode} +INTEGERS { longest.label.width last.extra.num } +% \end{macrocode} +% +% \begin{macro}{`initialize.longest.label'} +% \begin{macrocode} +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #0 int.to.chr$ 'last.sort.label := + "" 'next.extra := + #0 'longest.label.width := + #0 'last.extra.num := +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`forward.pass'} +% \begin{macrocode} +FUNCTION {forward.pass} +{ last.sort.label sort.label = + { last.extra.num #1 + 'last.extra.num := + last.extra.num int.to.chr$ 'extra.label := + } + { "a" chr.to.int$ 'last.extra.num := + "" 'extra.label := + sort.label 'last.sort.label := + } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</!ay&alph> +% \end{macrocode} +% +% \begin{macro}{`reverse.pass'} +% The extra label is added in braces so that natbib can treat it as one unit. +% This allows extra labels to be more than one letter long. For non-NFSS +% emphasizing, this is no problem, since labels go in |{\em a}|, but for +% non-emphasizing and for NFSS, it caused troubles without the braces. +% The trouble arises with multiple citations in one |\cite| in which +% authors and years are the same, and only the extra label is given for +% the next one. Note: |\emph{a}| is more than one letter long in this sense, +% so it is not just a problem for more than 26 papers with same authors and +% year. +% +% The command |\natexlab| now encloses the extra label for \texttt{natbib} +% styles. This command normally just prints its argument, but for numerical +% citation mode, it swallows its argument. This allows the extra labels to +% be suppressed for numerical citations where they are superfluous. +% The enclosing braces mentioned above must be included here to make the +% entire extra label text a single token for \texttt{natbib}. +% \begin{macrocode} +%<*ay> +% \end{macrocode} +% +% \begin{macrocode} +FUNCTION {reverse.pass} +{ next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + extra.label 'next.extra := + extra.label +%<xlab-it> emphasize +%<*!html> + duplicate$ empty$ + 'skip$ + { "{\natexlab{" swap$ * "}}" * } + if$ +%</!html> + 'extra.label := +%<!(har|ast|cay|nmd|cn)> label extra.label * 'label := +} +% \end{macrocode} +% +% \begin{macrocode} +%</ay> +% \end{macrocode} +% +% \begin{macrocode} +%<*!ay&alph> +% \end{macrocode} +% +% \begin{macrocode} +FUNCTION {reverse.pass} +{ next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + label extra.label * 'label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ + extra.label 'next.extra := +} +% \end{macrocode} +% +% \begin{macrocode} +%</!ay&alph> +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%<ay>EXECUTE {initialize.extra.label.stuff} +%<!ay&alph>EXECUTE {initialize.longest.label} +% \end{macrocode} +% +% \begin{macrocode} +%<*ay|alph> +ITERATE {forward.pass} +% \end{macrocode} +% +% \begin{macrocode} +REVERSE {reverse.pass} +% \end{macrocode} +% +% \begin{macrocode} +%</ay|alph> +% \end{macrocode} +% +% \begin{macrocode} +%<*ay> +FUNCTION {bib.sort.order} +{ sort.label + " " + * +%<seq-yrr> negate.year field.or.null sortify +%<!seq-yrr> year field.or.null sortify +%<(seq-yr|seq-yrr)&!(seq-lab|seq-key|seq-labc)> swap$ + * +%<*!seq-key&!seq-labc&!seq-yr&!seq-yrr> + " " + * + title field.or.null + sort.format.title + * +%</!seq-key&!seq-labc&!seq-yr&!seq-yrr> +%<seq-key|seq-yr|seq-yrr> " " * cite$ * + #1 entry.max$ substring$ + 'sort.key$ := +% "For " cite$ * ", bib.sort.key=" * sort.key$ * warning$ +%<har|cay|nmd|cn|ast> calc.short.label +} +% \end{macrocode} +% +% \begin{macrocode} +ITERATE {bib.sort.order} +% \end{macrocode} +% +% \begin{macrocode} +SORT +% \end{macrocode} +% +% \begin{macrocode} +%</ay> +% \end{macrocode} +% +% \begin{macrocode} +%<*!ay&!alph> +% \end{macrocode} +% +% \begin{macrocode} +STRINGS { longest.label } +% \end{macrocode} +% +% \begin{macrocode} +INTEGERS { number.label longest.label.width } +% \end{macrocode} +% +% \begin{macrocode} +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} +% \end{macrocode} +% +% \begin{macrocode} +FUNCTION {longest.label.pass} +%<*!cite> +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := +%</!cite> +%<cite>{ cite$ 'label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} +% \end{macrocode} +% +% \begin{macrocode} +EXECUTE {initialize.longest.label} +% \end{macrocode} +% +% \begin{macrocode} +ITERATE {longest.label.pass} +% \end{macrocode} +% +% \begin{macrocode} +%</!ay&!alph> +% \end{macrocode} +% +% \begin{macro}{`begin.bib'} +% The function \texttt{begin.bib} writes the initial text to the \texttt{.bbl} +% file. The most important matter here is that the \texttt{thebibliography} +% environment is invoked. +% +% Note: the French quotation marks are called `guillimets'; Adobe erroneously +% named the symbols `guillimot', which is an arctic bird. The error has so +% propagated, that it can no longer be corrected. \LaTeX\ took it over. +% \begin{macrocode} +FUNCTION {begin.bib} +%<*!html> +%<*!ay&alph> +{ et.al.char.used + { "\newcommand{\etalchar}[1]{$^{#1}$}" write$ newline$ } + 'skip$ + if$ + preamble$ empty$ +%</!ay&alph> +%<ay|!alph>{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ +%<ay> "\begin{thebibliography}{" number.label int.to.str$ * "}" * +%<!ay> "\begin{thebibliography}{" longest.label * "}" * + write$ newline$ +%<*(!nmft&(nmft-it|nmft-sc|nmft-bf|nmft-def))|(!lab&(lab-it|lab-bf|lab-sc|lab-def))> + "\typeout{**********************************}" write$ newline$ + "\typeout{WARNING WARNING WARNING WARNING WARNING}" write$ newline$ + "\typeout{The bst file has been generated with inconsistent options}" + write$ newline$ + "\typeout{Read the warning message at the start of the bst file}" + write$ newline$ + "\typeout{**********************************}" write$ newline$ +%</(!nmft&(nmft-it|nmft-sc|nmft-bf|nmft-def))|(!lab&(lab-it|lab-bf|lab-sc|lab-def))> +%<*!plntx> +%<!tit-it&tit-qq&qt-s> "\newcommand{\enquote}[1]{`#1'}" +%<!tit-it&tit-qq&!qt-s&!qt-g> "\newcommand{\enquote}[1]{``#1''}" +%</!plntx> +%<*plntx> +%<!tit-it&tit-qq&qt-s> "\def\enquote#1{`#1'}" +%<!tit-it&tit-qq&!qt-s&!qt-g> "\def\enquote#1{``#1''}" +%</plntx> +%<*!tit-it&tit-qq&!qt-s&qt-g> +%<!plntx> "\let\enquote\frquote" +%<*plntx> + "\def\guillemotleft{%" + write$ newline$ + " \leavevmode\raise .27ex\hbox{$\scriptscriptstyle\ll$}}" + write$ newline$ + "\def\guillemotright{%" + write$ newline$ + " \leavevmode\raise .27ex\hbox{$\scriptscriptstyle\gg$}}" + write$ newline$ + "\def\enquote#1{\guillemotleft#1\guillemotright}" +%</plntx> +%</!tit-it&tit-qq&!qt-s&qt-g> +%<!tit-it&tit-qq> write$ newline$ +%<umlaut> "\let\qq=\" quote$ * write$ newline$ +%<em-ul> "\expandafter\ifx\csname uline\endcsname\relax\let\uline\underline\fi" +%<em-ul> write$ newline$ +%<*ay> +%<!plntx> "\providecommand{\natexlab}[1]{#1}" +%<plntx> "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi" + write$ newline$ +%<*har> + "{\catcode`\|=0\catcode`\#=12\catcode`\@=11\catcode`\\=12" write$ newline$ + "|immediate|write|@auxout{\expandafter\ifx\csname natexlab\endcsname\relax\gdef\natexlab#1{#1}\fi}}" + write$ newline$ +%</har> +%</ay> +%<*nmft&nmft-def> +%<!plntx> "\providecommand{\bibnamefont}[1]{#1}" +%<plntx> "\expandafter\ifx\csname bibnamefont\endcsname\relax" +%<plntx> write$ newline$ +%<plntx> " \def\bibnamefont#1{#1}\fi" + write$ newline$ +%</nmft&nmft-def> +%<*nmft&fnm-def> +%<!plntx> "\providecommand{\bibfnamefont}[1]{#1}" +%<plntx> "\expandafter\ifx\csname bibfnamefont\endcsname\relax" +%<plntx> write$ newline$ +%<plntx> " \def\bibfnamefont#1{#1}\fi" + write$ newline$ +%</nmft&fnm-def> +%<*lab&lab-def> +%<!plntx> "\providecommand{\citenamefont}[1]{#1}" +%<plntx> "\expandafter\ifx\csname citenamefont\endcsname\relax" +%<plntx> write$ newline$ +%<plntx> " \def\citenamefont#1{#1}\fi" + write$ newline$ +%</lab&lab-def> +%<*(url&!harnm)|eprint> +%<*!plntx> +%<nfss> "\providecommand{\url}[1]{\texttt{#1}}" +%<!nfss> "\providecommand{\url}[1]{{\tt #1}}" + write$ newline$ + "\providecommand{\urlprefix}{}" + write$ newline$ +%</!plntx> +%<*plntx> + "\expandafter\ifx\csname url\endcsname\relax" + write$ newline$ +%<nfss> " \def\url#1{\texttt{#1}}\fi" +%<!nfss> " \def\url#1{{\tt #1}}\fi" + write$ newline$ + "\expandafter\ifx\csname urlprefix\endcsname\relax\def\urlprefix{}\fi" + write$ newline$ +%</plntx> +%</(url&!harnm)|eprint> +%<*doi> + "\expandafter\ifx\csname urlstyle\endcsname\relax" + write$ newline$ +%<*!plntx> + " \providecommand{\doi}[1]{doi:\discretionary{}{}{}#1}\else" + write$ newline$ + " \providecommand{\doi}{doi:\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi" + write$ newline$ +%</!plntx> +%<*plntx> + " \expandafter\ifx\csname doi\endcsname\relax" + write$ newline$ + " \def\doi#1{doi:\discretionary{}{}{}#1}\fi \else" + write$ newline$ + " \expandafter\ifx\csname doi\endcsname\relax" + write$ newline$ + " \def\doi{doi:\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi \fi" + write$ newline$ +%</plntx> +%</doi> +%<*url-doi&url> + "\providecommand{\doiprefix}{doi: }" + write$ newline$ + "\expandafter\ifx\csname href\endcsname\relax" + write$ newline$ + " \providecommand{\urldoi}[1]{#1}\else" + write$ newline$ + " \providecommand{\urldoi}[1]{\href{https://doi.org/#1}{#1}}\fi" + write$ newline$ +%</url-doi&url> +%<*lang> +%<!plntx> "\providecommand{\selectlanguage}[1]{\relax}" +%<*plntx> + "\expandafter\ifx\csname selectlanguage\endcsname\relax" + write$ newline$ + " \def\selectlanguage#1{}\fi" +%</plntx> + write$ newline$ +%</lang> +%<*!plntx> +%<*babel> + "\input{babelbst.tex}" write$ newline$ + "\newcommand{\Capitalize}[1]{\uppercase{#1}}" write$ newline$ + "\newcommand{\capitalize}[1]{\expandafter\Capitalize#1}" write$ newline$ +%</babel> +%<*annote> + "\providecommand{\bibAnnoteFile}[1]{%" + write$ newline$ + " \IfFileExists{#1}{\begin{quotation}\noindent\textsc{Key:} #1\\" + write$ newline$ + " \textsc{Annotation:}\ \input{#1}\end{quotation}}{}}" + write$ newline$ + "\providecommand{\bibAnnote}[2]{%" + write$ newline$ + " \begin{quotation}\noindent\textsc{Key:} #1\\" + write$ newline$ + " \textsc{Annotation:}\ #2\end{quotation}}" + write$ newline$ +%</annote> +%</!plntx> +%<*bibinfo> +%<!plntx> "\providecommand{\bibinfo}[2]{#2}" +%<plntx> "\expandafter\ifx\csname bibinfo\endcsname\relax\def\bibinfo#1#2{#2}\fi" + write$ newline$ +%</bibinfo> +%<*eprint> +%<!plntx> "\providecommand{\eprint}[2][]{\url{#2}}" +%<plntx> "\expandafter\ifx\csname eprint\endcsname\relax\def\eprint#1{\url{#1}}\fi" + write$ newline$ +%</eprint> +} +%</!html> +%<*html> +{ +"<html><head><title>Bibliography Listing</title></head>" write$ newline$ +"<body>" write$ newline$ +"<h2>Bibliography</h2>" write$ newline$ +%<htdes>"<dl>" write$ newline$ +%<!htdes&htlist>"<ol>" write$ newline$ +} +%</html> +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +EXECUTE {begin.bib} +% \end{macrocode} +% +% \begin{macrocode} +EXECUTE {init.state.consts} +% \end{macrocode} +% +% \begin{macrocode} +ITERATE {call.type$} +% \end{macrocode} +% +% \begin{macro}{`end.bib'} +% \begin{macrocode} +FUNCTION {end.bib} +{ newline$ +%<!html> "\end{thebibliography}" write$ newline$ +%<html> "</dl></body></html>" write$ newline$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +EXECUTE {end.bib} +% \end{macrocode} +% +% \begin{macrocode} +%</!head> +% \end{macrocode} +% +% \begin{macrocode} +%</!options&!driver&!bblbst> +% \end{macrocode} +% +% \section{The File \texttt{babelbst.tex} for English} +% The following contains the definitions for the \texttt{babel} language +% selection as they apply to English. This file may be extracted with +% \dtx{} and the option \texttt{bblbst}. +% \begin{macrocode} +%<*bblbst> + % This is babelbst.tex for English. + % It should serve as a model for other languages. + % Alternatively, store it under a different name (e.g. englbst.tex) + % and then \input it with a command in babelbst.tex. +\def\bbland{and} \def\bbletal{et~al.} +\def\bbleditors{editors} \def\bbleds{eds.} +\def\bbleditor{editor} \def\bbled{ed.} +\def\bbledby{edited by} +\def\bbledition{edition} \def\bbledn{edn.} +\def\bblvolume{volume} \def\bblvol{vol.} +\def\bblof{of} +\def\bblnumber{number} \def\bblno{no.} +\def\bblin{in} +\def\bblpages{pages} \def\bblpp{pp.} +\def\bblpage{page} \def\bblp{p.} +\def\bbleidpp{pages} +\def\bblchapter{chapter} \def\bblchap{chap.} +\def\bbltechreport{Technical Report} +\def\bbltechrep{Tech. Rep.} +\def\bblmthesis{Master's thesis} +\def\bblphdthesis{Ph.D. thesis} +\def\bblfirst{First} \def\bblfirsto{1st} +\def\bblsecond{Second} \def\bblsecondo{2nd} +\def\bblthird{Third} \def\bblthirdo{3rd} +\def\bblfourth{Fourth} \def\bblfourtho{4th} +\def\bblfifth{Fifth} \def\bblfiftho{5th} +\def\bblst{st} \def\bblnd{nd} \def\bblrd{rd} +\def\bblth{th} +\def\bbljan{January} \def\bblfeb{February} \def\bblmar{March} +\def\bblapr{April} \def\bblmay{May} \def\bbljun{June} +\def\bbljul{July} \def\bblaug{August} \def\bblsep{September} +\def\bbloct{October} \def\bblnov{November} \def\bbldec{December} +%</bblbst> +% \end{macrocode} +% +% \Finale |