diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015-content.tex')
-rw-r--r-- | Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015-content.tex | 807 |
1 files changed, 612 insertions, 195 deletions
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 4de9125c578..49080d69e98 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,6 +1,6 @@ %------------------------------------------------------------ -\def\versionnumber{v1.0e} %版本和修改时间信息 -\def\versiondate{2016-12-07} +\def\versionnumber{v1.0g} %版本和修改时间信息 +\def\versiondate{2017/02/26} %------------------------------------------------------------ %-----------------标题和目录--------------------------------- \titleformanual{符合GB7714-2015标准的biblatex参考\\ @@ -23,7 +23,7 @@ 样式文件的主要特点包括: \begin{enumerate} \item 实现了GB/T 7714-2015标准的完整功能,不仅包括两种编制方式下的各类型参考文献著录格式和标注格式等基本内容,还包括:双语文献格式,带页码的标注格式,作者年制下文献的自动排序和仅有年的标注格式,两种编码制方式下责任者缺省不同处理,其他信息缺省时的自动处理,一些信息如页码卷期等自动解析等特殊功能,而且增加了一个顺序编码制的标签对齐选项,提供右对齐、左对齐和项对齐三种方式。 - \item 实现了用户文献数据录入优化,用户在录入参考文献数据的时候,只需要录入文献的实际信息即可,不需要录入文献标识符和载体标识符,不需要录入language或者其它域信息用来区分中英文文献,完全实现自动中英文判断并处理。仅需要针对报纸文章和标准文章在note域输入news和standard用以区分。 + \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 标准测试了各种类型的文献。 \end{enumerate} @@ -38,7 +38,7 @@ biblatex-gb7714-2015.tex,biblatex-gb7714-2015ay.tex,biblatex-gb7714-2015-bea 脚本文件包括: -\textbf{*.bat}和\textbf{*.sh}分别是windows下和linux下的编译脚本。 +\textbf{*.bat}和\textbf{*.sh}分别是windows下和linux下的编译脚本。\textbf{*.pl}是用来将gb7714格式的著录文献文本转换为bib文件的perl脚本,\textbf{*.dat}是用于转换的测试文本文件。 样式文件在标准样式基础上修改设计而成,读者若查看样式文件内容可以看到作者对各目标要求所做的修改及其注释,读者也可以根据自己的需要修改需要的样式,作者设计样式文件的思路以及在设计过程中用到的一些biblatex宏包功能说明,详见第\ref{sec:biblatex:mech}节和\footnote{\makebox{LaTeX文档中文参考文献的biblatex解决方案,地址:\url{https://github.com/hushidong/biblatex-solution-to-latex-bibliography}}}的第2.7节。 @@ -61,6 +61,10 @@ biblatex-gb7714-2015.tex,biblatex-gb7714-2015ay.tex,biblatex-gb7714-2015-bea \usepackage[backend=biber,style=gb7714-2015ay]{biblatex} \end{codetex} +\begin{codetex}{参考文献文本转换为bib文件perl脚本使用方式}{eg:transtobib} +perl gb7714texttobib.pl in=textfilename out=bibfilename +\end{codetex} + 本文档给出了两种样式文件的使用说明,并根据GB/T 7714-2015提供的参考文献表著录格式示例做了测试和验证,详见第\ref{sec:eg:gb77142015}节。测试系统环境为: \begin{enumerate} \item windows7x86+texlive 2014,采用xelatex编译; @@ -72,8 +76,6 @@ biblatex-gb7714-2015.tex,biblatex-gb7714-2015ay.tex,biblatex-gb7714-2015-bea \item Deepin linux-x64v15.3+texlive 2016,采用xelatex编译。 \end{enumerate} -\zhongdian{【Most Important】【注意】:texlive2015中的biblatex版本是3.0,texlive2016中biblatex的版本是3.4,新版本对于名字域打印有了较大变化,所以需做相应的修改,为此在biblatex中首先进行版本判断,然后根据版本不同分别进行设置。} - 作者自己从学习latex开始就使用xelatex,对于参考文献生成,开始用的thebibliography环境,后来对于格式化参考文献有更多的需求后,开始寻求利用参考文献宏包。因为对于bibtex语言不熟悉,所以就开始使用biblatex宏包。从实践来看,使用biblatex宏包生成参考文献有些优点是值得肯定的: \begin{enumerate} @@ -86,16 +88,18 @@ xelatex --synctex=-1 jobname.tex xelatex --synctex=-1 jobname.tex \end{codetex} -\item 学习无障碍,因为biblatex宏包用的是tex语言,所以查看代码,学习都很方便,自然也便于生成需要的参考文献样式。 +\item 划分无限制,利用biblatex宏包可以在一个文档中生成任意数量的参考文献表,而不需要用include把分档划分成不同的文件来生成分章参考文献。利用refsection和refsegment 可以很方便构建参考文献表,甚至还可以嵌套使用。 +%划分很自由 -\item 划分很自由,利用biblatex宏包可以在一个文档中生成任意多个需要的参考文献,而不需要用include把分档划分成不同的文件,因此分章参考文献无需使用chapterbib宏包。利用refsection和refsegment可以很方便构建参考文献表,甚至还可以嵌套使用。 +\item 支持更全面,biber处理数量很大的参考文献条目没有任何压力,不用担心bibtex可能存在的内存不足等局限,字符编码也支持utf-8,完全支持中文的bibtex键。 +%处理无限制 -\item 处理无限制,biber处理数量很大的参考文献条目没有任何压力,不用担心bibtex可能存在的内存不足等局限。 - -\item 定制很容易,biblatex提供了很多不同的参考文献样式,学习参考都很方便,因此定制起需要的参考文献格式来非常容易。 +\item 定制很容易,因为biblatex宏包实现参考文献著录格式用的是tex语言,所以相比学习bibtex语言更为容易。biblatex 还提供了很多不同的参考文献标准样式,查看,参考都很方便,因此定制起需要的参考文献格式来也比较容易。 +%\item 学习无障碍,因为biblatex宏包用的是tex语言,所以查看代码,学习都很方便,自然也便于生成需要的参考文献样式。 +%\item 定制很容易,biblatex提供了很多不同的参考文献标准样式,学习参考都很方便,因此定制起需要的参考文献格式来非常容易。 \end{enumerate} -上述这些优点也是作者编写符合GB/T 7714-2015标准的参考文献样式文件的驱动原因之一。 +上述这些优点也是作者决定编写符合GB/T 7714-2015标准的参考文献样式文件的原因之一。 \subsection{顺序编码制} @@ -146,7 +150,7 @@ gb7714-2015.bbx是按照GB/T 7714-2015要求实现的biblatex参考文献样式 \begin{refentry}{}{} 专著对应的biblatex的entrytype为:book,文献类型标识用M表示。 -其著录格式为(参考GB/T 7714-2015第4.1节):\\ +\paragraph{其著录格式为}(参考GB/T 7714-2015第4.1节):\\ 主要责任者.题名:其他题名信息[文献类型标识/文献载体标识].其他责任者.版本项.出版地:出版者,出版年:引文页码[引用日期].获取和访问路径.数字对象唯一标识符. \end{refentry} @@ -157,7 +161,26 @@ author.title:subtitle或titleaddon[usera].translator.edition.address或location: 使用时,首先建立参考文献数据文件即bib文件,将对应的文献信息录入到相应条目的相应数据域中。\qd{特别注意: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域代替。 +或者使用本节下面给出的方式。 + +因为在一些bib文件中可能存在standard类型,为兼容性考虑,本样式实现了对standard条目类型的支持。著录格式的处理原理与前一节所述相同,只是利用动态数据将standard类型转换为book/inbook类型。因此在bib文件中可以直接使用standard类型,但要注意使用其它样式时可能存在移植障碍,因为其它样式可能不支持standard类型,为样式移植性考虑最好使用上一节的方式。 + +\begin{refentry}{}{} +标准对应的biblatex的entrytype为:standard。文献类型标识用S表示。 + +\paragraph{其著录格式为}(与book和inbook类型类似,其中圆括号内是与inbook类似时存在的内容,同时当出版地和出版者不存在时直接忽略,这是与book和inbook不同的地方。):\\ +主要责任者.文献题名[文献类型标识/文献载体标识].其他责任者(//所在文献集主要责任者.文献集题名:其他题名信息).版本项.出版地:出版者,出版年:文献的页码[引用日期].获取和访问路径.数字对象唯一标识符. +\end{refentry} + +其对应的biblatex数据域为: +\begin{codetex}{标准/standard条目的域格式}{eg:standardfieldfmt} +author.title[usera](//bookauthor.booktitle:booktitleaddon).edition.address 或location:publisher,date或year:pages[urldate].url.doi +\end{codetex} + \subsubsection{域/field}\label{sec:field} 各域的数据录入格式符合bib文件规范即可,这里再详细说明一下,后面的其它条目涉及到的域也在这里一并介绍: @@ -170,13 +193,15 @@ author.title:subtitle或titleaddon[usera].translator.edition.address或location: \textcircled{1}prefix lastname, suffix, firstname middlename - \textcircled{2}firstname middlename lastname + \textcircled{2}firstname middlename lastname or firstname prefix lastname 对于需要输入前后缀的姓名只能采用第一种方式,比如: DES MARAIS, Jr., D J and H STRAUSS and SUMMONS, R. E. and others 这里的第一个姓名输入为前缀,姓,后缀,名,中间名。第二个姓名输入为名,姓。第三个姓名输入为姓,名,中间名。 + \emph{还要注意:对于第二种输入方式非首字母大写,姓名各个组成部分最好首字母是大写的,可能导致解析出错,比如姓名只有两个组成部分firstname和lastname,如果firstname小写的话,有可能会解析为prefix lastname。对于第一种输入方式,则至少lastname需要首字母大写,否则有可能将lastname解析成prefix。其中lastname也称familyname,firstname middlename 两者共称givenname} + 对于机构作者,不需要解析,直接输入机构名,英文的各个机构名用\{\}包起来,比如: 中国企业投资协会 and 台湾并购与私募股权协会 and 汇盈国际投资集团 @@ -219,7 +244,7 @@ author.title:subtitle或titleaddon[usera].translator.edition.address或location: \begin{refentry}{}{} 专著中的析出文献对应的biblatex的entrytype为:inbook。文献类型标识用M表示。 -其著录格式为(参考GB/T 7714-2015第4.2节):\\ +\paragraph{其著录格式为}(参考GB/T 7714-2015第4.2节):\\ 析出文献主要责任者.析出文献题名[文献类型标识/文献载体标识].析出文献其他责任者//专著主要责任者.专著题名:其他题名信息.版本项.出版地:出版者,出版年:析出文献的页码[引用日期].获取和访问路径.数字对象唯一标识符. \end{refentry} @@ -232,13 +257,13 @@ author.title[usera]//bookauthor.booktitle:booktitleaddon.edition.address 或loca \begin{refentry}{}{} 连续出版物对应的biblatex的entrytype为:periodical。文献类型标识用J表示。 -其著录格式为(参考GB/T 7714-2015第4.3节):\\ +\paragraph{其著录格式为}(参考GB/T 7714-2015第4.3节):\\ 主要责任者.题名:其他题名信息[文献类型标识/文献载体标识].年,卷(期)-年,卷(期).出版地:出版者,出版年[引用日期].获取和访问路径.数字对象唯一标识符. \end{refentry} 其对应的biblatex数据域为: \begin{codetex}{连续出版物/periodical条目的域格式}{eg:periodicalfieldfmt} -author.title:subtitle或titleaddon[usera].year或date,volume(number)-endyear, endvolume(endnumber).address或location:publisher,date或year[urldate].url.doi +author/editor.title:subtitle或titleaddon[usera].year或date,volume(number)-endyear, endvolume(endnumber).address或location:publisher,date或year[urldate].url.doi \end{codetex} 需要注意: 因为连续出版物可能用到两个日期,两个卷,两个期,所以录入数据时需要特别处理。不需要录入endyear等信息,只需要在到year或date域录入日期,由biber自动解析,两个日期之间用/分隔。而卷和期由于可能有合订模式,合订卷期之间用/分隔,参考GB/T 7714-2015第8.8.3节,需要解析范围的卷和期,录入到volume和number域时,两个不同的值用-分隔。\emph{这里对于卷和期的解析所采用的函数利用了李志齐所编写的样式文件中的函数,特此说明,表示感谢!} @@ -247,7 +272,7 @@ author.title:subtitle或titleaddon[usera].year或date,volume(number)-endyear, en \begin{refentry}{}{} 连续出版物的析出文献对应的biblatex的entrytype为:article。文献类型标识用J表示。 -其著录格式为(参考GB/T 7714-2015第4.4节):\\ +\paragraph{其著录格式为}(参考GB/T 7714-2015第4.4节):\\ 析出文献主要责任者.析出文献题名[文献类型标识/文献载体标识].连续出版物题名:其他题名信息,年,卷(期):页码[引用日期].获取和访问路径.数字对象唯一标识符. \end{refentry} @@ -256,13 +281,32 @@ author.title:subtitle或titleaddon[usera].year或date,volume(number)-endyear, en author.title[usera].journaltitle或journal:journalsubtitle,year,volume(number):pages[urldate].url.doi \end{codetex} -需要注意:由于biblatex不支持newspaper article条目类型,所以条目类型报纸析出的文献用article表示,但使用note域等于news作为一个区分,当note域数据存在且内容等于news时,就将其作为报纸的析出文献进行处理。报纸文献类型标识用N表示,报纸的版次用number域描述。 +\qd{需要注意:由于biblatex不支持newspaper article条目类型,所以条目类型报纸析出的文献用article表示,但使用note域等于news作为一个区分,当note域数据存在且内容等于news时,就将其作为报纸的析出文献进行处理。报纸文献类型标识用N表示,报纸的版次用number域描述。} + +\subsubsection{报纸析出的文献/newspaper}\label{sec:standard} +biblatex没有将报纸的析出文献(newspaper)作为一种文献条目类型,因此可以如上一小节所述,直接利用article类型加note域代替。 +或者使用本节下面给出的方式。 + +因为报纸析出的文献的文献标识码比较特殊不是J而是N,所以可以把报纸析出的文献独立出来进行处理。 +为方便使用考虑,本样式增加了对一个全新的类型newspaper的支持,这种支持通过类似于standard类型的方式实现,没有对数据模型进行改动或增加,而完全利用动态数据修改将newspaper类型转换为article类型。因此在bib文件中可以直接使用newspaper类型,但要注意使用其它样式时可能存在移植障碍,因为其它样式可能不支持newspaper类型,为样式移植性考虑最好使用上一节的方式。 + +\begin{refentry}{}{} +报纸析出的文献对应一个新的entrytype为:newspaper。文献类型标识用N表示。 + +\paragraph{其著录格式为}(类似于article):\\ +析出文献主要责任者.析出文献题名[文献类型标识/文献载体标识].报纸题名:其他题名信息,日期(版号)[引用日期].获取和访问路径.数字对象唯一标识符. +\end{refentry} + +其对应的biblatex数据域为: +\begin{codetex}{报纸析出的文献/newspaper条目的域格式}{eg:newspaperfieldfmt} +author.title[usera].journaltitle或journal:journalsubtitle,date(number)[urldate].url.doi +\end{codetex} \subsubsection{专利/patent} \begin{refentry}{}{} 专利文献对应的biblatex的entrytype为:patent。文献类型标识用P表示。 -其著录格式为(参考GB/T 7714-2015第4.5节):\\ +\paragraph{其著录格式为}(参考GB/T 7714-2015第4.5节):\\ 专利申请者或所有者.专利题名:专利号[文献类型标识/文献载体标识].公告日期或公开日期[引用日期].获取和访问路径.数字对象唯一标识符. \end{refentry} @@ -273,83 +317,94 @@ author.title:number[usera].date或year[urldate].url.doi \subsubsection{电子资源/online} \begin{refentry}{}{} -电子资源对应的biblatex的entrytype为:online或electronic。文献类型标识用EB表示。 +电子资源对应的biblatex的entrytype为:online或electronic或者www。文献类型标识用EB表示。(注意:biblatex将electronic或www作为online条目类型的别名,对于标准样式来说这两者出现在bib文件中等同于online,但这种等同标准样式是在驱动层进行处理的,而gb7714样式还需要处理文献类型标识,本样式文件做了进一步支持。因此bib文件中也可以直接使用electronic和www) -其著录格式为(参考GB/T 7714-2015第4.6节):\\ +\paragraph{其著录格式为}(参考GB/T 7714-2015第4.6节):\\ 主要责任者.题名:其他题名信息[文献类型标识/文献载体标识].出版地:出版者,出版年:引文页码(更新或修改日期)[引用日期].获取和访问路径.数字对象唯一标识符. \end{refentry} 其对应的biblatex数据域为: -\begin{codetex}{电子资源/online条目的域格式}{eg:onlinefieldfmt} -author.title:subtitle或titleaddon[usera].address或location:publisher,date或year:pages(endyear)[urldate].url.doi +\begin{codetex}{电子资源/online/electronic/www条目的域格式}{eg:onlinefieldfmt} +author.title:subtitle或titleaddon[usera].address或location:publisher,date或year:pages(date/enddate/eventdate)[urldate].url.doi \end{codetex} -以上是GB/T 7714-2015直接给出的条目类型,但还有一些类型并没有给出著录格式,但在例子中也有所体现,本bbx文件根据这些例子,给出了著录格式。 +注意: 尽管GB/T 7714-2015中给出的著录格式包含出版地和出版者,但通常情况下具有出版地和出版者的文献会归类到其它条目类型中,至于存在的url信息,只要标识文献载体即可。所以一般情况下(出版地:出版者,出版年:引文页码)这些信息在online[EB]这一类型中很少出现,所以默认情况下,gb7714-2015样式并不处理这些信息,而只包括由date表示的更新或修改日期,urldate标识的引用日期以及后面的内容。如果存在出版信息的复杂情况,更新或修改日期可以利用enddate/eventdate表示,但gb7714-2015样式中需要做相应的处理。 + +以上是GB/T 7714-2015直接给出的条目类型,但还有一些类型并没有给出著录格式,但在例子中也有所体现,本样式文件根据这些例子,给出了著录格式。 \subsubsection{汇编或论文集/collection} \begin{refentry}{}{} 汇编文献对应的biblatex的entrytype为:collection。文献类型标识用G表示。 -其著录格式,采用与book一致的格式。 +\paragraph{其著录格式为} 采用与book一致的格式。 \end{refentry} \subsubsection{汇编或论文集析出中的文献/incollection} \begin{refentry}{}{} 汇编中的析出文献对应的biblatex的entrytype为:incollection。文献类型标识用G表示。 -其著录格式,采用与inbook一致的格式。 +\paragraph{其著录格式为} 采用与inbook一致的格式。 \end{refentry} \subsubsection{学位论文/thesis} \begin{refentry}{}{} -学位论文对应的biblatex的entrytype为:thesis。文献类型标识用D表示。 +学位论文对应的biblatex的entrytype为:thesis。文献类型标识用D表示。(注意:biblatex将mastersthesis或phdthesis作为thesis条目类型的别名,对于标准样式来说这两者出现在bib文件中基本等同于thesis,但却会增加type信息。但这种等同,标准样式是在驱动层进行处理的,而gb7714样式还需要处理文献类型标识并且不需要type信息,本样式文件做了进一步支持。因此bib文件中也可以使用mastersthesis和phdthesis)。 + +\paragraph{其著录格式为} 由biblatex的标准thesis格式修改得到。 -其著录格式,由biblatex的标准thesis格式修改得到。 +主要责任者.题名:其他题名信息[文献类型标识/文献载体标识].其他责任者.出版地:出版者,出版年:引文页码[引用日期].获取和访问路径.数字对象唯一标识符. \end{refentry} +其对应的biblatex数据域为: +\begin{codetex}{学位论文/thesis/mastersthesis/phdthesis条目的域格式}{eg:thesisfieldfmt} +author.title:subtitle或titleaddon[usera].translator.address或location:publisher,date或year:pages[urldate].url.doi +\end{codetex} + \subsubsection{报告/report} \begin{refentry}{}{} -报告对应的biblatex的entrytype为:report。文献类型标识用R表示。 +报告对应的biblatex的entrytype为:report。文献类型标识用R表示。(注意:biblatex将techreport作为report条目类型的别名,对于标准样式来说techreport出现在bib文件中等同于report,但这种等同标准样式是在驱动层进行处理的,而gb7714样式还需要处理文献类型标识,本样式文件做了进一步支持。因此bib文件中也可以直接使用techreport。) -其著录格式由biblatex的标准report格式修改得到。格式为: +\paragraph{其著录格式为} (由biblatex的标准report格式修改得到,注意当出版地和出版者不存在时忽略这两项) -主要责任者.题名:其他题名信息[文献类型标识/文献载体标识].其他责任者.版本项.出版地:出版者,出版年:引文页码[引用日期].获取和访问路径.数字对象唯一标识符. +主要责任者.题名:其他题名信息[文献类型标识/文献载体标识].其他责任者.类型.号码.版本项.出版地:出版者,出版年:引文页码[引用日期].获取和访问路径.数字对象唯一标识符. \end{refentry} 其对应的biblatex数据域为: -\begin{codetex}{报告/report条目的域格式}{eg:reportfieldfmt} -author.title:subtitle或titleaddon[usera].translator.version.address或location:publisher,date或year:pages[urldate].url.doi +\begin{codetex}{报告/report/techreport条目的域格式}{eg:reportfieldfmt} +author.title:subtitle或titleaddon[usera].translator.type number.version.address或location:publisher,date或year:pages[urldate].url.doi \end{codetex} +注意:因为有的报告文献可能存在类型和报告号信息,比如AIAA 9076或AD 730029等,所以著录格式需要有所体现,而这两个数据体现在type和number两个域中,或者在version域中体现也可,而对于标题中的出现的报告号,可以直接在标题或子标题或者附加标题中体现。 + \subsubsection{手册或档案/manual} \begin{refentry}{}{} 手册和档案采用一种格式,对应的biblatex的entrytype为:manual。文献类型标识用A表示。 -其著录格式为,直接采用report的格式,而不是标准样式中的manual格式,这种方式下,当没有出版地和出版者时,完全省略,因为GB/T 7714-2015并没有明确这种情况怎么处理。 +\paragraph{其著录格式为} 直接采用report的格式,而不是标准样式中的manual格式,这种方式下,当没有出版地和出版者时,完全省略,因为GB/T 7714-2015并没有明确这种情况怎么处理。 \end{refentry} -需要注意: report和manual的版本信息放在version域中,而不是book等条目的edition域中。report的机构采用的是institution域,而manual默认是organization域,为了直接使用report的样式,可以把organization域转成institution域。而档案就直接用手册表示。 +需要注意: report和manual的版本信息放在version域中,而不是book等条目的edition域中。report的机构采用的是institution域,而manual默认是organization域,为了直接使用report的样式,直接把organization域转成institution域。而档案就直接用手册表示。 \subsubsection{未出版物/unpublished} \begin{refentry}{}{} 未出版物,对应的biblatex的entrytype为:unpublished。文献类型标识用Z表示。 -其著录格式为,也直接采用report格式处理。 +\paragraph{其著录格式为} 也直接采用report格式处理。 \end{refentry} \subsubsection{会议录或会议文集/proceedings} \begin{refentry}{}{} 会议文集的biblatex的entrytype为:proceedings。文献类型标识用C表示。 -其著录格式,采用与book类似的格式。 +\paragraph{其著录格式为} 采用与book类似的格式。 \end{refentry} \subsubsection{会议文集中析出的文献/inproceedings} \begin{refentry}{}{} -会议文集中析出的文献对应的biblatex的entrytype为:inproceedings。文献类型标识用C表示。 +会议文集中析出的文献对应的biblatex的entrytype为:inproceedings。文献类型标识用C表示。(注意:biblatex将conference作为inproceedings条目类型的别名,对于标准样式来说conference出现在bib文件中等同于inproceedings,但这种等同,标准样式是在驱动层进行处理的,而gb7714样式还需要处理文献类型标识,本样式文件做了进一步支持。因此bib文件中也可以直接使用conference。) -其著录格式,采用与inbook类似的格式。 +\paragraph{其著录格式为} 采用与inbook类似的格式。 \end{refentry} \subsection{其它满足GB/T 7714-2015著录格式要求的方法} @@ -459,6 +514,9 @@ entryset = {易仕和2013--,Yi2013--}, 带页码的引用\cite[见][49页]{蔡敏2006--}\parencite[见][49页]{Miroslav2004--} \pagescite{Peebles2001-100-100}\pagescite[][201-301]{Peebles2001-100-100} + +在页脚中引用和打印文献表\footnote{在脚注中引用\footcite{赵学功2001--}} + \footfullcite{赵学功2001--} \end{codetex} 其中,当不指定页码时,pagescite命令默认调用参考文献的页码数据进行输出,如果需要指定页码,那么需要在第二个[]内输入页码内容。 @@ -490,10 +548,121 @@ entryset = {易仕和2013--,Yi2013--}, 作者年制文中已有作者只需要年份和页码的情况,使用命令yearpagescite,而顺序制的情况下该命令与pagescite命令作用相同。 比如见赵耀东\yearpagescite[][205]{赵耀东1998--}和Simon\yearpagescite[][15]{Simon2001--}的文献。 + +在页脚中引用和打印文献表\footnote{在脚注中引用\footcite{赵学功2001--}} + \footfullcite{赵学功2001--} \end{codetex} -\section{各类参考文献著录格式测试} +\section{参考文献著录格式测试} + +\subsection{GB/T 7714-2015标准中的参考文献格式示例}\label{sec:eg:gb77142015} + +\begin{refsection} +普通图书(book) +\cite{张伯伟2002--} +\cite{2009-155-155} +\cite{胡承正2010-112-112} +\cite{美国妇产科医师学会2010-38-39} +\cite{1962-50-50} +\cite{汪昂1881--} +\cite{蒋有绪1998--} +\cite{中国企业投资协会2013--} +\cite{罗斯基2009--} +\cite{库恩2012--} +\cite{候文顺2010-119-119} +\cite{CRAWFPRD1995--} +\cite{IFLAI1977--} +\cite{OBRIEN1994--} +\cite{Kinchy2012-50-50} +\cite{Praetzellis2011-13-13} + +论文集(collection)、会议录(proceedings) +\cite{中国职工教育研究会1985--} +\cite{中国社会科学院台湾史研究中心2012--} +\cite{雷光春2012--} +\cite{陈志勇2011--} +\cite{Babu2014--} + +报告(report) +\cite{中华人民共和国国务院新闻办公室2013-04-16--} +\cite{汤万金2013-09-30--} +\cite{Calkin2011-8-9} +\cite{DTFHA1990--} +\cite{WHO1970--} + +学位论文(thesis) +\cite{马欢2011-27-27} +\cite{吴云芳2003--} +\cite{CALMS1965--} + +专利文献(patent) +\cite{张凯军2012-04-05--} +\cite{河北绿洲生态环境科技有限公司2001--} +\cite{KOSEKI2002--} + +标准文献(book,inbook,note=standard) +\cite{全国信息文献标准化技术委员会2010-3-3} +\cite{全国广播电视标准化技术委员会2007-1-1} +\cite{国家环境保护局科技标准司1996-2-3} +\cite{standardinfoiso158} + +专著中析出的文献(inbook) +\cite{1988-590-590} +\cite{白书农1998-146-163} +\cite{汪学军2002-22-25} +\cite{国家标准局信息分类编码研究所1988-59-92} +\cite{1977-49-49} +\cite{楼梦麟2011-11-12} +\cite{BUSECK1980-117-211} +\cite{FOURNEY1971-17-38} + +期刊中析出的文献(article) +\cite{杨洪升2013-56-75} +\cite{李炳穆2000-5-8} +\cite{于潇2012-1518-1523} +\cite{陈建军2010-93-93} +\cite{DESMARAIS1992-605-609} +\cite{Saito2006-169-176} +\cite{Walls2013-399-418} +\cite{Franz2013-1053-1062} +\cite{Park2010-696-715} + +报纸中析出的文献(article,note=news) +\cite{丁文祥2000--} +\cite{张田勤2000--} +\cite{傅刚2000--} +\cite{刘裕国2013-01-12--} + +电子资源(online) +\cite{萧钰2001--} +\cite{李强2012-05-03--} +\cite{Commonwealth--} +\cite{Dublin2012-06-14--} + + +\printbibliography[heading=subbibintoc,type=book,notkeyword=standard,title=【普通图书-著录格式示例】] +\defbibfilter{collections}{% +type=collection +or type=proceedings +or type=incollection +or type=inproceedings +} +\printbibliography[heading=subbibintoc,filter=collections,title=【论文集、会议录-著录格式示例】] +\printbibliography[heading=subbibintoc,type=report,title=【报告-著录格式示例】] +\printbibliography[heading=subbibintoc,type=thesis,title=【学位论文-著录格式示例】] +\printbibliography[heading=subbibintoc,type=patent,title=【专利-著录格式示例】] +\defbibfilter{standard}{% +( type=book or type=inbook ) +and keyword=standard +} +\printbibliography[heading=subbibintoc,filter=standard,title=【标准文献-著录格式示例】] +\printbibliography[heading=subbibintoc,type=inbook,notkeyword=standard,title=【专著中析出的文献-著录格式示例】] +\printbibliography[heading=subbibintoc,type=article,notkeyword=news,title=【期刊中析出的文献-著录格式示例】] +\printbibliography[heading=subbibintoc,type=article,keyword=news,title=【报纸析出的文献-著录格式示例】] +\printbibliography[heading=subbibintoc,type=online,title=【电子资源-著录格式示例】] +\end{refsection} + \subsection{测试:专著book和专著中的析出文献inbook}\label{sec:test:book} \begin{refsection} @@ -501,7 +670,7 @@ entryset = {易仕和2013--,Yi2013--}, \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} +\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--, @@ -540,7 +709,7 @@ Parsons2000nopubpages--,Parsons2000noauthor--} \begin{refsection} \begin{enumerate} - \item 标准引用\cite{国家标准局信息分类编码研究所1988-59-92,国家环境保护局科技标准司1996-2-3,全国广播电视标准化技术委员会2007-1-1,全国文献工作标准化委员会第七分委员会1986--,全国信息文献标准化技术委员会2010-3-3,中华人民共和国国家质量监督检验检疫总局2015,standardinfoiso158} + \item 标准引用\cite{国家标准局信息分类编码研究所1988-59-92,国家环境保护局科技标准司1996-2-3, 全国广播电视标准化技术委员会2007-1-1,全国文献工作标准化委员会第七分委员会1986--,全国信息文献标准化技术委员会2010-3-3,中华人民共和国国家质量监督检验检疫总局2015,standardinfoiso158} \end{enumerate} \printbibliography[heading=bibliography,title=【标准】] @@ -579,7 +748,7 @@ Chiani2004-1312-1318b,Chiani2003-840-845,Chiani2009-231-254} \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} + \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=【连续出版物中的析出文献】] @@ -606,7 +775,7 @@ Chiani2004-1312-1318b,Chiani2003-840-845,Chiani2009-231-254} \item 电子资源\cite{Commonwealth--,HOPKINSON--,OMG2003--,OCLC--,李强2012-05-03--,萧钰2001--,Alliance--,Dublin2012-06-14--,JabRef中文手册--,1989--} \end{enumerate} -\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} +\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} \printbibliography[heading=bibliography,title=【电子资源】] \end{refsection} @@ -630,7 +799,7 @@ Chiani2004-1312-1318b,Chiani2003-840-845,Chiani2009-231-254} \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--} + \cite{Lehman2013--,Lehman2015,Mittelbach2015--,Oetiker2011--,Robertson2011--,Sommerfeldt2011--,Umeki2010--, 胡振震2016,吴凌云2007--} \item 档案引用\cite{中国第一历史档案馆2001--} \item 未出版物引用\cite{包太雷2013--} \end{enumerate} @@ -704,8 +873,31 @@ Chiani2004-1312-1318b,Chiani2003-840-845,Chiani2009-231-254} \caption{顺序编码制序号标签右对齐}\label{bib:env:gb} \end{figure} -\section{biblatex高级功能及样式文件设计思路-待补充完善}\label{sec:biblatex:mech} -使用biblatex总的感受,biblatex相当完善和强大,作者制作的样式文件实现的功能和格式只是biblatex功能的很小一部分,biblatex提供的更多功能其实都没有用到。可以说,biblatex作者说的biblatex是参考文献问题的完整解决方案是名副其实的。biblatex宏包的一些功能,以及作者在设计样式文件时应用这些功能的思路和方法介绍如下: +\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等条目类型】] +\end{refsection} + +\subsection{测试:处理参考文献信息中\&等特殊字符}\label{sec:entrytype:compatibility} +\begin{refsection} +文献中\cite{ref-replace-char}的booktitle域中含有\%,\&,\#符号,样式文件自动处理使其符合tex代码规则。 + +\printbibliography[heading=bibliography,title=【处理参考文献信息中\&等特殊字符】] +\end{refsection} + +\section{样式文件设计思路及相关的biblatex高级功能}\label{sec:biblatex:mech} +使用biblatex总的感受,biblatex相当完善和强大,笔者制作的样式文件实现的功能和格式只是biblatex功能的很小一部分,biblatex提供的更多功能其实都没有用到。可以说,biblatex作为参考文献问题的一个完整解决方案是名副其实的。biblatex宏包的一些功能,以及笔者在设计样式文件时应用这些功能的思路和方法介绍如下: \begin{enumerate} \item 考虑到我国引用参考文献通常是中英文混合的情况,修改过程没有考虑针对中文的本地化处理,而是在英文本地化的基础(英文的本地化字符串设置文档是english.lbx)上添加一些中文要求的本地化字符串来使用。而为了区分使用中英文的字符串,对参考文献各条目内容进行中英文判断,若中文则使用中文字符串,若英文则使用英文字符串。 @@ -727,7 +919,7 @@ Chiani2004-1312-1318b,Chiani2003-840-845,Chiani2009-231-254} \item 标点的特点和机制 \begin{itemize} \item 标点符号设置比如:renewrobustcmd*\{\textbackslash bibinitperiod\}\{\}和renewcommand*\{\textbackslash revsdnamepunct\}\{\}等用于全局修改标点。 - \item 如isdot/adddot,adddot将原样(逐字,如实)句点转换为缩写点在有利用printtext输入原样字符的时候很重要比如[s.n.]中,比如title末尾。 + \item 如isdot/adddot,adddot将原样(逐字,如实)句点转换为缩写点在有利用printtext输入原样字符的时候很重要比如[s.n.] 中,比如title末尾。 \item 利用newunit输出的标点,需要后面遇到printfield等命令有内容才输出标点,这是标点的异步处理机制。 \item setunit*的作用是前面printtext等没有输出时候就不输出,见4.11.7.3节的应用以及出版项缺省时的代码处理。 \end{itemize} @@ -739,9 +931,49 @@ Chiani2004-1312-1318b,Chiani2003-840-845,Chiani2009-231-254} \item append的作用,给域添加信息 \item origfieldvalue来源 \item overwite选项有无的作用,无overwite时,只要域原有信息,那么就不在map,有overwite时,则进行重写。\emph{注意:使用append的时候也需要overwite选项}。 + \item 动态数据处理中利用正则表达式可以用来处理特殊字符,处理\%,\#直接在regexp中写字符都没有问题,但是对于\&字符就存在问题,所以对于该字符使用十六进制表示方法\verb|\x26|。 + \item 3.4版的biblatex可以使用foreach选项,而3.0版的biblatex只能一个域一个域的处理,意味着每一个域处理都要写一个map步。 \end{itemize} - \item 引用标签的生成机制,即责任者截短时的歧义消除问题,见4.11.4 Name Disambiguation节。 + \item biblatex数据模型与动态数据处理的关系。biblatex提供了数据模型定义功能,这在真正需要定义一些新的条目类型和域时是用的到的。但实际上,从本样式实践的经验看,为了biblatex的兼容性考虑,没有必要使用数据模型定义功能去费力的定义新的条目类型,而是直接利用动态数据处理来将bib 中的一些类型转换成biblatex支持的类型来的方便,如果一定要区分可以利用一些域的信息进行区分,比如note域等于news或standard。 + \begin{itemize} + \item biblatex做的别名处理是用DeclareDriverSourcemap做的,这是驱动层的映射。在本样式中,因为usera域是在用户层的映射中做的,所以biblatex做的默认别名处理还不够,还需要在用户层首先处理usera域。而因为DeclareDriverSourcemap 中会增加一些不需要的信息,这可以利用DeclareSourcemap,DeclarestyleSourcemap先进行映射,这样就避开了DeclareDriverSourcemap。或者在增加DeclareDriverSourcemap,将标准样式中的默认DeclareDriverSourcemap增加的信息去掉。 + \item 数据模型在blx-dm.DEF中,可以看到standard有条目类型定义,但域和约束没有定义,而biblatex标准样式默认做的别名处理中的其它一些条目比如electronic等时有域和约束定义的。 + \item 标准样式standard.BBX中的DeclareBibliographyAlias\{*\}\{misc\}将一些数据模型中没有定义的条目直接用misc条目的驱动处理,这不是驱动层的数据源映射,只是利用其驱动进行输出。由一个问题是DeclareBibliographyAlias\{newspaper\}\{article\}是否可以实现?还是要定义数据模型?从实践结果看是不需要定义数据模型的,而且驱动的别名处理可以实现类似驱动层映射的效果。比如: + 做了用户层映射后: + \begin{texlist} + \DeclareSourcemap{ + \maps[datatype=bibtex]{%增加文献标识符如[M],[J]等,下面首先生成这一信息 + \map{ + \pertype{newspaper}%增加一个新闻报纸的类型newspaper + \step[fieldset=usera, fieldvalue={N}]%因为没有专门的驱动,这句的目的是定义一个usera域,方便映射为article 后判断 + \step[fieldset=note, fieldvalue=news] + } + } + } + \end{texlist} + + 做别名处理: + \begin{texlist} + \DeclareBibliographyAlias{newspaper}{article}%定义驱动别名,以替代驱动层映射 + \end{texlist} + + 能达到驱动层或映射层中条目类型转换所实现的效果。 + \begin{texlist} + \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map{%尝试未定义数据模型的newspaper类型映射为article,newspaper完全是针对gb7714的新类型,在biblatex 中完全没有定义 + %但从实践看,并没有什么影响,映射过来就可以了。 + \step[typesource=newspaper, typetarget=article, final] + } + } + } + \end{texlist} + + \item 从实践看,数据模型中完全没有定义的条目类型newspaper也可以进行数据源映射。 + \end{itemize} + + \item 引用标签的生成机制,即责任者截短时的歧义消除问题,见4.11.4 Name Disambiguation 节。 \begin{itemize} \item uniquename的作用 \item uniquelist的作用 @@ -755,21 +987,21 @@ Chiani2004-1312-1318b,Chiani2003-840-845,Chiani2009-231-254} \item command的作用:一些设置和命令 \item sty中的代码 \end{itemize} - + \item biblatex的宏包选项增加 \begin{itemize} - \item 需要重点注意的是:宏包选项设置命令DeclareBibliographyOption中,如果设置string选项,并用ifstrequal判断出选项的参数,然后设置toggletrue或false,然后再后面根据toggle的true或false来展开内容,是不行的。因为后面的toggle判断先于设置toggletrue或false展开。这样,如果在文档正文中看,toggle设置为true没有问题,但就是没有bbx 文件中对应设置为true的展开。所以不能采用这样的方式。而应该采用直接在选项设置命令展开,不用在多一道toggle判断了。尝试代码可以见\pageref{up:161207}页中更新说明中的注释代码。 + \item 需要重点注意的是:宏包选项设置命令DeclareBibliographyOption中,如果设置string选项,并用ifstrequal判断出选项的参数,然后设置toggletrue或false,然后再后面根据toggle的true 或false来展开内容,是不行的。因为后面的toggle判断先于设置toggletrue或false展开。这样,如果在文档正文中看,toggle设置为true没有问题,但就是没有bbx 文件中对应设置为true 的展开。所以不能采用这样的方式。而应该采用直接在选项设置命令展开,不用在多一道toggle 判断了。尝试代码可以见\pageref{up:161207}页中更新说明中的注释代码。 \item 注意:ExecuteBibliographyOptions命令是用来执行选项的,如果不给出设置选项的值,那么使用默认的参数。比如设置了一个gb7714选项,并用ExecuteBibliographyOptions\{gb7714\}进行设置,那么相当于设置为gb7714=true \item 摒弃了上述说明的方式后,采用在选项执行代码中直接调用命令的方式,详见bbx文件。 \end{itemize} - + \item biblatex的宏包参考文献表的打印 \begin{itemize} \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{itemize} - + \end{enumerate} \section{样式文件一些需要说明的问题} @@ -777,13 +1009,35 @@ Chiani2004-1312-1318b,Chiani2003-840-845,Chiani2009-231-254} \begin{enumerate} \item 因为采用xelatex编译,所以样式文件直接采用UTF-8编码,没有考虑GBK编码。 + + \item \zhongdian{【Most Important】【注意】: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} + 相应的样式文件也需要修改,详见bbx文件内容。 \item \zhongdian{【Most Important】【注意】:当在顺序编码和作者年制的切换使用时,如果出错,可先清理一下辅助文件,清理完后,重新编译即可。} \item 需要注意:当bibtex键中含有中文的时候,texlive2015中的biblatex3.0版的对参考文献条目的超链接会出现问题,而texlive2016 中的biblatex3.4版则没有问题。 - \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}} 分别提供的样式文件,效果是类似的,也感谢两位作者的分享!。 - \item {\heiti 中文文献的拼音排序,可以利用biber进行处理,这个问题可以参考Casper Ti. Vector在biblatex 参考文献样式caspervector v0.2.6中的方法 \footnote{\url{https://gitlab.com/CasperVector/biblatex-caspervector}},特此说明,表示感谢!} @@ -807,7 +1061,9 @@ Chiani2004-1312-1318b,Chiani2003-840-845,Chiani2009-231-254} %上一段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 对于参考文献信息中一些特殊字符比如\&等,除了利用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文件内容。 @@ -815,29 +1071,7 @@ Chiani2004-1312-1318b,Chiani2003-840-845,Chiani2009-231-254} \item 消除可能多出来的空格方法,把相关的代码行结尾用\%符号注释。 - \item 不同版本的biblatex对于DeclareNameFormat的输入参数处理有所不同,比如: - - \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文件内容。 + \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}} 分别提供的样式文件,效果是类似的,也感谢两位作者的分享! \end{enumerate} @@ -861,17 +1095,21 @@ Chiani2004-1312-1318b,Chiani2003-840-845,Chiani2009-231-254} %\item backref的格式也可以修改一下。 %没有要求处理,但修改了,2016-1114,修改英文本地化字符串为引用页面。 - \item 到1.0e版为止,功能需求已经完全实现,剩下的问题可能是一些文献具有特殊信息或者特殊情况时带来的适应性问题,这需要经过大量的测试来发现问题。各位朋友如果发现什么问题,请邮件联系,作者会非常感谢! - \item shorthand的问题没有遇到,其应用可能需要进一步理解。 \item 当专著同时存在作者和编者的时候,GB/T 7714-2015没有明确的规定,所以目前样式文件中以biblatex标准样式的方式处理,这种处理因为与本地化相关,直接应用可能不好看的,也许需要修改。 + + \item 因为GB/T 7714-2015中给出的了一些著录格式,如果把这些著录格式作为一个严格标准,那么条目中只能出现其中规定的域,而往往在bib文件中可能存在一些另外的信息比如chapter等,而且从标准样式修改的驱动中也仍然带有这些域的处理,如果为了标准化规范化考虑,可以去掉国标中没有提到的域的信息,可能使得内容更为标准,这可以通过修改增加数据模型,数据源动态修改,驱动修改(驱动中目前存在较多的似乎用不到的域,而且意义不是非常明确,这个等到biblatex文档中文版完成后再结合它全面的进行梳理)三条路子做到,需要的可以在下一步实现(2017-0226)。 \end{enumerate} \subsection{下一步工作} \begin{enumerate} -\item 打算翻译biblatex宏包的说明文档和biber的说明文档,这个已经在进行中,完成了一部分,但因为只是业余时间做,可能最终完成的时间会比较长。如果有朋友觉得这个事情有意义,愿意一起来完成这个事情,非常欢迎,请email联系。 + \item 到1.0e版为止,功能需求已经完全实现,剩下的问题可能是一些文献具有特殊信息或者特殊情况时带来的适应性问题,这需要经过大量的测试来发现问题。各位朋友如果发现什么问题,请邮件联系,作者会非常感谢! + + \item 到1.0g版为止,进一步完善了样式宏包,该版本将是最后支持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 打算翻译biblatex宏包的说明文档和biber的说明文档,这个已经在进行中,完成了一部分,但因为只是业余时间做,可能最终完成的时间会比较长。如果有朋友觉得这个事情有意义,愿意一起来完成这个事情,非常欢迎,请email联系。 %\item 进一步完善上一节提到的问题。 %到1.0e版功能问题已经完全解决。 @@ -879,11 +1117,294 @@ Chiani2004-1312-1318b,Chiani2003-840-845,Chiani2009-231-254} \section{更新历史} %============================ +\updateinfo[2017-02-26]{update to version 1.0g}\label{up:170226} +\begin{enumerate} +\item 进一步增加兼容性,支持条目类型比如MASTERSTHESIS,PHDTHESIS,www,electronic,standard,techreport,conference等,支持本样式增加的newspaper类型。因此在bib文件中可以直接使用这些条目类型。具体的测试详见\ref{sec:entrytype:compatibility}节。 + + 为了实现兼容,主要从三个方面进行修改,包括用户层数据源映射,样式层的数据源映射,驱动。关于数据源映射和数据模型的原理详见\ref{sec:biblatex:mech}节。 + + 因为biblatex提供的一些类型的别名的处理是在驱动层数据源映射时处理,所以要实现完全的兼容,还需要在用户层或者样式层进一步处理,首先是标识符的问题。因为以前做的标识符处理时在用户层映射中,所以这里仍然如此: + \begin{texlist} + \map{ + \pertype{newspaper}%增加一个新闻报纸的类型newspaper + \step[fieldset=usera, fieldvalue={N}]%因为没有专门的驱动,这句的目的是定义一个usera 域,方便映射为article后判断 + \step[fieldset=note, fieldvalue=news] + } + \map{ + \pertype{standard}%兼容老的standard类型 + \step[fieldset=usera, fieldvalue={S}]%因为没有专门的驱动,这句的目的是定义一个usera 域,方便映射为book和inbook后判断 + \step[fieldset=note, fieldvalue=standard] + } + \map{ + \pertype{inproceedings} + \pertype{conference}%兼容老的conference类型 + \step[fieldset=usera, fieldvalue={C}] + \step[fieldsource=institution] %有时会把version和edition混淆,这里处理后就没有这个问题,可以直接用version + \step[fieldset=publisher, origfieldval] + \step[fieldsource=editor] % + \step[fieldset=bookauthor, origfieldval] + } + \map{ + \pertype{report} + \pertype{techreport}%techreport类型 + \step[fieldset=usera, fieldvalue={R}] + } + \map{ + \pertype{thesis} + \pertype{mastersthesis}%兼容老的mastersthesis和phdthesis类型 + \pertype{phdthesis} + \step[fieldset=usera, fieldvalue={D}] + } + \map{ + \pertype{online} + \pertype{electronic}%兼容老的electronic类型 + \pertype{www}%兼容老的www类型 + \step[fieldset=usera, fieldvalue={EB}] + } + \end{texlist} + + 其次,因为biblatex标准样式在处理条目别名是在驱动层的映射中,这里面引入了一些对于gb7714样式来说不需要的信息,比如type信息,因此需要将其去掉,所以在样式层映射中进行处理。因为standard条目可能用book也可能用inbook驱动输出,所以转换过程就需要有选择。这里有两种方式可以处理,一是用域是否存在进行判断(比如booktitle域),然后分别转换为book 类型和inbook类型,二是直接都转换成inbook类型,然后对inbook驱动进行修改,因为inbook 驱动与book驱动的差异仅在于所析出源文献那一块,所以,在驱动中用booktitle 域进行判断,如果该域不存在,那么去掉这一块的处理,inbook驱动可以等价于book驱动,但是这种方式中处理标识符后面的标点可能存在问题,biblatex 中处理标点的机制有很多好处,但是当样式作者在修改域格式是引入一些诸如[]之类符号时处理时比较麻烦的。这里采用第一种方式。 + 样式层映射为: + \begin{texlist} + \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + % \map{%尝试未定义数据模型的newspaper类型映射为article,newspaper完全是针对gb7714的新类型,在biblatex中完全没有定义 + % %但从实践看,并没有什么影响,映射过来就可以了。这一段可以用下面的驱动层别名映射替代,所以这里注释掉用下面的\DeclareBibliographyAlias命令 + % \step[typesource=newspaper, typetarget=article, final] + % } + \map{%尝试未定义数据模型的standard类型映射为book,standard类型在blx-dm中有出现,但仅定义了类型,域和约束等都没有定义 + \step[fieldsource=booktitle,final]%当存在booktitle域是映射为inbook + \step[typesource=standard, typetarget=inbook, final] + } + \map{%尝试未定义数据模型的standard类型映射为book,standard类型在blx-dm中有出现,但仅定义了类型,域和约束等都没有定义 + \step[typesource=standard, typetarget=book, final]%当不存在booktitle域是映射为book + } + \map{%先于标准样式的driver层映射,将其先映射过来,并取消type设置 + \step[typesource=mastersthesis, typetarget=thesis, final] + %\step[fieldset=type, fieldvalue=mathesis] + } + \map{%先于标准样式的driver层映射,将其先映射过来,并取消type设置 + \step[typesource=phdthesis, typetarget=thesis, final] + %\step[fieldset=type, fieldvalue=phdthesis] + } + \map{%先于标准样式的driver层映射,将其先映射过来,并取消type设置 + \step[typesource=techreport, typetarget=report, final] + %\step[fieldset=type, fieldvalue=techreport] + } + } + } + \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 为方便bib文件生成,构建可以从gb7714-2015格式的参考文献表文本转bib文件的perl程序,利用它可以批量解析参考文献信息并转换为bib数据源文件。详见:\href{run:./gb7714texttobib.pl}{gb7714texttobib.pl},测试文件见:\href{run:./gb7714texteg.dat}{gb7714texteg.dat}。 + +\item 在输出标识符的usera域格式中考虑标准样式的url选项,以便实现对是否打印url和urldate的控制。 + \begin{texlist} + \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{gbtypeflagn}{%用于报纸newspaper + \iftoggle{bbx:url}{\iffieldundef{url}%当存在url时,增加一个OL标识符 + {\nobreak\printtext{[}\nobreak N\printtext{]}\nobreak}% + {\nobreak\printtext{[}\nobreak N\printtext{\texttt{/}OL]}\nobreak}% + }{\nobreak\printtext{[}\nobreak N\printtext{]}\nobreak}} + + \DeclareFieldFormat{gbtypeflags}{%用于标准standard + \iftoggle{bbx:url}{\iffieldundef{url}%当存在url时,增加一个OL标识符 + {\nobreak\printtext{[}\nobreak S\printtext{]}\nobreak}% + {\nobreak\printtext{[}\nobreak S\printtext{\texttt{/}OL]}\nobreak}% + }{\nobreak\printtext{[}\nobreak S\printtext{]}\nobreak}} + \end{texlist} + +\item 在一些条目类型如inbook等的标识符后面(如[M]//)加入一个不可断行短空格,使紧跟其后的单词能正确断行。 + \begin{texlist} + \usebibmacro{title}% + %\nopunct + %\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} + +\end{enumerate} + +%============================ +\updateinfo[2016-12-31]{update to version 1.0f}\label{up:161231} +\begin{enumerate} +\item 利用biblatex提供的iffieldequalstr函数替换用于判断note域值等于new或standard的函数,比如: +\begin{texlist} +%case 1: +%\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} %可以利用这一函数代替 + +%case 2: +\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% + +%case 3: +\iffieldequalstr{note}{news}{\usebibmacro{newsdate}}%判断是否为报纸 + {\usebibmacro{date}}% +% \def\comparetmp{news}\edef\comparetmpb{\thefield{note}}% +% \ifx\comparetmp\comparetmpb% +% \usebibmacro{newsdate}% +% \else% +% \usebibmacro{date}% +% \fi + +%case 4: +\renewbibmacro*{publisher+location+date}{% +\testCJKfirst{\thefield{title}}% +%\testifnoteeqstd% +\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}}}}% +{\printlist{publisher}\setunit*{\addcomma\addspace}}% +%\addcomma\addspace% +\usebibmacro{date}% + %\newunit %去掉这个标点 +} +\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版解决编组符号包围的责任者的中英文判断问题的时候,没有测试对texlive2015的兼容性,所以导致一些错误。因为使用了xstring宏包的功能,但texlive2015的biblatex3.0版本不默认加载xstring宏包,所以在修改样式文件,在其中加载一下该宏包。 +\begin{texlist} +\RequirePackage{xstring}%为兼容texlive2015的biblatex3.0不加载xstring包的问题 +\end{texlist} + +\end{enumerate} + +%============================ \updateinfo[2016-12-07]{update to version 1.0e}\label{up:161207} \begin{enumerate} \item 应海阔天空和xmtangjun等朋友的要求,在同一文献中可以使用上标或非上标的标注方式,修改顺序编码制的标注样式文件,去掉parencite命令的上标模式,恢复非上标方式。这样可以在同一文章中使用cite命令标注上标,而parencite命令标注非上标。而作者年制没有这一问题,不做修改。具体的效果见第\ref{sec:cite:cmd:test}节的内容。 - -\item 给宏包增加了一个选项align,用于控制顺序编码制的参考文献表的标签对齐方式,默认是right即右对齐,可以设置left即左对齐,也可以设置gb7714-2015,即以各条参考文献自身为基准对齐实现对齐。效果见第\ref{sec:align:test}节的内容。增加一个选项,真正实现起来并不复杂,但在未明白其运行机制之前尝试了好长时间,显得很麻烦,具体的机制见第\ref{sec:biblatex:mech}节。 + +\item 给宏包增加了一个选项align,用于控制顺序编码制的参考文献表的标签对齐方式,默认是right即右对齐,可以设置left即左对齐,也可以设置gb7714-2015,即以各条参考文献自身为基准对齐实现对齐。效果见第\ref{sec:align:test}节的内容。增加一个选项,真正实现起来并不复杂,但在未明白其运行机制之前尝试了好长时间,显得很麻烦,具体的机制见第\ref{sec:biblatex:mech} 节。 修改代码如下: \begin{texlist} %标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 @@ -952,7 +1473,7 @@ Chiani2004-1312-1318b,Chiani2003-840-845,Chiani2009-231-254} {\endgroup} {\itemcmd}} \end{texlist} - + \item map中当有append选项时也需要overwrite选项,这不知道是不是texlive 2016中biber升级后的原因。之前使用texlive2015的时候没有问题。所以修改为: \begin{texlist} @@ -1085,9 +1606,9 @@ Chiani2004-1312-1318b,Chiani2003-840-845,Chiani2009-231-254} 还有beamer类中很多不同域之间的空格似乎比其它类中更宽,不知道原因,难道是beamer重新定义了\textbackslash space命令? -\item 在参考文献表中加入逐字文本(原样文本,如实文本),也就是直接插入文本信息,或者用printtext插入都会导致一些问题,上面的第1点就是典型问题之一,还比如出版项缺省等问题。在有利用printtext插入原样文本的时候,要特别注意在driver中该命令前后几行的代码后加注释,否则容易带入空格,注释后就可以消除。 +\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一致,这样就不会出现不判断的问题。 @@ -1410,7 +1931,7 @@ nopublisher = {[s.n.]} %============================ \updateinfo[2016-10-04]{update} \begin{enumerate} -\item 今天广州的秋平同学使用更新后的biblatex3.6版出错。是因为bbx文件中的版本判断只有3.4和其它,所以应急加了一段对于3.6的判断。这个问题以后可能还会出现因为biblatex会不断的更新,所以需要设计一个更合理的判断,这个等实现以后再更新。 +\item 今天广州的秋平同学使用更新后的biblatex3.6版出错。是因为bbx文件中的版本判断只有3.4和其它,所以应急加了一段对于3.6 的判断。这个问题以后可能还会出现因为biblatex会不断的更新,所以需要设计一个更合理的判断,这个等实现以后再更新。 \item 在说明文档中增加了一些说明,修改了一些错别字。 \end{enumerate} @@ -1470,110 +1991,6 @@ nopublisher = {[s.n.]} -\section{参考文献表著录格式示例}\label{sec:eg:gb77142015} -\begin{refsection} -普通图书(book) -\cite{张伯伟2002--} -\cite{2009-155-155} -\cite{胡承正2010-112-112} -\cite{美国妇产科医师学会2010-38-39} -\cite{1962-50-50} -\cite{汪昂1881--} -\cite{蒋有绪1998--} -\cite{中国企业投资协会2013--} -\cite{罗斯基2009--} -\cite{库恩2012--} -\cite{候文顺2010-119-119} -\cite{CRAWFPRD1995--} -\cite{IFLAI1977--} -\cite{OBRIEN1994--} -\cite{Kinchy2012-50-50} -\cite{Praetzellis2011-13-13} - -论文集(collection)、会议录(proceedings) -\cite{中国职工教育研究会1985--} -\cite{中国社会科学院台湾史研究中心2012--} -\cite{雷光春2012--} -\cite{陈志勇2011--} -\cite{Babu2014--} - -报告(report) -\cite{中华人民共和国国务院新闻办公室2013-04-16--} -\cite{汤万金2013-09-30--} -\cite{Calkin2011-8-9} -\cite{DTFHA1990--} -\cite{WHO1970--} -学位论文(thesis) -\cite{马欢2011-27-27} -\cite{吴云芳2003--} -\cite{CALMS1965--} - -专利文献(patent) -\cite{张凯军2012-04-05--} -\cite{河北绿洲生态环境科技有限公司2001--} -\cite{KOSEKI2002--} - -标准文献(book,inbook,note=standard) -\cite{全国信息文献标准化技术委员会2010-3-3} -\cite{全国广播电视标准化技术委员会2007-1-1} -\cite{国家环境保护局科技标准司1996-2-3} -\cite{standardinfoiso158} - -专著中析出的文献(inbook) -\cite{1988-590-590} -\cite{白书农1998-146-163} -\cite{汪学军2002-22-25} -\cite{国家标准局信息分类编码研究所1988-59-92} -\cite{1977-49-49} -\cite{楼梦麟2011-11-12} -\cite{BUSECK1980-117-211} -\cite{FOURNEY1971-17-38} - -期刊中析出的文献(article) -\cite{杨洪升2013-56-75} -\cite{李炳穆2000-5-8} -\cite{于潇2012-1518-1523} -\cite{陈建军2010-93-93} -\cite{DESMARAIS1992-605-609} -\cite{Saito2006-169-176} -\cite{Walls2013-399-418} -\cite{Franz2013-1053-1062} -\cite{Park2010-696-715} - -报纸中析出的文献(article,note=news) -\cite{丁文祥2000--} -\cite{张田勤2000--} -\cite{傅刚2000--} -\cite{刘裕国2013-01-12--} - -电子资源(online) -\cite{萧钰2001--} -\cite{李强2012-05-03--} -\cite{Commonwealth--} -\cite{Dublin2012-06-14--} - - -\printbibliography[heading=subbibintoc,type=book,notkeyword=standard,title=【普通图书-著录格式示例】] -\defbibfilter{collections}{% -type=collection -or type=proceedings -or type=incollection -or type=inproceedings -} -\printbibliography[heading=subbibintoc,filter=collections,title=【论文集、会议录-著录格式示例】] -\printbibliography[heading=subbibintoc,type=report,title=【报告-著录格式示例】] -\printbibliography[heading=subbibintoc,type=thesis,title=【学位论文-著录格式示例】] -\printbibliography[heading=subbibintoc,type=patent,title=【专利-著录格式示例】] -\defbibfilter{standard}{% -( type=book or type=inbook ) -and keyword=standard -} -\printbibliography[heading=subbibintoc,filter=standard,title=【标准文献-著录格式示例】] -\printbibliography[heading=subbibintoc,type=inbook,notkeyword=standard,title=【专著中析出的文献-著录格式示例】] -\printbibliography[heading=subbibintoc,type=article,notkeyword=news,title=【期刊中析出的文献-著录格式示例】] -\printbibliography[heading=subbibintoc,type=article,keyword=news,title=【报纸析出的文献-著录格式示例】] -\printbibliography[heading=subbibintoc,type=online,title=【电子资源-著录格式示例】] -\end{refsection} |