-
Notifications
You must be signed in to change notification settings - Fork 17
/
lncs.bbx
216 lines (196 loc) · 5.63 KB
/
lncs.bbx
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
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
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
\ProvidesFile{lncs.bbx}[2012/09/09 v0.1]
\RequireBibliographyStyle{numeric}
\ExecuteBibliographyOptions{giveninits=true,
minbibnames=1,
mincrossrefs=99,
maxbibnames=999}
\newtoggle{lncs:abbrev}
\newtoggle{lncs:series}
\newtoggle{lncs:conference}
\newtoggle{lncs:lncs}
\DeclareBibliographyOption{acronym}[true]{\toggletrue{lncs:abbrev}}
\DeclareBibliographyOption{series}[no]{
\ifstrequal{#1}{short}{}{}
\ifstrequal{#1}{full}{}{}
\ifstrequal{#1}{no}{}{}
}
\DeclareBibliographyOption{conference}[long]{
\ifstrequal{#1}{long}{}{}
\ifstrequal{#1}{full}{}{}
\ifstrequal{#1}{acronym}{}{}
}
\DeclareFieldFormat{labelnumberwidth}{#1.}
\defbibenvironment{bibliography}
{\list
{\printfield[labelnumberwidth]{labelnumber}}
{\setlength{\labelwidth}{\labelnumberwidth}%
\setlength{\leftmargin}{\labelwidth}%
\setlength{\labelsep}{.5em}%
\addtolength{\leftmargin}{\labelsep}%
\setlength{\itemsep}{\bibitemsep}%
\setlength{\parsep}{\bibparsep}}%
\renewcommand*{\makelabel}[1]{\hss##1}}
{\endlist}
{\item}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=series,
match=\regexp{Lecture\s+Notes\s+in\s+Computer\s+Science},
replace={LNCS}]
\step[fieldsource=series,
match=\regexp{Lecture\s+Notes\s+in\s+Artificial\s+Intelligence},
replace={LNAI}]
\step[fieldsource=series,
match=\regexp{Lecture\s+Notes\s+in\s+Business\s+Information\s+Processing},
replace={LNBIP}]
}
}
}
\DeclareFieldFormat{journaltitle}{#1}
\DeclareFieldFormat[article,inproceedings]{title}{#1}
\DeclareFieldFormat{booktitle}{#1}
\DeclareFieldFormat[article]{pages}{#1}
\DeclareFieldFormat{year}{(#1)}
\DeclareFieldFormat{acronym}{#1}
\renewbibmacro{journal}{%
\iffieldundef{shortjournal}
{\printfield{journaltitle}}
{\printfield[journal]{shortjournal}}%
}
\newbibmacro{journal:info}{
\iffieldundef{volume}
{\iffieldundef{year}
{\iffieldundef{pubstate}
{}
{\printfield{pubstate}}}
{\printfield{year}}}
{\printfield{volume}%
\iffieldundef{number}{}{(\printfield{number})}%
\iffieldundef{pages}
{\addspace\printfield{year}}
{\addcomma\addspace\printfield{pages}\addspace\printfield{year}}
}
}
\newbibmacro{acronym/booktitle}{%
\iffieldundef{acronym}
{\printfield{booktitle}}
{\printfield{acronym}}%
\addcomma\addspace
}
\newbibmacro{publisher+location}{%
\iftoggle{lncs:lncs}
{\printtext{Springer, Heidelberg}}
{\printlist{publisher}%
\iflistundef{location}
{}
{\addcomma\addspace\printlist{location}}%
}%
}
\renewbibmacro{finentry}{\settoggle{lncs:lncs}{false}}
\renewcommand*{\bibinitdelim}{}
\DeclareNameFormat{author}{%
\ifblank{\namepartprefix}{}{\namepartprefix\space}\namepartfamily, \namepartgiveni%
\ifthenelse{\value{listcount}<\value{liststop}}
{\addcomma\space}%
{}%
}
\DeclareNameFormat{editor}{%
\ifblank{\namepartprefix}{}{\namepartprefix\space}\namepartfamily, \namepartgiveni%
\ifthenelse{\value{listcount}<\value{liststop}}
{\addcomma\space}%
{\space\ifthenelse{\value{listcount}>1}
{(\bibstring{editors})}
{(\bibstring{editor})}}%
}
\DeclareBibliographyDriver{article}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\printnames{author}%
\setunit*{\addcolon\space}\newblock
\printfield{title}%
\newunit\newblock
\usebibmacro{journal}%
\usebibmacro{journal:info}%
\usebibmacro{related}%
\usebibmacro{finentry}%
}
\DeclareBibliographyDriver{book}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\ifnameundef{author}
{\printnames{editor}}
{\printnames{author}}%
\setunit*{\addcolon\space}
\printfield{title}%
\newunit
\printlist{publisher}%
\iflistundef{location}
{}
{\addcomma\addspace\printlist{location}}
\printfield{year}%
\usebibmacro{related}%
\usebibmacro{finentry}%
}
\DeclareBibliographyDriver{inproceedings}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\printnames{author}
\setunit*{\addcolon\space}
\printfield[article]{title}
\newunit\newblock
\printtext{In:}
\printnames{editor}
\newunit
\iffieldundef{series}
{\iftoggle{lncs:abbrev}
{\usebibmacro{acronym/booktitle}}
{\printfield{booktitle}\addcomma\space}%
}%
{\ifboolexpr{
test {\iffieldequalstr{series}{LNAI}}
or
test {\iffieldequalstr{series}{LNCS}}
or
test {\iffieldequalstr{series}{LNBIP}}
}
{\settoggle{lncs:lncs}{true}%
\usebibmacro{acronym/booktitle}%
\printfield{series}\addcomma\addspace
\iffieldundef{volume}
{\iffieldundef{number}{}{vol.\addspace\printfield{number}\addcomma}}
{\printfield{volume}\addcomma}%
}%
{\usebibmacro{acronym/booktitle}%
\printfield{series}\addcomma}%
}
\newunit
\iffieldundef{pages}{}{\printfield{pages}}
\newunit
\usebibmacro{publisher+location}%
\setunit{\space}%
\printfield{year}%
\usebibmacro{related}%
\usebibmacro{finentry}%
}
\DeclareBibliographyDriver{unpublished}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\printnames{author}%
\setunit*{\addcolon\space}\newblock
\printfield{title}%
\newunit\newblock
\printfield{note}%
\usebibmacro{finentry}%
}
\DeclareBibliographyDriver{proceedings}{PROCEEDINGS}
\DeclareBibliographyDriver{incollection}{INCOLLECTION}
\DeclareBibliographyDriver{online}{ONLINE}
\DeclareBibliographyDriver{misc}{MISC}
\DeclareBibliographyDriver{thesis}{THESIS}
\DeclareBibliographyDriver{techreport}{TECHREPORT}
% \DeclareBibliographyDriver{*}{%
% Titolo: \printfield{title}\\
% Autore: \printnames{author}\\
% Prova: \printfield{acronym}%
% }