diff options
85 files changed, 3871 insertions, 1987 deletions
diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/README.md b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/README.md index 1397ff9f037..2361684f8a7 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/README.md +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/README.md @@ -1,4 +1,4 @@ -<b>Date of last change:2017-04-11 to version v1.0h</b> +<b>Date of last change:2017-11-21 to version v1.0i</b> # biblatex-gb7714-2015: a biblatex style package @@ -13,47 +13,130 @@ Homepage: <https://github.com/hushidong/biblatex-gb7714-2015> License: LaTeX Project Public License 1.3 or later -A biblatex implementation of the GBT7714-2015 bibliography style for Chinese users +A biblatex implementation of the GB/T7714-2015 bibliography style for Chinese users -The biblatex-gb7714-2015 package provides an implementation of the bibliography style of the GBT7714-2015 bibliography style. This implementation follows GBT7714-2015 standard, and can be used simply by loading biblatex with the appropriate option +The biblatex-gb7714-2015 package provides an implementation of the bibliography style of the GB/T7714-2015 bibliography style. This implementation follows GB/T7714-2015 standard, and can be used simply by loading biblatex with the appropriate option ## usage -%for numerical sequence style +* for numerical sequence style - `\usepackage[backend=biber,style=gb7714-2015]{biblatex}` + `\usepackage[backend=biber,style=gb7714-2015]{biblatex}` - %add an option "align" for the numerical label, option value maybe "right" or "left" or "gb7714-2015" + - add an option "align" for the numerical label, option value maybe "right" or "left" or "gb7714-2015" - `\usepackage[backend=biber,style=gb7714-2015,align=gb7714-2015]{biblatex}` + `\usepackage[backend=biber,style=gb7714-2015,align=gb7714-2015]{biblatex}` - %add an option "gbpub" for dealing publishing items, option value = "true" for gb7714 style or "false" for standard style. + - add an option "gbpub" for dealing publishing items, option value = "true" for gb7714 style or "false" for standard style. - `\usepackage[backend=biber,style=gb7714-2015,gbpub=true]{biblatex}` + `\usepackage[backend=biber,style=gb7714-2015,gbpub=true]{biblatex}` -%for author year style +* for author year style - `\usepackage[backend=biber,style=gb7714-2015ay,gbpub=true]{biblatex}` + `\usepackage[backend=biber,style=gb7714-2015ay,gbpub=true]{biblatex}` - %add an option "gbnoauthor" for dealing undefined author, option value = "true" for gb7714 style or "false" for standard style. + - add an option "gbnoauthor" for dealing undefined author, option value = "true" for gb7714 style or "false" for standard style. - `\usepackage[backend=biber,style=gb7714-2015ay,gbnoauthor=true]{biblatex}` + `\usepackage[backend=biber,style=gb7714-2015ay,gbnoauthor=true]{biblatex}` -%for perl script transformation tool(only for the numerical style) +* for perl script transformation tool(only for the numerical style) - `perl gb7714texttobib.pl in=textfilename out=bibfilename` + `perl gb7714texttobib.pl in=textfilename out=bibfilename` A demonstration database is provided to show how to format input for the style. The biblatex-gb7714-2015 style works with texlive2014, texlive2015, texlive2016, texlive2017 and so on. -please see the file 'biblatex-gb7714-2015.pdf' for more information! +please see the file 'biblatex-gb7714-2015.pdf' for further information! + +--------------------------------------------------------- + +## tutorial/使用入门 + +### 1. Tex source file/tex文档一般结构 + + \documentclass{article}%文档类%导言区开始: + + \usepackage{ctex}%加载ctex宏包,中文支持 + \usepackage[left=20mm,right=20mm,top=25mm, bottom=15mm]{geometry}%加载geometry宏包,定义版面 + \usepackage[colorlinks=true,pdfstartview=FitH,linkcolor=blue,anchorcolor=violet,citecolor=magenta]{hyperref}%加载hyperref宏包,使用超链接 + + %加载biblatex宏包,使用参考文献 + %其中后端backend使用biber + %引用样式citestyle,著录样式bibstyle都采用gb7714-2015样式 + \usepackage[backend=biber,bibstyle=gb7714-2015,%nature,% + citestyle=gb7714-2015%,backref=true% + ]{biblatex} + %biblatex宏包的参考文献数据源加载方式 + \addbibresource[location=local]{example.bib} + + + \begin{document}%正文区开始: + + %正文内容,引用参考文献 + 不带页码的引用(上标,方括号包围): + \cite{Peebles2001-100-100} + 不带页码的引用(非上标,方括号包围): + \parencite{Miroslav2004--} + 带页码的引用: + \cite[见][49页]{蔡敏2006--} \parencite[见][49页]{Miroslav2004--} + \pagescite{Peebles2001-100-100} \pagescite[][201-301]{Peebles2001-100-100} + 作者年制文中已有作者只需要年份和页码的情况,使用命令yearpagescite,比如: + 见赵耀东\yearpagescite[][205]{赵耀东1998--}和Simon\yearpagescite[][15]{Simon2001--}的文献。 + 在页脚中引用和打印文献表: + \footnote{在脚注中引用\footcite{赵学功2001--}} \footfullcite{赵学功2001--} + + + %打印参考文献表 + \printbibliography[heading=bibliography,title=参考文献] + \end{document} + +### 2. Compile method/文档编译方式 + + xelatex jobname.tex + biber jobname + xelatex jobname.tex + xelatex jobname.tex + +### 3. Recommended environment/推荐使用环境 + + Texlive+Winedt + Texlive+Texstudio + +### 4. Examples/著录和标注结果示例 +* 顺序编码制 + +![示例a](egaligngb7714-2015.jpg) + +* 作者年制 + +![示例b](egaligngb7714-2015ay.jpg) + + --------------------------------------------------------- ## update history: +### need to do: + * special characters in all fields? + * citation command like cite*? + +### date of change: 2017-11-21 to version v1.0i +* Changes to pkg code: + - "*.bbx": add a new solution for multi-language bibliography based on related entry other than the old @set method for biblatex version >3.8, because biblatex(>v3.8) does not copy info from its first member any longer. + - "*.bbx": correct a bug of entry's title with \LaTeX{} macro reported by liubenyuan. this bug is raised in CJK char check function when StrChar from xtring pkg to extract chars. + - "*.bbx": deal compatibility problem of author-year style for biblatex v>3.8a, include labeldate->labeldateparts and DeclareSortingScheme -> DeclareSortingTemplate. + - "*.bbx": change the version check macro,using macro form pkg xstring. change version switch method, define version's code first then switch depend on the biblatex version. + - "*.bbx": replace the \iffieldundef{year} by \iffieldequalstr{year}{} in \newbibmacro*{modifydate}, for the year field is defined with empty string for biblatex version >3.7 after biber dealing with none date info. + - "*.bbx": change the date format control mechanism for biblatex version >3.7, lower versions keep the old fansion. + - "*.bbx": rewrite the volume and number parsing macro using xstring pkg. + - "*.bbx": correct a bug with option gbnoauthor when book entry has none author. +* Changes to documentation: + - biblatex-gb7714-2015.tex: revise this document + + ### date of change: 2017-04-11 to version v1.0h, the last version support texlive2015 * Changes to pkg code: - - "*.bbx": deal compatibility problem of author style for texlive2017, because the old cmd printdateextralabel with biblatex3.4 has been replaced by printlabeldateextra with biblatex3.7 in texlive2017. - - "*.bbx": change the seperator between multi-language reference text form cmd par to cmd newline for the gb7714-2015 align style + - "*.bbx": deal compatibility problem of author year style for texlive2017, because the old cmd printdateextralabel with biblatex3.4 has been replaced by printlabeldateextra with biblatex3.7 in texlive2017. + - "*.bbx": change the seperator between multi-language reference text from cmd par to cmd newline for the gb7714-2015 align style - "*.bbx": fix a flaw reported by Lee Zeping. remove the comma between journaltitle and (number) when the volume is undefined. - "*.bbx": add an option gbpub to control the publishing info. if gbpub=false, publishing info's format is the biblatex standard style, otherwise is gb7714-2015 style. The origin idea comes from Wayne08. - "*.bbx": fix a flaw reported by zjsdut@163.com. remove the dot before url when url is the only info available。 diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015-content.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015-content.tex index 79879a2ef78..3c89257fc23 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015-content.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015-content.tex @@ -1,11 +1,13 @@ %------------------------------------------------------------ -\def\versionnumber{v1.0h} %版本和修改时间信息 -\def\versiondate{2017/04/11} +\def\versionnumber{v1.0i[2017/11/21]} %版本和修改时间信息 +\makeatletter +\def\versionbiblatex{\abx@version} +\makeatother %------------------------------------------------------------ %-----------------标题和目录--------------------------------- -\titleformanual{符合GB/T 7714-2015标准的biblatex参考\\ -文献样式文件\footnote{The files (gb7714-2015*.*) have version number \versionnumber, last revised \versiondate.}} -\authorformanual{胡振震\setcounter{footnote}{0}\footnote{hzzmail@163.com}} +\titleformanual{符合GB/T 7714-2015标准的biblatex参考文献样式 +\footnote{This Manual was created with biblatex v\versionbiblatex, last revised at \today;\\ \hspace*{1.5em} Style Files (gb7714-2015*.*) have version number: \versionnumber.}} +\authorformanual{胡振震\setcounter{footnote}{0}\footnote{Email: hzzmail@163.com}} \dateformanual{2016-07-01} \titleandauthor \phantomsection @@ -18,33 +20,34 @@ %------------------------------------------------------------ \section{概述} -提供了符合GB/T 7714-2015~信息与文献~参考文献著录规则要求的biblatex参考文献样式。分为两种编制方式:一、顺序编码制;二、作者年制。 - -样式文件的主要特点包括: +提供了符合GB/T 7714-2015~信息与文献~参考文献著录规则要求的biblatex参考文献样式。分为两种编制方式:一、顺序编码制;二、作者年制。主要特点包括: \begin{enumerate} - \item 实现了GB/T 7714-2015标准的完整功能,不仅包括两种编制方式下的各类型参考文献著录格式和标注格式等基本内容,还包括:双语文献格式,带页码的标注格式,作者年制下仅有年的标注格式和文献按语言集中并自动排序,两种编码制方式下责任者缺省不同处理,一些信息如页码卷期等自动解析,出版信息缺省时的自动处理并增加控制选项(gbpub)来控制是否应用这种自动处理等功能,而且增加了一个顺序编码制的标签对齐选项(align),提供右对齐、左对齐和项对齐三种方式。 - \item 实现了用户文献数据录入优化,用户在录入参考文献数据时,只需要录入文献的实际信息即可,不需要录入文献标识符和载体标识符,不需要录入language或者其它域信息用来区分中英文文献,完全实现自动中英文判断并处理。支持一些特殊的条目类型比如standard,newspaper,mastersthesis,phdthesis等。 - \item 实现了对biblatex不同版本的兼容,能够应用于biblatex3.2以前的老版本,也能用于3.3以后姓名处理方式改变后的版本。即可以与texlive2014/2015/2016配合使用,无需升级biblatex情况下安装biblatex-gb7714-2015宏包即可使用。 - \item 测试了样式文件在文档类book/report/article以及beamer类下的适用性,结果表明均能满足要求。文档详细介绍了各条目类型的著录格式及其在biblatex 中对应信息域的构成,以及域信息的录入方法和一些注意点,说明了样式文件的使用方法和注意事项,并严格按照GB/T 7714-2015 标准测试了各种类型的文献。 + \item 完成了GB/T 7714-2015标准的完整实现,包括两种编制方式下的各类型参考文献著录格式和标注格式等基本内容,还包括: 双语文献格式,带页码的标注格式,作者年制下仅有年的标注格式和文献按语言集中并自动排序,起止卷期自动解析,增加gbnoauthor选项控制作者年制责任者缺省的处理,增加gbpub选项控制出版信息缺省时的处理,增加align选项控制顺序编码制文献表的标签对齐方式,提供右对齐、左对齐和项对齐三种方式。 + \item 实现了用户文献数据录入优化,用户在录入参考文献数据时,只需要录入文献的实际信息即可,不需要录入文献标识符和载体标识符,无需录入language或者其它域信息来区分中英文参考文献,实现中英文自动判断并处理。支持一些特殊或老的条目类型,比如standard,newspaper,www,mastersthesis,phdthesis等。 + \item 实现了对biblatex不同版本的兼容,能够应用于biblatex3.2以前的老版本,也能用于3.3版姓名处理方式改变后的版本。即可以与texlive2014/2015/2016/2017配合使用,无需升级biblatex情况下直接使用biblatex-gb7714-2015宏包(即本样式)。 + \bc{当然 ctex2.9.4 的用户可能要升级一下biblatex,因为ctex多年没有更新,其中的biblatex版本过低}。 + \item 测试了样式文件在book/report/article文档类以及beamer类下的适用性,结果表明均能满足要求。文档详细介绍了样式文件的使用方法和注意事项,说明了各条目类型的著录格式及其在biblatex 中对应信息域的构成,以及域信息的录入方法,并严格按照GB/T 7714-2015 标准测试了各种类型的文献。 \end{enumerate} 样式文件由如下文件构成: -顺序编码制的\textbf{gb7714-2015.bbx},\textbf{gb7714-2015.cbx}文件和作者年制的\textbf{gb7714-2015ay.bbx},\textbf{gb7714-2015ay.cbx}文件。 +顺序编码制的 \zd{gb7714-2015.bbx},\zd{gb7714-2015.cbx} 文件和作者年制的 +\zd{gb7714-2015ay.bbx},\zd{gb7714-2015ay.cbx} 文件。 说明文档源文件包括: -biblatex-gb7714-2015.tex,biblatex-gb7714-2015ay.tex,biblatex-gb7714-2015-beamer.tex,biblatex-gb7714-2015ay-beamer.tex分别是一般文档类和beamer类下顺序编码制和作者年制的说明和测试文档。 +\zd{biblatex-gb7714-2015.tex},\zd{eg*.tex}分别是本样式说明文档和测试用例。 脚本文件包括: -\textbf{*.bat}和\textbf{*.sh}分别是windows下和linux下的编译脚本。\textbf{*.pl}是用来将gb7714格式的著录文献文本转换为bib文件的perl脚本,\textbf{*.dat}是用于转换的测试文本文件。 +\zd{*.bat}和\zd{*.sh}分别是windows下和linux下的编译脚本。\zd{*.pl}是用来将gb7714格式的著录文献文本转换为bib文件的perl脚本, +\zd{*.dat}是用于转换的测试文本文件。 \subsection{biblatex宏包的参考文献生成方法} -biblatex生成参考文献有其优越性。笔者从最初开始学习latex时利用thebibliography环境生成参考文献,到后来对格式化参考文献有更多需求,开始寻求利用参考文献宏包,再到最后选择了使用biblatex宏包[也由于对bibtex语言不熟悉,偷懒不想学$( \hat{} \bot \hat{} )$],经过了大量的实践,从结果看利用biblatex宏包生成参考文献具有如下优点: +biblatex生成参考文献有其优越性。笔者从最初开始学习latex时利用thebibliography环境生成参考文献,到后来对格式化参考文献有更多需求,开始寻求利用参考文献宏包,再到最后选择了使用biblatex宏包[也由于对bibtex语言不熟悉,偷懒不想学$( \hat{} \bot \hat{} )$],经过大量的实践总结biblatex宏包参考文献生成的优点如下: \begin{enumerate} -\item 使用方便。样式随宏包加载,参考文献源bib文件利用addbibresource加载,打印文献表利用printbibliography命令可以在文档任意位置打印。参考文献只需三步编译,第一遍xelatex,第二遍biber,第三遍xelatex,当然如果需要存在反向超链接,还需要第四遍xelatex。例\ref{eg:compile:cmd} 给出编译命令,其中xelatex命令也可以用mklatex -xelatex代替。 +\item 使用简单。样式随宏包加载,参考文献源bib文件利用addbibresource加载,打印文献表利用printbibliography命令可以在文档任意位置打印。参考文献只需三步编译,第一遍xelatex,第二遍biber,第三遍xelatex,当然如果需要反向超链接,除设置backref 选项外,还需要第四遍xelatex。例\ref{eg:compile:cmd} 给出编译命令,其中xelatex命令也可以用mklatex -xelatex 代替,--synctex=-1选项也可以是-synctex=1。 \begin{codetex}{使用biblatex宏包的文档编译命令}{eg:compile:cmd} xelatex --synctex=-1 jobname.tex @@ -54,21 +57,33 @@ biblatex生成参考文献有其优越性。笔者从最初开始学习latex时 \end{codetex} %使用够方便 -\item 划分自由。利用biblatex宏包可以在一个文档中生成任意数量的参考文献表,而不需要用include把分档划分成不同的文件来生成分章参考文献。利用refsection和refsegment可以很方便地划分参考文献节,甚至还可以嵌套使用。 +\item 划分自由。利用biblatex宏包可以在一个文档中生成任意数量的参考文献表,而不需要用include把分档划分成不同的文件来生成分章参考文献。利用refsection 和refsegment可以很方便地划分参考文献节,甚至还可以嵌套使用。 %划分很自由,划分无限制 -\item 支持全面。biber处理大数据量参考文献毫无压力,不用担心bibtex可能存在的内存不足等局限,字符编码也支持utf-8,完全支持中文的bibtex键。 %处理无限制,支持更全面 +\item 支持全面。后端处理程序biber处理大数据量参考文献毫无压力,不用担心bibtex可能存在的内存不足等局限,字符编码也支持utf-8,完全支持中文的bibtex键(引用关键字)。此外,biber还具有根据拼音和笔画排序(例\ref{eg:sort:bibercmd})、输出引用文献的数据(例\ref{eg:bibercmd:outbibfile})等其它更多功能。 + + \begin{codetex}{中文文献排序时的biber选项}{eg:sort:bibercmd} + %按拼音排序,biber命令 + biber -l zh__pinyin jobname + %按笔画排序,biber命令 + biber -l zh__stroke jobname + \end{codetex} + + \begin{codetex}{输出引用文献数据时的biber选项}{eg:bibercmd:outbibfile} + biber jobname.tex --output-format=bibtex + \end{codetex} + -\item 定制容易。biblatex宏包实现参考文献著录格式使用的是tex语言,相比传统的bibtex语言学习更为容易。biblatex 提供了很多不同类型的参考文献标准样式,查看、参考和引用都很方便,因此定制起需要的参考文献格式也很便捷。 +\item 定制方便。biblatex宏包实现参考文献著录格式使用的是tex语言,相比传统的bibtex 语言学习更为容易。biblatex 提供了很多不同类型的参考文献标准样式,查看、参考和引用都很方便,因此定制起需要的参考文献格式也很便捷。 %定制很容易 %\item 学习无障碍,因为biblatex宏包用的是tex语言,所以查看代码,学习都很方便,自然也便于生成需要的参考文献样式。 %\item 定制很容易,biblatex提供了很多不同的参考文献标准样式,学习参考都很方便,因此定制起需要的参考文献格式来非常容易。 \end{enumerate} -上述这些优点也是笔者决定编写符合GB/T 7714-2015标准的参考文献样式文件的原因之一。 +%上述这些优点也是笔者决定编写符合GB/T 7714-2015标准的参考文献样式文件的原因之一。 -下面简单介绍biblatex宏包生成参考文献的方法,直接给出最小工作示例。事实上biblatex生成参考文献万变不离其宗。示例中给出了详细的注释,要进一步了解biblatex参考文献生成可以参考biblatex宏包手册或者LaTeX 文档中文参考文献的biblatex解决方案\footnote{地址:\url{https://github.com/hushidong/biblatex-solution-to-latex-bibliography}}。 +下面直接给出最小工作示例的tex源文档(例\ref{code:doc:structrue}),用以简单介绍biblatex宏包参考文献生成的一般方法。给出的详细注释,说明了使用biblatex的文档基本结构,所有基于biblatex生成参考文献的文档无论大小万变不离其宗,当然除tex文档外另需准备保存参考文献信息的bib文件(详见\ref{sec:bib:bibtex}节)。要进一步了解biblatex参考文献生成相关内容可以参考biblatex宏包手册或者LaTeX 文档中文参考文献的biblatex解决方案\footnote{地址:\url{https://github.com/hushidong/biblatex-solution-to-latex-bibliography}}。 \begin{codetex}{biblatex参考文献生成最小工作示例}{code:doc:structrue} \documentclass{article}%文档类 @@ -102,10 +117,10 @@ citestyle=gb7714-2015%,backref=true% \subsection{gb7714-2015样式加载方式和选项说明} \subsubsection{样式加载方式} -最小示例(\ref{code:doc:structrue})中给出了宏包和样式的基本加载方式,对于gb7714-2015样式也是类似的,当然著录样式bibstyle和标注样式citestyle相同的话可以合并为一个选项style。比如: +例\ref{code:doc:structrue}中给出了宏包和样式的基本加载方式,gb7714-2015样式类似。注意,当著录样式bibstyle和标注样式citestyle相同时,两者可以合并为一个选项style。比如: \begin{codetex}{gb7714-2015顺序编码制加载方式}{eg:gb7714numeric} -\usepackage[backend=biber,style=gb7714-2015]{biblatex} +\usepackage[backend=biber,bibstyle=gb7714-2015,citestyle=gb7714-2015]{biblatex} %如果要设置参考文献表序号标签对齐方式的话请设置align选项,如果要取消缺省出版项自动填补的话设置gbpub=false,比如: \usepackage[backend=biber,style=gb7714-2015,align=left,gbpub=true]{biblatex} \end{codetex} @@ -121,42 +136,45 @@ perl gb7714texttobib.pl in=textfilename out=bibfilename \end{codetex} \subsubsection{增加的选项} -本小节主要介绍gb7714-2015样式增加的选项,选项的使用方式与包选项完全相同: +gb7714-2015样式增加了部分用于控制标签对齐、出版项缺省处理、责任者(作者)缺省处理的选项,使用方式与biblatex宏包选项完全相同: \begin{description} \item[align]=right,left,gb7714-2015. \hfill default is right - 为顺序编码制增加的标签对齐选项,选择参考文献表序号标签的对齐方式,align=right是默认的右对齐,align=left是左对齐,align=gb7714-2015是项对齐方式。对于作者年制该选项无效。测试结果见第\ref{sec:align:test}节 + 为顺序编码制增加选项,用于选择参考文献表序号标签的对齐方式。align=right是默认的右对齐; align=left是左对齐; align=gb7714-2015是项对齐方式。对于作者年制该选项无效。测试结果见第\ref{sec:align:test}节 \item[gbpub]=true,false. \hfill default is true - 为出版信息存在缺失时自动处理增加的控制选项,默认选择gbpub=true,自动利用:[出版地不详],[出版者不详],[S.l.],[s.n.]等填补缺省信息,设置gbpub=false时,则取消自动处理,使用标准样式的方式取消相应项的输出。 + 为控制出版信息缺失处理增加的选项。默认选择gbpub=true,自动利用:[出版地不详],[出版者不详],[S.l.],[s.n.]等填补缺省信息; 设置gbpub=false 时,则取消自动处理,使用标准样式的方式取消相应项的输出。 \item[gbnoauthor]=true,false. \hfill default is false - 为作者信息存在缺失时自动处理增加的控制选项,默认选择gbnoauthor=false,当作者信息缺失时不做处理,使用标准样式的处理方式,设置gbnoauthor=true 时,则根据gb7714-2015的要求进行处理,中文文献使用佚名来代替author,英文文献用NOAUTHOR来代替author。 + 为作者年制增加选项,用于控制责任者缺失时的处理。默认选择gbnoauthor=false,当作者信息缺失时不做处理,使用标准样式的处理方式; 设置gbnoauthor=true 时,则根据GB/T 7714-2015的要求进行处理,中文文献使用佚名来代替author,英文文献用NOAUTHOR 来代替author。 \end{description} \subsubsection{与标准选项的兼容性} -本小节介绍biblatex标准样式选项在gb7714-2015样式中的兼容性。需要说明的是:使用gb7714-2015样式时(即style=gb7714-2015),backend选择应指定为biber,还有一些选项已经在样式设计中固定,不能修改设置。比如sorting,maxnames,minnames,date,useprefix,giveninits等。 +绝大部分biblatex标准样式选项可与gb7714-2015样式联合使用,下面给出一些经过兼容性测试的选项说明。需要注意的是:使用gb7714-2015样式时(即style=gb7714-2015),backend选择应指定为biber,还有一些选项已经在样式设计中固定,不能修改设置。比如sorting,maxnames,minnames,date,useprefix,giveninits等。 \begin{description} \item[url]=true, false. \hfill default: true - 该选项控制是否打印 url 域并获取日期。该选项只影响 url 信息是可选的那些条目类型。而 @online 条目的 url 域总是打印出来的。它是导言区选项,与样式相关,gb7714-2015样式做了特别支持,所以可以使用。 + 该选项控制是否打印 url 域并获取日期。该选项只影响 url 信息是可选的那些条目类型。而 @online 条目的 url 域总是会打印出来。它是导言区选项,与样式相关,gb7714-2015样式做了特别支持,可以兼容使用。 + + \item[uniquelist]=true, false, minyear \hfill default: minyear + + 该选项用于作者年制样式,用于正文中引用(标注)标签的作者列表控制(目的是消除歧义)。当uniquelist=true时,自动利用扩展作者姓名列表长度的方式消除labelname 列表的歧义; 当=false 时则禁用扩展,标签仅使用一个作者,消除歧义通过跟在年份后面的字母实现; 默认使用minyear,即当被截短的作者姓名列表存在歧义时,只有当年份相同,才会扩展列表长度以消除歧义。 \item[hyperref]=true, false, auto. \hfill default: auto - 是否将引用和向后引用转化为可点击的超链接。这是宏包的载入时选项,与样式无关,自然可以使用。 + 是否将引用和后向引用转化为可点击的超链接。这是宏包的载入时选项,与样式无关,自然可以使用。 \item[backref]=true, false. \hfill default: false 是否在文献中打印出反向引用。这是宏包的载入时选项,与样式无关,自然可以使用。 - \item[refsection]=none, part, chapter, section, subsection. \hfill default: none - 该选项自动在文档分段处(例如一章或一节)开始一个新的参考文献分节。是宏包的载入时选项,与样式无关,自然可以使用。 + 该选项自动在文档分段处(例如一章或一节)开始一个新的参考文献分节。是宏包的载入时选项,与样式无关,自然可以使用。需要注意与titlesec宏包联用时,该选项会失效。 \item[refsegment]=none, part, chapter, section, subsection. \hfill default: none @@ -164,13 +182,13 @@ perl gb7714texttobib.pl in=textfilename out=bibfilename \item[citereset]=none, part, chapter, section, subsection. \hfill default: none - 该选项在文档分段处(例如一章或一节)自动执行介绍的citereset 命令。 + 该选项在文档分段处(例如一章或一节)自动执行citereset 命令。 \item[labeldate]=year, short, long, terse, comp, ymd, edtf. \hfill default: year 类似于 date 选项,但控制的是由DeclareLabeldate 选择的日期域的格式。 - \item[其它]=下面还有很多选项,有些是宏包载入时选项,与样式无关,一般可以使用,但笔者没有做测试,各位朋友可以测试使用。选项的作用可以参考biblatex使用手册,以及笔者和Sheng Wenbo兄翻译的中文版。 + \item[其它]=下面还有很多选项,有些是宏包载入时选项,与样式无关,一般可以使用,但笔者没有做测试,各位朋友可以测试使用。选项的作用可以参考biblatex 使用手册,以及笔者和Wenbo 翻译的中文版。 \begin{itemize} \item related=true, false. default: true \item defernumbers=true, false default: false @@ -204,59 +222,148 @@ perl gb7714texttobib.pl in=textfilename out=bibfilename \subsection{样式文件的进一步说明} -\subsubsection{顺序编码/作者年制bbx样式文件的使用说明} -顺序编码制的参考文献样式文件基于标准numeric-comp样式修改得到。著录格式中序号格式见 -\ref{sec:bib:serialno}节,各类型文献条目的著录格式见\ref{sec:numeric:data}节,参考文献条目中各信息域及其录入方式见\ref{sec:field}节。 +\subsubsection{关于参考文献数据源: bib文件的说明}\label{sec:bib:bibtex} + +参考文献数据以bibtex格式保存在bib文件中。生成参考文献除tex源文档外,还需创建参考文献数据源文件即bib文件。bib文件数据源准备完成后,在加载biblatex宏包时,使用addbibresource命令将其加载进tex源文档中。\bc{注意:数据源可以加载多个,比如多个章节的参考文献放在不同的bib文件中,那么全部加载进来即可}。 + +bib文件中的参考文献信息是以条目形式组织,一篇文献创建一条记录即一份参考文献条目,一个条目由若干个数据域构成。文献的各部分信息应录入到条目的对应数据域中。GB/T 7714-2015标准中的文献类型与本样式中条目类型对应关系如表\ref{tab:entrytypes}所示,各类条目具体的著录格式详见\ref{sec:numeric:data}节。 +\begin{table}[!htb] +\centering +\caption{常见条目类型}\label{tab:entrytypes} +\begin{tabular}{cl} +\hline + GB/T 7714-2015标准中的参考文献类型 & biblatex中的条目类型\\ \hline + 专著& book\\ + 标准& standard\\ + 专著中的析出文献& inbook\\ + 连续出版物& periodical\\ + 连续出版物的析出文献& article\\ + 报纸析出的文献& newspaper\\ + 专利& patent\\ + 电子资源& online\\ + 会议录或会议文集& proceedings\\ + 会议文集中析出的文献& inproceedings\\ + 汇编或论文集& collection\\ + 汇编或论文集析出中的文献& incollection\\ + 学位论文& thesis\\ + 报告& report\\ + 手册或档案& manual\\ + 未出版物& unpublished\\ \hline + \end{tabular} +\end{table} + +组成各个条目的不同数据域(字段)保存有参考文献的各部分内容,比如作者、标题、出版项、日期等等。各个数据域的录入应符合bib文件规范。\bc{需要注意: 有时直接从网络获取的参考文献信息中可能带有一些特殊字符比如\%,\&等,这些字符在tex中通常需要做转义处理,本样式中对像title,journal等常见的域中出现的特殊字符已经做了转义,但是一些不常见的域比如abstract等没有考虑,所以用户需要手动处理,例如把\%改为\textbackslash \%,否则可能导致出错}。下面详细介绍本样式中使用的域及其数据录入方式: -作者年制的参考文献样式文件使用了标准authoryear样式的标签生成,修改了参考文献表的格式。其参考文献条目著录格式与顺序编码制基本相同(除了把年份提到了作者后面作为标签)。引文数据源bib文件所要求的条目信息域录入与顺序编码制完全一致,详见\ref{sec:numeric:data}节。 +\begin{description} + \item[author] 在biblatex中author域属于name数据类型,输入数据时,各姓名间用and 连接,当姓名过多省略时,用others代替。 -\qd{注意:因为作者年制有文种文献集中的要求,所以修改了nyt排序格式,增加了userb作为name前的排序域,默认情况下,本样式文件将作者为中文的文献的userb域设置成cn,英文的设置成en。这一设置过程,在处理样式时由biber自动处理,当出现问题或者有更多文种分集且有特殊顺序时,可以在bib文件中给相应文种文献的userb域设置适合排序的字符串。比如中文文献设置为cn,英文文献设置为en,法文文献设置为fr,那么排序中,相应的中文文献排在最前面,英文文献在中间,法文文献最后,因为升序情况下字母顺序是c然后e然后f。} + 单个姓名,对于中文作者直接输入中文姓名即可。比如:于潇 and 刘义 and 柴跃廷 and others -%上一段2016-1114更新,下面是以前的说法。 -%\qd{根据文种文献集中的要求,修改了nyt排序格式,增加了userb作为name前的排序域,当有需求进行多文种分集且有特殊顺序时,在bib文件中给相应文种的文献设置适合排序的字符串。比如中文文献设置为cn,英文文献设置为en,法文文献设置为fr,那么排序中,相应的中文文献排在最前面,英文文献在中间,法文文献最后,因为升序情况下字母顺序是c然后e然后f。} + 对于英文作者,单个姓名有两种biblatex可以解析的输入方式: -\subsubsection{顺序编码/作者年制cbx样式文件的使用说明}\label{sec:cbx:usage} + \textcircled{1}prefix lastname, suffix, firstname middlename -顺序编码制的引用样式文件大体使用标准引用样式numeric-comp的内容,仅对cite等命令进行了修改。为满足GB/T 7714-2015第10.1.3节的要求,增加了pagescite命令。为方便在同一文章中同时使用上标和非上标的标注方式,仅将cite命令修改为上标模式,而parencite保留标准样式提供的非上标模式。这些命令使用方式如下: + \textcircled{2}firstname middlename lastname or firstname prefix lastname -\begin{codetex}{顺序编码制cbx样式命令使用说明}{eg:citefornumeric} -不带页码的引用(上标,方括号包围)\cite{Peebles2001-100-100} + 对于需要输入前后缀的姓名只能采用第一种方式,比如: + DES MARAIS, Jr., D J and H STRAUSS and SUMMONS, R. E. and others -不带页码的引用(非上标,方括号包围)\parencite{Miroslav2004--} + 这里的第一个姓名输入为前缀,姓,后缀,名,中间名。第二个姓名输入为名,姓。第三个姓名输入为姓,名,中间名。 -带页码的引用\cite[见][49页]{蔡敏2006--}\parencite[见][49页]{Miroslav2004--} + \bc{需要强调:对于第二种输入方式非首字母大写,姓名各个组成部分最好首字母是大写的,可能导致解析出错,比如姓名只有两个组成部分firstname和lastname,如果firstname小写的话,有可能会解析为prefix lastname。对于第一种输入方式,则至少lastname需要首字母大写,否则有可能将lastname解析成prefix。其中lastname也称familyname,firstname middlename 两者共称givenname} -\pagescite{Peebles2001-100-100}\pagescite[][201-301]{Peebles2001-100-100} + 对于机构作者,不需要解析,直接输入机构名,英文的各个机构名用\{\}包起来,比如: -在页脚中引用和打印文献表\footnote{在脚注中引用\footcite{赵学功2001--}} - \footfullcite{赵学功2001--} -\end{codetex} + 中国企业投资协会 and 台湾并购与私募股权协会 and 汇盈国际投资集团 -其中,当不指定页码时,pagescite命令默认调用参考文献的页码数据进行输出,如果需要指定页码,那么需要在第二个[]内输入页码内容。 + \{International Federation of Library Association and Institutions\} -\qd{注意:对于多个文献一起的压缩形式,指定页码只会应用最后一个参考文献的页码,这是不对的,当然其实这种情况是不应该存在的,指定页码本来就应该具体化指某一文献的,因此使用时尽可能使用pagescite\{key1\}pagescite\{key2\}这种形式而不是pagescite\{key1,key2\}。} + \item[title] 直接输入需要打印的内容,subtitle或titleaddon域类似 + \item[usera] 不用输入,自动处理 + \item[translator] 与author域类似,只是输入的是译者 + \item[edition] 直接输入整数,或者需要打印的内容 + \item[location] 直接输入需要打印的地址内容,而address域在biblatex中作为location别名,表示相同的内容。 + \item[publisher] 直接输入需要打印的出版者内容,institution,organization域类似 + \item[date] 日期可以格式化输入,格式化输入biblatex 会自动解析,如果无法解析会忽略该域。格式化的输入方式是: + 年-月-日/年-月-日 -作者年制的引用样式文件大体使用标准引用样式authoryear的内容。也是对cite,parencite进行了修改,将引用标签用括号括起来。为满足GB/T 7714-2015第10.2.4节的要求,增加了pagescite命令。为满足GB/T 7714-2015第10.2.1节的要求,增加了yearpagescite命令用于处理文中已有作者信息只需要年份和页码信息的情况。 + 比如:2001-05-06/2001-08-01 -这些命令使用方式如下: + 其中第一个年-月-日会解析并存储到year,month,day域中,第二个会解析并存储到endyear,endmonth,endday域中。更多细节参考biblatex手册的Table 8: Date Interface。 -\begin{codetex}{作者年制cbx样式命令使用说明}{eg:citeforauthoryear} -不带页码的引用\cite{Peebles2001-100-100}\parencite{Miroslav2004--} + \item[year] year域的输入与date域类似,为了兼容一些老的bib文件,把year直接用map 转换成date,所以在本样式的使用中输入year域与date域相同。 -带页码的引用\cite[见][49页]{蔡敏2006--}\parencite[见][49页]{Miroslav2004--} -\pagescite{Peebles2001-100-100}\pagescite[][201-301]{Peebles2001-100-100} + 但year与date存在一定的差异,即year可以处理仅有年的信息或者需要原样打印的内容。比如: + 1881(清光绪七年)。 -作者年制文中已有作者只需要年份和页码的情况,使用命令yearpagescite,而顺序制的情况下该命令与pagescite命令作用相同。 -比如见赵耀东\yearpagescite[][205]{赵耀东1998--}和Simon\yearpagescite[][15]{Simon2001--}的文献。 + 这一信息如果放在date中会被自动忽略,但放到year域中,本样式会先将其拷贝到date中进行解析,无法解析的话,date域忽略,但year 信息仍然存在,并原样打印。 -在页脚中引用和打印文献表\footnote{在脚注中引用\footcite{赵学功2001--}} - \footfullcite{赵学功2001--} + \item[pages] 可以格式化输入或输入需要打印的内容。格式化输入时,页码用整数,当有范围时,用短横线隔开。比如:59-60。 当无法解析时,输入内容被认为是需要完整打印的内容。 + \item[urldate] urldate域与date域类似,只是解析时,存储到urlday,urlmonth,urlyear,urlendday,urlendmonth,urlendyear域中。 + \item[url] 直接输入需要打印的网址内容 + \item[doi] 直接输入需要打印的DOI内容 + \item[note] 在本样式中note域有特殊功能,当其内容为standard或news 时,判断条目类型为标准和报纸析出的文献。 + \item[bookauthor] 用于析出文献时,作为析出文献来源文献的作者,其输入方式与author 相同。 + \item[booktitle] 用于析出文献时,作为析出文献来源文献的题名,其输入方式与title 相同。booktitleaddon域输入方式也相同。 + \item[volume] 连续出版物的卷,格式化输入用整数,当有范围时中间用短横线连接,比如:1-4。当无法解析时,输入内容被认为是需要完整打印的内容。 + \item[number] 连续出版物的期或报纸的版次,输入与volume类似。或者是专利等的号时,直接输入需要打印的内容。 + \item[journal] 用于连续出版物析出文献,表示连续出版物的题名,直接输入需要打印的内容。journaltitle,journalsubtitle域类似处理。 + \item[version] 用于report和manual的版本信息,直接输入需要打印的内容。 +\end{description} + + +\subsubsection{关于参考文献著录样式: bbx文件的说明}\label{sec:usage:bbx} +参考文献著录样式也称著录表样式或著录格式,主要分两类:顺序编码制和编码年制。 +%顺序编码制的参考文献样式基于标准样式numeric-comp/numeric修改得到 +顺序编码制样式中各条参考文献条目以数字序号按引用先后顺序组织。著录格式中序号格式见\ref{sec:bib:serialno}节,各类型文献条目的著录格式见\ref{sec:numeric:data}节,参考文献条目中各信息域及其录入方式见\ref{sec:bib:bibtex}节。 + +%作者年制的参考文献样式则基于标准样式authoryear修改。 +作者年制样式中各条参考文献条目以作者-年为标签以一定的顺序排列。作者年制的著录格式与顺序编码制基本相同(除了把年份提到了作者后面作为文献条目内的标签)。数据源bib文件中各条目的数据录入与顺序编码制完全一致。 + +\qd{注意: 因为作者年制有分文种文献集中的要求,所以修改nyt排序格式,增加userb作为name前的排序域,默认情况下,本样式文件将作者为中文的文献的userb域设置成cn,英文的设置成en。这一设置过程,在biber处理时自动完成。当出现问题或者有更多文种分集且有特殊顺序时,可以为bib文件中给相应文种文献的userb域手动设置适合排序的字符串。比如: 中文文献设置为cn,英文文献设置为en,法文文献设置为fr,那么排序中,相应的中文文献排在最前面,英文文献在中间,法文文献最后,因为升序情况下字母顺序是c然后e然后f。} + +%上一段2016-1114更新,下面是以前的说法。 +%\qd{根据文种文献集中的要求,修改了nyt排序格式,增加了userb作为name前的排序域,当有需求进行多文种分集且有特殊顺序时,在bib文件中给相应文种的文献设置适合排序的字符串。比如中文文献设置为cn,英文文献设置为en,法文文献设置为fr,那么排序中,相应的中文文献排在最前面,英文文献在中间,法文文献最后,因为升序情况下字母顺序是c然后e然后f。} + +\subsubsection{关于参考文献标注样式: cbx文件的说明}\label{sec:cbx:usage} +正文中的参考文献标注样式也称引用样式或引用标签样式,也分两类: 顺序编码制和作者年制。 +%顺序编码制的标注样式文件大体使用标准引用样式numeric-comp的内容 +顺序编码制的标注样式大体使用标准标注样式numeric,仅对cite等部分命令做了修改。为满足GB/T 7714-2015第10.1.3节的要求,增加了pagescite命令。为方便在同一文章中同时使用上标和非上标的标注方式,仅将cite命令修改为上标模式,而parencite保留标准样式提供的非上标模式。这些命令使用方式如下: + +\begin{codetex}{顺序编码制cbx样式命令使用说明}{eg:citefornumeric} +不带页码的引用(上标,方括号包围): + \cite{Peebles2001-100-100} +不带页码的引用(非上标,方括号包围): + \parencite{Miroslav2004--} +带页码的引用: + \cite[见][49页]{蔡敏2006--} \parencite[见][49页]{Miroslav2004--} + \pagescite{Peebles2001-100-100} \pagescite[][201-301]{Peebles2001-100-100} +在页脚中引用和打印文献表: + \footnote{在脚注中引用\footcite{赵学功2001--}} \footfullcite{赵学功2001--} \end{codetex} -各引用命令的效果见\ref{sec:test:book}节。 +其中,当不指定页码时,pagescite命令默认调用参考文献的页码数据进行输出,如果需要指定页码,那么需要在第二个[]内输入页码内容。 + +\qd{注意:对于多个文献一起的压缩形式,指定页码只会应用最后一个参考文献的页码,这是不正确的,但这种情况其实本不应出现,因为指定页码本来就需要具体化指某一文献。使用时请尽可能使用pagescite\{key1\}pagescite\{key2\}这种形式而不是pagescite\{key1,key2\}。} +%作者年制的标注样式文件大体使用标准引用样式authoryear的内容。 +作者年制的标注样式情况类似。对cite,parencite进行了修改,将引用标签用圆括号括起来。为满足GB/T 7714-2015第10.2.4节的要求,增加了pagescite命令。为满足GB/T 7714-2015第10.2.1节的要求,增加了yearpagescite命令用于处理文中已有作者信息只需要年份和页码的情况(为兼容考虑,顺序编码制也给出该命令,但作用与pagescite命令相同)。使用方式如下: + +\begin{codetex}{作者年制cbx样式命令使用说明}{eg:citeforauthoryear} +不带页码的引用: + \cite{Peebles2001-100-100} \parencite{Miroslav2004--} +带页码的引用: + \cite[见][49页]{蔡敏2006--} \parencite[见][49页]{Miroslav2004--} + \pagescite{Peebles2001-100-100} \pagescite[][201-301]{Peebles2001-100-100} +作者年制文中已有作者只需要年份和页码的情况,使用命令yearpagescite,比如: + 见赵耀东\yearpagescite[][205]{赵耀东1998--}和Simon\yearpagescite[][15]{Simon2001--}的文献。 +在页脚中引用和打印文献表: + \footnote{在脚注中引用\footcite{赵学功2001--}} \footfullcite{赵学功2001--} +\end{codetex} + +各引用命令的效果见\ref{sec:test:book},\ref{sec:cite:cmd:test}节。 -\section{标准说明与实现} +\section{GB/T 7714-2015 标准说明与实现} \subsection{顺序编码制} @@ -286,7 +393,9 @@ GB/T 7714-2015规定采用作者年制组织时,各篇文献首先按文种组 若正文中已有著者姓名,则()内只标注出版年,这一点样式文件无法判断,只能是文档作者自身把握,当然样式文件提供了标签只有年份、附加年份和页码信息的引用命令yearpagescite,方便文档写作者使用,使用方法详见第\ref{sec:cbx:usage}节。 -引用多个著者的文献时,对西文只需标注第一著者的姓(而在参考文献列表中的作者按最大数量三个处理,这与顺序编码制一致,参考GB/T 7714-2015第8.1.2节),其后附“et al.”,对于中文著者,标注第一著者的姓名,其后附“等”。姓名与“et al.”“等”间留适当空隙。注意到在GB/T 7714-2015第10.2.1节给出的例子中作者姓的大小写格式与参考文献表中的要求是不同的,这说明标注中的作者姓名是由写文档的作者来决定的,因此本样式文件原样输出bib源文件中作者姓的大小格式。 +引用多个著者的文献时,对西文只需标注第一著者的姓(而在参考文献列表中的作者按最大数量三个处理,这与顺序编码制一致,参考GB/T 7714-2015第8.1.2节),其后附“et al.”,对于中文著者,标注第一著者的姓名,其后附“等”。姓名与“et al.”“等”间留适当空隙。 + +\bc{注意到在GB/T 7714-2015第10.2.1节给出的例子中作者姓的大小写格式与参考文献表中的要求是不同的,这说明标注中的作者姓名是由写文档的作者来决定的,因此本样式文件原样输出bib源文件中作者姓的大小格式}。 引用同一著者同一年出版的多篇文献时,出版年后应采用小写字符a,b,c等区别。 @@ -294,12 +403,12 @@ GB/T 7714-2015规定采用作者年制组织时,各篇文献首先按文种组 标注要求具体参考GB/T 7714-2015第10.2节。 -\qd{注意:一般情况下,当文献作者缺省时,作者年制就没有作者可以用,因此文献题名用来生成标签,这样会导致参考文献表中文献题名后的文献类型标识/文献载体标识消失。但是可以用佚名替代缺省作者的方式避免这个问题,即可以使用样式文件选项gbnoauthor=true,一旦设置该选项为true,则缺省的作者会根据文献语种填充为佚名或NOAUTHOR。默认情况下,不进行这种处理,即相当于设置选项gbnoauthor=false。} +\qd{注意:一般情况下,当文献作者缺省时,作者年制就没有作者可以用,因此文献题名用来生成标签,这样会导致文献表中文献题名后的文献类型标识/文献载体标识消失(这是因为题名用于生产标签后,题名域会被清除,自然也就不输出题名相关的信息了)。但是可以用佚名替代缺省作者的方式避免这个问题,即可以使用样式文件提供的选项gbnoauthor=true,一旦设置该选项为true,则缺省的作者会根据文献语种填充为佚名或NOAUTHOR。默认情况下,不进行这种处理,即相当于设置选项gbnoauthor=false。而顺序编码制因为标签是数字序号,所以不存在这个问题。} %本样式文件默认情况下采用佚名方式,如果不需要使用佚名,那么需要在样式文件中注释掉一段代码,这段代码在本文档末尾2016-11-14的更新历史中有说明,见\pageref{up:20161114}页。} \subsection{各类文献在biblatex中对应的条目和域}\label{sec:numeric:data} -gb7714-2015.bbx是按照GB/T 7714-2015要求实现的biblatex参考文献样式文件。 +gb7714-2015.bbx是按照GB/T 7714-2015要求实现的biblatex参考文献著录样式文件。 根据GB/T 7714-2015要求并结合biblatex的条目类型和数据域,对各类参考文献做如下考虑: \subsubsection{专著/book} @@ -312,12 +421,12 @@ gb7714-2015.bbx是按照GB/T 7714-2015要求实现的biblatex参考文献样式 其对应的biblatex数据域为: \begin{codetex}{专著/book条目的域格式}{eg:bookfieldfmt} -author.title:subtitle或titleaddon[usera].translator.edition.address或location:publisher,date或year:pages[urldate].url.doi +author.title[usera].translator.edition.location:publisher,date或year:pages[urldate].url.doi \end{codetex} -使用时,首先建立参考文献数据文件即bib文件,将对应的文献信息录入到相应条目的相应数据域中。\bc{特别强调:usera域不用录入,该域内容由bbx样式文件根据条目类型自动处理得到。} +其中标题相关的附加信息除了可以直接在title域中录入外,还可以在subtitle或titleaddon域中添加,后面出现的booktitle,journaltitle,也有类似情况,可以在booktitleaddon或者journalsubtitle中附加信息。其中出版地用location域表示,也可以用传统的address表示,biblatex将address作为location的别名处理,使用两者中的任何一个都可以表示出版地信息。\bc{特别强调:usera域不用录入,该域内容由bbx样式文件根据条目类型自动处理得到。} -\qd{注意:由于biblatex不支持standard条目类型,所以“标准”类型可以用book或inbook替代,但使用note域等于standard作为一个区分,当note域数据存在且内容等于standard时,就将其作为“标准”文献进行处理,其文献类型标识用S表示。这里为什么使用note域而不是type域和keywords域,是因为考虑到note域一般情况没有什么特殊意义,使用它不会导致冲突,而type域在biblatex标准样式中没有被book和article条目类型当作支持的域,对于支持该域的条目比如thesis,type域又有特殊的意义,是用来区分master和doctor的,而keywords域倒可以使用,只是该域一般很少在jabref之类软件的默认域中,需要进一步设置,而且可能带来不通用的问题。} +\qd{注意:由于biblatex不支持standard条目类型,所以“标准”类型可以用book或inbook替代,但使用note域等于standard作为一个区分,当note域数据存在且内容等于standard时,就将其作为“标准”文献进行处理,其文献类型标识用S表示。这里为什么使用note域而不是type域和keywords域,是因为考虑到note域一般情况没有什么特殊意义,使用它不会导致冲突,而type域在biblatex标准样式中没有被book和article条目类型当作支持的域,对于支持该域的条目比如thesis,type域又有特殊的意义,是用来区分master和doctor的,而keywords域倒是可以使用,只是该域一般很少在jabref之类软件的默认域中,需要进一步设置,而且可能带来不通用的问题。} \subsubsection{标准/standard}\label{sec:standard} “标准”(standard)作为一种文献条目类型biblatex并不支持,因此可以如上一小节所述,直接利用book或inbook类型加note域代替。 @@ -334,70 +443,10 @@ author.title:subtitle或titleaddon[usera].translator.edition.address或location: 其对应的biblatex数据域为: \begin{codetex}{标准/standard条目的域格式}{eg:standardfieldfmt} -author.title[usera](//bookauthor.booktitle:booktitleaddon).edition.address 或location:publisher,date或year:pages[urldate].url.doi +author.title[usera](//bookauthor.booktitle).edition.location:publisher,date或year:pages[urldate].url.doi \end{codetex} -\subsubsection{域/field}\label{sec:field} -参考文献条目各个信息域的数据录入格式符合bib文件规范即可,这里再详细说明一下,后面其它条目涉及到的域也在这里一并介绍: -\begin{description} - \item[author] 在biblatex中author域属于name数据类型,输入数据时,各姓名间用and 连接,当姓名过多省略时,用others代替。 - - 单个姓名,对于中文作者直接输入中文姓名即可。比如:于潇 and 刘义 and 柴跃廷 and others - - 对于英文作者,单个姓名有两种biblatex可以解析的输入方式: - - \textcircled{1}prefix lastname, suffix, firstname middlename - - \textcircled{2}firstname middlename lastname or firstname prefix lastname - - 对于需要输入前后缀的姓名只能采用第一种方式,比如: - DES MARAIS, Jr., D J and H STRAUSS and SUMMONS, R. E. and others - - 这里的第一个姓名输入为前缀,姓,后缀,名,中间名。第二个姓名输入为名,姓。第三个姓名输入为姓,名,中间名。 - - \bc{需要强调:对于第二种输入方式非首字母大写,姓名各个组成部分最好首字母是大写的,可能导致解析出错,比如姓名只有两个组成部分firstname和lastname,如果firstname小写的话,有可能会解析为prefix lastname。对于第一种输入方式,则至少lastname需要首字母大写,否则有可能将lastname解析成prefix。其中lastname也称familyname,firstname middlename 两者共称givenname} - - 对于机构作者,不需要解析,直接输入机构名,英文的各个机构名用\{\}包起来,比如: - - 中国企业投资协会 and 台湾并购与私募股权协会 and 汇盈国际投资集团 - - \{International Federation of Library Association and Institutions\} - - \item[title] 直接输入需要打印的内容,subtitle或titleaddon域类似 - \item[usera] 不用输入,自动处理 - \item[translator] 与author域类似,只是输入的是译者 - \item[edition] 直接输入整数,或者需要打印的内容 - \item[address] 直接输入需要打印的地址内容,location域类似。 - \item[publisher] 直接输入需要打印的出版者内容,institution,organization域类似 - \item[date] 日期可以格式化输入,格式化输入biblatex 会自动解析,如果无法解析会忽略该域。格式化的输入方式是: - - 年-月-日/年-月-日 - - 比如:2001-05-06/2001-08-01 - - 其中第一个年-月-日会解析并存储到year,month,day域中,第二个会解析并存储到endyear,endmonth,endday域中。更多细节参考biblatex手册的Table 8: Date Interface。 - - \item[year] year域的输入与date域类似,为了兼容一些老的bib文件,把year直接用map转换成date,所以在本样式的使用中输入year域与date域相同。 - - 但year与date存在一定的差异,即year可以处理仅有年的信息或者需要原样打印的内容。比如: - 1881(清光绪七年)。 - - 这一信息如果放在date中会被自动忽略,但放到year域中,本样式会先将其拷贝到date中进行解析,无法解析的话,date域忽略,但year信息仍然存在,并原样打印。 - - \item[pages] 可以格式化输入或输入需要打印的内容。格式化输入时,页码用整数,当有范围时,用短横线隔开。比如:59-60。 当无法解析时,输入内容被认为是需要完整打印的内容。 - \item[urldate] urldate域与date域类似,只是解析时,存储到urlday,urlmonth,urlyear,urlendday,urlendmonth,urlendyear域中。 - \item[url] 直接输入需要打印的网址内容 - \item[doi] 直接输入需要打印的DOI内容 - \item[note] 在本样式中note域有特殊功能,当其内容为standard或news 时,判断条目类型为标准和报纸析出的文献。 - \item[bookauthor] 用于析出文献时,作为析出文献来源文献的作者,其输入方式与author 相同。 - \item[booktitle] 用于析出文献时,作为析出文献来源文献的题名,其输入方式与title 相同。booktitleaddon域输入方式也相同。 - \item[volume] 连续出版物的卷,格式化输入用整数,当有范围时中间用短横线连接,比如:1-4。当无法解析时,输入内容被认为是需要完整打印的内容。 - \item[number] 连续出版物的期或报纸的版次,输入与volume类似。或者是专利等的号时,直接输入需要打印的内容。 - \item[journal] 用于连续出版物析出文献,表示连续出版物的题名,直接输入需要打印的内容。journaltitle,journalsubtitle域类似处理。 - \item[version] 用于report和manual的版本信息,直接输入需要打印的内容。 -\end{description} - \subsubsection{专著中的析出文献/inbook} \begin{refentry}{}{} 专著中的析出文献对应的biblatex的entrytype为:inbook。文献类型标识用M表示。 @@ -408,7 +457,7 @@ author.title[usera](//bookauthor.booktitle:booktitleaddon).edition.address 或lo 其对应的biblatex数据域为: \begin{codetex}{专著析出文献/inbook条目的域格式}{eg:inbookfieldfmt} -author.title[usera]//bookauthor.booktitle:booktitleaddon.edition.address 或location:publisher,date或year:pages[urldate].url.doi +author.title[usera]//bookauthor.booktitle.edition.location:publisher,date或year:pages[urldate].url.doi \end{codetex} \subsubsection{连续出版物/periodical} @@ -421,13 +470,14 @@ author.title[usera]//bookauthor.booktitle:booktitleaddon.edition.address 或loca 其对应的biblatex数据域为: \begin{codetex}{连续出版物/periodical条目的域格式}{eg:periodicalfieldfmt} -author/editor.title:subtitle或titleaddon[usera].year或date,volume(number)-endyear, endvolume(endnumber).address或location:publisher,date或year[urldate].url.doi +author/editor.title[usera].year或date,volume(number)-endyear, endvolume(endnumber).location:institution,date或year[urldate].url.doi \end{codetex} -需要注意: 因为连续出版物可能用到两个日期,两个卷,两个期,所以录入数据时需要特别处理。不需要录入endyear等信息,只需要在到year或date域录入日期,由biber自动解析,两个日期之间用/分隔。而卷和期由于可能有合订模式,合订卷期之间用/分隔,参考GB/T 7714-2015第8.8.3节,需要解析范围的卷和期,录入到volume和number域时,两个不同的值用-分隔。\bc{这里对于卷和期的解析所采用的函数利用了李志齐所编写的样式文件中的函数,特此说明,表示感谢!} +其中连续出版物的出版者用institution表示。 +\bc{需要注意: 因为连续出版物可能用到两个日期,两个卷,两个期,所以录入数据时需要特别处理。不需要录入endyear等信息,只需要在到year或date域录入日期,由biber自动解析,两个日期之间用/分隔。而卷和期由于可能有合订模式,合订卷期之间用/分隔(参考GB/T 7714-2015第8.8.3节),因此如果需要解析有起止范围的卷和期,录入到volume和number域的信息中起止值之间应用-分隔}。 \subsubsection{连续出版物的析出文献/article} -\begin{refentry}{}{} +\begin{refentry}{}{}%[break at=0.5cm/0pt] 连续出版物的析出文献对应的biblatex的entrytype为:article。文献类型标识用J表示。 \paragraph{其著录格式为}(参考GB/T 7714-2015第4.4节):\\ @@ -436,10 +486,10 @@ author/editor.title:subtitle或titleaddon[usera].year或date,volume(number)-endy 其对应的biblatex数据域为: \begin{codetex}{连续出版物析出文献/article条目的域格式}{eg:articlefieldfmt} -author.title[usera].journaltitle或journal:journalsubtitle,year,volume(number):pages[urldate].url.doi +author.title[usera].journaltitle或journal,year,volume(number):pages[urldate].url.doi \end{codetex} -\qd{需要注意:由于biblatex不支持newspaper article条目类型,所以条目类型报纸析出的文献用article表示,但使用note域等于news作为一个区分,当note域数据存在且内容等于news时,就将其作为报纸的析出文献进行处理。报纸文献类型标识用N表示,报纸的版次用number域描述。} +\qd{需要注意:由于biblatex不支持newspaper 条目类型,所以条目类型报纸析出的文献用article表示,但使用note域等于news作为一个区分,当note域数据存在且内容等于news时,就将其作为报纸的析出文献进行处理。报纸文献类型标识用N表示,报纸的版次用number域描述。} \subsubsection{报纸析出的文献/newspaper}\label{sec:standard} biblatex没有将报纸的析出文献(newspaper)作为一种文献条目类型,因此可以如上一小节所述,直接利用article类型加note域代替。 @@ -457,11 +507,11 @@ biblatex没有将报纸的析出文献(newspaper)作为一种文献条目类型 其对应的biblatex数据域为: \begin{codetex}{报纸析出的文献/newspaper条目的域格式}{eg:newspaperfieldfmt} -author.title[usera].journaltitle或journal:journalsubtitle,date(number)[urldate].url.doi +author.title[usera].journaltitle或journal,date(number)[urldate].url.doi \end{codetex} \subsubsection{专利/patent} -\begin{refentry}{}{} +\begin{refentry}{}{}%[break at=3cm/0pt] 专利文献对应的biblatex的entrytype为:patent。文献类型标识用P表示。 \paragraph{其著录格式为}(参考GB/T 7714-2015第4.5节):\\ @@ -474,7 +524,7 @@ author.title:number[usera].date或year[urldate].url.doi \end{codetex} \subsubsection{电子资源/online} -\begin{refentry}{}{} +\begin{refentry}{}{}%[break at=0.4cm/0pt] 电子资源对应的biblatex的entrytype为:online或electronic或者www。文献类型标识用EB表示。(注意:biblatex将electronic或www作为online条目类型的别名,对于标准样式来说这两者出现在bib文件中等同于online,但这种等同标准样式是在驱动层进行处理的,而gb7714样式还需要处理文献类型标识,本样式文件做了进一步支持。因此bib文件中也可以直接使用electronic和www) \paragraph{其著录格式为}(参考GB/T 7714-2015第4.6节):\\ @@ -483,12 +533,12 @@ author.title:number[usera].date或year[urldate].url.doi 其对应的biblatex数据域为: \begin{codetex}{电子资源/online/electronic/www条目的域格式}{eg:onlinefieldfmt} -author.title:subtitle或titleaddon[usera].address或location:publisher,date或year:pages(date/enddate/eventdate)[urldate].url.doi +author.title[usera].organization,date或year:pages(date/enddate/eventdate)[urldate].url.doi \end{codetex} -注意: 尽管GB/T 7714-2015中给出的著录格式包含出版地和出版者,但通常情况下具有出版地和出版者的文献会归类到其它条目类型中,至于存在的url信息,只要标识文献载体即可。所以一般情况下(出版地:出版者,出版年:引文页码)这些信息在online[EB]这一类型中很少出现,所以默认情况下,gb7714-2015样式并不处理这些信息,而只包括由date表示的更新或修改日期,urldate标识的引用日期以及后面的内容。如果存在出版信息的复杂情况,更新或修改日期可以利用enddate/eventdate表示,但gb7714-2015样式中需要做相应的处理。 +注意: 尽管GB/T 7714-2015中给出的著录格式包含出版地和出版者,但通常情况下具有出版地和出版者的文献会归类到其它条目类型中,至于存在的url信息,只要标识文献载体即可,即一般情况下(出版地:出版者,出版年:引文页码)这些信息很少出现在online[EB]条目中。因此默认情况下,gb7714-2015样式只处理出现organization中的出版项信息,此外用date表示更新或修改日期,urldate表示引用(访问)日期。如果出现复杂情况,更新或修改日期还可以利用enddate/eventdate表示。 -以上是GB/T 7714-2015直接给出的条目类型,但还有一些类型并没有给出著录格式,但在例子中也有所体现,本样式文件根据这些例子,给出了著录格式。 +以上是GB/T 7714-2015直接给出著录格式的条目类型,还有一些类型并没有给出具体格式,但在例子中也有所体现,本样式文件根据这些例子,给出了著录格式。 \subsubsection{汇编或论文集/collection} @@ -505,9 +555,23 @@ author.title:subtitle或titleaddon[usera].address或location:publisher,date或ye \paragraph{其著录格式为} 采用与inbook一致的格式。 \end{refentry} +\subsubsection{会议录或会议文集/proceedings} +\begin{refentry}{}{} +会议文集的biblatex的entrytype为:proceedings。文献类型标识用C表示。 + +\paragraph{其著录格式为} 采用与book类似的格式。 +\end{refentry} + +\subsubsection{会议文集中析出的文献/inproceedings} +\begin{refentry}{}{} +会议文集中析出的文献对应的biblatex的entrytype为:inproceedings。文献类型标识用C表示。(注意:biblatex将conference作为inproceedings条目类型的别名,对于标准样式来说conference出现在bib文件中等同于inproceedings,但这种等同,标准样式是在驱动层进行处理的,而gb7714-2015样式还需要处理文献类型标识,本样式文件做了进一步支持。因此bib文件中也可以直接使用conference。) + +\paragraph{其著录格式为} 采用与inbook类似的格式。 +\end{refentry} + \subsubsection{学位论文/thesis} \begin{refentry}{}{} -学位论文对应的biblatex的entrytype为:thesis。文献类型标识用D表示。(注意:biblatex将mastersthesis或phdthesis作为thesis条目类型的别名,对于标准样式来说这两者出现在bib文件中基本等同于thesis,但却会增加type信息。但这种等同,标准样式是在驱动层进行处理的,而gb7714样式还需要处理文献类型标识并且不需要type信息,本样式文件做了进一步支持。因此bib文件中也可以使用mastersthesis和phdthesis)。 +学位论文对应的biblatex的entrytype为:thesis。文献类型标识用D表示。(注意:biblatex将mastersthesis或phdthesis作为thesis条目类型的别名,对于标准样式来说这两者出现在bib文件中基本等同于thesis,但却会增加type信息。但这种等同,标准样式是在驱动层进行处理的,而gb7714-2015样式还需要处理文献类型标识并且不需要type信息,本样式文件做了进一步支持。因此bib文件中也可以使用mastersthesis和phdthesis)。 \paragraph{其著录格式为} 由biblatex的标准thesis格式修改得到。 @@ -516,12 +580,14 @@ author.title:subtitle或titleaddon[usera].address或location:publisher,date或ye 其对应的biblatex数据域为: \begin{codetex}{学位论文/thesis/mastersthesis/phdthesis条目的域格式}{eg:thesisfieldfmt} -author.title:subtitle或titleaddon[usera].translator.address或location:publisher,date或year:pages[urldate].url.doi +author.title[usera].translator.location:institution,date或year:pages[urldate].url.doi \end{codetex} +注意: thesis和后面report及manual的出版者用institution域表示,体现的是机构而不是一般的出版社。 + \subsubsection{报告/report} \begin{refentry}{}{} -报告对应的biblatex的entrytype为:report。文献类型标识用R表示。(注意:biblatex将techreport作为report条目类型的别名,对于标准样式,techreport出现在bib文件中等同于report,但这种等同标准样式是在驱动层处理的,而gb7714样式还需要处理文献类型标识,本样式文件做了进一步支持。因此bib文件中也能直接使用techreport类型。) +报告对应的biblatex的entrytype为: report。文献类型标识用R表示。(注意:biblatex将techreport作为report条目类型的别名,对于标准样式,techreport出现在bib文件中等同于report,但这种等同标准样式是在驱动层处理的,而gb7714-2015样式还需要处理文献类型标识,本样式文件做了进一步支持。因此bib文件中也能直接使用techreport类型。) \paragraph{其著录格式为} (由biblatex的标准report格式修改得到,注意当出版地和出版者不存在时忽略这两项) @@ -530,10 +596,11 @@ author.title:subtitle或titleaddon[usera].translator.address或location:publishe 其对应的biblatex数据域为: \begin{codetex}{报告/report/techreport条目的域格式}{eg:reportfieldfmt} -author.title:subtitle或titleaddon[usera].translator.type number.version.address或location:publisher,date或year:pages[urldate].url.doi +author.title[usera].translator.type number.version.location:institution,date或year:pages[urldate].url.doi \end{codetex} 注意:因为有的报告文献可能存在类型和报告号信息,比如AIAA 9076或AD 730029等,所以著录格式需要有所体现,而这两个数据体现在type和number两个域中,或者在version域中体现也可,而对于标题中的出现的报告号,可以直接在标题或子标题或者附加标题中体现。 +需要注意: report和后面manual的版本信息放在version域中,而不是book等条目的edition域中。 \subsubsection{手册或档案/manual} \begin{refentry}{}{} @@ -542,7 +609,6 @@ author.title:subtitle或titleaddon[usera].translator.type number.version.address \paragraph{其著录格式为} 直接采用report的格式,而不是标准样式中的manual格式,这种方式下,当没有出版地和出版者时,完全省略,因为GB/T 7714-2015并没有明确这种情况怎么处理。 \end{refentry} -需要注意: report和manual的版本信息放在version域中,而不是book等条目的edition域中。report的机构采用的是institution域,而manual默认是organization域,为了直接使用report的样式,直接把organization域转成institution域。而档案就直接用手册表示。 \subsubsection{未出版物/unpublished} \begin{refentry}{}{} @@ -551,40 +617,34 @@ author.title:subtitle或titleaddon[usera].translator.type number.version.address \paragraph{其著录格式为} 也直接采用report格式处理。 \end{refentry} -\subsubsection{会议录或会议文集/proceedings} -\begin{refentry}{}{} -会议文集的biblatex的entrytype为:proceedings。文献类型标识用C表示。 - -\paragraph{其著录格式为} 采用与book类似的格式。 -\end{refentry} - -\subsubsection{会议文集中析出的文献/inproceedings} -\begin{refentry}{}{} -会议文集中析出的文献对应的biblatex的entrytype为:inproceedings。文献类型标识用C表示。(注意:biblatex将conference作为inproceedings条目类型的别名,对于标准样式来说conference出现在bib文件中等同于inproceedings,但这种等同,标准样式是在驱动层进行处理的,而gb7714样式还需要处理文献类型标识,本样式文件做了进一步支持。因此bib文件中也可以直接使用conference。) - -\paragraph{其著录格式为} 采用与inbook类似的格式。 -\end{refentry} - \subsection{标准的其它要求与实现} 除了上一小节针对不同条目类型的著录格式要求外,GB/T 7714-2015还有一些细节要求比如文字、符号等需要满足,可以采用如下方法: -\subsubsection{多语言文献} +\subsubsection{多语言文献}\label{sec:multilan:implement} \begin{property}{}{} -某些期刊对于参考文献有双语文献要求,那么可以通过条目集类型(set)进行设置,这对于专著和连续出版物的析出文献来说有可能是常用的。具体要求见GB/T 7714-2015第6.1节。 +某些期刊对于参考文献有双语文献要求,那么可以通过条目集类型(set)/或者条目关联(related)来解决。具体要求见GB/T 7714-2015第6.1节。 \end{property} +\paragraph{利用条目集类型满足双语文献要求} + 使用条目集类型(set)时,有静态和动态两种方法: -动态方法的使用更方便,直接在写文档时候,将双语文献设置成set,然后引用set的bibtex键。比如: +动态方法使用更为方便,在写文档时候,直接利用defbibentryset设置双语文献的set,然后引用set的bibtex键。比如: \begin{codetex}{设置set条目集用于双语文献动态方法}{eg:setforbilangentry} \defbibentryset{bilangyi2013}{易仕和2013--,Yi2013--} -5. 专著,双语文献引用\cite{bilangyi2013} +专著,双语文献引用\cite{bilangyi2013} \end{codetex} -得到的参考文献打印结果见\ref{sec:test:book}节的参考文献表。 +得到的参考文献打印结果见\ref{sec:test:book}节的参考文献表。\bc{需要注意的是:因为set条目类型除了子条目关键词信息外,并无其他信息,因此它的标注标签通常会是空的。这个问题目前的解决方法是设置一个指定格式和内容中间无空格无英文逗号的关键字,用它来作为标签,这个问题与biblatex版本有关,v3.7及之前版本没有这个问题,因为set中还带有第一个子条目的信息,但v3.8及以上版本就不行了}。比如: +\begin{codetex}{设置set条目集用于双语文献动态方法}{eg:setforbilangentry} +\defbibentryset{易仕和,等,2013}{易仕和2013--,Yi2013--} +专著,双语文献引用\cite{易仕和,等,2013} +\end{codetex} +注意到“易仕和,等,2013”中的逗号是中文全角逗号,这样使得“易仕和,等,2013”以一个整体字符串当作关键字,而不会被分开解析。但是这种解决方案中的中文全角逗号与其它标签的英文逗号的差异使得该问题并没有完美解决。对于v3.8及以上版本,可以利用后面介绍的关联(related)方法来解决,或者也可以用静态方法手动添加标签来解决。 -静态方法是在bib源文件中给出条目集(set)并使用biber后端,条目的域信息采用如下方法定义: +静态方法是在bib源文件中给出条目集(set)并使用biber后端进行解析,条目的域信息采用如下方法定义: +%当使用bibtex后端时,则需要进一步设置,具体参考biblatex宏包说明文档。 \begin{codetex}{设置set条目集用于双语文献静态方法}{eg:set:static} @Set{set1, entryset = {key1,key2,key3}, @@ -594,22 +654,67 @@ entryset = {key1,key2,key3}, entryset = {易仕和2013--,Yi2013--}, } \end{codetex} -当使用bibtex后端时,则需要进一步设置,具体参考biblatex宏包说明文档。 + +需要注意,使用静态条目集时,如果仅采用上述这般简单设置,中文排序会出现问题,条目集会出现在文献表末尾,这是因为条目集没有设置userb域用于排序,而通常的条目都是利用动态数据修改设置了userb域,在biber运行中因为要解析文献集,所以无法对userb域进行处理。但动态方法没有这一问题,因为其解析过程直接会利用第一个子条目的排序信息。静态方法的这个问题可以在set条目中手动设置userb域来修正。此外,对于v3.8以上版本的biblatex,无论动态方法还是静态方法,条目集不复制第一个子条目信息,因此引用时也无法生成标注标签,这就是前面介绍动态方法时讨论过的问题,该问题也可以通过在set条目中手动设置label域来解决。比如: + +\begin{codetex}{在bib文件中正确设置set条目集的静态方法}{eg:set:staticright} +%在bib文件中静态设置set条目如下,其中: +%手动设置userb域用于解决排序问题 +%手动设置label域用于解决标注标签问题 +@Set{bilangyi2013, +entryset = {易仕和2013--,Yi2013--}, +label={易仕和, 等, 2013}, +userb={cn} +} +\end{codetex} + +\paragraph{利用条目关联满足双语文献要求} + +除上述给出的条目集方案外,关联条目方法则是另一种可行方案,该方案的讨论可以见“Again about the \@ set label for authoryear style”\footnote{https://github.com/plk/biblatex/issues/681}。该方案同样也有静态和动态两种方法,静态就是修改bib文件内容,动态则是在源文档中做设置。 + +静态方法很简单,bib文件中条目设置如例\ref{eg:related:staticright}所示,它能解决双语同时显示的问题,也能解决排序和标注标签问题,唯一的问题在于修改了bib文件后当不需要双语文献时,它还需要改回来,这会带来不便,因此可以考虑下面的动态方法,但要注意动态方法需要利用多个DeclareStyleSourcemap,因此该方法只适用于biblatex3.7及以上版本。 + +\begin{codetex}{在bib文件中正确设置关联条目的静态方法}{eg:related:staticright} +%在bib文件中静态设置条目如下,其中: +%易仕和2013--条目中增加了related域用于关联其对应的英文条目Yi2013-- +@Book{易仕和2013--, + Title = {超声速和高超声速喷管设计}, + Address = {北京}, + Author = {易仕和 and 赵玉新 and 何霖 and 张敏莉}, + Publisher = {国防工业出版社}, + Year = {2013} + related = {Yi2013--} +} +@Book{Yi2013--, + Title = {Supersonic and hypersonic nozzle design}, + Address = {BeiJing}, + Author = {Yi, S H and Zhao, Y X and He, L and Zhang, M L}, + Publisher = {National Defense Industry Press}, + Year = {2013} +} +\end{codetex} + +动态方法利用动态数据修改自动添加related域,避免对bib文件做直接修改。本样式中对该过程进行了封装,定义一个新的命令defdoublelangentry,例如: +\begin{codetex}{设置关联条目的动态方法}{eg:related:dynamic} +\defdoublelangentry{易仕和2013--}{Yi2013--} +\end{codetex} + +使用该命令后,可以引用主条目“易仕和2013--”生成双语文献。但要注意由于DeclareStyleSourcemap命令只能在导言区中使用,因此defdoublelangentry命令也只能出现在导言区中,这也是相比条目集动态方法的唯一遗憾。 +实现的具体细节见\ref{sec:data:mdf:forrelated}节。 + \subsubsection{数字} \begin{property}{}{} 用户给bib源文件录入数字时,应按照GB/T 7714-2015第6.2节要求用阿拉伯数字表示。 - -为了符合西文文献责任者的字母大小写习惯,本bbx样式文件,通过判断是否存在first name来确定是否是个人作者,当存在first name 时认为是个人作者,不存在则是机构作者,当是个人作者时lastname按GB/T 7714-2015要求全大写,是机构作者则仅大写首字母。所以对于仅有lastname的个人作者,填入信息英文姓的字母请全用大写。个人著者的格式要求参考GB/T 7714-2015第6.3节。 \end{property} \subsubsection{英文字母} \begin{property}{}{} -用户给bib源文件录入出版项、西文期刊名缩写以及西文文献的字母时,应按照GB/T 7714-2015第6.4节,第6.5节,6.6节要求,使用符合要求的习惯用法和大小写方式。 +为了符合西文文献责任者的字母大小写习惯,本bbx样式文件,通过判断是否存在first name来确定是否是个人作者,当存在first name 时认为是个人作者,不存在则是机构作者,当是个人作者时lastname按GB/T 7714-2015要求全大写,是机构作者则仅大写首字母。所以对于仅有lastname的个人作者,填入信息英文姓的字母请全用大写。个人著者的格式要求参考GB/T 7714-2015第6.3节。 -本样式文件使用原样打印的方式进行处理。 +用户给bib源文件录入出版项、西文期刊名缩写以及西文文献的字母时,应按照GB/T 7714-2015第6.4节,第6.5节,6.6节要求,使用符合要求的习惯用法和大小写方式。本样式文件使用原样打印的方式进行处理。 \end{property} \subsubsection{标点} @@ -625,7 +730,7 @@ entryset = {易仕和2013--,Yi2013--}, \begin{property}{}{} 用户给bib源文件录入引文的责任者信息时,当责任者为多级机关团体时,用户填入auther数据信息时,应按照GB/T 7714-2015第8.1.4节要求,用英文句点.号分隔。 -当责任者是个人英文名,且具有名、姓、前缀和后缀,应按照第\ref{sec:field}节给出姓名录入方式处理才能才能正确解析,比如:von Peebles, Jr., P. Z.,其中von为姓前的前缀,Jr.为姓后的后缀,P. Z.为缩写名(包括first name 和middle name)。 +当责任者是个人英文名,且具有名、姓、前缀和后缀,应按照第\ref{sec:bib:bibtex}节给出姓名录入方式处理才能才能正确解析,比如:von Peebles, Jr., P. Z.,其中von为姓前的前缀,Jr.为姓后的后缀,P. Z.为缩写名(包括first name 和middle name)。 本样式文件实现了GB/T 7714-2015第8.1节要求的责任者样式,能自动判断责任者是中文还是英文,并分别处理。并且设置了全局选项useprefix=true,可以使用前缀。 \end{property} @@ -635,7 +740,7 @@ entryset = {易仕和2013--,Yi2013--}, \begin{property}{}{} 用户在给bib源文件录入引文题名信息时,不需要给出文献类型标识/文献载体标识。同一责任者的合订题名,应用户根据GB/T 7714-2015 第8.2.1节的要求,在多个题名间用英文分号分隔,并整体录入到title数据域中。而分卷号,卷次,册次等信息时,除了专利号用number域录入外,其它可以直接在title数据域或者subtitle/titleaddon等数据域中给出。 -本样式文件实现了符合GB/T 7714-2015第8.2节要求的格式,能根据条目类型直接给出文献类型标识/文献载体标识并设置给自定义域usera,并在biblatex的参考文献条目驱动中直接使用,各不同类型文献的文献类型标识/文献载体标识,参考GB/T 7714-2015表B.1和B.2。 +本样式文件实现了符合GB/T 7714-2015第8.2节要求的格式,能根据条目类型选择文献类型标识/文献载体标识,自动录入到自定义域usera中,并在各类参考文献条目驱动中直接使用。各不同类型文献的文献类型标识/文献载体标识,参考GB/T 7714-2015表B.1和B.2。 \end{property} \subsubsection{版次} @@ -649,28 +754,28 @@ entryset = {易仕和2013--,Yi2013--}, \subsubsection{出版项} \begin{property}{}{} -用户在给bib源文件录入出版项信息时,当出版日期有其它形式的纪年时,将其置于公元纪年后面的()内,并整体录入year或date数据域,比如1845(清同治四年)。而引用日期应录入到urldate数据域。当除了出版日期外还有修改更新日期等时,可在year或date数据域录入第二个日期,并用/符号与前一个出版日期隔开。 +用户在给bib源文件录入出版项信息时,当出版日期有其它形式的纪年时,将其置于公元纪年后面的()内,并整体录入到 year 数据域中,比如: 1845(清同治四年)。而引用日期应录入到 urldate 数据域。当除了出版日期外还有修改/更新日期等时,可在year或date数据域录入第二个日期,并用/符号与前一个出版日期隔开。而专利的公告日期和其它条目类型的出版年应录入到 date 域中。 本样式文件实现了GB/T 7714-2015第8.4节要求的格式。当出版地和出版者缺省时,中英文自动区分处理。对于用/符号隔开的两个日期,biblatex后端biber能自动解析,后一个日期数据自动解析到endyear等域可作为修改日期等在样式文件中使用。 \end{property} \subsubsection{页码} \begin{property}{}{} -用户在给bib源文件录入页码信息时,可以在pages域中根据需要录入可解析的页码(即用整数表示页码,起讫页码用-分隔),比如81-86。也可以直接录入需要打印的信息,比如序2-3等。 +用户在给bib源文件录入页码信息时,可以在pages域中根据需要录入可解析的页码(即用整数表示页码,起讫页码用-分隔),比如: 81-86。 也可以直接录入需要打印的信息,比如: 序2-3等。 -本样式实现了GB/T 7714-2015第8.5,8.8.2节的要求,对于能解析的页码自动解析,对于不能解析的页码原样输出。 +本样式实现了GB/T 7714-2015第8.5,8.8.2节的要求,对于能解析的页码自动解析,对于不能解析的页码则原样输出。 \end{property} \subsubsection{访问路径URL和DOI} \begin{property}{}{} -用户在给bib源文件录入获取和访问路径、数字对象唯一标识符信息时,将访问路径录入到url域中,数字对象唯一标识符格式录入到doi域中即可。 +用户在给bib源文件录入获取和访问路径、数字对象唯一标识符信息时,将访问路径录入到url域中,数字对象唯一标识符录入到doi域中即可。 本样式文件实现了GB/T 7714-2015第8.6,8.7节要求的格式。 \end{property} \subsubsection{卷和期} -\begin{property}{}{} -用户在给bib源文件录入卷、期等信息时,如\ref{sec:field}节中所说,合期的期号用/间隔,比如9/10,填入number域,报纸的版次也填入number域。 +\begin{property}{}{}%[break at=0.4cm/0pt] +用户在给bib源文件录入卷、期等信息时,如\ref{sec:bib:bibtex}节中所述,合期的期号用/间隔,比如9/10,填入number域,报纸的版次也填入number域。 本样式文件实现了GB/T 7714-2015第8.8节要求的析出文献相关格式。 \end{property} @@ -783,309 +888,357 @@ and keyword=standard \printbibliography[heading=subbibliography,filter=standard,title=【标准文献-著录格式示例】] \printbibliography[heading=subbibliography,type=inbook,notkeyword=standard,title=【专著中析出的文献-著录格式示例】] \printbibliography[heading=subbibliography,type=article,notkeyword=news,title=【期刊中析出的文献-著录格式示例】] -\printbibliography[heading=subbibliography,type=article,keyword=news,title=【报纸析出的文献-著录格式示例】] +\printbibliography[heading=subbibliography,keyword=news,title=【报纸析出的文献-著录格式示例】]%type=article,有时type是newspaper所以不指定type为article \printbibliography[heading=subbibliography,type=online,title=【电子资源-著录格式示例】] \end{refsection} -\subsection{测试:专著book和专著中的析出文献inbook}\label{sec:test:book} +\subsection{测试:专著book和专著中的析出文献inbook及标准standard文献}\label{sec:test:book} -\begin{refsection} +专著book和专著中的析出文献inbook及标准standard文献测试,参见: -\defbibentryset{bilangyi2013}{易仕和2013--,Yi2013--} -\begin{enumerate} - \item 中文文献存在信息缺省的情况测试 -\cite{booknodate,booknolocation,booknopages,booknopublisher,booknopublishernoyear,booknopublisherpage, 余敏2001-179-193,余敏2001-179-193a,余敏2001-179-193b,余敏2001-179-193c,booknoauthor} - \item 英文文献信息缺省情况以及英文个人作者判断测试 -\cite{Parsons2000a--,Parsons2000b--,Parsons2000--,Parsons2000nodate--, -Parsons2000noloc--,Parsons2000nopub--,Parsons2000nopubnoyear--, -Parsons2000nopubpages--,Parsons2000noauthor--} - \item 年份信息有额外说明的文献比较测试\cite{汪昂1912--,汪昂1881--,王夫之1845--} - \item 页脚中引用和打印文献表\footnote{参考文献在脚注中引用\footcite{赵学功2001--}} - \footfullcite{赵学功2001--} - \item 专著的双语文献引用测试\cite{bilangyi2013} - \item 专著带前后缀的作者名\cite{Peebles2001-100-100} - \item 带页码的引用,使用pagescite命令。 -\pagescite{Peebles2001-100-100}\pagescite[][201-301]{Peebles2001-100-100} -\parencite[见][49页]{Miroslav2004--}\cite[见][49页]{蔡敏2006--} - \item 作者年制文中已有作者只需要年份和页码的情况,使用命令yearpagescite,而顺序制的情况下该命令与pagescite命令作用相同。比如: 见赵耀东\yearpagescite[][205]{赵耀东1998--}和Simon\yearpagescite[][15]{Simon2001--}的文献。 - \item 专著更多测试 -\cite{GPS1988--}\cite{顾炎武1982--}\cite{PIGGOT1990--}\cite{PEEBLES2001--} -\cite{Poisel2013--}\cite{张伯伟2002--}\cite{2009-155-155} -\cite{GPS1988--,CRANE1972--,CRAWFPRD1995--,Gradshteyn2000--,IFLAI1977--,Kinchy2012-50-50,Lin2004--,Miroslav2004--,Mittelbach2004--,OBRIEN1994--} -\cite{PEEBLES2001--,Peebles2001-100-100,PIGGOT1990--,Poisel2013--,Praetzellis2011-13-13,Proakis2007--,Reed2005--,ROOD2001--,Ross2010--,Simon2004--,Simon2001--,Stueber2001--,Yi2013--,YUFIN2000--, 埃伯哈德$ullet$蔡德勒等2012--,蔡敏2006--,陈希孺2009--,陈志杰2006--,樊昌信2005--,顾炎武1982--,广西壮族自治区林业厅1993--,郭文彬2006--,候文顺2010-119-119,胡承正2010-112-112,胡广书2012--,胡伟2011--,蒋有绪1998--,库恩2012--,李云霞2009--,廖平2012--,刘海洋2013--,罗斯基2009--,美国妇产科医师学会2010-38-39,鸟哥--,孙玉文2000--,唐绪军1999-117-121,同济大学数学系2014--,王雪松2010--,辛希孟1994--,阎毅2013--,杨林2015--} -\cite{张伯伟2002--,赵凯华1995--,赵学功2001--,赵耀东1998--,中国企业投资协会2013--,中国社会科学院语言研究所词典编辑室1996--,庄钊文2007--,1962-50-50,2009-155-155,booknoauthor,Parsons2000noauthor--} +顺序编码制: +\href{run:./egbooks.tex}{egbooks.tex}, +\href{run:./egbooks.pdf}{egbooks.pdf}。 -\end{enumerate} +作者年制: +\href{run:./egbooksay.tex}{egbooksay.tex}, +\href{run:./egbooksay.pdf}{egbooksay.pdf}。 -\printbibliography[heading=bibliography,title=【专著】] -\end{refsection} +\subsection{测试:连续出版物periodical和连续出版物中的析出文献article} +连续出版物periodical和连续出版物中的析出文献article文献测试,参见: -\begin{refsection} +顺序编码制: +\href{run:./egjournal.tex}{egjournal.tex}, +\href{run:./egjournal.pdf}{egjournal.pdf}。 -\begin{enumerate} - \item 专著的析出文献\cite{马克思2013-302-302}\cite{王夫之2011-1109-1109} - \cite{BUSECK1980-117-211,MARTIN1996-85-96,WEINSTEIN1974-745-772,白书农1998-146-163,陈晋镳1980-56-114,程根伟1999-32-36,楼梦麟2011-11-12,马克思1982-505-505,马克思2013-302-302,钟文发1996-468-471,1977-49-49,1988-590-590,王夫之2011-1109-1109} -\end{enumerate} +作者年制: +\href{run:./egjournalay.tex}{egjournalay.tex}, +\href{run:./egjournalay.pdf}{egjournalay.pdf}。 -\printbibliography[heading=bibliography,title=【专著中的析出文献】] -\end{refsection} -\begin{refsection} -\begin{enumerate} - \item 标准引用\cite{国家标准局信息分类编码研究所1988-59-92,国家环境保护局科技标准司1996-2-3, 全国广播电视标准化技术委员会2007-1-1,全国文献工作标准化委员会第七分委员会1986--,全国信息文献标准化技术委员会2010-3-3,中华人民共和国国家质量监督检验检疫总局2015,standardinfoiso158} -\end{enumerate} +\subsection{测试:专利文献patent} +专利文献patent文献测试,参见: -\printbibliography[heading=bibliography,title=【标准】] -\end{refsection} +顺序编码制: +\href{run:./egpatent.tex}{egpatent.tex}, +\href{run:./egpatent.pdf}{egpatent.pdf}。 -\subsection{测试:汇编collection和汇编中的析出文献incollection} -\begin{refsection} +作者年制: +\href{run:./egpatentay.tex}{egpatentay.tex}, +\href{run:./egpatentay.pdf}{egpatentay.pdf}。 -\begin{enumerate} - \item 汇编文集类似于book和inbook\cite{韩吉人1985-90-99}\cite{中国职工教育研究会1985--} -\end{enumerate} +\qd{注意:文献\{刘加林1993--\}的location定义了中国,GB/T 7714-2015中其实并不需要该域,但这里并没有去掉,先放着也许以后标准修改后可能用的着。如果要去掉,那么将bib文件中该条目的location去掉就行了。} -\printbibliography[heading=bibliography,title=【汇编或文集】] -\end{refsection} +\subsection{测试:电子资源或在线资源online} +在线资源online文献测试,参见: +顺序编码制: +\href{run:./egonline.tex}{egonline.tex}, +\href{run:./egonline.pdf}{egonline.pdf}。 -\subsection{测试:连续出版物periodical和连续出版物中的析出文献article} +作者年制: +\href{run:./egonlineay.tex}{egonlineay.tex}, +\href{run:./egonlineay.pdf}{egonlineay.pdf}。 -\begin{refsection} +\qd{注意:对于作者年制,这里有4篇文献都是noauthor,有两篇有年份可以轻易分开,还有两篇没有年份存在歧义,所以在标注中用了[n.d.]加a和b分开,但在参考文献表中,各个版本的biblatex表现是不同的,其中3.4版因为进行newbibmacro*\{date+extrayear\}的定义时候,首先判断iffieldundef\{\textbackslash thefield\{datelabelsource\}year\},当不存在datelabelsource的值+year的域时,就不再添加了。如果需要加extrayear也可以修改出来,但其实并无必要。这与标注中用的newbibmacro*\{cite:labelyear+extrayear\}(在authoryear.cbx文件中)的定义是不一样的。更多的内容详见 +\ref{sec:dateinlabel}节。\par} -\begin{enumerate} - \item 期刊完整引用\cite{中国地质学会1936--,中国图书馆学会1957--,AAAS1883--,中华医学会湖北分会1984--} -\end{enumerate} -\printbibliography[heading=bibliography,title=【连续出版物】] -\end{refsection} +\subsection{测试:学位论文thesis} +学位论文thesis文献测试,参见: -\begin{refsection} -\defbibentryset{bilangchenzhang}{张敏莉2007-500-503,Zhang2007-500-503} +顺序编码制: +\href{run:./egthesis.tex}{egthesis.tex}, +\href{run:./egthesis.pdf}{egthesis.pdf}。 -\begin{enumerate} - \item 期刊文章引用和引用标签测试\cite{Chiani1998-2998-3008,Chiani2004-1312-1318,Chiani2004-1312-1318a, -Chiani2004-1312-1318b,Chiani2003-840-845,Chiani2009-231-254} - \item doi和卷期样式\cite{储大同2010-721-724} - \item 双语言引用测试\cite{bilangchenzhang} - \item 合期期刊测试\cite{储大同2010-721-724m} - \item 报纸引用测试\cite{丁文祥2000--,傅刚2000--,刘裕国2013-01-12--,张田勤2000--} - \item 更多测试 - \cite{Andersen1995-42-49,Andrisano1998-1383-1401,CAPLAN1993-61-66,Chiani1998-2998-3008,Chiani2004-1312-1318,Chiani2009-231-254,CHRISTINE1998-331-332,Coulson2004-2277-2287,Coulson2006-2484-2492,Dardari2004-1557-1567,Dardari1999-1709-1721,DESMARAIS1992-605-609,Franz2013-1053-1062,Giorgetti2005-384-389,Giorgetti2005-2139-2149,Giorgetti2005-1037-1042,Haemaelaeinen2002-1712-1721,HEWITT1984-205-218,Holtzman1992-243-247,Hu2006-1720-1724,KANAMORI1998-2063-2064,KENNEDY1975-311-386,KENNEDY1975-339-360,McEliece1984-44-53,Milstein1982-436-446,Moeneclaey2001-497-505,Molisch2006-3151-3166,Nasri2007-4090-4100,articlemorenames,Park2010-696-715,Pinto2009-1268-1282,Quek2007-2126-2139,Saito2006-169-176,Shi2007-1118-1128,Snow2007-1736-1746,STIEG1981-549-560,Walls2013-399-418,Zhang2007-500-503,Zhao2002-1684-1691, 陈高峰2011-230-232,陈建军2010-93-93,陈金成2001-1861-1864,储大同2010-721-724,储大同2010-721-724m,高光明1998-60-65,高翔2015-26-31,江向东1999-4-4,李炳穆2000-5-8,李晓东1999-101-106,梁振兴1999-24-32,刘彻东1998-38-39,刘晨2007-400-404,刘武1999-2481-2488,卢秋红2009-247-251,鲁明羽1998-290-295,莫少强1999-1-6,谭跃进2011-441-445,陶仁骥1984-527-527,王雪峥2013-249-254,伍江华2010-70-74,亚洲地质图编目组1978-194-208,杨洪升2013-56-75,杨友烈1999-60-65, 于潇2012-1518-1523,詹广平2013-8-10,张敏莉2007-500-503,张庆杰2009-30-33,张晓琴2011--,周学武2013-49-52,郜宪林2001-114-116} -\end{enumerate} +作者年制: +\href{run:./egthesisay.tex}{egthesisay.tex}, +\href{run:./egthesisay.pdf}{egthesisay.pdf}。 -\printbibliography[heading=bibliography,title=【连续出版物中的析出文献】] -\end{refsection} -\subsection{测试:专利文献patent} +\subsection{测试:报告report、手册manual和档案、未出版物unpublished} +报告report、手册manual和档案、未出版物unpublished文献测试,参见: -\begin{refsection} +顺序编码制: +\href{run:./egreport.tex}{egreport.tex}, +\href{run:./egreport.pdf}{egreport.pdf}。 -\begin{enumerate} - \item 专利引用\cite{KOSEKI2002--,TACHIBANA2002--,河北绿洲生态环境科技有限公司2001--,姜锡洲1989--,刘加林1993--,西安电子科技大学2002--,张凯军2012-04-05--} -\end{enumerate} +作者年制: +\href{run:./egreportay.tex}{egreportay.tex}, +\href{run:./egreportay.pdf}{egreportay.pdf}。 -\qd{注意:文献\cite{刘加林1993--}的location定义了中国,GB/T 7714-2015中其实并不需要该域,但这里并没有去掉,先放着也许以后标准修改后可能用的着。如果要去掉,那么将bib文件中该条目的location去掉就行了。} -\printbibliography[heading=bibliography,title=【专利】] -\end{refsection} +\subsection{测试:会议文集proceedings和会议文集中析出的文献inproceedings及汇编collection和汇编中的析出文献incollection} -\subsection{测试:电子资源或在线资源online} +proceedings和inproceedings及collection和incollection文献测试,参见: -\begin{refsection} +顺序编码制: +\href{run:./egprcdorinprcd.tex}{egprcdorinprcd.tex}, +\href{run:./egprcdorinprcd.pdf}{egprcdorinprcd.pdf}。 -\begin{enumerate} - \item 电子资源\cite{Commonwealth--,HOPKINSON--,OMG2003--,OCLC--,李强2012-05-03--,萧钰2001--,Alliance--,Dublin2012-06-14--,JabRef中文手册--,1989--} -\end{enumerate} +作者年制: +\href{run:./egprcdorinprcday.tex}{egprcdorinprcday.tex}, +\href{run:./egprcdorinprcday.pdf}{egprcdorinprcday.pdf}。 -\qd{注意:对于作者年制,这里有4篇文献都是noauthor,有两篇有年份可以轻易分开,还有两篇没有年份存在歧义,所以在标注中用了[n.d.]加a和b分开,但在参考文献表中,因为进行newbibmacro*\{date+extrayear\}的定义时候,首先判断iffieldundef\{\textbackslash thefield\{datelabelsource\}year\},当不存在datelabelsource的值+year的域时,就不再添加了。如果需要加extrayear也可以修改出来,但其实并没有必要了。这与标注中用的newbibmacro*\{cite:labelyear+extrayear\}(在authoryear.cbx文件中)的定义是不一样的。\par} +\subsection{测试: 双语文献}\label{sec:doublelang:test} -\printbibliography[heading=bibliography,title=【电子资源】] -\end{refsection} +双语文献的两种实现方法,一是基于set的动态方法,二是基于related的动态方法,参见: +\href{run:./egaligngb7714-2015ay.tex}{egaligngb7714-2015ay.tex}, +\href{run:./egaligngb7714-2015ay.pdf}{egaligngb7714-2015ay.pdf}。 +\subsection{测试: align选项}\label{sec:align:test} +align选项主要控制顺序编码制序号标签三种对齐方式, +分别是: -\subsection{测试:学位论文thesis} +右对齐,参见: +\href{run:./egalignright.tex}{egalignright.tex}, +\href{run:./egalignright.pdf}{egalignright.pdf}。 -\begin{refsection} -\begin{enumerate} - \item 学位论文引用\cite{CALMS1965--,马欢2011-27-27,吴云芳2003--,张若凌2004--,张志祥1998--} -\end{enumerate} +左对齐,参见: +\href{run:./egalignleft.tex}{egalignleft.tex}, +\href{run:./egalignleft.pdf}{egalignleft.pdf}。 -\printbibliography[heading=bibliography,title=【硕博士论文】] -\end{refsection} +项对齐,参见: +\href{run:./egaligngb7714-2015.tex}{egaligngb7714-2015.tex}, +\href{run:./egaligngb7714-2015.pdf}{egaligngb7714-2015.pdf}。 +\subsection{测试: gbpub选项}\label{sec:option:deal} +gbpub选项测试参见: -\subsection{测试:报告report、手册manual和档案、未出版物unpublished} +顺序编码制: -\begin{refsection} -\begin{enumerate} - \item 技术报告引用 - \cite{Calkin2011-8-9,Eggrers--,Humphrey1971--,DTFHA1990--,WHO1970--,汤万金2013-09-30--,中华人民共和国国务院新闻办公室2013-04-16--} - \item 手册引用 - \cite{Lehman2013--,Lehman2015,Mittelbach2015--,Oetiker2011--,Robertson2011--,Sommerfeldt2011--,Umeki2010--, 胡振震2016,吴凌云2007--} - \item 档案引用\cite{中国第一历史档案馆2001--} - \item 未出版物引用\cite{包太雷2013--} -\end{enumerate} +\href{run:./eggbpubtrue.tex}{eggbpubtrue.tex}, +\href{run:./eggbpubtrue.pdf}{eggbpubtrue.pdf}。 -\printbibliography[heading=bibliography,title=【报告、手册和档案、未出版物】] -\end{refsection} +\href{run:./eggbpubfalse.tex}{eggbpubfalse.tex}, +\href{run:./eggbpubfalse.pdf}{eggbpubfalse.pdf}。 +作者年制: -\subsection{测试:会议文集proceedings和会议文集中析出的文献inproceedings} +\href{run:./eggbpubtrueay.tex}{eggbpubtrueay.tex}, +\href{run:./eggbpubtrueay.pdf}{eggbpubtrueay.pdf}。 -\begin{refsection} -\begin{enumerate} - \item 会议论文引用\cite{韩吉人1985-90-99,FOURNEY1971-17-38,FOURNEY1971-17-38a,Nemec1997-209-214,贾东琴2011-45-52,裴丽生1981-2-10,汪学军2002-22-25,张忠智1997-33-34} - \cite{Choi2002-1075-1080,Dardari2002-201-206,Firoozbakhsh2003-473-477,Foerster2002-1931-1935, - Fontana2002-309-313,Giorgetti2005-794-798,Giorgetti2006--,Li2004-21-24,Nasri2008-3616-3621,Piazzo2001--} - \item 会议论文集\cite{陈志勇2011--,雷光春2012--,ROSENTHALL1963--,GANZHA2000--,Babu2014--,中国力学学会1999--,中国社会科学院台湾史研究中心2012--} -\end{enumerate} +\href{run:./eggbpubfalseay.tex}{eggbpubfalseay.tex}, +\href{run:./eggbpubfalseay.pdf}{eggbpubfalseay.pdf}。 -\printbibliography[heading=bibliography,title=【会议文集和论文】] -\end{refsection} -\subsection{测试:当责任者等需要判断中英文的信息中存在编组时的处理} -\begin{refsection} -当责任者等需要判断中英文的信息中存在编组时的处理\cite{IFLAI1977b--,IFLAI1977--} -\cite{r27-BenHadjAlaya-FekiA.2008-1-5,中国企业投资协会2014--,中国企业投资协会2015--} -\printbibliography[heading=bibliography,title=【中英文判断信息中存在编组的测试】] -\end{refsection} -\subsection{测试:采用gb7714-2015顺序编码制样式时的上标和非上标标注}\label{sec:cite:cmd:test} -\begin{refsection} -不带页码的引用(顺序编码制上标,方括号包围;作者年制行内,括号包围。):见文献\cite{Peebles2001-100-100}。 +\subsection{测试: gbnoauthor选项和online条目仅存url信息}\label{sec:opt:noauthor} +online条目信息严重缺失问题测试参见: -不带页码的引用(顺序编码制非上标,方括号包围;作者年制行内,括号包围。):文献\parencite{Miroslav2004--}中。 +\href{run:./eggbnoauthortrue.tex}{eggbnoauthortrue.tex}, +\href{run:./eggbnoauthortrue.pdf}{eggbnoauthortrue.pdf}。 -带页码的引用\\ -标准命令,默认样式:\cite[见][49页]{蔡敏2006--}\parencite[见][49页]{Miroslav2004--}\\ -增加命令,GB/T 7714-2015样式:\pagescite{Peebles2001-100-100} -\pagescite[][201-301]{Peebles2001-100-100} +\href{run:./eggbnoauthorfalse.tex}{eggbnoauthorfalse.tex}, +\href{run:./eggbnoauthorfalse.pdf}{eggbnoauthorfalse.pdf}。 -已有作者只需要年份和页码的情况(使用命令yearpagescite)\\ -作者年制中(上标),顺序编码制中(与pagescite作用相同),比如:见赵耀东\yearpagescite[][205]{赵耀东1998--}和Simon\yearpagescite[][15]{Simon2001--}的文献。 +gbnoauthor选项测试参见: -\printbibliography[heading=bibliography,title=【gb7714-2015顺序编码制上标和非上标标注测试】] -\end{refsection} +\href{run:./eggbnoauthortrueay.tex}{eggbnoauthortrueay.tex}, +\href{run:./eggbnoauthortrueay.pdf}{eggbnoauthortrueay.pdf}。 -\subsection{测试:顺序编码制序号标签三种对齐方式}\label{sec:align:test} -顺序编码制序号标签-右对齐 +\href{run:./eggbnoauthorfalseay.tex}{eggbnoauthorfalseay.tex}, +\href{run:./eggbnoauthorfalseay.pdf}{eggbnoauthorfalseay.pdf}。 -测试文件参考文件:\href{run:./egbibenv-right.tex}{egbibenv-right.tex},其结果如图\ref{bib:env:right}所示。 -\begin{figure}[!htb] - \centering - \fbox{\includegraphics[width=0.9\textwidth,page=2]{egbibenv-right.pdf}} - \caption{顺序编码制序号标签右对齐}\label{bib:env:right} -\end{figure} +\subsection{测试: beamer类} -顺序编码制序号标签-左对齐 +beamer类中的参考文献测试,参见: -测试文件参考文件:\href{run:./egbibenv-left.tex}{egbibenv-left.tex},其结果如图\ref{bib:env:left}所示。 -\begin{figure}[!htb] - \centering - \fbox{\includegraphics[width=0.9\textwidth,page=2]{egbibenv-left.pdf}} - \caption{顺序编码制序号标签左对齐}\label{bib:env:left} -\end{figure} +顺序编码制: +\href{run:./egbeamer.tex}{egbeamer.tex}, +\href{run:./egbeamer.pdf}{egbeamer.pdf}。 -顺序编码制序号标签-项对齐 +作者年制: +\href{run:./egbeameray.tex}{egbeameray.tex}, +\href{run:./egbeameray.pdf}{egbeameray.pdf}。 -测试文件参考文件:\href{run:./egbibenv-gb7714-2015.tex}{egbibenv-gb7714-2015.tex},其结果如图\ref{bib:env:gb}所示。 -\begin{figure}[!htb] - \centering - \fbox{\includegraphics[width=0.9\textwidth,page=2]{egbibenv-gb7714-2015.pdf}} - \caption{顺序编码制序号标签项对齐}\label{bib:env:gb} -\end{figure} +\subsection{测试: 采用gb7714-2015顺序编码制样式时的上标和非上标标注}\label{sec:cite:cmd:test} +\begin{refsection} +不带页码的引用(顺序编码制上标,方括号包围;作者年制行内,括号包围): +\begin{itemize} + \item 见文献\cite{Peebles2001-100-100}。 +\end{itemize} + +不带页码的引用(顺序编码制非上标,方括号包围;作者年制行内,括号包围): +\begin{itemize} + \item 在文献\parencite{Miroslav2004--}中。 +\end{itemize} + +带页码的引用(标准命令,默认样式; 增加命令,GB/T 7714-2015样式): +\begin{itemize} + \item \cite[见][49页]{蔡敏2006--}\parencite[见][49页]{Miroslav2004--}。 + \item \pagescite{Peebles2001-100-100}\pagescite[][201-301]{Peebles2001-100-100} +\end{itemize} + +已有作者只需要年份和页码的情况(命令yearpagescite),作者年制(上标),顺序编码制(与pagescite作用相同): +\begin{itemize} + \item 见赵耀东\yearpagescite[][205]{赵耀东1998--}和Simon\yearpagescite[][15]{Simon2001--}的文献。 +\end{itemize} + +\printbibliography[heading=subbibliography,title=【gb7714-2015顺序编码制上标和非上标标注测试】] +\end{refsection} \subsection{测试: phdthsis等条目类型的兼容性}\label{sec:entrytype:compatibility} \begin{refsection} -测试有些bib文件给出的mastersthsis,phdthsis,www,electronic,standard,techreport,conference条目类型,测试本样式增加的newspaper类型。 - - newspaper:\cite{张田勤2000--}\par - standard:\cite{全国文献工作标准化委员会第七分委员会1986--,国家标准局信息分类编码研究所1988-59-92}\par - conference:\cite{Li2004-21-24}\par - www:\cite{萧钰2001--}\par - electronic:\cite{OMG2003--}\par - techreport:\cite{Humphrey1971--}\par - mastersthsis:\cite{张志祥1998--}\par - phdthsis:\cite{张若凌2004--}\par - -\printbibliography[heading=bibliography,title=【兼容phdthsis等条目类型】] +测试某些bib文件给出的mastersthsis,phdthsis,www,electronic,standard,techreport,conference条目类型,测试本样式增加的newspaper类型。 +\begin{itemize} + \item newspaper:\cite{张田勤2000--} + \item standard:\cite{全国文献工作标准化委员会第七分委员会1986--,国家标准局信息分类编码研究所1988-59-92} + \item conference:\cite{Li2004-21-24} + \item www:\cite{萧钰2001--} + \item electronic:\cite{OMG2003--} + \item techreport:\cite{Humphrey1971--} + \item mastersthsis:\cite{张志祥1998--} + \item phdthsis:\cite{张若凌2004--} +\end{itemize} + +\printbibliography[heading=subbibliography,title=【兼容phdthsis等条目类型】] \end{refsection} -\subsection{测试:处理参考文献信息中\&等特殊字符}\label{sec:entrytype:compatibility} +\subsection{测试: 当责任者等需要判断中英文的信息中存在编组时的处理} \begin{refsection} -文献中\cite{ref-replace-char}的booktitle域中含有\%,\&,\#符号,样式文件自动处理使其符合tex代码规则。 +当责任者等需要判断中英文的信息中存在编组时的处理\cite{IFLAI1977b--,IFLAI1977--} +\cite{r27-BenHadjAlaya-FekiA.2008-1-5,中国企业投资协会2014--,中国企业投资协会2015--} -\printbibliography[heading=bibliography,title=【处理参考文献信息中\&等特殊字符】] +\printbibliography[heading=subbibliography,title=【中英文判断信息中存在编组的测试】] \end{refsection} -\subsection{测试:处理作者年制article中卷信息缺省的标点}\label{sec:article:novol} + + +\subsection{测试: 处理参考文献信息中\&等特殊字符}\label{sec:entrytype:compatibility} +\begin{refsection} +文献中\cite{ref-replace-char}的booktitle域中含有\%,\&,\#符号,样式文件自动处理使其符合tex代码规则。 +\printbibliography[heading=subbibliography,title=【处理参考文献信息中\&等特殊字符】] +\end{refsection} + +\subsection{测试: 处理作者年制article中卷信息缺省的标点}\label{sec:article:novol} \begin{refsection} 文献\cite{刘彻东1998-38-39}\cite{亚洲地质图编目组1978-194-208} \cite{高光明1998-60-65} -\printbibliography[heading=bibliography,title=【author-year style:article without volume】] +\printbibliography[heading=subbibliography,title=【author-year style:article without volume】] \end{refsection} -\subsection{测试: gbpub选项导致的问题}\label{sec:option:deal} +\subsection{测试: 标题中有\textbackslash LaTeX\{\}等名称时的情况}\label{sec:with:latex} \begin{refsection} -文献\cite{AAAS1883--} -\cite{陈志勇2011--} -\cite{萧钰2001--} -\cite{北京交通大学研究生公众号2016--} -\cite{赵学功2001--} +文献\cite{Peebles2001-100-100}\cite{赵凯华1995--}\cite{蒋有绪1998--} -\printbibliography[heading=bibliography,title=【added option test】] +\printbibliography[heading=subbibliography,title=【title with \textbackslash LaTeX\{\}】] \end{refsection} -\subsection{测试: online条目信息严重缺失和gbnoauthor选项导致的问题}\label{sec:opt:noauthor} -\begin{refsection} -文献\cite{olnoauthorcn} -\cite{olnoauthoren} -\cite{Allianceurlonly} -\printbibliography[heading=bibliography,title=【online entry with url info only】] -\end{refsection} \section{样式文件设计、实现、应用}\label{sec:biblatex:mech} -使用biblatex总的感受,biblatex相当完善和强大,笔者制作的样式文件实现的功能和格式只是biblatex功能的很小一部分,biblatex提供的更多功能其实都没有用到。可以说,biblatex作为参考文献问题的一个完整解决方案是名副其实的。笔者在设计样式文件时应用biblatex宏包功能的思路和实现总结如下: +biblatex相当完善和强大,笔者开发样式文件过程中仅使用了biblatex提供的一小部分功能,更多功能其实都没有涉及到。可以说,biblatex作为参考文献问题的一个完整解决方案是名副其实的。笔者在设计样式文件时应用biblatex宏包功能的思路和实现总结如下: \subsection{基本思路} -考虑到我国引用参考文献通常是中英文混合的情况,修改过程没有考虑针对中文的本地化处理,而是在英文本地化的基础(英文的本地化字符串设置文档是english.lbx)上添加一些中文要求的本地化字符串来使用。而为了区分使用中英文的字符串,对参考文献各条目内容进行中英文判断,若中文则使用中文字符串,若英文则使用英文字符串。 +考虑到我国引用参考文献通常是中英文混合的情况,因此不考虑针对中文的本地化处理,而是在英文本地化的基础(英文的本地化字符串设置文档是english.lbx)上添加一些中文要求的本地化字符串来使用。而为了区分使用中英文的字符串,对参考文献条目中数据域内容进行中英文判断,若是中文则使用中文字符串,若是英文则使用英文字符串。 这里的中英文判断主要是在tex中的判断,利用对域中的信息进行检测,当信息的第一个字符是CJK字符时,判断该域的信息是中文的,否则是英文的。 -在作者年制中不同语种文献分集时也有一个中英文判断,主要是利用动态数据修改的方法。利用perl正则表达式判断作者和标题域中是否有中文信息(可以用排除法即匹配不是英文数字标点的字符通常是中文字符,当然最直接的是用unicode的中文字符范围匹配),有的话设置cn,否则为en。事实上这种判断可以进一步扩展,利用强大的perl正则表达式,对所有的关键域进行判断,并在一些域中设置标识,用于tex输出时进行判断,而避免直接使用上述CJK字符判断函数。当然目前还是采用判断CJK字符的方法。 +在作者年制中不同语种文献分集时也有一个中英文判断,主要是利用动态数据修改的方法。利用perl正则表达式判断作者和标题域中是否有中文信息(可以用排除法即匹配不是英文数字标点的字符通常是中文字符,当然最直接的是用unicode的中文字符范围匹配),有的话设置cn,否则为en。事实上这种判断可以进一步扩展,利用强大的perl正则表达式,对所有的关键域进行判断,并在一些域中设置标识,用于tex输出时进行判断,而避免直接使用上述CJK字符判断函数。 +\subsection{利用字符流解析或者xstring宏包的函数}\label{sec:cjkjudge} +\begin{enumerate} +\item cjk字符判断 +\begin{texlist} +%定义判断中文字符的函数,用于判断作者等信息是否由中文字符构成 +%2E00-2E7F 追加标点 +%2E80-2EFF cjk部首补充 +%2FF0-2FFF 表意文字描述符 +%3000-303F cjk符号和标点 +%3300-33FF cjk兼容 +%3400-4DBF cjk统一表意符号扩展 +%4E00-9FBF cjk统一表意符号 +%中文范围4E00-9FA5 +\providetoggle{ifCJKforgbt} +\def\testCJKfirstchar#1#2&{% +\ifnumgreater{`#1}{"2E7F}{\toggletrue{ifCJKforgbt}}{\togglefalse{ifCJKforgbt}}% +}% -\subsection{脚注或旁注文献} - 标注命令自定义,在脚注中引用文献,或者把引文放在脚注中或者旁注中 - \begin{enumerate} - \item 标注命令定义可以使用DeclareCiteCommand命令,设置上标,包围符号,标注前后内容等。针对GB/T7714-2015中关于引用标注的特殊要求,增加了一些方便实现要求的命令比如pagescite、yearpagescite等。 - \item 在footnote的脚注文本中使用footcite命令 - \item 在正文中使用footfullcite命令,见4.11.6 Mixing Programming Interfaces - \end{enumerate} +%利用edef展开或xstring抽取第一个字符判断 +%现在采用xstring方法,避免抽取的是编组符号 +\def\testCJKfirst#1{% +%\edef\tempa{#1}%可以替换下面两句,但失去忽略多余编组功能 +\exploregroups% +\StrChar{#1}{1}[\tempa]% +\expandafter\testCJKfirstchar\tempa&} +\end{texlist} -\subsection{参考文献标题} - 参考文献标题修改并将标题加入目录中 - \begin{enumerate} - \item 利用defbibheading\{bibliography\}[\textbackslash bibname]\{\}重定义标题 - \item 使用bibliography外的其它标题样式比如bibintoc等 - \item 利用titlesec等宏包进行修改标题样式,利用其局部性可以调整生成多种样式。注意: 利用titlesec后,直接在defbibheading\{bibliography\}[\textbackslash bibname]\{\} 中放置居中命令centering无效。 - \end{enumerate} +\item 卷期范围解析 +\begin{texlist} +%用于解析连续出版物,2个卷期的情况 +%\def\multivolumeparsetoparts#1/#2{\def\multivolumefirst{#1}\def\multivolumesecond{#2}} +%\def\multinumberparsetoparts#1/#2{\def\multinumberfirst{#1}\def\multinumbersecond{#2}} +%范围起止间隔符号还是用-,而不是与date相同的/,因为有合期期刊的问题,需要用到/符号 +\newcommand{\multivolparser}[1]{% + \IfSubStr{#1}{-}% + {\StrBefore{#1}{-}[\multivolfirst]\StrBehind{#1}{-}[\multivolsecond]}% + {\def\multivolfirst{#1}\def\multivolsecond{}}% +} + +\newcommand{\multinumberparser}[1]{% + \IfSubStr{#1}{-}% + {\StrBefore{#1}{-}[\multinumberfirst]\StrBehind{#1}{-}[\multinumbersecond]}% + {\def\multinumberfirst{#1}\def\multinumbersecond{}}% +} +%这里利用李志奇的范围数据解析函数,修改后用来处理卷volume的范围。 +%他的这个函数是通用的,只能在使用数据前使用,如果多次使用前一次得到的数据就会被冲掉 +%这里的范围起止判断符号还是用-,而不是与date相同的/,因为有合期期刊的问题,需要用到/符号 +%\def\gbt@parse@range#1{% +% \edef\gbt@tmpa{#1}% +% \expandafter\gbt@parse@rangei\gbt@tmpa-\@empty} +%\def\gbt@parse@rangei#1-#2\@empty{% +% \global\def\gbt@range@first{#1}% +% \def\gbt@tmpa{#2}% +% \ifx\gbt@tmpa\@empty% +% \global\def\gbt@range@second{}% +% \else% +% \gbt@parse@rangeii#2\@empty% +% \fi} +%\def\gbt@parse@rangeii#1-#2\@empty{% +% \def\gbt@tmpa{#2}% +% \ifx\gbt@tmpa\@empty% +% \global\def\gbt@range@second{#1}% +% \else% +% \gbt@parse@rangeii#2\@empty% +% \fi} + +%这里写的number的解析函数,与上面的卷解析函数是类似的。 +%\def\multinumberparser#1{% +% \edef\gbnumbertmp{#1}% +% \expandafter\multinumberparsetoparts\gbnumbertmp-\@empty} +%\def\multinumberparsetoparts#1-#2\@empty{% +% \def\multinumberfirst{#1}% +% \def\gbnumbertmp{#2}% +% \ifx\gbnumbertmp\@empty% +% \def\multinumbersecond{}% +% \else% +% \multinumberparsetopartsb#2\@empty% +% \fi} +%\def\multinumberparsetopartsb#1-#2\@empty{% +% \def\gbnumbertmp{#2}% +% \ifx\gbnumbertmp\@empty% +% \def\multinumbersecond{#1}% +% \else% +% \multinumberparsetopartsb#2\@empty% +% \fi} +\end{texlist} + +\end{enumerate} \subsection{标点和空格的特点和机制} \begin{enumerate} - \item 标点符号设置比如:renewrobustcmd*\{\textbackslash bibinitperiod\}\{\}和renewcommand*\{\textbackslash revsdnamepunct\}\{\}等用于全局修改标点。 + \item 标点符号设置比如:renewrobustcmd*\{\textbackslash bibinitperiod\}\{\} 和renewcommand*\{\textbackslash revsdnamepunct\}\{\}等用于全局修改标点。 \item 如isdot/adddot,adddot将原样(逐字,如实)句点转换为缩写点在有利用printtext输入原样字符的时候很重要比如[s.n.] 中,比如title末尾。 \item 利用newunit输出的标点,需要后面遇到printfield等命令有内容才输出标点,这是标点的异步处理机制。 - \item setunit*的作用是前面printtext等没有输出时候就不输出,见4.11.7.3节的应用以及出版项缺省时的代码处理。 + \item setunit*的作用是前面printtext等没有输出时候就不输出,见4.11.7.3 节的应用以及出版项缺省时的代码处理。 \item 标点和空格的调试方法:有时引入多余的空格和标点后很难快速处理,那么需要调试,调试的第一步是注释掉多余的代码,实现无多余空格或标点情况(一种快速方法是直接在一个printtext输出各相关域),然后一步步恢复原来的代码,直到找到多余空格或标点产生的原因,最后根据原因作出修改。 \item 多余空格的引入,可能来自于如下方面(下面是已经遇到的,可能还有更多) \begin{itemize} @@ -1097,23 +1250,84 @@ Chiani2004-1312-1318b,Chiani2003-840-845,Chiani2009-231-254} \subsection{动态数据修改} -biber动态数据处理,详见4.5.3 Dynamic Modification of Data和bbx文件中DeclareSourcemap的内容。利用biber在处理数据源时,动态的处理一些数据,比如设置一些域的值,可以用于进一步的判断和使用。 +利用biber在处理数据源时的动态处理,可以处理一些数据,比如设置一些域的值,用于进一步的判断和应用。 + +\subsubsection{基本原理和方法}\label{sec:dynamic:modify} +biber动态数据处理,详见biblatex说明文档Dynamic Modification of Data一节和bbx文件中DeclareSourcemap的内容。 \begin{enumerate} \item map的作用,对条目逐条进行处理 \item final作用,当不成立map终止。 \item append的作用,给域添加信息 \item origfieldvalue来源 \item overwite选项有无的作用,无overwite时,只要域原有信息,那么就不再map,有overwite时,则进行覆盖。\bc{注意:使用append的时候也需要overwite选项}。 - \item 动态数据处理中利用正则表达式可以用来处理特殊字符,处理\%,\#直接在regexp中写字符都没有问题,但是对于\&字符就存在问题,所以对于该字符使用十六进制表示方法\verb|\x26|。 - \item 3.4版的biblatex可以使用foreach选项,而3.0版的biblatex只能一个域一个域的处理,意味着每一个域处理都要写一个map步。 - \item date域仅作为解析用,不出现在bbl文件中,所以在bbx内部进行日期判断的时候要注意不用date 进行判断而要用其解析处理的year等进行判断,而且当date域的内容不符合解析格式要求时,自动忽略掉,那么信息就丢失了,因此当有不符合解析格式的日期信息时应放到year域中。 + \item biblatex3.4以后的版本可以使用foreach选项,而3.0版只能一个域一个域的处理,意味着每一个域处理都要写一个map 步。 + \item date域仅作为解析用,不出现在bbl文件中,所以在bbx内部进行日期判断的时候要注意,不使用date 域而要用由其解析出来的year 等域进行判断,而且当date域的内容不符合解析格式要求时,自动忽略掉,那么信息有可能丢失,因此当有不符合解析格式的日期信息时应放到year域中。 + \item 动态数据处理中利用正则表达式可以用来处理特殊字符,对于参考文献信息中一些特殊字符比如\&等,除了利用jabref软件的biblatex 可以自动转换外,利用动态数据修改也可以做一定的处理,比如对一些容易出现这种字符的域进行处理,使其内容符合tex源文件书写规则,即在特殊字符前加上斜杠。注意利用正则表达式处理\%,\#时直接在regexp中写字符没有问题,但是对于\&字符就存在问题,所以对于该字符使用十六进制表示方法\verb|\x26|。 比如: + + \begin{texlist} + %for texlive >2016 + \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,address,location,institution,organization}]{ + \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\#}, replace=\regexp{$1\\\#}] + } + \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,address,location,institution,organization}]{ + \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\%}, replace=\regexp{$1\\\%}] + } + \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,% + address,location,institution,organization}]{ + \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + } + } + + %for texlive 2015 + \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map[overwrite]{%title,booktitle,journaltitle,journal,publisher,address,location,institution,organization + \step[fieldsource={title}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={booktitle}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={journaltitle}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={journal}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={publisher}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={address}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={location}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={institution}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={booktitle}, match=\regexp{([^\\])\#}, replace=\regexp{$1\\\#}] + } + \map[overwrite]{ + \step[fieldsource={booktitle}, match=\regexp{([^\\])\%}, replace=\regexp{$1\\\%}] + } + } + } + \end{texlist} + \end{enumerate} - biblatex数据模型与动态数据处理的关系。biblatex提供了数据模型定义功能,这在真正需要定义一些新的条目类型和域时是用的到的。但实际上,从本样式实践的经验看,为了biblatex的兼容性考虑,没有必要使用数据模型定义功能去费力的定义新的条目类型,而是直接利用动态数据处理来将bib 中的一些类型转换成biblatex支持的类型来的方便,如果一定要区分可以利用一些域的信息进行区分,比如note域等于news或standard。 +\subsubsection{数据模型} + 下面介绍biblatex数据模型与动态数据处理的关系。 + + biblatex提供了数据模型定义功能,这在真正需要定义一些新的条目类型和域时是用得到的。但实际上,从本样式实践的经验看,为了biblatex 的兼容性考虑,没有必要使用数据模型定义功能去费力地定义新的条目类型,反而直接利用动态数据处理来将bib 中的一些类型转换成biblatex 支持的类型会更方便,其中要做一定的区分可以利用一些域的信息进行判断,比如note域等于news 或standard。 \begin{enumerate} - \item biblatex做的别名处理是用DeclareDriverSourcemap做的,这是驱动层的映射。在本样式中,因为usera域是在用户层的映射中做的,所以biblatex做的默认别名处理还不够,还需要在用户层首先处理usera域。而因为DeclareDriverSourcemap 中会增加一些不需要的信息,这可以利用DeclareSourcemap,DeclarestyleSourcemap(\bc{注意texlive2016的biblatex3.4仅支持1个styleSourcemap,而biblatex3.7则已经支持多个styleSourcemap})先进行映射,这样就避开了DeclareDriverSourcemap。 或者在增加DeclareDriverSourcemap,将标准样式中的默认DeclareDriverSourcemap增加的信息去掉。 - \item 数据模型在blx-dm.DEF中,可以看到standard有条目类型定义,但域和约束没有定义,而biblatex标准样式默认做的别名处理中的其它一些条目比如electronic等时有域和约束定义的。 - \item 标准样式standard.BBX中的DeclareBibliographyAlias\{*\}\{misc\}将一些数据模型中没有定义的条目直接用misc条目的驱动处理,这不是驱动层的数据源映射,只是利用其驱动进行输出。由一个问题是DeclareBibliographyAlias\{newspaper\}\{article\}是否可以实现?还是要定义数据模型?从实践结果看是不需要定义数据模型的,而且驱动的别名处理可以实现类似驱动层映射的效果。比如: + \item biblatex默认做的别名处理其实是用DeclareDriverSourcemap做的,这是驱动层的映射。在本样式中,因为usera域是在用户层的映射中做的,所以biblatex做的默认别名处理还不够,还需要在用户层首先处理usera域。而因为DeclareDriverSourcemap 中会增加一些不需要的信息,比如thesis类型中的typer域在GB/T7714标准中是并不需要的,这可以利用DeclareSourcemap,DeclarestyleSourcemap(\bc{注意texlive2016 的biblatex3.4 仅支持1 个styleSourcemap,而biblatex3.7则已经支持多个styleSourcemap})先进行映射,这样就避开了DeclareDriverSourcemap。 或者在增加DeclareDriverSourcemap,将标准样式中的默认DeclareDriverSourcemap增加的信息去掉(详见gb7714-2015ay.bbx中的处理和说明)。 + \item 数据模型在blx-dm.DEF中,可以看到standard有条目类型定义,但域和约束没有定义,而biblatex标准样式默认做的别名处理中的其它一些条目比如electronic等是有域和约束定义的。 + \item 标准样式standard.BBX中的DeclareBibliographyAlias\{*\}\{misc\} 将一些数据模型中没有定义的条目直接用misc条目的驱动处理,这不是驱动层的数据源映射,只是利用其驱动进行输出。有一个问题是DeclareBibliographyAlias\{newspaper\}\{article\}是否可以实现?还是要定义数据模型?从实践结果看是不需要定义数据模型的,并且驱动的别名处理等价于驱动层映射。比如: 做了用户层映射后: \begin{texlist} \DeclareSourcemap{ @@ -1132,7 +1346,7 @@ biber动态数据处理,详见4.5.3 Dynamic Modification of Data和bbx文件 \DeclareBibliographyAlias{newspaper}{article}%定义驱动别名,以替代驱动层映射 \end{texlist} - 能达到驱动层或映射层中条目类型转换所实现的效果。 + 能达到驱动层或样式层中条目类型转换所实现的效果。 \begin{texlist} \DeclareStyleSourcemap{ \maps[datatype=bibtex]{ @@ -1147,23 +1361,432 @@ biber动态数据处理,详见4.5.3 Dynamic Modification of Data和bbx文件 \item 从实践看,数据模型中完全没有定义的条目类型newspaper也可以进行数据源映射。 \end{enumerate} +\subsubsection{用于关联条目的动态修改的命令封装及关联条目格式}\label{sec:data:mdf:forrelated} + +实现动态的条目关联,可以利用动态数据修改的方法。要对多个条目实现关联,那么需要多次数据映射,biblatex3.7及以上版本可以存在多个DeclareStyleSourcemap,因此做关联的封装命令就是基于此: + +\begin{texlist} + \newcommand{\defdoublelangentry}[2]{% + \edef\entrykeya{#1} + \edef\entrykeyb{#2} + \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map{ + \step[fieldsource=entrykey, match=\entrykeya, final] + \step[fieldset=related, fieldvalue=\entrykeyb] + } + } + } + } +\end{texlist} + +命令defdoublelangentry有两个输入参数,第一个是主条目,第二个是与主条目关联的条目的列表。多次使用该命令,即可实现多次数据映射,当然因为DeclareStyleSourcemap只能存在于导言区,因此defdoublelangentry也只能存在于导言区。 + +关联条目之间用命令relateddelim分隔,但实际上因为related宏输出时,不知道是何原因考虑的是主条目的关联条目之间的分隔,这在双语文献中是有问题的,需要在主条目后也进行分隔,因此对该宏修改如下: + +\begin{texlist} +\renewbibmacro*{related}{% + \ifboolexpr{ test {\iffieldundef{related}} or test {\ifrelatedloop} } + {} + {\usebibmacro{begrelated}% + \def\bbx@tempa{}% + \setcounter{bbx:relatedtotal}{0}% + \def\do##1{% + \entrydata{##1}{% + \ifrelatedloop + {} + {\stepcounter{bbx:relatedtotal}% + \gappto{\bbx@tempa}{##1,}}}}% + \docsvfield{related}% + \restorefield{related}{\bbx@tempa}% + \ifnumgreater{\value{bbx:relatedtotal}}{0} + {\listcsxadd{bbx:relatedloop}{\strfield{entrykey}}% + \iffieldundef{clonesourcekey} + {} + {\listcsxadd{bbx:relatedloop}{\strfield{clonesourcekey}}}% + \setcounter{bbx:relatedcount}{0}% + \def\do{% + \stepcounter{bbx:relatedcount}% + \ifnumgreater{\value{bbx:relatedcount}}{0}%为使主条目与关联条目做分隔,这里做修改,从1改为0 + {\ifcsundef{relateddelim\strfield{relatedtype}} + {\printtext{\relateddelim}} + {\printtext{\csuse{relateddelim\strfield{relatedtype}}}}} + {}}% + \ifbibmacroundef{related:\strfield{relatedtype}} + {\appto{\do}{\usebibmacro{related:default}}} + {\appto{\do}{\usebibmacro*{related:\strfield{relatedtype}}}}% + \iffieldformatundef{related:\strfield{relatedtype}} + {\def\bbx@tempa{related}} + {\def\bbx@tempa{related:\strfield{relatedtype}}}% + \iffieldformatundef{relatedstring:\strfield{relatedtype}} + {\def\bbx@tempb{relatedstring:default}} + {\def\bbx@tempb{relatedstring:\strfield{relatedtype}}}% + \printtext[\bbx@tempa]{% + \usebibmacro{begrelatedloop}% + \iffieldundef{relatedstring} + {\ifboolexpr{ + test {\ifnumgreater{\value{bbx:relatedtotal}}{1}} + and + test {\ifbibxstring{\thefield{relatedtype}s}} + } + {\printtext[\bbx@tempb]{% + \bibstring[\mkrelatedstring]{\thefield{relatedtype}s}}} + {\iffieldbibstring{relatedtype} + {\printtext[\bbx@tempb]{% + \bibstring[\mkrelatedstring]{\thefield{relatedtype}}}} + {}}} + {\iffieldbibstring{relatedstring} + {\printtext[\bbx@tempb]{% + \bibstring[\mkrelatedstring]{\thefield{relatedstring}}}} + {\printfield[\bbx@tempb]{relatedstring}}}% + \docsvfield{related}% + \usebibmacro{endrelatedloop}}}% + {}% + \usebibmacro{endrelated}}} +\end{texlist} + \subsection{标注(引用)标签} -引用标签的生成机制,即责任者截短时的歧义消除问题,见4.11.4 Name Disambiguation 节。 +引用标签的生成机制,即责任者截短时的歧义消除问题,见说明文档4.11.4 Name Disambiguation 节。 \begin{enumerate} - \item uniquename的作用 - \item uniquelist的作用 + \item uniquename的作用,用于姓名间的歧义消除。 + \item uniquelist的作用,用于姓名列表间的歧义消除。 \end{enumerate} -\subsection{样式文件简单设计方法} - biblatex的核心-参考文献样式文件的设计 + +关于这两个选项的参数设置,可以在样式中设置,也可以在宏包加载时设置,\bc{注意宏包加载时的设置会覆盖样式中的设置}。 + +还要注意,说明文档中uniquelist的默认选项是false,这是错误的,从实践看是true,从biblatex.sty文件的代码看也是如此,比如: +\begin{texlist} +\DeclareBibliographyOption[boolean]{uniquelist}[true]{% + \ifcsdef{blx@opt@uniquelist@#1} + {\letcs\blx@uniquelist{blx@opt@uniquelist@#1}} + {\blx@err@invopt{uniquelist=#1}{}}} +\DeclareTypeOption[boolean]{uniquelist}[true]{% + \ifcsdef{blx@opt@uniquelist@#1} + {\letcs\blx@uniquelist{blx@opt@uniquelist@#1}} + {\blx@err@invopt{uniquelist=#1}{}}} +\DeclareEntryOption[boolean]{uniquelist}[true]{% + \ifcsdef{blx@opt@uniquelist@#1} + {\letcs\blx@uniquelist{blx@opt@uniquelist@#1}} + {\blx@err@invopt{uniquelist=#1}{}}} +\def\blx@opt@uniquelist@false{0} +\def\blx@opt@uniquelist@true{1} +\def\blx@opt@uniquelist@minyear{2} +\end{texlist} +无论选项是否给出,上面定义选项中的代码都会自动执行,当选项不给出,则自动调用默认的参数(因为代码中直接使用了输入参数,当没有输入参数,自然就会使用默认参数)来进行处理,显然这里是true。 + +\subsection{日期格式控制}\label{sec:date:fmt} +随着biblatex的更新,日期格式控制更趋完善。加上biblatex3.8a中biber解析出日期中月份和天数都不带引导的0,比如6月直接解析为6,而不像以前那样解析为06,所以需要特别的注意。因此对于新版本,有些日期比如online的发布日期,访问日期等,采用专门的格式edtf控制,而老版本则仍然使用原来定义的输出宏。比如: + +\begin{texlist} +\defversion{3.7}{date}{ + \DeclareFieldFormat{urldate}{##1} + \renewbibmacro*{urldate}{% + \addspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 + + \newbibmacro*{newsdate}{%%新增加一个新闻日期 + \blx@edtfdate{}{}% + } + + \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 + \iffieldundef{year}{% + \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{(}\printeventdate\printtext{)}}}% + {\printtext{(}\printenddate\printtext{)}}% + }{\iffieldequalstr{year}{}{%因为year存在,但为空 + }{\printtext{(}\blx@edtfdate{}{}\printtext{)}}% + }% + }% +} + +\defversion{3.4}{date}{ + \renewbibmacro*{urldate}{% + \addspace\printtext{[}\printfield{urlyear}% + \iffieldundef{urlmonth}{}{\bibrangedash\printfield{urlmonth}}% + \iffieldundef{urlday}{}{\bibrangedash\printfield{urlday}}\printtext{]}} + + \newbibmacro*{newsdate}{%%新增加一个新闻日期 + \iffieldundef{year}{}{\printfield{year}% + \iffieldundef{month}{}{\bibrangedash\printtext{\thefield{month}}% + \iffieldundef{day}{}{\bibrangedash\printfield{day}}}}% + } + + \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 + \iffieldequalstr{year}{}{%替换\iffieldundef{year},因为year总是存在,但为空 + \iffieldundef{endyear}{% + \iffieldundef{eventyear}{}{\printtext{\mkbibparens{\printtext{\printfield{eventyear}}% + \iffieldundef{eventmonth}{}{\bibrangedash\thefield{eventmonth}}% + \iffieldundef{eventday}{}{\bibrangedash\printfield{eventday}}}}% + }% + }{% + \iffieldundef{endyear}{}{\printtext{\mkbibparens{\printtext{\printfield{endyear}}% + \iffieldundef{endmonth}{}{\bibrangedash\thefield{endmonth}}% + \iffieldundef{endday}{}{\bibrangedash\printfield{endday}}}}% + }% + }% + }% + {% + \iffieldundef{year}{}{\printtext{\mkbibparens{\printtext{\printfield{year}}% + \iffieldundef{month}{}{\bibrangedash\thefield{month}}% + \iffieldundef{day}{}{\bibrangedash\printfield{day}}}}% + }% + }% + }% +} + +\iftoggle{iftlfive}%%根据texlive/biblatex版本选择 + {\switchversion{3.4}{date}}% + {\iftoggle{iftlsix}% + {\switchversion{3.4}{date}}% + {\switchversion{3.7}{date}}% + } +\end{texlist} + +\subsubsection{文献表条目标签中的日期格式}\label{sec:dateinlabel} +主要用于authoryear样式,在authoryear样式中有一个mergedate选项,使用该选项可以进行更多的标签日期格式控制。其中主要是重定义了date+extradate(3.8版,以前的版本叫date+extrayear). + +其中有两点需要注意: + +1. printdateextra,printlabeldateextra,这样的命令在biblatex.sty中是找不到的,因为biblatex实际定义的如下的命令: +\begin{texlist} +{\protected\def\blx@imc@printlabeldate{\csuse{mkdaterange#1}{label}} + \protected\def\blx@imc@printlabeldateextra{\csuse{mkdaterange#1extra}{label}}} +\end{texlist} + +然后由如下命令,解析为printdateextra,printlabeldateextra: +\begin{texlist} +\blx@regimcs{\printlabeldate \printlabeltime \printlabeldateextra \stripzeros \forcezerosy \forcezerosmdt \mkyearzeros \mkmonthzeros \mkdayzeros \mktimezeros} +\end{texlist} + +biblatex很多命令都有类似的方式。 + +2. 日期的数据来源由DeclareLabeldate定义选择。 +日期的的具体格式,则由宏包选项控制。比如labeldate=ymd来控制。(3.5版以上,以前的是datelabel选项) + +\subsection{作者格式控制}\label{sec:name:fmt} +\zhongdian{【注意】:texlive2015中的biblatex版本是3.0,texlive2016中biblatex的版本是3.4,新版本对于名字域打印有了较大变化(即不同版本的biblatex对于DeclareNameFormat的输入参数处理有所不同,如例\ref{eg:name:variables}所示),所以需做相应的修改,为此在biblatex中首先进行版本判断,然后根据版本不同分别进行设置。} + + \begin{codetex}{texlive2016中biblatex3.4版Name域格式输入参数的修改}{eg:name:variables} + for biblatex version 3.0 + #1 The last names. + #2 The last names, given as initials. + #3 The first names. + #4 The first names, given as initials. + #5 The name prefixes, + #6 The name prefixes, given as initials. + #7 The name affixes, + #8 The name affixes, given as initials. + for biblatex version 3.4 + \namepartfamily + \namepartfamilyi + \namepartgiven + \namepartgiveni + \namepartprefix + \namepartprefixi + \namepartsuffix + \namepartsuffixi + \end{codetex} + 样式文件中的处理见\ref{sec:name:fmt:out}节。 + +\subsubsection{作者信息输出与格式控制}\label{sec:name:fmt:out} +作者信息的输出最高一层是在驱动中: +\begin{texlist} +\usebibmacro{author/editor+others/translator+others} +\end{texlist} + +其中当存在作者时,由如下宏输出: +\begin{texlist} +\renewbibmacro*{author} +\end{texlist} + +其中作者列表又由如下命令输出: +\begin{texlist} +\printnames{author} +\end{texlist} + +printnames这种命令的输出格式通常由相应输出域的域格式控制,这里则是author域控制: +\begin{texlist} +\DeclareNameAlias{author}{sortname}%for author year style + +\DeclareNameAlias{author}{default}%for numeric style +\end{texlist} + +其中sortname,default域格式又是: +\begin{texlist} +\DeclareNameAlias{sortname}{family-given/given-family} + +\DeclareNameAlias{author}{default} +\DeclareNameAlias{default}{given-family} +\end{texlist} + +其中的关键是given-family和family-given两个域格式使用name:family-given和name:family-given宏进行输出。 +真实的作者姓名格式在这两个宏中,因此做一定的处理: +\begin{texlist} + %biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 + \renewbibmacro*{name:given-family}[4]{%利用family-given定义given-family + \ifuseprefix + {\usebibmacro{name:delim}{##3##1}% + \usebibmacro{name:hook}{##3##1}% + \ifdefvoid{##3}{}{% + \ifcapital + {\mkbibnameprefix{\MakeCapital{##3}}\isdot} + {\mkbibnameprefix{##3}\isdot}% + \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}} + {\usebibmacro{name:delim}{##1}% + \usebibmacro{name:hook}{##1}% + \ifdefvoid{##2}{\mkbibnamefamily{\MakeCapital{##1}}}{\mkbibnamefamily{\MakeUppercase{##1}}}\isdot + % + \ifboolexpe{% + test {\ifdefvoid{##2}} + and + test {\ifdefvoid{##3}}} + {} + {\revsdnamepunct}% + \ifdefvoid{##2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{##2}}\isdot}%\MakeCapital + \ifdefvoid{##3}{}{\bibnamedelimd\mkbibnameprefix{##3}\isdot} + \ifdefvoid{##4}{}{\bibnamedelimd\mkbibnamesuffix{##4}\isdot}} + } + \renewbibmacro*{name:family-given}[4]{% + \usebibmacro{name:given-family}{##1}{##2}{##3}{##4}} + + %biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 + \renewbibmacro*{name:last-first}[4]{% + \ifuseprefix + {\usebibmacro{name:delim}{##3##1}% + \usebibmacro{name:hook}{##3##1}% + \ifblank{##3}{}{% + \ifcapital + {\mkbibnameprefix{\MakeCapital{##3}}\isdot} + {\mkbibnameprefix{##3}\isdot}% + \ifpunctmark{'}{}{\bibnamedelimc}}% + %\mkbibnamelast{#1}\isdot + \ifblank{##2}{\MakeCapital##1}{\mkbibnamelast{\MakeUppercase{##1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase + %注意上一句\MakeCapital后面如果再跟一个{}包含#1,则没有效果,可能是包在里面少了一层展开 + %因为机构名通常包括在{}内,所以要多展开一次才行,所以这里去掉#1外面的{} + %\mkbibnamelast{\MakeUppercase{#1}}\isdot + %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 + \ifblank{##2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamefirst{\MakeUppercase{##2}}\isdot}% + \ifblank{##4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{##4}\isdot}} + {\usebibmacro{name:delim}{##1}% + \usebibmacro{name:hook}{##1}% + %\mkbibnamelast{#1}\isdot %3.9.1 Generic Commands and Hooks,对姓重新处理,如下句: %\mkbibnamelast{\MakeUppercase{#1}} + \ifblank{##2}{\MakeCapital##1}{\mkbibnamelast{\MakeUppercase{##1}}}\isdot %大写,参考4.6.4 Miscellaneous Commands,\MakeUppercase %\MakeSentenceCase + %\mkbibnamelast{\MakeUppercase{#1}}\isdot + %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 + \ifblank{##2##3}{}{\revsdnamepunct}% + \ifblank{##2}{}{\bibnamedelimd\mkbibnamefirst{\MakeUppercase{##2}}\isdot}% + \ifblank{##3}{}{\bibnamedelimd\mkbibnameprefix{##3}\isdot}% + \addcomma\addspace% + \ifblank{##4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{##4}\isdot}% + } + } + + \renewbibmacro*{name:first-last}[4]{% + \usebibmacro{name:last-first}{##1}{##2}{##3}{##4}} +\end{texlist} + + + + +\subsection{样式文件设计途径} + biblatex的核心-参考文献样式文件的设计,更详细内容见 + \href{https://github.com/hushidong/biblatex-solution-to-latex-bibliography}{LaTeX 文档中文参考文献的 biblatex 解决方案}。 \begin{enumerate} \item driver的作用:条目驱动,修改一些顺序,略去一些输出和标点 - \item format的作用:域打印格式,修改一些斜体,强调样式等。 \item micro的作用:输出宏,修改需要的输出内容 + \item format的作用:域打印格式,修改一些斜体,强调样式等。 \item command的作用:一些设置和命令 - \item sty中的代码 + \item biblatex.sty/def和各bbx/cbx文件中的代码 \end{enumerate} +\subsubsection{文献表条目内容组织的原理以及问题查找的方法} +biblatex是利用tex语句控制文献内容组织,因此我们可以坚定一点就是,对于文献内容组织一定不是神秘的,是可以分析清楚的,当出现问题的时候,通过一步步的分析是能解决好的。 + +如前所述,根据宏包设置,使用biber解析完参考文献信息后,就需要利用样式中的各种定义来输出文献表。我们从某一条参考文献来看问题。某一类型的参考文献输出由该类型的driver控制,driver中控制各种bibmacro来组织内容输出,bibmacro利用各种fieldformat,command来控制域的格式和标点,当出现一些特殊的问题时,我们可以顺着这样的思路来查找。 + +下面我们举例来说明本样式的作者年制中,当作者缺省时,利用title判断中英文出错的问题。这个问题本质上由于前面说过的,当作者缺省时,把title作为标签后,会把title域清除,因此再利用title域信息判断中英文,自然无法正常工作。我们来看看这是怎么一个过程: + +这是一个作者缺省的book条目,在gb7714-2015ay样式不使用佚名方式的情况下报错,主要是testCJKfirst函数报错。这个函数主要用在作者,出版项等这些信息输出时的中英文判断。因为作者缺省,因此作者输出时就没有判断,而出错只能是在出版项中。我们把book的driver中macro输出一项一项注释掉并测试发现,当作者输出相关的macro存在时存在错误,注释掉则没有问题。于是深入来分析: + +在book类的driver简化为如下三项输出: +\begin{texlist} +\DeclareBibliographyDriver{book}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author/editor+others/translator+others}% + \setunit{\labelnamepunct}\newblock + \usebibmacro{maintitle+title}% + \newunit + \usebibmacro{publisher+location+date}% + \newunit\newblock + \usebibmacro{finentry}} +\end{texlist} + +其中usebibmacro\{author/editor+others/translator+others\}导致出错,该macro的思路是当存在author时输出author,没有时判断是否存在editor,存在则输出,不存在则判断是否存在translator,并进一步判断输出: +\begin{texlist} +\newbibmacro*{author/editor+others/translator+others}{% + \ifboolexpr{ + test \ifuseauthor + and + not test {\ifnameundef{author}} + } + {\usebibmacro{author}} + {\ifboolexpr{ + test \ifuseeditor + and + not test {\ifnameundef{editor}} + } + {\usebibmacro{editor+others}} + {\usebibmacro{translator+others}}}} +\end{texlist} + +显然这个例子中不存在author和editor,因此宏转到macro\{translator+others\},我们来看这个宏: +\begin{texlist} +\newbibmacro*{translator+others}{% + \ifboolexpr{ + test \ifusetranslator + and + not test {\ifnameundef{translator}} + } + {\printnames{translator}% + \setunit{\printdelim{translatortypedelim}}% + \usebibmacro{translator+othersstrg}% + \clearname{translator}} + {}} +\end{texlist} + +这个宏来自biblatex.def,显然这个宏表明当translator不存在则不做任何事情,这种情况下是不会出错的,于是我们再找,发现这个宏在authoryear.bbx中重定义了。 +\begin{texlist} +\renewbibmacro*{translator+others}{% + \usebibmacro{bbx:translator}{translator+othersstrg}} + +\newbibmacro*{bbx:translator}[1]{% + \ifboolexpr{ + test \ifusetranslator + and + not test {\ifnameundef{translator}} + } + {...code for existed translator...}% + {\global\undef\bbx@lasthash + \usebibmacro{labeltitle}% + \setunit*{\printdelim{nonameyeardelim}}}% + \usebibmacro{date+extradate}} +\end{texlist} + +显然当translator不存在时,使用了labeltitle宏,再来看这个宏: +\begin{texlist} +\newbibmacro*{labeltitle}{% + \iffieldundef{label} + {\iffieldundef{shorttitle} + {\printfield{title}% + \clearfield{title}} + {\printfield[title]{shorttitle}}} + {\printfield{label}}} +\end{texlist} +从中可以看到,该宏把title域作为标签进行输出,并在输出后清除了title域,自然,在完成了整个author/editor+others/translator+others宏后,title域就不存在了,因此在后面的publisher+location+date宏中使用title域来进行中英文判断是必然会出错的,找到了问题所在,那么就有相应的方法,比如在动态数据修改时,把title信息存储到userd域中,然后publisher+location+date宏利用该域的信息进行判断这样就不会出现问题了。 + \subsection{宏包选项增加} biblatex的宏包选项增加 @@ -1173,7 +1796,7 @@ biblatex的宏包选项增加 第一种判断,是直接根据已有的信息进行处理,给出toggle:iftexlivesix的设置,然后根据这一信息做任何的定义。 第二种判断,是通过宏包选项align给出的,这一选项是string类型。在选项的执行代码中直接给出命令,这种情况下,特别要注意DeclareBibliographyOption选项定义命令中给出的默认值是在加载该选项但不给出值时的默认值,而不是将选项默认设置为该默认值。因此当加载时不给出align选项时,不执行任何的语句,即不执行setalignleft,也不执行setaligngbstyle,也就是参考文献环境命令使用标准样式给出的定义而没有在setalignleft或setaligngbstyle中重定义。 - 如果给出选项align,相当于align=默认值,如果给出选项align=指定值,那么值就是指定值,然后并执行DeclareBibliographyOption的定义代码,根据值进行判断。 + 如果给出选项align,相当于align=默认值,如果给出选项align=指定值,那么值就是指定值,然后并执行DeclareBibliographyOption 的定义代码,根据值进行判断。 第三种判断,通过gbpub选项给出,这一选项类似于standard.bbx中定义的url等选项。给出选项定义后: \begin{texlist} @@ -1182,7 +1805,7 @@ biblatex的宏包选项增加 %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 \ifstrequal{#1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} \end{texlist} - 默认可以利用toggle:bbx:gbpub进行任何的定义,但这时默认值是newtoggle命令给出的默认值false。 + 默认可以利用toggle:bbx:gbpub进行任何的定义,但这时默认值是newtoggle 命令给出的默认值false。 要使用选项给出的默认值,还需要使用命令: \begin{texlist} @@ -1201,7 +1824,7 @@ biblatex的宏包选项增加 第四种判断,利用iffieldundef和iffieldequalstr进行判断即可。 - \item 要注意使用toggle时,如果先根据toggle判断然后定义,这种情况下在bbx加载时就已经根据当前的值展开了,所有DeclareBibliographyOption中的任何toggle设置都是无效的。比如:上述第二种宏包选项设置中,命令DeclareBibliographyOption是设置string选项,如果用ifstrequal 判断出选项的参数,然后设置toggletrue或false,然后再后面根据toggle的true或false来展开内容,是不行的。因为后面的toggle判断后的内容先于设置toggletrue或false展开了。 + \item 要注意使用toggle时,如果先根据toggle判断然后定义,这种情况下在bbx 加载时就已经根据当前的值展开了,所有DeclareBibliographyOption中的任何toggle设置都是无效的。比如:上述第二种宏包选项设置中,命令DeclareBibliographyOption 是设置string选项,如果用ifstrequal 判断出选项的参数,然后设置toggletrue或false,然后再后面根据toggle的true 或false来展开内容,是不行的。因为后面的toggle判断后的内容先于设置toggletrue或false展开了。 如果在文档正文中看,toggle设置为true没有问题,但就是没有bbx 文件中对应设置为true 的展开。需要根据选项宏包设置而进行不同的展开那么就不能采用这样的方式,而应该采用直接在选项设置命令展开,不能用toggle判断然后展开。尝试代码可以见\pageref{up:161207}页中更新说明中的注释代码。 @@ -1234,86 +1857,234 @@ biblatex的宏包选项增加 \end{texlist} - \item 注意:ExecuteBibliographyOptions命令是用来执行选项的,如果不给出设置选项的值,那么使用默认的参数。比如设置了一个gb7714选项,并用ExecuteBibliographyOptions\{gb7714\}进行设置,那么相当于设置为gb7714=true + \item 注意:ExecuteBibliographyOptions命令是用来执行选项的,如果不给出设置选项的值,那么使用默认的参数。比如设置了一个gb7714 选项,并用ExecuteBibliographyOptions\{gb7714\}进行设置,那么相当于设置为gb7714=true \end{enumerate} \subsection{文献表环境和打印输出} - biblatex的宏包参考文献表的打印 + biblatex宏包的参考文献表的打印 \begin{enumerate} - \item 根据biblatex.sty文件中的\verb|\blx@bibliography|命令可以知道,定义的参考文献表的环境的开始代码在命令中\verb|\blx@bibliography|中,结束代码在\verb|\blx@endbibliography|中,循环项代码在\verb|\blx@bibitem|中的\verb|blx@item@\blx@theenv}|命令中。参考文献循环打印依靠\verb|\blx@listloop|命令实现。 + \item 根据biblatex.sty文件中的\verb|\blx@bibliography|命令可以知道,定义的参考文献表的环境的开始代码在命令中\verb|\blx@bibliography|中,结束代码在\verb|\blx@endbibliography|中,循环项代码在\verb|\blx@bibitem| 中的\verb|blx@item@\blx@theenv}|命令中。参考文献循环打印依靠\verb|\blx@listloop| 命令实现。 \item 从\verb|\blx@listloop|可以知道,各条参考文献表的指引信息是混合在一起的并且以|字符为分隔。将混合的参考文献指引信息解析成单独的指引信息,并交给\verb|\blx@bibitem|命令处理。 - \item \verb|\blx@bibitem|首先开始一个编组,然后根据单独一条参考文献的指引信息,获取数据,执行判断,利用参考文献表环境定义的循环项代码对参考文献内容设置段落格式,最后结束编组。在定义align=gb7714-2015样式的段落格式时,采用了parshape或者hangindent命令来实现,所以其中增加了一个par命令以使其生效。 + \item \verb|\blx@bibitem|首先开始一个编组,然后根据单独一条参考文献的指引信息,获取数据,执行判断,利用参考文献表环境定义的循环项代码对参考文献内容设置段落格式,最后结束编组。在定义align=gb7714-2015样式的段落格式时,采用了parshape 或者hangindent命令来实现,所以其中增加了一个par命令以使其生效。 \end{enumerate} -\subsection{其它需要说明的问题} -下面的问题想到哪写到哪,没有特别的顺序: +\subsection{biblatex版本以及样式的兼容性}\label{sec:blx:compatibility} +样式首先根据biblatex版本信息进行版本判断,然后做针对性的兼容处理。 +biblatex在texlive中的版本对应关系是: +texlive2015对应biblatex3.0; +texlive2016对应biblatex3.4,从3.2版开始修改了姓名机制(如\ref{sec:name:fmt}节所述); +texlive2017对应biblatex3.7; +2017年底又出了biblatex3.8a版。 -\begin{enumerate} - \item 因为采用xelatex编译,所以样式文件直接采用UTF-8编码,没有考虑GBK编码。 + \begin{enumerate} + \item biblatex版本判断 + + 原来是使用一个简单的字符流处理来解析版本信息,但容易出现问题。于是换成利用xstring宏包的命令来提取版本中的数字进行判断: + \begin{texlist} + %版本判断 + \providetoggle{iftexlivesix}%用于处理biblatex3.3开始改变的新的姓名机制 + \providetoggle{iftexliveseven}%用于处理biblatex3.7的兼容性 + \providetoggle{iftexliveeight}%用于处理biblatex3.8a的兼容性 + %\def\numparserta#1.#2a\relax{#1}%注意relax的重要性 + %\def\numparsertb#1.#2a\relax{#2} + %\def\numinteger{\expandafter\numparserta\abx@version\relax} + %\def\numdigital{\expandafter\numparsertb\abx@version\relax} + \StrChar{\abx@version}{3}[\numdigital] + %根据biblatex更新历史,当版本大于3.2开始,就用设置\toggletrue{iftexlivesix} + \ifnumcomp{\numdigital}{>}{2}{\toggletrue{iftexlivesix}}{\togglefalse{iftexlivesix}} + \ifnumcomp{\numdigital}{>}{6}{\toggletrue{iftexliveseven}}{\togglefalse{iftexliveseven}} + \ifnumcomp{\numdigital}{>}{7}{\toggletrue{iftexliveeight}}{\togglefalse{iftexliveseight}} + \end{texlist} + + + \item biblatex版本的一些兼容性处理 + + 宏包选项: + \begin{texlist} + firstinits=true,%for texlive2014,2015;biblatex <=3.2 + giveninits=true,%for texlive2016,2017;biblatex >=3.3 + labeldate=true,%for texlive2014,2015,2016,2017;biblatex <3.8 + labeldateparts=true,%for biblatex >=3.8a + \end{texlist} + + 命令: + \begin{texlist} + \printdateextralabel,%for texlive2014,2015,2016;biblatex <=3.4 + \printlabeldateextra,%for texlive2017;biblatex >=3.7 + \DeclareSortingScheme %for texlive2014,2015,2016,2017;biblatex <3.8 + \DeclareSortingTemplate %for biblatex >=3.8a + \end{texlist} + + \item 版本与兼容性的最终处理方法 + + 经过最终设计,下面给出的另一版本兼容性处理方式取代前面给出的处理方式,便于以后的扩展。 + \begin{texlist} + %版本判断 + \providetoggle{iftlfive}%用于处理biblatex3.2之前的版本,即texlive2015以下版本中的biblatex + \providetoggle{iftlsix}%用于处理biblatex3.3开始改变的新的姓名机制后版本,包括 + \providetoggle{iftlseven}%用于处理biblatex3.7的兼容性 + \providetoggle{iftleight}%用于处理biblatex3.8a的兼容性 + \StrChar{\abx@version}{1}[\numinteger] + \StrChar{\abx@version}{3}[\numdigital] + \ifnumcomp{\numinteger}{=}{2}{\toggletrue{iftlfive}}{\togglefalse{iftlfive}} + \ifnumcomp{\numinteger}{=}{3}{ + \ifnumcomp{\numdigital}{>}{2}{\toggletrue{iftlsix}\togglefalse{iftlfive}}{\togglefalse{iftlsix}\toggletrue{iftlfive}} + \ifnumcomp{\numdigital}{>}{6}{\toggletrue{iftlseven}\togglefalse{iftlsix}}{\togglefalse{iftlseven}} + \ifnumcomp{\numdigital}{>}{7}{\toggletrue{iftleight}\togglefalse{iftlseven}}{\togglefalse{iftleight}} + }{\blx@warning@noline{% + biblatex version undefined in biblatex-gb7714-2015.\MessageBreak + Please contact pkg author.}} + \newcommand\defversion[2]{\csdef{codeversion#1#2}}%定义不同版本的命令 + \newcommand\switchversion[2]{\csuse{codeversion#1#2}}%使用不同版本的命令 + + \defversion{3.0}{opt}{ + %biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 + %增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015无效,仍然为右对齐模式,因为舍弃了list类环境后出错。 + \DeclareBibliographyOption{align}[right]{%texlive2015中的3.0版中的DeclareBibliographyOption选项没有类型说明 + \ifstrequal{##1}{right}{}{} + \ifstrequal{##1}{left}{\setalignleft}{} + \ifstrequal{##1}{gb7714-2015}{}{} + } - \item \zhongdian{【Most Important】【注意】:texlive2015中的biblatex版本是3.0,texlive2016中biblatex的版本是3.4,新版本对于名字域打印有了较大变化(即不同版本的biblatex对于DeclareNameFormat的输入参数处理有所不同,如例\ref{eg:name:variables}所示),所以需做相应的修改,为此在biblatex中首先进行版本判断,然后根据版本不同分别进行设置。} + %增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 + \newtoggle{bbx:gbpub} + \DeclareBibliographyOption{gbpub}[true]{% + %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 + \ifstrequal{##1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} + \ExecuteBibliographyOptions{gbpub} - \begin{codetex}{texlive2016中biblatex3.4版Name域格式输入参数的修改}{eg:name:variables} - for biblatex version 3.0 - #1 The last names. - #2 The last names, given as initials. - #3 The first names. - #4 The first names, given as initials. - #5 The name prefixes, - #6 The name prefixes, given as initials. - #7 The name affixes, - #8 The name affixes, given as initials. - for biblatex version 3.4 - \namepartfamily - \namepartfamilyi - \namepartgiven - \namepartgiveni - \namepartprefix - \namepartprefixi - \namepartsuffix - \namepartsuffixi - \end{codetex} - 相应的样式文件也需要修改,详见bbx文件内容。 + %增加一个处理佚名或noauthor的控制选项 + %因为在顺序编码制中,不需要使用,这里也增加,为了与作者年制的兼容性考虑。 + \DeclareBibliographyOption{gbnoauthor}[true]{}% + + \ExecuteBibliographyOptions{ + sorting=none, + useprefix=true, %名字的信息包括前缀 + firstinits=true, %名字有缩写,参考3.1.2.3 Internal + %giveninits=true, + date = year, %日期仅写到年 + maxnames = 3 , %设置名字最大数量 + minnames = 3 %设置缩减后的名字最小数量 + %uniquename = init + } +} - \item \zhongdian{【Most Important】【注意】:当在顺序编码和作者年制的切换使用时,如果出错,可先清理一下辅助文件,清理完后,重新编译即可。} +\defversion{3.4}{opt}{ + % Alter settings that carry through from biblatex + %biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 + %增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 + \DeclareBibliographyOption[string]{align}[right]{% + \ifstrequal{##1}{left}{\setalignleft}{} + \ifstrequal{##1}{gb7714-2015}{\setaligngbstyle}{} + } - \item 需要注意:当bibtex键中含有中文的时候,texlive2015中的biblatex3.0版的对参考文献条目的超链接会出现问题,而texlive2016 中的biblatex3.4版则没有问题。 + %增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 + \newtoggle{bbx:gbpub} + \DeclareBibliographyOption[boolean]{gbpub}[true]{% + %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 + \ifstrequal{##1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} + \ExecuteBibliographyOptions{gbpub} - \item {\heiti 中文文献的拼音排序,可以利用biber进行处理,这个问题可以参考Casper Ti. Vector在biblatex 参考文献样式caspervector v0.2.6中的方法 - \footnote{\url{https://gitlab.com/CasperVector/biblatex-caspervector}},特此说明,表示感谢!} + %增加一个处理佚名或noauthor的控制选项 + %因为在顺序编码制中,不需要使用,这里也增加,为了与作者年制的兼容性考虑。 + \DeclareBibliographyOption[boolean]{gbnoauthor}[true]{}% + + \ExecuteBibliographyOptions{ + sorting=none, + useprefix=true, %名字的信息包括前缀 + %firstinits=true, %名字有缩写,参考3.1.2.3 Internal + giveninits=true, + date = year, %日期仅写到年 + maxnames = 3 , %设置名字最大数量 + minnames = 3 %设置缩减后的名字最小数量 + %uniquename = init + } +} - \begin{codetex}{中文文献排序时采用biber命令}{eg:sort:bibercmd} - %按拼音排序,biber命令 - biber -l zh__pinyin jobname - %按笔画排序,biber命令 - biber -l zh__stroke jobname - \end{codetex} +\defversion{3.7}{opt}{ + %biblatex3.7版后(比如texlive2017中的3.7版)的使用方式 + %增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 + \DeclareBibliographyOption[string]{align}[right]{% + \ifstrequal{##1}{left}{\setalignleft}{} + \ifstrequal{##1}{gb7714-2015}{\setaligngbstyle}{} + } - \item biber输出文档中引用文献的信息生成新的bib文件,命令为: - \begin{codetex}{biber输出文档引用文献的数据}{eg:bibercmd:outbibfile} - biber jobname.tex --output-format=bibtex - \end{codetex} + %增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 + \newtoggle{bbx:gbpub} + \DeclareBibliographyOption[boolean]{gbpub}[true]{% + %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 + \ifstrequal{##1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} + \ExecuteBibliographyOptions{gbpub} + %增加一个处理佚名或noauthor的控制选项 + %因为在顺序编码制中,不需要使用,这里也增加,为了与作者年制的兼容性考虑。 + \DeclareBibliographyOption[boolean]{gbnoauthor}[true]{}% + + \ExecuteBibliographyOptions{ + sorting=none, + useprefix=true, %名字的信息包括前缀 + %firstinits=true, %名字有缩写,参考3.1.2.3 Internal + giveninits=true, + date = year, %日期仅写到年 + urldate =edtf, %iso8601 + eventdate =edtf, + maxnames = 3 , %设置名字最大数量 + minnames = 3 %设置缩减后的名字最小数量 + %uniquename = init + } +} - \item 对于GB/T 7714-2015中的作者年制参考文献按文种集合的要求,从例子看中文在前英文在后。通过定义DeclareSortingScheme\{nyt\},利用userb域用于排序,默认情况下,处理作者年制样式时,biber数据 -动态处理会进行一定的处理,基本能够正确的将中文作者文献的userb域设置为cn,而英文文献设置为en。 -如果出现错误的情况,用户可以直接修改bib源文件,将userb域设置成需要的字符串,用于排序。 +\iftoggle{iftlfive} + {\switchversion{3.0}{opt}}%%当采用texlive2015以下版本时 + {\iftoggle{iftlsix}% + {\switchversion{3.4}{opt}}%%当采用texlive2016版本时 + {\switchversion{3.7}{opt}}%%当采用texlive2017以上版本时 + } + \end{texlist} -%上一段2016-1114更新,下面这段是旧的说法, -%通过定义DeclareSortingScheme\{nyt\},设置方向为direction=descending,可以实现中文在前英文在后但两个文种的文献各自也是降序的。还有一种变通的方法是,在录入bib文件时,在userb域填入用于排序的信息,比如需要排前面中文文献填cn,排后面的英文文献用en。这样因为修改后的排序格式nyt会在author域前先用userb进行排序,自然会把中文文献放在前面。 + \end{enumerate} -\item 对于参考文献信息中一些特殊字符比如\&等,除了利用jabref软件的biblatex可以自动转换外,本样式文件也做了进一步支持,利用动态数据修改对一些容易出现这种字符的域进行处理,使其内容符合tex源文件书写规则,即在特殊字符前加上斜杠。 - \item 关于出版地和出版者同时缺省的情况,GB/T 7714-2015中没有给出明确的说明,但英文给出了一个例子(见GB/T 7714-2015 附录A.3)而中文没有,英文的样式是[S.l. : s.n.],这种形式本样式文件中没有给出,而直接用两者分开的形式,[S.l.] : [s.n.],事实上这里作者认为没有必要把s.l.和s.n. 合起来,不仅与缺省两者之一的情况不统一,样式处理起来也增加不必要的麻烦。 - \item cjk判断函数,详见bbx文件内容。 +\subsection{脚注或旁注文献} + 标注命令自定义,在脚注中引用文献,或者把引文放在脚注中或者旁注中 + \begin{enumerate} + \item 标注命令定义可以使用DeclareCiteCommand命令,设置上标,包围符号,标注前后内容等。针对GB/T7714-2015中关于引用标注的特殊要求,增加了一些方便实现要求的命令比如pagescite、yearpagescite等。 + \item 在footnote的脚注文本中使用footcite命令 + \item 在正文中使用footfullcite命令,见4.11.6 Mixing Programming Interfaces + \end{enumerate} - \item 范围解析函数,详见bbx文件内容。 +\subsection{参考文献标题} + 参考文献标题修改并将标题加入目录中 + \begin{enumerate} + \item 利用defbibheading\{bibliography\}[\textbackslash bibname]\{\}重定义标题 + \item 使用bibliography外的其它标题样式比如bibintoc等 + \item 利用titlesec等宏包进行修改标题样式,利用其局部性可以调整生成多种样式。注意: 利用titlesec后,直接在defbibheading\{bibliography\}[\textbackslash bibname]\{\} 中放置居中命令centering无效。 + \end{enumerate} - \item 目前符合GB/T7714-2005或GB/T7714-2015参考文献著录规则的biblatex样式有好几个实现,除了这里作者提供的之外,还有李志奇(icetea)\footnote{\url{http://bbs.ctex.org/forum.php?mod=viewthread&tid=74474}} 和沈周(szsdk)\footnote{\url{http://bbs.ctex.org/forum.php?mod=viewthread&tid=152561&extra=page\%3D1}} 分别提供的样式文件,效果是类似的,也感谢两位作者的分享! + +\subsection{其它需要说明的问题} +下面的问题想到哪写到哪,没有特别的顺序: + +\begin{enumerate} + \item 因为采用xelatex编译,所以样式文件直接采用UTF-8编码,没有考虑GBK编码。 + + \item \zhongdian{【Most Important】【注意】:当在顺序编码和作者年制的切换,或者biblatex版本切换时,如果使用出错,可先清理一下辅助文件,清理完后,重新编译即可。} + + \item 需要注意:当bibtex键中含有中文的时候,texlive2015中的biblatex3.0版的对参考文献条目的超链接会出现问题,而texlive2016中的biblatex3.4或以后的版本则没有问题。 + + \item GB/T 7714-2015中的作者年制要求参考文献按文种集合,且中文在前英文在后。主要通过定义DeclareSortingScheme\{nyt\}(biblatex3.7 以前版本) 或DeclareSortingTemplate\{nyt\}(biblatex3.8以后版本),利用userb域排序实现。\bc{默认情况下,样式能基本正确的区分中文和英文文献并排序。当如果出现错误的情况,用户可以手动修改bib源文件,将userb 域设置成合适的字符串,用于排序,详见\ref{sec:usage:bbx}节的说明}。 + +%上一段2016-1114更新,下面这段是旧的说法, +%通过定义DeclareSortingScheme\{nyt\},设置方向为direction=descending,可以实现中文在前英文在后但两个文种的文献各自也是降序的。还有一种变通的方法是,在录入bib文件时,在userb域填入用于排序的信息,比如需要排前面中文文献填cn,排后面的英文文献用en。这样因为修改后的排序格式nyt会在author域前先用userb进行排序,自然会把中文文献放在前面。 + + \item 关于出版地和出版者同时缺省的情况,GB/T 7714-2015中没有给出明确的说明,但英文给出了一个例子(见GB/T 7714-2015 附录A.3)而中文没有,英文的样式是[S.l. : s.n.],这种形式本样式文件中没有给出,而直接用两者分开的形式,[S.l.] : [s.n.],事实上这里作者认为没有必要把s.l.和s.n. 合起来,不仅与缺省两者之一的情况不统一,样式处理起来也增加不必要的麻烦。 + + \item 目前符合GB/T7714-2005或GB/T7714-2015参考文献著录规则的biblatex样式有好几个实现,除本样式外,还有李志奇(icetea)\footnote{\url{http://bbs.ctex.org/forum.php?mod=viewthread&tid=74474}} 和沈周(szsdk)\footnote{\url{http://bbs.ctex.org/forum.php?mod=viewthread&tid=152561&extra=page\%3D1}} 分别提供的样式文件,效果是类似的。此外,Casper Ti. Vector提供的biblatex 样式caspervector也是不错的中文参考文献样式 + \footnote{\url{https://gitlab.com/CasperVector/biblatex-caspervector}}。 感谢各位作者的分享! \item 本文档根据GB/T 7714-2015提供的参考文献表著录格式示例做了测试和验证,详见第\ref{sec:eg:gb77142015}节。测试系统环境为: \begin{itemize} @@ -1324,21 +2095,22 @@ biblatex的宏包选项增加 \item 虚拟机xp+texlive 2016,采用xelatex编译; \item Deepin linux-x64v15.3+texlive 2016,采用xelatex编译。 + + \item windows7x64+texlive 2017,采用xelatex编译; \end{itemize} \end{enumerate} -\section{总结} +\section{总结与致谢} -样式文件在标准样式基础上修改设计而成,读者若查看样式文件内容可以看到作者对各目标要求所做的修改及其注释,读者也可以根据自己的需求进行修改,作者设计样式文件的思路以及在设计过程中用到的一些biblatex宏包功能说明,详见第\ref{sec:biblatex:mech}节和\footnote{\makebox{LaTeX文档中文参考文献的biblatex解决方案,地址:\url{https://github.com/hushidong/biblatex-solution-to-latex-bibliography}}}的第2.7节。 +通过对 GB/T 7714-2015 标准的分析,对 biblatex 的学习和理解,在 biblatex 标准标准样式基础上,设计完成了符合 GB/T 7714-2015 标准的biblatex参考文献样式。从测试实践看,基本能够满足使用要求,用户可以放心使用。遇到问题时,除了可以查看 +本文档说明外,也可以看样式文件代码,其中给出了详细注释,如果遇到无法解决的问题,请邮件联系作者。 -需要特别说明的是,在作者设计完成这个样式之前,一直都是在使用基于李志奇编写的样式文件修改的参考文献样式 -\footnote{\url{http://bbs.ctex.org/forum.php?mod=viewthread&tid=74474}}, -其中关于usera域的使用思路和解析卷期范围的函数对于作者设计gb7714-2015样式很有启发,非常感谢。在完成样式设计过程中,因为希望通过判断条目的内容来判断中英文,特别需要一个好用的判断CJK字符的函数,因此在知乎、CTEX论坛和微博提问,得到了包括秀文工作组、刘海洋、leipility、qingkuan等人的回答,多有受益,特别是刘海洋(LeoLiu)给出的回答非常完美 -\footnote{\url{http://bbs.ctex.org/forum.php?mod=viewthread&tid=152663&extra=page\%3D3}} -,其中代码直接用于本参考文献样式,深表感谢。当然还有更多这里没有提到姓名的师长和朋友们的热心帮忙,在此一并表示感谢! +%读者若查看样式文件内容可以看到作者对各目标要求所做的修改及,读者也可以根据自己的需求进行修改,作者设计样式文件的思路以及在设计过程中用到的一些biblatex宏包功能说明,详见第\ref{sec:biblatex:mech}节和LaTeX文档中文参考文献的biblatex解决方案的第2.7节。 +最后要感谢如下各位师长和朋友,正是在各位的帮助建议下,本样式不断升级逐渐完善。包括: moewew(biblatex 现在的维护者之一,给了不少有益的建议)、 李志奇(基于biblatex的符合GBT7714-2005的中文文献生成工具作者,笔者以前使用该工具,其代码对于设计本样式很有启发)、LeoLiu(刘海洋,CJK字符判断函数 +\footnote{\url{http://bbs.ctex.org/forum.php?mod=viewthread&tid=152663&extra=page\%3D3}} 对本宏包非常有帮助)、chinatex(china tex版主,给了很多建议和帮助,并且一起合作)、Sheng wenbo(biblatex用户手册合作译者,LaTeX2e 插图指南第三版译者,我们一起翻译的过程相互激励相互促进)、zepinglee(gbt7714-2015 bst样式作者,给了很多建议和讨论)、Harry Chen(ctex 维护者,给了不少好的建议)、liubenyuan(关于项目组织给出了很好的建议)、秀文工作组、leipility、qingkuan、湘厦人、秋平、任蒲军、fredericky123、qiuzhu、chaoxiaosu、Old Jack、Wu Nailong、Yibai Zhang、wayne508、 钟乙源、Xiaodong Yao、dsycircle、rpjshu、zjsdut、谢澜涛、Zutian Luo、海阔天空、zzqzyx、程晨、xmtangjun、蔡伟 等等。当然还有更多这里没有列全的朋友们的热心帮忙,在此一并表示感谢! \section{存在的问题和下一步工作} @@ -1370,21 +2142,59 @@ biblatex的宏包选项增加 \subsection{下一步工作} \begin{enumerate} - \item 到1.0h版为止,进一步完善了样式宏包,该版本将是最后支持texlive2015的版本,以后版本的功能实现将基于最新texlive中biblatex版本,而不再考虑texlive2015中3.0版的biblatex。1.0f版完善了align 选项(用于实现GB7714 风格的著录文献表标签,texlive2016 有效),带花括号的责任者的中英文判断等功能对texlive2015 的兼容性。1.0g版增加对mastersthesis,phdthesis,www,electronic,standard,techreport,conference,newspaper等条目类型的兼容,增加了对标准样式standard.bbx中url包选项的兼容性,增加了析出文献标识符//后面的短空格以支持著录表的断行机制,增加了特殊字符处理功能并实现对texlive2015 的兼容,给出了gb7714风格参考文献著录表文本转换为bib文件的perl脚本,与gb7714-2015 样式形成闭环。 + \item 到1.0i版为止,除了基本功能需求外,进一步完善了: GB7714风格的文献表标签项对齐设计,编组内信息的中英文判断,特殊或老的bibtex 条目类型支持,改善空格设计以满足断行要求,支持了宏包选项(url等)应用,增加了宏包选项用于GB7714风格实现控制(gbpub 等),重新设计了版本兼容方式,以后的版本中将更容易兼容biblatex的升级。剩下的问题可能是一些文献具有特殊信息或者特殊情况时带来的适应性问题,这需要经过大量的测试来发现问题。各位朋友如果发现什么问题,请邮件联系,作者会非常感谢! + + %到1.0h版为止,进一步完善了样式宏包,该版本将是最后支持texlive2015的版本,以后版本的功能实现将基于最新texlive中biblatex 版本,而不再考虑texlive2015中3.0版的biblatex。 - \item 到1.0e版为止,功能需求已经完全实现,剩下的问题可能是一些文献具有特殊信息或者特殊情况时带来的适应性问题,这需要经过大量的测试来发现问题。各位朋友如果发现什么问题,请邮件联系,作者会非常感谢! + %1.0g版增加对mastersthesis,phdthesis,www,electronic,standard,techreport,conference,newspaper等条目类型的兼容,增加了对标准样式standard.bbx中url包选项的兼容性,增加了析出文献标识符//后面的短空格以支持著录表的断行机制,增加了特殊字符处理功能并实现对texlive2015 的兼容,给出了gb7714风格参考文献著录表文本转换为bib文件的perl脚本,与gb7714-2015 样式形成闭环。 - \item 打算翻译biblatex宏包的说明文档和biber的说明文档,这个已经在进行中,完成了一部分,但因为只是业余时间做,可能最终完成的时间会比较长。如果有朋友觉得这个事情有意义,愿意一起来完成这个事情,非常欢迎,请email联系。 + %1.0f版完善了align 选项(用于实现GB7714 风格的著录文献表标签,texlive2016 有效),带花括号的责任者的中英文判断等功能对texlive2015 的兼容性。 + + %到1.0e版为止,功能需求已经完全实现,剩下的问题可能是一些文献具有特殊信息或者特殊情况时带来的适应性问题,这需要经过大量的测试来发现问题。各位朋友如果发现什么问题,请邮件联系,作者会非常感谢! + + \item biblatex宏包的说明文档中文版,已经由Shen wenbo和我基本完成,下一步是完善,校对,以及增加新版的内容。如果有朋友觉得这个事情有意义,愿意一起来完成这个事情,非常欢迎,请email联系。 + + %\item 打算翻译biblatex宏包的说明文档和biber的说明文档,这个已经在进行中,完成了一部分,但因为只是业余时间做,可能最终完成的时间会比较长。如果有朋友觉得这个事情有意义,愿意一起来完成这个事情,非常欢迎,请email联系。 %\item 进一步完善上一节提到的问题。 -%到1.0e版功能问题已经完全解决。 \end{enumerate} \section{更新历史} %============================ +\updateinfo[2017-11-21]{update to version 1.0i}\label{up:171121} +\begin{enumerate} +\item 因为biblatex版本升级,3.8及以上版的set类型不再复制第一个子条目的信息,因此增加使用关联条目的解决方案,详见 +\ref{sec:multilan:implement}, \ref{sec:data:mdf:forrelated}节。 +\item 修正了一个liubenyuan发现的bug。当标题中含有\verb|\LaTeX{}|这样的宏时,cjk判断函数出错。解决如下: + \begin{texlist} + 这个问题是这样的, + 因为在cjk判断函数中,使用了xtring的StrChar函数来抽取字符,但这个函数默认情况下需要其参数完全展开。因为\LaTeX{}宏比较复杂,展开时会出现问题。设置该函数不展开或展开一次,都可以解决判断出错的问题。比如: + + \expandarg + % + \StrChar{english}{1}[\tempa]% + \tempa + + \StrChar{中文}{1}[\tempa]% + \tempa + + \StrChar{english \LaTeX{} abc}{1}[\tempa]% + \tempa + + 但解决的是直接给出文本的情况,在biblatex使用中需要用\thefield取出文本,显然\thefield不止展开一次,因此不展开或者展开一次,都会出现问题,所以无解。只能从另外一个角度出发。 + + 考虑到动态数据修改时,也可以利用正则表达式抽取数据,因此利用它来将title信息的第一个非特殊符号字符抽取出来,放到userd中用于cjk判断,这样就避开了\LaTeX{}展开的问题。 + \end{texlist} + +\item 针对biblatex3.8a的更新做了兼容性处理,主要是修改版本判断和处理机制,替换新的宏包选项,替换新的排序格式命令。详见第\ref{sec:blx:compatibility}节 + +\item 重写了范围解析函数,详见\ref{sec:cjkjudge}节 + +\end{enumerate} + \updateinfo[2017-04-11]{update to version 1.0h}\label{up:170411} \begin{enumerate} -\item texlive2017中biblatex3.7对于authoryear样式中的date+extrayear宏有一定的修改,从原来texlive2016中的命令printdateextralabel转换到了printlabeldateextra。因此做一个修改。 +\item texlive2017中biblatex3.7对于authoryear样式中的date+extrayear宏有一定的修改,从原来texlive2016中的命令printdateextralabel 转换到了printlabeldateextra。因此做一个修改。 \begin{texlist} %设置因为mergedate默认为true时的情况,来自\bbx@opt@mergedate@compact %去掉作者后面包围年份的圆括号 @@ -1411,43 +2221,17 @@ biblatex的宏包选项增加 \printfield{extrayear}}}}}% } \end{texlist} - + 当然其实这还有更简单的解决方法就是: \begin{texlist} \let\printdateextralabel=\printlabeldateextra \end{texlist} - 只是这里为了清楚区分才用判断的方式。 + 这个方式似乎有点问题。 -\item 根据同学(zjsdut@163.com)发现的问题,修改一个bug,感谢。当online类型仅有url信息时,url前面多了一个点。这是modifydate宏设计中printtext位置导致标点异步处理机制失效所产生现象。因此作出修改如下: - \begin{texlist} - \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示表示电子资源的更新和修改日期,而公告日期安按日期格式 - \iffieldundef{year}{% - \iffieldundef{endyear}{% - \iffieldundef{eventyear}{}{\printtext{\mkbibparens{\printtext{\printfield{eventyear}}% - \iffieldundef{eventmonth}{}{\bibrangedash\thefield{eventmonth}}% - \iffieldundef{eventday}{}{\bibrangedash\printfield{eventday}}}}% - }% - }{% - \iffieldundef{endyear}{}{\printtext{\mkbibparens{\printtext{\printfield{endyear}}% - \iffieldundef{endmonth}{}{\bibrangedash\thefield{endmonth}}% - \iffieldundef{endday}{}{\bibrangedash\printfield{endday}}}}% - }% - }}{% - \iffieldundef{year}{}{\printtext{\mkbibparens{\printtext{\printfield{year}}% - \iffieldundef{month}{}{\bibrangedash\thefield{month}}% - \iffieldundef{day}{}{\bibrangedash\printfield{day}}}}% - }}% - }% - \end{texlist} +\item 根据同学(zjsdut@163.com)发现的问题,修改一个bug,感谢。当online类型仅有url 信息时,url前面多了一个点。这是modifydate宏设计中printtext位置导致标点异步处理机制失效所产生现象。因此作出修改,newbibmacro*\{modifydate\}宏详见\ref{sec:date:fmt}节。 -\item 增加一个选项gbnoauthor。当给出选项gbnoauthor=true时,作者年制中当作者缺省时,使用佚名或noauthor代替,即将佚名或noauthor作为作者处理。默认情况下gbnoauthor=true不处理,即当无作者进行处理。同时也修改了中英文排序判断和佚名代替的机制。 - \begin{texlist} - %增加一个处理佚名或noauthor的控制选项 - \DeclareBibliographyOption[boolean]{gbnoauthor}[true]{% - \ifstrequal{#1}{false}{}{\dealnoathor}} - %\ExecuteBibliographyOptions{gbnoauthor=true}%对于需要展开较早(展开层级优先)的选项,这一执行无效,只能用宏包加载时给出的选项。 - \end{texlist} +\item 增加一个选项gbnoauthor。当给出选项gbnoauthor=true时,作者年制中当作者缺省时,使用佚名或noauthor代替,即将佚名或noauthor作为作者处理。默认情况下gbnoauthor=true不处理,即当无作者进行处理,选择增加的代码详见\ref{sec:blx:compatibility}节。同时也修改了中英文排序判断和佚名代替的机制。 \begin{texlist} \map{%因为无法进行cjk字符判断,所以用反的思路,判断没有英文字符,没有空格,没有逗号等字符情况下 %认为是中文的,将文献userb设置成cn,用于排序 @@ -1501,14 +2285,14 @@ biblatex的宏包选项增加 \end{texlist} -\item 修改多语言参考文献间的分割符号,即将par改为newline,避免采用gb7714-2015的项对齐方式时,不同语言的参考文献间的分段导致没有缩进。(测试结果见:\ref{sec:align:test}节的项对齐方式,如图\ref{bib:env:gb}所示) +\item 修改多语言参考文献间的分割符号,即将par改为newline,避免采用gb7714-2015的项对齐方式时,不同语言的参考文献间的分段导致没有缩进。(测试结果见:\ref{sec:align:test}节的项对齐方式) \begin{texlist} %\renewcommand*{\entrysetpunct}{\adddot\par\nobreak} \renewcommand*{\entrysetpunct}{\adddot\newline\nobreak} \end{texlist} -\item Zeping Lee兄发现了一个小问题,感谢,一直没有注意到这个问题。这里做出修改:主要是作者年制中,期刊析出的文献中,当卷信息不存在时,期刊名和期是连在一起的,而不是中间有个逗号,例如GB/T 7714-2015 中第10.2.4 节中的刘彻东条目。主要修改如下(结果测试见:\ref{sec:article:novol}节): +\item Zeping Lee兄发现了一个小问题,感谢,一直没有注意到这个问题。这里做出修改:主要是作者年制中,期刊析出的文献中,当卷信息不存在时,期刊名和期是连在一起的,而不是中间有个逗号,例如GB/T 7714-2015 中第10.2.4 节中的“刘彻东条目”。主要修改如下(结果测试见:\ref{sec:article:novol}节): \begin{texlist} %调整期刊名的格式,源来自standard.bbx @@ -1558,21 +2342,15 @@ biblatex的宏包选项增加 %\setunit*{\adddot}%去掉点号 %\printfield{number}% \iffieldundef{number}{}{\printfield[addnumflag]{number}}% - %\iffieldundef{number}{}{\printtext{\mkbibparens{\printfield{number}}}}%增加一个圆括号 + %\iffieldundef{number}{}{\printtext{\mkbibparens{\printfield{number}}}}% 增加一个圆括号 \iffieldundef{eid}{}{% \setunit{\addcomma\space}% \printfield{eid}}} \end{texlist} -\item wayne508同学提出了一个需求,就是不希望使用出版项缺省时的默认处理,即不使用[出版地不详],[出版者不详],[S.l.],[s.n.]等填充,因此增加了一个宏包选项gbpub,当等于false时,去掉自动处理,使用biblatex的标准处理方式。 +\item wayne508同学提出了一个需求,就是不希望使用出版项缺省时的默认处理,即不使用[出版地不详],[出版者不详],[S.l.],[s.n.]等填充,因此增加了一个宏包选项gbpub,当等于false时,去掉自动处理,使用biblatex的标准处理方式。增加选项代码见\ref{sec:blx:compatibility}节,下面给出的是具体的处理代码: \begin{texlist} - \newtoggle{bbx:gbpub} - \DeclareBibliographyOption[boolean]{gbpub}[true]{% - %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 - \ifstrequal{#1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} - \ExecuteBibliographyOptions{gbpub} - %出版社和地址的处理 \newbibmacro*{location+institution+date}{% \iftoggle{bbx:gbpub}% @@ -1722,13 +2500,13 @@ biblatex的宏包选项增加 \begin{enumerate} \item 进一步增加兼容性,支持条目类型比如MASTERSTHESIS,PHDTHESIS,www,electronic,standard,techreport,conference等,支持本样式增加的newspaper类型。因此在bib文件中可以直接使用这些条目类型。具体的测试详见\ref{sec:entrytype:compatibility}节。 - 为了实现兼容,主要从三个方面进行修改,包括用户层数据源映射,样式层的数据源映射,驱动。关于数据源映射和数据模型的原理详见\ref{sec:biblatex:mech}节。 + 为了实现兼容,主要从三个方面进行修改,包括用户层数据源映射,样式层的数据源映射,驱动。关于数据源映射和数据模型的原理详见\ref{sec:biblatex:mech} 节。 因为biblatex提供的一些类型的别名的处理是在驱动层数据源映射时处理,所以要实现完全的兼容,还需要在用户层或者样式层进一步处理,首先是标识符的问题。因为以前做的标识符处理时在用户层映射中,所以这里仍然如此: \begin{texlist} \map{ \pertype{newspaper}%增加一个新闻报纸的类型newspaper - \step[fieldset=usera, fieldvalue={N}]%因为没有专门的驱动,这句的目的是定义一个usera 域,方便映射为article后判断 + \step[fieldset=usera, fieldvalue={N}]%因为没有专门的驱动,这句的目的是定义一个usera 域,方便映射为article 后判断 \step[fieldset=note, fieldvalue=news] } \map{ @@ -1778,7 +2556,7 @@ biblatex的宏包选项增加 \step[typesource=standard, typetarget=inbook, final] } \map{%尝试未定义数据模型的standard类型映射为book,standard类型在blx-dm中有出现,但仅定义了类型,域和约束等都没有定义 - \step[typesource=standard, typetarget=book, final]%当不存在booktitle域是映射为book + \step[typesource=standard, typetarget=book, final]%当不存在booktitle 域是映射为book } \map{%先于标准样式的driver层映射,将其先映射过来,并取消type设置 \step[typesource=mastersthesis, typetarget=thesis, final] @@ -1797,32 +2575,9 @@ biblatex的宏包选项增加 \DeclareBibliographyAlias{newspaper}{article}%定义驱动别名,尝试以替代驱动层映射,实践表明是可行的。 \end{texlist} -\item 在online类型中,公告日期改为首选用date实现,然后用enddate,当没有date和enddate时则用eventdate输出。 - \begin{texlist} - \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示表示电子资源的更新和修改日期,而公告日期安按日期格式 - \iffieldundef{date}{% - \iffieldundef{enddate}{% - \printtext{% - \iffieldundef{eventyear}{}{\mkbibparens{\printtext{\printfield{eventyear}}% - \iffieldundef{eventmonth}{}{\bibrangedash\thefield{eventmonth}}% - \iffieldundef{eventday}{}{\bibrangedash\printfield{eventday}}}}% - }% - }{% - \printtext{% - \iffieldundef{endyear}{}{\mkbibparens{\printtext{\printfield{endyear}}% - \iffieldundef{endmonth}{}{\bibrangedash\thefield{endmonth}}% - \iffieldundef{endday}{}{\bibrangedash\printfield{endday}}}}% - }% - }}{% - \printtext{% - \iffieldundef{year}{}{\mkbibparens{\printtext{\printfield{year}}% - \iffieldundef{month}{}{\bibrangedash\thefield{month}}% - \iffieldundef{day}{}{\bibrangedash\printfield{day}}}}% - }}% - }% - \end{texlist} +\item 在online类型中,公告日期改为首选用date实现,然后用enddate,当没有date 和enddate时则用eventdate输出。代码详见\ref{sec:date:fmt}节。 -\item 为方便bib文件生成,构建可以从gb7714-2015格式的参考文献表文本转bib文件的perl程序,利用它可以批量解析参考文献信息并转换为bib数据源文件。详见:\href{run:./gb7714texttobib.pl}{gb7714texttobib.pl},测试文件见:\href{run:./gb7714texteg.dat}{gb7714texteg.dat}。 +\item 为方便bib文件生成,构建可以从gb7714-2015格式的参考文献表文本转bib文件的perl 程序,利用它可以批量解析参考文献信息并转换为bib数据源文件。详见:\href{run:./gb7714texttobib.pl}{gb7714texttobib.pl},测试文件见:\href{run:./gb7714texteg.dat}{gb7714texteg.dat}。 \item 在输出标识符的usera域格式中考虑标准样式的url选项,以便实现对是否打印url和urldate的控制。这个需求是Wenbo Sheng兄提出的,这里做出修改。 \begin{texlist} @@ -1845,76 +2600,24 @@ biblatex的宏包选项增加 }{\nobreak\printtext{[}\nobreak S\printtext{]}\nobreak}} \end{texlist} -\item 在一些条目类型如inbook等的标识符后面(如[M]//)加入一个不可断行短空格,使紧跟其后的单词能正确断行。 +\item 在一些条目类型如inbook等的标识符后面(如[M]//)加入一个不可断行短空格,使紧跟其后的单词能正确断行,当然也可以增加一个可断行的短空格addthinspace,方便直接在//后面断行。 \begin{texlist} \usebibmacro{title}% %\nopunct - %\iffieldundef{booktitle}{\adddot\addspace}{%兼容standard时,如果standard没有booktitle的应转换为book类,因为都转成inbook类,所以这里做如下处理 + %\iffieldundef{booktitle}{\adddot\addspace}{%兼容standard时,如果standard没有booktitle的应转换为book类,因为都转成inbook 类,所以这里做如下处理 \printtext{\texttt{//}\addnbthinspace}%%\texttt{//} \usebibmacro{bybookauthor}% \end{texlist} -\item 对参考文献的一些域中存在的一些特殊字符比如\&,\%,\#等进行处理,方法是利用动态数据修改。同时因为texlive2015/texlive2016中biblatex版本的不同分别进行处理。这个需求是湘厦人提出的,这里做出修改。 - \begin{texlist} - \iftoggle{iftexlivesix}{ - \DeclareStyleSourcemap{ - \maps[datatype=bibtex]{ - \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,address,location,institution,organization}]{ - \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\#}, replace=\regexp{$1\\\#}] - } - \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,address,location,institution,organization}]{ - \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\%}, replace=\regexp{$1\\\%}] - } - \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,% - address,location,institution,organization}]{ - \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - } - } -}{ - \DeclareStyleSourcemap{ - \maps[datatype=bibtex]{ - \map[overwrite]{%title,booktitle,journaltitle,journal,publisher,address,location,institution,organization - \step[fieldsource={title}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={booktitle}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={journaltitle}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={journal}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={publisher}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={address}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={location}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={institution}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={booktitle}, match=\regexp{([^\\])\#}, replace=\regexp{$1\\\#}] - } - \map[overwrite]{ - \step[fieldsource={booktitle}, match=\regexp{([^\\])\%}, replace=\regexp{$1\\\%}] - } - } - } -} - \end{texlist} +\item 对参考文献的一些域中存在的一些特殊字符比如\&,\%,\#等进行处理,方法是利用动态数据修改。同时因为texlive2015/texlive2016中biblatex版本的不同分别进行处理。这个需求是湘厦人提出的,这里做出修改,详见\ref{sec:dynamic:modify}节。 + \end{enumerate} %============================ \updateinfo[2016-12-31]{update to version 1.0f}\label{up:161231} \begin{enumerate} -\item 利用biblatex提供的iffieldequalstr函数替换用于判断note域值等于new或standard的函数,比如: +\item 利用biblatex提供的iffieldequalstr函数替换用于判断note域值等于new或standard 的函数,比如: \begin{texlist} %case 1: %\providetoggle{ifnoteeqstandard}%判断是否是标准 @@ -1975,23 +2678,7 @@ biblatex的宏包选项增加 } \end{texlist} -\item 之前1.0e版增加align选项的时候,没有测试对texlive2015的兼容性,所以导致一些错误。因为texlive2015的biblatex3.0版本的DeclareBibliographyOption命令定义选项时不像texlive2016的biblatex3.4版的是带类型说明的。所以做出一定的处理,把该命令分两个版本进行设置。同时需要注意新定义的参考文献表环境在texlive2015中的biblatex3.0中无效且出错,所以直接去掉,因此文献表的标签的项对齐效果在texlive2015中的biblatex3.0版中无法实现。 -\begin{texlist} -%biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 -%增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 -\DeclareBibliographyOption[string]{align}[right]{% -\ifstrequal{#1}{left}{\setalignleft}{} -\ifstrequal{#1}{gb7714-2015}{\setaligngbstyle}{} -} - -%biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 -%增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015无效,仍然为右对齐模式,因为舍弃了list类环境后出错。 -\DeclareBibliographyOption{align}[right]{%texlive2015中的3.0版中的DeclareBibliographyOption选项没有类型说明 -\ifstrequal{#1}{right}{}{} -\ifstrequal{#1}{left}{\setalignleft}{} -\ifstrequal{#1}{gb7714-2015}{}{} -} -\end{texlist} +\item 之前1.0e版增加align选项的时候,没有测试对texlive2015的兼容性,所以导致一些错误。因为texlive2015的biblatex3.0版本的DeclareBibliographyOption命令定义选项时不像texlive2016的biblatex3.4版的是带类型说明的。所以做出一定的处理,把该命令分两个版本进行设置。同时需要注意新定义的参考文献表环境在texlive2015中的biblatex3.0中无效且出错,所以直接去掉,因此文献表的标签的项对齐效果在texlive2015中的biblatex3.0 版中无法实现。代码详见\ref{sec:blx:compatibility}节。 \item 之前1.0e版解决编组符号包围的责任者的中英文判断问题的时候,没有测试对texlive2015的兼容性,所以导致一些错误。因为使用了xstring宏包的功能,但texlive2015的biblatex3.0版本不默认加载xstring宏包,所以在修改样式文件,在其中加载一下该宏包。 \begin{texlist} @@ -2008,18 +2695,6 @@ biblatex的宏包选项增加 \item 给宏包增加了一个选项align,用于控制顺序编码制的参考文献表的标签对齐方式,默认是right即右对齐,可以设置left即左对齐,也可以设置gb7714-2015,即以各条参考文献自身为基准对齐实现对齐。效果见第\ref{sec:align:test}节的内容。增加一个选项,真正实现起来并不复杂,但在未明白其运行机制之前尝试了好长时间,显得很麻烦,具体的机制见第\ref{sec:biblatex:mech} 节。 修改代码如下: \begin{texlist} -%标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 -%\providetoggle{alignleft} -%\providetoggle{aligngb7714} - -%\DeclareBibliographyOption[boolean]{gb7714}{% -% \settoggle{aligngb7714}{#1}} -%\DeclareBibliographyOption[boolean]{gbleft}[true]{% -% \settoggle{alignleft}{#1} -% \iftoggle{alignleft}{\DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{##1}\hfill}}{}} -%\ExecuteBibliographyOptions{gb7714}%这一句相当于执行gb7714=true -%在选项的代码中设置完标签,然后在后面利用标签进行判断不能使用,因为后面的判断展开在标签设置完成之前就已经展开了 - \DeclareBibliographyOption[string]{align}[right]{% \ifstrequal{#1}{left}{\setalignleft}{} \ifstrequal{#1}{gb7714-2015}{\setaligngbstyle}{} @@ -2076,14 +2751,14 @@ biblatex的宏包选项增加 \end{texlist} -\item map中当有append选项时也需要overwrite选项,这不知道是不是texlive 2016中biber升级后的原因。之前使用texlive2015的时候没有问题。所以修改为: +\item map中当有append选项时也需要overwrite选项,这不知道是不是texlive 2016 中biber 升级后的原因。之前使用texlive2015的时候没有问题。所以修改为: \begin{texlist} %*.bbx \map{%将entrykey放入keywords中用于后期的使用 \step[fieldsource=entrykey] \step[fieldset=keywords, origfieldval] } - \map[overwrite]{%这里还必须有overwrite,怎么之前会觉得没有问题呢,可能是之前版本拷错了,还是之前是texlive2015变16后biber有了变化(2016-1207修改正确) + \map[overwrite]{%这里还必须有overwrite,怎么之前会觉得没有问题呢,可能是之前版本拷错了,还是之前是texlive2015 变16后biber有了变化(2016-1207修改正确) \step[fieldsource=note, final]%将note域信息复制给keywords,用于输出时容易区分标准和报纸 \step[fieldset=keywords, fieldvalue={,}, append] \step[fieldset=keywords, origfieldval, append] @@ -2115,47 +2790,16 @@ biblatex的宏包选项增加 } \end{texlist} -\item 当urldate域给出的信息不全时,比如只有年和月,而没有日,那么就需要进行判断,只输出存在的信息,所以urldate域格式修改为: -\begin{texlist} -%\newbibmacro*{urldate}{\printurldate} %引用时间修改如下一行,即带方括号 -\renewbibmacro*{urldate}{% -\addspace\printtext{[}\printfield{urlyear}% -\iffieldundef{urlmonth}{}{\bibrangedash\printfield{urlmonth}}% -\iffieldundef{urlday}{}{\bibrangedash\printfield{urlday}}\printtext{]}} -\end{texlist} +\item 当urldate域给出的信息不全时,比如只有年和月,而没有日,那么就需要进行判断,只输出存在的信息,因此对urldate域格式做修改,代码详见\ref{sec:date:fmt}节。 -\item 当责任者等需要判断中英文的信息是用编组符号包含的时候,原来的CJK判断函数会出现问题,所以利用xstring宏包做一定的修改,修改完成后可以应对信息中存在编组的情况。 - 原来的判断函数为: -\begin{texlist} -\providetoggle{ifCJKforgbt}%定义判断中文字符的函数,用于判断作者等信息是否由中文字符构成 -\def\testCJKfirstchar#1#2&{% -\ifnumgreater{`#1}{"2E7F}{\toggletrue{ifCJKforgbt}}{\togglefalse{ifCJKforgbt}}}% -\def\testCJKfirst#1{% -\edef\tempa{#1}% -\expandafter\testCJKfirstchar\tempa&} -\end{texlist} - 修改为: -\begin{texlist} -\providetoggle{ifCJKforgbt}%定义判断中文字符的函数,用于判断作者等信息是否由中文字符构成 -\def\testCJKfirstchar#1#2&{% -\ifnumgreater{`#1}{"2E7F}{\toggletrue{ifCJKforgbt}}{\togglefalse{ifCJKforgbt}}% -}% - -\def\testCJKfirst#1{% -%\edef\tempa{#1}% -\exploregroups% -\StrChar{#1}{1}[\tempa]% -\expandafter\testCJKfirstchar\tempa&} -\end{texlist} - -\item 增加了文档内容,总结了本样式宏包的特点。 +\item 当责任者等需要判断中英文的信息是用编组符号包含的时候,原来的CJK判断函数会出现问题,所以利用xstring宏包做一定的修改,修改完成后可以应对信息中存在编组的情况,详见\ref{sec:cjkjudge}节。 \end{enumerate} %============================ \updateinfo[2016-11-24]{update to version 1.0d} \begin{enumerate} -\item 用于usera域的gbtypeflag域打印格式,明明在aritle/book类中没有问题,但在beamer中就会出现问题,多出一个点了。到现在还没有搞明白怎么会多出点来,printtext命令明明没有输出点,不像S.l.还有一个点的输出,这里只有]符号,但就是多了一个点。从最后修改成功看,这里就是多了一个点,而且是literal period,所以后面的点无法覆盖它,所以需要先用adddot命令将其转换为缩写的点,而且似乎用isdot也不行,其原因还得再分析分析。因此做如下修改: +\item 用于usera域的gbtypeflag域打印格式,明明在aritle/book类中没有问题,但在beamer中就会出现问题,多出一个点了。到现在还没有搞明白怎么会多出点来,printtext命令明明没有输出点,不像S.l.还有一个点的输出,这里只有]符号,但就是多了一个点。从最后修改成功看,这里就是多了一个点,而且是literal period,所以后面的点无法覆盖它,所以需要先用adddot命令将其转换为缩写的点,而且似乎用isdot 也不行,其原因还得再分析分析。因此做如下修改: \begin{texlist} %域格式修改 @@ -2209,7 +2853,7 @@ biblatex的宏包选项增加 \item 在参考文献表中加入逐字文本(原样文本,如实文本),也就是直接插入文本信息,或者用printtext插入都会导致一些问题,上面的第1点就是典型问题之一,还比如出版项缺省等问题。在有利用printtext 插入原样文本的时候,要特别注意在driver中该命令前后几行的代码后加注释,否则容易带入空格,注释后就可以消除。 -\item 同样的periodical条目类型的title输出也修改了printtext[title]的结束编组位置。journaltitle域格式也加了isdot。patent 的title也修改了printtext[title]的结束编组位置。 +\item 同样的periodical条目类型的title输出也修改了printtext[title]的结束编组位置。journaltitle域格式也加了isdot。patent 的title 也修改了printtext[title]的结束编组位置。 \item 修改了location+institution+date的s.n.的处理方式与publisher+location+date的方式类似。中英文判断也往外放到一层,与publisher+location+date一致,这样就不会出现不判断的问题。 @@ -2330,31 +2974,9 @@ backrefpages = {引用页:}, } \end{texlist} -\item 在处理姓名相关的问题时,biblatex3.2以前的版本利用DeclareNameFormat的方式修改得到需要的姓和名的前后顺序,当maxbibnames和maxcitenames不一致时,可能用到NameFormat:last-first/first-last,所以除了第一个姓名和后面姓名的姓和名的前后顺序时不同的,所以进一步做修改如下。而biblatex3.3以后的版本,直接利用newbibmacro来修改name:family-given和name:given-family,这样就避免了DeclareNameFormat格式的修改,所以不用进行改动。 -\begin{texlist} -%\DeclareNameFormat{first-last}{%修改作者的姓和名的顺序,源来自于biblatex.def文件 -% \iffirstinits% -% {\usebibmacro{name:last-first}{#1}{#4}{#5}{#7}} -% {\usebibmacro{name:last-first}{#1}{#3}{#5}{#7}}% -% \usebibmacro{name:andothers}} - -%\DeclareNameFormat{last-first/first-last}{% -% \ifnumequal{\value{listcount}}{1} -% {\iffirstinits -% {\usebibmacro{name:last-first}{#1}{#4}{#5}{#7}} -% {\usebibmacro{name:last-first}{#1}{#3}{#5}{#7}}% -% \ifblank{#3#5} -% {} -% {\usebibmacro{name:revsdelim}}} -% {\iffirstinits -% {\usebibmacro{name:last-first}{#1}{#4}{#5}{#7}}%name:first-last 换成为name:last-first -% {\usebibmacro{name:last-first}{#1}{#3}{#5}{#7}}}%name:first-last 换成为name:last-first -% \usebibmacro{name:andothers}} -\end{texlist} - -但是这样的处理仍然会出现问题,在引用标签的生成过程中,某些时候仍然会有first-last出现,因为在某些情况下,biblatex会利用first-last和last-first进行区分,因此不在使用这种方式,而是直接重定义输出宏first-last为last-first,类似于对3.3以后版本的处理。 +\item 在处理姓名相关的问题时,利用DeclareNameFormat的方式控制需要的姓和名的前后顺序,当maxbibnames和maxcitenames不一致时,可能用到last-first/first-last(biblatex3.2以前的版本)/family-given/given-family(3.3以后版本),其中第一个姓名和后面姓名的姓和名的前后顺序时不同的。可以直接利用其中的name:first-last和name:last-first或name:family-given和name:given-family宏做修改控制具体姓名成分的格式,而避免重定义DeclareNameFormat格式,详见\ref{sec:name:fmt:out}节。 -\item 作者年制区分文献表和引用中的作者名数量,引用相关的选项设置需要放到cbx文件中,否则可能失效。同时因为一些特殊情况下,姓名数量截短为1个的引用标签,可能无法区分文献,所以默认情况下,biblatex会增加作者数量用于区分,这是因为uniquelist会自动重设maxcitenames和mincitenames,因此修改uniquelist选项为minyear,明确在年份也一样的情况下再利用增加姓名进行区分。*ay.bbx文件中的选项设置为: +\item 作者年制区分文献表和引用中的作者名数量,引用相关的选项设置需要放到cbx 文件中,否则可能失效。同时因为一些特殊情况下,姓名数量截短为1个的引用标签,可能无法区分文献,所以默认情况下,biblatex会增加作者数量用于区分,这是因为uniquelist会自动重设maxcitenames和mincitenames,因此修改uniquelist选项为minyear,明确在年份也一样的情况下再利用增加姓名进行区分。*ay.bbx文件中的选项设置为: \begin{texlist} \ExecuteBibliographyOptions{ useprefix = true, %名字的信息包括前缀 @@ -2386,7 +3008,7 @@ backrefpages = {引用页:}, %sorting = none , maxcitenames=1, mincitenames=1, - uniquename=init,%因为使用了名字缩写选项,所以需要设置uniquename=init 而不是full避免冲突 + uniquename=init,%因为使用了名字缩写选项,所以需要设置uniquename=init 而不是full 避免冲突 labeldate=true, uniquelist=minyear, } @@ -2542,24 +3164,6 @@ nopublisher = {[s.n.]} \begin{enumerate} \item 去掉texlive2016和texlive2015选项,直接根据biblatex宏包的版本进行判断。 -原来的说明: -\begin{texlist} - \textcolor{red}{\HandRight \heiti 【Most Important】【注意】:texlive2015中的biblatex版本是3.0,texlive2016中biblatex的版本是3.4,两者对于名字域打印格式的输入参数有略微的差异,所以相应的样式文件也需要修改。为此增加两个宏包选项,一个texlive2016,一个是texlive2015。当使用texlive2016时,请使用texlive2016选项,其它情况下请带上选项texlive2015。比如:} - - \begin{codetex}{使用2016版texlive时带选项texlive2016}{eg:optional:2016} - \usepackage[backend=biber,texlive2016,style=gb7714-2015]{biblatex} - \end{codetex} - - \begin{codetex}{使用非2016版texlive时带选项texlive2015}{eg:optional:2015} - \usepackage[backend=biber,texlive2015,style=gb7714-2015]{biblatex} - \end{codetex} -\end{texlist} - -修改为: -\begin{texlist} - \textcolor{red}{\HandRight \heiti 【Most Important】【注意】:texlive2015中的biblatex版本是3.0,texlive2016中biblatex的版本是3.4,新版本对于名字域打印有了较大变化,所以需做相应的修改,为此在biblatex中首先进行版本判断,然后根据版本不同进行不同的处理。} -\end{texlist} - \item 增加了unpublished条目类型驱动,并按报告report进行处理,但文献标识码用Z表示。 \end{enumerate} diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015-preamble.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015-preamble.tex index 9b3ff894631..bb37955e3f8 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015-preamble.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015-preamble.tex @@ -1,11 +1,11 @@ -%\usepackage{bbding} - \usepackage{expl3,etoolbox,ifthen,xstring} +\usepackage{xltxtra,mflogo,texnames} \usepackage{ctex} +\ctexset{today=old} \let\kaiti=\kaishu \usepackage{xeCJKfntef} -\usepackage[paperwidth=210mm,paperheight=290mm,left=20mm,right=20mm,top=25mm, bottom=15mm]{geometry} %定义版面 - +\usepackage[paperwidth=210mm,paperheight=290mm,left=20mm,right=20mm,top=25mm, bottom=15mm,showcrop +]{geometry}%定义版面showframe, \usepackage[colorlinks=true,% pdfstartview=FitH,linkcolor=blue,anchorcolor=violet,citecolor=magenta]{hyperref} %书签功能,选项去掉链接红色方框 \usepackage{titleref} %标题引用 @@ -13,45 +13,19 @@ pdfstartview=FitH,linkcolor=blue,anchorcolor=violet,citecolor=magenta]{hyperref} %yellow, black, gray,white, darkgray, lightgray, brown, %lime, olive, orange, red,purple, teal, violet. %CJKbookmarks,bookmarksnumbered=true, +%\usepackage[unit=cm,type=lowerleft,showframe=true,hshift=2cm,vshift=1.5cm]{fgruler} +\usepackage{titlesec} +%\titlespacing*{hcommandi}{hlefti}{hbefore-sepi}{hafter-sepi}[hright-sepi] +\titlespacing*{\section}{0pt}{\baselineskip}{0.5\baselineskip} +\titlespacing*{\subsection}{0pt}{0.5\baselineskip}{0.5\baselineskip} +\titlespacing*{\subsubsection}{0pt}{0.5\baselineskip}{0pt} -%%%========================参考文献=============================== -%\usepackage[backend=bibtex8,sorting=none,citestyle=authoryear,bibstyle=alphabetic]{biblatex} -%采用分章的参考文献的快捷方法 -%\renewcommand{\bibfont}{\zihao{-5}\songti} \setlength{\bibitemsep}{2pt} \defbibheading{bibliography}[\bibname]{% %\phantomsection%解决链接指引出错的问题,相当于加入了一个引导点 %\addcontentsline{toc}{subsection}{#1} \centering\subsubsection*{#1}}% -%参考文献的bib文件 -% \markboth{#1}{#1}} -%注意在实际使用中用titsec宏包的页眉页脚也有点问题,一旦给出markboth就会出现问题 -%这里因为bibliography给出了markboth所以出错。因此重定义bibliography以消除问题 -%重定义命令中去掉了markboth那一句命令。 -%常用样式 -%style=trad-plain -%style=trad-unsrt -%style=trad-alpha -%style=trad-abbrv -%style=musuos -%style=nature -%style=nejm %New England Journal of Medicine -%style=phys %follows the guidelines of the aip and aps -%bibstyle=publist -%style=science %follows the guidelines of the journal Science - -%style=ieee % follows the guidelines of the ieee. -%style=ieee-alphabetic -%bibstyle=manuscripts,otheroption -%style=chem-acs %American Chemistry Society journals. -%style=chem-angew %Angewandte Chemie Chemistry – A European Journal. -%style=chem-biochem %Biochemistry and a small number of other American Chemistry Society journals. -%style=chem-rsc %Royal Society of Chemistry journals. -%style=authortitle-dw -%style=footnote-dw -%%%================================================================= - %自定义下划红线和背景颜色 \usepackage{ulem} \newcommand\yellowback{\bgroup\markoverwith @@ -67,32 +41,19 @@ pdfstartview=FitH,linkcolor=blue,anchorcolor=violet,citecolor=magenta]{hyperref} \captiontitlefont{\zihao{-5}} %图题样式 \captionwidth{0.8\linewidth} %标题宽度 \changecaptionwidth -%\captionstyle{<style>} can be used to alter this. Sensible values for -%style are: \centering, \raggedleft or \raggedright -\captionstyle{\centering} +\captionstyle{\centering} %\captionstyle{<style>} style are: \centering, \raggedleft or \raggedright %\precaption{\rule{\linewidth}{0.4pt}\par} -%\postcaption{\rule[0.5\baselineskip]{\linewidth}{0.4pt}} -\setlength{\belowcaptionskip}{0.2cm} %设置caption上下间距 -\setlength{\abovecaptionskip}{0.2cm} -\setlength{\abovelegendskip}{0.2cm} %设置legend上下间距 -\setlength{\belowlegendskip}{0.2cm} +%\postcaption{\vspace{-1cm}} +\setlength{\belowcaptionskip}{2pt} %设置caption上下间距 +\setlength{\abovecaptionskip}{0pt} +%\setlength{\abovelegendskip}{0pt} %设置legend上下间距 +%\setlength{\belowlegendskip}{0pt} %新的浮动体设置 -%\newfloatlist[within]{fenv}{ext}{listname}{capname} -%\newfloatlist{X}{Z}{flist}{fcap} -%within,可以设为chapter表示以章节为单位 -%fenv,环境名 -%ext,写入条目的文件的扩展名 -%listname,新环境目录的标题 -%capname,新环境标题的图序 -\newcommand{\listegcodename}{示~~ 例} -\newcommand{\egcodename}{示例} -\newfloatlist{egcode}{loc}{\listegcodename}{\egcodename} -\newfixedcaption{\codecaption}{egcode} - -%环境名: -%\begin{source}\end{source} -%\begin{source*}\end{source*} -%目录命令 +\newcommand{\listegcodename}{示~~ 例}%listegcodename,新环境目录的标题 +\newcommand{\egcodename}{示例}%egcodename,新环境标题的图序 +\newfloatlist{egcode}{loc}{\listegcodename}{\egcodename}%loc,写入条目的文件的扩展名 +\newfixedcaption{\codecaption}{egcode}%egcode,环境名 +%新的浮动体目录命令 %可以设置\cftbeforeZtitleskip,\cftafterZtitleskip长度,比如: \setlength{\cftbeforeloctitleskip}{\baselineskip} \setlength{\cftafterloctitleskip}{0.5\baselineskip} @@ -103,13 +64,11 @@ pdfstartview=FitH,linkcolor=blue,anchorcolor=violet,citecolor=magenta]{hyperref} \renewcommand{\cftegcodeaftersnum}{.} \renewcommand{\cftegcodeaftersnumb}{~} \cftsetindents{egcode}{0em}{3em} -\setlength{\cftbeforeegcodeskip}{2mm} +\setlength{\cftbeforeegcodeskip}{1pt}%各条目的垂直间距 \renewcommand{\cftegcodepagefont}{\bfseries} - \setlength{\cftbeforetoctitleskip}{\baselineskip} \setlength{\cftaftertoctitleskip}{0.5\baselineskip} -%\renewcommand\contentsname{\hfill 目~~ 录 \hfill \hspace{1cm}} -%用这一句也是一样的。 +%目录命令 \renewcommand{\cfttoctitlefont}{\hfill\Large\heiti} \renewcommand{\cftaftertoctitle}{\hfill\hspace{0.1cm}} \renewcommand\contentsname{目~~ 录} @@ -137,7 +96,7 @@ pdfstartview=FitH,linkcolor=blue,anchorcolor=violet,citecolor=magenta]{hyperref} {\noindent\makebox{\color{green!50!black}\rule[1pt]{\linewidth}{0.4pt}}} \lstnewenvironment{codetex}[2]% -{\begin{center}\end{center}\centering\setlength{\abovecaptionskip}{1mm}\setlength{\belowcaptionskip}{1mm}% +{\begin{center}\end{center}\centering\setlength{\abovecaptionskip}{1mm}\setlength{\belowcaptionskip}{-3mm}% \vspace{-2.0\baselineskip} \codecaption{#1}\label{#2}%\nopagebreak %\vspace{-1.0\baselineskip} @@ -152,15 +111,16 @@ breaklines=true, %showspaces=true, extendedchars=false, columns=fullflexible,%flexible, -%frame=tb, -frame=none, +frame=b, +%frame=none, +rulecolor=\color{green!50!black}, fontadjust=true, language=[LaTeX]TeX, %backgroundcolor=\color{yellow}, %背景颜色 -backgroundcolor=\color{codebackground}, +backgroundcolor=\color{blue!5},%codebackground numbers=left, numberstyle=\tiny\color{red}, -basicstyle=\small, % print whole listing small,footnotesize +basicstyle=\small\ttfamily, % print whole listing small,footnotesize keywordstyle=\color{blue}\bfseries,%\underbar, % underlined bold black keywords identifierstyle=, % nothing happens @@ -169,7 +129,7 @@ stringstyle=\ttfamily, % typewriter type for strings showstringspaces=false}% no special string spaces %\renewcommand{\baselinestretch}{0.9} %加这句的话需要进行垂直空间位置调整 } -{\nopagebreak\vspace*{-\baselineskip}\codebottomline\\} +{}%\nopagebreak\vspace*{-\baselineskip}\codebottomline \lstnewenvironment{texlist}% {\lstset{% general command to set parameter(s) @@ -187,7 +147,7 @@ language=[LaTeX]TeX, %backgroundcolor=\color{yellow}, %背景颜色 numbers=left, numberstyle=\tiny\color{red}, -basicstyle=\footnotesize, % print whole listing small +basicstyle=\footnotesize\ttfamily, % print whole listing small keywordstyle=\color{blue}\bfseries,%\underbar, % underlined bold black keywords identifierstyle=, % nothing happens @@ -198,19 +158,20 @@ showstringspaces=false}% no special string spaces {} \usepackage[listings,theorems]{tcolorbox} - +\tcbuselibrary{breakable} \newcounter{myprop}\def\themyprop{\arabic{myprop}} %序号如果带章节的话可以改为比如:\thesection.\arabic{myprop} -\tcbmaketheorem{property}{方法}{theorem style=plain,fonttitle=\bfseries\upshape, % -fontupper=\slshape,boxrule=0mm,arc=0mm, % -coltitle=black,colback=green!25,colframe=blue!50,% -separator sign={\ $\blacktriangleright$}, +\tcbmaketheorem{property}{方法} +{separator sign={\ $\blacktriangleright$},breakable, +theorem style=plain,fonttitle=\bfseries\upshape, fontupper=\slshape,boxrule=0mm,arc=0mm, % +coltitle=black,colback=green!50!yellow!15!white,colframe=blue!50,% description delimiters={}{}, terminator sign={\ }}{myprop}{pp} %最后一个必须参数是prefix用来做label比如这里是pp:加上给出的标签名 \newtcbtheorem[]{refentry}{条目类型} -{separator sign={\ $\blacktriangleright$},theorem style=plain,fonttitle=\bfseries, +{separator sign={\ $\blacktriangleright$},breakable, +theorem style=plain,fonttitle=\bfseries, fontupper=\normalsize,boxrule=0mm,arc=0mm, coltitle=green!35!black,colbacktitle=green!15!white, colback=green!50!yellow!15!white,terminator sign={\ }}{rfeg} @@ -232,6 +193,8 @@ colback=green!50!yellow!15!white,terminator sign={\ }}{rfeg} \end{center} } +\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} + %--------------列表环境--------------------------------------------- \usepackage[inline]{enumitem} %重设list环境 \setlist[enumerate]{label=\bfseries\textcolor{violet}{\arabic*.},topsep=2pt,partopsep=0pt,parsep=0pt,% @@ -241,34 +204,35 @@ leftmargin=4.5em,itemindent=0em} \setlist[description]{font=\bfseries\textcolor{violet},align=right,topsep=5pt,partopsep=0pt,parsep=0pt,% itemsep=0pt,leftmargin=2em,itemindent=0em}%注意,font或format中的最后一个命令自动提取标签为其参数 -%\usepackage{fancyvrb}%fancyvrb宏包 -%\DefineVerbatimEnvironment% %定义环境-myverbatim -%{myverbatim}{Verbatim} -%{gobble=0,numbers=left,numbersep=2mm,framerule=0.2mm,fontsize=\footnotesize, -%firstnumber=auto,%frame=lines, -%rulecolor=\color{red!25},fillcolor=\color{red!25},showspaces=true,xleftmargin=0mm} +\usepackage{longtable} + +\usepackage{amssymb} +\newcommand{\HandRight}{$\bigstar$} +\newcommand{\zhongdian}[1]{\textcolor{violet}{\HandRight\heiti#1}} \newcommand{\pz}[1]{%定义pz为旁注命令 -\marginpar[\flushright\youyuan\color{red}\footnotesize #1]{\youyuan\color{red}\small #1}} +\marginpar[\flushright\youyuan\color{violet}\footnotesize #1]{\youyuan\color{red}\small #1}} \newcommand{\PZ}[1]{%定义pz为旁注命令 -\marginpar[\flushright\youyuan\color{red}\footnotesize #1]{\youyuan\color{red}\small #1}} +\marginpar[\flushright\youyuan\color{violet}\footnotesize #1]{\youyuan\color{red}\small #1}} \newcommand{\qd}[1]{%定义qd为强调命令 \begin{quote} - \fangsong\color{blue}#1 + \fangsong\color{violet}#1%blue!50!black \end{quote}} \newcommand{\QD}[1]{%定义qd为强调命令 \begin{quote} - \fangsong\color{blue}#1 + \fangsong\color{violet}#1 \end{quote}} \newcommand{\bc}[1]{%定义补充信息 -{\kaiti\color{teal}#1}} %orange,brown,purple,teal,violet,olive,cyan +{\kaiti\color{violet}#1}} %orange,brown,purple,teal,violet,olive,cyan \newcommand{\BC}[1]{%定义补充信息 -{\kaiti\color{teal}#1}} +{\kaiti\color{violet}#1}} +\newcommand{\zd}[1]{%定义补充信息 +{\heiti\color{violet}#1}} %orange,brown,purple,teal,violet,olive,cyan +\newcommand{\ZD}[1]{%定义补充信息 +{\heiti\color{violet}#1}} + -\usepackage{amssymb} -\newcommand{\HandRight}{$\bigstar$} -\newcommand{\zhongdian}[1]{\textcolor{red}{\HandRight\heiti#1}} \newenvironment*{marglist} {\list{}{\setlength{\topsep}{0pt} diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf Binary files differindex f45ceece552..eae447a4c09 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.tex index da17559cc33..786e92a37c4 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.tex @@ -2,6 +2,11 @@ \usepackage[backend=biber,bibstyle=gb7714-2015,%nature,% citestyle=gb7714-2015%,backref=true%gb,gbt7714_2005_n, ]{biblatex}%biber,caspervector +\setlength{\bibitemsep}{2pt} +%\defbibheading{bibliography}[\bibname]{% +%%\phantomsection%解决链接指引出错的问题,相当于加入了一个引导点 +%%\addcontentsline{toc}{subsection}{#1} +% \subsubsection*{#1}}% \input{biblatex-gb7714-2015-preamble} %宏包和一些格式设置 \addbibresource[location=local]{example.bib} \addbibresource[location=local]{egspecialchar.bib} diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015ay.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015ay.pdf Binary files differdeleted file mode 100644 index 56eef110ab1..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015ay.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015ay.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015ay.tex deleted file mode 100644 index 5bcc1b004dc..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015ay.tex +++ /dev/null @@ -1,14 +0,0 @@ -\documentclass[11pt]{article} %用draft选项找到badbox的位置 -\usepackage[backend=biber,bibstyle=gb7714-2015ay,%nature,% -citestyle=gb7714-2015ay,%,backref=true%gb,gbt7714_2005_n, -gbnoauthor=true]{biblatex}%biber,caspervector -\input{biblatex-gb7714-2015-preamble} %宏包和一些格式设置 -\addbibresource[location=local]{example.bib} -\addbibresource[location=local]{egspecialchar.bib} - -\begin{document} - -\input{biblatex-gb7714-2015-content.tex} - -\end{document} - diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015.jpg b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015.jpg Binary files differnew file mode 100644 index 00000000000..21a71a85883 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015.jpg diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015.pdf Binary files differnew file mode 100644 index 00000000000..4e83df9824e --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015.tex new file mode 100644 index 00000000000..afeb35e664b --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015.tex @@ -0,0 +1,28 @@ +\documentclass[twoside]{article} +\usepackage{ctex} +\usepackage{geometry} +\geometry{paperwidth=21cm,paperheight=20cm,top=1.5cm, bottom=1.5cm, left=1cm,right=1cm} +\usepackage{xcolor} +\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} +\usepackage[backend=biber,style=gb7714-2015,align=gb7714-2015]{biblatex} +\addbibresource[location=local]{example.bib} +%\renewcommand{\bibfont}{\zihao{5}} +%\setlength{\bibitemsep}{0ex} +%\setlength{\bibnamesep}{0ex} +%\setlength{\bibinitsep}{0ex} + +\begin{document} + +\section{顺序编码制标注与著录样式} + +\defbibentryset{bilangzhang}{张敏莉2007-500-503,Zhang2007-500-503} +\defbibentryset{bilangyi}{易仕和2013--,Yi2013--} +文献\cite{王夫之1845--}\cite{陈建军2010-93-93}; +文献\parencite{张田勤2000--}\parencite{吴云芳2003--}; +文献\pagescite[][300]{汤万金2013-09-30--}\pagescite[][100-107]{张凯军2012-04-05--}; +文献\yearpagescite{萧钰2001--}\yearpagescite{国家环境保护局科技标准司1996-2-3}; +双语\cite{bilangzhang,bilangyi}; +其它\cite{Calkin2011-8-9,CRAWFPRD1995--,Babu2014--,CALMS1965--,DESMARAIS1992-605-609} + +\printbibliography[heading=subbibintoc,title=【参考文献】] +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015ay.jpg b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015ay.jpg Binary files differnew file mode 100644 index 00000000000..95ee74bfac2 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015ay.jpg diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015ay.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015ay.pdf Binary files differnew file mode 100644 index 00000000000..8af498c72ea --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015ay.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015ay.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015ay.tex new file mode 100644 index 00000000000..a15e7154c89 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015ay.tex @@ -0,0 +1,32 @@ +\documentclass[twoside]{article} +\usepackage{ctex} +\usepackage{geometry} +\geometry{paperwidth=21cm,paperheight=20cm,top=1.5cm, bottom=1.5cm, left=1cm,right=1cm} +\usepackage{xcolor} +\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} +\usepackage[backend=biber,style=gb7714-2015ay]{biblatex} +\addbibresource[location=local]{example.bib} +%\renewcommand{\bibfont}{\zihao{5}} +%\setlength{\bibitemsep}{0ex} +%\setlength{\bibnamesep}{0ex} +%\setlength{\bibinitsep}{0ex} + +\iftoggle{iftleight}{\defdoublelangentry{易仕和2013--}{Yi2013--}}{} +\iftoggle{iftlnine}{\defdoublelangentry{易仕和2013--}{Yi2013--}}{} + +\begin{document} + +\section{作者年制标注与著录样式} +\defbibentryset{张敏莉,等,2007}{张敏莉2007-500-503,Zhang2007-500-503} +双语文献:set动态方法\cite{张敏莉,等,2007}; +\iftoggle{iftleight}{related动态方法\cite{易仕和2013--}}{} +\iftoggle{iftlnine}{related动态方法\cite{易仕和2013--}}{} + +文献\cite{王夫之1845--}\cite{陈建军2010-93-93}; +文献\parencite{张田勤2000--}\parencite{吴云芳2003--}; +文献\pagescite[][300]{汤万金2013-09-30--}\pagescite[][100-107]{张凯军2012-04-05--}; +文献:萧钰\yearpagescite{萧钰2001--},国家环境保护局科技标准司\yearpagescite{国家环境保护局科技标准司1996-2-3}; +其它\cite{Calkin2011-8-9,CRAWFPRD1995--,Babu2014--,CALMS1965--,DESMARAIS1992-605-609} + +\printbibliography[heading=subbibintoc,title=【参考文献】] +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbibenv-left.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egalignleft.pdf Binary files differindex a4923ec420a..e711b8654c0 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbibenv-left.pdf +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egalignleft.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbibenv-left.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egalignleft.tex index be86c15a8f8..be86c15a8f8 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbibenv-left.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egalignleft.tex diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbibenv-right.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egalignright.pdf Binary files differindex da07edc77f4..0fa2577c428 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbibenv-right.pdf +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egalignright.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbibenv-right.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egalignright.tex index b36a0a66f98..b36a0a66f98 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbibenv-right.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egalignright.tex diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015ay-beamer.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbeamer.pdf Binary files differindex 6fb84fa96ca..5c61f71720f 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015ay-beamer.pdf +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbeamer.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015-beamer.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbeamer.tex index 6483ef2e077..6483ef2e077 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015-beamer.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbeamer.tex diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015-beamer.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbeameray.pdf Binary files differindex 0406647932b..80e0be79922 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015-beamer.pdf +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbeameray.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015ay-beamer.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbeameray.tex index 6b918677e2f..6b918677e2f 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015ay-beamer.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbeameray.tex diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbibenv-gb7714-2015.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbibenv-gb7714-2015.pdf Binary files differdeleted file mode 100644 index f799dd92a57..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbibenv-gb7714-2015.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbibenv-gb7714-2015.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbibenv-gb7714-2015.tex deleted file mode 100644 index 48bc327bea9..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbibenv-gb7714-2015.tex +++ /dev/null @@ -1,39 +0,0 @@ -\documentclass[twoside]{article} -\usepackage{ctex} -\usepackage{geometry} -\geometry{paperwidth=18cm,paperheight=13.5cm,top=1.5cm, bottom=1.5cm, left=1cm,right=1cm} -\usepackage{xcolor} -\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} -\usepackage[backend=biber,style=gb7714-2015,align=gb7714-2015]{biblatex} -\addbibresource[location=local]{example.bib} -%\renewcommand{\bibfont}{\zihao{5}} -%\setlength{\bibitemsep}{0ex} -%\setlength{\bibnamesep}{0ex} -%\setlength{\bibinitsep}{0ex} - -\begin{document} - - - -\section{文献表} -文献 - -\defbibentryset{bilangzhang}{张敏莉2007-500-503,Zhang2007-500-503} -\defbibentryset{bilangyi}{Yi2013--,易仕和2013--} - -\cite{张伯伟2002--}\cite{CRAWFPRD1995--}\cite{Babu2014--}\cite{汤万金2013-09-30--} -\cite{Calkin2011-8-9} - -双语文献对齐\cite{bilangzhang,bilangyi} - -文献 -\cite{CALMS1965--} -\cite{吴云芳2003--} -\cite{张凯军2012-04-05--}\cite{KOSEKI2002--} -\cite{全国广播电视标准化技术委员会2007-1-1}\cite{国家环境保护局科技标准司1996-2-3} -\cite{楼梦麟2011-11-12}\cite{BUSECK1980-117-211}\cite{陈建军2010-93-93} -\cite{DESMARAIS1992-605-609}\cite{张田勤2000--}\cite{萧钰2001--} -\cite{王夫之1845--,汪昂1881--} - -\printbibliography[heading=subbibintoc,title=【参考文献】] -\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbooks.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbooks.pdf Binary files differnew file mode 100644 index 00000000000..3ddb6757912 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbooks.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbooks.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbooks.tex new file mode 100644 index 00000000000..9729db20ca1 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbooks.tex @@ -0,0 +1,67 @@ +\documentclass[twoside]{article} +\usepackage{ctex} +\usepackage{xltxtra,mflogo,texnames} +\usepackage{geometry} +\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} +\usepackage{xcolor} +\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} +\usepackage[backend=biber,style=gb7714-2015,gbpub=true]{biblatex}%align=gb7714-2015 +%\addbibresource[location=local]{egtest.bib} +\addbibresource[location=local]{example.bib} +\addbibresource[location=local]{egspecialchar.bib} +%\renewcommand{\bibfont}{\zihao{5}} +%\setlength{\bibitemsep}{0ex} +%\setlength{\bibnamesep}{0ex} +%\setlength{\bibinitsep}{0ex} +%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} + +\begin{document} + +%%%测试作者年/biblatex版本兼容性的文件 +%%%test file for author year style + +\section{文献表} +\begin{refsection} +\defbibentryset{bilangyi2013}{易仕和2013--,Yi2013--} +\begin{enumerate} + \item 中文文献存在信息缺省的情况测试 +\cite{booknodate,booknolocation,booknopages,booknopublisher,booknopublishernoyear,booknopublisherpage, 余敏2001-179-193,余敏2001-179-193a,余敏2001-179-193b,余敏2001-179-193c,booknoauthor} + \item 英文文献信息缺省情况以及英文个人作者判断测试 +\cite{Parsons2000a--,Parsons2000b--,Parsons2000--,Parsons2000nodate--, +Parsons2000noloc--,Parsons2000nopub--,Parsons2000nopubnoyear--, +Parsons2000nopubpages--,Parsons2000noauthor--} + \item 年份信息有额外说明的文献比较测试\cite{汪昂1912--,汪昂1881--,王夫之1845--} + \item 页脚中引用和打印文献表\footnote{参考文献在脚注中引用\footcite{赵学功2001--}} + \footfullcite{赵学功2001--} + \item 专著的双语文献引用测试\cite{bilangyi2013} + \item 专著带前后缀的作者名\cite{Peebles2001-100-100} + \item 带页码的引用,使用pagescite命令。 +\pagescite{Peebles2001-100-100}\pagescite[][201-301]{Peebles2001-100-100} +\parencite[见][49页]{Miroslav2004--}\cite[见][49页]{蔡敏2006--} + \item 作者年制文中已有作者只需要年份和页码的情况,使用命令yearpagescite,而顺序制的情况下该命令与pagescite命令作用相同。比如: 见赵耀东\yearpagescite[][205]{赵耀东1998--}和Simon\yearpagescite[][15]{Simon2001--} 的文献。 + \item 专著更多测试 +\cite{GPS1988--}\cite{顾炎武1982--}\cite{PIGGOT1990--}\cite{PEEBLES2001--} +\cite{Poisel2013--}\cite{张伯伟2002--}\cite{2009-155-155} +\cite{GPS1988--,CRANE1972--,CRAWFPRD1995--,Gradshteyn2000--,IFLAI1977--,Kinchy2012-50-50,Lin2004--,Miroslav2004--,Mittelbach2004--,OBRIEN1994--} +\cite{PEEBLES2001--,Peebles2001-100-100,PIGGOT1990--,Poisel2013--,Praetzellis2011-13-13,Proakis2007--,Reed2005--,ROOD2001--,Ross2010--,Simon2004--,Simon2001--,Stueber2001--,Yi2013--,YUFIN2000--, 埃伯哈德$ullet$蔡德勒等2012--,蔡敏2006--,陈希孺2009--,陈志杰2006--,樊昌信2005--,顾炎武1982--,广西壮族自治区林业厅1993--,郭文彬2006--,候文顺2010-119-119,胡承正2010-112-112,胡广书2012--,胡伟2011--,蒋有绪1998--,库恩2012--,李云霞2009--,廖平2012--,刘海洋2013--,罗斯基2009--,美国妇产科医师学会2010-38-39,鸟哥--,孙玉文2000--,唐绪军1999-117-121,同济大学数学系2014--,王雪松2010--,辛希孟1994--,阎毅2013--,杨林2015--} +\cite{张伯伟2002--,赵凯华1995--,赵学功2001--,赵耀东1998--,中国企业投资协会2013--,中国社会科学院语言研究所词典编辑室1996--,庄钊文2007--,1962-50-50,2009-155-155,booknoauthor,Parsons2000noauthor--} +\end{enumerate} +\printbibliography[heading=bibliography,title=【专著】] +\end{refsection} + + +\begin{refsection} +\begin{enumerate} + \item 专著的析出文献\cite{马克思2013-302-302}\cite{王夫之2011-1109-1109} + \cite{BUSECK1980-117-211,MARTIN1996-85-96,WEINSTEIN1974-745-772,白书农1998-146-163,陈晋镳1980-56-114,程根伟1999-32-36,楼梦麟2011-11-12,马克思1982-505-505,马克思2013-302-302,钟文发1996-468-471,1977-49-49,1988-590-590,王夫之2011-1109-1109} +\end{enumerate} +\printbibliography[heading=bibliography,title=【专著中的析出文献】] +\end{refsection} +\begin{refsection} + +\begin{enumerate} + \item 标准引用\cite{国家标准局信息分类编码研究所1988-59-92,国家环境保护局科技标准司1996-2-3, 全国广播电视标准化技术委员会2007-1-1,全国文献工作标准化委员会第七分委员会1986--,全国信息文献标准化技术委员会2010-3-3, 中华人民共和国国家质量监督检验检疫总局2015,standardinfoiso158} +\end{enumerate} +\printbibliography[heading=bibliography,title=【标准】] +\end{refsection} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbooksay.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbooksay.pdf Binary files differnew file mode 100644 index 00000000000..053d127c4e1 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbooksay.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbooksay.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbooksay.tex new file mode 100644 index 00000000000..4ba118c480f --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbooksay.tex @@ -0,0 +1,67 @@ +\documentclass[twoside]{article} +\usepackage{ctex} +\usepackage{xltxtra,mflogo,texnames} +\usepackage{geometry} +\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} +\usepackage{xcolor} +\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} +\usepackage[backend=biber,style=gb7714-2015ay,gbpub=true,gbnoauthor=true]{biblatex}%align=gb7714-2015 +%\addbibresource[location=local]{egtest.bib} +\addbibresource[location=local]{example.bib} +\addbibresource[location=local]{egspecialchar.bib} +%\renewcommand{\bibfont}{\zihao{5}} +%\setlength{\bibitemsep}{0ex} +%\setlength{\bibnamesep}{0ex} +%\setlength{\bibinitsep}{0ex} +%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} + +\begin{document} + +%%%测试作者年/biblatex版本兼容性的文件 +%%%test file for author year style + +\section{文献表} +\begin{refsection} +\defbibentryset{bilangyi2013}{易仕和2013--,Yi2013--} +\begin{enumerate} + \item 中文文献存在信息缺省的情况测试 +\cite{booknodate,booknolocation,booknopages,booknopublisher,booknopublishernoyear,booknopublisherpage, 余敏2001-179-193,余敏2001-179-193a,余敏2001-179-193b,余敏2001-179-193c,booknoauthor} + \item 英文文献信息缺省情况以及英文个人作者判断测试 +\cite{Parsons2000a--,Parsons2000b--,Parsons2000--,Parsons2000nodate--, +Parsons2000noloc--,Parsons2000nopub--,Parsons2000nopubnoyear--, +Parsons2000nopubpages--,Parsons2000noauthor--} + \item 年份信息有额外说明的文献比较测试\cite{汪昂1912--,汪昂1881--,王夫之1845--} + \item 页脚中引用和打印文献表\footnote{参考文献在脚注中引用\footcite{赵学功2001--}} + \footfullcite{赵学功2001--} + \item 专著的双语文献引用测试\cite{bilangyi2013} + \item 专著带前后缀的作者名\cite{Peebles2001-100-100} + \item 带页码的引用,使用pagescite命令。 +\pagescite{Peebles2001-100-100}\pagescite[][201-301]{Peebles2001-100-100} +\parencite[见][49页]{Miroslav2004--}\cite[见][49页]{蔡敏2006--} + \item 作者年制文中已有作者只需要年份和页码的情况,使用命令yearpagescite,而顺序制的情况下该命令与pagescite命令作用相同。比如: 见赵耀东\yearpagescite[][205]{赵耀东1998--}和Simon\yearpagescite[][15]{Simon2001--} 的文献。 + \item 专著更多测试 +\cite{GPS1988--}\cite{顾炎武1982--}\cite{PIGGOT1990--}\cite{PEEBLES2001--} +\cite{Poisel2013--}\cite{张伯伟2002--}\cite{2009-155-155} +\cite{GPS1988--,CRANE1972--,CRAWFPRD1995--,Gradshteyn2000--,IFLAI1977--,Kinchy2012-50-50,Lin2004--,Miroslav2004--,Mittelbach2004--,OBRIEN1994--} +\cite{PEEBLES2001--,Peebles2001-100-100,PIGGOT1990--,Poisel2013--,Praetzellis2011-13-13,Proakis2007--,Reed2005--,ROOD2001--,Ross2010--,Simon2004--,Simon2001--,Stueber2001--,Yi2013--,YUFIN2000--, 埃伯哈德$ullet$蔡德勒等2012--,蔡敏2006--,陈希孺2009--,陈志杰2006--,樊昌信2005--,顾炎武1982--,广西壮族自治区林业厅1993--,郭文彬2006--,候文顺2010-119-119,胡承正2010-112-112,胡广书2012--,胡伟2011--,蒋有绪1998--,库恩2012--,李云霞2009--,廖平2012--,刘海洋2013--,罗斯基2009--,美国妇产科医师学会2010-38-39,鸟哥--,孙玉文2000--,唐绪军1999-117-121,同济大学数学系2014--,王雪松2010--,辛希孟1994--,阎毅2013--,杨林2015--} +\cite{张伯伟2002--,赵凯华1995--,赵学功2001--,赵耀东1998--,中国企业投资协会2013--,中国社会科学院语言研究所词典编辑室1996--,庄钊文2007--,1962-50-50,2009-155-155,booknoauthor,Parsons2000noauthor--} +\end{enumerate} +\printbibliography[heading=bibliography,title=【专著】] +\end{refsection} + + +\begin{refsection} +\begin{enumerate} + \item 专著的析出文献\cite{马克思2013-302-302}\cite{王夫之2011-1109-1109} + \cite{BUSECK1980-117-211,MARTIN1996-85-96,WEINSTEIN1974-745-772,白书农1998-146-163,陈晋镳1980-56-114,程根伟1999-32-36,楼梦麟2011-11-12,马克思1982-505-505,马克思2013-302-302,钟文发1996-468-471,1977-49-49,1988-590-590,王夫之2011-1109-1109} +\end{enumerate} +\printbibliography[heading=bibliography,title=【专著中的析出文献】] +\end{refsection} +\begin{refsection} + +\begin{enumerate} + \item 标准引用\cite{国家标准局信息分类编码研究所1988-59-92,国家环境保护局科技标准司1996-2-3, 全国广播电视标准化技术委员会2007-1-1,全国文献工作标准化委员会第七分委员会1986--,全国信息文献标准化技术委员会2010-3-3, 中华人民共和国国家质量监督检验检疫总局2015,standardinfoiso158} +\end{enumerate} +\printbibliography[heading=bibliography,title=【标准】] +\end{refsection} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthorfalse.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthorfalse.pdf Binary files differnew file mode 100644 index 00000000000..55c5cef0e24 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthorfalse.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthorfalse.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthorfalse.tex new file mode 100644 index 00000000000..2daf3c3fdae --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthorfalse.tex @@ -0,0 +1,48 @@ +\documentclass[twoside]{article} +\usepackage{ctex} +\usepackage{geometry} +\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} +\usepackage{xcolor} +\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} +\usepackage[backend=biber,style=gb7714-2015,gbnoauthor=false]{biblatex}%align=gb7714-2015 +%\addbibresource[location=local]{egtest.bib} +\addbibresource[location=local]{example.bib} +\addbibresource[location=local]{egspecialchar.bib} +%\renewcommand{\bibfont}{\zihao{5}} +%\setlength{\bibitemsep}{0ex} +%\setlength{\bibnamesep}{0ex} +%\setlength{\bibinitsep}{0ex} +%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} + +\begin{document} + +%%%测试作者年/biblatex版本兼容性的文件 +%%%test file for author year style + +\section{文献表} +文献 +\cite{1962-50-50,2009-155-155} + +\cite{olnoauthorcn} +\cite{olnoauthoren} +\cite{Allianceurlonly} + +%\cite{萧钰2001--} +%\cite{李强2012-05-03--,Commonwealth--,HOPKINSON--,OCLC--} +%\cite{傅刚2000--} +%\cite{蔡敏2006--} +%\cite{Saito2006-169-176} +%\cite{CRAWFPRD1995--}\cite{Proakis2007--} +%\cite{Giorgetti2005-1037-1042,Giorgetti2005-794-798} +%\cite{Haemaelaeinen2002-1712-1721} +%\cite{Oetiker2011--} +%\cite{刘彻东1998-38-39} +%\cite{Commonwealth--} + +{ +\hyphenation{kurose-gawa} +%\hyphenpenalty=1000 +%\tolerance=500 +\printbibliography%[heading=subbibintoc,title=【参考文献】] +} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthorfalseay.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthorfalseay.pdf Binary files differnew file mode 100644 index 00000000000..9590895cc24 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthorfalseay.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthorfalseay.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthorfalseay.tex new file mode 100644 index 00000000000..5dd0048b5d7 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthorfalseay.tex @@ -0,0 +1,48 @@ +\documentclass[twoside]{article} +\usepackage{ctex} +\usepackage{geometry} +\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} +\usepackage{xcolor} +\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} +\usepackage[backend=biber,style=gb7714-2015ay,gbnoauthor=false]{biblatex}%align=gb7714-2015 +%\addbibresource[location=local]{egtest.bib} +\addbibresource[location=local]{example.bib} +\addbibresource[location=local]{egspecialchar.bib} +%\renewcommand{\bibfont}{\zihao{5}} +%\setlength{\bibitemsep}{0ex} +%\setlength{\bibnamesep}{0ex} +%\setlength{\bibinitsep}{0ex} +%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} + +\begin{document} + +%%%测试作者年/biblatex版本兼容性的文件 +%%%test file for author year style + +\section{文献表} +文献 +\cite{1962-50-50,2009-155-155} + +\cite{olnoauthorcn} +\cite{olnoauthoren} +\cite{Allianceurlonly} + +%\cite{萧钰2001--} +%\cite{李强2012-05-03--,Commonwealth--,HOPKINSON--,OCLC--} +%\cite{傅刚2000--} +%\cite{蔡敏2006--} +%\cite{Saito2006-169-176} +%\cite{CRAWFPRD1995--}\cite{Proakis2007--} +%\cite{Giorgetti2005-1037-1042,Giorgetti2005-794-798} +%\cite{Haemaelaeinen2002-1712-1721} +%\cite{Oetiker2011--} +%\cite{刘彻东1998-38-39} +%\cite{Commonwealth--} + +{ +\hyphenation{kurose-gawa} +%\hyphenpenalty=1000 +%\tolerance=500 +\printbibliography%[heading=subbibintoc,title=【参考文献】] +} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthortrue.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthortrue.pdf Binary files differnew file mode 100644 index 00000000000..75128879143 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthortrue.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthortrue.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthortrue.tex new file mode 100644 index 00000000000..628b86a0247 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthortrue.tex @@ -0,0 +1,48 @@ +\documentclass[twoside]{article} +\usepackage{ctex} +\usepackage{geometry} +\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} +\usepackage{xcolor} +\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} +\usepackage[backend=biber,style=gb7714-2015,gbnoauthor=true]{biblatex}%align=gb7714-2015 +%\addbibresource[location=local]{egtest.bib} +\addbibresource[location=local]{example.bib} +\addbibresource[location=local]{egspecialchar.bib} +%\renewcommand{\bibfont}{\zihao{5}} +%\setlength{\bibitemsep}{0ex} +%\setlength{\bibnamesep}{0ex} +%\setlength{\bibinitsep}{0ex} +%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} + +\begin{document} + +%%%测试作者年/biblatex版本兼容性的文件 +%%%test file for author year style + +\section{文献表} +文献 +\cite{1962-50-50,2009-155-155} + +\cite{olnoauthorcn} +\cite{olnoauthoren} +\cite{Allianceurlonly} + +%\cite{萧钰2001--} +%\cite{李强2012-05-03--,Commonwealth--,HOPKINSON--,OCLC--} +%\cite{傅刚2000--} +%\cite{蔡敏2006--} +%\cite{Saito2006-169-176} +%\cite{CRAWFPRD1995--}\cite{Proakis2007--} +%\cite{Giorgetti2005-1037-1042,Giorgetti2005-794-798} +%\cite{Haemaelaeinen2002-1712-1721} +%\cite{Oetiker2011--} +%\cite{刘彻东1998-38-39} +%\cite{Commonwealth--} + +{ +\hyphenation{kurose-gawa} +%\hyphenpenalty=1000 +%\tolerance=500 +\printbibliography%[heading=subbibintoc,title=【参考文献】] +} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthortrueay.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthortrueay.pdf Binary files differnew file mode 100644 index 00000000000..2de2b311a32 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthortrueay.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthortrueay.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthortrueay.tex new file mode 100644 index 00000000000..9b8984fa9a1 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthortrueay.tex @@ -0,0 +1,48 @@ +\documentclass[twoside]{article} +\usepackage{ctex} +\usepackage{geometry} +\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} +\usepackage{xcolor} +\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} +\usepackage[backend=biber,style=gb7714-2015ay,gbnoauthor=true]{biblatex}%align=gb7714-2015 +%\addbibresource[location=local]{egtest.bib} +\addbibresource[location=local]{example.bib} +\addbibresource[location=local]{egspecialchar.bib} +%\renewcommand{\bibfont}{\zihao{5}} +%\setlength{\bibitemsep}{0ex} +%\setlength{\bibnamesep}{0ex} +%\setlength{\bibinitsep}{0ex} +%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} + +\begin{document} + +%%%测试作者年/biblatex版本兼容性的文件 +%%%test file for author year style + +\section{文献表} +文献 +\cite{1962-50-50,2009-155-155} + +\cite{olnoauthorcn} +\cite{olnoauthoren} +\cite{Allianceurlonly} + +%\cite{萧钰2001--} +%\cite{李强2012-05-03--,Commonwealth--,HOPKINSON--,OCLC--} +%\cite{傅刚2000--} +%\cite{蔡敏2006--} +%\cite{Saito2006-169-176} +%\cite{CRAWFPRD1995--}\cite{Proakis2007--} +%\cite{Giorgetti2005-1037-1042,Giorgetti2005-794-798} +%\cite{Haemaelaeinen2002-1712-1721} +%\cite{Oetiker2011--} +%\cite{刘彻东1998-38-39} +%\cite{Commonwealth--} + +{ +\hyphenation{kurose-gawa} +%\hyphenpenalty=1000 +%\tolerance=500 +\printbibliography%[heading=subbibintoc,title=【参考文献】] +} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubfalse.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubfalse.pdf Binary files differnew file mode 100644 index 00000000000..0b07eca9b90 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubfalse.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubfalse.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubfalse.tex new file mode 100644 index 00000000000..396c91caa77 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubfalse.tex @@ -0,0 +1,36 @@ +\documentclass[twoside]{article} +\usepackage{ctex} +\usepackage{geometry} +\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} +\usepackage{xcolor} +\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} +\usepackage[backend=biber,style=gb7714-2015,gbpub=false]{biblatex}%align=gb7714-2015 +%\addbibresource[location=local]{egtest.bib} +\addbibresource[location=local]{example.bib} +\addbibresource[location=local]{egspecialchar.bib} +%\renewcommand{\bibfont}{\zihao{5}} +%\setlength{\bibitemsep}{0ex} +%\setlength{\bibnamesep}{0ex} +%\setlength{\bibinitsep}{0ex} +%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} + +\begin{document} + +%%%测试作者年/biblatex版本兼容性的文件 +%%%test file for author year style + +\section{文献表} +文献 +\cite{AAAS1883--} +\cite{陈志勇2011--} +\cite{萧钰2001--} +\cite{北京交通大学研究生公众号2016--} +\cite{赵学功2001--} + +{ +%\hyphenation{kurose-gawa} +%\hyphenpenalty=1000 +%\tolerance=500 +\printbibliography%[heading=subbibintoc,title=【参考文献】] +} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubfalseay.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubfalseay.pdf Binary files differnew file mode 100644 index 00000000000..29d554366af --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubfalseay.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubfalseay.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubfalseay.tex new file mode 100644 index 00000000000..15fb7b87b9d --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubfalseay.tex @@ -0,0 +1,36 @@ +\documentclass[twoside]{article} +\usepackage{ctex} +\usepackage{geometry} +\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} +\usepackage{xcolor} +\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} +\usepackage[backend=biber,style=gb7714-2015ay,gbpub=false]{biblatex}%align=gb7714-2015 +%\addbibresource[location=local]{egtest.bib} +\addbibresource[location=local]{example.bib} +\addbibresource[location=local]{egspecialchar.bib} +%\renewcommand{\bibfont}{\zihao{5}} +%\setlength{\bibitemsep}{0ex} +%\setlength{\bibnamesep}{0ex} +%\setlength{\bibinitsep}{0ex} +%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} + +\begin{document} + +%%%测试作者年/biblatex版本兼容性的文件 +%%%test file for author year style + +\section{文献表} +文献 +\cite{AAAS1883--} +\cite{陈志勇2011--} +\cite{萧钰2001--} +\cite{北京交通大学研究生公众号2016--} +\cite{赵学功2001--} + +{ +%\hyphenation{kurose-gawa} +%\hyphenpenalty=1000 +%\tolerance=500 +\printbibliography%[heading=subbibintoc,title=【参考文献】] +} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubtrue.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubtrue.pdf Binary files differnew file mode 100644 index 00000000000..210d7a64912 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubtrue.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubtrue.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubtrue.tex new file mode 100644 index 00000000000..b3858350beb --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubtrue.tex @@ -0,0 +1,36 @@ +\documentclass[twoside]{article} +\usepackage{ctex} +\usepackage{geometry} +\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} +\usepackage{xcolor} +\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} +\usepackage[backend=biber,style=gb7714-2015,gbpub=true]{biblatex}%align=gb7714-2015 +%\addbibresource[location=local]{egtest.bib} +\addbibresource[location=local]{example.bib} +\addbibresource[location=local]{egspecialchar.bib} +%\renewcommand{\bibfont}{\zihao{5}} +%\setlength{\bibitemsep}{0ex} +%\setlength{\bibnamesep}{0ex} +%\setlength{\bibinitsep}{0ex} +%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} + +\begin{document} + +%%%测试作者年/biblatex版本兼容性的文件 +%%%test file for author year style + +\section{文献表} +文献 +\cite{AAAS1883--} +\cite{陈志勇2011--} +\cite{萧钰2001--} +\cite{北京交通大学研究生公众号2016--} +\cite{赵学功2001--} + +{ +%\hyphenation{kurose-gawa} +%\hyphenpenalty=1000 +%\tolerance=500 +\printbibliography%[heading=subbibintoc,title=【参考文献】] +} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubtrueay.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubtrueay.pdf Binary files differnew file mode 100644 index 00000000000..5397d9b3743 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubtrueay.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubtrueay.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubtrueay.tex new file mode 100644 index 00000000000..c0c30e7f51e --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubtrueay.tex @@ -0,0 +1,36 @@ +\documentclass[twoside]{article} +\usepackage{ctex} +\usepackage{geometry} +\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} +\usepackage{xcolor} +\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} +\usepackage[backend=biber,style=gb7714-2015ay,gbpub=true]{biblatex}%align=gb7714-2015 +%\addbibresource[location=local]{egtest.bib} +\addbibresource[location=local]{example.bib} +\addbibresource[location=local]{egspecialchar.bib} +%\renewcommand{\bibfont}{\zihao{5}} +%\setlength{\bibitemsep}{0ex} +%\setlength{\bibnamesep}{0ex} +%\setlength{\bibinitsep}{0ex} +%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} + +\begin{document} + +%%%测试作者年/biblatex版本兼容性的文件 +%%%test file for author year style + +\section{文献表} +文献 +\cite{AAAS1883--} +\cite{陈志勇2011--} +\cite{萧钰2001--} +\cite{北京交通大学研究生公众号2016--} +\cite{赵学功2001--} + +{ +%\hyphenation{kurose-gawa} +%\hyphenpenalty=1000 +%\tolerance=500 +\printbibliography%[heading=subbibintoc,title=【参考文献】] +} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egjournal.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egjournal.pdf Binary files differnew file mode 100644 index 00000000000..52b99dee270 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egjournal.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egjournal.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egjournal.tex new file mode 100644 index 00000000000..be3686dbc92 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egjournal.tex @@ -0,0 +1,48 @@ +\documentclass[twoside]{article} +\usepackage{ctex} +\usepackage{geometry} +\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} +\usepackage{xcolor} +\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} +\usepackage[backend=biber,style=gb7714-2015,gbpub=true]{biblatex}%align=gb7714-2015 +%\addbibresource[location=local]{egtest.bib} +\addbibresource[location=local]{example.bib} +\addbibresource[location=local]{egspecialchar.bib} +%\renewcommand{\bibfont}{\zihao{5}} +%\setlength{\bibitemsep}{0ex} +%\setlength{\bibnamesep}{0ex} +%\setlength{\bibinitsep}{0ex} +%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} + +\begin{document} + +%%%测试作者年/biblatex版本兼容性的文件 +%%%test file for author year style + +\section{文献表} +\begin{refsection} + +\begin{enumerate} + \item 期刊完整引用\cite{中国地质学会1936--,中国图书馆学会1957--,AAAS1883--,中华医学会湖北分会1984--} +\end{enumerate} + +\printbibliography[heading=bibliography,title=【连续出版物】] +\end{refsection} + +\begin{refsection} +\defbibentryset{bilangchenzhang}{张敏莉2007-500-503,Zhang2007-500-503} + +\begin{enumerate} + \item 期刊文章引用和引用标签测试\cite{Chiani1998-2998-3008,Chiani2004-1312-1318,Chiani2004-1312-1318a, +Chiani2004-1312-1318b,Chiani2003-840-845,Chiani2009-231-254} + \item doi和卷期样式\cite{储大同2010-721-724} + \item 双语言引用测试\cite{bilangchenzhang} + \item 合期期刊测试\cite{储大同2010-721-724m} + \item 报纸引用测试\cite{丁文祥2000--,傅刚2000--,刘裕国2013-01-12--,张田勤2000--} + \item 更多测试 + \cite{Andersen1995-42-49,Andrisano1998-1383-1401,CAPLAN1993-61-66,Chiani1998-2998-3008,Chiani2004-1312-1318,Chiani2009-231-254,CHRISTINE1998-331-332,Coulson2004-2277-2287,Coulson2006-2484-2492,Dardari2004-1557-1567,Dardari1999-1709-1721,DESMARAIS1992-605-609,Franz2013-1053-1062,Giorgetti2005-384-389,Giorgetti2005-2139-2149,Giorgetti2005-1037-1042,Haemaelaeinen2002-1712-1721,HEWITT1984-205-218,Holtzman1992-243-247,Hu2006-1720-1724,KANAMORI1998-2063-2064,KENNEDY1975-311-386,KENNEDY1975-339-360,McEliece1984-44-53,Milstein1982-436-446,Moeneclaey2001-497-505,Molisch2006-3151-3166,Nasri2007-4090-4100,articlemorenames,Park2010-696-715,Pinto2009-1268-1282,Quek2007-2126-2139,Saito2006-169-176,Shi2007-1118-1128,Snow2007-1736-1746,STIEG1981-549-560,Walls2013-399-418,Zhang2007-500-503,Zhao2002-1684-1691, 陈高峰2011-230-232,陈建军2010-93-93,陈金成2001-1861-1864,储大同2010-721-724,储大同2010-721-724m,高光明1998-60-65, 高翔2015-26-31,江向东1999-4-4,李炳穆2000-5-8,李晓东1999-101-106,梁振兴1999-24-32,刘彻东1998-38-39,刘晨2007-400-404, 刘武1999-2481-2488,卢秋红2009-247-251,鲁明羽1998-290-295,莫少强1999-1-6,谭跃进2011-441-445,陶仁骥1984-527-527,王雪峥2013-249-254, 伍江华2010-70-74,亚洲地质图编目组1978-194-208,杨洪升2013-56-75,杨友烈1999-60-65, 于潇2012-1518-1523,詹广平2013-8-10,张敏莉2007-500-503,张庆杰2009-30-33,张晓琴2011--,周学武2013-49-52,郜宪林2001-114-116} +\end{enumerate} + +\printbibliography[heading=bibliography,title=【连续出版物中的析出文献】] +\end{refsection} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egjournalay.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egjournalay.pdf Binary files differnew file mode 100644 index 00000000000..d5871d705f4 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egjournalay.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egjournalay.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egjournalay.tex new file mode 100644 index 00000000000..6be856240b5 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egjournalay.tex @@ -0,0 +1,48 @@ +\documentclass[twoside]{article} +\usepackage{ctex} +\usepackage{geometry} +\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} +\usepackage{xcolor} +\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} +\usepackage[backend=biber,style=gb7714-2015ay,gbpub=true,gbnoauthor=true]{biblatex}%align=gb7714-2015 +%\addbibresource[location=local]{egtest.bib} +\addbibresource[location=local]{example.bib} +\addbibresource[location=local]{egspecialchar.bib} +%\renewcommand{\bibfont}{\zihao{5}} +%\setlength{\bibitemsep}{0ex} +%\setlength{\bibnamesep}{0ex} +%\setlength{\bibinitsep}{0ex} +%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} + +\begin{document} + +%%%测试作者年/biblatex版本兼容性的文件 +%%%test file for author year style + +\section{文献表} +\begin{refsection} + +\begin{enumerate} + \item 期刊完整引用\cite{中国地质学会1936--,中国图书馆学会1957--,AAAS1883--,中华医学会湖北分会1984--} +\end{enumerate} + +\printbibliography[heading=bibliography,title=【连续出版物】] +\end{refsection} + +\begin{refsection} +\defbibentryset{bilangchenzhang}{张敏莉2007-500-503,Zhang2007-500-503} + +\begin{enumerate} + \item 期刊文章引用和引用标签测试\cite{Chiani1998-2998-3008,Chiani2004-1312-1318,Chiani2004-1312-1318a, +Chiani2004-1312-1318b,Chiani2003-840-845,Chiani2009-231-254} + \item doi和卷期样式\cite{储大同2010-721-724} + \item 双语言引用测试\cite{bilangchenzhang} + \item 合期期刊测试\cite{储大同2010-721-724m} + \item 报纸引用测试\cite{丁文祥2000--,傅刚2000--,刘裕国2013-01-12--,张田勤2000--} + \item 更多测试 + \cite{Andersen1995-42-49,Andrisano1998-1383-1401,CAPLAN1993-61-66,Chiani1998-2998-3008,Chiani2004-1312-1318,Chiani2009-231-254,CHRISTINE1998-331-332,Coulson2004-2277-2287,Coulson2006-2484-2492,Dardari2004-1557-1567,Dardari1999-1709-1721,DESMARAIS1992-605-609,Franz2013-1053-1062,Giorgetti2005-384-389,Giorgetti2005-2139-2149,Giorgetti2005-1037-1042,Haemaelaeinen2002-1712-1721,HEWITT1984-205-218,Holtzman1992-243-247,Hu2006-1720-1724,KANAMORI1998-2063-2064,KENNEDY1975-311-386,KENNEDY1975-339-360,McEliece1984-44-53,Milstein1982-436-446,Moeneclaey2001-497-505,Molisch2006-3151-3166,Nasri2007-4090-4100,articlemorenames,Park2010-696-715,Pinto2009-1268-1282,Quek2007-2126-2139,Saito2006-169-176,Shi2007-1118-1128,Snow2007-1736-1746,STIEG1981-549-560,Walls2013-399-418,Zhang2007-500-503,Zhao2002-1684-1691, 陈高峰2011-230-232,陈建军2010-93-93,陈金成2001-1861-1864,储大同2010-721-724,储大同2010-721-724m,高光明1998-60-65, 高翔2015-26-31,江向东1999-4-4,李炳穆2000-5-8,李晓东1999-101-106,梁振兴1999-24-32,刘彻东1998-38-39,刘晨2007-400-404, 刘武1999-2481-2488,卢秋红2009-247-251,鲁明羽1998-290-295,莫少强1999-1-6,谭跃进2011-441-445,陶仁骥1984-527-527,王雪峥2013-249-254, 伍江华2010-70-74,亚洲地质图编目组1978-194-208,杨洪升2013-56-75,杨友烈1999-60-65, 于潇2012-1518-1523,詹广平2013-8-10,张敏莉2007-500-503,张庆杰2009-30-33,张晓琴2011--,周学武2013-49-52,郜宪林2001-114-116} +\end{enumerate} + +\printbibliography[heading=bibliography,title=【连续出版物中的析出文献】] +\end{refsection} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egonline.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egonline.pdf Binary files differnew file mode 100644 index 00000000000..e761e59c393 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egonline.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egonline.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egonline.tex new file mode 100644 index 00000000000..734b200b6fe --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egonline.tex @@ -0,0 +1,33 @@ +\documentclass[twoside]{article} +\usepackage{ctex} +\usepackage{geometry} +\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} +\usepackage{xcolor} +\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} +\usepackage[backend=biber,style=gb7714-2015,gbpub=true]{biblatex}%align=gb7714-2015 +%\addbibresource[location=local]{egtest.bib} +\addbibresource[location=local]{example.bib} +\addbibresource[location=local]{egspecialchar.bib} +%\renewcommand{\bibfont}{\zihao{5}} +%\setlength{\bibitemsep}{0ex} +%\setlength{\bibnamesep}{0ex} +%\setlength{\bibinitsep}{0ex} +%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} + +\begin{document} + +%%%测试作者年/biblatex版本兼容性的文件 +%%%test file for author year style + +\section{文献表} +\begin{enumerate} + \item 电子资源\cite{Commonwealth--,HOPKINSON--,OMG2003--,OCLC--,李强2012-05-03--,萧钰2001--,Alliance--,Dublin2012-06-14--,JabRef中文手册--,1989--,JabRefManual--} +\end{enumerate} + +{ +%\hyphenation{kurose-gawa} +%\hyphenpenalty=1000 +%\tolerance=500 +\printbibliography%[heading=subbibintoc,title=【参考文献】] +} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egonlineay.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egonlineay.pdf Binary files differnew file mode 100644 index 00000000000..6a6bab33add --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egonlineay.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egonlineay.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egonlineay.tex new file mode 100644 index 00000000000..5414ae6ad28 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egonlineay.tex @@ -0,0 +1,33 @@ +\documentclass[twoside]{article} +\usepackage{ctex} +\usepackage{geometry} +\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} +\usepackage{xcolor} +\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} +\usepackage[backend=biber,style=gb7714-2015ay,gbpub=true,gbnoauthor=true]{biblatex}%align=gb7714-2015 +%\addbibresource[location=local]{egtest.bib} +\addbibresource[location=local]{example.bib} +\addbibresource[location=local]{egspecialchar.bib} +%\renewcommand{\bibfont}{\zihao{5}} +%\setlength{\bibitemsep}{0ex} +%\setlength{\bibnamesep}{0ex} +%\setlength{\bibinitsep}{0ex} +%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} + +\begin{document} + +%%%测试作者年/biblatex版本兼容性的文件 +%%%test file for author year style + +\section{文献表} +\begin{enumerate} + \item 电子资源\cite{Commonwealth--,HOPKINSON--,OMG2003--,OCLC--,李强2012-05-03--,萧钰2001--,Alliance--,Dublin2012-06-14--,JabRef中文手册--,1989--,JabRefManual--} +\end{enumerate} + +{ +%\hyphenation{kurose-gawa} +%\hyphenpenalty=1000 +%\tolerance=500 +\printbibliography%[heading=subbibintoc,title=【参考文献】] +} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egpatent.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egpatent.pdf Binary files differnew file mode 100644 index 00000000000..8db55634ec3 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egpatent.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egpatent.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egpatent.tex new file mode 100644 index 00000000000..47dcbcf4beb --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egpatent.tex @@ -0,0 +1,33 @@ +\documentclass[twoside]{article} +\usepackage{ctex} +\usepackage{geometry} +\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} +\usepackage{xcolor} +\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} +\usepackage[backend=biber,style=gb7714-2015,gbpub=true]{biblatex}%align=gb7714-2015 +%\addbibresource[location=local]{egtest.bib} +\addbibresource[location=local]{example.bib} +\addbibresource[location=local]{egspecialchar.bib} +%\renewcommand{\bibfont}{\zihao{5}} +%\setlength{\bibitemsep}{0ex} +%\setlength{\bibnamesep}{0ex} +%\setlength{\bibinitsep}{0ex} +%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} + +\begin{document} + +%%%测试作者年/biblatex版本兼容性的文件 +%%%test file for author year style + +\section{文献表} +\begin{enumerate} + \item 专利引用\cite{KOSEKI2002--,TACHIBANA2002--,河北绿洲生态环境科技有限公司2001--,姜锡洲1989--,刘加林1993--,西安电子科技大学2002--,张凯军2012-04-05--} +\end{enumerate} + +{ +%\hyphenation{kurose-gawa} +%\hyphenpenalty=1000 +%\tolerance=500 +\printbibliography%[heading=subbibintoc,title=【参考文献】] +} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egpatentay.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egpatentay.pdf Binary files differnew file mode 100644 index 00000000000..fd785426a0a --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egpatentay.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egpatentay.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egpatentay.tex new file mode 100644 index 00000000000..69d77170b5f --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egpatentay.tex @@ -0,0 +1,33 @@ +\documentclass[twoside]{article} +\usepackage{ctex} +\usepackage{geometry} +\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} +\usepackage{xcolor} +\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} +\usepackage[backend=biber,style=gb7714-2015ay,gbpub=true,gbnoauthor=true]{biblatex}%align=gb7714-2015 +%\addbibresource[location=local]{egtest.bib} +\addbibresource[location=local]{example.bib} +\addbibresource[location=local]{egspecialchar.bib} +%\renewcommand{\bibfont}{\zihao{5}} +%\setlength{\bibitemsep}{0ex} +%\setlength{\bibnamesep}{0ex} +%\setlength{\bibinitsep}{0ex} +%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} + +\begin{document} + +%%%测试作者年/biblatex版本兼容性的文件 +%%%test file for author year style + +\section{文献表} +\begin{enumerate} + \item 专利引用\cite{KOSEKI2002--,TACHIBANA2002--,河北绿洲生态环境科技有限公司2001--,姜锡洲1989--,刘加林1993--,西安电子科技大学2002--,张凯军2012-04-05--} +\end{enumerate} + +{ +%\hyphenation{kurose-gawa} +%\hyphenpenalty=1000 +%\tolerance=500 +\printbibliography%[heading=subbibintoc,title=【参考文献】] +} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egprcdorinprcd.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egprcdorinprcd.pdf Binary files differnew file mode 100644 index 00000000000..6705780006b --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egprcdorinprcd.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egprcdorinprcd.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egprcdorinprcd.tex new file mode 100644 index 00000000000..2d181e4082e --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egprcdorinprcd.tex @@ -0,0 +1,37 @@ +\documentclass[twoside]{article} +\usepackage{ctex} +\usepackage{geometry} +\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} +\usepackage{xcolor} +\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} +\usepackage[backend=biber,style=gb7714-2015,gbpub=true]{biblatex}%align=gb7714-2015 +%\addbibresource[location=local]{egtest.bib} +\addbibresource[location=local]{example.bib} +\addbibresource[location=local]{egspecialchar.bib} +%\renewcommand{\bibfont}{\zihao{5}} +%\setlength{\bibitemsep}{0ex} +%\setlength{\bibnamesep}{0ex} +%\setlength{\bibinitsep}{0ex} +%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} + +\begin{document} + +%%%测试作者年/biblatex版本兼容性的文件 +%%%test file for author year style + +\section{文献表} +会议论文引用\cite{韩吉人1985-90-99,FOURNEY1971-17-38,FOURNEY1971-17-38a,Nemec1997-209-214, 贾东琴2011-45-52, 裴丽生1981-2-10,汪学军2002-22-25,张忠智1997-33-34} + \cite{Choi2002-1075-1080,Dardari2002-201-206,Firoozbakhsh2003-473-477,Foerster2002-1931-1935, + Fontana2002-309-313,Giorgetti2005-794-798,Giorgetti2006--,Li2004-21-24,Nasri2008-3616-3621,Piazzo2001--} + +会议论文集\cite{陈志勇2011--,雷光春2012--,ROSENTHALL1963--,GANZHA2000--,Babu2014--,中国力学学会1999--, 中国社会科学院台湾史研究中心2012--} + +汇编文集类似于book和inbook\cite{韩吉人1985-90-99}\cite{中国职工教育研究会1985--} + +{ +%\hyphenation{kurose-gawa} +%\hyphenpenalty=1000 +%\tolerance=500 +\printbibliography%[heading=subbibintoc,title=【参考文献】] +} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egprcdorinprcday.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egprcdorinprcday.pdf Binary files differnew file mode 100644 index 00000000000..3015018bd36 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egprcdorinprcday.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egprcdorinprcday.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egprcdorinprcday.tex new file mode 100644 index 00000000000..e8106e858fd --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egprcdorinprcday.tex @@ -0,0 +1,37 @@ +\documentclass[twoside]{article} +\usepackage{ctex} +\usepackage{geometry} +\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} +\usepackage{xcolor} +\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} +\usepackage[backend=biber,style=gb7714-2015ay,gbpub=true]{biblatex}%align=gb7714-2015 +%\addbibresource[location=local]{egtest.bib} +\addbibresource[location=local]{example.bib} +\addbibresource[location=local]{egspecialchar.bib} +%\renewcommand{\bibfont}{\zihao{5}} +%\setlength{\bibitemsep}{0ex} +%\setlength{\bibnamesep}{0ex} +%\setlength{\bibinitsep}{0ex} +%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} + +\begin{document} + +%%%测试作者年/biblatex版本兼容性的文件 +%%%test file for author year style + +\section{文献表} +会议论文引用\cite{韩吉人1985-90-99,FOURNEY1971-17-38,FOURNEY1971-17-38a,Nemec1997-209-214, 贾东琴2011-45-52, 裴丽生1981-2-10,汪学军2002-22-25,张忠智1997-33-34} + \cite{Choi2002-1075-1080,Dardari2002-201-206,Firoozbakhsh2003-473-477,Foerster2002-1931-1935, + Fontana2002-309-313,Giorgetti2005-794-798,Giorgetti2006--,Li2004-21-24,Nasri2008-3616-3621,Piazzo2001--} + +会议论文集\cite{陈志勇2011--,雷光春2012--,ROSENTHALL1963--,GANZHA2000--,Babu2014--,中国力学学会1999--, 中国社会科学院台湾史研究中心2012--} + +汇编文集类似于book和inbook\cite{韩吉人1985-90-99}\cite{中国职工教育研究会1985--} + +{ +%\hyphenation{kurose-gawa} +%\hyphenpenalty=1000 +%\tolerance=500 +\printbibliography%[heading=subbibintoc,title=【参考文献】] +} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egreport.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egreport.pdf Binary files differnew file mode 100644 index 00000000000..92ba86cff58 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egreport.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egreport.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egreport.tex new file mode 100644 index 00000000000..2604b843b54 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egreport.tex @@ -0,0 +1,38 @@ +\documentclass[twoside]{article} +\usepackage{ctex} +\usepackage{geometry} +\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} +\usepackage{xcolor} +\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} +\usepackage[backend=biber,style=gb7714-2015,gbpub=true]{biblatex}%align=gb7714-2015 +%\addbibresource[location=local]{egtest.bib} +\addbibresource[location=local]{example.bib} +\addbibresource[location=local]{egspecialchar.bib} +%\renewcommand{\bibfont}{\zihao{5}} +%\setlength{\bibitemsep}{0ex} +%\setlength{\bibnamesep}{0ex} +%\setlength{\bibinitsep}{0ex} +%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} + +\begin{document} + +%%%测试作者年/biblatex版本兼容性的文件 +%%%test file for author year style + +\section{文献表} +\begin{enumerate} + \item 技术报告引用 + \cite{Calkin2011-8-9,Eggrers--,Humphrey1971--,DTFHA1990--,WHO1970--,汤万金2013-09-30--,中华人民共和国国务院新闻办公室2013-04-16--} + \item 手册引用 + \cite{Lehman2013--,Lehman2015,Mittelbach2015--,Oetiker2011--,Robertson2011--,Sommerfeldt2011--,Umeki2010--, 胡振震2016,吴凌云2007--} + \item 档案引用\cite{中国第一历史档案馆2001--} + \item 未出版物引用\cite{包太雷2013--} +\end{enumerate} + +{ +%\hyphenation{kurose-gawa} +%\hyphenpenalty=1000 +%\tolerance=500 +\printbibliography%[heading=subbibintoc,title=【参考文献】] +} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egreportay.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egreportay.pdf Binary files differnew file mode 100644 index 00000000000..57f15b81bd0 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egreportay.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egreportay.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egreportay.tex new file mode 100644 index 00000000000..e07b0943aa1 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egreportay.tex @@ -0,0 +1,38 @@ +\documentclass[twoside]{article} +\usepackage{ctex} +\usepackage{geometry} +\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} +\usepackage{xcolor} +\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} +\usepackage[backend=biber,style=gb7714-2015ay,gbpub=true]{biblatex}%align=gb7714-2015 +%\addbibresource[location=local]{egtest.bib} +\addbibresource[location=local]{example.bib} +\addbibresource[location=local]{egspecialchar.bib} +%\renewcommand{\bibfont}{\zihao{5}} +%\setlength{\bibitemsep}{0ex} +%\setlength{\bibnamesep}{0ex} +%\setlength{\bibinitsep}{0ex} +%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} + +\begin{document} + +%%%测试作者年/biblatex版本兼容性的文件 +%%%test file for author year style + +\section{文献表} +\begin{enumerate} + \item 技术报告引用 + \cite{Calkin2011-8-9,Eggrers--,Humphrey1971--,DTFHA1990--,WHO1970--,汤万金2013-09-30--,中华人民共和国国务院新闻办公室2013-04-16--} + \item 手册引用 + \cite{Lehman2013--,Lehman2015,Mittelbach2015--,Oetiker2011--,Robertson2011--,Sommerfeldt2011--,Umeki2010--, 胡振震2016,吴凌云2007--} + \item 档案引用\cite{中国第一历史档案馆2001--} + \item 未出版物引用\cite{包太雷2013--} +\end{enumerate} + +{ +%\hyphenation{kurose-gawa} +%\hyphenpenalty=1000 +%\tolerance=500 +\printbibliography%[heading=subbibintoc,title=【参考文献】] +} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egspecialchar.bib b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egspecialchar.bib index d772ddfcbe7..6d92bf8290f 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egspecialchar.bib +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egspecialchar.bib @@ -1,6 +1,6 @@ %% LaTeX2e file `egspecialchar.bib' %% generated by the `filecontents' environment -%% from source `biblatex-gb7714-2015ay' on 2017/07/04. +%% from source `biblatex-gb7714-2015' on 2018/01/14. %% @Inproceedings{ref-replace-char, Title = {Cognitive Radio and Cooperative Strategies for Power Saving in Multi-Standard Wireless Devices}, diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egtest.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egtest.pdf Binary files differindex 6220df43103..600562cd736 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egtest.pdf +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egtest.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egtest.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egtest.tex index 3bc8ff3ae4b..e99eccf1ab4 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egtest.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egtest.tex @@ -1,28 +1,48 @@ \documentclass[twoside]{article} \usepackage{ctex} \usepackage{geometry} -\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=1cm,right=1cm} +\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} \usepackage{xcolor} \usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} -\usepackage[backend=biber,style=gb7714-2015ay]{biblatex}%align=gb7714-2015 +\usepackage[backend=biber,style=gb7714-2015ay,gbnoauthor=false]{biblatex}%align=gb7714-2015 %\addbibresource[location=local]{egtest.bib} \addbibresource[location=local]{example.bib} +\addbibresource[location=local]{egspecialchar.bib} %\renewcommand{\bibfont}{\zihao{5}} %\setlength{\bibitemsep}{0ex} %\setlength{\bibnamesep}{0ex} %\setlength{\bibinitsep}{0ex} +%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} \begin{document} - +%%%测试作者年/biblatex版本兼容性的文件 +%%%test file for author year style \section{文献表} -文献\cite{Saito2006-169-176} +文献 +\cite{1962-50-50,2009-155-155} + +\cite{olnoauthorcn} +\cite{olnoauthoren} +\cite{Allianceurlonly} + +\cite{萧钰2001--} +\cite{李强2012-05-03--,Commonwealth--,HOPKINSON--,OCLC--} +\cite{傅刚2000--} +\cite{蔡敏2006--} +\cite{Saito2006-169-176} \cite{CRAWFPRD1995--}\cite{Proakis2007--} \cite{Giorgetti2005-1037-1042,Giorgetti2005-794-798} \cite{Haemaelaeinen2002-1712-1721} \cite{Oetiker2011--} \cite{刘彻东1998-38-39} +\cite{Commonwealth--} +{ +\hyphenation{kurose-gawa} +%\hyphenpenalty=1000 +%\tolerance=500 \printbibliography%[heading=subbibintoc,title=【参考文献】] +} \end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egthesis.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egthesis.pdf Binary files differnew file mode 100644 index 00000000000..04239308bc9 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egthesis.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egthesis.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egthesis.tex new file mode 100644 index 00000000000..31a355afd7e --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egthesis.tex @@ -0,0 +1,33 @@ +\documentclass[twoside]{article} +\usepackage{ctex} +\usepackage{geometry} +\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} +\usepackage{xcolor} +\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} +\usepackage[backend=biber,style=gb7714-2015,gbpub=true]{biblatex}%align=gb7714-2015 +%\addbibresource[location=local]{egtest.bib} +\addbibresource[location=local]{example.bib} +\addbibresource[location=local]{egspecialchar.bib} +%\renewcommand{\bibfont}{\zihao{5}} +%\setlength{\bibitemsep}{0ex} +%\setlength{\bibnamesep}{0ex} +%\setlength{\bibinitsep}{0ex} +%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} + +\begin{document} + +%%%测试作者年/biblatex版本兼容性的文件 +%%%test file for author year style + +\section{文献表} +\begin{enumerate} + \item 学位论文引用\cite{CALMS1965--,马欢2011-27-27,吴云芳2003--,张若凌2004--,张志祥1998--} +\end{enumerate} + +{ +%\hyphenation{kurose-gawa} +%\hyphenpenalty=1000 +%\tolerance=500 +\printbibliography%[heading=subbibintoc,title=【参考文献】] +} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egthesisay.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egthesisay.pdf Binary files differnew file mode 100644 index 00000000000..a9515d3f7c3 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egthesisay.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egthesisay.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egthesisay.tex new file mode 100644 index 00000000000..8fa8ad11374 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egthesisay.tex @@ -0,0 +1,33 @@ +\documentclass[twoside]{article} +\usepackage{ctex} +\usepackage{geometry} +\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} +\usepackage{xcolor} +\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} +\usepackage[backend=biber,style=gb7714-2015ay,gbpub=true]{biblatex}%align=gb7714-2015 +%\addbibresource[location=local]{egtest.bib} +\addbibresource[location=local]{example.bib} +\addbibresource[location=local]{egspecialchar.bib} +%\renewcommand{\bibfont}{\zihao{5}} +%\setlength{\bibitemsep}{0ex} +%\setlength{\bibnamesep}{0ex} +%\setlength{\bibinitsep}{0ex} +%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} + +\begin{document} + +%%%测试作者年/biblatex版本兼容性的文件 +%%%test file for author year style + +\section{文献表} +\begin{enumerate} + \item 学位论文引用\cite{CALMS1965--,马欢2011-27-27,吴云芳2003--,张若凌2004--,张志祥1998--} +\end{enumerate} + +{ +%\hyphenation{kurose-gawa} +%\hyphenpenalty=1000 +%\tolerance=500 +\printbibliography%[heading=subbibintoc,title=【参考文献】] +} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example.bib b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example.bib index f60aed3bda4..27d03015773 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example.bib +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example.bib @@ -1,6 +1,9 @@ % This file was created with JabRef 2.11. % Encoding: UTF8 +@Set{易仕和,2013, + entryset = {易仕和2013--,Yi2013--}, +} @Book{王夫之1845--, Title = {宋论}, @@ -476,7 +479,7 @@ } @Book{赵凯华1995--, - Title = {新概念物理教程}, + Title = {{新概念物理教程}}, Address = {北京}, Author = {赵凯华 and 罗蔚茵}, Publisher = {高等教育出版社}, @@ -600,7 +603,7 @@ } @Book{蒋有绪1998--, - Title = {中国森林群落分类及其群落学特征}, + Title = {中国森林群落分类及其群落学特征 and \XeLaTeX{}}, Address = {北京}, Author = {蒋有绪 and 郭泉水 and 马娟 and others}, Publisher = {科学出版社}, @@ -951,7 +954,7 @@ Workshop on Computer Algebra in Scientific Computing, Samarkand, October 5-9, 20 } @Book{Peebles2001-100-100, - Title = {Probability, random variable, and random signal Principles}, + Title = {Probability, random variable, and random signal Principles and \LaTeX{}}, Address = {New York}, Author = {von Peebles, Jr., P. Z.}, Edition = {4}, @@ -2421,13 +2424,18 @@ Workshop on Computer Algebra in Scientific Computing, Samarkand, October 5-9, 20 @Book{--, } +@Online{JabRefManual--, + Title = {JabRef Manual}, + Url = {http://blog.csdn.net/zd0303/article/details/7676807} +} + @comment{jabref-meta: databaseType:biblatex;} @comment{jabref-entrytype: Collection: req[author;title;location;publisher;date] opt[]} @comment{jabref-entrytype: Newspaper: req[] opt[]} -@comment{jabref-entrytype: Online: req[author;title;date;url;urldate] opt[doi]} +@comment{jabref-entrytype: Online: req[author;title;date;url;urldate;organization] opt[doi]} @comment{jabref-entrytype: Report: req[author;title;type;number;address;institution;date;pages] opt[url;urldate;doi;subtitle]} diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makeall.sh b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makeall.sh new file mode 100644 index 00000000000..e693b1c722b --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makeall.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# Copyright (c) 2012-2016 hzz + +# exec path for tex live 2016 +export PATH=${PATH}:/usr/local/texlive/2016/bin/x86_64-linux + +./makeclear.sh + +./makefileeg.sh + +./makefile.sh + +#clear aux files + +./makeclear.sh + + diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makecompilerec.dat b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makecompilerec.dat new file mode 100644 index 00000000000..c8af4c9932f --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makecompilerec.dat @@ -0,0 +1,31 @@ +compiled files info: +egaligngb7714-2015.tex +egaligngb7714-2015ay.tex +egalignleft.tex +egalignright.tex +egbeamer.tex +egbeameray.tex +egbooks.tex +egbooksay.tex +eggbnoauthorfalse.tex +eggbnoauthorfalseay.tex +eggbnoauthortrue.tex +eggbnoauthortrueay.tex +eggbpubfalse.tex +eggbpubfalseay.tex +eggbpubtrue.tex +eggbpubtrueay.tex +egjournal.tex +egjournalay.tex +egonline.tex +egonlineay.tex +egpatent.tex +egpatentay.tex +egprcdorinprcd.tex +egprcdorinprcday.tex +egreport.tex +egreportay.tex +egtest.tex +egthesis.tex +egthesisay.tex +biblatex-gb7714-2015.tex diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makefile.sh b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makefile.sh index e89b9e27a76..b9d88311784 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makefile.sh +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makefile.sh @@ -5,26 +5,10 @@ export PATH=${PATH}:/usr/local/texlive/2016/bin/x86_64-linux #compile the tex file -xelatex --synctex=-1 egbibenv-right.tex -biber egbibenv-right -xelatex --synctex=-1 egbibenv-right.tex -xelatex --synctex=-1 egbibenv-left.tex -biber egbibenv-left -xelatex --synctex=-1 egbibenv-left.tex -xelatex --synctex=-1 egbibenv-gb7714-2015.tex -biber egbibenv-gb7714-2015 -xelatex --synctex=-1 egbibenv-gb7714-2015.tex xelatex --synctex=-1 biblatex-gb7714-2015.tex - -#pause - biber biblatex-gb7714-2015 - -#pause - xelatex --synctex=-1 biblatex-gb7714-2015.tex - #to do it again for backref xelatex --synctex=-1 biblatex-gb7714-2015.tex @@ -32,21 +16,4 @@ xelatex --synctex=-1 biblatex-gb7714-2015.tex ./makeclear.sh -#compile the tex file - -xelatex --synctex=-1 biblatex-gb7714-2015ay.tex - -#pause -biber biblatex-gb7714-2015ay - -#pause - -xelatex --synctex=-1 biblatex-gb7714-2015ay.tex - -#to do it again for backref -xelatex --synctex=-1 biblatex-gb7714-2015ay.tex - -# clear aux files - -./makeclear.sh diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makefilebeamer.sh b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makefilebeamer.sh deleted file mode 100644 index 2b29f665c6a..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makefilebeamer.sh +++ /dev/null @@ -1,43 +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 -# 显然tex文件前的./不一定需要的,反而是上面的Path路径反而是关键 -xelatex --synctex=-1 ./biblatex-gb7714-2015-beamer.tex - -#pause - -biber ./biblatex-gb7714-2015-beamer - -#pause - -xelatex --synctex=-1 ./biblatex-gb7714-2015-beamer.tex - -#to do it again for backref -xelatex --synctex=-1 ./biblatex-gb7714-2015-beamer.tex - -# clear aux files - -./makeclear.sh - -# compile the tex file - -xelatex --synctex=-1 biblatex-gb7714-2015ay-beamer.tex - -#pause - -biber biblatex-gb7714-2015ay-beamer - -#pause - -xelatex --synctex=-1 biblatex-gb7714-2015ay-beamer.tex - -#to do it again for backref -xelatex --synctex=-1 biblatex-gb7714-2015ay-beamer.tex - -# clear aux files - -./makeclear.sh diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makefileeg.sh b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makefileeg.sh new file mode 100644 index 00000000000..633efb0932b --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makefileeg.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +export PATH=${PATH}:/usr/local/texlive/2016/bin/x86_64-linux + +for egfile in eg*.tex; +do +./makeclear.sh +echo "$egfile" +echo "${egfile%.tex}" +xelatex --synctex=-1 "$egfile" +biber "${egfile%.tex}" +xelatex --synctex=-1 "$egfile" +./makeclear.sh; +done + + + diff --git a/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makeall.bat b/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makeall.bat index b57b4721604..3d490babdb5 100755 --- a/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makeall.bat +++ b/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makeall.bat @@ -20,9 +20,7 @@ call makefileeg call makefile
-call makefilebeamer
-
-call makeclear
+::call makeclear
if exist *.userbak (
del *.userbak /Q
diff --git a/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefile.bat b/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefile.bat index b56377cf2e3..c3eefd31974 100755 --- a/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefile.bat +++ b/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefile.bat @@ -9,6 +9,8 @@ call makeclear ::pause
+echo biblatex-gb7714-2015.tex >> makecompilerec.dat
+
xelatex.exe --synctex=-1 biblatex-gb7714-2015.tex
biber biblatex-gb7714-2015
@@ -22,19 +24,3 @@ xelatex.exe --synctex=-1 biblatex-gb7714-2015.tex ::call makeclear
-
-
-:: compile the tex file
-
-xelatex.exe --synctex=-1 biblatex-gb7714-2015ay.tex
-
-biber biblatex-gb7714-2015ay
-
-xelatex.exe --synctex=-1 biblatex-gb7714-2015ay.tex
-
-::to do it again for backref
-xelatex.exe --synctex=-1 biblatex-gb7714-2015ay.tex
-
-:: clear aux files
-
-::call makeclear
\ No newline at end of file diff --git a/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefilebeamer.bat b/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefilebeamer.bat deleted file mode 100644 index 0aea166b3f3..00000000000 --- a/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefilebeamer.bat +++ /dev/null @@ -1,41 +0,0 @@ -:: Copyright (c) 2012-2016 hzz
-
-@echo off
-
-:: compile the tex file
-
-xelatex.exe --synctex=-1 biblatex-gb7714-2015-beamer.tex
-
-::pause
-
-biber biblatex-gb7714-2015-beamer
-
-::pause
-
-xelatex.exe --synctex=-1 biblatex-gb7714-2015-beamer.tex
-
-::to do it again for backref
-xelatex.exe --synctex=-1 biblatex-gb7714-2015-beamer.tex
-
-:: clear aux files
-
-call makeclear
-
-:: compile the tex file
-
-xelatex.exe --synctex=-1 biblatex-gb7714-2015ay-beamer.tex
-
-::pause
-
-biber biblatex-gb7714-2015ay-beamer
-
-::pause
-
-xelatex.exe --synctex=-1 biblatex-gb7714-2015ay-beamer.tex
-
-::to do it again for backref
-xelatex.exe --synctex=-1 biblatex-gb7714-2015ay-beamer.tex
-
-:: clear aux files
-
-call makeclear
\ No newline at end of file diff --git a/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefileeg.bat b/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefileeg.bat index e7e19fc668a..912486bcb58 100755 --- a/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefileeg.bat +++ b/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefileeg.bat @@ -1,19 +1,22 @@ -:: Copyright (c) 2012-2016 hzz
-
@echo off
+echo compiled files info: > makecompilerec.dat
-:: compile the tex file
-
-xelatex.exe --synctex=-1 egbibenv-right.tex
-biber egbibenv-right
-xelatex.exe --synctex=-1 egbibenv-right.tex
-
-xelatex.exe --synctex=-1 egbibenv-left.tex
-biber egbibenv-left
-xelatex.exe --synctex=-1 egbibenv-left.tex
+setlocal enabledelayedexpansion
+for %%a in ( eg*.tex ) do (
+call makeclear
+set jobfile=%%a
+set jobname=!jobfile:~0,-4!
+echo %%a
+echo !jobfile!
+echo !jobname!
+echo !jobfile! >> makecompilerec.dat
+xelatex.exe --synctex=-1 !jobfile!
+biber !jobname!
+xelatex.exe --synctex=-1 !jobfile!
+)
+setlocal DISABLEDELAYEDEXPANSION
-xelatex.exe --synctex=-1 egbibenv-gb7714-2015.tex
-biber egbibenv-gb7714-2015
-xelatex.exe --synctex=-1 egbibenv-gb7714-2015.tex
+call makeclear
+::pause
diff --git a/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefileegtest.bat b/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefileegtest.bat new file mode 100755 index 00000000000..f00d1cac364 --- /dev/null +++ b/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefileegtest.bat @@ -0,0 +1,13 @@ +:: Copyright (c) 2012-2016 hzz
+
+@echo off
+
+
+:: compile the tex file
+
+xelatex.exe --synctex=-1 egtest.tex
+biber egtest
+xelatex.exe --synctex=-1 egtest.tex
+
+
+
diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx index f9eaf107f0d..e1d62786091 100644 --- a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx +++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx @@ -4,20 +4,15 @@ %% GBT7714-2015 bibliography style,numerical sequence %% Maintained by huzhenzhen %% history: -%% 2016/05/20 v1.0 -%% 2016/10/23 v1.0a -%% 2016/11/11 v1.0b -%% 2016/11/14 v1.0c -%% 2016/11/24 v1.0d -%% 2016/12/07 v1.0e -%% 2016/12/31 v1.0f -%% 2017/02/26 v1.0g -%% 2017/04/11 v1.0h +%% 2016/05/20 v1.0 2016/10/23 v1.0a 2016/11/11 v1.0b +%% 2016/11/14 v1.0c 2016/11/24 v1.0d 2016/12/07 v1.0e +%% 2017/02/26 v1.0g 2017/04/11 v1.0h +%% 2017/11/21 v1.0i %% E-mail: hzzmail@163.com %% Released under the LaTeX Project Public License v1.3c or later %% --------------------------------------------------------------- %% -\ProvidesFile{gb7714-2015.bbx}[2017/04/11 v1.0h biblatex bibliography style] +\ProvidesFile{gb7714-2015.bbx}[2017/11/21 v1.0i biblatex bibliography style] %===================================================================== @@ -31,201 +26,255 @@ %===================================================================== %===================================================================== -%增加一些功能函数 +%新增功能函数 %===================================================================== -%版本判断,根据biblatex更新历史可知,版本3.3开始使用新的姓名机制 -\providetoggle{iftexlivesix} -%所以当版本大于3.2开始,就用设置\toggletrue{iftexlivesix} -\def\numparserta#1.#2\relax{#1}%注意relax的重要性 -\def\numparsertb#1.#2\relax{#2} -\def\numinteger{\expandafter\numparserta\abx@version\relax} -\def\numdigital{\expandafter\numparsertb\abx@version\relax} -\ifnumcomp{\numdigital}{>}{2}{\toggletrue{iftexlivesix}}{\togglefalse{iftexlivesix}} - -%定义判断中文字符的函数,用于判断作者等信息是否由中文字符构成 -%2E00-2E7F 追加标点 -%2E80-2EFF cjk部首补充 -%2FF0-2FFF 表意文字描述符 -%3000-303F cjk符号和标点 -%3300-33FF cjk兼容 -%3400-4DBF cjk统一表意符号扩展 -%4E00-9FBF cjk统一表意符号 -%中文范围4E00-9FA5 -\providetoggle{ifCJKforgbt} -\def\testCJKfirstchar#1#2&{% -\ifnumgreater{`#1}{"2E7F}{\toggletrue{ifCJKforgbt}}{\togglefalse{ifCJKforgbt}}% -}% - -%利用edef展开或xstring抽取第一个字符判断 -%现在采用xstring方法,避免抽取的是编组符号 -\def\testCJKfirst#1{% -%\edef\tempa{#1}% -\exploregroups% -\StrChar{#1}{1}[\tempa]% -\expandafter\testCJKfirstchar\tempa&} - - -%判断是否是标准 -%\providetoggle{ifnoteeqstandard} -%\def\testifnoteeqstd{% -%\iffieldundef{note}{\togglefalse{ifnoteeqstandard}}%判断一下,是否是标准 -% {\def\comparetmp{standard}\edef\comparetmpb{\thefield{note}}% -% \ifx\comparetmp\comparetmpb% -% \toggletrue{ifnoteeqstandard}% -% \else% -% \togglefalse{ifnoteeqstandard}% -% \fi}} -%\iffieldequalstr{note}{standard}{true}{false} %可以利用这一函数代替 - -%用于解析连续出版物,2个卷期的情况 -\def\multivolumeparsetoparts#1/#2{\def\multivolumefirst{#1}\def\multivolumesecond{#2}} -%\def\multinumberparsetoparts#1/#2{\def\multinumberfirst{#1}\def\multinumbersecond{#2}} - -%这里利用李志奇的范围数据解析函数,修改后用来处理卷volume的范围。 -%他的这个函数是通用的,只能在使用数据前使用,如果多次使用前一次得到的数据就会被冲掉 -%这里的范围起止判断符号还是用-,而不是与date相同的/,因为有合期期刊的问题,需要用到/符号 -\def\gbt@parse@range#1{% - \edef\gbt@tmpa{#1}% - \expandafter\gbt@parse@rangei\gbt@tmpa-\@empty} -\def\gbt@parse@rangei#1-#2\@empty{% - \global\def\gbt@range@first{#1}% - \def\gbt@tmpa{#2}% - \ifx\gbt@tmpa\@empty% - \global\def\gbt@range@second{}% - \else% - \gbt@parse@rangeii#2\@empty% - \fi} -\def\gbt@parse@rangeii#1-#2\@empty{% - \def\gbt@tmpa{#2}% - \ifx\gbt@tmpa\@empty% - \global\def\gbt@range@second{#1}% - \else% - \gbt@parse@rangeii#2\@empty% - \fi} - -%这里写的number的解析函数,与上面的卷解析函数是类似的。 -\def\multinumberparser#1{% - \edef\gbnumbertmp{#1}% - \expandafter\multinumberparsetoparts\gbnumbertmp-\@empty} -\def\multinumberparsetoparts#1-#2\@empty{% - \def\multinumberfirst{#1}% - \def\gbnumbertmp{#2}% - \ifx\gbnumbertmp\@empty% - \def\multinumbersecond{}% - \else% - \multinumberparsetopartsb#2\@empty% - \fi} -\def\multinumberparsetopartsb#1-#2\@empty{% - \def\gbnumbertmp{#2}% - \ifx\gbnumbertmp\@empty% - \def\multinumbersecond{#1}% - \else% - \multinumberparsetopartsb#2\@empty% - \fi} + %版本判断 + \providetoggle{iftlfive}%用于处理biblatex3.2之前的版本,即texlive2015以下版本中的biblatex + \providetoggle{iftlsix}%用于处理biblatex3.3开始改变的新的姓名机制后版本,包括 + \providetoggle{iftlseven}%用于处理biblatex3.7的兼容性 + \providetoggle{iftleight}%用于处理>=biblatex3.8的兼容性 + \providetoggle{iftlnine}%用于处理>=biblatex3.10的兼容性 + \StrBefore{\abx@version}{.}[\numinteger] + \StrBehind{\abx@version}{.}[\numdigital] + \IfInteger{\numdigital}{}{\StrGobbleRight{\numdigital}{1}[\numdigital]} + %2.x版本统一用iftlfive=true表示 + %3.0-3.2版本用iftlfive=true表示 + %3.3-3.6版本用iftlsix=true表示 + %3.7版本用iftlseven=true表示 + %>3.8版本用iftleight=true表示 + \ifnumcomp{\numinteger}{=}{3}{ + \ifnumcomp{\numdigital}{>}{2}{\toggletrue{iftlsix}\togglefalse{iftlfive}}{\togglefalse{iftlsix}\toggletrue{iftlfive}} + \ifnumcomp{\numdigital}{>}{6}{\toggletrue{iftlseven}\togglefalse{iftlsix}}{\togglefalse{iftlseven}} + \ifnumcomp{\numdigital}{>}{7}{\toggletrue{iftleight}\togglefalse{iftlseven}}{\togglefalse{iftleight}} + \ifnumcomp{\numdigital}{>}{9}{\toggletrue{iftlnine}\togglefalse{iftleight}}{\togglefalse{iftlnine}} + }{\ifnumcomp{\numinteger}{>}{3}{ + \toggletrue{iftleight}\blx@warning@noline{% + biblatex version is >= 4.x.\MessageBreak + if errors raised,Please contact biblatex-gb7714-2015 pkg author.}% + }{\toggletrue{iftlfive}\blx@warning@noline{% + biblatex version is <= 2.x.\MessageBreak + if errors raised,Please contact biblatex-gb7714-2015 pkg author.}% + }} + \newcommand\defversion[2]{\csdef{codeversion#1#2}}%定义不同版本的命令 + \newcommand\switchversion[2]{\csuse{codeversion#1#2}}%使用不同版本的命令 + + %定义判断中文字符的函数,用于判断作者等信息是否由中文字符构成 + %2E00-2E7F 追加标点 + %2E80-2EFF cjk部首补充 + %2FF0-2FFF 表意文字描述符 + %3000-303F cjk符号和标点 + %3300-33FF cjk兼容 + %3400-4DBF cjk统一表意符号扩展 + %4E00-9FBF cjk统一表意符号 + %中文范围4E00-9FA5 + \providetoggle{ifCJKforgbt} + \def\testCJKfirstchar#1#2&{%#1#2& + \ifnumgreater{`#1}{"2E7F}{\toggletrue{ifCJKforgbt}}{\togglefalse{ifCJKforgbt}}% + }% + + %利用edef展开或xstring抽取第一个字符判断 + %现在采用xstring方法,避免抽取的是编组符号 + \def\testCJKfirst#1{% + %\edef\tempa{#1}% + %\expandarg%\noexpandarg + \exploregroups% + \StrChar{#1}{1}[\tempa]% + \expandafter\testCJKfirstchar\tempa&} + + %用于解析连续出版物,2个卷期的情况 + %范围起止间隔符号还是用-,而不是与date相同的/,因为有合期期刊的问题,需要用到/符号 + \newcommand{\multivolparser}[1]{% + \IfSubStr{#1}{-}% + {\StrBefore{#1}{-}[\multivolfirst]\StrBehind{#1}{-}[\multivolsecond]}% + {\def\multivolfirst{#1}\def\multivolsecond{}}% + } + \newcommand{\multinumberparser}[1]{% + \IfSubStr{#1}{-}% + {\StrBefore{#1}{-}[\multinumberfirst]\StrBehind{#1}{-}[\multinumbersecond]}% + {\def\multinumberfirst{#1}\def\multinumbersecond{}}% + } %===================================================================== %===================================================================== %设置宏包选项 %===================================================================== +\defversion{3.0}{opt}{ + %biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 + %增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015无效,仍然为右对齐模式,因为舍弃了list类环境后出错。 + \DeclareBibliographyOption{align}[right]{%texlive2015中的3.0版中的DeclareBibliographyOption选项没有类型说明 + \ifstrequal{##1}{right}{}{} + \ifstrequal{##1}{left}{\setalignleft}{} + \ifstrequal{##1}{gb7714-2015}{}{} + } -\iftoggle{iftexlivesix}{% Alter settings that carry through from biblatex -%biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 - -%增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 -\DeclareBibliographyOption[string]{align}[right]{% -\ifstrequal{#1}{left}{\setalignleft}{} -\ifstrequal{#1}{gb7714-2015}{\setaligngbstyle}{} + %增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 + \newtoggle{bbx:gbpub} + \DeclareBibliographyOption{gbpub}[true]{% + %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 + \ifstrequal{##1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} + \ExecuteBibliographyOptions{gbpub} + + %增加一个处理佚名或noauthor的控制选项 + %因为在顺序编码制中,不需要使用,这里也增加,为了与作者年制的兼容性考虑。 + \DeclareBibliographyOption{gbnoauthor}[true]{}% + + \ExecuteBibliographyOptions{ + sorting=none, + useprefix=true, %名字的信息包括前缀 + firstinits=true, %名字有缩写,参考3.1.2.3 Internal + %giveninits=true, + date = year, %日期仅写到年 + maxnames = 3 , %设置名字最大数量 + minnames = 3 %设置缩减后的名字最小数量 + %uniquename = init + } } -%增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 -\newtoggle{bbx:gbpub} -\DeclareBibliographyOption[boolean]{gbpub}[true]{% -%\settoggle{bbx:gbpub}{#1} %或采用下面这一句 - \ifstrequal{#1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} -\ExecuteBibliographyOptions{gbpub} - -%增加一个处理佚名或noauthor的控制选项 -%因为在顺序编码制中,不需要使用,这里也增加,为了与作者年制的兼容性考虑。 -\DeclareBibliographyOption[boolean]{gbnoauthor}[true]{}% - -\ExecuteBibliographyOptions{ - sorting=none, - useprefix=true, %名字的信息包括前缀 - %firstinits=true, %名字有缩写,参考3.1.2.3 Internal - giveninits=true, - date = year, %日期仅写到年 - maxnames = 3 , %设置名字最大数量 - minnames = 3 %设置缩减后的名字最小数量 - %uniquename = init -} -} -{%biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 -%增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015无效,仍然为右对齐模式,因为舍弃了list类环境后出错。 -\DeclareBibliographyOption{align}[right]{%texlive2015中的3.0版中的DeclareBibliographyOption选项没有类型说明 -\ifstrequal{#1}{right}{}{} -\ifstrequal{#1}{left}{\setalignleft}{} -\ifstrequal{#1}{gb7714-2015}{}{} +\defversion{3.4}{opt}{ + % Alter settings that carry through from biblatex + %biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 + %增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 + \DeclareBibliographyOption[string]{align}[right]{% + \ifstrequal{##1}{left}{\setalignleft}{} + \ifstrequal{##1}{gb7714-2015}{\setaligngbstyle}{} + } + + %增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 + \newtoggle{bbx:gbpub} + \DeclareBibliographyOption[boolean]{gbpub}[true]{% + %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 + \ifstrequal{##1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} + \ExecuteBibliographyOptions{gbpub} + + %增加一个处理佚名或noauthor的控制选项 + %因为在顺序编码制中,不需要使用,这里也增加,为了与作者年制的兼容性考虑。 + \DeclareBibliographyOption[boolean]{gbnoauthor}[true]{}% + + \ExecuteBibliographyOptions{ + sorting=none, + useprefix=true, %名字的信息包括前缀 + %firstinits=true, %名字有缩写,参考3.1.2.3 Internal + giveninits=true, + date = year, %日期仅写到年 + maxnames = 3 , %设置名字最大数量 + minnames = 3 %设置缩减后的名字最小数量 + %uniquename = init + } } -%增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 -\newtoggle{bbx:gbpub} -\DeclareBibliographyOption{gbpub}[true]{% -%\settoggle{bbx:gbpub}{#1} %或采用下面这一句 - \ifstrequal{#1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} -\ExecuteBibliographyOptions{gbpub} - -%增加一个处理佚名或noauthor的控制选项 -%因为在顺序编码制中,不需要使用,这里也增加,为了与作者年制的兼容性考虑。 -\DeclareBibliographyOption{gbnoauthor}[true]{}% - -\ExecuteBibliographyOptions{ - sorting=none, - useprefix=true, %名字的信息包括前缀 - firstinits=true, %名字有缩写,参考3.1.2.3 Internal - %giveninits=true, - date = year, %日期仅写到年 - maxnames = 3 , %设置名字最大数量 - minnames = 3 %设置缩减后的名字最小数量 - %uniquename = init +\defversion{3.7}{opt}{ + %biblatex3.7版后(比如texlive2017中的3.7版)的使用方式 + %增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 + \DeclareBibliographyOption[string]{align}[right]{% + \ifstrequal{##1}{left}{\setalignleft}{} + \ifstrequal{##1}{gb7714-2015}{\setaligngbstyle}{} + } + + %增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 + \newtoggle{bbx:gbpub} + \DeclareBibliographyOption[boolean]{gbpub}[true]{% + %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 + \ifstrequal{##1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} + \ExecuteBibliographyOptions{gbpub} + + %增加一个处理佚名或noauthor的控制选项 + %因为在顺序编码制中,不需要使用,这里也增加,为了与作者年制的兼容性考虑。 + \DeclareBibliographyOption[boolean]{gbnoauthor}[true]{}% + + \ExecuteBibliographyOptions{ + sorting=none, + useprefix=true, %名字的信息包括前缀 + %firstinits=true, %名字有缩写,参考3.1.2.3 Internal + giveninits=true, + date = year, %日期仅写到年 + urldate =edtf, %iso8601 + eventdate =edtf, + maxnames = 3 , %设置名字最大数量 + minnames = 3 %设置缩减后的名字最小数量 + %uniquename = init + } } + +\defversion{3.10}{opt}{ + %biblatex3.7版后(比如texlive2017中的3.7版)的使用方式 + %增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 + \DeclareBibliographyOption[string]{align}[right]{% + \ifstrequal{##1}{left}{\setalignleft}{} + \ifstrequal{##1}{gb7714-2015}{\setaligngbstyle}{} + } + + %增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 + \newtoggle{bbx:gbpub} + \DeclareBibliographyOption[boolean]{gbpub}[true]{% + %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 + \ifstrequal{##1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} + \ExecuteBibliographyOptions{gbpub} + + %增加一个处理佚名或noauthor的控制选项 + %因为在顺序编码制中,不需要使用,这里也增加,为了与作者年制的兼容性考虑。 + \DeclareBibliographyOption[boolean]{gbnoauthor}[true]{}% + + \ExecuteBibliographyOptions{ + sorting=none, + useprefix=true, %名字的信息包括前缀 + %firstinits=true, %名字有缩写,参考3.1.2.3 Internal + giveninits=true, + date = year, %日期仅写到年 + urldate =iso, %iso8601,edtf + eventdate =iso, + maxnames = 3 , %设置名字最大数量 + minnames = 3 %设置缩减后的名字最小数量 + %uniquename = init + } } +\iftoggle{iftlfive} + {\switchversion{3.0}{opt}}%%当采用texlive2015以下版本时,biblatex3.0 + {\iftoggle{iftlsix}% + {\switchversion{3.4}{opt}}%%当采用texlive2016版本时,biblatex3.4 + {\iftoggle{iftlnine}% + {\switchversion{3.10}{opt}}%%当采用biblatex3.10以上版本时 + {\switchversion{3.7}{opt}}%%当采用biblatex3.4以上版本时 + } + } + %===================================================================== %===================================================================== %设置本地化字符串 %===================================================================== -%新建一个当地化字符串,用来记录“等”字符 -\NewBibliographyString{andotherscn} -\NewBibliographyString{noaddress} -\NewBibliographyString{nopublisher} - -%直接利用当地化格式english进行修改一些中文的格式 -%具体可以修改哪些,参考english.lbx文件 -%当然也可以增加比如上面定义的andotherscn -%注意:在lbx文件和bbx文件中定义本地字符串的不同语法,两个参数和一个参数的区别 -\DefineBibliographyStrings{english}{ -bibliography = {参考文献}, -references = {参考文献}, -%bytranslator= {\addcomma\ 译\adddot}, %将trans. by 改成 译 -bytranslator= {\addcomma\ 译},%\addperiod -and = {\addcomma},%将第2和3人名见的and符号改成 逗号,用\finalnamedelim命令也可以定义,参见3.9.1节 -%andothers = {et al.}, %将超过3个人名的省略,et al.改成为 等 -andotherscn = {等}, %将超过3个人名的省略,et al.改成为 等 -noaddress = {[S.l.]}, -nopublisher = {[s.n.]}, -backrefpage = {引用页:}, -backrefpages = {引用页:}, -} + %新建一个当地化字符串,用来记录“等”字符 + \NewBibliographyString{andotherscn} + \NewBibliographyString{noaddress} + \NewBibliographyString{nopublisher} + + %直接利用当地化格式english进行修改一些中文的格式,具体可以修改哪些,参考english.lbx文件 + %当然也可以增加比如上面定义的andotherscn + %注意:在lbx文件和bbx文件中定义本地字符串的不同语法,两个参数和一个参数的区别 + \DefineBibliographyStrings{english}{ + bibliography = {参考文献}, + references = {参考文献}, + %bytranslator= {\addcomma\ 译\adddot}, %将trans. by 改成 译 + bytranslator= {\addcomma\ 译},%\addperiod + and = {\addcomma},%将第2和3人名见的and符号改成 逗号,用\finalnamedelim命令也可以定义,参见3.9.1节 + %andothers = {et al.}, %将超过3个人名的省略,et al.改成为 等 + andotherscn = {等}, %将超过3个人名的省略,et al.改成为 等 + noaddress = {[S.l.]}, + nopublisher = {[s.n.]}, + backrefpage = {引用页:}, + backrefpages = {引用页:}, + } %===================================================================== %===================================================================== %动态数据修改,修改输入的源文件数据,用于中文判断等 %===================================================================== -%修改输入的源文件数据,用于中文判断等 +%修改输入的源文件数据,用于中文判断等操作 %首先把作者和译者信息准确的记录到userf,usere中,用于后面判断是否是cjk字符。 +%注意这里用userf,usere而不是namee,namef,是因为只有把name列表转成域,才能有效读取姓名中的字符, +%如果用namee,namef,name信息会自动解析,所以就不能为cjk判断提供需要的信息 %注意\DeclareSourcemap命令只能出现一次 \DeclareSourcemap{ \maps[datatype=bibtex]{%增加文献标识符如[M],[J]等,下面首先生成这一信息 @@ -239,6 +288,8 @@ backrefpages = {引用页:}, \step[fieldset=usera, fieldvalue={J}] \step[fieldsource=author] %有时会把author和editor混淆,这里处理后就没有这个问题 \step[fieldset=editor, origfieldval] + \step[fieldsource=publisher] %有时会把publisher和institution混淆,这里处理后就没有这个问题 + \step[fieldset=institution, origfieldval] } \map{ \pertype{newspaper}%增加一个新闻报纸的类型newspaper @@ -327,6 +378,10 @@ backrefpages = {引用页:}, \step[fieldsource=year] \step[fieldset=date, origfieldval] } + \map{%title + \step[fieldsource={title}, match=\regexp{([^\\\{])}] + \step[fieldset=userd, fieldvalue={$1}] + } \map{%将entrykey放入keywords中用于后期的使用 \step[fieldsource=entrykey] \step[fieldset=keywords, origfieldval] @@ -339,7 +394,7 @@ backrefpages = {引用页:}, } } -\iftoggle{iftexlivesix}{ +\defversion{3.0}{map}{ \DeclareStyleSourcemap{ \maps[datatype=bibtex]{ % \map{%尝试未定义数据模型的newspaper类型映射为article,newspaper完全是针对gb7714的新类型,在biblatex中完全没有定义 @@ -365,19 +420,41 @@ backrefpages = {引用页:}, \step[typesource=techreport, typetarget=report, final] %\step[fieldset=type, fieldvalue=techreport] } - \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,address,location,institution,organization}]{ - \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\#}, replace=\regexp{$1\\\#}] + \map[overwrite]{%title,booktitle,journaltitle,journal,publisher,address,location,institution,organization + \step[fieldsource={title}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] } - \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,address,location,institution,organization}]{ - \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\%}, replace=\regexp{$1\\\%}] + \map[overwrite]{ + \step[fieldsource={booktitle}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] } - \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,% - address,location,institution,organization}]{ - \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + \map[overwrite]{ + \step[fieldsource={journaltitle}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={journal}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={publisher}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={address}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={location}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={institution}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={booktitle}, match=\regexp{([^\\])\#}, replace=\regexp{$1\\\#}] + } + \map[overwrite]{ + \step[fieldsource={booktitle}, match=\regexp{([^\\])\%}, replace=\regexp{$1\\\%}] } } } -}{ +} + +\defversion{3.4}{map}{ \DeclareStyleSourcemap{ \maps[datatype=bibtex]{ % \map{%尝试未定义数据模型的newspaper类型映射为article,newspaper完全是针对gb7714的新类型,在biblatex中完全没有定义 @@ -403,40 +480,24 @@ backrefpages = {引用页:}, \step[typesource=techreport, typetarget=report, final] %\step[fieldset=type, fieldvalue=techreport] } - \map[overwrite]{%title,booktitle,journaltitle,journal,publisher,address,location,institution,organization - \step[fieldsource={title}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={booktitle}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={journaltitle}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={journal}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={publisher}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={address}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={location}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={institution}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,address,location,institution,organization}]{ + \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\#}, replace=\regexp{$1\\\#}] } - \map[overwrite]{ - \step[fieldsource={booktitle}, match=\regexp{([^\\])\#}, replace=\regexp{$1\\\#}] + \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,address,location,institution,organization}]{ + \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\%}, replace=\regexp{$1\\\%}] } - \map[overwrite]{ - \step[fieldsource={booktitle}, match=\regexp{([^\\])\%}, replace=\regexp{$1\\\%}] + \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,% + address,location,institution,organization}]{ + \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] } } } } +\iftoggle{iftlfive}% + {\switchversion{3.0}{map}}% + {\switchversion{3.4}{map}} + \DeclareBibliographyAlias{newspaper}{article}%定义驱动别名,尝试以替代驱动层映射,实践表明是可行的。 @@ -454,11 +515,11 @@ backrefpages = {引用页:}, %而标签则只能对齐一个方向,要么左对齐要么右对齐,看个人选择了。 %\DeclareFieldFormat{shorthandwidth}{\mkbibbrackets{#1}} %源来自numeric.BBX %\DeclareFieldFormat{labelnumberwidth}{\ttfamily\mkbibbrackets{#1}\hfill} -%\iftoggle{alignleft}{\DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{#1}\hfill}}{}%这种方式无效是应为加载时就已经展开了。 +%\iftoggle{alignleft}{\DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{#1}\hfill}}{}%这种方式无效是因为加载时就已经展开了。 %修改序号标签格式为左对齐 \def\setalignleft{\DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{##1}\hfill}} -%修改序号标签格式为以各条参文献为基础进行对齐的方式 +%修改序号标签格式为以各条参文献为基础进行对齐的方式,即序号与条目内容间隔相等的方式。 \def\setaligngbstyle{% \def\blx@bibitem##1{% \blx@ifdata{##1} @@ -510,19 +571,14 @@ backrefpages = {引用页:}, %===================================================================== %设置单元或块等的标点 %===================================================================== -%\renewrobustcmd*{\bibinitperiod}{\adddot} %来源biblatex2.STY -\renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 -%\newcommand*{\revsdnamepunct}{\addcomma} %来源biblatex.def -\renewcommand*{\revsdnamepunct}{} -%\newcommand*{\subtitlepunct}{\newunitpunct} %修改标题和其它标题信息间的标点 -\renewcommand*{\subtitlepunct}{\addcolon\space} %来源biblatex.def, -%关于双语言或多语言的参考文献,可以参考3.11.5 Entry Sets,4.11.1 Entry Sets -%这里调整一下两种语言参考文献的间隔 -%\renewcommand*{\entrysetpunct}{\addsemicolon\space}%源来自biblatex.def -\renewcommand*{\entrysetpunct}{\adddot\newline\nobreak}%%双语之间用newline替换par(20170411 v1.0h),避免采用gb7714-2015的项对齐方式第二语言间分段导致没有缩进 -%页码引用格式的修改 -%\newcommand*{\bibpagespunct}{\addcomma\space} -\renewcommand*{\bibpagespunct}{\addcolon\space}%修改为用冒号 +\renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉,%来源biblatex2.STY +\renewcommand*{\revsdnamepunct}{}%%来源biblatex.def +\renewcommand*{\subtitlepunct}{\addcolon\space} %修改标题和其它标题信息间的标点,来源biblatex.def, +%双语言或多语言的参考文献,可以参考3.11.5 Entry Sets,4.11.1 Entry Sets +%这里调整一下两种语言参考文献的间隔,源来自biblatex.def +%%双语之间用newline替换par(20170411 v1.0h),避免采用gb7714-2015的项对齐方式第二语言间分段导致没有缩进 +\renewcommand*{\entrysetpunct}{\adddot\newline\nobreak} +\renewcommand*{\bibpagespunct}{\addcolon\addthinspace}%%页码引用格式的修改,修改为用冒号 %===================================================================== @@ -530,28 +586,12 @@ backrefpages = {引用页:}, %修改域的格式,重定义域的输出宏 %===================================================================== %新增文献类型标识符的格式 -%\DeclareFieldFormat{gbtypeflag}{\nobreak\mkbibbrackets{\nobreak#1}\nobreak} \DeclareFieldFormat{gbtypeflag}{% \iftoggle{bbx:url}{\iffieldundef{url}%当存在url时,增加一个OL标识符 {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{]}}% {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\texttt{/}OL]}}% }{\nobreak\printtext{[}\nobreak#1\nobreak\printtext{]}}} -%\DeclareFieldFormat{gbtypeflag}{% -%\iffieldundef{url}%当存在url时,增加一个OL标识符 -%{\printtext{\nobreak[\nobreak}#1\printtext{]\nobreak}}% -%{\printtext{\nobreak[\nobreak}#1\printtext{\texttt{/}OL]\nobreak}}% -%} -%\DeclareFieldFormat{gbtypeflag}{% -%\iffieldundef{url}%当存在url时,增加一个OL标识符 -%{\nobreak[\nobreak#1]\nobreak}% -%{\nobreak[\nobreak#1\texttt{/}OL]\nobreak}% -%} -%\DeclareFieldFormat{gbtypeflag}{% -%\iffieldundef{url}%当存在url时,增加一个OL标识符 -%{\printtext{\mkbibbrackets{#1}}}%\nopunct -%{\printtext{\mkbibbrackets{#1\texttt{/}OL}}}% -%} \DeclareFieldFormat{gbtypeflagn}{%用于报纸newspaper \iftoggle{bbx:url}{\iffieldundef{url}%当存在url时,增加一个OL标识符 {\nobreak\printtext{[}\nobreak N\printtext{]}\nobreak}% @@ -565,36 +605,20 @@ backrefpages = {引用页:}, }{\nobreak\printtext{[}\nobreak S\printtext{]}\nobreak}} %重设title的输出格式,不加emph,原格式来自biblatex.def文件 -%\DeclareFieldFormat{journaltitle}{\mkbibemph{#1}} -%\DeclareFieldFormat{issuetitle}{\mkbibemph{#1}} -%\DeclareFieldFormat{maintitle}{\mkbibemph{#1}} -%\DeclareFieldFormat{title}{\mkbibemph{#1}} -%\DeclareFieldFormat{booktitle}{\mkbibemph{#1}} \DeclareFieldFormat{title}{#1\adddot\addthinspace}% \DeclareFieldFormat{journaltitle}{#1\isdot} \DeclareFieldFormat{issuetitle}{#1} \DeclareFieldFormat{maintitle}{#1} \DeclareFieldFormat{booktitle}{#1} -%\DeclareFieldFormat[article,inbook,incollection,inproceedings,patent,thesis,unpublished] -% {title}{\mkbibquote{#1\isdot}} \DeclareFieldFormat%将期刊等文献的标题中原来带的引号去掉 [article,patent,thesis,unpublished] - {title}{#1\adddot\addthinspace}% + {title}{#1\adddot\addthinspace}%\mkbibquote{#1\isdot} \DeclareFieldFormat%将期刊等文献的标题中原来带的引号去掉 [inbook,incollection,inproceedings] {title}{#1\nopunct\unspace}% - -%url相关输出,源来自biblatex.def -%\DeclareFieldFormat{url}{\mkbibacro{URL}\addcolon\space\url{#1}} -\DeclareFieldFormat{url}{\url{#1}} %url域修改如本行 -%\DeclareFieldFormat{urldate}{\mkbibparens{\bibstring{urlseen}\space#1}} - -%重设标题格式,将其修改为首字母大写 -%\DeclareFieldFormat{titlecase}{#1} -\DeclareFieldFormat{titlecase}{\MakeCapital#1} - -%\DeclareFieldFormat{pages}{\mkpageprefix[bookpagination]{#1}} -\DeclareFieldFormat{pages}{#1}%去掉前面引导页码的pp.等字符 +\DeclareFieldFormat{url}{\url{#1}} %%url相关输出,url域修改如本行,源来自biblatex.def +\DeclareFieldFormat{titlecase}{\MakeCapital#1}%重设标题格式,将其修改为首字母大写 +\DeclareFieldFormat{pages}{#1}%去掉前面引导页码的pp.等字符,\mkpageprefix[bookpagination]{#1} %修改译者位置格式,bytranslator+others原格式来自biblatex.def文件 \renewbibmacro*{bytranslator+others}{% @@ -650,16 +674,6 @@ backrefpages = {引用页:}, {\iffieldequalstr{note}{standard}{\printfield[gbtypeflags]{usera}}%判断是否为标准 {\iffieldequalstr{note}{news}{\printfield[gbtypeflagn]{usera}}%判断是否为报纸 {\printfield[gbtypeflag]{usera}}}%其它 -% \def\comparetmp{news}\def\comparetmpa{standard}\edef\comparetmpb{\thefield{note}}% -% \ifx\comparetmp\comparetmpb%判断是否为报纸 -% \printfield[gbtypeflagn]{usera}% -% \else% -% \ifx\comparetmpa\comparetmpb%判断是否为标准 -% \printfield[gbtypeflags]{usera}% -% \else% -% \printfield[gbtypeflag]{usera}% -% \fi% -% \fi% }% %\iffieldundef{booktitle}{\newunit}{}%当title是析出时,不要标点 %\newunit @@ -667,96 +681,78 @@ backrefpages = {引用页:}, }% } -\iftoggle{iftexlivesix}%姓名的格式处理 -{%biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 -\renewbibmacro*{name:given-family}[4]{%利用family-given定义given-family - \ifuseprefix - {\usebibmacro{name:delim}{#3#1}% - \usebibmacro{name:hook}{#3#1}% - \ifdefvoid{#3}{}{% - \ifcapital - {\mkbibnameprefix{\MakeCapital{#3}}\isdot} - {\mkbibnameprefix{#3}\isdot}% - \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}} - {\usebibmacro{name:delim}{#1}% - \usebibmacro{name:hook}{#1}% - \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot - % - \ifboolexpe{% - test {\ifdefvoid{#2}} - and - test {\ifdefvoid{#3}}} - {} - {\revsdnamepunct}% - \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital - \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot} - \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}} +\defversion{3.0}{name}{ + %biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 + \renewbibmacro*{name:last-first}[4]{% + \ifuseprefix + {\usebibmacro{name:delim}{##3##1}% + \usebibmacro{name:hook}{##3##1}% + \ifblank{##3}{}{% + \ifcapital + {\mkbibnameprefix{\MakeCapital{##3}}\isdot} + {\mkbibnameprefix{##3}\isdot}% + \ifpunctmark{'}{}{\bibnamedelimc}}% + %\mkbibnamelast{#1}\isdot + \ifblank{##2}{\MakeCapital##1}{\mkbibnamelast{\MakeUppercase{##1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase + %注意上一句\MakeCapital后面如果再跟一个{}包含#1,则没有效果,可能是包在里面少了一层展开 + %因为机构名通常包括在{}内,所以要多展开一次才行,所以这里去掉#1外面的{} + %\mkbibnamelast{\MakeUppercase{#1}}\isdot + %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 + \ifblank{##2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamefirst{\MakeUppercase{##2}}\isdot}% + \ifblank{##4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{##4}\isdot}} + {\usebibmacro{name:delim}{##1}% + \usebibmacro{name:hook}{##1}% + %\mkbibnamelast{#1}\isdot %3.9.1 Generic Commands and Hooks,对姓重新处理,如下句: %\mkbibnamelast{\MakeUppercase{#1}} + \ifblank{##2}{\MakeCapital##1}{\mkbibnamelast{\MakeUppercase{##1}}}\isdot %大写,参考4.6.4 Miscellaneous Commands,\MakeUppercase %\MakeSentenceCase + %\mkbibnamelast{\MakeUppercase{#1}}\isdot + %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 + \ifblank{##2##3}{}{\revsdnamepunct}% + \ifblank{##2}{}{\bibnamedelimd\mkbibnamefirst{\MakeUppercase{##2}}\isdot}% + \ifblank{##3}{}{\bibnamedelimd\mkbibnameprefix{##3}\isdot}% + \addcomma\addspace% + \ifblank{##4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{##4}\isdot}% + } + } + \renewbibmacro*{name:first-last}[4]{% + \usebibmacro{name:last-first}{##1}{##2}{##3}{##4}} } -{%biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 -\renewbibmacro*{name:first-last}[4]{% - \ifuseprefix - {\usebibmacro{name:delim}{#3#1}% - \usebibmacro{name:hook}{#3#1}% - \ifblank{#3}{}{% - \ifcapital - {\mkbibnameprefix{\MakeCapital{#3}}\isdot} - {\mkbibnameprefix{#3}\isdot}% - \ifpunctmark{'}{}{\bibnamedelimc}}% - %\mkbibnamelast{#1}\isdot - \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase - %注意上一句\MakeCapital后面如果再跟一个{}包含#1,则没有效果,可能是包在里面少了一层展开 - %因为机构名通常包括在{}内,所以要多展开一次才行,所以这里去掉#1外面的{} - %\mkbibnamelast{\MakeUppercase{#1}}\isdot - %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 - \ifblank{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamefirst{\MakeUppercase{#2}}\isdot}% - \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}} - {\usebibmacro{name:delim}{#1}% - \usebibmacro{name:hook}{#1}% - %\mkbibnamelast{#1}\isdot %3.9.1 Generic Commands and Hooks,对姓重新处理,如下句: %\mkbibnamelast{\MakeUppercase{#1}} - \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot %大写,参考4.6.4 Miscellaneous Commands,\MakeUppercase %\MakeSentenceCase - %\mkbibnamelast{\MakeUppercase{#1}}\isdot - %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 - \ifblank{#2#3}{}{\revsdnamepunct}% - \ifblank{#2}{}{\bibnamedelimd\mkbibnamefirst{\MakeUppercase{#2}}\isdot}% - \ifblank{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}% - \addcomma\addspace% - \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}% - }} - -\renewbibmacro*{name:last-first}[4]{% - \ifuseprefix - {\usebibmacro{name:delim}{#3#1}% - \usebibmacro{name:hook}{#3#1}% - \ifblank{#3}{}{% - \ifcapital - {\mkbibnameprefix{\MakeCapital{#3}}\isdot} - {\mkbibnameprefix{#3}\isdot}% - \ifpunctmark{'}{}{\bibnamedelimc}}% - %\mkbibnamelast{#1}\isdot - \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase - %注意上一句\MakeCapital后面如果再跟一个{}包含#1,则没有效果,可能是包在里面少了一层展开 - %因为机构名通常包括在{}内,所以要多展开一次才行,所以这里去掉#1外面的{} - %\mkbibnamelast{\MakeUppercase{#1}}\isdot - %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 - \ifblank{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamefirst{\MakeUppercase{#2}}\isdot}% - \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}} - {\usebibmacro{name:delim}{#1}% - \usebibmacro{name:hook}{#1}% - %\mkbibnamelast{#1}\isdot %3.9.1 Generic Commands and Hooks,对姓重新处理,如下句: %\mkbibnamelast{\MakeUppercase{#1}} - \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot %大写,参考4.6.4 Miscellaneous Commands,\MakeUppercase %\MakeSentenceCase - %\mkbibnamelast{\MakeUppercase{#1}}\isdot - %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 - \ifblank{#2#3}{}{\revsdnamepunct}% - \ifblank{#2}{}{\bibnamedelimd\mkbibnamefirst{\MakeUppercase{#2}}\isdot}% - \ifblank{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}% - \addcomma\addspace% - \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}% - }} + +\defversion{3.4}{name}{ + %biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 + \renewbibmacro*{name:given-family}[4]{%用family-given修改后的内容定义given-family + \ifuseprefix + {\usebibmacro{name:delim}{##3##1}% + \usebibmacro{name:hook}{##3##1}% + \ifdefvoid{##3}{}{% + \ifcapital + {\mkbibnameprefix{\MakeCapital{##3}}\isdot} + {\mkbibnameprefix{##3}\isdot}% + \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}} + {\usebibmacro{name:delim}{##1}% + \usebibmacro{name:hook}{##1}% + \ifdefvoid{##2}{\mkbibnamefamily{\MakeCapital{##1}}}{\mkbibnamefamily{\MakeUppercase{##1}}}\isdot + % + \ifboolexpe{% + test {\ifdefvoid{##2}} + and + test {\ifdefvoid{##3}}} + {} + {\revsdnamepunct}% + \ifdefvoid{##2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{##2}}\isdot}%\MakeCapital + \ifdefvoid{##3}{}{\bibnamedelimd\mkbibnameprefix{##3}\isdot} + \ifdefvoid{##4}{}{\bibnamedelimd\mkbibnamesuffix{##4}\isdot}} + } + \renewbibmacro*{name:family-given}[4]{% + \usebibmacro{name:given-family}{##1}{##2}{##3}{##4}} } +\iftoggle{iftlfive}%根据texlive/biblatex版本选择 + {\switchversion{3.0}{name}}% + {\switchversion{3.4}{name}} + \renewbibmacro*{url+urldate}{% %\usebibmacro{url}%%更换url的位置,放到下面 \iffieldundef{urlyear}% @@ -764,38 +760,176 @@ backrefpages = {引用页:}, \usebibmacro{urldate}}% \setunit{\addperiod\addspace}% \usebibmacro{url}} - \renewbibmacro*{url}{\printfield{url}} -%\newbibmacro*{urldate}{\printurldate} %引用时间修改如下一行,即带方括号 -\renewbibmacro*{urldate}{% -\addspace\printtext{[}\printfield{urlyear}% -\iffieldundef{urlmonth}{}{\bibrangedash\printfield{urlmonth}}% -\iffieldundef{urlday}{}{\bibrangedash\printfield{urlday}}\printtext{]}} - -\newbibmacro*{newsdate}{%%新增加一个新闻日期 -\iffieldundef{year}{}{\printfield{year}% -\iffieldundef{month}{}{\bibrangedash\printtext{\thefield{month}}% -\iffieldundef{day}{}{\bibrangedash\printfield{day}}}}% + +\defversion{3.4}{date}{ + \renewbibmacro*{urldate}{% + \addthinspace\printtext{[}\printfield{urlyear}% + \iffieldundef{urlmonth}{}{\bibrangedash\printfield{urlmonth}}% + \iffieldundef{urlday}{}{\bibrangedash\printfield{urlday}}\printtext{]}} + + \newbibmacro*{newsdate}{%%新增加一个新闻日期 + \iffieldundef{year}{}{\printfield{year}% + \iffieldundef{month}{}{\bibrangedash\printtext{\thefield{month}}% + \iffieldundef{day}{}{\bibrangedash\printfield{day}}}}% + } + + \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 + \iffieldequalstr{year}{}{%替换\iffieldundef{year},因为year总是存在,但为空 + \iffieldundef{endyear}{% + \iffieldundef{eventyear}{}{\printtext{\mkbibparens{\printtext{\printfield{eventyear}}% + \iffieldundef{eventmonth}{}{\bibrangedash\thefield{eventmonth}}% + \iffieldundef{eventday}{}{\bibrangedash\printfield{eventday}}}}% + }% + }{% + \iffieldundef{endyear}{}{\printtext{\mkbibparens{\printtext{\printfield{endyear}}% + \iffieldundef{endmonth}{}{\bibrangedash\thefield{endmonth}}% + \iffieldundef{endday}{}{\bibrangedash\printfield{endday}}}}% + }% + }% + }% + {% + \iffieldundef{year}{}{\printtext{\mkbibparens{\printtext{\printfield{year}}% + \iffieldundef{month}{}{\bibrangedash\thefield{month}}% + \iffieldundef{day}{}{\bibrangedash\printfield{day}}}}% + }% + }% + }% } -\newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 -\iffieldundef{year}{% -\iffieldundef{endyear}{% -\iffieldundef{eventyear}{}{\printtext{\mkbibparens{\printtext{\printfield{eventyear}}% -\iffieldundef{eventmonth}{}{\bibrangedash\thefield{eventmonth}}% -\iffieldundef{eventday}{}{\bibrangedash\printfield{eventday}}}}% -}% -}{% -\iffieldundef{endyear}{}{\printtext{\mkbibparens{\printtext{\printfield{endyear}}% -\iffieldundef{endmonth}{}{\bibrangedash\thefield{endmonth}}% -\iffieldundef{endday}{}{\bibrangedash\printfield{endday}}}}% -}% -}}{% -\iffieldundef{year}{}{\printtext{\mkbibparens{\printtext{\printfield{year}}% -\iffieldundef{month}{}{\bibrangedash\thefield{month}}% -\iffieldundef{day}{}{\bibrangedash\printfield{day}}}}% -}}% -}% +\defversion{3.7}{date}{ + \DeclareFieldFormat{urldate}{##1} + \renewbibmacro*{urldate}{% + \addthinspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 + + \newbibmacro*{newsdate}{%%新增加一个新闻日期 + \blx@edtfdate{}{}% + } + + \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 + \iffieldundef{year}{% + \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{(}\printeventdate\printtext{)}}}% + {\printtext{(}\printenddate\printtext{)}}% + }{\iffieldequalstr{year}{}{%因为year存在,但为空 + }{\printtext{(}\blx@edtfdate{}{}\printtext{)}}% + }% + }% +} + +\defversion{3.10}{date}{ + \DeclareFieldFormat{urldate}{##1} + \renewbibmacro*{urldate}{% + \addthinspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 + + \newbibmacro*{newsdate}{%%新增加一个新闻日期 + \blx@isodate{}{}% + } + + \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 + \iffieldundef{year}{% + \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{(}\printeventdate\printtext{)}}}% + {\printtext{(}\printenddate\printtext{)}}% + }{\iffieldequalstr{year}{}{%因为year存在,但为空 + }{\printtext{(}\blx@isodate{}{}\printtext{)}}% + }% + }% +} + +\defversion{3.8}{dblang}{ + %为了实现v3.8以上版本的双语文献,采用related的方法代替set方法,因为set方法已经无法实现了, + %因为set不再复制其第一个成员的信息。于是定义一个命令,用于动态的修改数据,即添加related域的信息 + %其中使用了\DeclareStyleSourcemap,但由于其只能出现在导言区中,因此\defdoublelangentry命令也只能出现在导言区中 + \newcommand{\defdoublelangentry}[2]{% + \edef\entrykeya{##1} + \edef\entrykeyb{##2} + \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map{ + \step[fieldsource=entrykey, match=\entrykeya, final] + \step[fieldset=related, fieldvalue=\entrykeyb] + } + } + } + } +} + +\iftoggle{iftlfive}%%根据texlive/biblatex版本选择 + {\switchversion{3.4}{date}}% + {\iftoggle{iftlsix}% + {\switchversion{3.4}{date}}% + {\iftoggle{iftlnine}% + {\switchversion{3.10}{date}}%biblatex3.10版 + {\switchversion{3.7}{date}}% + }% + } + +\iftoggle{iftlnine} + {\switchversion{3.8}{dblang}} + {\iftoggle{iftleight} + {\switchversion{3.8}{dblang}} + {} + } + +\renewcommand{\relateddelim}{\adddot\newline\nobreak}%\par + +\renewbibmacro*{related}{% + \ifboolexpr{ test {\iffieldundef{related}} or test {\ifrelatedloop} } + {} + {\usebibmacro{begrelated}% + \def\bbx@tempa{}% + \setcounter{bbx:relatedtotal}{0}% + \def\do##1{% + \entrydata{##1}{% + \ifrelatedloop + {} + {\stepcounter{bbx:relatedtotal}% + \gappto{\bbx@tempa}{##1,}}}}% + \docsvfield{related}% + \restorefield{related}{\bbx@tempa}% + \ifnumgreater{\value{bbx:relatedtotal}}{0} + {\listcsxadd{bbx:relatedloop}{\strfield{entrykey}}% + \iffieldundef{clonesourcekey} + {} + {\listcsxadd{bbx:relatedloop}{\strfield{clonesourcekey}}}% + \setcounter{bbx:relatedcount}{0}% + \def\do{% + \stepcounter{bbx:relatedcount}% + \ifnumgreater{\value{bbx:relatedcount}}{0} + {\ifcsundef{relateddelim\strfield{relatedtype}} + {\printtext{\relateddelim}} + {\printtext{\csuse{relateddelim\strfield{relatedtype}}}}} + {}}% + \ifbibmacroundef{related:\strfield{relatedtype}} + {\appto{\do}{\usebibmacro{related:default}}} + {\appto{\do}{\usebibmacro*{related:\strfield{relatedtype}}}}% + \iffieldformatundef{related:\strfield{relatedtype}} + {\def\bbx@tempa{related}} + {\def\bbx@tempa{related:\strfield{relatedtype}}}% + \iffieldformatundef{relatedstring:\strfield{relatedtype}} + {\def\bbx@tempb{relatedstring:default}} + {\def\bbx@tempb{relatedstring:\strfield{relatedtype}}}% + \printtext[\bbx@tempa]{% + \usebibmacro{begrelatedloop}% + \iffieldundef{relatedstring} + {\ifboolexpr{ + test {\ifnumgreater{\value{bbx:relatedtotal}}{1}} + and + test {\ifbibxstring{\thefield{relatedtype}s}} + } + {\printtext[\bbx@tempb]{% + \bibstring[\mkrelatedstring]{\thefield{relatedtype}s}}} + {\iffieldbibstring{relatedtype} + {\printtext[\bbx@tempb]{% + \bibstring[\mkrelatedstring]{\thefield{relatedtype}}}} + {}}} + {\iffieldbibstring{relatedstring} + {\printtext[\bbx@tempb]{% + \bibstring[\mkrelatedstring]{\thefield{relatedstring}}}} + {\printfield[\bbx@tempb]{relatedstring}}}% + \docsvfield{related}% + \usebibmacro{endrelatedloop}}}% + {}% + \usebibmacro{endrelated}}} %调整doi+eprint+url格式,源来自standard.bbx %因为页码后面直接跟引用日期,没有标点所以去掉其中的标点。 @@ -830,7 +964,7 @@ backrefpages = {引用页:}, %新增一个样式用于输出连续出版物的地址,单位,时间,%类似\newbibmacro*{publisher+location+date} \newbibmacro*{location+institution+date}{% \iftoggle{bbx:gbpub}% -{\testCJKfirst{\thefield{title}} +{\testCJKfirst{\thefield{userd}} \iflistundef{location}{\iftoggle{ifCJKforgbt}{\printtext{[出版地不详]}}{\printtext{[S.l.\adddot]}}}% {\printlist{location}}% % \iflistundef{institution} @@ -858,21 +992,17 @@ backrefpages = {引用页:}, \newunit}% } - \renewbibmacro*{publisher+location+date}{% \iftoggle{bbx:gbpub}% -{\testCJKfirst{\thefield{title}}% -%\testifnoteeqstd% +{\testCJKfirst{\thefield{userd}}% \iflistundef{location}{%\adddot -\iffieldequalstr{note}{standard}{}{%从gbt7714-2015标准低19页看到,标准存在出版项时输出,没有时完全省略。 -%\iftoggle{ifnoteeqstandard}{}{%}替换为上一句,尽可能用biblatex提供的函数 +\iffieldequalstr{note}{standard}{}{%从gbt7714-2015标准第19页看到,标准存在出版项时输出,没有时完全省略。 \iftoggle{ifCJKforgbt}{\printtext{[出版地不详]}\addcolon\addspace}{\printtext{[S.l.\adddot]}\addcolon\addspace}% }}% \bibstring{noaddress} {\printlist{location}\addcolon\addspace}% %\addcolon\addspace% \iflistundef{publisher}{% \iffieldequalstr{note}{standard}{}{% -%\iftoggle{ifnoteeqstandard}{}{%}替换为上一句,尽可能用biblatex提供的函数 \iftoggle{ifCJKforgbt}{\printtext{[出版者不详]}\setunit{\adddot\addspace}\setunit*{\addcomma\addspace}}% {\printtext{\mkbibbrackets{s.n.}}\setunit{\adddot\addspace}\setunit*{\addcomma\addspace}}% }}% @@ -894,7 +1024,7 @@ backrefpages = {引用页:}, %对edition版本信息做出修改,源来自biblatex.DEF \DeclareFieldFormat{edition}{% -\testCJKfirst{\thefield{title}}% +\testCJKfirst{\thefield{userd}}% \iftoggle{ifCJKforgbt}% {\ifinteger{#1}% {\printtext{#1版}}% @@ -905,7 +1035,7 @@ backrefpages = {引用页:}, %对version的版本信息做出修改,源来自biblatex.DEF \DeclareFieldFormat{version}{% -\testCJKfirst{\thefield{title}}% +\testCJKfirst{\thefield{userd}}% \ifinteger{#1}% {\iftoggle{ifCJKforgbt}{\printtext{#1版}}% {\mkbibordedition{#1}~\bibstring{version}}}% @@ -940,12 +1070,6 @@ backrefpages = {引用页:}, \iffieldundef{note}{\usebibmacro{date}}%判断一下,是否是报纸 {\iffieldequalstr{note}{news}{\usebibmacro{newsdate}}%判断是否为报纸 {\usebibmacro{date}}% -% \def\comparetmp{news}\edef\comparetmpb{\thefield{note}}% -% \ifx\comparetmp\comparetmpb% -% \usebibmacro{newsdate}% -% \else% -% \usebibmacro{date}% -% \fi }}% {\printfield{issue}% \setunit*{\addspace}% @@ -953,19 +1077,12 @@ backrefpages = {引用页:}, \iffieldundef{note}{\usebibmacro{date}}%判断一下,是否是报纸 {\iffieldequalstr{note}{news}{\usebibmacro{newsdate}}%判断是否为报纸 {\usebibmacro{date}}% -% \def\comparetmp{news}\edef\comparetmpb{\thefield{note}}% -% \ifx\comparetmp\comparetmpb% -% \usebibmacro{newsdate}% -% \else% -% \usebibmacro{date}% -% \fi }}}% %\newunit } %调整期刊卷和期的格式,源来自standard.bbx \renewbibmacro*{volume+number+eid}{% -%\ifnumerals{\thefield{volume}}{htruei}{hfalsei} \printfield{volume}% %\setunit*{\adddot}%去掉点号 %\printfield{number}% @@ -1073,16 +1190,16 @@ backrefpages = {引用页:}, \bibrangedash% \iffieldundef{endyear}{}{\printfield{endyear}\printtext{\mkbibparens{\multinumbersecond}}}% }% - {\gbt@parse@range{\thefield{volume}}% + {\multivolparser{\thefield{volume}}% \printfield{year}% \setunit{\addcomma\space}%将冒号修改为逗号 - \printtext{\gbt@range@first}% + \printtext{\multivolfirst}% \printtext{\mkbibparens{\multinumberfirst}}% \bibrangedash% \iffieldundef{endyear}{}{% \printfield{endyear}% \setunit{\addcomma\space}%将冒号修改为逗号 - \printtext{\gbt@range@second}% + \printtext{\multivolsecond}% \printtext{\mkbibparens{\multinumbersecond}}}% }% \setunit{\addcomma\space}% @@ -1258,8 +1375,7 @@ backrefpages = {引用页:}, %\setunit{\labelnamepunct}\newblock \usebibmacro{title}% %\nopunct -%\iffieldundef{booktitle}{\adddot\addspace}{%兼容standard时,如果standard没有booktitle的应转换为book类,因为都转成inbook类,所以这里做如下处理 -\printtext{\texttt{//}\addnbthinspace}%%\texttt{//} +\printtext{\texttt{//}\addthinspace}%%\texttt{//}\addnbthinspace \usebibmacro{bybookauthor}% \ifnameundef{bookauthor}{\newblock}{\newunit\newblock}%替换下一句 %\newunit\newblock @@ -1551,7 +1667,6 @@ backrefpages = {引用页:}, \usebibmacro{finentry}} %直接利用report做unpublished -%\DeclareBibliographyDriver{report}{% \DeclareBibliographyDriver{unpublished}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% @@ -1663,7 +1778,7 @@ backrefpages = {引用页:}, {\setunit{\labelnamepunct}\newblock}% %\setunit{\labelnamepunct}\newblock \usebibmacro{title}% -\printtext{\texttt{//}\addnbthinspace}%似乎顶格加百分号可以避免一些不必要的空格加入,特别是这种直接处理的语句前后 +\printtext{\texttt{//}\addthinspace}%似乎顶格加百分号可以避免一些不必要的空格加入,特别是这种直接处理的语句前后 \usebibmacro{bybookauthor}% \ifnameundef{bookauthor}{\newblock}{\newunit\newblock}%替换下一句 %\newunit\newblock @@ -1717,7 +1832,7 @@ backrefpages = {引用页:}, % \usebibmacro{byauthor}% % \newunit\newblock %\usebibmacro{in:}% - \printtext{\texttt{//}\addnbthinspace}%似乎顶格加百分号可以避免一些不必要的空格加入,特别是这种直接处理的语句前后 + \printtext{\texttt{//}\addthinspace}%似乎顶格加百分号可以避免一些不必要的空格加入,特别是这种直接处理的语句前后 \usebibmacro{bybookauthor}%用类似inbook的方式处理 \ifnameundef{bookauthor}{\newblock}{\newunit\newblock}%替换下一句 %\newunit\newblock diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.cbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.cbx index 7d022f84d87..23a1cc08434 100644 --- a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.cbx +++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.cbx @@ -4,19 +4,15 @@ %% GBT7714-2015 citation style,numerical sequence %% Maintained by huzhenzhen %% history: -%% 2016/05/20 v1.0 -%% 2016/10/23 v1.0a -%% 2016/11/11 v1.0b -%% 2016/11/14 v1.0c -%% 2016/11/24 v1.0d -%% 2016/12/07 v1.0e -%% 2017/02/26 v1.0g -%% 2017/04/11 v1.0h +%% 2016/05/20 v1.0 2016/10/23 v1.0a 2016/11/11 v1.0b +%% 2016/11/14 v1.0c 2016/11/24 v1.0d 2016/12/07 v1.0e +%% 2017/02/26 v1.0g 2017/04/11 v1.0h +%% 2017/11/21 v1.0i %% E-mail: hzzmail@163.com %% Released under the LaTeX Project Public License v1.3c or later %% --------------------------------------------------------------- %% -\ProvidesFile{gb7714-2015.cbx}[2017/04/11 v1.0h biblatex citation style] +\ProvidesFile{gb7714-2015.cbx}[2017/11/21 v1.0i biblatex citation style] \RequireCitationStyle{numeric-comp} %\RequireCitationStyle{numeric} diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx index d4572f9e8dd..24ab3e1650b 100644 --- a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx +++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx @@ -4,19 +4,15 @@ %% GBT7714-2015 bibliography style,author year sequence %% Maintained by huzhenzhen %% history: -%% 2016/05/20 v1.0 -%% 2016/10/23 v1.0a -%% 2016/11/11 v1.0b -%% 2016/11/14 v1.0c -%% 2016/11/24 v1.0d -%% 2016/12/07 v1.0e -%% 2016/12/31 v1.0f -%% 2017/02/26 v1.0g +%% 2016/05/20 v1.0 2016/10/23 v1.0a 2016/11/11 v1.0b +%% 2016/11/14 v1.0c 2016/11/24 v1.0d 2016/12/07 v1.0e +%% 2017/02/26 v1.0g 2017/04/11 v1.0h +%% 2017/11/21 v1.0i %% E-mail: hzzmail@163.com %% Released under the LaTeX Project Public License v1.3c or later %% --------------------------------------------------------------- %% -\ProvidesFile{gb7714-2015ay.bbx}[2017/02/26 v1.0g biblatex bibliography style] +\ProvidesFile{gb7714-2015ay.bbx}[2017/11/21 v1.0i biblatex bibliography style] %===================================================================== %===================================================================== @@ -28,18 +24,37 @@ %===================================================================== %===================================================================== -%增加一些功能函数 +%新增功能函数 %===================================================================== -\providetoggle{iftexlivesix} -\providetoggle{iftexliveseven} -%版本判断,根据biblatex更新历史可知,版本3.3开始使用新的姓名机制 -%所以当版本大于3.2开始,就用设置\toggletrue{iftexlivesix} -\def\numparserta#1.#2\relax{#1}%注意relax的重要性 -\def\numparsertb#1.#2\relax{#2} -\def\numinteger{\expandafter\numparserta\abx@version\relax} -\def\numdigital{\expandafter\numparsertb\abx@version\relax} -\ifnumcomp{\numdigital}{>}{2}{\toggletrue{iftexlivesix}}{\togglefalse{iftexlivesix}} -\ifnumcomp{\numdigital}{>}{6}{\toggletrue{iftexliveseven}}{\togglefalse{iftexliveseven}} + %版本判断 + \providetoggle{iftlfive}%用于处理biblatex3.2之前的版本,即texlive2015以下版本中的biblatex + \providetoggle{iftlsix}%用于处理biblatex3.3开始改变的新的姓名机制后版本,包括 + \providetoggle{iftlseven}%用于处理biblatex3.7的兼容性 + \providetoggle{iftleight}%用于处理>=biblatex3.8的兼容性 + \providetoggle{iftlnine}%用于处理>=biblatex3.10的兼容性 + \StrBefore{\abx@version}{.}[\numinteger] + \StrBehind{\abx@version}{.}[\numdigital] + \IfInteger{\numdigital}{}{\StrGobbleRight{\numdigital}{1}[\numdigital]} + %2.x版本统一用iftlfive=true表示 + %3.0-3.2版本用iftlfive=true表示 + %3.3-3.6版本用iftlsix=true表示 + %3.7版本用iftlseven=true表示 + %>3.8版本用iftleight=true表示 + \ifnumcomp{\numinteger}{=}{3}{ + \ifnumcomp{\numdigital}{>}{2}{\toggletrue{iftlsix}\togglefalse{iftlfive}}{\togglefalse{iftlsix}\toggletrue{iftlfive}} + \ifnumcomp{\numdigital}{>}{6}{\toggletrue{iftlseven}\togglefalse{iftlsix}}{\togglefalse{iftlseven}} + \ifnumcomp{\numdigital}{>}{7}{\toggletrue{iftleight}\togglefalse{iftlseven}}{\togglefalse{iftleight}} + \ifnumcomp{\numdigital}{>}{9}{\toggletrue{iftlnine}\togglefalse{iftleight}}{\togglefalse{iftlnine}} + }{\ifnumcomp{\numinteger}{>}{3}{ + \toggletrue{iftleight}\blx@warning@noline{% + biblatex version is >= 4.x.\MessageBreak + if errors raised,Please contact biblatex-gb7714-2015 pkg author.}% + }{\toggletrue{iftlfive}\blx@warning@noline{% + biblatex version is <= 2.x.\MessageBreak + if errors raised,Please contact biblatex-gb7714-2015 pkg author.}% + }} + \newcommand\defversion[2]{\csdef{codeversion#1#2}}%定义不同版本的命令 + \newcommand\switchversion[2]{\csuse{codeversion#1#2}}%使用不同版本的命令 %定义判断中文字符的函数,用于判断作者等信息是否由中文字符构成 %2E00-2E7F 追加标点 @@ -51,7 +66,7 @@ %4E00-9FBF cjk统一表意符号 %中文范围4E00-9FA5 \providetoggle{ifCJKforgbt} -\def\testCJKfirstchar#1#2&{% +\def\testCJKfirstchar#1#2&{%#1#2& \ifnumgreater{`#1}{"2E7F}{\toggletrue{ifCJKforgbt}}{\togglefalse{ifCJKforgbt}}% }% @@ -59,143 +74,182 @@ %现在采用xstring方法,避免抽取的是编组符号 \def\testCJKfirst#1{% %\edef\tempa{#1}% +%\expandarg% \exploregroups% \StrChar{#1}{1}[\tempa]% \expandafter\testCJKfirstchar\tempa&} -%判断是否是标准 -%\providetoggle{ifnoteeqstandard} -%\def\testifnoteeqstd{% -%\iffieldundef{note}{\togglefalse{ifnoteeqstandard}}%判断一下,是否是报纸和标准 -% {\def\comparetmp{standard}\edef\comparetmpb{\thefield{note}}% -% \ifx\comparetmp\comparetmpb% -% \toggletrue{ifnoteeqstandard}% -% \else% -% \togglefalse{ifnoteeqstandard}% -% \fi}} -%\iffieldequalstr{note}{standard}{true}{false} %可以利用这一函数代替 - %用于解析连续出版物,2个卷期的情况 -\def\multivolumeparsetoparts#1/#2{\def\multivolumefirst{#1}\def\multivolumesecond{#2}} -%\def\multinumberparsetoparts#1/#2{\def\multinumberfirst{#1}\def\multinumbersecond{#2}} - -%这里利用李志奇的范围数据解析函数,修改后用来处理卷volume的范围。 -%他的这个函数是通用的,只能在使用数据前使用,如果多次使用前一次得到的数据就会被冲掉 -%这里的范围起止判断符号还是用-,而不是与date相同的/,因为有合期期刊的问题,需要用到/符号 -\def\gbt@parse@range#1{% - \edef\gbt@tmpa{#1}% - \expandafter\gbt@parse@rangei\gbt@tmpa-\@empty} -\def\gbt@parse@rangei#1-#2\@empty{% - \global\def\gbt@range@first{#1}% - \def\gbt@tmpa{#2}% - \ifx\gbt@tmpa\@empty% - \global\def\gbt@range@second{}% - \else% - \gbt@parse@rangeii#2\@empty% - \fi} -\def\gbt@parse@rangeii#1-#2\@empty{% - \def\gbt@tmpa{#2}% - \ifx\gbt@tmpa\@empty% - \global\def\gbt@range@second{#1}% - \else% - \gbt@parse@rangeii#2\@empty% - \fi} - -%这里写的number的解析函数,与上面的卷解析函数是类似的。 -\def\multinumberparser#1{% - \edef\gbnumbertmp{#1}% - \expandafter\multinumberparsetoparts\gbnumbertmp-\@empty} -\def\multinumberparsetoparts#1-#2\@empty{% - \def\multinumberfirst{#1}% - \def\gbnumbertmp{#2}% - \ifx\gbnumbertmp\@empty% - \def\multinumbersecond{}% - \else% - \multinumberparsetopartsb#2\@empty% - \fi} -\def\multinumberparsetopartsb#1-#2\@empty{% - \def\gbnumbertmp{#2}% - \ifx\gbnumbertmp\@empty% - \def\multinumbersecond{#1}% - \else% - \multinumberparsetopartsb#2\@empty% - \fi} - - +%范围起止间隔符号还是用-,而不是与date相同的/,因为有合期期刊的问题,需要用到/符号 +\newcommand{\multivolparser}[1]{% + \IfSubStr{#1}{-}% + {\StrBefore{#1}{-}[\multivolfirst]\StrBehind{#1}{-}[\multivolsecond]}% + {\def\multivolfirst{#1}\def\multivolsecond{}}% +} +\newcommand{\multinumberparser}[1]{% + \IfSubStr{#1}{-}% + {\StrBefore{#1}{-}[\multinumberfirst]\StrBehind{#1}{-}[\multinumbersecond]}% + {\def\multinumberfirst{#1}\def\multinumbersecond{}}% +} %===================================================================== %===================================================================== %设置宏包选项 %===================================================================== -\iftoggle{iftexlivesix}{%Alter settings that carry through from biblatex -%biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 - -%增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 -%因为在作者年制中,不需要使用,这里也增加,为了与顺序编码制的兼容性考虑。 -\DeclareBibliographyOption[string]{align}[right]{}% - -%增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 -\newtoggle{bbx:gbpub} -\DeclareBibliographyOption[boolean]{gbpub}[true]{% -%\settoggle{bbx:gbpub}{#1} %或采用下面这一句 - \ifstrequal{#1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} -\ExecuteBibliographyOptions{gbpub} - -%增加一个处理佚名或noauthor的控制选项 -\DeclareBibliographyOption[boolean]{gbnoauthor}[true]{% - \ifstrequal{#1}{false}{\dealnoathorfalse}{\dealnoathor}} -%\ExecuteBibliographyOptions{gbnoauthor=true}%对于需要展开较早(展开层级优先)的选项,这一执行无效,只能利用宏包加载时给出选项达到目的。 - -\ExecuteBibliographyOptions{ - useprefix = true, %名字的信息包括前缀 - %firstinits = true, %名字有缩写,参考3.1.2.3 Internal - giveninits = true, - date = year, %日期仅写到年 - %maxnames = 3 , %设置名字最大数量 - %minnames = 3, %设置缩减后的名字最小数量 - maxbibnames=3, %将文献列表和引用中最大名字数量区分开 - minbibnames=3, -}} -{%biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 -%增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 -%因为在作者年制中,不需要使用,这里也增加,为了与顺序年制的兼容性考虑。 -\DeclareBibliographyOption{align}[right]{}% - -%增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 -\newtoggle{bbx:gbpub} -\DeclareBibliographyOption{gbpub}[true]{% -%\settoggle{bbx:gbpub}{#1} %或采用下面这一句 - \ifstrequal{#1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} -\ExecuteBibliographyOptions{gbpub} - -%增加一个处理佚名或noauthor的控制选项 -\DeclareBibliographyOption{gbnoauthor}[true]{% - \ifstrequal{#1}{false}{\dealnoathorfalse}{\dealnoathor}} -%\ExecuteBibliographyOptions{gbnoauthor=true}%对于需要展开较早(展开层级优先)的选项,这一执行无效,只能用宏包加载时给出的选项。 - -\ExecuteBibliographyOptions{ - useprefix = true, %名字的信息包括前缀 - firstinits = true, %名字有缩写,参考3.1.2.3 Internal - date = year, %日期仅写到年 - %maxnames = 3 , %设置名字最大数量 - %minnames = 3, %设置缩减后的名字最小数量 - maxbibnames=3, %将文献列表和引用中最大名字数量区分开 - minbibnames=3, - %uniquename=init, -}} +\defversion{3.0}{opt}{ + %biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 + %增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 + %因为在作者年制中,不需要使用,这里也增加,为了与顺序年制的兼容性考虑。 + \DeclareBibliographyOption{align}[right]{}% + + %增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 + \newtoggle{bbx:gbpub} + \DeclareBibliographyOption{gbpub}[true]{% + %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 + \ifstrequal{##1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} + \ExecuteBibliographyOptions{gbpub} + + %增加一个处理佚名或noauthor的控制选项 + \DeclareBibliographyOption{gbnoauthor}[true]{% + \ifstrequal{##1}{false}{\dealnoathorfalse}{\dealnoathor}} + %\ExecuteBibliographyOptions{gbnoauthor=true}%对于需要展开较早(展开层级优先)的选项,这一执行无效,只能用宏包加载时给出的选项。 + + \ExecuteBibliographyOptions{ + useprefix = true, %名字的信息包括前缀 + firstinits = true, %名字有缩写,参考3.1.2.3 Internal + date = year, %日期仅写到年 + %maxnames = 3 , %设置名字最大数量 + %minnames = 3, %设置缩减后的名字最小数量 + maxbibnames=3, %将文献列表和引用中最大名字数量区分开 + minbibnames=3, + %uniquename=init, + } +} + +\defversion{3.4}{opt}{ + %Alter settings that carry through from biblatex + %biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 + + %增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 + %因为在作者年制中,不需要使用,这里也增加,为了与顺序编码制的兼容性考虑。 + \DeclareBibliographyOption[string]{align}[right]{}% + + %增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 + \newtoggle{bbx:gbpub} + \DeclareBibliographyOption[boolean]{gbpub}[true]{% + %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 + \ifstrequal{##1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} + \ExecuteBibliographyOptions{gbpub} + + %增加一个处理佚名或noauthor的控制选项 + \DeclareBibliographyOption[boolean]{gbnoauthor}[true]{% + \ifstrequal{##1}{false}{\dealnoathorfalse}{\dealnoathor}} + %\ExecuteBibliographyOptions{gbnoauthor=true}%对于需要展开较早(展开层级优先)的选项,这一执行无效,只能利用宏包加载时给出选项达到目的。 + + \ExecuteBibliographyOptions{ + useprefix = true, %名字的信息包括前缀 + %firstinits = true, %名字有缩写,参考3.1.2.3 Internal + giveninits = true, + date = year, %日期仅写到年 + %maxnames = 3 , %设置名字最大数量 + %minnames = 3, %设置缩减后的名字最小数量 + maxbibnames=3, %将文献列表和引用中最大名字数量区分开 + minbibnames=3, + %datezeros=true, + } +} + +\defversion{3.7}{opt}{ + %Alter settings that carry through from biblatex + %biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 + + %增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 + %因为在作者年制中,不需要使用,这里也增加,为了与顺序编码制的兼容性考虑。 + \DeclareBibliographyOption[string]{align}[right]{}% + + %增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 + \newtoggle{bbx:gbpub} + \DeclareBibliographyOption[boolean]{gbpub}[true]{% + %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 + \ifstrequal{##1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} + \ExecuteBibliographyOptions{gbpub} + + %增加一个处理佚名或noauthor的控制选项 + \DeclareBibliographyOption[boolean]{gbnoauthor}[true]{% + \ifstrequal{##1}{false}{\dealnoathorfalse}{\dealnoathor}} + %\ExecuteBibliographyOptions{gbnoauthor=true}%对于需要展开较早(展开层级优先)的选项,这一执行无效,只能利用宏包加载时给出选项达到目的。 + + \ExecuteBibliographyOptions{ + useprefix = true, %名字的信息包括前缀 + %firstinits = true, %名字有缩写,参考3.1.2.3 Internal + giveninits = true, + date = year, %日期仅写到年 + urldate =edtf, + eventdate =edtf, + %maxnames = 3 , %设置名字最大数量 + %minnames = 3, %设置缩减后的名字最小数量 + maxbibnames=3, %将文献列表和引用中最大名字数量区分开 + minbibnames=3, + %datezeros=true, + } +} + +\defversion{3.10}{opt}{ + %Alter settings that carry through from biblatex + %biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 + + %增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 + %因为在作者年制中,不需要使用,这里也增加,为了与顺序编码制的兼容性考虑。 + \DeclareBibliographyOption[string]{align}[right]{}% + + %增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 + \newtoggle{bbx:gbpub} + \DeclareBibliographyOption[boolean]{gbpub}[true]{% + %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 + \ifstrequal{##1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} + \ExecuteBibliographyOptions{gbpub} + + %增加一个处理佚名或noauthor的控制选项 + \DeclareBibliographyOption[boolean]{gbnoauthor}[true]{% + \ifstrequal{##1}{false}{\dealnoathorfalse}{\dealnoathor}} + %\ExecuteBibliographyOptions{gbnoauthor=true}%对于需要展开较早(展开层级优先)的选项,这一执行无效,只能利用宏包加载时给出选项达到目的。 + + \ExecuteBibliographyOptions{ + useprefix = true, %名字的信息包括前缀 + %firstinits = true, %名字有缩写,参考3.1.2.3 Internal + giveninits = true, + date = year, %日期仅写到年 + urldate =iso, + eventdate =iso, + %maxnames = 3 , %设置名字最大数量 + %minnames = 3, %设置缩减后的名字最小数量 + maxbibnames=3, %将文献列表和引用中最大名字数量区分开 + minbibnames=3, + %datezeros=true, + } +} + +\iftoggle{iftlfive} + {\switchversion{3.0}{opt}}%%当采用texlive2015以下版本时,biblatex3.0 + {\iftoggle{iftlsix}% + {\switchversion{3.4}{opt}}%%当采用texlive2016版本时,biblatex3.4 + {\iftoggle{iftlnine}% + {\switchversion{3.10}{opt}}%%当采用biblatex3.10以上版本时 + {\switchversion{3.7}{opt}}%%当采用biblatex3.4以上版本时 + } + } %===================================================================== %===================================================================== %设置本地化字符串 %===================================================================== -%新建一个当地化字符串,用来记录“等”字符 -\NewBibliographyString{andotherscn} -\NewBibliographyString{noaddress} -\NewBibliographyString{nopublisher} + %新建一个当地化字符串,用来记录“等”字符 + \NewBibliographyString{andotherscn} + \NewBibliographyString{noaddress} + \NewBibliographyString{nopublisher} -%直接利用当地化格式english进行修改一些中文的格式, -%具体可以修改哪些,参考english.lbx文件 +%直接利用当地化格式english进行修改一些中文的格式,具体可以修改哪些,参考english.lbx文件 %当然也可以增加比如上面定义的andotherscn %注意:在lbx文件和bbx文件中定义本地字符串的不同语法,两个参数和一个参数的区别 \DefineBibliographyStrings{english}{ @@ -214,7 +268,7 @@ backrefpages = {引用页:}, %===================================================================== %===================================================================== -%动态数据修改,修改输入的源文件数据,用于中文判断等 +%动态数据修改,修改输入的源文件数据,用于中文判断等操作 %===================================================================== %首先把作者和译者信息准确的记录到userf,usere中,用于后面判断是否是cjk字符。 %注意\DeclareSourcemap命令只能出现一次 @@ -229,6 +283,8 @@ backrefpages = {引用页:}, \step[fieldset=usera, fieldvalue={J}] \step[fieldsource=author] %有时会把author和editor混淆,这里处理后就没有这个问题 \step[fieldset=editor, origfieldval] + \step[fieldsource=publisher] %有时会把publisher和institution混淆,这里处理后就没有这个问题 + \step[fieldset=institution, origfieldval] } \map{ \pertype{newspaper}%增加一个新闻报纸的类型newspaper @@ -314,9 +370,17 @@ backrefpages = {引用页:}, \step[fieldset=userf, origfieldval] \step[fieldsource=translator] \step[fieldset=usere, origfieldval] - \step[fieldsource=year]%处理一些用year表示date的情况 + } + \map{%处理一些用year表示date的情况 + %这样处理将会设置date域,并使得labeldatesource变为空,因为date的前缀为空(如果是urldate,那么labeldatesource就是url)。 + %同时date域会被biblatex自动解析为year,month,day,并且覆盖原来的year信息 + \step[fieldsource=year] \step[fieldset=date, origfieldval] } + \map{%将title信息保存到userd中避免因为标签生成原因导致title域被清除 + \step[fieldsource=title, match=\regexp{([^\\\{])}] + \step[fieldset=userd, fieldvalue={$1}] + } \map{%将entrykey放入keywords中用于后期的使用 \step[fieldsource=entrykey] \step[fieldset=keywords, origfieldval] @@ -346,7 +410,7 @@ backrefpages = {引用页:}, \step[fieldset=userb,fieldvalue={en}] } %本来后面这些是放到DeclareStyleSourcemap中处理的,但是因为texlive2016的biblatex3.4不支持多个DeclareStyleSourcemap, - %但有处理特殊字符和处理gbnoauthor选项的需求,所以把这些提到这来,让后让这两个功能结合到一个DeclareStyleSourcemap时, + %但有处理特殊字符和处理gbnoauthor选项的需求,所以把这些提到这来,以后将这两个功能结合到一个DeclareStyleSourcemap时, %不用复制如下段代码了。 \map{%尝试未定义数据模型的newspaper类型映射为article,newspaper完全是针对gb7714的新类型,在biblatex中完全没有定义 %但从实践看,并没有什么影响,映射过来就可以了。 @@ -375,126 +439,126 @@ backrefpages = {引用页:}, } \def\dealnoathorfalse{ -\iftoggle{iftexlivesix}{ - \DeclareStyleSourcemap{ - \maps[datatype=bibtex]{ - \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,address,location,institution,organization}]{ - \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\#}, replace=\regexp{$1\\\#}] - } - \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,address,location,institution,organization}]{ - \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\%}, replace=\regexp{$1\\\%}] - } - \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,% - address,location,institution,organization}]{ - \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + \iftoggle{iftlfive}{ + \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map[overwrite]{%title,booktitle,journaltitle,journal,publisher,address,location,institution,organization + \step[fieldsource={title}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={booktitle}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={journaltitle}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={journal}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={publisher}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={address}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={location}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={institution}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={booktitle}, match=\regexp{([^\\])\#}, replace=\regexp{$1\\\#}] + } + \map[overwrite]{ + \step[fieldsource={booktitle}, match=\regexp{([^\\])\%}, replace=\regexp{$1\\\%}] + } } } - } -}{ - \DeclareStyleSourcemap{ - \maps[datatype=bibtex]{ - \map[overwrite]{%title,booktitle,journaltitle,journal,publisher,address,location,institution,organization - \step[fieldsource={title}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={booktitle}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={journaltitle}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={journal}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={publisher}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={address}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={location}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={institution}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={booktitle}, match=\regexp{([^\\])\#}, replace=\regexp{$1\\\#}] - } - \map[overwrite]{ - \step[fieldsource={booktitle}, match=\regexp{([^\\])\%}, replace=\regexp{$1\\\%}] + }{\DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,address,location,institution,organization}]{ + \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\#}, replace=\regexp{$1\\\#}] + } + \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,address,location,institution,organization}]{ + \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\%}, replace=\regexp{$1\\\%}] + } + \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,% + address,location,institution,organization}]{ + \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } } } } -}} +} \def\dealnoathor{ -\iftoggle{iftexlivesix}{ - \DeclareStyleSourcemap{ - \maps[datatype=bibtex]{ - \map{%默认情况下将空缺作者设置为佚名 - \step[fieldsource=userb,match={cn},final] - \step[fieldset=author, fieldvalue={佚名}] - } - \map{%默认情况下将空缺作者设置为佚名 - \step[fieldsource=userb,match={en},final] - \step[fieldset=author, fieldvalue={NOAUTHOR}] - } - \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,address,location,institution,organization}]{ - \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\#}, replace=\regexp{$1\\\#}] - } - \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,address,location,institution,organization}]{ - \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\%}, replace=\regexp{$1\\\%}] - } - \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,% - address,location,institution,organization}]{ - \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + \iftoggle{iftlfive}{ + \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map{%默认情况下将空缺作者设置为佚名 + \step[fieldsource=userb,match={cn},final] + \step[fieldset=author, fieldvalue={佚名}] + } + \map{%默认情况下将空缺作者设置为佚名 + \step[fieldsource=userb,match={en},final] + \step[fieldset=author, fieldvalue={NOAUTHOR}] + } + \map[overwrite]{%title,booktitle,journaltitle,journal,publisher,address,location,institution,organization + \step[fieldsource={title}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={booktitle}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={journaltitle}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={journal}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={publisher}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={address}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={location}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={institution}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + \map[overwrite]{ + \step[fieldsource={booktitle}, match=\regexp{([^\\])\#}, replace=\regexp{$1\\\#}] + } + \map[overwrite]{ + \step[fieldsource={booktitle}, match=\regexp{([^\\])\%}, replace=\regexp{$1\\\%}] + } } } - } -}{ - \DeclareStyleSourcemap{ - \maps[datatype=bibtex]{ - \map{%默认情况下将空缺作者设置为佚名 - \step[fieldsource=userb,match={cn},final] - \step[fieldset=author, fieldvalue={佚名}] - } - \map{%默认情况下将空缺作者设置为佚名 - \step[fieldsource=userb,match={en},final] - \step[fieldset=author, fieldvalue={NOAUTHOR}] - } - \map[overwrite]{%title,booktitle,journaltitle,journal,publisher,address,location,institution,organization - \step[fieldsource={title}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={booktitle}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={journaltitle}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={journal}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={publisher}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={address}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={location}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={institution}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={booktitle}, match=\regexp{([^\\])\#}, replace=\regexp{$1\\\#}] - } - \map[overwrite]{ - \step[fieldsource={booktitle}, match=\regexp{([^\\])\%}, replace=\regexp{$1\\\%}] + }{ \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map{%默认情况下将空缺作者设置为佚名 + \step[fieldsource=userb,match={cn},final] + \step[fieldset=author, fieldvalue={佚名}] + } + \map{%默认情况下将空缺作者设置为佚名 + \step[fieldsource=userb,match={en},final] + \step[fieldset=author, fieldvalue={NOAUTHOR}] + } + \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,address,location,institution,organization}]{ + \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\#}, replace=\regexp{$1\\\#}] + } + \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,address,location,institution,organization}]{ + \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\%}, replace=\regexp{$1\\\%}] + } + \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,% + address,location,institution,organization}]{ + \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } } } } -}} +} %===================================================================== @@ -502,38 +566,101 @@ backrefpages = {引用页:}, %设置排序格式 %===================================================================== %排序用降序或userb域 -\DeclareSortingScheme{nyt}{ - \sort{ - \field{presort} - } - \sort[final]{ - \field{sortkey} - } - \sort{ - \field{userb} - } - \sort{%[direction=descending] - \field{sortname} - \field{author} - \field{editor} - \field{translator} - \field{sorttitle} - \field{title} - } - \sort{ - \field{sortyear} - \field{year} - } - \sort{ - \field{sorttitle} - \field{title} - } - \sort{ - \field[padside=left,padwidth=4,padchar=0]{volume} - \literal{0000} - } +\defversion{3.7}{sort}{%这是3.4版的,3.7版略有差异,但不大,后面有注释 + \DeclareSortingScheme{nyt}{ + \sort{ + \field{presort} + } + \sort[final]{ + \field{sortkey} + } + \sort{ + \field{userb} + } + \sort{%[direction=descending] + \field{sortname} + \field{author} + \field{editor} + \field{translator} + \field{sorttitle} + \field{title} + } + \sort{ + \field{sortyear} + \field{year} + } + \sort{ + \field{sorttitle} + \field{title} + } + \sort{ + \field[padside=left,padwidth=4,padchar=0]{volume}%3.7版是\field{volume} + \literal{0000}%3.7版是\literal{0} + } + } +} + +\defversion{3.8}{sort}{ + \DeclareSortingTemplate{nyt}{ + \sort{ + \field{presort} + } + \sort[final]{ + \field{sortkey} + } + \sort{ + \field{userb} + } + \sort{%[direction=descending] + \field{sortname} + \field{author} + \field{editor} + \field{translator} + \field{sorttitle} + \field{title} + } + \sort{ + \field{sortyear} + \field{year} + } + \sort{ + \field{sorttitle} + \field{title} + } + \sort{ + \field{volume} + \literal{0} + } + } + + %为了实现v3.8以上版本的双语文献,采用related的方法代替set方法,因为set方法已经无法实现了, + %因为set不再复制其第一个成员的信息。于是定义一个命令,用于动态的修改数据,即添加related域的信息 + %其中使用了\DeclareStyleSourcemap,但由于其只能出现在导言区中,因此\defdoublelangentry命令也只能出现在导言区中 + \newcommand{\defdoublelangentry}[2]{% + \edef\entrykeya{##1} + \edef\entrykeyb{##2} + \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map{ + \step[fieldsource=entrykey, match=\entrykeya, final] + \step[fieldset=related, fieldvalue=\entrykeyb] + } + } + } + } } +\iftoggle{iftlfive} + {\switchversion{3.7}{sort}}%%当采用texlive2015以下版本时 + {\iftoggle{iftlsix}% + {\switchversion{3.7}{sort}}%%当采用texlive2016版本时 + {\iftoggle{iftlseven}% + {\switchversion{3.7}{sort}}%%当采用texlive2017版本时 + {\switchversion{3.8}{sort}}%%当采用biblatex3.8a以上版本时 + }% + } + + %===================================================================== %===================================================================== @@ -544,8 +671,8 @@ backrefpages = {引用页:}, {} {%\setlength{\leftmargin}{\bibhang}% %\setlength{\itemindent}{-\leftmargin}% - \setlength{\leftmargin}{0pt}% - \setlength{\itemindent}{0pt}% + \setlength{\leftmargin}{1em}% + \setlength{\itemindent}{-1em}% \setlength{\itemsep}{\bibitemsep}% \setlength{\parsep}{\bibparsep}}} {\endlist} @@ -556,31 +683,20 @@ backrefpages = {引用页:}, %===================================================================== %设置单元或块等的标点 %===================================================================== -%将名字简写后的点去掉 -%\renewrobustcmd*{\bibinitperiod}{\adddot} %来源biblatex2.STY -\renewrobustcmd*{\bibinitperiod}{} -%\newcommand*{\revsdnamepunct}{\addcomma} %来源biblatex.def -\renewcommand*{\revsdnamepunct}{} -%\newcommand*{\subtitlepunct}{\newunitpunct} %修改标题和其它标题信息间的标点 -\renewcommand*{\subtitlepunct}{\addcolon\space} %来源biblatex.def - -%关于双语言或多语言的参考文献,可以参考3.11.5 Entry Sets,4.11.1 Entry Sets -%这里调整一下两种语言参考文献的间隔 -%\renewcommand*{\entrysetpunct}{\addsemicolon\space}%源来自biblatex.def +\renewrobustcmd*{\bibinitperiod}{} %将名字简写后的点去掉%来源biblatex2.STY +\renewcommand*{\revsdnamepunct}{}%来源biblatex.def +\renewcommand*{\subtitlepunct}{\addcolon\space} %修改标题和其它标题信息间的标点%来源biblatex.def +%双语言或多语言的参考文献,可以参考3.11.5 Entry Sets,4.11.1 Entry Sets +%这里调整一下两种语言参考文献的间隔,%源来自biblatex.def \renewcommand*{\entrysetpunct}{\adddot\par\nobreak} - -%页码引用格式的修改 -%\newcommand*{\bibpagespunct}{\addcomma\space} -\renewcommand*{\bibpagespunct}{\addcolon\space}%修改为用冒号 - +\renewcommand*{\bibpagespunct}{\addcolon\addthinspace}%页码引用格式的修改%修改为用冒号 +%\renewcommand{\relateddelim}{}%\par %===================================================================== %===================================================================== %修改域的格式 %===================================================================== %新增文献类型标识符的格式 -%\DeclareFieldFormat{gbtypeflag}{\nobreak\mkbibbrackets{\nobreak#1}\nobreak} - \DeclareFieldFormat{gbtypeflag}{% \iftoggle{bbx:url}{\iffieldundef{url}%当存在url时,增加一个OL标识符 {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{]}}% @@ -600,147 +716,93 @@ backrefpages = {引用页:}, }{\nobreak\printtext{[}\nobreak S\printtext{]}\nobreak}} %重设title的输出格式,不加emph,原格式来自biblatex.def文件 -%\DeclareFieldFormat{journaltitle}{\mkbibemph{#1}} -%\DeclareFieldFormat{issuetitle}{\mkbibemph{#1}} -%\DeclareFieldFormat{maintitle}{\mkbibemph{#1}} -%\DeclareFieldFormat{title}{\mkbibemph{#1}} -%\DeclareFieldFormat{booktitle}{\mkbibemph{#1}} \DeclareFieldFormat{title}{#1\adddot\addthinspace} \DeclareFieldFormat{journaltitle}{#1\isdot}%添加\isdot,用于缩写名带点情况,将其转换为缩写点,便于标点的追踪 \DeclareFieldFormat{issuetitle}{#1} \DeclareFieldFormat{maintitle}{#1} \DeclareFieldFormat{booktitle}{#1} -%\DeclareFieldFormat[article,inbook,incollection,inproceedings,patent,thesis,unpublished] -% {title}{\mkbibquote{#1\isdot}} \DeclareFieldFormat%将期刊等文献的标题中原来带的引号去掉 [article,patent,thesis,unpublished] {title}{#1\adddot\addthinspace} \DeclareFieldFormat%将期刊等文献的标题中原来带的引号去掉 [inbook,incollection,inproceedings] {title}{#1\nopunct\unspace} +\DeclareFieldFormat{titlecase}{\MakeCapital#1}%重设标题格式,将其修改为首字母大写 + + +\defversion{3.0}{name}{ + %biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 + \renewbibmacro*{name:last-first}[4]{% + \ifuseprefix + {\usebibmacro{name:delim}{##3##1}% + \usebibmacro{name:hook}{##3##1}% + \ifblank{##3}{}{% + \ifcapital + {\mkbibnameprefix{\MakeCapital{##3}}\isdot} + {\mkbibnameprefix{##3}\isdot}% + \ifpunctmark{'}{}{\bibnamedelimc}}% + %\mkbibnamelast{#1}\isdot + \ifblank{##2}{\MakeCapital##1}{\mkbibnamelast{\MakeUppercase{##1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase + %注意上一句\MakeCapital后面如果再跟一个{}包含#1,则没有效果,可能是包在里面少了一层展开 + %因为机构名通常包括在{}内,所以要多展开一次才行,所以这里去掉#1外面的{} + %\mkbibnamelast{\MakeUppercase{#1}}\isdot + %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 + \ifblank{##2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamefirst{\MakeUppercase{##2}}\isdot}% + \ifblank{##4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{##4}\isdot}} + {\usebibmacro{name:delim}{##1}% + \usebibmacro{name:hook}{##1}% + %\mkbibnamelast{#1}\isdot %3.9.1 Generic Commands and Hooks,对姓重新处理,如下句: %\mkbibnamelast{\MakeUppercase{#1}} + \ifblank{##2}{\MakeCapital##1}{\mkbibnamelast{\MakeUppercase{##1}}}\isdot %大写,参考4.6.4 Miscellaneous Commands,\MakeUppercase %\MakeSentenceCase + %\mkbibnamelast{\MakeUppercase{#1}}\isdot + %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 + \ifblank{##2##3}{}{\revsdnamepunct}% + \ifblank{##2}{}{\bibnamedelimd\mkbibnamefirst{\MakeUppercase{##2}}\isdot}% + \ifblank{##3}{}{\bibnamedelimd\mkbibnameprefix{##3}\isdot}% + \addcomma\addspace% + \ifblank{##4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{##4}\isdot}% + } + } -%重设标题格式,将其修改为首字母大写 -%\DeclareFieldFormat{titlecase}{#1} -\DeclareFieldFormat{titlecase}{\MakeCapital#1} - -\iftoggle{iftexlivesix}{ -%biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 -\renewbibmacro*{name:given-family}[4]{%利用family-given定义given-family - \ifuseprefix - {\usebibmacro{name:delim}{#3#1}% - \usebibmacro{name:hook}{#3#1}% - \ifdefvoid{#3}{}{% - \ifcapital - {\mkbibnameprefix{\MakeCapital{#3}}\isdot} - {\mkbibnameprefix{#3}\isdot}% - \ifprefchar{}{\bibnamedelimc}}% - \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot - \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital{#2} - \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}} - {\usebibmacro{name:delim}{#1}% - \usebibmacro{name:hook}{#1}% - \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot - % - \ifboolexpe{% - test {\ifdefvoid{#2}} - and - test {\ifdefvoid{#3}}} - {} - {\revsdnamepunct}% - \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital{#2} - \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot} - \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}} - -\renewbibmacro*{name:family-given}[4]{%利用family-given定义given-family - \ifuseprefix - {\usebibmacro{name:delim}{#3#1}% - \usebibmacro{name:hook}{#3#1}% - \ifdefvoid{#3}{}{% - \ifcapital - {\mkbibnameprefix{\MakeCapital{#3}}\isdot} - {\mkbibnameprefix{#3}\isdot}% - \ifprefchar{}{\bibnamedelimc}}% - \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot - \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital{#2} - \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}} - {\usebibmacro{name:delim}{#1}% - \usebibmacro{name:hook}{#1}% - \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot - % - \ifboolexpe{% - test {\ifdefvoid{#2}} - and - test {\ifdefvoid{#3}}} - {} - {\revsdnamepunct}% - \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%%\MakeCapital{#2} - \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot} - \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}} - + \renewbibmacro*{name:first-last}[4]{% + \usebibmacro{name:last-first}{##1}{##2}{##3}{##4}} } -{%biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 -%作者名字的处理,参考文档4.2.3节,3.12.4 Name Parts and Name Spacing -\renewbibmacro*{name:last-first}[4]{% - \ifuseprefix - {\usebibmacro{name:delim}{#3#1}% - \usebibmacro{name:hook}{#3#1}% - \ifblank{#3}{}{% - \ifcapital - {\mkbibnameprefix{\MakeCapital{#3}}\isdot} - {\mkbibnameprefix{#3}\isdot}% - \ifpunctmark{'}{}{\bibnamedelimc}}% - %\mkbibnamelast{#1}\isdot - \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase - %注意上一句\MakeCapital后面如果再跟一个{}包含#1,则没有效果,可能是包在里面少了一层展开 - %因为机构名通常包括在{}内,所以要多展开一次才行,所以这里去掉#1外面的{} - %\mkbibnamelast{\MakeUppercase{#1}}\isdot - %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 - \ifblank{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamefirst{\MakeUppercase{#2}}\isdot}% - \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}} - {\usebibmacro{name:delim}{#1}% - \usebibmacro{name:hook}{#1}% - %\mkbibnamelast{#1}\isdot %3.9.1 Generic Commands and Hooks,对姓重新处理,如下句: %\mkbibnamelast{\MakeUppercase{#1}} - \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot %大写,参考4.6.4 Miscellaneous Commands,\MakeUppercase %\MakeSentenceCase - %\mkbibnamelast{\MakeUppercase{#1}}\isdot - %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 - \ifblank{#2#3}{}{\revsdnamepunct}% - \ifblank{#2}{}{\bibnamedelimd\mkbibnamefirst{\MakeUppercase{#2}}\isdot}% - \ifblank{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}% - \addcomma\addspace% - \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}% - }} - -\renewbibmacro*{name:first-last}[4]{% - \ifuseprefix - {\usebibmacro{name:delim}{#3#1}% - \usebibmacro{name:hook}{#3#1}% - \ifblank{#3}{}{% - \ifcapital - {\mkbibnameprefix{\MakeCapital{#3}}\isdot} - {\mkbibnameprefix{#3}\isdot}% - \ifpunctmark{'}{}{\bibnamedelimc}}% - %\mkbibnamelast{#1}\isdot - \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase - %注意上一句\MakeCapital后面如果再跟一个{}包含#1,则没有效果,可能是包在里面少了一层展开 - %因为机构名通常包括在{}内,所以要多展开一次才行,所以这里去掉#1外面的{} - %\mkbibnamelast{\MakeUppercase{#1}}\isdot - %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 - \ifblank{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamefirst{\MakeUppercase{#2}}\isdot}% - \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}} - {\usebibmacro{name:delim}{#1}% - \usebibmacro{name:hook}{#1}% - %\mkbibnamelast{#1}\isdot %3.9.1 Generic Commands and Hooks,对姓重新处理,如下句: %\mkbibnamelast{\MakeUppercase{#1}} - \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot %大写,参考4.6.4 Miscellaneous Commands,\MakeUppercase %\MakeSentenceCase - %\mkbibnamelast{\MakeUppercase{#1}}\isdot - %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 - \ifblank{#2#3}{}{\revsdnamepunct}% - \ifblank{#2}{}{\bibnamedelimd\mkbibnamefirst{\MakeUppercase{#2}}\isdot}% - \ifblank{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}% - \addcomma\addspace% - \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}% - }} + +\defversion{3.4}{name}{ + %biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 + \renewbibmacro*{name:given-family}[4]{%利用family-given定义given-family + \ifuseprefix + {\usebibmacro{name:delim}{##3##1}% + \usebibmacro{name:hook}{##3##1}% + \ifdefvoid{##3}{}{% + \ifcapital + {\mkbibnameprefix{\MakeCapital{##3}}\isdot} + {\mkbibnameprefix{##3}\isdot}% + \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}} + {\usebibmacro{name:delim}{##1}% + \usebibmacro{name:hook}{##1}% + \ifdefvoid{##2}{\mkbibnamefamily{\MakeCapital{##1}}}{\mkbibnamefamily{\MakeUppercase{##1}}}\isdot + % + \ifboolexpe{% + test {\ifdefvoid{##2}} + and + test {\ifdefvoid{##3}}} + {} + {\revsdnamepunct}% + \ifdefvoid{##2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{##2}}\isdot}%\MakeCapital + \ifdefvoid{##3}{}{\bibnamedelimd\mkbibnameprefix{##3}\isdot} + \ifdefvoid{##4}{}{\bibnamedelimd\mkbibnamesuffix{##4}\isdot}} + } + \renewbibmacro*{name:family-given}[4]{% + \usebibmacro{name:given-family}{##1}{##2}{##3}{##4}} } +\iftoggle{iftlfive}%根据texlive/biblatex版本选择 + {\switchversion{3.0}{name}}% + {\switchversion{3.4}{name}} + %重设title的输出,将文献类型标识符输出出去,原输出来自biblatex.def文件 \renewbibmacro*{title}{% \ifboolexpr{% @@ -760,16 +822,6 @@ backrefpages = {引用页:}, {\iffieldequalstr{note}{standard}{\printfield[gbtypeflags]{usera}}%判断是否为标准 {\iffieldequalstr{note}{news}{\printfield[gbtypeflagn]{usera}}%判断是否为报纸 {\printfield[gbtypeflag]{usera}}}%其它 -% \def\comparetmp{news}\def\comparetmpa{standard}\edef\comparetmpb{\thefield{note}}% -% \ifx\comparetmp\comparetmpb%判断是否为报纸 -% \printfield[gbtypeflagn]{usera}% -% \else% -% \ifx\comparetmpa\comparetmpb%判断是否为标准 -% \printfield[gbtypeflags]{usera}% -% \else% -% \printfield[gbtypeflag]{usera}% -% \fi% -% \fi% }% \iffieldundef{booktitle}{\newunit}{}%当title是析出时,不要标点 %\newunit @@ -777,11 +829,7 @@ backrefpages = {引用页:}, }% } -%url相关输出,源来自biblatex.def -%\DeclareFieldFormat{url}{\mkbibacro{URL}\addcolon\space\url{#1}} -\DeclareFieldFormat{url}{\url{#1}} %url域修改如本行 -%\DeclareFieldFormat{urldate}{\mkbibparens{\bibstring{urlseen}\space#1}} - +\DeclareFieldFormat{url}{\url{#1}} %url域修改如本行%url相关输出,源来自biblatex.def \renewbibmacro*{url+urldate}{% %\usebibmacro{url}%%更换url的位置,放到下面 \iffieldundef{urlyear}% @@ -789,41 +837,151 @@ backrefpages = {引用页:}, \usebibmacro{urldate}}% \setunit{\addperiod\addspace}% \usebibmacro{url}} - \renewbibmacro*{url}{\printfield{url}} -%\newbibmacro*{urldate}{\printurldate} %引用时间修改如下一行 -\renewbibmacro*{urldate}{% -\addspace\printtext{[}\printfield{urlyear}% -\iffieldundef{urlmonth}{}{\bibrangedash\printfield{urlmonth}}% -\iffieldundef{urlday}{}{\bibrangedash\printfield{urlday}}\printtext{]}} - -\newbibmacro*{newsdate}{%%新增加一个新闻日期 -\iffieldundef{year}{}{\printfield{year}% -\iffieldundef{month}{}{\bibrangedash\printtext{\thefield{month}}% -\iffieldundef{day}{}{\bibrangedash\printfield{day}}}} -}% -\newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示表示电子资源的更新和修改日期,而公告日期安按日期格式 -\iffieldundef{year}{% -\iffieldundef{endyear}{% -\iffieldundef{eventyear}{}{\printtext{\mkbibparens{\printtext{\printfield{eventyear}}% -\iffieldundef{eventmonth}{}{\bibrangedash\thefield{eventmonth}}% -\iffieldundef{eventday}{}{\bibrangedash\printfield{eventday}}}}% -}% -}{% -\iffieldundef{endyear}{}{\printtext{\mkbibparens{\printtext{\printfield{endyear}}% -\iffieldundef{endmonth}{}{\bibrangedash\thefield{endmonth}}% -\iffieldundef{endday}{}{\bibrangedash\printfield{endday}}}}% -}% -}}{% -\iffieldundef{year}{}{\printtext{\mkbibparens{\printtext{\printfield{year}}% -\iffieldundef{month}{}{\bibrangedash\thefield{month}}% -\iffieldundef{day}{}{\bibrangedash\printfield{day}}}}% -}}% -}% +\defversion{3.4}{date}{ + \renewbibmacro*{urldate}{% + \addthinspace\printtext{[}\printfield{urlyear}% + \iffieldundef{urlmonth}{}{\bibrangedash\printfield{urlmonth}}% + \iffieldundef{urlday}{}{\bibrangedash\printfield{urlday}}\printtext{]}} + + \newbibmacro*{newsdate}{%%新增加一个新闻日期 + \iffieldundef{year}{}{\printfield{year}% + \iffieldundef{month}{}{\bibrangedash\printtext{\thefield{month}}% + \iffieldundef{day}{}{\bibrangedash\printfield{day}}}}% + } + + \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 + \iffieldequalstr{year}{}{%替换\iffieldundef{year},因为year总是存在,但为空 + \iffieldundef{endyear}{% + \iffieldundef{eventyear}{}{\printtext{\mkbibparens{\printtext{\printfield{eventyear}}% + \iffieldundef{eventmonth}{}{\bibrangedash\thefield{eventmonth}}% + \iffieldundef{eventday}{}{\bibrangedash\printfield{eventday}}}}% + }% + }{% + \iffieldundef{endyear}{}{\printtext{\mkbibparens{\printtext{\printfield{endyear}}% + \iffieldundef{endmonth}{}{\bibrangedash\thefield{endmonth}}% + \iffieldundef{endday}{}{\bibrangedash\printfield{endday}}}}% + }% + }% + }% + {% + \iffieldundef{year}{}{\printtext{\mkbibparens{\printtext{\printfield{year}}% + \iffieldundef{month}{}{\bibrangedash\thefield{month}}% + \iffieldundef{day}{}{\bibrangedash\printfield{day}}}}% + }% + }% + }% +} + +\defversion{3.7}{date}{ + \DeclareFieldFormat{urldate}{##1} + \renewbibmacro*{urldate}{% + \addthinspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 + + \newbibmacro*{newsdate}{%%新增加一个新闻日期 + \blx@edtfdate{}{}% + } + + \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 + \iffieldundef{year}{% + \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{(}\printeventdate\printtext{)}}}% + {\printtext{(}\printenddate\printtext{)}}% + }{\iffieldequalstr{year}{}{%因为year存在,但为空 + }{\printtext{(}\blx@edtfdate{}{}\printtext{)}}% + }% + }% +} -%\DeclareFieldFormat{pages}{\mkpageprefix[bookpagination]{#1}}%页码引用格式的修改 -\DeclareFieldFormat{pages}{#1}%去掉前面引导页码的pp.等字符 +\defversion{3.10}{date}{ + \DeclareFieldFormat{urldate}{##1} + \renewbibmacro*{urldate}{% + \addthinspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 + + \newbibmacro*{newsdate}{%%新增加一个新闻日期 + \blx@isodate{}{}% + } + + \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 + \iffieldundef{year}{% + \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{(}\printeventdate\printtext{)}}}% + {\printtext{(}\printenddate\printtext{)}}% + }{\iffieldequalstr{year}{}{%因为year存在,但为空 + }{\printtext{(}\blx@isodate{}{}\printtext{)}}% + }% + }% +} + +\iftoggle{iftlfive}%%根据texlive/biblatex版本选择 + {\switchversion{3.4}{date}}% + {\iftoggle{iftlsix}% + {\switchversion{3.4}{date}}% + {\iftoggle{iftlnine}% + {\switchversion{3.10}{date}}%biblatex3.10版 + {\switchversion{3.7}{date}}% + }% + } + +\renewbibmacro*{related}{% + \ifboolexpr{ test {\iffieldundef{related}} or test {\ifrelatedloop} } + {} + {\usebibmacro{begrelated}% + \def\bbx@tempa{}% + \setcounter{bbx:relatedtotal}{0}% + \def\do##1{% + \entrydata{##1}{% + \ifrelatedloop + {} + {\stepcounter{bbx:relatedtotal}% + \gappto{\bbx@tempa}{##1,}}}}% + \docsvfield{related}% + \restorefield{related}{\bbx@tempa}% + \ifnumgreater{\value{bbx:relatedtotal}}{0} + {\listcsxadd{bbx:relatedloop}{\strfield{entrykey}}% + \iffieldundef{clonesourcekey} + {} + {\listcsxadd{bbx:relatedloop}{\strfield{clonesourcekey}}}% + \setcounter{bbx:relatedcount}{0}% + \def\do{% + \stepcounter{bbx:relatedcount}% + \ifnumgreater{\value{bbx:relatedcount}}{0} + {\ifcsundef{relateddelim\strfield{relatedtype}} + {\printtext{\relateddelim}} + {\printtext{\csuse{relateddelim\strfield{relatedtype}}}}} + {}}% + \ifbibmacroundef{related:\strfield{relatedtype}} + {\appto{\do}{\usebibmacro{related:default}}} + {\appto{\do}{\usebibmacro*{related:\strfield{relatedtype}}}}% + \iffieldformatundef{related:\strfield{relatedtype}} + {\def\bbx@tempa{related}} + {\def\bbx@tempa{related:\strfield{relatedtype}}}% + \iffieldformatundef{relatedstring:\strfield{relatedtype}} + {\def\bbx@tempb{relatedstring:default}} + {\def\bbx@tempb{relatedstring:\strfield{relatedtype}}}% + \printtext[\bbx@tempa]{% + \usebibmacro{begrelatedloop}% + \iffieldundef{relatedstring} + {\ifboolexpr{ + test {\ifnumgreater{\value{bbx:relatedtotal}}{1}} + and + test {\ifbibxstring{\thefield{relatedtype}s}} + } + {\printtext[\bbx@tempb]{% + \bibstring[\mkrelatedstring]{\thefield{relatedtype}s}}} + {\iffieldbibstring{relatedtype} + {\printtext[\bbx@tempb]{% + \bibstring[\mkrelatedstring]{\thefield{relatedtype}}}} + {}}} + {\iffieldbibstring{relatedstring} + {\printtext[\bbx@tempb]{% + \bibstring[\mkrelatedstring]{\thefield{relatedstring}}}} + {\printfield[\bbx@tempb]{relatedstring}}}% + \docsvfield{related}% + \usebibmacro{endrelatedloop}}}% + {}% + \usebibmacro{endrelated}}} + +\DeclareFieldFormat{pages}{#1}%页码引用格式的修改%去掉前面引导页码的pp.等字符 %调整doi+eprint+url格式,源来自standard.bbx %因为页码后面直接跟引用日期,没有标点所以去掉其中的标点。 @@ -854,10 +1012,7 @@ backrefpages = {引用页:}, %对edition版本信息做出修改,源来自biblatex.DEF \DeclareFieldFormat{edition}{% -%\testCJKfirst{\thefield{title}}% -\iffieldundef{title}{}{\testCJKfirst{\thefield{title}}}% -%直接用title不行?可能是需要在该句后面在加一个{},在展开的时候需要。 -%\testCJKfirst{\thefield{title}} %直接用这句不行,原因不明 +\iffieldundef{title}{}{\testCJKfirst{\thefield{userd}}}% \ifinteger{#1}% {\iftoggle{ifCJKforgbt}{\printtext{#1版}}% {\mkbibordedition{#1}~\bibstring{edition}}}% @@ -865,13 +1020,13 @@ backrefpages = {引用页:}, %对version的版本信息做出修改,源来自biblatex.DEF \DeclareFieldFormat{version}{% -\iffieldundef{title}{}{\testCJKfirst{\thefield{title}}}% +\iffieldundef{title}{}{\testCJKfirst{\thefield{userd}}}% \ifinteger{#1}% {\iftoggle{ifCJKforgbt}{\printtext{#1版}}% {\mkbibordedition{#1}~\bibstring{version}}}% {#1\isdot}} -\renewbibmacro*{author}{% +\renewbibmacro*{author}{%author for biblatex version <=3.7 \ifboolexpr{ test \ifuseauthor and @@ -897,34 +1052,73 @@ backrefpages = {引用页:}, \usebibmacro{date+extrayear} } - +%设置标注和文献表中作者和年份之间的分隔符 + \DeclareDelimFormat{nameyeardelim}{\addcomma\space} %设置因为mergedate默认为true时的情况,来自\bbx@opt@mergedate@compact %去掉作者后面包围年份的圆括号 -%这里因为biblatex版本的不同,做不同的处理,texlive2017版的在iftexliveseven=true中设置 -%2016等低版本的在iftexliveseven=false中设置 -%当然其实这还有更简单的解决方法就是: -% \let\printdateextralabel=\printlabeldateextra -%只是这里为了清楚区分才用判断的方式。 +%这里因为biblatex版本的不同,做不同的处理,texlive2017版/2016等低版本分开处理 %重设date+extrayear格式,源来自authoryear.BBX -\iftoggle{iftexliveseven}{% +\defversion{3.4}{dateextra}{ + \renewbibmacro*{date+extrayear}{% + \iffieldundef{\thefield{datelabelsource}year} + {} + {\printtext{%[parens]%这里把括号去掉 + \iffieldsequal{year}{\thefield{datelabelsource}year} + {\printdateextralabel}% + {\printfield{labelyear}% + \printfield{extrayear}}}}}% +} +\defversion{3.7}{dateextra}{ \renewbibmacro*{date+extrayear}{% \iffieldundef{labelyear} {} - {\printtext{%[parens]%这里把括号去掉 + {\printtext[parens]{% \iffieldsequal{year}{labelyear} {\printlabeldateextra}% {\printfield{labelyear}% \printfield{extrayear}}}}}% -}{% -\renewbibmacro*{date+extrayear}{% - \iffieldundef{\thefield{datelabelsource}year} +} +\defversion{3.8}{dateextra}{ +\renewbibmacro*{author}{%以前的date+extrayear变为date+extradate,所以对3.8以上版本重定义一下author + \ifboolexpr{ + test \ifuseauthor + and + not test {\ifnameundef{author}} + } + {\usebibmacro{bbx:dashcheck} + {%\bibnamedash %去掉相同作者用横线代替的处理 + \printnames{author}% + } + {\usebibmacro{bbx:savehash}% + \printnames{author}% + \iffieldundef{authortype} + {\setunit{\printdelim{nameyeardelim}}} + {\setunit{\printdelim{authortypedelim}}}}% + \iffieldundef{authortype} + {} + {\usebibmacro{authorstrg}% + \setunit{\printdelim{nameyeardelim}}}}% + {\global\undef\bbx@lasthash + \usebibmacro{labeltitle}% + \setunit*{\printdelim{nonameyeardelim}}}% + \usebibmacro{date+extradate}} + \renewbibmacro*{date+extradate}{% + \iffieldundef{labelyear} {} - {\printtext{%[parens]%这里把括号去掉 - \iffieldsequal{year}{\thefield{datelabelsource}year} - {\printdateextralabel}% - {\printfield{labelyear}% - \printfield{extrayear}}}}}% + {\printtext{%[parens]%这里去掉括号 + \iflabeldateisdate + {\printdateextra} + {\printlabeldateextra}}}}% } +\iftoggle{iftlfive}%%根据texlive/biblatex版本选择 + {\switchversion{3.4}{dateextra}}% + {\iftoggle{iftlsix}% + {\switchversion{3.4}{dateextra}}% + {\iftoggle{iftlseven}% + {\switchversion{3.7}{dateextra}}% + {\switchversion{3.8}{dateextra}}% + }% + } %修改译者位置格式,bytranslator+others原格式来自biblatex.def文件 \renewbibmacro*{bytranslator+others}{% @@ -947,7 +1141,8 @@ backrefpages = {引用页:}, test \ifmorenames } {%这里做一个判断是在处理author还是translator用于两者是不同语言的情况 - \ifcurrentname{translator}{\testCJKfirst{\thefield{usere}}}{\testCJKfirst{\thefield{userf}}}% + \ifcurrentname{translator}{\iffieldundef{usere}{\togglefalse{ifCJKforgbt}}{\testCJKfirst{\thefield{usere}}}}% + {\iffieldundef{usere}{\togglefalse{ifCJKforgbt}}{\testCJKfirst{\thefield{userf}}}}% %这句判断如果放到\andothersdelim后面会在等或etc.前增加一个空格,所以放前面 \ifnumgreater{\value{liststop}}{1} {\finalandcomma} @@ -964,7 +1159,7 @@ backrefpages = {引用页:}, %新增一个样式用于输出连续出版物的地址,单位,时间,%类似\newbibmacro*{publisher+location+date} \newbibmacro*{location+institution+date}{% \iftoggle{bbx:gbpub}% -{\testCJKfirst{\thefield{title}} +{\testCJKfirst{\thefield{userd}} \iflistundef{location}{\iftoggle{ifCJKforgbt}{\printtext{[出版地不详]}}{\printtext{[S.l.\adddot]}}}% {\printlist{location}}% % \iflistundef{institution} @@ -994,18 +1189,15 @@ backrefpages = {引用页:}, \renewbibmacro*{publisher+location+date}{% \iftoggle{bbx:gbpub}% -{\testCJKfirst{\thefield{title}}% -%\testifnoteeqstd% +{\testCJKfirst{\thefield{userd}}% \iflistundef{location}{%\adddot \iffieldequalstr{note}{standard}{}{%从gbt7714-2015标准第19页看到,标准存在出版项时输出,没有时完全省略。 -%\iftoggle{ifnoteeqstandard}{}{%}替换为上一句,尽可能用biblatex提供的函数 \iftoggle{ifCJKforgbt}{\printtext{[出版地不详]}\addcolon\addspace}{\printtext{[S.l.\adddot]}\addcolon\addspace}% }}% \bibstring{noaddress} {\printlist{location}\addcolon\addspace}% %\addcolon\addspace% \iflistundef{publisher}{% \iffieldequalstr{note}{standard}{}{% -%\iftoggle{ifnoteeqstandard}{}{%}替换为上一句,尽可能用biblatex提供的函数 \iftoggle{ifCJKforgbt}{\printtext{[出版者不详]}\setunit{\adddot\addspace}\setunit*{\addcomma\addspace}}% {\printtext{\mkbibbrackets{s.n.}}\setunit{\adddot\addspace}\setunit*{\addcomma\addspace}}% }}% @@ -1162,16 +1354,16 @@ backrefpages = {引用页:}, \bibrangedash% \iffieldundef{endyear}{}{\printfield{endyear}\printtext{\mkbibparens{\multinumbersecond}}}% }% - {\gbt@parse@range{\thefield{volume}}% + {\multivolparser{\thefield{volume}}% \printfield{year}% \setunit{\addcomma\space}%将冒号修改为逗号 - \printtext{\gbt@range@first}% + \printtext{\multivolfirst}% \printtext{\mkbibparens{\multinumberfirst}}% \bibrangedash% \iffieldundef{endyear}{}{% \printfield{endyear}% \setunit{\addcomma\space}%将冒号修改为逗号 - \printtext{\gbt@range@second}% + \printtext{\multivolsecond}% \printtext{\mkbibparens{\multinumbersecond}}}% }% \setunit{\addcomma\space}% @@ -1301,7 +1493,7 @@ backrefpages = {引用页:}, % \usebibmacro{byauthor}% % \newunit\newblock % \usebibmacro{in:}% - \printtext{\texttt{//}\addnbthinspace}% + \printtext{\texttt{//}\addthinspace}% \usebibmacro{bybookauthor}% \ifnameundef{bookauthor}{}{\newunit\newblock}%替换下一句 %\newunit\newblock @@ -1408,7 +1600,7 @@ backrefpages = {引用页:}, % \usebibmacro{byauthor}% % \newunit\newblock % \usebibmacro{in:}% - \printtext{\texttt{//}\addnbthinspace}% + \printtext{\texttt{//}\addthinspace}% \usebibmacro{bybookauthor}% \ifnameundef{bookauthor}{}{\newunit\newblock}%替换下一句 %\newunit\newblock @@ -1792,7 +1984,7 @@ backrefpages = {引用页:}, % \usebibmacro{byauthor}% % \newunit\newblock %\usebibmacro{in:}% - \printtext{\texttt{//}\addnbthinspace}%似乎顶格加百分号可以避免一些不必要的空格加入,特别是这种直接处理的语句前后 + \printtext{\texttt{//}\addthinspace}%似乎顶格加百分号可以避免一些不必要的空格加入,特别是这种直接处理的语句前后 \usebibmacro{bybookauthor}%用类似inbook的方式处理 \ifnameundef{bookauthor}{}{\newunit\newblock}%替换下一句 %\newunit\newblock diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.cbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.cbx index 05b2ff256fa..035877308e1 100644 --- a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.cbx +++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.cbx @@ -4,36 +4,64 @@ %% GBT7714-2015 citation style,author year sequence %% Maintained by huzhenzhen %% history: -%% 2016/05/20 v1.0 -%% 2016/10/23 v1.0a -%% 2016/11/11 v1.0b -%% 2016/11/14 v1.0c -%% 2016/11/24 v1.0d -%% 2016/12/07 v1.0e -%% 2017/02/26 v1.0g -%% 2017/04/11 v1.0h +%% 2016/05/20 v1.0 2016/10/23 v1.0a 2016/11/11 v1.0b +%% 2016/11/14 v1.0c 2016/11/24 v1.0d 2016/12/07 v1.0e +%% 2017/02/26 v1.0g 2017/04/11 v1.0h +%% 2017/11/21 v1.0i %% E-mail: hzzmail@163.com %% Released under the LaTeX Project Public License v1.3c or later %% --------------------------------------------------------------- %% -\ProvidesFile{gb7714-2015ay.cbx}[2017/04/11 v1.0h biblatex citation style] +\ProvidesFile{gb7714-2015ay.cbx}[2017/11/21 v1.0i biblatex citation style] \RequireCitationStyle{authoryear} %\RequireCitationStyle{numeric} -\ExecuteBibliographyOptions{ - %autocite = superscript , - %autopunct = true , - %sorting = none , - maxcitenames=1, - mincitenames=1, - uniquename=init,%因为使用了名字缩写选项,所以需要设置uniquename=init而不是full避免冲突 - labeldate=true, - uniquelist=minyear, +\defversion{3.4}{cbxopt}{ + \ExecuteBibliographyOptions{ + %autocite = superscript , + %autopunct = true , + %sorting = none , + maxcitenames=1, + mincitenames=1, + uniquename=init,%因为使用了名字缩写选项,所以需要设置uniquename=init而不是full避免冲突 + labeldate=true, + uniquelist=minyear + } } +\defversion{3.7}{cbxopt}{ + \ExecuteBibliographyOptions{ + %autocite = superscript , + %autopunct = true , + %sorting = none , + maxcitenames=1, + mincitenames=1, + uniquename=init,%因为使用了名字缩写选项,所以需要设置uniquename=init而不是full避免冲突 + labeldateparts=true, + %labeldate=true, + uniquelist=minyear %minyear, + } +} + +\iftoggle{iftlfive} + {\switchversion{3.4}{cbxopt}}%%当采用texlive2015以下版本时 + {\iftoggle{iftlsix}% + {\switchversion{3.4}{cbxopt}}%%当采用texlive2016版本时 + {\iftoggle{iftlseven}% + {\switchversion{3.7}{cbxopt}}%%当采用texlive2017版本时 + {\switchversion{3.7}{cbxopt}}%%当采用biblatex3.8a版本时 + }% + } + +%当条目是set时,所有的信息都没有于是利用entrykey来给出标签,那么就要set的条目关键字是需要的字符串,注意字符串中间不能有空格 +\renewbibmacro*{cite:label}{% + \iffieldundef{label}% + {\iffieldundef{labeltitle}{\printtext[bibhyperref]{\printfield{entrykey}}}%entrykey + {\printtext[bibhyperref]{\printfield[citetitle]{labeltitle}}}}% + {\printtext[bibhyperref]{\printfield{label}}}} + %\DeclareCiteCommand{\cite}[\mkbibparens]{⟨precode⟩}{⟨loopcode⟩}{⟨sepcode⟩}{⟨postcode⟩} -% \DeclareCiteCommand{\cite}[\mkbibparens] {\usebibmacro{prenote}} {\usebibmacro{citeindex}% |