diff options
Diffstat (limited to 'macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.tex')
-rw-r--r-- | macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.tex | 403 |
1 files changed, 269 insertions, 134 deletions
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.tex b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.tex index f2aabef29f..962aaae18a 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.tex +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.tex @@ -62,39 +62,39 @@ biblatex-gb7714-2015 宏包是为满足《GB/T 7714-2015~~信息与文献~~参 \pagestyle{fancy} \section{概述} -《GB/T 7714-2015~~信息与文献~~参考文献著录规则》是国内科技文档参考文献著录的一般标准,国内多数大学、出版社、期刊编辑部对于学位论文、出版物、期刊论文的参考文献要求通常都基于该标准。对于\LaTeX{}用户来说,参考文献生成是典型的自动化应用,通常有两种方法,一是基于bibtex的传统方法,二是基于biblatex的新方法。生成符合GB/T 7714 标准要求的参考文献,这两条路子都已经实践多年。 -基于biblatex的方法,早期有李志奇(icetea)的gbtstyle实现以及Casper Ti. Vector的caspervector样式,然而由于biblatex宏包升级、样式包维护和完善方面的问题,未能达到精确符合国标要求、且具备高可用性、兼容性和可维护性的理想状态。开发biblatex-gb7714-2015 样式包的初衷首先是基于当时这样的状态,其次也为解决很多实际应用中的问题,因此考虑如下原则: +《GB/T 7714-2015~~信息与文献~~参考文献著录规则》是国内科技文档参考文献著录的一般标准,国内多数大学、出版社、期刊编辑部对于学位论文、出版物、期刊论文的参考文献要求通常都基于该标准。对于\LaTeX{}用户来说,参考文献生成是典型的自动化应用,主要有两种方法,一是基于bibtex的传统方法,二是基于biblatex的新方法。生成符合GB/T 7714 标准要求的参考文献,这两条路都已经实践多年。 +基于biblatex的方法,早期有李志奇(icetea)的gbtstyle实现以及Casper Ti. Vector的caspervector样式,然而由于biblatex宏包升级、样式包维护和完善等方面的问题,未能达到精确符合国标要求、且具备高可用性、兼容性和可维护性的理想状态。开发biblatex-gb7714-2015 样式包的初衷首先是基于当时这样的状态,其次也为解决很多实际应用中的问题,因此考虑如下原则: \subsection{设计原则} \begin{enumerate} \item 兼容性 -由于biblatex的持续升级,一些接口和功能的变化,会使得样式无法使用或者输出结果产生异变。因此biblatex-gb7714-2015宏包设计之初,就一直秉承兼容性原则,力图兼容各版本的biblatex,希望与biblatex v2.8 (in texlive2014) 以上所有版本适配(注意 ctex 2.9.4 的用户需升级 biblatex)。 +由于biblatex的持续升级,一些接口和功能的变化,会使得样式无法使用或者输出结果产生异变。因此biblatex-gb7714-2015宏包设计之初,就一直秉承兼容性原则,力图兼容各版本的biblatex,希望与biblatex v2.8 (in texlive2014) 以上所有版本适配(注意:使用ctex 2.9.4 套件的用户需升级 biblatex或更换使用最新版 texlive)。 出于兼容一些旧的bib文件的考虑,增加对传统参考文献条目类型比如www/electronic/conference/mastersthsis/phdthsis/techreport/standard等的支持。根据国标要求,考虑增加newspaper(报纸析出的文献)、database(数据库)、dataset(数据集)、 software(软件)、map(舆图)、archive(档案)等类型。也为兼容适用于不同样式的bib数据源,增加对一些自定义域的支持,比如gbt7714宏包的bst样式中mark和medium域。此外,也试图去完善样式在不同文档类包括beamer类中的使用问题。 \item 易用性 -参考文献是\LaTeX{}自动化应用之一,尽可能让其自动完成,减少用户的人工干预,包括数据的准备、格式的调整等等。因此宏包试图减少用户对于bib文件的调整,只需要简单地输入文献本身的信息,或者从各类学术网站或利用zotero等工具下载参考文献数据即可,而不需要为了符合国标格式而去手动增添参考文献类型和载体标识等一些数据域,也不必为了文献语言分集、文献排序等去增加语言、排序关键字等数据域,这些所有工作都由宏包自动完成。 +参考文献是\LaTeX{}自动化应用之一,尽可能让其自动完成,减少用户的人工干预,包括数据的准备、格式的调整等等。因此宏包试图减少用户对于bib文件的调整,只需要简单地输入文献本身的信息,或者从各类学术网站或利用zotero等工具下载参考文献数据即可,而不需要为了符合国标格式而去手动增添参考文献类型和载体标识等一些数据域,也不必为了文献语言分集、文献排序等去增加语言、排序关键字等数据域,所有这些工作都由会宏包自动处理。 -为了符合国标要求以及中文参考文献标注习惯,提供丰富的标注(引用)命令,用户只需熟悉几个命令的特性即能够完成两种编制样式下多样的标注格式,包括:顺序编码制的 \verb|\cite|(上标可设置页码)、 \verb|\parencite|(非上标可设置页码)、 \verb|\pagescite|(上标加自动页码)、 \verb|\textcite|(提供作者为主语加非上标编号)、 \verb|\authornumcite|(提供作者为主语加上标编号)、 \verb|\footfullcite|(脚注方式);著者-年份制的\verb|\cite|(作者加年份用括号包围可设置页码)、 \verb|\pagescite|(作者加年份用括号包围自动页码)、 +为了符合国标要求以及中文参考文献标注习惯,提供丰富的标注(引用)命令,用户只需熟悉几个命令的特性即能够完成两种编制样式下多样的标注格式,包括:顺序编码制的 \verb|\cite|(上标可设置页码)、 \verb|\parencite|(非上标可设置页码)、 \verb|\pagescite|(上标加自动页码)、 \verb|\textcite|(提供作者为主语加非上标编号)、 \verb|\authornumcite|(提供作者为主语加上标编号)、 \verb|\footfullcite|(脚注注释);著者-年份制的\verb|\cite|(作者加年份用括号包围可设置页码)、 \verb|\pagescite|(作者加年份用括号包围自动页码)、 \verb|\yearcite|(提供年份用括号包围)、 \verb|\yearpagescite|(提供年份用括号包围自动页码)、 -\verb|\textcite|(提供主语作者加括号包围年份)、 \verb|\footfullcite|(脚注方式)。 +\verb|\textcite|(提供主语作者加括号包围年份)、 \verb|\footfullcite|(脚注注释)。 -习惯natbib的用户也可以直接使用 \verb|\citet| 和 \verb|\citep| 命令, -也提供一些习惯使用的命令,比如\verb|\citetns|、\verb|\citepns|、 -\verb|\upcite|、\verb|\inlinecite|等让用户可以无缝衔接从bibtex转到biblatex。 +也提供与natbib宏包常用命令同名的命令 \verb|\citet| 和 \verb|\citep|, +和一些惯常使用的命令,如\verb|\citetns|、\verb|\citepns|、 +\verb|\upcite|、\verb|\inlinecite|等,让用户可以无缝衔接从bibtex转到biblatex。 另外,增加并完善对多语言混合文献表、多语言对照文献表的支持。不同语言文献可按文献自身语言录入,宏包自动识别语言并通过autolang选项自动完成语言切换,针对多语言对照文献表提供了基于条目集和关联条目概念的两种实现方式。 \item 灵活性 -在考虑实现严格符合GB/T 7714-2015标准的格式外,也希望能够针对用户的特殊格式需求,提供方便灵活的定制方式,比如通过设置选项来达到格式的变化。为此,增加了多个方面的设置选项,使用户可以根据自己的需求灵活地调整。主要包括: +在考虑实现严格符合GB/T 7714-2015标准的格式外,也希望能够针对用户的特殊格式需求,提供方便的定制方式,比如通过设置选项来达到格式的变化。为此,增加了多个方面的设置选项,使用户可以根据自身需求灵活地调整。主要包括: 著录表排序选项: -sorting选项值(gb7714-2015支持以语言著者-出版年标题升序排列,gbnytd支持以语言著者-出版年标题降序排列,gbynta支持以语言年份作者标题升序排列,gbyntd支持以语言年份作者标题降序排列)、gblanorder 选项(可以设置不同的文种(语言)文献的排列顺序)、sortlocale 选项(可以设置本地语言的排序调整方案,比如zh\_\_pinyin支持汉字字符以拼音排序,zh\_\_stroke以笔画排序,auto/zh以unicode编码排序,zh\_\_gb2312han 以gb2312编码排序)。使用拼音排序时遇到多音字也可以利用key域解决。 +sorting选项值(gb7714-2015支持以语言著者-出版年标题升序排列,gbnytd支持以语言著者-出版年标题降序排列,gbynta支持以语言年份作者标题升序排列,gbyntd支持以语言年份作者标题降序排列)、gblanorder 选项(可以设置不同的文种(语言)文献的排列顺序)、sortlocale 选项(可以设置本地语言的排序调整方案,比如zh\_\_pinyin支持汉字字符以拼音排序,zh\_\_stroke以笔画排序,auto/zh以unicode编码排序,zh\_\_gb2312han 以gb2312编码排序)。使用拼音排序时遇到多音字也可以利用添加key域或使用修改后的locale文件pinyin.pm解决。 @@ -112,11 +112,11 @@ sorting选项值(gb7714-2015支持以语言著者-出版年标题升序排列, 标签格式控制(gbbiblabel选项,可设置标签数字不同的包围符号)、 条目格式控制(gbstyle选项,利用gb7714-2015ms样式可实现中英文献分设不同格式)、 编制样式设置命令(利用\verb|\setaystylesection|和gb7714-2015mx样式实现不同文献节不同的编制方式)、 -格式命令\verb|\bibauthorfont|可设置作者项字体、 -格式命令\verb|\bibtitlefont|可设置标题项字体、 -格式命令\verb|\bibpubfont|可设置出版项字体、 -格式尺寸\verb|\bibitemindent|和\verb|\bibhang|可设置文献表的缩进、 -文献标题控制(gbctexset选项,可设置标题内容由\verb|\bibname|或\verb|\refname|宏调整); +文献标题控制(gbctexset选项,可设置标题内容由\verb|\bibname|或\verb|\refname|宏调整)、 +命令\verb|\bibauthorfont|可设置作者项字体等格式、 +命令\verb|\bibtitlefont|可设置标题项字体等格式、 +命令\verb|\bibpubfont|可设置出版项字体等格式、 +尺寸\verb|\bibitemindent|和\verb|\bibhang|可设置文献表的缩进等格式; 编码设置选项: GBK编码兼容(gbcodegbk选项,可设置GBK编码文档编译)等等。 @@ -126,7 +126,8 @@ GBK编码兼容(gbcodegbk选项,可设置GBK编码文档编译)等等。 \item 可维护性 -宏包的长期使用价值体现在宏包的维护和更新上面,追求宏包具有高的可读性、可理解性、可维护性,可为宏包长期发挥作用提供帮助。由于biblatex已经是一个相当成熟完善的宏包,即便是在样式方面考虑也相当全面,这可能与西方出版界对于参考文献的多样且细致的要求有关。而国内只有一个通用标准就是GB/T 7714标准,且除了一些特殊需求要具体实现外,标准中大多数格式要求的实现完全可以借用biblatex提供的标准样式,因此既不需要重新造轮子,也可以使gb7714-2015样式与biblatex宏包的标准样式保持一致的结构、风格和习惯,这样可以大大增加代码可读性和可维护性。通过在biblatex原有样式基础上增加有限修改的方式,并且对代码加上详细注释,可以使得样式包维护者,只需通过学习biblatex,即可轻松理解gb7714-2015样式做的工作,比如做了哪些修改,为什么这么修改,实现了什么样的效果。 +宏包的长期使用价值体现在宏包的维护和更新上面,追求宏包具有高的可读性、可理解性、可维护性,可为宏包长期发挥作用提供帮助。由于biblatex已经是一个相当成熟完善的宏包,即便是在样式方面考虑也相当全面,这可能与西方出版界对于参考文献的多样且细致的要求有关。而国内只有一个通用标准就是GB/T 7714标准,且除了一些特殊需求要具体实现外,标准中大多数格式要求的实现完全可以借用biblatex提供的标准样式,因此既不需要重新造轮子,也可以使gb7714-2015样式与biblatex宏包的标准样式保持一致的结构、风格和习惯,这样可以大大增加代码可读性和可维护性。通过在biblatex原有样式基础上增加有限修改,并对代码加上详细注释,可使维护者只需通过学习biblatex,即可轻松理解gb7714-2015样式的代码。 +%做的工作,比如做了哪些修改,为什么这么修改,实现了什么样的效果。 另外,为方便用户,样式包提供了全面、详实的说明,包括 @@ -225,13 +226,19 @@ GB/T 7714标准的理解和解释(\ref{sec:gbt:std}节)、 \end{figure} - +\section{使用说明} \subsection{最小示例} -基于biblatex宏包的参考文献生成方法非常简单,例 \ref{code:doc:structrue} 是一个最小工作示例。示例代码中给出了详细注释,介绍了使用biblatex 的tex源文档基本结构,其中gb7714-2015 样式随biblatex宏包加载, -参考文献数据文件example.bib利用 \verb|\addbibresource|加载 (注意:bib文件需另外准备,详见\ref{sec:bib:bibtex}节),文献表利用 \verb|\printbibliography| 命令输出(可在正文任意位置)。 +基于biblatex宏包的参考文献生成方法非常简单,例 \ref{code:doc:structrue} 是一个最小工作示例。示例代码中给出了详细注释,介绍了使用biblatex 的tex源文档基本结构,其中: +\begin{itemize} +\item gb7714-2015 样式随biblatex宏包加载; +\item bib(参考文献数据)文件利用 \verb|\addbibresource|加载 (注意:bib文件需另外准备,详见\ref{sec:bib:bibtex}节); +\item 引用文献则在正文中利用\verb|\cite|等命令带上entrykey(文献唯一标识)参数, +比如\verb|\cite{entrykey}|, +\item 打印文献表利用 \verb|\printbibliography| 命令输出(可放在正文任意位置)。 +\end{itemize} \begin{example}{biblatex参考文献生成的最小工作示例}{code:doc:structrue} \begin{texlist} @@ -243,7 +250,7 @@ GB/T 7714标准的理解和解释(\ref{sec:gbt:std}节)、 \usepackage[colorlinks=true,pdfstartview=FitH,linkcolor=blue,anchorcolor=violet,citecolor=magenta]{hyperref} %参考文献工具,加载biblatex宏包,,其后端backend使用biber,%标注(引用)样式citestyle,著录样式bibstyle都采用gb7714-2015样式,两者相同时可以合并为一个选项style \usepackage[backend=biber,style=gb7714-2015]{biblatex} - %biblatex宏包的参考文献数据源加载方式 + %biblatex宏包的参考文献数据源即bib文件加载方式 \addbibresource[location=local]{example.bib} \begin{document}%正文区开始: %正文内容,引用参考文献 @@ -284,13 +291,13 @@ GB/T 7714标准的理解和解释(\ref{sec:gbt:std}节)、 上述最小工作示例的编译结果如图\ref{fig:eg:ref}所示。所有基于 biblatex 生成参考文献的文档无论大小万变不离其宗, 若需更全面了解biblatex及参考文献生成高级功能另可参考: \href{https://github.com/plk/biblatex}{biblatex宏包手册} -\footnote{地址:\url{https://github.com/plk/biblatex}}、 +%\footnote{地址:\url{https://github.com/plk/biblatex}}、 \href{https://github.com/hushidong/biblatex-zh-cn}{中文版} -\footnote{地址:\url{https://github.com/hushidong/biblatex-zh-cn}} +%\footnote{地址:\url{https://github.com/hushidong/biblatex-zh-cn}} 或者 \href{https://github.com/hushidong/biblatex-solution-to-latex-bibliography}{LaTeX 文档中文参考文献的biblatex解决方案} -\footnote{地址:% -\url{https://github.com/hushidong/biblatex-solution-to-latex-bibliography}}。 +%\footnote{地址:% +%\url{https://github.com/hushidong/biblatex-solution-to-latex-bibliography}}。 \subsection{编译方式} @@ -311,7 +318,7 @@ latexmk -xelatex jobname.tex \end{example} -\section{使用说明} + \subsection{样式及选项加载} @@ -374,8 +381,8 @@ perl gb7714texttobib.pl in=textfilename out=bibfilename \end{example} 其中, -v1.0m版本增加的gb7714-2015ms样式文件,主要是为了在一个文献表中针对不同语言使用不同的样式,比如中文文献使用GB/T 7714-2015规定的著录格式,而其它语言文献使用biblatex提供的标准样式。 -v1.0r版本增加了gb7714-2015mx样式,主要是为了在一个文档中针对不同参考文献分节使用不同的参考文献样式,比如某些节使用著者年份制,某些节使用顺序编码制。 +v1.0m版本增加的gb7714-2015ms样式文件,主要是为了在一个文献表中针对不同语言使用不同的样式,即中文文献使用GB/T 7714-2015规定的著录格式,而其它语言文献使用biblatex提供的标准样式。 +v1.0r版本增加了gb7714-2015mx样式,主要是为了在一个文档中针对不同参考文献分节使用不同的样式,比如某些节使用著者年份制,某些节使用顺序编码制。 %尽管这些方式不常用,但偶尔也有需求,所以都做了实现。 尽管国标1987和2005版本已经过时,但仍然有些地方还在使用,所以1.0z版本增加了gb7714-1987和gb7714-2005两个版本的样式,也分顺序编码和著者年份制: @@ -398,11 +405,11 @@ v1.0r版本增加了gb7714-2015mx样式,主要是为了在一个文档中针 \end{example} -另外,根据国内大学的学位论文的文献生成需求,增加了几个与国标有明显区别的样式,包括:西北农林(gb7714-NWAFU)、华中师范(gb7714-CCNU)、东南大学(gb7714-SEU)等。其他大学的文献样式与国标基本一致,比如上海交大、浙大、复旦等,直接使用即可。另外一些大学与国标略有差别,可以通过简单的设置满足要求,比如清华、科学院大学、中科大、国防科大等,通常在学位论文模板中实现,在egthesis文件夹内,针对一些大学的学位论文参考文献做了测试。 +另外,根据国内大学的学位论文的文献生成需求,增加了几个与国标有明显区别的样式,包括:西北农林(gb7714-NWAFU)、华中师范(gb7714-CCNU)、东南大学(gb7714-SEU)等。其他大学的文献样式与国标基本一致,比如上海交大、浙大、复旦等,直接使用即可。另外一些大学与国标略有差别,可以通过简单的设置满足要求,比如清华、科学院大学、中科大、国防科大等,通常在学位论文模板中实现。而在egthesis文件夹内则对一些大学的学位论文参考文献做了测试。 此外,根据期刊文献生成需求,为文科类期刊增加了如下样式: -v1.0r版本增加了chinese-erj样式用于生成经济研究期刊的文献; -v1.1l版本增加了chinese-css样式用于生成社会科学期刊的脚注注释; +v1.0r版本增加了chinese-erj样式用于生成经济研究期刊的文献; +v1.1l版本增加了chinese-css样式用于生成社会科学期刊的脚注注释文献; v1.1m版本增加了chinese-jmw样式用于生成管理世界期刊的文献。 而理工类期刊文献通常与国标差别不大,部分期刊与国标的最大的差异主要是在双语对照文献中,比如计算机学报等,可以通过简单的设置来满足要求,具体可以参考github上的问题。 @@ -434,8 +441,10 @@ v1.1m版本增加了chinese-jmw样式用于生成管理世界期刊的文献。 \subsubsection{新增选项}\label{sec:added:opt} -样式包新增了一些选项和命令,新增选项更常用一些,所以在本节集中介绍,而新增命令往往涉及更细节的修改,所以在后面介绍各类格式调整的内容中介绍。 -新增选项用于标签对齐方式、出版项缺省处理、责任者(作者)缺省处理等功能的控制,其使用方式与biblatex宏包选项完全相同: +样式包新增了一些选项。 +%由于选项更为常用,所以在本节集中介绍。 +%而新增命令往往涉及更细节的修改,所以在后面各类格式调整的内容中介绍。 +新增选项用于处理标签对齐、缺省出版项、缺省责任者(作者)处理等,其使用方式与biblatex宏包选项完全相同,主要包括: \begin{description} \pdfbookmark[4]{gbalign}{gbalign} @@ -443,10 +452,11 @@ v1.1m版本增加了chinese-jmw样式用于生成管理世界期刊的文献。 为控制文献表数字序号标签增加的选项,用于选择是否生成序号标签及其对齐方式。 \begin{itemize} - \item gbalign=right,数字序号标签,是list环境中的标签右对齐,是gb7714-2015样式的默认选项; - \item gbalign=left,数字序号标签,是list环境中的标签左对齐; - \item gbalign=center,数字序号标签,是list环境中的等宽标签,数字在[]内居中; - \item gbalign=gb7714-2015,数字序号标签,是项对齐方式,即段落环境中标签使用原始宽度,标签与条目内容等间距。 + \item gbalign=right,是list环境中的右对齐数字序号标签,是gb7714-2015样式的默认选项; + \item gbalign=left,是list环境中的左对齐数字序号标签; + \item gbalign=center,是list环境中的等宽数字序号标签,数字在[]内居中; + \item gbalign=centpos,是list环境中的局中数字序号标签,带括号标签[1]在标签盒子内居中; + \item gbalign=gb7714-2015,是项对齐方式数字序号标签,即段落环境中标签使用原始宽度,标签与条目内容等间距。 \item gbalign=gb7714-2015ay,无数字序号标签,是author-year风格的文献表,是gb7714-2015ay样式的默认选项。 \end{itemize} 该选项对\textbf{著者年份制、顺序编码制均有效},也就是说当使用著者年份制时,加上gbalign选项后同样可以实现文献表的顺序序号标签(比如: @@ -527,6 +537,9 @@ leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt] \begin{itemize} \item gbbiblabel=bracket,序号数字由方括号包围,比如[1]; \item gbbiblabel=parens,序号数字由圆括号包围,比如(1); + \item gbcitelabel=bracketqj,标注标签由全角方括号包围,比如【1】; + \item gbcitelabel=parensqj,标注标签由全角圆括号包围,比如(1); + \item gbcitelabel=quanjiao,标注标签由全角方括号包围,比如【1】; \item gbbiblabel=dot,序号数字数字后面加点,比如1.; \item gbbiblabel=plain,序号数字无装饰,比如1; \item gbbiblabel=box,序号数字由方框包围,比如\framebox{1}; @@ -561,8 +574,11 @@ leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt] \item gbcitelabel=plain,标注标签无装饰,比如1; \item gbcitelabel=box,标注标签由方框包围,比如\framebox{1}; \item gbcitelabel=circle,标注标签由圆圈包围,比如\textcircled{1}。 + \item gbcitelabel=bracketqj,标签由全角方括号包围,比如【作者, 2001】 + \item gbcitelabel=parensqj,标签由全角圆括号包围,比如(作者, 2001) + \item gbcitelabel=quanjiao,标签由全角圆括号包围且内部标点为全角标点,比如(作者,2001) \end{itemize} - 顺序编码制和作者年制存在一定的差异,作者年制主要是方括号、圆括号、无括号的选择。 + 注意顺序编码制和作者年制存在一定的差异,作者年制主要是方括号、圆括号以及全角半角的选择。 顺序编码制默认是方括号,作者年制默认是圆括号。 @@ -940,8 +956,8 @@ leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt] 为实现多种样式并存而增加的选项。仅用于gb7714-2015ms样式中。 \begin{itemize} - \item gbstyle=true,即默认全部文献使用gb7714-2015样式。 - \item gbstyle=false,仅中文文献使用gb7714-2015样式,其它语言文献使用biblatex默认样式。 + \item gbstyle=true,即默认全部文献使用国标样式。 + \item gbstyle=false,仅中文文献使用国标样式,其它语言文献使用biblatex默认样式。 \end{itemize} 该选项的实现原理是把所有国标格式设置局部化到每一条文献打印时,处理时首先判断gbstyle 选项及文献的语言,当满足要求则使用这些局部化格式,否则使用默认的标准样式。这种实现为一篇文档内实现两种样式提供解决思路,尽管目前非中文语言文献的著录格式是标准样式,但只要对标准样式做进一步的修改就可以形成符合某种格式规范的样式,比如像ieee,nature等的样式。因此存在中文使用GB/T 7714-2015 著录格式,而英文文献使用ieee等著录格式的可能性。测试文档见:\href{run:./example/opt-gbstyle.tex}{opt-gbstyle.tex}。 @@ -1021,7 +1037,7 @@ leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt] 注意,若要让脚注计数器与其它计数器比如chapter等关联,那么采用latex的常规方法就能解决,比如使用latex内核常用的\verb|\@addtoreset|命令。 - + \item[gbstrict]=\textbf{true},false. \hfill default is true 为避免输出bib文件中多余的域信息而增加选项,目的是为了兼容一些bib文件,因为某些bst样式文件进行中英文判断需要在bib文件中增加类似language这样的域作为支撑,而其中某些域在标准的biblatex样式文件中是默认输出的。 @@ -1042,14 +1058,16 @@ leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt] \end{description} -\subsubsection{新增的重要命令}\label{sec:add:cmd} +\subsubsection{新增重要命令}\label{sec:add:cmd} \begin{description} - \item[defdoublelangentry] \{entrykey1\}\{entrykey2\} + \pdfbookmark[4]{defdblanentry}{defdblanentry} + \item[defdblanentry] \{entrykey1\}\{entrykey2\} - 用于定义双语对照文献,将entrykey2条目和entrykey1条目关联起来,在文献表中对照输出。比如: + 用于定义双语对照文献,将entrykey2条目和entrykey1条目关联起来,在文献表中对照输出。比如:\verb|\defdblanentry{entrykey1}{entrykey2}|或 \verb|\defdoublelangentry{entrykey1}{entrykey2}|,若entrykey1条目是中文的文献,entrykey2条目是对应entrykey1条目的英文形式,那么该命令会使得在文献表中,entrykey2的英文内容紧跟在entrykey1的中文内容后对照输出。该命令也只能出现在导言区中。 - + + \pdfbookmark[4]{addEntryField}{addEntryField} \item[addEntryField] \{entrykey or entrykey comma list\}\{field\}\{fieldvalue\} 用于给指定的文献条目(集)添加域。即将field=\{fieldvalue\}这样的域信息添加到指定的entrykey条目或者entrykey comma list条目集中。比如: @@ -1058,6 +1076,16 @@ leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt] 将会为author2007en,author2014en两个条目添加nameformat域信息。 该命令也只能出现在导言区中。 + + + \pdfbookmark[4]{setlocalbibstring}{setlocalbibstring} + \item[setlocalbibstring] \{bibstringkey\}\{bibstringval\} + + 用于局部调整本地化字符串的内容。比如\verb|\setlocalbibstring{andothersincite}{et al.}|,就是临时将本地化字符串andothersincite的内容调整为“et al.”。 + +注意:如果要在本地化字符串的内容设置中使用biblatex提供的一些标点命令,比如adddot 等,那么需要对其进行保护,避免直接展开导致命令未定义的错误,比如: +\verb|\setlocalbibstring{andothersincite}{et al\protect\adddot}| + \end{description} @@ -1199,12 +1227,12 @@ leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt] \subsection{文献引用及标注格式}\label{sec:cbx:usage} -要生成参考文献,第一步就是在正文中引用参考文献。正文中因引用文献所形成的标注的格式称为参考文献标注样式,也称引用样式或引用标签样式,分为两类: 顺序编码制和著者-出版年(作者年)制。引用文献的基本命令是\verb|\cite|,但为了在一篇文档中实现不同的标签效果,通常还需要使用其它命令, -比如\verb|\parencite|, \verb|\textcite|, \verb|\pagescite|,\verb|\footfullcite|等。此外为遵循biblatex对于复数形式标注命令的使用习惯,也提供上述命令的复数形式,比如\verb|\cite|命令的复数形式命令\verb|\cites|,便于输出单个文献的页码等前后注信息。 +要生成参考文献,第一步就是在正文中引用参考文献。正文中因引用文献所形成的标注的格式称为参考文献标注样式,也称引用样式或引用标签样式,分为两类: 顺序编码制和著者-出版年(作者年)制。引用文献的基本命令是\verb|\cite|,但为了在一篇文档中实现不同的标签效果,通常还需要使用\verb|\parencite|等其它命令,以及这些命令的复数形式以实现同一处引用多篇文献的附加信息输入。 -熟悉natbib的用户也可以直接使用使用\verb|\citet|, \verb|\citep|命令。 -另外也可以使用一些习惯命令比如\verb|\citetns|、\verb|\citepns|、 -\verb|\upcite|、\verb|\inlinecite|等。 +%比如\verb|\parencite|, \verb|\textcite|, \verb|\pagescite|,\verb|\footfullcite|等。此外为遵循biblatex对于复数形式标注命令的使用习惯,也提供上述命令的复数形式,比如\verb|\cite|命令的复数形式命令\verb|\cites|,便于输出单个文献的页码等前后注信息。 +%熟悉natbib的用户也可以直接使用使用\verb|\citet|, \verb|\citep|命令。 +%另外也可以使用一些惯用命令比如\verb|\citetns|、\verb|\citepns|、 +%\verb|\upcite|、\verb|\inlinecite|等。 \subsubsection{两种编制的标注格式} @@ -1214,41 +1242,19 @@ leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt] 为使用户免于输入文献作者,完善了\verb|\textcite|命令,提供作者为句子主语,并附带行内非上标的顺序编码, 并增加了\verb|\authornumcite|命令,以输出作者作为句子主语,并附带上标的顺序编码。 增加了\verb|\citec|命令,输出另一种形式的编码压缩标签,比如\textsuperscript{[2]-[4]}区别于一般的\textsuperscript{[2-4]}。 - 其它命令\verb|\citet|、\verb|\citep|、\verb|\citetns|、\verb|\citepns|、 \verb|\upcite|、\verb|\inlinecite|分别等价于 \verb|\authornumcite|、\verb|\cite|、\verb|\textcite|、\verb|\parencite|、 \verb|\cite|、\verb|\parencite|。 -上述命令均可在{bibtexkey}前面的[]内或第二个[]内(当有两个[]时),指定页码用于输出。若不指定页码,则仅有\verb|\pagescite|命令默认提取参考文献的页码信息进行输出。 +上述命令均可指定页码等信息用于输出,即在{entrykey}前面的[]内或第二个[]内(当有两个[]时)给出需要附加输出的信息,比如:\verb|\cite[p. 9]{entrykey}|或\verb|\cite[第九页]{中文entrykey}|。若不指定页码,则仅有\verb|\pagescite|命令默认提取参考文献的页码信息进行输出。 各引用命令的使用方式如表\ref{tab:cite:num}所示。 测试文档见\href{run:example/testallformat.tex}{testallformat.tex}。 -%各命令使用方式如例\ref{eg:citefornumeric}所示。 -%各引用命令的效果如图\ref{fig:cite:num}所示。 - -\qd{对于一个引用命令中同时给出多个文献bibtexkey的压缩形式,页码只会应用到最后一个参考文献后面,这是不正确的,但这种情况其实本不应出现,因为指定页码本来就需要具体化指向某一文献。使用时请尽可能使用 -\textbackslash pagescite\{key1\}\textbackslash pagescite\{key2\}这种形式 -而不是\textbackslash pagescite\{key1,key2\}|。当然除了多次使用标注命令外,也可以使用对应标注命令的复数形式来为每篇文献提供相应的页码信息。} -%著者-出版年制的标注样式文件大体使用标准引用样式authoryear的内容。 -\paragraph{\heiti 著者-出版年制的标注样式} -为满足GB/T 7714-2015第10.2节的要求, -考虑\verb|\cite|和\verb|\parencite|命令将引用标签用圆括号括起来。增加了\verb|\pagescite|命令,用于自动加页码。增加了\verb|\yearpagescite|, \verb|\yearcite|命令用于处理文中已有作者信息只需要年份和页码的情况(为兼容性考虑,顺序编码制也给出该命令,但作用与 -\verb|\pagescite| 命令相同),也完善了 \verb|\textcite| 命令,提供作者为句子主语,并附带行内非上标的页码,增加了\verb|\authornumcite|命令,以输出作者作为句子主语,并附带上标的页码。 - -其它命令\verb|\citet|、\verb|\citep|、\verb|\citetns|、\verb|\citepns|、 -\verb|\upcite|、\verb|\inlinecite|分别等价于 -\verb|\authornumcite|、\verb|\cite|、\verb|\textcite|、\verb|\parencite|、 -\verb|\cite|、\verb|\parencite|。 - -%各命令使用方式如例\ref{eg:citeforauthoryear}所示。 -%各引用命令的效果如图\ref{fig:cite:ay}所示。 -各引用命令的使用方式如表\ref{tab:cite:authoryear}所示。 -测试文档见\href{run:example/testallformat.tex}{testallformat.tex}。 - %\begin{table}[!htb] +\medskip \noindent\begin{minipage}{0.95\linewidth} \begin{refsection} \centering @@ -1282,9 +1288,38 @@ leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt] \end{tabular} \end{refsection} \end{minipage} +\medskip %\end{table} +%各命令使用方式如例\ref{eg:citefornumeric}所示。 +%各引用命令的效果如图\ref{fig:cite:num}所示。 + +注意:对于一个引用命令中同时给出多个文献entrykey的压缩形式,页码只会应用到最后一个参考文献后面。 +%这是不正确的,但这种情况其实本不应出现,因为指定页码本来就需要具体化指向某一文献。 +若要为每篇添加页码信息,则应多次使用标注命令 +\verb|\cite[p.2]{entrykey1}\cite[p.5]{entrykey2}|或使用复数形式的标注命令 +\verb|\cites[p.2]{entrykey1}[p.5]{entrykey2}|, +而不是\verb|\cite[p.5]{entrykey1,entrykey2}|。 + +%当然除了这种多次使用标注命令外,也可以使用对应标注命令的复数形式来为每篇文献提供相应的页码信息。 + + +%著者-出版年制的标注样式文件大体使用标准引用样式authoryear的内容。 +\paragraph{\heiti 著者-出版年制的标注样式} +为满足GB/T 7714-2015第10.2节的要求, +考虑\verb|\cite|和\verb|\parencite|命令将引用标签用圆括号括起来。增加了\verb|\pagescite|命令,用于自动加页码。增加了\verb|\yearpagescite|, \verb|\yearcite|命令用于处理文中已有作者信息只需要年份和页码的情况(为兼容性考虑,顺序编码制也给出该命令,但作用与 +\verb|\pagescite| 命令相同),也完善了 \verb|\textcite| 命令,提供作者为句子主语,并附带行内非上标的页码,增加了\verb|\authornumcite|命令,以输出作者作为句子主语,并附带上标的页码。 + +其它命令\verb|\citet|、\verb|\citep|、\verb|\citetns|、\verb|\citepns|、 +\verb|\upcite|、\verb|\inlinecite|分别等价于 +\verb|\authornumcite|、\verb|\cite|、\verb|\textcite|、\verb|\parencite|、 +\verb|\cite|、\verb|\parencite|。 + +%各命令使用方式如例\ref{eg:citeforauthoryear}所示。 +%各引用命令的效果如图\ref{fig:cite:ay}所示。 +各引用命令的使用方式如表\ref{tab:cite:authoryear}所示。 +测试文档见\href{run:example/testallformat.tex}{testallformat.tex}。 @@ -1331,22 +1366,24 @@ leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt] \subsubsection{标注格式局部调整} -标注在同一个文档中是可能存在不同格式需求的,比如:有的地方需要用上标,有的地方需要用行内,有的地方需要给出作者,有的地方需要给出页码等。一般情况下,不同标注格式可以通过使用不同的标注命令来得到,比如上一小节给出的大量不同的命令,不同命令能够产生独特的标注标签。 +标注在同一个文档中可能存在不同格式需求,比如:有的地方需要用上标,有的地方需要用行内,有的地方需要给出作者,有的地方需要给出页码等。一般情况下,不同标注格式可以通过使用不同的标注命令来得到,比如上一小节给出的不同命令。 +%,不同命令能够产生独特的标注标签。 -除了利用命令来调整标注格式外,还有更多的方法来进行局部格式调整。这利用了tex的编组特性,编组内的局部格式不影响编组外的格式,所以可以利用编组内的局部设置来调整标注的格式,类似的,文献表的著录格式也是可以局部调整的,见下一节。 +除了利用命令来调整标注格式外,还有更多方法可进行局部格式调整。这利用了tex的编组特性,编组内的局部格式不影响编组外的格式,所以可利用编组内的局部设置来调整标注的格式。类似的,文献表的著录格式也可局部调整,详见下一节。 -引用文献所产生标注标签的格式包括很多内容,包括作者数量,标点,本地化字符串等。最常见的局部调整需求是标点和本地化字符串。这里以双语图题中的引用标签的不同本地化字符串需求为例来展示局部调整的方法。 +引用文献所产生标注标签的格式包括很多内容,包括作者数量、标点、本地化字符串等。最常见的局部调整需求是本地化字符串和标点。这里以双语图题中的引用标注标签的不同本地化字符串需求为例来展示局部调整的方法。 -在中科院某类学位论文中,正文的标注标签要求两个英文作者之间用和而不是and连接,多个英文作者截断成一个作者时后面用等.而不是et al.表示。这可以容易通过设置本地化字符串来实现。然而对于双语的图题,英文图题中的出现等与和这样的字符实在不雅,所以又要求在这种全英文的环境中将和与等.更换为英文的表示符号,这就需要利用本地化字符串的局部调整。这种本地化字符串的局部调整其实已经是比较深入的内容,因为biblatex提供的接口DefineBibliographyStrings是全局的设置,如何进行局部调整并没有非常方便的接口,要解决这一需求,需要对biblatex以及gb7714-2015样式有比较深入的了解。 +\paragraph{标注中“等”“和”等本地化字符串调整} -因为gb7714-2015通过gbcitelocalcase计数器来选择使用中文或英文的本地化字符串,因此通过局部设置gbcitelocalcase可以局部的选择不同语言的本地化字符串,然而因为本地化字符串的内容通常是全局设置的,所以当中文的或者英文的本地化字符串设置都不满足要求时,就需要局部的调整本地化字符串的内容,如\ref{eg:str:localset}所示,对本地化字符串andothersincite的内容做了调整,从全局设置的等.转换为et al.,和转换为and,这种局部设置是通过csdef对保存字符串信息的命令直接做的调整。比如\verb|\csdef{abx@sstr@andothersincite}{et al.}|就是将andothersincite本地化字符串的内容临时调整为et al.。 +在中科院某类学位论文中,正文的标注标签要求两个英文作者之间用“和”而不是“and”连接,多个英文作者则截断成一个作者时后面用“等.”而不是“et al.”表示。这可以容易通过设置本地化字符串来实现。然而对于双语的图题,英文图题中不适合出现“等”与“和”这样的字符,所以又要求在这种全英文的环境中将“和”与“等.”更换为英文符号,这就需要利用本地化字符串的局部调整。这种本地化字符串的局部调整其实已经是比较深入的内容,因为biblatex提供的接口DefineBibliographyStrings是全局的设置,而局部调整则需要使用其它方式。 +%如何进行局部调整并没有非常方便的接口,要解决这一需求,需要对biblatex以及gb7714-2015样式有比较深入的了解。 -为方便用户使用,提供了 -\verb|\setlocalbibstring|命令来替代上述直接定义的csdef命令,比如: -\verb|\setlocalbibstring{andothersincite}{et al.}|,等价于与前面csdef那条命令。 -另外,如果要在本地化字符串的内容设置中使用biblatex提供的一些标点命令,比如adddot等,那么需要对其进行保护,避免直接展开导致命令未定义的错误,比如: -\verb|\setlocalbibstring{andothersincite}{et al\protect\adddot}| +因为gb7714-2015通过gbcitelocalcase计数器来选择使用中文或英文的本地化字符串,因此通过局部设置gbcitelocalcase可以局部的选择不同语言的本地化字符串,比如在一个编组内,局部化设置计数器为:\verb|\defcounter{gbcitelocalcase}{1}|,那么这个编组内的所有本地化字符串会使用默认的中文字符串,反之若设置为2,则本地化字符串会使用默认的英文字符串。 +然而因为本地化字符串的内容通常是全局设置的,所以当中文的或者英文的本地化字符串设置都不满足要求时,就需要局部的调整本地化字符串的内容,如例\ref{eg:str:localset}所示,对本地化字符串andothersincite的内容做了调整,从全局设置的“等.”转换为“et al.”,“和”转换为“and”,这种局部设置可通过csdef对保存字符串信息的命令直接做的调整,比如\verb|\csdef{abx@sstr@andothersincite}{et al.}|就是将andothersincite本地化字符串的内容临时调整为“et al.”。 +但为方便用户使用,提供了 +宏包提供了\verb|\setlocalbibstring|命令来替代上述直接定义的csdef命令, +如例\ref{eg:str:localset}所示。 具体的测试见\href{egthesis/thesis-ucas-m.tex}{thesis-ucas-m.tex} \begin{example}{双语图题内的标注标签的本地化字符串局部设置}{eg:str:localset} @@ -1362,8 +1399,82 @@ leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt] \end{example} -\paragraph{标注中的全半角标点设置} +\paragraph{标注中的全半角标点和括号调整} + +除了本地化字符串外,标注中的括号和标点也是需要调整的内容。这里两个默认采用英文的半角符号。首先可以通过选项调整,gbcitelabel选项提供了不同的选择,可以设置标注的括号,为全局或半角,同时提供了一个gbcitelabel=quanjiao,可以将标点和括号全部改为全角。 + +如果选项提供的效果还不够,那么可以局部调整mkbibleftborder和mkbibrightborder,来更换需要的括号。例\ref{eg:parens:localset}中的局部调整可以将标注中的括号改变为『和』。 + +\begin{example}{局部调整标注标签中的括号}{eg:parens:localset} +\begin{texlist} +{\renewrobustcmd{\mkbibleftborder}{『}% +\renewrobustcmd{\mkbibrightborder}{』}% +中文段落\cite{Aaa_2018,Aaa_2018a}\cite{Aaa_2021,Aaa_2018}\\ +中文段落\textcite{Aaa_2018,Aaa_2018a},\textcite{Aaa_2021,Aaa_2018} \\ +中文段落\cite{Aaa_2018,Bbb_2019}\parencite{Aaa_2018,Bbb_2019}} +\end{texlist} +\end{example} + +对于标点来说,若默认的设定不满足要求,则可以在导言区进行调整, +如例\ref{eg:punct:globalset}中的第一段代码所示,除了其中标点外,有时还需要设置finalnamedelim。这是标签中除姓名外的标点调整,至于姓名内的标点调整则是需要从另外的接口修改,比如:通过gbcaselocalset等来修改revsdnamepunct,bibinitperiod等等,这些在标注标签中通常不太需要修改。 + +但有的时候,我们需要对中英文文献的标注标签使用不同的符号,比如中文的标签使用中文全角标点,而英文的标签使用英文的标点,那么可以在标点设置时做一个判断,如例 +\ref{eg:punct:globalset}中的第二段代码所示。 + +而还有的时候,文档中存在独立的中文段落和英文段落,期望在中文段落中使用中文的标点,而在英文段落中则使用英文的标点,此时可以利用gbcitelocal选项的内部设置的计数器gbcitelocalcase来局部化调整。如例 +\ref{eg:punct:globalset}中的第三段代码所示,做如此设置后,那么只要在指定的段落局部化计数器gbcitelocalcase的值就可以达到临时调整标点的目的。 + +\begin{example}{标注标签中的标点的全局和局部设置}{eg:punct:globalset} +\begin{texlist} +%第一段代码:导言区重设标注标签的标点 +\renewcommand*{\multicitedelim}{;}%\addsemicolon\addspace; +\renewcommand*{\compcitedelim}{,} +\renewcommand{\compextradelim}{,} +\DeclareDelimFormat[cite,parencite,pagescite]{nameyeardelim}{,}%\addcomma\space +\DeclareDelimFormat[textcite]{nameyeardelim}{,}%\addcomma\space +\DeclareDelimFormat[cite,parencite,pagescite]{andothersdelim}{,}% +\DeclareDelimFormat[textcite]{andothersdelim}{,}% + +%第二段代码:导言区重设标注标签的标点,根据文献的中英文调整标点形式 +\renewcommand*{\multicitedelim}{\iffieldequalstr{userf}{chinese}{;}{\addsemicolon\addspace}}%; +\renewcommand*{\compcitedelim}{\iffieldequalstr{userf}{chinese}{,}{\addcomma\space}} +\renewcommand{\compextradelim}{\iffieldequalstr{userf}{chinese}{,}{\addcomma\space}} +\DeclareDelimFormat[cite,parencite,pagescite,citep]{nameyeardelim} +{\iffieldequalstr{userf}{chinese}{,}{\addcomma\space}}% +\DeclareDelimFormat[textcite,authornumcite,citet]{nameyeardelim} +{\iffieldequalstr{userf}{chinese}{,}{\addcomma\space}}% +\DeclareDelimFormat[cite,parencite,pagescite,citep]{andothersdelim} +{\iffieldequalstr{userf}{chinese}{,}{\addcomma\space}}% +\DeclareDelimFormat[textcite,authornumcite,citet]{andothersdelim} +{\iffieldequalstr{userf}{chinese}{,}{\addcomma\space}}% + +%第二段代码:导言区重设标注标签的标点,可根据计数器gbcitelocalcase局部设置调整中英文标点 +\renewcommand*{\multicitedelim} +{\ifcase\value{gbcitelocalcase}\iffieldequalstr{userf}{chinese}{;}{\addsemicolon\addspace}% +\or ;\or\addsemicolon\addspace\fi}%; +\renewcommand*{\compcitedelim} +{\ifcase\value{gbcitelocalcase}\iffieldequalstr{userf}{chinese}{,}{\addcomma\space}% +\or ,\or\addcomma\space\fi} +\renewcommand{\compextradelim} +{\ifcase\value{gbcitelocalcase}\iffieldequalstr{userf}{chinese}{,}{\addcomma\space}% +\or ,\or\addcomma\space\fi} +\DeclareDelimFormat[cite,parencite,pagescite,citep]{nameyeardelim} +{\ifcase\value{gbcitelocalcase}\iffieldequalstr{userf}{chinese}{,}{\addcomma\space}% +\or ,\or\addcomma\space\fi} +\DeclareDelimFormat[textcite,authornumcite,citet]{nameyeardelim} +{\ifcase\value{gbcitelocalcase}\iffieldequalstr{userf}{chinese}{,}{\addcomma\space}% +\or ,\or\addcomma\space\fi} +\DeclareDelimFormat[cite,parencite,pagescite,citep]{andothersdelim} +{\ifcase\value{gbcitelocalcase}\iffieldequalstr{userf}{chinese}{,}{\addcomma\space}% +\or ,\or\addcomma\space\fi} +\DeclareDelimFormat[textcite,authornumcite,citet]{andothersdelim} +{\ifcase\value{gbcitelocalcase}\iffieldequalstr{userf}{chinese}{,}{\addcomma\space}% +\or ,\or\addcomma\space\fi} +\end{texlist} +\end{example} + +示例可以参考:\href{run:example/test-punct-quanjiao.tex}{test-punct-quanjiao.tex} 参考:\url{https://blog.csdn.net/xenonhu/article/details/124686522} @@ -1374,15 +1485,18 @@ leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt] 引用文献后,可以在文档需要的位置利用 \verb|\printbibliography| 命令输出文献表。文献表的输出格式称为参考文献著录样式,也称著录表样式或著录格式,也分两类: 顺序编码制和著者-出版年制(作者年制)。 %顺序编码制的参考文献样式基于标准样式numeric-comp/numeric -\paragraph{\heiti 顺序编码制样式} 中各条参考文献条目以数字序号按引用先后顺序组织。 +\subsubsection{顺序编码制样式} + +文献表中各参考文献条目以数字序号按引用先后顺序组织。 著录格式中序号格式见\ref{sec:bib:serialno}节, 各类型文献条目的著录格式见\ref{sec:numeric:data}节, 参考文献条目中各信息域及其录入方式见\ref{sec:bib:bibtex}节。 %著者-出版年制的参考文献样式则基于标准样式authoryear -\paragraph{\heiti 著者-出版年制样式} 中各条参考文献条目以作者-年为标签以一定的顺序排列。著者-出版年制的著录格式与顺序编码制基本相同,差别仅在于把年份提前到作者后面作为条目的标签。数据源bib文件中各条目的数据录入与顺序编码制完全一致。 +\subsubsection{著者-出版年制样式} +文献表中各参考文献条目以作者-年为标签以一定的顺序排列。著者-出版年制的著录格式与顺序编码制基本相同,差别仅在于把年份提前到作者后面作为条目的标签。数据源bib文件中各条目的数据录入与顺序编码制完全一致。 -\qd{著者-出版年制有文献按文种集中的要求,因此gb7714-2015ay样式设计了gblanorder选项来配合专用的排序模板,可以方便地设置不同文种的先后顺序,默认文种顺序是中日韩英法俄。如需其他顺序则可利用gblanorder选项重设,设置方法见第\ref{sec:added:opt}节。此外,由于排序需要根据文献所使用的语言判断,因此使用language域,该域由biblatex-gb7714-2015宏包自动判断处理,一般不需过多关注,如果当语言判断出现问题,可以在bib文件中手动设置language域为正确的语言,比如chinese,japanese,english,french等。} +注意:著者-出版年制有文献按文种集中的要求,因此gb7714-2015ay样式设计了gblanorder选项来配合专用的排序模板,可以方便地设置不同文种的先后顺序,默认文种顺序是中日韩英法俄。如需其他顺序则可利用gblanorder选项重设,设置方法见第\ref{sec:added:opt}节。此外,由于排序需要根据文献所使用的语言判断,因此使用language域,该域由biblatex-gb7714-2015宏包自动判断处理,一般不需过多关注,如果当语言判断出现问题,可以在bib文件中手动设置language域为正确的语言,比如chinese,japanese,english,french等。 %前一段为20190331更新 %\qd{著者-出版年制有分文种文献集中的要求,因此gb7714-2015排序模板以nyt模板为基础,增加 language 作为 name 前的排序域。默认情况下,本样式文件将标题(或作者)为中文的文献的 language 域设置成 chinese,英文的设置成 english。这一设置过程,在biber 处理时自动完成。当出现问题或者有更多文种分集且有特殊顺序时,可以在bib文件中为相应文种文献的 language 域手动设置适合排序的字符串。比如: 中文文献设置为 chinese,英文文献设置为 enlish,法文文献设置为 french,那么排序中,相应的中文文献排在最前面,英文文献在中间,法文文献最后,因为升序情况下字母顺序是c然后e然后f。} @@ -1406,18 +1520,17 @@ leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt] \end{texlist} \end{example} -更多的设置方法,请参考: -\href{https://github.com/hushidong/biblatex-solution-to-latex-bibliography/blob/master/biblatex-solution-to-latex-bibliography.pdf}% -{biblatex高级使用方法和样式包设计实现方法} +%更多的设置方法,请参考: +%\href{https://github.com/hushidong/biblatex-solution-to-latex-bibliography/blob/master/biblatex-solution-to-latex-bibliography.pdf}% +%{biblatex高级使用方法和样式包设计实现方法} \subsubsection{段落格式控制} \paragraph{\heiti 文献表字体、颜色} 为方便用户改变文献表段落格式、内容字体和颜色等,在 biblatex 提供的 \verb|\bibfont| 命令基础上, -增加了\verb|\bibauthorfont|、\verb|\bibtitlefont|、\verb|\bibpubfont| 等命令用于控制文献部分著录项的格式,比如作者,标题,出版项等。增加了\verb|\SlashFont| -用法具体见例\ref{eg:biblist:fontset},结果如图\ref{fig:par:fmt}所示。 +增加了\verb|\bibauthorfont|、\verb|\bibtitlefont|、\verb|\bibpubfont| 等命令用于控制文献部分著录项的格式,比如作者,标题,出版项等。增加了\verb|\SlashFont|用于控制斜杠的字体。 +具体用法见例\ref{eg:biblist:fontset},结果如图\ref{fig:par:fmt}所示。 测试用例见\href{run:example/testfontinbiblio.tex}{testfontinbiblio.tex}。 - \begin{example}{文献表段落格式、字体、颜色}{eg:biblist:fontset} \begin{texlist} % 文献项之间的间隔符控制(比如是否换行) @@ -1432,7 +1545,7 @@ leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt] \renewcommand{\bibpubfont}{\itshape\color{violet}}% % url和doi字体 \def\UrlFont{\ttfamily}%\rmfamily %\urlstyle{sf} %\def\UrlFont{\bfseries} - %斜杠的字体,比如[J/OL]中的斜杠 + %斜杠的字体,比如[J/OL]或析出文献符号//中的斜杠 \def\SlashFont{\ttfamily}%\rmfamily等 \end{texlist} \end{example} @@ -1466,34 +1579,36 @@ leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt] \paragraph{\heiti 文献表水平间距(缩进)控制} 增加了尺寸\verb|\bibitemindent| 用于控制参考文献条目在文献表中的缩进, 其意义与 list 环境中 \verb|\itemindent| 相同。 -文献表的水平缩进控制,两种编制方式下是不同的。 +文献表的水平缩进控制,两种编制方式下是不同的,调整方法见例\ref{eg:biblist:hspace}。 -(a) 对于\emph{著者-出版年}制文献表,bibitemindent表示 +\textbf{(a)} 对于\emph{著者-出版年}制文献表 + +bibitemindent表示 \emph{一条文献中第一行相对后面各行的缩进},bibhang 表示\emph{页边到文献各行起始位置的距离}。因此要调整缩进则直接设置这两尺寸。 当使用著者-出版年样式又需要使用顺序编码数字标签的文献表时(此时使用gbalign选项),缩进方式与顺序编码制文献表类似,但又略有差异。 数字标签盒子默认宽度为2em,可以调整biblabelextend来增大或缩小(使用正或负的长度)该宽度,数字标签的盒子与文献内容之间的间距为4.5pt,通过直接设置biblabelsep尺寸来调整。 -(b) 对于\emph{顺序编码}制文献表,由于存在数字标签,且其宽度与参考文献数量相关,所以这个宽度是动态变化的,不能提前设定,而是在文献表生成时给出,所以调整缩进需要根据文献表输出环境的情况做针对性处理。 - -顺序编码样式使用了两类输出环境,所以设定选项也区分两类: +\textbf{(b)} 对于\emph{顺序编码}制文献表 -一是采用list环境的文献表,即设置gbalign=left、right、center时(即顺序编码标签是左对齐、右对齐和居中对齐的情况)。 +由于存在数字标签,且其宽度与参考文献数量相关,所以这个宽度是动态变化的,不能提前设定,而是在文献表生成时给出,所以调整缩进需要根据文献表输出环境的情况做针对性处理。 -此时文献表环境,数字标签盒子默认宽度为labelnumberwidth,由biblatex根据文献数量自动计算后设定,因此改变缩进主要通过调整biblabelsep和bibitemindent两个尺寸来实现。biblabelsep设置数字标签的盒子与文献内容之间的间距。bibitemindent设置第一行和后面其它行的缩进,默认情况下bibitemindent为0pt,则一条文献内所有行缩进相同,若bibitemindent>0pt则第一行相比后面各行缩进,若bibitemindent<0pt则后面各行相比第一行缩进。 - -顺序编码样式下bibitemindent与bibhang的意义与著者-出版年制下相同,但由于数字标签盒子的存在,所以页边到各行起始位置的距离bibhang=labelnumberwidth +biblabelsep -bibitemindent。 +顺序编码样式使用了两类输出环境,所以设定选项也区分两类: -当采用某些字体导致计算的标签宽度不足时,可以设置biblabelextend尺寸,来增加labelnumberwidth的宽度避免缩进格式产生问题,使得:bibhang=labelnumberwidth +biblabelextend +biblabelsep -bibitemindent。默认情况下biblabelextend尺寸为0pt。 +\begin{itemize} +\item 一是采用list环境的文献表,即设置gbalign=left、right、center时(即顺序编码标签是左对齐、右对齐和居中对齐的情况)。此时需要调整的尺寸包括三个:biblabelsep,bibitemindent,biblabelextend。 -二是采用正常段落环境的文献表,即设置gbalign=gb7714-2015时(即项对齐情况,就是各条文献是自身对齐的情况)。 -此时数字标签盒子默认宽度根据标签实际宽度自动设定,因此不会存在数字标签盒子宽度不足的情况,所以不用设置biblabelextend尺寸。数字标签的盒子与文献内容之间的间距通过调整biblabelsep可设置。\emph{每条参考文献第二行开始的缩进距离}通过调整bibitemindent尺寸设置,bibitemindent默认为0pt,则一条文献内所有行缩进相同,若bibitemindent>0pt则第一行相比后面各行缩进,若bibitemindent<0pt则后面各行相比第一行缩进。 +\hspace{2em}此时的文献表环境中,数字标签盒子默认宽度为labelnumberwidth,由biblatex根据文献数量自动计算后设定,因此改变缩进主要通过调整biblabelsep和bibitemindent两个尺寸来实现。biblabelsep设置数字标签盒子与文献内容之间的间距。bibitemindent设置第一行相对后面其它行的缩进,默认情况下bibitemindent为0pt,则一条文献内所有行缩进相同,若bibitemindent>0pt则第一行相比后面各行缩进,若bibitemindent<0pt则后面各行相比第一行缩进。 +\hspace{2em}顺序编码样式下bibitemindent与bibhang的意义与著者-出版年制下相同,但由于数字标签盒子的存在,所以页边到各行起始位置的距离bibhang=labelnumberwidth +biblabelsep -bibitemindent。 +当采用某些字体导致默认计算的标签宽度不足时,可以设置biblabelextend尺寸,来增加labelnumberwidth的宽度避免缩进格式产生问题,使得:bibhang=labelnumberwidth +biblabelextend +biblabelsep -bibitemindent。默认情况下biblabelextend尺寸为0pt。 -调整方法见例\ref{eg:biblist:hspace}。 +\item 二是采用正常段落环境的文献表,即设置gbalign=gb7714-2015时(即项对齐情况,每条文献严格按从左到右的顺序输出,顺序数字标签宽度等于实际宽度,文献内容与其间隔biblabelsep)。此时需要调整的尺寸包括两个:biblabelsep,bibitemindent。 +\hspace{2em}此时数字标签盒子默认宽度根据标签实际宽度自动设定,因此不存在数字标签盒子宽度不足的情况,因而无需设置biblabelextend尺寸。数字标签盒子与文献内容之间的间距可通过调整biblabelsep设置。\emph{每条参考文献第二行开始的缩进距离}通过调整bibitemindent尺寸设置,bibitemindent默认为0pt,则一条文献内所有行缩进相同,若bibitemindent>0pt则第一行相比后面各行缩进,若bibitemindent<0pt则后面各行相比第一行缩进。 +\end{itemize} \begin{example}{文献表水平缩进控制}{eg:biblist:hspace} @@ -1512,7 +1627,7 @@ leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt] \end{texlist} \end{example} -(c) 其它形式的文献表。 +\textbf{(c)} 其它形式的文献表 除了使用这种段落形式的文献表外,也有生成\emph{表格文献表}的需求,即把文献表放到一个表格里面,要求每一条文献占据表格的一行。这也是能实现的,具体参考我的博客文章 \href{https://blog.csdn.net/xenonhu/article/details/121696116}{latex中生成表格形式的参考文献表}。 @@ -1581,18 +1696,28 @@ leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt] \renewcommand*{\finentrypunct}{\iffieldequalstr{userd}{chinese}{。}{\adddot}} %姓名格式相关的标点 -\DeclareDelimFormat{nameyeardelim}{,}%\addcomma\addspace -%\DeclareDelimFormat[bib,biblist]{nameyeardelim}{,}%\addcomma\addspace -\DeclareDelimFormat{multinamedelim}{,}%[bib,biblist] -\DeclareDelimFormat{finalnamedelim}{,} -\DeclareDelimFormat{andothersdelim}{,} -\renewcommand*{\revsdnamepunct}{,}% +\DeclareDelimFormat[bib,biblist]{nameyeardelim}{,}%\addcomma\addspace +\DeclareDelimFormat[bib,biblist]{multinamedelim}{,}%[bib,biblist] +\DeclareDelimFormat[bib,biblist]{finalnamedelim}{,} +\DeclareDelimFormat[bib,biblist]{andothersdelim}{,} + +%姓名内部的相关标点,包括如下等设置 +%注意这类设置与gbnamefmt选项相关,不同的选项值对应不同的gb...localset +%除了如下命令外还有其它设置,有需要可以查biblatex文档 +\def\gbcaselocalset{% +\renewcommand*{\revsdnamepunct}{,}%% +\renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 +\renewrobustcmd*{\bibinithyphendelim}{}%.\mbox{-} +\renewrobustcmd*{\bibnamedelima}{} %%\mbox{-} +} \end{texlist} \end{example} -\subsubsection{条目著录格式的选项控制}\label{sec:entry:fmt} +\subsubsection{条目著录格式控制}\label{sec:entry:fmt} -文献表输出的格式即参考文献著录样式,除了整体的段落格式外,还有条目内部的格式可以控制,条目内部的这些项称为著录项,这些著录项的格式通常可由选项控制。可用选项除了biblatex 提供的标准选项外,也包括样式包提供的选项。 +文献表输出的格式即参考文献著录样式,除了整体的段落格式外,还有条目内部的格式可以控制,条目内部的这些项称为著录项,这些著录项的格式通常可由选项控制。 + +可用选项除了biblatex 提供的标准选项外,也包括样式包提供的选项。 图\ref{fig:content:fmta}、\ref{fig:content:fmtb}、\ref{fig:content:fmtc}给出了一些选项设置后的格式控制效果, 更多选项的详细说明见第\ref{sec:added:opt}、\ref{sec:old:opt}小节。 @@ -1651,9 +1776,11 @@ leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt] \caption{文献表条目著录格式示例三}\label{fig:content:fmtc} \end{figure} -\subsubsection{条目著录格式的局部调整}\label{sec:entry:fmtlocal} -得益于biblatex利用tex宏控制著录格式的特点,加上tex语言本身编组的局部化特性,所以在利用biblatex生成参考文献的过程中可以有丰富手段来进行参考文献著录格式的局部调整。因为是局部的格式调整,所以通常是结合refsection或者refsegment来操作的。前面提到过的一个很简单的例子,当在学位论文的写作中需要正文部分的参考文献使用顺序编码制,而附录中研究成果部分使用作者年制这样的需求就是一个典型的局部化格式调整。这一问题的解决方式为:在研究成果部分使用refsection将其局部化,并结合gb7714-2015mx样式,并利用setaystylesection命令设置该refsection为作者年制样式。 +\subsubsection{参考文献表的局部调整}\label{sec:entry:fmtlocal} + +文档中有时需要多个文献表,而且可能具有不同的格式,因此全局的设置不一定满足要求,所以需要进行局部的调整,调整的内容也包括:文献表的标题、段落格式和著录格式。 +得益于biblatex利用tex宏控制著录格式的特点,加上tex语言本身编组的局部化特性,所以在利用biblatex生成参考文献的过程中可以有丰富手段来进行参考文献表的局部调整。因为是局部的格式调整,所以通常是结合refsection或者refsegment来操作的。前面提到过的一个很简单的例子,当在学位论文的写作中需要正文部分的参考文献使用顺序编码制,而附录中研究成果部分使用作者年制这样的需求就是一个典型的局部化格式调整。这一问题的解决方式为:在研究成果部分使用refsection将其局部化,并结合gb7714-2015mx样式,并利用setaystylesection命令设置该refsection为作者年制样式。 因为tex宏的局部化调整特性,因此几乎biblatex中所有格式设置都是可以做局部调整的,限于篇幅,这里仅介绍一些常见的简单的调整方式: @@ -1828,7 +1955,8 @@ biber -l zh__stroke jobname 为避免这一添加拼音到key域的操作,这里提供另一种可能更为方便的方法。biber在做排序时实际上是利用 perl 的 Unicode::Collation::locale 模块,其中的Pinyin.pm提供了汉字的拼音顺序,对该文件做临时的修改,可以调整多音字的顺序。 -因为在参考文献排序中通常会使用字的姓名音,所以我们对这个文件做非正式的修改,并放到github上(\href{https://github.com/hushidong/biblatex-gb7714-2015/files/11120449/Pinyin.zip}{Pinyin.zip}),若用户需要正确的姓的多音字排序,那么只要用该文件替换biber临时工作目录中的文件即可。注意:目前该文件只修改了“曾”“沈”两个字,而“翟”“仇”等没有做修改,若用户有需求后面再增加。 +因为在参考文献排序中通常会使用字的姓名音,所以我们对这个文件做非正式的修改,并放到github上(\href{https://github.com/hushidong/biblatex-gb7714-2015/files/11147697/Pinyin-modified-zhai.zip}{Pinyin.zip}),若用户需要正确的姓的多音字排序,那么只要用该文件替换biber临时工作目录中的文件即可。 +%注意:目前该文件只修改了“曾”“沈”两个字,而“翟”“仇”等没有做修改,若用户有需求后面再增加。 通常biber在第一次运行的时候,会构建一个依赖目录,这也是biber的临时工作路径,而所有的依赖文件就在其中。 在windows下通常会在临时目录temp下构建类似\verb|par-<hex_encoded_username>/cache-|的目录(其它系统也是类似命名,可以搜索一下),所有的依赖包括Pinyin.pm都会在其内部,找到并替换即可(Pinyin.pm文件通常在\verb|cache-<hex-code-string>\inc\lib\Unicode\Collate\CJK|下)。 @@ -1934,7 +2062,8 @@ leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt] \paragraph{\heiti 利用条目集类型满足双语文献要求} -设置条目集类型(set)有静态和动态两种方法。其中动态方法使用更为方便,只需在写文档时利用\verb|\defbibentryset|将两条文献不同语言的文献设置成一个set条目,然后引用set的bibtex键。比如: +设置条目集类型(set)有静态和动态两种方法。其中动态方法使用更为方便, +只需在写文档时利用\verb|\defbibentryset|将两条文献不同语言的文献设置成一个set条目,然后引用set的bibtex键。比如: \begin{example}{设置set条目集用于双语文献的动态方法}{eg:setforbilangentry} \begin{texlist} \defbibentryset{bilangyi2013}{易仕和2013--,Yi2013--} @@ -1955,9 +2084,9 @@ biblatex v3.7及之前版本,因为 set 带有第一个子条目的信息, \end{texlist} \end{example} -\bc{在biblatex3.8以上版本中,例{eg:setforbilangentry}的作者年制标注标签会是“易仕和,等,2013”,注意到其中的逗号是中文全角逗号,与其它标签的英文逗号的存在差异,正因为此,该方法并没有完美解决问题。} +\bc{在biblatex3.8以上版本中,例\ref{eg:setforbilangentry}的作者年制标注标签会是“易仕和,等,2013”,注意到其中的逗号是中文全角逗号,与其它标签的英文逗号的存在差异,正因为此,该方法并没有完美解决问题。} -\bc{由于顺序编码制使用的时数字标签,前述的问题对于顺序编码制并不存在。而作者年制中的标签问题,可以采用下面的静态条目集方法和关联(related)方法来解决。} +\bc{由于顺序编码制使用的是数字标签,前述的问题对于顺序编码制并不存在。而作者年制中的标签问题,可以采用下面的静态条目集方法和关联(related)方法来解决。} 静态方法是在bib源文件中给出条目集(set)并使用biber后端进行解析,条目的域信息定义方法如下: @@ -1965,7 +2094,7 @@ biblatex v3.7及之前版本,因为 set 带有第一个子条目的信息, \begin{example}{设置set条目集用于双语文献的静态方法}{eg:set:static} \begin{texlist} @Set{set1, -entryset = {key1,key2,key3}, +entryset = {entrykey1,entrykey2,entrykey3}, } %如果要达到上例动态设置set一样的结果,在bib文件中静态设置set条目如下: @Set{bilangyi2013, @@ -1977,10 +2106,10 @@ entryset = {易仕和2013--,Yi2013--}, 然而例\ref{eg:set:static}这般简单的静态条目集设置,还存在两个小的问题: \begin{enumerate} \item 中文排序会出现问题,条目集会出现在文献表末尾,这是因为条目集没有设置language域用于排序,而其它常规条目都会利用动态数据修改设置language域,但因为静态条目集需要在biber运行时解析,所以无法对language域进行处理。而使用动态条目集方法则没有这一问题,因为其解析过程直接会利用第一个子条目的排序信息。 - \item 著者-出版年制中的标注标签问题,对于静态条目集,v3.8以上版本的biblatex同样不复制第一个子条目信息,因此著者- 出版年制中的引用也无法生成正确的标注标签,这也就是前面动态条目集方法中提到的问题 + \item 著者-出版年制中的标注标签问题,对于静态条目集,v3.8以上版本的biblatex同样不复制第一个子条目信息,因此著者- 出版年制中的引用也无法生成正确的标注标签,这也就是前面动态条目集方法中提到的问题。 \end{enumerate} -但静态条目集方法有自己的解决方便,对于第一个问题,可以通过在set条目中手动设置language域来解决;第二个问题,也可以通过在set条目中手动设置label域来解决。比如: +但静态条目集方法有自己的解决之道,对于第一个问题,可以通过在set条目中手动设置language域来解决;第二个问题,也可以通过在set条目中手动设置label域来解决。比如: \begin{example}{在bib文件中正确设置set条目集的静态方法}{eg:set:staticright} \begin{texlist} @@ -2005,7 +2134,8 @@ language={chinese} 除上述给出的条目集方案外,关联条目方法则是另一种可行方案\footnote{Again about the \@ set label for authoryear style:\url{https://github.com/plk/biblatex/issues/681}}。该方案同样也有静态和动态两种方法,静态就是直接修改bib文件的内容,动态则是在tex源文档中做设置,然后通过biblatex的动态数据修改机制做临时修改。 -静态方法很简单,bib文件中条目设置如例\ref{eg:related:staticright}所示,它能解决双语同时显示的问题,也能解决排序和标注标签问题,唯一的问题在于修改了bib文件后,当不需要双语文献时还需改回来,这会带来不便,因此可以考虑下面的动态方法。但要注意动态方法需要利用多个\verb|\DeclareStyleSourcemap|,因此该方法只适用于biblatex v3.7及以上版本。 +静态方法很简单,bib文件中条目设置如例\ref{eg:related:staticright}所示,它能解决双语同时显示的问题,也能解决排序和标注标签问题,唯一的问题在于修改了bib文件后,当不需要双语文献时还需改回来,这会带来不便,因此可以考虑下面的动态方法。 +但要注意动态方法需要利用多个\verb|\DeclareStyleSourcemap|,因此该方法只适用于biblatex v3.7及以上版本。 \begin{example}{在bib文件中正确设置关联条目的静态方法}{eg:related:staticright} \begin{texlist} @@ -2029,7 +2159,7 @@ language={chinese} \end{texlist} \end{example} -动态方法利用动态数据修改自动添加related域,避免对bib文件做直接修改。本样式中对该过程进行了封装,定义一个新的命令\verb|\defdoublelangentry|,例如: +动态方法利用动态数据修改自动添加related域,避免对bib文件做直接修改。本样式中对该过程进行了封装,定义一个新的命令\verb|\defdblanentry|和一个等价命令\verb|\defdoublelangentry|来实现,例如: \begin{example}{设置关联条目的动态方法}{eg:related:dynamic} \begin{texlist} \defdoublelangentry{易仕和2013--}{Yi2013--} @@ -2038,7 +2168,7 @@ language={chinese} 使用该命令后,可以引用主条目“易仕和2013--”生成双语文献。 但要注意由于\verb|\DeclareStyleSourcemap|命令只能在导言区中使用, -因此\verb|\defdoublelangentry|命令也只能出现在导言区中,这也是相比条目集动态方法的唯一遗憾。 +因此\verb|\defdblanentry|或\verb|\defdoublelangentry|命令也只能出现在导言区中,这也是相比条目集动态方法的唯一遗憾。 实现的具体细节见 \href{https://github.com/hushidong/biblatex-solution-to-latex-bibliography}% {biblatex-solution-to-latex-bibliography}。 @@ -2303,11 +2433,16 @@ bib文件中的参考文献信息是以条目形式组织,一篇文献创建 需要注意的是, \begin{itemize} - \item note域在本样式中也做特殊用途,即在book类型的note域中输入standard表示标准,在aritcle类型的note域中输入news或newspaper表示报纸,当然也可以不做特殊用,而只是表示杂项信息。因为报纸和标准也可以在entrysubtype域中输入new|newspaper和standard表示,或者标准和报纸直接用standard 和newspaper 类型表示,尽管这两种类型不是biblatex 原生支持的条目类型。 + \item note域在本样式中也做特殊用途,即在book类型的note域中输入standard表示标准,在aritcle类型的note域中输入news或newspaper表示报纸。 + 当然也可以不做特殊用,而只是表示杂项信息,因为报纸和标准也可以在entrysubtype域中输入new或newspaper和standard表示报纸和标准类型,亦或者直接用standard 和newspaper 类型表示两者,尽管这两种类型不是biblatex 原生支持的条目类型。 - \item usera域用于表示参考文献类型和载体标识符(为兼容Lee zeping 的bst样式使用的bib文件也可以用mark和medium 表示)。一般情况下usera,mark,medium这些域不用在bib文件中输入,而由样式文件自动处理得到,既为了使bib文件更纯粹,也为了兼容不同的样式。想象一下如果在bib文件中给出usera域,但另一样式需要使用usera域且用途不同,那么就会有兼容性问题。不用手动输入更重要的目的是为用户减负,因为用户可以直接使用从网络(各种学术网站)导出参考文献信息而不用再额外添加一个参考文献类型和载体标识符。 + \item usera域用于表示参考文献类型和载体标识符(为兼容Lee zeping 的bst样式使用的bib文件也可以用mark和medium 表示)。一般情况下usera,mark,medium这些域不用在bib文件中输入,而由样式文件自动处理得到,既为了使bib文件更纯粹,也为了兼容不同的样式。 + %想象一下如果在bib文件中给出usera域,但另一样式需要使用usera域且用途不同,那么就会有兼容性问题。不用手动输入更重要的目的是为用户减负,因为用户可以直接使用从网络(各种学术网站)导出参考文献信息而不用再额外添加一个参考文献类型和载体标识符。 + 因此,用户可以直接使用从网络(各种学术网站)导出参考文献本身的信息而不用再额外手动添加参考文献类型和载体标识符。 - \item 本样式自动判断语言,用户一般不需要直接给出表示文献语言的域language,因为样式在处理过程中会对各个域的字符做语言判断,这对于一篇文献存在多种语言的情况非常有用,比如一本英文著作被翻译为中文,原作者仍用英文,而译者则使用中文。那么该文献无法用一个language 标识文献的语言,简单来说,标记language域更多的目的是用在多种语言混合的文档中,可以用language 来标记英语、中文、日语、法语和俄语等用于分文种排序。当然这种标记也是由样式自动处理的,用户仅需在自动判断出现问题时手动干预。 + \item 本样式自动判断语言,用户一般不需要直接给出表示文献语言的域language,因为样式在处理过程中会对各个域的字符做语言判断,这对于一篇文献存在多种语言的情况非常有用,比如一本英文著作被翻译为中文,原作者仍用英文,而译者则使用中文。那么该文献无法用一个language 标识文献的语言,但会对不同的域如作者和译者做额外的判断,从而使输出的格式正确。 + 所以,使用language域更多的是用于多种语言混合文献表的排序,即用language 来标记英语、中文、日语、法语和俄语等用于分文种排序。 + %当然这种标记也是由样式自动处理的,用户仅需在自动判断出现问题时手动干预。 \end{itemize} @@ -2433,7 +2568,7 @@ bib文件中的参考文献信息是以条目形式组织,一篇文献创建 -\subsection{其它注意事项}\label{sec:pkg:hints} +\subsection{其它事项}\label{sec:pkg:hints} \begin{enumerate} \item biblatex 的优点 @@ -3057,7 +3192,7 @@ gb7714-2015实现了GB/T 7714-2015第8.8节要求的析出文献相关格式。 %读者若查看样式文件内容可以看到作者对各目标要求所做的修改及,读者也可以根据自己的需求进行修改,作者设计样式文件的思路以及在设计过程中用到的一些biblatex宏包功能说明,详见第\ref{sec:biblatex:mech}节和LaTeX文档中文参考文献的biblatex解决方案的第2.7节。 最后要感谢如下各位师长和朋友,正是在各位的帮助建议下,本样式不断升级逐渐完善。包括: moewew (biblatex 现在的维护者之一,给予不少有益的建议和指导)、 李志奇(基于biblatex的符合GBT7714-2005的中文文献生成工具的作者,工具中的一些设计如usera域的使用/卷期范围解析等带来很多启发,本人之前一直使用该工具,之所以开发biblatex-gb7714-2015其实主要是因为该工具因biblatex升级而无法使用)、caspervector(虽然未曾真正交流,但从biblatex-caspervector样式包中学到很多,包括排序/GBK编码等问题的解决思路)、LeoLiu(刘海洋,给出的CJK字符判断函数 -\footnote{\url{http://bbs.ctex.org/forum.php?mod=viewthread&tid=152663&extra=page\%3D3}} 对本宏包非常有帮助)、chinatex(china tex版主,给了很多建议和帮助,并且一起合作)、Sheng wenbo(biblatex用户手册合作译者,LaTeX2e 插图指南第三版译者,我们一起翻译的过程相互激励相互促进)、zepinglee(gbt7714-2015 bst样式作者,给了很多建议和讨论)、Harry Chen(ctex套件维护者之一,给了不少好的建议)、liubenyuan(关于项目组织给出了很好的建议)、刘小涛(讨论了关于zotero的使用并提出了建议)、ghiclgi(讨论了GB中著者-出版年制标注标签的一些问题)、邓东升(很很多建议和讨论)、秀文工作组、leipility、qingkuan、湘厦人、秋平、任蒲军、fredericky123、qiuzhu、chaoxiaosu、Old Jack、Wu Nailong、Yibai Zhang、wayne508、 钟乙源、Xiaodong Yao、dsycircle、rpjshu、zjsdut、谢澜涛、Zutian Luo、海阔天空、zzqzyx、程晨、xmtangjun、蔡伟 等等。当然还有更多朋友提供了bug报告,提出了issue,提供了热心帮助,限于篇幅这里不再一一列举,在此一并表示感谢! +\footnote{\url{http://bbs.ctex.org/forum.php?mod=viewthread&tid=152663&extra=page\%3D3}} 对本宏包非常有帮助)、chinatex(china tex版主,给了很多建议和帮助,并且一起合作)、Sheng wenbo(biblatex用户手册合作译者,LaTeX2e 插图指南第三版译者,我们一起翻译的过程相互激励相互促进)、zepinglee(gbt7714-2015 bst样式作者,给了很多建议和讨论)、Harry Chen(ctex套件维护者之一,给了不少好的建议)、liubenyuan(关于项目组织给出了很好的建议)、刘小涛(讨论了关于zotero的使用并提出了建议)、ghiclgi(讨论了GB中著者-出版年制标注标签的一些问题)、邓东升(很多建议和讨论)、秀文工作组、leipility、qingkuan、湘厦人、秋平、任蒲军、fredericky123、qiuzhu、chaoxiaosu、Old Jack、Wu Nailong、Yibai Zhang、wayne508、 钟乙源、Xiaodong Yao、dsycircle、rpjshu、zjsdut、谢澜涛、Zutian Luo、海阔天空、zzqzyx、程晨、xmtangjun、蔡伟 等等。当然还有更多朋友提供了bug报告,提出了issue,提供了热心帮助,限于篇幅这里不再一一列举,在此一并表示感谢! \section{存在的问题和下一步工作} |