blob: db70f54c1ce789798570aa2f31802d67768eed56 (
plain)
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
34
35
36
37
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
|
%
% Copyright (c) 2021-2023 Zeping Lee
% Released under the MIT License.
% Repository: https://github.com/zepinglee/citeproc-lua
%
% ## Compatibilities with other packages
% ### `babel`
% This should be disabled.
\AtEndOfPackageFile* { babel }
{
\RenewDocumentCommand \nocite { m }
{
% \@safe@activestrue\org@nocite{#1}\@safe@activesfalse
\@safe@activestrue
\__csl_no_cite:n {#1}
\@safe@activesfalse
}
\cs_set_eq:NN \bbl@cite@choice \relax
\cs_set_eq:NN \@lbibitem \__csl_lbibitem_plain:nn
\cs_set_eq:NN \@bibitem \__csl_bibitem_plain:n
}
% ### `biblatex`
% The following doesn't really make `csl` compatible with `biblatex`.
% It just provides commands to make it accepting `biblatex`'s database.
\ProvideDocumentCommand { \hyphen } { }
{
\nobreak - \nobreak
\hskip \z@skip
}
% ### `csquotes`
\AtEndOfPackageFile* { csquotes }
{
\BlockquoteDisable
{
\cs_set_eq:NN \__csl_process_citation_info:NN \use_none:nn
\cs_set_eq:NN \__csl_make_citation:N \use_none:n
}
}
% ### `hyperref`
% The hyperref package also patches \bibcite but it cannot provide hyperlinks
% when used with csl.
\bool_new:N \l__csl_hyperref_loaded_bool
\AtEndOfPackageFile* { hyperref }
{
\bool_set_true:N \l__csl_hyperref_loaded_bool
% Pakcage "hyperref" redefines \@lbibitem and \bibitem and we need to
% recover them.
\cs_gset_eq:NN \@lbibitem \__csl_lbibitem:
\cs_gset_eq:NN \@bibitem \__csl_bibitem:
\cs_gset_eq:NN \__csl_lbibitem_plain:nn \__csl_hyperref_lbibitem:nn
\cs_gset_eq:NN \__csl_bibitem_plain:n \__csl_hyperref_bibitem:n
\cs_gset_eq:NN \cslcite \__csl_hyperref_cite_item:nn
}
\cs_set:Npn \__csl_hyperref_cite_item:nn #1#2
{ \hyper@@link [ cite ] { } { cite. #1 \@extra@b@citeb } { #2 } }
\cs_new:Npn \__csl_hyperref_lbibitem:nn [#1]#2
{
\clist_gput_right:Nn \g__csl_bib_items_clist {#2}
\@skiphyperreftrue
\H@item[%
\ifx\Hy@raisedlink\@empty
\hyper@anchorstart{cite.#2\@extra@b@citeb}%
\@BIBLABEL{#1}%
\hyper@anchorend
\else
\Hy@raisedlink{%
\hyper@anchorstart{cite.#2\@extra@b@citeb}\hyper@anchorend
}%
\@BIBLABEL{#1}%
\fi
\hfill
]%
\@skiphyperreffalse
\ignorespaces
}
\cs_new:Npn \__csl_hyperref_bibitem:n #1
{
\clist_gput_right:Nn \g__csl_bib_items_clist {#1}
\@skiphyperreftrue \H@item \@skiphyperreffalse
\Hy@raisedlink
{
\hyper@anchorstart
{ cite. #1 \@extra@b@citeb } \relax
\hyper@anchorend
}
\ignorespaces
}
|