publ-imp-cite.mkvi /size: 7484 b    last modification: 2025-02-21 11:03
1%D \module
2%D   [       file=publ-imp-cite,
3%D        version=2013.12.24,
4%D          title=\CONTEXT\ Publication Support,
5%D       subtitle=Citations,
6%D         author=Alan Braslau and Hans Hagen,
7%D           date=\currentdate,
8%D      copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
9%C
10%C This module is part of the \CONTEXT\ macro||package and is
11%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
12%C details.
13
14\unprotect
15
16% \starttexdefinition mutable protected btx:cite:inject #content
17%     \texdefinition{btx:format:gotointernal} {
18%         #content
19%     }
20% \stoptexdefinition
21
22\starttexdefinition mutable protected btx:cite:inject #content
23    \btxstarttaggedcite
24    \texdefinition{btx:format:gotointernal} {
25        #content
26    }
27    \btxstoptaggedcite
28\stoptexdefinition
29
30\starttexdefinition mutable protected btx:cite:checkconcat
31    \ifnum\currentbtxcount>\zerocount
32        \let\currentbtxinternal\empty
33        \let\currentbtxbacklink\empty
34    \fi
35\stoptexdefinition
36
37% The null case:
38
39\startsetups btx:cite:none
40    \btxcitereference
41    % dummy
42\stopsetups
43
44\startsetups btx:cite:nocite
45    \dontleavehmode
46    \btxcitereference
47\stopsetups
48
49\startsetups btx:cite:unknown
50    \begingroup
51        \tttf
52        \btxcitereference
53        \currentbtxfirst
54    \endgroup
55\stopsetups
56
57\startsetups btx:cite:empty
58    \btxcitereference
59    <empty>
60\stopsetups
61
62\startsetups btx:cite:lefttext
63  \ifx\currentbtxlefttext\empty \else
64    \startbtxrunningstyleandcolor
65        \setbtxparameterset{\s!cite}{lefttext}
66        \btxparameter\c!left
67            \currentbtxlefttext
68        \btxparameter\c!right
69    \stopbtxrunningstyleandcolor
70  \fi
71\stopsetups
72
73\startsetups btx:cite:righttext
74    \ifx\currentbtxrighttext\empty \else
75        \startbtxrunningstyleandcolor
76            \setbtxparameterset{\s!cite}{righttext}
77            \btxparameter\c!left
78                \currentbtxrighttext
79            \btxparameter\c!right
80        \stopbtxrunningstyleandcolor
81    \fi
82\stopsetups
83
84\startsetups btx:cite:invalid
85     \btxcitereference
86   % {\tt <\currentbtxreference>}
87     {\tt <\currentbtxmissingreference>}
88\stopsetups
89
90\startsetups btx:cite:concat
91    \startbtxrunningstyleandcolor
92        \btxparameter{\c!separator:\number\currentbtxconcat}
93    \stopbtxrunningstyleandcolor
94\stopsetups
95
96% when we have an author-year combination, the first and seconds is not
97% fields data but something more complex (that itself calls for a setup)
98
99\startsetups btx:cite:normal
100    \fastsetup{\s!btx:\s!cite:concat}
101    \fastsetup{\s!btx:\s!cite:lefttext}
102    \ifx\currentbtxfirst\empty
103        \fastsetup{\s!btx:\s!cite:\s!empty}
104    \else\ifx\currentbtxsecond\empty
105        \texdefinition {\s!btx:\s!cite:inject} {
106            \btxcitereference
107            \btxusecommand [\currentbtxspecification:cite:\currentbtxcitealternative] {
108                \currentbtxfirst
109                \btxflushsuffix
110            }
111        }
112    \else
113        \texdefinition {\s!btx:\s!cite:inject} {
114            \btxcitereference
115            \btxusecommand [\currentbtxspecification:cite:\currentbtxcitealternative] {
116                \currentbtxfirst
117                \btxparameter\c!inbetween
118                \currentbtxsecond
119                \btxflushsuffix
120             }
121        }
122    \fi\fi
123    \fastsetup{\s!btx:\s!cite:righttext}
124\stopsetups
125
126\startsetups btx:cite:range
127    \fastsetup{\s!btx:\s!cite:concat}
128    \fastsetup{\s!btx:\s!cite:lefttext}
129    \ifx\currentbtxfirst\empty
130        \fastsetup{\s!btx:\s!cite:\s!empty}
131    \else
132        \texdefinition {\s!btx:\s!cite:inject} {
133            \btxcitereference
134            \btxusecommand [\currentbtxspecification:cite:\currentbtxcitealternative] {
135                \currentbtxfirst
136                \ifx\currentbtxsecond\empty \else
137                    \btxparameter\c!range
138                    \currentbtxsecond
139                \fi
140                \btxflushsuffix
141            }
142        }
143    \fi
144    \fastsetup{\s!btx:\s!cite:righttext}
145\stopsetups
146
147% somehow related to keywords:
148
149\startsetups btx:cite:listelement
150    \fastsetup{\s!btx:\s!cite:concat}
151    \fastsetup{\s!btx:\s!cite:lefttext}
152    \ifx\currentbtxfirst\empty
153        \fastsetup{\s!btx:\s!cite:\s!empty}
154    \else
155       \texdefinition {\s!btx:\s!cite:inject} {
156           \btxcitereference
157           \currentbtxfirst
158       }
159    \fi
160    \fastsetup{\s!btx:\s!cite:righttext}
161\stopsetups
162
163\startsetups \s!btx:\s!cite:entry
164    \fastsetup{\s!btx:\s!cite:concat}
165    \fastsetup{\s!btx:\s!cite:lefttext}
166    \btxhandleciteentry
167    \fastsetup{\s!btx:\s!cite:righttext}
168\stopsetups
169
170\startsetups \s!btx:\s!cite:footnote
171    \startfootnote
172        \fastsetup{btx:cite:entry}
173    \stopfootnote
174\stopsetups
175
176% these three are goodies to get something but are not set up as it makes no
177% sense to have something root for combinations like this (esp not because one
178% gets default anyway
179
180% AB: not so sure about that. Why define them in default rather than here?
181
182\startsetups \s!btx:\s!cite:author
183    \fastsetup{\s!btx:\s!cite:normal}
184\stopsetups
185\startsetups \s!btx:\s!cite:authoryear
186    \fastsetup{\s!btx:\s!cite:normal}
187\stopsetups
188\startsetups \s!btx:\s!cite:authoryears
189    \fastsetup{\s!btx:\s!cite:normal}
190\stopsetups
191\startsetups \s!btx:\s!cite:authornum
192    \fastsetup{\s!btx:\s!cite:normal}
193\stopsetups
194\startsetups \s!btx:\s!cite:num
195    \fastsetup{\s!btx:\s!cite:range}
196\stopsetups
197\startsetups \s!btx:\s!cite:default
198    \fastsetup{\s!btx:\s!cite:num}
199\stopsetups
200\startsetups \s!btx:\s!cite:textnum
201    \fastsetup{\s!btx:\s!cite:num}
202\stopsetups
203\startsetups \s!btx:\s!cite:year
204    \fastsetup{\s!btx:\s!cite:range}
205\stopsetups
206\startsetups \s!btx:\s!cite:author:num
207    \fastsetup{\s!btx:\s!cite:range}
208\stopsetups
209\startsetups \s!btx:\s!cite:author:year
210    \fastsetup{\s!btx:\s!cite:range}
211\stopsetups
212\startsetups \s!btx:\s!cite:author:years
213    \fastsetup{\s!btx:\s!cite:range}
214\stopsetups
215
216\startsetups \s!btx:\s!cite:index
217    \fastsetup{\s!btx:\s!cite:range}
218\stopsetups
219\startsetups \s!btx:\s!cite:category
220    \fastsetup{\s!btx:\s!cite:normal}
221\stopsetups
222\startsetups \s!btx:\s!cite:short
223    \fastsetup{\s!btx:\s!cite:normal}
224\stopsetups
225\startsetups \s!btx:\s!cite:tag
226    \fastsetup{\s!btx:\s!cite:normal}
227\stopsetups
228
229% the following correspond to fields, but can be used in many renderings
230
231\startsetups \s!btx:\s!cite:keywords
232    \fastsetup{\s!btx:\s!cite:list}
233\stopsetups
234\startsetups \s!btx:\s!cite:title
235    \fastsetup{\s!btx:\s!cite:normal}
236\stopsetups
237\startsetups \s!btx:\s!cite:pages
238    \fastsetup{\s!btx:\s!cite:range}
239\stopsetups
240
241% is the next one used?
242% Yes, bibtex is a mess and one can have pages or sometimes page
243
244\startsetups \s!btx:\s!cite:page
245    \fastsetup{\s!btx:\s!cite:normal}
246\stopsetups
247
248% the following are kind of specific, but can be used in many renderings
249
250\startsetups btx:cite:url
251    \ifx\currentbtxfirst\empty
252        \fastsetup{\s!btx:\s!cite:\s!empty}
253    \else
254        \texdefinition {btx:format:goto} {
255            url(\currentbtxfirst)
256        } {
257            \btxcitereference
258            \hyphenatedurl{\currentbtxfirst}
259        }
260    \fi
261\stopsetups
262
263\startsetups btx:cite:doi
264    \ifx\currentbtxfirst\empty
265        \fastsetup{\s!btx:\s!cite:\s!empty}
266    \else
267        \texdefinition {btx:format:goto} {
268            url(http://dx.doi.org/\currentbtxfirst)
269        } {
270            \btxcitereference
271            \hyphenatedurl{doi:\currentbtxfirst}
272        }
273    \fi
274\stopsetups
275
276\protect
277