1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33\writestatus { loading }{ ConTeXt Bibliography Support BibTeX }
34
35\definefilesynonym [ bib ][ obsolete ]
36
37\registerctxluafile { bibl tra }{}
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185\unprotect
186
187\def \biblistname { pubs }
188
189\definelist
190 [ pubs ]
191
192\setuplist
193 [ pubs ]
194 [ \c!state = \v!start ,
195 \c!criterium = \@@pbcriterium ,
196 \c!headnumber = \v!always ,
197 \c!width =]
198
199\installstructurelistprocessor { pubs : userdata }
200 { \ctxlua{ bibtex . hacks . add ( structures . lists . uservalue ( " \currentlist " , \currentlistindex , " bibref " ) , \currentlistindex ) } }
201
202\ifdefined \bibtexblock \else \newcount \bibtexblock \fi \bibtexblock \plusone
203\ifdefined \bibtexcounter \else \newcount \bibtexcounter \fi
204
205
206
207
208
209
210\unexpanded \def \bibdoifelse # 1
211 { \expandafter\def\expandafter \!!stringa \expandafter { # 1 }
212 \ifx \!!stringa \empty
213 \expandafter \secondoftwoarguments
214 \else
215 \expandafter \firstoftwoarguments
216 \fi }
217
218\unexpanded \def \bibdoifnot # 1
219 { \expandafter\def\expandafter \!!stringa \expandafter { # 1 }
220 \ifx \!!stringa \empty
221 \expandafter \firstofoneargument
222 \else
223 \expandafter \gobbleoneargument
224 \fi }
225
226\unexpanded \def \bibdoif # 1
227 { \expandafter\def\expandafter \!!stringa \expandafter { # 1 }
228 \ifx \!!stringa \empty
229 \expandafter \gobbleoneargument
230 \else
231 \expandafter \firstofoneargument
232 \fi }
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252\newtoks \everysetupbibtex
253
254\unexpanded \def \setupbibtex
255 { \dosingleempty \dosetupbibtex }
256
257\unexpanded \def \dosetupbibtex [# 1 ]
258 { \let \@@pbdatabase \empty
259 \getparameters [ \??pb ][# 1 ]
260 \the \everysetupbibtex }
261
262\unexpanded \def \installbibtexsorter # 1 # 2
263 { \setvalue { \??pb : \c!sort : # 1 }{ # 2 }}
264
265\installbibtexsorter \v!no { no }
266\installbibtexsorter \v!author { au }
267\installbibtexsorter \v!title { ti }
268\installbibtexsorter \v!short { ab }
269\installbibtexsorter \empty { no }
270\installbibtexsorter \s!default { no }
271
272\def \thebibtexsorter { \executeifdefined { \??pb : \c!sort : \@@pbsort } \@@pbsort }
273
274\appendtoks
275 \ifx \@@pbdatabase \empty \else
276 \doifmode { * \v!first }{ \ctxlua{ bibtex . hacks . process { style = " \thebibtexsorter " , database = " \@@pbdatabase " } } }
277 \fi
278\to \everysetupbibtex
279
280\setupbibtex
281 [ \c!sorttype = \v!cite ,
282 \c!sort = no ]
283
284
285
286
287
288\newtoks \everysetuppublications
289
290\unexpanded \def \setuppublications
291 { \dosingleargument \dosetuppublications }
292
293\unexpanded \def \dosetuppublications [# 1 ]
294 { \getparameters [ \??pb ][ \c!alternative = , # 1 ]
295 \doifsomething \@@pbalternative
296 { \readsysfile { bibl \@@pbalternative . tex }
297 { \showmessage \m!publications { 6 }{ bibl \@@pbalternative }}
298 { \showmessage \m!publications { 1 }{ bibl \@@pbalternative }}
299 \let \@@pbalternative \empty }
300 \let \setuppublicationlayout \normalsetuppublicationlayout
301 \getparameters [ \??pb ][# 1 ]
302 \the \everysetuppublications
303 \ignorespaces }
304
305
306
307
308\setnewconstant \bibtexoncemode \plusone
309
310\appendtoks
311 \doifelse \@@pbmethod \v!local
312 { \bibtexoncemode \plusone }
313 { \bibtexoncemode \plustwo }
314\to \everysetuppublications
315
316
317
318\newif \ifbibcitecompress \bibcitecompresstrue
319
320\def \@@pbinumbercommand { \executeifdefined { \??pb : \c!numbercommand : \@@pbnumbering } \firstofoneargument }
321
322\setvalue { \??pb : \c!numbercommand : \v!yes } # 1 { # 1 }
323\setvalue { \??pb : \c!numbercommand : \v!no } # 1 {}
324\setvalue { \??pb : \c!numbercommand : \v!short } # 1 { \bibgetvars \currentpublicationkey }
325\setvalue { \??pb : \c!numbercommand : \v!bib } # 1 { \bibgetvarn \currentpublicationkey }
326
327
328
329
330
331
332\appendtoks
333 \processaction
334 [ \@@pbrefcommand ]
335 [ \s!default => \edef \@@citedefault { \@@pbrefcommand } ,
336 \s!unknown => \edef \@@citedefault { \@@pbrefcommand } ]
337\to \everysetuppublications
338
339\unexpanded \def \bibleftnumber # 1 { # 1 \hfill }
340
341
342
343
344
345
346
347
348\unexpanded \def \usepublications [# 1 ]
349 { \processcommalist [# 1 ] \dousepublications }
350
351\unexpanded \def \dousepublications # 1
352 { \doonlyonce { # 1 . \f!bibextension }{ \dodousepublications { # 1 }}}
353
354\unexpanded \def \dodousepublications # 1
355 { \let \@@savedpar \par
356 \let\par\ignorespaces
357 \ifhmode \kern \zeropoint \fi
358 \pushcatcodetable
359 \setcatcodetable \ctxcatcodes
360 \readfile { # 1 . \f!bibextension }
361 { \showmessage \m!publications { 4 }{ # 1 . \f!bibextension }}
362 { \showmessage \m!publications { 2 }{ # 1 . \f!bibextension }}
363 \popcatcodetable
364 \ifhmode \removeunwantedspaces \fi
365 \let\par \@@savedpar }
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380\def \publicationlistparameter # 1 { \csname \??pv : l : # 1 \endcsname }
381
382\unexpanded \def \setuppublicationlist
383 { \dosingleempty \dosetuppublicationlist }
384
385\unexpanded \def \dosetuppublicationlist [# 1 ]
386 { \getparameters [ \??pv : l : ][# 1 ]
387 \setuplist [ pubs ][ \c!samplesize = { AA 9 9 } , \c!alternative = a , \c!interaction = , \c!pagenumber = \v!no , # 1 , \c!command =] }
388
389\unexpanded \def \setuppublicationlayout [# 1 ]# 2
390 { \setvalue { \??pv : l : # 1 }{ # 2 }}
391
392\let \normalsetuppublicationlayout \setuppublicationlayout
393
394\setuppublicationlist
395 [ \c!title = ,
396 \c!command = \dospecialbibinsert ,
397 \c!maybeyear = \v!on ]
398
399
400
401
402
403
404\def \bibalternative # 1
405 { \csname \??pv \@@currentalternative # 1 \endcsname }
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425\newtoks \initializebibdefinitions
426
427\unexpanded \def \simplebibdef # 1
428 { \expandafter\def\csname bib @ # 1 \endcsname ## 1
429 { \setvalue { \??pb @ # 1 }{ ## 1 } \ignorespaces }
430 \expandafter \appendtoks
431 \expandafter\let\csname insert # 1 \expandafter\endcsname\csname bibinsert # 1 \endcsname
432 \to \initializebibdefinitions
433 \expandafter \unexpanded \expandafter\def\csname bibinsert # 1 \endcsname ## 1 ## 2 ## 3
434 { \expandafter \bibdoifelse \expandafter { \csname \??pb @ # 1 \endcsname }{ ## 1 \csname \??pb @ # 1 \endcsname ## 2 }{ ## 3 }}}
435
436\def \bibcommandlist
437 { abstract , annotate , arttitle , assignee , bibnumber , bibtype , biburl , chapter , city ,
438 comment , country , day , dayfiled , doi , edition , eprint , howpublished , isbn , issn ,
439 issue , journal , keyword , keywords , lastchecked , month , monthfiled , names , nationality ,
440 note , notes , organization , pages , pubname , pubyear , revision , series , size , thekey ,
441 title , volume , yearfiled }
442
443\processcommacommand [ \bibcommandlist ] \simplebibdef
444
445\unexpanded \def \bibinsertdoi # 1 # 2 # 3
446 { \bibdoifelse { \@@pb@doi }{ # 1 \expanded { \bibgotoDOI { \@@pb@thekey }{ \@@pb@doi }} # 2 }{ # 3 }}
447
448\unexpanded \def \bibinsertbiburl # 1 # 2 # 3
449 { \bibdoifelse { \@@pb@biburl }{ # 1 \expanded { \bibgotoURL { \@@pb@thekey }{ \@@pb@biburl }} # 2 }{ # 3 }}
450
451\unexpanded \def \bibinsertmonth # 1 # 2 # 3
452 { \bibdoifelse \@@pb@month
453 { # 1 \doifelsenumber \@@pb@month
454 { \doifelseconversiondefined \@@pbmonthconversion
455 { \convertnumber \@@pbmonthconversion \@@pb@month }{ \@@pb@month }}
456 { \@@pb@month } # 2 }
457 { # 3 }}
458
459\appendtoks
460 \let \inserturl \bibinsertbiburl
461 \let \inserttype \bibinsertbibtype
462\to \initializebibdefinitions
463
464\unexpanded \def \newbibfield [# 1 ]
465 { \simplebibdef { # 1 }
466 \edef \bibcommandlist { \bibcommandlist , # 1 }}
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495\unexpanded \def \docomplexbibdef # 1
496 { \dodoubleempty \dodocomplexbibdef [# 1 ] }
497
498\unexpanded \def \dodocomplexbibdef [# 1 ][# 2 ]# 3
499 { \doquadrupleempty \dododocomplexbibdef [# 1 ][# 2 ][# 3 ] }
500
501\unexpanded \def \dododocomplexbibdef [# 1 ][# 2 ][# 3 ][# 4 ]# 5 # 6
502 { \expandafter \increment \csname # 1 @ num \endcsname
503 \setevalue { \??pb @ # 1 \csname # 1 @ num \endcsname }{{ # 3 }{ # 5 }{ # 6 }{ # 4 }{ # 2 }} \ignorespaces }
504
505\unexpanded \def \complexbibdef # 1
506 { \expandafter \newcounter \csname # 1 @ num \endcsname
507 \expandafter\def\csname bib @ # 1 \endcsname { \docomplexbibdef { # 1 }}
508 \expandafter \appendtoks
509 \expandafter\let\csname insert # 1 s \expandafter\endcsname\csname bibinsert # 1 s \endcsname
510 \to \initializebibdefinitions
511 \expandafter\def\csname bibinsert # 1 s \endcsname ## 1 ## 2 ## 3 { \specialbibinsert { # 1 }{ \csname # 1 @ num \endcsname }{ ## 1 }{ \unskip ## 2 }{ ## 3 }}}
512
513\processcommalist [ author , artauthor , editor ] \complexbibdef
514
515
516
517
518\newcount \etallimitcounter
519\newcount \etaldisplaycounter
520\newcount \todocounter
521
522\unexpanded \def \specialbibinsert # 1 # 2 # 3 # 4 # 5
523 { \bgroup
524 \ifnum # 2 > \zerocount
525 \etallimitcounter = 0 \bibalternative { # 1 etallimit } \relax
526 \etaldisplaycounter = 0 \bibalternative { # 1 etaldisplay } \relax
527 \ifnum # 2 > \etallimitcounter
528 \todocounter \etaldisplaycounter
529
530 \ifnum \todocounter > \etallimitcounter
531 \todocounter \etallimitcounter
532 \fi
533 \else
534 \todocounter # 2 \relax
535 \fi
536 \ifnum \todocounter > \zerocount
537
538 \let \templist \empty
539 \dorecurse { # 2 }
540 { \scratchtoks\doubleexpandafter { \csname \??pb @ # 1 \recurselevel \endcsname }
541 \edef \templist { \ifx \templist \empty \else \templist , \fi\the \scratchtoks }}
542 # 3 \publicationlistparameter \c!command { # 1 }{ \todocounter }{ \templist } # 4 \relax
543 \else
544 # 5
545 \fi
546 \else
547 # 5
548 \fi
549 \egroup }
550
551
552
553
554
555
556
557
558
559\unexpanded \def \doprocessauthoritem # 1 # 2 # 3
560 { \advance \scratchcounter \plusone
561 \ifnum \numexpr \scratchcounter \plusone \relax <# 2 \relax
562 \publicationlistparameter { # 1 } # 3
563 \ifnum \scratchcounter =# 2 \relax
564 \ifnum \etallimitcounter < \commalistsize \relax
565 \bibalternative { # 1 etaltext }
566 \fi
567 \else\ifnum\numexpr \scratchcounter \plusone \relax =# 2 \relax
568 \ifnum \commalistsize > \plustwo
569 \bibalternative \c!finalnamesep
570 \else
571 \bibalternative \c!lastnamesep
572 \fi
573 \else
574 \bibalternative \c!namesep
575 \fi\fi
576 \fi }
577
578\unexpanded \def \dospecialbibinsert # 1 # 2 # 3
579 { \getcommacommandsize [# 3 ]
580 \scratchcounter \zerocount
581 \processcommacommand [# 3 ] { \doprocessauthoritem { # 1 }{ # 2 }}}
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600\unexpanded \def \normalauthor # 1 # 2 # 3 # 4 # 5
601 { \bibdoif { # 1 }{ # 1 \bibalternative \c!firstnamesep }
602 \bibdoif { # 2 }{ # 2 \bibalternative \c!vonsep }
603 # 3
604 \bibdoif { # 5 }{ \bibalternative \c!surnamesep # 5 \unskip }}
605
606\unexpanded \def \normalshortauthor # 1 # 2 # 3 # 4 # 5
607 { \bibdoif { # 4 }{ # 4 \bibalternative \c!firstnamesep }
608 \bibdoif { # 2 }{ # 2 \bibalternative \c!vonsep }
609 # 3
610 \bibdoif { # 5 }{ \bibalternative \c!surnamesep # 5 \unskip }}
611
612\unexpanded \def \invertedauthor # 1 # 2 # 3 # 4 # 5
613 { \bibdoif { # 2 }{ # 2 \bibalternative \c!vonsep }
614 # 3
615 \bibdoif { # 5 }{ \bibalternative \c!juniorsep # 5 }
616 \bibdoif { # 1 }{ \bibalternative \c!surnamesep # 1 \unskip }}
617
618\unexpanded \def \invertedshortauthor # 1 # 2 # 3 # 4 # 5
619 { \bibdoif { # 2 }{ # 2 \bibalternative \c!vonsep }
620 # 3
621 \bibdoif { # 5 }{ \bibalternative \c!juniorsep # 5 }
622 \bibdoif { # 4 }{ \bibalternative \c!surnamesep # 4 \unskip }}
623
624
625
626
627
628
629\unexpanded \def \clearbibitem # 1 { \setvalue { \??pb @ # 1 }{}}
630
631\unexpanded \def \clearbibitemtwo # 1
632 {
633 \letvalue { # 1 @ num } \!!zerocount }
634
635\unexpanded \def \bibitemdefs # 1
636 { \expandafter\let\csname # 1 \expandafter\endcsname\csname bib @ # 1 \endcsname }
637
638\unexpanded \def \presetbibvariables
639 { \processcommacommand [ \bibcommandlist , crossref ] \clearbibitem
640 \processcommalist [ artauthor , author , editor ] \clearbibitemtwo
641 \processcommacommand [ \bibcommandlist ] \bibitemdefs
642 \processcommalist [ artauthor , author , editor , crossref ] \bibitemdefs }
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668\unexpanded \def \startpublication
669 { \dosingleempty \dostartpublication }
670
671\let \stoppublication \relax
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687\unexpanded \def \dostartpublication [# 1 ]
688 { \begingroup
689 \doifelseassignment { # 1 }
690 { \getparameters [ \??pb ][ k = \s!unknown , t = article , n = , s = , a = , y = , o = , u = , # 1 ] }
691 { \getparameters [ \??pb ][ k =# 1 , t = article , n = , s = , a = , y = , o = , u =] }
692 \ctxlua{ bibtex . hacks . register ( \!!bs \@@pbk \!!es , \!!bs \@@pbs \!!es ) }
693 \catcode \commentasciicode\othercatcode
694 \dodostartpublication }
695
696\unexpanded \def \dodostartpublication # 1 \stoppublication
697 { \setxvalue { pbd : \@@pbk } ## 1 { \noexpand\ifcase ## 1 \noexpand\or
698 \@@pbk \noexpand\or
699 \@@pba \noexpand\or
700 \@@pby \noexpand\or
701 \@@pbs \noexpand\or
702 \@@pbn \noexpand\or
703 \@@pbt \noexpand\or
704 \@@pbo \noexpand\or
705 \@@pbu \noexpand\or
706 \normalunexpanded { # 1 } \noexpand\fi }
707 \endgroup
708 \ignorespaces }
709
710\def \bibgetvark # 1 { \csname pbd : # 1 \endcsname \plusone }
711\def \bibgetvara # 1 { \csname pbd : # 1 \endcsname \plustwo }
712\def \bibgetvary # 1 { \csname pbd : # 1 \endcsname \plusthree }
713\def \bibgetvars # 1 { \csname pbd : # 1 \endcsname \plusfour }
714\def \bibgetvarn # 1 { \csname pbd : # 1 \endcsname \plusfive }
715\def \bibgetvart # 1 { \csname pbd : # 1 \endcsname \plussix }
716\def \bibgetvaro # 1 { \csname pbd : # 1 \endcsname \plusseven }
717\def \bibgetvaru # 1 { \csname pbd : # 1 \endcsname \pluseight }
718\def \bibgetvard # 1 { \csname pbd : # 1 \endcsname \plusnine }
719
720\unexpanded \def \doifelsebibreferencefound # 1
721 { \preloadbiblist
722 \doifelsedefined { pbd : # 1 }
723 \firstoftwoarguments
724 { \showmessage \m!publications { 5 }{ # 1 , \the\inputlineno } \secondoftwoarguments }}
725
726\let \doifbibreferencefoundelse \doifelsebibreferencefound
727
728
729
730
731
732
733
734
735
736
737
738\unexpanded \def \bib@crossref # 1
739 { \setvalue { \??pb @ crossref }{ # 1 } \ignorespaces }
740
741\unexpanded \def \bibinsertcrossref # 1 # 2 # 3
742 { \bibdoifelse \@@pb@crossref { # 1 \cite [ \@@pb@crossref ]# 2 }{ # 3 }}
743
744\let \insertcrossref \gobblethreearguments
745
746\appendtoks \let \insertcrossref \bibinsertcrossref \to \initializebibdefinitions
747
748
749
750
751
752
753\unexpanded \def \doprocessbibtexentry # 1 { \typesetapublication { # 1 }}
754
755\unexpanded \def \typesetpubslist
756 { \begingroup
757 \startpacked [ \v!blank ]
758 \preloadbiblist
759
760 \edef \currentlist { pubs }
761 \ctxlua{ bibtex . hacks . reset ( \number \bibtexoncemode ) }
762 \doifelse { \listparameter \c!criterium } \v!all
763 { \showmessage \m!publications { 7 }{}
764 \ctxlua{ bibtex . hacks . filterall ( ) } }
765 { \doif { \listparameter \c!criterium } \v!cite
766 { \setuplist [ pubs ][ \c!criterium = \v!here ] }
767 \strc_lists_place_current
768 { pubs }
769 { \listparameter \c!criterium }
770 {}
771 { \listparameter \c!extras }
772 { \listparameter \c!order }}
773 \ctxlua{ bibtex . hacks . flush ( " \@@pbsorttype " ) }
774 \stoppacked
775 \endgroup }
776
777\newif \ifinpublist
778
779\unexpanded \def \initializepubslist
780 { \def \currentlist { pubs }
781 \edef \@@pbnumbering { \@@pbnumbering }
782 \doifelse \@@pbautohang \v!yes
783 { \ifx \@@pbnumbering \v!short
784 \setbox \scratchbox \hbox { \@@pbnumbercommand { \listparameter \c!samplesize }}
785 \else
786 \doifelse { \listparameter \c!criterium } \v!all
787 { \setbox \scratchbox \hbox { \@@pbnumbercommand { \ctxlua{ tex . write { bibtex . hacks . nofregistered ( ) } } }}}
788 { \determinelistcharacteristics [ pubs ]
789 \setbox \scratchbox \hbox { \@@pbnumbercommand { \structurelistsize }}}
790 \fi
791 \edef \publistnumberbox { \hbox to \the\wd \scratchbox }
792 \expanded { \setuplist [ pubs ][ \c!width = \the\wd \scratchbox , \c!distance = \zeropoint ] }
793 \ifx \@@pbnumbering \v!short
794 \def \@@pblimitednumber ## 1 { \publistnumberbox { \@@pbnumbercommand { \bibgetvars \currentpublicationkey }}}
795 \else\ifx \@@pbnumbering \v!bib
796 \def \@@pblimitednumber ## 1 { \publistnumberbox { \@@pbnumbercommand { \bibgetvarn \currentpublicationkey }}}
797 \else
798 \def \@@pblimitednumber ## 1 { \publistnumberbox { \@@pbnumbercommand { ## 1 }}}
799 \fi\fi }
800 { \doifelsenothing { \listparameter \c!width }
801 { \let \publistnumberbox \hbox }
802 { \edef \publistnumberbox { \hbox to \listparameter \c!width }}
803 \ifx \@@pbnumbering \v!short
804 \def \@@pblimitednumber ## 1 { \publistnumberbox { \@@pbnumbercommand { \bibgetvars \currentpublicationkey }}}
805 \else\ifx \@@pbnumbering \v!bib
806 \def \@@pblimitednumber ## 1 { \publistnumberbox { \@@pbnumbercommand { \bibgetvarn \currentpublicationkey }}}
807 \else
808 \def \@@pblimitednumber ## 1 { \publistnumberbox { \@@pbnumbercommand { ## 1 }}}
809 \fi\fi }
810 \ifx \@@pbnumbering \v!no
811 \setuplist [ pubs ][ \c!numbercommand = , \c!symbol = \v!none , \c!textcommand = \outdented ]
812 \else
813 \setuplist [ pubs ][ \c!numbercommand = \@@pblimitednumber ]
814 \fi
815 \doifelse { \publicationlistparameter \c!maybeyear }{ \v!off }{ \def \maybeyear ## 1 {}}{ \def \maybeyear ## 1 { ## 1 }}
816 \forgetall }
817
818\unexpanded \def \outdented # 1
819 { \hskip \hangindent # 1 \relax }
820
821
822
823\unexpanded \def \completepublications
824 { \dosingleempty \docompletepublications }
825
826\unexpanded \def \docompletepublications [# 1 ]
827 { \begingroup
828 \setuplist [ pubs ][# 1 ]
829 \edef \currentbibtexsessiontitle { \publicationlistparameter \c!title }
830 \ifx \currentbibtexsessiontitle \empty
831 \normalexpanded { \startnamedsection [ \v!chapter ][ \c!reference = pubs , \c!title = { \headtext { pubs }} ] }
832 \else
833 \normalexpanded { \startnamedsection [ \v!chapter ][ \c!reference = pubs , \c!title = { \currentbibtexsessiontitle } ] }
834 \fi
835 \dodoplacepublications
836 \stopnamedsection
837 \endgroup }
838
839
840
841\def \bibrefprefix { \number \bibtexblock : }
842
843\unexpanded \def \placepublications
844 { \dosingleempty \doplacepublications }
845
846\unexpanded \def \doplacepublications [# 1 ]
847 { \begingroup
848 \setuplist [ pubs ][# 1 ]
849 \dodoplacepublications
850 \endgroup }
851
852\unexpanded \def \dodoplacepublications
853 { \determinelistcharacteristics [ pubs ]
854 \initializepubslist
855 \doifnot { \namedlistparameter { pubs } \c!option } \v!continue
856 { \global \bibtexcounter \zerocount }
857 \inpublisttrue
858 \typesetpubslist
859 \inpublistfalse
860 \global\advance \bibtexblock \plusone }
861
862
863
864
865
866
867\unexpanded \def \typesetapublication # 1
868 { \doifsomething { # 1 }
869 { \doifelse { \namedlistparameter { pubs } \c!criterium } \v!all
870 { \doplacepublicationindeed { # 1 }}
871 { \ctxlua{ bibtex . hacks . doifalreadyplaced ( " #1 " ) }
872 {}
873 { \doplacepublicationindeed { # 1 }}}
874 }}
875
876
877
878
879
880
881
882\unexpanded \def \doplacepublicationindeed # 1
883 { \doifelsebibreferencefound { # 1 }
884 { \global\advance \bibtexcounter \plusone
885 \def \currentpublicationkey { # 1 }
886 \ctxlua{ bibtex . hacks . registerplaced ( " #1 " ) }
887 \def \currentlist { pubs }
888 \edef \currentlistentrynumber { \number \bibtexcounter }
889 \let \currentlistentrytitle \bibtexpubtext
890 \let \currentlistentrypagenumber \empty
891 \strc_lists_apply_renderingsetup }
892 {}}
893
894\unexpanded \def \bibtexpubtext
895 { \expanded { \reference [ \bibrefprefix \currentpublicationkey ] { \number \bibtexcounter }}
896 \strut \dotypesetapublication \currentpublicationkey \strut }
897
898\unexpanded \def \dotypesetapublication # 1
899 { \bgroup
900 \the \initializebibdefinitions
901 \def \@@currentalternative { : l : }
902 \presetbibvariables
903 \let \biblanguage \empty
904 \ignorespaces
905 \bibgetvard { # 1 }
906 \removeunwantedspaces
907 \ignorespaces
908 \bibalternative { \bibgetvart { # 1 }}
909 \removeunwantedspaces
910 \egroup }
911
912
913
914\let \maybeyear \gobbleoneargument
915\let \noopsort \gobbleoneargument
916
917
918
919\unexpanded \def \setbiblanguage # 1 # 2 { \setvalue { \??pb\s!language # 1 }{ # 2 }}
920
921\unexpanded \def \lang # 1
922 { \edef \biblanguage { # 1 }
923 \ifcsname \??pb\s!language # 1 \endcsname
924 \language [ \getvalue { \??pb\s!language # 1 } ]
925 \fi
926 \ignorespaces }
927
928
929
930
931
932
933
934
935
936\unexpanded \def \cite
937 { \strictdoifelsenextoptional \dodocite \dobibref }
938
939\unexpanded \def \dobibref # 1
940 { \docite [# 1 ][] }
941
942\unexpanded \def \dodocite [# 1 ]
943 { \strictdoifelsenextoptional { \docite [# 1 ] }{ \docite [# 1 ][] }}
944
945\unexpanded \def \docite [# 1 ][# 2 ]
946 { \begingroup
947 \doifelsenothing { # 2 } \secondargumentfalse\secondargumenttrue
948 \ifsecondargument
949 \dowhatevercite { # 1 }{ # 2 }
950 \else
951 \donumberedcite { # 1 }
952 \fi
953 \endgroup }
954
955\unexpanded \def \dowhatevercite # 1 # 2
956 { \processcommalist [# 2 ] \docitation
957 \setupinteraction [ \c!style =]
958 \doifelseassignment
959 { # 1 }
960 { \getparameters [ LO ][ \c!alternative = , \c!extras = , # 1 ]
961 \edef \@@currentalternative { \LOalternative }
962 \ifx \@@currentalternative \empty
963 \edef \@@currentalternative { \@@citedefault }
964 \fi
965 \ifx \LOextras \empty
966 \setupcite [ \@@currentalternative ][# 1 ]
967 \else
968 \expandafter\ifx\csname \??pv \@@currentalternative \c!right \endcsname\relax
969
970 \expandafter\let\csname \??pv \@@currentalternative \c!right \endcsname \empty
971 \fi
972 \expandafter\ifx\csname LOright \endcsname \relax
973 \edef \LOextras {{ \LOextras \bibalternative \c!right }}
974 \else
975 \edef \LOextras {{ \LOextras \LOright }}
976 \fi
977 \expanded { \setupcite [ \@@currentalternative ][# 1 , \c!right = \LOextras ] }
978 \fi }
979 { \def \@@currentalternative { # 1 }}
980 \doifelsevalue { @ @ pv \@@currentalternative \c!compress } \v!no \bibcitecompressfalse \bibcitecompresstrue
981 \getvalue { bib \@@currentalternative ref } [# 2 ] }
982
983\unexpanded \def \donumberedcite # 1
984 { \processcommalist [# 1 ] \docitation
985 \setupinteraction [ \c!style =]
986 \edef \@@currentalternative { \@@citedefault }
987 \doifelsevalue { @ @ pv \@@currentalternative \c!compress } \v!no \bibcitecompressfalse \bibcitecompresstrue
988 \getvalue { bib \@@citedefault ref } [# 1 ] }
989
990
991
992\unexpanded \def \nocite [# 1 ]
993 { \processcommalist [# 1 ] \docitation }
994
995
996
997\unexpanded \def \setupcite { \dodoubleempty \dosetupcite }
998
999\unexpanded \def \dosetupcite [# 1 ][# 2 ]
1000 { \ifsecondargument
1001 \def \dodosetupcite ## 1 { \getparameters [ \??pv ## 1 ][# 2 ] }
1002 \processcommalist [# 1 ] \dodosetupcite
1003 \else
1004 \getparameters [ \??pv \@@citedefault ][# 1 ]
1005 \fi }
1006
1007
1008
1009\unexpanded \def \getcitedata # 1 [# 2 ]# 3 [# 4 ]# 5 to # 6
1010 { \bgroup
1011 \dofetchapublication { # 4 }
1012 \doifelsedefined { \??pb @ bib # 2 }
1013 { \xdef # 6 { \getvalue { \??pb @ bib # 2 }}}
1014 { \xdef # 6 { \getvalue { \??pb @ # 2 }}}
1015 \egroup }
1016
1017\unexpanded \def \dofetchapublication # 1
1018 { \def \currentpublicationkey { # 1 }
1019 \presetbibvariables
1020 \ignorespaces \bibgetvard { # 1 }}
1021
1022\unexpanded \def \docitation # 1
1023 { \iftrialtypesetting \else
1024 \expanded { \writedatatolist [ pubs ][ bibref =# 1 ] }
1025 \fi }
1026
1027\let \addthisref \gobbleoneargument
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063\let \currentbibauthor \empty
1064
1065\unexpanded \def \ixbibauthoryear # 1 # 2 # 3 # 4
1066 { \bgroup
1067 \gdef \ixlastcommand { # 4 }
1068 \gdef \ixsecondcommand { # 3 }
1069 \gdef \ixfirstcommand { # 2 }
1070 \glet \thebibauthors \empty
1071 \glet \thebibyears \empty
1072 \getcommalistsize [# 1 ]
1073 \ifbibcitecompress
1074 \dorecurse \commalistsize { \xdef \thebibyears { \thebibyears , }}
1075 \processcommalist [# 1 ] \docompressbibauthoryear
1076 \else
1077 \processcommalist [# 1 ] \donormalbibauthoryear
1078 \fi
1079 \egroup
1080 \dobibauthoryear }
1081
1082
1083
1084
1085
1086
1087\unexpanded \def \dobibauthoryear
1088 { \scratchcounter \zerocount
1089 \getcommacommandsize [ \thebibauthors ]
1090 \edef \authorcount { \commalistsize }
1091 \expandafter \processcommalist \expandafter [ \thebibauthors ] \dodobibauthoryear }
1092
1093\unexpanded \def \dodobibauthoryear # 1
1094 { \advance \scratchcounter \plusone
1095 \edef \wantednumber { \the \scratchcounter }
1096 \getfromcommacommand [ \thebibyears ][ \wantednumber ]
1097 \expandafter\def\expandafter \currentbibyear \expandafter { \commalistelement }
1098 \setcurrentbibauthor { # 1 }
1099 \ifnum \scratchcounter = \plusone
1100 \ixfirstcommand
1101 \else\ifnum \scratchcounter = \authorcount \relax
1102 \ixlastcommand
1103 \else
1104 \ixsecondcommand
1105 \fi\fi }
1106
1107\unexpanded \def \setcurrentbibauthor # 1
1108 { \getcommacommandsize [# 1 ]
1109 \ifcase \commalistsize
1110
1111 \let \currentbibauthor \empty
1112 \or
1113 \def \currentbibauthor { # 1 }
1114 \or
1115 \expanded { \docurrentbibauthor # 1 }
1116 \else
1117 \handlemultiplebibauthors { \commalistsize }{ # 1 }
1118 \fi }
1119
1120\newcount \citescratchcounter
1121
1122\unexpanded \def \handlemultiplebibauthors # 1 # 2
1123 { \citescratchcounter \zerocount
1124 \let \currentbibauthor \empty
1125 \unexpanded \def \bibprocessauthoritem ## 1
1126 { \advance \citescratchcounter \plusone
1127 \ifnum \citescratchcounter =# 1 \relax
1128 \edef \currentbibauthor { \currentbibauthor ## 1 }
1129 \else\ifnum\numexpr \citescratchcounter \plusone \relax =# 1 \relax
1130 \edef \currentbibauthor { \currentbibauthor ## 1 \bibalternative { andtext }}
1131 \else
1132 \edef \currentbibauthor { \currentbibauthor ## 1 \bibalternative { namesep }}
1133 \fi\fi }
1134 \processcommalist [# 2 ] \bibprocessauthoritem }
1135
1136\setupcite
1137 [ author , authoryear , authoryears ]
1138 [ \c!namesep = { , } ]
1139
1140
1141
1142
1143\unexpanded \def \docurrentbibauthor # 1 , # 2
1144 { \doifelseempty { # 2 }
1145 { \def \currentbibauthor { # 1 \bibalternative { otherstext }}}
1146 { \expandafter\ifx\csname \??pv \@@currentalternative authoretallimit \endcsname\relax
1147 \edef \currentbibauthor { # 1 \bibalternative { andtext } # 2 }
1148 \else
1149 \edef \currentbibauthor { # 1
1150 \ifcase 0 \bibalternative { authoretallimit } \relax\or
1151 \bibalternative { otherstext } \else \bibalternative { andtext } # 2 \fi }
1152 \fi }}
1153
1154
1155
1156
1157
1158\unexpanded \def \robustaddtocommalist # 1 # 2
1159 { \robustdoifelseinset { # 1 } # 2 \resetglobal
1160 { \dodoglobal \xdef # 2 { \ifx # 2 \empty \else # 2 , \fi # 1 }}}
1161
1162
1163
1164
1165
1166
1167\unexpanded \def \donormalbibauthoryear # 1
1168 { \def \myauthor { Xxxxxxxxxx }
1169 \def \myyear { 0 0 0 0 }
1170 \doifelsebibreferencefound { # 1 }
1171 { \def \myauthor {{ \bibgetvara { # 1 }}}
1172 \def \myyear { \bibgetvary { # 1 }}}
1173 {}
1174 \expandafter \doglobal \expandafter \appendtocommalist \expandafter { \myauthor } \thebibauthors
1175 \expandafter \doglobal \expandafter \appendtocommalist \expandafter { \myyear } \thebibyears }
1176
1177
1178
1179
1180
1181
1182
1183\unexpanded \def \docompressbibauthoryear # 1
1184 { \def \myauthor { Xxxxxxxxxx }
1185 \def \myyear { 0 0 0 0 }
1186 \doifelsebibreferencefound { # 1 }
1187 { \xdef \myauthor { \bibgetvara { # 1 }}
1188 \xdef \myyear { \bibgetvary { # 1 }}}
1189 {}
1190 \ifx \myauthor \empty \else
1191 \checkifmyauthoralreadyexists
1192 \findmatchingyear
1193 \fi }
1194
1195
1196
1197
1198\newcount \bibitemcounter
1199\newcount \bibitemwanted
1200
1201
1202
1203
1204
1205
1206\unexpanded \def \checkifmyauthoralreadyexists
1207 { \doifelseemptyvalue { thebibauthors }
1208 { \global \bibitemwanted \plusone
1209 \global \bibitemcounter \plusone
1210 \xdef \thebibauthors {{ \myauthor }}}
1211 {
1212
1213 \expandafter \getcommalistsize \expandafter [ \thebibauthors , ]
1214 \global \bibitemcounter \numexpr \commalistsize \minusone \relax
1215 \global \bibitemwanted \zerocount
1216 \processcommacommand [ \thebibauthors ] \docomparemyauthor }}
1217
1218
1219
1220
1221
1222
1223
1224
1225\unexpanded \def \docomparemyauthor # 1
1226 { \global\advance \bibitemwanted \plusone
1227 \def \mytempc { # 1 }
1228 \ifx \mytempc \myauthor
1229 \quitcommalist
1230 \else\ifnum \bibitemwanted = \bibitemcounter \relax
1231 \global\advance \bibitemwanted \plusone
1232 \global \bibitemcounter \bibitemwanted \relax
1233 \expandafter \doglobal \expandafter \robustaddtocommalist \expandafter {{ \myauthor }} \thebibauthors
1234 \fi\fi }
1235
1236
1237
1238\unexpanded \def \findmatchingyear
1239 { \edef \wantednumber { \the \bibitemwanted }
1240 \getfromcommacommand [ \thebibyears ][ \wantednumber ]
1241 \ifx \commalistelement \empty
1242 \edef \myyear {{ \myyear }}
1243 \else
1244 \edef \myyear {{ \commalistelement , \myyear }}
1245 \fi
1246 \edef \newcommalistelement { \myyear }
1247 \doglobal \replaceincommalist \thebibyears \wantednumber }
1248
1249
1250
1251
1252
1253
1254
1255\unexpanded \def \gotobiblink # 1 [# 2 ] { \doifelsereferencefound { \bibrefprefix # 2 }{ \goto { # 1 } [ \bibrefprefix # 2 ] }{ # 1 }}
1256\unexpanded \def \atbiblink [# 1 ] { \doifelsereferencefound { \bibrefprefix # 1 }{ \at [ \bibrefprefix # 1 ] }{ # 1 }}
1257\unexpanded \def \inbiblink [# 1 ] { \doifelsereferencefound { \bibrefprefix # 1 }{ \expanded { \goto { \currentreferencetext }} [ \bibrefprefix # 1 ] }{ # 1 }}
1258
1259
1260
1261
1262
1263
1264
1265\unexpanded \def \doifelsebibinteraction
1266 { \iflocation
1267 \edef \test { \bibalternative \c!interaction }
1268 \ifx \test \v!stop
1269 \doubleexpandafter\secondoftwoarguments
1270 \else
1271 \doubleexpandafter\firstoftwoarguments
1272 \fi
1273 \else
1274 \expandafter \secondoftwoarguments
1275 \fi }
1276
1277\let \doifbibinteractionelse \doifelsebibinteraction
1278
1279\unexpanded \def \bibmaybeinteractive # 1 # 2
1280 { \doifelsebibinteraction { \gotobiblink { # 2 } [# 1 ] }{ # 2 }}
1281
1282\unexpanded \def \bibauthoryearref [# 1 ]
1283 { \ixbibauthoryear { # 1 }
1284 { \bibmaybeinteractive { # 1 }{{ \currentbibauthor } \bibalternative \c!inbetween
1285 \bibalternative \v!left { \currentbibyear } \bibalternative \v!right }}
1286 { \bibalternative \c!pubsep
1287 \bibmaybeinteractive { # 1 }{{ \currentbibauthor } \bibalternative \c!inbetween
1288 \bibalternative \v!left { \currentbibyear } \bibalternative \v!right }}
1289 { \bibalternative \c!lastpubsep
1290 \bibmaybeinteractive { # 1 }{{ \currentbibauthor } \bibalternative \c!inbetween
1291 \bibalternative \v!left { \currentbibyear } \bibalternative \v!right }}}
1292
1293\unexpanded \def \bibauthoryearsref [# 1 ]
1294 { \bibalternative \v!left
1295 \ixbibauthoryear { # 1 }
1296 { \bibmaybeinteractive { # 1 }{{ \currentbibauthor } \bibalternative \c!inbetween { \currentbibyear }}}
1297 { \bibalternative \c!pubsep
1298 \bibmaybeinteractive { # 1 }{{ \currentbibauthor } \bibalternative \c!inbetween { \currentbibyear }}}
1299 { \bibalternative \c!lastpubsep
1300 \bibmaybeinteractive { # 1 }{{ \currentbibauthor } \bibalternative \c!inbetween { \currentbibyear }}}
1301 \bibalternative \v!right }
1302
1303\unexpanded \def \bibauthorref [# 1 ]
1304 { \bibalternative \v!left
1305 \ixbibauthoryear { # 1 }
1306 { \bibmaybeinteractive { # 1 }{{ \currentbibauthor }}}
1307 { \bibalternative \c!pubsep \bibmaybeinteractive { # 1 }{{ \currentbibauthor }}}
1308 { \bibalternative \c!lastpubsep \bibmaybeinteractive { # 1 }{{ \currentbibauthor }}}
1309 \bibalternative \v!right }
1310
1311\unexpanded \def \bibyearref [# 1 ]
1312 { \bibalternative \v!left
1313 \ixbibauthoryear { # 1 }
1314 { \bibmaybeinteractive { # 1 }{{ \currentbibyear }}}
1315 { \bibalternative \c!pubsep \bibmaybeinteractive { # 1 }{{ \currentbibyear }}}
1316 { \bibalternative \c!lastpubsep \bibmaybeinteractive { # 1 }{{ \currentbibyear }}}
1317 \bibalternative \v!right }
1318
1319
1320
1321
1322
1323
1324
1325
1326\newconditional \firstbibrefsep
1327
1328\unexpanded \def \bibresetrefsep
1329 { \settrue \firstbibrefsep }
1330
1331\unexpanded \def \bibinsertrefsep
1332 { \ifconditional \firstbibrefsep
1333 \setfalse \firstbibrefsep
1334 \else
1335 \bibalternative \c!pubsep
1336 \fi }
1337
1338\unexpanded \def \bibshortref [# 1 ]
1339 { \bibalternative \v!left
1340 \bibresetrefsep \processcommalist [# 1 ] \dobibshortref
1341 \bibalternative \v!right }
1342
1343\unexpanded \def \dobibshortref # 1
1344 { \bibinsertrefsep
1345 \doifelsebibreferencefound { # 1 }
1346 { \gotobiblink { \bibgetvars { # 1 }} [# 1 ] }
1347 {}}
1348
1349\unexpanded \def \bibserialref [# 1 ]
1350 { \bibalternative \v!left
1351 \bibresetrefsep \processcommalist [# 1 ] \dobibserialref
1352 \bibalternative \v!right }
1353
1354\unexpanded \def \dobibserialref # 1
1355 { \bibinsertrefsep
1356 \doifelsebibreferencefound { # 1 }
1357 { \gotobiblink { \bibgetvarn { # 1 }} [# 1 ] }
1358 {}}
1359
1360\unexpanded \def \bibkeyref [# 1 ]
1361 { \bibalternative \v!left
1362 \bibresetrefsep \processcommalist [# 1 ] \dobibkeyref
1363 \bibalternative \v!right }
1364
1365\unexpanded \def \dobibkeyref # 1
1366 { \bibinsertrefsep
1367 \gotobiblink { # 1 } [# 1 ] }
1368
1369\unexpanded \def \bibgotoDOI # 1 # 2
1370 { \doifelsebibinteraction
1371 { \useURL [ bibfooDoi # 1 ][# 2 ]
1372 \useURL [ bibfoo # 1 ][ http : dx . doi . org # 2 ]
1373 \goto { \url [ bibfooDoi # 1 ] } [ url ( bibfoo # 1 )] }
1374 { \hyphenatedurl { # 2 }}}
1375
1376\unexpanded \def \bibdoiref [# 1 ]
1377 { \bibalternative \v!left
1378 \bibresetrefsep \processcommalist [# 1 ] \dobibdoiref
1379 \bibalternative \v!right }
1380
1381\unexpanded \def \dobibdoiref # 1
1382 { \bibinsertrefsep
1383 \doifelsebibreferencefound { # 1 }
1384 { \expanded { \bibgotoDOI { # 1 }{ \bibgetvaro { # 1 }}}}
1385 {}}
1386
1387\unexpanded \def \biburlref [# 1 ]
1388 { \bibalternative \v!left
1389 \bibresetrefsep \processcommalist [# 1 ] \dobiburlref
1390 \bibalternative \v!right }
1391
1392\unexpanded \def \bibgotoURL # 1 # 2
1393 { \doifelsebibinteraction
1394 { \useURL [ bibfoo # 1 ][# 2 ] \goto { \url [ bibfoo # 1 ] } [ url ( bibfoo # 1 )] }
1395 { \hyphenatedurl { # 2 }}}
1396
1397\unexpanded \def \dobiburlref # 1
1398 { \bibinsertrefsep
1399 \doifelsebibreferencefound { # 1 }
1400 { \expanded { \bibgotoURL { # 1 }{ \bibgetvaru { # 1 }}}}
1401 {}}
1402
1403\unexpanded \def \bibtyperef [# 1 ]
1404 { \bibalternative \v!left
1405 \bibresetrefsep \processcommalist [# 1 ] \dobibtyperef
1406 \bibalternative \v!right }
1407
1408\unexpanded \def \dobibtyperef # 1
1409 { \bibinsertrefsep
1410 \doifelsebibreferencefound { # 1 }
1411 { \gotobiblink { \bibgetvart { # 1 }} [# 1 ] }
1412 {}}
1413
1414\unexpanded \def \bibpageref [# 1 ]
1415 { \bibalternative \v!left
1416 \bibresetrefsep \processcommalist [# 1 ] \dobibpageref
1417 \bibalternative \v!right }
1418
1419\unexpanded \def \dobibpageref # 1
1420 { \bibinsertrefsep
1421 \doifelsebibinteraction
1422 { \atbiblink [# 1 ] }
1423 {{ \referencingfalse \at [# 1 ] }}}
1424
1425\unexpanded \def \bibdataref [# 1 ]
1426 { \bibalternative \v!left
1427 \bibresetrefsep \processcommalist [# 1 ] \dobibdata
1428 \bibalternative \v!right }
1429
1430\unexpanded \def \dobibdata # 1
1431 { \bibinsertrefsep
1432 \doifelsebibreferencefound { # 1 }
1433 { \dotypesetapublication { # 1 }}
1434 {}}
1435
1436\let \bibnoneref \nocite
1437
1438
1439
1440\unexpanded \def \bibnumref [# 1 ]
1441 { \begingroup
1442 \bibalternative \v!left
1443 \penalty \plustenthousand
1444 \ctxlua{ bibtex . hacks . resolve ( " " , " \number\bibtexblock " , " #1 " ) }
1445 \bibalternative \v!right
1446 \endgroup }
1447
1448\unexpanded \def \dowithbibtexnumrefconnector # 1 # 2
1449 { \ifnum # 1 > \plusone
1450 \ifnum # 2 > \plusone
1451 \ifnum # 2 =# 1 \relax
1452 \bibalternative { lastpubsep }
1453 \else
1454 \bibalternative { pubsep }
1455 \fi
1456 \fi
1457 \fi }
1458
1459\unexpanded \def \dowithbibtexnumref # 1 # 2 # 3 # 4 # 5
1460 { \dowithbibtexnumrefconnector { # 1 }{ # 2 }
1461 \def \bibrefprefix { # 4 : }
1462 \inbiblink [# 5 ] }
1463
1464\unexpanded \def \dowithbibtexnumrefrange # 1 # 2 # 3 # 4 # 5 # 6 # 7
1465 { \dowithbibtexnumrefconnector { # 1 }{ # 2 }
1466 \def \bibrefprefix { # 4 : }
1467 \inbiblink [# 5 ]
1468 \endash
1469 \def \bibrefprefix { # 6 : }
1470 \inbiblink [# 7 ] }
1471
1472
1473
1474
1475\unexpanded \def \bibauthornumref [# 1 ]
1476 { \getcommalistsize [# 1 ]
1477 \global \bibitemcounter \commalistsize
1478 \bibresetrefsep
1479 \processcommalist [# 1 ] \dobibauthornumref }
1480
1481\unexpanded \def \dobibauthornumref # 1
1482 { \bibinsertrefsep
1483 \doifelsebibreferencefound { # 1 }
1484 { \begingroup
1485 \cite [ \c!left = , \c!right = , \c!alternative = \v!author ][# 1 ]
1486 \bibalternative \c!inbetween
1487 \cite [ num ][# 1 ]
1488 \endgroup }
1489 {}}
1490
1491
1492
1493\setuppublications
1494 [ \c!monthconversion = ,
1495 \c!alternative = apa ,
1496 \c!method = \v!global ,
1497
1498 \c!criterium = \v!cite ,
1499 \c!refcommand = num ,
1500 \c!numbercommand = \bibleftnumber ]
1501
1502\unexpanded \def \preloadbiblist
1503 { \glet \preloadbiblist \relax
1504 \dousepublications \jobname }
1505
1506
1507
1508
1509\let \ifbibinteractionelse \doifbibinteractionelse
1510
1511\protect \endinput
1512 |