%D \module %D [ file=publ-imp-cite, %D version=2013.12.24, %D title=\CONTEXT\ Publication Support, %D subtitle=Citations, %D author=Alan Braslau and Hans Hagen, %D date=\currentdate, %D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. \unprotect \starttexdefinition btx:cite:inject #content \ifconditional\btxinteractive \ifx\currentbtxinternal\empty #content \else \goto { #content } [ \s!internal(\currentbtxinternal) ] \fi \else #content \fi \stoptexdefinition \starttexdefinition btx:cite:checkconcat \ifnum\currentbtxcount>\zerocount \let\currentbtxinternal\empty \let\currentbtxbacklink\empty \fi \stoptexdefinition % The null case: \startsetups btx:cite:none \btxcitereference % dummy \stopsetups \startsetups btx:cite:nocite \dontleavehmode \btxcitereference \stopsetups \startsetups btx:cite:unknown \begingroup \btxcitereference \currentbtxfirst \endgroup \stopsetups \startsetups btx:cite:empty \btxcitereference \stopsetups % \startsetups btx:cite:normal % \ifx\currentbtxfirst\empty % \fastsetup{\s!btx:\s!cite:\s!empty} % \else\ifx\currentbtxsecond\empty % \btxcitereference % \currentbtxfirst % \ifx\currentbtxthird\empty \else % \currentbtxthird % \fi % \else % \btxcitereference % \currentbtxfirst % \btxparameter\v!inbetween % \currentbtxsecond % \ifx\currentbtxthird\empty \else % \currentbtxthird % \fi % \fi\fi % \stopsetups %\startsetups btx:cite:range % \ifx\currentbtxfirst\empty % \fastsetup{\s!btx:\s!cite:\s!empty} % \else\ifx\currentbtxsecond\empty % \btxcitereference % \currentbtxfirst % \ifx\currentbtxthird\empty \else % \currentbtxthird % \fi % \else % \btxcitereference % \currentbtxfirst % \btxparameter\c!range % \currentbtxsecond % \ifx\currentbtxthird\empty \else % \currentbtxthird % \fi % \fi\fi %\stopsetups \starttexdefinition btx:cite:concat \ifcase\currentbtxconcat \or \or \btxparameter\c!pubsep \or \btxparameter\c!lastpubsep \or \btxparameter\c!finalpubsep \fi \stoptexdefinition \startsetups btx:cite:normal \texdefinition{\s!btx:\s!cite:concat} \ifx\currentbtxfirst\empty \fastsetup{\s!btx:\s!cite:\s!empty} \else \texdefinition {\s!btx:\s!cite:inject} { \btxcitereference \btxusecommand[\currentbtxspecification:cite:\currentbtxcitevariant] { \currentbtxfirst } } \ifx\currentbtxsecond\empty \else \btxparameter\v!inbetween \texdefinition {\s!btx:\s!cite:inject} { \btxusecommand[\currentbtxspecification:cite:\currentbtxcitevariant] { \currentbtxsecond } } \fi \ifx\currentbtxthird\empty \else \texdefinition {\s!btx:\s!cite:inject} { \btxusecommand[\currentbtxspecification:cite:\currentbtxvariant] { \currentbtxthird } } \fi \fi \stopsetups \startsetups btx:cite:range \texdefinition{\s!btx:\s!cite:concat} \ifx\currentbtxfirst\empty \fastsetup{\s!btx:\s!cite:\s!empty} \else \texdefinition {\s!btx:\s!cite:inject} { \btxcitereference \currentbtxfirst \ifx\currentbtxsecond\empty \else \btxparameter\c!range \currentbtxsecond \fi \ifx\currentbtxthird\empty \else \currentbtxthird \fi } \fi \stopsetups \startsetups btx:cite:listelement \texdefinition{\s!btx:\s!cite:concat} \ifx\currentbtxfirst\empty \fastsetup{\s!btx:\s!cite:\s!empty} \else \texdefinition {\s!btx:\s!cite:inject} { \btxcitereference \currentbtxfirst } \fi \stopsetups \startsetups btx:cite:author \texdefinition{\s!btx:\s!cite:concat} \ifx\currentbtxfirst\empty \fastsetup{\s!btx:\s!cite:\s!empty} \else \texdefinition {\s!btx:\s!cite:inject} { \btxcitereference \currentbtxfirst } \fi \ifx\currentbtxsecond\empty \else \relax % keeps a following space \btxparameter\v!inbetween \texdefinition {\s!btx:\s!cite:inject} { \currentbtxsecond } \fi \ifx\currentbtxthird\empty \else \texdefinition {\s!btx:\s!cite:inject} { \currentbtxthird } \fi \stopsetups % these three are goodies to get something bit are not set up as it makes no % sense to have something root for combinations like this (esp not because one % gets default anyway \startsetups btx:cite:authoryear \fastsetup{btx:cite:author} \stopsetups \startsetups btx:cite:authoryears \fastsetup{btx:cite:author} \stopsetups \startsetups btx:cite:authornum \fastsetup{btx:cite:author} \stopsetups \startsetups btx:cite:authorref \ifx{\btxparameter\c!alternative}{authoryear} \fastsetup{btx:cite:authoryears} \else\ifx{\btxparameter\c!alternative}{num} \fastsetup{btx:cite:authornum} \else \fastsetup{btx:cite:author} \fi\fi \stopsetups \startsetups btx:cite:num \fastsetup{btx:cite:range} \stopsetups \startsetups btx:cite:year \fastsetup{btx:cite:range} \stopsetups % the following is kind of specific, but can be used in many renderings \startsetups btx:cite:url \ifx\currentbtxfirst\empty \fastsetup{\s!btx:\s!cite:\s!empty} \else\ifconditional\btxinteractive \goto { \btxcitereference \hyphenatedurl{\doif{\currentbtxcitevariant}{doi}{doi:}\currentbtxfirst} } [ url(\doif{\currentbtxcitevariant}{doi}{http://dx.doi.org/}\currentbtxfirst) ] \else \btxcitereference \hyphenatedurl{\doif{\currentbtxcitevariant}{doi}{doi:}\currentbtxfirst} \fi\fi \stopsetups \protect