From 46128c8be93ce0af49085f64ba84fbf08d1406c2 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 20 Mar 2017 22:56:33 +0000 Subject: biblatex-gb7714-2015 (20mar17) git-svn-id: svn://tug.org/texlive/trunk@43555 c570f23f-e606-0410-a88d-b1316a301751 --- .../doc/latex/biblatex-gb7714-2015/README.md | 116 +- .../biblatex-gb7714-2015-beamer.pdf | Bin 54860 -> 54853 bytes .../biblatex-gb7714-2015-content.tex | 807 +++++++--- .../biblatex-gb7714-2015-preamble.tex | 12 +- .../biblatex-gb7714-2015/biblatex-gb7714-2015.pdf | Bin 689535 -> 738441 bytes .../biblatex-gb7714-2015/biblatex-gb7714-2015.tex | 2 + .../biblatex-gb7714-2015ay-beamer.pdf | Bin 54811 -> 54793 bytes .../biblatex-gb7714-2015ay.pdf | Bin 702536 -> 755537 bytes .../biblatex-gb7714-2015ay.tex | 2 + .../biblatex-gb7714-2015/egbibenv-gb7714-2015.pdf | Bin 58936 -> 58897 bytes .../latex/biblatex-gb7714-2015/egbibenv-left.pdf | Bin 58861 -> 58835 bytes .../latex/biblatex-gb7714-2015/egbibenv-right.pdf | Bin 58878 -> 58843 bytes .../latex/biblatex-gb7714-2015/egspecialchar.bib | 11 + .../doc/latex/biblatex-gb7714-2015/example.bib | 266 ++-- .../latex/biblatex-gb7714-2015/gb7714texteg.dat | 214 +++ .../latex/biblatex-gb7714-2015/gb7714texttobib.pl | 1670 ++++++++++++++++++++ .../doc/latex/biblatex-gb7714-2015/gbtclear.sh | 8 - .../doc/latex/biblatex-gb7714-2015/makeclear.sh | 8 + .../doc/latex/biblatex-gb7714-2015/makefile.sh | 4 +- .../latex/biblatex-gb7714-2015/makefilebeamer.sh | 4 +- .../source/latex/biblatex-gb7714-2015/gbtclear.bat | 3 - .../latex/biblatex-gb7714-2015/makeclear.bat | 3 + .../source/latex/biblatex-gb7714-2015/makefile.bat | 104 +- .../latex/biblatex-gb7714-2015/makefilebeamer.bat | 82 +- .../tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx | 279 +++- .../tex/latex/biblatex-gb7714-2015/gb7714-2015.cbx | 3 +- .../latex/biblatex-gb7714-2015/gb7714-2015ay.bbx | 269 +++- .../latex/biblatex-gb7714-2015/gb7714-2015ay.cbx | 3 +- 28 files changed, 3272 insertions(+), 598 deletions(-) create mode 100644 Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egspecialchar.bib create mode 100644 Master/texmf-dist/doc/latex/biblatex-gb7714-2015/gb7714texteg.dat create mode 100644 Master/texmf-dist/doc/latex/biblatex-gb7714-2015/gb7714texttobib.pl delete mode 100644 Master/texmf-dist/doc/latex/biblatex-gb7714-2015/gbtclear.sh create mode 100644 Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makeclear.sh delete mode 100644 Master/texmf-dist/source/latex/biblatex-gb7714-2015/gbtclear.bat create mode 100644 Master/texmf-dist/source/latex/biblatex-gb7714-2015/makeclear.bat diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/README.md b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/README.md index 3e64dec95dd..da4f2bc139f 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/README.md +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/README.md @@ -1,8 +1,11 @@ -Date of last change:2016-12-07 to version v1.0e +Date of last change:2017-02-26 to version v1.0g + # biblatex-gb7714-2015: a biblatex style package --------------------------------------------------------- +## introduction + Maintainer: huzhenzhen Homepage: @@ -14,13 +17,22 @@ A biblatex implementation of the GBT7714-2015 bibliography style for Chinese use The biblatex-gb7714-2015 package provides an implementation of the bibliography style of the GBT7714-2015 bibliography style. This implementation follows GBT7714-2015 standard, and can be used simply by loading biblatex with the appropriate option -%for numerical sequence +## usage +%for numerical sequence style + + `\usepackage[backend=biber,style=gb7714-2015]{biblatex}` + + %add a option "align" for the numerical label, option value maybe "right" or "left" or "gb7714-2015" -`\usepackage[backend=biber,style=gb7714-2015]{biblatex}` + `\usepackage[backend=biber,style=gb7714-2015,align=gb7714-2015]{biblatex}` -%for author year sequence +%for author year style -`\usepackage[backend=biber,style=gb7714-2015ay]{biblatex}` + `\usepackage[backend=biber,style=gb7714-2015ay]{biblatex}` + +%for perl script transformation tool(only for the numerical style) + + `perl gb7714texttobib.pl in=textfilename out=bibfilename` A demonstration database is provided to show how to format input for the style. The biblatex-gb7714-2015 style works with texlive2014, texlive2015, texlive2016 and so on. @@ -28,63 +40,89 @@ please see the file 'biblatex-gb7714-2015.pdf' for more information! --------------------------------------------------------- -update history: +## update history: -date of change: 2016-12-07 to version v1.0e +### date of change: 2017-02-26 to version v1.0g, the last version support texlive2015 +* Changes to pkg code: + - "*.bbx": deal the compatibility problem for some entrytypes: mastersthesis,phdthesis,www,electronic,standard,techreport,conference, and newspaper. these entrytypes can be used in the source bib file. + - "*.bbx": for online type, the revised/changed date is denoted by date/enddate/eventdate + - "*.bbx": modify the usera field's format, taking into account the standard style's package option url + - "*.bbx": add a no breakthinspace after the entrytype identifier (like [M]//) to make the next word break correctly + - "*.bbx": add a feature for automatically dealing with special character(like &/%/#),compatibility with texlive2015 is done +* Changes to documentation: + - biblatex-gb7714-2015.tex: revise this document and add some explication + - *.bib: refine the bib source file +* Changes to tool code: + - "*.pl": realize the feature of transformation from gb7714-2015 style bibography text to bib file using perl script gb7714texttobib.pl -* Changes to pkg code:to fix a few bugs -- "*.bbx": add overwite option when map keywords field with note field -- "*.bbx": modify the punction after publisher in gb7714-2015.bbx -- "*.bbx": modify some newbibmacro* to renewbibmacro* to eleminate warnings -- "*.bbx": add a package option align=right,left,gb7714-2015 for users to choose numeric label align style -- "*.cbx": restore the origin parencite definition for users to use superscript citecmd(cite) and inline citecmd(parencite) in one document +### date of change: 2016-12-31 to version v1.0f + +* Changes to pkg code: + - "*.bbx": use function iffieldequalstr instead of customized function for testing the value of note field eqs standard/news + - "*.bbx": deal the compatibility problem for texlive2015, include: + 1. DeclareBibliographyOption of biblatex 3.0 in texlive2015 cmd has no type argument + 2. pkg xstring is not loaded with biblatex 3.0 in texlive2015 + 3. new defined bibliography environment with gb7714-2015 label align sytle not works +* Changes to documentation: + - biblatex-gb7714-2015.tex: add an explaination for the author field input format + + +### date of change: 2016-12-07 to version v1.0e + +* Changes to pkg code:to fix a few bugs + - "*.bbx": add overwite option when map keywords field with note field + - "*.bbx": modify the punction after publisher in gb7714-2015.bbx + - "*.bbx": modify some newbibmacro* to renewbibmacro* to eleminate warnings + - "*.bbx": add a package option align=right,left,gb7714-2015 for users to choose numeric label align style + - "*.cbx": restore the origin parencite definition for users to use superscript citecmd(cite) and inline citecmd(parencite) in one document * Changes to documentation: -- biblatex-gb7714-2015.tex: add a summary of the features of the package and a compile guide -- *.sh/bat: add the autoexec files for windows/linux OS -- *.bib: refine the bib database + - biblatex-gb7714-2015.tex: add a summary of the features of the package and a compile guide + - *.bib: refine the bib database +* Changes to tool code: + - *.sh/bat: add the autoexec files for windows/linux OS -date of change: 2016-11-24 to version v1.0d +### date of change: 2016-11-24 to version v1.0d * Changes to pkg code:to fix a few bugs to work with beamer class correctly -- "*.bbx": redefine the DeclareFieldFormat for title to eleminate the redundant dot after title in beamer class -- "*.bbx": add some comment in drivers to eleminate the needless space + - "*.bbx": redefine the DeclareFieldFormat for title to eleminate the redundant dot after title in beamer class + - "*.bbx": add some comment in drivers to eleminate the needless space * Changes to documentation: -- biblatex-gb7714-2015.tex: revise this document and add some explication + - biblatex-gb7714-2015.tex: revise this document and add some explication -date of change: 2016-11-14 to version v1.0c +### date of change: 2016-11-14 to version v1.0c * Changes to pkg code:to fix a few bugs -- "*ay.bbx": add noauthor or "佚名" for the authoryear style -- "*ay.bbx": add some map cmds to automatically fill the userb field for sorting of the authoryear style -- "*ay.bbx": add a command yearpagescite for the authoryear style -- "*.bbx": add a dot after the null publisher with nothing followed -- "*.bbx": modify the english local string backrefpage to chinese "引用页:" -- "*ay.bbx": add some options such as uniquelist,labeldate,uniquename for the authoryear style + - "*ay.bbx": add noauthor or "佚名" for the authoryear style + - "*ay.bbx": add some map cmds to automatically fill the userb field for sorting of the authoryear style + - "*ay.bbx": add a command yearpagescite for the authoryear style + - "*.bbx": add a dot after the null publisher with nothing followed + - "*.bbx": modify the english local string backrefpage to chinese "引用页:" + - "*ay.bbx": add some options such as uniquelist,labeldate,uniquename for the authoryear style * Changes to documentation: -- biblatex-gb7714-2015.tex: revise this document. + - biblatex-gb7714-2015.tex: revise this document. -date of change: 2016-11-11 to version v1.0b +### date of change: 2016-11-11 to version v1.0b * Changes to pkg code:to match the GBT7714-2015 standard -- "*.bbx": change a few local strings from english.blx such as bibliography,references -- "*.bbx": set new maxnamenumber for authoryear style -- "*.bbx": add translator field and modify version format for report and manual driver -- "*.bbx": remove the space before edition/version field, which was brought in with testCJKfirst function + - "*.bbx": change a few local strings from english.blx such as bibliography,references + - "*.bbx": set new maxnamenumber for authoryear style + - "*.bbx": add translator field and modify version format for report and manual driver + - "*.bbx": remove the space before edition/version field, which was brought in with testCJKfirst function * Changes to documentation: -- biblatex-gb7714-2015.tex: correct a few flaws and add more instructions. -- "*.bib":: refine some entries + - biblatex-gb7714-2015.tex: correct a few flaws and add more instructions. + - "*.bib":: refine some entries -date of change: 2016-10-23 to version v1.0a +### date of change: 2016-10-23 to version v1.0a * Changes to pkg code: -- "*.bbx","*.cbx": add some information like version information. + - "*.bbx","*.cbx": add some information like version information. * Changes to documentation: -- biblatex-gb7714-2015.tex: correct a few flaws . -- paperone.bib: refine some entries. \ No newline at end of file + - biblatex-gb7714-2015.tex: correct a few flaws . + - paperone.bib: refine some entries. diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015-beamer.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015-beamer.pdf index 6e3dde79191..1ea58285870 100644 Binary files a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015-beamer.pdf and b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015-beamer.pdf differ 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,29 +1095,316 @@ 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版功能问题已经完全解决。 \end{enumerate} \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} diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015-preamble.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015-preamble.tex index 24d005adb02..7231f74b579 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015-preamble.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015-preamble.tex @@ -23,7 +23,6 @@ pdfstartview=FitH,linkcolor=blue,anchorcolor=violet,citecolor=magenta]{hyperref} %\addcontentsline{toc}{subsection}{#1} \centering\subsubsection*{#1}}% -\addbibresource[location=local]{example.bib} %参考文献的bib文件 % \markboth{#1}{#1}} %注意在实际使用中用titsec宏包的页眉页脚也有点问题,一旦给出markboth就会出现问题 @@ -285,4 +284,15 @@ itemsep=0pt,leftmargin=2em,itemindent=0em}%注意,font或format中的最后一 \else \begin{marglist} \item[#1] #2\end{marglist} \fi} \makeatother +\usepackage{filecontents} +\begin{filecontents}{egspecialchar.bib} +@Inproceedings{ref-replace-char, + Title = {Cognitive Radio and Cooperative Strategies for Power Saving in Multi-Standard Wireless Devices}, + Address = { Florence, Italy}, + Author = {Rodriguez, J. and P. Marques and A. Radwan and K. Moessner and R. Tafazolli and others}, + Booktitle = {Future % Network & Mobile # Summit 2010}, + Date = {June 2010} +} +\end{filecontents} + diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf index 16bb3bec85e..0c597c1a884 100644 Binary files a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf and b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf differ diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.tex index 17c30ba9160..da17559cc33 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.tex @@ -3,6 +3,8 @@ citestyle=gb7714-2015%,backref=true%gb,gbt7714_2005_n, ]{biblatex}%biber,caspervector \input{biblatex-gb7714-2015-preamble} %宏包和一些格式设置 +\addbibresource[location=local]{example.bib} +\addbibresource[location=local]{egspecialchar.bib} \begin{document} diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015ay-beamer.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015ay-beamer.pdf index 0808c0bbae0..0dababc353c 100644 Binary files a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015ay-beamer.pdf and b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015ay-beamer.pdf differ diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015ay.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015ay.pdf index d79e75c59fe..eec656645d2 100644 Binary files a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015ay.pdf and b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015ay.pdf differ diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015ay.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015ay.tex index c91f1d1bfe0..c0f64bf3d2a 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015ay.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015ay.tex @@ -3,6 +3,8 @@ citestyle=gb7714-2015ay%,backref=true%gb,gbt7714_2005_n, ]{biblatex}%biber,caspervector \input{biblatex-gb7714-2015-preamble} %宏包和一些格式设置 +\addbibresource[location=local]{example.bib} +\addbibresource[location=local]{egspecialchar.bib} \begin{document} diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbibenv-gb7714-2015.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbibenv-gb7714-2015.pdf index 5f94340b2e6..5a5f1ec6877 100644 Binary files a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbibenv-gb7714-2015.pdf and b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbibenv-gb7714-2015.pdf differ diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbibenv-left.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbibenv-left.pdf index 7d7b2f97485..a5d036df009 100644 Binary files a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbibenv-left.pdf and b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbibenv-left.pdf differ diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbibenv-right.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbibenv-right.pdf index 0fbf3b660e1..c9fa70b05cf 100644 Binary files a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbibenv-right.pdf and b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbibenv-right.pdf differ diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egspecialchar.bib b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egspecialchar.bib new file mode 100644 index 00000000000..6a40ee8ab21 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egspecialchar.bib @@ -0,0 +1,11 @@ +%% LaTeX2e file `egspecialchar.bib' +%% generated by the `filecontents' environment +%% from source `biblatex-gb7714-2015ay' on 2017/03/20. +%% +@Inproceedings{ref-replace-char, + Title = {Cognitive Radio and Cooperative Strategies for Power Saving in Multi-Standard Wireless Devices}, + Address = { Florence, Italy}, + Author = {Rodriguez, J. and P. Marques and A. Radwan and K. Moessner and R. Tafazolli and others}, + Booktitle = {Future % Network & Mobile # Summit 2010}, + Date = {June 2010} +} diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example.bib b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example.bib index 7754a86c6cb..025e941bc6a 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example.bib +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example.bib @@ -1,5 +1,4 @@ -% This file was created with JabRef 2.11. -% Encoding: UTF8 +% Encoding: UTF-8 @Book{王夫之1845--, @@ -104,22 +103,22 @@ } @Inproceedings{FOURNEY1971-17-38a, - Title = {Advances in holographic photoelasticity}, - Author = {M E FOURNEY}, - Bookauthor = {American Society of Mechanical Engineers. Applied Mechanics Division}, - Booktitle = {Symposium on Applications of Holography in Mechanics, August 23-25, 1971. University of Southern California, Los Angeles, California}, - Date = {1971}, - Pages = {17-38}, - Publisher = {ASME}, - Location = {New York} + author = {M E FOURNEY}, + title = {Advances in holographic photoelasticity}, + bookauthor = {{American Society of Mechanical Engineers.Applied Mechanics Division}}, + booktitle = {Symposium on Applications of Holography in Mechanics, August 23-25, 1971. University of Southern California, Los Angeles, California}, + location = {New York}, + publisher = {ASME}, + date = {1971}, + pages = {17-38}, } -@Report{Humphrey1971--, - Title = {The sonic throat method and real gas one-dimensional flow: an application to air and nitrogen}, - Author = {Humphrey, Richard L. and Wagner, Jerry L.}, - Number = {730029}, - Type = {AD}, - Year = {1971} +@TechReport{Humphrey1971--, + author = {Humphrey, Richard L. and Wagner, Jerry L.}, + title = {The sonic throat method and real gas one-dimensional flow: an application to air and nitrogen}, + year = {1971}, + type = {AD}, + number = {730029}, } @Book{CRANE1972--, @@ -321,13 +320,13 @@ Year = {1985} } -@Book{全国文献工作标准化委员会第七分委员会1986--, - Title = {GB/T 5795--1986 中国标准书号}, - Author = {全国文献工作标准化委员会第七分委员会}, - Note = {standard}, - Publisher = {中国标准出版社}, - Location = {北京}, - Year = {1986} +@Standard{全国文献工作标准化委员会第七分委员会1986--, + author = {全国文献工作标准化委员会第七分委员会}, + location = {北京}, + note = {standard}, + publisher = {中国标准出版社}, + title = {GB/T 5795--1986 中国标准书号}, + year = {1986}, } @Inbook{1988-590-590, @@ -348,17 +347,17 @@ Year = {1988} } -@Inbook{国家标准局信息分类编码研究所1988-59-92, - Title = {世界各国和地区名称代码 GB/T 2659-1986}, - Author = {国家标准局信息分类编码研究所}, - Bookauthor = {全国文献工作标准化技术委员会}, - Booktitle = {文献工作国家标准汇编}, - Date = {1988}, - Pages = {59-92}, - Publisher = {中国标准出版社}, - Note = {standard}, - Booktitleaddon = {3}, - Location = {北京} +@Standard{国家标准局信息分类编码研究所1988-59-92, + author = {国家标准局信息分类编码研究所}, + bookauthor = {全国文献工作标准化技术委员会}, + booktitle = {文献工作国家标准汇编}, + booktitleaddon = {3}, + date = {1988}, + location = {北京}, + note = {standard}, + pages = {59-92}, + publisher = {中国标准出版社}, + title = {世界各国和地区名称代码 GB/T 2659-1986}, } @Online{1989--, @@ -627,12 +626,12 @@ Year = {1998} } -@Thesis{张志祥1998--, - Title = {间断动力系统的随机扰动及其在守恒律方程中的应用}, - Author = {张志祥}, - Date = {1998}, - Institution = {北京大学数学学院}, - Location = {北京} +@MastersThesis{张志祥1998--, + author = {张志祥}, + title = {间断动力系统的随机扰动及其在守恒律方程中的应用}, + institution = {北京大学数学学院}, + date = {1998}, + location = {北京}, } @Book{赵耀东1998--, @@ -873,13 +872,13 @@ Workshop on Computer Algebra in Scientific Computing, Samarkand, October 5-9, 20 Journaltitle = {北京青年报} } -@Article{张田勤2000--, - Title = {犯罪DNA库与生命伦理学计划}, - Author = {张田勤}, - Date = {2000-11-12}, - Number = {7}, - Note = {news}, - Journaltitle = {大众科技报} +@Newspaper{张田勤2000--, + author = {张田勤}, + date = {2000-11-12}, + journaltitle = {大众科技报}, + note = {news}, + number = {7}, + title = {犯罪DNA库与生命伦理学计划}, } @Article{丁文祥2000--, @@ -960,12 +959,12 @@ Workshop on Computer Algebra in Scientific Computing, Samarkand, October 5-9, 20 Year = {2001} } -@Conference{Piazzo2001--, - Title = {UWB EM compatibility and coexistence issues}, - Author = {Piazzo, L.}, - Booktitle = {Proc. 1st Int. Workshop on Networking with UWB}, - Address = {Rome, Italy}, - Year = {2001} +@InProceedings{Piazzo2001--, + author = {Piazzo, L.}, + title = {UWB EM compatibility and coexistence issues}, + booktitle = {Proc. 1st Int. Workshop on Networking with UWB}, + year = {2001}, + address = {Rome, Italy}, } @Book{ROOD2001--, @@ -1079,51 +1078,51 @@ Workshop on Computer Algebra in Scientific Computing, Samarkand, October 5-9, 20 Year = {2001} } -@Online{萧钰2001--, - Title = {出版业信息化迈入快车道}, - Author = {萧钰}, - Date = {2001-12-19}, - Url = {http://www.creader.com/news/20011219/200112190019.html}, - Urldate = {2002-04-15} +@WWW{萧钰2001--, + author = {萧钰}, + title = {出版业信息化迈入快车道}, + date = {2001-12-19}, + url = {http://www.creader.com/news/20011219/200112190019.html}, + urldate = {2002-04-15}, } -@Conference{Choi2002-1075-1080, - Title = {Performance analysis of ultra-wideband spread-spectrum communications in narrowband interference}, - Author = {Choi, J. D. and Stark,W. E.}, - Booktitle = {Proc. IEEE Military Commun. Conf. (MILCOM)}, - Address = {Anaheim, CA}, - Pages = {1075-1080}, - Volume = {2}, - Year = {2002} +@InProceedings{Choi2002-1075-1080, + author = {Choi, J. D. and Stark,W. E.}, + title = {Performance analysis of ultra-wideband spread-spectrum communications in narrowband interference}, + booktitle = {Proc. IEEE Military Commun. Conf. (MILCOM)}, + year = {2002}, + volume = {2}, + pages = {1075-1080}, + address = {Anaheim, CA}, } -@Conference{Dardari2002-201-206, - Title = {Simple and accurate models for error probability evaluation of IEEE802.11 DS-SS physical interface in the presence of Bluetooth interference}, - Author = {Dardari, D. and Pasolini,G.}, - Booktitle = {Proc. IEEE Global Telecommun. Conf. (GLOBECOM)}, - Address = {Taipei}, - Pages = {201-206}, - Volume = {1}, - Year = {2002} +@InProceedings{Dardari2002-201-206, + author = {Dardari, D. and Pasolini,G.}, + title = {Simple and accurate models for error probability evaluation of IEEE802.11 DS-SS physical interface in the presence of Bluetooth interference}, + booktitle = {Proc. IEEE Global Telecommun. Conf. (GLOBECOM)}, + year = {2002}, + volume = {1}, + pages = {201-206}, + address = {Taipei}, } -@Conference{Foerster2002-1931-1935, - Title = {Interference modeling of pulse-based UWB waveforms on narrowband systems}, - Author = {Foerster, J. R.}, - Booktitle = {Proc. IEEE Veh. Technol. Conf.}, - Address = {Birmingham, AL}, - Pages = {1931-1935}, - Volume = {4}, - Year = {2002} +@InProceedings{Foerster2002-1931-1935, + author = {Foerster, J. R.}, + title = {Interference modeling of pulse-based UWB waveforms on narrowband systems}, + booktitle = {Proc. IEEE Veh. Technol. Conf.}, + year = {2002}, + volume = {4}, + pages = {1931-1935}, + address = {Birmingham, AL}, } -@Conference{Fontana2002-309-313, - Title = {An insight into UWB interference from a shot noise perspective}, - Author = {Fontana, R. J.}, - Booktitle = {Proc. of IEEE Conference on Ultrawideband Systems and Technologies (UWBST)}, - Address = {Baltimore, MD}, - Pages = {309-313}, - Year = {2002} +@InProceedings{Fontana2002-309-313, + author = {Fontana, R. J.}, + title = {An insight into UWB interference from a shot noise perspective}, + booktitle = {Proc. of IEEE Conference on Ultrawideband Systems and Technologies (UWBST)}, + year = {2002}, + pages = {309-313}, + address = {Baltimore, MD}, } @Article{Haemaelaeinen2002-1712-1721, @@ -1205,20 +1204,20 @@ Workshop on Computer Algebra in Scientific Computing, Samarkand, October 5-9, 20 Year = {2003} } -@Conference{Firoozbakhsh2003-473-477, - Title = {Analysis of IEEE 802.11a interference on UWB systems}, - Author = {Firoozbakhsh, B. and Pratt,T. G. and Jayant,N.}, - Booktitle = {Proc. of IEEE Conference on Ultrawideband Systems and Technologies (UWBST)}, - Address = {Oulu, Finland}, - Pages = {473-477}, - Year = {2003} +@InProceedings{Firoozbakhsh2003-473-477, + author = {Firoozbakhsh, B. and Pratt,T. G. and Jayant,N.}, + title = {Analysis of IEEE 802.11a interference on UWB systems}, + booktitle = {Proc. of IEEE Conference on Ultrawideband Systems and Technologies (UWBST)}, + year = {2003}, + pages = {473-477}, + address = {Oulu, Finland}, } -@Online{OMG2003--, - Title = {Unified Modeling Language: Superstructure}, - Author = {{omg Inc.}}, - Url = {http://www.omg.org}, - Year = {2003} +@Electronic{OMG2003--, + author = {{omg Inc.}}, + title = {Unified Modeling Language: Superstructure}, + year = {2003}, + url = {http://www.omg.org}, } @Thesis{吴云芳2003--, @@ -1318,12 +1317,12 @@ Workshop on Computer Algebra in Scientific Computing, Samarkand, October 5-9, 20 Year = {2004} } -@Thesis{张若凌2004--, - Title = {高超声速非平衡流动的计算和实验研究}, - Author = {张若凌}, - Location = {绵阳}, - School = {中国空气动力研究与发展中心}, - Year = {2004} +@PhdThesis{张若凌2004--, + author = {张若凌}, + title = {高超声速非平衡流动的计算和实验研究}, + year = {2004}, + location = {绵阳}, + school = {中国空气动力研究与发展中心}, } @Book{Miroslav2004--, @@ -1365,13 +1364,13 @@ Workshop on Computer Algebra in Scientific Computing, Samarkand, October 5-9, 20 Year = {2005} } -@Conference{Giorgetti2005-794-798, - Title = {Coexistence of UWB and narrowband systems in Nakagami/Rice channels}, - Author = {Giorgetti, A.}, - Booktitle = {Proc. Int. Symp. on Wireless Personal Multimedia Commun. (WPMC)}, - Address = {Aalborg, Denmark}, - Pages = {794-798}, - Year = {2005} +@InProceedings{Giorgetti2005-794-798, + author = {Giorgetti, A.}, + title = {Coexistence of UWB and narrowband systems in Nakagami/Rice channels}, + booktitle = {Proc. Int. Symp. on Wireless Personal Multimedia Commun. (WPMC)}, + year = {2005}, + pages = {794-798}, + address = {Aalborg, Denmark}, } @Book{Reed2005--, @@ -1400,12 +1399,12 @@ Workshop on Computer Algebra in Scientific Computing, Samarkand, October 5-9, 20 Year = {2006} } -@Conference{Giorgetti2006--, - Title = {Coexistence issues in cognitive radios based on ultra-wide bandwidth systems}, - Author = {Giorgetti, A. and Chiani, M. and Dardari,D.}, - Booktitle = {Proc. IEEE Int. Conf. on Cognitive Radio Oriented Wireless Net. and Comm. (CROWNCOM)}, - Address = {Mykonos, Greece}, - Year = {2006} +@InProceedings{Giorgetti2006--, + author = {Giorgetti, A. and Chiani, M. and Dardari,D.}, + title = {Coexistence issues in cognitive radios based on ultra-wide bandwidth systems}, + booktitle = {Proc. IEEE Int. Conf. on Cognitive Radio Oriented Wireless Net. and Comm. (CROWNCOM)}, + year = {2006}, + address = {Mykonos, Greece}, } @Article{Hu2006-1720-1724, @@ -1573,13 +1572,13 @@ Workshop on Computer Algebra in Scientific Computing, Samarkand, October 5-9, 20 Year = {2008} } -@Conference{Nasri2008-3616-3621, - Title = {Performance Evaluation of BICM-OFDM Systems Impaired by UWB Interference}, - Author = {Nasri, A. and Schober,R. and Lampe,L.}, - Booktitle = {Proc. IEEE Int. Conf. on Commun.}, - Address = {Beijing, China}, - Pages = {3616-3621}, - Year = {2008} +@InProceedings{Nasri2008-3616-3621, + author = {Nasri, A. and Schober,R. and Lampe,L.}, + title = {Performance Evaluation of BICM-OFDM Systems Impaired by UWB Interference}, + booktitle = {Proc. IEEE Int. Conf. on Commun.}, + year = {2008}, + pages = {3616-3621}, + address = {Beijing, China}, } @Book{2009-155-155, @@ -2420,13 +2419,8 @@ Workshop on Computer Algebra in Scientific Computing, Samarkand, October 5-9, 20 Year = {2015} } -@comment{jabref-meta: databaseType:biblatex;} - -@comment{jabref-entrytype: Collection: req[author;title;location;publisher;date] opt[]} - -@comment{jabref-entrytype: Online: req[author;title;date;url;urldate] opt[doi]} - -@comment{jabref-entrytype: Report: req[author;title;type;number;address;institution;date;pages] opt[url;urldate;doi]} +@Comment{jabref-meta: databaseType:biblatex;} -@comment{jabref-entrytype: Thesis: req[author;title;type;address;institution;date;pages] opt[url;urldate;doi]} +@Comment{jabref-entrytype: Newspaper: req[] opt[]} +@Comment{jabref-entrytype: Standard: req[] opt[]} diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/gb7714texteg.dat b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/gb7714texteg.dat new file mode 100644 index 00000000000..6fb3ef1a4ac --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/gb7714texteg.dat @@ -0,0 +1,214 @@ +[14] ANDERSEN J B, RAPPAPORT T S, YOSHIDA S. Propagation measurements and models for wireless communications channels[J]. IEEE Commun. Mag., 1995, 33(1): 42–49. +[49] 陈高峰. 基于开放式框架的交叉开发环境设计与实现[J]. 煤炭技术, 2011, 30(6): 230–232. +[51] 陈金成, 杨海威, 钟廷修. 一种开放式体系结构经济型数控装置的研制[J]. 上海交通大学学报, 2001, 35(12): 1861–1864. +[52] 高光明. 信号情报接收机的发展现状及趋势[J]. 电讯技术, 1998, 38(2): 60–65. +[53] 高翔, 李辰. 复杂航电架构的开放式系统标准研究[J]. 航空电子技术, 2015, 46(2): 26–31. +[55] 李炳穆. 理想的图书管理员和信息专家的素养与形象[J]. 图书情报工作, 2000(2): 5–8. +[48] ZHAO L, HAIMOVICH A M. Performance of ultra-wideband communications in the presence of interference[J]. IEEE J. Sel. Areas Commun., 2002, 20(9): 1684–1691. +[8] 张敏莉, 易仕和, 赵玉新. 超声速短化喷管的设计和试验研究[J]. 空气动力学报, 2007, 25(4): 500–503. + +[47] WALLS S C, BARICHIVICH W J, BROWN M E. Drought, deluge and declines: the impact of precipition extremes on amphibians in a changing climate[J/OL]. Biology, 2013, 2(1): 399–418[2013–11–04]. http://www.mdpi.com. +[50] 陈建军. 从数字地球到智慧地球[J/OL]. 国图资源导刊, 2010, 7(10): 93 [2013–03–20]. http://d.g.wanfangdata.com.cn. doi: 10.3969/j.issn.1672-5603.2010.10.038. +[54] 江向东. 互联网环境下的信息处理与图书管理系统解决方案[J/OL]. 情报学报, 1999, 18(2): 4[2000–01–18]. http://www.chinainfo.gov.cn/periodical/qbxb/qbxb99/qbxb990203. +[7] 储大同. 恶性肿瘤个体化治疗靶向药物的临床表现[J/OL]. 中华肿瘤杂志, 2010, 32(10): 721–724[2014–06–25]. http://www.sohu.com. doi: 10.7666/d.y351065. +[9] 储大同. 恶性肿瘤个体化治疗靶向药物的临床表现[J/OL]. 中华肿瘤杂志, 2010, 32(9/10): 721–724 [2014–06–25]. http://www.sohu.com. doi: 10.7666/d.y351065. + +[10] 丁文祥. 数字革命与竞争国际化[N]. 中国青年报, 2000–11–20(15). +[11] 傅刚, 赵承, 李佳路. 大风沙过后的思考[N/OL]. 北京青年报, 2000–04–12(14) [2005–07–12]. http://www.bjyouth.com.cn/Bqb/20000412/GB/4216%5ED0412B1401.htm. +[12] 刘裕国, 杨柳, 张洋, 等. 雾霾来袭,如何突围[N/OL]. 人民日报, 2013–01–12 [2013–11–06]. http://paper.people.com.cn. +[13] 张田勤. 犯罪 DNA 库与生命伦理学计划[N]. 大众科技报, 2000–11–12(7). + + + + +[2] CHIANI M, CONTI A, TRALLI V. Further results on convolutional code search for blockfading channels[J]. IEEE Trans. Inf. Theory, 2004, 50(6): 1312–1318. +[2] CHIANI M, CONTI A, TRALLI V. Further results on convolutional code search for blockfading channels[J]. IEEE Trans. Inf. Theory, 2004, 50(6). +[2] CHIANI M, CONTI A, TRALLI V. Further results on convolutional code search for blockfading channels[J]. IEEE Trans. Inf. Theory, 2004, 50: 1312–1318. +[2] CHIANI M, CONTI A, TRALLI V. Further results on convolutional code search for blockfading channels[J]. IEEE Trans. Inf. Theory, 2004(6): 1312–1318. +[2] CHIANI M, CONTI A, TRALLI V. Further results on convolutional code search for blockfading channels[J]. IEEE Trans. Inf. Theory, 50(6): 1312–1318. +[2] CHIANI M, CONTI A, TRALLI V. Further results on convolutional code search for blockfading channels[J]. IEEE Trans. Inf. Theory, 2004, 50. +[2] CHIANI M, CONTI A, TRALLI V. Further results on convolutional code search for blockfading channels[J]. IEEE Trans. Inf. Theory, 2004(6). +[2] CHIANI M, CONTI A, TRALLI V. Further results on convolutional code search for blockfading channels[J]. IEEE Trans. Inf. Theory, 50(6). +[2] CHIANI M, CONTI A, TRALLI V. Further results on convolutional code search for blockfading channels[J]. IEEE Trans. Inf. Theory, 2004: 1312–1318. +[2] CHIANI M, CONTI A, TRALLI V. Further results on convolutional code search for blockfading channels[J]. IEEE Trans. Inf. Theory, 50: 1312–1318. + +[1] 中国地质学会. 地质评论[J]. 1936, 1(1)–. 北京: [出版者不详], 1936–. +[2] 中国图书馆学会. 图书馆学通信[J]. 1957(1)–1990(4). 北京: 北京图书馆, 1957–1990. +[3] American Association for the Advancement of Science. Science[J]. 1883, 1(1)–. Washington, D.C.: [s.n.], 1883–. +[4] 中华医学会湖北分会. 临床内科杂志[J]. 1984, 1(1)–. 武汉: 中华医学会湖北分会, 1984–. +[8] 张敏莉, 易仕和, 赵玉新. 超声速短化喷管的设计和试验研究[J]. 空气动力学报, 2007, 25(4): 500–503. +[8] ZHANG M L, YI S H, ZHAO Y X. The design and experimental investigations of supersonic length shorted nozzle[J]. ACTA AERODYNAMICA SINICA, 2007, 25(4): 500–503. +[14] ANDERSEN J B, RAPPAPORT T S, YOSHIDA S. Propagation measurements and models for wireless communications channels[J]. IEEE Commun. Mag., 1995, 33(1): 42–49. +[15] ANDRISANO O, TRALLI V, VERDONE R. Millimeter waves for short-range multimedia communication systems[J]. Proc. IEEE, 1998, 86(7): 1383–1401. +[16] CAPLAN P. Cataloging internet resources[J]. The public Access Computer Systems Review, 1993, 4(2): 61–66. +[7] 储大同. 恶性肿瘤个体化治疗靶向药物的临床表现[J/OL]. 中华肿瘤杂志, 2010, 32(10): 721–724[2014–06–25]. http://www.sohu.com. doi: 10.7666/d.y351065. + + +[1] 韩吉人. 论职工教育的特点[G]//中国职工教育研究会. 职工教育研究论文集. 北京: 人民教育出版社, 1985: 90–99. +[2] FOURNEY M E. Advances in holographic photoelasticity[C]//Symposium on Applications of Holography in Mechanics, August 23-25, 1971, University of Southern California, Los Angeles, California. New York: ASME, 1971: 17–38. +[3] FOURNEY M E. Advances in holographic photoelasticity[C]//American Society of Mechanical Engineers.Applied Mechanics Division. Symposium on Applications of Holography in Mechanics, August 23-25, 1971. University of Southern California, Los Angeles, California. New York: ASME, 1971: 17–38. +[4] NEMEC B. Force control of redundant robots[C]//Processings of Symposium on Robot Control. [S.l.]: [s.n.], 1997: 209–214. +[5] 贾东琴, 柯平. 面向数字素养的高校图书馆数字服务体系研究[C]//中国图书馆学会. 中国图书馆学会年会论文集:2011 年卷. 北京: 国家图书馆出版社, 2011: 45–52. +[6] 裴丽生. 在中国科协技术期刊编辑工作经验交流会上的讲话[C]//中国科学技术协会学会工作部. 中国科协学术期刊编辑工作经验交流会资料选. 北京: 中国科学技术协会学会工作部, 1981: 2–10. +[7] 汪学军. 中国农业转基因生物研发进展与安全管理[C]//国家环境保护总局生物安全管理办公室. 中国国家生物安全框架实施国际合作项目研讨会论文集. 北京: 中国环境科学出版社, 2002: 22–25. +[8] 张忠智. 科技书刊的总编 (主编) 的角色要求[C]//中国科学技术期刊编辑学会学术委员会. 中国科学技术期刊编辑学会建会十周年学术研讨会论文汇编. 北京: 中国科学技术期刊编辑学会学术委员会, 1997: 33–34. +[9] CHOI J D, STARK W E. Performance analysis of ultra-wideband spread-spectrum communications in narrowband interference[C]//Proc. IEEE Military Commun. Conf. (MILCOM). Vol. 2. Anaheim, CA: [s.n.], 2002: 1075–1080. +[10] DARDARI D, PASOLINI G. Simple and accurate models for error probability evaluation of IEEE802.11 DS-SS physical interface in the presence of Bluetooth interference[C]//Proc. IEEE Global Telecommun. Conf. (GLOBECOM). Vol. 1. Taipei: [s.n.], 2002: 201–206. +[11] FIROOZBAKHSH B, PRATT T G, JAYANT N. Analysis of IEEE 802.11a interference on UWB systems[C]//Proc. of IEEE Conference on Ultrawideband Systems and Technologies (UWBST). Oulu, Finland: [s.n.], 2003: 473–477. +[12] FOERSTER J R. Interference modeling of pulse-based UWB waveforms on narrowband systems[C]//Proc. IEEE Veh. Technol. Conf. Vol. 4. Birmingham, AL: [s.n.], 2002: 1931–1935. +[13] FONTANA R J. An insight into UWB interference from a shot noise perspective[C]//Proc. of IEEE Conference on Ultrawideband Systems and Technologies (UWBST). Baltimore, MD: [s.n.], 2002: 309–313. +[14] GIORGETTI A. Coexistence of UWB and narrowband systems in Nakagami/Rice channels[C]//Proc. Int. Symp. on Wireless Personal Multimedia Commun. (WPMC). Aalborg, Denmark: [s.n.], 2005: 794–798. +[15] GIORGETTI A, CHIANI M, DARDARI D. Coexistence issues in cognitive radios based on ultra-wide bandwidth systems[C]//Proc. IEEE Int. Conf. on Cognitive Radio Oriented Wireless Net. and Comm. (CROWNCOM). Mykonos, Greece: [s.n.], 2006. +[16] LI Y, MOLISCH A F, ZHANG J. Practical approaches to channel estimation and interference suppression for OFDM based UWB communications[C]//Proc. of the IEEE 6th Circ. and Syst., Symp. on Emerging Technologies: Frontiers of Mobile and Wireless Communication. Vol. 1. [S.l.]: [s.n.], 2004: 21–24. +[17] NASRI A, SCHOBER R, LAMPE L. Performance Evaluation of BICM-OFDM Systems Impaired by UWB Interference[C]//Proc. IEEE Int. Conf. on Commun. Beijing, China: [s.n.], 2008: 3616–3621. +[18] PIAZZO L. UWB EM compatibility and coexistence issues[C]//Proc. 1st Int. Workshop on Networking with UWB. Rome, Italy: [s.n.], 2001. +[19] 陈志勇. 中国财税文化价值研究:“中国财税文化国际学术研讨会”论文集[C/OL]. 北京: 经济科学出版社, 2011 [2013–10–14]. http://apabi.lib.pku.edu.cn. +[20] 雷光春. 综合湿地管理: 综合湿地管理国际研讨会论文集[C]. 北京: 海洋出版社, 2012. +[21] ROSENTHALL E M. Proceedings of the Fifth Canadian Mathematical Congress, University of Montreal, 1961[C]. Toronto: University of Toronto Press, 1963. +[22] GANZHA V G, MAYR E W, VOROZHTSOV E V. Computer algebra in scientific computing:CASC 2000:proceedings of the Third Workshop on Computer Algebra in Scientific Computing, Samarkand, October 5-9, 2000[C]. Berlin: Springer, 2000. +[23] BABU B V, NAGAR A K, DEEP K, et al. Proceedings of the second international conference on soft computing for problem solving, December 28-30[C]. New Delhi: Springer, 2014. +[24] 中国力学学会. 第 3 届全国实验流体力学学术会议论文集[C]. 天津: [出版者不详], 1999. +[25] 中国社会科学院台湾史研究中心. 台湾光复六十五周年暨抗战史实学术研讨会论文集[C]. 北京: 九州出版社, 2012. + + +[8] LEHMAN P, KIME P, BORUVKA A, et al. The biblatex Package: Programmable Bibliographies and Citations[A]. version 2.8a. 2013. +[9] LEHMAN P, KIME P, BORUVKA A, et al. The Biblatex Package: Programmable Bibliographies and Citations[A]. 3.0. 2015. +[10] MITTELBACH F. An environment for multicolumn output[A]. 2015. +[11] OETIKER T, PARTL H, HYNA I, et al. The Not So Short Introduction to L ATEX 2ε[A]. 2011. +[12] ROBERTSON W, WILSON P, PRESS H. The ccaption package[A]. v3.2c. 2011. +[13] SOMMERFELDT A. Customizing captions of floating environments[A/OL]. 2011. http://sourceforge.net/projects/latex-caption/. +[14] UMEKI H. The geometry package[A]. v5.6. 2010. +[15] 胡振震. 符合 GB7714-2015 标准的 biblatex 参考文献样式文件[A]. 2016. +[16] 吴凌云. CTEX FAQ: 常见问题集[A]. version 0.4. 2007. +[17] 中国第一历史档案馆, 辽宁省档案馆. 中国明朝档案总汇[A]. 桂林: 广西师范大学出版社, 2001. +[18] 包太雷. LaTeX Notes: 雷太赫排版系统简介[Z]. 2013. +[1] CALKIN D, AGER A, THOMPSON M. A comparative risk assessment framework for wildland fire management: the 2010 cohesive strategy Science report:RMRS-GTR-262[R]. 2011: 8–9. +[2] EGGRERS A J. One-dimensional flows of an imperfect diatomic gas[R]. NACA report 959. +[3] HUMPHREY R L, WAGNER J L. The sonic throat method and real gas one-dimensional flow: an application to air and nitrogen[R]. AD 730029. 1971. +[4] U.S. Department of Transportation Federal Highway Administration. Guidelines for handling excavated acid-producing materials, PB 91-194001[R]. Springfield: U.S. Department of Commerce National Information Service, 1990. +[5] World Health Organization. Factors regulating the immune response: report of WHO Scientific Group[R]. Geneva: WHO, 1970. +[6] 汤万金, 杨跃翔, 刘文, 等. 人体安全重要技术标准研制最终报告:7178999X[R/OL]. 2013 [2014–06–24]. http://www.nstrs.org.cn. +[7] 中华人民共和国国务院新闻办公室. 国防白皮书: 中国武装力量的多样化运用[R/OL]. 2013 [2014–06–11]. http://www.mod.gov.cn. + +[1] Commonwealth libraries bureau of library development.Pennsylvania department of education office. Pennsylvania library laws[EB/OL]. [2013–03–24]. http://www.racc.edu. +[3] Omg Inc. Unified Modeling Language: Superstructure[EB/OL]. (2003). http://www.omg.org. +[4] Online Computer Library Center, Inc. History of OCLC[EB/OL]. [2000–01–08]. http://www.oclc.org/about/history/default.htm. +[2] HOPKINSON A. UNIMARC and metadata: Dublin Core[EB/OL]. [1999–12–08]. http://www.rfla.org/IV/rfla64/13801613.htm. +[5] 李强. 化解医患矛盾需釜底抽薪[EB/OL]. (2012–05–03) [2013–03–25]. http://wenku.baidu.com. +[6] 萧钰. 出版业信息化迈入快车道[EB/OL]. (2001–12–19) [2002–04–15]. http://www.creader.com/news/20011219/200112190019.html. +[7] WiMedia Alliance[EB/OL]. www.wimedia.org. +[8] Dublin Core metadata element set: version 1.1[EB/OL]. (2012–06–14) [2014–06–11]. http://dublincore.org. +[9] JabRef 中文手册[EB/OL]. http://blog.csdn.net/zd0303/article/details/7676807. +[10] PACS-L:the public-access computer systems forum[EB/OL]. (1989) [1995–05–17]. http://info.lib.uh.edu/pacsl.html. + +[33] 全国信息文献标准化技术委员会. 文献著录: 第 4 部分 非书资料:GB/T3792.4-2009[S]. 北京: 中国标准出版社, 2010: 3. +[34] 全国广播电视标准化技术委员会. 广播电视音像资料编目规范: 第 2 部分 广播资料:GY/T202.2-2007[S]. 北京: 国家广播电影电视局广播电视规划院, 2007: 1. +[35] 国家环境保护局科技标准司. 土壤环境质量标准:GB 15616-1995[S/OL]. 北京: 中国标准出版社, 1996: 2–3 [2013–10–14]. http://wenku.baidu.com. +[36] Information and documdocument-the Dublin core metadata element set:ISO 15836:2009[S/OL].[2013–03–24]. http://www.iso.org. +[40] 国家标准局信息分类编码研究所. 世界各国和地区名称代码 GB/T 2659-1986[S]//全国文献工作标准化技术委员会. 文献工作国家标准汇编: 3. 北京: 中国标准出版社, 1988: 59–92. +[41] 宋史卷三: 本纪第三[M/OL]//李承森. 宋史: 第 1 册. 北京: 中华书局, 2011: 11–12 [2013–05–09]. http://apabi.lib.pku.edu.cn. + +[1] CALMS R B. Infrared spectroscopic studies on solid oxygen[D]. Berkeley: Univ. of California, 1965. +[4] 张若凌. 高超声速非平衡流动的计算和实验研究[D]. 绵阳: 中国空气动力研究与发展中心, 2004. +[5] 张志祥. 间断动力系统的随机扰动及其在守恒律方程中的应用[D]. 北京: 北京大学数学学院, 1998. +[2] 马欢. 人类活动影响下海河流域典型区水循环变化分析[D/OL]. 北京: 清华大学, 2011: 27 [2013–10–14]. http://www.cnki.net. +[3] 吴云芳. 面向中文信息处理的现代汉语并列结构研究[D/OL]. 北京: 北京大学, 2003 [2013–10–14]. http://thesis.lib.pku.edu.cn. + +[2] 中国职工教育研究会. 职工教育研究论文集[G]. 北京: 人民教育出版社, 1985. +[1] 韩吉人. 论职工教育的特点[G]//中国职工教育研究会. 职工教育研究论文集. 北京: 人民教育出版社, 1985: 90–99. +[1] KOSEKI A, MOMOSE H, KAWAHITO M, et al. Compiler: US828402[P/OL]. 2002–05–25[2002–05–28]. http://FF&p=1&u=netahtml/PTO/search-bool.html&r=5&f=G&l=50&col=AND&d=PG01&sl=IBM.AS.&0S=AN/IBM&RS=AN/IBM. +[2] TACHIBANA R, SHIMIZU S, KOBAYSHI S, et al. Electronic watermarking method and system: US6915001[P/OL]. 2002–04–25 [2002–05–28]. http://patftuspto.gov/netacgi/nphParser?%20Seetl=PTO2&Sect2=HITOFF&=1&u=/netahhml/search-bool.html%20&r=1&f=G&1=50&col=AND&d=ptxt&sl=%60Electronic+watermarking+method+system'.TTL.&OS=TTL/. +[3] 河北绿洲生态环境科技有限公司. 一种荒漠化地区生态植被综合培育种植方法: 01129210.5[P/OL]. 2001–10–24 [2002–05–28]. http://211.152.9.47/sipoasp/zlijs/hyjs-yx-new.asp?recid=01129210.5&leixin.27 +[4] 姜锡洲. 一种温热外敷药制备方案: 中国: 88105607.3[P]. 1989–07–26. +[5] 刘加林. 多功能一次性压舌板: 92214985.2[P]. 1993–04–14. +[6] 西安电子科技大学. 光折变自适应光外差探测方法: 01128777.2[P/OL]. 2002–03–06 [2002–05–28]. http://211.152.9.47/sipoasp/zljs/hyjs-yx-new.asp?recid=01128777.2&leixin=0. +[7] 张凯军. 轨道火车及高速轨道火车紧急安全制动辅助装置: 201220158825.2[P]. 2012–04–05. + +[1] Commonwealth libraries bureau of library development.Pennsylvania department of education office. Pennsylvania library laws[EB/OL]. [2013–03–24]. http://www.racc.edu. +[2] HOPKINSON A. UNIMARC and metadata: Dublin Core[EB/OL]. [1999–12–08]. http://www.rfla.org/IV/rfla64/13801613.htm. +[3] Omg Inc. Unified Modeling Language: Superstructure[EB/OL]. (2003). http://www.omg.org. +[4] Online Computer Library Center, Inc. History of OCLC[EB/OL]. [2000–01–08]. http://www.oclc.org/about/history/default.htm. +[5] 李强. 化解医患矛盾需釜底抽薪[EB/OL]. (2012–05–03) [2013–03–25]. http://wenku.baidu.com. +[6] 萧钰. 出版业信息化迈入快车道[EB/OL]. (2001–12–19) [2002–04–15]. http://www.creader.com/news/20011219/200112190019.html. +[7] WiMedia Alliance[EB/OL]. www.wimedia.org. +[8] Dublin Core metadata element set: version 1.1[EB/OL]. (2012–06–14) [2014–06–11]. http://dublincore.org. +[9] JabRef 中文手册[EB/OL]. http://blog.csdn.net/zd0303/article/details/7676807. +[10] PACS-L:the public-access computer systems forum[EB/OL]. (1989) [1995–05–17]. http://info.lib.uh.edu/pacsl.html. + +[38] 白书农. 植物开花研究[M]//李承森. 植物科学进展. 北京: 高等教育出版社, 1998: 146–163. +[42] 楼梦麟, 杨燕. 汶川地震基岩地震动特征分析[M/OL]//同济大学土木工程防灾国家重点实验室. 汶川地震震害研究. 上海: 同济大学出版社, 2011: 11–12 [2013–05–09]. http://apabi.lib.pku.edu.cn. DOI: AFAC1212121. +[42] 楼梦麟, 杨燕. 汶川地震基岩地震动特征分析[M/OL]//同济大学土木工程防灾国家重点实验室. 汶川地震震害研究. 上海: 同济大学出版社: 11–12 [2013–05–09]. http://apabi.lib.pku.edu.cn. DOI: AFAC1212121. +[42] 楼梦麟, 杨燕. 汶川地震基岩地震动特征分析[M/OL]//同济大学土木工程防灾国家重点实验室. 汶川地震震害研究. 上海: 同济大学出版社, 2011[2013–05–09]. http://apabi.lib.pku.edu.cn. DOI: AFAC1212121. +[42] 楼梦麟, 杨燕. 汶川地震基岩地震动特征分析[M/OL]//同济大学土木工程防灾国家重点实验室. 汶川地震震害研究. 上海: 同济大学出版社[2013–05–09]. http://apabi.lib.pku.edu.cn. DOI: AFAC1212121. +[41] 宋史卷三: 本纪第三[M/OL]//李承森. 宋史colon第 1 册. 北京: 中华书局, 2011: 11–12 [2013–05–09]. http://apabi.lib.pku.edu.cn. +[41] 宋史卷三: 本纪第三[M]//李承森. 宋史colon第 1 册. 北京: 中华书局. +[41] 宋史卷三: 本纪第三[M]//宋史: 第 1 册. 北京: 中华书局. +[41] 宋史卷三: 本纪第三[M]//宋史. 北京: 中华书局. +[37] 卷 39 乞致任第一[M]//苏魏公文集: 下册. 北京: 中华书局, 1988: 590. +[41] 宋史卷三: 本纪第三[M]//宋史: 第 1 册. 北京: 中华书局, 1977: 49. +[43] BUSECK P R, NORD G L Jr., VEBLEN D R. Subsolidus phenomena in pyroxenes[M]//PREWITT C. Pyroxense. Washington, D.C.: Mineralogical Society of America, 1980: 117–211. +[42] 楼梦麟, 杨燕. 汶川地震基岩地震动特征分析[M]//同济大学土木工程防灾国家重点实验室. 汶川地震震害研究. 上海: 同济大学出版社, 2011: 11–12. +[33] POISEL R A. 通信电子战原理[M/OL]. 聂皞, 王振华, 陈少昌, 等, 译. 2 版. 北京: 电子工业出版社[2013–08–01]. http://www.baidu.com. DOI: AFAC1212121. +[33] POISEL R A. 通信电子战原理[M/OL]. 聂皞, 王振华, 陈少昌, 等, 译. 2 版. 北京: 电子工业出版社: 23–26 [2013–08–01]. http://www.baidu.com. DOI: AFAC1212121. +[33] POISEL R A. 通信电子战原理[M/OL]. 聂皞, 王振华, 陈少昌, 等, 译. 2 版. 北京: 电子工业出版社, 2013: 23–26 [2013–08–01]. http://www.baidu.com. DOI: AFAC1212121. +[33] 赵学功. 当代美国外交[M/OL]. [出版地不详]: 社会科学文献出版社, 2001 [2014–06–11]. http://www.baidu.com. +[3] 余敏. 出版集团研究[M/OL]. 北京: 中国书籍出版社, 2001. www.bla~bla.org. +[10] 余敏. 出版集团研究[M/OL]. 北京: 中国书籍出版社, 2001: 179–193 [2001–08–04]. http://www.baidu.com. +[11] 候文顺. 高分子物理: 高分子材料分析、选择与改性[M/OL]. 北京: 化学工业出版社, 2010: 119[2012–11–27]. http://apabi.lib.pku.edu.cn. +[15] KINCHY A. Seeds, Sciences, and struggle : the global politics of transgenic crops[M/OL]. Cambridge,Mass.: MIT Press, 2012: 50 [2013–07–14]. http://lib.myilibary.com. +[16] PRAETZELLIS A. Death by theory: a tale of mystery and archaeological theory[M/OL]. Rev.ed. [S.l.]: Rowman & Littlefield Publishing Group, Inc., 2011: 13 [2012–07–26]. http://lib.myilibrary.com. +[15] KINCHY A. Seeds, Sciences, and struggle : the global politics of transgenic crops[M]. Cambridge,Mass.: MIT Press, 2012: 50. +[22] 易仕和, 赵玉新, 何霖, 等. 超声速和高超声速喷管设计[M]. 北京: 国防工业出版社, 2013. +[24] MIROSLAV D L, DEJAN V T, BRIAN L E. 信号处理滤波器设计-基于 matlab 和 mathematica 的设计方法[M]. 朱义胜, 董辉, 译. 北京: 电子工业出版社, 2004. +[25] 蔡敏, 徐慧慧, 黄柄强. UML 基础和 Rose 建模教程[M]. 北京: 人民邮电出版社, 2006. +[33] POISEL R A. 通信电子战原理[M]. 聂皞, 王振华, 陈少昌, 等, 译. 2 版. 北京: 电子工业出版社, 2013: 23–26. +[27] SIMON M K, OMURA J K, SCHOLTZ R A, et al. Spread Spectrum Communications Handbook[M]. New York City: McGraw-Hill, Inc., 2001. +[23] Von PEEBLES P Z Jr, LIN S, DANIEL COSTELLO J. Probability, random variable, and random signal Principles[M]. 4th ed. New York: McGraw-Hill, 2001: 100. +[22] YI S H, ZHAO Y X, HE L, et al. Supersonic and hypersonic nozzle design[M]. BeiJing: National Defense Industry Press, 2013. +[41] LIN S, DANIEL COSTELLO J. Error Control Coding[M]. Second Edition. Englewood Cliffs: NJ:Prentice Hall, 2004. +[45] PROAKIS J G, MANOLAKIS D G. Digital signal processing: Principles,algorithms, and applications[M]. 第 4 版. 北京: 电子工业出版社, 2007. +[46] REED J H. An Introduction to Ultrawideband Communication Systems[M]. Upper Saddle River: NJ: Prentice Hall, 2005. +[47] ROOD H J. Logic and structured design for computer programmers[M]. 3rd ed. [S.l.]: Brooks/ColeThomson Learning, 2001. +[48] ROSS S M. 概率论基础教程[M]. 郑忠国, 詹从赞, 译. 第 8 版. 北京: 人民邮电出版社, 2010. +[49] SIMON M K, ALOUINI M S. Digital Communication over Fading Channels[M]. Hoboken: NJ: Wiley-IEEE Press, 2004. +[50] STUBER G L. Principles of Mobile Communication[M]. Second Edition. Norwell: MA: Kluwer Academic Publishers, 2001. +[51] YUFIN S A. Geoecology and computers: proceedings of the Third International Conference on Advances of Computer Methods in Geotechnical and Geoenvironmental Engineering, Moscow, Russia, February 1-4, 2000[M]. Rotterdam: A. A. Balkema, 2000. +[52] 埃伯哈德 蔡德勒, 等. 数学指南-实用数学手册[M]. 李文林等, 译. 北京: 科学出版社, 2012. +[53] 陈希孺. 概率论与数理统计[M]. 合肥: 中国科学技术大学出版社, 2009. +[54] 陈志杰, 赵书钦, 李树钧, 等. LaTeX 入门与提高[M]. 第二版. 北京: 高等教育出版社, 2010. +[1] 张伯伟. 全唐五代诗格会考[M]. 南京: 江苏古籍出版社, 2002: 288. +[2] 师伏堂日记: 第 4 册[M]. 北京: 北京图书馆出版社, 2009: 155. +[3] 胡承正, 周详, 缪灵. 理论物理概论: 上[M]. 武汉: 武汉大学出版社, 2010: 112. +[4] 美国妇产科医师学会. 新生儿脑病和脑性瘫痪发病机制与病理生理[M]. 段涛, 杨慧霞, 译. 北京: 人民卫生出版社, 2010: 38–39. +[5] 康熙字典: 已集上: 水部[M]. 同文书局影印本. 北京: 中华书局, 1962: 50. +[6] 汪昂. 增订本草备要: 四卷[M]. 刻本. 上海: 老二酉堂. +[7] 蒋有绪, 郭泉水, 马娟, 等. 中国森林群落分类及其群落学特征[M]. 北京: 科学出版社, 1998. +[8] 中国企业投资协会, 台湾并购与私募股权协会, 汇盈国际投资集团. 投资台湾: 大陆企业赴台投资指南[M]. 北京: 九州出版社, 2013. +[9] 罗斯基. 战前中国经济的增长[M]. 唐巧天, 毛立坤, 姜修宪, 译. 杭州: 浙江大学出版社, 2009. +[10] 库恩. 科学革命的结构: 第 4 版[M]. 金吾伦, 胡新和, 译. 2 版. 北京: 北京大学出版社, 2012. +[12] CRAWFPRD W, GORMAN M. Future libraries:dreams, maddness, & reality[M]. Chicago: American Library Association, 1995. +[13] International Federation of Library Association and Institutions. Names of persons: national usages for entry in catalogues[M]. 3rd ed. London: IFLA International Office for UBC, 1977. +[14] O’BRIEN J A. Introduction to information systems[M]. 7th ed. Burr Ridge, III.: Irwin, 1994. +[10] 库恩, 余敏, 阿飞, 等. 科学革命的结构: 第 4 版[M]. 金吾伦, 胡新和, 译. 北京: 北京大学出版社, 2012. +[10] 库恩. 科学革命的结构: 第 4 版[M]. 北京: 北京大学出版社, 2012. +[10] 库恩. 科学革命的结构: 第 4 版[M]. 金吾伦, 胡新和, 译. 2 版. 北京: 北京大学出版社, 2012. +[8] 余敏. 出版集团研究[M]. 3 版. 北京: 中国书籍出版社, 2001. DOI: AFAC1212121. +[1] 余敏. 出版集团研究[M]. 北京: 中国书籍出版社. DOI: AFAC1212121. +[1] 余敏. 出版集团研究[M]. 北京: 中国书籍出版社: 179–193. DOI: AFAC1212121. +[11] 出版集团研究[M]. 北京: 中国书籍出版社, 2001: 179–193. +[8] 余敏. 出版集团研究[M]. 北京: 中国书籍出版社, 2001: 179–193.DOI:AFAC1212121. +[7] 余敏. 出版集团研究[M]. 北京: 中国书籍出版社, 2001: 179–193. +[2] 余敏. 出版集团研究[M]. [出版地不详]: 中国书籍出版社, 2001: 179–193. +[4] 余敏. 出版集团研究[M]. 北京: [出版者不详], 2001. +[5] 余敏. 出版集团研究[M]. 北京: [出版者不详]. +[6] 余敏. 出版集团研究[M]. 北京: [出版者不详], 2001: 20–30. +[9] 余敏. 出版集团研究[M]. 2 版. 北京: 中国书籍出版社, 2001: 179–193. +[11] 出版集团研究[M]. 北京: 中国书籍出版社, 2001: 179–193. +[12] PARSONS. The Mobile Radio Propagation Channel[M]. 2nd ed. Hoboken: John Wiley, Sons,2000. +[13] Parsons. The Mobile Radio Propagation Channel[M]. 2nd ed. Hoboken: John Wiley, Sons, 2000. +[14] PARSONS J D. The Mobile Radio Propagation Channel[M]. 2nd ed. Hoboken: John Wiley,Sons, 2000. +[15] PARSONS J D. The Mobile Radio Propagation Channel[M]. 2nd ed. Hoboken: John Wiley,Sons. +[16] PARSONS J D. The Mobile Radio Propagation Channel[M]. 2nd ed. [S.l.]: John Wiley, Sons,2000. +[17] PARSONS J D. The Mobile Radio Propagation Channel[M]. 2nd ed. Hoboken: [s.n.], 2000. +[18] PARSONS J D. The Mobile Radio Propagation Channel[M]. 2nd ed. Hoboken: [s.n.]. +[19] PARSONS J D. The Mobile Radio Propagation Channel[M]. 2nd ed. Hoboken: [s.n.], 2000: 15–20. \ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/gb7714texttobib.pl b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/gb7714texttobib.pl new file mode 100644 index 00000000000..1b8dc7be363 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/gb7714texttobib.pl @@ -0,0 +1,1670 @@ +##% +##% --------------------------------------------------------------- +##% gb7714texttobib--- A transformation tool for GB/T 7714-2015 style +##% bibliography text to bib source file +##% +##% Maintained by huzhenzhen +##% Homepage: +##% history: +##% 2017/02/26 v1.0g +##% E-mail: +##% hzzmail@163.com +##% Released under the LaTeX Project Public License v1.3c or later +##% usage: +##% perl gb7714texttobib.pl in=textfilename out=bibfilename +##% options(need to do): +##% style=ay or default +##% key=ay or default +##% +##% --------------------------------------------------------------- +#%Target:: 将pdf文档中拷出的参考文献文本转换成bib文件,文本文件中的一条参考文献为一行 +#%Method:: 利用perl进行文本处理,处理和判断的两个重要方面是: +# 分析分割后的文本的位置和内容,使用的是正则表达式匹配,主要两种方式 +# 1.根据标点和本文特征一部分一部分的解析,比如book条目处理 +# 2.直接列出所有可能的正则表达式一个个匹配,比如article条目处理 +#%Date :: 2017-02-22 +#%Note :: 1.网址之类如果解析出错,应确认其前导词http://之前没有空格 +# 2.有些以.连接有从属关系的机构作者,可以把.后的空格去掉便于正确解析 +# 3.有些尽管解析到的域不是真实的域,但不影响著录格式(显示效果),相应条目的域 +# 可以在bib文件中完善,尽管从实用角度并不需要这么做。 +# +##% --------------------------------------------------------------- +##% todo: 1. pdf 的比较? +##% obsolete intro: +##% 1.源文件文档如果个别地方不符合规范,可以修改一下 +##% (a):inbook/standard类中,当出现//后面第二项是booktitle且其中存在:时,先把父标题的冒号改成colon,比如 +##% [M]//李承森. 宋史: 第 1 册. 北京: 中华书局. 应把宋史后的冒号改掉 +##% [S]//全国文献工作标准化技术委员会. 文献工作国家标准汇编: 3. 北京: 中国标准出版社, 1988: 59–92. +##% --------------------------------------------------------------- + + +foreach $file(@ARGV){ + print 'file:',$file,"\n"; + if($file=~m/in=/){ + ($infile)=($file=~m/in=(.*)/) + } + if($file=~m/out=/){ + ($outfile)=($file=~m/out=(.*)/) + } +} + +open (FHR,"<$infile"); +open (FHW,">$outfile"); +print FHW '% Encoding: UTF-8',"\n"; + +@references=;#将所有的文献存为@references数组,各文献以<行>为单位进行区分 + +$ns=1; +$ne=@references; +$nline=0; +foreach $reference(@references){ + + $nline=$nline+1; + if($nline<$ns){next;} #先跳过几行进行,配合后面的last进行当行测试 + + while($reference=~m/–/){ + $reference=~s/–/-/;#直接利用正则表达式更正页码/日期/网址中的连字符 + } + print "$reference ";#打印各文献的内容 + + undef $entrytype; + undef $author; + undef $title; + undef $journal; + undef $translator; + undef $bookauthor; + undef $booktitle; + undef $version; + undef $address; + undef $publisher; + undef $institution; + undef $year; + undef $type; + undef $date; + undef $volume; + undef $number; + undef $pages; + undef $eventdate; + undef $urldate; + undef $url; + undef $doi; + undef $note; + undef $eventyvn; + undef $endeventyvn; + undef $eventdate; + undef $eventvol; + undef $eventnum; + undef $endeventdate; + undef $endeventvol; + undef $endeventnum; + + #--------------------------------------------------------------- + #条目类型:期刊和期刊中析出的文献/periodical、article + #--------------------------------------------------------------- + if(1){ + if($reference=~m/\[J\]/){ + if($reference=~m/:\s/ and $reference=~m/:\s\D/){#根据存在出版社前的冒号加空格区分 + print 'this entry is periodical',"\n"; + $entrytype='periodical'; + }else{ + print 'this entry is article',"\n"; + $entrytype='article'; + } + } + + if($entrytype eq 'periodical'){#字符串比较用eq而数字比较用==,如果用==那么两边都是1,则是真 + $regexformach='\[J\]\.'; + &bfidentifier; + + ($preadderess, $pospublisher)=($reference=~m/\[J\]\.(.*):\s(.*)/); + print 'preadderess =',$preadderess,"\n"; + print 'pospublisher=',$pospublisher,"\n"; + ($eventyear, $address)=($preadderess=~m/(.*)\.\s(.*)/); + print 'eventyear =',$eventyear,"\n"; + print 'address =',$address,"\n"; + ($eventyvn, $endeventyvn)=($eventyear=~m/(.*)\-(.*)/);#yvn表示year,volume,number + print 'eventyvn =',$eventyvn,"\n"; + print 'endeventyvn =',$endeventyvn,"\n"; + if($eventyvn=~m/.*,.*/){#存在逗号表明有卷信息 + ($eventdate, $eventvol, $eventnum)=($eventyvn=~m/\s*(.*),\s(.*)\((.*)\)/);#yvn表示year,volume,number + print 'eventdate =',$eventdate,"\n"; + print 'eventvol =',$eventvol,"\n"; + print 'eventnum =',$eventnum,"\n"; + if($endeventyvn){ + ($endeventdate, $endeventvol, $endeventnum)=($endeventyvn=~m/\s*(.*),\s(.*)\((.*)\)/);#yvn表示year,volume,number + print 'endeventdate =',$endeventdate,"\n"; + print 'endeventvol =',$endeventvol,"\n"; + print 'endeventnum =',$endeventnum,"\n"; + } + }else{ + ($eventdate, $eventnum)=($eventyvn=~m/\s*(.*)\((.*)\)/);#yvn表示year,volume,number + print 'eventdate =',$eventdate,"\n"; + print 'eventvol =',$eventvol,"\n"; + print 'eventnum =',$eventnum,"\n"; + if($endeventyvn){ + ($endeventdate, $endeventnum)=($endeventyvn=~m/\s*(.*)\((.*)\)/);#yvn表示year,volume,number + print 'endeventdate =',$endeventdate,"\n"; + print 'endeventvol =',$endeventvol,"\n"; + print 'endeventnum =',$endeventnum,"\n"; + } + } + if($endeventdate){ + $date=$eventdate.'-'.$endeventdate; + }else{ + $date=$eventdate + } + if($endeventvol){ + $volume=$eventvol.'-'.$endeventvol; + }else{ + $volume=$eventvol + } + if($endeventnum){ + $number=$eventnum.'-'.$endeventnum; + }else{ + $number=$eventnum + } + print 'date =',$date,"\n"; + print 'volume =',$volume,"\n"; + print 'number =',$number,"\n"; + ($publisher)=($pospublisher=~m/(.*),/); + print 'publisher =',$publisher,"\n"; + } + + if($entrytype eq 'article'){ + $regexformach='\[J\]\.'; + &bfidentifier; + + $flagmatched=0; + $regexbfjournal='\]\.\s(.*),\s(.*),\s(.*)\((.*)\):\s(.*)\.';#包括全部信息 + if($reference=~m/$regexbfjournal/){ + ($journal,$date,$volume,$number,$pages)=($reference=~m/$regexbfjournal/); + $flagmatched=1; + print '包括全部信息',"\n"; + } + $regexbfjournal='\]\.\s(.*),\s(.*),\s(.*)\((.*)\)\.';#没有页码 + if($reference=~m/$regexbfjournal/ and $flagmatched==0){ + ($journal,$date,$volume,$number)=($reference=~m/$regexbfjournal/); + $flagmatched=1; + print '没有页码',"\n"; + } + $regexbfjournal='\]\.\s(.*),\s(.*),\s(.*):\s(.*)\.';#没有期 + if($reference=~m/$regexbfjournal/ and $flagmatched==0){ + ($journal,$date,$volume,$pages)=($reference=~m/$regexbfjournal/); + $flagmatched=1; + print '没有期',"\n"; + } + $regexbfjournal='\]\.\s(.*),\s(.*)\((.*)\):\s(.*)\.';#没有卷/年 + if($reference=~m/$regexbfjournal/ and $flagmatched==0){ + ($journal,$date,$number,$pages)=($reference=~m/$regexbfjournal/); + $flagmatched=1; + if($date!~m/\d{4}/){ + $volume=$date; + $date=''; + } + print '没有卷/年',"\n"; + } + $regexbfjournal='\]\.\s(.*),\s(.*),\s(.*)\.';#没有页码,期 + if($reference=~m/$regexbfjournal/ and $flagmatched==0){ + ($journal,$date,$volume)=($reference=~m/$regexbfjournal/); + $flagmatched=1; + print '没有页码,期',"\n"; + } + $regexbfjournal='\]\.\s(.*),\s(.*)\((.*)\)\.';#没有页码,卷/年 + if($reference=~m/$regexbfjournal/ and $flagmatched==0){ + ($journal,$date,$number)=($reference=~m/$regexbfjournal/); + $flagmatched=1; + if($date!~m/\d{4}/){ + $volume=$date; + $date=''; + } + print '没有页码,卷/年',"\n"; + } + $regexbfjournal='\]\.\s(.*),\s(.*):\s(.*)\.';#没有卷/年,期 + if($reference=~m/$regexbfjournal/ and $flagmatched==0){ + ($journal,$date,$pages)=($reference=~m/$regexbfjournal/); + $flagmatched=1; + if($date!~m/\d{4}/){ + $volume=$date; + $date=''; + } + print '没有卷/年,期',"\n"; + } + + if($flagmatched==0){ + print 'the text after title was not matched, please add a regex for the current entry in the perl source code!',"\n"; + print '当前条目标题之后的内容没有匹配的正则表达式,请在perl代码中增加适合该条目正则表达式!',"\n"; + } + + print 'journal =',$journal,"\n"; + print 'date =',$date,"\n"; + print 'volume =',$volume,"\n"; + print 'number =',$number,"\n"; + print 'pages =',$pages,"\n"; + + } + + #判断期刊中析出的文献,带url + if($reference=~m/\[J\/OL\]/){ + print 'this entry is article with url',"\n"; + $entrytype='article'; + + $regexformach='\[J\/OL\]\.'; + &bfidentifier; + + ($postitle)=($reference=~m/\[J\/OL\]\.\s(.*)/); + if($postitle=~m/\[.*\]/){#存在urldate + ($preurldate,$urldate,$posurl)=($postitle=~m/(.*)\[(.*)\]\.\s(.*)/); + }else{#不存在urldate + ($preurldate,$posurl)=($postitle=~m/(.*)(http:.*)/); + } + unless($preurldate=~m/\.$/){$preurldate=$preurldate.'.';}#加个点统一上面两种方式 + + #处理url和doi + $regexposurl='(.*)doi:\s(.*)';#处理url和doi + if($posurl=~m/$regexposurl/i){ + ($url,$doi)=($posurl=~m/$regexposurl/i); + }else{ + $url=$posurl; + } + + #处理urldate前的内容,基本article不带url的情况相同 + $flagmatched=0; + $regexbfjournal='(.*),\s(.*),\s(.*)\((.*)\):\s(.*)\.';#包括全部信息 + if($preurldate=~m/$regexbfjournal/ and $flagmatched==0){ + ($journal,$date,$volume,$number,$pages)=($preurldate=~m/$regexbfjournal/); + $flagmatched=1; + } + $regexbfjournal='(.*),\s(.*),\s(.*)\((.*)\)\.';#没有页码 + if($preurldate=~m/$regexbfjournal/ and $flagmatched==0){ + ($journal,$date,$volume,$number)=($preurldate=~m/$regexbfjournal/); + $flagmatched=1; + } + $regexbfjournal='(.*),\s(.*),\s(.*):\s(.*)\.';#没有期 + if($preurldate=~m/$regexbfjournal/ and $flagmatched==0){ + ($journal,$date,$volume,$pages)=($preurldate=~m/$regexbfjournal/); + $flagmatched=1; + } + $regexbfjournal='(.*),\s(.*)\((.*)\):\s(.*)\.';#没有卷/年 + if($preurldate=~m/$regexbfjournal/ and $flagmatched==0){ + ($journal,$date,$number,$pages)=($preurldate=~m/$regexbfjournal/); + $flagmatched=1; + if($date!~m/\d{4}/){ + $volume=$date; + $date=''; + } + } + $regexbfjournal='(.*),\s(.*),\s(.*)\.';#没有页码,期 + if($preurldate=~m/$regexbfjournal/ and $flagmatched==0){ + ($journal,$date,$volume)=($preurldate=~m/$regexbfjournal/); + $flagmatched=1; + } + $regexbfjournal='(.*),\s(.*)\((.*)\)\.';#没有页码,卷/年 + if($preurldate=~m/$regexbfjournal/ and $flagmatched==0){ + ($journal,$date,$number)=($preurldate=~m/$regexbfjournal/); + $flagmatched=1; + if($date!~m/\d{4}/){ + $volume=$date; + $date=''; + } + } + $regexbfjournal='(.*),\s(.*):\s(.*)\.';#没有卷/年,期 + if($preurldate=~m/$regexbfjournal/ and $flagmatched==0){ + ($journal,$date,$pages)=($preurldate=~m/$regexbfjournal/); + $flagmatched=1; + if($date!~m/\d{4}/){ + $volume=$date; + $date=''; + } + } + + if($flagmatched==0){ + print 'the text after title was not matched, please add a regex for the current entry in the perl source code!',"\n"; + print '当前条目标题之后的内容没有匹配的正则表达式,请在perl代码中增加适合该条目正则表达式!',"\n"; + } + + print 'journal =',$journal,"\n"; + print 'date =',$date,"\n"; + print 'volume =',$volume,"\n"; + print 'number =',$number,"\n"; + print 'pages =',$pages,"\n"; + print 'urldate =',$urldate,"\n"; + print 'url =',$url,"\n"; + print 'doi =',$doi,"\n"; + + + } + } + + #--------------------------------------------------------------- + #条目类型:判断报纸中析出的文献/newspaper + #--------------------------------------------------------------- + if(1){ + if($reference=~m/\[N\]/){ + print 'this entry is newspaper',"\n"; + $entrytype='newspaper'; + $note='news'; + $regexnewsflag='\[N\]'; + $onlineflag=0; + } + if($reference=~m/\[N\/OL\]/){ + print 'this entry is newspaper with url',"\n"; + $entrytype='newspaper'; + $note='news'; + $regexnewsflag='\[N\/OL\]'; + $onlineflag=1; + } + if($entrytype eq 'newspaper'){ + if($onlineflag==1){ + $regexformach='\[N\/OL\]'; + &bfidentifier; + + print 'has url',"\n"; + $flagmatched=0; + $regexnewspostitle='\.\s(.*),\s(.*)\((.*)\)\s*\[(.*)\]\.\s(.*)'; + if($reference=~m/$regexnewsflag$regexnewspostitle/ and $flagmatched==0){ + $flagmatched=1; + ($journal,$date,$number,$urldate,$posurl)=($reference=~m/$regexnewsflag$regexnewspostitle/);} + $regexnewspostitle='\.\s(.*),\s(.*)\s*\[(.*)\]\.\s(.*)'; + if($reference=~m/$regexnewsflag$regexnewspostitle/ and $flagmatched==0){ + $flagmatched=1; + ($journal,$date,$urldate,$posurl)=($reference=~m/$regexnewsflag$regexnewspostitle/);} + if($flagmatched==0){ + print 'the text after title was not matched, please add a regex for the current entry in the perl source code!',"\n"; + print '当前条目标题之后的内容没有匹配的正则表达式,请在perl代码中增加适合该条目正则表达式!',"\n"; + } + }else{ + $regexformach='\[N\]'; + &bfidentifier; + + print 'no url',"\n"; + $regexnewspostitle='\.\s(.*),\s(.*)\((.*)\)'; + ($journal,$date,$number)=($reference=~m/$regexnewsflag$regexnewspostitle/); + } + #处理url和doi + $regexposurl='(.*)doi:\s(.*)';#处理url和doi + if($posurl=~m/$regexposurl/i){ + ($url,$doi)=($posurl=~m/$regexposurl/i); + }else{ + $url=$posurl; + } + + # print 'journal =',$journal,"\n"; + # print 'date =',$date,"\n"; + # print 'volume =',$volume,"\n"; + # print 'number =',$number,"\n"; + # print 'pages =',$pages,"\n"; + # print 'urldate =',$urldate,"\n"; + # print 'url =',$url,"\n"; + # print 'doi =',$doi,"\n"; + } + } + + + #--------------------------------------------------------------- + #条目类型:论文集中析出的文献/inproceedings + #--------------------------------------------------------------- + if(1){#\/\/ + if ($reference=~m/\[C\/OL\]\/\//){ + $entrytype='inproceedings'; + print "this entry's type is: $entrytype with url\n"; + $regexformach='\[C\/OL\]\/\/'; + &bfidentifier; + + $regexformach='C\/OL\]\/\/'; + &bfaddressinbook; + + &afpublisherbookurl; + }elsif($reference=~m/\[C\]\/\//){ + $entrytype='inproceedings'; + print "this entry's type is: $entrytype \n"; + $regexformach='\[C\]\/\/'; + &bfidentifier; + + $regexformach='C\]\/\/'; + &bfaddressinbook; + + &afpublisherbook; + } + + if ($entrytype eq 'inproceedings'){ + if ($address=~m/\[S\.l\.\]/ or $address=~m/出版地不详/) {#当存在英文的[s.n.] + $address=""; + } + if ($publisher=~m/\[s\.n\.\]/ or $publisher=~m/出版者不详/) {#当存在英文的[s.n.] + $publisher=""; + } + $date=$year; + } + + } + + + #--------------------------------------------------------------- + #条目类型:论文集/proceedings + #--------------------------------------------------------------- + if(1){ + if ($reference=~m/\[C\/OL\]\./){ + $entrytype='proceedings'; + print "this entry's type is: $entrytype with url\n"; + $regexformach='\[C\/OL\]\.'; + &bfidentifier; + + $regexformach='C\/OL\]\.'; + &bfaddressbook; + + &afpublisherbookurl; + }elsif($reference=~m/\[C\]\./){ + $entrytype='proceedings'; + print "this entry's type is: $entrytype \n"; + $regexformach='\[C\]\.'; + &bfidentifier; + + $regexformach='C\]\.'; + &bfaddressbook; + + &afpublisherbook; + } + + if ($entrytype eq 'proceedings'){ + if ($address=~m/\[S\.l\.\]/ or $address=~m/出版地不详/) {#当存在英文的[s.n.] + $address=""; + } + if ($publisher=~m/\[s\.n\.\]/ or $publisher=~m/出版者不详/) {#当存在英文的[s.n.] + $publisher=""; + } + $date=$year; + print 'date=',"$date"; + } + } + + + + + #--------------------------------------------------------------- + #条目类型:未出版物/unpublished + #--------------------------------------------------------------- + if(1){ + if ($reference=~m/\[Z\/OL\]\./){ + $entrytype='unpublished'; + print "this entry's type is: $entrytype with url\n"; + $regexformach='\[Z\/OL\]\.'; + &bfidentifier; + + $regexformach='Z\/OL\]\.'; + &bfaddressbook; + + &afpublisherbookurlb; + }elsif($reference=~m/\[Z\]\./){ + $entrytype='unpublished'; + print "this entry's type is: $entrytype \n"; + $regexformach='\[Z\]\.'; + &bfidentifier; + + $regexformach='Z\]\.'; + &bfaddressbook; + + &afpublisherbookb; + } + + if ($entrytype eq 'unpublished'){ + $date=$year; + print 'date=',"$date"; + } + } + + + #--------------------------------------------------------------- + #条目类型:手册、档案/manual + #--------------------------------------------------------------- + if(1){ + if ($reference=~m/\[A\/OL\]\./){ + $entrytype='manual'; + print "this entry's type is: $entrytype with url\n"; + $regexformach='\[A\/OL\]\.'; + &bfidentifier; + + $regexformach='A\/OL\]\.'; + &bfaddressbook; + + &afpublisherbookurlb; + }elsif($reference=~m/\[A\]\./){ + $entrytype='manual'; + print "this entry's type is: $entrytype \n"; + $regexformach='\[A\]\.'; + &bfidentifier; + + $regexformach='A\]\.'; + &bfaddressbook; + + &afpublisherbookb; + } + + if ($entrytype eq 'manual'){ + $date=$year; + print 'date=',"$date"; + } + } + + + + #--------------------------------------------------------------- + #条目类型:报告/report + #--------------------------------------------------------------- + if(1){ + if ($reference=~m/\[R\/OL\]\./){ + $entrytype='report'; + print "this entry's type is: $entrytype with url\n"; + $regexformach='\[R\/OL\]\.'; + &bfidentifier; + + $regexformach='R\/OL\]\.'; + &bfaddressbook; + + &afpublisherbookurlb; + }elsif($reference=~m/\[R\]\./){ + $entrytype='report'; + print "this entry's type is: $entrytype \n"; + $regexformach='\[R\]\.'; + &bfidentifier; + + $regexformach='R\]\.'; + &bfaddressbook; + + &afpublisherbookb; + } + + if ($entrytype eq 'report'){ + $date=$year; + print 'date=',"$date"; + } + + } + + #--------------------------------------------------------------- + #条目类型:标准/standard + #--------------------------------------------------------------- + if(1){ + if ($reference=~m/\[S\/OL\]\./){ + $entrytype='standard'; + print "this entry's type is: $entrytype with url\n"; + $regexformach='\[S\/OL\]\.'; + &bfidentifier; + + $regexformach='S\/OL\]\.'; + &bfaddressbook; + &afpublisherbookurl; + }elsif($reference=~m/\[S\]\./){ + $entrytype='standard'; + print "this entry's type is: $entrytype \n"; + $regexformach='\[S\]\.'; + &bfidentifier; + + $regexformach='S\]\.'; + &bfaddressbook; + + &afpublisherbook; + }elsif ($reference=~m/\[S\/OL\]\/\//){ + $entrytype='standard'; + print "this entry's type is: $entrytype with url\n"; + $regexformach='\[S\/OL\]\/\/'; + &bfidentifier; + + $regexformach='S\/OL\]\/\/'; + &bfaddressinbook; + + &afpublisherbookurl; + }elsif($reference=~m/\[S\]\/\//){ + $entrytype='standard'; + print "this entry's type is: $entrytype \n"; + $regexformach='\[S\]\/\/'; + &bfidentifier; + + $regexformach='S\]\/\/'; + &bfaddressinbook; + + &afpublisherbook; + } + if ($entrytype eq 'standard'){ + if ($address=~m/\[S\.l\.\]/ or $address=~m/出版地不详/) {#当存在英文的[s.n.] + $address=""; + } + if ($publisher=~m/\[s\.n\.\]/ or $publisher=~m/出版者不详/) {#当存在英文的[s.n.] + $publisher=""; + } + $date=$year; + $note='standard'; + print 'date=',"$date"; + print 'note=',"$note"; + } + + } + + #--------------------------------------------------------------- + #条目类型:学位论文/thesis + #--------------------------------------------------------------- + if(1){ + if ($reference=~m/\[D\/OL\]\./){ + $entrytype='thesis'; + print "this entry's type is: $entrytype with url\n"; + $regexformach='\[D\/OL\]\.'; + &bfidentifier; + + $regexformach='D\/OL\]\.'; + &bfaddressbook; + + &afpublisherbookurl; + }elsif($reference=~m/\[D\]\./){ + $entrytype='thesis'; + print "this entry's type is: $entrytype \n"; + $regexformach='\[D\]\.'; + &bfidentifier; + + $regexformach='D\]\.'; + &bfaddressbook; + + &afpublisherbook; + } + + if ($entrytype eq 'thesis'){ + if ($address=~m/\[S\.l\.\]/ or $address=~m/出版地不详/) {#当存在英文的[s.n.] + $address=""; + } + if ($publisher=~m/\[s\.n\.\]/ or $publisher=~m/出版者不详/) {#当存在英文的[s.n.] + $publisher=""; + } + $date=$year; + print 'date=',"$date"; + } + + } + + + #--------------------------------------------------------------- + #条目类型:汇编中析出的文献/incollection + #--------------------------------------------------------------- + if(1){#\/\/ + if ($reference=~m/\[G\/OL\]\/\//){ + $entrytype='incollection'; + print "this entry's type is: $entrytype with url\n"; + $regexformach='\[G\/OL\]\/\/'; + &bfidentifier; + + $regexformach='G\/OL\]\/\/'; + &bfaddressinbook; + + &afpublisherbookurl; + }elsif($reference=~m/\[G\]\/\//){ + $entrytype='incollection'; + print "this entry's type is: $entrytype \n"; + $regexformach='\[G\]\/\/'; + &bfidentifier; + + $regexformach='G\]\/\/'; + &bfaddressinbook; + + &afpublisherbook; + } + + if ($entrytype eq 'incollection'){ + if ($address=~m/\[S\.l\.\]/ or $address=~m/出版地不详/) {#当存在英文的[s.n.] + $address=""; + } + if ($publisher=~m/\[s\.n\.\]/ or $publisher=~m/出版者不详/) {#当存在英文的[s.n.] + $publisher=""; + } + $date=$year; + } + + } + + + #--------------------------------------------------------------- + #条目类型:汇编/collection + #--------------------------------------------------------------- + if(1){ + if ($reference=~m/\[G\/OL\]\./){ + $entrytype='collection'; + print "this entry's type is: $entrytype with url\n"; + $regexformach='\[G\/OL\]\.'; + &bfidentifier; + + $regexformach='G\/OL\]\.'; + &bfaddressbook; + + &afpublisherbookurl; + }elsif($reference=~m/\[G\]\./){ + $entrytype='collection'; + print "this entry's type is: $entrytype \n"; + $regexformach='\[G\]\.'; + &bfidentifier; + + $regexformach='G\]\.'; + &bfaddressbook; + + &afpublisherbook; + } + + if ($entrytype eq 'collection'){ + if ($address=~m/\[S\.l\.\]/ or $address=~m/出版地不详/) {#当存在英文的[s.n.] + $address=""; + } + if ($publisher=~m/\[s\.n\.\]/ or $publisher=~m/出版者不详/) {#当存在英文的[s.n.] + $publisher=""; + } + $date=$year; + print 'date=',"$date"; + } + } + + + #--------------------------------------------------------------- + #条目类型:专利/patent + #--------------------------------------------------------------- + if(1){ + if ($reference=~m/\[P\/OL\]\./){ + $entrytype='patent'; + print "this entry's type is: $entrytype with url\n"; + $regexformach='\[P\/OL\]\.'; + &bfidentifier; + }elsif($reference=~m/\[P\]\./){ + $entrytype='patent'; + print "this entry's type is: $entrytype \n"; + $regexformach='\[P\]\.'; + &bfidentifier; + } + + if($entrytype eq 'patent'){ + ($postitle)=($reference=~m/$regexformach\s*(.*)/); + print 'postitle=',$postitle,"\n"; + $titlenumber=$title; + if($titlenumber=~m/:\s*\d.*/){ + ($title,$number)=($titlenumber=~m/(.*):\s*(\d.*)/); + print 'title =',$title,"\n"; + print 'number =',$number,"\n"; + } + + if($postitle=~m/\[.*\]/ and $reference=~m/\[P\/OL\]\./){ + ($date,$urldate,$posurl)=($postitle=~/(.*)\s*\[(.*)\]\.\s*(.*)/); + print 'date=',$date,"\n"; + print 'urldate =',$urldate,"\n"; + print 'posurl =',$posurl,"\n"; + if($posurl=~m/DOI/i){#匹配存在doi的话 + ($url,$doi)=($posurl=~m/(.*)DOI:(.*)\./i); + print 'url=',"$url \n"; + print 'doi=',"$doi \n"; + }else{ + $url=$posurl; + print 'url =',"$url \n"; + } + }else{ + $posurl=$postitle; + if($posurl=~m/DOI/i){#匹配存在doi的话 + ($date,$doi)=($posurl=~m/(.*)DOI:(.*)\./i); + print 'date=',"$date \n"; + print 'doi =',"$doi \n"; + }else{ + $date=$posurl; + print 'date =',"$date \n"; + } + } + } + } + + + #--------------------------------------------------------------- + #条目类型:电子资源/online + #--------------------------------------------------------------- + if(1){ + if ($reference=~m/\[EB\/OL\]\./){#匹配[EB/OL]判断为online类型 + $entrytype='online'; + print "this entry's type is: $entrytype \n"; + + $regexformach='\[EB\/OL\]\.'; + &bfidentifier; + + ($postitle)=($reference=~m/$regexformach\s*(.*)/); + print 'postitle=',$postitle,"\n"; + + if($postitle=~m/\(.*\)/ and $postitle=~m/\[.*\]/){#存在更新日期和引用日期 + ($eventdate,$urldate,$posurl)=($postitle=~/\s*\((.*)\)\s*\[(.*)\]\.\s*(.*)/); + }elsif($postitle=~m/\(.*\)/ and $postitle!~m/\[.*\]/){#存在更新日期但无引用日期 + ($eventdate,$posurl)=($postitle=~/\s*\((.*)\)\.\s*(.*)/); + }elsif($postitle!~m/\(.*\)/ and $postitle=~m/\[.*\]/){#存在引用日期但无更新日期 + ($urldate,$posurl)=($postitle=~/\s*\[(.*)\]\.\s*(.*)/); + }else{ + ($posurl)=($postitle=~/\s*(.*)/); + } + print 'eventdate=',$eventdate,"\n"; + print 'urldate =',$urldate,"\n"; + print 'posurl =',$posurl,"\n"; + + if($posurl=~m/DOI/i){#匹配存在doi的话 + ($url,$doi)=($posurl=~m/(.*)DOI:(.*)\./i); + print 'url=',"$url \n"; + print 'doi=',"$doi \n"; + }else{ + $url=$posurl; + print 'url =',"$url \n"; + } + } + } + + #--------------------------------------------------------------- + #条目类型:专著/book + #--------------------------------------------------------------- + if(1){ + if ($reference=~m/\[M\]\./){#匹配[M]判断为book类型 + print "this entry's type is: book \n"; + $entrytype='book'; + + $regexformach='\[M\]\.'; + &bfidentifier; + + $regexformach='M\]\.'; + &bfaddressbook; + + &afpublisherbook; + + if ($address=~m/\[S\.l\.\]/ or $address=~m/出版地不详/) {#当存在英文的[s.n.] + $address=""; + } + if ($publisher=~m/\[s\.n\.\]/ or $publisher=~m/出版者不详/) {#当存在英文的[s.n.] + $publisher=""; + } + $date=$year; + } + } + + #--------------------------------------------------------------- + #条目类型:专著但存在网址/book with url + #--------------------------------------------------------------- + if(1){ + if ($reference=~m/\[M\/OL\]\./){ + print "this entry's type is: book with url\n"; + $entrytype='book'; + + $regexformach='\[M\/OL\]\.'; + &bfidentifier; + + $regexformach='M\/OL\]\.'; + &bfaddressbook; + + &afpublisherbookurl; + + + if ($address=~m/\[S\.l\.\]/ or $address=~m/出版地不详/) {#当存在英文的[s.n.] + $address=""; + } + if ($publisher=~m/\[s\.n\.\]/ or $publisher=~m/出版者不详/) {#当存在英文的[s.n.] + $publisher=""; + } + $date=$year; + } + } + + + #--------------------------------------------------------------- + #条目类型:专著中析出文献/inbook + #--------------------------------------------------------------- + if(1){ + if ($reference=~m/\[M\]\/\//){#匹配[M]//判断为inbook类型 + print "this entry's type is: inbook \n"; + $entrytype='inbook'; + + $regexformach='\[M\]\/\/'; + &bfidentifier; + + $regexformach='M\]\/\/'; + &bfaddressinbook; + + &afpublisherbook;#出版社及之后的信息inbook/book一样的 + + + if ($address=~m/\[S\.l\.\]/ or $address=~m/出版地不详/) {#当存在英文的[s.n.] + $address=""; + } + if ($publisher=~m/\[s\.n\.\]/ or $publisher=~m/出版者不详/) {#当存在英文的[s.n.] + $publisher=""; + } + $date=$year; + } + } + + + #--------------------------------------------------------------- + #条目类型:专著中析出文献但存在网址/inbook with url + #--------------------------------------------------------------- + if(1){ + if ($reference=~m/\[M\/OL\]\/\//){#匹配[M]//判断为inbook类型 + print "this entry's type is: inbook \n"; + $entrytype='inbook'; + + + $regexformach='\[M\/OL\]\/\/'; + &bfidentifier; + + $regexformach='M\/OL\]\/\/'; + &bfaddressinbook; + + &afpublisherbookurl;#出版社及之后的信息inbook/book一样的 + + + if ($address=~m/\[S\.l\.\]/ or $address=~m/出版地不详/) {#当存在英文的[s.n.] + $address=""; + } + if ($publisher=~m/\[s\.n\.\]/ or $publisher=~m/出版者不详/) {#当存在英文的[s.n.] + $publisher=""; + } + $date=$year; + } + } + + + #--------------------------------------------------------------- + #输出到bib文件中 + #--------------------------------------------------------------- + if(1){ + if($date=~m/-\d{4}/){#存在enddate的情况下,将中间的连字符转化成斜杠 + print 'date=',$date,"\n"; + ($datetempa,$datetempb)=($date=~m/(.*)-(\d{4}.*)/); + $date=$datetempa.'/'.$datetempb; + print 'date=',$date,"\n"; + } + + if($url=~m/.*\.$/){ + $urlplusdot=$url; + ($url)=($urlplusdot=~m/(.*)\.$/);#去掉处于条目末尾的url地址后的点 + } + #最后输出 + print "\n"; + print '@',"$entrytype",'{',"ref-$nline-$sn",',',"\n"; + $author&& print 'author = {',$author,'},',"\n"; + $title&& print 'title = {',$title,'},',"\n"; + $journal&& print 'journal = {',$journal,'},',"\n"; + $translator&& print 'translator= {',$translator,'},',"\n"; + $bookauthor&& print 'bookauthor= {',$bookauthor,'},',"\n"; + $booktitle&& print 'booktitle = {',$booktitle,'},',"\n"; + $version&& print 'version = {',$version,'},',"\n"; + $address&& print 'address = {',$address,'},',"\n"; + $publisher&& print 'publisher = {',$publisher,'},',"\n"; + $type&& print 'type = {',$type,'},',"\n"; + $date&& print 'date = {',$date,'},',"\n"; + $volume&& print 'volume = {',$volume,'},',"\n"; + $number&& print 'number = {',$number,'},',"\n"; + $pages&& print 'pages = {',$pages,'},',"\n"; + $eventdate&& print 'eventdate = {',$eventdate,'},',"\n"; + $urldate&& print 'urldate = {',$urldate,'},',"\n"; + $url&& print 'url = {',$url,'},',"\n"; + $doi&& print 'doi = {',$doi,'},',"\n"; + $note&& print 'note = {',$note,'},',"\n"; + print '}',"\n"; + print 'authorlabel=',$authorlabel,"\n"; + + + print FHW '@',"$entrytype",'{',"ref-$nline-$sn-$authorlabel",',',"\n"; + $author&& print FHW 'author = {',$author,'},',"\n"; + $title&& print FHW 'title = {',$title,'},',"\n"; + $journal&& print FHW 'journal = {',$journal,'},',"\n"; + $translator&& print FHW 'translator= {',$translator,'},',"\n"; + $bookauthor&& print FHW 'bookauthor= {',$bookauthor,'},',"\n"; + $booktitle&& print FHW 'booktitle = {',$booktitle,'},',"\n"; + $version&& print FHW 'version = {',$version,'},',"\n"; + $address&& print FHW 'address = {',$address,'},',"\n"; + $publisher&& print FHW 'publisher = {',$publisher,'},',"\n"; + $type&& print FHW 'type = {',$type,'},',"\n"; + $date&& print FHW 'date = {',$date,'},',"\n"; + $volume&& print FHW 'volume = {',$volume,'},',"\n"; + $number&& print FHW 'number = {',$number,'},',"\n"; + $pages&& print FHW 'pages = {',$pages,'},',"\n"; + $eventdate&& print FHW 'eventdate = {',$eventdate,'},',"\n"; + $urldate&& print FHW 'urldate = {',$urldate,'},',"\n"; + $url&& print FHW 'url = {',$url,'},',"\n"; + $doi&& print FHW 'doi = {',$doi,'},',"\n"; + $note&& print FHW 'note = {',$note,'},',"\n"; + print FHW '}',"\n"; + } + + + print "\n"; + if($nline>=$ne){last;} #先跳过几行进行,配合后面的last进行当行测试 +} + + sub bfidentifier{#bf表示before,标识符前所有的类型都一样 + #$regexpformach=@_; + #print '@_=',@_,"\n"; + #print 'regexpformach=',"$regexpformach \n"; + #标识符之前很容易匹配三个内容,序号,作者和标题 + if($reference=~m/.*\D\.\s\D.*$regexformach/){#匹配存在作者后的点的话,同时点号周围不是数字,有时标题中可能出现1.1这样的信息 + ($sn , $author , $title)=($reference=~m/\[(\d+)\]\s*(.*)\.\s(.*)$regexformach/); + print 'sn =',"$sn \n"; + print 'author=',"$author \n";#作者多个姓名还需要处理,还要注意有前后缀的情况 + print 'title =',"$title \n"; + if($author=~m/等/){ + $author=~s/等/others/;#将等换成others + }else{ + $author=~s/,\s*$//;#将最后一个逗号去掉 + } + if($author=~m/et\sal/){ + $author=~s/et\sal/others/;#将et al.换成others + }else{ + $author=~s/,\s*$//;#将最后一个逗号去掉 + } + while($author=~m/,/){ + $author=~s/,/ and /;#将逗号换成and + } + print 'author=',"$author \n"; + }else{#不存在作者的话\[M\]\/\/ + ($sn , $title)=($reference=~m/\[(\d+)\]\s*(.*)$regexformach/);#标识符之前很容易匹配三个内容,序号,作者和标题 + print 'sn =',"$sn \n"; + print 'title =',"$title \n"; + } + + #进一步处理责任者的姓名,主要针对英文名需要有一些符号进行区分姓,名,前缀和后缀。 + @names=split('and',$author); + print 'names=',@names,"\n"; + $author=""; + $j=0; + foreach $name(@names){#一个姓名一个姓名处理 + + $j=$j+1; + #print $name,"\n"; + @nameparts=split(' ',$name); + #print 'nameparts=',@nameparts,"\n"; + + $org=0; + for($k=0;$k<@nameparts;$k++){ + if(@nameparts[$k]=~m/.{2,}/ and @nameparts[$k]!~m/\s*von\s*/i and @nameparts[$k]!~m/\s*jr\s*/i){ + #当分解的单作者的各个部分,存在两个以上为2个字符以上的情况,说明不是一般的姓名而是机构作者 + $org=$org+1; + print 'org=',"$org\n"; + } + } + + if(@nameparts>1){ + if(@nameparts[0]=~m/\s*von\s*/i){#确定姓的位置 + $family=1; + @nameparts[1]=@nameparts[1].','; + }else{ + $family=0; + @nameparts[0]=@nameparts[0].','; + } + if(@nameparts[-1]=~m/\s*jr\s*/i){#确定后缀的位置 + @nameparts[-1]=@nameparts[-1].'.,'; + $given=@nameparts-2; + $suffix=1; + }else{ + $suffix=0; + $given=@nameparts-1; + } + print 'family=',$family,"\n"; + print 'given=',$given,"\n"; + print 'suffix=',$suffix,"\n"; + print 'familyname=',@nameparts[$family],"\n"; + + $namefmt=""; + for($i=0;$i<=$family;$i++){ + $namefmt=$namefmt.@nameparts[$i].' '; + print $i,$family,$namefmt,"\n"; + } + if($suffix){ + $namefmt=$namefmt.@nameparts[-1].' '; + } + for($i=$family+1;$i<=$given;$i++){ + $namefmt=$namefmt.@nameparts[$i].' '; + print $i,$family,$namefmt,"\n"; + } + }else{ + $namefmt=$name; + } + if($org > 1){#当是机构作者时 + $namefmt='{'.$name.'}'; + } + print 'namefmt=',"$namefmt \n"; + + if($j==1){#把姓名用and连接起来 + $author=$namefmt; + }else{ + $author=$author.' and '.$namefmt; + } + + if($j==1){#根据第一个作者构建authorlabel + if($org > 1){#机构作者取各单词的首字母 + $authorlabel=''; + for($k=0;$k<@nameparts;$k++){ + ($strtmp)=($nameparts[$k]=~/^(.)/); + $authorlabel=$authorlabel.$strtmp; + } + }else{#姓名则仅取作者姓 + ($authorlabel)=$nameparts[$family]; + if($authorlabel=~m/,$/){$authorlabel=~s/,$//;}#去掉最后的逗号 + } + } + } + while($author=~m/\s{2,}/){ + $author=~s/\s{2,}/ /;#将多余的空格去掉 + } + while($author=~m/\.{2,}/){ + $author=~s/\.{2,}/\./;#将多余的点去掉 + } + print 'author=',"$author\n"; + } + + + sub bfaddressbook{#bf表示before,出版者前book和inbook不一样 + #对于book类型,必然存在出版地和出版者信息,以此为根据展开 + print 'sub:bfaddressbook ',"\n"; + if($reference!~m/$regexformach\s*[^:]+:\s\D{1,}.*/){#如果不存在出版地和出版者信息 + ($pospublisher)=($reference=~m/$regexformach\s*(.*)/); + print 'pospublisher=',"$pospublisher \n"; + }else{ + ($preaddress, $pospublisher)=($reference=~m/$regexformach\s*([^:]+):\s(\D{1,}.*)/);#标识符之后根据第一个冒号分为包括地址的信息和包括出版者的信息两部分 + print 'preaddress =',"$preaddress \n"; + print 'pospublisher=',"$pospublisher \n"; + + #处理出版地及其前面的信息 + if ($preaddress=~m/.*\[S\.l\.\].*/) {#当存在英文的[S.l.],英文的一般不存在译者,所以下面处理比较简单 + $preaddress=~s/\[S\.l\.\]/\[S-l-\]/; #先将[S.l.]换成[S-l-]然后换回来 + } + if ($preaddress=~m/.*\d.*\.\s*.*/){#匹配存在数字版本的话 + ($preversion, $version, $address)=($preaddress=~m/(.*)(\d)[^\.]*\.\s*(.*)/); + print 'preversion =',"$preversion \n"; + print 'version =',"$version \n"; + print 'address =',"$address \n"; + if($preversion=~m/.*\..*/){#如果存在译者等信息 + ($translator)=($preversion=~m/(.*)\..*/); + print 'translator =',"$translator \n";#作者多个姓名还需要处理,还有译这个标识 + } + }else {#不存在数字版本的话 + if($preaddress=~m/.*\.\s+.*/){#存在点加空格,表示存在其他作者信息,区别点在末尾但无空格 + ($preversion,$address)=($preaddress=~m/(.*)\.\s*(.*)/); + print 'preversion =',"$preversion \n"; + print 'address =',"$address \n"; + $translator=$preversion; + print 'translator =',"$translator \n"; + }else{ + $address=$preaddress; + print 'address =',"$address \n"; + } + } + + if($translator=~m/译/){#当译者真实存在 + $translator=~s/,\s*译//;#将译去掉 + if($translator=~m/等/){ + $translator=~s/等/others/;#将等换成others + }else{ + $translator=~s/,\s*$//;#将最后一个逗号去掉 + } + while($translator=~m/,/){ + $translator=~s/,/ and /;#将逗号换成and + } + print 'translator =',"$translator \n"; + }else {#当译者不存在,那么translator中信息可能是非数字的版本信息 + unless($version) {#除非version没有信息 + $version=$translator; + $translator=""; + }else{ + print "version is already exisit!\n"; + print 'version=',$version,"\n"; + print 'translator=',$translator,"\n"; + } + } + + if ($address=~m/.*\[S-l-\].*/) {#当存在英文的[S-l-][S.l.] + $address=~s/\[S-l-\]/\[S\.l\.\]/; #将[S-l-]换回[S.l.] + } + } + } + + + sub bfaddressinbook{#bf表示before,出版者前book和inbook不一样 + ($postitle)=($reference=~m/$regexformach\s*(.*)/); + print 'postitle=',$postitle,"\n"; + if($postitle=~m/^[^:\.]+:[^:\.]+\./){#当存在析出源第一项中出现:时 + $postitle=~s/:/colon/;#先将该冒号换成colon + print 'postitle=',$postitle,"\n"; + } + #对于inbook类型,必然存在出版地和出版者信息,以此为根据展开 + ($preaddress, $pospublisher)=($postitle=~m/\s*(.*):\s(\D.*)/); + #($preaddress, $pospublisher)=($postitle=~m/\s*([^:]+):\s(\D.*)/); + #标识符之后根据第一个冒号分为包括地址的信息和包括出版者的信息两部分 + print 'preaddress =',"$preaddress \n"; + print 'pospublisher=',"$pospublisher \n"; + + #处理出版地及其前面的信息 + if ($preaddress=~m/.*\[S\.l\.\].*/) {#当存在英文的[S.l.],英文的一般不存在译者,所以下面处理比较简单 + $preaddress=~s/\[S\.l\.\]/\[S-l-\]/; #先将[S.l.]换成[S-l-]然后换回来 + } + if ($preaddress=~m/.*\d.*\.\s+.*/ and ($preaddress=~m/.*th\sed.*/ or $preaddress=~m/.*版.*/)){#匹配存在数字版本的话 + ($preversion, $version, $address)=($preaddress=~m/(.*)(\d)[^\.]*\.\s+(.*)/); + print 'preversion =',"$preversion \n"; + print 'version =',"$version \n"; + print 'address =',"$address \n"; + if($preversion=~m/.*\.\s+.*/){#如果存在译者等信息 + ($translator)=($preversion=~m/(.*)\.\s+.*/); + print 'translator =',"$translator \n";#作者多个姓名还需要处理,还有译这个标识 + } + }else {#不存在数字版本的话 + if($preaddress=~m/.*\.\s+.*/){#存在点加空格,表示存在其他作者信息,区别点在末尾但无空格 + ($preversion,$address)=($preaddress=~m/(.*)\.\s+(.*)/); + print 'preversion =',"$preversion \n"; + print 'address =',"$address \n"; + if($preversion=~m/.*\.\s+.*/){#中间还存在点加空格 + ($bookauthor,$booktitle)=($preversion=~m/(.*)\.\s+(.*)/); + + if($bookauthor=~m/等/){ + $bookauthor=~s/等/others/;#将等换成others + }else{ + $bookauthor=~s/,\s*$//;#将最后一个逗号去掉 + } + if($bookauthor=~m/et\sal/){ + $bookauthor=~s/et\sal/others/;#将et al.换成others + }else{ + $bookauthor=~s/,\s*$//;#将最后一个逗号去掉 + } + while($bookauthor=~m/,/){ + $bookauthor=~s/,/ and /;#将逗号换成and + } + print 'bookauthor=',"$bookauthor \n"; + }else{ + $booktitle=$preversion; + } + }else{ + $address=$preaddress; + print 'address =',"$address \n"; + } + } + + if ($address=~m/.*\[S-l-\].*/) {#当存在英文的[S-l-][S.l.] + $address=~s/\[S-l-\]/\[S\.l\.\]/; #将[S-l-]换回[S.l.] + } + if ($booktitle=~m/.*colon.*/) {#当存在colon + $booktitle=~s/colon/:/; #将colon换回: + } + + #进一步处理责任者的姓名,主要针对英文名需要有一些符号进行区分姓,名,前缀和后缀。 + @names=split('and',$bookauthor); + print 'names=',@names,"\n"; + $bookauthor=""; + $j=0; + foreach $name(@names){ + $j=$j+1; + #print $name,"\n"; + @nameparts=split(' ',$name); + #print 'nameparts=',@nameparts,"\n"; + + $org=0; + for($k=0;$k<@nameparts;$k++){ + if(@nameparts[$k]=~m/.{2,}/ and @nameparts[$k]!~m/\s*von\s*/i and @nameparts[$k]!~m/\s*jr\s*/i){ + #当分解的单作者的各个部分,存在两个以上为2个字符以上的情况,说明不是一般的姓名而是机构作者 + $org=$org+1; + print 'org=',"$org\n"; + } + } + + if(@nameparts>1){ + if(@nameparts[0]=~m/\s*von\s*/i){#确定姓的位置 + $family=1; + @nameparts[1]=@nameparts[1].','; + }else{ + $family=0; + @nameparts[0]=@nameparts[0].','; + } + if(@nameparts[-1]=~m/\s*jr\s*/i){#确定后缀的位置 + @nameparts[-1]=@nameparts[-1].'.,'; + $given=@nameparts-2; + $suffix=1; + }else{ + $suffix=0; + $given=@nameparts-1; + } + #print 'family=',$family,"\n"; + #print 'given=',$given,"\n"; + #print 'suffix=',$suffix,"\n"; + + $namefmt=""; + for($i=0;$i<=$family;$i++){ + $namefmt=$namefmt.@nameparts[$i].' '; + #print $i,$family,$namefmt,"\n"; + } + if($suffix){ + $namefmt=$namefmt.@nameparts[-1].' '; + } + for($i=$family+1;$i<=$given;$i++){ + $namefmt=$namefmt.@nameparts[$i].' '; + } + }else{ + $namefmt=$name; + } + if($org > 1){#当是机构作者时 + $namefmt='{'.$name.'}'; + } + #print 'namefmt=',"$namefmt \n"; + + if($j==1){ + $bookauthor=$namefmt; + }else{ + $bookauthor=$bookauthor.' and '.$namefmt; + } + } + while($bookauthor=~m/\s{2,}/){ + $bookauthor=~s/\s{2,}/ /;#将多余的空格去掉 + } + while($bookauthor=~m/\.{2,}/){ + $bookauthor=~s/\.{2,}/\./;#将多余的点去掉 + } + print 'bookauthor=',"$bookauthor\n"; + } + + + sub afpublisherbook{#af表示after,出版者后book和inbook一样,但如果存在url则不同 + #处理出版者及其后面的信息 + if ($pospublisher=~m/.*\[s\.n\.\].*/) {#当存在英文的[s.n.] + $pospublisher=~s/\[s\.n\.\]/\[s-n-\]/; #先将[s.n.]换成[s-n-]然后换回来 + } + if ($pospublisher=~m/.*,\s*\d{4}\S+/){#匹配存在年份的话 + ($publisher, $year, $posyear)=($pospublisher=~m/(.*),\s*(\d{4})(.*)/); + print 'publisher=',"$publisher \n"; + print 'year =',"$year \n"; + print 'posyear =',"$posyear \n"; + if($posyear=~m/^:/){#匹配存在页码前面的冒号的话 + ($pages, $pospages)=($posyear=~m/^:([^\.]+)\.(.*)/); + print 'pages =',"$pages \n"; + print 'pospages=',"$pospages \n"; + if($pospages=~m/DOI/i){#匹配存在doi的话 + ($doi)=($pospages=~m/DOI:(.*)\./i); + print 'doi=',"$doi \n"; + } + }else{#不存在页码的话 + if($posyear=~m/DOI/i){#匹配存在doi的话 + ($doi)=($posyear=~m/DOI:(.*)\./i); + print 'doi=',"$doi \n"; + } + } + }else{#不存在年份,匹配一下是否存在冒号和页码 + if($pospublisher=~m/.*[^DOI]:.*/i){#当存在不是doi后面的冒号时,说明有页码 + ($publisher, $pages, $pospages)=($pospublisher=~m/([^:]*):([^\.]*)\.(.*)/); + print 'publisher=',"$publisher \n"; + print 'pages =',"$pages \n"; + print 'pospages =',"$pospages \n"; + if($pospages=~m/DOI/i){#匹配存在doi的话 + ($doi)=($pospages=~m/DOI:(.*)\./i); + print 'doi=',"$doi \n"; + } + }else{#没有页码冒号以点作为出版者后的分隔点 + ($publisher, $pospages)=($pospublisher=~m/([^\.]*)\.(.*)/); + print 'publisher=',"$publisher \n"; + print 'pospages =',"$pospages \n"; + if($pospages=~m/DOI/i){#匹配存在doi的话 + ($doi)=($pospages=~m/DOI:(.*)\./i); + print 'doi=',"$doi \n"; + } + } + } + if ($publisher=~m/.*\[s-n-\].*/) {#当存在英文的[s-n-] + $publisher=~s/\[s-n-\]/\[s\.n\.\]/; #将[s-n-]换回[s.n.] + } + } + + + sub afpublisherbookurl{#af表示after,出版者后book和inbook一样,但如果存在url则不同 + #处理出版者及其后面的信息 + if ($pospublisher=~m/.*\[s\.n\.\].*/) {#当存在英文的[s.n.] + $pospublisher=~s/\[s\.n\.\]/\[s-n-\]/; #先将[s.n.]换成[s-n-]然后换回来 + } + if ($pospublisher=~m/.*,\s*\d{4}[^\d-]/){#匹配存在年份的话,4个数字后面跟着不能是数字和连字符- + ($publisher, $year, $posyear)=($pospublisher=~m/(.*),\s*(\d{4})(.*)/); + print 'publisher=',"$publisher \n"; + print 'year =',"$year \n"; + print 'posyear =',"$posyear \n"; + if($posyear=~m/^:/){#匹配存在页码前面的冒号的话 + ($pages, $pospages)=($posyear=~m/^:([^\.]+)\.(.*)/); + print 'pages =',"$pages \n"; + print 'pospages=',"$pospages \n"; + if($pages=~m/\[.*\]/){ + ($pagesa, $urldate)=($pages=~m/(.*)\[(.*)\]/); + $pages=$pagesa; + print 'urldate=',"$urldate \n"; + print 'pages=',"$pages \n"; + } + if($pospages=~m/DOI/i){#匹配存在doi的话 + ($url, $doi)=($pospages=~m/(.*)\.\s*DOI:(.*)\./i); + print 'url=',"$url \n"; + print 'doi=',"$doi \n"; + }else{ + ($url)=($pospages=~m/(.*)\./i); + print 'url=',"$url \n"; + } + } + else{#不存在页码的话 + if($posyear=~m/\[.*\]/){ + ($urldate,$pospages)=($posyear=~m/.*\[(.*)\]\.(.*)/); + print 'urldate=',"$urldate \n"; + print 'pospages=',"$pospages \n"; + } + else{#不存在页码,又不存在引用日期的话,那么会有一个点和空格 + ($pospages)=($posyear=~m/.*\s(.*)/); + print 'pospages=',"$pospages \n"; + } + if($pospages=~m/DOI/i){#匹配存在doi的话 + ($url, $doi)=($pospages=~m/(.*)\.\s*DOI:(.*)\./i); + print 'url=',"$url \n"; + print 'doi=',"$doi \n"; + }else{ + ($url)=($pospages=~m/(.*)\./i); + print 'url=',"$url \n"; + } + } + }else{#不存在年份,匹配一下是否存在冒号和页码 + if($pospublisher=~m/.*[^DOIhttp]:.*/i){#当存在不是doi或http后面的冒号时,说明有页码 + ($publisher, $pages, $pospages)=($pospublisher=~m/([^:]*):([^\.]*)\.(.*)/); + print 'publisher=',"$publisher \n"; + print 'pages =',"$pages \n"; + print 'pospages =',"$pospages \n"; + if($pages=~m/\[.*\]/){ + ($pagesa, $urldate)=($pages=~m/(.*)\[(.*)\]/); + $pages=$pagesa; + print 'urldate=',"$urldate \n"; + print 'pages=',"$pages \n"; + } + if($pospages=~m/DOI/i){#匹配存在doi的话 + ($url, $doi)=($pospages=~m/(.*)\.\s*DOI:(.*)\./i); + print 'url=',"$url \n"; + print 'doi=',"$doi \n"; + }else{ + ($url)=($pospages=~m/(.*)\./i); + print 'url=',"$url \n"; + } + }else{#没有页码冒号以点作为出版者后的分隔点 + ($publisher, $pospages)=($pospublisher=~m/([^\.]*)\.(.*)/); + print 'publisher=',"$publisher \n"; + print 'pospages =',"$pospages \n"; + if($publisher=~m/\[.*\]/){ + ($publishera, $urldate)=($publisher=~m/(.*)\[(.*)\]/); + $publisher=$publishera; + print 'urldate=',"$urldate \n"; + print 'publisher=',"$publisher \n"; + } + if($pospages=~m/DOI/i){#匹配存在doi的话 + ($url, $doi)=($pospages=~m/(.*)\.\s*DOI:(.*)\./i); + print 'url=',"$url \n"; + print 'doi=',"$doi \n"; + }else{ + ($url)=($pospages=~m/(.*)\./i); + print 'url=',"$url \n"; + } + } + } + if ($publisher=~m/.*\[s-n-\].*/) {#当存在英文的[s-n-] + $publisher=~s/\[s-n-\]/\[s\.n\.\]/; #将[s-n-]换回[s.n.] + } + } + + + sub afpublisherbookb{#af表示after,出版者后book和inbook一样,但如果存在url则不同 + #处理出版者及其后面的信息 + if ($pospublisher=~m/.*\[s\.n\.\].*/) {#当存在英文的[s.n.] + $pospublisher=~s/\[s\.n\.\]/\[s-n-\]/; #先将[s.n.]换成[s-n-]然后换回来 + } + if ($pospublisher=~m/.*[\.\s,]*\d{4}[\D\S]+/){#匹配存在年份的话,年份前面没有逗号+空格 + ($publisher, $year, $posyear)=($pospublisher=~m/(.*)[\.\s,]*(\d{4})([\D\S].*)/); + print 'publisher=',"$publisher \n"; + if($publisher=~m/[,\s]+$/){$publisher=~s/[,\s]+$//;}#去掉最后的逗号 + unless($address){#当没有出版地时,也没有必要存在 + $version=$publisher; + $publisher=''; + } + print 'year =',"$year \n"; + print 'posyear =',"$posyear \n"; + if($posyear=~m/^:/){#匹配存在页码前面的冒号的话 + ($pages, $pospages)=($posyear=~m/^:([^\.]+)\.(.*)/); + print 'pages =',"$pages \n"; + print 'pospages=',"$pospages \n"; + if($pospages=~m/DOI/i){#匹配存在doi的话 + ($doi)=($pospages=~m/DOI:(.*)\./i); + print 'doi=',"$doi \n"; + } + }else{#不存在页码的话 + if($posyear=~m/DOI/i){#匹配存在doi的话 + ($doi)=($posyear=~m/DOI:(.*)\./i); + print 'doi=',"$doi \n"; + } + } + }else{#不存在年份,匹配一下是否存在冒号和页码 + if($pospublisher=~m/.*[^DOI]:.*/i){#当存在不是doi后面的冒号时,说明有页码 + ($publisher, $pages, $pospages)=($pospublisher=~m/([^:]*):([^\.]*)\.(.*)/); + print 'publisher=',"$publisher \n"; + print 'pages =',"$pages \n"; + print 'pospages =',"$pospages \n"; + if($pospages=~m/DOI/i){#匹配存在doi的话 + ($doi)=($pospages=~m/DOI:(.*)\./i); + print 'doi=',"$doi \n"; + } + }else{#没有页码冒号以点作为出版者后的分隔点 + ($publisher, $pospages)=($pospublisher=~m/([^\.]*)\.(.*)/); + print 'publisher=',"$publisher \n"; + print 'pospages =',"$pospages \n"; + if($pospages=~m/DOI/i){#匹配存在doi的话 + ($doi)=($pospages=~m/DOI:(.*)\./i); + print 'doi=',"$doi \n"; + } + } + if($publisher=~m/,$/){$publisher=~s/,$//;}#去掉最后的逗号 + unless($address){#当没有出版地时,也没有必要存在 + $type=$publisher; + $publisher=''; + } + } + if ($publisher=~m/.*\[s-n-\].*/) {#当存在英文的[s-n-] + $publisher=~s/\[s-n-\]/\[s\.n\.\]/; #将[s-n-]换回[s.n.] + } + } + + + + sub afpublisherbookurlb{#af表示after,出版者后book和inbook一样,但如果存在url则不同 + #处理出版者及其后面的信息 + if ($pospublisher=~m/.*\[s\.n\.\].*/) {#当存在英文的[s.n.] + $pospublisher=~s/\[s\.n\.\]/\[s-n-\]/; #先将[s.n.]换成[s-n-]然后换回来 + } + if ($pospublisher=~m/.*[\.\s,]*\d{4}[^\d-]/){#匹配存在年份的话,4个数字后面跟着不能是数字和连字符- + ($publisher, $year, $posyear)=($pospublisher=~m/(.*)[\.\s,]*(\d{4})([^\d-].*)/); + print 'publisher=',"$publisher \n"; + print 'year =',"$year \n"; + print 'posyear =',"$posyear \n"; + if($publisher=~m/,$/){$publisher=~s/,$//;}#去掉最后的逗号 + unless($address){#当没有出版地时,也没有必要存在 + $version=$publisher; + $publisher=''; + } + if($posyear=~m/^:/){#匹配存在页码前面的冒号的话 + ($pages, $pospages)=($posyear=~m/^:([^\.]+)\.(.*)/); + print 'pages =',"$pages \n"; + print 'pospages=',"$pospages \n"; + if($pages=~m/\[.*\]/){ + ($pagesa, $urldate)=($pages=~m/(.*)\[(.*)\]/); + $pages=$pagesa; + print 'urldate=',"$urldate \n"; + print 'pages=',"$pages \n"; + } + if($pospages=~m/DOI/i){#匹配存在doi的话 + ($url, $doi)=($pospages=~m/(.*)\.\s*DOI:(.*)\./i); + print 'url=',"$url \n"; + print 'doi=',"$doi \n"; + }else{ + ($url)=($pospages=~m/(.*)\./i); + print 'url=',"$url \n"; + } + } + else{#不存在页码的话 + if($posyear=~m/\[.*\]/){ + ($urldate,$pospages)=($posyear=~m/.*\[(.*)\]\.(.*)/); + print 'urldate=',"$urldate \n"; + print 'pospages=',"$pospages \n"; + } + else{#不存在页码,又不存在引用日期的话,那么会有一个点和空格 + ($pospages)=($posyear=~m/.*\s(.*)/); + print 'pospages=',"$pospages \n"; + } + if($pospages=~m/DOI/i){#匹配存在doi的话 + ($url, $doi)=($pospages=~m/(.*)\.\s*DOI:(.*)\./i); + print 'url=',"$url \n"; + print 'doi=',"$doi \n"; + }else{ + ($url)=($pospages=~m/(.*)\./i); + print 'url=',"$url \n"; + } + } + }else{#不存在年份,匹配一下是否存在冒号和页码 + if($pospublisher=~m/.*[^DOIhttp]:.*/i){#当存在不是doi或http后面的冒号时,说明有页码 + ($publisher, $pages, $pospages)=($pospublisher=~m/([^:]*):([^\.]*)\.(.*)/); + print 'publisher=',"$publisher \n"; + print 'pages =',"$pages \n"; + print 'pospages =',"$pospages \n"; + if($pages=~m/\[.*\]/){ + ($pagesa, $urldate)=($pages=~m/(.*)\[(.*)\]/); + $pages=$pagesa; + print 'urldate=',"$urldate \n"; + print 'pages=',"$pages \n"; + } + if($pospages=~m/DOI/i){#匹配存在doi的话 + ($url, $doi)=($pospages=~m/(.*)\.\s*DOI:(.*)\./i); + print 'url=',"$url \n"; + print 'doi=',"$doi \n"; + }else{ + ($url)=($pospages=~m/(.*)\./i); + print 'url=',"$url \n"; + } + }else{#没有页码冒号以点作为出版者后的分隔点 + ($publisher, $pospages)=($pospublisher=~m/([^\.]*)\.(.*)/); + print 'publisher=',"$publisher \n"; + print 'pospages =',"$pospages \n"; + if($publisher=~m/\[.*\]/){ + ($publishera, $urldate)=($publisher=~m/(.*)\[(.*)\]/); + $publisher=$publishera; + print 'urldate=',"$urldate \n"; + print 'publisher=',"$publisher \n"; + } + if($pospages=~m/DOI/i){#匹配存在doi的话 + ($url, $doi)=($pospages=~m/(.*)\.\s*DOI:(.*)\./i); + print 'url=',"$url \n"; + print 'doi=',"$doi \n"; + }else{ + ($url)=($pospages=~m/(.*)\./i); + print 'url=',"$url \n"; + } + } + if($publisher=~m/,$/){$publisher=~s/,$//;}#去掉最后的逗号 + unless($address){#当没有出版地时,也没有必要存在 + $type=$publisher; + $publisher=''; + } + } + if ($publisher=~m/.*\[s-n-\].*/) {#当存在英文的[s-n-] + $publisher=~s/\[s-n-\]/\[s\.n\.\]/; #将[s-n-]换回[s.n.] + } + } + + + +close (FHR); +close (FHW); \ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/gbtclear.sh b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/gbtclear.sh deleted file mode 100644 index 1c115ee20c6..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/gbtclear.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -# Copyright (c) 2012-2016 hzz - -#clear aux files - -rm -r *.aux *.bbl *.blg *.log *.out *.toc *.bcf *.xml *.synctex *.nlo *.nls *.bak *.ind *.idx *.ilg *.lof *.lot *.ent-x *.tmp *.ltx *.los *.lol *.loc *.listing *.gz *.userbak *.nav *.snm *.vrb - - diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makeclear.sh b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makeclear.sh new file mode 100644 index 00000000000..1c115ee20c6 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makeclear.sh @@ -0,0 +1,8 @@ +#!/bin/bash +# Copyright (c) 2012-2016 hzz + +#clear aux files + +rm -r *.aux *.bbl *.blg *.log *.out *.toc *.bcf *.xml *.synctex *.nlo *.nls *.bak *.ind *.idx *.ilg *.lof *.lot *.ent-x *.tmp *.ltx *.los *.lol *.loc *.listing *.gz *.userbak *.nav *.snm *.vrb + + diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makefile.sh b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makefile.sh index 1a2776ec505..e89b9e27a76 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makefile.sh +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makefile.sh @@ -30,7 +30,7 @@ xelatex --synctex=-1 biblatex-gb7714-2015.tex #clear aux files -./gbtclear.sh +./makeclear.sh #compile the tex file @@ -49,4 +49,4 @@ xelatex --synctex=-1 biblatex-gb7714-2015ay.tex # clear aux files -./gbtclear.sh +./makeclear.sh diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makefilebeamer.sh b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makefilebeamer.sh index 2d0fabb8f8a..2b29f665c6a 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makefilebeamer.sh +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makefilebeamer.sh @@ -21,7 +21,7 @@ xelatex --synctex=-1 ./biblatex-gb7714-2015-beamer.tex # clear aux files -./gbtclear.sh +./makeclear.sh # compile the tex file @@ -40,4 +40,4 @@ xelatex --synctex=-1 biblatex-gb7714-2015ay-beamer.tex # clear aux files -./gbtclear.sh +./makeclear.sh diff --git a/Master/texmf-dist/source/latex/biblatex-gb7714-2015/gbtclear.bat b/Master/texmf-dist/source/latex/biblatex-gb7714-2015/gbtclear.bat deleted file mode 100644 index 7a70ad5c7de..00000000000 --- a/Master/texmf-dist/source/latex/biblatex-gb7714-2015/gbtclear.bat +++ /dev/null @@ -1,3 +0,0 @@ -@echo off -del /q *.aux *.bbl *.blg *.log *.out *.toc *.bcf *.xml *.synctex *.nlo *.nls *.bak *.ind *.idx *.ilg *.lof *.lot *.ent-x *.tmp *.ltx *.los *.lol *.loc *.listing *.gz *.userbak -del /q *.nav *.snm *.vrb diff --git a/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makeclear.bat b/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makeclear.bat new file mode 100644 index 00000000000..75703e04f12 --- /dev/null +++ b/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makeclear.bat @@ -0,0 +1,3 @@ +@echo off +del /q *.aux *.bbl *.blg *.log *.out *.toc *.bcf *.xml *.synctex *.nlo *.nls *.bak *.ind *.idx *.ilg *.lof *.lot *.ent-x *.tmp *.ltx *.los *.lol *.loc *.listing *.gz *.userbak +del /q *.nav *.snm *.vrb diff --git a/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefile.bat b/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefile.bat index c64742f30a9..7732d67ba2b 100755 --- a/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefile.bat +++ b/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefile.bat @@ -1,52 +1,52 @@ -:: Copyright (c) 2012-2016 hzz - -@echo off - -:: compile the tex file - -xelatex.exe --synctex=-1 egbibenv-right.tex -biber egbibenv-right -xelatex.exe --synctex=-1 egbibenv-right.tex -xelatex.exe --synctex=-1 egbibenv-left.tex -biber egbibenv-left -xelatex.exe --synctex=-1 egbibenv-left.tex -xelatex.exe --synctex=-1 egbibenv-gb7714-2015.tex -biber egbibenv-gb7714-2015 -xelatex.exe --synctex=-1 egbibenv-gb7714-2015.tex - - -xelatex.exe --synctex=-1 biblatex-gb7714-2015.tex - -::pause - -biber biblatex-gb7714-2015 - -::pause - -xelatex.exe --synctex=-1 biblatex-gb7714-2015.tex - -::to do it again for backref -xelatex.exe --synctex=-1 biblatex-gb7714-2015.tex - -:: clear aux files - -call gbtclear - -:: compile the tex file - -xelatex.exe --synctex=-1 biblatex-gb7714-2015ay.tex - -::pause - -biber biblatex-gb7714-2015ay - -::pause - -xelatex.exe --synctex=-1 biblatex-gb7714-2015ay.tex - -::to do it again for backref -xelatex.exe --synctex=-1 biblatex-gb7714-2015ay.tex - -:: clear aux files - -call gbtclear \ No newline at end of file +:: Copyright (c) 2012-2016 hzz + +@echo off + +:: compile the tex file + +xelatex.exe --synctex=-1 egbibenv-right.tex +biber egbibenv-right +xelatex.exe --synctex=-1 egbibenv-right.tex +xelatex.exe --synctex=-1 egbibenv-left.tex +biber egbibenv-left +xelatex.exe --synctex=-1 egbibenv-left.tex +xelatex.exe --synctex=-1 egbibenv-gb7714-2015.tex +biber egbibenv-gb7714-2015 +xelatex.exe --synctex=-1 egbibenv-gb7714-2015.tex + + +xelatex.exe --synctex=-1 biblatex-gb7714-2015.tex + +::pause + +biber biblatex-gb7714-2015 + +::pause + +xelatex.exe --synctex=-1 biblatex-gb7714-2015.tex + +::to do it again for backref +xelatex.exe --synctex=-1 biblatex-gb7714-2015.tex + +:: clear aux files + +::call makeclear + +:: compile the tex file + +xelatex.exe --synctex=-1 biblatex-gb7714-2015ay.tex + +::pause + +biber biblatex-gb7714-2015ay + +::pause + +xelatex.exe --synctex=-1 biblatex-gb7714-2015ay.tex + +::to do it again for backref +xelatex.exe --synctex=-1 biblatex-gb7714-2015ay.tex + +:: clear aux files + +::call makeclear \ No newline at end of file diff --git a/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefilebeamer.bat b/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefilebeamer.bat index 78ffbbe4140..99df54b2707 100644 --- a/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefilebeamer.bat +++ b/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefilebeamer.bat @@ -1,41 +1,41 @@ -:: Copyright (c) 2012-2016 hzz - -@echo off - -:: compile the tex file - -xelatex.exe --synctex=-1 biblatex-gb7714-2015-beamer.tex - -::pause - -biber biblatex-gb7714-2015-beamer - -::pause - -xelatex.exe --synctex=-1 biblatex-gb7714-2015-beamer.tex - -::to do it again for backref -xelatex.exe --synctex=-1 biblatex-gb7714-2015-beamer.tex - -:: clear aux files - -call gbtclear - -:: compile the tex file - -xelatex.exe --synctex=-1 biblatex-gb7714-2015ay-beamer.tex - -::pause - -biber biblatex-gb7714-2015ay-beamer - -::pause - -xelatex.exe --synctex=-1 biblatex-gb7714-2015ay-beamer.tex - -::to do it again for backref -xelatex.exe --synctex=-1 biblatex-gb7714-2015ay-beamer.tex - -:: clear aux files - -call gbtclear \ No newline at end of file +:: Copyright (c) 2012-2016 hzz + +@echo off + +:: compile the tex file + +xelatex.exe --synctex=-1 biblatex-gb7714-2015-beamer.tex + +::pause + +biber biblatex-gb7714-2015-beamer + +::pause + +xelatex.exe --synctex=-1 biblatex-gb7714-2015-beamer.tex + +::to do it again for backref +xelatex.exe --synctex=-1 biblatex-gb7714-2015-beamer.tex + +:: clear aux files + +call makeclear + +:: compile the tex file + +xelatex.exe --synctex=-1 biblatex-gb7714-2015ay-beamer.tex + +::pause + +biber biblatex-gb7714-2015ay-beamer + +::pause + +xelatex.exe --synctex=-1 biblatex-gb7714-2015ay-beamer.tex + +::to do it again for backref +xelatex.exe --synctex=-1 biblatex-gb7714-2015ay-beamer.tex + +:: clear aux files + +call makeclear \ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx index e20501baad9..36bc75e38ec 100644 --- a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx +++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx @@ -1,4 +1,4 @@ -%% +%% %% --------------------------------------------------------------- %% biblatex-gb7714-2015 --- A biblatex implementation of the %% GBT7714-2015 bibliography style,numerical sequence @@ -10,16 +10,19 @@ %% 2016/11/14 v1.0c %% 2016/11/24 v1.0d %% 2016/12/07 v1.0e +%% 2016/12/31 v1.0f +%% 2017/02/26 v1.0g %% E-mail: hzzmail@163.com %% Released under the LaTeX Project Public License v1.3c or later %% --------------------------------------------------------------- %% -\ProvidesFile{gb7714-2015.bbx}[2016/12/07 v1.0e biblatex bibliography style] +\ProvidesFile{gb7714-2015.bbx}[2017/02/26 v1.0g biblatex bibliography style] %===================================================================== %加载标准样式 \RequireBibliographyStyle{numeric-comp}%Load the standard style to avoid copy-pasting unnecessary material \RequireBibliographyStyle{standard} +\RequirePackage{xstring}%为兼容texlive2015的biblatex3.0不加载xstring包的问题 %===================================================================== %增加一些功能函数 @@ -43,15 +46,16 @@ \StrChar{#1}{1}[\tempa]% \expandafter\testCJKfirstchar\tempa&} -\providetoggle{ifnoteeqstandard}%判断是否是标准 -\def\testifnoteeqstd{% -\iffieldundef{note}{\togglefalse{ifnoteeqstandard}}%判断一下,是否是标准 - {\def\comparetmp{standard}\edef\comparetmpb{\thefield{note}}% - \ifx\comparetmp\comparetmpb% - \toggletrue{ifnoteeqstandard}% - \else% - \togglefalse{ifnoteeqstandard}% - \fi}} +%\providetoggle{ifnoteeqstandard}%判断是否是标准 +%\def\testifnoteeqstd{% +%\iffieldundef{note}{\togglefalse{ifnoteeqstandard}}%判断一下,是否是标准 +% {\def\comparetmp{standard}\edef\comparetmpb{\thefield{note}}% +% \ifx\comparetmp\comparetmpb% +% \toggletrue{ifnoteeqstandard}% +% \else% +% \togglefalse{ifnoteeqstandard}% +% \fi}} +%\iffieldequalstr{note}{standard}{true}{false} %可以利用这一函数代替 %用于解析连续出版物,2个卷期的情况 \def\multivolumeparsetoparts#1/#2{\def\multivolumefirst{#1}\def\multivolumesecond{#2}} @@ -102,15 +106,16 @@ %===================================================================== %设置宏包选项 + +% Alter settings that carry through from biblatex +\iftoggle{iftexlivesix} +{%biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 %增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 \DeclareBibliographyOption[string]{align}[right]{% \ifstrequal{#1}{left}{\setalignleft}{} \ifstrequal{#1}{gb7714-2015}{\setaligngbstyle}{} } -% Alter settings that carry through from biblatex -\iftoggle{iftexlivesix} -{%biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 \ExecuteBibliographyOptions{ sorting=none, useprefix=true, %名字的信息包括前缀 @@ -123,6 +128,13 @@ } } {%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}{}{} +} + \ExecuteBibliographyOptions{ sorting=none, useprefix=true, %名字的信息包括前缀 @@ -165,18 +177,34 @@ backrefpages = {引用页:}, %首先把作者和译者信息准确的记录到userf,usere中,用于判断是否是cjk字符。 %注意\DeclareSourcemap命令只能出现一次 \DeclareSourcemap{ -\maps[datatype=bibtex]{ -\map{ %增加文献标识符如[M],[J]等,下面首先生成这一信息 -%使用下面biber动态修改bbl文件的方法是正确的 +\maps[datatype=bibtex]{%增加文献标识符如[M],[J]等,下面首先生成这一信息 + \map{%使用下面biber动态修改bbl文件的方法是正确的 %\perdatasource{examples.bib} \pertype{article} + \step[fieldset=usera, fieldvalue={J}] + } + \map{ %使用下面biber动态修改bbl文件的方法是正确的 \pertype{periodical} \step[fieldset=usera, fieldvalue={J}] + \step[fieldsource=author] %有时会把version和edition混淆,这里处理后就没有这个问题,可以直接用version + \step[fieldset=editor, origfieldval] + } + \map{ + \pertype{newspaper}%增加一个新闻报纸的类型newspaper + \step[fieldset=usera, fieldvalue={N}]%因为没有专门的驱动,这句的目的是定义一个usera域,方便映射为article后判断 + \step[fieldset=note, fieldvalue=news] } \map{ \pertype{book} \pertype{inbook} \step[fieldset=usera, fieldvalue={M}] + \step[fieldsource=version] %有时会把version和edition混淆,这里处理后就没有这个问题,可以直接用version + \step[fieldset=edition, origfieldval] + } + \map{ + \pertype{standard}%兼容老的standard类型 + \step[fieldset=usera, fieldvalue={M}]%因为没有专门的驱动,这句的目的是定义一个usera域,方便映射为book和inbook后判断 + \step[fieldset=note, fieldvalue=standard] } \map{ \pertype{patent} @@ -184,7 +212,7 @@ backrefpages = {引用页:}, } \map{ \pertype{inproceedings} - \pertype{conference} + \pertype{conference}%兼容老的conference类型 \step[fieldset=usera, fieldvalue={C}] \step[fieldsource=institution] %有时会把version和edition混淆,这里处理后就没有这个问题,可以直接用version \step[fieldset=publisher, origfieldval] @@ -194,21 +222,28 @@ backrefpages = {引用页:}, \map{ \pertype{proceedings} \step[fieldset=usera, fieldvalue={C}] - \step[fieldsource=institution] %有时会把version和edition混淆,这里处理后就没有这个问题,可以直接用version + \step[fieldsource=institution] % \step[fieldset=publisher, origfieldval] \step[fieldsource=editor] %有的时候可能只填写了编者,没有author,把它复制一下 \step[fieldset=author, origfieldval] } \map{ \pertype{report} + \pertype{techreport}%兼容老的techreport类型 \step[fieldset=usera, fieldvalue={R}] + \step[fieldsource=publisher] %有时会把publisher和institution混淆,这里处理后就没有这个问题,可以直接用version + \step[fieldset=institution, origfieldval] } \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}] } \map{ @@ -253,6 +288,106 @@ backrefpages = {引用页:}, } } +\iftoggle{iftexlivesix}{ + \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + % \map{%尝试未定义数据模型的newspaper类型映射为article,newspaper完全是针对gb7714的新类型,在biblatex中完全没有定义 + % %但从实践看,并没有什么影响,映射过来就可以了。 + % \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] + } + \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{%尝试未定义数据模型的newspaper类型映射为article,newspaper完全是针对gb7714的新类型,在biblatex中完全没有定义 + % %但从实践看,并没有什么影响,映射过来就可以了。 + % \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] + } + \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\\\%}] + } + } + } +} + +\DeclareBibliographyAlias{newspaper}{article}%定义驱动别名,尝试以替代驱动层映射,实践表明是可行的。 + %===================================================================== %参考文献表环境 @@ -270,6 +405,7 @@ backrefpages = {引用页:}, %修改序号标签格式为左对齐 \def\setalignleft{\DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{##1}\hfill}} %修改序号标签格式为以各条参文献为基础进行对齐的方式 + \def\setaligngbstyle{% \def\blx@bibitem##1{% \blx@ifdata{##1} @@ -339,10 +475,11 @@ backrefpages = {引用页:}, %新增文献类型标识符的格式 %\DeclareFieldFormat{gbtypeflag}{\nobreak\mkbibbrackets{\nobreak#1}\nobreak} \DeclareFieldFormat{gbtypeflag}{% -\iffieldundef{url}%当存在url时,增加一个OL标识符 +\iftoggle{bbx:url}{\iffieldundef{url}%当存在url时,增加一个OL标识符 {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{]}}% {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\texttt{/}OL]}}% -} +}{\nobreak\printtext{[}\nobreak#1\nobreak\printtext{]}}} + %\DeclareFieldFormat{gbtypeflag}{% %\iffieldundef{url}%当存在url时,增加一个OL标识符 %{\printtext{\nobreak[\nobreak}#1\printtext{]\nobreak}}% @@ -359,15 +496,16 @@ backrefpages = {引用页:}, %{\printtext{\mkbibbrackets{#1\texttt{/}OL}}}% %} \DeclareFieldFormat{gbtypeflagn}{%用于报纸newspaper -\iffieldundef{url}%当存在url时,增加一个OL标识符 +\iftoggle{bbx:url}{\iffieldundef{url}%当存在url时,增加一个OL标识符 {\nobreak\printtext{[}\nobreak N\printtext{]}\nobreak}% {\nobreak\printtext{[}\nobreak N\printtext{\texttt{/}OL]}\nobreak}% -} -\DeclareFieldFormat{gbtypeflags}{%用于报纸newspaper -\iffieldundef{url}%当存在url时,增加一个OL标识符 +}{\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}} %重设title的输出格式,不加emph,原格式来自biblatex.def文件 %\DeclareFieldFormat{journaltitle}{\mkbibemph{#1}} @@ -452,16 +590,19 @@ backrefpages = {引用页:}, \iffieldundef{titleaddon}{}%判断一下titleaddon,否则直接加可能多一个空格 {\setunit{\subtitlepunct}\printfield{titleaddon}}% \iffieldundef{note}{\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% + {\iffieldequalstr{note}{standard}{\printfield[gbtypeflags]{usera}}%判断是否为标准 + {\iffieldequalstr{note}{news}{\printfield[gbtypeflagn]{usera}}%判断是否为报纸 + {\printfield[gbtypeflag]{usera}}}%其它 +% \def\comparetmp{news}\def\comparetmpa{standard}\edef\comparetmpb{\thefield{note}}% +% \ifx\comparetmp\comparetmpb%判断是否为报纸 +% \printfield[gbtypeflagn]{usera}% +% \else% +% \ifx\comparetmpa\comparetmpb%判断是否为标准 +% \printfield[gbtypeflags]{usera}% +% \else% +% \printfield[gbtypeflag]{usera}% +% \fi% +% \fi% }% %\iffieldundef{booktitle}{\newunit}{}%当title是析出时,不要标点 %\newunit @@ -579,11 +720,26 @@ backrefpages = {引用页:}, \iffieldundef{day}{}{\bibrangedash\printfield{day}}}}% } \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}}}}% }}% +}% %调整doi+eprint+url格式,源来自standard.bbx %因为页码后面直接跟引用日期,没有标点所以去掉其中的标点。 @@ -617,14 +773,16 @@ backrefpages = {引用页:}, %事实上title对于每个文献来说是必须的,所以用它判断是最快的,而且一般标题和出版社的语言是一样的。 \renewbibmacro*{publisher+location+date}{% \testCJKfirst{\thefield{title}}% -\testifnoteeqstd% +%\testifnoteeqstd% \iflistundef{location}{%\adddot -\iftoggle{ifnoteeqstandard}{}{% +\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}{% -\iftoggle{ifnoteeqstandard}{}{% +\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}}% @@ -679,25 +837,28 @@ backrefpages = {引用页:}, \iffieldundef{issue} {%\usebibmacro{date} \iffieldundef{note}{\usebibmacro{date}}%判断一下,是否是报纸 - {\def\comparetmp{news}\edef\comparetmpb{\thefield{note}}% - \ifx\comparetmp\comparetmpb% - \usebibmacro{newsdate}% - \else% - \usebibmacro{date}% - \fi}% - } + {\iffieldequalstr{note}{news}{\usebibmacro{newsdate}}%判断是否为报纸 + {\usebibmacro{date}}% +% \def\comparetmp{news}\edef\comparetmpb{\thefield{note}}% +% \ifx\comparetmp\comparetmpb% +% \usebibmacro{newsdate}% +% \else% +% \usebibmacro{date}% +% \fi + }}% {\printfield{issue}% \setunit*{\addspace}% %\usebibmacro{date} \iffieldundef{note}{\usebibmacro{date}}%判断一下,是否是报纸 - {\def\comparetmp{news}\edef\comparetmpb{\thefield{note}}% - \ifx\comparetmp\comparetmpb% - \usebibmacro{newsdate}% - \else% - \usebibmacro{date}% - \fi}% - }% - }% + {\iffieldequalstr{note}{news}{\usebibmacro{newsdate}}%判断是否为报纸 + {\usebibmacro{date}}% +% \def\comparetmp{news}\edef\comparetmpb{\thefield{note}}% +% \ifx\comparetmp\comparetmpb% +% \usebibmacro{newsdate}% +% \else% +% \usebibmacro{date}% +% \fi + }}}% %\newunit } @@ -1015,12 +1176,12 @@ backrefpages = {引用页:}, %\setunit{\labelnamepunct}\newblock \usebibmacro{title}% %\nopunct -\printtext{\texttt{//}}% -%\texttt{//} +%\iffieldundef{booktitle}{\adddot\addspace}{%兼容standard时,如果standard没有booktitle的应转换为book类,因为都转成inbook类,所以这里做如下处理 +\printtext{\texttt{//}\addnbthinspace}%%\texttt{//} \usebibmacro{bybookauthor}% \ifnameundef{bookauthor}{\newblock}{\newunit\newblock}%替换下一句 %\newunit\newblock -\usebibmacro{maintitle+booktitle}% +\usebibmacro{maintitle+booktitle}%}% \newunit\newblock \usebibmacro{byeditor+others}% \newunit\newblock @@ -1420,7 +1581,7 @@ backrefpages = {引用页:}, {\setunit{\labelnamepunct}\newblock}% %\setunit{\labelnamepunct}\newblock \usebibmacro{title}% -\printtext{\texttt{//}}%似乎顶格加百分号可以避免一些不必要的空格加入,特别是这种直接处理的语句前后 +\printtext{\texttt{//}\addnbthinspace}%似乎顶格加百分号可以避免一些不必要的空格加入,特别是这种直接处理的语句前后 \usebibmacro{bybookauthor}% \ifnameundef{bookauthor}{\newblock}{\newunit\newblock}%替换下一句 %\newunit\newblock @@ -1474,7 +1635,7 @@ backrefpages = {引用页:}, % \usebibmacro{byauthor}% % \newunit\newblock %\usebibmacro{in:}% - \printtext{\texttt{//}}%似乎顶格加百分号可以避免一些不必要的空格加入,特别是这种直接处理的语句前后 + \printtext{\texttt{//}\addnbthinspace}%似乎顶格加百分号可以避免一些不必要的空格加入,特别是这种直接处理的语句前后 \usebibmacro{bybookauthor}%用类似inbook的方式处理 \ifnameundef{bookauthor}{\newblock}{\newunit\newblock}%替换下一句 %\newunit\newblock diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.cbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.cbx index 2198deb8603..7a8b5332d63 100644 --- a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.cbx +++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.cbx @@ -10,11 +10,12 @@ %% 2016/11/14 v1.0c %% 2016/11/24 v1.0d %% 2016/12/07 v1.0e +%% 2017/02/26 v1.0g %% E-mail: hzzmail@163.com %% Released under the LaTeX Project Public License v1.3c or later %% --------------------------------------------------------------- %% -\ProvidesFile{gb7714-2015.cbx}[2016/12/07 v1.0e biblatex citation style] +\ProvidesFile{gb7714-2015.cbx}[2017/02/26 v1.0g biblatex citation style] \RequireCitationStyle{numeric-comp} %\RequireCitationStyle{numeric} diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx index e5e0cb13bec..f34aa1aff85 100644 --- a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx +++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx @@ -10,15 +10,18 @@ %% 2016/11/14 v1.0c %% 2016/11/24 v1.0d %% 2016/12/07 v1.0e +%% 2016/12/31 v1.0f +%% 2017/02/26 v1.0g %% E-mail: hzzmail@163.com %% Released under the LaTeX Project Public License v1.3c or later %% --------------------------------------------------------------- %% -\ProvidesFile{gb7714-2015ay.bbx}[2016/12/07 v1.0e biblatex bibliography style] +\ProvidesFile{gb7714-2015ay.bbx}[2017/02/26 v1.0g biblatex bibliography style] %===================================================================== %加载标准样式 \RequireBibliographyStyle{authoryear} % Load the standard style to avoid copy-pasting unnecessary material +\RequirePackage{xstring}%为兼容texlive2015的biblatex3.0不加载xstring包的问题 %===================================================================== %增加一些功能函数 @@ -44,15 +47,16 @@ \expandafter\testCJKfirstchar\tempa&} %判断是否是标准 -\providetoggle{ifnoteeqstandard} -\def\testifnoteeqstd{% -\iffieldundef{note}{\togglefalse{ifnoteeqstandard}}%判断一下,是否是报纸和标准 - {\def\comparetmp{standard}\edef\comparetmpb{\thefield{note}}% - \ifx\comparetmp\comparetmpb% - \toggletrue{ifnoteeqstandard}% - \else% - \togglefalse{ifnoteeqstandard}% - \fi}} +%\providetoggle{ifnoteeqstandard} +%\def\testifnoteeqstd{% +%\iffieldundef{note}{\togglefalse{ifnoteeqstandard}}%判断一下,是否是报纸和标准 +% {\def\comparetmp{standard}\edef\comparetmpb{\thefield{note}}% +% \ifx\comparetmp\comparetmpb% +% \toggletrue{ifnoteeqstandard}% +% \else% +% \togglefalse{ifnoteeqstandard}% +% \fi}} +%\iffieldequalstr{note}{standard}{true}{false} %可以利用这一函数代替 %用于解析连续出版物,2个卷期的情况 \def\multivolumeparsetoparts#1/#2{\def\multivolumefirst{#1}\def\multivolumesecond{#2}} @@ -102,12 +106,11 @@ %===================================================================== %设置宏包选项 +\iftoggle{iftexlivesix}{% Alter settings that carry through from biblatex +%biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 %增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 %因为在作者年制中,不需要使用,这里也增加,为了与顺序年制的兼容性考虑。 \DeclareBibliographyOption[string]{align}[right]{}% - -\iftoggle{iftexlivesix}{% Alter settings that carry through from biblatex -%biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 \ExecuteBibliographyOptions{ useprefix = true, %名字的信息包括前缀 %firstinits = true, %名字有缩写,参考3.1.2.3 Internal @@ -119,6 +122,9 @@ minbibnames=3, }} {%biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 +%增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 +%因为在作者年制中,不需要使用,这里也增加,为了与顺序年制的兼容性考虑。 +\DeclareBibliographyOption{align}[right]{}% \ExecuteBibliographyOptions{ useprefix = true, %名字的信息包括前缀 firstinits = true, %名字有缩写,参考3.1.2.3 Internal @@ -171,16 +177,32 @@ backrefpages = {引用页:}, \step[fieldsource=title,match=\regexp{[a-zA-Z]},final] \step[fieldsource=author,match=\regexp{佚名}, replace={NOAUTHOR}] } - \map{ %增加文献标识符如[M],[J]等,下面首先生成这一信息 - %\perdatasource{examples.bib} + \map{ \pertype{article} + \step[fieldset=usera, fieldvalue={J}] + } + \map{ \pertype{periodical} \step[fieldset=usera, fieldvalue={J}] + \step[fieldsource=author] %有时会把version和edition混淆,这里处理后就没有这个问题,可以直接用version + \step[fieldset=editor, origfieldval] + } + \map{ + \pertype{newspaper}%增加一个新闻报纸的类型newspaper + \step[fieldset=usera, fieldvalue={N}]%因为没有专门的驱动,这句的目的是定义一个usera域,方便映射为article后判断 + \step[fieldset=note, fieldvalue=news] } \map{ \pertype{book} \pertype{inbook} \step[fieldset=usera, fieldvalue={M}] + \step[fieldsource=version] %有时会把version和edition混淆,这里处理后就没有这个问题,可以直接用version + \step[fieldset=edition, origfieldval] + } + \map{ + \pertype{standard}%兼容老的standard类型 + \step[fieldset=usera, fieldvalue={S}]%因为没有专门的驱动,这句的目的是定义一个usera域,方便映射为book和inbook后判断 + \step[fieldset=note, fieldvalue=standard] } \map{ \pertype{patent} @@ -188,7 +210,7 @@ backrefpages = {引用页:}, } \map{ \pertype{inproceedings} - \pertype{conference} + \pertype{conference}%兼容老的conference类型 \step[fieldset=usera, fieldvalue={C}] \step[fieldsource=institution] %有时会把version和edition混淆,这里处理后就没有这个问题,可以直接用version \step[fieldset=publisher, origfieldval] @@ -205,14 +227,21 @@ backrefpages = {引用页:}, } \map{ \pertype{report} + \pertype{techreport}%兼容老的techreport类型 \step[fieldset=usera, fieldvalue={R}] + \step[fieldsource=publisher] %有时会把publisher和institution混淆,这里处理后就没有这个问题,可以直接用version + \step[fieldset=institution, origfieldval] } \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}] } \map{ @@ -262,7 +291,105 @@ backrefpages = {引用页:}, \map{%将没有设置的userb设置成en,即认为不是中文的就是英文的。 \step[fieldset=userb,fieldvalue={en}] } + } } + +\iftoggle{iftexlivesix}{ + \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map{%尝试未定义数据模型的newspaper类型映射为article,newspaper完全是针对gb7714的新类型,在biblatex中完全没有定义 + %但从实践看,并没有什么影响,映射过来就可以了。 + \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] + } + \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{%尝试未定义数据模型的newspaper类型映射为article,newspaper完全是针对gb7714的新类型,在biblatex中完全没有定义 + %但从实践看,并没有什么影响,映射过来就可以了。 + \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] + } + \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\\\%}] + } + } + } } %===================================================================== @@ -338,21 +465,24 @@ backrefpages = {引用页:}, %修改域的格式 %新增文献类型标识符的格式 %\DeclareFieldFormat{gbtypeflag}{\nobreak\mkbibbrackets{\nobreak#1}\nobreak} + \DeclareFieldFormat{gbtypeflag}{% -\iffieldundef{url}%当存在url时,增加一个OL标识符 -{\nobreak\printtext{[}\nobreak#1\printtext{]}\nobreak}% -{\nobreak\printtext{[}\nobreak#1\printtext{\texttt{/}OL]}\nobreak}% -} +\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 -\iffieldundef{url}%当存在url时,增加一个OL标识符 +\iftoggle{bbx:url}{\iffieldundef{url}%当存在url时,增加一个OL标识符 {\nobreak\printtext{[}\nobreak N\printtext{]}\nobreak}% {\nobreak\printtext{[}\nobreak N\printtext{\texttt{/}OL]}\nobreak}% -} -\DeclareFieldFormat{gbtypeflags}{%用于报纸newspaper -\iffieldundef{url}%当存在url时,增加一个OL标识符 +}{\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}} %重设title的输出格式,不加emph,原格式来自biblatex.def文件 %\DeclareFieldFormat{journaltitle}{\mkbibemph{#1}} @@ -512,16 +642,19 @@ backrefpages = {引用页:}, \iffieldundef{titleaddon}{}%判断一下titleaddon,否则直接加可能多一个空格 {\setunit{\subtitlepunct}\printfield{titleaddon}}% \iffieldundef{note}{\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% + {\iffieldequalstr{note}{standard}{\printfield[gbtypeflags]{usera}}%判断是否为标准 + {\iffieldequalstr{note}{news}{\printfield[gbtypeflagn]{usera}}%判断是否为报纸 + {\printfield[gbtypeflag]{usera}}}%其它 +% \def\comparetmp{news}\def\comparetmpa{standard}\edef\comparetmpb{\thefield{note}}% +% \ifx\comparetmp\comparetmpb%判断是否为报纸 +% \printfield[gbtypeflagn]{usera}% +% \else% +% \ifx\comparetmpa\comparetmpb%判断是否为标准 +% \printfield[gbtypeflags]{usera}% +% \else% +% \printfield[gbtypeflag]{usera}% +% \fi% +% \fi% }% \iffieldundef{booktitle}{\newunit}{}%当title是析出时,不要标点 %\newunit @@ -553,12 +686,27 @@ backrefpages = {引用页:}, \iffieldundef{month}{}{\bibrangedash\printtext{\thefield{month}}% \iffieldundef{day}{}{\bibrangedash\printfield{day}}}} }% -\newbibmacro*{modifydate}{%新增加一个带括号的日期 +\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}}}}% }}% +}% %\DeclareFieldFormat{pages}{\mkpageprefix[bookpagination]{#1}}%页码引用格式的修改 \DeclareFieldFormat{pages}{#1}%去掉前面引导页码的pp.等字符 @@ -681,17 +829,19 @@ backrefpages = {引用页:}, %事实上title对于每个文献来说是必须的,所以用它判断是最快的,而且一般标题和出版社的语言是一样的。 \renewbibmacro*{publisher+location+date}{% \iffieldundef{title}{}{\testCJKfirst{\thefield{title}}}% -\testifnoteeqstd% +%\testifnoteeqstd% \iflistundef{location}{%\adddot -\iftoggle{ifnoteeqstandard}{}{% +\iffieldequalstr{note}{standard}{}{%从gbt7714-2015标准低19页看到,标准存在出版项时输出,没有时完全省略。 +%\iftoggle{ifnoteeqstandard}{}{%%}替换为上一句,尽可能用biblatex提供的函数 \iftoggle{ifCJKforgbt}{\printtext{[出版地不详]}\setunit*{\addcolon\addspace}}{\printtext{[S.l.\adddot]}\setunit*{\addcolon\addspace}}}}% \bibstring{noaddress} {\printlist{location}\setunit*{\addcolon\addspace}}% %\addcolon\addspace% \iflistundef{publisher}{% -\iftoggle{ifnoteeqstandard}{}{% +\iffieldequalstr{note}{standard}{}{%从gbt7714-2015标准低19页看到,标准存在出版项时输出,没有时完全省略。 +%\iftoggle{ifnoteeqstandard}{}{%%}替换为上一句,尽可能用biblatex提供的函数 \iftoggle{ifCJKforgbt}{\printtext{[出版者不详]}\setunit{\adddot\addspace}\setunit*{\addcolon\addspace}} %\mkbibbrackets -%{\printtext{[s.n.\adddot]}\setunit{\adddot\addspace}\setunit*{\addcolon\addspace}}}}%\bibstring{nopublisher} +%{{%{\printtext{[s.n.\adddot]}\setunit{\adddot\addspace}\setunit*{\addcolon\addspace}}}}%\bibstring{nopublisher} {\printtext{\mkbibbrackets{s.n.}}\setunit{\adddot\addspace}\setunit*{\addcolon\addspace}}}} {\printlist{publisher}\setunit*{\addcolon\addspace}}% %\addcomma\addspace% @@ -742,25 +892,28 @@ backrefpages = {引用页:}, \iffieldundef{issue} {%\usebibmacro{date} \iffieldundef{note}{\usebibmacro{date}}%判断一下,是否是报纸和标准 - {\def\comparetmp{news}\edef\comparetmpb{\thefield{note}}% - \ifx\comparetmp\comparetmpb% - \usebibmacro{newsdate}% - \else% - \usebibmacro{date}% - \fi}% - } + {\iffieldequalstr{note}{news}{\usebibmacro{newsdate}}%判断是否为报纸 + {\usebibmacro{date}}% +% \def\comparetmp{news}\edef\comparetmpb{\thefield{note}}% +% \ifx\comparetmp\comparetmpb% +% \usebibmacro{newsdate}% +% \else% +% \usebibmacro{date}% +% \fi + }}% {\printfield{issue}% \setunit*{\addspace}% %\usebibmacro{date} \iffieldundef{note}{\usebibmacro{date}}%判断一下,是否是报纸和标准 - {\def\comparetmp{news}\edef\comparetmpb{\thefield{note}}% - \ifx\comparetmp\comparetmpb% - \usebibmacro{newsdate}% - \else% - \usebibmacro{date}% - \fi}% - }% - }% + {\iffieldequalstr{note}{news}{\usebibmacro{newsdate}}%判断是否为报纸 + {\usebibmacro{date}}% +% \def\comparetmp{news}\edef\comparetmpb{\thefield{note}}% +% \ifx\comparetmp\comparetmpb% +% \usebibmacro{newsdate}% +% \else% +% \usebibmacro{date}% +% \fi + }}}% %\newunit } @@ -1005,7 +1158,7 @@ backrefpages = {引用页:}, % \usebibmacro{byauthor}% % \newunit\newblock % \usebibmacro{in:}% - \printtext{\texttt{//}}% + \printtext{\texttt{//}\addnbthinspace}% \usebibmacro{bybookauthor}% \ifnameundef{bookauthor}{}{\newunit\newblock}%替换下一句 %\newunit\newblock @@ -1112,7 +1265,7 @@ backrefpages = {引用页:}, % \usebibmacro{byauthor}% % \newunit\newblock % \usebibmacro{in:}% - \printtext{\texttt{//}}% + \printtext{\texttt{//}\addnbthinspace}% \usebibmacro{bybookauthor}% \ifnameundef{bookauthor}{}{\newunit\newblock}%替换下一句 %\newunit\newblock @@ -1496,7 +1649,7 @@ backrefpages = {引用页:}, % \usebibmacro{byauthor}% % \newunit\newblock %\usebibmacro{in:}% - \printtext{\texttt{//}}%似乎顶格加百分号可以避免一些不必要的空格加入,特别是这种直接处理的语句前后 + \printtext{\texttt{//}\addnbthinspace}%似乎顶格加百分号可以避免一些不必要的空格加入,特别是这种直接处理的语句前后 \usebibmacro{bybookauthor}%用类似inbook的方式处理 \ifnameundef{bookauthor}{}{\newunit\newblock}%替换下一句 %\newunit\newblock diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.cbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.cbx index cb704b51f1c..0ab9e051428 100644 --- a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.cbx +++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.cbx @@ -10,11 +10,12 @@ %% 2016/11/14 v1.0c %% 2016/11/24 v1.0d %% 2016/12/07 v1.0e +%% 2017/02/26 v1.0g %% E-mail: hzzmail@163.com %% Released under the LaTeX Project Public License v1.3c or later %% --------------------------------------------------------------- %% -\ProvidesFile{gb7714-2015ay.cbx}[2016/12/07 v1.0e biblatex citation style] +\ProvidesFile{gb7714-2015ay.cbx}[2017/02/26 v1.0g biblatex citation style] \RequireCitationStyle{authoryear} %\RequireCitationStyle{numeric} -- cgit v1.2.3