summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015-content.tex
blob: ba15efb86e88c3d6de54f0bfad6b0ea087d268aa (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
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
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
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
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
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
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
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
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592

%------------------------------------------------------------
%-----------------标题和目录---------------------------------
\titleformanual{符合GB/T 7714-2015标准的biblatex参考文献样式
\footnote{This Manual was created with biblatex v\versionofbiblatex, last revised at \today;\\ \hspace*{1.5em} Style Files (gb7714-2015*.*) have version number: \versionofgbtstyle.}}
\authorformanual{胡振震\setcounter{footnote}{0}\footnote{Email: hzzmail@163.com}}
\dateformanual{2016-07-01}
\titleandauthor
\phantomsection
%\addcontentsline{toc}{section}{目录}
\tableofcontents
%\renewcommand{\numberline}[1]{#1~}
%\phantomsection
%\addcontentsline{toc}{section}{示例}
\listoffigures
\listoftables
\listofegcode
%------------------------------------------------------------

\section{概述}
提供了符合《GB/T 7714-2015~信息与文献~参考文献著录规则》要求的biblatex参考文献样式。分为两种编制方式:一、顺序编码制;二、著者-出版年制。主要特点包括:
\begin{enumerate}
  \item 兼容性

自biblatex-gb7714-2015宏包发布以来,一直秉承兼容各版本biblatex的原则,可与biblatex v2.8 (contained in texlive2014) 以上所有版本配合使用(注意 ctex 2.9.4 的用户需升级 biblatex)。并完善在不同文档类特别是beamer类中的使用问题。兼容一些传统的参考文献条目类型,比如www/electronic/conference/mastersthsis/phdthsis/techreport/standard,并根据国标要求增加了newspaper(报纸析出的文献)、database(数据库)、dataset(数据集)、 software(软件)、map(舆图)、archive(档案)等类型。兼容适用于不同样式的bib数据源,例如gbt7714宏包的bst样式中mark和medium域等。

  \item 易用性

从biblatex-gb7714-2015宏包设计的最开始就遵守尽可能让用户减少对于bib文件准备等方面的关注,用户可以用最简单的输入或者从网上下载(如各种学术、zotero等)参考文献信息后直接使用,能够自动判断文献类型和载体并区分不同的语言,而不需要用户手动增添类似参考文献类型和载体标识、语言等额外信息。保持biblatex习惯基础上,为用户提供既能满足国标要求又具实用性的标注(引用)命令,如cite(上标)、parencite(非上标)、textcite(提供作者为主语)、authornumcite(提供作者和上标编码)、pagescite(满足国标)、yearpagescite(提供年份页码)、yearcite(提供年份)等。并为用户提供全面、详实的说明,包括条目类型、域、域信息输入方法以及
\href{https://github.com/hushidong/biblatex-gb7714-2015/wiki}{WIKI},
\href{https://github.com/hushidong/biblatex-solution-to-latex-bibliography/blob/master/biblatex-solution-to-latex-bibliography.pdf}{LaTeX 文档参考文献的biblatex解决方案}等文档,以帮助用户更好的入门。

  \item 灵活性

biblatex-gb7714-2015宏包除了提供严格遵守GB/T 7714-2015标准的格式外,还通过增加新的用户设置选项,使用户可以根据自己的需求很灵活地调整参考文献表的生成。包括标签的对齐方式(gbalign选项)、出版项缺省时的处理(gbpub选项)、作者缺省时的处理(gbnoauthor选项)、作者姓名格式的调整(gbnamefmt选项)、文献类型和载体标识的输出控制(gbtype选项)、析出文献标识符\texttt{//}控制(gbpunctin选项)、GBK编码文档兼容性(gbcodegbk选项)、域的默认格式还原(gbfieldstd选项)、标题的超链接控制(gbtitlelink选项)、双语对照文献表等。能通过标注和著录分别采用著者-出版年制(即作者年制)、顺序编码制样式实现特殊的参考文献格式,并尽最大可能利用biblatex的选项来实现一些特殊需求,比如文献表中作者数量大于3、标注中仅给出第一作者的姓、参考文献表按拼音或笔画排序等等。
\end{enumerate}

%具体来讲,完成了4个方面的工作:
%\begin{enumerate}
%  \item 完成了GB/T 7714-2015标准的完整实现,包括两种编制方式下的各类型参考文献著录格式和标注格式等基本内容,还包括: 双语文献格式,带页码的标注格式,作者年制下仅有年的标注格式和文献按语言集中并自动排序,起止卷期自动解析,增加gbnoauthor选项控制作者年制责任者缺省的处理,增加gbpub选项控制出版信息缺省时的处理,增加gbalign选项控制顺序编码制文献表的标签对齐方式,提供右对齐、左对齐和项对齐三种方式。
%  \item 实现了用户文献数据录入优化,用户在录入参考文献数据时,只需要录入文献的实际信息即可,不需要录入文献标识符和载体标识符,无需录入language或者其它域信息来区分中英文参考文献,实现中英文自动判断并处理。支持一些特殊或老的条目类型,比如standard,newspaper,www,mastersthesis,phdthesis等。
%  \item 实现了对biblatex不同版本的兼容,能够应用于biblatex3.2以前的老版本,也能用于3.3版姓名处理方式改变后的版本。即可以与texlive2014/2015/2016/2017配合使用,无需升级biblatex情况下直接使用biblatex-gb7714-2015宏包(即本样式)。
%      \bc{当然 ctex2.9.4 的用户可能要升级一下biblatex,因为ctex多年没有更新,其中的biblatex版本过低}。
%  \item 测试了样式文件在book/report/article文档类以及beamer类下的适用性,结果表明均能满足要求。文档详细介绍了样式文件的使用方法和注意事项,说明了各条目类型的著录格式及其在biblatex 中对应信息域的构成,以及域信息的录入方法,并严格按照GB/T 7714-2015 标准测试了各种类型的文献。
%\end{enumerate}

宏包文件结构如图\ref{fig:pkg:structure}所示:
\begin{figure}[!htb]
\centering
\begin{tikzpicture}[node distance=1.5cm]
%\definecolor{bluea}{rgb}{0.05,0.62,0.94}
\ttfamily
\node[align=center,fill=gbyellow!15,text width=4cm,inner sep=8pt] (project) {\textcolor{black}{Biblatex-gb7714-2015}};

\node[align=center,below of=project,draw=red,thick,text width=3.5cm] (manual) {\textcolor{black}{Manual of Package}};
\node[align=center,left of=manual,xshift=-3cm,draw=blue,thick,text width=3.5cm] (style) {\textcolor{black}{Style Files}};
\node[align=center,right of=manual,xshift=3cm,draw=orange,thick,text width=3.5cm] (script) {\textcolor{black}{Compiling Scripts}};
\draw[color=cyan,thick] (project.south) -- (manual.north) ;
\draw[color=cyan,thick] (style.north) -- ($(style.north)+(0mm,3mm)$) ;
\draw[color=cyan,thick] (script.north) -- ($(script.north)+(0mm,3mm)$) ;
\draw[color=cyan,thick] ($(style.north)+(0mm,3mm)$) -- ($(script.north)+(0mm,3mm)$);

\node[below of=style,fill=gbgrey!20,yshift=0.5cm,xshift=2mm,text width=2cm] (numbbx) {\tiny \textcolor{black}{gb7715-2015.bbx}};
\node[below of=numbbx,fill=gbgrey!20,yshift=8mm,text width=2cm] (numcbx) {\tiny \textcolor{black}{gb7715-2015.cbx}};
\node[below of=numcbx,fill=gbgrey!20,yshift=8mm,text width=2cm] (aybbx) {\tiny \textcolor{black}{gb7715-2015ay.bbx}};
\node[below of=aybbx,fill=gbgrey!20,yshift=8mm,text width=2cm] (aycbx) {\tiny \textcolor{black}{gb7715-2015ay.cbx}};
\node[below of=aycbx,fill=gbgrey!20,yshift=8mm,text width=2cm] (gbkdef) {\tiny \textcolor{black}{gb7715-2015-gbk.def}};
\draw[color=blue,semithick] (numbbx.west) -- ($(numbbx.west)+(-3mm,0mm)$) ;
\draw[color=blue,semithick] (numcbx.west) -- ($(numcbx.west)+(-3mm,0mm)$) ;
\draw[color=blue,semithick] (aybbx.west) -- ($(aybbx.west)+(-3mm,0mm)$) ;
\draw[color=blue,semithick] (aycbx.west) -- ($(aycbx.west)+(-3mm,0mm)$) ;
\draw[color=blue,semithick] (gbkdef.west) -- ($(gbkdef.west)+(-3mm,0mm)$) ;
\draw[color=blue,semithick] ($(gbkdef.west)+(-3mm,0mm)$) -- ($(aycbx.west)+(-3mm,28.1mm)$) ;

\node[below of=manual,fill=gbsteelblue!15,yshift=0.5cm,xshift=2mm,text width=2.8cm] (mtex) {\tiny \textcolor{black}{biblatex-gb7714-2015.tex}};
\node[below of=mtex,fill=gbsteelblue!15,yshift=8mm,text width=2.8cm] (mpdf) {\tiny \textcolor{black}{biblatex-gb7714-2015.pdf}};
\node[below of=mpdf,fill=gbsteelblue!15,yshift=8mm,text width=2.8cm] (egtex) {\tiny \textcolor{black}{example/eg*.tex}};
\node[below of=egtex,fill=gbsteelblue!15,yshift=8mm,text width=2.8cm] (egbib) {\tiny \textcolor{black}{example/*.bib}};
\draw[color=red,semithick] (mtex.west) -- ($(mtex.west)+(-3mm,0mm)$) ;
\draw[color=red,semithick] (mpdf.west) -- ($(mpdf.west)+(-3mm,0mm)$) ;
\draw[color=red,semithick] (egtex.west) -- ($(egtex.west)+(-3mm,0mm)$) ;
\draw[color=red,semithick] (egbib.west) -- ($(egbib.west)+(-3mm,0mm)$) ;
\draw[color=red,semithick] ($(egbib.west)+(-3mm,0mm)$) -- ($(egbib.west)+(-3mm,28.1mm)$) ;

\node[below of=script,fill=gbblue!10,yshift=0.5cm,xshift=2mm,text width=2cm] (cpall) {\tiny \textcolor{black}{makeall.bat/sh}};
\node[below of=cpall,fill=gbblue!10,yshift=8mm,text width=2cm] (cpfil) {\tiny \textcolor{black}{makefile.bat/sh}};
\node[below of=cpfil,fill=gbblue!10,yshift=8mm,text width=2cm] (cpcln) {\tiny \textcolor{black}{makeclear.bat/sh}};
\node[below of=cpcln,fill=gbblue!10,yshift=8mm,text width=2cm] (plspt) {\tiny \textcolor{black}{gb7714text*.pl/dat}};
\draw[color=orange,semithick] (cpall.west) -- ($(cpall.west)+(-3mm,0mm)$) ;
\draw[color=orange,semithick] (cpfil.west) -- ($(cpfil.west)+(-3mm,0mm)$) ;
\draw[color=orange,semithick] (cpcln.west) -- ($(cpcln.west)+(-3mm,0mm)$) ;
\draw[color=orange,semithick] (plspt.west) -- ($(plspt.west)+(-3mm,0mm)$) ;
\draw[color=orange,semithick] ($(plspt.west)+(-3mm,0mm)$) -- ($(plspt.west)+(-3mm,28.1mm)$) ;
\end{tikzpicture}
\caption{宏包文件结构}\label{fig:pkg:structure}
\end{figure}

其中,\zd{gb7714-2015.bbx/cbx}、\zd{gb7714-2015ay.bbx/cbx}分别为顺序编码制和作者年制样式文件,\zd{gb7715-2015-gbk.def}为GBK编码文档编译所需的支撑文件。
\zd{biblatex-gb7714-2015.tex},\zd{eg*.tex}为说明文档和测试用例。\zd{*.bat}、\zd{*.sh}分别为windows和linux下说明文档的编译脚本。\zd{*.pl}为gb7714格式著录文献表到bib文件的perl转换脚本,\zd{*.dat}为转换测试文献表。

\subsection{基于biblatex的参考文献生成方法}
笔者从最初开始学习latex时利用 thebibliography 环境生成参考文献,到对格式化有更多需求后开始寻求利用参考文献宏包,再到最后选择使用biblatex宏包,越发感觉到biblatex 在生成参考文献方面的巨大潜力。经过大量实践,总结其优点如下:
%[也由于对bibtex语言不熟悉,偷懒不想学$( \hat{} \bot \hat{} )$]
\begin{enumerate}
\item 使用简单。样式随宏包加载,参考文献源bib文件利用addbibresource加载,打印文献表利用printbibliography命令可以在文档任意位置打印。参考文献只需三步编译,第一遍xelatex,第二遍biber,第三遍xelatex,当然如果需要反向超链接,除设置backref 选项外,还需要第四遍xelatex。例\ref{eg:compile:cmd} 给出编译命令,其中--synctex=-1 选项也可以是-synctex=1。而且这四步命令可以用一条命令latexmk -xelatex jobname.tex 代替。除使用xelatex进行编译外,也可以使用pdflatex进行编译,但要注意的是pdflatex编译可能因为某些样式比如authoryear,使用了xstring宏包中的一些命令而导致错误,但numeric类样式通常没有问题。该问题在biblatex更新到3.12版本后取消xstring宏包后得以解决。中文用户编译还需要注意编码问题。utf-8编码的文档,采用xelatex编译没有任何注意事项,但使用pdflatex编译时,需要给ctex宏包加载UTF8选项,比如\verb|\usepackage[UTF8]{ctex}|,该选项在文档类加载时给出也可,比如\verb|\documentclass[[UTF8]{article}|,同时引用文献时使用的引用关键词应使用英文。当文档使用其他编码时,xelatex编译通常需要指定一个文档编码,比如windows环境下的GB2312编码的文档需要指定\verb|\XeTeXinputencoding "GBK"|,否则会显示乱码。使用pdflatex进行编译时,如果biblatex不能正确的处理编码问题,那么需要为其明确的指定texencoding和bibencoding选项。比如windows环境下的GB2312编码的文档,需要指定\verb|\usepackge[texencoding=GBK]{biblatex}|。

    \begin{example}{使用biblatex宏包的文档编译命令}{eg:compile:cmd}
    \begin{texlist}
    xelatex --synctex=-1 jobname.tex
    biber jobname
    xelatex --synctex=-1 jobname.tex
    xelatex --synctex=-1 jobname.tex
    \end{texlist}
    \end{example}
%使用够方便

\item 划分自由。利用biblatex宏包可以在一个文档中生成任意数量的参考文献表,而不需要用include把分档划分成不同的文件来生成分章参考文献。利用refsection 和refsegment可以很方便地划分参考文献节,甚至还可以嵌套使用。
%划分很自由,划分无限制

%处理无限制,支持更全面
\item 支持全面。后端处理程序biber处理大数据量参考文献毫无压力,不用担心bibtex 可能存在的内存不足等局限,字符编码支持utf-8,完全支持中文的bibtex 键(引用关键字)。biber除了自身提供的大量功能,比如:动态数据修改、参考文献数据检查、输出引用文献的数据(例\ref{eg:bibercmd:outbibfile})等外,
    还能利用一些perl模块来实现一些其它功能,比如:
    实现文件编码的转换(perl 的Encode::CN 模块),
    排序的本地化调整(perl的Unicode::Collation::locale 模块,
    根据拼音和笔画排序见例\ref{eg:sort:opts}、例\ref{eg:sort:bibercmd})等。

    \begin{example}{输出引用文献数据时的biber选项}{eg:bibercmd:outbibfile}
    \begin{texlist}
    biber jobname --output-format=bibtex
    \end{texlist}
    \end{example}

    \begin{example}{中文文献排序可利用biblatex选项}{eg:sort:opts}
    \begin{texlist}
    %按拼音排序,biblatex加载选项
    \usepackage[backend=biber,style=gb7714-2015ay,sortlocale=zh__pinyin]{biblatex}
    %按笔画排序,biblatex加载选项
    \usepackage[backend=biber,style=gb7714-2015ay,sortlocale=zh__stroke]{biblatex}%
    %此时,biber则正常编译不需手动加选项,因为排序调整方案(sort tailoring)已由biblatex给出。
    biber jobname
    \end{texlist}
    \end{example}

    \begin{example}{中文文献排序也可利用biber选项}{eg:sort:bibercmd}
    \begin{texlist}
    %biblatex正常加载,即不设置排序的本地化调整方案
    \usepackage[backend=biber,style=gb7714-2015ay]{biblatex}

    %此时需利用biber选项给出本地化排序调整方案:
    %按拼音排序,则设置-l zh__pinyin
    biber -l zh__pinyin jobname
    %按笔画排序,则设置-l zh__pinyin
    biber -l zh__stroke jobname
    \end{texlist}
    \end{example}

\item 定制方便。biblatex宏包实现参考文献著录格式使用的是tex语法,相比传统的bibtex 语言学习更为容易。biblatex 提供了很多不同类型的参考文献标准样式,参考和引用都很方便,因此定制起需要的参考文献格式也很便捷。
%定制很容易
%\item 学习无障碍,因为biblatex宏包用的是tex语言,所以查看代码,学习都很方便,自然也便于生成需要的参考文献样式。
%\item 定制很容易,biblatex提供了很多不同的参考文献标准样式,学习参考都很方便,因此定制起需要的参考文献格式来非常容易。
\end{enumerate}

%上述这些优点也是笔者决定编写符合GB/T 7714-2015标准的参考文献样式文件的原因之一。

下面直接给出最小工作示例,用以介绍biblatex宏包参考文献生成的一般方法。
例\ref{code:doc:structrue}对应的结果如图\ref{fig:eg:ref}所示。
示例源代码给出了详细注释,说明了使用biblatex的tex文档的基本结构,所有基于 biblatex 生成参考文献的文档无论大小万变不离其宗,当然除tex源文档外还需准备保存参考文献信息的bib文件(详见\ref{sec:bib:bibtex}节)。要更全面深入了解biblatex的参考文献生成,可以参考:
\href{https://github.com/plk/biblatex}{biblatex宏包手册}\footnote{地址:\url{https://github.com/plk/biblatex}}、
\href{https://github.com/hushidong/biblatex-zh-cn}{中文版}\footnote{地址:\url{https://github.com/hushidong/biblatex-zh-cn}}
或者
\href{https://github.com/hushidong/biblatex-solution-to-latex-bibliography}{LaTeX 文档中文参考文献的biblatex解决方案}
\footnote{地址:
\url{https://github.com/hushidong/biblatex-solution-to-latex-bibliography}}。

\begin{example}{biblatex参考文献生成最小工作示例}{code:doc:structrue}
\begin{texlist}
\documentclass{article}%文档类
%导言区开始:
%加载ctex宏包,中文支持
\usepackage{ctex}
%加载geometry宏包,定义版面
\usepackage[left=20mm,right=20mm,top=25mm, bottom=15mm]{geometry}
%加载hyperref宏包,使用超链接
\usepackage[colorlinks=true,pdfstartview=FitH,linkcolor=blue,anchorcolor=violet,citecolor=magenta]{hyperref}
%加载biblatex宏包,使用参考文献
%其中后端backend使用biber
%标注(引用)样式citestyle,著录样式bibstyle都采用gb7714-2015样式
\usepackage[backend=biber,bibstyle=gb7714-2015,%nature,%
citestyle=gb7714-2015%,backref=true%
]{biblatex}
%biblatex宏包的参考文献数据源加载方式
\addbibresource[location=local]{example.bib}

%正文区开始:
\begin{document}
%正文内容,引用参考文献
详见文献\cite{Peebles2001-100-100}\parencite{Babu2014--}
参考文献\cite[见][49页]{于潇2012-1518-1523}\parencite[见][49页]{Babu2014--}

%打印参考文献表
\printbibliography[heading=bibliography,title=参考文献]
\end{document}
\end{texlist}
\end{example}

\begin{refsection}
\begin{figure}[!htb]
\centering
\fbox{
\parbox{16cm}{%\raggedright
详见文献\cite{Peebles2001-100-100}\parencite{Babu2014--}
参考文献\cite[见][49页]{于潇2012-1518-1523}\parencite[见][49页]{Babu2014--}
\renewcommand{\bibfont}{\zihao{-5}}
\printbibliography[heading=subbibliography,title=参考文献]
}
}
\caption{最小工作示例的结果}\label{fig:eg:ref}
\end{figure}
\end{refsection}


\subsection{gb7714-2015样式加载方式和选项}
\subsubsection{加载方式}
例\ref{code:doc:structrue}中给出了宏包和样式的基本加载方式。注意,当著录样式bibstyle和标注样式citestyle相同时,两者可以合并为一个选项style。比如:

\begin{example}{顺序编码制(gb7714-2015)加载方式}{eg:gb7714numeric}
\begin{texlist}
%简单方式:
\usepackage[backend=biber,style=gb7714-2015]{biblatex}
%设置gbalign选项以改变文献表序号标签对齐方式,设置gbpub=false取消缺省出版项自填补信息,比如:
\usepackage[backend=biber,style=gb7714-2015,gbalign=gb7714-2015,gbpub=false]{biblatex}
%当文档为GBK编码且用pdflatex/latex编译时,应设置选项gbcodegbk=true:
\usepackage[backend=biber,style=gb7714-2015,gbcodegbk=true]{biblatex}
\end{texlist}
\end{example}

\begin{example}{著者-出版年制(gb7714-2015ay)加载方式}{eg:gb7714authoryear}
\begin{texlist}
%简单方式:
\usepackage[backend=biber,style=gb7714-2015ay]{biblatex}
%设置gbpub=false取消缺省出版项自动填补信息,设置gbnoauthor=true以使用佚名或NOAUTHOR填补缺失的author信息:
\usepackage[backend=biber,style=gb7714-2015ay,gbpub=false,gbnoauthor=true]{biblatex}
%当文档为GBK编码且用pdflatex/latex编译时,应设置选项gbcodegbk=true:
\usepackage[backend=biber,style=gb7714-2015ay,gbcodegbk=true]{biblatex}
\end{texlist}
\end{example}

\begin{example}{不同著录格式共存的样式(gb7714-2015ms)加载方式}{eg:gb7714ms}
\begin{texlist}
%默认方式,所有文献使用一种著录格式,即GB/T 7714-2015样式
\usepackage[backend=biber,style=gb7714-2015ms]{biblatex}
%设置gbstyle=false,则中文文献使用GB/T 7714-2015著录格式,而其它语言文献使用biblatex提供的标准样式
\usepackage[backend=biber,style=gb7714-2015ms,gbstyle=false]{biblatex}
\end{texlist}
\end{example}

\begin{example}{参考文献文本转换为bib文件perl脚本使用方式}{eg:transtobib}
\begin{texlist}
perl gb7714texttobib.pl in=textfilename out=bibfilename
\end{texlist}
\end{example}

其中,v1.0m版本增加了gb7714-2015ms样式文件,主要是为了在一个文档中使用多种样式,比如中文文献使用GB/T 7714-2015规定的著录格式,而其它语言文献使用biblatex提供的标准样式。这种方式尽管不会很常用,但既然有需求提出,那么就做了实现。主要的实现原理是把所有的GB/T 7714-2015 规定产生的格式修改局部化到每一条文献打印时处理,此时先判断gbstyle选项及文献的语言,当满足要求则使用这些局部化格式修改,否则使用默认的标准样式。这种实现为一篇文档内实现两种样式提供了思路,尽管目前其它语言文献的著录格式是标准样式,但只要对其做格式修改就可以形成符合某种格式规范的样式,比如像ieee,nature等样式都是可以实现的,因此存在中文使用GB/T 7714-2015 著录格式,而英文文献使用ieee等著录格式的可能性。测试文档见:
\href{run:./example/opt-gbstyle.tex}{opt-gbstyle.tex}。

\subsubsection{新增选项}\label{sec:added:opt}
样式包新增了一些选项,用于标签对齐方式、出版项缺省处理、责任者(作者)缺省处理等功能的控制,其使用方式与biblatex宏包选项完全相同:
\begin{description}
  \item[gbalign]=\textbf{right},left,center,gb7714-2015. \hfill default is right

  为顺序编码制增加的选项,用于选择参考文献表序号标签的对齐方式。
  \begin{itemize}
    \item gbalign=right,默认的list环境中的标签右对齐;
    \item gbalign=left,是list环境中的标签左对齐;
    \item gbalign=center,是list环境中的等宽标签,数字在[]内居中;
    \item gbalign=gb7714-2015,是项对齐方式,即段落环境中标签使用原始宽度,标签与条目内容等间距。
  \end{itemize}
  该选项对作者年制无效。顺序编码制序号标签对齐方式测试,
  数字在标签内居中见:
  \href{run:./example/opt-gbalign-center.tex}{opt-gbalign-center.tex},
  标签左对齐见:
  \href{run:./example/opt-gbalign-left.tex}{opt-gbalign-left.tex},
  项对齐(标签与内容等间距)见:
  \href{run:./example/opt-gbalign-gb.tex}{opt-gbalign-gb.tex}。


  \item[gbpub]=\textbf{true},false. \hfill default is true

  为控制出版信息缺失处理增加的选项。
  \begin{itemize}
    \item gbpub=true,自动利用:[出版地不详]、[出版者不详]、[S.l.]、[s.n.]等填补缺省信息;
    \item gbpub=false 则取消自动处理,使用标准样式的方式取消相应项的输出。
  \end{itemize}
  顺序编码制测试(作者年制类似)见:
  \href{run:./example/opt-gbpub-true.tex}{opt-gbpub-true.tex},
  \href{run:./example/opt-gbpub-false.tex}{opt-gbpub-false.tex}。


  \item[gbbiblabel]=\textbf{bracket},parens,plain,dot,box,circle. \hfill default is bracket

  为顺序编码制增加的选项,用于选择参考文献表序号数字的格式。
  \begin{itemize}
    \item gbbiblabel=bracket,序号数字由方括号包围,比如[1];
    \item gbbiblabel=parens,序号数字由圆括号包围,比如(1);
    \item gbbiblabel=dot,序号数字数字后面加点,比如1.;
    \item gbbiblabel=plain,序号数字无装饰,比如1;
    \item gbbiblabel=box,序号数字由方框包围,比如\framebox{1};
    \item gbbiblabel=circle,序号数字由圆圈包围,比如\textcircled{1}。
  \end{itemize}

  \item[gbnoauthor]=true,\textbf{false}. \hfill default is false

  为作者年制增加的选项,用于控制责任者缺失时的处理。
  \begin{itemize}
    \item gbnoauthor=false,当作者信息缺失时默认不做处理,使用标准样式的处理方式;
    \item gbnoauthor=true,则根据GB/T 7714-2015 的要求进行处理,中文文献使用佚名来代替author,英文文献用 Anon 来代替author。
  \end{itemize}
  测试结果见:
  \href{run:./example/opt-gbnoauthor-true.tex}{opt-gbnoauthor-true.tex},
  \href{run:./example/opt-gbnoauthor-false.tex}{opt-gbnoauthor-false.tex}。


  \item[gbnamefmt]=\textbf{uppercase},lowercase,givenahead,familyahead,pinyin. \hfill default is uppercase

  为姓名大小写格式控制增加的选项。
  \begin{itemize}
    \item gbnamefmt=uppercase,使大小写符合GB/T 7714-2015 的要求;
    \item gbnamefmt=lowercase,大小写由输入信息确定不做改变;
    \item gbnamefmt=givenahead,姓名的格式与biblatex标准样式的given-family格式一致,即名在前姓在后,类似于ieee的样式;
    \item gbnamefmt=familyahead时,姓名的格式与biblatex 标准样式的family-given格式一致,即姓在前名在后,类似于APA 的样式;
    \item gbnamefmt=pinyin 时,姓名的格式采用一种常见的中文拼音方式,比如对于 Zhao, Yu Xin 或 Yu Xin Zhao 这个姓名拼音格式化为ZHAO Yu-xin。
  \end{itemize}
  \bc{注意:还可以利用 nameformat 域为某一具体条目设置该条目的姓名格式,比如:要在一个文献表中实现英文文献是givenahead 格式,而拼音的文献是pinyin风格,那么可以设置拼音文献的 nameformat 域为pinyin,而gbnamefmt设置为givenahead。条目中nameformat 域的局部设置优先于gbnamefmt的全局设置。}\par
  \emph{注意:使用pinyin选项时,bib文件中文献的作者应给出完整的名而不是缩写,否则出来的效果未必令人满意}。
  测试结果见:
  \href{run:./example/opt-gbnamefmt.tex}{opt-gbnamefmt.tex},
  \href{run:./example/opt-gbnamefmt-default.tex}{opt-gbnamefmt-default.tex}。


  \item[gbtype]=\textbf{true},false. \hfill default is true

  为控制是否输出题名后面的文献类型和载体标识符而增加的选项。
  \begin{itemize}
    \item gbtype=true,根据GB/T 7714-2015 要求输出标识符,例如“在线的期刊析出文献题名[J/OL]”。
    \item gbtype=false,则不输出标识符,例如“在线的期刊析出文献题名”。
  \end{itemize}



  \item[gbpunctin]=\textbf{true},false. \hfill default is true

  为控制inbook,incollection,inproceedings中析出来源文献前的\texttt{//}符号而增加的选项。
  \begin{itemize}
    \item gbpunctin=true,根据GB/T 7714-2015 要求输出\texttt{//}。
    \item gbpunctin=false,则输出默认的本地字符串,
    在英语中是\texttt{in:},若要完全去掉该符号则可以在导言区增加命令
  \lstinline!\DefineBibliographyStrings{english}{in={}}!。
  \end{itemize}

  \item[gbctexset]=\textbf{true},false. \hfill default is true

  为控制参考文献标题内容的设置方式增加的选项。
  \begin{itemize}
    \item gbctexset=true,参考文献标题内容可以通过重定义 bibname 或 refname 宏设置。比如利用ctex宏包进行设置:
        \lstinline[breaklines]!\ctexset{bibname={title you want}}!
    \item gbctexset=false,参考文献标题内容可以通过重定义本地字符串设置,比如:

  \lstinline[breaklines=true]!\DefineBibliographyStrings{english}{bibliography={title you want}}!

  \lstinline[breaklines=true]!\DefineBibliographyStrings{english}{references={title you want}}!。
  \end{itemize}
  当然除此之外,利用 printbibliography 命令的 title 选项进行设置依然是有效方式之一。比如:

  \lstinline[breaklines=true]!\printbibliography[title=title you want]!。


  \item[gbcodegbk]=true,\textbf{false}. \hfill default is false

  为兼容GBK编码的文档增加的选项。
  \begin{itemize}
    \item gbcodegbk=false,即默认是utf-8编码的文档。
    \item gbcodegbk=true,为利用pdflatex/latex编译GBK编码文档时使用。
  \end{itemize}
  当在源文档前面增加 XeTeX 原语:\lstinline!\XeTeXinputencoding "GBK"! 后,GBK编码的文档也可以使用xelatex编译,这时应设置为false或不给出该选项。测试文件见:
  \href{run:example/codeopt-gbcodegbk.tex}{codeopt-gbcodegbk.tex}。

  \item[gbstrict]=\textbf{true},false. \hfill default is true

  为避免输出bib文件中多余的域信息而增加选项,目的是为了兼容一些bib文件,因为某些bst样式文件进行中英文判断需要在bib文件中增加类似language这样的域作为支撑,而其中某些域在标准的biblatex样式文件中是默认输出的。
  \begin{itemize}
    \item gbstrict=true,即默认不输出。
    \item gbstrict=false,需要还原标准样式的输出情况时使用。
  \end{itemize}


  \item[gbfieldstd]=true,\textbf{false}. \hfill default is false

  为控制一些域如标题,网址,卷域的格式而增加选项。目的是使用一些标准样式的处理来增加格式多样性。
  \begin{itemize}
    \item gbfieldstd=false,即默认使用GB/T 7714-2015要求的样式。
    \item gbfieldstd=true,即还原使用标准样式的格式,比如使用引号,字体,加引导词等。当然要调整这些格式也可采用biblatex提供的更为直接的设置域格式的方式。
  \end{itemize}


  \item[gbtitlelink]=true,\textbf{false}. \hfill default is false

  为设置标题的超链接增加的选项。
  \begin{itemize}
    \item gbtitlelink=false,即默认不给标题设置超链接。
    \item gbtitlelink=true,当文献存在url 域时为文献标题设置超链接。
  \end{itemize}
  测试文件见:
  \href{run:example/opt-gbtitlelink.tex}{opt-gbtitlelink.tex}。

\end{description}


\subsubsection{与标准选项的兼容性}
绝大部分biblatex标准样式选项可与gb7714-2015样式联合使用,下面给出一些经过兼容性测试的选项说明。需要注意的是:使用gb7714-2015样式时(即style=gb7714-2015),backend选择应指定为biber,还有一些选项已经在样式设计中固定,如果要严格使用国标样式,一般不应做修改,比如sorting,maxnames,minnames,date,useprefix,giveninits等,但如果用户有自己的其它需求,则可按需修改。

\begin{description}
  \item[url]=true, false. \hfill default: true

  该选项控制是否打印 url 域并获取日期。该选项只影响 url 信息是可选的那些条目类型。而 @online 条目的 url 域总是会打印出来。它是导言区选项,与样式相关,gb7714-2015样式做了特别支持,可以兼容使用。

  \item[giveninits]=true, false. \hfill default: true

  启用该选项时姓名中的名部分会用首字母表示。

  \item[uniquelist]=true, false, minyear \hfill default: minyear

  该选项用于作者年制样式,用于正文中引用(标注)标签的作者列表控制(目的是消除歧义)。当uniquelist=true时,自动利用扩展作者姓名列表长度的方式消除labelname 列表的歧义; 当=false 时则禁用扩展,标签仅使用一个作者,消除歧义通过跟在年份后面的字母实现; 默认使用minyear,即当被截短的作者姓名列表存在歧义时,只有当年份相同,才会扩展列表长度以消除歧义。

  注意当使用uniquelist=false后标签只有一个作者,但文中可能有同姓作者的文献,这时根据uniquename选项的设置,biblatex会使用姓名的其它部分比如名来消除歧义,但如果想强制要求仅用姓作为文中的标注标签,那么可以设置uniquename=false,但此时标注是可能存在歧义的。

  \item[maxnames]=整数 \hfill default: 3

  影响所有名称列表(\bibfield{author}、\bibfield{editor} 等)的阈值。如果某个列表超过了该阈值,即,它包含的姓名数量超过 \prm{integer},那么就会根据 \opt{minnames} 选项的设置进行自动截断。\opt{maxnames} 是设置 \opt{maxbibnames} 和 \opt{maxcitenames} 两个选项的支配选项。

  \item[minnames]=整数 \hfill default: 3

  影响所有名称列表(\bibfield{author}、\bibfield{editor} 等)的限制值。如果某个列表包含的姓名数量超过 \prm{integer},那么就会自动截断至\opt{minnames}个姓名。\prm{minnames} 的值必须小于或等于 \prm{maxnames}。\opt{minnames} 是设置 \opt{minbibnames} 和 \opt{mincitenames} 两个选项的支配选项。

  \item[maxbibnames]=整数 \hfill default: \prm{maxnames}

  类似于 \opt{maxnames} 但只影响参考文献表。

  \item[minbibnames]=整数 \hfill default: \prm{minnames}

  类似于  \opt{minnames} 但只影响参考文献表。

  \item[maxcitenames]=整数 \hfill default: \prm{maxnames}

  类似于 \opt{maxnames} 但只影响正文中的标注(引用)。

  \item[mincitenames]=整数 \hfill default: \prm{minnames}

  类似于 \opt{minnames} 但只影响正文中的标注(引用)。

  \item[hyperref]=true, false, auto. \hfill default: auto

  是否将引用和后向引用转化为可点击的超链接。这是宏包的载入时选项,与样式无关,自然可以使用。

  \item[backref]=true, false. \hfill default: false

  是否在文献中打印出反向引用。这是宏包的载入时选项,与样式无关,自然可以使用。

  \item[refsection]=none, part, chapter, section, subsection. \hfill default: none

  该选项自动在文档分段处(例如一章或一节)开始一个新的参考文献分节。是宏包的载入时选项,与样式无关,自然可以使用。需要注意与titlesec宏包联用时,该选项会失效。

  \item[refsegment]=none, part, chapter, section, subsection. \hfill default: none

  类似于refsection选项,但开始的是一个新的参考文献片段。

  \item[citereset]=none, part, chapter, section, subsection. \hfill default: none

  该选项在文档分段处(例如一章或一节)自动执行citereset 命令。

  \item[labeldate]=year, short, long, terse, comp, ymd, edtf. \hfill default: year

  类似于 date 选项,但控制的是由DeclareLabeldate 选择的日期域的格式。

  \item[doi]=true,false. \hfill default: true

  该选项控制是否打印 \bibfield{doi} 域。

  \item[isbn]=true,false. \hfill default: true

  该选项控制是否打印 \bibfield{isbn}\slash \bibfield{issn}\slash \bibfield{isrn} 等域。

  \item[sortlocale]=auto, locale. \hfill default: auto

  该选项控制排序的本地化调整方案。对于英文文献,该选项不需要设置。对于中文文献当有按拼音或笔划等进行排序的需求时,可以设置相应的本地化调整方案。主要的调整方案有:
  \begin{itemize}
    \item \verb|sortlocale=auto| 或者不设置该选项,为unicode编码顺序
    \item \verb|sortlocale=zh|,为unicode编码顺序
    \item \verb|sortlocale=zh__pinyin|,为拼音顺序
    \item \verb|sortlocale=zh__big5han|,为big5 编码顺序
    \item \verb|sortlocale=zh__gb2312han|,为GB-2312 顺序
    \item \verb|sortlocale=zh__stroke|,为笔划数顺序
    \item \verb|sortlocale=zh__zhuyin|,为注音顺序
  \end{itemize}

  \item[language]=autobib, autocite, auto, \prm{language}. \hfill default: autobib

  详细说明见biblatex手册。

  \item[autolang]=none, hyphen, other, other*, \prm{langname}. \hfill default:

  结合langid/langidopts域,结合babel/polyglossia宏包,可以对西文做基于条目的本地化处理。详细说明见biblatex 手册。

  \item[sortcites]=true, false. \hfill default: false

  详细说明见biblatex手册。

  \item[autocite]=plain, inline, footnote, superscript. \hfill default: plain

  详细说明见biblatex手册。

  \item[block]=none, space, par, nbpar, ragged. \hfill default: none

  详细说明见biblatex手册。

  \item[indexing]=true, false, cite, bib. \hfill default: false

  详细说明见biblatex手册。

  \item[其它]=下面还有很多选项,有些是宏包载入时选项,与样式无关,一般可以使用,但笔者没有做测试,各位朋友可以测试使用。选项的作用可以参考biblatex 使用手册,以及笔者和Wenbo 翻译的中文版。
      \begin{itemize}
          \item related=true, false. default: true
          \item defernumbers=true, false default: false
          \item maxitems=integer default: 3
          \item minitems=integer default: 1
          \item autopunct=true, false default: true
          \item clearlang=true, false default: true
          \item notetype=foot+end, footonly, endonly default: foot+end
          \item backrefstyle=none, three, two, two+, three+, all+ default: three
          \item backrefsetstyle=setonly, memonly, setormem, setandmem, memandset, setplusmem default: setonly
          \item loadfiles=true, false default: false
          \item abbreviate=true, false default: true
          \item julian=true, false default: false
          \item punctfont=true, false default: false
          \item arxiv=abs, ps, pdf, format default: abs
          \item mincrossrefs=integer default: 2
          \item minxrefs=integer default: 2
          \item eprint=true, false default: true
      \end{itemize}

\end{description}


\subsection{gb7714-2015样式的进一步说明}

\subsubsection{关于参考文献数据源: bib文件的说明}\label{sec:bib:bibtex}

参考文献数据以bibtex格式保存在bib文件中。生成参考文献除tex源文档外,还需创建参考文献数据源文件即bib文件。bib文件数据源准备完成后,在加载biblatex宏包时,使用addbibresource命令将其加载进tex源文档中。\bc{注意:数据源可以加载多个,比如多个章节的参考文献放在不同的bib文件中,那么全部加载进来即可}。

bib文件中的参考文献信息是以条目形式组织,一篇文献创建一条记录即一个参考文献条目,一个条目由若干数据域构成。文献的各部分信息应录入到条目的对应数据域中。GB/T 7714-2015标准中的文献类型与本样式中条目类型对应关系
如表\ref{tab:entrytypes}所示,
各类条目具体的著录格式详见\ref{sec:numeric:data}节。
\begin{table}[!htb]
\centering
\caption{常见条目类型}\label{tab:entrytypes}
\small
\begin{tabular}{clc}
\hline
  GB/T 7714-2015标准中的参考文献类型 &  biblatex中的条目类型 &  类型标识代码\\ \hline
  专著& book & M\\
  标准& standard/book or inbook with field note=standard& S\\
  专著中的析出文献& inbook & M\\
  连续出版物& periodical& J\\
  连续出版物的析出文献& article& J\\
  报纸析出的文献& newspaper/article with field note=standard& N\\
  专利& patent& P\\
  电子资源或电子公告& online/www/electronic& EB\\
  会议录或会议文集& proceedings& C\\
  会议文集中析出的文献& inproceedings/conference& C\\
  汇编或论文集& collection& G\\
  汇编或论文集析出中的文献& incollection& G\\
  学位论文& thesis/mastersthsis/phdthsis& D\\
  报告& report/techreport& R\\
  手册& manual& A\\
  档案& archive/manual& A\\
  数据库& database& DB\\
  数据集& dataset& DS\\
  软件& software& CP\\
  舆图& map& CM\\
  未出版物& unpublished& Z\\
  其它& misc& Z\\
  \hline
  \end{tabular}
\end{table}


组成各个条目的不同数据域(字段)保存有参考文献的各部分信息,比如作者、标题、出版项、日期等等,这些在标准中称为著录项目,
其对应关系如表\ref{tab:entryfields}所示。

\begin{table}[!htb]
\centering
\caption{常见信息域}\label{tab:entryfields}
\small
\begin{tabular}{cl}
\hline
  GB/T 7714-2015中的文献著录项目 &  biblatex中的域\\ \hline
  责任者 & author\\
  题名 & title\\
  译者 & translator\\
  版本(主要用于出版物) & edition\\
  版本(主要用于软件和手册) & version\\
  出版地 & location/address\\
  出版者 & publisher\\
  出版者(大学和研究所) & institution/school\\
  出版者(会议主办方、手册和电子资源出品方) & organization\\
  日期 & date\\
  日期(不可解析的日期) & year\\
  页码 & pages\\
  析出文献来源的责任者 & bookauthor\\
  析出文献来源的标题 & booktitle\\
  连续出版物题名(期刊名) & journal/journaltitle\\
  期刊的卷 & volume\\
  期刊的期/专利号等 & number\\
  获取和访问路径 & url\\
  引用日期 & urldate\\
  数字对象标识符 & doi\\
  杂项 & note\\
  文献类型标识符 & usera/mark\\
  文献载体标识符 & medium\\
   \hline
  \end{tabular}
\end{table}

需要注意的是,note域在本样式中也做特殊用途,即在book类型的note域中输入standard表示标准,在aritcle类型的note域中输入news表示报纸,当然也可以不做特殊用,而只是表示杂项信息,因为标准和报纸可以用standard和newspaper类型表示,尽管这两种类型不是biblatex原生的条目类型。而usera域用于表示参考文献类型和载体标识符(为兼容Lee zeping的bst样式使用的bib文件也可以用mark和medium表示)。一般情况下usera,mark,medium这些域不用在bib文件中输入,而由样式文件自动处理得到,既为了使bib文件更纯粹,也为了兼容不同的样式。想象一下如果在bib文件中给出usera域,但另一样式需要使用usera域且用途不同,那么就会有兼容性问题。不用手动输入更重要的目的是为用户减负,因为用户可以直接使用从网络(各种学术)导出参考文献信息而不用再额外添加一个参考文献类型和载体标识符。本宏包自动判断语言而不使用一个表示语言的域比如language来标记文献的语言类型也出于同样的考虑,当然也有一种情况即一篇文献中存在多种语言是无法用一个language标识的,比如一本英文著作被翻译为中文,那么原作者是英文,而译者则是中文,这时标记language的意义不大。标记language更多的是用在多种语言混合的文档中,可以用language来标记英语、中文、日语、法语和德语等用于分语言排序。

各个数据域的录入应符合bib文件规范。\bc{需要注意: 有时直接从网络获取的参考文献信息中可能带有一些特殊字符比如\%,\&等,这些字符在 tex 中通常需要做转义处理,本样式中对像title,journal等常见域中出现的特殊字符已经做了转义,但是一些不常见的域比如 abstract 等没有考虑,所以用户需要手动处理,例如把\%改为\textbackslash \%,否则可能导致出错}。下面详细介绍本样式中使用的域及其数据录入方式:

\begin{description}
  \item[author] 在biblatex中author域属于name数据类型,输入数据时,各姓名间用and 连接,当姓名过多省略时,用others代替。

      单个姓名,对于中文作者直接输入中文姓名即可。比如:于潇 and 刘义 and 柴跃廷 and others

      对于英文作者,单个姓名有两种biblatex可以解析的输入方式:

      \textcircled{1}prefix lastname, suffix, firstname middlename

      \textcircled{2}firstname middlename lastname or firstname prefix lastname

      对于需要输入前后缀的姓名只能采用第一种方式,比如:
      DES MARAIS, Jr., D J and H STRAUSS and SUMMONS, R. E. and others

      这里的第一个姓名输入为前缀,姓,后缀,名,中间名。第二个姓名输入为名,姓。第三个姓名输入为姓,名,中间名。

      \bc{需要强调:对于第二种输入方式,姓名各个组成部分最好首字母是大写的,首字母非大写可能导致解析出错,比如姓名只有两个组成部分firstname和lastname,如果firstname小写的话,有可能会解析为prefix lastname。对于第一种输入方式,则至少lastname需要首字母大写,否则有可能将lastname解析成prefix。其中lastname也称familyname,firstname middlename 两者共称givenname}

      对于机构作者,不需要解析,直接输入机构名,英文的各个机构名用\{\}包起来,比如:

      中国企业投资协会 and 台湾并购与私募股权协会 and 汇盈国际投资集团

      \{International Federation of Library Association and Institutions\}

  \item[title] 直接输入需要打印的内容,subtitle或titleaddon域类似
  \item[translator] 与author域类似,只是输入的是译者
  \item[edition] 直接输入整数,或者需要打印的内容
  \item[location] 直接输入需要打印的地址内容,而address域在biblatex中作为location别名,表示相同的内容。
  \item[publisher] 直接输入需要打印的出版者内容,institution,organization域类似
  \item[date] 日期可以格式化输入,格式化输入biblatex 会自动解析,如果无法解析会忽略该域。格式化的输入方式是:

      年-月-日/年-月-日

      比如:2001-05-06/2001-08-01

      其中第一个年-月-日会解析并存储到year,month,day域中,第二个会解析并存储到endyear,endmonth,endday域中。更多细节参考biblatex手册的Table 8: Date Interface。

  \item[year] year域的输入与date域类似,为了兼容一些老的bib文件,把year 直接用map 转换成date,所以在本样式的使用中输入year域与date域相同。

      但year与date存在一定的差异,即year可以处理仅有年的信息或者需要原样打印的内容。比如:
      1881(清光绪七年)。

      这一信息如果放在date中会被自动忽略,但放到year域中,本样式会先将其拷贝到date中进行解析,无法解析的话,date域忽略,但year 信息仍然存在,并原样打印。

  \item[pages] 可以格式化输入或输入需要打印的内容。格式化输入时,页码用整数,当有范围时,用短横线(使用多个短横线也没有问题)隔开。比如:59-60。 当无法解析时,输入内容被认为是需要完整打印的内容。
  \item[urldate] urldate域与date域类似,只是解析时,存储到urlday,urlmonth,urlyear,urlendday,urlendmonth,urlendyear域中。
  \item[url] 直接输入需要打印的网址内容
  \item[doi] 直接输入需要打印的DOI内容
  \item[note] 在本样式中note域有特殊功能,当其内容为standard或news 时,判断条目类型为标准和报纸析出的文献。
  \item[bookauthor] 用于析出文献时,作为析出文献来源文献的作者,其输入方式与author 相同。
  \item[booktitle] 用于析出文献时,作为析出文献来源文献的题名,其输入方式与title 相同。booktitleaddon域输入方式也相同。
  \item[volume] 连续出版物的卷,格式化输入用整数,当有范围时中间用短横线连接,比如:1-4。当无法解析时,输入内容被认为是需要完整打印的内容。
  \item[number] 连续出版物的期或报纸的版次,输入与volume类似。或者是专利等的号时,直接输入需要打印的内容。
  \item[journal] 用于连续出版物析出文献,表示连续出版物的题名,直接输入需要打印的内容。journaltitle,journalsubtitle域类似处理。
  \item[version] 用于report和manual的版本信息,直接输入需要打印的内容。
  \item[mark/usera] 不用输入,自动处理。也可以输入文献类型标识符比如M, J, DB, CP等。
  \item[medium] 不用输入,自动处理。也可以输入文献载体标识符比如MT, DK, CD, OL 等。
  \item[language] 不用输入,自动处理。也可以输入语言类型比如english, russian, french, japnese, korean, chinese等。主要用来标识文献的语言类型,用法详见\ref{sec:multilan:combine}节。
  \item[langid] 不用输入,自动处理。也可以输入语言名比如english, russian, french等,中日韩语一般用english。主要用于配合babel等宏包进行文献的本地化字符串处理,用法详见\ref{sec:multilan:combine}节。
  \item[nameformat] 不用输入。当需要调整当前条目的作者姓名的格式时,可以输入格式名:uppercase, lowercase, givenahead, familyahead, pinyin等。详见\ref{sec:added:opt}节。
  \item[namefmtid] 不用输入。
\end{description}

除了上述输入内容要求外,GB/T 7714-2015还有对数字、字母大小写等有一些格式要求,这些细节需要注意,请参考:
\begin{itemize}
\item 数字:\ref{sec:fmt:number}节
\item 字母大小写:\ref{sec:fmt:lettercase}节
\item 卷和期:\ref{sec:fmt:volnum}节
\item 版次:\ref{sec:fmt:edition}节
\item 出版项:\ref{sec:fmt:pubitem}节
\item 页码:\ref{sec:fmt:pages}节
\end{itemize}



\subsubsection{关于参考文献著录样式: bbx文件的说明}\label{sec:usage:bbx}
参考文献著录样式也称著录表样式或著录格式,主要分两类:顺序编码制和作者年制(著者-出版年制)。

%顺序编码制的参考文献样式基于标准样式numeric-comp/numeric修改得到
\paragraph{顺序编码制样式}中各条参考文献条目以数字序号按引用先后顺序组织。著录格式中序号格式见\ref{sec:bib:serialno}节,各类型文献条目的著录格式见\ref{sec:numeric:data}节,参考文献条目中各信息域及其录入方式见\ref{sec:bib:bibtex}节。

%作者年制的参考文献样式则基于标准样式authoryear修改。
\paragraph{作者年制样式}中各条参考文献条目以作者-年为标签以一定的顺序排列。作者年制的著录格式与顺序编码制基本相同(除了把年份提到了作者后面作为文献条目内的标签)。数据源bib文件中各条目的数据录入与顺序编码制完全一致。

\qd{作者年制有分文种文献集中的要求,因此gb7714-2015排序模板以nyt模板为基础,增加 language 作为 name 前的排序域。默认情况下,本样式文件将标题(或作者)为中文的文献的 language 域设置成 chinese,英文的设置成 english。这一设置过程,在biber 处理时自动完成。当出现问题或者有更多文种分集且有特殊顺序时,可以在bib文件中为相应文种文献的 language 域手动设置适合排序的字符串。比如: 中文文献设置为 chinese,英文文献设置为 enlish,法文文献设置为 french,那么排序中,相应的中文文献排在最前面,英文文献在中间,法文文献最后,因为升序情况下字母顺序是c然后e然后f。}

%上一段2016-1114更新,下面是以前的说法。
%\qd{根据文种文献集中的要求,修改了nyt排序格式,增加了userb作为name前的排序域,当有需求进行多文种分集且有特殊顺序时,在bib文件中给相应文种的文献设置适合排序的字符串。比如中文文献设置为cn,英文文献设置为en,法文文献设置为fr,那么排序中,相应的中文文献排在最前面,英文文献在中间,法文文献最后,因为升序情况下字母顺序是c然后e然后f。}

\paragraph{文献表字体、颜色、间距、缩进控制} 为方便用户改变文献表内容的字体和颜色等,在biblatex提供的bibfont命令基础上,增加了bibauthorfont、bibtitlefont、bibpubfont 等命令用于控制文献不同部分的格式,比如作者,标题,出版项等。增加了尺寸bibitemindent 用于控制参考文献条目在文献表中的缩进,其意义与 list 环境中 itemindent 相同。
用法具体见例\ref{eg:biblist:fontset},
测试用例见\href{run:example/testfontinbiblio.tex}{testfontinbiblio.tex}。

\begin{example}{文献表字体、颜色、间距、缩进控制}{eg:biblist:fontset}
\begin{texlist}
% 换行的控制
%
% 选项 block=none , space , par , nbpar , ragged
%\renewcommand*{\newblockpunct}{\par\nobreak}

% 字体的控制:\textit,sl,emph-楷体,\textbf,sf-黑体,\texttt-仿宋,\textsc,md,up-宋体
%
% 全局字体
\renewcommand{\bibfont}{\zihao{-5}}%\fangsong
% 标题字体
\renewcommand{\bibauthorfont}{\bfseries\color{teal}}%
\renewcommand{\bibtitlefont}{\ttfamily\color{blue}}%
\renewcommand{\bibpubfont}{\itshape\color{violet}}%
% url和doi字体
\def\UrlFont{\ttfamily} %\urlstyle{sf} %\def\UrlFont{\bfseries}

% 间距的控制
\setlength{\bibitemsep}{0ex}
\setlength{\bibnamesep}{0ex}
\setlength{\bibinitsep}{0ex}

% 文献表中各条文献的缩进控制
%\setlength{\bibitemindent}{0em} % bibitemindent表示一条文献中第一行相对后面各行的缩进
%\setlength{\bibhang}{0pt} % 作者年制中 bibhang 表示的各行起始位置到页边的距离,顺序编码制中 bibhang+labelnumberwidth 表示各行起始位置到页边的距离


% 标点类型的控制(全局字体能控制标点的字体)
\end{texlist}
\end{example}

\subsubsection{关于参考文献标注样式: cbx文件的说明}\label{sec:cbx:usage}
正文中的参考文献标注样式也称引用样式或引用标签样式,也分两类: 顺序编码制和作者年制。

%顺序编码制的标注样式文件大体使用标准引用样式numeric-comp的内容
\paragraph{顺序编码制的标注样式} 大体使用标准标注样式numeric,仅对cite等部分命令做了修改。为满足GB/T 7714-2015第10.1.3节的要求,增加了pagescite命令。为方便在同一文章中同时使用上标和非上标的标注方式,仅将cite命令修改为上标模式,而parencite保留标准样式提供的非上标模式。为使用户免于输入文献作者来作为句子主语,完善了textcite命令并增加了authornumcite命令以同时输出作者和顺序编码。
使用方式如例\ref{eg:citefornumeric}所示。
测试文档见\href{run:example/testallformat.tex}{testallformat.tex}。

\begin{example}{顺序编码制cbx样式命令使用说明}{eg:citefornumeric}
\begin{texlist}
不带页码的引用(上标,方括号包围):
    \cite{Peebles2001-100-100}\upcite{Peebles2001-100-100}
    \supercite{Peebles2001-100-100}
不带页码的引用(非上标,方括号包围):
    \parencite{Miroslav2004--}
带页码的引用:
    \cite[见][49页]{蔡敏2006--}  \parencite[见][49页]{Miroslav2004--}
    \pagescite{Peebles2001-100-100}\pagescite[150]{Peebles2001-100-100}
    \pagescite[][201-301]{Peebles2001-100-100}
同时输出作者和顺序编码的三种引用方式:
    (a)直接的方法:见\citeauthor{refb}\cite{refb}, \citeauthor{refc}\cite{refc}
    (b)定义新的标注命令:见\authornumcite{refb,refc}
    (c)用textcite但没有上标:见\textcite{refb,refc}
在页脚中引用和打印文献表:
    \footnote{在脚注中引用\footcite{赵学功2001--}}  \footfullcite{赵学功2001--}
    \end{texlist}
\end{example}

其中,当不指定页码时,pagescite命令默认调用参考文献的页码数据进行输出,如果需要指定页码,那么需要在[]内或第二个[]内(当有两个[]时)输入页码。

\qd{对于多个文献一起的压缩形式,指定页码只会应用最后一个参考文献的页码,这是不正确的,但这种情况其实本不应出现,因为指定页码本来就需要具体化指某一文献。使用时请尽可能使用pagescite\{key1\}pagescite\{key2\}这种形式而不是pagescite\{key1,key2\}。}

%作者年制的标注样式文件大体使用标准引用样式authoryear的内容。
\paragraph{作者年制的标注样式} 情况类似。对cite,parencite进行了修改,将引用标签用圆括号括起来。为满足GB/T 7714-2015第10.2.4节的要求,增加了pagescite命令。为满足GB/T 7714-2015第10.2.1节的要求,增加了yearpagescite,yearcite命令用于处理文中已有作者信息只需要年份和页码的情况(为兼容性考虑,顺序编码制也给出该命令,但作用与pagescite命令相同),也完善了textcite命令为句子提供主语。
使用方式如例\ref{eg:citeforauthoryear}所示。
测试文档见\href{run:example/testallformat.tex}{testallformat.tex}。


\begin{example}{作者年制cbx样式命令使用说明}{eg:citeforauthoryear}
\begin{texlist}
不带页码的引用:
    \cite{Peebles2001-100-100}  \parencite{Miroslav2004--}
带页码的引用:
    \cite[见][49页]{蔡敏2006--} \parencite[见][49页]{Miroslav2004--}
    \pagescite{Peebles2001-100-100}\pagescite[150]{Peebles2001-100-100}
    \pagescite[][201-301]{Peebles2001-100-100}
作者年制文中已有作者只需给出年份和页码的引用:
    见赵耀东\yearpagescite[][205]{赵耀东1998--}和Simon\yearpagescite[][15]{Simon2001--}。
作者年制文中已有作者只需给出年份的引用,三种方式:
    见赵耀东\yearcite{赵耀东1998--}
    见赵耀东(\cite*{赵耀东1998--})
    见赵耀东(\citeyear{赵耀东1998--})
作者年制文中无作者需要标注命令给出作者作为主语的引用:
    见\textcite{赵耀东1998--}
在页脚中引用和打印文献表:
    \footnote{在脚注中引用\footcite{赵学功2001--}} \footfullcite{赵学功2001--}
    \end{texlist}
\end{example}

%各引用命令的效果见\ref{sec:test:book}节。%\ref{sec:cite:cmd:test}

\subsubsection{样式使用的注意事项}

\begin{enumerate}
  \item 本样式包的设计与实现方法以及设计到的一些biblatex功能介绍,以项目示例的形式总结在
  \href{https://github.com/hushidong/biblatex-solution-to-latex-bibliography}{\LaTeX 文档中文参考文献的biblatex解决方案}中,本文档不再重复给出,有需要了解的用户可以参见其中的第3.1节。

  \item 当tex源文档采用UTF-8编码时,可以采用xelatex编译。当tex源文档为GBK 编码时,可以利用notepad++ 或notepad2 等编辑器将其转换为UTF-8编码,然后用xelatex编译,或者也可以直接利用pdflatex或latex进行编译,本样式已经做了支持。编译时需要的一些特殊处理见前述的编译命令介绍内容。
      %增加了对GBK支持的说明,2018-05-11

  \item 当顺序编码和作者年制切换,或者biblatex版本切换,或者不同样式切换时,如果编译出错,可先清理一下辅助文件,完成后再重新编译。

  \item 当bibtex键中含有中文的时候,texlive2015中的biblatex3.0版的对参考文献条目的超链接会出现问题,而texlive2016中的biblatex3.4或以后的版本则没有问题。

  \item GB/T 7714-2015中的作者年制要求参考文献按文种集合,且中文在前英文在后。主要通过定义DeclareSortingScheme\{gb7714-2015\} (biblatex3.7 以前版本) 或 DeclareSortingTemplate\{gb7714-2015\} (biblatex3.8以后版本),利用自动设定的language 域实现排序。默认情况下,样式能基本正确的区分中文和英文文献并排序。当如果出现错误的情况,用户可以手动修改bib源文件,将language 域设置成合适的字符串,用于排序,详见\ref{sec:usage:bbx}节的说明。

%上一段2016-1114更新,下面这段是旧的说法,
%通过定义DeclareSortingScheme\{nyt\},设置方向为direction=descending,可以实现中文在前英文在后但两个文种的文献各自也是降序的。还有一种变通的方法是,在录入bib文件时,在userb域填入用于排序的信息,比如需要排前面中文文献填cn,排后面的英文文献用en。这样因为修改后的排序格式nyt会在author域前先用userb进行排序,自然会把中文文献放在前面。

  \item 当出版地和出版者同时缺省时,GB/T 7714-2015中没有给出明确的说明,但英文给出了一个例子(见GB/T 7714-2015 附录A.3)而中文没有,英文的形式是[S.l. : s.n.],因此中文也考虑类似的格式[出版地不详 : 出版者不详]。

      %,这种形式本样式没有给出,而直接用两者分开的形式,[S.l.] : [s.n.]

      %事实上这里作者认为没有必要把s.l.和s.n. 合起来,不仅与缺省两者之一的情况不统一,样式处理起来也增加不必要的麻烦。

  \item 目前符合GB/T7714-2005或GB/T7714-2015参考文献著录规则的biblatex 样式有好几个实现,除本样式外,还有李志奇(icetea)\footnote{\url{http://bbs.ctex.org/forum.php?mod=viewthread&tid=74474}} 和沈周(szsdk)\footnote{\url{http://bbs.ctex.org/forum.php?mod=viewthread&tid=152561&extra=page\%3D1}} 分别提供的样式文件,效果是类似的。此外,Casper Ti. Vector提供的biblatex 样式caspervector也是不错的中文参考文献样式
      \footnote{\url{https://gitlab.com/CasperVector/biblatex-caspervector}}。 感谢各位作者的分享!

%  \item 本文档根据GB/T 7714-2015提供的参考文献表著录格式示例做了测试和验证,详见第\ref{sec:eg:gb77142015}节。
%    测试系统环境为:
%    \begin{itemize}
%    \item windows7x86+texlive 2014,采用xelatex编译;
%
%    \item windows7x64+texlive 2015,采用xelatex编译;
%
%    \item 虚拟机xp+texlive 2016,采用xelatex编译;
%
%    \item Deepin linux-x64v15.3+texlive 2016,采用xelatex编译。
%
%    \item windows7x64+texlive 2017,采用xelatex编译;
%    \end{itemize}

\end{enumerate}





\subsection{gb7714-2015样式的多语言支持}\label{sec:multilan:implement}

\subsubsection{多语言混合文献}\label{sec:multilan:combine}

一般情况中,在国内不太会超过两种语言混合的情况,比如中英文混合的情况。但有时可能也会存在多种语言,比如存在中/英/日/俄这种多语言环境。

使用xelatex编译时下,由于其原生支持unicode的特性,在tex文档内实现多语言混合比较容易实现,要正确显示关键在于合适的字体设置。一般情况下中/日/韩语利用ctex宏包可以解决。而西文如英/法/俄可以利用fontspec宏包选择合适的字体来解决。

对于参考文献来说还有一个更重要的问题是本地化字符串问题。中英文情况下,中文利用在英文本地化文件基础上新增本地化字符串加以解决。但其它语言需要自己的解决方案。

如第\ref{sec:usage:bbx}节所述,本样式使用language域来区分文献的语言类型,默认情况下该域不需要人工输入,可由biber根据文献信息自动判断,但也可以手动输入来人工指定。根据 biblatex 提供的多语言解决方案,还需要利用langid/langidopt域,以及babel/polyglossia宏包的支持。

目前的解决方案做如下的考虑:
\begin{enumerate}
  \item 日韩语采用类似中文的方式处理,即通过在英语本地化文件基础上处理。因此langid通常设为english。对于日文通常作者这种信息都是用的汉字,因此用中文的字符串。韩语暂没有考虑它自身的字符串,而使用英文的字符串。当不存在除英文外的其它西语时,langid也不需要处理。注意:默认情况下 langid 都是自动处理的,用户无需过多关注。
  \item 如俄语/法语这样的西方语言,通过biblatex提供的方案解决。即:使用babel/polyglossia宏包和langid/langidopt域。这时如果存在中日韩语,那么相应文献也需要设置langid。因此,需要在tex文档内加入babel宏包以及需要使用的语言,需要使用本地化字符串的西语都要加入,否则无法自动切换。然后在加载biblatex宏包时使用 autolang=other 选项。
\end{enumerate}

本样式做了中日韩英俄法六种语言的测试,详细内容见:
\href{run:example/opt-eg-multilan.tex}{opt-eg-multilan.tex},
\href{run:example/opt-autolang-multilan.tex}{opt-autolang-multilan.tex}。




\subsubsection{多语言对照文献表}

某些期刊对于参考文献表有双语文献对照的要求,那么可以通过条目集类型(set)/或者条目关联(related)来解决。具体要求见GB/T 7714-2015第6.1节。

\paragraph{利用条目集类型满足双语文献要求}

设置条目集类型(set)有静态和动态两种方法:
动态方法使用更为方便,在写文档时候,直接利用defbibentryset设置双语文献的set,然后引用set的bibtex键。比如:
\begin{example}{设置set条目集用于双语文献动态方法}{eg:setforbilangentry}
\begin{texlist}
\defbibentryset{bilangyi2013}{易仕和2013--,Yi2013--}
专著,双语文献引用\cite{bilangyi2013}
\end{texlist}
\end{example}

测试见文档\href{run:example/testallformat.tex}{testallformat.tex}。

\bc{在biblatex v3.8及以上版本中,因为set条目类型除了子条目关键词信息外,并无其他信息,因此它的标注标签通常会是空的。这个问题目前的解决方法是设置一个指定格式和内容中间无空格无英文逗号的关键字,用它来作为标签。这个问题与biblatex版本升级有关,biblatex v3.7及之前版本没有这个问题,因为这些版本中 set 中带有第一个子条目的信息}。比如:
\begin{example}{设置set条目集用于双语文献动态方法}{eg:setforbilangentry}
\begin{texlist}
\defbibentryset{易仕和,等,2013}{易仕和2013--,Yi2013--}
专著,双语文献引用\cite{易仕和,等,2013}
\end{texlist}
\end{example}

\qd{注意到“易仕和,等,2013”中的逗号是中文全角逗号,这样使得“易仕和,等,2013”以一个整体字符串当作关键字,而不会被分开解析。但是这种解决方案中的中文全角逗号与其它标签的英文逗号的差异使得该问题并没有完美解决。这可以用静态方法手动添加标签来解决,对于biblatex v3.8及以上版本还可以利用后面介绍的关联(related)方法来解决。}

静态方法是在bib源文件中给出条目集(set)并使用biber后端进行解析,条目的域信息采用如下方法定义:
%当使用bibtex后端时,则需要进一步设置,具体参考biblatex宏包说明文档。
\begin{example}{设置set条目集用于双语文献静态方法}{eg:set:static}
\begin{texlist}
@Set{set1,
entryset = {key1,key2,key3},
}
%如果要达到上例动态设置set一样的结果,在bib文件中静态设置set条目如下:
@Set{bilangyi2013,
entryset = {易仕和2013--,Yi2013--},
}
\end{texlist}
\end{example}

\qd{使用静态条目集时,如果仅采用上述这般简单设置,中文排序会出现问题,条目集会出现在文献表末尾,这是因为条目集没有设置language域用于排序,而通常的条目都会利用动态数据修改设置language域,在biber运行中因为要解析文献集,所以无法对language域进行处理。

但使用动态条目集方法没有这一问题,因为其解析过程直接会利用第一个子条目的排序信息。静态方法的这个问题可以在set条目中手动设置language域来修正。此外,对于v3.8以上版本的biblatex,无论动态方法还是静态方法,条目集不复制第一个子条目信息,因此引用时也无法生成标注标签,这就是前面介绍动态方法时讨论过的问题,该问题也可以通过在set条目中手动设置label域来解决。}

设置方法为:

\begin{example}{在bib文件中正确设置set条目集的静态方法}{eg:set:staticright}
\begin{texlist}
%在bib文件中静态设置set条目如下,其中:
%手动设置userb域用于解决排序问题
%手动设置label域用于解决标注标签问题
@Set{bilangyi2013,
entryset = {易仕和2013--,Yi2013--},
label={易仕和, 等, 2013},
language={chinese}
}
\end{texlist}
\end{example}

\bc{还要注意:动态set条目集等价于使用nocite命令,因此只要定义了动态条目集的文献都会出现在文献表中,因此如果不引用相应的文献,那么就不应该对其定义动态条目集}。

\paragraph{利用条目关联满足双语文献要求}

除上述给出的条目集方案外,关联条目方法则是另一种可行方案,该方案的讨论可以见“Again about the \@ set label for authoryear style”\footnote{\url{https://github.com/plk/biblatex/issues/681}}。该方案同样也有静态和动态两种方法,静态就是修改bib文件内容,动态则是在tex源文档中做设置。

静态方法很简单,bib文件中条目设置如例\ref{eg:related:staticright}所示,它能解决双语同时显示的问题,也能解决排序和标注标签问题,唯一的问题在于修改了bib文件后当不需要双语文献时,它还需要改回来,这会带来不便,因此可以考虑下面的动态方法,但要注意动态方法需要利用多个DeclareStyleSourcemap,因此该方法只适用于biblatex v3.7及以上版本。

\begin{example}{在bib文件中正确设置关联条目的静态方法}{eg:related:staticright}
\begin{texlist}
%在bib文件中静态设置条目如下,其中:
%易仕和2013--条目中增加了related域用于关联其对应的英文条目Yi2013--
@Book{易仕和2013--,
  Title                    = {超声速和高超声速喷管设计},
  Address                  = {北京},
  Author                   = {易仕和 and 赵玉新 and 何霖 and 张敏莉},
  Publisher                = {国防工业出版社},
  Year                     = {2013}
  related                  = {Yi2013--}
}
@Book{Yi2013--,
  Title                    = {Supersonic and hypersonic nozzle design},
  Address                  = {BeiJing},
  Author                   = {Yi, S H and Zhao, Y X and He, L and Zhang, M L},
  Publisher                = {National Defense Industry Press},
  Year                     = {2013}
}
\end{texlist}
\end{example}

动态方法利用动态数据修改自动添加related域,避免对bib文件做直接修改。本样式中对该过程进行了封装,定义一个新的命令defdoublelangentry,例如:
\begin{example}{设置关联条目的动态方法}{eg:related:dynamic}
\begin{texlist}
\defdoublelangentry{易仕和2013--}{Yi2013--}
\end{texlist}
\end{example}

使用该命令后,可以引用主条目“易仕和2013--”生成双语文献。但要注意由于DeclareStyleSourcemap命令只能在导言区中使用,因此defdoublelangentry命令也只能出现在导言区中,这也是相比条目集动态方法的唯一遗憾。
实现的具体细节见
\href{https://github.com/hushidong/biblatex-solution-to-latex-bibliography}%
{biblatex-solution-to-latex-bibliography}。

双语对照文献的两种动态方法基于set和related的方法测试,参见:
\href{run:./example/opt-eg-authoryear.tex}{opt-eg-authoryear.tex}。

\section{GB/T 7714-2015 标准说明与实现}

\subsection{顺序编码制}

\subsubsection{参考文献表}\label{sec:bib:serialno}

GB/T 7714-2015规定采用顺序编码制组织参考文献时,各篇文献应按正文部分标注的序号依次列出。具体参考GB/T 7714-2015第9.1节。

\subsubsection{文献标注法}
标注则根据在正文中引用的先后顺序连续编码,将序号置于方括号内。

同一处引用多篇文献,各篇序号间用逗号隔开,遇连续序号,起讫序号用短横线连接。

多次引用同一著者的同一文献时,可在序号的方括号外著录该文献引文页码,这一要求与引用(标注)样式无关,需要作者在写文档时使用相应的引用命令并在需要时输入页码信息。针对这一要求,在cite等常用命令基础上,新定义了一个引用命令pagescite,其使用方式详见第\ref{sec:cbx:usage}节。标注样式更详细要求参考GB/T 7714-2015 第10.1节。

如果顺序编码制采用脚注方式,则序号由计算机自动生成圈码。多次引用同一著者的同一文献时,若采用脚注方式应重复著录参考文献(这里可以理解为,采用该方式,同一文献的不同页码的引文就相当于一篇新的引文),只是在参考文献列表中可以简化(当然不进行简化,简单复制后录入对于latex的参考文献处理其实更方便)。事实上对于顺序编码用脚注方式,GB/T 7714-2015并没有详细说明脚注方式到底是什么?从举例看只是序号用类似于脚注的标签,那么对于参考文献样式来说,与非脚注方式的差别仅在于引用和参考文献条目的序号标签的差别,如此是容易通过修改样式文件得到的,但实际使用中除非有特殊要求,否则使用意义不大,因此本样式没有实现该功能。

\subsection{作者年制}

\subsubsection{参考文献表}

GB/T 7714-2015规定采用作者年制组织时,各篇文献首先按文种组织,可分为中文,日文,西文,俄文和其他文种等部分;然后按照著者字顺和出版年排列。中文文献可以按著者汉语拼音字顺排序,也可按笔画顺序排列。具体参考GB/T 7714-2015第9.2节。

%(因为需要根据语言进行划分,所以语言(language)域对于录入文献来说可能是必要的,因为作者的测试仅涉及中英文两种语言,没有遇到需要language域的情况。)

\subsubsection{文献标注法}
各篇文献的标注内容由著者姓(lastname/family)和出版年构成,并置于()内。对于使用汉字的语言来说,整个姓名都是 lastname/family 所以标注的是全名。机构团体名也整体标注。

若正文中已有著者姓名,则()内只标注出版年,这一点样式文件无法判断,只能是文档作者自身把握,当然本样式提供了标签只有年份、附加年份和页码信息的引用命令yearpagescite/yearcite,方便文档作者使用,使用方法详见第\ref{sec:cbx:usage}节。当然文档作者还可以使用textcite命令同时给出满足格式要求的作者和年份信息,本样式已做支持。

引用多个著者的文献时,对西文只需标注第一著者的姓(而在参考文献列表中的作者按最大数量三个处理,这与顺序编码制一致,参考GB/T 7714-2015第8.1.2节),其后附“et al.”,对于中文著者,标注第一著者的姓名,其后附“等”。姓名与“et al.”“等”间留适当空隙。

\bc{注意到在GB/T 7714-2015第10.2.1节给出的例子中作者姓的大小写格式与参考文献表中的要求是不同的,这说明标注中的作者姓名是由写文档的作者来决定的,因此本样式文件原样输出bib源文件中作者姓的大小格式}。

引用同一著者同一年出版的多篇文献时,出版年后应采用小写字符a,b,c等区别。

多次引用同一著者的同一文献,在正常标注外,需在()外以角标形式著录引文页码,这一问题样式文件无法判断,只能提供可以形成该格式的引用命令,供文档作者使用,因此提供pagescite命令,使用方法详见第\ref{sec:cbx:usage}节。

标注要求具体参考GB/T 7714-2015第10.2节。

\qd{一般情况下,当文献作者缺省时,作者年制就没有作者可以用,因此文献题名用来生成标签,这样会导致文献表中文献题名后的文献类型标识/文献载体标识消失(这是因为题名用于生成标签后,题名域会被清除,自然也就不输出题名相关的信息了,见后面的示例文献“\hyperlink{entrystdwithoutauthor}{Information and documentation-the Dublin core metadata element set}”)。此时可以用佚名替代缺省作者的方式避免这个问题,即可以使用样式文件提供的选项gbnoauthor=true,一旦设置该选项为true,则缺省的作者会根据文献语种填充为佚名或Anon。默认情况下,不进行这种处理,即相当于设置选项gbnoauthor=false。而顺序编码制因为标签是数字序号,所以不存在这个问题。}

%本样式文件默认情况下采用佚名方式,如果不需要使用佚名,那么需要在样式文件中注释掉一段代码,这段代码在本文档末尾2016-11-14的更新历史中有说明,见\pageref{up:20161114}页。}

\subsection{各类文献在biblatex中对应的条目和域}\label{sec:numeric:data}
biblatex-gb7714-2015宏包设计的重要原则是要符合GB/T 7714-2015标准。因此根据GB/T 7714-2015 的要求并结合biblatex的条目类型和数据域,对各类参考文献做如下考虑:
\subsubsection{专著/book}
\begin{refentry}{}{}
专著对应的biblatex的entrytype为:book,文献类型标识用M表示。

\bibliofmt{其著录格式为}(参考GB/T 7714-2015第4.1节):\\
主要责任者.题名:其他题名信息[文献类型标识/文献载体标识].其他责任者.版本项.出版地:出版者,出版年:引文页码[引用日期].获取和访问路径.数字对象唯一标识符.
\end{refentry}

其对应的biblatex数据域为:
\begin{example}{专著/book条目的域格式}{eg:bookfieldfmt}
\begin{texlist}
author.title[usera].translator.edition.location:publisher,date或year:pages[urldate].url.doi
\end{texlist}
\end{example}

其中标题相关的附加信息除了可以直接在title域中录入外,还可以在subtitle或titleaddon域中添加,后面出现的booktitle,journaltitle,也有类似情况,可以在booktitleaddon或者journalsubtitle中附加信息。其中出版地用location域表示,也可以用传统的address表示,biblatex将address作为location的别名处理,使用两者中的任何一个都可以表示出版地信息。\bc{特别强调: usera域不用录入,该域内容由bbx样式文件根据条目类型自动处理得到。}

\qd{由于biblatex不支持standard条目类型,所以“标准”类型可以用book或inbook替代,但使用note域等于standard作为一个区分,当note域数据存在且内容等于standard时,就将其作为“标准”文献进行处理,其文献类型标识用S表示。这里为什么使用note域而不是type域和keywords域,是因为考虑到note域一般情况没有什么特殊意义,使用它不会导致冲突,而type域在biblatex标准样式中没有被book和article条目类型当作支持的域,对于支持该域的条目比如thesis,type域又有特殊的意义,是用来区分master和doctor的,而keywords域倒是可以使用,只是该域一般很少在jabref之类软件的默认域中,需要进一步设置,而且可能带来不通用的问题。}

\subsubsection{标准/standard}\label{sec:standard}
“标准”(standard)作为一种文献条目类型biblatex并不支持,因此可以如上一小节所述,直接利用book或inbook类型加note域代替。
或者使用本节下面给出的方式。

因为在一些bib文件中可能存在standard类型,为兼容性考虑,本样式对standard条目类型做了支持。著录格式的处理原理与前一节所述相同,只是利用动态数据将standard类型转换为book/inbook类型。因此在bib文件中可以直接使用standard类型,但要注意使用其它样式时可能存在移植障碍,因为其它样式可能不支持standard类型,为样式移植性考虑最好使用上一节的方式。

\begin{refentry}{}{}
标准对应的biblatex的entrytype为: standard。文献类型标识用S表示。

\bibliofmt{其著录格式为}(与book和inbook类型类似,其中圆括号内是与inbook类似时存在的内容,同时当出版地和出版者不存在时直接忽略,这是与book和inbook不同的地方。):\\
主要责任者.文献题名[文献类型标识/文献载体标识].其他责任者(//所在文献集主要责任者.文献集题名:其他题名信息).版本项.出版地:出版者,出版年:文献的页码[引用日期].获取和访问路径.数字对象唯一标识符.
\end{refentry}

其对应的biblatex数据域为:
\begin{example}{标准/standard条目的域格式}{eg:standardfieldfmt}
\begin{texlist}
author.title[usera](//bookauthor.booktitle).edition.location:publisher,date或year:pages[urldate].url.doi
\end{texlist}
\end{example}

需要注意的是: 根据GB/T 7714-2015标准第19页的标准文献示例,当标准不存在出版项时,直接省略。


\subsubsection{专著中的析出文献/inbook}
\begin{refentry}{}{}
专著中的析出文献对应的biblatex的entrytype为: inbook。文献类型标识用M表示。

\bibliofmt{其著录格式为}(参考GB/T 7714-2015第4.2节):\\
析出文献主要责任者.析出文献题名[文献类型标识/文献载体标识].析出文献其他责任者//专著主要责任者.专著题名:其他题名信息.版本项.出版地:出版者,出版年:析出文献的页码[引用日期].获取和访问路径.数字对象唯一标识符.
\end{refentry}

其对应的biblatex数据域为:
\begin{example}{专著析出文献/inbook条目的域格式}{eg:inbookfieldfmt}
\begin{texlist}
author.title[usera]//bookauthor.booktitle.edition.location:publisher,date或year:pages[urldate].url.doi
\end{texlist}
\end{example}

\subsubsection{连续出版物/periodical}
\begin{refentry}{}{}
连续出版物对应的biblatex的entrytype为: periodical。文献类型标识用J表示。

\bibliofmt{其著录格式为}(参考GB/T 7714-2015第4.3节):\\
主要责任者.题名:其他题名信息[文献类型标识/文献载体标识].年,卷(期)-年,卷(期).出版地:出版者,出版年[引用日期].获取和访问路径.数字对象唯一标识符.
\end{refentry}

其对应的biblatex数据域为:
\begin{example}{连续出版物/periodical条目的域格式}{eg:periodicalfieldfmt}
\begin{texlist}
author/editor.title[usera].year或date,volume(number)-endyear, endvolume(endnumber).location:institution,date或year[urldate].url.doi
\end{texlist}
\end{example}

其中连续出版物的出版者用institution表示。
\qd{因为连续出版物可能用到两个日期,两个卷,两个期,所以录入数据时需要特别处理。不需要录入endyear等信息,只需要在到year或date域录入两个日期,由biber自动解析,两个日期之间用/分隔。而卷和期由于可能有合订模式,且合订卷期之间用/分隔(参考GB/T 7714-2015第8.8.3节),因此如果需要解析有起止范围的卷和期,录入到volume和number域的信息中起止值之间应用-分隔。}

\subsubsection{连续出版物的析出文献/article}
\begin{refentry}{}{}%[break at=0.5cm/0pt]
连续出版物的析出文献对应的biblatex的entrytype为: article。文献类型标识用J表示。

\bibliofmt{其著录格式为}(参考GB/T 7714-2015第4.4节):\\
析出文献主要责任者.析出文献题名[文献类型标识/文献载体标识].连续出版物题名:其他题名信息,年,卷(期):页码[引用日期].获取和访问路径.数字对象唯一标识符.
\end{refentry}

其对应的biblatex数据域为:
\begin{example}{连续出版物析出文献/article条目的域格式}{eg:articlefieldfmt}
\begin{texlist}
author.title[usera].journaltitle或journal,year,volume(number):pages[urldate].url.doi
\end{texlist}
\end{example}

\qd{由于biblatex不支持newspaper 条目类型,所以条目类型报纸析出的文献用article表示,但使用note域等于news作为一个区分,当note域数据存在且内容等于news时,就将其作为报纸的析出文献进行处理。报纸文献类型标识用N表示,报纸的版次用number域描述。}

\subsubsection{报纸析出的文献/newspaper}\label{sec:standard}
biblatex没有将报纸的析出文献(newspaper)作为一种文献条目类型,因此可以如上一小节所述,直接利用article类型加note域代替。或者使用本节下面给出的方式。

因为报纸析出的文献的文献标识码比较特殊不是J而是N,所以可以把报纸析出的文献独立出来进行处理。为方便使用考虑,本样式增加了对一个全新的类型newspaper的支持,这种支持通过类似于standard类型的方式实现,没有对数据模型进行改动或增加,而完全利用动态数据修改将newspaper类型转换为article类型。因此在bib文件中可以直接使用newspaper类型,但要注意使用其它样式时可能存在移植障碍,因为其它样式可能不支持newspaper类型,为样式移植性考虑最好使用上一节的方式。

\begin{refentry}{}{}
报纸析出的文献对应一个新的entrytype为: newspaper。文献类型标识用N表示。

\bibliofmt{其著录格式为}(类似于article):\\
析出文献主要责任者.析出文献题名[文献类型标识/文献载体标识].报纸题名:其他题名信息,日期(版号)[引用日期].获取和访问路径.数字对象唯一标识符.
\end{refentry}

其对应的biblatex数据域为:
\begin{example}{报纸析出的文献/newspaper条目的域格式}{eg:newspaperfieldfmt}
\begin{texlist}
author.title[usera].journaltitle或journal,date(number)[urldate].url.doi
\end{texlist}
\end{example}

\subsubsection{专利/patent}
\begin{refentry}{}{}%[break at=3cm/0pt]
专利文献对应的biblatex的entrytype为: patent。文献类型标识用P表示。

\bibliofmt{其著录格式为}(参考GB/T 7714-2015第4.5节):\\
专利申请者或所有者.专利题名:专利号[文献类型标识/文献载体标识].公告日期或公开日期[引用日期].获取和访问路径.数字对象唯一标识符.
\end{refentry}

其对应的biblatex数据域为:
\begin{example}{专利文献/patent条目的域格式}{eg:patentfieldfmt}
\begin{texlist}
author.title:number[usera].date或year[urldate].url.doi
\end{texlist}
\end{example}

\subsubsection{电子资源/online}
\begin{refentry}{}{}%[break at=0.4cm/0pt]
电子资源对应的biblatex的entrytype为: online或electronic或者www。文献类型标识用EB表示。\bc{(注意: biblatex将electronic或www作为online条目类型的别名,对于标准样式来说这两者出现在bib文件中等同于online,但这种等同标准样式是在驱动层进行处理的,而gb7714-2015样式还需要处理文献类型标识,本样式文件做了进一步支持。因此bib文件中也可以直接使用electronic和www。)}

\bibliofmt{其著录格式为}(参考GB/T 7714-2015第4.6节):\\
主要责任者.题名:其他题名信息[文献类型标识/文献载体标识].出版地:出版者,出版年:引文页码(更新或修改日期)[引用日期].获取和访问路径.数字对象唯一标识符.
\end{refentry}

其对应的biblatex数据域为:
\begin{example}{电子资源/online/electronic/www条目的域格式}{eg:onlinefieldfmt}
\begin{texlist}
author.title[usera].organization,date或year:pages(date/enddate/eventdate)[urldate].url.doi
\end{texlist}
\end{example}

\qd{尽管GB/T 7714-2015中给出的著录格式包含出版地和出版者,但通常情况下具有出版地和出版者的文献会归类到其它条目类型中,至于存在的url信息,只要标识文献载体即可,即一般情况下(出版地:出版者,出版年:引文页码)这些信息很少出现在online[EB]条目中。因此默认情况下,gb7714-2015样式只处理出现organization中的出版项信息,此外用date表示更新或修改日期,urldate表示引用(访问)日期。如果出现复杂情况,更新或修改日期还可以利用enddate/eventdate表示。}

以上是GB/T 7714-2015直接给出著录格式的条目类型,还有一些类型并没有给出具体格式,但在例子中也有所体现,本样式文件根据这些例子,给出了著录格式。

\subsubsection{汇编或论文集/collection}

\begin{refentry}{}{}
汇编文献对应的biblatex的entrytype为:collection。文献类型标识用G表示。

\bibliofmt{其著录格式为} 采用与book一致的格式。
\end{refentry}

\subsubsection{汇编或论文集析出中的文献/incollection}
\begin{refentry}{}{}
汇编中的析出文献对应的biblatex的entrytype为:incollection。文献类型标识用G表示。

\bibliofmt{其著录格式为} 采用与inbook一致的格式。
\end{refentry}

\subsubsection{会议录或会议文集/proceedings}
\begin{refentry}{}{}
会议文集的biblatex的entrytype为:proceedings。文献类型标识用C表示。

\paragraph{其著录格式为} 采用与book类似的格式。
\end{refentry}

\subsubsection{会议文集中析出的文献/inproceedings}
\begin{refentry}{}{}
会议文集中析出的文献对应的biblatex的entrytype为:inproceedings。文献类型标识用C表示。\bc{(注意: biblatex将conference作为inproceedings条目类型的别名,对于标准样式来说conference出现在bib文件中等同于inproceedings,但这种等同标准样式是在驱动层进行处理的,而gb7714-2015样式还需要处理文献类型标识,本样式文件做了进一步支持。因此bib文件中也可以直接使用conference。)}

\bibliofmt{其著录格式为} 采用与inbook类似的格式。
\end{refentry}

\subsubsection{学位论文/thesis}
\begin{refentry}{}{}
学位论文对应的biblatex的entrytype为: thesis。文献类型标识用D表示。\bc{(注意:biblatex将mastersthesis或phdthesis作为thesis条目类型的别名,对于标准样式来说这两者出现在bib文件中基本等同于thesis,但却会增加type信息。但这种等同,标准样式是在驱动层进行处理的,而gb7714-2015样式还需要处理文献类型标识并且不需要type信息,本样式文件做了进一步支持。因此bib文件中也可以使用mastersthesis和phdthesis)。}

\bibliofmt{其著录格式为} 由biblatex的标准thesis格式修改得到。

主要责任者.题名:其他题名信息[文献类型标识/文献载体标识].其他责任者.出版地:出版者,出版年:引文页码[引用日期].获取和访问路径.数字对象唯一标识符.
\end{refentry}

其对应的biblatex数据域为:
\begin{example}{学位论文/thesis/mastersthesis/phdthesis条目的域格式}{eg:thesisfieldfmt}
\begin{texlist}
author.title[usera].translator.location:institution,date或year:pages[urldate].url.doi
\end{texlist}
\end{example}

 \bc{thesis和后面report及manual的出版者用institution域表示,体现的是机构而不是一般的出版社。}

\subsubsection{报告/report}
\begin{refentry}{}{}
报告对应的biblatex的entrytype为: report。文献类型标识用R表示。\bc{(注意:biblatex将techreport作为report条目类型的别名,对于标准样式,techreport出现在bib文件中等同于report,但这种等同标准样式是在驱动层处理的,而gb7714-2015样式还需要处理文献类型标识,本样式文件做了进一步支持。因此bib文件中也能直接使用techreport类型。)}

\bibliofmt{其著录格式为} (由biblatex的标准report格式修改得到,注意当出版地和出版者不存在时忽略这两项)

主要责任者.题名:其他题名信息[文献类型标识/文献载体标识].其他责任者.类型.号码.版本项.出版地:出版者,出版年:引文页码[引用日期].获取和访问路径.数字对象唯一标识符.
\end{refentry}

其对应的biblatex数据域为:
\begin{example}{报告/report/techreport条目的域格式}{eg:reportfieldfmt}
\begin{texlist}
author.title[usera].translator.type number.version.location:institution,date 或year:pages[urldate].url.doi
\end{texlist}
\end{example}

\qd{因为有的报告文献可能存在类型和报告号信息,比如AIAA 9076或AD 730029等,所以著录格式需要有所体现,而这两个数据体现在type和number两个域中,或者在version域中体现也可,而对于标题中的出现的报告号,可以直接在标题或子标题或者附加标题中体现。report和后面manual的版本信息放在version域中,而不是book等条目的edition域中。}

\subsubsection{手册或档案/manual/archive}
\begin{refentry}{}{}
手册和档案采用一种格式,对应的biblatex的entrytype为: manual或archive。文献类型标识用A表示。

\bibliofmt{其著录格式为} 借用report格式处理,而不是标准样式中的manual格式,这种方式下,当没有出版地和出版者时,完全省略,因为GB/T 7714-2015并没有明确这种情况怎么处理。
\end{refentry}


\subsubsection{未出版物/unpublished}
\begin{refentry}{}{}
未出版物,对应的biblatex的entrytype为: unpublished。文献类型标识用Z表示。

\bibliofmt{其著录格式为} 借用report格式处理。
\end{refentry}

\subsubsection{更多类型}
\begin{refentry}{}{}
数据库(database)、数据集(dataset)、软件(software)、舆图(map)、其它(misc)分别使用自己的数据类型和类型标识符。

\bibliofmt{其著录格式为} 借用report格式处理。
\end{refentry}



\subsection{标准的其它细节要求}

除了第\ref{sec:numeric:data}节针对不同条目类型的著录格式要求外,GB/T 7714-2015 还有一些细节要求比如文字、符号等需要满足,可以采用如下方法:

\subsubsection{数字}\label{sec:fmt:number}

\begin{property}{}{}
用户给bib源文件录入数字时,应按照GB/T 7714-2015第6.2节要求用阿拉伯数字表示。
\end{property}

\subsubsection{英文字母}\label{sec:fmt:lettercase}

\begin{property}{}{}
为了符合西文文献责任者的字母大小写习惯,本样式通过判断是否存在givenname/firstname来确定是否是个人作者,当存在givenname/firstname 时认为是个人作者,不存在则是机构作者,当是个人作者时familyname/lastname按GB/T 7714-2015 要求全大写,是机构作者则仅大写首字母。所以对于仅有lastname的个人作者,填入信息英文姓的字母请全用大写。个人著者的格式要求见GB/T 7714-2015 第6.3节。

用户给bib源文件录入出版项、西文期刊名缩写以及西文文献的字母时,应按照GB/T 7714-2015第6.4节,第6.5节,6.6节要求,使用符合要求的习惯用法和大小写方式。本样式使用原样打印的方式进行处理。

实际上,对于英文大小写问题,GB/T 7714-2015除了责任者的大写要求外,其它要求均比较模糊,但提到可参照ISO 4的要求。而一般不同的期刊会有各自不同的要求。从作者的经验看,一般国内的期刊对于字母大小写通常要求:责任者(全部大写);题名(句首字母大写其它全部小写);期刊名会议名(单词首字母大写);出版项和其它(单词首字母大写)。所以在录入bib文件时可以按照这种常见方式来输入以减少后期的修改。
\end{property}

\subsubsection{标点}

\begin{property}{}{}
用户给bib源文件录入引文信息时不需要考虑标点符号问题,只需录入各数据域的信息即可。

本样式实现了GB/T 7714-2015第7部分所给出的著录用符号要求。
\end{property}

\subsubsection{责任者}

\begin{property}{}{}
用户给bib源文件录入引文的责任者信息时,当责任者为多级机关团体时,用户填入auther数据信息时,应按照GB/T 7714-2015第8.1.4节要求,用英文句点.号分隔。

当责任者是个人英文名,且具有名、姓、前缀和后缀,应按照第\ref{sec:bib:bibtex}节给出姓名录入方式处理才能才能正确解析,比如:von Peebles, Jr., P. Z.,其中von为姓前的前缀,Jr.为姓后的后缀,P. Z.为缩写名(包括first name 和middle name)。

本样式实现了GB/T 7714-2015第8.1节要求的责任者样式,能自动判断责任者是中文还是英文,并分别处理。并且设置了全局选项useprefix=true,可以使用前缀。
\end{property}

\subsubsection{文献类型标识和载体}

\begin{property}{}{}
用户在给bib源文件录入引文题名信息时,不需要给出文献类型标识/文献载体标识。同一责任者的合订题名,应用户根据GB/T 7714-2015 第8.2.1节的要求,在多个题名间用英文分号分隔,并整体录入到title数据域中。而分卷号,卷次,册次等信息时,除了专利号用number域录入外,其它可以直接在title数据域或者subtitle/titleaddon等数据域中给出。

本样式实现了符合GB/T 7714-2015第8.2节要求的格式,能根据条目信息确定文献类型标识/文献载体标识,并在各类参考文献条目驱动中直接使用。各不同类型文献的类型标识/文献载体标识,参考GB/T 7714-2015表B.1和B.2。
\end{property}

\subsubsection{版次}\label{sec:fmt:edition}

\begin{property}{}{}
用户在给bib源文件录入版次信息时,只要录入版次的整数数字或者录入需要打印的字符串。

本样式实现了GB/T 7714-2015第8.3节要求的格式,对于一般的版次格式,根据edition/version域输入的整数进行处理,其它特殊的版本说明,比如新1版,明刻本等直接在edition域录入后原样打印。
\end{property}

\subsubsection{出版项}\label{sec:fmt:pubitem}

\begin{property}{}{}
用户在给bib源文件录入出版项信息时,当出版日期有其它形式的纪年时,将其置于公元纪年后面的()内,并整体录入到 year 数据域中,比如: 1845(清同治四年)。而引用日期应录入到 urldate 数据域。当除了出版日期外还有修改/更新日期等时,可在year或date数据域录入第二个日期,并用/符号与前一个出版日期隔开。而专利的公告日期和其它条目类型的出版年应录入到 date 域中。

本样式实现了GB/T 7714-2015第8.4节要求的格式。当出版地和出版者缺省时,中英文自动区分处理。对于用/符号隔开的两个日期,biblatex后端biber能自动解析,后一个日期数据自动解析到endyear等域可作为修改日期等使用。
\end{property}

\subsubsection{页码}\label{sec:fmt:pages}
\begin{property}{}{}
用户在给bib源文件录入页码信息时,可以在pages域中根据需要录入可解析的页码(即用整数表示页码,起讫页码用-分隔),比如: 81-86。 也可以直接录入需要打印的信息,比如: 序2-3等。

本样式实现了GB/T 7714-2015第8.5,8.8.2节的要求,对于能解析的页码自动解析,对于不能解析的页码则原样输出。
\end{property}

\subsubsection{访问路径URL和DOI}
\begin{property}{}{}
用户在给bib源文件录入获取和访问路径、数字对象唯一标识符信息时,将访问路径录入到url域中,数字对象唯一标识符录入到doi域中即可。

本样式实现了GB/T 7714-2015第8.6,8.7节要求的格式。
\end{property}

\subsubsection{卷和期}\label{sec:fmt:volnum}
\begin{property}{}{}%[break at=0.4cm/0pt]
用户在给bib源文件录入卷、期等信息时,如\ref{sec:bib:bibtex}节中所述,合期的期号用/间隔,比如9/10,填入number域,报纸的版次也填入number域。

本样式实现了GB/T 7714-2015第8.8节要求的析出文献相关格式。
\end{property}




\section{参考文献著录格式测试}

\subsection{GB/T 7714-2015标准中的参考文献格式示例}\label{sec:eg:gb77142015}

\begin{refsection}
普通图书(book)
\cite{张伯伟2002--}
\cite{2009-155-155}
\cite{胡承正2010-112-112}
\cite{美国妇产科医师学会2010-38-39}
\cite{1962-50-50}
\cite{汪昂1881--}
\cite{蒋有绪1998--}
\cite{中国企业投资协会2013--}
\cite{罗斯基2009--}
\cite{库恩2012--}
\cite{候文顺2010-119-119}
\cite{CRAWFPRD1995--}
\cite{IFLAI1977--}
\cite{OBRIEN1994--}
\cite{Kinchy2012-50-50}
\cite{Praetzellis2011-13-13}

论文集(collection)、会议录(proceedings)
\cite{中国职工教育研究会1985--}
\cite{中国社会科学院台湾史研究中心2012--}
\cite{雷光春2012--}
\cite{陈志勇2011--}
\cite{Babu2014--}

报告(report)
\cite{中华人民共和国国务院新闻办公室2013-04-16--}
\cite{汤万金2013-09-30--}
\cite{Calkin2011-8-9}
\cite{DTFHA1990--}
\cite{WHO1970--}

学位论文(thesis)
\cite{马欢2011-27-27}
\cite{吴云芳2003--}
\cite{CALMS1965--}

专利文献(patent)
\cite{张凯军2012-04-05--}
\cite{河北绿洲生态环境科技有限公司2001--}
\cite{KOSEKI2002--}

标准文献(book,inbook,note=standard)
\cite{全国信息文献标准化技术委员会2010-3-3}
\cite{全国广播电视标准化技术委员会2007-1-1}
\cite{国家环境保护局科技标准司1996-2-3}
\cite{standardinfoiso158}

专著中析出的文献(inbook)
\cite{1988-590-590}
\cite{白书农1998-146-163}
\cite{汪学军2002-22-25}
\cite{国家标准局信息分类编码研究所1988-59-92}
\cite{1977-49-49}
\cite{楼梦麟2011-11-12}
\cite{BUSECK1980-117-211}
\cite{FOURNEY1971-17-38}

期刊中析出的文献(article)
\cite{杨洪升2013-56-75}
\cite{李炳穆2000-5-8}
\cite{于潇2012-1518-1523}
\cite{陈建军2010-93-93}
\cite{DESMARAIS1992-605-609}
\cite{Saito2006-169-176}
\cite{Walls2013-399-418}
\cite{Franz2013-1053-1062}
\cite{Park2010-696-715}

报纸中析出的文献(article,note=news)
\cite{丁文祥2000--}
\cite{张田勤2000--}
\cite{傅刚2000--}
\cite{刘裕国2013-01-12--}

电子资源(online)
\cite{萧钰2001--}
\cite{李强2012-05-03--}
\cite{Commonwealth--}
\cite{Dublin2012-06-14--}


\printbibliography[heading=subbibliography,type=book,notkeyword=standard,title=【A1- 普通图书-著录格式示例】]%subbibintoc
\defbibfilter{collections}{%
type=collection
or type=proceedings
or type=incollection
or type=inproceedings
}
\printbibliography[heading=subbibliography,filter=collections,title=【A2-论文集、会议录-著录格式示例】]
\printbibliography[heading=subbibliography,type=report,title=【A3-报告-著录格式示例】]
\printbibliography[heading=subbibliography,type=thesis,title=【A4-学位论文-著录格式示例】]
\printbibliography[heading=subbibliography,type=patent,title=【A5-专利-著录格式示例】]
\defbibfilter{standard}{%
( type=book or type=inbook )
and keyword=standard
}
\printbibliography[heading=subbibliography,filter=standard,title=【A6-标准文献-著录格式示例】]
\hypertarget{entrystdwithoutauthor}{注意:这里最后一篇标准文献没有责任者,所以作者年制默认情况下无法给出文献标识符。}
\printbibliography[heading=subbibliography,type=inbook,notkeyword=standard,title=【A7- 专著中析出的文献-著录格式示例】]
\printbibliography[heading=subbibliography,type=article,notkeyword=news,title=【A8- 期刊中析出的文献-著录格式示例】]
\printbibliography[heading=subbibliography,keyword=news,title=【A9-报纸析出的文献-著录格式示例】]%type=article,有时type是newspaper所以不指定type为article
\printbibliography[heading=subbibliography,type=online,title=【A10-电子资源-著录格式示例】]
\end{refsection}

\subsection{beamer类中的应用}

beamer类中的参考文献测试,参见:

顺序编码制:
\href{run:./example/egbeamer.tex}{cls-beamer.tex},

作者年制:
\href{run:./example/egbeameray.tex}{cls-beameray.tex},

\subsection{更多测试}

\begin{itemize}

  \item 测试:专著book和专著中的析出文献inbook及标准standard文献

  \item 测试:连续出版物periodical和连续出版物中的析出文献article

  \item 测试:电子资源或在线资源online

  \item 测试:学位论文thesis、专利文献patent

  \item 测试:报告report、手册manual和档案、未出版物unpublished

  \item 测试:会议文集proceedings和会议文集中析出的文献inproceedings

  \item 测试:汇编collection和汇编中的析出文献incollection

  \item 测试: online条目仅存url信息

  \item 测试: 传统和新增条目类型的兼容性

  \item 测试: 中英文判断信息中存在编组时的处理

  \item 测试: 处理参考文献信息中\&等特殊字符

  \item 测试: 处理作者年制article中卷信息缺省的标点

  \item 测试: 标题中有\textbackslash LaTeX\{\}等名称时的情况

\end{itemize}

测试文件,参见:
\href{run:./example/testallformat.tex}{testallformat.tex}。

\section{总结与致谢}

通过对 GB/T 7714-2015 标准的分析,对 biblatex 的学习和理解,在 biblatex 标准样式基础上,设计完成了符合 GB/T 7714-2015 标准的biblatex参考文献样式。从测试实践看,基本能够满足使用要求,用户可以放心使用。遇到问题时,除了可以查看
本文档说明外,也可以看样式文件代码,其中给出了详细注释,如果遇到无法解决的问题,请邮件联系作者。

%读者若查看样式文件内容可以看到作者对各目标要求所做的修改及,读者也可以根据自己的需求进行修改,作者设计样式文件的思路以及在设计过程中用到的一些biblatex宏包功能说明,详见第\ref{sec:biblatex:mech}节和LaTeX文档中文参考文献的biblatex解决方案的第2.7节。

最后要感谢如下各位师长和朋友,正是在各位的帮助建议下,本样式不断升级逐渐完善。包括: moewew (biblatex 现在的维护者之一,给予不少有益的建议和指导)、 李志奇(基于biblatex的符合GBT7714-2005的中文文献生成工具的作者,工具中的一些设计如usera域的使用/卷期范围解析等带来很多启发,本人之前一直使用该工具,之所以开发biblatex-gb7714-2015其实主要是因为该工具因biblatex升级而无法使用)、caspervector(虽然未曾真正交流,但从biblatex-caspervector样式包中学到很多,包括排序/GBK编码等问题的解决思路)、LeoLiu(刘海洋,给出的CJK字符判断函数
\footnote{\url{http://bbs.ctex.org/forum.php?mod=viewthread&tid=152663&extra=page\%3D3}} 对本宏包非常有帮助)、chinatex(china tex版主,给了很多建议和帮助,并且一起合作)、Sheng wenbo(biblatex用户手册合作译者,LaTeX2e 插图指南第三版译者,我们一起翻译的过程相互激励相互促进)、zepinglee(gbt7714-2015 bst样式作者,给了很多建议和讨论)、Harry Chen(ctex套件维护者之一,给了不少好的建议)、liubenyuan(关于项目组织给出了很好的建议)、刘小涛(讨论了关于zotero的使用并提出了建议)、ghiclgi(讨论了GB中作者年制标注标签的一些问题)、秀文工作组、leipility、qingkuan、湘厦人、秋平、任蒲军、fredericky123、qiuzhu、chaoxiaosu、Old Jack、Wu Nailong、Yibai Zhang、wayne508、 钟乙源、Xiaodong Yao、dsycircle、rpjshu、zjsdut、谢澜涛、Zutian Luo、海阔天空、zzqzyx、程晨、xmtangjun、蔡伟 等等。当然还有更多朋友提供了bug报告,提出了issue,提供了热心帮助,限于篇幅这里不再一一列举,在此一并表示感谢!


\section{存在的问题和下一步工作}


\subsection{存在的问题}

\begin{enumerate}

  %\item 当作者多于3个需要添加等或et al.时,如果作者的姓名是用\{\}包起来的,可能判断会出错。
  %这个问题已经解决了,本来在\testCJKfirst中如果单靠edef加expandafter 组合,无法处理带编组的字符流。所以考虑利用xstring 宏包的\exploregroups函数来,提取字符到命令中,这一就能真正的获得域中的第一个字符,而不会把一个编组当成一个字符进行判断。2016-1223,详见修改历史1.0e中的说明。

  %\item 顺序年制中当不存在著者信息时,如果用佚名或者no author,本样式文件中没有实现。怎么在数据进来后,给一些域添加信息?在biber处理过程中根据一些判断添加信息?(著者年制,没有作者,用佚名,英文怎么办?没有年怎么办?)
  %这个问题解决了,2016-1114

  %\item 作者年制引用标签时,文中已经存在作者名的,标签只需要写年份,这个需要定义一个新的yearcite命令,是容易实现的,但这里没有实现。
  %这个问题解决了,2016-1114,增加了一个yearpagescite命令。

  %\item backref的格式也可以修改一下。
  %没有要求处理,但修改了,2016-1114,修改英文本地化字符串为引用页面。

  %\item shorthand的问题没有遇到,其应用可能需要进一步理解。,主要是获取参考文献的部分信息进行统计和打印。该问题已经解决,参见biblatex-solution-to-latex-bibliography(20180525)。

  \item 当专著同时存在作者和编者的时候,GB/T 7714-2015没有明确的规定,所以目前样式文件中以biblatex标准样式的方式处理,这种处理因为与本地化相关,直接应用可能不好看的,也许需要修改。

  \item 在各类文献的著录格式中,GB/T 7714-2015 对于出版项给出的就是出版地和出版者,但习惯上不同的类型还是存在差异的,比如专利文献出版项还应该再明确,比如在线资源常用organization表示而无出版地。这些有待进一步明确。

  \item 当作者不明时,GB/T 7714-2015 给出的说法是用佚名和其它语言相应的词代替。英文给了一个例子是Anon,似乎是anonymity的缩写。这也有待进一步明确。v1.0l版后将之前用的noauthor换成Anon。

  %\item 因为GB/T 7714-2015中给出的了一些著录格式,如果把这些著录格式作为一个严格标准,那么条目中只能出现其中规定的域,而往往在bib文件中可能存在一些另外的信息比如chapter等,而且从标准样式修改的驱动中也仍然带有这些域的处理,如果为了标准化规范化考虑,可以去掉国标中没有提到的域的信息,可能使得内容更为标准,这可以通过修改增加数据模型,数据源动态修改,驱动修改(驱动中目前存在较多的似乎用不到的域,而且意义不是非常明确,这个等到biblatex说明文档中文版完成后再结合它全面的进行梳理)三条路子做到,需要的话,可以在下一步实现(2017-0226)。添加了gbstrict选项后,该问题基本已经解决(20180525)。
\end{enumerate}

\subsection{下一步工作}

\begin{enumerate}
  \item 到目前,无论是基本功能还是附加功能,biblatex-gb7714-2015样式包已经基本够用,剩下的问题可能是一些特殊情况时带来的适应性问题,这需要经过大量的测试来发现问题。如果在使用过程中发现什么问题,请邮件联系作者,非常感谢!

      % 到1.0i版为止,进一步完善了: GB7714风格的文献表标签项对齐设计,编组内信息的中英文判断,特殊或老的bibtex 条目类型支持,改善空格设计以满足断行要求,支持了宏包选项(url等)应用,增加了宏包选项用于GB7714风格实现控制(gbpub 等),重新设计了版本兼容方式,以后的版本中将更容易兼容biblatex的升级。

       %到1.0h版为止,进一步完善了样式宏包,该版本将是最后支持texlive2015的版本,以后版本的功能实现将基于最新texlive中biblatex 版本,而不再考虑texlive2015中3.0版的biblatex。

       %1.0g版增加对mastersthesis,phdthesis,www,electronic,standard,techreport,conference,newspaper等条目类型的兼容,增加了对标准样式standard.bbx中url包选项的兼容性,增加了析出文献标识符//后面的短空格以支持著录表的断行机制,增加了特殊字符处理功能并实现对texlive2015 的兼容,给出了gb7714风格参考文献著录表文本转换为bib文件的perl脚本,与gb7714-2015 样式形成闭环。

      %1.0f版完善了gbalign 选项(用于实现GB7714 风格的著录文献表标签,texlive2016 有效),带花括号的责任者的中英文判断等功能对texlive2015 的兼容性。

      %到1.0e版为止,功能需求已经完全实现,剩下的问题可能是一些文献具有特殊信息或者特殊情况时带来的适应性问题,这需要经过大量的测试来发现问题。各位朋友如果发现什么问题,请邮件联系,作者会非常感谢!

  \item biblatex宏包的说明文档中文版,已经由Shen wenbo和我基本完成,下一步是完善,校对,以及增加新版的内容。如果有朋友觉得这个事情有意义,愿意一起来完成这个事情,非常欢迎,请email联系。

  %\item 打算翻译biblatex宏包的说明文档和biber的说明文档,这个已经在进行中,完成了一部分,但因为只是业余时间做,可能最终完成的时间会比较长。如果有朋友觉得这个事情有意义,愿意一起来完成这个事情,非常欢迎,请email联系。

%\item 进一步完善上一节提到的问题。
\end{enumerate}

\section{更新历史}
\input{example/updatehistory.tex} %

\input{example/updatehistoryold.tex} %