texlive[49977] Master/texmf-dist: biblatex-gb7714-2015 (8feb19)

commits+karl at tug.org commits+karl at tug.org
Fri Feb 8 23:57:41 CET 2019


Revision: 49977
          http://tug.org/svn/texlive?view=revision&revision=49977
Author:   karl
Date:     2019-02-08 23:57:41 +0100 (Fri, 08 Feb 2019)
Log Message:
-----------
biblatex-gb7714-2015 (8feb19)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/README.md
    trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015-preamble.tex
    trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.tex
    trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example.bib
    trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015-gbk.def
    trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx
    trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.cbx
    trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx
    trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.cbx
    trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ms.bbx
    trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ms.cbx

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/BibLatex-Check-readme.md
    trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex_check.py
    trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/gbT7714-2015ms.tex
    trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/gbT7714-2015thesis.tex

Removed Paths:
-------------
    trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egfigure/
    trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/
    trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makeall.sh
    trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makeclear.sh
    trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makefile.sh
    trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/stdGBT7714-2015.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/stdgbT7714-2015eg.pdf
    trunk/Master/texmf-dist/source/latex/biblatex-gb7714-2015/

Added: trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/BibLatex-Check-readme.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/BibLatex-Check-readme.md	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/BibLatex-Check-readme.md	2019-02-08 22:57:41 UTC (rev 49977)
@@ -0,0 +1,43 @@
+BibLatex-Check
+==============
+
+*A python2/3 script for checking BibLatex .bib files*
+
+BibTeX Check is a small Python script that goes through a list of references and checks if certain required fields are available, for instance, if each publication is assigned a year or if a journal article has a volume and issue number.
+
+Additionally, it allows for consistency checks of names of conference proceedings and could easily be extended to other needs.
+
+The results of the check are printed to an html file, which includes links to Google Scholar, DBLP, etc. for each flawed reference. These links help retrieving missing information and correcting the entries efficiently.
+
+Please note that it is **not a BibLaTeX validator**. And in the current version, it might not yet be able to parse every valid bib file. The software targets the specific needs of Computer Scientist, but may be applicable in other fields as well.
+
+For use in automated environments, BibLaTeX-Check returns errors on the console (can be disabled).
+Further, it returns an exit code depending on whether problems have been found.
+
+The html output is tested with Firefox and Chrome, but the current version does not properly work with Internet Explorer.
+
+## Getting Started
+
+Just copy the file into a directory with write permission, then run the script
+
+	./biblatex_check.py <-b input.bib> [-a input.aux] [-o output.html]
+
+If you provide the additional aux file (created when compiling a tex document), then the check of the bib file is restricted to only those entries that are really cited in the tex document.
+
+## Options
+
+Specify these when calling the script.
+
+- -b (--bib=file.bib) Set the input Bib File
+- -a (--aux=file.aux) Set the input Aux File
+- -o (--output=file.html) Write results to the HTML Output File.
+- -v (--view) Open in Browser. Use together with -o.
+- -N (--no-console) Do not print problems to console. An exit code is always returned.
+
+## Help
+
+See `./biblatex_check.py -h` for basic help.
+
+If your getting an environment error, try using `python ./biblatex_check.py` or `python3 ./biblatex_check.py` depending on your OS.
+
+


Property changes on: trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/BibLatex-Check-readme.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/README.md	2019-02-08 22:56:29 UTC (rev 49976)
+++ trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/README.md	2019-02-08 22:57:41 UTC (rev 49977)
@@ -1,4 +1,4 @@
-<b>Date of last change: 2019-01-19 to version v1.0p</b>
+<b>Date of last change: 2019-02-07 to version v1.0q</b>
 
 
 # biblatex-gb7714-2015: a biblatex style  package
@@ -21,6 +21,18 @@
 
 The biblatex-gb7714-2015 package provides an implementation of the bibliography style of the `GB/T 7714-2015` bibliography style. This implementation follows `GB/T 7714-2015` standard, and can be used simply by loading biblatex with the appropriate option
 
+
+---------------------------------------------------------
+
+## Need to do:
+
+	* 王临慧, 2010a. 王临慧, 等, 2010b.需要等biblatex2.13更新后完成
+    * special characters in all fields?
+    * entry without author: the delimiter between title and year?
+	* TEST FOR texlive 2015,2016,2017
+	* [1],(1),1.,box{1},superscript,compress,noncompress
+	
+
 ## Usage
 * for numerical sequence style: gb7714-2015
 
@@ -120,6 +132,14 @@
 	
         `\usepackage[backend=biber,style=gb7714-2015,gbtitlelink=true]{biblatex}`
 		
+	- add an option `gbfootbib` to control the bibliography in footnote (This option is also for author year style):
+	
+		`gbfootbib = true` make patches to match the standard, this is the default setting.
+		
+		`gbfootbib = false` not to patch.
+	
+        `\usepackage[backend=biber,style=gb7714-2015,gbtitlelink=true]{biblatex}`
+		
 	- add options `gbcitelocal` `gbbiblocal` to control the local strings in citation and bibliography respectively, the `gblocal` set the both options (These options are also for author year style):
 	
 		`gbcitelocal = gb7714-2015` to output local strings according to the reference's language, this is the default setting.
@@ -818,14 +838,7 @@
 
 ![示例c](example/fig-nameformat.png)
 
----------------------------------------------------------
 
-## Need to do:
-    * different style for references of different languages,like:gb7714-2015 for chinese refs and trad-unsrt for english refs。
-    * special characters in all fields?
-    * entry without author: the delimiter between title and year?
-	* TEST FOR texlive 2015,2016
-	* [1],(1),1.,box{1},superscript,compress,noncompress
 
 ---------------------------------------------------------
 
@@ -847,7 +860,9 @@
 * 2018/11/04 v1.0n
 * 2018/12/22 v1.0o
 * 2019/01/19 v1.0p
+* 2019/02/07 v1.0q
 
+
 ---------------------------------------------------------
 ## Update history:
 

Modified: trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015-preamble.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015-preamble.tex	2019-02-08 22:56:29 UTC (rev 49976)
+++ trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015-preamble.tex	2019-02-08 22:57:41 UTC (rev 49977)
@@ -99,7 +99,7 @@
 \titlespacing{\paragraph}{2em}{0.5\baselineskip}{1em}
 
 %参考文献
-\usepackage[backend=biber,style=gb7714-2015,gbalign=center%,gbtype=true%
+\usepackage[backend=biber,style=gb7714-2015,gbalign=center,gbfootbib=true%,gbtype=true%
 ]{biblatex}%,backref=true%
 \addbibresource[location=local]{example/example.bib}
 \setlength{\bibitemsep}{1pt}
@@ -283,18 +283,23 @@
 \newcommand{\dateformanual}[1]{\def\riqiudf{#1}}
 %\ifthenelse{\equal{\youwuudf}{\temp}}{true}{false}
 \def\temp{}
+\makeatletter
 \newcommand{\titleandauthor}{
 \begin{center}
-{\renewcommand{\thefootnote}{\fnsymbol{footnote}}\setlength{\baselineskip}{30pt}\heiti{\zihao{-2}{\biaotiudf}}\par}
+\def\@makefnmark{\hbox{\@textsuperscript{\small\@thefnmark}}}
+{\renewcommand{\thefootnote}{\fnsymbol{footnote}}
+\setlength{\baselineskip}{30pt}\heiti{\zihao{-2}{\biaotiudf}}\par}
 %注意这里\par要放在花括号内才有效
 \vspace*{0.3cm}
-{\renewcommand{\thefootnote}{\arabic{footnote}}\kaishu{\zihao{4}{\zuozheudf}}\par}
+{\renewcommand{\thefootnote}{\arabic{footnote}}
+\kaishu{\zihao{4}{\zuozheudf}}\par}
 \vspace*{0.2cm}
 {\songti{\zihao{-4}{\riqiudf}}\par}
 \end{center}
 }
-%脚注的数字带圈
-\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}}
+\makeatother
+%脚注的数字带圈使用gb7714-2015中的重定义实现
+%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}}
 
 
 %--------------列表环境---------------------------------------------

Modified: trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.tex	2019-02-08 22:56:29 UTC (rev 49976)
+++ trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.tex	2019-02-08 22:57:41 UTC (rev 49977)
@@ -6,13 +6,24 @@
 %  标题和目录
 %------------------------------------------------------------
 \pagenumbering{Roman}
+
 \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.}}
+\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 at 163.com}}
+
 \dateformanual{2016-07-01}
+
 \titleandauthor
+
 \begin{quotation}
-biblatex-gb7714-2015 样式宏包提供了符合《GB/T 7714-2015~信息与文献~参考文献著录规则》要求的biblatex参考文献样式。分为两种编制方式: 一、顺序编码制;二、著者-出版年制。配合 biblatex 宏包使用具有较高的兼容性、易用性和灵活性。宏包提供了详细的使用说明,为国内用户生成符合国标的参考文献表提供帮助。
+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}{目录}
@@ -31,22 +42,56 @@
 \pagenumbering{arabic}
 \section{概述}
 
-\subsection{宏包特点}
+《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-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域等。
+由于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 易用性
 
-从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解决方案}等文档,以帮助用户更好的入门。
+参考文献是\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 灵活性
 
-biblatex-gb7714-2015宏包除了提供严格遵守GB/T 7714-2015标准的格式外,还通过增加新的用户设置选项,使用户可以根据自己的需求很灵活地调整参考文献表的生成。包括标签的对齐方式(gbalign选项)、出版项缺省时的处理(gbpub选项)、作者缺省时的处理(gbnoauthor选项)、作者姓名格式的调整(gbnamefmt选项)、文献类型和载体标识的输出控制(gbtype选项)、析出文献标识符\texttt{//}控制(gbpunctin选项)、GBK编码文档兼容性(gbcodegbk选项)、域的默认格式还原(gbfieldstd选项)、标题的超链接控制(gbtitlelink选项)、双语对照文献表等。能通过标注和著录分别采用著者-出版年制(即作者年制)、顺序编码制样式实现特殊的参考文献格式,并尽最大可能利用biblatex的选项来实现一些特殊需求,比如文献表中作者数量大于3、标注中仅给出第一作者的姓、参考文献表按拼音或笔画排序等等。
+在考虑实现严格符合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个方面的工作:
@@ -84,13 +129,20 @@
 \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] ($(gbkdef.west)+(-3mm,0mm)$) -- ($(aycbx.west)+(-3mm,28.1mm)$) ;
+\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}};
@@ -115,14 +167,14 @@
 \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-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{最小工作示例}
+\subsection{最小示例}
 
-基于biblatex宏包的参考文献生成方法非常简单,例\ref{code:doc:structrue}是一个最小工作示例。示例代码中给出了详细注释,介绍了使用biblatex时的源文档基本结构,其中gb7714-2015 样式随biblatex宏包加载,另外准备的用于保存参考文献信息的数据库文件example.bib利用addbibresource加载,文献表利用 printbibliography 命令输出(可以在正文任意位置)。所有基于 biblatex 生成参考文献的文档无论大小万变不离其宗。
-关于参考文献数据库文件(*.bib)的信息详见\ref{sec:bib:bibtex}节)。
-需要更深入了解biblatex及其参考文献生成方法可以参考:
+基于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}{中文版}
@@ -165,7 +217,7 @@
 
 \subsection{编译方式}
 
-不同于基于bibtex的传统四步编译法,基于biblatex生成参考文献的文档编译一般只需三步,第一遍xelatex,第二遍biber,第三遍xelatex,但如果需要反向超链接,除设置backref 选项外,还需第四遍xelatex。例\ref{eg:compile:cmd} 给出编译命令,其中--synctex=-1 选项也可以是-synctex=1。而且这四步命令可以用一条命令latexmk -xelatex jobname.tex 代替。前述的最小工作示例的编译结果如图\ref{fig:eg:ref}所示。关于文档采用不同编码及使用pdflatex命令编译的
+不同于基于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}
@@ -244,107 +296,154 @@
 
 \subsection{文献引用及其标注格式}\label{sec:cbx:usage}
 
-要生成参考文献,第一步就是在正文中引用参考文献。引用参考文献在正文中所形成标注的格式称为参考文献标注样式也称引用样式或引用标签样式,分为两类: 顺序编码制和作者年制。引用文献的基本命令\verb|\cite|,但为了一篇文档中实现不同的标签格式,通常还需要使用其它命令,
-比如\verb|\parencite|, \verb|\textcite|, \verb|\pagescite|等。习惯natbib的用户也可以在加载natbib选项后,
-使用\verb|\citet|, \verb|\citep|命令。
+要生成参考文献,第一步就是在正文中引用参考文献。引用参考文献在正文中所形成标注的格式称为参考文献标注样式,也称引用样式或引用标签样式,分为两类: 顺序编码制和著者年份(作者年)制。引用文献的基本命令\verb|\cite|,但为了一篇文档中实现不同的标签效果,通常还需要使用其它命令,
+比如\verb|\parencite|, \verb|\textcite|, \verb|\pagescite|,\verb|\footfullcite|等。习惯natbib的用户也可以在加载natbib选项后,
+可使用\verb|\citet|, \verb|\citep|命令。
 
 %顺序编码制的标注样式文件大体使用标准引用样式numeric-comp的内容
-\paragraph{顺序编码制的标注样式}
+\paragraph{\heiti 顺序编码制的标注样式}
 
-\verb|\cite| 命令为上标模式,\verb|\parencite|保留非上标模式。为满足GB/T 7714-2015第10.1.3节的要求,增加了 \verb|\pagescite| 命令。为使用户免于输入文献作者来作为句子主语,完善了\verb|textcite|命令格式,
+\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{eg:citefornumeric}所示。
+%各引用命令的效果如图\ref{fig:cite:num}所示。
+各引用命令的使用方式如表\ref{tab:cite:num}所示。
 测试文档见\href{run:example/testallformat.tex}{testallformat.tex}。
 
-\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]
+\begin{refsection}
+\begin{table}[!htb]
 \centering
-\deflength{\textparwd}{\linewidth-1cm}
-\parbox{\textparwd}{
-\includegraphics{egcitenum.pdf}
-}
-\end{tcolorbox}
-\caption{顺序编码制标注格式}\label{fig:cite:num}
-\end{figure}
+\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}
 
-其中,当不指定页码时,pagescite命令默认调用参考文献的页码数据进行输出,如果需要指定页码,那么需要在[]内或第二个[]内(当有两个[]时)输入页码。
+%\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}
 
-\qd{对于多个文献一起的压缩形式,指定页码只会应用最后一个参考文献的页码,这是不正确的,但这种情况其实本不应出现,因为指定页码本来就需要具体化指某一文献。使用时请尽可能使用pagescite\{key1\}pagescite\{key2\}这种形式而不是pagescite\{key1,key2\}。}
+其中,当不指定页码时,\verb|\pagescite|命令默认调用参考文献的页码数据进行输出,如果需要指定页码,那么需要在[]内或第二个[]内(当有两个[]时)输入页码。
 
+\qd{对于多个文献一起的压缩形式,指定页码只会应用最后一个参考文献的页码,这是不正确的,但这种情况其实本不应出现,因为指定页码本来就需要具体化指某一文献。使用时请尽可能使用
+\textbackslash pagescite\{key1\}\textbackslash pagescite\{key2\}这种形式
+而不是\textbackslash pagescite\{key1,key2\}|。}
+
 %作者年制的标注样式文件大体使用标准引用样式authoryear的内容。
-\paragraph{作者年制的标注样式} \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}所示。
+\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.9]{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}
+%\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{顺序编码制样式}中各条参考文献条目以数字序号按引用先后顺序组织。著录格式中序号格式见\ref{sec:bib:serialno}节,各类型文献条目的著录格式见\ref{sec:numeric:data}节,参考文献条目中各信息域及其录入方式见\ref{sec:bib:bibtex}节。
+\paragraph{\heiti 顺序编码制样式} 中各条参考文献条目以数字序号按引用先后顺序组织。
+著录格式中序号格式见\ref{sec:bib:serialno}节,
+各类型文献条目的著录格式见\ref{sec:numeric:data}节,
+参考文献条目中各信息域及其录入方式见\ref{sec:bib:bibtex}节。
 
 %作者年制的参考文献样式则基于标准样式authoryear
-\paragraph{作者年制样式}中各条参考文献条目以作者-年为标签以一定的顺序排列。作者年制的著录格式与顺序编码制基本相同(除了把年份提到了作者后面作为文献条目内的标签)。数据源bib文件中各条目的数据录入与顺序编码制完全一致。
+\paragraph{\heiti 作者年制样式} 中各条参考文献条目以作者-年为标签以一定的顺序排列。作者年制的著录格式与顺序编码制基本相同(除了把年份提到了作者后面作为文献条目内的标签)。数据源bib文件中各条目的数据录入与顺序编码制完全一致。
 
 \qd{作者年制有分文种文献集中的要求,因此gb7714-2015排序模板以nyt模板为基础,增加 language 作为 name 前的排序域。默认情况下,本样式文件将标题(或作者)为中文的文献的 language 域设置成 chinese,英文的设置成 english。这一设置过程,在biber 处理时自动完成。当出现问题或者有更多文种分集且有特殊顺序时,可以在bib文件中为相应文种文献的 language 域手动设置适合排序的字符串。比如: 中文文献设置为 chinese,英文文献设置为 enlish,法文文献设置为 french,那么排序中,相应的中文文献排在最前面,英文文献在中间,法文文献最后,因为升序情况下字母顺序是c然后e然后f。}
 
@@ -351,7 +450,10 @@
 %上一段2016-1114更新,下面是以前的说法。
 %\qd{根据文种文献集中的要求,修改了nyt排序格式,增加了userb作为name前的排序域,当有需求进行多文种分集且有特殊顺序时,在bib文件中给相应文种的文献设置适合排序的字符串。比如中文文献设置为cn,英文文献设置为en,法文文献设置为fr,那么排序中,相应的中文文献排在最前面,英文文献在中间,法文文献最后,因为升序情况下字母顺序是c然后e然后f。}
 
-\paragraph{文献表字体、颜色、间距、缩进控制} 为方便用户改变文献表段落格式、内容字体和颜色等,在 biblatex 提供的 \verb|\bibfont| 命令基础上,增加了\verb|\bibauthorfont|、\verb|\bibtitlefont|、\verb|\bibpubfont| 等命令用于控制文献不同部分的格式,比如作者,标题,出版项等。增加了尺寸\verb|\bibitemindent| 用于控制参考文献条目在文献表中的缩进,其意义与 list 环境中 \verb|\itemindent| 相同。
+\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}。
 
@@ -397,10 +499,11 @@
 \caption{文献表段落格式示例}\label{fig:par:fmt}
 \end{figure}
 
-\subsection{文献表条目格式控制}\label{sec:entry:fmt}
+\subsection{文献表条目著录格式控制}\label{sec:entry:fmt}
 
-文献表输出的格式即参考文献著录样式,除了整体的段落格式外,还有条目内部的格式可以控制,这些条目内部的项称为著录项,这些著录项的格式通常由 biblatex 选项来控制。可用选项除了biblatex 提供的标准选项外,也包括样式包提供的选项。
-图\ref{fig:content:fmta}和图\ref{fig:content:fmtb}给出了一些选项设置后的效果,更多选项的详细说明见第\ref{sec:added:opt}、\ref{sec:old:opt}小节。
+文献表输出的格式即参考文献著录样式,除了整体的段落格式外,还有条目内部的格式可以控制,条目内部的这些项称为著录项,这些著录项的格式通常可由选项控制。可用选项除了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 时的文献表,可以看到作者姓名、序号标签、标题超链接的设置。
@@ -636,6 +739,20 @@
   测试文件见:
   \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}
 
 
@@ -1122,7 +1239,7 @@
   页码 & pages\\
   析出文献来源的责任者 & bookauthor\\
   析出文献来源的标题 & booktitle\\
-  连续出版物题名(期刊名) & journal/journaltitle\\
+  连续出版物题名(期刊、报纸) & journal/journaltitle\\
   期刊的卷 & volume\\
   期刊的期/专利号等 & number\\
   获取和访问路径 & url\\
@@ -1170,11 +1287,11 @@
   \item[publisher] 直接输入需要打印的出版者内容,institution,organization域类似
   \item[date] 日期可以格式化输入,格式化输入biblatex 会自动解析,如果无法解析会忽略该域。格式化的输入方式是:
 
-      年-月-日/年-月-日
+      年-月-日/年-月-日,数字格式为:yyyy-mm-dd/yyyy-mm-dd
 
       比如:2001-05-06/2001-08-01
 
-      \emph{特别要注意起止日期之间的分隔符为/而不是- ,因为年月日之间已经存在分隔符- },其中第一个年- 月- 日会解析并存储到year,month,day域中,第二个会解析并存储到endyear,endmonth,endday域中。更多细节参考biblatex 手册的Table 8: Date Interface。
+      \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域相同。
 
@@ -1192,13 +1309,13 @@
   \item[booktitle] 用于析出文献时,作为析出文献来源文献的题名,其输入方式与title 相同。booktitleaddon域输入方式也相同。
   \item[volume] 连续出版物的卷,格式化输入用整数,当有范围时中间用短横线连接,比如:1-4。当无法解析时,输入内容被认为是需要完整打印的内容。
   \item[number] 连续出版物的期或报纸的版次,输入与volume类似。或者是专利等的号时,直接输入需要打印的内容。
-  \item[journal] 用于连续出版物析出文献,表示连续出版物的题名,直接输入需要打印的内容。journaltitle,journalsubtitle域类似处理。
+  \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[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}
 
@@ -1277,8 +1394,9 @@
 详见文档:
 \href{run:./example/stdGBT7714-2015eg.pdf}{GBT7714-2015egstd}。
 
-\section{GB/T 7714-2015 标准说明与实现}
 
+\section{GB/T 7714-2015 标准说明与实现}\label{sec:gbt:std}
+
 \subsection{顺序编码制}
 
 \subsubsection{参考文献表}\label{sec:bib:serialno}
@@ -1292,8 +1410,28 @@
 
 多次引用同一著者的同一文献时,可在序号的方括号外著录该文献引文页码,这一要求与引用(标注)样式无关,需要作者在写文档时使用相应的引用命令并在需要时输入页码信息。针对这一要求,在cite等常用命令基础上,新定义了一个引用命令pagescite,其使用方式详见第\ref{sec:cbx:usage}节。标注样式更详细要求参考GB/T 7714-2015 第10.1节。
 
-如果顺序编码制采用脚注方式,则序号由计算机自动生成圈码。多次引用同一著者的同一文献时,若采用脚注方式应重复著录参考文献(这里可以理解为,采用该方式,同一文献的不同页码的引文就相当于一篇新的引文),只是在参考文献列表中可以简化(当然不进行简化,简单复制后录入对于latex的参考文献处理其实更方便)。事实上对于顺序编码用脚注方式,GB/T 7714-2015并没有详细说明脚注方式到底是什么?从举例看只是序号用类似于脚注的标签,那么对于参考文献样式来说,与非脚注方式的差别仅在于引用和参考文献条目的序号标签的差别,如此是容易通过修改样式文件得到的,但实际使用中除非有特殊要求,否则使用意义不大,因此本样式没有实现该功能。
+如果顺序编码制采用脚注方式,则序号由计算机自动生成圈码。多次引用同一著者的同一文献时,若采用脚注方式应重复著录参考文献,但在参考文献列表中的著录项目可以简化文献序号和页码。
 
+脚注方式的顺序编码制与一般的顺序编码制的主要差别在于:
+一、正文每个文献需要引用均生成脚注文献,因此一个引用命令只能带一个文献引用关键字。且正文中引用的标注标签格式不同,是带圈的上标数字而不是[]包围的数字。
+二、脚注中的文献表即便是遇到相同文献也需要重复输出,但可以简化为序号和页码。
+
+事实上如果不进行简化而只是简单重复输出,对于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{参考文献表}
@@ -1402,6 +1540,8 @@
 
 \bibliofmt{其著录格式为}(参考GB/T 7714-2015第4.4节):\\
 析出文献主要责任者.析出文献题名[文献类型标识/文献载体标识].连续出版物题名:其他题名信息,年,卷(期):页码[引用日期].获取和访问路径.数字对象唯一标识符.
+
+注意:从GB/T 7714-2015第4.4.2节的示例可以看到对于带网址的article在引用日期前可以加上修改更新日期。
 \end{refentry}
 
 其对应的biblatex数据域为:
@@ -1430,7 +1570,7 @@
 \end{texlist}
 \end{example}
 
-\qd{newspaper类型与article类型的差别主要是(1)文献标识码不是J而是N;(2)报纸的日期需要表示到日。}
+\qd{newspaper类型与article类型的差别主要是(1)文献标识码不是J而是N;(2)报纸的日期需要表示到日。(3)报纸不需要修改和更新日期。注意:报纸名应用journal或journaltitle域录入,与article保持一致。}
 
 \subsubsection{专利/patent}
 \begin{refentry}{}{}%[break at=3cm/0pt]
@@ -1461,11 +1601,11 @@
 其对应的biblatex数据域为:
 \begin{example}{电子资源/online/electronic/www条目的域格式}{eg:onlinefieldfmt}
 \begin{texlist}
-author.title[usera].organization,date或year:pages(date/enddate/eventdate)[urldate].url.doi
+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中的出版项信息,此外用date表示更新或修改日期,urldate表示引用(访问)日期。如果出现复杂情况,更新或修改日期还可以利用enddate/eventdate表示。注意修改日期需要表示到日}
+\qd{尽管GB/T 7714-2015中给出的著录格式包含出版地和出版者,但通常情况下具有出版地和出版者的文献会归类到其它条目类型中,至于存在的url信息,只要标识文献载体即可,即一般情况下(出版地:出版者,出版年:引文页码)这些信息很少出现在online[EB]条目中。因此默认情况下,gb7714-2015样式只处理出现organization或instiution中的出版者信息,此外用date表示更新或修改日期,urldate表示引用(访问)日期。如果出现复杂情况,更新或修改日期还可以利用enddate/eventdate表示。注意修改日期需要表示到日}
 
 以上是GB/T 7714-2015直接给出著录格式的条目类型,还有一些类型并没有给出具体格式,但在例子中也有所体现,本样式文件根据这些例子,给出了著录格式。
 
@@ -1516,8 +1656,17 @@
 \end{texlist}
 \end{example}
 
-\qd{因为有的报告文献可能存在类型和报告号信息,比如AIAA 9076或AD 730029等,所以著录格式需要有所体现,而这两个数据体现在type和number两个域中,或者在version域中体现也可,而对于标题中的出现的报告号,可以直接在标题或子标题或者附加标题中体现。report的版本信息放在version域中,而不是book等条目的edition域中。出版项处理与book一样,但当出版项缺省时,且存在网址时,直接省略出版项,且加上修改和更新日期,类似于online类型的处理。}
+\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)。}
@@ -1534,34 +1683,32 @@
 \end{texlist}
 \end{example}
 
- \bc{thesis出版者用institution域表示,体现的是机构而不是一般的出版社。注意:thesis类型的出版项缺失时直接省略。}
+ \bc{由于thesis类型出版项缺失时直接省略,格式与manual一致,借用manual类型输出。}
 
-\subsubsection{手册或档案/manual/archive}
+
+\subsubsection{未出版物/unpublished}
 \begin{refentry}{}{}
-手册和档案采用一种格式,对应的biblatex的entrytype为: manual或archive。文献类型标识用A表示。
+未出版物,对应的biblatex的entrytype为: unpublished。文献类型标识用Z表示。
 
-\bibliofmt{其著录格式为} 借用thesis格式处理,而不是标准样式中的manual格式,这种方式下,当没有出版地和出版者时,完全省略。
+\bibliofmt{其著录格式为} 借用manual格式处理。
 \end{refentry}
 
-
-\subsubsection{未出版物/unpublished}
+\subsubsection{备选类型}
 \begin{refentry}{}{}
-未出版物,对应的biblatex的entrytype为: unpublished。文献类型标识用Z表示。
+备选/其它(misc),文献类型标识用Z表示。
 
-\bibliofmt{其著录格式为} 借用thesis格式处理。
+\bibliofmt{其著录格式为} 当存在网址时直接转换为online类型,由于howpublished域可用于描述一些详细信息,因此不存在网址时,独立作为一种格式处理。
 \end{refentry}
 
 \subsubsection{更多类型}
 \begin{refentry}{}{}
-数据库(database)、数据集(dataset)、软件(software)、舆图(map)、其它(misc)分别使用自己的数据类型和类型标识符。
+数据库(database)标识符(DB)、数据集(dataset)标识符(DS)、软件(software)标识符(CP)、舆图(map)标识符(CM)。
 
-\bibliofmt{其著录格式为} 借用thesis格式处理。
+\bibliofmt{其著录格式为} 借用manual格式处理。
 \end{refentry}
 
 
-\qd{注意:从report类开始的这些类型,当不存在出版项,且存在网址时,都转换为采用online的格式处理。}
 
-
 \subsection{标准的其它细节要求}
 
 除了第\ref{sec:numeric:data}节针对不同条目类型的著录格式要求外,GB/T 7714-2015 还有一些细节规定比如文字、符号等,biblatex-gb7714-2015宏包做如下考虑,
@@ -1689,8 +1836,10 @@
 \subsection{下一步工作}
 
 \begin{enumerate}
-  \item 到目前,无论是基本功能还是附加功能,biblatex-gb7714-2015样式包已经基本够用,剩下的问题可能是一些特殊情况时带来的适应性问题,这需要经过大量的测试来发现问题。如果在使用过程中发现什么问题,请邮件联系作者,非常感谢!
+  \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。

Added: trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex_check.py
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex_check.py	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex_check.py	2019-02-08 22:57:41 UTC (rev 49977)
@@ -0,0 +1,587 @@
+#!/usr/bin/env python
+
+"""
+BibLaTeX check on missing fields and consistent name conventions,
+especially developed for requirements in Computer Science.
+"""
+
+__author__ = "Pez Cuckow"
+__version__ = "0.1.4"
+__credits__ = ["Pez Cuckow", "BibTex Check 0.2.0 by Fabian Beck"]
+__license__ = "MIT"
+__email__ = "email<at>pezcuckow.com"
+
+####################################################################
+# Properties (please change according to your needs)
+####################################################################
+
+# links
+citeulikeUsername = ""  # if no username is profided, no CiteULike links appear
+citeulikeHref = "http://www.citeulike.org/user/" + \
+    citeulikeUsername + "/article/"
+
+libraries = [("Scholar", "http://scholar.google.de/scholar?hl=en&q="),
+             ("Google", "https://www.google.com/search?q="),
+             ("DBLP", "http://dblp.org/search/index.php#query="),
+             ("IEEE", "http://ieeexplore.ieee.org/search/searchresult.jsp?queryText="),
+             ("ACM", "http://dl.acm.org/results.cfm?query="),
+             ]
+
+
+# fields that are required for a specific type of entry
+requiredFields = {"article": ["author", "title", "journaltitle/journal", "year/date"],
+                  "book": ["author", "title", "year/date"],
+                  "mvbook": "book",
+                  "inbook": ["author", "title", "booktitle", "year/date"],
+                  "bookinbook": "inbook",
+                  "suppbook": "inbook",
+                  "booklet": ["author/editor", "title", "year/date"],
+                  "collection": ["editor", "title", "year/date"],
+                  "mvcollection": "collection",
+                  "incollection": ["author", "title", "booktitle", "year/date"],
+                  "suppcollection": "incollection",
+                  "manual": ["author/editor", "title", "year/date"],
+                  "misc": ["author/editor", "title", "year/date"],
+                  "online": ["author/editor", "title", "year/date", "url"],
+                  "patent": ["author", "title", "number", "year/date"],
+                  "periodical": ["editor", "title", "year/date"],
+                  "suppperiodical": "article",
+                  "proceedings": ["title", "year/date"],
+                  "mvproceedings": "proceedings",
+                  "inproceedings": ["author", "title", "booktitle", "year/date"],
+                  "reference": "collection",
+                  "mvreference": "collection",
+                  "inreference": "incollection",
+                  "report": ["author", "title", "type", "institution", "year/date"],
+                  "thesis": ["author", "title", "type", "institution", "year/date"],
+                  "unpublished": ["author", "title", "year/date"],
+
+                  # semi aliases (differing fields)
+                  "mastersthesis": ["author", "title", "institution", "year/date"],
+                  "techreport": ["author", "title", "institution", "year/date"],
+
+                  # other aliases
+                  "conference": "inproceedings",
+                  "electronic": "online",
+                  "phdthesis": "mastersthesis",
+                  "www": "online",
+                  "school": "mastersthesis"
+                  }
+
+####################################################################
+
+import string
+import re
+import sys
+from optparse import OptionParser
+
+# Parse options
+usage = sys.argv[
+    0] + " [-b|--bib=<input.bib>] [-a|--aux=<input.aux>] [-o|--output=<output.html>] [-v|--view] [-h|--help]"
+
+parser = OptionParser(usage)
+
+parser.add_option("-b", "--bib", dest="bibFile",
+                  help="Bib File", metavar="input.bib", default="input.bib")
+
+parser.add_option("-a", "--aux", dest="auxFile",
+                  help="Aux File", metavar="input.aux", default="references.aux")
+
+parser.add_option("-o", "--output", dest="htmlOutput",
+                  help="HTML Output File", metavar="output.html")
+
+parser.add_option("-v", "--view", dest="view", action="store_true",
+                  help="Open in Browser")
+
+parser.add_option("-N", "--no-console", dest="no_console", action="store_true",
+                  help="Do not print problems to console")
+
+(options, args) = parser.parse_args()
+
+# Backporting Python 3 open(encoding="utf-8") to Python 2
+# based on http://stackoverflow.com/questions/10971033/backporting-python-3-openencoding-utf-8-to-python-2
+
+if sys.version_info[0] > 2:
+    # py3k
+    pass
+else:
+    # py2
+    import codecs
+    import warnings
+    reload(sys)
+    sys.setdefaultencoding('utf8')
+    def open(file, mode='r', buffering=-1, encoding=None,
+             errors=None, newline=None, closefd=True, opener=None):
+        if newline is not None:
+            warnings.warn('newline is not supported in py2')
+        if not closefd:
+            warnings.warn('closefd is not supported in py2')
+        if opener is not None:
+            warnings.warn('opener is not supported in py2')
+        return codecs.open(filename=file, mode=mode, encoding=encoding,
+                    errors=errors, buffering=buffering)
+
+### End Backport ###
+
+print("INFO: Reading references from '" + options.bibFile + "'")
+try:
+    fIn = open(options.bibFile, 'r', encoding="utf8")
+except IOError as e:
+    print("ERROR: Input bib file '" + options.bibFile +
+          "' doesn't exist or is not readable")
+    sys.exit(-1)
+
+if options.no_console:
+    print("INFO: Will surpress problems on console")
+
+if options.htmlOutput:
+    print("INFO: Will output HTML to '" + options.htmlOutput + "'"
+        + (" and auto open in the default web browser" if options.view else ""))
+
+# Filter by reference ID's that are used
+usedIds = set()
+if options.auxFile:
+    print("INFO: Filtering by references found in '" + options.auxFile + "'")
+    try:
+        fInAux = open(options.auxFile, 'r', encoding="utf8")
+        for line in fInAux:
+            if line.startswith("\\citation"):
+                ids = line.split("{")[1].rstrip("} \n").split(", ")
+                for id in ids:
+                    if (id != ""):
+                        usedIds.add(id)
+        fInAux.close()
+    except IOError as e:
+        print ("WARNING: Aux file '" + options.auxFile +
+               "' doesn't exist -> not restricting entries")
+
+# Go through and check all references
+completeEntry = ""
+currentId = ""
+ids = []
+currentType = ""
+currentArticleId = ""
+currentTitle = ""
+fields = []
+problems = []
+subproblems = []
+
+counterMissingFields = 0
+counterFlawedNames = 0
+counterWrongTypes = 0
+counterNonUniqueId = 0
+counterWrongFieldNames = 0
+
+removePunctuationMap = dict((ord(char), None) for char in string.punctuation)
+
+for line in fIn:
+    line = line.strip("\n")
+    if line.startswith("@"):
+        if currentId in usedIds or not usedIds:
+            for fieldName, requiredFieldsType in requiredFields.items():
+                if fieldName == currentType.lower():
+                    # alises use a string to point at another set of fields
+                    currentRequiredFields = requiredFieldsType
+                    while isinstance(currentRequiredFields, str):
+                        currentRequiredFields = requiredFields[currentRequiredFields] # resolve alias
+
+                    for requiredFieldsString in currentRequiredFields:
+                        # support for author/editor syntax
+                        typeFields = requiredFieldsString.split('/')
+
+                        # at least one the required fields is not found
+                        if set(typeFields).isdisjoint(fields):
+                            subproblems.append(
+                                "missing field '" + requiredFieldsString + "'")
+                            counterMissingFields += 1
+        else:
+            subproblems = []
+
+        if currentId in usedIds or (currentId and not usedIds):
+            cleanedTitle = currentTitle.translate(removePunctuationMap)
+            problem = "<div id='" + currentId + \
+                "' class='problem severe" + str(len(subproblems)) + "'>"
+            problem += "<h2>" + currentId + " (" + currentType + ")</h2> "
+            problem += "<div class='links'>"
+            if citeulikeUsername:
+                problem += "<a href='" + citeulikeHref + \
+                    currentArticleId + "' target='_blank'>CiteULike</a> |"
+
+            list = []
+            for name, site in libraries:
+                list.append(
+                    " <a href='" + site + cleanedTitle + "' target='_blank'>" + name + "</a>")
+            problem += " | ".join(list)
+
+            problem += "</div>"
+            problem += "<div class='reference'>" + currentTitle
+            problem += "</div>"
+            problem += "<ul>"
+            for subproblem in subproblems:
+                problem += "<li>" + subproblem + "</li>"
+                if not options.no_console:
+                    print("PROBLEM: " + currentId + " - " + subproblem)
+            problem += "</ul>"
+            problem += "<form class='problem_control'><label>checked</label><input type='checkbox' class='checked'/></form>"
+            problem += "<div class='bibtex_toggle'>Current BibLaTex Entry</div>"
+            problem += "<div class='bibtex'>" + completeEntry + "</div>"
+            problem += "</div>"
+            problems.append(problem)
+        fields = []
+        subproblems = []
+        currentId = line.split("{")[1].rstrip(",\n")
+        if currentId in ids:
+            subproblems.append("non-unique id: '" + currentId + "'")
+            counterNonUniqueId += 1
+        else:
+            ids.append(currentId)
+        currentType = line.split("{")[0].strip("@ ")
+        completeEntry = line + "<br />"
+    else:
+        if line != "":
+            completeEntry += line + "<br />"
+        if currentId in usedIds or not usedIds:
+            if "=" in line:
+                # biblatex is not case sensitive
+                field = line.split("=")[0].strip().lower()
+                fields.append(field)
+                value = line.split("=")[1].strip("{} ,\n")
+                if field == "author":
+                    currentAuthor = filter(
+                        lambda x: not (x in "\\\"{}"), value.split(" and ")[0])
+                if field == "citeulike-article-id":
+                    currentArticleId = value
+                if field == "title":
+                    currentTitle = re.sub(r'\}|\{', r'', value)
+
+                ###############################################################
+                # Checks (please (de)activate/extend to your needs)
+                ###############################################################
+
+                # check if type 'proceedings' might be 'inproceedings'
+                if currentType == "proceedings" and field == "pages":
+                    subproblems.append(
+                        "wrong type: maybe should be 'inproceedings' because entry has page numbers")
+                    counterWrongTypes += 1
+
+                # check if abbreviations are used in journal titles
+                if currentType == "article" and (field == "journal" or field == "journaltitle"):
+
+                    if "." in line:
+                        subproblems.append(
+                            "flawed name: abbreviated journal title '" + value + "'")
+                        counterFlawedNames += 1
+
+                # check booktitle format; expected format "ICBAB '13: Proceeding of the 13th International Conference on Bla and Blubb"
+                # if currentType == "inproceedings" and field == "booktitle":
+                    # if ":" not in line or ("Proceedings" not in line and "Companion" not in line) or "." in line or " '" not in line or "workshop" in line or "conference" in line or "symposium" in line:
+                        #subproblems.append("flawed name: inconsistent formatting of booktitle '"+value+"'")
+                        #counterFlawedNames += 1
+
+                 # check if title is capitalized (heuristic)
+                 # if field == "title":
+                    # for word in currentTitle.split(" "):
+                        #word = word.strip(":")
+                        # if len(word) > 7 and word[0].islower() and not  "-" in word and not "_"  in word and not "[" in word:
+                        #subproblems.append("flawed name: non-capitalized title '"+currentTitle+"'")
+                        #counterFlawedNames += 1
+                        # break
+
+                ###############################################################
+
+fIn.close()
+
+
+problemCount = counterMissingFields + counterFlawedNames + counterWrongFieldNames + counterWrongTypes + counterNonUniqueId
+
+# Write out our HTML file
+if options.htmlOutput:
+    html = open(options.htmlOutput, 'w', encoding="utf8")
+    html.write("""<!doctype html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<title>BibLatex Check</title>
+<style>
+body {
+    font-family: Calibri, Arial, Sans;
+    padding: 10px;
+    width: 1030px;
+    margin: 10px auto;
+    border-top: 1px solid black;
+}
+
+#title {
+    width: 720px;
+    border-bottom: 1px solid black;
+}
+
+#title h1 {
+    margin: 10px 0px;
+}
+
+#title h1 a {
+    color: black;
+    text-decoration: none;
+}
+
+#control {
+    clear: both;
+}
+
+#search {
+    float: left;
+}
+
+#search input {
+    width: 300px;
+    font-size: 14pt;
+}
+
+#mode {
+    text-align: right;
+}
+
+#mode label:first-child {
+    font-weight: bold;
+}
+
+#mode input {
+    margin-left: 20px;
+}
+
+.info {
+    margin-top: 10px;
+    padding: 10px;
+    background: #FAFADD;
+    width: 250px;
+    float: right;
+    box-shadow: 1px 1px 1px 1px #ccc;
+    clear: both;
+}
+
+.info h2 {
+    font-size: 12pt;
+    padding: 0px;
+    margin: 0px;
+}
+
+.problem {
+    margin-top: 10px;
+    margin-bottom: 10px;
+    padding: 10px;
+    background: #FFBBAA;
+    counter-increment: problem;
+    width: 700px;
+    border: 1px solid #993333;
+    border-left: 5px solid #993333;
+    box-shadow: 1px 1px 1px 1px #ccc;
+    float: left;
+}
+
+.active {
+    box-shadow: 5px 5px 3px 3px #ccc;
+    position: relative;
+    top: -2px;
+}
+
+.severe0 {
+    background: #FAFAFA;
+    border: 1px solid black;
+    border-left: 5px solid black;
+}
+
+.severe1 {
+    background: #FFEEDD;
+}
+
+.severe2 {
+    background: #FFDDCC;
+}
+
+.severe3 {
+    background: #FFCCBB;
+}
+
+.problem_checked {
+    border: 1px solid #339933;
+    border-left: 5px solid #339933;
+}
+
+.problem h2:before {
+    content: counter(problem) ". "; color: gray;
+}
+
+.problem h2 {
+    font-size: 12pt;
+    padding: 0px;
+    margin: 0px;
+}
+
+.problem .links {
+    float: right;
+    position:relative;
+    top: -22px;
+}
+
+.problem .links a {
+    color: #3333CC;
+}
+
+.problem .links a:visited {
+    color: #666666;
+}
+
+.problem .reference {
+    clear: both;
+    font-size: 9pt;
+    margin-left: 20px;
+    font-style:italic;
+    font-weight:bold;
+}
+
+.problem ul {
+    clear: both;
+}
+
+.problem .problem_control {
+    float: right;
+    margin: 0px;
+    padding: 0px;
+}
+
+.problem .bibtex_toggle{
+    text-decoration: underline;
+    font-size: 9pt;
+    cursor: pointer;
+    padding-top: 5px;
+}
+
+.problem .bibtex {
+    margin-top: 5px;
+    font-family: Monospace;
+    font-size: 8pt;
+    display: none;
+    border: 1px solid black;
+    background-color: #FFFFFF;
+    padding: 5px;
+}
+</style>
+<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
+<script>
+
+function isInProblemMode() {
+    return $('#mode_problems:checked').val() == 'problems'
+}
+
+function update() {
+    $('.problem').hide();
+    $('.problem[id*='+$('#search input').val()+']').show();
+    $('.problem .checked').each(function () {
+        if ($(this).attr('checked')) {
+            $(this).parents('.problem').addClass('problem_checked');
+        } else {
+            $(this).parents('.problem').removeClass('problem_checked');
+        }
+    });
+    if (isInProblemMode()) {
+        $('.severe0').hide();
+        $('.problem_checked').hide();
+    }
+}
+
+$(document).ready(function(){
+
+    $(".bibtex_toggle").click(function(event){
+        event.preventDefault();
+        $(this).next().slideToggle();
+    });
+
+    $('#search input').live('input', function() {
+        update();
+    });
+
+    $('#mode input').change(function() {
+        update();
+    });
+
+    $("#uncheck_button").click(function(){
+        $('.problem .checked').attr('checked',false);
+        localStorage.clear();
+        update();
+    });
+
+    $('.problem a').mousedown(function(event) {
+        $('.problem').removeClass('active');
+        $(this).parents('.problem').addClass('active');
+    });
+
+    $('.problem .checked').change(function(event) {
+        var problem = $(this).parents('.problem');
+        problem.toggleClass('problem_checked');
+        var checked = problem.hasClass('problem_checked');
+        localStorage.setItem(problem.attr('id'),checked);
+        if (checked && isInProblemMode()) {
+            problem.slideUp();
+        }
+    });
+
+    $('.problem .checked').each(function () {
+        $(this).attr('checked',localStorage.getItem($(this).parents('.problem').attr('id'))=='true');
+    });
+    update();
+});
+
+</script>
+</head>
+<body>
+<div id="title">
+<h1><a href='http://github.com/pezmc/BibLatex-Check'>BibLaTeX Check</a></h1>
+<div id="control">
+<form id="search"><input placeholder="search entry ID ..."/></form>
+<form id="mode">
+<label>show entries:</label>
+<input type = "radio"
+                 name = "mode"
+                 id = "mode_problems"
+                 value = "problems"
+                 checked = "checked" />
+          <label for = "mode_problems">problems</label>
+          <input type = "radio"
+                 name = "mode"
+                 id = "mode_all"
+                 value = "all" />
+          <label for = "mode_all">all</label>
+<input type="button" value="uncheck all" id="uncheck_button"></button>
+</form>
+<br style="clear: both; " />
+</div>
+</div>
+""")
+    html.write("<div class='info'><h2>Info</h2><ul>")
+    html.write("<li>bib file: " + options.bibFile + "</li>")
+    html.write("<li>aux file: " + options.auxFile + "</li>")
+    html.write("<li># entries: " + str(len(problems)) + "</li>")
+    html.write("<li># problems: " + str(problemCount) + "</li><ul>")
+    html.write("<li># missing fields: " + str(counterMissingFields) + "</li>")
+    html.write("<li># flawed names: " + str(counterFlawedNames) + "</li>")
+    html.write("<li># wrong types: " + str(counterWrongTypes) + "</li>")
+    html.write("<li># non-unique id: " + str(counterNonUniqueId) + "</li>")
+    html.write("<li># wrong field: " + str(counterWrongFieldNames) + "</li>")
+    html.write("</ul></ul></div>")
+
+    problems.sort()
+    for problem in problems:
+        html.write(problem)
+    html.write("</body></html>")
+    html.close()
+
+    if options.view:
+        import webbrowser
+        webbrowser.open(html.name)
+
+    print("SUCCESS: Report {} has been generated".format(options.htmlOutput))
+
+if problemCount > 0:
+    print("WARNING: Found {} problems.".format(problemCount))
+    sys.exit(-1)


Property changes on: trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex_check.py
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example.bib
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example.bib	2019-02-08 22:56:29 UTC (rev 49976)
+++ trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example.bib	2019-02-08 22:57:41 UTC (rev 49977)
@@ -158,7 +158,7 @@
 }
 
 @book{中国科学技术史--,
-  title  = {中国科学技术史:第2卷~~科学思想史}
+  title  = {中国科学技术史:第2卷~~~~科学思想史}
 }
 
 @article{商鞅战秋菊--,
@@ -166,7 +166,7 @@
 }
 
 @article{中国科学--,
-  title  = {中国科学:D辑~~地球科学}
+  title  = {中国科学:D辑~~~~地球科学}
 }
 
 @Standard{信息与文献--,
@@ -175,7 +175,7 @@
 
 @Standard{全国信息与文献标准化技术委员会2010-2-3,
   author    = {全国信息与文献标准化技术委员会},
-  title     = {信息与文献\ 都柏林核心元数据元素集: GB/T 25100—2010},
+  title     = {信息与文献\ \ \ \ 都柏林核心元数据元素集: GB/T 25100—2010},
   year      = {2010},
   address   = {北京},
   pages     = {2--3},
@@ -968,7 +968,7 @@
   Author                   = {P R BUSECK and NORD, Jr., G L and D R VEBLEN},
   Bookauthor               = {CT PREWITT},
   Booktitle                = {Pyroxense},
-  Date                     = {1980},
+  year                     = {c1980},
   Pages                    = {117-211},
   Publisher                = {Mineralogical Society of America},
   Location                 = {Washington, D.C.}
@@ -1389,7 +1389,7 @@
 
 @Article{Myburg2014-356-362,
   author  = {Myburg, Alexander A. and Grattapaglia, Dario and Tuskan, Gerald A. and others},
-  title   = {The genome of eucalyptus grandis},
+  title   = {The genome of Eucalyptus grandis},
   journal = {Nature},
   year    = {2014},
   date    = {2014-06-19},
@@ -1500,7 +1500,7 @@
   author    = {Morri, I},
   title     = {Why the West Rules for Now: the Patterns of History, and What They Reveal about the Future},
   year      = {2010},
-  publisher = {Farrar, Straus and Giroux},
+  publisher = {{Farrar, Straus and Giroux}},
   address   = {New York},
 }
 
@@ -2123,11 +2123,10 @@
   Author                   = {傅刚 and 赵承 and 李佳路},
   Date                     = {2000-04-12},
   Journaltitle             = {北京青年报},
-  Number                   = {14},
   Note                     = {news},
   Url                      = {http://www.bjyouth.com.cn/Bqb/20000412/GB/4216%5ED0412B1401.htm},
   Urldate                  = {2005-09-28}
-}
+}%  Number                   = {14},
 
 @Newspaper{张田勤2000--,
   Title                    = {犯罪DNA库与生命伦理学计划},
@@ -2480,7 +2479,7 @@
   Address                  = {北京},
   Author                   = {吴云芳},
   Institution              = {北京大学},
-  Url                      = {http://thesis.lib.pku.edu.cn},
+  Url                      = {http://thesis.lib.pku.edu.cn/dlib/List.asp?lang=gb&type=Reader&DocGroupID=4&DoclD=6328},
   Urldate                  = {2013-10-14},
   Year                     = {2003}
 }
@@ -3134,7 +3133,7 @@
   Author                   = {马欢},
   Institution              = {清华大学},
   Pages                    = {27},
-  Url                      = {http://www.cnki.net},
+  Url                      = {http://www.cnki.net/kcms/detail/detail.aspx?dbcode=CDFD&QueryID=.O&CurRec=11&dbname=CDFDLAST2013&.filename=1012035905.nh&uid=WEEvRE­wSIJHSldTTGJhYIJRaEhGUXFQWVB6SGZXeisxdmVhV3Zy2kpoUnozeDElbOpaMONmMjZiQ3p4TUdmcw= },
   Urldate                  = {2013-10-14},
   Year                     = {2011}
 }

Added: trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/gbT7714-2015ms.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/gbT7714-2015ms.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/gbT7714-2015ms.tex	2019-02-08 22:57:41 UTC (rev 49977)
@@ -0,0 +1,13 @@
+\documentclass{article}
+\usepackage{pdfpages}%直接插入pdf文件页
+\graphicspath{{egfigure/}{example/}}
+
+\begin{document}
+
+\includepdf[pages=-]{egfigure/eggbcitationms.pdf}
+
+\includepdf[pages=-]{egfigure/eggbcitationay.pdf}
+
+\includepdf[pages=-]{egfigure/eggbbiblioms.pdf}
+
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/gbT7714-2015ms.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/gbT7714-2015thesis.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/gbT7714-2015thesis.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/gbT7714-2015thesis.tex	2019-02-08 22:57:41 UTC (rev 49977)
@@ -0,0 +1,58 @@
+\documentclass{article}
+\usepackage[colorlinks]{hyperref}
+\usepackage{pdfpages}%直接插入pdf文件页
+\graphicspath{{egfigure/}{example/}}
+
+\begin{document}
+
+\tableofcontents
+
+\newpage
+%\addcontentsline{toc}{section}{BUPT}
+\includepdf[pages=-,addtotoc={1,section,1,BUPT,eg:BUPT}]{egthesis/thesis-bupt-numeric.pdf}
+
+
+%\addcontentsline{toc}{section}{CAU}
+\includepdf[pages=-,addtotoc={1,section,1,CAU,eg:CAU}]{egthesis/thesis-cau-numeric.pdf}
+
+
+%\addcontentsline{toc}{section}{ECNU}
+\includepdf[pages=-,addtotoc={1,section,1,ECNU,eg:ECNU}]{egthesis/thesis-ecnu-numeric.pdf}
+
+
+%\addcontentsline{toc}{section}{FDU}
+\includepdf[pages=-,addtotoc={1,section,1,FDU,eg:FDU}]{egthesis/thesis-fdu-numeric.pdf}
+
+
+%\addcontentsline{toc}{section}{SJTU}
+\includepdf[pages=-,addtotoc={1,section,1,SJTU,eg:SJTU}]{egthesis/thesis-sjtu-numeric.pdf}
+
+
+%\addcontentsline{toc}{section}{THU}
+\includepdf[pages=-,addtotoc={1,section,1,THU,eg:THU}]{egthesis/thesis-thu-numeric.pdf}
+
+
+%\addcontentsline{toc}{section}{UCAS}
+\includepdf[pages=-,addtotoc={1,section,1,UCAS-m,eg:UCASm}]{egthesis/thesis-ucas-m.pdf}
+
+
+%\addcontentsline{toc}{section}{UCAS}
+\includepdf[pages=-,addtotoc={1,section,1,UCAS-x,eg:UCASx}]{egthesis/thesis-ucas-x.pdf}
+
+
+%\addcontentsline{toc}{section}{USTC}
+\includepdf[pages=-,addtotoc={1,section,1,USTC-ay,eg:USTCay}]{egthesis/thesis-ustc-authoryear.pdf}
+
+
+%\addcontentsline{toc}{section}{USTC}
+\includepdf[pages=-,addtotoc={1,section,1,USTC-num,eg:USTCnum}]{egthesis/thesis-ustc-numeric.pdf}
+
+
+%\addcontentsline{toc}{section}{XJTU}
+\includepdf[pages=-,addtotoc={1,section,1,XJTU,eg:XJTU}]{egthesis/thesis-xjtu-numeric.pdf}
+
+
+%\addcontentsline{toc}{section}{ZJU}
+\includepdf[pages=-,addtotoc={1,section,1,ZJU,eg:ZJU}]{egthesis/thesis-zju-numeric.pdf}
+
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/gbT7714-2015thesis.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Deleted: trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makeall.sh
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makeall.sh	2019-02-08 22:56:29 UTC (rev 49976)
+++ trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makeall.sh	2019-02-08 22:57:41 UTC (rev 49977)
@@ -1,23 +0,0 @@
-#!/bin/bash
-# Copyright (c) 2012-2016 hzz
-
-# exec path for tex live 2016
-export PATH=${PATH}:/usr/local/texlive/2016/bin/x86_64-linux
-
-cd ./example
-
-./makeclear.sh
-
-./makefileeg.sh
-
-cd ..
-
-./makeclear.sh
-
-./makefile.sh
-
-#clear aux files
-
-#./makeclear.sh
-
-

Deleted: trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makeclear.sh
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makeclear.sh	2019-02-08 22:56:29 UTC (rev 49976)
+++ trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makeclear.sh	2019-02-08 22:57:41 UTC (rev 49977)
@@ -1,8 +0,0 @@
-#!/bin/bash
-# Copyright (c) 2012-2016 hzz
-
-#clear aux files
-
-rm -r *.aux *.bbl *.blg *.log *.out *.toc *.bcf *.xml *.synctex *.nlo *.nls *.bak *.ind *.idx *.ilg *.lof *.lot *.ent-x *.tmp *.ltx *.los *.lol *.loc *.listing *.gz *.userbak *.nav *.snm *.vrb *.fls *.xdv *.fdb_latexmk
-
-

Deleted: trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makefile.sh
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makefile.sh	2019-02-08 22:56:29 UTC (rev 49976)
+++ trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makefile.sh	2019-02-08 22:57:41 UTC (rev 49977)
@@ -1,21 +0,0 @@
-#!/bin/bash
-# Copyright (c) 2012-2016 hzz
-
-# exec path for tex live 2016
-export PATH=${PATH}:/usr/local/texlive/2016/bin/x86_64-linux
-
-#compile the tex file
-
-./makeclear.sh
-
-xelatex --synctex=-1 biblatex-gb7714-2015.tex
-biber biblatex-gb7714-2015
-xelatex --synctex=-1 biblatex-gb7714-2015.tex
-#to do it again for backref 
-xelatex --synctex=-1 biblatex-gb7714-2015.tex
-
-#clear aux files
-
-#./makeclear.sh
-
-

Deleted: trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/stdGBT7714-2015.pdf
===================================================================
(Binary files differ)

Deleted: trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/stdgbT7714-2015eg.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015-gbk.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015-gbk.def	2019-02-08 22:56:29 UTC (rev 49976)
+++ trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015-gbk.def	2019-02-08 22:57:41 UTC (rev 49977)
@@ -20,3 +20,4 @@
     \def\str at volumecn{\xBE\xED}
     \def\str at numbercn{\xB2\xE1}
     \def\str at serialcn{\xB5\xDA}
+    \def\str at sameentry{ͬ}

Modified: trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx	2019-02-08 22:56:29 UTC (rev 49976)
+++ trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx	2019-02-08 22:57:41 UTC (rev 49977)
@@ -11,7 +11,7 @@
 %
 %   版本和时间信息
 %
-\def\versionofgbtstyle{2019/01/19 v1.0p}
+\def\versionofgbtstyle{2019/02/07 v1.0q}
 \def\versionofbiblatex{\abx at version}
 \ProvidesFile{gb7714-2015.bbx}[\versionofgbtstyle biblatex bibliography style]
 \RequireBiber[3]%显式指定用biber后端
@@ -203,6 +203,73 @@
 %   设置宏包选项
 %=====================================================================
     %
+    %   增加一个选项,用于控制是否实现GB/T 7714-2015标准的脚注文献表
+    %   20190203,v1.0p,hzz
+    %   原理方法:默认做patch,文献引用带圈上标数字表示,脚注中的文献用带圈非上标数字做标签
+    %   当前面的脚注中已经存在当前文献,那么当前文献内容不再输出而用同(4)这样的方式
+    %   需要注意的是由于小页环境和表格中的脚注本身的问题,可能会有一些问题
+    \DeclareBibliographyOption{gbfootbib}[false]{%
+      \ifstrequal{#1}{false}{}{\execgbfootbib}}
+    \ExecuteBibliographyOptions{gbfootbib}
+
+    %%
+    \def\execgbfootbib%
+    {%
+    %开启引用跟踪计数器,为使用\ifciteseen等测试命令
+    \ExecuteBibliographyOptions{citetracker=true}
+    %
+    %利用footmisc宏包来实现脚注文献的悬挂对齐
+    \AtEndPreamble{
+    \@ifclassloaded{beamer}{}{
+    %beamer类因为其特殊性,为避免冲突不调footmisc。
+    %同时footmisc与hyperref宏包也不兼容,所以使用footmisc时会破坏脚注的超链接
+    %如果要实现超链接可以将下句注释掉,这里留着主要是实现悬挂对齐。
+    \PassOptionsToPackage{perpage,hang}{footmisc}
+    \RequirePackage{footmisc}}
+
+    %
+    %使脚注标记加圈并设置数字的字体为tiny,不使用修改thefootnote的方式
+    \def\@makefnmark{\hbox{\@textsuperscript{\textcircled{\tiny\@thefnmark}}}}
+    %做patch使得脚注内容中的脚注数字标签不上标
+    \pretocmd{\@makefntext}{%
+    \def\@makefnmark{%
+    \hbox{\textcircled{\tiny\@thefnmark}}%
+    }%
+    }{}{}
+    }
+
+    %
+    %判断当前文献是否已经引用过且是做的footfullcite(即已经作为脚注输出文献内容)
+    %记录首次输出时的脚注号码,用于后面再次引用该文献时的输出,比如同(4)。
+    \newbibmacro*{citesavefn}{%
+        \ifciteseen%当被引用过为true
+        {\ifcsdef{sec\arabic{refsection}et\thefield{entrykey}}%当已经定义过脚注序号信息
+            {\csgdef{labelsec\arabic{refsection}et\thefield{entrykey}}{%
+    \str at sameentry\gdef\@thefnmark{\csuse{sec\arabic{refsection}et\thefield{entrykey}}}%
+    \@makefnmark%
+            }}%
+            {\csxdef{sec\arabic{refsection}et\thefield{entrykey}}{\arabic{footnote}}}%
+        }%
+        {\csxdef{sec\arabic{refsection}et\thefield{entrykey}}{\arabic{footnote}}}%
+    }
+
+    %
+    %重定义\footfullcite使完成gb7714-2015的脚注文献要求
+    \DeclareCiteCommand{\footfullcite}[\mkbibfootnote]%
+      {\defcounter{maxnames}{\blx at maxbibnames}%局部定义maxnames和minnames计数器
+       \defcounter{minnames}{\blx at minbibnames}%使footfullcite内的作者输出与正文文献表中的一致。
+       \usebibmacro{prenote}}%
+      {\usebibmacro{citesavefn}%
+          \ifcsdef{labelsec\arabic{refsection}et\thefield{entrykey}}%
+          {\csuse{labelsec\arabic{refsection}et\thefield{entrykey}}\nopunct}%
+          {\usedriver{\DeclareNameAlias{sortname}{default}}{\thefield{entrytype}}}%
+      }%
+      {\multicitedelim}%
+      {\addcolon\usebibmacro{postnote}}
+
+    }
+
+    %
     %   增加一个选项,用于控制gb7714的使用范围,即英文文献和中文文献使用不同的样式
     %   20180814,v1.0m,hzz
     %   原理方法:
@@ -251,6 +318,7 @@
     \def\str at volumecn{卷}
     \def\str at numbercn{册}
     \def\str at serialcn{第}
+    \def\str at sameentry{同}
 
     \AtEndOfPackage{%
 	\iftoggle{bbx:codegbk}{%
@@ -578,7 +646,7 @@
     \DefineBibliographyStrings{english}{
         bibliography     = {\str at bibliography},
         references       = {\str at references},
-        bytranslator= {\addcomma\ \str at bytranslator},%\addperiod,%将trans. by 改成 译
+        bytranslator= {\str at bytranslator},%\addperiod,%将trans. by 改成 译\addcomma\
         and         = {\addcomma},%将第2和3人名间的and符号改成逗号,用\finalnamedelim命令也可以定义,参见3.9.1节
         andcn       = {\addcomma},%and本地化字符串的中文对应词
         andincitecn = {\addcomma},%将标注中的分开,便于与文献表中的区分
@@ -646,7 +714,21 @@
 %      同时有version和edition的区别,因此考虑用一种类型来输出,使用manual类型
 %   7. 包括报告,学位论文在内的其它所有的类型,都做一个判断,当没有出版项时,
 %      且存在网址信息时,将其转换为online类型输出,否则都做为manual类型输出。
+%  8. 备选类型misc当存在网址时直接转换为online,由于howpublished域可用于描述
+%      更多的信息,因此不存在网址时,独立做一个备选格式
+%  9. 出版项主要以如下方式处理:
+%     (a) location+institution+date 仅用于连续出版物
+%     (b)publisher+location+date 用于需要完整输出出版项的类型,比如book,collection,proceedings,in*,report
+%     (c)institution+location+date 用于出版项缺失时不输出的类型,包括manual,thesis,archive等其他类型
+%     (d)printlist{insitution} 用于电子资源,仅输出出版者或组织,为数据映射方便,本来默认的organization域转换为用insitution输出。
+%     (e) 不输出,主要用于连续出版物析出的文献
+% 10. 日期以如下方式处理:
+%     date 由于存在biblatex选项,因此通过选项控制,数据源为date解析数据或year
+%     urldate 由于存在biblatex选项,因此通过选项控制,输出到日,且用[]包围,数据源为urldate
+%     newsdate 用于公告日期,公开日期或新闻日期,输出到日,但无包围符号,数据源为date
+%     modifydate 用于更新或修改日期,输出到日,且用()包围,数据源为date或enddate或eventdate
 
+
 \DeclareSourcemap{
 \maps[datatype=bibtex]{%
         \map{
@@ -653,7 +735,8 @@
         \pernottype{inbook}
         \pernottype{inproceedings}
         \pernottype{incollection}
-        \step[notfield=author]%当author不存在,将editor复制给author
+        %注意notfield在低版本biblatex中没有
+        %\step[notfield=author,final]%当author不存在,将editor复制给author
         \step[fieldsource=editor,fieldtarget=author]%并删除editor
         }
          \map{
@@ -660,16 +743,17 @@
          \pernottype{inbook}
         \pernottype{inproceedings}
         \pernottype{incollection}
-        \step[notfield=author]%当author不存在,将translator复制给author
+        %\step[notfield=author,final]%当author不存在,将translator复制给author
         \step[fieldsource=translator,fieldtarget=author]%并删除translator
         }
-         \map{
-        \step[notfield=address]%当address和location同步
+        \map{%让address和location同步,biblatex中address是location的别名
+        %因此输出的时候只有location信息,但处理过程中是可以存在address的。
+        %\step[notfield=address,final]
         \step[fieldsource=location,final]
         \step[fieldset=address,origfieldval]
         }
-        \map{
-        \step[notfield=location]%当address和location同步
+        \map{%让address和location同步
+        %\step[notfield=location,final]
         \step[fieldsource=address,final]
         \step[fieldset=location,origfieldval]
         }
@@ -778,7 +862,7 @@
             \pertype{inproceedings}
             \pertype{conference}%兼容老的conference类型
             \step[fieldset=usera, fieldvalue={C}]
-            \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用institution
+            \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher
             \step[fieldset=publisher, origfieldval]
             \step[fieldsource=editor]%%有时会把editor和bookauthor混淆,处理后使用bookauthor
             \step[fieldset=bookauthor, origfieldval]
@@ -792,7 +876,7 @@
         \map{
             \pertype{incollection}
             \step[fieldset=usera, fieldvalue={G}]
-            \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用institution
+            \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher
             \step[fieldset=publisher, origfieldval]
             \step[fieldsource=editor]%%有时会把editor和bookauthor混淆,处理后使用bookauthor
             \step[fieldset=bookauthor, origfieldval]
@@ -930,8 +1014,10 @@
             \step[fieldset=language,fieldvalue={english}]
             \step[fieldset=langid,fieldvalue={english}]
             }
-	\map{%将非中文的语言放入userd中,以便进行多语言处理
-            \step[fieldsource=language,fieldtarget=userd,final]
+	\map{%将一条文献的主体语言放入userd中,以便进行多语言处理
+            %之所以这么说,是因为一条文献可能是混合语言的,比如作者用的是英文
+            \step[fieldsource=language]
+            \step[fieldset=userd,origfieldval]
             }
 }
 }
@@ -967,7 +1053,11 @@
             }
             \map{%
             \pertype{report}
-            \step[notfield=address,final]%当address不存在则继续
+            %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步
+            \step[fieldset=location,fieldvalue={}]
+            \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online
+            %3.7以上版本用notfield
+            %\step[notfield=address,final]%当address不存在则继续
             \step[fieldsource=url,final]%地址不存在且存在url那么转变为online
             \step[typesource=report,typetarget=online]
             \step[fieldset=note,fieldvalue={report}]
@@ -974,49 +1064,81 @@
             }
             \map{%
             \pertype{thesis}
-            \step[notfield=address,final]%当address不存在则继续
+            %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步
+            \step[fieldset=location,fieldvalue={}]
+            \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online
+            %3.7以上版本用notfield
+            %\step[notfield=address,final]%当address不存在则继续
             \step[fieldsource=url,final]%地址不存在且存在url那么转变为online
             \step[typesource=thesis,typetarget=online]
             }
             \map{%
             \pertype{manual}
-            \step[notfield=address,final]%当address不存在则继续
+            %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步
+            \step[fieldset=location,fieldvalue={}]
+            \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online
+            %3.7以上版本用notfield
+            %\step[notfield=address,final]%当address不存在则继续
             \step[fieldsource=url,final]%地址不存在且存在url那么转变为online
             \step[typesource=manual,typetarget=online]
             }
             \map{%
             \pertype{unpublished}
-            \step[notfield=address,final]%当address不存在则继续
+            %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步
+            \step[fieldset=location,fieldvalue={}]
+            \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online
+            %3.7以上版本用notfield
+            %\step[notfield=address,final]%当address不存在则继续
             \step[fieldsource=url,final]%地址不存在且存在url那么转变为online
             \step[typesource=unpublished,typetarget=online]
             }
             \map{%
             \pertype{database}
-            \step[notfield=address,final]%当address不存在则继续
+            %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步
+            \step[fieldset=location,fieldvalue={}]
+            \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online
+            %3.7以上版本用notfield
+            %\step[notfield=address,final]%当address不存在则继续
             \step[fieldsource=url,final]%地址不存在且存在url那么转变为online
             \step[typesource=databasetypetarget=online]
             }
             \map{%
             \pertype{dataset}
-            \step[notfield=address,final]%当address不存在则继续
+            %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步
+            \step[fieldset=location,fieldvalue={}]
+            \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online
+            %3.7以上版本用notfield
+            %\step[notfield=address,final]%当address不存在则继续
             \step[fieldsource=url,final]%地址不存在且存在url那么转变为online
             \step[typesource=dataset,typetarget=online]
             }
             \map{%
             \pertype{software}
-            \step[notfield=address,final]%当address不存在则继续
+            %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步
+            \step[fieldset=location,fieldvalue={}]
+            \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online
+            %3.7以上版本用notfield
+            %\step[notfield=address,final]%当address不存在则继续
             \step[fieldsource=url,final]%地址不存在且存在url那么转变为online
             \step[typesource=software,typetarget=online]
             }
             \map{%
             \pertype{map}
-            \step[notfield=address,final]%当address不存在则继续
+            %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步
+            \step[fieldset=location,fieldvalue={}]
+            \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online
+            %3.7以上版本用notfield
+            %\step[notfield=address,final]%当address不存在则继续
             \step[fieldsource=url,final]%地址不存在且存在url那么转变为online
             \step[typesource=map,typetarget=online]
             }
             \map{%
             \pertype{archive}
-            \step[notfield=address,final]%当address不存在则继续
+            %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步
+            \step[fieldset=location,fieldvalue={}]
+            \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online
+            %3.7以上版本用notfield
+            %\step[notfield=address,final]%当address不存在则继续
             \step[fieldsource=url,final]%地址不存在且存在url那么转变为online
             \step[typesource=archive,typetarget=online]
             }
@@ -1089,7 +1211,11 @@
             }
             \map{%
             \pertype{report}
-            \step[notfield=address,final]%当address不存在则继续
+            %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步
+            \step[fieldset=location,fieldvalue={}]
+            \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online
+            %3.7以上版本用notfield
+            %\step[notfield=address,final]%当address不存在则继续
             \step[fieldsource=url,final]%地址不存在且存在url那么转变为online
             \step[typesource=report,typetarget=online]
             \step[fieldset=note,fieldvalue={report}]
@@ -1096,49 +1222,81 @@
             }
             \map{%
             \pertype{thesis}
-            \step[notfield=address,final]%当address不存在则继续
+            %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步
+            \step[fieldset=location,fieldvalue={}]
+            \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online
+            %3.7以上版本用notfield
+            %\step[notfield=address,final]%当address不存在则继续
             \step[fieldsource=url,final]%地址不存在且存在url那么转变为online
             \step[typesource=thesis,typetarget=online]
             }
             \map{%
             \pertype{manual}
-            \step[notfield=address,final]%当address不存在则继续
+            %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步
+            \step[fieldset=location,fieldvalue={}]
+            \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online
+            %3.7以上版本用notfield
+            %\step[notfield=address,final]%当address不存在则继续
             \step[fieldsource=url,final]%地址不存在且存在url那么转变为online
             \step[typesource=manual,typetarget=online]
             }
             \map{%
             \pertype{unpublished}
-            \step[notfield=address,final]%当address不存在则继续
+            %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步
+            \step[fieldset=location,fieldvalue={}]
+            \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online
+            %3.7以上版本用notfield
+            %\step[notfield=address,final]%当address不存在则继续
             \step[fieldsource=url,final]%地址不存在且存在url那么转变为online
             \step[typesource=unpublished,typetarget=online]
             }
             \map{%
             \pertype{database}
-            \step[notfield=address,final]%当address不存在则继续
+            %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步
+            \step[fieldset=location,fieldvalue={}]
+            \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online
+            %3.7以上版本用notfield
+            %\step[notfield=address,final]%当address不存在则继续
             \step[fieldsource=url,final]%地址不存在且存在url那么转变为online
             \step[typesource=databasetypetarget=online]
             }
             \map{%
             \pertype{dataset}
-            \step[notfield=address,final]%当address不存在则继续
+            %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步
+            \step[fieldset=location,fieldvalue={}]
+            \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online
+            %3.7以上版本用notfield
+            %\step[notfield=address,final]%当address不存在则继续
             \step[fieldsource=url,final]%地址不存在且存在url那么转变为online
             \step[typesource=dataset,typetarget=online]
             }
             \map{%
             \pertype{software}
-            \step[notfield=address,final]%当address不存在则继续
+            %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步
+            \step[fieldset=location,fieldvalue={}]
+            \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online
+            %3.7以上版本用notfield
+            %\step[notfield=address,final]%当address不存在则继续
             \step[fieldsource=url,final]%地址不存在且存在url那么转变为online
             \step[typesource=software,typetarget=online]
             }
             \map{%
             \pertype{map}
-            \step[notfield=address,final]%当address不存在则继续
+            %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步
+            \step[fieldset=location,fieldvalue={}]
+            \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online
+            %3.7以上版本用notfield
+            %\step[notfield=address,final]%当address不存在则继续
             \step[fieldsource=url,final]%地址不存在且存在url那么转变为online
             \step[typesource=map,typetarget=online]
             }
             \map{%
             \pertype{archive}
-            \step[notfield=address,final]%当address不存在则继续
+            %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步
+            \step[fieldset=location,fieldvalue={}]
+            \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online
+            %3.7以上版本用notfield
+            %\step[notfield=address,final]%当address不存在则继续
             \step[fieldsource=url,final]%地址不存在且存在url那么转变为online
             \step[typesource=archive,typetarget=online]
             }
@@ -1429,10 +1587,11 @@
      %从macro*{bytranslator+othersstrg}%中可以看到当地化字符串格式的引用前的代码处理
      %比如生成cotranslator等用于调用cotranslator所代表的当地化字符串
      \usebibmacro{bytranslator+othersstrg}%“译”的位置换到下面来,即放到译者后面。
-     \setunit*{\addspace}%
+     %\setunit{\addspace}%
      \newunit}%
   \usebibmacro{withothers}}
 
+
 %
 %   修改作者数量超过限定值,做省略时的处理格式
 %   v1.0,20160701,hzz
@@ -1444,11 +1603,16 @@
     test {\ifnumequal{\value{listcount}}{\value{liststop}}}
     and
     test \ifmorenames
-  }{\ifnumgreater{\value{liststop}}{1}
+  }{\ifnumgreater{\value{liststop}}{1}%
        {\finalandcomma}%
        {}%biblatex作者要区别单作者加等的情况,这里为符合gbt7714-2015第7.2节的要求加上了逗号。
 \printdelim{andothersdelim}\printdelim{strandothersdelim}%
-}{}}
+}{%当是译者的时候需要特殊处理:从7.2节看等,译前面加逗号,但从示例看等和译同时出现时,译前的逗号没有,比如:
+%袁训来, 陈哲, 肖书海, 等.
+%胡泳, 范海燕, 译.
+%潘惠霞, 魏婧, 杨艳, 等译.
+\ifcurrentname{translator}{\addcomma}{}%
+}}
 
 
 %
@@ -1471,11 +1635,11 @@
 \iffieldequalstr{userd}{english}{\bibstring{andothers}}{}%
 \iffieldequalstr{userd}{french}{\bibstring{andothers}}{}%
 \iffieldequalstr{userd}{russian}{\bibstring{andothers}}{}%
-}\space%
+}%
   \or%
-  \bibstring{andotherscn}\space%
+  \bibstring{andotherscn}%
   \or%
-  \bibstring{andothers}\space%
+  \bibstring{andothers}%
   \fi}
 
 %
@@ -1925,6 +2089,7 @@
     \printtext{\blx at gbdate{}{}}%%\blx at isodate{}{}%
     }
 
+    %
     \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式
         \ifboolexpr{%
         test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}%
@@ -2074,7 +2239,8 @@
 %   调整页码的格式,即chapter+pages格式
 %
 \renewbibmacro*{chapter+pages}{%
-  \printfield{chapter}%
+\iftoggle{bbx:gbstrict}{}{%
+  \printfield{chapter}}%
   \iffieldundef{pages}{}{%这里增加一个判断,当没有页码时就不输出
   \setunit{\bibpagespunct}%
   \printfield{pages}}%
@@ -2510,6 +2676,8 @@
 \usebibmacro{publisher+location+date}%
 %\newunit\newblock %这里标点去掉
 \usebibmacro{chapter+pages}%
+  \iffieldundef{url}{}{%当没有网址时也不输出
+  \usebibmacro{modifydate}}%带括号的修改或更新日期,
 \usebibmacro{doi+eprint+url}%从下面移动到上面来,因为gbt2015的url需直接放在页码后面。
   \newunit\newblock%
   \printfield{pagetotal}%
@@ -2556,7 +2724,9 @@
 %  \usebibmacro{byeditor+others}%
 %  \newunit
   \usebibmacro{note+pages}%
-  \iffieldequalstr{note}{news}{}{\usebibmacro{modifydate}}%带括号的修改或更新日期,当是新闻时不输出
+  \iffieldequalstr{note}{news}{}{%当是新闻时不输出修改或更新日期
+  \iffieldundef{url}{}{%当没有网址时也不输出
+  \usebibmacro{modifydate}}}%带括号的修改或更新日期,
   \usebibmacro{doi+eprint+url}%从后面移上来,调整url和页码之间的位置
   \newunit\newblock
   \iftoggle{bbx:isbn}
@@ -2681,8 +2851,10 @@
   %\printlist{organization}%
   \printlist{institution}%
   \newunit\newblock
-  %\usebibmacro{date}%
-  \usebibmacro{modifydate}%修改或更新日期,为带括号的时间
+\ifboolexpr{%
+test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}%
+}{\usebibmacro{date}}%
+{\usebibmacro{modifydate}}%修改或更新日期,为带括号的时间
   \usebibmacro{url+urldate}%从下面移上来
   \newunit\newblock
   \iftoggle{bbx:eprint}
@@ -2780,7 +2952,8 @@
   \usebibmacro{institution+location+date}%
   %\newunit\newblock
   \usebibmacro{chapter+pages}%
-  \usebibmacro{modifydate}%修改或更新日期,为带括号的时间
+  \iffieldundef{url}{}{%当没有网址时也不输出修改或更新日期
+  \usebibmacro{modifydate}}%修改或更新日期为带括号的时间
   \usebibmacro{doi+eprint+url}%
   \newunit
   \printfield{pagetotal}%

Modified: trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.cbx	2019-02-08 22:56:29 UTC (rev 49976)
+++ trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.cbx	2019-02-08 22:57:41 UTC (rev 49977)
@@ -7,7 +7,7 @@
 %% Released under the LaTeX Project Public License v1.3c or later
 %% ---------------------------------------------------------------
 %%
-\def\versionofgbtstyle{2019/01/19 v1.0p}
+\def\versionofgbtstyle{2019/02/07 v1.0q}
 \ProvidesFile{gb7714-2015.cbx}[\versionofgbtstyle biblatex citation style]
 
 %
@@ -37,18 +37,31 @@
   \mkbibsuperscript{\mkbibbrackets{#1}}%
 }
 
+%   修改postnote的输出格式
+\DeclareFieldFormat{postnote}{#1}
+
 %
 %   重定义cite命令
 %
 %   方法:\DeclareCiteCommand{\cite}[\mkbibparens]{precode}{loopcode}{sepcode}{postcode}
-\DeclareCiteCommand{\cite}[\mkbibsuperbracket]%利用mkbibsuperbracket添加方括号
-  {\usebibmacro{cite:init}%
+%    v1.0p版后将cite的处理方式修改为类似pagescite,而不再使用biblatex的标准方式
+\DeclareCiteCommand{\cite}[\mkbibsuperscript]%利用mkbibsuperbracket添加方括号
+  {[\usebibmacro{cite:init}%
    \usebibmacro{prenote}}
   {\usebibmacro{citeindex}%
    \usebibmacro{cite:comp}}
   {}
-  {\usebibmacro{cite:dump}%
-   \usebibmacro{postnote}}
+  {\usebibmacro{cite:dump}]%
+   \printfield{postnote}}
+%   v1.0p 以前用的方式
+%\DeclareCiteCommand{\cite}[\mkbibsuperbracket]%利用mkbibsuperbracket添加方括号
+%  {\usebibmacro{cite:init}%
+%   \usebibmacro{prenote}}
+%  {\usebibmacro{citeindex}%
+%   \usebibmacro{cite:comp}}
+%  {}
+%  {\usebibmacro{cite:dump}%
+%   \usebibmacro{postnote}}
 
 %
 %   定义upcite命令
@@ -69,17 +82,28 @@
   {\usebibmacro{cite:dump}}
 
 %
+%   重定义parencite命令,以满足标签带页码的国标要求
+%
+\DeclareCiteCommand{\parencite}%[\mkbibbrackets]
+  {[\usebibmacro{cite:init}%]
+   \usebibmacro{prenote}}%
+  {\usebibmacro{citeindex}%
+   \usebibmacro{cite:comp}}
+  {}
+  {%[
+  \usebibmacro{cite:dump}]%
+   \mkbibsuperscript{\printfield{postnote}}}
+
+%
 %   新定义pagescite命令,以满足标签带页码的国标要求
 %
 %   原理方法:
-%   1.修改postnote的输出格式
-\DeclareFieldFormat{postnote}{#1}
-%   2.新增页码输出宏
+%   1.新增页码输出宏
 \newbibmacro*{postpages}{%
   \iffieldundef{postnote}
     {\printfield[postnote]{pages}}
     {\printfield{postnote}}}
-%   3.新增\pagescite引用命令
+%   2.新增\pagescite引用命令
 \DeclareCiteCommand{\pagescite}[\mkbibsuperscript]%\mkbibbrackets,仍然用上标
   {[\usebibmacro{cite:init}%]直接添加方括号
    \usebibmacro{prenote}%

Modified: trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx	2019-02-08 22:56:29 UTC (rev 49976)
+++ trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx	2019-02-08 22:57:41 UTC (rev 49977)
@@ -10,7 +10,7 @@
 %
 %   版本和时间信息
 %
-\def\versionofgbtstyle{2019/01/19 v1.0p}
+\def\versionofgbtstyle{2019/02/07 v1.0q}
 \def\versionofbiblatex{\abx at version}
 \ProvidesFile{gb7714-2015ay.bbx}[\versionofgbtstyle biblatex bibliography style]
 \RequireBiber[3]%显式指定用biber后端
@@ -200,6 +200,73 @@
 %   设置宏包选项
 %=====================================================================
     %
+    %   增加一个选项,用于控制是否实现GB/T 7714-2015标准的脚注文献表
+    %   20190203,v1.0p,hzz
+    %   原理方法:默认做patch,文献引用带圈上标数字表示,脚注中的文献用带圈非上标数字做标签
+    %   当前面的脚注中已经存在当前文献,那么当前文献内容不再输出而用同(4)这样的方式
+    %   需要注意的是由于小页环境和表格中的脚注本身的问题,可能会有一些问题
+    \DeclareBibliographyOption{gbfootbib}[false]{%
+      \ifstrequal{#1}{false}{}{\execgbfootbib}}
+    \ExecuteBibliographyOptions{gbfootbib}
+
+    %%
+    \def\execgbfootbib%
+    {%
+    %开启引用跟踪计数器,为使用\ifciteseen等测试命令
+    \ExecuteBibliographyOptions{citetracker=true}
+    %
+    %利用footmisc宏包来实现脚注文献的悬挂对齐
+    \AtEndPreamble{
+    \@ifclassloaded{beamer}{}{
+    %beamer类因为其特殊性,为避免冲突不调footmisc。
+    %同时footmisc与hyperref宏包也不兼容,所以使用footmisc时会破坏脚注的超链接
+    %如果要实现超链接可以将下句注释掉,这里留着主要是实现悬挂对齐。
+    \PassOptionsToPackage{perpage,hang}{footmisc}
+    \RequirePackage{footmisc}}
+
+    %
+    %使脚注标记加圈并设置数字的字体为tiny,不使用修改thefootnote的方式
+    \def\@makefnmark{\hbox{\@textsuperscript{\textcircled{\tiny\@thefnmark}}}}
+    %做patch使得脚注内容中的脚注数字标签不上标
+    \pretocmd{\@makefntext}{%
+    \def\@makefnmark{%
+    \hbox{\textcircled{\tiny\@thefnmark}}%
+    }%
+    }{}{}
+    }
+
+    %
+    %判断当前文献是否已经引用过且是做的footfullcite(即已经作为脚注输出文献内容)
+    %记录首次输出时的脚注号码,用于后面再次引用该文献时的输出,比如同(4)。
+    \newbibmacro*{citesavefn}{%
+        \ifciteseen%当被引用过,则为true
+        {\ifcsdef{sec\arabic{refsection}et\thefield{entrykey}}%当已经定义过脚注序号信息
+            {\csgdef{labelsec\arabic{refsection}et\thefield{entrykey}}{%
+             \str at sameentry\xdef\@thefnmark{\csuse{sec\arabic{refsection}et\thefield{entrykey}}}%
+             \@makefnmark}%
+             }%
+            {\csxdef{sec\arabic{refsection}et\thefield{entrykey}}{\arabic{footnote}}}%
+        }%
+        {\csxdef{sec\arabic{refsection}et\thefield{entrykey}}{\arabic{footnote}}}%
+    }
+
+    %
+    %重定义\footfullcite使完成gb7714-2015的脚注文献要求
+    \DeclareCiteCommand{\footfullcite}[\mkbibfootnote]%
+      {\defcounter{maxnames}{\blx at maxbibnames}%局部定义maxnames和minnames计数器
+       \defcounter{minnames}{\blx at minbibnames}%使footfullcite内的作者输出与正文文献表中的一致。
+       \usebibmacro{prenote}}%
+      {\usebibmacro{citesavefn}%
+          \ifcsdef{labelsec\arabic{refsection}et\thefield{entrykey}}%
+          {\csuse{labelsec\arabic{refsection}et\thefield{entrykey}}\nopunct}%
+          {\usedriver{\DeclareNameAlias{sortname}{default}}{\thefield{entrytype}}}%
+      }%
+      {\multicitedelim}%
+      {\addcolon\usebibmacro{postnote}}
+
+    }
+
+    %
     %   增加一个选项,用于控制gb7714的使用范围,即英文文献和中文文献使用不同的样式
     %   20180814,v1.0m,hzz
     %   原理方法:
@@ -248,6 +315,7 @@
     \def\str at volumecn{卷}
     \def\str at numbercn{册}
     \def\str at serialcn{第}
+    \def\str at sameentry{同}
 
     \AtEndOfPackage{%
 	\iftoggle{bbx:codegbk}{%
@@ -548,7 +616,7 @@
     \DefineBibliographyStrings{english}{
         bibliography     = {\str at bibliography},
         references       = {\str at references},
-        bytranslator= {\addcomma\ \str at bytranslator\adddot}, %将trans. by 改成 译
+        bytranslator= {\str at bytranslator\adddot}, %将trans. by 改成 译
         and         = {\addcomma},%将第2和3人名见的and符号改成 逗号,用\finalnamedelim命令也可以定义,参见3.9.1节
         andcn       = {\addcomma},%\str at andcn\ and本地化字符串的中文对应词
         andincitecn = {\addcomma},%将标注中的分开,便于与文献表中的区分
@@ -616,6 +684,19 @@
 %      同时有version和edition的区别,因此考虑用一种类型来输出,使用manual类型
 %   7. 包括报告,学位论文在内的其它所有的类型,都做一个判断,当没有出版项时,
 %      且存在网址信息时,将其转换为online类型输出,否则都做为manual类型输出。
+%  8. 备选类型misc当存在网址时直接转换为online,由于howpublished域可用于描述
+%      更多的信息,因此不存在网址时,独立做一个备选格式
+%  9. 出版项主要以如下方式处理:
+%     (a) location+institution+date 仅用于连续出版物
+%     (b)publisher+location+date 用于需要完整输出出版项的类型,比如book,collection,proceedings,in*,report
+%     (c)institution+location+date 用于出版项缺失时不输出的类型,包括manual,thesis,archive等其他类型
+%     (d)printlist{insitution} 用于电子资源,仅输出出版者或组织,为数据映射方便,本来默认的organization域转换为用insitution输出。
+%     (e) 不输出,主要用于连续出版物析出的文献
+% 10. 日期以如下方式处理:
+%     date 由于存在biblatex选项,因此通过选项控制,数据源为date解析数据或year
+%     urldate 由于存在biblatex选项,因此通过选项控制,输出到日,且用[]包围,数据源为urldate
+%     newsdate 用于公告日期,公开日期或新闻日期,输出到日,但无包围符号,数据源为date
+%     modifydate 用于更新或修改日期,输出到日,且用()包围,数据源为date或enddate或eventdate
 
 \DeclareSourcemap{
 \maps[datatype=bibtex]{
@@ -623,7 +704,7 @@
         \pernottype{inbook}
         \pernottype{inproceedings}
         \pernottype{incollection}
-        \step[notfield=author]%当author不存在,将editor复制给author
+        %\step[notfield=author,final]%当author不存在,将editor复制给author
         \step[fieldsource=editor,fieldtarget=author]%并删除editor
         }
          \map{
@@ -630,16 +711,17 @@
          \pernottype{inbook}
         \pernottype{inproceedings}
         \pernottype{incollection}
-        \step[notfield=author]%当author不存在,将translator复制给author
+        %\step[notfield=author,final]%当author不存在,将translator复制给author
         \step[fieldsource=translator,fieldtarget=author]%并删除translator
         }
-         \map{
-        \step[notfield=address]%当address和location同步
+        \map{%让address和location同步,biblatex中address是location的别名
+        %因此输出的时候只有location信息,但处理过程中是可以存在address的。
+        %\step[notfield=address,final]
         \step[fieldsource=location,final]
         \step[fieldset=address,origfieldval]
         }
-        \map{
-        \step[notfield=location]%当address和location同步
+        \map{%让address和location同步
+        %\step[notfield=location,final]
         \step[fieldsource=address,final]
         \step[fieldset=location,origfieldval]
         }
@@ -901,10 +983,11 @@
             \step[fieldset=language,fieldvalue={english}]
             \step[fieldset=langid,fieldvalue={english}]
             }
-        \map{%将非中文的语言放入userd中,以便进行多语言处理
-            \step[fieldsource=language]%,notmatch={chinese},final
+       	\map{%将一条文献的主体语言放入userd中,以便进行多语言处理
+            %之所以这么说,是因为一条文献可能是混合语言的,比如作者用的是英文
+            \step[fieldsource=language]
             \step[fieldset=userd,origfieldval]
-         }%
+            }
         \map{%尝试未定义数据模型的standard类型映射为其他类型book或inbook,
                  %standard类型在blx-dm中有出现,但仅定义了类型,域和约束等都没有定义
                  %因为可能要映射两种类型,所以不能在驱动层处理,因为要做判断
@@ -928,7 +1011,11 @@
             }
             \map{%
             \pertype{report}
-            \step[notfield=address,final]%当address不存在则继续
+            %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步
+            \step[fieldset=location,fieldvalue={}]
+            \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online
+            %3.7以上版本用notfield
+            %\step[notfield=address,final]%当address不存在则继续
             \step[fieldsource=url,final]%地址不存在且存在url那么转变为online
             \step[typesource=report,typetarget=online]
             \step[fieldset=note,fieldvalue={report}]
@@ -935,49 +1022,81 @@
             }
             \map{%
             \pertype{thesis}
-            \step[notfield=address,final]%当address不存在则继续
+            %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步
+            \step[fieldset=location,fieldvalue={}]
+            \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online
+            %3.7以上版本用notfield
+            %\step[notfield=address,final]%当address不存在则继续
             \step[fieldsource=url,final]%地址不存在且存在url那么转变为online
             \step[typesource=thesis,typetarget=online]
             }
             \map{%
             \pertype{manual}
-            \step[notfield=address,final]%当address不存在则继续
+            %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步
+            \step[fieldset=location,fieldvalue={}]
+            \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online
+            %3.7以上版本用notfield
+            %\step[notfield=address,final]%当address不存在则继续
             \step[fieldsource=url,final]%地址不存在且存在url那么转变为online
             \step[typesource=manual,typetarget=online]
             }
             \map{%
             \pertype{unpublished}
-            \step[notfield=address,final]%当address不存在则继续
+            %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步
+            \step[fieldset=location,fieldvalue={}]
+            \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online
+            %3.7以上版本用notfield
+            %\step[notfield=address,final]%当address不存在则继续
             \step[fieldsource=url,final]%地址不存在且存在url那么转变为online
             \step[typesource=unpublished,typetarget=online]
             }
             \map{%
             \pertype{database}
-            \step[notfield=address,final]%当address不存在则继续
+            %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步
+            \step[fieldset=location,fieldvalue={}]
+            \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online
+            %3.7以上版本用notfield
+            %\step[notfield=address,final]%当address不存在则继续
             \step[fieldsource=url,final]%地址不存在且存在url那么转变为online
             \step[typesource=databasetypetarget=online]
             }
             \map{%
             \pertype{dataset}
-            \step[notfield=address,final]%当address不存在则继续
+            %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步
+            \step[fieldset=location,fieldvalue={}]
+            \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online
+            %3.7以上版本用notfield
+            %\step[notfield=address,final]%当address不存在则继续
             \step[fieldsource=url,final]%地址不存在且存在url那么转变为online
             \step[typesource=dataset,typetarget=online]
             }
             \map{%
             \pertype{software}
-            \step[notfield=address,final]%当address不存在则继续
+            %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步
+            \step[fieldset=location,fieldvalue={}]
+            \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online
+            %3.7以上版本用notfield
+            %\step[notfield=address,final]%当address不存在则继续
             \step[fieldsource=url,final]%地址不存在且存在url那么转变为online
             \step[typesource=software,typetarget=online]
             }
             \map{%
             \pertype{map}
-            \step[notfield=address,final]%当address不存在则继续
+            %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步
+            \step[fieldset=location,fieldvalue={}]
+            \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online
+            %3.7以上版本用notfield
+            %\step[notfield=address,final]%当address不存在则继续
             \step[fieldsource=url,final]%地址不存在且存在url那么转变为online
             \step[typesource=map,typetarget=online]
             }
             \map{%
             \pertype{archive}
-            \step[notfield=address,final]%当address不存在则继续
+            %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步
+            \step[fieldset=location,fieldvalue={}]
+            \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online
+            %3.7以上版本用notfield
+            %\step[notfield=address,final]%当address不存在则继续
             \step[fieldsource=url,final]%地址不存在且存在url那么转变为online
             \step[typesource=archive,typetarget=online]
             }
@@ -1535,7 +1654,7 @@
      %从macro*{bytranslator+othersstrg}%中可以看到当地化字符串格式的引用前的代码处理
      %比如生成cotranslator等用于调用cotranslator所代表的当地化字符串
      \usebibmacro{bytranslator+othersstrg}%“译”的位置换到下面来,即放到译者后面。
-     \setunit{\addspace}%
+     %\setunit{\addspace}%
      \newunit}%
   \usebibmacro{withothers}}
 
@@ -1554,9 +1673,14 @@
     test \ifmorenames
   }{\ifnumgreater{\value{liststop}}{1}%
        {\finalandcomma}%
-       {}%\finalandcomma
+       {}%biblatex作者要区别单作者加等的情况,这里为符合gbt7714-2015第7.2节的要求加上了逗号。
 \printdelim{andothersdelim}\printdelim{strandothersdelim}%
-}{}}
+}{%当是译者的时候需要特殊处理:从7.2节看等,译前面加逗号,但从示例看等和译同时出现时,译前的逗号没有,比如:
+%袁训来, 陈哲, 肖书海, 等.
+%胡泳, 范海燕, 译.
+%潘惠霞, 魏婧, 杨艳, 等译.
+\ifcurrentname{translator}{\addcomma}{}%
+}}
 
 %   修改省略作者后的本地化字符串,比如et al.
 %   v1.0o,20190103,hzz
@@ -1577,11 +1701,11 @@
 \iffieldequalstr{userd}{english}{\bibstring{andothersincite}}{}%
 \iffieldequalstr{userd}{french}{\bibstring{andothers}}{}%
 \iffieldequalstr{userd}{russian}{\bibstring{andothers}}{}%
-}\space%
+}%
   \or%
-  \bibstring{andothersincitecn}\space%
+  \bibstring{andothersincitecn}%
   \or%
-  \bibstring{andothersincite}\space%
+  \bibstring{andothersincite}%
   \fi}
 \DeclareDelimFormat[bib,biblist]{strandothersdelim}{%
   \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
@@ -1595,11 +1719,11 @@
 \iffieldequalstr{userd}{english}{\bibstring{andothers}}{}%
 \iffieldequalstr{userd}{french}{\bibstring{andothers}}{}%
 \iffieldequalstr{userd}{russian}{\bibstring{andothers}}{}%
-}\space%
+}%
   \or%
-  \bibstring{andotherscn}\space%
+  \bibstring{andotherscn}%
   \or%
-  \bibstring{andothers}\space%
+  \bibstring{andothers}%
   \fi}
 
 %
@@ -2188,7 +2312,8 @@
 %   调整页码的格式,即chapter+pages格式
 %
 \renewbibmacro*{chapter+pages}{%
-  \printfield{chapter}%
+\iftoggle{bbx:gbstrict}{}{%
+  \printfield{chapter}}%
   \iffieldundef{pages}{}{%这里增加一个判断,当没有页码时就不输出
   \setunit{\bibpagespunct}%
   \printfield{pages}}%
@@ -2732,6 +2857,8 @@
 \usebibmacro{publisher+location+date}%
 %\newunit\newblock %这里标点去掉
 \usebibmacro{chapter+pages}%
+  \iffieldundef{url}{}{%当没有网址时也不输出
+  \usebibmacro{modifydate}}%带括号的修改或更新日期,
 \usebibmacro{doi+eprint+url}%从下面移动到上面来,因为gbt2015的url需直接放在页码后面。
   \newunit\newblock%
   \printfield{pagetotal}%
@@ -2780,7 +2907,9 @@
 %  \usebibmacro{byeditor+others}%
 %  \newunit
   \usebibmacro{note+pages}%
-  \iffieldequalstr{note}{news}{}{\usebibmacro{modifydate}}%带括号的修改或更新日期,当是新闻时不输出
+  \iffieldequalstr{note}{news}{}{%当是新闻时不输出修改或更新日期
+  \iffieldundef{url}{}{%当没有网址时也不输出
+  \usebibmacro{modifydate}}}%带括号的修改或更新日期,
   \usebibmacro{doi+eprint+url}%从后面移上来,调整url和页码之间的位置
   \newunit\newblock
   \iftoggle{bbx:isbn}
@@ -2904,8 +3033,10 @@
 % \printlist{organization}%
  \printlist{institution}%
   \newunit\newblock
-  %\usebibmacro{date}%
-  \usebibmacro{modifydate}%修改或更新日期,为带括号的时间
+\ifboolexpr{%
+test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}%
+}{\usebibmacro{date}}%
+{\usebibmacro{modifydate}}%修改或更新日期,为带括号的时间
   \usebibmacro{url+urldate}%从下面移上来
   \newunit\newblock
   \iftoggle{bbx:eprint}
@@ -3005,7 +3136,8 @@
   \usebibmacro{institution+location+date}%
   %\newunit\newblock
   \usebibmacro{chapter+pages}%
-  \usebibmacro{modifydate}%修改或更新日期,为带括号的时间
+  \iffieldundef{url}{}{%当没有网址时也不输出修改或更新日期
+  \usebibmacro{modifydate}}%修改或更新日期为带括号的时间
   \usebibmacro{doi+eprint+url}%
   \newunit
   \printfield{pagetotal}%

Modified: trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.cbx	2019-02-08 22:56:29 UTC (rev 49976)
+++ trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.cbx	2019-02-08 22:57:41 UTC (rev 49977)
@@ -7,16 +7,14 @@
 %% Released under the LaTeX Project Public License v1.3c or later
 %% ---------------------------------------------------------------
 %%
-\def\versionofgbtstyle{2019/01/19 v1.0p}
+\def\versionofgbtstyle{2019/02/07 v1.0q}
 \ProvidesFile{gb7714-2015ay.cbx}[\versionofgbtstyle biblatex citation style]
 
 %
 %   加载标准样式
 %
-\RequireCitationStyle{authoryear}
+\RequireCitationStyle{authoryear-comp}
 
-
-
 \ExecuteBibliographyOptions{
   %autocite  = superscript ,
   %autopunct = true       ,
@@ -26,6 +24,7 @@
   uniquename=init,%因为使用了名字缩写选项,所以需要设置uniquename=init而不是full避免冲突
   uniquelist=minyear
 }
+
 %
 %   选项设置,针对3.7以下版本
 %
@@ -63,9 +62,9 @@
 
 %textcite标注命令中的标点设置,注意只针对textcite命令。
 \DeclareDelimFormat[textcite]{nameyeardelim}{}%\addcomma\space
-\DeclareDelimFormat[textcite]{andothersdelim}{\iffieldequalstr{userf}{cn}{\addthinspace}{\addspace}}%
+\DeclareDelimFormat[textcite]{andothersdelim}{\iffieldequalstr{userf}{chinese}{\addthinspace}{\addspace}}%
 \AtEveryCitekey{%
-\iffieldequalstr{userf}{cn}{\renewcommand*{\andothersdelim}{\addthinspace}}%\addthinspace
+\iffieldequalstr{userf}{chinese}{\renewcommand*{\andothersdelim}{\addthinspace}}%\addthinspace
   {\renewcommand*{\andothersdelim}{\addspace}}%
 }
 
@@ -86,32 +85,48 @@
 %   重定义cite命令
 %
 %   方法:\DeclareCiteCommand{\cite}[\mkbibparens]{precode}{loopcode}{sepcode}{postcode}
-\DeclareCiteCommand{\cite}[\mkbibparens]
-  {\usebibmacro{prenote}}
+%    v1.0p版后将cite的处理方式修改为类似pagescite,而不再使用biblatex的标准方式
+\DeclareCiteCommand{\cite}
+  {\usebibmacro{cite:init}%
+  \renewbibmacro*{postnote}{%
+  \iffieldundef{postnote}%
+    {}%
+    {\thefield{postnote}}}%
+    (\usebibmacro{prenote}}%)
   {\usebibmacro{citeindex}%
    \usebibmacro{cite}}
-  {\multicitedelim}
-  {\usebibmacro{postnote}}
+  {}
+  {%(
+  )\mkbibsuperscript{\usebibmacro{postnote}}%\usebibmacro{postnote}
+  }
 
 %
 %   定义upcite命令
 %   20180604,v1.0l,hzz
 %   方法:与yearcite命令相同
-\DeclareCiteCommand{\upcite}
-  {\printtext{(}\usebibmacro{prenote}}
-  {\usebibmacro{cite:labeldate+extradate}}%
-  {\multicitedelim}
+\DeclareCiteCommand{\upcite}%仅输出年份,不要页码
+  {\usebibmacro{cite:init}%
+  \printtext{(}\usebibmacro{prenote}}%
+  {\usebibmacro{cite:labeldate+extradate}}%\printfield{year}\printfield{extrayear}
+  {\multicitedelim}%
   {\printtext{)}}
 
 %
 %   重定义parencite命令
 %
-\DeclareCiteCommand{\parencite}[\mkbibparens]
-  {\usebibmacro{prenote}}
-  {\usebibmacro{citeindex}%
-   \usebibmacro{cite}}
-  {\multicitedelim}
-  {\usebibmacro{postnote}}
+%\DeclareCiteCommand{\parencite}
+%  {\usebibmacro{cite:init}%
+%  \renewbibmacro*{postnote}{%
+%  \iffieldundef{postnote}%
+%    {}%
+%    {\nopunct%
+%     \printfield{postnote}}}%
+%    (\usebibmacro{prenote}}%)
+%  {\usebibmacro{citeindex}%
+%   \usebibmacro{cite}}
+%  {}
+%  {%(
+%  )\mkbibsuperscript{\usebibmacro{postnote}}}
 
 
 %
@@ -118,20 +133,20 @@
 %   新定义pagescite命令,以满足标签带页码的国标要求
 %
 %   原理方法:
-%   1.修改postnote的输出格式
-\newbibmacro*{postpages}{%
-  \iffieldundef{postnote}
-    {\printfield{pages}}
-    {\printfield{postnote}}}
-%   2.新增页码输出宏(括号外的页码格式)
-\DeclareFieldFormat{postnote}{#1}
-%   3.新增\pagescite引用命令
+%   新增\pagescite引用命令
 \DeclareCiteCommand{\pagescite}
-  {\printtext{(}\usebibmacro{prenote}}
+  {\usebibmacro{cite:init}%
+  \renewbibmacro*{postnote}{%
+  \iffieldundef{postnote}%
+    {\thefield{pages}}%
+    {\thefield{postnote}}}%
+    (\usebibmacro{prenote}%)
+    }%
   {\usebibmacro{citeindex}%
    \usebibmacro{cite}}
-  {\multicitedelim}
-  {\printtext{)}\textsuperscript{\usebibmacro{postpages}}}
+  {}
+  {%(
+  )\mkbibsuperscript{\usebibmacro{postnote}}}
 
 %
 %   定义yearpagescite,用于当文中作者已经存在,需要页码和年份的情况
@@ -139,10 +154,15 @@
 %   原理:增加一个命令yearpagescite
 %   参考biblatex.DEF中的\DeclareCiteCommand*{\citeyear}命令
 \DeclareCiteCommand{\yearpagescite}
-  {\printtext{(}\usebibmacro{prenote}}
+  {\usebibmacro{cite:init}%
+  \renewbibmacro*{postnote}{%
+  \iffieldundef{postnote}%
+    {\thefield{pages}}%
+    {\thefield{postnote}}}%
+  \printtext{(}\usebibmacro{prenote}}%
   {\usebibmacro{cite:labeldate+extradate}}%\printfield{year}\printfield{extrayear}
-  {\multicitedelim}
-  {\printtext{)}\textsuperscript{\usebibmacro{postpages}}}
+  {\multicitedelim}%
+  {\printtext{)}\textsuperscript{\usebibmacro{postnote}}}
 
 %
 %   定义yearcite,用于当文中作者已经存在,仅需要年份的情况
@@ -149,9 +169,10 @@
 %
 %   原理:增加一个命令yearcite
 \DeclareCiteCommand{\yearcite}%仅输出年份,不要页码
-  {\printtext{(}\usebibmacro{prenote}}
+  {\usebibmacro{cite:init}%
+  \printtext{(}\usebibmacro{prenote}}%
   {\usebibmacro{cite:labeldate+extradate}}%\printfield{year}\printfield{extrayear}
-  {\multicitedelim}
+  {\multicitedelim}%
   {\printtext{)}}
 
 %
@@ -158,9 +179,16 @@
 %   定义\authornumcite命令,输出作者信息,然后在后面带上顺序编码
 %   20180427,v1.0k,增加,hzz
 %   为与顺序编码制兼容,增加了命令,定义与cite相同
-\DeclareCiteCommand{\authornumcite}[\mkbibparens]
-  {\usebibmacro{prenote}}
+\DeclareCiteCommand{\authornumcite}
+  {\usebibmacro{cite:init}%
+  \renewbibmacro*{postnote}{%
+  \iffieldundef{postnote}%
+    {}%
+    {\thefield{postnote}}}%
+    (\usebibmacro{prenote}}%)
   {\usebibmacro{citeindex}%
    \usebibmacro{cite}}
-  {\multicitedelim}
-  {\usebibmacro{postnote}}
+  {}
+  {%(
+  )\mkbibsuperscript{\usebibmacro{postnote}}%\usebibmacro{postnote}
+  }

Modified: trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ms.bbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ms.bbx	2019-02-08 22:56:29 UTC (rev 49976)
+++ trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ms.bbx	2019-02-08 22:57:41 UTC (rev 49977)
@@ -11,7 +11,7 @@
 %
 %   版本和时间信息
 %
-\def\versionofgbtstyle{2019/01/19 v1.0p}
+\def\versionofgbtstyle{2019/02/07 v1.0q}
 \def\versionofbiblatex{\abx at version}
 \ProvidesFile{gb7714-2015ms.bbx}[\versionofgbtstyle biblatex bibliography style]
 \RequireBiber[3]%显式指定用biber后端
@@ -90,6 +90,73 @@
 %   设置宏包选项
 %=====================================================================
     %
+    %   增加一个选项,用于控制是否实现GB/T 7714-2015标准的脚注文献表
+    %   20190203,v1.0p,hzz
+    %   原理方法:默认做patch,文献引用带圈上标数字表示,脚注中的文献用带圈非上标数字做标签
+    %   当前面的脚注中已经存在当前文献,那么当前文献内容不再输出而用同(4)这样的方式
+    %   需要注意的是由于小页环境和表格中的脚注本身的问题,可能会有一些问题
+    \DeclareBibliographyOption{gbfootbib}[false]{%
+      \ifstrequal{#1}{false}{}{\execgbfootbib}}
+    \ExecuteBibliographyOptions{gbfootbib}
+
+    %%
+    \def\execgbfootbib%
+    {%
+    %开启引用跟踪计数器,为使用\ifciteseen等测试命令
+    \ExecuteBibliographyOptions{citetracker=true}
+    %
+    %利用footmisc宏包来实现脚注文献的悬挂对齐
+    \AtEndPreamble{
+    \@ifclassloaded{beamer}{}{
+    %beamer类因为其特殊性,为避免冲突不调footmisc。
+    %同时footmisc与hyperref宏包也不兼容,所以使用footmisc时会破坏脚注的超链接
+    %如果要实现超链接可以将下句注释掉,这里留着主要是实现悬挂对齐。
+    \PassOptionsToPackage{perpage,hang}{footmisc}
+    \RequirePackage{footmisc}}
+
+    %
+    %使脚注标记加圈并设置数字的字体为tiny,不使用修改thefootnote的方式
+    \def\@makefnmark{\hbox{\@textsuperscript{\textcircled{\tiny\@thefnmark}}}}
+    %做patch使得脚注内容中的脚注数字标签不上标
+    \pretocmd{\@makefntext}{%
+    \def\@makefnmark{%
+    \hbox{\textcircled{\tiny\@thefnmark}}%
+    }%
+    }{}{}
+    }
+
+    %
+    %判断当前文献是否已经引用过且是做的footfullcite(即已经作为脚注输出文献内容)
+    %记录首次输出时的脚注号码,用于后面再次引用该文献时的输出,比如同(4)。
+    \newbibmacro*{citesavefn}{%
+        \ifciteseen%当被引用过为true
+        {\ifcsdef{sec\arabic{refsection}et\thefield{entrykey}}%当已经定义过脚注序号信息
+            {\csgdef{labelsec\arabic{refsection}et\thefield{entrykey}}{%
+    \str at sameentry\gdef\@thefnmark{\csuse{sec\arabic{refsection}et\thefield{entrykey}}}%
+    \@makefnmark%
+            }}%
+            {\csxdef{sec\arabic{refsection}et\thefield{entrykey}}{\arabic{footnote}}}%
+        }%
+        {\csxdef{sec\arabic{refsection}et\thefield{entrykey}}{\arabic{footnote}}}%
+    }
+
+    %
+    %重定义\footfullcite使完成gb7714-2015的脚注文献要求
+    \DeclareCiteCommand{\footfullcite}[\mkbibfootnote]%
+      {\defcounter{maxnames}{\blx at maxbibnames}%局部定义maxnames和minnames计数器
+       \defcounter{minnames}{\blx at minbibnames}%使footfullcite内的作者输出与正文文献表中的一致。
+       \usebibmacro{prenote}}%
+      {\usebibmacro{citesavefn}%
+          \ifcsdef{labelsec\arabic{refsection}et\thefield{entrykey}}%
+          {\csuse{labelsec\arabic{refsection}et\thefield{entrykey}}\nopunct}%
+          {\usedriver{\DeclareNameAlias{sortname}{default}}{\thefield{entrytype}}}%
+      }%
+      {\multicitedelim}%
+      {\addcolon\usebibmacro{postnote}}
+
+    }
+
+    %
     %   增加一个选项,用于控制gb7714的使用范围,即英文文献和中文文献使用不同的样式
     %   20180814,v1.0m,hzz
     %   原理方法:
@@ -137,6 +204,7 @@
     \def\str at volumecn{卷}
     \def\str at numbercn{册}
     \def\str at serialcn{第}
+    \def\str at sameentry{同}
 
     \AtEndOfPackage{%
 	\iftoggle{bbx:codegbk}{%
@@ -380,7 +448,7 @@
     \DefineBibliographyStrings{english}{
         bibliography     = {\str at bibliography},
         references       = {\str at references},
-        bytranslator= {\addcomma\ \str at bytranslator},%\addperiod,%将trans. by 改成 译
+        bytranslator= {\str at bytranslator},%\addperiod,%将trans. by 改成 译
         and         = {\addcomma},%将第2和3人名间的and符号改成逗号,用\finalnamedelim命令也可以定义,参见3.9.1节
         andcn       = {\addcomma},%and本地化字符串的中文对应词
         andincitecn = {\addcomma},%将标注中的分开,便于与文献表中的区分
@@ -448,6 +516,19 @@
 %      同时有version和edition的区别,因此考虑用一种类型来输出,使用manual类型
 %   7. 包括报告,学位论文在内的其它所有的类型,都做一个判断,当没有出版项时,
 %      且存在网址信息时,将其转换为online类型输出,否则都做为manual类型输出。
+%  8. 备选类型misc当存在网址时直接转换为online,由于howpublished域可用于描述
+%      更多的信息,因此不存在网址时,独立做一个备选格式
+%  9. 出版项主要以如下方式处理:
+%     (a) location+institution+date 仅用于连续出版物
+%     (b)publisher+location+date 用于需要完整输出出版项的类型,比如book,collection,proceedings,in*,report
+%     (c)institution+location+date 用于出版项缺失时不输出的类型,包括manual,thesis,archive等其他类型
+%     (d)printlist{insitution} 用于电子资源,仅输出出版者或组织,为数据映射方便,本来默认的organization域转换为用insitution输出。
+%     (e) 不输出,主要用于连续出版物析出的文献
+% 10. 日期以如下方式处理:
+%     date 由于存在biblatex选项,因此通过选项控制,数据源为date解析数据或year
+%     urldate 由于存在biblatex选项,因此通过选项控制,输出到日,且用[]包围,数据源为urldate
+%     newsdate 用于公告日期,公开日期或新闻日期,输出到日,但无包围符号,数据源为date
+%     modifydate 用于更新或修改日期,输出到日,且用()包围,数据源为date或enddate或eventdate
 
 \DeclareSourcemap{
 \maps[datatype=bibtex]{%
@@ -455,7 +536,7 @@
         \pernottype{inbook}
         \pernottype{inproceedings}
         \pernottype{incollection}
-        \step[notfield=author]%当author不存在,将editor复制给author
+        %\step[notfield=author,final]%当author不存在,将editor复制给author
         \step[fieldsource=editor,fieldtarget=author]%并删除editor
         }
          \map{
@@ -462,16 +543,17 @@
          \pernottype{inbook}
         \pernottype{inproceedings}
         \pernottype{incollection}
-        \step[notfield=author]%当author不存在,将translator复制给author
+        %\step[notfield=author,final]%当author不存在,将translator复制给author
         \step[fieldsource=translator,fieldtarget=author]%并删除translator
         }
-        \map{
-        \step[notfield=address]%当address和location同步
+        \map{%让address和location同步,biblatex中address是location的别名
+        %因此输出的时候只有location信息,但处理过程中是可以存在address的。
+        \step[notfield=address,final]%
         \step[fieldsource=location,final]
         \step[fieldset=address,origfieldval]
         }
         \map{
-        \step[notfield=location]%当address和location同步
+        \step[notfield=location,final]%
         \step[fieldsource=address,final]
         \step[fieldset=location,origfieldval]
         }
@@ -732,8 +814,10 @@
             \step[fieldset=language,fieldvalue={english}]
             \step[fieldset=langid,fieldvalue={english}]
             }
-	\map{%将非中文的语言放入userd中,以便进行多语言处理
-            \step[fieldsource=language,fieldtarget=userd,final]
+	\map{%将一条文献的主体语言放入userd中,以便进行多语言处理
+            %之所以这么说,是因为一条文献可能是混合语言的,比如作者用的是英文
+            \step[fieldsource=language]
+            \step[fieldset=userd,origfieldval]
             }
 }
 }
@@ -1101,7 +1185,7 @@
        \ifprefchar{}{\bibnamedelimc}}%
      \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot%
      \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital
-     \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%
+     \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%后缀前加逗号
     {\usebibmacro{name:delim}{#1}%
      \usebibmacro{name:hook}{#1}%
      \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot%
@@ -1112,7 +1196,7 @@
        {}{\revsdnamepunct}%
      \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital
      \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}%
-     \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%
+     \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号
 }
 
 %GB/T 7714-2015 风格,大小写不变,根据bib文件内输入原样输出
@@ -1129,7 +1213,7 @@
        \ifprefchar{}{\bibnamedelimc}}%
      \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{{#1}}}\isdot%
      \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{{#2}}\isdot}%\MakeCapital
-     \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}
+     \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%后缀前加逗号
     {\usebibmacro{name:delim}{#1}%
      \usebibmacro{name:hook}{#1}%
      \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{{#1}}}\isdot%
@@ -1140,7 +1224,7 @@
        {}{\revsdnamepunct}%
      \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{{#2}}\isdot}%\MakeCapital
      \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}
-     \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%
+     \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号
 }
 
 %中文常见风格,汉语拼音全拼模式
@@ -1216,13 +1300,17 @@
     }
 
     \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式
-        \iffieldundef{year}{%
+        \ifboolexpr{%
+        test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}%
+        }%
+        {}%更新或修改日期通常有day信息
+        {\iffieldundef{year}{%
                 \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{(}\printeventdate\printtext{)}}}%
                 {\printtext{(}\printenddate\printtext{)}}%
         }{\iffieldequalstr{year}{}{%因为year存在,但为空
             }{\printtext{(}\blx at gbdate{}{}\printtext{)}}%
          }%
-    }%
+    }}%
 
 
     %
@@ -1303,53 +1391,53 @@
 %设置驱动格式
 %=====================================================================
 
-\AtEveryBibitem{%
-\ifboolexpr{
-togl{bbx:gbstyle} or test {\iffieldequalstr{userd}{chinese}}
-}
-{
-
-\iftoggle{bbx:gbfieldstd}{}{
-\DeclareFieldFormat{title}{#1\adddot\addthinspace}
-\DeclareFieldFormat{journaltitle}{#1\isdot}%添加\isdot用于缩写名带点情况,将其转换为缩写点,便于标点的追踪
-\DeclareFieldFormat{issuetitle}{#1}
-\DeclareFieldFormat{maintitle}{#1}
-\DeclareFieldFormat{booktitle}{#1}
+%中文环境的局部化代码
+\def\localsetchinesecode{%
+\ifboolexpr{%
+togl{bbx:gbstyle} or test {\iffieldequalstr{userd}{chinese}}%
+}%
+{%
+\iftoggle{bbx:gbfieldstd}{}{%
+\DeclareFieldFormat{title}{##1\adddot\addthinspace}%
+\DeclareFieldFormat{journaltitle}{##1\isdot}%添加\isdot用于缩写名带点情况,将其转换为缩写点,便于标点的追踪
+\DeclareFieldFormat{issuetitle}{##1}%
+\DeclareFieldFormat{maintitle}{##1}%
+\DeclareFieldFormat{booktitle}{##1}%
 \DeclareFieldFormat%将期刊等文献的标题中原来带的引号去掉
-  [article,patent,thesis,unpublished]
-  {title}{#1\adddot\addthinspace}%\mkbibquote{#1\isdot}
+  [article,patent,thesis,unpublished]%
+  {title}{##1\adddot\addthinspace}%\mkbibquote{##1\isdot}
 \DeclareFieldFormat%将期刊等文献的标题中原来带的引号去掉
-  [inbook,incollection,inproceedings]
-  {title}{#1}%\nopunct\unspace
-\DeclareFieldFormat{url}{\url{#1}} %%url相关输出,url域修改如本行,源来自biblatex.def
+  [inbook,incollection,inproceedings]%
+  {title}{##1}%\nopunct\unspace
+\DeclareFieldFormat{url}{\url{##1}}%%url相关输出,url域修改如本行,源来自biblatex.def
 %
 %   标题的字母大小写格式修改
 %
 %   注意:修改标题的字母大小写,不能用前面的title的格式而要用titlecase
 %   因为titlecase is applied to the contents of the field directly,title is not
-%\DeclareFieldFormat{titlecase}{\MakeCapital#1}%重设标题格式,将其修改为首字母大写
+%\DeclareFieldFormat{titlecase}{\MakeCapital##1}%重设标题格式,将其修改为首字母大写
 \DeclareFieldFormat{titlecase}{\iftoggle{bbx:titlelink}{%
-\iffieldundef{url}{\MakeCapital#1}{%
-\href{\thefield{url}}{#1}}}{\MakeCapital#1}}%重设标题格式,将其修改为首字母大写
-\DeclareFieldFormat{pages}{#1}%去掉前面引导页码的pp.等字符,\mkpageprefix[bookpagination]{#1}
-}
-
+\iffieldundef{url}{\MakeCapital##1}{%
+\href{\thefield{url}}{##1}}}{\MakeCapital##1}}%重设标题格式,将其修改为首字母大写
+\DeclareFieldFormat{pages}{##1}%去掉前面引导页码的pp.等字符,\mkpageprefix[bookpagination]{##1}
+}%
 %
 %   修改译者位置格式
 %
 %   原理方法:修改来自biblatex.def文件的bytranslator+others宏的格式
 \renewbibmacro*{bytranslator+others}{%
-  \ifnameundef{translator}
-    {}
+  \ifnameundef{translator}%
+    {}%
     {%\usebibmacro{bytranslator+othersstrg}
      %\setunit{\addspace}%
      \printnames[bytranslator]{translator}%
      \clearname{translator}%
+     %从macro*{bytranslator+othersstrg}%中可以看到当地化字符串格式的引用前的代码处理
+     %比如生成cotranslator等用于调用cotranslator所代表的当地化字符串
      \usebibmacro{bytranslator+othersstrg}%“译”的位置换到下面来,即放到译者后面。
-     \setunit*{\addspace}%
+     %\setunit{\addspace}%
      \newunit}%
-  \usebibmacro{withothers}}
-
+  \usebibmacro{withothers}}%
 %
 %   修改作者数量超过限定值,做省略时的处理格式
 %   v1.0,20160701,hzz
@@ -1357,16 +1445,20 @@
 %
 %   原理方法:判断作者或译者是否中文,若中文用字符等,否则用et al. 。
 \renewbibmacro*{name:andothers}{%
-  \ifboolexpr{
-    test {\ifnumequal{\value{listcount}}{\value{liststop}}}
+  \ifboolexpr{%
+    test {\ifnumequal{\value{listcount}}{\value{liststop}}}%
     and
     test \ifmorenames
-  }{\ifnumgreater{\value{liststop}}{1}
+  }{\ifnumgreater{\value{liststop}}{1}%
        {\finalandcomma}%
        {}%biblatex作者要区别单作者加等的情况,这里为符合gbt7714-2015第7.2节的要求加上了逗号。
 \printdelim{andothersdelim}\printdelim{strandothersdelim}%
-}{}}
-
+}{%当是译者的时候需要特殊处理:从7.2节看等,译前面加逗号,但从示例看等和译同时出现时,译前的逗号没有,比如:
+%袁训来, 陈哲, 肖书海, 等.
+%胡泳, 范海燕, 译.
+%潘惠霞, 魏婧, 杨艳, 等译.
+\ifcurrentname{translator}{\addcomma}{}%
+}}%
 %
 %   修改省略作者后的本地化字符串,比如et al.
 %   v1.0o,20190103,hzz
@@ -1387,13 +1479,12 @@
 \iffieldequalstr{userd}{english}{\bibstring{andothers}}{}%
 \iffieldequalstr{userd}{french}{\bibstring{andothers}}{}%
 \iffieldequalstr{userd}{russian}{\bibstring{andothers}}{}%
-  }\space%
+  }%
   \or%
-  \bibstring{andotherscn}\space%
+  \bibstring{andotherscn}%
   \or%
-  \bibstring{andothers}\space%
-  \fi}
-
+  \bibstring{andothers}%
+  \fi}%
 %
 %   修改最后一个作者前的字符串,比如 and
 %   v1.0o,20190103,hzz
@@ -1419,8 +1510,7 @@
   \bibstring{andcn}\space%
   \or%
   \bibstring{and}\space%
-  \fi}
-
+  \fi}%
     %
     %   url和url日期格式
     %
@@ -1430,9 +1520,8 @@
         {}{%\setunit*{\addspace}%
         \usebibmacro{urldate}}%
          \setunit{\addperiod\addspace}%
-         \usebibmacro{url}}
-    \renewbibmacro*{url}{\printfield{url}}
-
+         \usebibmacro{url}}%
+    \renewbibmacro*{url}{\printfield{url}}%
 %
 %   重设title的输出
 %
@@ -1462,16 +1551,13 @@
      %\iffieldundef{booktitle}{\newunit}{}%当title是析出时,不要标点
      %\newunit
 }%
-}}
-
+}}%
 %
 %   日期信息的输出格式,针对biblatex<3.7版本
 %
-\DeclareFieldFormat{urldate}{#1}
+\DeclareFieldFormat{urldate}{##1}%
 \renewbibmacro*{urldate}{%
 \addthinspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx at edtfdate这种更底层的命令
-
-
 %
 %   调整doi+eprint+url格式
 %
@@ -1491,28 +1577,26 @@
   \newunit\newblock
   \iftoggle{bbx:doi}
     {\printfield{doi}}
-    {}}
-
+    {}}%
 %
 %   调整页码的格式,即chapter+pages格式
 %
 \renewbibmacro*{chapter+pages}{%
-  \printfield{chapter}%
+\iftoggle{bbx:gbstrict}{}{%
+  \printfield{chapter}}%
   \iffieldundef{pages}{}{%这里增加一个判断,当没有页码时就不输出
   \setunit{\bibpagespunct}%
   \printfield{pages}}%
   %\newunit %这里的标点去掉
-}
-
+}%
 %
 % 当location等出版项超过maxitem缩减后不再输出etal
 %
 \DeclareListFormat{location}{%
-  \usebibmacro{list:delim}{#1}%
-  #1\isdot}
-\DeclareListAlias{institution}{location}
-\DeclareListAlias{publisher}{location}
-
+  \usebibmacro{list:delim}{##1}%
+  ##1\isdot}%
+\DeclareListAlias{institution}{location}%
+\DeclareListAlias{publisher}{location}%
 %   新增一个样式用于输出连续出版物的地址,单位,时间,
 %   用于periodical连续出版物的出版社和地址的处理
 %
@@ -1546,7 +1630,7 @@
   \setunit*{\addcomma\space}%
   \usebibmacro{date}%
   \newunit}%
-}
+}%
 %
 %   通用的出版社和地址的处理
 %
@@ -1578,10 +1662,7 @@
   \setunit*{\addcomma\space}%
   \usebibmacro{date}%%\newunit
   }%
-}
-
-
-
+}%
 %
 %   修改了一个institution+location+date用于manual、report、thesis等类型
 %
@@ -1596,8 +1677,7 @@
   \setunit*{\addcomma\space}%
   \usebibmacro{date}%
   %\newunit
-  }}
-
+  }}%
 %
 %   对volume卷信息格式做出修改
 %   v1.0o,20190105,hzz
@@ -1605,24 +1685,22 @@
 \DeclareFieldFormat{volume}{%
 \testCJKfirst{userd}%
 \iftoggle{ifCJKforgbt}%
-{\bibstring{serialcn}#1\bibstring{volumecn}}%
-{\bibstring{volume}~#1}%
+{\bibstring{serialcn}##1\bibstring{volumecn}}%
+{\bibstring{volume}~##1}%
 }% volume of a book
-\DeclareFieldFormat[article,periodical]{volume}{#1}% volume of a journal
-
+\DeclareFieldFormat[article,periodical]{volume}{##1}% volume of a journal
 %
 %   对number册信息格式做出修改
 %   v1.0o,20190105,hzz
 %
-\DeclareFieldFormat{number}{#1}%
+\DeclareFieldFormat{number}{##1}%
 \DeclareFieldFormat[book,collection,inbook,%
 incollection,proceedings,inproceedings]{number}{%
 \testCJKfirst{userd}%
 \iftoggle{ifCJKforgbt}%
-{\bibstring{serialcn}#1\bibstring{numbercn}}%
-{#1}%
+{\bibstring{serialcn}##1\bibstring{numbercn}}%
+{##1}%
 }%
-
 %
 %   对edition版本信息格式做出修改
 %
@@ -1629,33 +1707,31 @@
 \DeclareFieldFormat{edition}{%源来自biblatex.DEF
 \testCJKfirst{userd}%
 \iftoggle{ifCJKforgbt}%
-{\ifinteger{#1}%
-{\printtext{#1\str at edition}}%
-{#1\isdot}}%
-{\ifinteger{#1}%
-{\mkbibordedition{#1}~\bibstring{edition}}%
-{#1\isdot}}}
-
+{\ifinteger{##1}%
+{\printtext{##1\str at edition}}%
+{##1\isdot}}%
+{\ifinteger{##1}%
+{\mkbibordedition{##1}~\bibstring{edition}}%
+{##1\isdot}}}%
 %
 %   对version的版本信息做出修改
 %
 \DeclareFieldFormat{version}{%源来自biblatex.DEF
 \testCJKfirst{userd}%
-\ifinteger{#1}%
-{\iftoggle{ifCJKforgbt}{\printtext{#1\str at edition}}%
-{\mkbibordedition{#1}~\bibstring{version}}}%
-{#1\isdot}}
-
+\ifinteger{##1}%
+{\iftoggle{ifCJKforgbt}{\printtext{##1\str at edition}}%
+{\mkbibordedition{##1}~\bibstring{version}}}%
+{##1\isdot}}%
 %
 %   修改析出文献的文集的标题与附加标题间的符号
 %
 \renewbibmacro*{booktitle}{%
-  \ifboolexpr{
+  \ifboolexpr{%
     test {\iffieldundef{booktitle}}
     and
     test {\iffieldundef{booksubtitle}}
-  }
-    {}
+  }%
+    {}%
     {\printtext[booktitle]{\bibtitlefont%
        \printfield[titlecase]{booktitle}%
        \setunit{\subtitlepunct}%
@@ -1662,8 +1738,7 @@
        \printfield[titlecase]{booksubtitle}}%
      \newunit%标点换成下一句
      \setunit{\subtitlepunct}}%
-  \printfield{booktitleaddon}}
-
+  \printfield{booktitleaddon}}%
 %
 %   调整期刊名的格式
 %
@@ -1686,8 +1761,7 @@
   \usebibmacro{issue}%
   \usebibmacro{volume+number+eid}%把卷期放到年份后面
   %\newunit
-  }
-
+  }%
 %
 %   调整期刊卷和期的格式
 %
@@ -1704,8 +1778,7 @@
   \iffieldundef{number}{}{\printtext{\mkbibparens{\printfield{number}}}}%增加一个圆括号
   \iffieldundef{eid}{}{%
   \setunit{\addcomma\space}%
-  \printfield{eid}}}}
-
+  \printfield{eid}}}}%
 %
 %   调整期刊年份的格式
 %
@@ -1725,8 +1798,7 @@
                                      {\usebibmacro{date}}%
         }}}%
   %\newunit
-  }
-
+  }%
 %
 %   调整页码前的标点和去掉期刊文章等页码后面的标点
 %
@@ -1736,9 +1808,7 @@
   \setunit{\bibpagespunct}%
   \printfield{pages}}%
   %\newunit
-  }
-
-
+  }%
 %
 %   编者的符号修改一下
 %
@@ -1754,8 +1824,7 @@
     {\setunit{\addcomma\space}%
      \usebibmacro{editorstrg}}%
      \clearname{editor}}
-    {}}
-
+    {}}%
 %
 %   编者类型做一修改
 %
@@ -1780,14 +1849,13 @@
             {\bibstring{\thefield{editortype}s}}
             {\bibstring{\thefield{editortype}}}}
          {\thefield{editortype}}}%
-         }}
-
+         }}%
 %
 %   修改期刊的标题
 %
 \renewbibmacro*{periodical}{%源来自biblatex.DEF
   \iffieldundef{title}
-    {}
+    {}%
     {\printtext[title]{\bibtitlefont%
        \printfield[titlecase]{title}%
        %\setunit{\subtitlepunct}%
@@ -1797,10 +1865,9 @@
        %}%把编组结束移到后面去
        \iftoggle{bbx:gbtype}{%
        \iffieldundef{usera}{}{%在标题后直接给出文献标识字母
-        \printfield[gbtypeflag]{usera}}}{}
-       }}
-       }
-
+        \printfield[gbtypeflag]{usera}}}{}%
+       }}%
+       }%
 %
 %   期刊的标题做修改
 %
@@ -1809,7 +1876,7 @@
   %\setunit*{\addspace}%
   \setunit*{\adddot\addspace}%标点修改为句点
   \iffieldundef{series}
-    {}
+    {}%
     {\newunit
      \printfield{series}%
      \setunit{\addspace}}%
@@ -1840,9 +1907,7 @@
   %\usebibmacro{issue+date}%
   %\setunit{\addcolon\space}%
   \usebibmacro{issue}%
-  \newunit}
-
-
+  \newunit}%
 %
 %   修改in:用于inbook、incollection、inproceedings等类型
 %   2018.04.20,v1.0k,renewed marco,by hzz
@@ -1851,7 +1916,6 @@
 \renewbibmacro*{in:}{%
  \iftoggle{bbx:gbpunctin}{\printtext{\texttt{//}\allowbreak}}%\addthinspace
                          {\setunit{\adddot\addspace}\printtext{\bibstring{in}}}}%\newunit\newblock\intitlepunct
-
 %
 %   book条目类的驱动
 %
@@ -1886,6 +1950,8 @@
 \usebibmacro{publisher+location+date}%
 %\newunit\newblock %这里标点去掉
 \usebibmacro{chapter+pages}%
+  \iffieldundef{url}{}{%当没有网址时也不输出
+  \usebibmacro{modifydate}}%带括号的修改或更新日期,
 \usebibmacro{doi+eprint+url}%从下面移动到上面来,因为gbt2015的url需直接放在页码后面。
   \newunit\newblock%
   \printfield{pagetotal}%
@@ -1904,9 +1970,7 @@
     {\usebibmacro{related:init}%
      \usebibmacro{related}}
     {}%
-  \usebibmacro{finentry}}
-
-
+  \usebibmacro{finentry}}%
 %
 %   期刊文章,连续出版物中的析出文献的格式
 %
@@ -1932,7 +1996,9 @@
 %  \usebibmacro{byeditor+others}%
 %  \newunit
   \usebibmacro{note+pages}%
-  \iffieldequalstr{note}{news}{}{\usebibmacro{modifydate}}%带括号的修改或更新日期,当是新闻时不输出
+  \iffieldequalstr{note}{news}{}{%当是新闻时不输出修改或更新日期
+  \iffieldundef{url}{}{%当没有网址时也不输出
+  \usebibmacro{modifydate}}}%带括号的修改或更新日期,
   \usebibmacro{doi+eprint+url}%从后面移上来,调整url和页码之间的位置
   \newunit\newblock
   \iftoggle{bbx:isbn}
@@ -1949,10 +2015,7 @@
     {\usebibmacro{related:init}%
      \usebibmacro{related}}
     {}%
-  \usebibmacro{finentry}}
-
-
-
+  \usebibmacro{finentry}}%
 %
 %   连续出版物的驱动
 %
@@ -1987,8 +2050,7 @@
     {\usebibmacro{related:init}%
      \usebibmacro{related}}
     {}%
-  \usebibmacro{finentry}}
-
+  \usebibmacro{finentry}}%
 %
 %   专利文献驱动
 %
@@ -2030,9 +2092,7 @@
     {\usebibmacro{related:init}%
      \usebibmacro{related}}
     {}%
-  \usebibmacro{finentry}}
-
-
+  \usebibmacro{finentry}}%
 %
 %   在线文献驱动
 %
@@ -2057,8 +2117,10 @@
 %\printlist{organization}%
   \printlist{institution}%
   \newunit\newblock
-  %\usebibmacro{date}%
-  \usebibmacro{modifydate}%修改或更新日期,为带括号的时间
+\ifboolexpr{%
+test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}%
+}{\usebibmacro{date}}%
+{\usebibmacro{modifydate}}%修改或更新日期,为带括号的时间
   \usebibmacro{url+urldate}%从下面移上来
   \newunit\newblock
   \iftoggle{bbx:eprint}
@@ -2075,10 +2137,7 @@
     {\usebibmacro{related:init}%
      \usebibmacro{related}}
     {}%
-  \usebibmacro{finentry}}
-
-
-
+  \usebibmacro{finentry}}%
 %
 %   报告类型驱动
 %   2016-11-11,增加了译者信息
@@ -2126,8 +2185,7 @@
     {\usebibmacro{related:init}%
      \usebibmacro{related}}
     {}%
-  \usebibmacro{finentry}}
-
+  \usebibmacro{finentry}}%
 %
 %   手册类型驱动
 %   2016-11-11,增加了译者信息
@@ -2158,7 +2216,8 @@
   \usebibmacro{institution+location+date}%
   %\newunit\newblock
   \usebibmacro{chapter+pages}%
-  \usebibmacro{modifydate}%修改或更新日期,为带括号的时间
+  \iffieldundef{url}{}{%当没有网址时也不输出修改或更新日期
+  \usebibmacro{modifydate}}%修改或更新日期为带括号的时间
   \usebibmacro{doi+eprint+url}%
   \newunit
   \printfield{pagetotal}%
@@ -2177,8 +2236,7 @@
     {\usebibmacro{related:init}%
      \usebibmacro{related}}
     {}%
-  \usebibmacro{finentry}}
-
+  \usebibmacro{finentry}}%
 %
 %   备选类型驱动
 %
@@ -2218,9 +2276,7 @@
     {\usebibmacro{related:init}%
      \usebibmacro{related}}
     {}%
-  \usebibmacro{finentry}}
-
-
+  \usebibmacro{finentry}}%
 %
 %   专著中的析出文献的格式修改
 %
@@ -2274,10 +2330,9 @@
     {\usebibmacro{related:init}%
      \usebibmacro{related}}
     {}%
-  \usebibmacro{finentry}}
+  \usebibmacro{finentry}}%
+}{}%
+}
 
-
-
-
-}{}
-}
+\AtEveryBibitem{\localsetchinesecode}%
+\AtEveryCite{\localsetchinesecode}%

Modified: trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ms.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ms.cbx	2019-02-08 22:56:29 UTC (rev 49976)
+++ trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ms.cbx	2019-02-08 22:57:41 UTC (rev 49977)
@@ -7,7 +7,7 @@
 %% Released under the LaTeX Project Public License v1.3c or later
 %% ---------------------------------------------------------------
 %%
-\def\versionofgbtstyle{2019/01/19 v1.0p}
+\def\versionofgbtstyle{2019/02/07 v1.0q}
 \ProvidesFile{gb7714-2015.cbx}[\versionofgbtstyle biblatex citation style]
 
 %
@@ -37,18 +37,31 @@
   \mkbibsuperscript{\mkbibbrackets{#1}}%
 }
 
+%   修改postnote的输出格式
+\DeclareFieldFormat{postnote}{#1}
+
 %
 %   重定义cite命令
 %
 %   方法:\DeclareCiteCommand{\cite}[\mkbibparens]{precode}{loopcode}{sepcode}{postcode}
-\DeclareCiteCommand{\cite}[\mkbibsuperbracket]%利用mkbibsuperbracket添加方括号
-  {\usebibmacro{cite:init}%
+%    v1.0p版后将cite的处理方式修改为类似pagescite,而不再使用biblatex的标准方式
+\DeclareCiteCommand{\cite}[\mkbibsuperscript]%利用mkbibsuperbracket添加方括号
+  {[\usebibmacro{cite:init}%
    \usebibmacro{prenote}}
   {\usebibmacro{citeindex}%
    \usebibmacro{cite:comp}}
   {}
-  {\usebibmacro{cite:dump}%
-   \usebibmacro{postnote}}
+  {\usebibmacro{cite:dump}]%
+   \printfield{postnote}}
+%   v1.0p 以前用的方式
+%\DeclareCiteCommand{\cite}[\mkbibsuperbracket]%利用mkbibsuperbracket添加方括号
+%  {\usebibmacro{cite:init}%
+%   \usebibmacro{prenote}}
+%  {\usebibmacro{citeindex}%
+%   \usebibmacro{cite:comp}}
+%  {}
+%  {\usebibmacro{cite:dump}%
+%   \usebibmacro{postnote}}
 
 %
 %   定义upcite命令
@@ -69,17 +82,28 @@
   {\usebibmacro{cite:dump}}
 
 %
+%   重定义parencite命令,以满足标签带页码的国标要求
+%
+\DeclareCiteCommand{\parencite}%[\mkbibbrackets]
+  {[\usebibmacro{cite:init}%]
+   \usebibmacro{prenote}}%
+  {\usebibmacro{citeindex}%
+   \usebibmacro{cite:comp}}
+  {}
+  {%[
+  \usebibmacro{cite:dump}]%
+   \mkbibsuperscript{\printfield{postnote}}}
+
+%
 %   新定义pagescite命令,以满足标签带页码的国标要求
 %
 %   原理方法:
-%   1.修改postnote的输出格式
-\DeclareFieldFormat{postnote}{#1}
-%   2.新增页码输出宏
+%   1.新增页码输出宏
 \newbibmacro*{postpages}{%
   \iffieldundef{postnote}
     {\printfield[postnote]{pages}}
     {\printfield{postnote}}}
-%   3.新增\pagescite引用命令
+%   2.新增\pagescite引用命令
 \DeclareCiteCommand{\pagescite}[\mkbibsuperscript]%\mkbibbrackets,仍然用上标
   {[\usebibmacro{cite:init}%]直接添加方括号
    \usebibmacro{prenote}%
@@ -103,6 +127,8 @@
   {\usebibmacro{cite:dump}]%
    \usebibmacro{postpages}}
 
+
+
 %
 %   定义\yearcite命令,为与ay样式兼容,且提供不输出页码的标签格式,
 %



More information about the tex-live-commits mailing list