summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.tex
blob: c7c61b157128fb71cb059e2b0912e0db3f6085d5 (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
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
\documentclass[twoside,11pt]{article} %用draft选项找到badbox的位置
\input{biblatex-gb7714-2015-preamble} %宏包和一些格式设置
\begin{document}

%------------------------------------------------------------
%  标题和目录
%------------------------------------------------------------
\pagenumbering{Roman}

\titleformanual{符合GB/T 7714-2015标准的biblatex参考文献样式
\footnote{This Manual was created with biblatex v\versionofbiblatex, last revised at \today;\\%
Style Files (gb7714-2015*.*) have version number: \versionofgbtstyle.}}

\authorformanual{胡振震\setcounter{footnote}{0}\footnote{Email: hzzmail@163.com}}

\dateformanual{2016-07-01}

\titleandauthor

\begin{quotation}
biblatex-gb7714-2015 宏包是为满足《GB/T 7714-2015~~信息与文献~~参考文献著录规则》要求而开发的biblatex样式包。宏包提供的样式文件分两种编制方式: 一、顺序编码制(gb7714-2015);二、著者-出版年制(gb7714-2015ay),能够精确地实现符合国标著录和标注格式要求的参考文献。该样式包具备易用、兼容、灵活等显著特点,且提供了详细的使用说明,为国内\LaTeX{}用户提供了一个可靠的参考文献生成工具。
%old:
%biblatex-gb7714-2015 样式宏包提供了符合《GB/T 7714-2015 信息与文献 参考文献
%著录规则》要求的 biblatex 参考文献样式。分为两种编制方式: 一、顺序编码制;二、著
%者-出版年制。配合 biblatex 宏包使用具有较高的兼容性、易用性和灵活性。宏包提供了
%详细的使用说明,为国内用户生成符合国标的参考文献表提供帮助。
\end{quotation}
\phantomsection
%\addcontentsline{toc}{section}{目录}
\tableofcontents
%\renewcommand{\numberline}[1]{#1~}
%\phantomsection
%\addcontentsline{toc}{section}{示例}
\listoffigures
\listoftables
\listofegcode
\newlength{\textparwd}
%------------------------------------------------------------

\thispagestyle{plain}
\newpage
\pagenumbering{arabic}
\section{概述}

《GB/T 7714-2015~~信息与文献~~参考文献著录规则》是国内科技文档参考文献著录的一般标准,国内大多数期刊、大学、出版社对于期刊论文、学位论文、出版物参考文献的要求通常都基于该标准。对于\LaTeX{}用户来说,参考文献生成是典型的自动化应用,通常有两种方法,一是基于bibtex的传统方法,二基于biblatex的新方法。生成符合GB/T 7714标准要求的参考文献,这两条路子都已经实践多年。
基于biblatex的方法,早期有李志奇(icetea)的gbtstyle实现,以及Casper Ti. Vector的caspervector样式,然而由于biblatex升级、样式维护和完善等问题,未能达到精确符合国标要求、具备高可用性、兼容性、可维护性的理想状态。biblatex-gb7714-2015 样式包的设计初衷正式基于当时这样的状态,为解决应用中的很多实际问题,设计和实现考虑如下原则:

\subsection{设计原则}

\begin{enumerate}
  \item 兼容性

由于biblatex的持续升级,一些接口和功能的变化,会使得样式无法使用或者输出结果产生异变。因此biblatex-gb7714-2015宏包设计之初,就一直秉承兼容性原则,力图兼容各版本的biblatex,希望与biblatex v2.8 (in texlive2014) 以上所有版本适配(注意 ctex 2.9.4 的用户需升级 biblatex)。出于兼容一些老的bib文件的考虑,增加对传统参考文献条目类型比如www/electronic/conference/mastersthsis/phdthsis/techreport/standard等的支持。根据国标要求,考虑增加newspaper(报纸析出的文献)、database(数据库)、dataset(数据集)、 software(软件)、map(舆图)、archive(档案)等类型。也为兼容适用于不同样式的bib数据源,增加对一些自定义域的支持,比如gbt7714宏包的bst样式中mark和medium域。此外,也试图去完善样式在不同文档类包括beamer类等中的使用问题。

  \item 易用性

参考文献是\LaTeX{}自动化应用之一,尽可能让其自动完成,减少用户的人工干预,包括数据的准备、格式的调整等等。因此宏包试图减少用户对于bib文件的调整,只需要最简单的输入文献本身的信息,或者从各类学术网站或利用zotero等工具下载参考文献数据即可,而不需要为了符合国标格式而去手动增添参考文献类型和载体标识等一些数据域,不必为了文献语言分集、文献排序等去增加语言、排序关键字等数据域,所有的工作都由宏包自动完成。为了符合国标要求以及中文参考文献标注习惯,提供了丰富的标注(引用)命令,用户只需熟悉几个命令的特性即能够完成两种编制样式下多样的标注格式,包括:
顺序编码制的 \verb|\cite|(上标可设置页码)、 \verb|\parencite|(非上标)、 \verb|\pagescite|(上标加自动页码)、 \verb|\textcite|(提供作者为主语)、 \verb|\authornumcite|(提供作者加上标编码)、 \verb|\footfullcite|(脚注方式);
著者-年份制的\verb|\cite|(作者加年份用括号包围可设置页码)、 \verb|\pagescite|(作者加年份用括号包围自动页码)、
\verb|\yearcite|(提供年份用括号包围)、 \verb|\yearpagescite|(提供年份用括号包围自动页码)、
\verb|\textcite|(提供主语作者加括号包围年份)、 \verb|\footfullcite|(脚注方式)。习惯natbib的用户也可以启用biblatex提供的nanbib选项,来使用 \verb|\citet| 和 \verb|\citep| 命令。另外,增加并完善对多语言混合文献表、多语言对照文献表的支持,不同语言文献按文献本身语言录入,自动识别语言通过autolang选项自动完成不同语言的切换,利用条目集和关联条目概念为多语言对照文献表提供两种实现方式。


  \item 灵活性

在考虑实现严格符合GB/T 7714-2015标准的格式外,也希望能够针对用户的特殊格式需求,提供方便灵活的定制方式,比如通过设置选项来达到格式的变化。为此,增加了多个方面的设置选项,使用户可以根据自己的需求灵活地调整。主要包括:
著录项格式选项:
姓名格式调整(gbnamefmt选项,可以设置大写、小写、西语习惯用法、拼音习惯用法)、
出版项控制(gbpub选项,可设置出版项缺失时是否填补信息)、类型和载体标识控制(gbtype选项,可设置不输出)、
析出文献标识符控制(gbpunctin选项,可设置\texttt{//}不输出)、
标题超链接控制(gbtitlelink选项,可设置标题超链接)
作者项处理(gbnoauthor选项,可设置作者缺失时是否填补信息);
著录表格式选项和命令:
标签对齐控制(gbalign选项,可设置左、右、居中、项对齐方式)、
标签格式控制(gbbiblabel选项,可设置标签数字不同的包围符号)、
条目格式控制(gbstyle选项,利用gb7714-2015ms样式可实现中英文献分设不同格式)、
\verb|\bibauthorfont|命令可设置作者项字体、
\verb|\bibtitlefont|命令可设置标题项字体、
\verb|\bibpubfont|命令可设置出版项字体;
编码设置选项:
GBK编码兼容(gbcodegbk选项,可设置GBK编码文档编译)等等。
配合biblatex提供的选项、\verb|bibfont|命令、\verb|\bibitemsep|间距等可以实现丰富的格式,
包括标注和文献表采用不同样式、url/DOI/ISBN输出控制、标注和文献表中作者数量控制、文献表拼音或笔画排序等等。


  \item 可维护性

宏包的长期使用价值体现在宏包的维护和更新上面,追求宏包具有高的可读性、可理解性、可维护性,可为宏包长期发挥作用提供帮助。由于biblatex已经是一个相当成熟完善的宏包,即便是在样式方面考虑也相当全面,这可能与西方出版界对于参考文献的多样的细化的要求有关。而国内只有一个通用标准就是GB/T 7714标准,因此除了该标准一些特殊的需求需要具体实现外,样式包实现完全可以借用biblatex提供的标准样式,如此我们既不需要重新造轮子,又可使gb7714-2015样式与biblatex宏包样式保持一致的结构、风格、习惯,增加了可读性和可维护性。通过保持biblatex原有样式基础加上有限修改的方式,并且对代码加上详细的注释,可以使得样式包维护者,只要通过学习biblatex,即可轻松理解gb7714-2015样式做了哪些修改,为什么这么修改,实现了什么样的效果。另外,为方便用户,样式包提供了全面、详实的说明,包括
GB/T 7714标准的理解和解释(\ref{sec:gbt:std}节)、
条目类型和域的理解和录入方法(\ref{sec:bib:bibtex}节)、
\href{https://github.com/hushidong/biblatex-gb7714-2015/wiki}{biblatex和样式包基本使用方法}、
\href{https://github.com/hushidong/biblatex-solution-to-latex-bibliography/blob/master/biblatex-solution-to-latex-bibliography.pdf}%
{biblatex高级使用方法和样式包设计实现方法},可为用户使用入门和维护者深入理解提供帮助。

\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}

\subsection{宏包结构}

宏包文件结构如图\ref{fig:pkg:structure}所示:
\begin{figure}[!htb]
\begin{tcolorbox}[left skip=0pt,right skip=0pt,%
width=\linewidth,colframe=gblabelcolor,colback=white,arc=0pt,%
leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt]
\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}};

\node[below of=gbkdef,fill=gbgrey!20,yshift=8mm,text width=2cm] (msbbx) {\tiny \textcolor{black}{gb7715-2015ms.bbx}};
\node[below of=msbbx,fill=gbgrey!20,yshift=8mm,text width=2cm] (mscbx) {\tiny \textcolor{black}{gb7715-2015ms.cbx}};

\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] (msbbx.west) -- ($(msbbx.west)+(-3mm,0mm)$) ;
\draw[color=blue,semithick] (mscbx.west) -- ($(mscbx.west)+(-3mm,0mm)$) ;

\draw[color=blue,semithick] ($(mscbx.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}
\end{tcolorbox}
\caption{宏包文件结构}\label{fig:pkg:structure}
\end{figure}

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

\subsection{最小示例}

基于biblatex宏包的参考文献生成方法非常简单,例\ref{code:doc:structrue}是一个最小工作示例。示例代码中给出了详细注释,介绍了使用biblatex 的tex源文档基本结构,其中gb7714-2015 样式随biblatex宏包加载,参考文献数据文件example.bib(需另外准备)利用 \verb|\addbibresource|加载,文献表利用 \verb|\printbibliography| 命令输出(可在正文任意位置)。所有基于 biblatex 生成参考文献的文档无论大小万变不离其宗。
关于参考文献数据库文件(*.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样式
%两者相同是可以合并为一个选项style
\usepackage[backend=biber,style=gb7714-2015]{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}



\subsection{编译方式}

不同于基于bibtex传统方法的四步编译,基于biblatex生成参考文献的文档编译一般只需三步,第一遍xelatex,第二遍biber,第三遍xelatex,但如需反向超链接,除设置backref 选项外,还需第四遍 xelatex 编译。例\ref{eg:compile:cmd} 给出编译命令,其中--synctex=-1 选项也可以是-synctex=1。而且这四步命令可以用一条命令latexmk -xelatex jobname.tex 代替。前述的最小工作示例的编译结果如图\ref{fig:eg:ref}所示。关于文档采用非utf-8编码和使用pdflatex命令编译的
细节另见第\ref{sec:pkg:hints}节。

\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}


\begin{refsection}
\begin{figure}[!htb]
\centering
\begin{tcolorbox}[left skip=0pt,right skip=0pt,%
width=\linewidth,colframe=gblabelcolor,colback=white,arc=0pt,%
leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt]
\deflength{\textparwd}{\linewidth-1cm}
\parbox{\textparwd}{%\raggedright
详见文献\cite{Peebles2001-100-100}\parencite{Babu2014--}
参考文献\cite[见][49页]{于潇2012-1518-1523}\parencite[见][49页]{Babu2014--}
\renewcommand{\bibfont}{\zihao{-5}}
\printbibliography[heading=subbibliography,title=参考文献]
}
\end{tcolorbox}
\caption{最小工作示例的结果}\label{fig:eg:ref}
\end{figure}
\end{refsection}


\section{使用说明}

\subsection{样式及选项加载方式}

例\ref{code:doc:structrue}中给出了宏包和样式的基本加载方式,选项的加载也类似。比如:

\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提供的标准样式。这种方式尽管不很常用,但偶尔也有需求。

\subsection{文献引用及其标注格式}\label{sec:cbx:usage}

要生成参考文献,第一步就是在正文中引用参考文献。引用参考文献在正文中所形成标注的格式称为参考文献标注样式,也称引用样式或引用标签样式,分为两类: 顺序编码制和著者年份(作者年)制。引用文献的基本命令\verb|\cite|,但为了一篇文档中实现不同的标签效果,通常还需要使用其它命令,
比如\verb|\parencite|, \verb|\textcite|, \verb|\pagescite|,\verb|\footfullcite|等。习惯natbib的用户也可以在加载natbib选项后,
可使用\verb|\citet|, \verb|\citep|命令。

%顺序编码制的标注样式文件大体使用标准引用样式numeric-comp的内容
\paragraph{\heiti 顺序编码制的标注样式}

\verb|\cite| 命令为上标模式,\verb|\parencite|保留非上标模式。为满足GB/T 7714-2015第10.1.3节的要求,增加了 \verb|\pagescite| 命令。为使用户免于输入文献作者来作为句子主语,完善了\verb|\textcite|命令格式,
并增加了\verb|\authornumcite|命令以同时输出作者和顺序编码。
%各命令使用方式如例\ref{eg:citefornumeric}所示。
%各引用命令的效果如图\ref{fig:cite:num}所示。
各引用命令的使用方式如表\ref{tab:cite:num}所示。
测试文档见\href{run:example/testallformat.tex}{testallformat.tex}。

\begin{refsection}
\begin{table}[!htb]
\centering
\caption{顺序编码制常用命令示例}\label{tab:cite:num}
\small
\begin{tabular}{l@{\quad$\Rightarrow$\quad}ll}
\hline
命令 & 标注标签 & 说明 \\ \hline
  \verb|\cite{Peebles2001-100-100}|         & \cite{Peebles2001-100-100} &  不带页码上标       \\
  \verb|\upcite{Peebles2001-100-100}|   &  \upcite{Peebles2001-100-100}  &  不带页码上标  \\
  \verb|\supercite{Peebles2001-100-100}|   &  \supercite{Peebles2001-100-100}  &  不带页码上标  \\
  \verb|\parencite{Miroslav2004--}|         & \parencite{Miroslav2004--}  & 不带页码非上标       \\
  \verb|\cite[49]{蔡敏2006--}|     & \cite[49]{蔡敏2006--}   &  带页码上标   \\
  \verb|\pagescite{Peebles2001-100-100}|     & \pagescite{Peebles2001-100-100}   &  自动页码上标   \\
  \verb|\pagescite[150]{Peebles2001-100-100}|     & \parencite[49]{Miroslav2004--}   &  带页码非上标   \\
  \verb|\parencite[49]{Miroslav2004--}|     & \cite[49]{蔡敏2006--}   &  带页码的上标   \\
  \verb|\textcite{Miroslav2004--}|         & \textcite{Miroslav2004--}  &  提供主语非上标标签        \\
  \verb|\authornumcite{Miroslav2004--}|        & \authornumcite{Miroslav2004--} & 提供主语上标标签       \\
  \verb|\citeauthor{蔡敏2006--}\cite{蔡敏2006--}|  & \citeauthor{蔡敏2006--}\cite{蔡敏2006--} & 提供主语上标标签   \\
  \verb|\footfullcite{赵学功2001--}|  & \footfullcite{赵学功2001--} & 脚注方式文献条目   \\
  引用单篇文献:  & 文献\cite{Peebles2001-100-100} &  国标示例  \\
  同一处引用多篇文献: & 文献\cite{Peebles2001-100-100,Miroslav2004--} &  国标示例\\
 同一处引用多篇文献: & 文献\cite{蔡敏2006--,Miroslav2004--,赵学功2001--} &  国标示例:三篇以上压缩\\
 多次引用同一作者的同一文献: &
  文献\cite[20-22]{Miroslav2004--},
 文献\cite[55-60]{Miroslav2004--} &  国标示例 \\
  多次引用同一作者的同一文献: &
 文献\footfullcite[20-22]{Miroslav2004--},
 文献\footfullcite[55-60]{Miroslav2004--} &  国标示例:脚注方式 \\ \hline
\end{tabular}
\end{table}
\end{refsection}

%\begin{example}{顺序编码制引用命令}{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}
%
%\begin{figure}[!htb]
%\begin{tcolorbox}[left skip=0pt,right skip=0pt,%
%width=\linewidth,colframe=gblabelcolor,colback=white,arc=0pt,%
%leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt]
%\centering
%\deflength{\textparwd}{\linewidth-1cm}
%\parbox{\textparwd}{
%\includegraphics{egcitenum.pdf}
%}
%\end{tcolorbox}
%\caption{顺序编码制标注格式}\label{fig:cite:num}
%\end{figure}

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

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

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

\begin{table}[!htb]
\centering
\caption{著者年份制常用命令示例}\label{tab:cite:authoryear}
\includegraphics[scale=0.8]{egciteaytab.pdf}
\end{table}


%\begin{example}{作者年制引用命令}{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]{赵学功2001--}和Miroslav\yearpagescite[][15]{Miroslav2004--}
%作者年制文中已有作者只需给出年份的引用,三种方式:
%    见赵学功\yearcite{赵学功2001--}
%    见赵学功(\cite*{赵学功2001--})
%    见赵学功(\citeyear{赵学功2001--})\par
%作者年制文中无作者需要标注命令给出作者作为主语的引用:
%    见\textcite{赵学功2001--}\par
%在页脚中引用和打印文献表:
%    \footnote{在脚注中引用\footcite{赵学功2001--}} \footfullcite{赵学功2001--}
%    \end{texlist}
%\end{example}

%\begin{figure}[!htb]
%\begin{tcolorbox}[left skip=0pt,right skip=0pt,%
%width=\linewidth,colframe=gblabelcolor,colback=white,arc=0pt,%
%leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt]
%\centering
%\deflength{\textparwd}{\linewidth-1cm}
%\parbox{\textparwd}{
%\includegraphics{egciteay.pdf}
%}
%\end{tcolorbox}
%\caption{作者年制标注格式}\label{fig:cite:ay}
%\end{figure}

\subsection{文献表打印和段落格式控制}\label{sec:usage:bbx}

引用文献后,可以在文档需要的位置利用 \verb|\printbibliography| 命令输出。文献表输出的格式称为参考文献著录样式,也称著录表样式或著录格式,也分两类: 顺序编码制和作者年制(著者-出版年制)。

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

%作者年制的参考文献样式则基于标准样式authoryear
\paragraph{\heiti 作者年制样式} 中各条参考文献条目以作者-年为标签以一定的顺序排列。作者年制的著录格式与顺序编码制基本相同(除了把年份提到了作者后面作为文献条目内的标签)。数据源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{\heiti 文献表字体、颜色、间距、缩进控制} 为方便用户改变文献表段落格式、内容字体和颜色等,在 biblatex 提供的 \verb|\bibfont| 命令基础上,
增加了\verb|\bibauthorfont|、\verb|\bibtitlefont|、\verb|\bibpubfont| 等命令用于控制文献不同部分的格式,比如作者,标题,出版项等。
增加了尺寸\verb|\bibitemindent| 用于控制参考文献条目在文献表中的缩进,
其意义与 list 环境中 \verb|\itemindent| 相同。
用法具体见例\ref{eg:biblist:fontset},结果如图\ref{fig:par:fmt}所示。
测试用例见\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}

\begin{figure}[!htb]
\begin{tcolorbox}[left skip=0pt,right skip=0pt,%
width=\linewidth,colframe=gblabelcolor,colback=white,arc=0pt,%
leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt]
\centering
\deflength{\textparwd}{\linewidth-1cm}
\parbox{\textparwd}{
\includegraphics{egparfmt.pdf}
}
\end{tcolorbox}
\caption{文献表段落格式示例}\label{fig:par:fmt}
\end{figure}

\subsection{文献表条目著录格式控制}\label{sec:entry:fmt}

文献表输出的格式即参考文献著录样式,除了整体的段落格式外,还有条目内部的格式可以控制,条目内部的这些项称为著录项,这些著录项的格式通常可由选项控制。可用选项除了biblatex 提供的标准选项外,也包括样式包提供的选项。
图\ref{fig:content:fmta}、\ref{fig:content:fmtb}、\ref{fig:content:fmtc}给出了一些选项设置后的格式控制效果,
更多选项的详细说明见第\ref{sec:added:opt}、\ref{sec:old:opt}小节。

图\ref{fig:content:fmta}给出了选项设置为 style=gb7714-2015, gbnamefmt=givenahead,
gbpub=false, gbbiblabel=box, gbtitlelink=true 时的文献表,可以看到作者姓名、序号标签、标题超链接的设置。

\begin{figure}[!htb]
\begin{tcolorbox}[left skip=0pt,right skip=0pt,%
width=\linewidth,colframe=gblabelcolor,colback=white,arc=0pt,%
leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt]
\centering
\deflength{\textparwd}{\linewidth-1cm}
\parbox{\textparwd}{
\includegraphics{egcontentfmt.pdf}
}
\end{tcolorbox}
\caption{文献表条目著录格式示例一}\label{fig:content:fmta}
\end{figure}

图\ref{fig:content:fmtb}给出了选项设置为 style=gb7714-2015ms, gbnamefmt=lowercase,
gbpub=false, gbtitlelink=true, gbstyle=false, sorting=nyt 时的文献表,可以看到作者姓名、标题超链接、中英文不同文献格式、文献排序的设置。

\begin{figure}[!htb]
\begin{tcolorbox}[left skip=0pt,right skip=0pt,%
width=\linewidth,colframe=gblabelcolor,colback=white,arc=0pt,%
leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt]
\centering
\deflength{\textparwd}{\linewidth-1cm}
\parbox{\textparwd}{
\includegraphics{egcontentfmtb.pdf}
}
\end{tcolorbox}
\caption{文献表条目著录格式示例二}\label{fig:content:fmtb}
\end{figure}

图\ref{fig:content:fmtc}为选项和本地化字符串如例\ref{eg:localstr:diff}设置时的引用标注和文献表,注意其中引用标注和文献表中的不同本地化字符串输出效果,引用标注中英文作者和中文作者缩略词的不同。这是中科院大学资环类学位论文的要求格式,可以看到尽管有些特殊,但通过选项设置和本地化字符串设置也能实现。

\begin{example}{作者年制标注和文献表不同本地字符串效果}{eg:localstr:diff}
\begin{texlist}
\usepackage[backend=biber,style=gb7714-2015ay,gbnamefmt=lowercase,maxcitenames=2,mincitenames=1,
gbbiblocal,sortcites,sorting=gbyntd]{biblatex}
\DefineBibliographyStrings{english}{
        andincite         = {和},
        andincitecn       = {和},
        andothersincitecn = {等},
        andothersincite   = {等{\adddot}},%adddot才能避开标点追踪
}
\end{texlist}
\end{example}


\begin{figure}[!htb]
\begin{tcolorbox}[left skip=0pt,right skip=0pt,%
width=\linewidth,colframe=gblabelcolor,colback=white,arc=0pt,%
leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt]
\centering
\deflength{\textparwd}{\linewidth-1cm}
\parbox{\textparwd}{
\includegraphics{egcontentfmtc.pdf}
}
\end{tcolorbox}
\caption{文献表条目著录格式示例三}\label{fig:content:fmtc}
\end{figure}

\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}。

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

  为实现多种样式并存而增加的选项。
  \begin{itemize}
    \item gbstyle=true,即默认全部文献使用gb7714-2015样式。
    \item gbstyle=false,仅中文文献使用gb7714-2015样式,其它语言文献使用biblatex默认样式。
  \end{itemize}

  该选项的实现原理是把所有国标格式设置局部化到每一条文献打印时,处理时首先判断gbstyle 选项及文献的语言,当满足要求则使用这些局部化格式,否则使用默认的标准样式。这种实现为一篇文档内实现两种样式提供解决思路,尽管目前非中文语言文献的著录格式是标准样式,但只要对标准样式做进一步的修改就可以形成符合某种格式规范的样式,比如像ieee,nature等的样式。因此存在中文使用GB/T 7714-2015 著录格式,而英文文献使用ieee等著录格式的可能性。测试文档见:\href{run:./example/opt-gbstyle.tex}{opt-gbstyle.tex}。

  \item[gblocal]=\textbf{gb7714-2015},chinese,english. \hfill default is gb7714-2015
  \item[gbcitelocal]=\textbf{gb7714-2015},chinese,english. \hfill default is gb7714-2015
  \item[gbbiblocal]=\textbf{gb7714-2015},chinese,english. \hfill default is gb7714-2015

  为设置引用标注标签和文献表中的本地化字符串而增加的选项。其中gbcitelocal 用于控制标注中的本地化字符串,而gbbiblocal用于控制文献表中的本地化字符串,gblocal选项等价于同时设置gbcitelocal 和 gbbiblocal。
  配合\lstinline[breaklines=true]!\DefineBibliographyStrings!命令对本地化字符串进行设置可以实现一些特殊的效果。图\ref{fig:content:fmtc}就是该选项的一个使用示例。
  \begin{itemize}
    \item gblocal=gb7714-2015,即默认区分中英文,不同语言采用不同的字符串比如中文使用“等”“和”,而英文使用“etal”“and”。
    \item gblocal=chinese,强制设置所有的本地化字符串使用中文。
    \item gblocal=english,强制设置所有的本地化字符串使用英文。
  \end{itemize}
  测试文件见:
  \href{run:egfigure/egcontentfmtc.tex}{egcontentfmtc.tex}。


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

  为实现国标样式的脚注文献表格式而增加的选项。
  \begin{itemize}
    \item gbstyle=true,即默认做处理使脚注文献表满足国标要求。
    \item gbstyle=false,不做任何附加处理。
  \end{itemize}

  该选项的实现主要是两个方面:一是实现国标要求的脚注标签和段落格式,利用对
  \verb|\@makefnmark|重定义实现正文脚注标签带圈上标,
  利用对\verb|\@makefntext|做patch局部化重设\verb|\@makefnmark|使得脚注中的标签不上标,利用footmisc宏包实现对脚注的悬挂对齐,需要注意由于footmisc的问题,使用该宏包会导致脚注的超链接失效,如果不需要悬挂格式,那么可以在bbx文件中将footmisc注释掉,此外对于beamer类该包也并不兼容,所以当加载beamer类则直接注释掉;二是实现国标要求的相同的文献不输出,而是简化输出,比如同\textcircled{4} 等,主要利用citetracker 选项实现对文献引用的追踪,然后利用ifciteseen 判断和对footfullcite 命令做修改实现。
  测试文档见:\href{run:./example/opt-gbfootbib.tex}{opt-gbfootbib.tex}。

\end{description}


\subsubsection{兼容的标准选项}\label{sec:old:opt}
绝大部分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{多语言混合文献表}\label{sec:multilan:combine}

一般情况下在国内应用环境下,多语言混合不太会超过两种语言,比如仅有中英两种语言混合。但有时可能也会存在多种语言,比如存在中/英/日/俄这种多语言环境。图\ref{fig:multi:lan}给出了这样一个示例,其中不同的语言使用了不同的本地化字符串。

\begin{figure}[!htb]
\begin{tcolorbox}[left skip=0pt,right skip=0pt,%
width=\linewidth,colframe=gblabelcolor,colback=white,arc=0pt,%
leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt]
\centering
\deflength{\textparwd}{\linewidth-1cm}
\parbox{\textparwd}{
\includegraphics{egmultilan.pdf}
}
\end{tcolorbox}
\caption{多语言混合文献表}\label{fig:multi:lan}
\end{figure}

使用xelatex编译时,由于其原生支持unicode的特性,在tex文档内实现多语言混合比较容易实现,正确显示的关键在于合适的字体设置。一般情况下西文如英/法/俄可以利用fontspec宏包选择合适的字体来解决,而中/日/韩语可以利用ctex宏包可以解决,但仍需注意要正确的显示中/日/韩语也需要字体支持,windows下常见的中文字体可能不支持日/韩字符,而思源宋体是一个不错的选择。本文的多语言示例编译均采用思源宋体常规(SourceHanSerifSC-Regular.otf),请从其官网下载。

对于参考文献来说,其实还有一个更重要的问题:本地化字符串问题。中英文情况下,中文利用在英文本地化文件基础上新增本地化字符串加以解决。但其它语言需要自己的解决方案。如第\ref{sec:usage:bbx}节所述,本样式使用language域来区分文献的语言类型,默认情况下该域不需要人工输入,可由biber根据文献信息自动判断,但也可以手动输入来人工指定。根据 biblatex 提供的多语言解决方案,还需要利用langid/langidopt域,以及babel/polyglossia宏包的支持。

首先,不同语言的文献需要设置文献的langid域为文献所用语言,比如英文文献则设置langid域等于english,俄文文献则设置等于rassian。langid域类似于language域通常由样式自动处理,不需要人工输入。

其次,在biblatex加载时设置 autolang选项,等于none则不做多语言处理,等于hyphen则仅做不同语言的断词处理,等于other或other*则处理不同语言的断词和本地化字符串,other*选项等价于使用babel的otherlanguage*环境,与other的差别在于不忽略环境后的空白。从实践看,当要使用条目集时,使用other*选项更为合适。

再次,还可设置language选项,用于区分是否在标注或文献表中采用多语言处理方案。当language选项等于autobib时仅在文献表中自动切换语言,等于 autocite 时仅在标注中自动切换语言,等于 auto 时则在文献表和标注中同时切换。

最后,需要在tex文档内加入babel宏包以及需要使用的语言,需要使用本地化字符串的西语都要加入,否则无法自动切换。比如需要自动切换的西文语言包括英文、法文和俄文,那么加入宏包命令为\verb|\usepackage[french,russian,english]{babel}|。

由于东亚语言的特殊性,针对西文和东亚语言,分别做如下的考虑:
\begin{enumerate}
  \item 如俄语/法语这样的西方语言,通过biblatex提供的方案自动解决。使用时,bib文件中的文献数据按文献本身的语言录入,在tex源文件中载入babel宏包并设置相应语言,然后设置biblatex的autolang和language选项。剩下所有工作比如自动语言判断和处理则交由gb7714-2015样式自动完成。

  \item 日韩语采用类似中文的方式处理,即在英语本地化文件基础上通过增加新的本地化字符串实现处理,因此langid需设为english。在输出本地化字符串的宏中当做英文处理,但内部存在区分逻辑,当判断语言为中文时,则使用中文的本地化字符串比如andcn,andotherscn等, 当不是时,则判断不同的语言,是日文则输出本地化字符串如andjp,andothersjp,若是韩文则输出本地化字符串如andkr,andotherskr。而所有其它西文则输出本地化字符串比如and,andothers,由babel自动切换成对应语言的字符串。由于日文中作者这类信息通常用的汉字,因此常常判断为中文,所以可以使用符合中文习惯的字符串,但如果对日文有精确的判断,那么可以输出符合日文习惯的字符串。韩语由于大量使用表音的字符,所以通常使用专门的本地化字符串。中日韩语文献数据录入也不要特殊的处理,按文献本身语言输入即可,剩下所有其它工作均由gb7714-2015样式自动处理,用户无需过多关注。

\end{enumerate}

本样式对中日韩英俄法六种语言混合文献表做了测试,详见:
\href{run:example/opt-eg-multilan.tex}{opt-eg-multilan},
\href{run:example/opt-autolang-multilan.tex}{opt-autolang-multilan}。


\subsection{多语言对照的文献表}\label{sec:multilan:implement}

国标GB/T 7714-2015有不同语言对照文献的要求(详见第6.1节),某些期刊也有类似的需求。对于biblatex宏包,这一问题可以通过条目集类型(set)/或者条目关联(related)来解决,多语言对照的情况与双语言对照本质是一样的,因此下面主要讨论双语对照的文献表。
图\ref{fig:double:lana}和\ref{fig:double:lanb}给出中英双语对照文献示例,两个示例中英文文献的作者姓名做了不同的设置,前者为 gbnamefmt=uppercase,后者为gbnamefmt=pinyin。
GB中的韩中两种语言对照文献见\href{run:./stdGBT7714-2015.pdf}{stdGBT7714-2015文件}第4页。

\begin{figure}[!htb]
\begin{tcolorbox}[left skip=0pt,right skip=0pt,%
width=\linewidth,colframe=gblabelcolor,colback=white,arc=0pt,%
leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt]
\centering
\deflength{\textparwd}{\linewidth-1cm}
\parbox{\textparwd}{
\includegraphics{egdoublelan.pdf}
}
\end{tcolorbox}
\caption{双语言对照文献表示例一}\label{fig:double:lana}
\end{figure}

\begin{figure}[!htb]
\begin{tcolorbox}[left skip=0pt,right skip=0pt,%
width=\linewidth,colframe=gblabelcolor,colback=white,arc=0pt,%
leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt]
\centering
\deflength{\textparwd}{\linewidth-1cm}
\parbox{\textparwd}{
\includegraphics{egdoublelanb.pdf}
}
\end{tcolorbox}
\caption{双语言对照文献表示例二}\label{fig:double:lanb}
\end{figure}

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

设置条目集类型(set)有静态和动态两种方法。其中动态方法使用更为方便,只需在写文档时利用\verb|\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条目类型除了子条目关键词信息外,并无其他信息,因此作者年制中set的标注通常不能自动给出令人满意的标签。该问题与biblatex版本升级有关,biblatex v3.7及之前版本没有这个问题,因为这些老版本中 set 带有第一个子条目的信息,所以会自动输出子条目信息作为标签。动态设置条目集方法中,解决方案是设置一个指定格式和内容且中间无空格无英文逗号的关键字,比如“易仕和,等,2013”,这时因为没有空格和英文逗号,该关键字会以一个整体字符串处理,而不会被分开解析,因此可以用它来作为标签}。比如:

\begin{example}{设置set条目集用于双语文献动态方法}{eg:setforbilangentry}
\begin{texlist}
\defbibentryset{易仕和,等,2013}{易仕和2013--,Yi2013--}
专著,双语文献引用\cite{易仕和,等,2013}
\end{texlist}
\end{example}

\qd{此时作者年制的set标注标签会是“易仕和,等,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}

如上述这般简单设置静态条目集时,中文排序会出现问题,条目集会出现在文献表末尾,这是因为条目集没有设置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{\heiti 利用条目关联满足双语文献要求}

除上述给出的条目集方案外,关联条目方法则是另一种可行方案,该方案的讨论可以见“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文件后,当不需要双语文献时还需改回来,这会带来不便,因此可以考虑下面的动态方法。但要注意动态方法需要利用多个\verb|\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文件做直接修改。本样式中对该过程进行了封装,定义一个新的命令\verb|\defdoublelangentry|,例如:
\begin{example}{设置关联条目的动态方法}{eg:related:dynamic}
\begin{texlist}
\defdoublelangentry{易仕和2013--}{Yi2013--}
\end{texlist}
\end{example}

使用该命令后,可以引用主条目“易仕和2013--”生成双语文献。但要注意由于\verb|\DeclareStyleSourcemap|命令只能在导言区中使用,因此\verb|\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}。

\subsection{biblatex 的优点}

基于 biblatex 宏包的参考文献生成方法,具有很多明显的优点,读者可以从
\href{https://github.com/CTeX-org/lshort-cn}{lshort-cn}、
\href{https://github.com/latexstudio/LaTeXFAQ-cn}{LatexFAQ-CN}、
\href{https://tex.stackexchange.com}{tex.stackexchange.com}
了解到更多。

笔者从最初开始学习latex时利用 thebibliography 环境生成参考文献,到对格式化有更多需求后开始寻求利用参考文献宏包,再到最后选择使用biblatex宏包,在不断实践过程中越发感觉到biblatex 在生成参考文献方面的巨大潜力。以笔者的观点其优点主要包括:

%[也由于对bibtex语言不熟悉,偷懒不想学$( \hat{} \bot \hat{} )$]
\begin{enumerate}
\item 使用简单。代码结构很简单,格式控制很简单,编译方式很简单,编译命令不限(xelatex、pdflatex等均可),如例\ref{eg:compile:cmd} 所示。

%使用够方便

\item 划分自由。在一个文档中可以生成任意数量的文献表,无需用将分档划分成不同的文件来辅助生成分章参考文献。利用refsection 和refsegment方便划分,具有嵌套、遍历等多种灵活处理方式。
%划分很自由,划分无限制

\item 定制方便。使用是tex命令(宏)控制格式,定制和修改相比 bibtex 语言更为容易。全面提供适用于自然学科、人文学科的多种不同类型的参考文献样式,参考、引用、移植、定制均很便捷。
%定制很容易

%处理无限制,支持更全面
\item 支持全面。后端处理程序biber处理大数据量毫无压力,不用担心内存不足问题,字符编码支持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}
\end{enumerate}
%上述这些优点也是笔者决定编写符合GB/T 7714-2015标准的参考文献样式文件的原因之一。

\subsection{使用注意事项}\label{sec:pkg:hints}

\begin{enumerate}

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

  \item tex源文档既可以用xelatex编译,也可以利用pdflatex或latex进行编译。但要注意的是pdflatex编译可能因为某些样式比如authoryear,使用了xstring宏包中的一些命令而导致错误,但numeric类样式通常没有问题。该问题在biblatex更新到3.12版本后取消xstring 宏包后得以解决。

      中文用户编译还需要注意编码问题。
      utf-8编码的文档,采用xelatex 编译没有任何注意事项,但使用pdflatex编译时,需要给ctex 宏包加载UTF8选项,比如\verb|\usepackage[UTF8]{ctex}|,该选项在文档类加载时给出也可,比如\verb|\documentclass[[UTF8]{article}|,同时引用文献时使用的引用关键词应使用英文。

      当文档使用其他编码时,可以利用notepad++ 或notepad2 等编辑器将其转换为UTF-8编码。若不进行转换,使用xelatex编译通常需要指定一个文档编码,比如windows 环境下的GB2312 编码的文档需要指定\verb|\XeTeXinputencoding "GBK"|,否则会显示乱码。使用pdflatex进行编译时,如果biblatex不能正确的处理编码问题,那么需要为其明确的指定texencoding和bibencoding 选项。比如windows环境下的GB2312编码的文档,需要指定\verb|\usepackge[texencoding=GBK]{biblatex}|。

      %增加了对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{数据库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 会自动解析,如果无法解析会忽略该域。格式化的输入方式是:

      年-月-日/年-月-日,数字格式为:yyyy-mm-dd/yyyy-mm-dd

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

      \emph{特别要注意起止日期之间的分隔符为/而不是- ,因为年月日之间已经存在分隔符-。同时因为日期biber解析是严格按照iso标准处理,因此年、月、日数字需要写全,2001-05-06不能写为2001-5-5,否则不能解析},解析完成后第一个年- 月- 日会解析并存储到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}


\section{参考文献著录格式示例}\label{sec:eg:gb77142015}

%\subsection{GB/T 7714-2015 中的著录标准和顺序编码制示例}

%\includepdf[pages={1-5}]{egfigure/eggbcitation.pdf}


%\subsection{GB/T 7714-2015 中的著者年份制示例}

%\includepdf[pages={1-2}]{egfigure/eggbcitationay.pdf}

%\subsection{GB/T 7714-2015 中的附录参考文献示例}

%\includepdf[pages={1-4}]{egfigure/eggbbiblio.pdf}



\subsection{GB/T 7714-2015 标准示例}

详见文档:\href{run:./stdGBT7714-2015.pdf}{GBT7714-2015std}

\subsection{更多示例}

\begin{itemize}

  \item 示例: beamer类中的参考文献示例

  \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}

beamer类示例,参见: \href{run:./example/egbeamer.tex}{顺序编码制};
\href{run:./example/egbeameray.tex}{作者年制}。

其它示例,参见:
\href{run:./example/testallformat.tex}{testallformat.tex}。

详见文档:
\href{run:./example/stdGBT7714-2015eg.pdf}{GBT7714-2015egstd}。


\section{GB/T 7714-2015 标准说明与实现}\label{sec:gbt:std}

\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节。

如果顺序编码制采用脚注方式,则序号由计算机自动生成圈码。多次引用同一著者的同一文献时,若采用脚注方式应重复著录参考文献,但在参考文献列表中的著录项目可以简化文献序号和页码。

脚注方式的顺序编码制与一般的顺序编码制的主要差别在于:
一、正文每个文献需要引用均生成脚注文献,因此一个引用命令只能带一个文献引用关键字。且正文中引用的标注标签格式不同,是带圈的上标数字而不是[]包围的数字。
二、脚注中的文献表即便是遇到相同文献也需要重复输出,但可以简化为序号和页码。

事实上如果不进行简化而只是简单重复输出,对于biblatex来说处理其实更方便,但为了与GB/T 7714-2015 标准给出的示例一致,biblatex-gb7714-2015也做了实现,注意:脚注方式文献表的引用命令为\verb|\footfullcite|,需要注意由于脚注本身在小页环境或表格中存在的问题,可能导致在其中使用该命令出现比较奇怪的现象。GB/T 7714-2015 标准中示例实现如图\ref{fig:numeric:footnote}所示:

\begin{figure}[!htb]
\begin{tcolorbox}[left skip=0pt,right skip=0pt,%
width=\linewidth,colframe=gblabelcolor,colback=white,arc=0pt,%
leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt]
\centering
\deflength{\textparwd}{\linewidth-1cm}
\parbox{\textparwd}{
\includegraphics{egfootstyle.pdf}
}
\end{tcolorbox}
\caption{顺序编码制的脚注方式}\label{fig:numeric:footnote}
\end{figure}


\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域等于standard代替。当然为了兼容传统BIBTeX格式存在standard类型的情况,也可以直接使用standard类型。
为此本样式对standard条目类型做了特别支持。著录格式的处理原理与前一节所述相同,只是利用动态数据将standard类型转换为book/inbook类型。在bib文件中直接使用standard类型时注意使用其它biblatex样式时可能存在移植障碍,因为其它样式可能不支持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}

\emph{需要注意的是: 根据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节):\\
析出文献主要责任者.析出文献题名[文献类型标识/文献载体标识].连续出版物题名:其他题名信息,年,卷(期):页码[引用日期].获取和访问路径.数字对象唯一标识符.

注意:从GB/T 7714-2015第4.4.2节的示例可以看到对于带网址的article在引用日期前可以加上修改更新日期。
\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域等于news代替,或者也可以直接使用newspaper类型。为方便使用考虑,本样式增加了对新条目类型newspaper的支持,这种支持通过类似于standard类型的方式实现,没有对数据模型进行改动或增加,而完全利用动态数据修改将newspaper类型转换为article类型。在bib文件中直接使用newspaper类型时需要注意可能存在移植障碍,因为其它biblatex样式可能不支持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}

\qd{newspaper类型与article类型的差别主要是(1)文献标识码不是J而是N;(2)报纸的日期需要表示到日。(3)报纸不需要修改和更新日期。注意:报纸名应用journal或journaltitle域录入,与article保持一致。}

\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}

\qd{需要注意:公告日期或公开日期需要表示到日。}

\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/instiution,date或year:pages(date/enddate/eventdate)[urldate].url.doi
\end{texlist}
\end{example}

\qd{尽管GB/T 7714-2015中给出的著录格式包含出版地和出版者,但通常情况下具有出版地和出版者的文献会归类到其它条目类型中,至于存在的url信息,只要标识文献载体即可,即一般情况下(出版地:出版者,出版年:引文页码)这些信息很少出现在online[EB]条目中。因此默认情况下,gb7714-2015样式只处理出现organization或instiution中的出版者信息,此外用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{报告/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的版本信息放在version域中,而不是book等条目的edition域中。report类型出版项处理基本与book一样,但当出版项缺省时且存在网址时,直接省略出版项,且加上修改和更新日期,因此将其转换为online类型处理。从report开始,后面的所有类型,当不存在出版项且存在网址时,都以online的格式进行处理。}

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

\bibliofmt{其著录格式为} 借用thesis格式处理,而不是标准样式中的manual格式,这种方式下,当没有出版地和出版者时,完全省略。
\end{refentry}

 \bc{manual出版者用institution域表示,体现的是机构而不是一般的出版社。注意:manual类型的出版项缺失时直接省略。}

\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类型出版项缺失时直接省略,格式与manual一致,借用manual类型输出。}


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

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

\subsubsection{备选类型}
\begin{refentry}{}{}
备选/其它(misc),文献类型标识用Z表示。

\bibliofmt{其著录格式为} 当存在网址时直接转换为online类型,由于howpublished域可用于描述一些详细信息,因此不存在网址时,独立作为一种格式处理。
\end{refentry}

\subsubsection{更多类型}
\begin{refentry}{}{}
数据库(database)标识符(DB)、数据集(dataset)标识符(DS)、软件(software)标识符(CP)、舆图(map)标识符(CM)。

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



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

除了第\ref{sec:numeric:data}节针对不同条目类型的著录格式要求外,GB/T 7714-2015 还有一些细节规定比如文字、符号等,biblatex-gb7714-2015宏包做如下考虑,
示例见文档\href{run:./stdGBT7714-2015.pdf}{stdGBT7714-2015}:

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

\begin{property}{}{}
用户录入文献数据中包含数字时,gb7714-2015按照GB/T 7714-2015第6.2节要求输出阿拉伯数字。
\end{property}

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

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

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

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

\subsubsection{标点}

\begin{property}{}{}
用户录入引文信息时不需要考虑域之间的标点符号,只需录入各数据域时考虑习惯的标点用法。gb7714-2015实现了GB/T 7714-2015第7节所给出的著录用符号要求。
\end{property}

\subsubsection{责任者}

\begin{property}{}{}
用户录入引文的责任者信息时,当责任者为多级机关团体时,用户填入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)。

gb7714-2015实现了GB/T 7714-2015第8.1节要求的责任者样式,能自动判断责任者语言并分别处理,设置了全局选项useprefix=true以使用前缀,增加了gbnamefmt选项用于设置不同的姓名输出格式。
\end{property}

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

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

gb7714-2015实现了符合GB/T 7714-2015第8.2节要求的格式,能根据条目信息确定文献类型标识/文献载体标识,并在各类参考文献条目驱动中直接使用,也可以利用gbtype选项设置是否输出该信息。各不同类型文献的类型标识/文献载体标识,参考GB/T 7714-2015 表B.1和B.2。
\end{property}

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

\begin{property}{}{}
用户在录入版次信息时,只要录入版次的整数数字比如2,或者录入需要打印的字符串比如明刻本。

gb7714-2015实现了GB/T 7714-2015第8.3节要求的格式,根据edition/version域输入信息分别处理,对于整数则解析后格式化,对于其它特殊版本说明,如新1版,明刻本等,直接在edition域录入后原样打印。
\end{property}

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

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

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

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

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

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

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

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

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


\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  到1.0p版本,已经完全实现GB/T 7714-2015样式要求格式,并增加了更多的功能,剩下的问题主要是用户一些特殊需求实现以及可能存在的兼容性问题,需要广大用户发现和建议,非常感谢!

    %到目前,无论是基本功能还是附加功能,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} %


\end{document}