Skip to content

Commit 82931aa

Browse files
committed
Update bibliography style
Former-commit-id: 612b81e
1 parent 833e54c commit 82931aa

File tree

3 files changed

+334
-248
lines changed

3 files changed

+334
-248
lines changed

Biblio/gbt7714-plain.bst

100755100644
+137-94
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,12 @@
99
%% Copyright (C) 2016-2018 by Zeping Lee <zepinglee AT gmail.com>
1010
%%
1111
%% This file may be distributed and/or modified under the
12-
%% conditions of the LaTeX Project Public License, either
13-
%% version 1.2 of this license or (at your option) any later
14-
%% version. The latest version of this license is in:
15-
%%
16-
%% http://www.latex-project.org/lppl.txt
17-
%%
18-
%% and version 1.2 or later is part of all distributions of
19-
%% LaTeX version 1999/12/01 or later.
20-
%%
21-
%% This BibTeX style file is derived from `plainnat.bst' by Patrick W Daly,
22-
%% which was designed for use with the `natbib.sty' package.
12+
%% conditions of the LaTeX Project Public License, either version 1.3c
13+
%% of this license or (at your option) any later version.
14+
%% The latest version of this license is in
15+
%% https://www.latex-project.org/lppl.txt
16+
%% and version 1.3c or later is part of all distributions of LaTeX
17+
%% version 2005/12/01 or later.
2318
%%
2419
ENTRY
2520
{ address
@@ -55,7 +50,7 @@ INTEGERS { output.state before.all mid.sentence after.sentence after.block after
5550

5651
INTEGERS { lang.zh lang.ja lang.en lang.ru lang.other }
5752

58-
INTEGERS { charptr stringlength }
53+
INTEGERS { charptr len }
5954

6055
FUNCTION {init.state.consts}
6156
{ #0 'before.all :=
@@ -273,27 +268,7 @@ FUNCTION {emphasize}
273268
if$
274269
}
275270

276-
INTEGERS { ascii }
277-
278-
FUNCTION {get.char.lang}
279-
{ chr.to.int$ 'ascii :=
280-
ascii #64 > ascii #91 < and ascii #96 > ascii #123 < and or
281-
{ lang.en }
282-
{ ascii #227 > ascii #234 < and
283-
{ lang.zh }
284-
{ ascii #227 =
285-
{ lang.ja }
286-
{ ascii #207 > ascii #212 < and
287-
{ lang.ru }
288-
{ lang.en }
289-
if$
290-
}
291-
if$
292-
}
293-
if$
294-
}
295-
if$
296-
}
271+
INTEGERS { byte second.byte }
297272

298273
INTEGERS { char.lang tmp.lang }
299274

@@ -302,29 +277,67 @@ STRINGS { tmp.str }
302277
FUNCTION {get.str.lang}
303278
{ 'tmp.str :=
304279
lang.other 'tmp.lang :=
305-
tmp.str empty$
306-
{ "Empty string!" warning$ }
307-
{ #1 'charptr :=
308-
tmp.str text.length$ #1 + 'stringlength :=
309-
{ charptr stringlength < }
310-
{ tmp.str charptr #1 substring$ get.char.lang 'char.lang :=
311-
char.lang tmp.lang >
312-
{ char.lang 'tmp.lang := }
313-
'skip$
280+
#1 'charptr :=
281+
tmp.str text.length$ #1 + 'len :=
282+
{ charptr len < }
283+
{ tmp.str charptr #1 substring$ chr.to.int$ 'byte :=
284+
byte #128 <
285+
{ charptr #1 + 'charptr :=
286+
byte #64 > byte #91 < and byte #96 > byte #123 < and or
287+
{ lang.en 'char.lang := }
288+
{ lang.other 'char.lang := }
314289
if$
315-
316-
char.lang lang.zh = char.lang lang.ja = or
317-
{ charptr #3 + 'charptr := }
318-
{ char.lang lang.ru =
319-
{ charptr #2 + 'charptr := }
320-
{ charptr #1 + 'charptr := }
290+
}
291+
{ tmp.str charptr #1 + #1 substring$ chr.to.int$ 'second.byte :=
292+
byte #224 <
293+
{ charptr #2 + 'charptr :=
294+
byte #207 > byte #212 < and
295+
byte #212 = second.byte #176 < and or
296+
{ lang.ru 'char.lang := }
297+
{ lang.other 'char.lang := }
298+
if$
299+
}
300+
{ byte #240 <
301+
{ charptr #3 + 'charptr :=
302+
byte #227 > byte #234 < and
303+
{ lang.zh 'char.lang := }
304+
{ byte #227 =
305+
{ second.byte #143 >
306+
{ lang.zh 'char.lang := }
307+
{ second.byte #128 > second.byte #132 < and
308+
{ lang.ja 'char.lang := }
309+
{ lang.other 'char.lang := }
310+
if$
311+
}
312+
if$
313+
}
314+
{ byte #239 =
315+
second.byte #163 > second.byte #172 < and and
316+
{ lang.zh 'char.lang := }
317+
{ lang.other 'char.lang := }
318+
if$
319+
}
320+
if$
321+
}
322+
if$
323+
}
324+
{ charptr #4 + 'charptr :=
325+
byte #240 = second.byte #159 > and
326+
{ lang.zh 'char.lang := }
327+
{ lang.other 'char.lang := }
328+
if$
329+
}
321330
if$
322331
}
323332
if$
324333
}
325-
while$
334+
if$
335+
char.lang tmp.lang >
336+
{ char.lang 'tmp.lang := }
337+
'skip$
338+
if$
326339
}
327-
if$
340+
while$
328341
tmp.lang
329342
}
330343

@@ -427,27 +440,61 @@ FUNCTION {format.url}
427440
}
428441

429442
FUNCTION {is.doi.in.url}
430-
{ url empty$
431-
{ #0 }
432-
{ doi text.length$ 'stringlength :=
433-
url text.length$ 'charptr :=
434-
{ url charptr stringlength substring$ doi = not
435-
charptr #0 >
436-
and
443+
{ 's :=
444+
s empty$
445+
{ #1 }
446+
{ url empty$
447+
{ #0 }
448+
{ s text.length$ 'len :=
449+
url text.length$ 'charptr :=
450+
{ url charptr len substring$ s = not
451+
charptr #0 >
452+
and
453+
}
454+
{ charptr #1 - 'charptr := }
455+
while$
456+
charptr
437457
}
438-
{ charptr #1 - 'charptr := }
439-
while$
440-
charptr
458+
if$
441459
}
442460
if$
443461
}
444462

445463
FUNCTION {format.doi}
446-
{ doi empty$
447-
{ "" }
448-
{ is.doi.in.url
464+
{ ""
465+
doi empty$
466+
'skip$
467+
{ "" 's :=
468+
doi 't :=
469+
#0 'numnames :=
470+
{ t empty$ not}
471+
{ t #1 #1 substring$ 'tmp.str :=
472+
tmp.str "," = tmp.str " " = or t #2 #1 substring$ empty$ or
473+
{ t #2 #1 substring$ empty$
474+
{ s tmp.str * 's := }
475+
'skip$
476+
if$
477+
s empty$ s is.doi.in.url or
478+
'skip$
479+
{ numnames #1 + 'numnames :=
480+
numnames #1 >
481+
{ ", " * }
482+
{ "DOI: " * }
483+
if$
484+
"\doi{" s * "}" * *
485+
}
486+
if$
487+
"" 's :=
488+
}
489+
{ s tmp.str * 's := }
490+
if$
491+
t #2 global.max$ substring$ 't :=
492+
}
493+
while$
494+
's :=
495+
s empty$ not
496+
{ new.block s }
449497
{ "" }
450-
{ new.block "\doi{" doi * "}" * }
451498
if$
452499
}
453500
if$
@@ -456,7 +503,12 @@ FUNCTION {format.doi}
456503
FUNCTION {format.title}
457504
{ title empty$
458505
{ "" }
459-
{ title "t" change.case$ }
506+
{ title
507+
entry.lang lang.en =
508+
{ "t" change.case$ }
509+
'skip$
510+
if$
511+
}
460512
if$
461513
}
462514

@@ -574,22 +626,15 @@ FUNCTION {output.bibitem}
574626
before.all 'output.state :=
575627
}
576628

577-
FUNCTION {n.dashify}
629+
FUNCTION {hyphenate}
578630
{ 't :=
579631
""
580632
{ t empty$ not }
581633
{ t #1 #1 substring$ "-" =
582-
{ t #1 #2 substring$ "--" = not
583-
{ "--" *
584-
t #2 global.max$ substring$ 't :=
585-
}
586-
{ { t #1 #1 substring$ "-" = }
587-
{ "-" *
588-
t #2 global.max$ substring$ 't :=
589-
}
590-
while$
591-
}
592-
if$
634+
{ "-" *
635+
{ t #1 #1 substring$ "-" = }
636+
{ t #2 global.max$ substring$ 't := }
637+
while$
593638
}
594639
{ t #1 #1 substring$ *
595640
t #2 global.max$ substring$ 't :=
@@ -604,8 +649,8 @@ FUNCTION {extract.before.dash}
604649
{ pop$ "" }
605650
{ 's :=
606651
#1 'charptr :=
607-
s text.length$ #1 + 'stringlength :=
608-
{ charptr stringlength <
652+
s text.length$ #1 + 'len :=
653+
{ charptr len <
609654
s charptr #1 substring$ "-" = not
610655
and
611656
}
@@ -621,14 +666,14 @@ FUNCTION {extract.after.dash}
621666
{ pop$ "" }
622667
{ 's :=
623668
#1 'charptr :=
624-
s text.length$ #1 + 'stringlength :=
625-
{ charptr stringlength <
669+
s text.length$ #1 + 'len :=
670+
{ charptr len <
626671
s charptr #1 substring$ "-" = not
627672
and
628673
}
629674
{ charptr #1 + 'charptr := }
630675
while$
631-
{ charptr stringlength <
676+
{ charptr len <
632677
s charptr #1 substring$ "-" =
633678
and
634679
}
@@ -749,7 +794,7 @@ FUNCTION {format.volume}
749794
{ "" }
750795
{ volume is.number
751796
{ is.in.chinese
752-
{ "第" volume * "卷" * }
797+
{ "第 " volume * " 卷" * }
753798
{ "volume" volume tie.or.space.connect }
754799
if$
755800
}
@@ -764,7 +809,7 @@ FUNCTION {format.number}
764809
{ "" }
765810
{ number is.number
766811
{ is.in.chinese
767-
{ "第" number * "册" * }
812+
{ "第 " number * " 册" * }
768813
{ "number" number tie.or.space.connect }
769814
if$
770815
}
@@ -798,7 +843,10 @@ FUNCTION {format.series.vol.num.title}
798843
if$
799844
}
800845
if$
801-
"t" change.case$
846+
entry.lang lang.en =
847+
{ "t" change.case$ }
848+
'skip$
849+
if$
802850
}
803851

804852
FUNCTION {format.series.vol.num.booktitle}
@@ -842,7 +890,7 @@ FUNCTION {format.edition}
842890
{ "" }
843891
{ edition is.number
844892
{ is.in.chinese
845-
{ edition "版" * }
893+
{ edition " 版" * }
846894
{ edition num.to.ordinal " ed." * }
847895
if$
848896
}
@@ -868,12 +916,9 @@ FUNCTION {format.sine.loco}
868916
if$
869917
}
870918

871-
FUNCTION {format.address}
872-
{ address }
873-
874919
FUNCTION {format.sine.nomine}
875920
{ is.in.chinese
876-
{ "[出版地不详]" }
921+
{ "[出版者不详]" }
877922
{ "[s.n.]" }
878923
if$
879924
}
@@ -935,7 +980,7 @@ FUNCTION {format.address.publisher}
935980
FUNCTION {format.pages}
936981
{ pages empty$
937982
{ "" }
938-
{ pages n.dashify }
983+
{ pages hyphenate }
939984
if$
940985
}
941986

@@ -1397,8 +1442,6 @@ FUNCTION {sortify}
13971442
"l" change.case$
13981443
}
13991444

1400-
INTEGERS { len }
1401-
14021445
FUNCTION {chop.word}
14031446
{ 's :=
14041447
'len :=
@@ -1742,7 +1785,7 @@ FUNCTION {begin.bib}
17421785
write$ newline$
17431786
"\providecommand{\href}[2]{\url{#2}}"
17441787
write$ newline$
1745-
"\providecommand{\doi}[1]{DOI: \href{http://dx.doi.org/#1}{#1}}"
1788+
"\providecommand{\doi}[1]{\href{https://doi.org/#1}{#1}}"
17461789
write$ newline$
17471790
"\expandafter\ifx\csname urlstyle\endcsname\relax\relax\else"
17481791
write$ newline$

0 commit comments

Comments
 (0)