diff options
Diffstat (limited to 'Master')
104 files changed, 4425 insertions, 2598 deletions
diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/README.md b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/README.md index 2361684f8a7..ffcd1ec442b 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/README.md +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/README.md @@ -1,10 +1,12 @@ -<b>Date of last change:2017-11-21 to version v1.0i</b> +<b>Date of last change: 2018-04-03 to version v1.0k</b> # biblatex-gb7714-2015: a biblatex style package --------------------------------------------------------- +[使用入门](#jumptotutorial) |==| [说明文档](biblatex-gb7714-2015.pdf) |==| [WIKI](https://github.com/hushidong/biblatex-gb7714-2015/wiki) + -## introduction +## Introduction Maintainer: huzhenzhen <hzzmail@163.com> @@ -13,28 +15,46 @@ Homepage: <https://github.com/hushidong/biblatex-gb7714-2015> License: LaTeX Project Public License 1.3 or later -A biblatex implementation of the GB/T7714-2015 bibliography style for Chinese users +A biblatex implementation of the `GB/T 7714-2015` bibliography style for Chinese users -The biblatex-gb7714-2015 package provides an implementation of the bibliography style of the GB/T7714-2015 bibliography style. This implementation follows GB/T7714-2015 standard, and can be used simply by loading biblatex with the appropriate option +The biblatex-gb7714-2015 package provides an implementation of the bibliography style of the `GB/T 7714-2015` bibliography style. This implementation follows `GB/T 7714-2015` standard, and can be used simply by loading biblatex with the appropriate option -## usage +## Usage * for numerical sequence style `\usepackage[backend=biber,style=gb7714-2015]{biblatex}` - - add an option "align" for the numerical label, option value maybe "right" or "left" or "gb7714-2015" + - add an option `gbalign` for the numerical label, option value maybe `right` or `left` or `gb7714-2015` - `\usepackage[backend=biber,style=gb7714-2015,align=gb7714-2015]{biblatex}` + `\usepackage[backend=biber,style=gb7714-2015,gbalign=gb7714-2015]{biblatex}` - - add an option "gbpub" for dealing publishing items, option value = "true" for gb7714 style or "false" for standard style. + - add an option `gbpub` for dealing publishing items, option value = `true` for gb7714 style or `false` for standard style. This option is also for author year style. `\usepackage[backend=biber,style=gb7714-2015,gbpub=true]{biblatex}` + + - add an option `gbnamefmt` for dealing name's letter case(this option is also for author year style): + + `gbnamefmt = uppercase` for gb7714 style + + `gbnamefmt = lowercase` for gb7714 style with no case switch of names + + `gbnamefmt = none` for standard style. + + `gbnamefmt = pinyin` for a common Chinese style, like: ZHANG Min-li, YI Shi-he and so on. + + This option is also for author year style. + + `\usepackage[backend=biber,style=gb7714-2015,gbnamefmt=uppercase]{biblatex}` + + - add an option `gbtype` for dealing the reference type and carrier identifier like a [J/OL] for an on-line article, option value = `true` for gb7714 style or `false` for none identifier, e.g. An article title followed by empty string instead of the [J/OL]. This option is also for author year style. + + `\usepackage[backend=biber,style=gb7714-2015,gbtype=true]{biblatex}` * for author year style `\usepackage[backend=biber,style=gb7714-2015ay,gbpub=true]{biblatex}` - - add an option "gbnoauthor" for dealing undefined author, option value = "true" for gb7714 style or "false" for standard style. + - add an option `gbnoauthor` for dealing undefined author, option value = `true` for gb7714 style or `false` for standard style. `\usepackage[backend=biber,style=gb7714-2015ay,gbnoauthor=true]{biblatex}` @@ -46,187 +66,360 @@ A demonstration database is provided to show how to format input for the style. please see the file 'biblatex-gb7714-2015.pdf' for further information! + +## Applications + +* [SJTUThesis(上海交通大学学位论文模板)](https://github.com/sjtug/SJTUThesis)(母校的论文模板,不得不说缘分真的很神奇) +* [ECNU-Undergraduate-LaTeX(华东师范大学本科毕业论文模板 )](https://github.com/YijunYuan/ECNU-Undergraduate-LaTeX) + + +## Related Links + +* [Biblatex 宏包](https://github.com/plk/biblatex) +* [Beamer 文档类](https://github.com/josephwright/beamer) +* [Biblatex说明文档 中文版](https://github.com/hushidong/biblatex-zh-cn) +* [LaTeX中文参考文献的biblatex解决方案](https://github.com/hushidong/biblatex-solution-to-latex-bibliography) +* [gbt7714-bibtex-style: GB/T7714-2015 标准的bst实现版本](https://github.com/zepinglee/gbt7714-bibtex-style) +* [LaTeX学习网站](http://www.latexstudio.net/) +* [LaTeX交流论坛](http://bbs.ctex.org/) + --------------------------------------------------------- -## tutorial/使用入门 +<h2 id="jumptotutorial">Tutorial/使用入门</h2> -### 1. Tex source file/tex文档一般结构 +[comment]: # (这里这种方式不适合可能主要是因为标题所导致,因此用上面的方式进行处理 +<span id="jumptotutorial">## Tutorial/使用入门</span>) + +<h3 id="jumptotexsrcf">1. Tex source file/tex文档一般结构</h3> + +``` \documentclass{article}%文档类%导言区开始: \usepackage{ctex}%加载ctex宏包,中文支持 + \usepackage[left=20mm,right=20mm,top=25mm, bottom=15mm]{geometry}%加载geometry宏包,定义版面 - \usepackage[colorlinks=true,pdfstartview=FitH,linkcolor=blue,anchorcolor=violet,citecolor=magenta]{hyperref}%加载hyperref宏包,使用超链接 + + \usepackage[colorlinks=true,pdfstartview=FitH,% + linkcolor=blue,anchorcolor=violet,citecolor=magenta]{hyperref}%加载hyperref宏包,使用超链接 - %加载biblatex宏包,使用参考文献 - %其中后端backend使用biber - %引用样式citestyle,著录样式bibstyle都采用gb7714-2015样式 - \usepackage[backend=biber,bibstyle=gb7714-2015,%nature,% - citestyle=gb7714-2015%,backref=true% - ]{biblatex} - %biblatex宏包的参考文献数据源加载方式 - \addbibresource[location=local]{example.bib} + \usepackage[backend=biber,bibstyle=gb7714-2015,%nature,%%加载biblatex宏包,使用参考文献 + citestyle=gb7714-2015%,backref=true%%其中后端backend使用biber + ]{biblatex}%标注(引用)样式citestyle,著录样式bibstyle都采用gb7714-2015样式 + + \addbibresource[location=local]{example.bib}%biblatex宏包的参考文献数据源加载方式 \begin{document}%正文区开始: %正文内容,引用参考文献 - 不带页码的引用(上标,方括号包围): + + 1. 不带页码的引用(上标,方括号包围): \cite{Peebles2001-100-100} - 不带页码的引用(非上标,方括号包围): + + 2. 不带页码的引用(非上标,方括号包围): \parencite{Miroslav2004--} - 带页码的引用: + + 3. 带页码的引用: \cite[见][49页]{蔡敏2006--} \parencite[见][49页]{Miroslav2004--} \pagescite{Peebles2001-100-100} \pagescite[][201-301]{Peebles2001-100-100} - 作者年制文中已有作者只需要年份和页码的情况,使用命令yearpagescite,比如: - 见赵耀东\yearpagescite[][205]{赵耀东1998--}和Simon\yearpagescite[][15]{Simon2001--}的文献。 - 在页脚中引用和打印文献表: + + 4. 作者年制文中已有作者还需要年份和页码的情况,使用命令yearpagescite,比如: + 见赵耀东\yearpagescite[][205]{赵耀东1998--}和Simon\yearpagescite[][15]{Simon2001--} + + 5. 作者年制文中已有作者只需要年份的情况,使用命令yearcite和手动方式,比如: + 见赵耀东\yearcite{赵耀东1998--} + 见赵耀东(\cite*{赵耀东1998--}) + 见赵耀东(\citeyear{赵耀东1998--}) + + 6. 在页脚中引用和打印文献表: \footnote{在脚注中引用\footcite{赵学功2001--}} \footfullcite{赵学功2001--} %打印参考文献表 \printbibliography[heading=bibliography,title=参考文献] \end{document} +``` ### 2. Compile method/文档编译方式 +``` xelatex jobname.tex biber jobname xelatex jobname.tex xelatex jobname.tex +``` ### 3. Recommended environment/推荐使用环境 - Texlive+Winedt - Texlive+Texstudio + - Texlive+Winedt + + - Texlive+Texstudio + +### 4. Common questions/常见问题 + +#### 4.1 Installation and use/安装和使用 + +* <b>怎么利用biblatex生成国标GB/T 7714-2015格式的参考文献表?</b> + +> (1)在导言区加载biblatex宏包,并使用gb7714-2015样式: + +> `\usepackage[backend=biber,style=gb7714-2015]{biblatex}` + +> (2)正文中引用参考文献: + +> `见文献\cite{referencbibtexkey}` + +> (3)在需要的地方打印参考文献表: + +> `\printbibliography` + +更直接的例子见前述的[tex文档](#jumptotexsrcf) + +* <b>请问我应该怎么安装和更新biblatex-gb7714-2015宏包?</b> + +> biblatex-gb7714-2015宏包是基于biblatex的样式宏包,目前texlive,miktex都已收录,因此可以直接使用,不需要安装。 +> 当你使用的环境下,系统提示找不gb7714-2015.bbx或gb7714-2015ay.bbx文件时,说明系统不存在gb7714-2015样式文件, +> 这时需要安装。最简单的方法是从本项目源码中下载gb7714-2015.bbx,gb7714-2015ay.bbx,gb7714-2015.cbx, +> gb7714-2015ay.cbx四个文件放到你要编译的主文档所在目录。对于已经安装的用户需要更新到最新版, +> 则可以下载这四个文件替换系统已经安装的文件。 + + +* <b>为什么利用ctex2.9套装进行编译时,编译出现错误?</b> + +> 由于ctex2.9套装多年未更新,其中的biblatex宏包过老,所以需要更新一下biblatex。 + +* <b>我希望参考文献表中的文献不是按引用顺序而是以文献的字母顺序排序,怎么实现?</b> + +> 一般情况下文献表是按引用顺序进行排列,标签是顺序的数字,这种方式称为顺序编码制。 +> 如果要以文献作者字母顺序排列,那么需要换一种编制方式,称为作者年制: + +> `\usepackage[backend=biber,bibstyle=gb7714-2015ay]{biblatex}` + +* <b>英文文献能按字母顺序排列,那么参考文献表中的中文文献能否以拼音或者笔画进行排序呢?</b> + +> 可以,主要通过编译时,在biber编译参考文献信息命令中设置参数选项来实现: + +``` +%按拼音排序,biber命令 +biber -l zh__pinyin jobname +%按笔画排序,biber命令 +biber -l zh__stroke jobname +``` + +* <b>作者年制参考文献表目前的排序时升序排列,能不能改成降序排序?</b> + +> 能,这需要通过修改gb7714-2015ay.bbx中的代码来实现,找到: +> `\sort{%[direction=descending]` +> 修改为: +> `\sort[direction=descending]{%` + +* <b>请问参考文献中存在一些特殊字符比如&或者一些特殊命令比如\LaTex{}是不是会出现问题?</b> + +> 通常不会出现问题,直接输入即可,当出现问题时可以手动调整比如修改为`\&`和`{\LaTex{}}` + +* <b>我习惯用传统的bst文件来生成参考文献,有没有GB/T 7714-2015标准的实现版本?</b> + +> GB/T 7714-2015标准实现的bst版本,已经由[zeping lee](https://github.com/zepinglee/gbt7714-bibtex-style)开发完毕,直接使用即可。 + +* <b>我在使用过程中遇到了一些无法理解和无法解决的问题,怎么办?</b> + +> 请邮件联系hzzmail@163.com或在项目内发issue提问即可。 + + +#### 4.2 Bibliography format/文献表著录格式 -### 4. Examples/著录和标注结果示例 +* <b>请问可以在参考文献表中实现类似于word那样的与文献内容等间距标签对齐格式么?</b> + +> 可以,latex的列表通常用list来实现,因此一般列表的内容都是对齐的, +> 此时如果标签右对齐的,那么标签和内容等间距,但标签左侧是不对齐的。 +> 如果标签是左对齐的,那么标签和内容的间距不相等。 +> 如果要求标签左侧对齐,且标签与内容等间距必须放弃使用list。 +> biblatex-7714-2015的顺序编码制样式特别设计了这样的环境,以保持和word一致。通过设置选项gbalign来实现: + +> `\usepackage[backend=biber,bibstyle=gb7714-2015,gbalign=gb7714-2015]{biblatex}` + +* <b>请问如果不希望在参考文献表中出现类似“出版地不详”“出版者不详”等信息时,该怎么处理?</b> + +> 设置选项gbpub可以实现,当gbpub=false时,biblatex-gb7714-2015宏包会放弃国标的要求,不使用“出版地不详”等补充信息: + +> `\usepackage[backend=biber,bibstyle=gb7714-2015,gbpub=false]{biblatex}` + + +* <b>我觉得文献表中英文作者全部用大写不好看,请问能换一种大小写方式么?</b> + +> 能,通过设置gbnamefmt可以实现,默认情况下gbnamefmt=uppercase,作者姓名字母全部大写。 +> 当设置gbnamefmt=lowercase时,biblatex-gb7714-2015宏包对于bib文件中的作者姓名的大小写不做改变, +> 这时可以在bib文件中手动设置想要的大小写方式。 +> 当要实现类似ZHAO Yu-xin这样的拼音方式,则可以设置gbnamefmt=pinyin: + +> `\usepackage[backend=biber,bibstyle=gb7714-2015,gbnamefmt=lowercase]{biblatex}` + +* <b>请问如果不希望在参考文献表中出现类似“[M]”“[J]”等文献类型标识符时,该怎么处理?</b> + +> 可通过设置选项gbtype=false实现: + +> `\usepackage[backend=biber,bibstyle=gb7714-2015,gbtype=false]{biblatex}` + +* <b>请问如果不希望在参考文献表中出现网址信息时,该怎么处理?</b> + +> 可通过设置选项url=false实现: + +> `\usepackage[backend=biber,bibstyle=gb7714-2015,url=false]{biblatex}` + +* <b>请问如果不希望在参考文献表中出现DOI信息时,该怎么处理?</b> + +> 可通过设置选项doi=false实现: + +> `\usepackage[backend=biber,bibstyle=gb7714-2015,doi=false]{biblatex}` + +* <b>请问参考文献没有作者时,希望用佚名或Noauthor代替作者时,该怎么处理?</b> + +> 可通过设置选项gbnoauthor=true实现,注意该方式主要用在作者年制中: + +> `\usepackage[backend=biber,bibstyle=gb7714-2015,gbnoauthor=true]{biblatex}` + +* <b>请问希望参考文献表中参考文献作者数量超过国标规定的3个时,该怎么处理?</b> + +> 可通过设置选项maxbibnames,minbibnames实现,比如下面的设置用于显示5个作者: + +> `\usepackage[backend=biber,bibstyle=gb7714-2015,maxbibnames=5,minbibnames=5]{biblatex}` + + +* <b>请问如何使文献表中文献的标题的是句首字母大写而其它所有字母均小写?</b> + +> 默认情况下,biblatex-gb7714-2015不对标题的字母大小写做处理,因此要得到想要的字母大小写格式, +> 需要在bib文件输入参考文献信息时给出需要的大小写格式。 + +* <b>请问如何使文献表中期刊名的是单词首字母大写的?</b> + +> 默认情况下,biblatex-gb7714-2015不对期刊名的字母大小写做处理, +> 因此需要在bib文件输入参考文献信息时给出需要的大小写格式。 + + +* <b>请问我想得到中英文对照的双语参考文献,该如何处理?</b> + +> biblatex-gb7714-2015设计了两种多语言对照参考文献的实现方式, +> 一种是利用条目集的概念,另一种是利用关联条目的概念。 +> 因此有两种方法: + +> 方法一,动态定义条目集: +> `\defbibentryset{易仕和,等,2013}{易仕和2013--,Yi2013--} +> 双语文献引用\cite{易仕和,等,2013}` + +> 方法二,动态定义关联条目: +> 在导言区定义: +> `\defdoublelangentry{易仕和2013--}{Yi2013--}` + +> 在正文中引用: +> `双语文献引用\cite{易仕和2013--}` + + + +#### 4.3 Citation format/正文引用标注格式 + +* <b>我希望在正文中同时使用上标和非上标的引用标签,该怎么操作?</b> + +> 可以使用不同的命令来实现上标和非上标的标签, +> 上标标签的命令为`\cite{bibtexkey}`,非上标标签的命令为`\parencite{bibtexkey}`。 +> 当希望上标的标签也给出国标要求的页码时,则可以使用`\pagescite[][50-55]{bibtexkey}`给出指定页码 +> 或者`\pagescite{bibtexkey}`使用bib文件中的页码。 + +* <b>我在引用文献时已经给出作者信息,希望引用标签仅包含年份和页码信息或者仅包含年份信息时,该怎么操作?</b> + +> 需要给出年份的标签是作者年制的标签,可以使用命令`yearpagescite{bibtex}`给出仅包含年份和页码信息的标签, +> 使用命令`yearcite{bibtex}`给出仅包含年份的标签。 +> 可以使用不同的命令来实现上标和非上标的标签,上标标签的命令为`\cite{bibtexkey}`, +> 非上标标签的命令为`\parencite{bibtexkey}`。 +> 当希望上标的标签也给出国标要求的页码时,则可以使用`\pagescite[][50-55]{bibtexkey}`给出指定页码 +> 或者`\pagescite{bibtexkey}`使用bib文件中的页码信息。 + +* <b>请问希望正文中作者年制的标注(引用)标签中作者数量超过国标规定的1个时,该怎么处理?</b> + +> 可通过设置选项maxcitenames,mincitenames实现,比如下面的设置用于显示5个作者: + +> `\usepackage[backend=biber,bibstyle=gb7714-2015,maxcitenames=5,mincitenames=5]{biblatex}` + + +* <b>请问希望正文中作者年制的标注(引用)标签中作者数量只能是1个,而不管是否存在歧义时,该怎么处理?</b> + +> 可通过设置选项uniquelist=false实现,该设置标签中的作者只会是指定的1个: + +> `\usepackage[backend=biber,bibstyle=gb7714-2015,uniquelist=false]{biblatex}` + +* <b>请问希望正文中作者年制的标注(引用)标签中作者数量只能是1个,且只用其作者的姓而不管是否存在歧义时,该怎么处理?</b> + +> 可通过设置选项uniquelist=false, uniquename=false实现,该设置标签中的作者只会是指定的1个且只用该作者的姓: + +> `\usepackage[backend=biber,bibstyle=gb7714-2015,uniquelist=false,uniquename=false]{biblatex}` + + + +### 5. Examples/著录和标注结果示例 * 顺序编码制 -![示例a](egaligngb7714-2015.jpg) +![示例a](example/egaligngb7714-2015.jpg) * 作者年制 -![示例b](egaligngb7714-2015ay.jpg) +![示例b](example/egaligngb7714-2015ay.jpg) + + +* 姓名的格式更改 + +对于bib文件中的如下条目,有: + + @Article{Zhang2007-500-503, + Title = {The design and experimental investigations of supersonic length shorted nozzle}, + Author = {Zhang, Min-li and Yi, Shi-he and Zhao, Yu-xin}, + Journal = {ACTA AERODYNAMICA SINICA}, + Number = {4}, + Pages = {500-503}, + Volume = {25}, + Year = {2007} + } + + @Book{Yi2013--, + Title = {Supersonic and hypersonic nozzle design}, + Address = {Beijing}, + Author = {Yi, Shi he and Zhao, Yu xin and He, Lin and Zhang, Min li}, + Publisher = {National Defense Industry Press}, + Year = {2013} + } + + @Book{LIAO2012--, + Title = {Electronic countermeasure techniques for missile penetration}, + Address = {Beijing}, + Author = {LIAO, ping and JIANG, qin bo}, + Publisher = {National Defense Industry Press}, + Year = {2013} + } + + @Book{LIU2003--, + Title = {Introduction of Ballistic Misille Techniques}, + Address = {Beijing}, + Author = {LIU, shi Qiu}, + Publisher = {China Astronautic Publishing House}, + Year = {2003} + } + +![示例c](example/eggbnamefmt.jpg) +--------------------------------------------------------- +## Need to do: + * special characters in all fields? + * citestyle is gb7714-2015ay, bibstyle is gb7714-2015? + * entry without author: the delimiter between title and year? + * more languages, to be compatible with language field in old bib file? + * more complex citation cmd? --------------------------------------------------------- -## update history: - -### need to do: - * special characters in all fields? - * citation command like cite*? - -### date of change: 2017-11-21 to version v1.0i -* Changes to pkg code: - - "*.bbx": add a new solution for multi-language bibliography based on related entry other than the old @set method for biblatex version >3.8, because biblatex(>v3.8) does not copy info from its first member any longer. - - "*.bbx": correct a bug of entry's title with \LaTeX{} macro reported by liubenyuan. this bug is raised in CJK char check function when StrChar from xtring pkg to extract chars. - - "*.bbx": deal compatibility problem of author-year style for biblatex v>3.8a, include labeldate->labeldateparts and DeclareSortingScheme -> DeclareSortingTemplate. - - "*.bbx": change the version check macro,using macro form pkg xstring. change version switch method, define version's code first then switch depend on the biblatex version. - - "*.bbx": replace the \iffieldundef{year} by \iffieldequalstr{year}{} in \newbibmacro*{modifydate}, for the year field is defined with empty string for biblatex version >3.7 after biber dealing with none date info. - - "*.bbx": change the date format control mechanism for biblatex version >3.7, lower versions keep the old fansion. - - "*.bbx": rewrite the volume and number parsing macro using xstring pkg. - - "*.bbx": correct a bug with option gbnoauthor when book entry has none author. -* Changes to documentation: - - biblatex-gb7714-2015.tex: revise this document - - -### date of change: 2017-04-11 to version v1.0h, the last version support texlive2015 -* Changes to pkg code: - - "*.bbx": deal compatibility problem of author year style for texlive2017, because the old cmd printdateextralabel with biblatex3.4 has been replaced by printlabeldateextra with biblatex3.7 in texlive2017. - - "*.bbx": change the seperator between multi-language reference text from cmd par to cmd newline for the gb7714-2015 align style - - "*.bbx": fix a flaw reported by Lee Zeping. remove the comma between journaltitle and (number) when the volume is undefined. - - "*.bbx": add an option gbpub to control the publishing info. if gbpub=false, publishing info's format is the biblatex standard style, otherwise is gb7714-2015 style. The origin idea comes from Wayne08. - - "*.bbx": fix a flaw reported by zjsdut@163.com. remove the dot before url when url is the only info available。 - - "*.bbx": add an option gbnoauthor for author-year style. when author is undefined, set option gbnoauthor=true then author with "佚名"or"NOAUTHOR" will be defined. note that with biblatex version 3.7 or higher for multiple DeclareStyleSourcemap support, code can be simplifed, because the realization code now with texlive2016(biblatex 3.4) is subjected to the one DeclareStyleSourcemap constraint. -* Changes to documentation: - - biblatex-gb7714-2015.tex: revise this document - - *.bib: correct a warning which is caused by long multi-line url info. - - -### date of change: 2017-02-26 to version v1.0g -* 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, proposed by Sheng Wenbo. - - "*.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 - - -### 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 - - *.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 - -* 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 - -* Changes to documentation: - - biblatex-gb7714-2015.tex: revise this document and add some explication - - -### 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 - -* Changes to documentation: - - biblatex-gb7714-2015.tex: revise this document. - -### 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 - -* Changes to documentation: - - 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 - -* Changes to pkg code: - - "*.bbx","*.cbx": add some information like version information. - -* Changes to documentation: - - biblatex-gb7714-2015.tex: correct a few flaws . - - paperone.bib: refine some entries. +## Update history: + +[update latest](example/updatehistory.tex) + +[update v1.0-v1.0j](example/updatehistoryold.md) + + 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 3c89257fc23..72770b9ea87 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,12 +1,8 @@ -%------------------------------------------------------------ -\def\versionnumber{v1.0i[2017/11/21]} %版本和修改时间信息 -\makeatletter -\def\versionbiblatex{\abx@version} -\makeatother + %------------------------------------------------------------ %-----------------标题和目录--------------------------------- \titleformanual{符合GB/T 7714-2015标准的biblatex参考文献样式 -\footnote{This Manual was created with biblatex v\versionbiblatex, last revised at \today;\\ \hspace*{1.5em} Style Files (gb7714-2015*.*) have version number: \versionnumber.}} +\footnote{This Manual was created with biblatex v\versionofbiblatex, last revised at \today;\\ \hspace*{1.5em} Style Files (gb7714-2015*.*) have version number: \versionofgbtstyle.}} \authorformanual{胡振震\setcounter{footnote}{0}\footnote{Email: hzzmail@163.com}} \dateformanual{2016-07-01} \titleandauthor @@ -22,7 +18,24 @@ \section{概述} 提供了符合GB/T 7714-2015~信息与文献~参考文献著录规则要求的biblatex参考文献样式。分为两种编制方式:一、顺序编码制;二、作者年制。主要特点包括: \begin{enumerate} - \item 完成了GB/T 7714-2015标准的完整实现,包括两种编制方式下的各类型参考文献著录格式和标注格式等基本内容,还包括: 双语文献格式,带页码的标注格式,作者年制下仅有年的标注格式和文献按语言集中并自动排序,起止卷期自动解析,增加gbnoauthor选项控制作者年制责任者缺省的处理,增加gbpub选项控制出版信息缺省时的处理,增加align选项控制顺序编码制文献表的标签对齐方式,提供右对齐、左对齐和项对齐三种方式。 + \item 兼容性 + +自biblatex-gb7714-2015宏包发布以来,一直秉承兼容各版本biblatex的原则,可与所有biblatex 2.8(texlive2014) 以上版本配合使用。并解决在不同文档类特别是beamer类中使用问题。兼容一些老的参考文献类型,比如www/electronic/conference/mastersthsis/phdthsis/techreport/standard,并为报纸析出的文献新增加了newpaper类型。 + + \item 易用性 + +从biblatex-gb7714-2015宏包设计的最开始就遵守尽可能让用户减少对于bib文件准备等方面的关注,用户可以很简单的输入或者从网络上下载(如百度学术、zotero等)参考文献信息然后直接使用,而不需要因为参考文献包的要求而特别地去修改增添参考文件信息,如参考文献类型和载体标识、语言等。并为用户提供全面、详实的说明,包括 +\href{https://github.com/hushidong/biblatex-gb7714-2015/wiki}{WIKI}, +\href{https://github.com/hushidong/biblatex-solution-to-latex-bibliography/blob/master/biblatex-solution-to-latex-bibliography.pdf}{LaTeX 文档参考文献的biblatex解决方案}等,以帮助用户更好的入门。 + + \item 灵活性 + +biblatex-gb7714-2015宏包除了能提供严格遵守GB/T 7714-2015标准的格式外,还通过增加很多新的用户设置选项,使用户可以根据自己的需求很灵活调整参考文献表的生成。包括标签的对齐方式、出版项缺省时的处理、作者缺失时的处理、作者姓名格式的调整、文献类型和载体标识等信息的输出控制等。能通过标注和著录分别采用作者年制、顺序编码制样式实现特殊的参考文献格式,并尽最大可能利用biblatex的选项来实现一些特殊需求,比如文献表中作者数量大于3、标注中严格仅给出第一作者的姓、参考文献表按拼音或笔画排序等等。 +\end{enumerate} + +具体来讲,完成了4个方面的工作: +\begin{enumerate} + \item 完成了GB/T 7714-2015标准的完整实现,包括两种编制方式下的各类型参考文献著录格式和标注格式等基本内容,还包括: 双语文献格式,带页码的标注格式,作者年制下仅有年的标注格式和文献按语言集中并自动排序,起止卷期自动解析,增加gbnoauthor选项控制作者年制责任者缺省的处理,增加gbpub选项控制出版信息缺省时的处理,增加gbalign选项控制顺序编码制文献表的标签对齐方式,提供右对齐、左对齐和项对齐三种方式。 \item 实现了用户文献数据录入优化,用户在录入参考文献数据时,只需要录入文献的实际信息即可,不需要录入文献标识符和载体标识符,无需录入language或者其它域信息来区分中英文参考文献,实现中英文自动判断并处理。支持一些特殊或老的条目类型,比如standard,newspaper,www,mastersthesis,phdthesis等。 \item 实现了对biblatex不同版本的兼容,能够应用于biblatex3.2以前的老版本,也能用于3.3版姓名处理方式改变后的版本。即可以与texlive2014/2015/2016/2017配合使用,无需升级biblatex情况下直接使用biblatex-gb7714-2015宏包(即本样式)。 \bc{当然 ctex2.9.4 的用户可能要升级一下biblatex,因为ctex多年没有更新,其中的biblatex版本过低}。 @@ -83,7 +96,8 @@ biblatex生成参考文献有其优越性。笔者从最初开始学习latex时 %上述这些优点也是笔者决定编写符合GB/T 7714-2015标准的参考文献样式文件的原因之一。 -下面直接给出最小工作示例的tex源文档(例\ref{code:doc:structrue}),用以简单介绍biblatex宏包参考文献生成的一般方法。给出的详细注释,说明了使用biblatex的文档基本结构,所有基于biblatex生成参考文献的文档无论大小万变不离其宗,当然除tex文档外另需准备保存参考文献信息的bib文件(详见\ref{sec:bib:bibtex}节)。要进一步了解biblatex参考文献生成相关内容可以参考biblatex宏包手册或者LaTeX 文档中文参考文献的biblatex解决方案\footnote{地址:\url{https://github.com/hushidong/biblatex-solution-to-latex-bibliography}}。 +下面直接给出最小工作示例的tex源文档(例\ref{code:doc:structrue}),用以简单介绍biblatex宏包参考文献生成的一般方法。给出的详细注释,说明了使用biblatex的文档基本结构,所有基于biblatex生成参考文献的文档无论大小万变不离其宗,当然除tex文档外另需准备保存参考文献信息的bib文件(详见\ref{sec:bib:bibtex}节)。要进一步了解biblatex参考文献生成相关内容可以参考: biblatex宏包手册或者LaTeX 文档中文参考文献的biblatex解决方案 +\footnote{地址:\url{https://github.com/hushidong/biblatex-solution-to-latex-bibliography}}。 \begin{codetex}{biblatex参考文献生成最小工作示例}{code:doc:structrue} \documentclass{article}%文档类 @@ -96,7 +110,7 @@ biblatex生成参考文献有其优越性。笔者从最初开始学习latex时 \usepackage[colorlinks=true,pdfstartview=FitH,linkcolor=blue,anchorcolor=violet,citecolor=magenta]{hyperref} %加载biblatex宏包,使用参考文献 %其中后端backend使用biber -%引用样式citestyle,著录样式bibstyle都采用gb7714-2015样式 +%标注(引用)样式citestyle,著录样式bibstyle都采用gb7714-2015样式 \usepackage[backend=biber,bibstyle=gb7714-2015,%nature,% citestyle=gb7714-2015%,backref=true% ]{biblatex} @@ -121,8 +135,8 @@ citestyle=gb7714-2015%,backref=true% \begin{codetex}{gb7714-2015顺序编码制加载方式}{eg:gb7714numeric} \usepackage[backend=biber,bibstyle=gb7714-2015,citestyle=gb7714-2015]{biblatex} -%如果要设置参考文献表序号标签对齐方式的话请设置align选项,如果要取消缺省出版项自动填补的话设置gbpub=false,比如: -\usepackage[backend=biber,style=gb7714-2015,align=left,gbpub=true]{biblatex} +%如果要设置参考文献表序号标签对齐方式的话请设置gbalign选项,如果要取消缺省出版项自动填补的话设置gbpub=false,比如: +\usepackage[backend=biber,style=gb7714-2015,gbalign=left,gbpub=true]{biblatex} \end{codetex} \begin{codetex}{gb7714-2015作者年制加载方式}{eg:gb7714authoryear} @@ -135,20 +149,31 @@ citestyle=gb7714-2015%,backref=true% perl gb7714texttobib.pl in=textfilename out=bibfilename \end{codetex} -\subsubsection{增加的选项} +\subsubsection{增加的选项}\label{sec:added:opt} gb7714-2015样式增加了部分用于控制标签对齐、出版项缺省处理、责任者(作者)缺省处理的选项,使用方式与biblatex宏包选项完全相同: \begin{description} - \item[align]=right,left,gb7714-2015. \hfill default is right + \item[gbalign]=right,left,gb7714-2015. \hfill default is right - 为顺序编码制增加选项,用于选择参考文献表序号标签的对齐方式。align=right是默认的右对齐; align=left是左对齐; align=gb7714-2015是项对齐方式。对于作者年制该选项无效。测试结果见第\ref{sec:align:test}节 + 为顺序编码制增加的选项,用于选择参考文献表序号标签的对齐方式。gbalign=right 是默认的右对齐; gbalign=left是左对齐; gbalign=gb7714-2015是项对齐方式。对于作者年制该选项无效。测试结果见第\ref{sec:align:test}节 \item[gbpub]=true,false. \hfill default is true 为控制出版信息缺失处理增加的选项。默认选择gbpub=true,自动利用:[出版地不详],[出版者不详],[S.l.],[s.n.]等填补缺省信息; 设置gbpub=false 时,则取消自动处理,使用标准样式的方式取消相应项的输出。 + 测试结果见第\ref{sec:opt:gbpub}节。 \item[gbnoauthor]=true,false. \hfill default is false - 为作者年制增加选项,用于控制责任者缺失时的处理。默认选择gbnoauthor=false,当作者信息缺失时不做处理,使用标准样式的处理方式; 设置gbnoauthor=true 时,则根据GB/T 7714-2015的要求进行处理,中文文献使用佚名来代替author,英文文献用NOAUTHOR 来代替author。 + 为作者年制增加的选项,用于控制责任者缺失时的处理。默认选择gbnoauthor=false,当作者信息缺失时不做处理,使用标准样式的处理方式; 设置gbnoauthor=true 时,则根据GB/T 7714-2015 的要求进行处理,中文文献使用佚名来代替author,英文文献用NOAUTHOR 来代替author。 + 测试结果见第\ref{sec:opt:noauthor}节。 + + \item[gbnamefmt]=uppercase,lowercase,none,pinyin. \hfill default is uppercase + + 为姓名大小写格式控制增加的选项。默认选择gbnamefmt=uppercase,大小写要求符合GB/T 7714-2015 的要求。gbnamefmt=lowercase 时,大小写根据输入信息确定。gbnamefmt=none时,姓名的格式与biblatex标准样式一致。gbnamefmt=pinyin时,姓名的格式采用一种常用的中文拼音全拼方式,比如对于 Zhao, Yu Xin 或 Yu Xin Zhao 这个姓名拼音格式化为ZHAO Yu-xin。\emph{需要注意当使用pinyin选项时,姓名中应给出完整的名而不是名的缩写,否则出来的效果未必好看}。 + 测试结果见第\ref{sec:opt:namefmt}节。 + + \item[gbtype]=true,false. \hfill default is true + + 为控制是否输出题名后面的文献类型和载体标识符而增加的选项。默认选择gbtype=true,根据GB/T 7714-2015 要求输出标识符,例如“在线的期刊析出文献题名[J/OL]”。而gbtype=false 时,不输出标识符,例如“在线的期刊析出文献题名”。 \end{description} @@ -164,6 +189,8 @@ gb7714-2015样式增加了部分用于控制标签对齐、出版项缺省处理 该选项用于作者年制样式,用于正文中引用(标注)标签的作者列表控制(目的是消除歧义)。当uniquelist=true时,自动利用扩展作者姓名列表长度的方式消除labelname 列表的歧义; 当=false 时则禁用扩展,标签仅使用一个作者,消除歧义通过跟在年份后面的字母实现; 默认使用minyear,即当被截短的作者姓名列表存在歧义时,只有当年份相同,才会扩展列表长度以消除歧义。 + 注意当使用uniquelist=false后标签只有一个作者,但文中可能有同姓作者的文献,这时根据uniquename选项的设置,biblatex会使用姓名的其它部分比如名来消除歧义,但如果想强制要求仅用姓作为文中的标注标签,那么可以设置uniquename=false,但此时标注是可能存在歧义的。 + \item[hyperref]=true, false, auto. \hfill default: auto 是否将引用和后向引用转化为可点击的超链接。这是宏包的载入时选项,与样式无关,自然可以使用。 @@ -226,7 +253,7 @@ gb7714-2015样式增加了部分用于控制标签对齐、出版项缺省处理 参考文献数据以bibtex格式保存在bib文件中。生成参考文献除tex源文档外,还需创建参考文献数据源文件即bib文件。bib文件数据源准备完成后,在加载biblatex宏包时,使用addbibresource命令将其加载进tex源文档中。\bc{注意:数据源可以加载多个,比如多个章节的参考文献放在不同的bib文件中,那么全部加载进来即可}。 -bib文件中的参考文献信息是以条目形式组织,一篇文献创建一条记录即一份参考文献条目,一个条目由若干个数据域构成。文献的各部分信息应录入到条目的对应数据域中。GB/T 7714-2015标准中的文献类型与本样式中条目类型对应关系如表\ref{tab:entrytypes}所示,各类条目具体的著录格式详见\ref{sec:numeric:data}节。 +bib文件中的参考文献信息是以条目形式组织,一篇文献创建一条记录即一个参考文献条目,一个条目由若干个数据域构成。文献的各部分信息应录入到条目的对应数据域中。GB/T 7714-2015标准中的文献类型与本样式中条目类型对应关系如表\ref{tab:entrytypes}所示,各类条目具体的著录格式详见\ref{sec:numeric:data}节。 \begin{table}[!htb] \centering \caption{常见条目类型}\label{tab:entrytypes} @@ -234,25 +261,61 @@ bib文件中的参考文献信息是以条目形式组织,一篇文献创建 \hline GB/T 7714-2015标准中的参考文献类型 & biblatex中的条目类型\\ \hline 专著& book\\ - 标准& standard\\ + 标准& standard/book or inbook with field note=standard\\ 专著中的析出文献& inbook\\ 连续出版物& periodical\\ 连续出版物的析出文献& article\\ - 报纸析出的文献& newspaper\\ + 报纸析出的文献& newspaper/article with field note=standard\\ 专利& patent\\ - 电子资源& online\\ + 电子资源& online/www/electronic\\ 会议录或会议文集& proceedings\\ - 会议文集中析出的文献& inproceedings\\ + 会议文集中析出的文献& inproceedings/conference\\ 汇编或论文集& collection\\ 汇编或论文集析出中的文献& incollection\\ - 学位论文& thesis\\ - 报告& report\\ + 学位论文& thesis/mastersthsis/phdthsis\\ + 报告& report/techreport\\ 手册或档案& manual\\ 未出版物& unpublished\\ \hline \end{tabular} \end{table} -组成各个条目的不同数据域(字段)保存有参考文献的各部分内容,比如作者、标题、出版项、日期等等。各个数据域的录入应符合bib文件规范。\bc{需要注意: 有时直接从网络获取的参考文献信息中可能带有一些特殊字符比如\%,\&等,这些字符在tex中通常需要做转义处理,本样式中对像title,journal等常见的域中出现的特殊字符已经做了转义,但是一些不常见的域比如abstract等没有考虑,所以用户需要手动处理,例如把\%改为\textbackslash \%,否则可能导致出错}。下面详细介绍本样式中使用的域及其数据录入方式: + +组成各个条目的不同数据域(字段)保存有参考文献的各部分信息,比如作者、标题、出版项、日期等等,这些在标准中称为著录项目, +其对应关系如表\ref{tab:entryfields}所示。需要注意的是,note域在本样式中也做特殊用途,即在book类型的note域中输入standard表示标准,在aritcle类型的note域中输入news表示报纸,当然也可以不做特殊用,而只是表示杂项信息,因为标准和报纸可以用standard和newspaper类型表示,尽管这两种类型不是biblatex原生的条目类型。而usera域用于表示参考文献类型和载体标识符,一般不用出现在bib文件中,而由样式文件自动处理得到,这也为了使bib文件更纯粹,也为了兼容不同的样式,因为如果在bib文件中给出usera域,如果某一样式需要使用usera域且用途不同,那么就会有兼容性问题。当然不用手动输入这一信息也可以为用户减负,因为用户可以直接使用从网络导出参考文献信息而不用再额外添加一个参考文献类型和载体标识符。本宏包自动判断语言,而不使用一个表示语言的域比如language来标记文献的语言类型也处于同样的考虑,当然还有一篇文献中存在多语言的情况是无法用一个language标识的,比如一本英文著作被翻译为中文,那么原作者是英文,而译者则是英文,这时标记language就存在困难。 + +各个数据域的录入应符合bib文件规范。\bc{需要注意: 有时直接从网络获取的参考文献信息中可能带有一些特殊字符比如\%,\&等,这些字符在tex中通常需要做转义处理,本样式中对像title,journal等常见的域中出现的特殊字符已经做了转义,但是一些不常见的域比如abstract等没有考虑,所以用户需要手动处理,例如把\%改为\textbackslash \%,否则可能导致出错}。下面详细介绍本样式中使用的域及其数据录入方式: + +\begin{table}[!htb] +\centering +\caption{常见信息域}\label{tab:entryfields} +\begin{tabular}{cl} +\hline + GB/T 7714-2015中的文献著录项目 & biblatex中的域\\ \hline + 责任者 & author\\ + 题名 & title\\ + 译者 & translator\\ + 版本(主要用于出版物) & edition\\ + 版本(主要用于软件和手册) & version\\ + 出版地 & location/address\\ + 出版者 & publisher\\ + 出版者(大学和研究所) & institution/school\\ + 出版者(会议主办方、手册和电子资源出品方) & organization\\ + 日期 & date\\ + 日期(不可解析的日期) & year\\ + 页码 & pages\\ + 析出文献来源的责任者 & bookauthor\\ + 析出文献来源的标题 & booktitle\\ + 连续出版物题名(期刊名) & journal/journaltitle\\ + 期刊的卷 & volume\\ + 期刊的期/专利号等 & number\\ + 获取和访问路径 & url\\ + 引用日期 & urldate\\ + 数字对象标识符 & doi\\ + 杂项 & note\\ + 文献类型载体标识符 & usera\\ + \hline + \end{tabular} +\end{table} \begin{description} \item[author] 在biblatex中author域属于name数据类型,输入数据时,各姓名间用and 连接,当姓名过多省略时,用others代替。 @@ -270,7 +333,7 @@ bib文件中的参考文献信息是以条目形式组织,一篇文献创建 这里的第一个姓名输入为前缀,姓,后缀,名,中间名。第二个姓名输入为名,姓。第三个姓名输入为姓,名,中间名。 - \bc{需要强调:对于第二种输入方式非首字母大写,姓名各个组成部分最好首字母是大写的,可能导致解析出错,比如姓名只有两个组成部分firstname和lastname,如果firstname小写的话,有可能会解析为prefix lastname。对于第一种输入方式,则至少lastname需要首字母大写,否则有可能将lastname解析成prefix。其中lastname也称familyname,firstname middlename 两者共称givenname} + \bc{需要强调:对于第二种输入方式,姓名各个组成部分最好首字母是大写的,首字母非大写可能导致解析出错,比如姓名只有两个组成部分firstname和lastname,如果firstname小写的话,有可能会解析为prefix lastname。对于第一种输入方式,则至少lastname需要首字母大写,否则有可能将lastname解析成prefix。其中lastname也称familyname,firstname middlename 两者共称givenname} 对于机构作者,不需要解析,直接输入机构名,英文的各个机构名用\{\}包起来,比如: @@ -292,14 +355,14 @@ bib文件中的参考文献信息是以条目形式组织,一篇文献创建 其中第一个年-月-日会解析并存储到year,month,day域中,第二个会解析并存储到endyear,endmonth,endday域中。更多细节参考biblatex手册的Table 8: Date Interface。 - \item[year] year域的输入与date域类似,为了兼容一些老的bib文件,把year直接用map 转换成date,所以在本样式的使用中输入year域与date域相同。 + \item[year] year域的输入与date域类似,为了兼容一些老的bib文件,把year 直接用map 转换成date,所以在本样式的使用中输入year域与date域相同。 但year与date存在一定的差异,即year可以处理仅有年的信息或者需要原样打印的内容。比如: 1881(清光绪七年)。 这一信息如果放在date中会被自动忽略,但放到year域中,本样式会先将其拷贝到date中进行解析,无法解析的话,date域忽略,但year 信息仍然存在,并原样打印。 - \item[pages] 可以格式化输入或输入需要打印的内容。格式化输入时,页码用整数,当有范围时,用短横线隔开。比如:59-60。 当无法解析时,输入内容被认为是需要完整打印的内容。 + \item[pages] 可以格式化输入或输入需要打印的内容。格式化输入时,页码用整数,当有范围时,用短横线(使用多个短横线也没有问题)隔开。比如:59-60。 当无法解析时,输入内容被认为是需要完整打印的内容。 \item[urldate] urldate域与date域类似,只是解析时,存储到urlday,urlmonth,urlyear,urlendday,urlendmonth,urlendyear域中。 \item[url] 直接输入需要打印的网址内容 \item[doi] 直接输入需要打印的DOI内容 @@ -312,6 +375,17 @@ bib文件中的参考文献信息是以条目形式组织,一篇文献创建 \item[version] 用于report和manual的版本信息,直接输入需要打印的内容。 \end{description} +除了上述输入内容要求外,GB/T 7714-2015还有对数字、字母大小写等有一些格式要求,这些细节需要注意,请参考: +\begin{itemize} +\item 数字:\ref{sec:fmt:number}节 +\item 字母大小写:\ref{sec:fmt:lettercase}节 +\item 卷和期:\ref{sec:fmt:volnum}节 +\item 版次:\ref{sec:fmt:edition}节 +\item 出版项:\ref{sec:fmt:pubitem}节 +\item 页码:\ref{sec:fmt:pages}节 +\end{itemize} + + \subsubsection{关于参考文献著录样式: bbx文件的说明}\label{sec:usage:bbx} 参考文献著录样式也称著录表样式或著录格式,主要分两类:顺序编码制和编码年制。 @@ -356,7 +430,12 @@ bib文件中的参考文献信息是以条目形式组织,一篇文献创建 \cite[见][49页]{蔡敏2006--} \parencite[见][49页]{Miroslav2004--} \pagescite{Peebles2001-100-100} \pagescite[][201-301]{Peebles2001-100-100} 作者年制文中已有作者只需要年份和页码的情况,使用命令yearpagescite,比如: - 见赵耀东\yearpagescite[][205]{赵耀东1998--}和Simon\yearpagescite[][15]{Simon2001--}的文献。 + 见赵耀东\yearpagescite[][205]{赵耀东1998--}和Simon\yearpagescite[][15]{Simon2001--}。 + +需要注意,\yearpagescite命令在输出年份的同时也输出页码,但有时有些参考文献格式不要求页码,此时可以用\yearcite命令,或者也可利用cite*和citeyear命令手动实现(如果要用超链接目前可以使用cite*),比如: + 见赵耀东\yearcite{赵耀东1998--} + 见赵耀东(\cite*{赵耀东1998--}) + 见赵耀东(\citeyear{赵耀东1998--}) 在页脚中引用和打印文献表: \footnote{在脚注中引用\footcite{赵学功2001--}} \footfullcite{赵学功2001--} \end{codetex} @@ -403,7 +482,7 @@ GB/T 7714-2015规定采用作者年制组织时,各篇文献首先按文种组 标注要求具体参考GB/T 7714-2015第10.2节。 -\qd{注意:一般情况下,当文献作者缺省时,作者年制就没有作者可以用,因此文献题名用来生成标签,这样会导致文献表中文献题名后的文献类型标识/文献载体标识消失(这是因为题名用于生产标签后,题名域会被清除,自然也就不输出题名相关的信息了)。但是可以用佚名替代缺省作者的方式避免这个问题,即可以使用样式文件提供的选项gbnoauthor=true,一旦设置该选项为true,则缺省的作者会根据文献语种填充为佚名或NOAUTHOR。默认情况下,不进行这种处理,即相当于设置选项gbnoauthor=false。而顺序编码制因为标签是数字序号,所以不存在这个问题。} +\qd{注意:一般情况下,当文献作者缺省时,作者年制就没有作者可以用,因此文献题名用来生成标签,这样会导致文献表中文献题名后的文献类型标识/文献载体标识消失(这是因为题名用于生产标签后,题名域会被清除,自然也就不输出题名相关的信息了,见“\hyperlink{entrystdwithoutauthor}{Information and documentation-the Dublin core metadata element set}”)。但是可以用佚名替代缺省作者的方式避免这个问题,即可以使用样式文件提供的选项gbnoauthor=true,一旦设置该选项为true,则缺省的作者会根据文献语种填充为佚名或NOAUTHOR。默认情况下,不进行这种处理,即相当于设置选项gbnoauthor=false。而顺序编码制因为标签是数字序号,所以不存在这个问题。} %本样式文件默认情况下采用佚名方式,如果不需要使用佚名,那么需要在样式文件中注释掉一段代码,这段代码在本文档末尾2016-11-14的更新历史中有说明,见\pageref{up:20161114}页。} @@ -596,7 +675,7 @@ author.title[usera].translator.location:institution,date或year:pages[urldate].u 其对应的biblatex数据域为: \begin{codetex}{报告/report/techreport条目的域格式}{eg:reportfieldfmt} -author.title[usera].translator.type number.version.location:institution,date或year:pages[urldate].url.doi +author.title[usera].translator.type number.version.location:institution,date 或year:pages[urldate].url.doi \end{codetex} 注意:因为有的报告文献可能存在类型和报告号信息,比如AIAA 9076或AD 730029等,所以著录格式需要有所体现,而这两个数据体现在type和number两个域中,或者在version域中体现也可,而对于标题中的出现的报告号,可以直接在标题或子标题或者附加标题中体现。 @@ -617,15 +696,9 @@ author.title[usera].translator.type number.version.location:institution,date或y \paragraph{其著录格式为} 也直接采用report格式处理。 \end{refentry} -\subsection{标准的其它要求与实现} - -除了上一小节针对不同条目类型的著录格式要求外,GB/T 7714-2015还有一些细节要求比如文字、符号等需要满足,可以采用如下方法: +\subsection{多语言文献}\label{sec:multilan:implement} -\subsubsection{多语言文献}\label{sec:multilan:implement} - -\begin{property}{}{} 某些期刊对于参考文献有双语文献要求,那么可以通过条目集类型(set)/或者条目关联(related)来解决。具体要求见GB/T 7714-2015第6.1节。 -\end{property} \paragraph{利用条目集类型满足双语文献要求} @@ -668,6 +741,8 @@ userb={cn} } \end{codetex} +还要注意的是,\emph{动态set条目集等价于使用nocite命令,因此只要定义了动态条目集的文献都会出现在文献表中,因此如果不引用相应的文献,那么就不应该对其定义动态条目集}。 + \paragraph{利用条目关联满足双语文献要求} 除上述给出的条目集方案外,关联条目方法则是另一种可行方案,该方案的讨论可以见“Again about the \@ set label for authoryear style”\footnote{https://github.com/plk/biblatex/issues/681}。该方案同样也有静态和动态两种方法,静态就是修改bib文件内容,动态则是在源文档中做设置。 @@ -702,19 +777,25 @@ userb={cn} 使用该命令后,可以引用主条目“易仕和2013--”生成双语文献。但要注意由于DeclareStyleSourcemap命令只能在导言区中使用,因此defdoublelangentry命令也只能出现在导言区中,这也是相比条目集动态方法的唯一遗憾。 实现的具体细节见\ref{sec:data:mdf:forrelated}节。 +\subsection{标准的其它细节要求} + +除了第\ref{sec:numeric:data}节针对不同条目类型的著录格式要求外,GB/T 7714-2015还有一些细节要求比如文字、符号等需要满足,可以采用如下方法: -\subsubsection{数字} +\subsubsection{数字}\label{sec:fmt:number} \begin{property}{}{} 用户给bib源文件录入数字时,应按照GB/T 7714-2015第6.2节要求用阿拉伯数字表示。 \end{property} -\subsubsection{英文字母} +\subsubsection{英文字母}\label{sec:fmt:lettercase} \begin{property}{}{} 为了符合西文文献责任者的字母大小写习惯,本bbx样式文件,通过判断是否存在first name来确定是否是个人作者,当存在first name 时认为是个人作者,不存在则是机构作者,当是个人作者时lastname按GB/T 7714-2015要求全大写,是机构作者则仅大写首字母。所以对于仅有lastname的个人作者,填入信息英文姓的字母请全用大写。个人著者的格式要求参考GB/T 7714-2015第6.3节。 用户给bib源文件录入出版项、西文期刊名缩写以及西文文献的字母时,应按照GB/T 7714-2015第6.4节,第6.5节,6.6节要求,使用符合要求的习惯用法和大小写方式。本样式文件使用原样打印的方式进行处理。 + +实际上,对于英文大小写问题,GB/T 7714-2015除了责任者的大写要求外,其它的要求相对比较模糊,所以一般不同的期刊会有各自不同的要求,比如不能使用缩写,而GB/T 7714-2015规定可参照ISO 4的要求等。从作者的经验看,一般国内的期刊对于字母大小写通常要求: +责任者(全部大写);题名(句首字母大写其它全部小写);期刊名会议名(单词首字母大写);出版项和其它(单词首字母大写)。所以在录入bib文件时可以按照这种常见方式来输入可以减少后期的修改。 \end{property} \subsubsection{标点} @@ -743,7 +824,7 @@ userb={cn} 本样式文件实现了符合GB/T 7714-2015第8.2节要求的格式,能根据条目类型选择文献类型标识/文献载体标识,自动录入到自定义域usera中,并在各类参考文献条目驱动中直接使用。各不同类型文献的文献类型标识/文献载体标识,参考GB/T 7714-2015表B.1和B.2。 \end{property} -\subsubsection{版次} +\subsubsection{版次}\label{sec:fmt:edition} \begin{property}{}{} 用户在给bib源文件录入版次信息时,只要录入版次的整数数字或者录入需要打印的字符串。 @@ -751,7 +832,7 @@ userb={cn} 本样式文件实现了GB/T 7714-2015第8.3节要求的格式,对于一般的版式格式,根据edition/version域输入的整数进行处理,其它特殊的版本说明,比如新1版,明刻本等直接在edition域录入后原样打印。 \end{property} -\subsubsection{出版项} +\subsubsection{出版项}\label{sec:fmt:pubitem} \begin{property}{}{} 用户在给bib源文件录入出版项信息时,当出版日期有其它形式的纪年时,将其置于公元纪年后面的()内,并整体录入到 year 数据域中,比如: 1845(清同治四年)。而引用日期应录入到 urldate 数据域。当除了出版日期外还有修改/更新日期等时,可在year或date数据域录入第二个日期,并用/符号与前一个出版日期隔开。而专利的公告日期和其它条目类型的出版年应录入到 date 域中。 @@ -759,7 +840,7 @@ userb={cn} 本样式文件实现了GB/T 7714-2015第8.4节要求的格式。当出版地和出版者缺省时,中英文自动区分处理。对于用/符号隔开的两个日期,biblatex后端biber能自动解析,后一个日期数据自动解析到endyear等域可作为修改日期等在样式文件中使用。 \end{property} -\subsubsection{页码} +\subsubsection{页码}\label{sec:fmt:pages} \begin{property}{}{} 用户在给bib源文件录入页码信息时,可以在pages域中根据需要录入可解析的页码(即用整数表示页码,起讫页码用-分隔),比如: 81-86。 也可以直接录入需要打印的信息,比如: 序2-3等。 @@ -773,7 +854,7 @@ userb={cn} 本样式文件实现了GB/T 7714-2015第8.6,8.7节要求的格式。 \end{property} -\subsubsection{卷和期} +\subsubsection{卷和期}\label{sec:fmt:volnum} \begin{property}{}{}%[break at=0.4cm/0pt] 用户在给bib源文件录入卷、期等信息时,如\ref{sec:bib:bibtex}节中所述,合期的期号用/间隔,比如9/10,填入number域,报纸的版次也填入number域。 @@ -870,26 +951,27 @@ userb={cn} \cite{Dublin2012-06-14--} -\printbibliography[heading=subbibliography,type=book,notkeyword=standard,title=【普通图书-著录格式示例】]%subbibintoc +\printbibliography[heading=subbibliography,type=book,notkeyword=standard,title=【A1-普通图书-著录格式示例】]%subbibintoc \defbibfilter{collections}{% type=collection or type=proceedings or type=incollection or type=inproceedings } -\printbibliography[heading=subbibliography,filter=collections,title=【论文集、会议录-著录格式示例】] -\printbibliography[heading=subbibliography,type=report,title=【报告-著录格式示例】] -\printbibliography[heading=subbibliography,type=thesis,title=【学位论文-著录格式示例】] -\printbibliography[heading=subbibliography,type=patent,title=【专利-著录格式示例】] +\printbibliography[heading=subbibliography,filter=collections,title=【A2-论文集、会议录-著录格式示例】] +\printbibliography[heading=subbibliography,type=report,title=【A3-报告-著录格式示例】] +\printbibliography[heading=subbibliography,type=thesis,title=【A4-学位论文-著录格式示例】] +\printbibliography[heading=subbibliography,type=patent,title=【A5-专利-著录格式示例】] \defbibfilter{standard}{% ( type=book or type=inbook ) and keyword=standard } -\printbibliography[heading=subbibliography,filter=standard,title=【标准文献-著录格式示例】] -\printbibliography[heading=subbibliography,type=inbook,notkeyword=standard,title=【专著中析出的文献-著录格式示例】] -\printbibliography[heading=subbibliography,type=article,notkeyword=news,title=【期刊中析出的文献-著录格式示例】] -\printbibliography[heading=subbibliography,keyword=news,title=【报纸析出的文献-著录格式示例】]%type=article,有时type是newspaper所以不指定type为article -\printbibliography[heading=subbibliography,type=online,title=【电子资源-著录格式示例】] +\printbibliography[heading=subbibliography,filter=standard,title=【A6-标准文献-著录格式示例】] +\hypertarget{entrystdwithoutauthor}{注意:这里最后一篇标准文献没有责任者,所以作者年制默认情况下无法给出文献标识符。} +\printbibliography[heading=subbibliography,type=inbook,notkeyword=standard,title=【A7-专著中析出的文献-著录格式示例】] +\printbibliography[heading=subbibliography,type=article,notkeyword=news,title=【A8-期刊中析出的文献-著录格式示例】] +\printbibliography[heading=subbibliography,keyword=news,title=【A9-报纸析出的文献-著录格式示例】]%type=article,有时type是newspaper所以不指定type为article +\printbibliography[heading=subbibliography,type=online,title=【A10-电子资源-著录格式示例】] \end{refsection} \subsection{测试:专著book和专著中的析出文献inbook及标准standard文献}\label{sec:test:book} @@ -897,77 +979,64 @@ and keyword=standard 专著book和专著中的析出文献inbook及标准standard文献测试,参见: 顺序编码制: -\href{run:./egbooks.tex}{egbooks.tex}, -\href{run:./egbooks.pdf}{egbooks.pdf}。 +\href{run:./example/egbooks.tex}{egbooks.tex}, +\href{run:./example/egbooks.pdf}{egbooks.pdf}。 作者年制: -\href{run:./egbooksay.tex}{egbooksay.tex}, -\href{run:./egbooksay.pdf}{egbooksay.pdf}。 +\href{run:./example/egbooksay.tex}{egbooksay.tex}, +\href{run:./example/egbooksay.pdf}{egbooksay.pdf}。 \subsection{测试:连续出版物periodical和连续出版物中的析出文献article} 连续出版物periodical和连续出版物中的析出文献article文献测试,参见: 顺序编码制: -\href{run:./egjournal.tex}{egjournal.tex}, -\href{run:./egjournal.pdf}{egjournal.pdf}。 +\href{run:./example/egjournal.tex}{egjournal.tex}, +\href{run:./example/egjournal.pdf}{egjournal.pdf}。 作者年制: -\href{run:./egjournalay.tex}{egjournalay.tex}, -\href{run:./egjournalay.pdf}{egjournalay.pdf}。 - - - -\subsection{测试:专利文献patent} -专利文献patent文献测试,参见: - -顺序编码制: -\href{run:./egpatent.tex}{egpatent.tex}, -\href{run:./egpatent.pdf}{egpatent.pdf}。 - -作者年制: -\href{run:./egpatentay.tex}{egpatentay.tex}, -\href{run:./egpatentay.pdf}{egpatentay.pdf}。 - -\qd{注意:文献\{刘加林1993--\}的location定义了中国,GB/T 7714-2015中其实并不需要该域,但这里并没有去掉,先放着也许以后标准修改后可能用的着。如果要去掉,那么将bib文件中该条目的location去掉就行了。} +\href{run:./example/egjournalay.tex}{egjournalay.tex}, +\href{run:./example/egjournalay.pdf}{egjournalay.pdf}。 \subsection{测试:电子资源或在线资源online} 在线资源online文献测试,参见: 顺序编码制: -\href{run:./egonline.tex}{egonline.tex}, -\href{run:./egonline.pdf}{egonline.pdf}。 +\href{run:./example/egonline.tex}{egonline.tex}, +\href{run:./example/egonline.pdf}{egonline.pdf}。 作者年制: -\href{run:./egonlineay.tex}{egonlineay.tex}, -\href{run:./egonlineay.pdf}{egonlineay.pdf}。 +\href{run:./example/egonlineay.tex}{egonlineay.tex}, +\href{run:./example/egonlineay.pdf}{egonlineay.pdf}。 \qd{注意:对于作者年制,这里有4篇文献都是noauthor,有两篇有年份可以轻易分开,还有两篇没有年份存在歧义,所以在标注中用了[n.d.]加a和b分开,但在参考文献表中,各个版本的biblatex表现是不同的,其中3.4版因为进行newbibmacro*\{date+extrayear\}的定义时候,首先判断iffieldundef\{\textbackslash thefield\{datelabelsource\}year\},当不存在datelabelsource的值+year的域时,就不再添加了。如果需要加extrayear也可以修改出来,但其实并无必要。这与标注中用的newbibmacro*\{cite:labelyear+extrayear\}(在authoryear.cbx文件中)的定义是不一样的。更多的内容详见 \ref{sec:dateinlabel}节。\par} -\subsection{测试:学位论文thesis} -学位论文thesis文献测试,参见: +\subsection{测试:学位论文thesis、专利文献patent} +学位论文thesis文献专利文献patent文献测试,参见: 顺序编码制: -\href{run:./egthesis.tex}{egthesis.tex}, -\href{run:./egthesis.pdf}{egthesis.pdf}。 +\href{run:./example/egthesispatent.tex}{egthesispatent.tex}, +\href{run:./example/egthesispatent.pdf}{egthesispatent.pdf}。 作者年制: -\href{run:./egthesisay.tex}{egthesisay.tex}, -\href{run:./egthesisay.pdf}{egthesisay.pdf}。 +\href{run:./example/egthesispatentay.tex}{egthesispatentay.tex}, +\href{run:./example/egthesispatentay.pdf}{egthesispatentay.pdf}。 + +\qd{注意:专利文献\{刘加林1993--\}的location定义了中国,GB/T 7714-2015中其实并不需要该域,但这里并没有去掉,先放着也许以后标准修改后可能用的着。如果要去掉,那么将bib文件中该条目的location去掉就行了。} \subsection{测试:报告report、手册manual和档案、未出版物unpublished} 报告report、手册manual和档案、未出版物unpublished文献测试,参见: 顺序编码制: -\href{run:./egreport.tex}{egreport.tex}, -\href{run:./egreport.pdf}{egreport.pdf}。 +\href{run:./example/egreport.tex}{egreport.tex}, +\href{run:./example/egreport.pdf}{egreport.pdf}。 作者年制: -\href{run:./egreportay.tex}{egreportay.tex}, -\href{run:./egreportay.pdf}{egreportay.pdf}。 +\href{run:./example/egreportay.tex}{egreportay.tex}, +\href{run:./example/egreportay.pdf}{egreportay.pdf}。 \subsection{测试:会议文集proceedings和会议文集中析出的文献inproceedings及汇编collection和汇编中的析出文献incollection} @@ -975,87 +1044,90 @@ and keyword=standard proceedings和inproceedings及collection和incollection文献测试,参见: 顺序编码制: -\href{run:./egprcdorinprcd.tex}{egprcdorinprcd.tex}, -\href{run:./egprcdorinprcd.pdf}{egprcdorinprcd.pdf}。 +\href{run:./example/egprcdorinprcd.tex}{egprcdorinprcd.tex}, +\href{run:./example/egprcdorinprcd.pdf}{egprcdorinprcd.pdf}。 作者年制: -\href{run:./egprcdorinprcday.tex}{egprcdorinprcday.tex}, -\href{run:./egprcdorinprcday.pdf}{egprcdorinprcday.pdf}。 +\href{run:./example/egprcdorinprcday.tex}{egprcdorinprcday.tex}, +\href{run:./example/egprcdorinprcday.pdf}{egprcdorinprcday.pdf}。 \subsection{测试: 双语文献}\label{sec:doublelang:test} 双语文献的两种实现方法,一是基于set的动态方法,二是基于related的动态方法,参见: -\href{run:./egaligngb7714-2015ay.tex}{egaligngb7714-2015ay.tex}, -\href{run:./egaligngb7714-2015ay.pdf}{egaligngb7714-2015ay.pdf}。 +\href{run:./example/egaligngb7714-2015ay.tex}{egaligngb7714-2015ay.tex}, +\href{run:./example/egaligngb7714-2015ay.pdf}{egaligngb7714-2015ay.pdf}。 -\subsection{测试: align选项}\label{sec:align:test} -align选项主要控制顺序编码制序号标签三种对齐方式, +\subsection{测试: gbalign选项}\label{sec:align:test} +gbalign选项主要控制顺序编码制序号标签三种对齐方式, 分别是: 右对齐,参见: -\href{run:./egalignright.tex}{egalignright.tex}, -\href{run:./egalignright.pdf}{egalignright.pdf}。 +\href{run:./example/egalignright.tex}{egalignright.tex}, +\href{run:./example/egalignright.pdf}{egalignright.pdf}。 左对齐,参见: -\href{run:./egalignleft.tex}{egalignleft.tex}, -\href{run:./egalignleft.pdf}{egalignleft.pdf}。 +\href{run:./example/egalignleft.tex}{egalignleft.tex}, +\href{run:./example/egalignleft.pdf}{egalignleft.pdf}。 项对齐,参见: -\href{run:./egaligngb7714-2015.tex}{egaligngb7714-2015.tex}, -\href{run:./egaligngb7714-2015.pdf}{egaligngb7714-2015.pdf}。 +\href{run:./example/egaligngb7714-2015.tex}{egaligngb7714-2015.tex}, +\href{run:./example/egaligngb7714-2015.pdf}{egaligngb7714-2015.pdf}。 -\subsection{测试: gbpub选项}\label{sec:option:deal} +\subsection{测试: gbpub选项}\label{sec:opt:gbpub} gbpub选项测试参见: -顺序编码制: - -\href{run:./eggbpubtrue.tex}{eggbpubtrue.tex}, -\href{run:./eggbpubtrue.pdf}{eggbpubtrue.pdf}。 - -\href{run:./eggbpubfalse.tex}{eggbpubfalse.tex}, -\href{run:./eggbpubfalse.pdf}{eggbpubfalse.pdf}。 +顺序编码制(作者年制类似): -作者年制: +\href{run:./example/eggbpubtrue.tex}{eggbpubtrue.tex}, +\href{run:./example/eggbpubtrue.pdf}{eggbpubtrue.pdf}。 -\href{run:./eggbpubtrueay.tex}{eggbpubtrueay.tex}, -\href{run:./eggbpubtrueay.pdf}{eggbpubtrueay.pdf}。 +\href{run:./example/eggbpubfalse.tex}{eggbpubfalse.tex}, +\href{run:./example/eggbpubfalse.pdf}{eggbpubfalse.pdf}。 -\href{run:./eggbpubfalseay.tex}{eggbpubfalseay.tex}, -\href{run:./eggbpubfalseay.pdf}{eggbpubfalseay.pdf}。 +\subsection{测试: gbnoauthor选项和online条目仅存url信息} +\label{sec:opt:noauthor} +online条目信息严重缺失问题测试参见: +\href{run:./example/eggbnoauthortrue.tex}{eggbnoauthortrue.tex}, +\href{run:./example/eggbnoauthortrue.pdf}{eggbnoauthortrue.pdf}。 +\href{run:./example/eggbnoauthorfalse.tex}{eggbnoauthorfalse.tex}, +\href{run:./example/eggbnoauthorfalse.pdf}{eggbnoauthorfalse.pdf}。 -\subsection{测试: gbnoauthor选项和online条目仅存url信息}\label{sec:opt:noauthor} -online条目信息严重缺失问题测试参见: +gbnoauthor选项测试参见: -\href{run:./eggbnoauthortrue.tex}{eggbnoauthortrue.tex}, -\href{run:./eggbnoauthortrue.pdf}{eggbnoauthortrue.pdf}。 +\href{run:./example/eggbnoauthortrueay.tex}{eggbnoauthortrueay.tex}, +\href{run:./example/eggbnoauthortrueay.pdf}{eggbnoauthortrueay.pdf}。 -\href{run:./eggbnoauthorfalse.tex}{eggbnoauthorfalse.tex}, -\href{run:./eggbnoauthorfalse.pdf}{eggbnoauthorfalse.pdf}。 +\href{run:./example/eggbnoauthorfalseay.tex}{eggbnoauthorfalseay.tex}, +\href{run:./example/eggbnoauthorfalseay.pdf}{eggbnoauthorfalseay.pdf}。 -gbnoauthor选项测试参见: +\subsection{测试: gbnamefmt选项} +\label{sec:opt:namefmt} +姓名默认情况下字母大写的,即 gbnamefmt=uppercase,设置 gbnamefmt=lowercase 可以不处理保持原始的大小写,设置 gbnamefmt=none 则使用 biblatex标准样式的处理方式,参见: -\href{run:./eggbnoauthortrueay.tex}{eggbnoauthortrueay.tex}, -\href{run:./eggbnoauthortrueay.pdf}{eggbnoauthortrueay.pdf}。 +gbnamefmt=lowercase 情况: +\href{run:./example/eggbnamefmta.tex}{eggbnamefmta.tex}, +\href{run:./example/eggbnamefmta.pdf}{eggbnamefmta.pdf}。 -\href{run:./eggbnoauthorfalseay.tex}{eggbnoauthorfalseay.tex}, -\href{run:./eggbnoauthorfalseay.pdf}{eggbnoauthorfalseay.pdf}。 +gbnamefmt=none 情况: +\href{run:./example/eggbnamefmtb.tex}{eggbnamefmtb.tex}, +\href{run:./example/eggbnamefmtb.pdf}{eggbnamefmtb.pdf}。 \subsection{测试: beamer类} beamer类中的参考文献测试,参见: 顺序编码制: -\href{run:./egbeamer.tex}{egbeamer.tex}, -\href{run:./egbeamer.pdf}{egbeamer.pdf}。 +\href{run:./example/egbeamer.tex}{egbeamer.tex}, +\href{run:./example/egbeamer.pdf}{egbeamer.pdf}。 作者年制: -\href{run:./egbeameray.tex}{egbeameray.tex}, -\href{run:./egbeameray.pdf}{egbeameray.pdf}。 +\href{run:./example/egbeameray.tex}{egbeameray.tex}, +\href{run:./example/egbeameray.pdf}{egbeameray.pdf}。 -\subsection{测试: 采用gb7714-2015顺序编码制样式时的上标和非上标标注}\label{sec:cite:cmd:test} +\subsection{测试: 上标和非上标等不同的标注格式}\label{sec:cite:cmd:test} \begin{refsection} 不带页码的引用(顺序编码制上标,方括号包围;作者年制行内,括号包围): \begin{itemize} @@ -1073,9 +1145,13 @@ beamer类中的参考文献测试,参见: \item \pagescite{Peebles2001-100-100}\pagescite[][201-301]{Peebles2001-100-100} \end{itemize} -已有作者只需要年份和页码的情况(命令yearpagescite),作者年制(上标),顺序编码制(与pagescite作用相同): +已有作者只需要年份和页码的情况(命令yearpagescite),作者年制(上标),顺序编码制(与pagescite作用相同); +已有作者只需要年份的情况(命令yearcite): \begin{itemize} \item 见赵耀东\yearpagescite[][205]{赵耀东1998--}和Simon\yearpagescite[][15]{Simon2001--}的文献。 + \item 见赵耀东\yearcite{赵耀东1998--} + \item 见赵耀东(\cite*{赵耀东1998--}) + \item 见赵耀东(\citeyear{赵耀东1998--}) \end{itemize} \printbibliography[heading=subbibliography,title=【gb7714-2015顺序编码制上标和非上标标注测试】] @@ -1246,6 +1322,72 @@ biblatex相当完善和强大,笔者开发样式文件过程中仅使用了bib \item mkbibparens等命令引入,解决方法:利用printtext\{(\},printtext\{)\}来代替 \item nopunct等命令引入,这种引入的空格使用unspace命令还消除不了,解决方法:避免使用nopunct命令,而在标点设置时多做判断,只有有内容时才设置标点,而不是过分依赖biblatex提供的标点异步处理机制。 \end{itemize} + + \item 短横线相关的字符,参考: unicode 表 + + \begin{itemize} + \item 0x2d:hyphen :\char"2D,直接输入键盘短横线得到\verb|-|,即为连字符 + \item 0x2010:hyphen :\char"2010 + \item 0x2011:non breaking hyphen :\char"2011 + \item 0x2012:figure dash :\char"2012 + \item 0x2013:en dash :\char"2013,直接输入两个键盘短横线得到\verb|--| + \item 0x2014:em dash :\char"2014,中文全角的一段破折号线,可以用三个短横线得到\verb|---| + \item 0x2212:mathematical minus :\char"2212 + \end{itemize} + biblatex中页码范围中的间隔符是\verb|\bibrangedash|,默认则是en dash。可以通过设置如下命令做修改: + \begin{texlist} + \DefineBibliographyExtras{english}{\renewcommand*{\bibrangedash}{-}}% 将页码间隔符替换为hypen连字符 + \end{texlist} + 而日期成分之间的间隔符则是\verb|\bibdatesep|,默认是hyphen,即连字符。 + + \item 使用printtext等命令确保异步处理机制不被破坏,典型的例子为,专利的公告日期(对于3.7以上版本)使用了biblatex的内容宏,但还需要将其用printtext包围起来,比如: + \begin{texlist} + % + % 专利的公告日期、或报纸的日期的输出宏 + % 20160701,v1.0,新增加 + % 20180405,为biblatexv3.10版本,出现多出点bug做处理,Hu Zhenzhen + % + % 原理方法:加上printtext避免破坏异步标点机制 + % + \newbibmacro*{newsdate}{%% + \printtext{\blx@isodate{}{}}%% + } + \end{texlist} + + \item beamer中标题后面的标点情况,beamer对bibmacro\{title\}做了patch以实现特殊的效果。比如: + \begin{texlist} + \pretocmd{\abx@macro@title} + {\ifcsundef{abx@name@labelname}{}{\let\bbx@tempa\labelnamepunct}% + \bbx@tempa\newblock\unspace\usebeamercolor[fg]{bibliography entry title}}{}{} + \apptocmd{\abx@macro@title} + {\ifcsundef{abx@field@title}{}{\ifpunct{}{\midsentence\newunitpunct}} + \newblock\unspace\usebeamercolor[fg]{bibliography entry note}}{}{} + \end{texlist} + 该patch详见beamerbaselocalstructure.sty文件。需要注意\verb|abx@field@title|,在biblatex中是有newbibmacro\{title\}产生的。注意到在apptocmd做的patch中,midsentence命令隐藏了其前面的标点并重新做标点最终,因此其后的newunitpunct命令必将输出标点,因此无论如何标题后面必然会出现一个newunitpunct控制的标点,这个标点一般情况下是可以用的,但是对于有些文献类型比如inbook,析出文献标题后面没有标点只有//,因此需要将该标点去掉,所以需要反处理该patch。 + 通过测试表明,无论是在title前再做pretocmd或者在title后再做apptocmd 都会产生问题,多个的apptocmd的机制大体是前一个做完后,后一个在其基础上处理,而apptocmd主要做的是封装,因此前一个产生的效果无法消除。但通过思考发现,使用patchcmd 可以对前面的效果产生影响,它不是封装而是一种替换,所以可以将前面封装的效果去掉。比如: + \begin{texlist} + % + % 文献标题后的标点问题 + % 20180405,v1.0k,为texlive2017以上版本中的beamer兼容性做的处理,Hu Zhenzhen + % + % 原理方法:如下代码处理texlive2017以上版本中,beamer中文献的标题后出现两个点的情况: + % texlive2017以上的beamer中对macro{title}做了patch,正常情况下不会出现两个点的情况,但由于 + % 之前为了处理texlive2015,2016下的title格式添加了adddot,导致出现两个点的情况,而且也影响 + % 析出文献的//符号的输出,因此再次对macro{title}做patch消除beamer中做apptocmd时添加的\newunitpunct + \ifboolexpr{% + test{\iftoggle{iftlfive}} + or + test{\iftoggle{iftlsix}} + }{}% + {%texlive 2017对应iftlseven以上版本 + \DeclareFieldFormat{title}{#1}% + \DeclareFieldFormat[article,patent,thesis,unpublished]{title}{#1} + \AtBeginDocument{% + \@ifclassloaded{beamer} + {\patchcmd{\abx@macro@title}{\newunitpunct}{}{}{}}{}} + } + \end{texlist} + \end{enumerate} @@ -1261,9 +1403,11 @@ biber动态数据处理,详见biblatex说明文档Dynamic Modification of Data \item origfieldvalue来源 \item overwite选项有无的作用,无overwite时,只要域原有信息,那么就不再map,有overwite时,则进行覆盖。\bc{注意:使用append的时候也需要overwite选项}。 \item biblatex3.4以后的版本可以使用foreach选项,而3.0版只能一个域一个域的处理,意味着每一个域处理都要写一个map 步。 - \item date域仅作为解析用,不出现在bbl文件中,所以在bbx内部进行日期判断的时候要注意,不使用date 域而要用由其解析出来的year 等域进行判断,而且当date域的内容不符合解析格式要求时,自动忽略掉,那么信息有可能丢失,因此当有不符合解析格式的日期信息时应放到year域中。 + \item date域仅作为解析用,不出现在bbl文件中,所以在bbx内部进行日期判断的时候要注意,不使用date 域而要用由其解析出来的year 等域进行判断,而且当date域的内容不符合解析格式要求时,自动忽略掉,那么信息有可能丢失,因此当有不符合解析格式的日期信息时应放到year 域中。 \item 动态数据处理中利用正则表达式可以用来处理特殊字符,对于参考文献信息中一些特殊字符比如\&等,除了利用jabref软件的biblatex 可以自动转换外,利用动态数据修改也可以做一定的处理,比如对一些容易出现这种字符的域进行处理,使其内容符合tex源文件书写规则,即在特殊字符前加上斜杠。注意利用正则表达式处理\%,\#时直接在regexp中写字符没有问题,但是对于\&字符就存在问题,所以对于该字符使用十六进制表示方法\verb|\x26|。 比如: + + \begin{texlist} %for texlive >2016 \DeclareStyleSourcemap{ @@ -1475,6 +1619,12 @@ biber动态数据处理,详见biblatex说明文档Dynamic Modification of Data \end{texlist} 无论选项是否给出,上面定义选项中的代码都会自动执行,当选项不给出,则自动调用默认的参数(因为代码中直接使用了输入参数,当没有输入参数,自然就会使用默认参数)来进行处理,显然这里是true。 +\subsubsection{标签中的标点和间隔符号}\label{sec:label:fmt} +文献表中的标签和正文中的标注标签都有标点和间隔符号问题,但两者可能存在一定的差异,不同版本的biblatex中也可能不同,但新的版本中通常是可以用一个相同的钩子来实现的,比如作者年制中作者和年份之间的标点: +\begin{texlist} +\renewcommand*{\nameyeardelim}{\addcomma\space} +\end{texlist} + \subsection{日期格式控制}\label{sec:date:fmt} 随着biblatex的更新,日期格式控制更趋完善。加上biblatex3.8a中biber解析出日期中月份和天数都不带引导的0,比如6月直接解析为6,而不像以前那样解析为06,所以需要特别的注意。因此对于新版本,有些日期比如online的发布日期,访问日期等,采用专门的格式edtf控制,而老版本则仍然使用原来定义的输出宏。比如: @@ -1619,7 +1769,10 @@ printnames这种命令的输出格式通常由相应输出域的域格式控制 \end{texlist} 其中的关键是given-family和family-given两个域格式使用name:family-given和name:family-given宏进行输出。 -真实的作者姓名格式在这两个宏中,因此做一定的处理: +真实的作者姓名格式在这两个宏中,因此做一定的处理。注意其中的输入参数为: +{namepartfamily},{namepartgiveni},{namepartprefix},{namepartsuffix}(使用名的首字母缩写)或 +{namepartfamily},{namepartgiven},{namepartprefix},{namepartsuffix}(不使用缩写)。 + \begin{texlist} %biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 \renewbibmacro*{name:given-family}[4]{%利用family-given定义given-family @@ -1664,7 +1817,7 @@ printnames这种命令的输出格式通常由相应输出域的域格式控制 %\mkbibnamelast{#1}\isdot \ifblank{##2}{\MakeCapital##1}{\mkbibnamelast{\MakeUppercase{##1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase %注意上一句\MakeCapital后面如果再跟一个{}包含#1,则没有效果,可能是包在里面少了一层展开 - %因为机构名通常包括在{}内,所以要多展开一次才行,所以这里去掉#1外面的{} + %因为机构名通常包括在{}内,所以要多展开一次才行,所以这里去掉#1 外面的{} %\mkbibnamelast{\MakeUppercase{#1}}\isdot %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 \ifblank{##2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamefirst{\MakeUppercase{##2}}\isdot}% @@ -1791,44 +1944,53 @@ biblatex是利用tex语句控制文献内容组织,因此我们可以坚定一 biblatex的宏包选项增加 \begin{enumerate} - \item 在gb7714-2015.bbx文件中有四种判断的方式包括:版本的判断,参考环境选项的判断,出版项处理控制选项的判断,一般的域的是否定义或与字符串比较是否相同的判断。 + \item 在gb7714-2015.bbx文件中有四种常见的判断方式包括: + 版本的判断, + 宏包选项的判断, + 宏包选项控制的切换标记的判断, + 一般的域的是否定义或与字符串比较是否相同的判断。 - 第一种判断,是直接根据已有的信息进行处理,给出toggle:iftexlivesix的设置,然后根据这一信息做任何的定义。 + 第一种判断,是直接根据已有的信息比如\verb|\abx@version|进行处理,该出的处理结果是直接展开的,可以用于后面的任意定义。 - 第二种判断,是通过宏包选项align给出的,这一选项是string类型。在选项的执行代码中直接给出命令,这种情况下,特别要注意DeclareBibliographyOption选项定义命令中给出的默认值是在加载该选项但不给出值时的默认值,而不是将选项默认设置为该默认值。因此当加载时不给出align选项时,不执行任何的语句,即不执行setalignleft,也不执行setaligngbstyle,也就是参考文献环境命令使用标准样式给出的定义而没有在setalignleft或setaligngbstyle中重定义。 - 如果给出选项align,相当于align=默认值,如果给出选项align=指定值,那么值就是指定值,然后并执行DeclareBibliographyOption 的定义代码,根据值进行判断。 + 第二种判断,是根据给出的宏包选项值或者不给出选项进行处理,例如定义的宏包选项gbalign ,这一选项是string 类型。在选项的执行代码中直接给出每一个选项值对应要执行的命令。比如: + \begin{texlist} + \DeclareBibliographyOption[string]{gbalign}[right]{% + \ifstrequal{##1}{left}{\setalignleft}{} + \ifstrequal{##1}{gb7714-2015}{\setaligngbstyle}{} + } + \end{texlist} + 这种情况下,特别要注意DeclareBibliographyOption 选项定义命令中给出的默认值right是在加载该选项但不给出值时的默认值,而不是将选项设置为该默认值。因此当加载时不给出gbalign选项时,不执行任何的语句,即不执行setalignleft,也不执行setaligngbstyle(因为不使用这两个命令的情况下项标签是右对齐的,这样也就是gbalign选项默认是右对齐的,只有设置宏包选项为left或gb7714-2015时才会因为setalignleft和setaligngbstyle命令二改变)。 + 如果给出选项gbalign,相当于gbalign=默认值,如果给出选项gbalign=指定值,那么值就是指定值,然后并执行DeclareBibliographyOption 的定义代码,根据值进行处理。 - 第三种判断,通过gbpub选项给出,这一选项类似于standard.bbx中定义的url等选项。给出选项定义后: + 第三种判断,根据宏包选项控制对切换标记进行设置,然后再代码中应用切换标记判断。比如gbpub 选项,这一选项类似于standard.bbx中定义的url 等选项。 \begin{texlist} \newtoggle{bbx:gbpub} \DeclareBibliographyOption[boolean]{gbpub}[true]{% - %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 - \ifstrequal{#1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} + %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 + \ifstrequal{##1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} \end{texlist} - 默认可以利用toggle:bbx:gbpub进行任何的定义,但这时默认值是newtoggle 命令给出的默认值false。 + 默认可以利用切换标记bbx:gbpub进行任何的定义。但如果展开的层次是与这里定义的宏包选项同一层次的,那么切换标记会根据默认值是false 而展开。如果是下一层的展开(就是不需要在加载时展开的),那么会根据展开时切换标记bbx:gbpub的值进行展开。 - 要使用选项给出的默认值,还需要使用命令: + 注意到在上述这一定义后面,使用了选项默认执行命令: \begin{texlist} \ExecuteBibliographyOptions{gbpub} \end{texlist} - 这时bbx:gbpub的值设置为true。这一命令用来执行选项的,如果不给出这一命令,且宏包加载选择中没有给出选项设置,那么toggle只有新建toggle时的默认定义。如果给出了命令 + 这是宏包选项定义中的代码会立刻被执行,即bbx:gbpub的值设置为true。ExecuteBibliographyOptions 命令是用来执行选项的,如果不给出这一命令,且宏包加载选择中没有给出选项设置,那么toggle只有新建toggle 时的默认定义。还要注意这里的切换标记设置是立刻进行的,如果这里的定义不是设置切换标记,而是直接调用命令,比如上面的gbalign的情况,那么就需要该被调用命令是有定义的,即定义至少与宏包选项定义在同一展开层次,甚至先于宏包选项定义。 + + 还需要注意,如果给出了命令 \begin{texlist} - \ExecuteBibliographyOptions{gbpub} + \ExecuteBibliographyOptions{gbpub}%等价于下一条命令 \ExecuteBibliographyOptions{gbpub=true} \ExecuteBibliographyOptions{gbpub=false} \end{texlist} - 等价于在宏包加载时给出选项。但是宏包加载选择可以覆盖这个命令的设置。 + 等价于在宏包加载时给出选项。但是宏包加载选项设置可以覆盖这个命令的设置。 如果在宏包加载时给出选项gbpub=false,那么bbx:gbpub的值设置为false。 如果在宏包加载时给出选项gbpub,gbpub=true,那么bbx:gbpub的值设置为true。 第四种判断,利用iffieldundef和iffieldequalstr进行判断即可。 - \item 要注意使用toggle时,如果先根据toggle判断然后定义,这种情况下在bbx 加载时就已经根据当前的值展开了,所有DeclareBibliographyOption中的任何toggle设置都是无效的。比如:上述第二种宏包选项设置中,命令DeclareBibliographyOption 是设置string选项,如果用ifstrequal 判断出选项的参数,然后设置toggletrue或false,然后再后面根据toggle的true 或false来展开内容,是不行的。因为后面的toggle判断后的内容先于设置toggletrue或false展开了。 - - 如果在文档正文中看,toggle设置为true没有问题,但就是没有bbx 文件中对应设置为true 的展开。需要根据选项宏包设置而进行不同的展开那么就不能采用这样的方式,而应该采用直接在选项设置命令展开,不能用toggle判断然后展开。尝试代码可以见\pageref{up:161207}页中更新说明中的注释代码。 - - 但是在宏的定义中使用toggle就没有问题,因为只是使用toggle来定义,在使用展开前,只要toggle变化,都可以影响最终的展开。 + \item 总结起来,宏包选项的问题需要注意宏包选项的展开顺序。宏包选项的定义如果不使用ExecuteBibliographyOptions命令或者不在加载时设置,那么定义的代码是不执行的。因此如果其他代码中需要使用该宏包选项定义代码中的信息是无法正确获取的。而当使用ExecuteBibliographyOptions命令或者加载选项时,那么宏包选项代码会立即展开,其中需要使用的宏则需要有定义,即先于或与宏包选项定义处于同一展开层。 \begin{texlist} %\newtoggle{bbx:gbpub} @@ -1855,9 +2017,7 @@ biblatex的宏包选项增加 \ifstrequal{#1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} \ExecuteBibliographyOptions{gbpub} - \end{texlist} - - \item 注意:ExecuteBibliographyOptions命令是用来执行选项的,如果不给出设置选项的值,那么使用默认的参数。比如设置了一个gb7714 选项,并用ExecuteBibliographyOptions\{gb7714\}进行设置,那么相当于设置为gb7714=true + \end{texlist} \end{enumerate} @@ -1865,9 +2025,9 @@ biblatex的宏包选项增加 \subsection{文献表环境和打印输出} biblatex宏包的参考文献表的打印 \begin{enumerate} - \item 根据biblatex.sty文件中的\verb|\blx@bibliography|命令可以知道,定义的参考文献表的环境的开始代码在命令中\verb|\blx@bibliography|中,结束代码在\verb|\blx@endbibliography|中,循环项代码在\verb|\blx@bibitem| 中的\verb|blx@item@\blx@theenv}|命令中。参考文献循环打印依靠\verb|\blx@listloop| 命令实现。 + \item 根据biblatex.sty文件中的\verb|\blx@bibliography|命令可以知道,定义的参考文献表的环境的开始代码在命令中\verb|\blx@bibliography| 中,结束代码在\verb|\blx@endbibliography|中,循环项代码在\verb|\blx@bibitem| 中的\verb|blx@item@\blx@theenv}|命令中。参考文献循环打印依靠\verb|\blx@listloop| 命令实现。 \item 从\verb|\blx@listloop|可以知道,各条参考文献表的指引信息是混合在一起的并且以|字符为分隔。将混合的参考文献指引信息解析成单独的指引信息,并交给\verb|\blx@bibitem|命令处理。 - \item \verb|\blx@bibitem|首先开始一个编组,然后根据单独一条参考文献的指引信息,获取数据,执行判断,利用参考文献表环境定义的循环项代码对参考文献内容设置段落格式,最后结束编组。在定义align=gb7714-2015样式的段落格式时,采用了parshape 或者hangindent命令来实现,所以其中增加了一个par命令以使其生效。 + \item \verb|\blx@bibitem|首先开始一个编组,然后根据单独一条参考文献的指引信息,获取数据,执行判断,利用参考文献表环境定义的循环项代码对参考文献内容设置段落格式,最后结束编组。在定义gbalign=gb7714-2015 样式的段落格式时,采用了parshape 或者hangindent命令来实现,所以其中增加了一个par 命令以使其生效。 \end{enumerate} @@ -1877,7 +2037,7 @@ biblatex在texlive中的版本对应关系是: texlive2015对应biblatex3.0; texlive2016对应biblatex3.4,从3.2版开始修改了姓名机制(如\ref{sec:name:fmt}节所述); texlive2017对应biblatex3.7; -2017年底又出了biblatex3.8a版。 +2017年底又出了biblatex3.8a到3.10版。 \begin{enumerate} \item biblatex版本判断 @@ -1920,30 +2080,53 @@ texlive2017对应biblatex3.7; \item 版本与兼容性的最终处理方法 - 经过最终设计,下面给出的另一版本兼容性处理方式取代前面给出的处理方式,便于以后的扩展。 + 经过最终设计,下面给出的另一版本兼容性处理方式取代前面给出的处理方式,便于以后的扩展。这种方式自然兼容最新的版本,但老的版本的代码处理必须要到位,即因为biblatex版本升级增加了新的老版本时,对应该老版本的选择必须要实现,否则可能漏掉这些版本的处理。 \begin{texlist} - %版本判断 - \providetoggle{iftlfive}%用于处理biblatex3.2之前的版本,即texlive2015以下版本中的biblatex - \providetoggle{iftlsix}%用于处理biblatex3.3开始改变的新的姓名机制后版本,包括 + %版本判断,当版本继续更新时,增加一个新的toggle用以处理新的旧版,最新版本永远用iftlatest + \providetoggle{iftlfive}%用于处理biblatex3.2之前的版本 + \providetoggle{iftlsix}%用于处理biblatex3.3开始改变的新的姓名机制后版本 \providetoggle{iftlseven}%用于处理biblatex3.7的兼容性 - \providetoggle{iftleight}%用于处理biblatex3.8a的兼容性 - \StrChar{\abx@version}{1}[\numinteger] - \StrChar{\abx@version}{3}[\numdigital] - \ifnumcomp{\numinteger}{=}{2}{\toggletrue{iftlfive}}{\togglefalse{iftlfive}} + \providetoggle{iftleight}%用于处理biblatex3.8到3.9的兼容性 + \providetoggle{iftlatest}%用于最新版biblatex,目前是biblatex3.10,20180117 + \StrBefore{\abx@version}{.}[\numinteger]%以点区分整数和小数 + \StrBehind{\abx@version}{.}[\numdigital]%小数部分可能带字母所以需将其去掉,见下一行代码 + \IfInteger{\numdigital}{}{\StrGobbleRight{\numdigital}{1}[\numdigital]} + \togglefalse{iftlfive} + \togglefalse{iftlsix} + \togglefalse{iftlseven} + \togglefalse{iftleight} + \toggletrue{iftlatest} \ifnumcomp{\numinteger}{=}{3}{ - \ifnumcomp{\numdigital}{>}{2}{\toggletrue{iftlsix}\togglefalse{iftlfive}}{\togglefalse{iftlsix}\toggletrue{iftlfive}} - \ifnumcomp{\numdigital}{>}{6}{\toggletrue{iftlseven}\togglefalse{iftlsix}}{\togglefalse{iftlseven}} - \ifnumcomp{\numdigital}{>}{7}{\toggletrue{iftleight}\togglefalse{iftlseven}}{\togglefalse{iftleight}} - }{\blx@warning@noline{% - biblatex version undefined in biblatex-gb7714-2015.\MessageBreak - Please contact pkg author.}} + \ifnumcomp{\numdigital}{<}{10}{\ifnumcomp{\numdigital}{>}{7}{\toggletrue{iftleight}\togglefalse{iftlatest}}{}}{}%>3.8 版本用iftleight=true表示 + \ifnumcomp{\numdigital}{=}{7}{\toggletrue{iftlseven}\togglefalse{iftlatest}}{}%3.7 版本用iftlseven=true表示 + \ifnumcomp{\numdigital}{<}{7}{\ifnumcomp{\numdigital}{>}{2}{\toggletrue{iftlsix}\togglefalse{iftlatest}}{}}{}%3.3-3.6 版本用iftlsix=true表示 + \ifnumcomp{\numdigital}{<}{3}{\toggletrue{iftlfive}\togglefalse{iftlatest}}{}%3.0-3.2 版本用iftlfive=true表示 + }{\ifnumcomp{\numinteger}{>}{3}{ + \blx@warning@noline{% + biblatex version is >= 4.x.\MessageBreak + if errors raised,Please contact biblatex-gb7714-2015 pkg author.}% + }{ \toggletrue{iftlfive}\togglefalse{iftlatest}%2.x版本统一用iftlfive=true表示 + \blx@warning@noline{% + biblatex version is <= 2.x.\MessageBreak + if errors raised,Please contact biblatex-gb7714-2015 pkg author.}% + }} \newcommand\defversion[2]{\csdef{codeversion#1#2}}%定义不同版本的命令 \newcommand\switchversion[2]{\csuse{codeversion#1#2}}%使用不同版本的命令 - \defversion{3.0}{opt}{ +\defversion{3.0}{opt}{ %biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 + + %增加姓名大小写格式处理选项 + \DeclareBibliographyOption{gbnamefmt}[uppercase]{% + %\ifstrequal{##1}{gbuppercase}{}{}% + \ifstrequal{##1}{lowercase}{\execgblowercase}{}% + \ifstrequal{##1}{none}{\execnamedefault}{} + \ifstrequal{##1}{pinyin}{\execnamepinyin}{} + } + %\ExecuteBibliographyOptions{gbnamefmt} + %增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015无效,仍然为右对齐模式,因为舍弃了list类环境后出错。 - \DeclareBibliographyOption{align}[right]{%texlive2015中的3.0版中的DeclareBibliographyOption选项没有类型说明 + \DeclareBibliographyOption{gbalign}[right]{%texlive2015中的3.0版中的DeclareBibliographyOption选项没有类型说明 \ifstrequal{##1}{right}{}{} \ifstrequal{##1}{left}{\setalignleft}{} \ifstrequal{##1}{gb7714-2015}{}{} @@ -1975,8 +2158,18 @@ texlive2017对应biblatex3.7; \defversion{3.4}{opt}{ % Alter settings that carry through from biblatex %biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 + + %增加姓名大小写格式处理选项 + \DeclareBibliographyOption[string]{gbnamefmt}[uppercase]{% + %\ifstrequal{##1}{gbuppercase}{}{}% + \ifstrequal{##1}{lowercase}{\execgblowercase}{}% + \ifstrequal{##1}{none}{\execnamedefault}{} + \ifstrequal{##1}{pinyin}{\execnamepinyin}{} + } + %\ExecuteBibliographyOptions{gbnamefmt} + %增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 - \DeclareBibliographyOption[string]{align}[right]{% + \DeclareBibliographyOption[string]{gbalign}[right]{% \ifstrequal{##1}{left}{\setalignleft}{} \ifstrequal{##1}{gb7714-2015}{\setaligngbstyle}{} } @@ -2006,8 +2199,18 @@ texlive2017对应biblatex3.7; \defversion{3.7}{opt}{ %biblatex3.7版后(比如texlive2017中的3.7版)的使用方式 + + %增加姓名大小写格式处理选项 + \DeclareBibliographyOption[string]{gbnamefmt}[uppercase]{% + %\ifstrequal{##1}{gbuppercase}{}{}% + \ifstrequal{##1}{lowercase}{\execgblowercase}{}% + \ifstrequal{##1}{none}{\execnamedefault}{} + \ifstrequal{##1}{pinyin}{\execnamepinyin}{} + } + %\ExecuteBibliographyOptions{gbnamefmt} + %增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 - \DeclareBibliographyOption[string]{align}[right]{% + \DeclareBibliographyOption[string]{gbalign}[right]{% \ifstrequal{##1}{left}{\setalignleft}{} \ifstrequal{##1}{gb7714-2015}{\setaligngbstyle}{} } @@ -2037,12 +2240,54 @@ texlive2017对应biblatex3.7; } } -\iftoggle{iftlfive} - {\switchversion{3.0}{opt}}%%当采用texlive2015以下版本时 - {\iftoggle{iftlsix}% - {\switchversion{3.4}{opt}}%%当采用texlive2016版本时 - {\switchversion{3.7}{opt}}%%当采用texlive2017以上版本时 +\defversion{3.10}{opt}{ + %biblatex3.10版后的使用方式 + + %增加姓名大小写格式处理选项 + \DeclareBibliographyOption[string]{gbnamefmt}[uppercase]{% + %\ifstrequal{##1}{gbuppercase}{}{}% + \ifstrequal{##1}{lowercase}{\execgblowercase}{}% + \ifstrequal{##1}{none}{\execnamedefault}{} + \ifstrequal{##1}{pinyin}{\execnamepinyin}{} + } + %\ExecuteBibliographyOptions{gbnamefmt} + + %增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 + \DeclareBibliographyOption[string]{gbalign}[right]{% + \ifstrequal{##1}{left}{\setalignleft}{} + \ifstrequal{##1}{gb7714-2015}{\setaligngbstyle}{} + } + + %增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 + \newtoggle{bbx:gbpub} + \DeclareBibliographyOption[boolean]{gbpub}[true]{% + %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 + \ifstrequal{##1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} + \ExecuteBibliographyOptions{gbpub} + + %增加一个处理佚名或noauthor的控制选项 + %因为在顺序编码制中,不需要使用,这里也增加,为了与作者年制的兼容性考虑。 + \DeclareBibliographyOption[boolean]{gbnoauthor}[true]{}% + + \ExecuteBibliographyOptions{ + sorting=none, + useprefix=true, %名字的信息包括前缀 + %firstinits=true, %名字有缩写,参考3.1.2.3 Internal + giveninits=true, + date = year, %日期仅写到年 + urldate =iso, %iso8601,edtf + eventdate =iso, + maxnames = 3 , %设置名字最大数量 + minnames = 3 %设置缩减后的名字最小数量 + %uniquename = init } +} + +\iftoggle{iftlfive}{\switchversion{3.0}{opt}}{}%biblatex<=3.2 +\iftoggle{iftlsix}{\switchversion{3.4}{opt}}{}%3.3<=biblatex<=3.6 +\iftoggle{iftlseven}{\switchversion{3.7}{opt}}{}%biblatex=3.7 +\iftoggle{iftleight}{\switchversion{3.7}{opt}}{}%3.8<=biblatex<=3.9 +\iftoggle{iftlatest}{\switchversion{3.10}{opt}}{}%biblatex最新3.10 \end{texlist} \end{enumerate} @@ -2070,7 +2315,7 @@ texlive2017对应biblatex3.7; 下面的问题想到哪写到哪,没有特别的顺序: \begin{enumerate} - \item 因为采用xelatex编译,所以样式文件直接采用UTF-8编码,没有考虑GBK编码。 + \item 因为采用xelatex编译,所以样式文件直接采用UTF-8编码,没有考虑GBK 编码。 \item \zhongdian{【Most Important】【注意】:当在顺序编码和作者年制的切换,或者biblatex版本切换时,如果使用出错,可先清理一下辅助文件,清理完后,重新编译即可。} @@ -2083,7 +2328,7 @@ texlive2017对应biblatex3.7; \item 关于出版地和出版者同时缺省的情况,GB/T 7714-2015中没有给出明确的说明,但英文给出了一个例子(见GB/T 7714-2015 附录A.3)而中文没有,英文的样式是[S.l. : s.n.],这种形式本样式文件中没有给出,而直接用两者分开的形式,[S.l.] : [s.n.],事实上这里作者认为没有必要把s.l.和s.n. 合起来,不仅与缺省两者之一的情况不统一,样式处理起来也增加不必要的麻烦。 - \item 目前符合GB/T7714-2005或GB/T7714-2015参考文献著录规则的biblatex样式有好几个实现,除本样式外,还有李志奇(icetea)\footnote{\url{http://bbs.ctex.org/forum.php?mod=viewthread&tid=74474}} 和沈周(szsdk)\footnote{\url{http://bbs.ctex.org/forum.php?mod=viewthread&tid=152561&extra=page\%3D1}} 分别提供的样式文件,效果是类似的。此外,Casper Ti. Vector提供的biblatex 样式caspervector也是不错的中文参考文献样式 + \item 目前符合GB/T7714-2005或GB/T7714-2015参考文献著录规则的biblatex 样式有好几个实现,除本样式外,还有李志奇(icetea)\footnote{\url{http://bbs.ctex.org/forum.php?mod=viewthread&tid=74474}} 和沈周(szsdk)\footnote{\url{http://bbs.ctex.org/forum.php?mod=viewthread&tid=152561&extra=page\%3D1}} 分别提供的样式文件,效果是类似的。此外,Casper Ti. Vector提供的biblatex 样式caspervector也是不错的中文参考文献样式 \footnote{\url{https://gitlab.com/CasperVector/biblatex-caspervector}}。 感谢各位作者的分享! \item 本文档根据GB/T 7714-2015提供的参考文献表著录格式示例做了测试和验证,详见第\ref{sec:eg:gb77142015}节。测试系统环境为: @@ -2110,7 +2355,7 @@ texlive2017对应biblatex3.7; %读者若查看样式文件内容可以看到作者对各目标要求所做的修改及,读者也可以根据自己的需求进行修改,作者设计样式文件的思路以及在设计过程中用到的一些biblatex宏包功能说明,详见第\ref{sec:biblatex:mech}节和LaTeX文档中文参考文献的biblatex解决方案的第2.7节。 最后要感谢如下各位师长和朋友,正是在各位的帮助建议下,本样式不断升级逐渐完善。包括: moewew(biblatex 现在的维护者之一,给了不少有益的建议)、 李志奇(基于biblatex的符合GBT7714-2005的中文文献生成工具作者,笔者以前使用该工具,其代码对于设计本样式很有启发)、LeoLiu(刘海洋,CJK字符判断函数 -\footnote{\url{http://bbs.ctex.org/forum.php?mod=viewthread&tid=152663&extra=page\%3D3}} 对本宏包非常有帮助)、chinatex(china tex版主,给了很多建议和帮助,并且一起合作)、Sheng wenbo(biblatex用户手册合作译者,LaTeX2e 插图指南第三版译者,我们一起翻译的过程相互激励相互促进)、zepinglee(gbt7714-2015 bst样式作者,给了很多建议和讨论)、Harry Chen(ctex 维护者,给了不少好的建议)、liubenyuan(关于项目组织给出了很好的建议)、秀文工作组、leipility、qingkuan、湘厦人、秋平、任蒲军、fredericky123、qiuzhu、chaoxiaosu、Old Jack、Wu Nailong、Yibai Zhang、wayne508、 钟乙源、Xiaodong Yao、dsycircle、rpjshu、zjsdut、谢澜涛、Zutian Luo、海阔天空、zzqzyx、程晨、xmtangjun、蔡伟 等等。当然还有更多这里没有列全的朋友们的热心帮忙,在此一并表示感谢! +\footnote{\url{http://bbs.ctex.org/forum.php?mod=viewthread&tid=152663&extra=page\%3D3}} 对本宏包非常有帮助)、chinatex(china tex版主,给了很多建议和帮助,并且一起合作)、Sheng wenbo(biblatex用户手册合作译者,LaTeX2e 插图指南第三版译者,我们一起翻译的过程相互激励相互促进)、zepinglee(gbt7714-2015 bst样式作者,给了很多建议和讨论)、Harry Chen(ctex 维护者,给了不少好的建议)、liubenyuan(关于项目组织给出了很好的建议)、刘小涛(讨论了关于zotero的使用并提出了建议)、ghiclgi(讨论了GB中作者年制标注标签的一些问题)、秀文工作组、leipility、qingkuan、湘厦人、秋平、任蒲军、fredericky123、qiuzhu、chaoxiaosu、Old Jack、Wu Nailong、Yibai Zhang、wayne508、 钟乙源、Xiaodong Yao、dsycircle、rpjshu、zjsdut、谢澜涛、Zutian Luo、海阔天空、zzqzyx、程晨、xmtangjun、蔡伟 等等。当然还有更多这里没有列全的朋友们的热心帮忙,在此一并表示感谢! \section{存在的问题和下一步工作} @@ -2121,7 +2366,7 @@ texlive2017对应biblatex3.7; \begin{enumerate} %\item 当作者多于3个需要添加等或et al.时,如果作者的姓名是用\{\}包起来的,可能判断会出错。 - %这个问题已经解决了,本来在\testCJKfirst中如果单靠edef加expandafter组合,无法处理带编组的字符流。所以考虑利用xstring 宏包的\exploregroups函数来,提取字符到命令中,这一就能真正的获得域中的第一个字符,而不会把一个编组当成一个字符进行判断。2016-1223,详见修改历史1.0e中的说明。 + %这个问题已经解决了,本来在\testCJKfirst中如果单靠edef加expandafter 组合,无法处理带编组的字符流。所以考虑利用xstring 宏包的\exploregroups函数来,提取字符到命令中,这一就能真正的获得域中的第一个字符,而不会把一个编组当成一个字符进行判断。2016-1223,详见修改历史1.0e中的说明。 %\item 顺序年制中当不存在著者信息时,如果用佚名或者no author,本样式文件中没有实现。怎么在数据进来后,给一些域添加信息?在biber处理过程中根据一些判断添加信息?(著者年制,没有作者,用佚名,英文怎么办?没有年怎么办?) %这个问题解决了,2016-1114 @@ -2148,7 +2393,7 @@ texlive2017对应biblatex3.7; %1.0g版增加对mastersthesis,phdthesis,www,electronic,standard,techreport,conference,newspaper等条目类型的兼容,增加了对标准样式standard.bbx中url包选项的兼容性,增加了析出文献标识符//后面的短空格以支持著录表的断行机制,增加了特殊字符处理功能并实现对texlive2015 的兼容,给出了gb7714风格参考文献著录表文本转换为bib文件的perl脚本,与gb7714-2015 样式形成闭环。 - %1.0f版完善了align 选项(用于实现GB7714 风格的著录文献表标签,texlive2016 有效),带花括号的责任者的中英文判断等功能对texlive2015 的兼容性。 + %1.0f版完善了gbalign 选项(用于实现GB7714 风格的著录文献表标签,texlive2016 有效),带花括号的责任者的中英文判断等功能对texlive2015 的兼容性。 %到1.0e版为止,功能需求已经完全实现,剩下的问题可能是一些文献具有特殊信息或者特殊情况时带来的适应性问题,这需要经过大量的测试来发现问题。各位朋友如果发现什么问题,请邮件联系,作者会非常感谢! @@ -2160,1040 +2405,9 @@ texlive2017对应biblatex3.7; \end{enumerate} \section{更新历史} -%============================ -\updateinfo[2017-11-21]{update to version 1.0i}\label{up:171121} -\begin{enumerate} -\item 因为biblatex版本升级,3.8及以上版的set类型不再复制第一个子条目的信息,因此增加使用关联条目的解决方案,详见 -\ref{sec:multilan:implement}, \ref{sec:data:mdf:forrelated}节。 -\item 修正了一个liubenyuan发现的bug。当标题中含有\verb|\LaTeX{}|这样的宏时,cjk判断函数出错。解决如下: - \begin{texlist} - 这个问题是这样的, - 因为在cjk判断函数中,使用了xtring的StrChar函数来抽取字符,但这个函数默认情况下需要其参数完全展开。因为\LaTeX{}宏比较复杂,展开时会出现问题。设置该函数不展开或展开一次,都可以解决判断出错的问题。比如: - - \expandarg - % - \StrChar{english}{1}[\tempa]% - \tempa - - \StrChar{中文}{1}[\tempa]% - \tempa - - \StrChar{english \LaTeX{} abc}{1}[\tempa]% - \tempa - - 但解决的是直接给出文本的情况,在biblatex使用中需要用\thefield取出文本,显然\thefield不止展开一次,因此不展开或者展开一次,都会出现问题,所以无解。只能从另外一个角度出发。 - - 考虑到动态数据修改时,也可以利用正则表达式抽取数据,因此利用它来将title信息的第一个非特殊符号字符抽取出来,放到userd中用于cjk判断,这样就避开了\LaTeX{}展开的问题。 - \end{texlist} - -\item 针对biblatex3.8a的更新做了兼容性处理,主要是修改版本判断和处理机制,替换新的宏包选项,替换新的排序格式命令。详见第\ref{sec:blx:compatibility}节 - -\item 重写了范围解析函数,详见\ref{sec:cjkjudge}节 - -\end{enumerate} - -\updateinfo[2017-04-11]{update to version 1.0h}\label{up:170411} -\begin{enumerate} -\item texlive2017中biblatex3.7对于authoryear样式中的date+extrayear宏有一定的修改,从原来texlive2016中的命令printdateextralabel 转换到了printlabeldateextra。因此做一个修改。 - \begin{texlist} - %设置因为mergedate默认为true时的情况,来自\bbx@opt@mergedate@compact -%去掉作者后面包围年份的圆括号 -%这里因为biblatex版本的不同,做不同的处理,texlive2017版的在iftexliveseven=true中设置 -%2016等低版本的在iftexliveseven=false中设置 -%重设date+extrayear格式,源来自authoryear.BBX -\iftoggle{iftexliveseven}{% - \renewbibmacro*{date+extrayear}{% - \iffieldundef{labelyear} - {} - {\printtext{%[parens]%这里把括号去掉 - \iffieldsequal{year}{labelyear} - {\printlabeldateextra}% - {\printfield{labelyear}% - \printfield{extrayear}}}}}% -}{% -\renewbibmacro*{date+extrayear}{% - \iffieldundef{\thefield{datelabelsource}year} - {} - {\printtext{%[parens]%这里把括号去掉 - \iffieldsequal{year}{\thefield{datelabelsource}year} - {\printdateextralabel}% - {\printfield{labelyear}% - \printfield{extrayear}}}}}% -} - \end{texlist} - - 当然其实这还有更简单的解决方法就是: - \begin{texlist} - \let\printdateextralabel=\printlabeldateextra - \end{texlist} - 这个方式似乎有点问题。 - -\item 根据同学(zjsdut@163.com)发现的问题,修改一个bug,感谢。当online类型仅有url 信息时,url前面多了一个点。这是modifydate宏设计中printtext位置导致标点异步处理机制失效所产生现象。因此作出修改,newbibmacro*\{modifydate\}宏详见\ref{sec:date:fmt}节。 - - -\item 增加一个选项gbnoauthor。当给出选项gbnoauthor=true时,作者年制中当作者缺省时,使用佚名或noauthor代替,即将佚名或noauthor作为作者处理。默认情况下gbnoauthor=true不处理,即当无作者进行处理,选择增加的代码详见\ref{sec:blx:compatibility}节。同时也修改了中英文排序判断和佚名代替的机制。 - \begin{texlist} - \map{%因为无法进行cjk字符判断,所以用反的思路,判断没有英文字符,没有空格,没有逗号等字符情况下 - %认为是中文的,将文献userb设置成cn,用于排序 - \step[fieldsource=author,match=\regexp{[^a-zA-Z\s\.\,\'\{\}\-\:0-9]},final] - \step[fieldset=userb,fieldvalue={cn}] - } - \map{%因为无法进行cjk字符判断,所以用反的思路,判断没有英文字符,没有空格,没有逗号等字符情况下 - %认为是中文的,将文献userb设置成cn,用于排序 - \step[fieldsource=title,match=\regexp{[^a-zA-Z\s\.\,\'\{\}\-\:0-9]},final] - \step[fieldset=userb,fieldvalue={cn}] - }%如果没有作者和标题,那么剩下的最可能有意义的只有网址了,而网址通常是英文的,因此不用再进一步对其它域进行判断了。 - \map{%将没有设置的userb设置成en,即认为不是中文的就是英文的。 - \step[fieldset=userb,fieldvalue={en}] - } - \end{texlist} - - \begin{texlist} - \def\dealnoathor{ - \DeclareStyleSourcemap{ - \maps[datatype=bibtex]{ - \map{%默认情况下将空缺作者设置为佚名 - \step[fieldsource=userb,match={cn},final] - \step[fieldset=author, fieldvalue={佚名}] - } - \map{%默认情况下将空缺作者设置为佚名 - \step[fieldsource=userb,match={en},final] - \step[fieldset=author, fieldvalue={NOAUTHOR}] - } - } - }} - \end{texlist} - - 下面是已经取消的以前的处理方式: - \begin{texlist} - \map{%默认情况下将空缺作者设置为佚名 - \step[fieldset=author, fieldvalue={佚名}] - } - \map[overwrite]{%当标题带有英文字符,且作者为佚名的情况,设置作者为noauthor, - %也有一些特殊情况可能处理不到,比如标题中英混合,作者又却是 - \step[fieldsource=title,match=\regexp{[a-zA-Z]},final] - \step[fieldsource=author,match=\regexp{佚名}, replace={NOAUTHOR}] - } - \map{%因为无法进行cjk字符判断,所以用反的思路,判断没有英文字符,没有空格,没有逗号等字符情况下 - %认为是中文的,将文献userb设置成cn,用于排序 - \step[fieldsource=author,match=\regexp{[^a-zA-Z\s\.\,\'\{\}\-]},final] - \step[fieldset=userb,fieldvalue={cn}] - } - \map{%将没有设置的userb设置成en,即认为不是中文的就是英文的。 - \step[fieldset=userb,fieldvalue={en}] - } - \end{texlist} - - -\item 修改多语言参考文献间的分割符号,即将par改为newline,避免采用gb7714-2015的项对齐方式时,不同语言的参考文献间的分段导致没有缩进。(测试结果见:\ref{sec:align:test}节的项对齐方式) - - \begin{texlist} - %\renewcommand*{\entrysetpunct}{\adddot\par\nobreak} - \renewcommand*{\entrysetpunct}{\adddot\newline\nobreak} - \end{texlist} - -\item Zeping Lee兄发现了一个小问题,感谢,一直没有注意到这个问题。这里做出修改:主要是作者年制中,期刊析出的文献中,当卷信息不存在时,期刊名和期是连在一起的,而不是中间有个逗号,例如GB/T 7714-2015 中第10.2.4 节中的“刘彻东条目”。主要修改如下(结果测试见:\ref{sec:article:novol}节): - - \begin{texlist} - %调整期刊名的格式,源来自standard.bbx - \renewbibmacro*{journal+issuetitle}{% - \usebibmacro{journal}% - %\setunit*{\addspace}% - %\setunit*{\addcomma\addspace}%修改为增加一个逗号 - \iffieldundef{series}% - {}% - {\newunit% - \printfield{series}% - \setunit{\addspace}}% - %\usebibmacro{volume+number+eid}% - %\setunit{\addspace}% - \usebibmacro{issue+date}% - %\setunit{\addcolon\space}% - %换成逗号和空格 - \usebibmacro{issue}% - \iffieldundef{volume}{}{\setunit{\addcomma\space}}% - \usebibmacro{volume+number+eid}%把卷期放到年份后面 - %\newunit - } - - %调整journal,首先判断子标题,然后在设置标点。避免直接设置标点后,当volume不存在是需要使用\nopuct去标点进而引入不必要的空格 - \renewbibmacro*{journal}{% - \iffieldundef{journaltitle}% - {}% - {\printtext[journaltitle]{% - \printfield[titlecase]{journaltitle}% - \iffieldundef{journalsubtitle}{}{\setunit{\subtitlepunct}% - \printfield[titlecase]{journalsubtitle}}}}} - - %调整issue+date,原在authoryear.BBX中\bbx@opt@mergedate@compact中定义 - %当issue存在时,才设置newunit。避免直接设置标点后,当volume不存在是需要使用\nopuct 去标点进而引入不必要的空格 - \renewbibmacro*{issue+date}{% - \iffieldundef{issue}% - {}% - {\printtext[parens]{\printfield{issue}}\newunit}} - - %增加一个number带括号的格式,避免使用mkbibparens而引入一个不必要的空格 - \DeclareFieldFormat{addnumflag}{% - \nobreak\printtext{(}\nobreak #1\nobreak\printtext{)}} - - %调整期刊卷和期的格式,源来自standard.bbx - \renewbibmacro*{volume+number+eid}{% - \printfield{volume}% - %\setunit*{\adddot}%去掉点号 - %\printfield{number}% - \iffieldundef{number}{}{\printfield[addnumflag]{number}}% - %\iffieldundef{number}{}{\printtext{\mkbibparens{\printfield{number}}}}% 增加一个圆括号 - \iffieldundef{eid}{}{% - \setunit{\addcomma\space}% - \printfield{eid}}} - \end{texlist} - -\item wayne508同学提出了一个需求,就是不希望使用出版项缺省时的默认处理,即不使用[出版地不详],[出版者不详],[S.l.],[s.n.]等填充,因此增加了一个宏包选项gbpub,当等于false时,去掉自动处理,使用biblatex的标准处理方式。增加选项代码见\ref{sec:blx:compatibility}节,下面给出的是具体的处理代码: - - \begin{texlist} - %出版社和地址的处理 - \newbibmacro*{location+institution+date}{% - \iftoggle{bbx:gbpub}% - {\testCJKfirst{\thefield{title}} - \iflistundef{location}{\iftoggle{ifCJKforgbt}{\printtext{[出版地不详]}}{\printtext{[S.l.\adddot]}}}% - {\printlist{location}}% - % \iflistundef{institution} - % {\setunit*{\addcomma\space}} - % {\setunit*{\addcolon\space}}% - % \printlist{institution}% - % \setunit*{\addcomma\space}% - \addcolon\addspace% - \iflistundef{institution}{% - \iftoggle{ifCJKforgbt}{\printtext{[出版者不详]}}{\printtext{\mkbibbrackets{s.n.}}}}% \bibstring{nopublisher}%[s.n.\adddot] - {\printlist{institution}}% - \setunit{\addcomma\addspace}% - %\usebibmacro{date}% - \printfield{year}% - \bibrangedash% - \iffieldundef{endyear}{}{\printfield{endyear}}% - \newunit}% - { \printlist{location}% - \iflistundef{institution}% - {\setunit*{\addcomma\space}} - {\setunit*{\addcolon\space}}% - \printlist{institution}% - \setunit*{\addcomma\space}% - \usebibmacro{date}% - \newunit}% - } - - \renewbibmacro*{publisher+location+date}{% - \iftoggle{bbx:gbpub}% - {\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 %去掉这个标点 - }% - {\printlist{location}% - \iflistundef{publisher} - {\setunit*{\addcomma\space}} - {\setunit*{\addcolon\space}}% - \printlist{publisher}% - \setunit*{\addcomma\space}% - \usebibmacro{date}% - %\newunit - }% - } - - \end{texlist} - - - - 下面这种处理方式是有问题的,即默认处理情况不是希望的true的情况,但如果给出宏包加载选项时没有问题的。因此采用上一种方式。 - \begin{texlist} - %\newtoggle{bbx:gbpub} - %\DeclareBibliographyOption[boolean]{gbpub}[true]{% - % \settoggle{bbx:gbpub}{#1}} - %这种机制的标识判断,能用于usemacro使用,域格式定义中,但无法用来定义macro - %定义宏和使用宏是两个不同的展开层级 - %\ExecuteBibliographyOptions{gbpub} - %但是使用这句默认设置可以用来定义macro - \DeclareBibliographyOption[bool]{gbpub}[true]{%应使用这种直接的机制 - \ifstrequal{#1}{true}{\pubaddmacroredefine}{}} - - %出版社和地址的处理 - %新增一个样式用于输出连续出版物的地址,单位,时间 - %类似\newbibmacro*{publisher+location+date} - \newbibmacro*{location+institution+date}{% - \printlist{location}% - \iflistundef{institution} - {\setunit*{\addcomma\space}} - {\setunit*{\addcolon\space}}% - \printlist{institution}% - \setunit*{\addcomma\space}% - \usebibmacro{date}% - \newunit} - %当没有出版社地址时,直接判断title的信息是否是中文,若为中文,则写出版地不详,否则用英文的字符表示。 - %事实上title对于每个文献来说是必须的,所以用它判断是最快的,而且一般标题和出版社的语言是一样的。 - \def\pubaddmacroredefine{% - \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 %去掉这个标点 - } - %新增一个样式用于输出连续出版物的地址,单位,时间 - %类似与上面的\newbibmacro*{publisher+location+date} - \newbibmacro*{location+institution+date}{% - \testCJKfirst{\thefield{title}} - \iflistundef{location}{\iftoggle{ifCJKforgbt}{\printtext{[出版地不详]}}{\printtext{[S.l.\adddot]}}}% - {\printlist{location}}% - % \iflistundef{institution} - % {\setunit*{\addcomma\space}} - % {\setunit*{\addcolon\space}}% - % \printlist{institution}% - % \setunit*{\addcomma\space}% - \addcolon\addspace% - \iflistundef{institution}{% - \iftoggle{ifCJKforgbt}{\printtext{[出版者不详]}}{\printtext{\mkbibbrackets{s.n.}}}}% \bibstring{nopublisher}%[s.n.\adddot] - {\printlist{institution}}% - \setunit{\addcomma\addspace}% - %\usebibmacro{date}% - \printfield{year}% - \bibrangedash% - \iffieldundef{endyear}{}{\printfield{endyear}}% - \newunit} - } - - - \end{texlist} - -\end{enumerate} - -%============================ -\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输出。代码详见\ref{sec:date:fmt}节。 - -\item 为方便bib文件生成,构建可以从gb7714-2015格式的参考文献表文本转bib文件的perl 程序,利用它可以批量解析参考文献信息并转换为bib数据源文件。详见:\href{run:./gb7714texttobib.pl}{gb7714texttobib.pl},测试文件见:\href{run:./gb7714texteg.dat}{gb7714texteg.dat}。 - -\item 在输出标识符的usera域格式中考虑标准样式的url选项,以便实现对是否打印url和urldate的控制。这个需求是Wenbo Sheng兄提出的,这里做出修改。 - \begin{texlist} - \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]//)加入一个不可断行短空格,使紧跟其后的单词能正确断行,当然也可以增加一个可断行的短空格addthinspace,方便直接在//后面断行。 - \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版本的不同分别进行处理。这个需求是湘厦人提出的,这里做出修改,详见\ref{sec:dynamic:modify}节。 - - -\end{enumerate} - -%============================ -\updateinfo[2016-12-31]{update to version 1.0f}\label{up:161231} -\begin{enumerate} -\item 利用biblatex提供的iffieldequalstr函数替换用于判断note域值等于new或standard 的函数,比如: -\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 版中无法实现。代码详见\ref{sec:blx:compatibility}节。 - -\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} 节。 - 修改代码如下: -\begin{texlist} -\DeclareBibliographyOption[string]{align}[right]{% -\ifstrequal{#1}{left}{\setalignleft}{} -\ifstrequal{#1}{gb7714-2015}{\setaligngbstyle}{} -} - -%修改序号标签格式为左对齐 -\def\setalignleft{\DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{##1}\hfill}} -%修改序号标签格式为以各条参文献为基础进行对齐的方式 -\def\setaligngbstyle{% -\def\blx@bibitem##1{% - \blx@ifdata{##1} - {\begingroup - \blx@getdata{##1}% - \blx@bibcheck - \iftoggle{blx@skipentry}{}{% - \blx@setdefaultrefcontext{##1}% - \global\let\blx@noitem\@empty - \blx@setoptions@type\abx@field@entrytype - \blx@setoptions@entry - \blx@thelabelnumber - \addtocounter{instcount}\@ne - \blx@initsep - \blx@namesep - \csuse{blx@item@\blx@theenv}\relax -% \blx@initsep %移动到上面去,恢复bibnamesep等的作用机制 -% \blx@namesep - \csuse{blx@hook@bibitem}% - \blx@execute - \blx@initunit - \blx@anchor - \blx@beglangbib - \bibsentence - \blx@pagetracker - \blx@driver\abx@field@entrytype - \blx@postpunct - \blx@endlangbib}% - \par\endgroup}%这里增加了一个\par - {}} -\newcommand{\itemcmd}{% -\settowidth{\lengthid}{[\printfield{labelnumber}]} -\addtolength{\lengthid}{\biblabelsep} -\setlength{\lengthlw}{\textwidth} -\addtolength{\lengthlw}{-\lengthid} -\addvspace{\bibitemsep}%恢复\bibitemsep的作用 -%\parshape 2 0em \textwidth \lengthid \lengthlw -\hangindent\lengthid -[\printfield{labelnumber}]\hspace{\biblabelsep}} -\newlength{\lengthid} -\newlength{\lengthlw} -\defbibenvironment{bibliography} -{\begingroup\setlength{\parindent}{0em}} -{\endgroup} -{\itemcmd}} -\end{texlist} - - -\item map中当有append选项时也需要overwrite选项,这不知道是不是texlive 2016 中biber 升级后的原因。之前使用texlive2015的时候没有问题。所以修改为: -\begin{texlist} -%*.bbx - \map{%将entrykey放入keywords中用于后期的使用 - \step[fieldsource=entrykey] - \step[fieldset=keywords, origfieldval] - } - \map[overwrite]{%这里还必须有overwrite,怎么之前会觉得没有问题呢,可能是之前版本拷错了,还是之前是texlive2015 变16后biber有了变化(2016-1207修改正确) - \step[fieldsource=note, final]%将note域信息复制给keywords,用于输出时容易区分标准和报纸 - \step[fieldset=keywords, fieldvalue={,}, append] - \step[fieldset=keywords, origfieldval, append] - } -\end{texlist} - -\item 顺序制中,出版项后没有日期的情况下,出现逗号这是有问题的,所以修改为: -\begin{texlist} -%gb7714-2015.bbx -%出版社和地址的处理,当没有出版社地址时 -%直接判断title的信息是否是中文,若为中文,则写出版地不详,否则用英文的字符表示。 -%事实上title对于每个文献来说是必须的,所以用它判断是最快的,而且一般标题和出版社的语言是一样的。 -\newbibmacro*{publisher+location+date}{% -\testCJKfirst{\thefield{title}}% -\testifnoteeqstd% -\iflistundef{location}{%\adddot -\iftoggle{ifnoteeqstandard}{}{% -\iftoggle{ifCJKforgbt}{\printtext{[出版地不详]}\addcolon\addspace}{\printtext{[S.l.\adddot]}\addcolon\addspace}}}% \bibstring{noaddress} -{\printlist{location}\addcolon\addspace}% -%\addcolon\addspace% -\iflistundef{publisher}{% -\iftoggle{ifnoteeqstandard}{}{% -\iftoggle{ifCJKforgbt}{\printtext{[出版者不详]}\setunit{\adddot\addspace}\setunit*{\addcomma\addspace}}% -{\printtext{\mkbibbrackets{s.n.}}\setunit{\adddot\addspace}\setunit*{\addcomma\addspace}}}}% -{\printlist{publisher}\setunit*{\addcomma\addspace}}%在这里修改使用了setunit命令,与ay.bbx统一。 -%\addcomma\addspace% -\usebibmacro{date}% - %\newunit %去掉这个标点 -} -\end{texlist} - -\item 当urldate域给出的信息不全时,比如只有年和月,而没有日,那么就需要进行判断,只输出存在的信息,因此对urldate域格式做修改,代码详见\ref{sec:date:fmt}节。 - - -\item 当责任者等需要判断中英文的信息是用编组符号包含的时候,原来的CJK判断函数会出现问题,所以利用xstring宏包做一定的修改,修改完成后可以应对信息中存在编组的情况,详见\ref{sec:cjkjudge}节。 -\end{enumerate} - -%============================ -\updateinfo[2016-11-24]{update to version 1.0d} -\begin{enumerate} -\item 用于usera域的gbtypeflag域打印格式,明明在aritle/book类中没有问题,但在beamer中就会出现问题,多出一个点了。到现在还没有搞明白怎么会多出点来,printtext命令明明没有输出点,不像S.l.还有一个点的输出,这里只有]符号,但就是多了一个点。从最后修改成功看,这里就是多了一个点,而且是literal period,所以后面的点无法覆盖它,所以需要先用adddot命令将其转换为缩写的点,而且似乎用isdot 也不行,其原因还得再分析分析。因此做如下修改: - -\begin{texlist} -%域格式修改 -\DeclareFieldFormat{title}{#1\adddot\addthinspace}% -\DeclareFieldFormat{journaltitle}{#1\isdot} -\DeclareFieldFormat%将期刊等文献的标题中原来带的引号去掉 - [article,patent,thesis,unpublished] - {title}{#1\adddot\addthinspace} -\DeclareFieldFormat%将期刊等文献的标题中原来带的引号去掉 - [inbook,incollection,inproceedings] - {title}{#1\nopunct\unspace} - -%同时移动title的micro的printtext[title]的括号范围: -%重设title的输出,将文献类型标识符输出出去,原输出来自biblatex.def文件 -\newbibmacro*{title}{% - \ifboolexpr{% - test{\iffieldundef{title}}% - and% - test{\iffieldundef{subtitle}}% - }% - {}% - {\printtext[title]{% - \printfield[titlecase]{title}% - \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题 - {}{\setunit{\subtitlepunct}% - \printfield[titlecase]{subtitle}}% - \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% - }% - \iffieldundef{booktitle}{\newunit}{}%当title是析出时,不要标点 - %\newunit - }%将\printtext[title]的结束编组放到这里来。 -}% -} -\end{texlist} - -还需要注意的是如果gbtypeflag域格式中不直接输出[],而用mkbibbrackets也能解决这些个问题,但是会因为ctex对于中英文间空格的的默认处理加入空格,所以只能采用上面的方式。 - -还有beamer类中很多不同域之间的空格似乎比其它类中更宽,不知道原因,难道是beamer重新定义了\textbackslash space命令? - -\item 在参考文献表中加入逐字文本(原样文本,如实文本),也就是直接插入文本信息,或者用printtext插入都会导致一些问题,上面的第1点就是典型问题之一,还比如出版项缺省等问题。在有利用printtext 插入原样文本的时候,要特别注意在driver中该命令前后几行的代码后加注释,否则容易带入空格,注释后就可以消除。 - -\item 同样的periodical条目类型的title输出也修改了printtext[title]的结束编组位置。journaltitle域格式也加了isdot。patent 的title 也修改了printtext[title]的结束编组位置。 - -\item 修改了location+institution+date的s.n.的处理方式与publisher+location+date的方式类似。中英文判断也往外放到一层,与publisher+location+date一致,这样就不会出现不判断的问题。 - -\item 3.3版以后的family-given格式的given name用全大写代替首字母大写。 -\end{enumerate} - - -%============================ -\updateinfo[2016-11-14]{update}\label{up:20161114} -\begin{enumerate} -\item 很早之前思考的利用biber的动态修改数据功能来进行佚名问题处理是合理的,因为biblatex不能在tex处理过程中添加域的信息,所以任何要进入域的信息都需要在运行biber命令之时或者之前处理。利用正则表达式可以完成一定的区分,尽管可能有一些特殊情况无法涵盖,但如下的处理可以基本正确的实现功能。 -如果不需要用佚名的方式,那么只要把这段处理注释掉就可以了。 - -\begin{texlist} -\map{%因为要做佚名处理,所以这里先对有些只有编者而没有作者的情况进行处理 - step[fieldsource=editor] - \step[fieldset=author,origfieldval] - } -\map{%默认情况下将空缺作者设置为佚名 - \step[fieldset=author, fieldvalue={佚名}] - } -\map[overwrite]{%当标题带有英文字符,且作者为佚名的情况,设置作者为noauthor, - %也有一些特殊情况可能处理不到,比如标题中英混合,作者又却是 - \step[fieldsource=title,match=\regexp{[a-zA-Z]},final] - \step[fieldsource=author,match=\regexp{佚名}, replace={NOAUTHOR}] - } -\end{texlist} - -\item 关于文种分集排序的问题,之前要求用户自己往userb域填信息,现在通过如下处理,可以避免,也是用的正则表达式判断,但有些特殊情况可能会有问题,出现问题的话,手动在bib源文件中添加userb域信息是可以解决的。到这里为止,在使用本样式文件时,除了必须要输入的引文的信息外,其它信息都不需要再输入了,包括原来就已经处理的usera域(用于添加文献类型标识符的),这里的userb域用于文种分集排序的,都不必输入了。 - -\begin{texlist} -\map{%将entrykey放入keywords中用于后期的使用 - \step[fieldsource=entrykey] - \step[fieldset=keywords, origfieldval] - \step[fieldsource=note,final]%将note域信息复制给keywords,用于输出时容易区分标准和报纸 - \step[fieldset=keywords, fieldvalue={,},append] - \step[fieldset=keywords, origfieldval,append] - } -\map{%因为无法进行cjk字符判断,所以用反的思路,判断没有英文字符,没有空格,没有逗号等字符情况下 - %认为是中文的,将文献userb设置成cn,用于排序 - \step[fieldsource=author,match=\regexp{[^a-zA-Z\s\.\,\'\{\}]},final] - \step[fieldset=userb,fieldvalue={cn}] - } -\map{%将没有设置的userb设置成en,即认为不是中文的就是英文的。 - \step[fieldset=userb,fieldvalue={en}] - } -\end{texlist} - -\item 增加了一个yearpagescite命令用于处理: 作者年制文中已有作者只需要年份和页码的情况,而顺序制的情况下该命令与pagescite命令作用相同。其使用方式如下: - -\begin{texlist} -%使用方式: -见赵耀东\yearpagescite[][205]{赵耀东1998--}和Simon\yearpagescite[][15]{Simon2001--}的文献。 - -%增加的命令: -%*2015ay.cbx中: -%增加一个命令yearpagescite用于当文中作者已经存在,需要页码和年份的情况。 -%参考来源,biblatex.DEF,其中\DeclareCiteCommand*{\citeyear}命令 -\DeclareCiteCommand{\yearpagescite} - {\printtext{(}\usebibmacro{prenote}} - {\printfield{year}\printfield{extrayear}} - {\multicitedelim} - {\printtext{)}\textsuperscript{\usebibmacro{postpages}}} -%*2015.cbx中: -%增加一个命令yearpagescite为与ay样式兼容,命令等同于\pagescite -\DeclareCiteCommand{\yearpagescite}[\mkbibsuperscript]%\mkbibbrackets,仍然用上标 - {[\usebibmacro{cite:init}% - \usebibmacro{prenote}% - } - {\usebibmacro{citeindex}% - \usebibmacro{cite:comp}} - {} - {\usebibmacro{cite:dump}]% - \usebibmacro{postpages}} -\end{texlist} - -\item 在出版者缺省的情况下,当出版者后面没有更多信息的情况下,缺省字符串后面应该有一个点,因此做出修正为: -\begin{texlist} -%出版社和地址的处理,当没有出版社地址时 -%直接判断title的信息是否是中文,若为中文,则写出版地不详,否则用英文的字符表示。 -%事实上title对于每个文献来说是必须的,所以用它判断是最快的,而且一般标题和出版社的语言是一样的。 -\newbibmacro*{publisher+location+date}{% -\iffieldundef{title}{}{\testCJKfirst{\thefield{title}}}% -\testifnoteeqstd% -\iflistundef{location}{%\adddot -\iftoggle{ifnoteeqstandard}{}{% -\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}{}{% -\iftoggle{ifCJKforgbt}{\printtext{[出版者不详]}\setunit{\adddot\addspace}\setunit*{\addcolon\addspace}} -%\mkbibbrackets -%{\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% -%\usebibmacro{date}% -%\newunit %去掉这个标点 -} -\end{texlist} - - -\item 反向链接,backref的格式并没有要求,但考虑到中文环境还是将其格式改一下,因此修改英文本地化字符串为“引用页”。 -\begin{texlist} -\DefineBibliographyStrings{english}{ -bibliography = {参考文献}, -references = {参考文献}, -%bytranslator= {\addcomma\ 译\adddot}, %将trans. by 改成 译 -bytranslator= {\addcomma\ 译},%\addperiod -and = {\addcomma},%将第2和3人名见的and符号改成 逗号,用\finalnamedelim命令也可以定义,参见3.9.1节 -%andothers = {et al.}, %将超过3个人名的省略,et al.改成为 等 -andotherscn = {等}, %将超过3个人名的省略,et al.改成为 等 -noaddress = {[S.l.]}, -nopublisher = {[s.n.]}, -backrefpage = {引用页:}, -backrefpages = {引用页:}, -} -\end{texlist} - -\item 在处理姓名相关的问题时,利用DeclareNameFormat的方式控制需要的姓和名的前后顺序,当maxbibnames和maxcitenames不一致时,可能用到last-first/first-last(biblatex3.2以前的版本)/family-given/given-family(3.3以后版本),其中第一个姓名和后面姓名的姓和名的前后顺序时不同的。可以直接利用其中的name:first-last和name:last-first或name:family-given和name:given-family宏做修改控制具体姓名成分的格式,而避免重定义DeclareNameFormat格式,详见\ref{sec:name:fmt:out}节。 - -\item 作者年制区分文献表和引用中的作者名数量,引用相关的选项设置需要放到cbx 文件中,否则可能失效。同时因为一些特殊情况下,姓名数量截短为1个的引用标签,可能无法区分文献,所以默认情况下,biblatex会增加作者数量用于区分,这是因为uniquelist会自动重设maxcitenames和mincitenames,因此修改uniquelist选项为minyear,明确在年份也一样的情况下再利用增加姓名进行区分。*ay.bbx文件中的选项设置为: -\begin{texlist} -\ExecuteBibliographyOptions{ - useprefix = true, %名字的信息包括前缀 - %firstinits = true, %名字有缩写,参考3.1.2.3 Internal - giveninits = true, - date = year, %日期仅写到年 - %maxnames = 3 , %设置名字最大数量 - %minnames = 3, %设置缩减后的名字最小数量 - maxbibnames=3, %将文献列表和引用中最大名字数量区分开 - minbibnames=3, -} -%biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 -\ExecuteBibliographyOptions{ - useprefix = true, %名字的信息包括前缀 - firstinits = true, %名字有缩写,参考3.1.2.3 Internal - date = year, %日期仅写到年 - %maxnames = 3 , %设置名字最大数量 - %minnames = 3, %设置缩减后的名字最小数量 - maxbibnames=3, %将文献列表和引用中最大名字数量区分开 - minbibnames=3, -} -\end{texlist} - -*ay.cbx文件中的选项设置为: -\begin{texlist} -\ExecuteBibliographyOptions{ - %autocite = superscript , - %autopunct = true , - %sorting = none , - maxcitenames=1, - mincitenames=1, - uniquename=init,%因为使用了名字缩写选项,所以需要设置uniquename=init 而不是full 避免冲突 - labeldate=true, - uniquelist=minyear, -} -\end{texlist} -\end{enumerate} - -%============================ -\updateinfo[2016-11-11]{update} -\begin{enumerate} -\item 说明文档增加了版本和修改时间信息,修正了一些错误和不妥的说法,增加了一些说明比如报纸版次,报告条目域格式等,去掉一些不必要的注释,简化各样式文件内容。 - -\item 由Harry Chen提议,将english本地化文件中的参考文献标题信息改为中文的,因为本样式多在中文环境下使用,修改为中文后,printbibliography命令中不提供title信息的情况下,参考文献列表标题默认为参考文献。感谢Harry Chen在github上的commit! -修改如下: -\begin{texlist} -\DefineBibliographyStrings{english}{ -bibliography = {参考文献}, -references = {参考文献}, -%bytranslator= {\addcomma\ 译\adddot}, %将trans. by 改成 译 -bytranslator= {\addcomma\ 译},%\addperiod -and = {\addcomma},%将第2和3人名见的and符号改成 逗号,用\finalnamedelim命令也可以定义,参见3.9.1节 -%andothers = {et al.}, %将超过3个人名的省略,et al.改成为 等 -andotherscn = {等}, %将超过3个人名的省略,et al.改成为 等 -noaddress = {[S.l.]}, -nopublisher = {[s.n.]} -} -\end{texlist} - - -\item 当作者名只有一个,但又有and others表示多个作者的时候,标准样式中作者名和et al.之间是空格而不是逗号链接,但gb7714-2015要求在等之前用逗号,所以做出修改如下。 - -\begin{texlist} -%判断作者或译者是否中文,若中文用字符等,否则用etcl。 -\newbibmacro*{name:andothers}{% - \ifboolexpr{% - test {\ifnumequal{\value{listcount}}{\value{liststop}}} - and - test \ifmorenames - }% - {%这里做一个判断是在处理author还是translator用于两者是不同语言的情况 - \ifcurrentname{translator}{\testCJKfirst{\thefield{usere}}}{\testCJKfirst{\thefield{userf}}}% - %这句判断如果放到\andothersdelim后面会在等或etc.前增加一个空格,所以放前面 - \ifnumgreater{\value{liststop}}{1}% - {\finalandcomma}% - {\finalandcomma}%biblatex作者要区别单作者加等的情况,这里为符合gbt7714-2015第7.2节的要求加上了逗号。 -\andothersdelim\iftoggle{ifCJKforgbt}{\bibstring{andotherscn}}{\bibstring{andothers}}% -%\andothersdelim\bibstring{andotherscn} -}% -{}} -\end{texlist} - -\item 给report和manual驱动添加了译者域,这在实际中是用的到的,同时打印version域的格式也做了处理,并且修改中文判断函数,增加了注释符以避免带入空格,这个问题在之前体现为版本域前多了一个空格。 -\begin{texlist} -%对version的版本信息做出修改,源来自biblatex.DEF -\DeclareFieldFormat{version}{% -\testCJKfirst{\thefield{title}}% -\ifinteger{#1}% -{\iftoggle{ifCJKforgbt}{\printtext{#1版}}% -{\mkbibordedition{#1}~\bibstring{version}}}% -{#1\isdot}} -\end{texlist} - -\item 把作者年制的参考文献列表和引用中的作者名数量做区分。列表中最大为3个,引用中最大为1个。 -(这里还有点问题,进一步修改见2016-11-14的更新。) -\begin{texlist} -%%biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 -%\ExecuteBibliographyOptions{ -% useprefix = true, %名字的信息包括前缀 -% %firstinits = true, %名字有缩写,参考3.1.2.3 Internal -% giveninits = true, -% date = year, %日期仅写到年 -% %maxnames = 3 , %设置名字最大数量 -% %minnames = 3, %设置缩减后的名字最小数量 -% maxbibnames=3, %将文献列表和引用中最大名字数量区分开 -% minbibnames=3, -% maxcitenames=1, -% mincitenames=1 -% %uniquename = init -%} -% -%%biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 -%\ExecuteBibliographyOptions{ -% useprefix = true, %名字的信息包括前缀 -% firstinits = true, %名字有缩写,参考3.1.2.3 Internal -% date = year, %日期仅写到年 -% %maxnames = 3 , %设置名字最大数量 -% %minnames = 3, %设置缩减后的名字最小数量 -% maxbibnames=3, %将文献列表和引用中最大名字数量区分开 -% minbibnames=3, -% maxcitenames=1, -% mincitenames=1 -% %uniquename = init -%} -\end{texlist} -\end{enumerate} - -%============================ -\updateinfo[2016-10-22]{update} -\begin{enumerate} -\item 修改版本判断机制,版本3.3以后的版本设置判断标签iftexlivesix为真,采用新的姓名处理机制。 -修改如下: -\begin{texlist} -\providetoggle{iftexlivesix} -%\def\versionstr{3.4} -%\def\versionstra{3.6} -%\ifx\abx@version\versionstr -%\toggletrue{iftexlivesix} -%\else -%\ifx\abx@version\versionstra -%\toggletrue{iftexlivesix} -%\else -%\togglefalse{iftexlivesix} -%\fi -%\fi -%改变版本判断机制,根据biblatex更新历史可知,版本3.3开始使用新的姓名处理机制 -%所以当版本大于3.2开始,就用设置\toggletrue{iftexlivesix} -\def\numparserta#1.#2\relax{#1}%注意relax的重要性 -\def\numparsertb#1.#2\relax{#2} -\def\numinteger{\expandafter\numparserta\abx@version\relax} -\def\numdigital{\expandafter\numparsertb\abx@version\relax} -\ifnumcomp{\numdigital}{>}{2}{\toggletrue{iftexlivesix}}{\togglefalse{iftexlivesix}} -\end{texlist} -\end{enumerate} - -%============================ -\updateinfo[2016-10-11]{update} -\begin{enumerate} -\item 真的是需求推动事物发展,秋平同学提出需要把顺序编码制的参考文献序号标签设为左对齐。 -于是可以做如下修改。需要用的可以把下面这段加进gb7714-2015.bbx中,不需要的就不用任何处理, -左对齐还是右对齐其实还是看个人喜好,我其实觉得右对齐挺好的。 -\begin{texlist} - %修改序号标签格式为左对齐,注意各参考文献内容还是对齐的, - %这样就会使得序号标签与参考文献内容的间隔增大,这个问题是没有办法解决的 - %因为采用list做具有一定宽度的序号标签,\labelwidth只能设置一个,且是最宽的标签的宽度 - %但总的来说参考文献内容对齐是合理和漂亮的, - %而标签则只能对齐一个方向,要么左对齐要么右对齐,看个人选择了。 - %\DeclareFieldFormat{shorthandwidth}{\mkbibbrackets{#1}} %源来自numeric.BBX - \DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{#1}\hfill} -\end{texlist} - -\item 测试了老电脑装的texlive2014,没有问题通过。 -\end{enumerate} - -%============================ -\updateinfo[2016-10-04]{update} -\begin{enumerate} -\item 今天广州的秋平同学使用更新后的biblatex3.6版出错。是因为bbx文件中的版本判断只有3.4和其它,所以应急加了一段对于3.6 的判断。这个问题以后可能还会出现因为biblatex会不断的更新,所以需要设计一个更合理的判断,这个等实现以后再更新。 - -\item 在说明文档中增加了一些说明,修改了一些错别字。 -\end{enumerate} - -%============================ -\updateinfo[2016-07-20]{update} -\begin{enumerate} -\item 去掉texlive2016和texlive2015选项,直接根据biblatex宏包的版本进行判断。 - -\item 增加了unpublished条目类型驱动,并按报告report进行处理,但文献标识码用Z表示。 -\end{enumerate} - -%============================ -\updateinfo[2016-07-01]{update} -\begin{enumerate} -\item 增加了pagescite命令,实现GB/T7714-2015对于引用标注中输出页码的特殊格式要求。 - -\item 测试了texlive2015,texlive2016,发现其中关于名字域格式的差异,并作出修改。增加了两个宏包选项,一个是texlive2016,另一个是texlive2015。使用texlive2016版本时,带选项texlive2016即可,其它情况带选项texlive2015 -\end{enumerate} - -%============================ -\updateinfo[2016-06-20]{update} -\begin{enumerate} -\item 利用判断CJK字符的函数,判断条目中著者,译者域是否是CJK字符,做相应的处理。 - -\item 利用范围解析函数,可对卷期等进行解析,并按GB/T7714-2015要求输出。 -\end{enumerate} - -%============================ -\updateinfo[2016-05-20]{update} -基本完成样式文件,实现的功能包括: -\begin{enumerate} -\item 实现GB/T7714-2015要求的参考文献著录格式。 - -\item 利用map功能使录入参考文献数据时不需要文献类别标识符。 - -\item 多语言文献的处理方法和条目格式。 -\end{enumerate} +\input{example/updatehistory.tex} % +\input{example/updatehistoryold.tex} % 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 bb37955e3f8..f74cf4ee7b1 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 @@ -254,7 +254,7 @@ itemsep=0pt,leftmargin=2em,itemindent=0em}%注意,font或format中的最后一 \makeatother \usepackage{filecontents} -\begin{filecontents}{egspecialchar.bib} +\begin{filecontents}{example/egspecialchar.bib} @Inproceedings{ref-replace-char, Title = {Cognitive Radio and Cooperative Strategies for Power Saving in Multi-Standard Wireless Devices}, Address = { Florence, Italy}, diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf Binary files differindex eae447a4c09..1fc800cfc8a 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.tex index 786e92a37c4..f0ff6a506bf 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 @@ -1,6 +1,5 @@ \documentclass[11pt]{article} %用draft选项找到badbox的位置 -\usepackage[backend=biber,bibstyle=gb7714-2015,%nature,% -citestyle=gb7714-2015%,backref=true%gb,gbt7714_2005_n, +\usepackage[backend=biber,style=gb7714-2015ay%,gbtype=true%,backref=true%gb,gbt7714_2005_n, ]{biblatex}%biber,caspervector \setlength{\bibitemsep}{2pt} %\defbibheading{bibliography}[\bibname]{% @@ -8,8 +7,8 @@ citestyle=gb7714-2015%,backref=true%gb,gbt7714_2005_n, %%\addcontentsline{toc}{subsection}{#1} % \subsubsection*{#1}}% \input{biblatex-gb7714-2015-preamble} %宏包和一些格式设置 -\addbibresource[location=local]{example.bib} -\addbibresource[location=local]{egspecialchar.bib} +\addbibresource[location=local]{example/example.bib} +\addbibresource[location=local]{example/egspecialchar.bib} \begin{document} diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015.pdf Binary files differdeleted file mode 100644 index 4e83df9824e..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015ay.jpg b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015ay.jpg Binary files differdeleted file mode 100644 index 95ee74bfac2..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015ay.jpg +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbeamer.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbeamer.pdf Binary files differdeleted file mode 100644 index 5c61f71720f..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbeamer.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbeameray.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbeameray.pdf Binary files differdeleted file mode 100644 index 80e0be79922..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbeameray.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbooksay.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbooksay.pdf Binary files differdeleted file mode 100644 index 053d127c4e1..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbooksay.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubfalse.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubfalse.pdf Binary files differdeleted file mode 100644 index 0b07eca9b90..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubfalse.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubfalseay.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubfalseay.pdf Binary files differdeleted file mode 100644 index 29d554366af..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubfalseay.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubfalseay.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubfalseay.tex deleted file mode 100644 index 15fb7b87b9d..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubfalseay.tex +++ /dev/null @@ -1,36 +0,0 @@ -\documentclass[twoside]{article} -\usepackage{ctex} -\usepackage{geometry} -\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} -\usepackage{xcolor} -\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} -\usepackage[backend=biber,style=gb7714-2015ay,gbpub=false]{biblatex}%align=gb7714-2015 -%\addbibresource[location=local]{egtest.bib} -\addbibresource[location=local]{example.bib} -\addbibresource[location=local]{egspecialchar.bib} -%\renewcommand{\bibfont}{\zihao{5}} -%\setlength{\bibitemsep}{0ex} -%\setlength{\bibnamesep}{0ex} -%\setlength{\bibinitsep}{0ex} -%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} - -\begin{document} - -%%%测试作者年/biblatex版本兼容性的文件 -%%%test file for author year style - -\section{文献表} -文献 -\cite{AAAS1883--} -\cite{陈志勇2011--} -\cite{萧钰2001--} -\cite{北京交通大学研究生公众号2016--} -\cite{赵学功2001--} - -{ -%\hyphenation{kurose-gawa} -%\hyphenpenalty=1000 -%\tolerance=500 -\printbibliography%[heading=subbibintoc,title=【参考文献】] -} -\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubtrue.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubtrue.pdf Binary files differdeleted file mode 100644 index 210d7a64912..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubtrue.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubtrueay.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubtrueay.pdf Binary files differdeleted file mode 100644 index 5397d9b3743..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubtrueay.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubtrueay.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubtrueay.tex deleted file mode 100644 index c0c30e7f51e..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubtrueay.tex +++ /dev/null @@ -1,36 +0,0 @@ -\documentclass[twoside]{article} -\usepackage{ctex} -\usepackage{geometry} -\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} -\usepackage{xcolor} -\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} -\usepackage[backend=biber,style=gb7714-2015ay,gbpub=true]{biblatex}%align=gb7714-2015 -%\addbibresource[location=local]{egtest.bib} -\addbibresource[location=local]{example.bib} -\addbibresource[location=local]{egspecialchar.bib} -%\renewcommand{\bibfont}{\zihao{5}} -%\setlength{\bibitemsep}{0ex} -%\setlength{\bibnamesep}{0ex} -%\setlength{\bibinitsep}{0ex} -%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} - -\begin{document} - -%%%测试作者年/biblatex版本兼容性的文件 -%%%test file for author year style - -\section{文献表} -文献 -\cite{AAAS1883--} -\cite{陈志勇2011--} -\cite{萧钰2001--} -\cite{北京交通大学研究生公众号2016--} -\cite{赵学功2001--} - -{ -%\hyphenation{kurose-gawa} -%\hyphenpenalty=1000 -%\tolerance=500 -\printbibliography%[heading=subbibintoc,title=【参考文献】] -} -\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egonline.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egonline.pdf Binary files differdeleted file mode 100644 index e761e59c393..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egonline.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egonlineay.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egonlineay.pdf Binary files differdeleted file mode 100644 index 6a6bab33add..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egonlineay.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egpatent.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egpatent.pdf Binary files differdeleted file mode 100644 index 8db55634ec3..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egpatent.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egpatentay.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egpatentay.pdf Binary files differdeleted file mode 100644 index fd785426a0a..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egpatentay.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egprcdorinprcday.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egprcdorinprcday.pdf Binary files differdeleted file mode 100644 index 3015018bd36..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egprcdorinprcday.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egtest.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egtest.pdf Binary files differdeleted file mode 100644 index 600562cd736..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egtest.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egtest.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egtest.tex deleted file mode 100644 index e99eccf1ab4..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egtest.tex +++ /dev/null @@ -1,48 +0,0 @@ -\documentclass[twoside]{article} -\usepackage{ctex} -\usepackage{geometry} -\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} -\usepackage{xcolor} -\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} -\usepackage[backend=biber,style=gb7714-2015ay,gbnoauthor=false]{biblatex}%align=gb7714-2015 -%\addbibresource[location=local]{egtest.bib} -\addbibresource[location=local]{example.bib} -\addbibresource[location=local]{egspecialchar.bib} -%\renewcommand{\bibfont}{\zihao{5}} -%\setlength{\bibitemsep}{0ex} -%\setlength{\bibnamesep}{0ex} -%\setlength{\bibinitsep}{0ex} -%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} - -\begin{document} - -%%%测试作者年/biblatex版本兼容性的文件 -%%%test file for author year style - -\section{文献表} -文献 -\cite{1962-50-50,2009-155-155} - -\cite{olnoauthorcn} -\cite{olnoauthoren} -\cite{Allianceurlonly} - -\cite{萧钰2001--} -\cite{李强2012-05-03--,Commonwealth--,HOPKINSON--,OCLC--} -\cite{傅刚2000--} -\cite{蔡敏2006--} -\cite{Saito2006-169-176} -\cite{CRAWFPRD1995--}\cite{Proakis2007--} -\cite{Giorgetti2005-1037-1042,Giorgetti2005-794-798} -\cite{Haemaelaeinen2002-1712-1721} -\cite{Oetiker2011--} -\cite{刘彻东1998-38-39} -\cite{Commonwealth--} - -{ -\hyphenation{kurose-gawa} -%\hyphenpenalty=1000 -%\tolerance=500 -\printbibliography%[heading=subbibintoc,title=【参考文献】] -} -\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egthesis.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egthesis.pdf Binary files differdeleted file mode 100644 index 04239308bc9..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egthesis.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egthesisay.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egthesisay.pdf Binary files differdeleted file mode 100644 index a9515d3f7c3..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egthesisay.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015.jpg b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egaligngb7714-2015.jpg Binary files differindex 21a71a85883..21a71a85883 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015.jpg +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egaligngb7714-2015.jpg diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egaligngb7714-2015.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egaligngb7714-2015.pdf Binary files differnew file mode 100644 index 00000000000..99d6fd1cb54 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egaligngb7714-2015.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egaligngb7714-2015.tex index afeb35e664b..2e3133f395f 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egaligngb7714-2015.tex @@ -4,24 +4,33 @@ \geometry{paperwidth=21cm,paperheight=20cm,top=1.5cm, bottom=1.5cm, left=1cm,right=1cm} \usepackage{xcolor} \usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} -\usepackage[backend=biber,style=gb7714-2015,align=gb7714-2015]{biblatex} +\usepackage[backend=biber,style=gb7714-2015,gbalign=gb7714-2015,gbnamefmt=pinyin]{biblatex} \addbibresource[location=local]{example.bib} %\renewcommand{\bibfont}{\zihao{5}} %\setlength{\bibitemsep}{0ex} %\setlength{\bibnamesep}{0ex} %\setlength{\bibinitsep}{0ex} +\iftoggle{iftleight}{\defdoublelangentry{易仕和2013--}{Yi2013--}}{} +\iftoggle{iftlnine}{\defdoublelangentry{易仕和2013--}{Yi2013--}}{} +\iftoggle{iftlatest}{\defdoublelangentry{易仕和2013--}{Yi2013--}}{} + \begin{document} +编译信息:biblatex v\versionofbiblatex;gb7714-2015*.* version number \versionofgbtstyle. \section{顺序编码制标注与著录样式} \defbibentryset{bilangzhang}{张敏莉2007-500-503,Zhang2007-500-503} -\defbibentryset{bilangyi}{易仕和2013--,Yi2013--} +%\defbibentryset{bilangyi}{易仕和2013--,Yi2013--} +双语文献:set动态方法\cite{bilangzhang}; +\iftoggle{iftleight}{related动态方法\cite{易仕和2013--}}{} +\iftoggle{iftlnine}{related动态方法\cite{易仕和2013--}}{} +\iftoggle{iftlatest}{related动态方法\cite{易仕和2013--}}{} + 文献\cite{王夫之1845--}\cite{陈建军2010-93-93}; 文献\parencite{张田勤2000--}\parencite{吴云芳2003--}; 文献\pagescite[][300]{汤万金2013-09-30--}\pagescite[][100-107]{张凯军2012-04-05--}; 文献\yearpagescite{萧钰2001--}\yearpagescite{国家环境保护局科技标准司1996-2-3}; -双语\cite{bilangzhang,bilangyi}; 其它\cite{Calkin2011-8-9,CRAWFPRD1995--,Babu2014--,CALMS1965--,DESMARAIS1992-605-609} \printbibliography[heading=subbibintoc,title=【参考文献】] diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egaligngb7714-2015ay.jpg b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egaligngb7714-2015ay.jpg Binary files differnew file mode 100644 index 00000000000..c44feb558c5 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egaligngb7714-2015ay.jpg diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015ay.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egaligngb7714-2015ay.pdf Binary files differindex 8af498c72ea..72fac7fba85 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015ay.pdf +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egaligngb7714-2015ay.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015ay.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egaligngb7714-2015ay.tex index a15e7154c89..034761b56c4 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egaligngb7714-2015ay.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egaligngb7714-2015ay.tex @@ -13,6 +13,7 @@ \iftoggle{iftleight}{\defdoublelangentry{易仕和2013--}{Yi2013--}}{} \iftoggle{iftlnine}{\defdoublelangentry{易仕和2013--}{Yi2013--}}{} +\iftoggle{iftlatest}{\defdoublelangentry{易仕和2013--}{Yi2013--}}{} \begin{document} @@ -21,6 +22,7 @@ 双语文献:set动态方法\cite{张敏莉,等,2007}; \iftoggle{iftleight}{related动态方法\cite{易仕和2013--}}{} \iftoggle{iftlnine}{related动态方法\cite{易仕和2013--}}{} +\iftoggle{iftlatest}{related动态方法\cite{易仕和2013--}}{} 文献\cite{王夫之1845--}\cite{陈建军2010-93-93}; 文献\parencite{张田勤2000--}\parencite{吴云芳2003--}; diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egalignleft.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egalignleft.pdf Binary files differindex e711b8654c0..543173d54d7 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egalignleft.pdf +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egalignleft.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egalignleft.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egalignleft.tex index be86c15a8f8..9f0edb382e9 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egalignleft.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egalignleft.tex @@ -4,7 +4,7 @@ \geometry{paperwidth=21cm,paperheight=12cm,top=1.5cm, bottom=1.5cm, left=1cm,right=1cm} \usepackage{xcolor} \usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} -\usepackage[backend=biber,style=gb7714-2015,align=left]{biblatex} +\usepackage[backend=biber,style=gb7714-2015,gbalign=left]{biblatex} \addbibresource[location=local]{example.bib} %\renewcommand{\bibfont}{\zihao{5}} %\setlength{\bibitemsep}{0ex} diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egalignright.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egalignright.pdf Binary files differindex 0fa2577c428..d40ed9bad2a 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egalignright.pdf +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egalignright.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egalignright.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egalignright.tex index b36a0a66f98..801099a3062 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egalignright.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egalignright.tex @@ -4,7 +4,7 @@ \geometry{paperwidth=21cm,paperheight=12cm,top=1.5cm, bottom=1.5cm, left=1cm,right=1cm} \usepackage{xcolor} \usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} -\usepackage[backend=biber,style=gb7714-2015,align]{biblatex} +\usepackage[backend=biber,style=gb7714-2015,gbalign]{biblatex} \addbibresource[location=local]{example.bib} %\renewcommand{\bibfont}{\zihao{5}} %\setlength{\bibitemsep}{0ex} diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egbeamer.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egbeamer.pdf Binary files differnew file mode 100644 index 00000000000..5f3a55ccaf8 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egbeamer.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbeamer.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egbeamer.tex index 6483ef2e077..602af754361 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbeamer.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egbeamer.tex @@ -6,7 +6,7 @@ \usepackage{xcolor} \usepackage{listings} -\usepackage[backend=biber,style=gb7714-2015]{biblatex} +\usepackage[backend=biber,style=gb7714-2015,gbtype=true,gbalign=gb7714-2015]{biblatex} \renewcommand{\bibfont}{\zihao{8}\songti} \addbibresource[location=local]{example.bib} @@ -28,19 +28,27 @@ Biblatex宏包使用和GB/T7714-2015参考文献样式} \begin{frame}{测试参考文献} \tiny 在脚注中引用或者把文献表放到脚注中 -\footnote{在脚注中引用\footcite{Saito2006-169-176}} -\footfullcite{中国职工教育研究会1985--} -\footfullcite{Fontana2002-309-313} -\footfullcite{Robertson2011--} +\footnote{在脚注中引用\footcite{张伯伟2002--}} \footfullcite{雷光春2012--} -\footfullcite{Humphrey1971--} +\footfullcite{汤万金2013-09-30--} \footfullcite{马欢2011-27-27} -\footfullcite{中国图书馆学会1957--} -\footfullcite{刘彻东1998-38-39} +\footfullcite{贾东琴2011-45-52} +\footfullcite{韩吉人1985-90-99} +\footfullcite{张凯军2012-04-05--} +\footfullcite{国家环境保护局科技标准司1996-2-3} +\footfullcite{白书农1998-146-163} +\footfullcite{杨洪升2013-56-75} +\footfullcite{中国职工教育研究会1985--} +\footfullcite{丁文祥2000--} +\footfullcite{李强2012-05-03--} +\footfullcite{中华医学会湖北分会1984--} \end{frame} \begin{frame}{参考文献} + +%\noindent\setlength{\parindent}{0pt} \printbibliography[heading=bibliography,title=参考文献] + \end{frame} diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egbeameray.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egbeameray.pdf Binary files differnew file mode 100644 index 00000000000..eb914595835 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egbeameray.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbeameray.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egbeameray.tex index 6b918677e2f..ca36db157d1 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbeameray.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egbeameray.tex @@ -28,15 +28,20 @@ Biblatex宏包使用和GB/T7714-2015参考文献样式} \begin{frame}{测试参考文献} \tiny 在脚注中引用或者把文献表放到脚注中 -\footnote{在脚注中引用\footcite{Saito2006-169-176}} -\footfullcite{中国职工教育研究会1985--} -\footfullcite{Fontana2002-309-313} -\footfullcite{Robertson2011--} +\footnote{在脚注中引用\footcite{张伯伟2002--}} \footfullcite{雷光春2012--} -\footfullcite{Humphrey1971--} +\footfullcite{汤万金2013-09-30--} \footfullcite{马欢2011-27-27} -\footfullcite{中国图书馆学会1957--} -\footfullcite{刘彻东1998-38-39} +\footfullcite{贾东琴2011-45-52} +\footfullcite{韩吉人1985-90-99} +\footfullcite{张凯军2012-04-05--} +\footfullcite{国家环境保护局科技标准司1996-2-3} +\footfullcite{白书农1998-146-163} +\footfullcite{杨洪升2013-56-75} +\footfullcite{中国职工教育研究会1985--} +\footfullcite{丁文祥2000--} +\footfullcite{李强2012-05-03--} +\footfullcite{中华医学会湖北分会1984--} \end{frame} \begin{frame}{参考文献} diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbooks.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egbooks.pdf Binary files differindex 3ddb6757912..bec81ef6e42 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbooks.pdf +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egbooks.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbooks.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egbooks.tex index 9729db20ca1..9729db20ca1 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbooks.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egbooks.tex diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egbooksay.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egbooksay.pdf Binary files differnew file mode 100644 index 00000000000..5c37425a52f --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egbooksay.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbooksay.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egbooksay.tex index 4ba118c480f..df7ab779393 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egbooksay.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egbooksay.tex @@ -5,7 +5,7 @@ \geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} \usepackage{xcolor} \usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} -\usepackage[backend=biber,style=gb7714-2015ay,gbpub=true,gbnoauthor=true]{biblatex}%align=gb7714-2015 +\usepackage[backend=biber,style=gb7714-2015ay]{biblatex}%align=gb7714-2015 %\addbibresource[location=local]{egtest.bib} \addbibresource[location=local]{example.bib} \addbibresource[location=local]{egspecialchar.bib} diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnamefmt.jpg b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnamefmt.jpg Binary files differnew file mode 100644 index 00000000000..12393130041 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnamefmt.jpg diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnamefmta.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnamefmta.pdf Binary files differnew file mode 100644 index 00000000000..cf021af2b2c --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnamefmta.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egpatentay.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnamefmta.tex index 69d77170b5f..74d20da9064 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egpatentay.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnamefmta.tex @@ -4,7 +4,7 @@ \geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} \usepackage{xcolor} \usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} -\usepackage[backend=biber,style=gb7714-2015ay,gbpub=true,gbnoauthor=true]{biblatex}%align=gb7714-2015 +\usepackage[backend=biber,style=gb7714-2015ay,gbpub=true,gbnamefmt=lowercase]{biblatex}%align=gb7714-2015 %\addbibresource[location=local]{egtest.bib} \addbibresource[location=local]{example.bib} \addbibresource[location=local]{egspecialchar.bib} @@ -21,7 +21,10 @@ \section{文献表} \begin{enumerate} - \item 专利引用\cite{KOSEKI2002--,TACHIBANA2002--,河北绿洲生态环境科技有限公司2001--,姜锡洲1989--,刘加林1993--,西安电子科技大学2002--,张凯军2012-04-05--} + \item 文献\cite{张伯伟2002--}\cite{CRAWFPRD1995--}\cite{陈志勇2011--}\cite{Babu2014--} +\cite{Calkin2011-8-9}\cite{吴云芳2003--}\cite{CALMS1965--}\cite{张凯军2012-04-05--}\cite{KOSEKI2002--} +\cite{楼梦麟2011-11-12}\cite{BUSECK1980-117-211} +\cite{DESMARAIS1992-605-609}\cite{张田勤2000--} \end{enumerate} { diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnamefmtb.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnamefmtb.pdf Binary files differnew file mode 100644 index 00000000000..e127c2c7ff3 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnamefmtb.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egthesis.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnamefmtb.tex index 31a355afd7e..4938c73e8de 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egthesis.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnamefmtb.tex @@ -4,7 +4,7 @@ \geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} \usepackage{xcolor} \usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} -\usepackage[backend=biber,style=gb7714-2015,gbpub=true]{biblatex}%align=gb7714-2015 +\usepackage[backend=biber,style=gb7714-2015ay,gbpub=true,gbnamefmt=none]{biblatex}%align=gb7714-2015 %\addbibresource[location=local]{egtest.bib} \addbibresource[location=local]{example.bib} \addbibresource[location=local]{egspecialchar.bib} @@ -21,7 +21,10 @@ \section{文献表} \begin{enumerate} - \item 学位论文引用\cite{CALMS1965--,马欢2011-27-27,吴云芳2003--,张若凌2004--,张志祥1998--} + \item 文献\cite{张伯伟2002--}\cite{CRAWFPRD1995--}\cite{陈志勇2011--}\cite{Babu2014--} +\cite{Calkin2011-8-9}\cite{吴云芳2003--}\cite{CALMS1965--}\cite{张凯军2012-04-05--}\cite{KOSEKI2002--} +\cite{楼梦麟2011-11-12}\cite{BUSECK1980-117-211} +\cite{DESMARAIS1992-605-609}\cite{张田勤2000--} \end{enumerate} { diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthortrue.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnoauthorfalse.pdf Binary files differindex 75128879143..8f10aa27be8 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthortrue.pdf +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnoauthorfalse.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthorfalse.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnoauthorfalse.tex index 2daf3c3fdae..2daf3c3fdae 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthorfalse.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnoauthorfalse.tex diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthorfalseay.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnoauthorfalseay.pdf Binary files differindex 9590895cc24..b2ff054bf31 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthorfalseay.pdf +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnoauthorfalseay.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthorfalseay.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnoauthorfalseay.tex index 5dd0048b5d7..5dd0048b5d7 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthorfalseay.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnoauthorfalseay.tex diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthorfalse.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnoauthortrue.pdf Binary files differindex 55c5cef0e24..b67703de2d8 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthorfalse.pdf +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnoauthortrue.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthortrue.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnoauthortrue.tex index 628b86a0247..628b86a0247 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthortrue.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnoauthortrue.tex diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthortrueay.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnoauthortrueay.pdf Binary files differindex 2de2b311a32..2c4a2dee70f 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthortrueay.pdf +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnoauthortrueay.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthortrueay.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnoauthortrueay.tex index 9b8984fa9a1..9b8984fa9a1 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbnoauthortrueay.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbnoauthortrueay.tex diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbpubfalse.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbpubfalse.pdf Binary files differnew file mode 100644 index 00000000000..420cb81eea9 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbpubfalse.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubfalse.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbpubfalse.tex index 396c91caa77..977ddbc9d54 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubfalse.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbpubfalse.tex @@ -21,11 +21,8 @@ \section{文献表} 文献 -\cite{AAAS1883--} -\cite{陈志勇2011--} -\cite{萧钰2001--} -\cite{北京交通大学研究生公众号2016--} -\cite{赵学功2001--} +\cite{Parsons2000noloc--,Parsons2000nopub--,booknolocation,booknopublisher} +\cite{赵学功2001--}\cite{裴丽生1981-2-10,Nemec1997-209-214} { %\hyphenation{kurose-gawa} diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbpubtrue.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbpubtrue.pdf Binary files differnew file mode 100644 index 00000000000..dc8ce90822d --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbpubtrue.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubtrue.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbpubtrue.tex index b3858350beb..df71bd868a7 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/eggbpubtrue.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/eggbpubtrue.tex @@ -21,11 +21,8 @@ \section{文献表} 文献 -\cite{AAAS1883--} -\cite{陈志勇2011--} -\cite{萧钰2001--} -\cite{北京交通大学研究生公众号2016--} -\cite{赵学功2001--} +\cite{Parsons2000noloc--,Parsons2000nopub--,booknolocation,booknopublisher} +\cite{赵学功2001--}\cite{裴丽生1981-2-10,Nemec1997-209-214} { %\hyphenation{kurose-gawa} diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egjournal.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egjournal.pdf Binary files differindex 52b99dee270..436dce300e4 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egjournal.pdf +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egjournal.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egjournal.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egjournal.tex index be3686dbc92..be3686dbc92 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egjournal.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egjournal.tex diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egjournalay.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egjournalay.pdf Binary files differindex d5871d705f4..00bf15c7730 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egjournalay.pdf +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egjournalay.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egjournalay.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egjournalay.tex index 6be856240b5..6be856240b5 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egjournalay.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egjournalay.tex diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egonline.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egonline.pdf Binary files differnew file mode 100644 index 00000000000..68ef7332c5c --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egonline.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egonline.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egonline.tex index 734b200b6fe..734b200b6fe 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egonline.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egonline.tex diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egonlineay.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egonlineay.pdf Binary files differnew file mode 100644 index 00000000000..804ca689288 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egonlineay.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egonlineay.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egonlineay.tex index 5414ae6ad28..5414ae6ad28 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egonlineay.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egonlineay.tex diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egprcdorinprcd.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egprcdorinprcd.pdf Binary files differindex 6705780006b..18aec55f2b7 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egprcdorinprcd.pdf +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egprcdorinprcd.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egprcdorinprcd.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egprcdorinprcd.tex index 2d181e4082e..2d181e4082e 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egprcdorinprcd.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egprcdorinprcd.tex diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egprcdorinprcday.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egprcdorinprcday.pdf Binary files differnew file mode 100644 index 00000000000..7008e1ccc25 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egprcdorinprcday.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egprcdorinprcday.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egprcdorinprcday.tex index e8106e858fd..e8106e858fd 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egprcdorinprcday.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egprcdorinprcday.tex diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egreport.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egreport.pdf Binary files differindex 92ba86cff58..6d2a8ef1ec3 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egreport.pdf +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egreport.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egreport.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egreport.tex index 2604b843b54..2604b843b54 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egreport.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egreport.tex diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egreportay.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egreportay.pdf Binary files differindex 57f15b81bd0..3b347bceeb0 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egreportay.pdf +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egreportay.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egreportay.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egreportay.tex index e07b0943aa1..e07b0943aa1 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egreportay.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egreportay.tex diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egspecialchar.bib b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egspecialchar.bib index 6d92bf8290f..7891355d285 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egspecialchar.bib +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egspecialchar.bib @@ -1,6 +1,6 @@ -%% LaTeX2e file `egspecialchar.bib' +%% LaTeX2e file `example/egspecialchar.bib' %% generated by the `filecontents' environment -%% from source `biblatex-gb7714-2015' on 2018/01/14. +%% from source `biblatex-gb7714-2015' on 2018/04/10. %% @Inproceedings{ref-replace-char, Title = {Cognitive Radio and Cooperative Strategies for Power Saving in Multi-Standard Wireless Devices}, diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egtest.bib b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egtest.bib index 8c5a62c9643..8c5a62c9643 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egtest.bib +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egtest.bib diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egtest.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egtest.pdf Binary files differnew file mode 100644 index 00000000000..1109f08c5fd --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egtest.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egtest.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egtest.tex new file mode 100644 index 00000000000..f847b89ddea --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egtest.tex @@ -0,0 +1,64 @@ +\documentclass[twoside]{article} +\usepackage{ctex} +\usepackage{geometry} +\geometry{paperwidth=21cm,paperheight=29cm,top=1.5cm, bottom=1.5cm, left=2.54cm,right=2.54cm} +\usepackage{xcolor} +\usepackage[CJKbookmarks,colorlinks,bookmarksnumbered=true,pdfstartview=FitH,linkcolor=blue]{hyperref} +\usepackage[backend=biber,style=gb7714-2015,gbtype=true]{biblatex}%align=gb7714-2015 +%\addbibresource[location=local]{egtest.bib} +\addbibresource[location=local]{example.bib} +%\addbibresource[location=local]{egspecialchar.bib} +%\renewcommand{\bibfont}{\zihao{5}} +%\setlength{\bibitemsep}{0ex} +%\setlength{\bibnamesep}{0ex} +%\setlength{\bibinitsep}{0ex} +%\renewcommand{\thefootnote}{\textcircled{\tiny\arabic{footnote}}} + +\begin{document} +编译信息:biblatex v\versionofbiblatex;gb7714-2015*.* version number \versionofgbtstyle. +%%%测试作者年/biblatex版本兼容性的文件 +%%%test file for author year style + +\section{文献表} +文献 +\cite{张伯伟2002--} +\cite{雷光春2012--} +\cite{汤万金2013-09-30--} +\cite{贾东琴2011-45-52} +\cite{韩吉人1985-90-99} +\cite{马欢2011-27-27} +\cite{张凯军2012-04-05--} +\cite{国家环境保护局科技标准司1996-2-3} +\cite{白书农1998-146-163} +\cite{杨洪升2013-56-75} +\cite{中国职工教育研究会1985--} +\cite{丁文祥2000--} +\cite{李强2012-05-03--} +\cite{中华医学会湖北分会1984--} + + +%\cite{1962-50-50,2009-155-155} +% +%\cite{olnoauthorcn} +%\cite{olnoauthoren} +%\cite{Allianceurlonly} +% +%\cite{萧钰2001--} +%\cite{李强2012-05-03--,Commonwealth--,HOPKINSON--,OCLC--} +%\cite{傅刚2000--} +%\cite{蔡敏2006--} +%\cite{Saito2006-169-176} +%\cite{CRAWFPRD1995--}\cite{Proakis2007--} +%\cite{Giorgetti2005-1037-1042,Giorgetti2005-794-798} +%\cite{Haemaelaeinen2002-1712-1721} +%\cite{Oetiker2011--} +%\cite{刘彻东1998-38-39} +%\cite{Commonwealth--} + +{ +%\hyphenation{kurose-gawa} +%\hyphenpenalty=1000 +%\tolerance=500 +\printbibliography%[heading=subbibintoc,title=【参考文献】] +} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egthesispatent.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egthesispatent.pdf Binary files differnew file mode 100644 index 00000000000..1a385713c3e --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egthesispatent.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egpatent.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egthesispatent.tex index 47dcbcf4beb..1f5667b12d2 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egpatent.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egthesispatent.tex @@ -20,6 +20,20 @@ %%%test file for author year style \section{文献表} +\begin{refsection} +\begin{enumerate} + \item 学位论文引用\cite{CALMS1965--,马欢2011-27-27,吴云芳2003--,张若凌2004--,张志祥1998--} +\end{enumerate} + +{ +%\hyphenation{kurose-gawa} +%\hyphenpenalty=1000 +%\tolerance=500 +\printbibliography%[heading=subbibintoc,title=【参考文献】] +} +\end{refsection} +\section{文献表} +\begin{refsection} \begin{enumerate} \item 专利引用\cite{KOSEKI2002--,TACHIBANA2002--,河北绿洲生态环境科技有限公司2001--,姜锡洲1989--,刘加林1993--,西安电子科技大学2002--,张凯军2012-04-05--} \end{enumerate} @@ -30,4 +44,5 @@ %\tolerance=500 \printbibliography%[heading=subbibintoc,title=【参考文献】] } +\end{refsection} \end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egthesispatentay.pdf b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egthesispatentay.pdf Binary files differnew file mode 100644 index 00000000000..13dcc11301e --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egthesispatentay.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egthesisay.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egthesispatentay.tex index 8fa8ad11374..5363a76b2df 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/egthesisay.tex +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/egthesispatentay.tex @@ -20,6 +20,7 @@ %%%test file for author year style \section{文献表} +\begin{refsection} \begin{enumerate} \item 学位论文引用\cite{CALMS1965--,马欢2011-27-27,吴云芳2003--,张若凌2004--,张志祥1998--} \end{enumerate} @@ -30,4 +31,19 @@ %\tolerance=500 \printbibliography%[heading=subbibintoc,title=【参考文献】] } +\end{refsection} + +\section{文献表} +\begin{refsection} +\begin{enumerate} + \item 专利引用\cite{KOSEKI2002--,TACHIBANA2002--,河北绿洲生态环境科技有限公司2001--,姜锡洲1989--,刘加林1993--,西安电子科技大学2002--,张凯军2012-04-05--} +\end{enumerate} + +{ +%\hyphenation{kurose-gawa} +%\hyphenpenalty=1000 +%\tolerance=500 +\printbibliography%[heading=subbibintoc,title=【参考文献】] +} +\end{refsection} \end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example.bib b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/example.bib index 27d03015773..525c906e69f 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example.bib +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/example.bib @@ -1,5 +1,4 @@ -% This file was created with JabRef 2.11. -% Encoding: UTF8 +% Encoding: UTF-8 @Set{易仕和,2013, entryset = {易仕和2013--,Yi2013--}, @@ -1505,15 +1504,6 @@ Workshop on Computer Algebra in Scientific Computing, Samarkand, October 5-9, 20 Year = {2007} } -@Article{Zhang2007-500-503, - Title = {The design and experimental investigations of supersonic length shorted nozzle}, - Author = {Zhang, M. L. and Yi, S. H. and Zhao, Y. X.}, - Journal = {ACTA AERODYNAMICA SINICA}, - Number = {4}, - Pages = {500-503}, - Volume = {25}, - Year = {2007} -} @Book{全国广播电视标准化技术委员会2007-1-1, Title = {广播电视音像资料编目规范:第2部分~ 广播资料:GY/T202.2-2007}, @@ -2054,14 +2044,41 @@ Workshop on Computer Algebra in Scientific Computing, Samarkand, October 5-9, 20 Year = {2013} } +@Article{Zhang2007-500-503, + Title = {The design and experimental investigations of supersonic length shorted nozzle}, + Author = {Zhang, Min-li and Yi, Shi-he and Zhao, Yu-xin}, + Journal = {ACTA AERODYNAMICA SINICA}, + Number = {4}, + Pages = {500-503}, + Volume = {25}, + Year = {2007} +} + @Book{Yi2013--, Title = {Supersonic and hypersonic nozzle design}, - Address = {BeiJing}, - Author = {Yi, S H and Zhao, Y X and He, L and Zhang, M L}, + Address = {Beijing}, + Author = {Yi, Shi he and Zhao, Yu xin and He, Lin and Zhang, Min li}, Publisher = {National Defense Industry Press}, Year = {2013} } +@Book{LIAO2012--, + Title = {Electronic countermeasure techniques for missile penetration}, + Address = {Beijing}, + Author = {LIAO, ping and JIANG, qin bo}, + Publisher = {National Defense Industry Press}, + Year = {2013} +} + +@Book{LIU2003--, + Title = {Introduction of Ballistic Misille Techniques}, + Address = {Beijing}, + Author = {LIU, shi Qiu}, + Publisher = {China Astronautic Publishing House}, + Year = {2003} +} + + @Inbook{马克思2013-302-302, Title = {政治经济学批判}, Address = {北京}, @@ -2348,10 +2365,10 @@ Workshop on Computer Algebra in Scientific Computing, Samarkand, October 5-9, 20 } @Book{standardinfoiso158, - Title = {Information and documdocument-the Dublin core metadata element set:ISO 15836:2009}, - Note = {standard}, - Url = {http://www.iso.org}, - Urldate = {2013-03-24} + title = {Information and documentation-the Dublin core metadata element set:ISO 15836:2009}, + note = {standard}, + url = {http://www.iso.org}, + urldate = {2013-03-24}, } @Book{鸟哥--, @@ -2429,17 +2446,6 @@ Workshop on Computer Algebra in Scientific Computing, Samarkand, October 5-9, 20 Url = {http://blog.csdn.net/zd0303/article/details/7676807} } -@comment{jabref-meta: databaseType:biblatex;} - -@comment{jabref-entrytype: Collection: req[author;title;location;publisher;date] opt[]} - -@comment{jabref-entrytype: Newspaper: req[] opt[]} - -@comment{jabref-entrytype: Online: req[author;title;date;url;urldate;organization] opt[doi]} - -@comment{jabref-entrytype: Report: req[author;title;type;number;address;institution;date;pages] opt[url;urldate;doi;subtitle]} - -@comment{jabref-entrytype: Thesis: req[author;title;type;address;institution;date;pages] opt[url;urldate;doi]} - -@comment{jabref-entrytype: Www: req[;author;title;url;urldate] opt[]} +@Comment{jabref-meta: databaseType:biblatex;} +@Comment{jabref-entrytype: Newspaper: req[] opt[]} diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/makeclear.bat b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/makeclear.bat new file mode 100755 index 00000000000..15f275bbb71 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/makeclear.bat @@ -0,0 +1,5 @@ +@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 *.synctex(busy) +del /q *.nav *.snm *.vrb diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/makeclear.sh b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/makeclear.sh new file mode 100644 index 00000000000..1c115ee20c6 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/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/makecompilerec.dat b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/makecompilerec.dat index c8af4c9932f..4aedec45d14 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makecompilerec.dat +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/makecompilerec.dat @@ -7,25 +7,27 @@ egbeamer.tex egbeameray.tex egbooks.tex egbooksay.tex +eggbnamefmta.tex +eggbnamefmtb.tex eggbnoauthorfalse.tex eggbnoauthorfalseay.tex eggbnoauthortrue.tex eggbnoauthortrueay.tex eggbpubfalse.tex -eggbpubfalseay.tex eggbpubtrue.tex -eggbpubtrueay.tex egjournal.tex egjournalay.tex egonline.tex egonlineay.tex -egpatent.tex -egpatentay.tex egprcdorinprcd.tex egprcdorinprcday.tex egreport.tex egreportay.tex egtest.tex -egthesis.tex -egthesisay.tex +egthesispatent.tex +egthesispatentay.tex +biblatex-gb7714-2015.tex +biblatex-gb7714-2015.tex +biblatex-gb7714-2015.tex +biblatex-gb7714-2015.tex biblatex-gb7714-2015.tex diff --git a/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefileeg.bat b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/makefileeg.bat index 912486bcb58..55ff648da7f 100755 --- a/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefileeg.bat +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/makefileeg.bat @@ -1,22 +1,34 @@ -@echo off
-
-echo compiled files info: > makecompilerec.dat
-
-setlocal enabledelayedexpansion
-for %%a in ( eg*.tex ) do (
-call makeclear
-set jobfile=%%a
-set jobname=!jobfile:~0,-4!
-echo %%a
-echo !jobfile!
-echo !jobname!
-echo !jobfile! >> makecompilerec.dat
-xelatex.exe --synctex=-1 !jobfile!
-biber !jobname!
-xelatex.exe --synctex=-1 !jobfile!
-)
-setlocal DISABLEDELAYEDEXPANSION
-
-call makeclear
-
-::pause
+@echo off + + +IF NOT EXIST gb7714-2015.bbx ( +copy ..\gb7714-2015.bbx . /y +copy ..\gb7714-2015.cbx . /y +copy ..\gb7714-2015ay.bbx . /y +copy ..\gb7714-2015ay.cbx . /y +) + +echo compiled files info: > makecompilerec.dat + +setlocal enabledelayedexpansion +for %%a in ( eg*.tex ) do ( +call makeclear +set jobfile=%%a +set jobname=!jobfile:~0,-4! +echo %%a +echo !jobfile! +echo !jobname! +echo !jobfile! >> makecompilerec.dat +xelatex.exe --synctex=-1 !jobfile! +biber !jobname! +xelatex.exe --synctex=-1 !jobfile! +) +setlocal DISABLEDELAYEDEXPANSION + +call makeclear + +del *.bbx /Q +del *.cbx /Q + + +::pause diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/makefileeg.sh b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/makefileeg.sh new file mode 100644 index 00000000000..ff20b262b0a --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/makefileeg.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +export PATH=${PATH}:/usr/local/texlive/2016/bin/x86_64-linux + +if [-e gb7714-2015.bbx] ; then + cp ../*.bbx . + cp ../*.cbx . +fi + + +for egfile in eg*.tex; +do +./makeclear.sh +echo "$egfile" +echo "${egfile%.tex}" +xelatex --synctex=-1 "$egfile" +biber "${egfile%.tex}" +xelatex --synctex=-1 "$egfile" +./makeclear.sh; +done + +rm *.bbx +rm *.cbx + + diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/makefileegtest.bat b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/makefileegtest.bat new file mode 100755 index 00000000000..edf183038f8 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/makefileegtest.bat @@ -0,0 +1,25 @@ +:: Copyright (c) 2012-2016 hzz + +@echo off + +IF NOT EXIST gb7714-2015.bbx ( +copy ..\gb7714-2015.bbx . /y +copy ..\gb7714-2015.cbx . /y +copy ..\gb7714-2015ay.bbx . /y +copy ..\gb7714-2015ay.cbx . /y +) + + +:: compile the tex file + +xelatex.exe --synctex=-1 egtest.tex +biber egtest +xelatex.exe --synctex=-1 egtest.tex + +del *.bbx /Q +del *.cbx /Q + + + + + diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/updatehistory.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/updatehistory.tex new file mode 100644 index 00000000000..ca57f14f05e --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/updatehistory.tex @@ -0,0 +1,30 @@ + +%更新历史仅给出更新针对的问题,相应的处理代码和解释不在此给出,详见提示对应的说明文档内容 +%============================ +\updateinfo[2018-04-03]{date of update: 2018-04-03 to version v1.0k}\label{up:180403} +\begin{enumerate} +\item 完善了github上的wiki。 + +WIKI on github was accomplished. + +\item 修正了gbnamefmt中的一些小错误。 + +correct some flaws for gbnamefmt option. + +\item 修改了代码用于兼容3.11版本 + +change the separator before related block for v3.11. + +\item 页码范围的间隔符从en dash改为hyphen + +change the pages range separator from en dash to hyphen. + +\item 修正了v3.7以上版本中专利文献中公告日期后多出点的问题,该bug是由于输入公告日期没有使用printtext导致异步标点机制破坏所致。 + +correct a bug of newsdate in patent for biblatex >v3.7, which added an additional dot before urldate caused by broken asynchronous punctuation . + +\item 修正了texlive2017以上版本中beamer类中标题后面多出点的问题,由于beamer会对bibmacro\{title\}做patch导致其输出不同于普通文档类,该bug是由于beamer升级后patch的内容发生变化导致。 + +correct a bug of punctuation after title with beamer for >texlive2017, the bug is caused by the update of beamer. +\end{enumerate} + diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/updatehistoryold.md b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/updatehistoryold.md new file mode 100644 index 00000000000..90370143994 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/updatehistoryold.md @@ -0,0 +1,123 @@ + + + +### date of change: 2018-01-20 to version v1.0j +* Changes to pkg code: + - "*.bbx": add an option `gbtype` to control the type and carrier identifier after title. + - "*.bbx": change the version code switch mechanism. + - "*.bbx": change the option align to `gbalign` for standardising option terminology. + - "*.bbx": add an option `gbnamefmt` to control the letter case and format of author's name,and eliminate the comma in author names of the chinese references exported from cnki by `zotero`,these demand raised by liuxiaotao. + - "*.bbx": correct the delimiter between author and year for author-year style with right using of the `\nameyeardelim` + - "*.bbx": add an cmd `\yearcite` to print year info only for author-year style when author has been written manually. + +### date of change: 2017-11-21 to version v1.0i +* Changes to pkg code: + - "*.bbx": add a new solution for multi-language bibliography based on related entry other than the old @set method for biblatex version >3.8, because biblatex(>v3.8) does not copy info from its first member any longer. + - "*.bbx": correct a bug of entry's title with `\LaTeX{}` macro reported by liubenyuan. this bug is raised in CJK char check function when StrChar from xtring pkg to extract chars. + - "*.bbx": deal compatibility problem of author-year style for biblatex v>3.8a, include `labeldate`->`labeldateparts` and `DeclareSortingScheme` -> `DeclareSortingTemplate`. + - "*.bbx": change the version check macro,using macro form pkg xstring. change version switch method, define version's code first then switch depend on the biblatex version. + - "*.bbx": replace the `\iffieldundef{year}` by `\iffieldequalstr{year}{}` in `\newbibmacro*{modifydate}`, for the year field is defined with empty string for biblatex version >3.7 after biber dealing with none date info. + - "*.bbx": change the date format control mechanism for biblatex version >3.7, lower versions keep the old fansion. + - "*.bbx": rewrite the volume and number parsing macro using `xstring` pkg. + - "*.bbx": correct a bug with option `gbnoauthor` when book entry has none author. +* Changes to documentation: + - biblatex-gb7714-2015.tex: revise this document + + +### date of change: 2017-04-11 to version v1.0h +* Changes to pkg code: + - "*.bbx": deal compatibility problem of author year style for texlive2017, because the old cmd `printdateextralabel` with biblatex3.4 has been replaced by `printlabeldateextra` with biblatex3.7 in texlive2017. + - "*.bbx": change the seperator between multi-language reference text from cmd par to cmd newline for the gb7714-2015 align style + - "*.bbx": fix a flaw reported by Lee Zeping. remove the comma between `journaltitle` and (number) when the volume is undefined. + - "*.bbx": add an option `gbpub` to control the publishing info. if `gbpub=false`, publishing info's format is the biblatex standard style, otherwise is gb7714-2015 style. The origin idea comes from Wayne08. + - "*.bbx": fix a flaw reported by zjsdut@163.com. remove the dot before url when url is the only info available。 + - "*.bbx": add an option gbnoauthor for author-year style. when author is undefined, set option gbnoauthor=true then author with "佚名"or"NOAUTHOR" will be defined. note that with biblatex version 3.7 or higher for multiple DeclareStyleSourcemap support, code can be simplifed, because the realization code now with texlive2016(biblatex 3.4) is subjected to the one DeclareStyleSourcemap constraint. +* Changes to documentation: + - biblatex-gb7714-2015.tex: revise this document + - *.bib: correct a warning which is caused by long multi-line url info. + + +### date of change: 2017-02-26 to version v1.0g +* 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, proposed by Sheng Wenbo. + - "*.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 + + +### 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 + - *.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 + +* 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 + +* Changes to documentation: + - biblatex-gb7714-2015.tex: revise this document and add some explication + + +### 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 + +* Changes to documentation: + - biblatex-gb7714-2015.tex: revise this document. + +### 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 + +* Changes to documentation: + - 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 + +* Changes to pkg code: + - "*.bbx","*.cbx": add some information like version information. + +* Changes to documentation: + - biblatex-gb7714-2015.tex: correct a few flaws . + - paperone.bib: refine some entries. diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/updatehistoryold.tex b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/updatehistoryold.tex new file mode 100644 index 00000000000..00498bea6b3 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/updatehistoryold.tex @@ -0,0 +1,1055 @@ +%============================ +\updateinfo[2018-04-03]{update to version 1.0k}\label{up:180403} +\begin{enumerate} +\item 修正了gbnamefmt中的一些小错误。 +\item 修改了代码用于兼容3.11版本 +\item 页码范围的间隔符从en dash改为hyphen +\item 修正了v3.7以上版本中专利文献中公告日期后多出点的问题,该bug是由于输入公告日期没有使用printtext导致异步标点机制破坏所致。 +\item 修正了texlive2017以上版本中beamer类中标题后面多出点的问题,由于beamer会对bibmacro\{title\}做patch导致其输出不同于普通文档类,该bug是由于beamer升级后patch的内容发生变化导致。 +\end{enumerate} + +%============================ +\updateinfo[2018-01-20]{update to version 1.0j}\label{up:180120} +\begin{enumerate} +\item 增加gbtype选项用于控制是否输出题名后的标识符,见\ref{sec:added:opt} 节。 +\item 进一步修改了版本判断机制,以使最新版本的兼容性更强,见\ref{sec:blx:compatibility}节。 +\item 根据刘小涛的需求和建议,增加了gbnamefmt选项用于控制姓名的大小写和输出格式,同时根据zotero从cnki识别输出中文文献姓名中带逗号的情况做了兼容性处理,见\ref{sec:opt:namefmt}节。 +\item 为统一样式增加的选项将原来的align选项修改为gbalign,见\ref{sec:added:opt}节。 +\item 通过正确使用nameyeardelim相关命令,修正了作者年制,标注和著录表中的中作者与年份之间的标点符号, + 见\ref{sec:label:fmt}节。 +\item 根据ghiclgi的建议,增加了yearcite命令以满足,作者年制中作者已经给出仅需要年份信息而不需要页码信息的情况,说明和测试见\ref{sec:test:book},\ref{sec:cite:cmd:test}节。 +\end{enumerate} + +%============================ +\updateinfo[2017-11-21]{update to version 1.0i}\label{up:171121} +\begin{enumerate} +\item 因为biblatex版本升级,3.8及以上版的set类型不再复制第一个子条目的信息,因此增加使用关联条目的解决方案,详见 +\ref{sec:multilan:implement}, \ref{sec:data:mdf:forrelated}节。 +\item 修正了一个liubenyuan发现的bug。当标题中含有\verb|\LaTeX{}|这样的宏时,cjk判断函数出错。解决如下: + \begin{texlist} + 这个问题是这样的, + 因为在cjk判断函数中,使用了xtring的StrChar函数来抽取字符,但这个函数默认情况下需要其参数完全展开。因为\LaTeX{}宏比较复杂,展开时会出现问题。设置该函数不展开或展开一次,都可以解决判断出错的问题。比如: + + \expandarg + % + \StrChar{english}{1}[\tempa]% + \tempa + + \StrChar{中文}{1}[\tempa]% + \tempa + + \StrChar{english \LaTeX{} abc}{1}[\tempa]% + \tempa + + 但解决的是直接给出文本的情况,在biblatex使用中需要用\thefield取出文本,显然\thefield不止展开一次,因此不展开或者展开一次,都会出现问题,所以无解。只能从另外一个角度出发。 + + 考虑到动态数据修改时,也可以利用正则表达式抽取数据,因此利用它来将title信息的第一个非特殊符号字符抽取出来,放到userd 中用于cjk判断,这样就避开了\LaTeX{}展开的问题。 + \end{texlist} + +\item 针对biblatex3.8a的更新做了兼容性处理,主要是修改版本判断和处理机制,替换新的宏包选项,替换新的排序格式命令。详见第\ref{sec:blx:compatibility}节 + +\item 重写了范围解析函数,详见\ref{sec:cjkjudge}节 + +\end{enumerate} + +\updateinfo[2017-04-11]{update to version 1.0h}\label{up:170411} +\begin{enumerate} +\item texlive2017中biblatex3.7对于authoryear样式中的date+extrayear宏有一定的修改,从原来texlive2016中的命令printdateextralabel 转换到了printlabeldateextra。因此做一个修改。 + \begin{texlist} + %设置因为mergedate默认为true时的情况,来自\bbx@opt@mergedate@compact +%去掉作者后面包围年份的圆括号 +%这里因为biblatex版本的不同,做不同的处理,texlive2017版的在iftexliveseven=true中设置 +%2016等低版本的在iftexliveseven=false中设置 +%重设date+extrayear格式,源来自authoryear.BBX +\iftoggle{iftexliveseven}{% + \renewbibmacro*{date+extrayear}{% + \iffieldundef{labelyear} + {} + {\printtext{%[parens]%这里把括号去掉 + \iffieldsequal{year}{labelyear} + {\printlabeldateextra}% + {\printfield{labelyear}% + \printfield{extrayear}}}}}% +}{% +\renewbibmacro*{date+extrayear}{% + \iffieldundef{\thefield{datelabelsource}year} + {} + {\printtext{%[parens]%这里把括号去掉 + \iffieldsequal{year}{\thefield{datelabelsource}year} + {\printdateextralabel}% + {\printfield{labelyear}% + \printfield{extrayear}}}}}% +} + \end{texlist} + + 当然其实这还有更简单的解决方法就是: + \begin{texlist} + \let\printdateextralabel=\printlabeldateextra + \end{texlist} + 这个方式似乎有点问题。 + +\item 根据同学(zjsdut@163.com)发现的问题,修改一个bug,感谢。当online 类型仅有url 信息时,url前面多了一个点。这是modifydate宏设计中printtext位置导致标点异步处理机制失效所产生现象。因此作出修改,newbibmacro*\{modifydate\}宏详见\ref{sec:date:fmt}节。 + + +\item 增加一个选项gbnoauthor。当给出选项gbnoauthor=true时,作者年制中当作者缺省时,使用佚名或noauthor代替,即将佚名或noauthor作为作者处理。默认情况下gbnoauthor=true不处理,即当无作者进行处理,选择增加的代码详见\ref{sec:blx:compatibility}节。同时也修改了中英文排序判断和佚名代替的机制。 + \begin{texlist} + \map{%因为无法进行cjk字符判断,所以用反的思路,判断没有英文字符,没有空格,没有逗号等字符情况下 + %认为是中文的,将文献userb设置成cn,用于排序 + \step[fieldsource=author,match=\regexp{[^a-zA-Z\s\.\,\'\{\}\-\:0-9]},final] + \step[fieldset=userb,fieldvalue={cn}] + } + \map{%因为无法进行cjk字符判断,所以用反的思路,判断没有英文字符,没有空格,没有逗号等字符情况下 + %认为是中文的,将文献userb设置成cn,用于排序 + \step[fieldsource=title,match=\regexp{[^a-zA-Z\s\.\,\'\{\}\-\:0-9]},final] + \step[fieldset=userb,fieldvalue={cn}] + }%如果没有作者和标题,那么剩下的最可能有意义的只有网址了,而网址通常是英文的,因此不用再进一步对其它域进行判断了。 + \map{%将没有设置的userb设置成en,即认为不是中文的就是英文的。 + \step[fieldset=userb,fieldvalue={en}] + } + \end{texlist} + + \begin{texlist} + \def\dealnoathor{ + \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map{%默认情况下将空缺作者设置为佚名 + \step[fieldsource=userb,match={cn},final] + \step[fieldset=author, fieldvalue={佚名}] + } + \map{%默认情况下将空缺作者设置为佚名 + \step[fieldsource=userb,match={en},final] + \step[fieldset=author, fieldvalue={NOAUTHOR}] + } + } + }} + \end{texlist} + + 下面是已经取消的以前的处理方式: + \begin{texlist} + \map{%默认情况下将空缺作者设置为佚名 + \step[fieldset=author, fieldvalue={佚名}] + } + \map[overwrite]{%当标题带有英文字符,且作者为佚名的情况,设置作者为noauthor, + %也有一些特殊情况可能处理不到,比如标题中英混合,作者又却是 + \step[fieldsource=title,match=\regexp{[a-zA-Z]},final] + \step[fieldsource=author,match=\regexp{佚名}, replace={NOAUTHOR}] + } + \map{%因为无法进行cjk字符判断,所以用反的思路,判断没有英文字符,没有空格,没有逗号等字符情况下 + %认为是中文的,将文献userb设置成cn,用于排序 + \step[fieldsource=author,match=\regexp{[^a-zA-Z\s\.\,\'\{\}\-]},final] + \step[fieldset=userb,fieldvalue={cn}] + } + \map{%将没有设置的userb设置成en,即认为不是中文的就是英文的。 + \step[fieldset=userb,fieldvalue={en}] + } + \end{texlist} + + +\item 修改多语言参考文献间的分割符号,即将par改为newline,避免采用gb7714-2015的项对齐方式时,不同语言的参考文献间的分段导致没有缩进。(测试结果见:\ref{sec:align:test}节的项对齐方式) + + \begin{texlist} + %\renewcommand*{\entrysetpunct}{\adddot\par\nobreak} + \renewcommand*{\entrysetpunct}{\adddot\newline\nobreak} + \end{texlist} + +\item Zeping Lee兄发现了一个小问题,感谢,一直没有注意到这个问题。这里做出修改:主要是作者年制中,期刊析出的文献中,当卷信息不存在时,期刊名和期是连在一起的,而不是中间有个逗号,例如GB/T 7714-2015 中第10.2.4 节中的“刘彻东条目”。主要修改如下(结果测试见:\ref{sec:article:novol}节): + + \begin{texlist} + %调整期刊名的格式,源来自standard.bbx + \renewbibmacro*{journal+issuetitle}{% + \usebibmacro{journal}% + %\setunit*{\addspace}% + %\setunit*{\addcomma\addspace}%修改为增加一个逗号 + \iffieldundef{series}% + {}% + {\newunit% + \printfield{series}% + \setunit{\addspace}}% + %\usebibmacro{volume+number+eid}% + %\setunit{\addspace}% + \usebibmacro{issue+date}% + %\setunit{\addcolon\space}% + %换成逗号和空格 + \usebibmacro{issue}% + \iffieldundef{volume}{}{\setunit{\addcomma\space}}% + \usebibmacro{volume+number+eid}%把卷期放到年份后面 + %\newunit + } + + %调整journal,首先判断子标题,然后在设置标点。避免直接设置标点后,当volume不存在是需要使用\nopuct去标点进而引入不必要的空格 + \renewbibmacro*{journal}{% + \iffieldundef{journaltitle}% + {}% + {\printtext[journaltitle]{% + \printfield[titlecase]{journaltitle}% + \iffieldundef{journalsubtitle}{}{\setunit{\subtitlepunct}% + \printfield[titlecase]{journalsubtitle}}}}} + + %调整issue+date,原在authoryear.BBX中\bbx@opt@mergedate@compact中定义 + %当issue存在时,才设置newunit。避免直接设置标点后,当volume不存在是需要使用\nopuct 去标点进而引入不必要的空格 + \renewbibmacro*{issue+date}{% + \iffieldundef{issue}% + {}% + {\printtext[parens]{\printfield{issue}}\newunit}} + + %增加一个number带括号的格式,避免使用mkbibparens而引入一个不必要的空格 + \DeclareFieldFormat{addnumflag}{% + \nobreak\printtext{(}\nobreak #1\nobreak\printtext{)}} + + %调整期刊卷和期的格式,源来自standard.bbx + \renewbibmacro*{volume+number+eid}{% + \printfield{volume}% + %\setunit*{\adddot}%去掉点号 + %\printfield{number}% + \iffieldundef{number}{}{\printfield[addnumflag]{number}}% + %\iffieldundef{number}{}{\printtext{\mkbibparens{\printfield{number}}}}% 增加一个圆括号 + \iffieldundef{eid}{}{% + \setunit{\addcomma\space}% + \printfield{eid}}} + \end{texlist} + +\item wayne508同学提出了一个需求,就是不希望使用出版项缺省时的默认处理,即不使用[出版地不详],[出版者不详],[S.l.],[s.n.]等填充,因此增加了一个宏包选项gbpub,当等于false时,去掉自动处理,使用biblatex 的标准处理方式。增加选项代码见\ref{sec:blx:compatibility}节,下面给出的是具体的处理代码: + + \begin{texlist} + %出版社和地址的处理 + \newbibmacro*{location+institution+date}{% + \iftoggle{bbx:gbpub}% + {\testCJKfirst{\thefield{title}} + \iflistundef{location}{\iftoggle{ifCJKforgbt}{\printtext{[出版地不详]}}{\printtext{[S.l.\adddot]}}}% + {\printlist{location}}% + % \iflistundef{institution} + % {\setunit*{\addcomma\space}} + % {\setunit*{\addcolon\space}}% + % \printlist{institution}% + % \setunit*{\addcomma\space}% + \addcolon\addspace% + \iflistundef{institution}{% + \iftoggle{ifCJKforgbt}{\printtext{[出版者不详]}}{\printtext{\mkbibbrackets{s.n.}}}}% \bibstring{nopublisher}%[s.n.\adddot] + {\printlist{institution}}% + \setunit{\addcomma\addspace}% + %\usebibmacro{date}% + \printfield{year}% + \bibrangedash% + \iffieldundef{endyear}{}{\printfield{endyear}}% + \newunit}% + { \printlist{location}% + \iflistundef{institution}% + {\setunit*{\addcomma\space}} + {\setunit*{\addcolon\space}}% + \printlist{institution}% + \setunit*{\addcomma\space}% + \usebibmacro{date}% + \newunit}% + } + + \renewbibmacro*{publisher+location+date}{% + \iftoggle{bbx:gbpub}% + {\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 %去掉这个标点 + }% + {\printlist{location}% + \iflistundef{publisher} + {\setunit*{\addcomma\space}} + {\setunit*{\addcolon\space}}% + \printlist{publisher}% + \setunit*{\addcomma\space}% + \usebibmacro{date}% + %\newunit + }% + } + + \end{texlist} + + + + 下面这种处理方式是有问题的,即默认处理情况不是希望的true的情况,但如果给出宏包加载选项时没有问题的。因此采用上一种方式。 + \begin{texlist} + %\newtoggle{bbx:gbpub} + %\DeclareBibliographyOption[boolean]{gbpub}[true]{% + % \settoggle{bbx:gbpub}{#1}} + %这种机制的标识判断,能用于usemacro使用,域格式定义中,但无法用来定义macro + %定义宏和使用宏是两个不同的展开层级 + %\ExecuteBibliographyOptions{gbpub} + %但是使用这句默认设置可以用来定义macro + \DeclareBibliographyOption[bool]{gbpub}[true]{%应使用这种直接的机制 + \ifstrequal{#1}{true}{\pubaddmacroredefine}{}} + + %出版社和地址的处理 + %新增一个样式用于输出连续出版物的地址,单位,时间 + %类似\newbibmacro*{publisher+location+date} + \newbibmacro*{location+institution+date}{% + \printlist{location}% + \iflistundef{institution} + {\setunit*{\addcomma\space}} + {\setunit*{\addcolon\space}}% + \printlist{institution}% + \setunit*{\addcomma\space}% + \usebibmacro{date}% + \newunit} + %当没有出版社地址时,直接判断title的信息是否是中文,若为中文,则写出版地不详,否则用英文的字符表示。 + %事实上title对于每个文献来说是必须的,所以用它判断是最快的,而且一般标题和出版社的语言是一样的。 + \def\pubaddmacroredefine{% + \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 %去掉这个标点 + } + %新增一个样式用于输出连续出版物的地址,单位,时间 + %类似与上面的\newbibmacro*{publisher+location+date} + \newbibmacro*{location+institution+date}{% + \testCJKfirst{\thefield{title}} + \iflistundef{location}{\iftoggle{ifCJKforgbt}{\printtext{[出版地不详]}}{\printtext{[S.l.\adddot]}}}% + {\printlist{location}}% + % \iflistundef{institution} + % {\setunit*{\addcomma\space}} + % {\setunit*{\addcolon\space}}% + % \printlist{institution}% + % \setunit*{\addcomma\space}% + \addcolon\addspace% + \iflistundef{institution}{% + \iftoggle{ifCJKforgbt}{\printtext{[出版者不详]}}{\printtext{\mkbibbrackets{s.n.}}}}% \bibstring{nopublisher}%[s.n.\adddot] + {\printlist{institution}}% + \setunit{\addcomma\addspace}% + %\usebibmacro{date}% + \printfield{year}% + \bibrangedash% + \iffieldundef{endyear}{}{\printfield{endyear}}% + \newunit} + } + + + \end{texlist} + +\end{enumerate} + +%============================ +\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输出。代码详见\ref{sec:date:fmt}节。 + +\item 为方便bib文件生成,构建可以从gb7714-2015格式的参考文献表文本转bib 文件的perl 程序,利用它可以批量解析参考文献信息并转换为bib数据源文件。详见:\href{run:./gb7714texttobib.pl}{gb7714texttobib.pl},测试文件见:\href{run:./gb7714texteg.dat}{gb7714texteg.dat}。 + +\item 在输出标识符的usera域格式中考虑标准样式的url选项,以便实现对是否打印url和urldate的控制。这个需求是Wenbo Sheng兄提出的,这里做出修改。 + \begin{texlist} + \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]//)加入一个不可断行短空格,使紧跟其后的单词能正确断行,当然也可以增加一个可断行的短空格addthinspace,方便直接在//后面断行。 + \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 版本的不同分别进行处理。这个需求是湘厦人提出的,这里做出修改,详见\ref{sec:dynamic:modify}节。 + + +\end{enumerate} + +%============================ +\updateinfo[2016-12-31]{update to version 1.0f}\label{up:161231} +\begin{enumerate} +\item 利用biblatex提供的iffieldequalstr函数替换用于判断note域值等于new 或standard 的函数,比如: +\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版增加gbalign选项的时候,没有测试对texlive2015的兼容性,所以导致一些错误。因为texlive2015的biblatex3.0版本的DeclareBibliographyOption 命令定义选项时不像texlive2016的biblatex3.4版的是带类型说明的。所以做出一定的处理,把该命令分两个版本进行设置。同时需要注意新定义的参考文献表环境在texlive2015中的biblatex3.0中无效且出错,所以直接去掉,因此文献表的标签的项对齐效果在texlive2015中的biblatex3.0 版中无法实现。代码详见\ref{sec:blx:compatibility}节。 + +\item 之前1.0e版解决编组符号包围的责任者的中英文判断问题的时候,没有测试对texlive2015的兼容性,所以导致一些错误。因为使用了xstring宏包的功能,但texlive2015的biblatex3.0版本不默认加载xstring宏包,所以在修改样式文件,在其中加载一下该宏包。 +\begin{texlist} +\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 给宏包增加了一个选项gbalign,用于控制顺序编码制的参考文献表的标签对齐方式,默认是right即右对齐,可以设置left即左对齐,也可以设置gb7714-2015,即以各条参考文献自身为基准对齐实现对齐。效果见第\ref{sec:align:test}节的内容。增加一个选项,真正实现起来并不复杂,但在未明白其运行机制之前尝试了好长时间,显得很麻烦,具体的机制见第\ref{sec:biblatex:mech} 节。 + 修改代码如下: +\begin{texlist} +\DeclareBibliographyOption[string]{gbalign}[right]{% +\ifstrequal{#1}{left}{\setalignleft}{} +\ifstrequal{#1}{gb7714-2015}{\setaligngbstyle}{} +} + +%修改序号标签格式为左对齐 +\def\setalignleft{\DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{##1}\hfill}} +%修改序号标签格式为以各条参文献为基础进行对齐的方式 +\def\setaligngbstyle{% +\def\blx@bibitem##1{% + \blx@ifdata{##1} + {\begingroup + \blx@getdata{##1}% + \blx@bibcheck + \iftoggle{blx@skipentry}{}{% + \blx@setdefaultrefcontext{##1}% + \global\let\blx@noitem\@empty + \blx@setoptions@type\abx@field@entrytype + \blx@setoptions@entry + \blx@thelabelnumber + \addtocounter{instcount}\@ne + \blx@initsep + \blx@namesep + \csuse{blx@item@\blx@theenv}\relax +% \blx@initsep %移动到上面去,恢复bibnamesep等的作用机制 +% \blx@namesep + \csuse{blx@hook@bibitem}% + \blx@execute + \blx@initunit + \blx@anchor + \blx@beglangbib + \bibsentence + \blx@pagetracker + \blx@driver\abx@field@entrytype + \blx@postpunct + \blx@endlangbib}% + \par\endgroup}%这里增加了一个\par + {}} +\newcommand{\itemcmd}{% +\settowidth{\lengthid}{[\printfield{labelnumber}]} +\addtolength{\lengthid}{\biblabelsep} +\setlength{\lengthlw}{\textwidth} +\addtolength{\lengthlw}{-\lengthid} +\addvspace{\bibitemsep}%恢复\bibitemsep的作用 +%\parshape 2 0em \textwidth \lengthid \lengthlw +\hangindent\lengthid +[\printfield{labelnumber}]\hspace{\biblabelsep}} +\newlength{\lengthid} +\newlength{\lengthlw} +\defbibenvironment{bibliography} +{\begingroup\setlength{\parindent}{0em}} +{\endgroup} +{\itemcmd}} +\end{texlist} + + +\item map中当有append选项时也需要overwrite选项,这不知道是不是texlive 2016 中biber 升级后的原因。之前使用texlive2015的时候没有问题。所以修改为: +\begin{texlist} +%*.bbx + \map{%将entrykey放入keywords中用于后期的使用 + \step[fieldsource=entrykey] + \step[fieldset=keywords, origfieldval] + } + \map[overwrite]{%这里还必须有overwrite,怎么之前会觉得没有问题呢,可能是之前版本拷错了,还是之前是texlive2015 变16后biber有了变化(2016-1207修改正确) + \step[fieldsource=note, final]%将note域信息复制给keywords,用于输出时容易区分标准和报纸 + \step[fieldset=keywords, fieldvalue={,}, append] + \step[fieldset=keywords, origfieldval, append] + } +\end{texlist} + +\item 顺序制中,出版项后没有日期的情况下,出现逗号这是有问题的,所以修改为: +\begin{texlist} +%gb7714-2015.bbx +%出版社和地址的处理,当没有出版社地址时 +%直接判断title的信息是否是中文,若为中文,则写出版地不详,否则用英文的字符表示。 +%事实上title对于每个文献来说是必须的,所以用它判断是最快的,而且一般标题和出版社的语言是一样的。 +\newbibmacro*{publisher+location+date}{% +\testCJKfirst{\thefield{title}}% +\testifnoteeqstd% +\iflistundef{location}{%\adddot +\iftoggle{ifnoteeqstandard}{}{% +\iftoggle{ifCJKforgbt}{\printtext{[出版地不详]}\addcolon\addspace}{\printtext{[S.l.\adddot]}\addcolon\addspace}}}% \bibstring{noaddress} +{\printlist{location}\addcolon\addspace}% +%\addcolon\addspace% +\iflistundef{publisher}{% +\iftoggle{ifnoteeqstandard}{}{% +\iftoggle{ifCJKforgbt}{\printtext{[出版者不详]}\setunit{\adddot\addspace}\setunit*{\addcomma\addspace}}% +{\printtext{\mkbibbrackets{s.n.}}\setunit{\adddot\addspace}\setunit*{\addcomma\addspace}}}}% +{\printlist{publisher}\setunit*{\addcomma\addspace}}%在这里修改使用了setunit命令,与ay.bbx统一。 +%\addcomma\addspace% +\usebibmacro{date}% + %\newunit %去掉这个标点 +} +\end{texlist} + +\item 当urldate域给出的信息不全时,比如只有年和月,而没有日,那么就需要进行判断,只输出存在的信息,因此对urldate域格式做修改,代码详见\ref{sec:date:fmt}节。 + + +\item 当责任者等需要判断中英文的信息是用编组符号包含的时候,原来的CJK判断函数会出现问题,所以利用xstring宏包做一定的修改,修改完成后可以应对信息中存在编组的情况,详见\ref{sec:cjkjudge}节。 +\end{enumerate} + +%============================ +\updateinfo[2016-11-24]{update to version 1.0d} +\begin{enumerate} +\item 用于usera域的gbtypeflag域打印格式,明明在aritle/book类中没有问题,但在beamer中就会出现问题,多出一个点了。到现在还没有搞明白怎么会多出点来,printtext命令明明没有输出点,不像S.l.还有一个点的输出,这里只有]符号,但就是多了一个点。从最后修改成功看,这里就是多了一个点,而且是literal period,所以后面的点无法覆盖它,所以需要先用adddot命令将其转换为缩写的点,而且似乎用isdot 也不行,其原因还得再分析分析。因此做如下修改: + +\begin{texlist} +%域格式修改 +\DeclareFieldFormat{title}{#1\adddot\addthinspace}% +\DeclareFieldFormat{journaltitle}{#1\isdot} +\DeclareFieldFormat%将期刊等文献的标题中原来带的引号去掉 + [article,patent,thesis,unpublished] + {title}{#1\adddot\addthinspace} +\DeclareFieldFormat%将期刊等文献的标题中原来带的引号去掉 + [inbook,incollection,inproceedings] + {title}{#1\nopunct\unspace} + +%同时移动title的micro的printtext[title]的括号范围: +%重设title的输出,将文献类型标识符输出出去,原输出来自biblatex.def文件 +\newbibmacro*{title}{% + \ifboolexpr{% + test{\iffieldundef{title}}% + and% + test{\iffieldundef{subtitle}}% + }% + {}% + {\printtext[title]{% + \printfield[titlecase]{title}% + \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题 + {}{\setunit{\subtitlepunct}% + \printfield[titlecase]{subtitle}}% + \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% + }% + \iffieldundef{booktitle}{\newunit}{}%当title是析出时,不要标点 + %\newunit + }%将\printtext[title]的结束编组放到这里来。 +}% +} +\end{texlist} + +还需要注意的是如果gbtypeflag域格式中不直接输出[],而用mkbibbrackets也能解决这些个问题,但是会因为ctex对于中英文间空格的的默认处理加入空格,所以只能采用上面的方式。 + +还有beamer类中很多不同域之间的空格似乎比其它类中更宽,不知道原因,难道是beamer重新定义了\textbackslash space命令? + +\item 在参考文献表中加入逐字文本(原样文本,如实文本),也就是直接插入文本信息,或者用printtext插入都会导致一些问题,上面的第1点就是典型问题之一,还比如出版项缺省等问题。在有利用printtext 插入原样文本的时候,要特别注意在driver中该命令前后几行的代码后加注释,否则容易带入空格,注释后就可以消除。 + +\item 同样的periodical条目类型的title输出也修改了printtext[title]的结束编组位置。journaltitle域格式也加了isdot。patent 的title 也修改了printtext[title]的结束编组位置。 + +\item 修改了location+institution+date的s.n.的处理方式与publisher+location+date的方式类似。中英文判断也往外放到一层,与publisher+location+date一致,这样就不会出现不判断的问题。 + +\item 3.3版以后的family-given格式的given name用全大写代替首字母大写。 +\end{enumerate} + + +%============================ +\updateinfo[2016-11-14]{update}\label{up:20161114} +\begin{enumerate} +\item 很早之前思考的利用biber的动态修改数据功能来进行佚名问题处理是合理的,因为biblatex不能在tex处理过程中添加域的信息,所以任何要进入域的信息都需要在运行biber命令之时或者之前处理。利用正则表达式可以完成一定的区分,尽管可能有一些特殊情况无法涵盖,但如下的处理可以基本正确的实现功能。 +如果不需要用佚名的方式,那么只要把这段处理注释掉就可以了。 + +\begin{texlist} +\map{%因为要做佚名处理,所以这里先对有些只有编者而没有作者的情况进行处理 + step[fieldsource=editor] + \step[fieldset=author,origfieldval] + } +\map{%默认情况下将空缺作者设置为佚名 + \step[fieldset=author, fieldvalue={佚名}] + } +\map[overwrite]{%当标题带有英文字符,且作者为佚名的情况,设置作者为noauthor, + %也有一些特殊情况可能处理不到,比如标题中英混合,作者又却是 + \step[fieldsource=title,match=\regexp{[a-zA-Z]},final] + \step[fieldsource=author,match=\regexp{佚名}, replace={NOAUTHOR}] + } +\end{texlist} + +\item 关于文种分集排序的问题,之前要求用户自己往userb域填信息,现在通过如下处理,可以避免,也是用的正则表达式判断,但有些特殊情况可能会有问题,出现问题的话,手动在bib源文件中添加userb域信息是可以解决的。到这里为止,在使用本样式文件时,除了必须要输入的引文的信息外,其它信息都不需要再输入了,包括原来就已经处理的usera域(用于添加文献类型标识符的),这里的userb域用于文种分集排序的,都不必输入了。 + +\begin{texlist} +\map{%将entrykey放入keywords中用于后期的使用 + \step[fieldsource=entrykey] + \step[fieldset=keywords, origfieldval] + \step[fieldsource=note,final]%将note域信息复制给keywords,用于输出时容易区分标准和报纸 + \step[fieldset=keywords, fieldvalue={,},append] + \step[fieldset=keywords, origfieldval,append] + } +\map{%因为无法进行cjk字符判断,所以用反的思路,判断没有英文字符,没有空格,没有逗号等字符情况下 + %认为是中文的,将文献userb设置成cn,用于排序 + \step[fieldsource=author,match=\regexp{[^a-zA-Z\s\.\,\'\{\}]},final] + \step[fieldset=userb,fieldvalue={cn}] + } +\map{%将没有设置的userb设置成en,即认为不是中文的就是英文的。 + \step[fieldset=userb,fieldvalue={en}] + } +\end{texlist} + +\item 增加了一个yearpagescite命令用于处理: 作者年制文中已有作者只需要年份和页码的情况,而顺序制的情况下该命令与pagescite命令作用相同。其使用方式如下: + +\begin{texlist} +%使用方式: +见赵耀东\yearpagescite[][205]{赵耀东1998--}和Simon\yearpagescite[][15]{Simon2001--}的文献。 + +%增加的命令: +%*2015ay.cbx中: +%增加一个命令yearpagescite用于当文中作者已经存在,需要页码和年份的情况。 +%参考来源,biblatex.DEF,其中\DeclareCiteCommand*{\citeyear}命令 +\DeclareCiteCommand{\yearpagescite} + {\printtext{(}\usebibmacro{prenote}} + {\printfield{year}\printfield{extrayear}} + {\multicitedelim} + {\printtext{)}\textsuperscript{\usebibmacro{postpages}}} +%*2015.cbx中: +%增加一个命令yearpagescite为与ay样式兼容,命令等同于\pagescite +\DeclareCiteCommand{\yearpagescite}[\mkbibsuperscript]%\mkbibbrackets,仍然用上标 + {[\usebibmacro{cite:init}% + \usebibmacro{prenote}% + } + {\usebibmacro{citeindex}% + \usebibmacro{cite:comp}} + {} + {\usebibmacro{cite:dump}]% + \usebibmacro{postpages}} +\end{texlist} + +\item 在出版者缺省的情况下,当出版者后面没有更多信息的情况下,缺省字符串后面应该有一个点,因此做出修正为: +\begin{texlist} +%出版社和地址的处理,当没有出版社地址时 +%直接判断title的信息是否是中文,若为中文,则写出版地不详,否则用英文的字符表示。 +%事实上title对于每个文献来说是必须的,所以用它判断是最快的,而且一般标题和出版社的语言是一样的。 +\newbibmacro*{publisher+location+date}{% +\iffieldundef{title}{}{\testCJKfirst{\thefield{title}}}% +\testifnoteeqstd% +\iflistundef{location}{%\adddot +\iftoggle{ifnoteeqstandard}{}{% +\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}{}{% +\iftoggle{ifCJKforgbt}{\printtext{[出版者不详]}\setunit{\adddot\addspace}\setunit*{\addcolon\addspace}} +%\mkbibbrackets +%{\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% +%\usebibmacro{date}% +%\newunit %去掉这个标点 +} +\end{texlist} + + +\item 反向链接,backref的格式并没有要求,但考虑到中文环境还是将其格式改一下,因此修改英文本地化字符串为“引用页”。 +\begin{texlist} +\DefineBibliographyStrings{english}{ +bibliography = {参考文献}, +references = {参考文献}, +%bytranslator= {\addcomma\ 译\adddot}, %将trans. by 改成 译 +bytranslator= {\addcomma\ 译},%\addperiod +and = {\addcomma},%将第2和3人名见的and符号改成 逗号,用\finalnamedelim命令也可以定义,参见3.9.1节 +%andothers = {et al.}, %将超过3个人名的省略,et al.改成为 等 +andotherscn = {等}, %将超过3个人名的省略,et al.改成为 等 +noaddress = {[S.l.]}, +nopublisher = {[s.n.]}, +backrefpage = {引用页:}, +backrefpages = {引用页:}, +} +\end{texlist} + +\item 在处理姓名相关的问题时,利用DeclareNameFormat的方式控制需要的姓和名的前后顺序,当maxbibnames和maxcitenames不一致时,可能用到last-first/first-last(biblatex3.2以前的版本)/family-given/given-family(3.3以后版本),其中第一个姓名和后面姓名的姓和名的前后顺序时不同的。可以直接利用其中的name:first-last和name:last-first或name:family-given和name:given-family宏做修改控制具体姓名成分的格式,而避免重定义DeclareNameFormat格式,详见\ref{sec:name:fmt:out} 节。 + +\item 作者年制区分文献表和引用中的作者名数量,引用相关的选项设置需要放到cbx 文件中,否则可能失效。同时因为一些特殊情况下,姓名数量截短为1个的引用标签,可能无法区分文献,所以默认情况下,biblatex会增加作者数量用于区分,这是因为uniquelist会自动重设maxcitenames和mincitenames,因此修改uniquelist选项为minyear,明确在年份也一样的情况下再利用增加姓名进行区分。*ay.bbx文件中的选项设置为: +\begin{texlist} +\ExecuteBibliographyOptions{ + useprefix = true, %名字的信息包括前缀 + %firstinits = true, %名字有缩写,参考3.1.2.3 Internal + giveninits = true, + date = year, %日期仅写到年 + %maxnames = 3 , %设置名字最大数量 + %minnames = 3, %设置缩减后的名字最小数量 + maxbibnames=3, %将文献列表和引用中最大名字数量区分开 + minbibnames=3, +} +%biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 +\ExecuteBibliographyOptions{ + useprefix = true, %名字的信息包括前缀 + firstinits = true, %名字有缩写,参考3.1.2.3 Internal + date = year, %日期仅写到年 + %maxnames = 3 , %设置名字最大数量 + %minnames = 3, %设置缩减后的名字最小数量 + maxbibnames=3, %将文献列表和引用中最大名字数量区分开 + minbibnames=3, +} +\end{texlist} + +*ay.cbx文件中的选项设置为: +\begin{texlist} +\ExecuteBibliographyOptions{ + %autocite = superscript , + %autopunct = true , + %sorting = none , + maxcitenames=1, + mincitenames=1, + uniquename=init,%因为使用了名字缩写选项,所以需要设置uniquename=init 而不是full 避免冲突 + labeldate=true, + uniquelist=minyear, +} +\end{texlist} +\end{enumerate} + +%============================ +\updateinfo[2016-11-11]{update} +\begin{enumerate} +\item 说明文档增加了版本和修改时间信息,修正了一些错误和不妥的说法,增加了一些说明比如报纸版次,报告条目域格式等,去掉一些不必要的注释,简化各样式文件内容。 + +\item 由Harry Chen提议,将english本地化文件中的参考文献标题信息改为中文的,因为本样式多在中文环境下使用,修改为中文后,printbibliography命令中不提供title信息的情况下,参考文献列表标题默认为参考文献。感谢Harry Chen在github上的commit! +修改如下: +\begin{texlist} +\DefineBibliographyStrings{english}{ +bibliography = {参考文献}, +references = {参考文献}, +%bytranslator= {\addcomma\ 译\adddot}, %将trans. by 改成 译 +bytranslator= {\addcomma\ 译},%\addperiod +and = {\addcomma},%将第2和3人名见的and符号改成 逗号,用\finalnamedelim命令也可以定义,参见3.9.1节 +%andothers = {et al.}, %将超过3个人名的省略,et al.改成为 等 +andotherscn = {等}, %将超过3个人名的省略,et al.改成为 等 +noaddress = {[S.l.]}, +nopublisher = {[s.n.]} +} +\end{texlist} + + +\item 当作者名只有一个,但又有and others表示多个作者的时候,标准样式中作者名和et al.之间是空格而不是逗号链接,但gb7714-2015要求在等之前用逗号,所以做出修改如下。 + +\begin{texlist} +%判断作者或译者是否中文,若中文用字符等,否则用etcl。 +\newbibmacro*{name:andothers}{% + \ifboolexpr{% + test {\ifnumequal{\value{listcount}}{\value{liststop}}} + and + test \ifmorenames + }% + {%这里做一个判断是在处理author还是translator用于两者是不同语言的情况 + \ifcurrentname{translator}{\testCJKfirst{\thefield{usere}}}{\testCJKfirst{\thefield{userf}}}% + %这句判断如果放到\andothersdelim后面会在等或etc.前增加一个空格,所以放前面 + \ifnumgreater{\value{liststop}}{1}% + {\finalandcomma}% + {\finalandcomma}%biblatex作者要区别单作者加等的情况,这里为符合gbt7714-2015第7.2节的要求加上了逗号。 +\andothersdelim\iftoggle{ifCJKforgbt}{\bibstring{andotherscn}}{\bibstring{andothers}}% +%\andothersdelim\bibstring{andotherscn} +}% +{}} +\end{texlist} + +\item 给report和manual驱动添加了译者域,这在实际中是用的到的,同时打印version域的格式也做了处理,并且修改中文判断函数,增加了注释符以避免带入空格,这个问题在之前体现为版本域前多了一个空格。 +\begin{texlist} +%对version的版本信息做出修改,源来自biblatex.DEF +\DeclareFieldFormat{version}{% +\testCJKfirst{\thefield{title}}% +\ifinteger{#1}% +{\iftoggle{ifCJKforgbt}{\printtext{#1版}}% +{\mkbibordedition{#1}~\bibstring{version}}}% +{#1\isdot}} +\end{texlist} + +\item 把作者年制的参考文献列表和引用中的作者名数量做区分。列表中最大为3 个,引用中最大为1个。 +(这里还有点问题,进一步修改见2016-11-14的更新。) +\begin{texlist} +%%biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 +%\ExecuteBibliographyOptions{ +% useprefix = true, %名字的信息包括前缀 +% %firstinits = true, %名字有缩写,参考3.1.2.3 Internal +% giveninits = true, +% date = year, %日期仅写到年 +% %maxnames = 3 , %设置名字最大数量 +% %minnames = 3, %设置缩减后的名字最小数量 +% maxbibnames=3, %将文献列表和引用中最大名字数量区分开 +% minbibnames=3, +% maxcitenames=1, +% mincitenames=1 +% %uniquename = init +%} +% +%%biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 +%\ExecuteBibliographyOptions{ +% useprefix = true, %名字的信息包括前缀 +% firstinits = true, %名字有缩写,参考3.1.2.3 Internal +% date = year, %日期仅写到年 +% %maxnames = 3 , %设置名字最大数量 +% %minnames = 3, %设置缩减后的名字最小数量 +% maxbibnames=3, %将文献列表和引用中最大名字数量区分开 +% minbibnames=3, +% maxcitenames=1, +% mincitenames=1 +% %uniquename = init +%} +\end{texlist} +\end{enumerate} + +%============================ +\updateinfo[2016-10-22]{update} +\begin{enumerate} +\item 修改版本判断机制,版本3.3以后的版本设置判断标签iftexlivesix为真,采用新的姓名处理机制。 +修改如下: +\begin{texlist} +\providetoggle{iftexlivesix} +%\def\versionstr{3.4} +%\def\versionstra{3.6} +%\ifx\abx@version\versionstr +%\toggletrue{iftexlivesix} +%\else +%\ifx\abx@version\versionstra +%\toggletrue{iftexlivesix} +%\else +%\togglefalse{iftexlivesix} +%\fi +%\fi +%改变版本判断机制,根据biblatex更新历史可知,版本3.3开始使用新的姓名处理机制 +%所以当版本大于3.2开始,就用设置\toggletrue{iftexlivesix} +\def\numparserta#1.#2\relax{#1}%注意relax的重要性 +\def\numparsertb#1.#2\relax{#2} +\def\numinteger{\expandafter\numparserta\abx@version\relax} +\def\numdigital{\expandafter\numparsertb\abx@version\relax} +\ifnumcomp{\numdigital}{>}{2}{\toggletrue{iftexlivesix}}{\togglefalse{iftexlivesix}} +\end{texlist} +\end{enumerate} + +%============================ +\updateinfo[2016-10-11]{update} +\begin{enumerate} +\item 真的是需求推动事物发展,秋平同学提出需要把顺序编码制的参考文献序号标签设为左对齐。 +于是可以做如下修改。需要用的可以把下面这段加进gb7714-2015.bbx中,不需要的就不用任何处理, +左对齐还是右对齐其实还是看个人喜好,我其实觉得右对齐挺好的。 +\begin{texlist} + %修改序号标签格式为左对齐,注意各参考文献内容还是对齐的, + %这样就会使得序号标签与参考文献内容的间隔增大,这个问题是没有办法解决的 + %因为采用list做具有一定宽度的序号标签,\labelwidth只能设置一个,且是最宽的标签的宽度 + %但总的来说参考文献内容对齐是合理和漂亮的, + %而标签则只能对齐一个方向,要么左对齐要么右对齐,看个人选择了。 + %\DeclareFieldFormat{shorthandwidth}{\mkbibbrackets{#1}} %源来自numeric.BBX + \DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{#1}\hfill} +\end{texlist} + +\item 测试了老电脑装的texlive2014,没有问题通过。 +\end{enumerate} + +%============================ +\updateinfo[2016-10-04]{update} +\begin{enumerate} +\item 今天广州的秋平同学使用更新后的biblatex3.6版出错。是因为bbx文件中的版本判断只有3.4和其它,所以应急加了一段对于3.6 的判断。这个问题以后可能还会出现因为biblatex会不断的更新,所以需要设计一个更合理的判断,这个等实现以后再更新。 + +\item 在说明文档中增加了一些说明,修改了一些错别字。 +\end{enumerate} + +%============================ +\updateinfo[2016-07-20]{update} +\begin{enumerate} +\item 去掉texlive2016和texlive2015选项,直接根据biblatex宏包的版本进行判断。 + +\item 增加了unpublished条目类型驱动,并按报告report进行处理,但文献标识码用Z表示。 +\end{enumerate} + +%============================ +\updateinfo[2016-07-01]{update} +\begin{enumerate} +\item 增加了pagescite命令,实现GB/T7714-2015对于引用标注中输出页码的特殊格式要求。 + +\item 测试了texlive2015,texlive2016,发现其中关于名字域格式的差异,并作出修改。增加了两个宏包选项,一个是texlive2016,另一个是texlive2015。使用texlive2016版本时,带选项texlive2016即可,其它情况带选项texlive2015 +\end{enumerate} + +%============================ +\updateinfo[2016-06-20]{update} +\begin{enumerate} +\item 利用判断CJK字符的函数,判断条目中著者,译者域是否是CJK字符,做相应的处理。 + +\item 利用范围解析函数,可对卷期等进行解析,并按GB/T7714-2015要求输出。 +\end{enumerate} + +%============================ +\updateinfo[2016-05-20]{update} +基本完成样式文件,实现的功能包括: +\begin{enumerate} +\item 实现GB/T7714-2015要求的参考文献著录格式。 + +\item 利用map功能使录入参考文献数据时不需要文献类别标识符。 + +\item 多语言文献的处理方法和条目格式。 +\end{enumerate} diff --git a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makeall.sh b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makeall.sh index e693b1c722b..d8346809b4a 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makeall.sh +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makeall.sh @@ -4,14 +4,20 @@ # exec path for tex live 2016 export PATH=${PATH}:/usr/local/texlive/2016/bin/x86_64-linux +cd ./example + ./makeclear.sh ./makefileeg.sh +cd .. + +./makeclear.sh + ./makefile.sh #clear aux files -./makeclear.sh +#./makeclear.sh 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 b9d88311784..813aaa6df76 100644 --- a/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makefile.sh +++ b/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makefile.sh @@ -6,6 +6,8 @@ export PATH=${PATH}:/usr/local/texlive/2016/bin/x86_64-linux #compile the tex file +./makeclear.sh + xelatex --synctex=-1 biblatex-gb7714-2015.tex biber biblatex-gb7714-2015 xelatex --synctex=-1 biblatex-gb7714-2015.tex @@ -14,6 +16,6 @@ xelatex --synctex=-1 biblatex-gb7714-2015.tex #clear aux files -./makeclear.sh +#./makeclear.sh diff --git a/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makeall.bat b/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makeall.bat index 3d490babdb5..e48e13bdd28 100755 --- a/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makeall.bat +++ b/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makeall.bat @@ -1,27 +1,31 @@ -:: Copyright (c) 2012-2016 hzz
-
-@echo off
-
-if exist *.userbak (
- del *.userbak /Q
-)
-FOR %%c IN (*.pdf) DO (
- copy /Y "%%c" "%%c.userbak"
-)
-if exist *.pdf (
- del *.pdf /Q
-)
-
-::pause
-
-call makeclear
-
-call makefileeg
-
-call makefile
-
-::call makeclear
-
-if exist *.userbak (
- del *.userbak /Q
+:: Copyright (c) 2012-2016 hzz + +@echo off + +if exist *.userbak ( + del *.userbak /Q +) +FOR %%c IN (*.pdf) DO ( + copy /Y "%%c" "%%c.userbak" +) +if exist *.pdf ( + del *.pdf /Q +) + +::pause + +cd example + +call makefileeg + +cd .. + +call makeclear + +call makefile + +::call makeclear + +if exist *.userbak ( + del *.userbak /Q )
\ No newline at end of file diff --git a/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makeclear.bat b/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makeclear.bat index 5332d6f9113..15f275bbb71 100644 --- a/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makeclear.bat +++ b/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makeclear.bat @@ -1,5 +1,5 @@ -@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 *.synctex(busy)
-del /q *.nav *.snm *.vrb
+@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 *.synctex(busy) +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 c3eefd31974..e1e1245ba40 100755 --- a/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefile.bat +++ b/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefile.bat @@ -1,26 +1,26 @@ -:: Copyright (c) 2012-2016 hzz
-
-@echo off
-
-
-:: compile the tex file
-
-call makeclear
-
-::pause
-
-echo biblatex-gb7714-2015.tex >> makecompilerec.dat
-
-xelatex.exe --synctex=-1 biblatex-gb7714-2015.tex
-
-biber biblatex-gb7714-2015
-
-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
-
+:: Copyright (c) 2012-2016 hzz + +@echo off + + +:: compile the tex file + +call makeclear + +::pause + +echo biblatex-gb7714-2015.tex >> example/makecompilerec.dat + +xelatex.exe --synctex=-1 biblatex-gb7714-2015.tex + +biber biblatex-gb7714-2015 + +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 + diff --git a/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefileegtest.bat b/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefileegtest.bat deleted file mode 100755 index f00d1cac364..00000000000 --- a/Master/texmf-dist/source/latex/biblatex-gb7714-2015/makefileegtest.bat +++ /dev/null @@ -1,13 +0,0 @@ -:: Copyright (c) 2012-2016 hzz
-
-@echo off
-
-
-:: compile the tex file
-
-xelatex.exe --synctex=-1 egtest.tex
-biber egtest
-xelatex.exe --synctex=-1 egtest.tex
-
-
-
diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx index e1d62786091..346898f9f66 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 @@ -6,74 +6,87 @@ %% history: %% 2016/05/20 v1.0 2016/10/23 v1.0a 2016/11/11 v1.0b %% 2016/11/14 v1.0c 2016/11/24 v1.0d 2016/12/07 v1.0e -%% 2017/02/26 v1.0g 2017/04/11 v1.0h -%% 2017/11/21 v1.0i +%% 2017/02/26 v1.0g 2017/04/11 v1.0h 2017/11/21 v1.0i +%% 2018/01/20 v1.0j 2018/04/03 v1.0k %% E-mail: hzzmail@163.com %% Released under the LaTeX Project Public License v1.3c or later %% --------------------------------------------------------------- %% -\ProvidesFile{gb7714-2015.bbx}[2017/11/21 v1.0i biblatex bibliography style] +% +% 版本和时间信息 +% +\ProvidesFile{gb7714-2015.bbx}[2018/04/03 v1.0k biblatex bibliography style] +\def\versionofgbtstyle{2018/04/03 v1.0k} +\def\versionofbiblatex{\abx@version} %===================================================================== +% 加载标准样式 %===================================================================== -%加载标准样式 -%===================================================================== -\RequireBibliographyStyle{numeric-comp}%Load the standard style to avoid copy-pasting unnecessary material +\RequireBibliographyStyle{numeric-comp} \RequireBibliographyStyle{standard} -\RequirePackage{xstring}%为兼容texlive2015的biblatex3.0不加载xstring包的问题 +\RequirePackage{xstring}%解决texlive2015的biblatex3.0不加载xstring包的问题 %===================================================================== +% 功能函数 %===================================================================== -%新增功能函数 -%===================================================================== - %版本判断 - \providetoggle{iftlfive}%用于处理biblatex3.2之前的版本,即texlive2015以下版本中的biblatex - \providetoggle{iftlsix}%用于处理biblatex3.3开始改变的新的姓名机制后版本,包括 + % + % biblatex版本判断 + % 20180405,v1.0k,为兼容biblatexv3.11增加toggle:iftlnine,HU zhenzhen + % + % 原理方法:当版本继续更新时,增加一个新的toggle用以处理新的旧版,最新版和未判断出来的版本永远用iftlatest + \providetoggle{iftlfive}%用于处理biblatex3.2之前的版本 + \providetoggle{iftlsix}%用于处理biblatex3.3开始改变的新的姓名机制后版本 \providetoggle{iftlseven}%用于处理biblatex3.7的兼容性 - \providetoggle{iftleight}%用于处理>=biblatex3.8的兼容性 - \providetoggle{iftlnine}%用于处理>=biblatex3.10的兼容性 - \StrBefore{\abx@version}{.}[\numinteger] - \StrBehind{\abx@version}{.}[\numdigital] + \providetoggle{iftleight}%用于处理biblatex3.8到3.9的兼容性 + \providetoggle{iftlnine}%用于处理biblatex10的兼容性 + \providetoggle{iftlatest}%用于最新版biblatex,目前是biblatex3.11,20180402 + \StrBefore{\abx@version}{.}[\numinteger]%以点区分整数和小数 + \StrBehind{\abx@version}{.}[\numdigital]%小数部分可能带字母所以需将其去掉,见下一行代码 \IfInteger{\numdigital}{}{\StrGobbleRight{\numdigital}{1}[\numdigital]} - %2.x版本统一用iftlfive=true表示 - %3.0-3.2版本用iftlfive=true表示 - %3.3-3.6版本用iftlsix=true表示 - %3.7版本用iftlseven=true表示 - %>3.8版本用iftleight=true表示 + \togglefalse{iftlfive} + \togglefalse{iftlsix} + \togglefalse{iftlseven} + \togglefalse{iftleight} + \togglefalse{iftlnine} + \toggletrue{iftlatest} \ifnumcomp{\numinteger}{=}{3}{ - \ifnumcomp{\numdigital}{>}{2}{\toggletrue{iftlsix}\togglefalse{iftlfive}}{\togglefalse{iftlsix}\toggletrue{iftlfive}} - \ifnumcomp{\numdigital}{>}{6}{\toggletrue{iftlseven}\togglefalse{iftlsix}}{\togglefalse{iftlseven}} - \ifnumcomp{\numdigital}{>}{7}{\toggletrue{iftleight}\togglefalse{iftlseven}}{\togglefalse{iftleight}} - \ifnumcomp{\numdigital}{>}{9}{\toggletrue{iftlnine}\togglefalse{iftleight}}{\togglefalse{iftlnine}} + \ifnumcomp{\numdigital}{=}{10}{\toggletrue{iftlnine}\togglefalse{iftlatest}}{}%3.10版本 + \ifnumcomp{\numdigital}{<}{10}{\ifnumcomp{\numdigital}{>}{7}{\toggletrue{iftleight}\togglefalse{iftlatest}}{}}{}%>3.8版本用iftleight=true表示 + \ifnumcomp{\numdigital}{=}{7}{\toggletrue{iftlseven}\togglefalse{iftlatest}}{}%3.7版本用iftlseven=true表示 + \ifnumcomp{\numdigital}{<}{7}{\ifnumcomp{\numdigital}{>}{2}{\toggletrue{iftlsix}\togglefalse{iftlatest}}{}}{}%3.3-3.6版本用iftlsix=true表示 + \ifnumcomp{\numdigital}{<}{3}{\toggletrue{iftlfive}\togglefalse{iftlatest}}{}%3.0-3.2版本用iftlfive=true表示 }{\ifnumcomp{\numinteger}{>}{3}{ - \toggletrue{iftleight}\blx@warning@noline{% + \blx@warning@noline{% biblatex version is >= 4.x.\MessageBreak if errors raised,Please contact biblatex-gb7714-2015 pkg author.}% - }{\toggletrue{iftlfive}\blx@warning@noline{% + }{ \toggletrue{iftlfive}\togglefalse{iftlatest}%2.x版本统一用iftlfive=true表示 + \blx@warning@noline{% biblatex version is <= 2.x.\MessageBreak if errors raised,Please contact biblatex-gb7714-2015 pkg author.}% }} \newcommand\defversion[2]{\csdef{codeversion#1#2}}%定义不同版本的命令 \newcommand\switchversion[2]{\csuse{codeversion#1#2}}%使用不同版本的命令 - %定义判断中文字符的函数,用于判断作者等信息是否由中文字符构成 - %2E00-2E7F 追加标点 - %2E80-2EFF cjk部首补充 - %2FF0-2FFF 表意文字描述符 - %3000-303F cjk符号和标点 - %3300-33FF cjk兼容 - %3400-4DBF cjk统一表意符号扩展 - %4E00-9FBF cjk统一表意符号 - %中文范围4E00-9FA5 + % + % 判断CJK字符的函数,用于判断作者等信息是否由中文字符构成 + % + % 原理方法: + % 2E00-2E7F 追加标点 + % 2E80-2EFF cjk部首补充 + % 2FF0-2FFF 表意文字描述符 + % 3000-303F cjk符号和标点 + % 3300-33FF cjk兼容 + % 3400-4DBF cjk统一表意符号扩展 + % 4E00-9FBF cjk统一表意符号 + % 中文范围4E00-9FA5 \providetoggle{ifCJKforgbt} \def\testCJKfirstchar#1#2&{%#1#2& \ifnumgreater{`#1}{"2E7F}{\toggletrue{ifCJKforgbt}}{\togglefalse{ifCJKforgbt}}% }% - - %利用edef展开或xstring抽取第一个字符判断 - %现在采用xstring方法,避免抽取的是编组符号 + % 利用edef展开或xstring抽取第一个字符判断 + % 现在采用xstring方法,避免抽取的是编组符号 \def\testCJKfirst#1{% %\edef\tempa{#1}% %\expandarg%\noexpandarg @@ -81,76 +94,130 @@ \StrChar{#1}{1}[\tempa]% \expandafter\testCJKfirstchar\tempa&} - %用于解析连续出版物,2个卷期的情况 - %范围起止间隔符号还是用-,而不是与date相同的/,因为有合期期刊的问题,需要用到/符号 + % + % 2个卷的解析函数,用于连续出版物 + % + % 原理方法: 范围起止间隔符号还是用-,而不是与date相同的/,因为有合期期刊的问题,需要用到/符号 \newcommand{\multivolparser}[1]{% \IfSubStr{#1}{-}% {\StrBefore{#1}{-}[\multivolfirst]\StrBehind{#1}{-}[\multivolsecond]}% {\def\multivolfirst{#1}\def\multivolsecond{}}% } + + % + % 2个期的解析函数,用于连续出版物 + % \newcommand{\multinumberparser}[1]{% \IfSubStr{#1}{-}% {\StrBefore{#1}{-}[\multinumberfirst]\StrBehind{#1}{-}[\multinumbersecond]}% {\def\multinumberfirst{#1}\def\multinumbersecond{}}% } + %===================================================================== +% 设置宏包选项 %===================================================================== -%设置宏包选项 -%===================================================================== -\defversion{3.0}{opt}{ - %biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 - %增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015无效,仍然为右对齐模式,因为舍弃了list类环境后出错。 - \DeclareBibliographyOption{align}[right]{%texlive2015中的3.0版中的DeclareBibliographyOption选项没有类型说明 - \ifstrequal{##1}{right}{}{} - \ifstrequal{##1}{left}{\setalignleft}{} - \ifstrequal{##1}{gb7714-2015}{}{} - } - - %增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 + % + % 增加一个控制是否输出文献类型和载体标识的选项 + % + % 原理方法: + % 对于biblatex3.4以上版本DeclareBibliographyOption命令中的[datatype]如果是boolean,那么是可以省略的 + % 所以用老版本的不用[datatype]的命令可以兼容所有biblatex版本 + \newtoggle{bbx:gbtype} + %\DeclareBibliographyOption[boolean]{gbtype}[true]{%biblatex高版本 + \DeclareBibliographyOption{gbtype}[true]{%biblatex低版本 + \settoggle{bbx:gbtype}{#1}} + \ExecuteBibliographyOptions{gbtype} + + + % + % 增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 + % \newtoggle{bbx:gbpub} \DeclareBibliographyOption{gbpub}[true]{% %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 - \ifstrequal{##1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} + \ifstrequal{#1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} \ExecuteBibliographyOptions{gbpub} - %增加一个处理佚名或noauthor的控制选项 - %因为在顺序编码制中,不需要使用,这里也增加,为了与作者年制的兼容性考虑。 + + % + % 增加一个处理佚名或noauthor的控制选项 + % + % 原理方法:因为在顺序编码制中,不需要使用,这里也增加,为了与作者年制的兼容性考虑。 \DeclareBibliographyOption{gbnoauthor}[true]{}% + +% +% 针对biblatex<3.3版本的选项设置,比如texlive2015中的3.0版 +% +\defversion{3.0}{opt}{ + % + % 增加姓名大小写格式处理选项 + % + \DeclareBibliographyOption{gbnamefmt}[uppercase]{% + %\ifstrequal{##1}{gbuppercase}{}{}% + \ifstrequal{##1}{lowercase}{\execgblowercase}{}% + \ifstrequal{##1}{none}{\execnamedefault}{} + \ifstrequal{##1}{pinyin}{\execnamepinyin}{} + } + %\ExecuteBibliographyOptions{gbnamefmt} + + % + % 增加标签对齐选项 + % + % 原理方法:right是默认的右对齐,left是左对齐,gb7714-2015无效,仍然为右对齐模式, + % 因为在这种biblatex低版本中,舍弃了list类环境后,会出错。 + % 注意:texlive2015中的3.0版中的DeclareBibliographyOption选项没有类型说明 + \DeclareBibliographyOption{gbalign}[right]{% + \ifstrequal{##1}{right}{}{} + \ifstrequal{##1}{left}{\setalignleft}{} + \ifstrequal{##1}{gb7714-2015}{}{} + } + + % + % 选项设置 + % \ExecuteBibliographyOptions{ sorting=none, useprefix=true, %名字的信息包括前缀 - firstinits=true, %名字有缩写,参考3.1.2.3 Internal + firstinits=true, %名字有缩写,参考3.1.2.3 Internal %giveninits=true, date = year, %日期仅写到年 - maxnames = 3 , %设置名字最大数量 - minnames = 3 %设置缩减后的名字最小数量 + maxnames = 3,%设置名字最大数量 + minnames = 3 %设置缩减后的名字最小数量 %uniquename = init } } + +% +% 针对3.3<=biblatex<3.5版本的选项设置,比如texlive2016中的3.4版 +% \defversion{3.4}{opt}{ - % Alter settings that carry through from biblatex - %biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 - %增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 - \DeclareBibliographyOption[string]{align}[right]{% + % + % 增加姓名大小写格式处理选项 + % + \DeclareBibliographyOption[string]{gbnamefmt}[uppercase]{% + %\ifstrequal{##1}{gbuppercase}{}{}% + \ifstrequal{##1}{lowercase}{\execgblowercase}{}% + \ifstrequal{##1}{none}{\execnamedefault}{} + \ifstrequal{##1}{pinyin}{\execnamepinyin}{} + } + %\ExecuteBibliographyOptions{gbnamefmt} + + % + % 增加标签对齐选项 + % + % right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 + \DeclareBibliographyOption[string]{gbalign}[right]{% \ifstrequal{##1}{left}{\setalignleft}{} \ifstrequal{##1}{gb7714-2015}{\setaligngbstyle}{} } - %增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 - \newtoggle{bbx:gbpub} - \DeclareBibliographyOption[boolean]{gbpub}[true]{% - %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 - \ifstrequal{##1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} - \ExecuteBibliographyOptions{gbpub} - - %增加一个处理佚名或noauthor的控制选项 - %因为在顺序编码制中,不需要使用,这里也增加,为了与作者年制的兼容性考虑。 - \DeclareBibliographyOption[boolean]{gbnoauthor}[true]{}% - + % + % 选项设置 + % \ExecuteBibliographyOptions{ sorting=none, useprefix=true, %名字的信息包括前缀 @@ -163,25 +230,34 @@ } } + +% +% 针对3.7<=biblatex<=3.9版本的选项设置,比如texlive2017中的3.7版 +% \defversion{3.7}{opt}{ - %biblatex3.7版后(比如texlive2017中的3.7版)的使用方式 - %增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 - \DeclareBibliographyOption[string]{align}[right]{% + % + % 增加姓名大小写格式处理选项 + % + \DeclareBibliographyOption[string]{gbnamefmt}[uppercase]{% + %\ifstrequal{##1}{gbuppercase}{}{}% + \ifstrequal{##1}{lowercase}{\execgblowercase}{}% + \ifstrequal{##1}{none}{\execnamedefault}{} + \ifstrequal{##1}{pinyin}{\execnamepinyin}{} + } + %\ExecuteBibliographyOptions{gbnamefmt} + + % + % 增加标签对齐选项 + % + % right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 + \DeclareBibliographyOption[string]{gbalign}[right]{% \ifstrequal{##1}{left}{\setalignleft}{} \ifstrequal{##1}{gb7714-2015}{\setaligngbstyle}{} } - %增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 - \newtoggle{bbx:gbpub} - \DeclareBibliographyOption[boolean]{gbpub}[true]{% - %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 - \ifstrequal{##1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} - \ExecuteBibliographyOptions{gbpub} - - %增加一个处理佚名或noauthor的控制选项 - %因为在顺序编码制中,不需要使用,这里也增加,为了与作者年制的兼容性考虑。 - \DeclareBibliographyOption[boolean]{gbnoauthor}[true]{}% - + % + % 选项设置 + % \ExecuteBibliographyOptions{ sorting=none, useprefix=true, %名字的信息包括前缀 @@ -196,25 +272,33 @@ } } +% +% 针对3.10<=biblatex版本的选项设置,比如texlive2018中的3.11版 +% \defversion{3.10}{opt}{ - %biblatex3.7版后(比如texlive2017中的3.7版)的使用方式 - %增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 - \DeclareBibliographyOption[string]{align}[right]{% + % + % 增加姓名大小写格式处理选项 + % + \DeclareBibliographyOption[string]{gbnamefmt}[uppercase]{% + %\ifstrequal{##1}{gbuppercase}{}{}% + \ifstrequal{##1}{lowercase}{\execgblowercase}{}% + \ifstrequal{##1}{none}{\execnamedefault}{} + \ifstrequal{##1}{pinyin}{\execnamepinyin}{} + } + %\ExecuteBibliographyOptions{gbnamefmt} + + % + % 增加标签对齐选项 + % + % right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 + \DeclareBibliographyOption[string]{gbalign}[right]{% \ifstrequal{##1}{left}{\setalignleft}{} \ifstrequal{##1}{gb7714-2015}{\setaligngbstyle}{} } - %增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 - \newtoggle{bbx:gbpub} - \DeclareBibliographyOption[boolean]{gbpub}[true]{% - %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 - \ifstrequal{##1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} - \ExecuteBibliographyOptions{gbpub} - - %增加一个处理佚名或noauthor的控制选项 - %因为在顺序编码制中,不需要使用,这里也增加,为了与作者年制的兼容性考虑。 - \DeclareBibliographyOption[boolean]{gbnoauthor}[true]{}% - + % + % 选项设置 + % \ExecuteBibliographyOptions{ sorting=none, useprefix=true, %名字的信息包括前缀 @@ -229,56 +313,69 @@ } } -\iftoggle{iftlfive} - {\switchversion{3.0}{opt}}%%当采用texlive2015以下版本时,biblatex3.0 - {\iftoggle{iftlsix}% - {\switchversion{3.4}{opt}}%%当采用texlive2016版本时,biblatex3.4 - {\iftoggle{iftlnine}% - {\switchversion{3.10}{opt}}%%当采用biblatex3.10以上版本时 - {\switchversion{3.7}{opt}}%%当采用biblatex3.4以上版本时 - } - } + +% +% 根据biblatex版本信息,选择选项设置 +% +% 原理方法:如下这种选择机制能自动兼容新的版本,但对于老版本 +% 必须要把情况列全。 +\iftoggle{iftlfive}{\switchversion{3.0}{opt}}{}%biblatex<=3.2 +\iftoggle{iftlsix}{\switchversion{3.4}{opt}}{}%3.3<=biblatex<=3.6 +\iftoggle{iftlseven}{\switchversion{3.7}{opt}}{}%biblatex=3.7 +\iftoggle{iftleight}{\switchversion{3.7}{opt}}{}%3.8<=biblatex<=3.9 +\iftoggle{iftlnine}{\switchversion{3.10}{opt}}{}%biblatex=3.10 +\iftoggle{iftlatest}{\switchversion{3.10}{opt}}{}%biblatex最新3.11 %===================================================================== +% 设置本地化字符串 %===================================================================== -%设置本地化字符串 -%===================================================================== - %新建一个当地化字符串,用来记录“等”字符 + % + % 新建当地化字符串,用来记录“等”字符 + % \NewBibliographyString{andotherscn} \NewBibliographyString{noaddress} \NewBibliographyString{nopublisher} - %直接利用当地化格式english进行修改一些中文的格式,具体可以修改哪些,参考english.lbx文件 - %当然也可以增加比如上面定义的andotherscn - %注意:在lbx文件和bbx文件中定义本地字符串的不同语法,两个参数和一个参数的区别 + % + % 修改一些当地化字符串 + % + % 原理方法:直接利用当地化格式english修改出一些中文的格式,具体修改内容参考english.lbx文件 + % 当然也可以增加比如上面定义的andotherscn + % 注意:在lbx文件和bbx文件中定义本地字符串的不同语法,两个参数和一个参数的区别 \DefineBibliographyStrings{english}{ bibliography = {参考文献}, references = {参考文献}, %bytranslator= {\addcomma\ 译\adddot}, %将trans. by 改成 译 bytranslator= {\addcomma\ 译},%\addperiod and = {\addcomma},%将第2和3人名见的and符号改成 逗号,用\finalnamedelim命令也可以定义,参见3.9.1节 - %andothers = {et al.}, %将超过3个人名的省略,et al.改成为 等 - andotherscn = {等}, %将超过3个人名的省略,et al.改成为 等 + %andothers = {et al.}, %将超过3个人名的省略,et al.改成为 等 + andotherscn = {等}, %将超过3个人名的省略,et al.改成为 等 noaddress = {[S.l.]}, nopublisher = {[s.n.]}, - backrefpage = {引用页:}, - backrefpages = {引用页:}, + backrefpage = {引用页:}, + backrefpages = {引用页:}, } + %===================================================================== +% 动态数据修改,修改输入的源文件数据,用于中文判断等 %===================================================================== -%动态数据修改,修改输入的源文件数据,用于中文判断等 -%===================================================================== -%修改输入的源文件数据,用于中文判断等操作 -%首先把作者和译者信息准确的记录到userf,usere中,用于后面判断是否是cjk字符。 -%注意这里用userf,usere而不是namee,namef,是因为只有把name列表转成域,才能有效读取姓名中的字符, -%如果用namee,namef,name信息会自动解析,所以就不能为cjk判断提供需要的信息 -%注意\DeclareSourcemap命令只能出现一次 +% +% 修改输入的参考文献数据,源文件层的操作 +% +% 原理方法:增加文献标识符如[M],[J]等 +% 把作者和译者信息准确的记录到userf,usere中,用于后面判断是否是cjk字符。 +% 注意:这里用userf,usere而不是namee,namef,是因为只有把name列表转成域,才能有效读取姓名中的字符, +% 如果用namee,namef,name信息会自动解析,所以就不能为cjk判断提供需要的信息 +% 注意\DeclareSourcemap命令对于biblatex3.11以下版本只能出现一次,3.11版开始支持多个 \DeclareSourcemap{ -\maps[datatype=bibtex]{%增加文献标识符如[M],[J]等,下面首先生成这一信息 - \map{%使用下面biber动态修改bbl文件的方法是正确的 +\maps[datatype=bibtex]{% + \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 + \step[fieldsource={author}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] + } + \map{% %\perdatasource{examples.bib} \pertype{article} \step[fieldset=usera, fieldvalue={J}] @@ -286,9 +383,9 @@ \map{ \pertype{periodical} \step[fieldset=usera, fieldvalue={J}] - \step[fieldsource=author] %有时会把author和editor混淆,这里处理后就没有这个问题 + \step[fieldsource=author] %有时会把author和editor混淆,处理后避免该问题 \step[fieldset=editor, origfieldval] - \step[fieldsource=publisher] %有时会把publisher和institution混淆,这里处理后就没有这个问题 + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后避免该问题 \step[fieldset=institution, origfieldval] } \map{ @@ -300,7 +397,7 @@ \pertype{book} \pertype{inbook} \step[fieldset=usera, fieldvalue={M}] - \step[fieldsource=version] %有时会把version和edition混淆,这里处理后就没有这个问题,可以直接用version + \step[fieldsource=version] %有时会把version和edition混淆,处理后避免该问题,可以直接用version \step[fieldset=edition, origfieldval] } \map{ @@ -316,7 +413,7 @@ \pertype{inproceedings} \pertype{conference}%兼容老的conference类型 \step[fieldset=usera, fieldvalue={C}] - \step[fieldsource=institution] %有时会把publisher和institution混淆,这里处理后就没有这个问题 + \step[fieldsource=institution] %有时会把publisher和institution混淆,处理后避免该问题 \step[fieldset=publisher, origfieldval] \step[fieldsource=editor] % \step[fieldset=bookauthor, origfieldval] @@ -324,7 +421,7 @@ \map{ \pertype{proceedings} \step[fieldset=usera, fieldvalue={C}] - \step[fieldsource=institution] % + \step[fieldsource=institution] %有时会把publisher和institution混淆,这里处理后就没有这个问题 \step[fieldset=publisher, origfieldval] \step[fieldsource=editor] %有的时候可能只填写了编者,没有author,把它复制一下 \step[fieldset=author, origfieldval] @@ -333,7 +430,7 @@ \pertype{report} \pertype{techreport}%兼容老的techreport类型 \step[fieldset=usera, fieldvalue={R}] - \step[fieldsource=publisher] %有时会把publisher和institution混淆,这里处理后就没有这个问题 + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后避免该问题 \step[fieldset=institution, origfieldval] } \map{ @@ -351,9 +448,9 @@ \map{ \pertype{manual} \step[fieldset=usera, fieldvalue={A}] - \step[fieldsource=edition] %有时会把version和edition混淆,这里处理后就没有这个问题,可以直接用version + \step[fieldsource=edition] %有时会把version和edition混淆,处理后避免该问题,可以直接用version \step[fieldset=version, origfieldval] - \step[fieldsource=organization]%因为用的report的驱动,所以需要institution域,也把organization转成它,这样增大兼容性 + \step[fieldsource=organization]%因为用的report的驱动,所以需要institution域,把organization转成它以增强兼容性 \step[fieldset=institution, origfieldval] } \map{ @@ -378,15 +475,15 @@ \step[fieldsource=year] \step[fieldset=date, origfieldval] } - \map{%title - \step[fieldsource={title}, match=\regexp{([^\\\{])}] + \map{%将title信息保存到userd中避免因为标签生成原因导致title域被清除 + \step[fieldsource=title, match=\regexp{([^\\\{])}]%} \step[fieldset=userd, fieldvalue={$1}] } \map{%将entrykey放入keywords中用于后期的使用 \step[fieldsource=entrykey] \step[fieldset=keywords, origfieldval] } - \map[overwrite]{%这里还必须有overwrite,怎么之前会觉得没有问题呢,可能是之前版本拷错了,还是之前是texlive2015变16后biber有了变化(2016-1207修改正确) + \map[overwrite]{%这里还必须有overwrite,注意不同版本存在差异,比如texlive2015变16后biber有变化(20161207修改正确) \step[fieldsource=note, final]%将note域信息复制给keywords,用于输出时容易区分标准和报纸 \step[fieldset=keywords, fieldvalue={,}, append] \step[fieldset=keywords, origfieldval, append] @@ -394,6 +491,11 @@ } } + +% +% 修改输入的参考文献数据,样式层的操作 +% +% 原理方法:因为biblatex3.0版的map不使用foreach选项,所以需要一个一个写,以处理特殊字符 \defversion{3.0}{map}{ \DeclareStyleSourcemap{ \maps[datatype=bibtex]{ @@ -454,6 +556,10 @@ } } +% +% 修改输入的参考文献数据,样式层的操作 +% +% 原理方法:biblatex3.4以上版本 \defversion{3.4}{map}{ \DeclareStyleSourcemap{ \maps[datatype=bibtex]{ @@ -495,31 +601,37 @@ } \iftoggle{iftlfive}% - {\switchversion{3.0}{map}}% - {\switchversion{3.4}{map}} + {\switchversion{3.0}{map}}%%当采用biblatex<=3.2版本时 + {\switchversion{3.4}{map}}%%当采用3.3<=biblatex版本时 \DeclareBibliographyAlias{newspaper}{article}%定义驱动别名,尝试以替代驱动层映射,实践表明是可行的。 %===================================================================== +% 参考文献表环境 %===================================================================== -%参考文献表环境 -%===================================================================== -%默认的参考文献列表格式,放这里作为参考 + +% +% 默认的参考文献列表格式,放这里作为参考 +% %\defbibenvironment{bibliography} -%修改序号标签格式为左对齐,注意各参考文献内容还是对齐的, -%这样就会使得序号标签与参考文献内容的间隔增大,这个问题是没有办法解决的 -%因为采用list做具有一定宽度的序号标签,\labelwidth只能设置一个,且是最宽的标签的宽度 -%但总的来说参考文献内容对齐是合理和漂亮的, -%而标签则只能对齐一个方向,要么左对齐要么右对齐,看个人选择了。 -%\DeclareFieldFormat{shorthandwidth}{\mkbibbrackets{#1}} %源来自numeric.BBX -%\DeclareFieldFormat{labelnumberwidth}{\ttfamily\mkbibbrackets{#1}\hfill} -%\iftoggle{alignleft}{\DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{#1}\hfill}}{}%这种方式无效是因为加载时就已经展开了。 -%修改序号标签格式为左对齐 +% +% 顺序编码制标签对齐方式处理 +% +% 原理方法:修改序号标签格式为左对齐,注意各参考文献内容还是对齐的, +% 这样就会使得序号标签与参考文献内容的间隔增大,这个问题是没有办法解决的 +% 因为采用list做具有一定宽度的序号标签,\labelwidth只能设置一个,且是最宽的标签的宽度 +% 但总的来说参考文献内容对齐是合理和漂亮的, +% 而标签则只能对齐一个方向,要么左对齐要么右对齐,看个人选择了。 +% \DeclareFieldFormat{shorthandwidth}{\mkbibbrackets{#1}} %源来自numeric.BBX +% \DeclareFieldFormat{labelnumberwidth}{\ttfamily\mkbibbrackets{#1}\hfill} +% \iftoggle{alignleft}{\DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{#1}\hfill}}{}%这种方式无效是因为加载时就已经展开了。 +% +% 修改序号标签格式为左对齐 \def\setalignleft{\DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{##1}\hfill}} - -%修改序号标签格式为以各条参文献为基础进行对齐的方式,即序号与条目内容间隔相等的方式。 +% +% 修改序号标签格式为以各条参文献为基础进行对齐的方式,即序号与条目内容间隔相等的方式。 \def\setaligngbstyle{% \def\blx@bibitem##1{% \blx@ifdata{##1} @@ -568,43 +680,54 @@ %===================================================================== +% 设置单元或块等的标点 %===================================================================== -%设置单元或块等的标点 -%===================================================================== -\renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉,%来源biblatex2.STY -\renewcommand*{\revsdnamepunct}{}%%来源biblatex.def +\renewrobustcmd*{\bibinithyphendelim}{\addhighpenspace}%用于处理姓名中名部分存在-的情况,比如ZHANG Yu-xin \renewcommand*{\subtitlepunct}{\addcolon\space} %修改标题和其它标题信息间的标点,来源biblatex.def, -%双语言或多语言的参考文献,可以参考3.11.5 Entry Sets,4.11.1 Entry Sets -%这里调整一下两种语言参考文献的间隔,源来自biblatex.def -%%双语之间用newline替换par(20170411 v1.0h),避免采用gb7714-2015的项对齐方式第二语言间分段导致没有缩进 +% +% 利用set实现的多语言文献不同语言间的分隔符 +% 20170411,双语之间用newline替换par,避免采用gb7714-2015的项对齐方式第二语言间分段导致没有缩进 +% +% 原理方法:set方法可以参考3.11.5 Entry Sets,4.11.1 Entry Sets +% 这里调整一下两种语言参考文献的间隔,源来自biblatex.def \renewcommand*{\entrysetpunct}{\adddot\newline\nobreak} \renewcommand*{\bibpagespunct}{\addcolon\addthinspace}%%页码引用格式的修改,修改为用冒号 %===================================================================== +% 修改域的格式,重定义域的输出宏 %===================================================================== -%修改域的格式,重定义域的输出宏 -%===================================================================== -%新增文献类型标识符的格式 +% +% 新增文献类型标识符的格式 +% \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}} -%重设title的输出格式,不加emph,原格式来自biblatex.def文件 +% +% 重设title等参考文献信息的输出格式 +% +% 原理方法:修改来自biblatex.def文件的原格式 \DeclareFieldFormat{title}{#1\adddot\addthinspace}% \DeclareFieldFormat{journaltitle}{#1\isdot} \DeclareFieldFormat{issuetitle}{#1} @@ -615,12 +738,43 @@ {title}{#1\adddot\addthinspace}%\mkbibquote{#1\isdot} \DeclareFieldFormat%将期刊等文献的标题中原来带的引号去掉 [inbook,incollection,inproceedings] - {title}{#1\nopunct\unspace}% + {title}{#1\nopunct\unspace} \DeclareFieldFormat{url}{\url{#1}} %%url相关输出,url域修改如本行,源来自biblatex.def +% +% 标题的字母大小写格式修改 +% +% 注意:修改标题的字母大小写,不同用前面的title的格式而要用titlecase +% 因为titlecase is applied to the contents of the field directly,title is not \DeclareFieldFormat{titlecase}{\MakeCapital#1}%重设标题格式,将其修改为首字母大写 \DeclareFieldFormat{pages}{#1}%去掉前面引导页码的pp.等字符,\mkpageprefix[bookpagination]{#1} +\DefineBibliographyExtras{english}{\renewcommand*{\bibrangedash}{-}}%将页码间隔符替换会英文的短横线 + +% +% 文献标题后的标点问题 +% 20180405,v1.0k,为texlive2017以上版本中的beamer兼容性做的处理,Hu Zhenzhen +% +% 原理方法:如下代码处理texlive2017以上版本中,beamer中文献的标题后出现两个点的情况: +% texlive2017以上的beamer中对macro{title}做了patch,正常情况下不会出现两个点的情况,但由于 +% 之前为了处理texlive2015,2016下的title格式添加了adddot,导致出现两个点的情况,而且也影响 +% 析出文献的//符号的输出,因此再次对macro{title}做patch消除beamer中做apptocmd时添加的\newunitpunct +\ifboolexpr{% + test{\iftoggle{iftlfive}} + or + test{\iftoggle{iftlsix}} + }{}% + {%texlive 2017对应iftlseven以上版本 + \DeclareFieldFormat{title}{#1}% + \DeclareFieldFormat[article,patent,thesis,unpublished]{title}{#1} + \AtBeginDocument{% + \@ifclassloaded{beamer} + {\patchcmd{\abx@macro@title}{\newunitpunct}{}{}{}}{}} + } -%修改译者位置格式,bytranslator+others原格式来自biblatex.def文件 + +% +% 修改译者位置格式 +% +% 原理方法:修改来自biblatex.def文件的bytranslator+others宏的格式 \renewbibmacro*{bytranslator+others}{% \ifnameundef{translator} {} @@ -633,11 +787,15 @@ \newunit}% \usebibmacro{withothers}} -%下面一段没有作用,但从中可以看到当地化字符串格式的引用前的代码处理 -%比如生成cotranslator等用于调用cotranslator所代表的当地化字符串 +% +% 下面一段没有用,但从中可以看到当地化字符串格式的引用前的代码处理 +% 比如生成cotranslator等用于调用cotranslator所代表的当地化字符串 %\renewbibmacro*{bytranslator+othersstrg}{% -%判断作者或译者是否中文,若中文用字符等,否则用etcl。 +% +% 修改作者数量超过限定值,做省略时的处理格式 +% +% 原理方法:判断作者或译者是否中文,若中文用字符等,否则用etcl。 \renewbibmacro*{name:andothers}{% \ifboolexpr{% test {\ifnumequal{\value{listcount}}{\value{liststop}}} @@ -655,11 +813,16 @@ }% {}} -%重设title的输出,将文献类型标识符输出出去,原输出来自biblatex.def文件 + +% +% 重设title的输出 +% +% 原理方法:将文献类型标识符输出出去,原输出来自biblatex.def文件 +% 利用toggle做标识符是否输出的判断 \renewbibmacro*{title}{% \ifboolexpr{% test{\iffieldundef{title}}% - and% + and test{\iffieldundef{subtitle}}% }% {}% @@ -670,18 +833,24 @@ \printfield[titlecase]{subtitle}}% \iffieldundef{titleaddon}{}%判断一下titleaddon,否则直接加可能多一个空格 {\setunit{\subtitlepunct}\printfield{titleaddon}}% + \iftoggle{bbx:gbtype}{% \iffieldundef{note}{\printfield[gbtypeflag]{usera}}%在标题后直接给出文献标识字母,判断一下,是否是报纸和标准 {\iffieldequalstr{note}{standard}{\printfield[gbtypeflags]{usera}}%判断是否为标准 {\iffieldequalstr{note}{news}{\printfield[gbtypeflagn]{usera}}%判断是否为报纸 {\printfield[gbtypeflag]{usera}}}%其它 - }% + }}{}% %\iffieldundef{booktitle}{\newunit}{}%当title是析出时,不要标点 %\newunit - }% }% -} +}} +% +% 作者信息的输出格式,针对biblatex<3.3版本,gbt7714-2015的姓名全大写格式 +% \defversion{3.0}{name}{ + \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉,%来源biblatex2.STY + %\renewrobustcmd*{\bibinithyphendelim}{\addnbspace}%biblatex.STY,名中间带-符号的情况下的首字母缩写中间的分隔符 + \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def %biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 \renewbibmacro*{name:last-first}[4]{% \ifuseprefix @@ -717,7 +886,13 @@ \usebibmacro{name:last-first}{##1}{##2}{##3}{##4}} } +% +% 作者信息的输出格式,针对biblatex>=3.3版本,gbt7714-2015的姓名全大写格式 +% \defversion{3.4}{name}{ + \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉,%来源biblatex2.STY + %\renewrobustcmd*{\bibinithyphendelim}{\addnbspace}%biblatex.STY,名中间带-符号的情况下的首字母缩写中间的分隔符 + \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def %biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 \renewbibmacro*{name:given-family}[4]{%用family-given修改后的内容定义given-family \ifuseprefix @@ -728,12 +903,12 @@ {\mkbibnameprefix{\MakeCapital{##3}}\isdot} {\mkbibnameprefix{##3}\isdot}% \ifprefchar{}{\bibnamedelimc}}% - \ifdefvoid{##2}{\mkbibnamefamily{\MakeCapital{##1}}}{\mkbibnamefamily{\MakeUppercase{##1}}}\isdot + \ifdefvoid{##2}{\mkbibnamefamily{\MakeCapital{##1}}}{\mkbibnamefamily{\MakeUppercase{##1}}}\isdot% \ifdefvoid{##2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{##2}}\isdot}%\MakeCapital \ifdefvoid{##4}{}{\bibnamedelimd\mkbibnamesuffix{##4}\isdot}} {\usebibmacro{name:delim}{##1}% \usebibmacro{name:hook}{##1}% - \ifdefvoid{##2}{\mkbibnamefamily{\MakeCapital{##1}}}{\mkbibnamefamily{\MakeUppercase{##1}}}\isdot + \ifdefvoid{##2}{\mkbibnamefamily{\MakeCapital{##1}}}{\mkbibnamefamily{\MakeUppercase{##1}}}\isdot% % \ifboolexpe{% test {\ifdefvoid{##2}} @@ -749,10 +924,277 @@ \usebibmacro{name:given-family}{##1}{##2}{##3}{##4}} } +% +% 作者信息的输出格式,针对biblatex<3.3版本,姓名大小写格式不变 +% +\defversion{3.0}{nameb}{ + \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉,%来源biblatex2.STY + %\renewrobustcmd*{\bibinithyphendelim}{\addnbspace}%biblatex.STY,名中间带-符号的情况下的首字母缩写中间的分隔符 + \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def + %biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 + \renewbibmacro*{name:last-first}[4]{% + \ifuseprefix + {\usebibmacro{name:delim}{##3##1}% + \usebibmacro{name:hook}{##3##1}% + \ifblank{##3}{}{% + \ifcapital + {\mkbibnameprefix{\MakeCapital{##3}}\isdot} + {\mkbibnameprefix{##3}\isdot}% + \ifpunctmark{'}{}{\bibnamedelimc}}% + %\mkbibnamelast{#1}\isdot + \ifblank{##2}{\MakeCapital##1}{\mkbibnamelast{{##1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase + %注意上一句\MakeCapital后面如果再跟一个{}包含#1,则没有效果,可能是包在里面少了一层展开 + %因为机构名通常包括在{}内,所以要多展开一次才行,所以这里去掉#1外面的{} + %\mkbibnamelast{\MakeUppercase{#1}}\isdot + %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 + \ifblank{##2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamefirst{{##2}}\isdot}% + \ifblank{##4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{##4}\isdot}} + {\usebibmacro{name:delim}{##1}% + \usebibmacro{name:hook}{##1}% + %\mkbibnamelast{#1}\isdot %3.9.1 Generic Commands and Hooks,对姓重新处理,如下句: %\mkbibnamelast{\MakeUppercase{#1}} + \ifblank{##2}{\MakeCapital##1}{\mkbibnamelast{{##1}}}\isdot %大写,参考4.6.4 Miscellaneous Commands,\MakeUppercase %\MakeSentenceCase + %\mkbibnamelast{\MakeUppercase{#1}}\isdot + %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 + \ifblank{##2##3}{}{\revsdnamepunct}% + \ifblank{##2}{}{\bibnamedelimd\mkbibnamefirst{{##2}}\isdot}% + \ifblank{##3}{}{\bibnamedelimd\mkbibnameprefix{##3}\isdot}% + \addcomma\addspace% + \ifblank{##4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{##4}\isdot}% + } + } + \renewbibmacro*{name:first-last}[4]{% + \usebibmacro{name:last-first}{##1}{##2}{##3}{##4}} +} + +% +% 作者信息的输出格式,针对biblatex>=3.3版本,姓名大小写格式不变 +% +\defversion{3.4}{nameb}{ + \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉,%来源biblatex2.STY + %\renewrobustcmd*{\bibinithyphendelim}{\addnbspace}%biblatex.STY,名中间带-符号的情况下的首字母缩写中间的分隔符 + \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def + %biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 + \renewbibmacro*{name:given-family}[4]{%用family-given修改后的内容定义given-family + \ifuseprefix + {\usebibmacro{name:delim}{##3##1}% + \usebibmacro{name:hook}{##3##1}% + \ifdefvoid{##3}{}{% + \ifcapital + {\mkbibnameprefix{\MakeCapital{##3}}\isdot} + {\mkbibnameprefix{##3}\isdot}% + \ifprefchar{}{\bibnamedelimc}}% + \ifdefvoid{##2}{\mkbibnamefamily{\MakeCapital{##1}}}{\mkbibnamefamily{{##1}}}\isdot% + \ifdefvoid{##2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{{##2}}\isdot}%\MakeCapital + \ifdefvoid{##4}{}{\bibnamedelimd\mkbibnamesuffix{##4}\isdot}} + {\usebibmacro{name:delim}{##1}% + \usebibmacro{name:hook}{##1}% + \ifdefvoid{##2}{\mkbibnamefamily{\MakeCapital{##1}}}{\mkbibnamefamily{{##1}}}\isdot% + % + \ifboolexpe{% + test {\ifdefvoid{##2}} + and + test {\ifdefvoid{##3}}} + {} + {\revsdnamepunct}% + \ifdefvoid{##2}{}{\bibnamedelimd\mkbibnamegiven{{##2}}\isdot}%\MakeCapital + \ifdefvoid{##3}{}{\bibnamedelimd\mkbibnameprefix{##3}\isdot} + \ifdefvoid{##4}{}{\bibnamedelimd\mkbibnamesuffix{##4}\isdot}} + } + \renewbibmacro*{name:family-given}[4]{% + \usebibmacro{name:given-family}{##1}{##2}{##3}{##4}} +} + +% +% 作者信息的输出格式,针对biblatex<3.3版本,姓名大小写格式采用标准样式 +% +\defversion{3.0}{namec}{ + \renewrobustcmd*{\bibinitperiod}{\adddot} + \renewrobustcmd*{\bibinithyphendelim}{\adddot\addnbspace}%biblatex.STY,名中间带-符号的情况下的首字母缩写中间的分隔符 + \renewcommand*{\revsdnamepunct}{\addcomma} + %biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 + \renewbibmacro*{name:last-first}[4]{% + \ifuseprefix + {\usebibmacro{name:delim}{##3##1}% + \usebibmacro{name:hook}{##3##1}% + \ifblank{##3}{}{% + \ifcapital + {\mkbibnameprefix{\MakeCapital{##3}}\isdot} + {\mkbibnameprefix{##3}\isdot}% + \ifpunctmark{'}{}{\bibnamedelimc}}% + \mkbibnamelast{##1}\isdot + \ifblank{##4}{}{\bibnamedelimd\mkbibnameaffix{##4}\isdot}%这句放到后面 + \ifblank{##2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamefirst{{##2}}\isdot}} + {\usebibmacro{name:delim}{##1}% + \usebibmacro{name:hook}{##1}% + \mkbibnamelast{##1}\isdot %3.9.1 Generic Commands and Hooks,对姓重新处理,如下句: %\mkbibnamelast{\MakeUppercase{#1}} + \ifblank{##4}{}{\bibnamedelimd\mkbibnameaffix{##4}\isdot}%这句放到后面 + \ifblank{##2##3}{}{\revsdnamepunct}% + \ifblank{##2}{}{\bibnamedelimd\mkbibnamefirst{{##2}}\isdot}% + \ifblank{##3}{}{\bibnamedelimd\mkbibnameprefix{##3}\isdot}% + } + } + \renewbibmacro*{name:first-last}[4]{% + \usebibmacro{name:last-first}{##1}{##2}{##3}{##4}} +} + +% +% 作者信息的输出格式,针对biblatex>=3.3版本,姓名大小写格式采用标准样式 +% +\defversion{3.4}{namec}{ + \renewrobustcmd*{\bibinitperiod}{\adddot} + \renewrobustcmd*{\bibinithyphendelim}{\adddot\addnbspace}%biblatex.STY,名中间带-符号的情况下的首字母缩写中间的分隔符 + \renewcommand*{\revsdnamepunct}{\addcomma} + \renewbibmacro*{name:given-family}[4]{% + \usebibmacro{name:delim}{##2##3##1}% + \usebibmacro{name:hook}{##2##3##1}% + \ifdefvoid{##2}{}{\mkbibnamegiven{##2}\isdot\bibnamedelimd}% + \ifdefvoid{##3}{}{% + \mkbibnameprefix{##3}\isdot + \ifprefchar + {} + {\ifuseprefix{\bibnamedelimc}{\bibnamedelimd}}}% + \mkbibnamefamily{##1}\isdot + \ifdefvoid{##4}{}{\bibnamedelimd\mkbibnamesuffix{##4}\isdot}} + \DeclareNameAlias{family-given}{default} + + \renewbibmacro*{name:family-given}[4]{% + \usebibmacro{name:given-family}{##1}{##2}{##3}{##4}} +} + +% +% 作者信息的输出格式,针对biblatex<3.3版本,姓名大小写格式采用拼音样式 +% +\defversion{3.0}{named}{ + \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉,%来源biblatex2.STY + \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def + \renewrobustcmd*{\bibnamedelima}{\mbox{-}} + + \DeclareNameFormat{first-last}{% + \usebibmacro{name:first-last}{##1}{##3}{##5}{##7}% + \usebibmacro{name:andothers}} + + %biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 + \renewbibmacro*{name:last-first}[4]{% + \ifuseprefix + {\usebibmacro{name:delim}{##3##1}% + \usebibmacro{name:hook}{##3##1}% + \ifblank{##3}{}{% + \ifcapital + {\mkbibnameprefix{\MakeCapital{##3}}\isdot} + {\mkbibnameprefix{##3}\isdot}% + \ifpunctmark{'}{}{\bibnamedelimc}}% + %\mkbibnamelast{#1}\isdot + \ifblank{##2}{\MakeCapital##1}{\mkbibnamelast{\MakeUppercase{##1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase + %注意上一句\MakeCapital后面如果再跟一个{}包含#1,则没有效果,可能是包在里面少了一层展开 + %因为机构名通常包括在{}内,所以要多展开一次才行,所以这里去掉#1外面的{} + %\mkbibnamelast{\MakeUppercase{#1}}\isdot + %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 + \ifblank{##2}{}{\revsdnamepunct\bibnamedelimd\MakeSentenceCase{\mkbibnamefirst{##2}}\isdot}% + \ifblank{##4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{##4}\isdot}} + {\usebibmacro{name:delim}{##1}% + \usebibmacro{name:hook}{##1}% + %\mkbibnamelast{#1}\isdot %3.9.1 Generic Commands and Hooks,对姓重新处理,如下句: %\mkbibnamelast{\MakeUppercase{#1}} + \ifblank{##2}{\MakeCapital##1}{\mkbibnamelast{\MakeUppercase{##1}}}\isdot %大写,参考4.6.4 Miscellaneous Commands,\MakeUppercase %\MakeSentenceCase + %\mkbibnamelast{\MakeUppercase{#1}}\isdot + %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 + \ifblank{##2##3}{}{\revsdnamepunct}% + \ifblank{##2}{}{\bibnamedelimd\mkbibnamefirst{\MakeUppercase{##2}}\isdot}% + \ifblank{##3}{}{\bibnamedelimd\mkbibnameprefix{##3}\isdot}% + \addcomma\addspace% + \ifblank{##4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{##4}\isdot}% + } + } + \renewbibmacro*{name:first-last}[4]{% + \usebibmacro{name:last-first}{##1}{##2}{##3}{##4}} +} + +% +% 作者信息的输出格式,针对biblatex>=3.3版本,姓名大小写格式采用拼音样式 +% +\defversion{3.4}{named}{ + \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉,%来源biblatex2.STY + \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def + \renewrobustcmd*{\bibnamedelima}{\mbox{-}} + + \DeclareNameFormat{given-family}{% + {\usebibmacro{name:given-family} + {\namepartfamily} + {\namepartgiven}%用全名而不是首字母缩写 + {\namepartprefix} + {\namepartsuffix}}% + \usebibmacro{name:andothers}} + + %biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 + \renewbibmacro*{name:given-family}[4]{%用family-given修改后的内容定义given-family + \ifuseprefix + {\usebibmacro{name:delim}{##3##1}% + \usebibmacro{name:hook}{##3##1}% + \ifdefvoid{##3}{}{% + \ifcapital + {\mkbibnameprefix{\MakeCapital{##3}}\isdot} + {\mkbibnameprefix{##3}\isdot}% + \ifprefchar{}{\bibnamedelimc}}% + \ifdefvoid{##2}{\mkbibnamefamily{\MakeCapital{##1}}}{\mkbibnamefamily{\MakeUppercase{##1}}}\isdot% + \ifdefvoid{##2}{}{\revsdnamepunct\bibnamedelimd\MakeSentenceCase{\mkbibnamegiven{##2}}\isdot}%\MakeCapital + \ifdefvoid{##4}{}{\bibnamedelimd\mkbibnamesuffix{##4}\isdot}} + {\usebibmacro{name:delim}{##1}% + \usebibmacro{name:hook}{##1}% + \ifdefvoid{##2}{\mkbibnamefamily{\MakeCapital{##1}}}{\mkbibnamefamily{\MakeUppercase{##1}}}\isdot% + % + \ifboolexpe{% + test {\ifdefvoid{##2}} + and + test {\ifdefvoid{##3}}} + {} + {\revsdnamepunct}% + \ifdefvoid{##2}{}{\bibnamedelimd\mkbibnamegiven{\MakeCapital{##2}}\isdot}%\MakeCapital + \ifdefvoid{##3}{}{\bibnamedelimd\mkbibnameprefix{##3}\isdot} + \ifdefvoid{##4}{}{\bibnamedelimd\mkbibnamesuffix{##4}\isdot}} + } + \renewbibmacro*{name:family-given}[4]{% + \usebibmacro{name:given-family}{##1}{##2}{##3}{##4}} +} + +% +% 根据姓名格式控制选项做处理 +% +\iftoggle{iftlfive}%根据texlive/biblatex版本选择 + {%%当采用biblatex<=3.3版本时 + \switchversion{3.0}{name} + }{%%当采用3.3<=biblatex版本时 + \switchversion{3.4}{name} + } +% +\def\execnamedefault{ +\iftoggle{iftlfive}%根据texlive/biblatex版本选择 + {%%当采用biblatex<=3.3版本时 + \switchversion{3.0}{namec} + }{%%当采用3.3<=biblatex版本时 + \switchversion{3.4}{namec} + } +} +% +\def\execgblowercase{ +\iftoggle{iftlfive}%根据texlive/biblatex版本选择 + {%%当采用biblatex<=3.3版本时 + \switchversion{3.0}{nameb} + }{%%当采用3.3<=biblatex版本时 + \switchversion{3.4}{nameb} + } +} +% +\def\execnamepinyin{ \iftoggle{iftlfive}%根据texlive/biblatex版本选择 - {\switchversion{3.0}{name}}% - {\switchversion{3.4}{name}} + {%%当采用biblatex<=3.3版本时 + \switchversion{3.0}{named} + }{%%当采用3.3<=biblatex版本时 + \switchversion{3.4}{named} + }} + +% +% url和url日期信息的输出格式 +% \renewbibmacro*{url+urldate}{% %\usebibmacro{url}%%更换url的位置,放到下面 \iffieldundef{urlyear}% @@ -762,6 +1204,10 @@ \usebibmacro{url}} \renewbibmacro*{url}{\printfield{url}} + +% +% 日期信息的输出格式,针对biblatex<3.7版本 +% \defversion{3.4}{date}{ \renewbibmacro*{urldate}{% \addthinspace\printtext{[}\printfield{urlyear}% @@ -797,13 +1243,23 @@ }% } +% +% 日期信息的输出格式,针对3.9>=biblatex>=3.7版本 +% \defversion{3.7}{date}{ \DeclareFieldFormat{urldate}{##1} \renewbibmacro*{urldate}{% \addthinspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 - \newbibmacro*{newsdate}{%%新增加一个新闻日期 - \blx@edtfdate{}{}% + % + % 专利的公告日期、或报纸的日期的输出宏 + % 20160701,v1.0,新增加 + % 20180405,v1.0k,为biblatexv3.7-3.9版本,出现多出点bug做处理,Hu Zhenzhen + % + % 原理方法:加上printtext避免破坏异步标点机制 + % + \newbibmacro*{newsdate}{% + \printtext{\blx@edtfdate{}{}}% } \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 @@ -816,13 +1272,23 @@ }% } +% +% 日期信息的输出格式,针对biblatex>=3.10版本 +% \defversion{3.10}{date}{ \DeclareFieldFormat{urldate}{##1} \renewbibmacro*{urldate}{% \addthinspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 - \newbibmacro*{newsdate}{%%新增加一个新闻日期 - \blx@isodate{}{}% + % + % 专利的公告日期、或报纸的日期的输出宏 + % 20160701,v1.0,新增加 + % 20180405,为biblatexv3.10版本,出现多出点bug做处理,Hu Zhenzhen + % + % 原理方法:加上printtext避免破坏异步标点机制 + % + \newbibmacro*{newsdate}{%% + \printtext{\blx@isodate{}{}}%% } \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 @@ -835,6 +1301,9 @@ }% } +% +% biblatex>v3.8版利用related实现双语文献的处理 +% \defversion{3.8}{dblang}{ %为了实现v3.8以上版本的双语文献,采用related的方法代替set方法,因为set方法已经无法实现了, %因为set不再复制其第一个成员的信息。于是定义一个命令,用于动态的修改数据,即添加related域的信息 @@ -853,26 +1322,21 @@ } } -\iftoggle{iftlfive}%%根据texlive/biblatex版本选择 - {\switchversion{3.4}{date}}% - {\iftoggle{iftlsix}% - {\switchversion{3.4}{date}}% - {\iftoggle{iftlnine}% - {\switchversion{3.10}{date}}%biblatex3.10版 - {\switchversion{3.7}{date}}% - }% - } - -\iftoggle{iftlnine} - {\switchversion{3.8}{dblang}} - {\iftoggle{iftleight} - {\switchversion{3.8}{dblang}} - {} - } - -\renewcommand{\relateddelim}{\adddot\newline\nobreak}%\par - -\renewbibmacro*{related}{% +% +% 关联文献间的分隔符 +% +\renewcommand{\relateddelim}{\adddot\newline\nobreak}%\par,而作者年样式不需要修改,因为没有项对齐的标签问题 + +% +% 关联文献的输出格式,针对3.9>=biblatex>=3.7版本 +% +% 原理方法:因为related宏中带有##了,所以无法封装到defversion中了。所以直接做判断 +% 下面这一段主要针对v3.8-3.10,因为我提问后,biblatex作者为3.11版增加了一个钩子控制relatedblock前的分隔符。 +\ifboolexpr{ +test{\iftoggle{iftleight}} +or +test{\iftoggle{iftlnine}} +}{\renewbibmacro*{related}{%standard.bbx \ifboolexpr{ test {\iffieldundef{related}} or test {\ifrelatedloop} } {} {\usebibmacro{begrelated}% @@ -894,7 +1358,7 @@ \setcounter{bbx:relatedcount}{0}% \def\do{% \stepcounter{bbx:relatedcount}% - \ifnumgreater{\value{bbx:relatedcount}}{0} + \ifnumgreater{\value{bbx:relatedcount}}{0}%这里从1改为0 {\ifcsundef{relateddelim\strfield{relatedtype}} {\printtext{\relateddelim}} {\printtext{\csuse{relateddelim\strfield{relatedtype}}}}} @@ -930,9 +1394,27 @@ \usebibmacro{endrelatedloop}}}% {}% \usebibmacro{endrelated}}} +}{} + +% +% 关联文献块前的分隔符,针对biblatex>3.11 +% +% 原理方法:因为增加了begrelateddelim钩子,所以不需要重定义related输出宏 +\defversion{3.11}{related}{ +\renewcommand{\begrelateddelim}{\adddot\newline\nobreak} +} -%调整doi+eprint+url格式,源来自standard.bbx -%因为页码后面直接跟引用日期,没有标点所以去掉其中的标点。 +\iftoggle{iftlfive}{\switchversion{3.4}{date}}{}%biblatex<=3.2 +\iftoggle{iftlsix}{\switchversion{3.4}{date}}{}%3.3<=biblatex<=3.6 +\iftoggle{iftlseven}{\switchversion{3.7}{date}}{}%biblatex=3.7 +\iftoggle{iftleight}{\switchversion{3.7}{date}\switchversion{3.8}{dblang}}{}%3.8<=biblatex<=3.9 +\iftoggle{iftlnine}{\switchversion{3.10}{date}\switchversion{3.8}{dblang}}{}%biblatex=3.10 +\iftoggle{iftlatest}{\switchversion{3.10}{date}\switchversion{3.8}{dblang}\switchversion{3.11}{related}}{}%biblatex最新3.11 + +% +% 调整doi+eprint+url格式 +% +% 原理方法:源来自standard.bbx,因为页码后面直接跟引用日期,没有标点所以去掉其中的标点。 \renewbibmacro*{doi+eprint+url}{% % \iftoggle{bbx:doi}%把doi的位置放到url后面 % {\printfield{doi}} @@ -950,6 +1432,9 @@ {\printfield{doi}} {}} +% +% 调整页码的格式,即chapter+pages格式 +% \renewbibmacro*{chapter+pages}{% \printfield{chapter}% \iffieldundef{pages}{}{%这里增加一个判断,当没有页码时就不输出 @@ -958,10 +1443,12 @@ %\newunit %这里的标点去掉 } -%出版社和地址的处理 -%当没有出版社地址时,直接判断title的信息是否是中文,若为中文,则写出版地不详,否则用英文的字符表示。 -%事实上title对于每个文献来说是必须的,所以用它判断是最快的,而且一般标题和出版社的语言是一样的。 -%新增一个样式用于输出连续出版物的地址,单位,时间,%类似\newbibmacro*{publisher+location+date} +% +% 出版社和地址的处理 +% +% 原理方法:当没有出版社地址时,直接判断title的信息是否是中文,若为中文,则写出版地不详,否则用英文的字符表示。 +% 事实上title对于每个文献来说是必须的,所以用它判断是最快的,而且一般标题和出版社的语言是一样的。 +% 新增一个样式用于输出连续出版物的地址,单位,时间,%类似\newbibmacro*{publisher+location+date} \newbibmacro*{location+institution+date}{% \iftoggle{bbx:gbpub}% {\testCJKfirst{\thefield{userd}} @@ -991,7 +1478,8 @@ \usebibmacro{date}% \newunit}% } - +% +% \renewbibmacro*{publisher+location+date}{% \iftoggle{bbx:gbpub}% {\testCJKfirst{\thefield{userd}}% @@ -1022,8 +1510,10 @@ }% } -%对edition版本信息做出修改,源来自biblatex.DEF -\DeclareFieldFormat{edition}{% +% +% 对edition版本信息格式做出修改 +% +\DeclareFieldFormat{edition}{%源来自biblatex.DEF \testCJKfirst{\thefield{userd}}% \iftoggle{ifCJKforgbt}% {\ifinteger{#1}% @@ -1033,16 +1523,41 @@ {\mkbibordedition{#1}~\bibstring{edition}}% {#1\isdot}}} -%对version的版本信息做出修改,源来自biblatex.DEF -\DeclareFieldFormat{version}{% +% +% 对version的版本信息做出修改 +% +\DeclareFieldFormat{version}{%源来自biblatex.DEF \testCJKfirst{\thefield{userd}}% \ifinteger{#1}% {\iftoggle{ifCJKforgbt}{\printtext{#1版}}% {\mkbibordedition{#1}~\bibstring{version}}}% {#1\isdot}} -%调整期刊名的格式,源来自standard.bbx -\renewbibmacro*{journal+issuetitle}{% + + +% +% 修改析出文献的文集的标题与附加标题间的符号 +% +\renewbibmacro*{booktitle}{% + \ifboolexpr{ + test {\iffieldundef{booktitle}} + and + test {\iffieldundef{booksubtitle}} + } + {} + {\printtext[booktitle]{% + \printfield[titlecase]{booktitle}% + \setunit{\subtitlepunct}% + \printfield[titlecase]{booksubtitle}}% + \newunit%标点换成下一句 + \setunit{\subtitlepunct}}% + \printfield{booktitleaddon}} + + +% +% 调整期刊名的格式 +% +\renewbibmacro*{journal+issuetitle}{%源来自standard.bbx \usebibmacro{journal}% %\setunit*{\addspace}% \setunit*{\addcomma\addspace}%修改为增加一个逗号 @@ -1062,8 +1577,10 @@ %\newunit } -%调整期刊年份的格式,去掉括号 -\renewbibmacro*{issue+date}{% +% +% 调整期刊年份的格式 +% +\renewbibmacro*{issue+date}{%去掉括号 \printtext{%去掉了[parens] \iffieldundef{issue} {%\usebibmacro{date} @@ -1081,8 +1598,10 @@ %\newunit } -%调整期刊卷和期的格式,源来自standard.bbx -\renewbibmacro*{volume+number+eid}{% +% +% 调整期刊卷和期的格式 +% +\renewbibmacro*{volume+number+eid}{%源来自standard.bbx \printfield{volume}% %\setunit*{\adddot}%去掉点号 %\printfield{number}% @@ -1091,8 +1610,10 @@ \setunit{\addcomma\space}% \printfield{eid}}} -%调整页码前的标点和去掉期刊文章等页码后面的标点,源来自standard.bbx -\renewbibmacro*{note+pages}{% +% +% 调整页码前的标点和去掉期刊文章等页码后面的标点 +% +\renewbibmacro*{note+pages}{%源来自standard.bbx %\printfield{note}%不要note,note用来判断是否是报纸newspaper \iffieldundef{pages}{}{ \setunit{\bibpagespunct}% @@ -1100,24 +1621,11 @@ %\newunit } -%修改析出文献的文集的标题与附加标题间的符号 -\renewbibmacro*{booktitle}{% - \ifboolexpr{ - test {\iffieldundef{booktitle}} - and - test {\iffieldundef{booksubtitle}} - } - {} - {\printtext[booktitle]{% - \printfield[titlecase]{booktitle}% - \setunit{\subtitlepunct}% - \printfield[titlecase]{booksubtitle}}% - \newunit%标点换成下一句 - \setunit{\subtitlepunct}}% - \printfield{booktitleaddon}} -%编者的符号修改一下,源来自biblatex.DEF -\renewbibmacro*{editor}{% +% +% 编者的符号修改一下 +% +\renewbibmacro*{editor}{%源来自biblatex.DEF \ifboolexpr{ test \ifuseeditor and @@ -1131,8 +1639,10 @@ \clearname{editor}} {}} -%编者类型做一修改,源来自biblatex.DEF -\renewbibmacro*{editorstrg}{% +% +% 编者类型做一修改 +% +\renewbibmacro*{editorstrg}{%源来自biblatex.DEF \printtext[editortype]{% \iffieldundef{editortype} { @@ -1154,8 +1664,10 @@ {\bibstring{\thefield{editortype}}}} {\thefield{editortype}}}}} -%修改期刊的标题,源来自biblatex.DEF -\renewbibmacro*{periodical}{% +% +% 修改期刊的标题 +% +\renewbibmacro*{periodical}{%源来自biblatex.DEF \iffieldundef{title} {} {\printtext[title]{% @@ -1165,14 +1677,16 @@ {}{\setunit{\subtitlepunct} \printfield[titlecase]{subtitle}}% % - \iffieldundef{usera}{}{%在标题后直接给出文献标识字母 - \printfield[gbtypeflag]{usera}} + %\iffieldundef{usera}{}{}%在标题后直接给出文献标识字母 + \iftoggle{bbx:gbtype}{\printfield[gbtypeflag]{usera}}{}% }%把编组结束移到这里 }% } -%期刊的标题做修改,源来自standard.BBX -\renewbibmacro*{title+issuetitle}{% +% +% 期刊的标题做修改 +% +\renewbibmacro*{title+issuetitle}{%源来自standard.BBX \usebibmacro{periodical}% %\setunit*{\addspace}% \setunit*{\adddot\addspace}%标点修改为句点 @@ -1210,7 +1724,9 @@ \usebibmacro{issue}% \newunit} -%新增一个样式用于调整期刊年份的格式,只打印年份 +% +% 新增一个样式用于调整期刊年份的格式,只打印年份 +% \newbibmacro*{periodical+issue}{% \printtext{%去掉了[parens] \iffieldundef{issue} @@ -1224,8 +1740,10 @@ %\newunit } -%重设专利title的输出,将文献类型标识符输出出去,原输出来自biblatex.def文件 -\newbibmacro*{patenttitle}{% +% +% 重设专利title的输出,将文献类型标识符输出出去 +% +\newbibmacro*{patenttitle}{%原输出来自biblatex.def文件 \ifboolexpr{% test{\iffieldundef{title}}% and% @@ -1240,15 +1758,17 @@ \iffieldundef{titleaddon}{}%判断一下titleaddon,否则直接加可能多一个空格 {\setunit{\subtitlepunct}\printfield{titleaddon}}% \setunit{\subtitlepunct}\printfield{number}%写专利号 - \printfield[gbtypeflag]{usera}% + \iftoggle{bbx:gbtype}{\printfield[gbtypeflag]{usera}}{}% %\iffieldundef{booktitle}{\newunit}{}%当title是析出时,不要标点 %\newunit }% }% } -%修改了一个institution+location+date用于report等的,当没有institution时不处理。 -\renewbibmacro*{institution+location+date}{% +% +% 修改了一个institution+location+date用于report等类型 +% +\renewbibmacro*{institution+location+date}{%当没有institution时不处理。 \printlist{location}% \iflistundef{institution} {\setunit*{\addcomma\space}} @@ -1262,11 +1782,12 @@ %===================================================================== -%===================================================================== %设置驱动格式 %===================================================================== -%book条目类的驱动,源来自standard.bbx文件 - \DeclareBibliographyDriver{book}{% +% +% book条目类的驱动 +% + \DeclareBibliographyDriver{book}{%源来自standard.bbx文件 \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/editor+others/translator+others}% @@ -1277,7 +1798,8 @@ {\setunit{\labelnamepunct}\newblock}}% {\setunit{\labelnamepunct}\newblock}%这个注释去除标题前空格 \usebibmacro{maintitle+title}% -\newunit +%\usebibmacro{patenttitle}% +\newunit% \printlist{language}% \newunit\newblock% \usebibmacro{byauthor}% @@ -1321,32 +1843,114 @@ {}% \usebibmacro{finentry}} -%期刊文章,连续出版物中的析出文献的格式 - \DeclareBibliographyDriver{article}{% + + +% +% 专著中的析出文献的格式修改 +% +\DeclareBibliographyDriver{inbook}{%源来自standard.bbx \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/translator+others}% - \setunit{\labelnamepunct}\newblock - \usebibmacro{title}% +\ifnameundef{author}{%这一段用于去除作者不存在时多出的标点 +\ifnameundef{editor}{% +\ifnameundef{translator}{\relax}% +{\setunit{\labelnamepunct}\newblock}}% +{\setunit{\labelnamepunct}\newblock}}% +{\setunit{\labelnamepunct}\newblock}% +%\setunit{\labelnamepunct}\newblock +\usebibmacro{title}% +%\nopunct +\printtext{\texttt{//}\addthinspace}%%\texttt{//}\addnbthinspace +\usebibmacro{bybookauthor}% +\ifnameundef{bookauthor}{\newblock}{\newunit\newblock}%替换下一句 +%\newunit\newblock +\usebibmacro{maintitle+booktitle}%}% + \newunit\newblock + \usebibmacro{byeditor+others}% + \newunit\newblock + \printfield{edition}% \newunit + \iffieldundef{maintitle} + {\printfield{volume}% + \printfield{part}} + {}% + \newunit + \printfield{volumes}% + \newunit\newblock + \usebibmacro{series+number}% + \newunit\newblock + %\printfield{note}% + %\newunit\newblock + \usebibmacro{publisher+location+date}% +%\newunit\newblock + \usebibmacro{chapter+pages}% + \usebibmacro{doi+eprint+url}%移到上面来 + \newunit\newblock + \iftoggle{bbx:isbn} + {\printfield{isbn}} + {}% + \newunit\newblock + %\usebibmacro{doi+eprint+url}% +% \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% + \usebibmacro{finentry}} +% + + + +% +% 文集类型驱动 +% +% 直接利用book做collection + \DeclareBibliographyDriver{collection}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% +\usebibmacro{author/editor+others/translator+others} +\ifnameundef{author}{%这一段用于去除作者不存在时多出的标点 +\ifnameundef{editor}{% +\ifnameundef{translator}{\relax}% +{\setunit{\labelnamepunct}\newblock}}% +{\setunit{\labelnamepunct}\newblock}}% +{\setunit{\labelnamepunct}\newblock}% + \usebibmacro{maintitle+title} + \newunit% \printlist{language}% \newunit\newblock \usebibmacro{byauthor}% \newunit\newblock - \usebibmacro{bytranslator+others}% + \usebibmacro{byeditor+others}% \newunit\newblock - \printfield{version}% + \printfield{edition}% + \newunit + \iffieldundef{maintitle} + {\printfield{volume}% + \printfield{part}} + {}% + \newunit + \printfield{volumes}% + \newunit\newblock + \usebibmacro{series+number}% + \newunit\newblock + %\printfield{note}% + %\newunit\newblock + \usebibmacro{publisher+location+date}% + %\newunit\newblock %这里标点去掉 + \usebibmacro{chapter+pages}% + \usebibmacro{doi+eprint+url}%从下面移动到上面来,因为gbt2015的url需直接放在页码后面。 \newunit\newblock - %\usebibmacro{in:}% 不使用in来表示期刊等连续出版物 - \usebibmacro{journal+issuetitle}% %\newunit -% \usebibmacro{byeditor+others}% -% \newunit - \usebibmacro{note+pages}% - \usebibmacro{doi+eprint+url}%从后面移上来,调整url和页码之间的位置 + \printfield{pagetotal}% \newunit\newblock \iftoggle{bbx:isbn} - {\printfield{issn}} + {\printfield{isbn}} {}% \newunit\newblock %\usebibmacro{doi+eprint+url}% @@ -1361,8 +1965,13 @@ {}% \usebibmacro{finentry}} -%专著中的析出文献的格式修改,源来自standard.bbx -\DeclareBibliographyDriver{inbook}{% +% +% 文集中析出文献类型驱动 +% + + +% 直接利用inbook做incollection +\DeclareBibliographyDriver{incollection}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/translator+others}% @@ -1374,12 +1983,11 @@ {\setunit{\labelnamepunct}\newblock}% %\setunit{\labelnamepunct}\newblock \usebibmacro{title}% -%\nopunct -\printtext{\texttt{//}\addthinspace}%%\texttt{//}\addnbthinspace +\printtext{\texttt{//}\addthinspace}%似乎顶格加百分号可以避免一些不必要的空格加入,特别是这种直接处理的语句前后 \usebibmacro{bybookauthor}% \ifnameundef{bookauthor}{\newblock}{\newunit\newblock}%替换下一句 -%\newunit\newblock -\usebibmacro{maintitle+booktitle}%}% + %\newunit\newblock + \usebibmacro{maintitle+booktitle}% \newunit\newblock \usebibmacro{byeditor+others}% \newunit\newblock @@ -1397,16 +2005,56 @@ %\printfield{note}% %\newunit\newblock \usebibmacro{publisher+location+date}% -%\newunit\newblock + \newunit\newblock \usebibmacro{chapter+pages}% - \usebibmacro{doi+eprint+url}%移到上面来 \newunit\newblock \iftoggle{bbx:isbn} {\printfield{isbn}} {}% \newunit\newblock + \usebibmacro{doi+eprint+url}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% + \usebibmacro{finentry}} + +% 期刊文章,连续出版物中的析出文献的格式 +% + \DeclareBibliographyDriver{article}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author/translator+others}% + \setunit{\labelnamepunct}\newblock + \usebibmacro{title}% + \newunit% + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{bytranslator+others}% + \newunit\newblock + \printfield{version}% + \newunit\newblock + %\usebibmacro{in:}% 不使用in来表示期刊等连续出版物 + \usebibmacro{journal+issuetitle}% + %\newunit +% \usebibmacro{byeditor+others}% +% \newunit + \usebibmacro{note+pages}% + \usebibmacro{doi+eprint+url}%从后面移上来,调整url和页码之间的位置 + \newunit\newblock + \iftoggle{bbx:isbn} + {\printfield{issn}} + {}% + \newunit\newblock %\usebibmacro{doi+eprint+url}% -% \newunit\newblock + %\newunit\newblock \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% @@ -1417,15 +2065,19 @@ {}% \usebibmacro{finentry}} -%修改连续出版物的驱动,源来自standard.BBX - \DeclareBibliographyDriver{periodical}{% + + +% +% 连续出版物的驱动 +% + \DeclareBibliographyDriver{periodical}{%源来自standard.BBX \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{editor}% %\setunit{\labelnamepunct}\newblock \newunit\newblock %删除上面一行,添加这一行 \usebibmacro{title+issuetitle}% - \newunit + \newunit% \usebibmacro{location+institution+date}%添加这一行用于输出地址,单位和时间 \newunit\newblock%添加这一行 \printlist{language}% @@ -1450,15 +2102,17 @@ {}% \usebibmacro{finentry}} -%处理专利文献,源来自standard.BBX - \DeclareBibliographyDriver{patent}{% +% +% 专利文献驱动 +% + \DeclareBibliographyDriver{patent}{%源来自standard.BBX \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author}% \setunit{\labelnamepunct}\newblock %\usebibmacro{title}% \usebibmacro{patenttitle}%给出专利专用的标题输出 - \newunit + \newunit% \printlist{language}% \newunit\newblock \usebibmacro{byauthor}% @@ -1490,8 +2144,10 @@ {}% \usebibmacro{finentry}} -%处理在线文献,源来自standard.BBX -\DeclareBibliographyDriver{online}{% +% +% 在线文献驱动 +% +\DeclareBibliographyDriver{online}{%源来自standard.BBX \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/editor+others/translator+others}% @@ -1503,7 +2159,7 @@ {\setunit{\labelnamepunct}\newblock}% %\setunit{\labelnamepunct}\newblock \usebibmacro{title}% - \newunit + \newunit% \printlist{language}% \newunit\newblock \usebibmacro{byauthor}% @@ -1536,14 +2192,16 @@ {}% \usebibmacro{finentry}} -%学位论文修改,源来自standard.BBX - \DeclareBibliographyDriver{thesis}{% +% +% 学位论文修改 +% + \DeclareBibliographyDriver{thesis}{%源来自standard.BBX \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author}% \setunit{\labelnamepunct}\newblock \usebibmacro{title}% - \newunit + \newunit% \printlist{language}% \newunit\newblock \usebibmacro{byauthor}% @@ -1575,14 +2233,17 @@ {}% \usebibmacro{finentry}} -%2016-11-11增加了译者信息 +% +% 报告类型驱动 +% 2016-11-11,增加了译者信息 +% \DeclareBibliographyDriver{report}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author}% \setunit{\labelnamepunct}\newblock \usebibmacro{title}% - \newunit + \newunit% \printlist{language}% \newunit\newblock \usebibmacro{byauthor}% @@ -1620,7 +2281,11 @@ {}% \usebibmacro{finentry}} -%直接利用report做manual,2016-11-11增加了译者信息 +% +% 手册类型驱动 +% 2016-11-11,增加了译者信息 +% +% 直接利用report做manual %\DeclareBibliographyDriver{report}{% \DeclareBibliographyDriver{manual}{% \usebibmacro{bibindex}% @@ -1628,7 +2293,7 @@ \usebibmacro{author}% \setunit{\labelnamepunct}\newblock \usebibmacro{title}% - \newunit + \newunit% \printlist{language}% \newunit\newblock \usebibmacro{byauthor}% @@ -1666,14 +2331,17 @@ {}% \usebibmacro{finentry}} -%直接利用report做unpublished +% +% 未出版物类型驱动 +% +% 直接利用report做unpublished \DeclareBibliographyDriver{unpublished}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author}% \setunit{\labelnamepunct}\newblock \usebibmacro{title}% - \newunit + \newunit% \printlist{language}% \newunit\newblock \usebibmacro{byauthor}% @@ -1709,118 +2377,11 @@ {}% \usebibmacro{finentry}} -%直接利用book做collection - \DeclareBibliographyDriver{collection}{% - \usebibmacro{bibindex}% - \usebibmacro{begentry}% -\usebibmacro{author/editor+others/translator+others} -\ifnameundef{author}{%这一段用于去除作者不存在时多出的标点 -\ifnameundef{editor}{% -\ifnameundef{translator}{\relax}% -{\setunit{\labelnamepunct}\newblock}}% -{\setunit{\labelnamepunct}\newblock}}% -{\setunit{\labelnamepunct}\newblock}% - \usebibmacro{maintitle+title} - \newunit - \printlist{language}% - \newunit\newblock - \usebibmacro{byauthor}% - \newunit\newblock - \usebibmacro{byeditor+others}% - \newunit\newblock - \printfield{edition}% - \newunit - \iffieldundef{maintitle} - {\printfield{volume}% - \printfield{part}} - {}% - \newunit - \printfield{volumes}% - \newunit\newblock - \usebibmacro{series+number}% - \newunit\newblock - %\printfield{note}% - %\newunit\newblock - \usebibmacro{publisher+location+date}% - %\newunit\newblock %这里标点去掉 - \usebibmacro{chapter+pages}% - \usebibmacro{doi+eprint+url}%从下面移动到上面来,因为gbt2015的url需直接放在页码后面。 - \newunit\newblock - %\newunit - \printfield{pagetotal}% - \newunit\newblock - \iftoggle{bbx:isbn} - {\printfield{isbn}} - {}% - \newunit\newblock - %\usebibmacro{doi+eprint+url}% - %\newunit\newblock - \usebibmacro{addendum+pubstate}% - \setunit{\bibpagerefpunct}\newblock - \usebibmacro{pageref}% - \newunit\newblock - \iftoggle{bbx:related} - {\usebibmacro{related:init}% - \usebibmacro{related}} - {}% - \usebibmacro{finentry}} - -%直接利用inbook做incollection -\DeclareBibliographyDriver{incollection}{% - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author/translator+others}% -\ifnameundef{author}{%这一段用于去除作者不存在时多出的标点 -\ifnameundef{editor}{% -\ifnameundef{translator}{\relax}% -{\setunit{\labelnamepunct}\newblock}}% -{\setunit{\labelnamepunct}\newblock}}% -{\setunit{\labelnamepunct}\newblock}% -%\setunit{\labelnamepunct}\newblock -\usebibmacro{title}% -\printtext{\texttt{//}\addthinspace}%似乎顶格加百分号可以避免一些不必要的空格加入,特别是这种直接处理的语句前后 -\usebibmacro{bybookauthor}% -\ifnameundef{bookauthor}{\newblock}{\newunit\newblock}%替换下一句 - %\newunit\newblock - \usebibmacro{maintitle+booktitle}% - \newunit\newblock - \usebibmacro{byeditor+others}% - \newunit\newblock - \printfield{edition}% - \newunit - \iffieldundef{maintitle} - {\printfield{volume}% - \printfield{part}} - {}% - \newunit - \printfield{volumes}% - \newunit\newblock - \usebibmacro{series+number}% - \newunit\newblock - %\printfield{note}% - %\newunit\newblock - \usebibmacro{publisher+location+date}% - \newunit\newblock - \usebibmacro{chapter+pages}% - \newunit\newblock - \iftoggle{bbx:isbn} - {\printfield{isbn}} - {}% - \newunit\newblock - \usebibmacro{doi+eprint+url}% - \newunit\newblock - \usebibmacro{addendum+pubstate}% - \setunit{\bibpagerefpunct}\newblock - \usebibmacro{pageref}% - \newunit\newblock - \iftoggle{bbx:related} - {\usebibmacro{related:init}% - \usebibmacro{related}} - {}% - \usebibmacro{finentry}} -%会议论文格式修改,源来自standard.BBX - \DeclareBibliographyDriver{inproceedings}{% +% +% 会议论文文献类型驱动 +% + \DeclareBibliographyDriver{inproceedings}{%源来自standard.BBX \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/translator+others}% @@ -1875,15 +2436,17 @@ {}% \usebibmacro{finentry}} -%会议论文集格式修改,源来自standard.BBX -\DeclareBibliographyDriver{proceedings}{% +% +% 会议论文集文献类型驱动 +% +\DeclareBibliographyDriver{proceedings}{%源来自standard.BBX \usebibmacro{bibindex}% \usebibmacro{begentry}% %\usebibmacro{editor+others}% \usebibmacro{author/translator+others}% \setunit{\labelnamepunct}\newblock \usebibmacro{maintitle+title}% - \newunit + \newunit% \printlist{language}% \newunit\newblock \usebibmacro{event+venue+date}% 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 23a1cc08434..62db91eea8c 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 @@ -6,25 +6,34 @@ %% history: %% 2016/05/20 v1.0 2016/10/23 v1.0a 2016/11/11 v1.0b %% 2016/11/14 v1.0c 2016/11/24 v1.0d 2016/12/07 v1.0e -%% 2017/02/26 v1.0g 2017/04/11 v1.0h -%% 2017/11/21 v1.0i +%% 2017/02/26 v1.0g 2017/04/11 v1.0h 2017/11/21 v1.0i +%% 2018/01/20 v1.0j 2018/04/03 v1.0k %% E-mail: hzzmail@163.com %% Released under the LaTeX Project Public License v1.3c or later %% --------------------------------------------------------------- %% -\ProvidesFile{gb7714-2015.cbx}[2017/11/21 v1.0i biblatex citation style] +\ProvidesFile{gb7714-2015.cbx}[2018/04/03 v1.0k biblatex citation style] +% +% 加载标准样式 +% \RequireCitationStyle{numeric-comp} %\RequireCitationStyle{numeric} + +% +% 选项设置 +% \ExecuteBibliographyOptions{ autocite = superscript , autopunct = true , sorting = none , } -%\DeclareCiteCommand{\cite}[\mkbibparens]{⟨precode⟩}{⟨loopcode⟩}{⟨sepcode⟩}{⟨postcode⟩} % +% 重定义cite命令 +% +% 方法:\DeclareCiteCommand{\cite}[\mkbibparens]{⟨precode⟩}{⟨loopcode⟩}{⟨sepcode⟩}{⟨postcode⟩} \DeclareCiteCommand{\cite}[\mkbibsuperscript] {[\usebibmacro{cite:init}%直接添加方括号 \usebibmacro{prenote}} @@ -34,23 +43,19 @@ {\usebibmacro{cite:dump}% \usebibmacro{postnote}]} -%\DeclareCiteCommand{\parencite}[\mkbibsuperscript]%\mkbibbrackets,仍然用上标 -% {[\usebibmacro{cite:init}% -% \usebibmacro{prenote}} -% {\usebibmacro{citeindex}% -% \usebibmacro{cite:comp}} -% {} -% {\usebibmacro{cite:dump}% -% \usebibmacro{postnote}]} +% +% 新定义pagescite命令,以满足标签带页码的国标要求 +% +% 原理方法: +% 1.修改postnote的输出格式 +\DeclareFieldFormat{postnote}{#1} +% 2.新增页码输出宏 \newbibmacro*{postpages}{% \iffieldundef{postnote} {\printfield{pages}} {\printfield{postnote}}} - -%修改括号外带页码的引用格式 -\DeclareFieldFormat{postnote}{#1} - +% 3.新增\pagescite引用命令 \DeclareCiteCommand{\pagescite}[\mkbibsuperscript]%\mkbibbrackets,仍然用上标 {[\usebibmacro{cite:init}% \usebibmacro{prenote}% @@ -61,7 +66,9 @@ {\usebibmacro{cite:dump}]% \usebibmacro{postpages}} -%增加一个命令yearpagescite为与ay样式兼容,命令等同于\pagescite +% +% 定义yearpagescite,为与ay样式兼容,等同于\pagescite +% \DeclareCiteCommand{\yearpagescite}[\mkbibsuperscript]%\mkbibbrackets,仍然用上标 {[\usebibmacro{cite:init}% \usebibmacro{prenote}% @@ -71,3 +78,16 @@ {} {\usebibmacro{cite:dump}]% \usebibmacro{postpages}} + +% +% 定义\yearcite命令,为与ay样式兼容,且提供不输出页码的标签格式, +% +% 原理方法:等同于\pagescite,但不要页码 +\DeclareCiteCommand{\yearcite}[\mkbibsuperscript]%\mkbibbrackets,仍然用上标 + {[\usebibmacro{cite:init}% + \usebibmacro{prenote}% + } + {\usebibmacro{citeindex}% + \usebibmacro{cite:comp}} + {} + {\usebibmacro{cite:dump}]} 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 24ab3e1650b..c403316cfa7 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 @@ -6,16 +6,20 @@ %% history: %% 2016/05/20 v1.0 2016/10/23 v1.0a 2016/11/11 v1.0b %% 2016/11/14 v1.0c 2016/11/24 v1.0d 2016/12/07 v1.0e -%% 2017/02/26 v1.0g 2017/04/11 v1.0h -%% 2017/11/21 v1.0i +%% 2017/02/26 v1.0g 2017/04/11 v1.0h 2017/11/21 v1.0i +%% 2018/01/20 v1.0j 2018/04/03 v1.0k %% E-mail: hzzmail@163.com %% Released under the LaTeX Project Public License v1.3c or later %% --------------------------------------------------------------- %% -\ProvidesFile{gb7714-2015ay.bbx}[2017/11/21 v1.0i biblatex bibliography style] +% +% 版本和时间信息 +% +\ProvidesFile{gb7714-2015ay.bbx}[2018/04/03 v1.0k biblatex bibliography style] +\def\versionofgbtstyle{2018/04/03 v1.0k} %版本和修改时间信息 +\def\versionofbiblatex{\abx@version} %===================================================================== -%===================================================================== %加载标准样式 %===================================================================== \RequireBibliographyStyle{authoryear} % Load the standard style to avoid copy-pasting unnecessary material @@ -23,53 +27,62 @@ %===================================================================== -%===================================================================== %新增功能函数 %===================================================================== - %版本判断 - \providetoggle{iftlfive}%用于处理biblatex3.2之前的版本,即texlive2015以下版本中的biblatex - \providetoggle{iftlsix}%用于处理biblatex3.3开始改变的新的姓名机制后版本,包括 + % + % biblatex版本判断 + % 20180405,v1.0k,为兼容biblatexv3.11增加toggle:iftlnine,HU zhenzhen + % + % 原理方法:当版本继续更新时,增加一个新的toggle用以处理新的旧版,最新版本永远用iftlatest + \providetoggle{iftlfive}%用于处理biblatex3.2之前的版本 + \providetoggle{iftlsix}%用于处理biblatex3.3开始改变的新的姓名机制后版本 \providetoggle{iftlseven}%用于处理biblatex3.7的兼容性 - \providetoggle{iftleight}%用于处理>=biblatex3.8的兼容性 - \providetoggle{iftlnine}%用于处理>=biblatex3.10的兼容性 + \providetoggle{iftleight}%用于处理biblatex3.8到3.9的兼容性 + \providetoggle{iftlnine}%用于处理biblatex10的兼容性 + \providetoggle{iftlatest}%用于最新版biblatex,目前是biblatex3.11,20180402 \StrBefore{\abx@version}{.}[\numinteger] \StrBehind{\abx@version}{.}[\numdigital] \IfInteger{\numdigital}{}{\StrGobbleRight{\numdigital}{1}[\numdigital]} - %2.x版本统一用iftlfive=true表示 - %3.0-3.2版本用iftlfive=true表示 - %3.3-3.6版本用iftlsix=true表示 - %3.7版本用iftlseven=true表示 - %>3.8版本用iftleight=true表示 + \togglefalse{iftlfive} + \togglefalse{iftlsix} + \togglefalse{iftlseven} + \togglefalse{iftleight} + \togglefalse{iftlnine} + \toggletrue{iftlatest} \ifnumcomp{\numinteger}{=}{3}{ - \ifnumcomp{\numdigital}{>}{2}{\toggletrue{iftlsix}\togglefalse{iftlfive}}{\togglefalse{iftlsix}\toggletrue{iftlfive}} - \ifnumcomp{\numdigital}{>}{6}{\toggletrue{iftlseven}\togglefalse{iftlsix}}{\togglefalse{iftlseven}} - \ifnumcomp{\numdigital}{>}{7}{\toggletrue{iftleight}\togglefalse{iftlseven}}{\togglefalse{iftleight}} - \ifnumcomp{\numdigital}{>}{9}{\toggletrue{iftlnine}\togglefalse{iftleight}}{\togglefalse{iftlnine}} + \ifnumcomp{\numdigital}{=}{10}{\toggletrue{iftlnine}\togglefalse{iftlatest}}{}%3.10版本 + \ifnumcomp{\numdigital}{<}{10}{\ifnumcomp{\numdigital}{>}{7}{\toggletrue{iftleight}\togglefalse{iftlatest}}{}}{}%>3.8版本用iftleight=true表示 + \ifnumcomp{\numdigital}{=}{7}{\toggletrue{iftlseven}\togglefalse{iftlatest}}{}%3.7版本用iftlseven=true表示 + \ifnumcomp{\numdigital}{<}{7}{\ifnumcomp{\numdigital}{>}{2}{\toggletrue{iftlsix}\togglefalse{iftlatest}}{}}{}%3.3-3.6版本用iftlsix=true表示 + \ifnumcomp{\numdigital}{<}{3}{\toggletrue{iftlfive}\togglefalse{iftlatest}}{}%3.0-3.2版本用iftlfive=true表示 }{\ifnumcomp{\numinteger}{>}{3}{ - \toggletrue{iftleight}\blx@warning@noline{% + \blx@warning@noline{% biblatex version is >= 4.x.\MessageBreak if errors raised,Please contact biblatex-gb7714-2015 pkg author.}% - }{\toggletrue{iftlfive}\blx@warning@noline{% + }{ \toggletrue{iftlfive}\togglefalse{iftlatest}%2.x版本统一用iftlfive=true表示 + \blx@warning@noline{% biblatex version is <= 2.x.\MessageBreak if errors raised,Please contact biblatex-gb7714-2015 pkg author.}% }} \newcommand\defversion[2]{\csdef{codeversion#1#2}}%定义不同版本的命令 \newcommand\switchversion[2]{\csuse{codeversion#1#2}}%使用不同版本的命令 -%定义判断中文字符的函数,用于判断作者等信息是否由中文字符构成 -%2E00-2E7F 追加标点 -%2E80-2EFF cjk部首补充 -%2FF0-2FFF 表意文字描述符 -%3000-303F cjk符号和标点 -%3300-33FF cjk兼容 -%3400-4DBF cjk统一表意符号扩展 -%4E00-9FBF cjk统一表意符号 -%中文范围4E00-9FA5 + % + % 判断CJK字符的函数,用于判断作者等信息是否由中文字符构成 + % + % 原理方法: + % 2E00-2E7F 追加标点 + % 2E80-2EFF cjk部首补充 + % 2FF0-2FFF 表意文字描述符 + % 3000-303F cjk符号和标点 + % 3300-33FF cjk兼容 + % 3400-4DBF cjk统一表意符号扩展 + % 4E00-9FBF cjk统一表意符号 + % 中文范围4E00-9FA5 \providetoggle{ifCJKforgbt} \def\testCJKfirstchar#1#2&{%#1#2& \ifnumgreater{`#1}{"2E7F}{\toggletrue{ifCJKforgbt}}{\togglefalse{ifCJKforgbt}}% }% - %利用edef展开或xstring抽取第一个字符判断 %现在采用xstring方法,避免抽取的是编组符号 \def\testCJKfirst#1{% @@ -79,41 +92,81 @@ \StrChar{#1}{1}[\tempa]% \expandafter\testCJKfirstchar\tempa&} -%用于解析连续出版物,2个卷期的情况 -%范围起止间隔符号还是用-,而不是与date相同的/,因为有合期期刊的问题,需要用到/符号 -\newcommand{\multivolparser}[1]{% - \IfSubStr{#1}{-}% - {\StrBefore{#1}{-}[\multivolfirst]\StrBehind{#1}{-}[\multivolsecond]}% - {\def\multivolfirst{#1}\def\multivolsecond{}}% -} -\newcommand{\multinumberparser}[1]{% - \IfSubStr{#1}{-}% - {\StrBefore{#1}{-}[\multinumberfirst]\StrBehind{#1}{-}[\multinumbersecond]}% - {\def\multinumberfirst{#1}\def\multinumbersecond{}}% -} + + % + % 2个卷的解析函数,用于连续出版物 + % + % 原理方法: 范围起止间隔符号还是用-,而不是与date相同的/,因为有合期期刊的问题,需要用到/符号 + \newcommand{\multivolparser}[1]{% + \IfSubStr{#1}{-}% + {\StrBefore{#1}{-}[\multivolfirst]\StrBehind{#1}{-}[\multivolsecond]}% + {\def\multivolfirst{#1}\def\multivolsecond{}}% + } + + % + % 2个期的解析函数,用于连续出版物 + % + \newcommand{\multinumberparser}[1]{% + \IfSubStr{#1}{-}% + {\StrBefore{#1}{-}[\multinumberfirst]\StrBehind{#1}{-}[\multinumbersecond]}% + {\def\multinumberfirst{#1}\def\multinumbersecond{}}% + } %===================================================================== +% 设置宏包选项 %===================================================================== -%设置宏包选项 -%===================================================================== -\defversion{3.0}{opt}{ - %biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 - %增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 - %因为在作者年制中,不需要使用,这里也增加,为了与顺序年制的兼容性考虑。 - \DeclareBibliographyOption{align}[right]{}% - - %增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 + % + % 增加一个控制是否输出文献类型和载体标识的选项 + % + % 原理方法: + % 对于biblatex3.4以上版本DeclareBibliographyOption命令中的[datatype]如果是boolean,那么是可以省略的 + % 所以用老版本的不用[datatype]的命令可以兼容所有biblatex版本 + \newtoggle{bbx:gbtype} + %\DeclareBibliographyOption[boolean]{gbtype}[true]{%biblatex高版本 + \DeclareBibliographyOption{gbtype}[true]{%biblatex低版本 + \settoggle{bbx:gbtype}{#1}} + \ExecuteBibliographyOptions{gbtype} + + + % + % 增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 + % \newtoggle{bbx:gbpub} \DeclareBibliographyOption{gbpub}[true]{% %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 - \ifstrequal{##1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} + \ifstrequal{#1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} \ExecuteBibliographyOptions{gbpub} + +% +% 针对biblatex<3.3版本的选项设置,比如texlive2015中的3.0版 +% +\defversion{3.0}{opt}{ + % + % 增加姓名大小写格式处理选项 + % + \DeclareBibliographyOption{gbnamefmt}[uppercase]{% + %\ifstrequal{##1}{gbuppercase}{}{}% + \ifstrequal{##1}{lowercase}{\execgblowercase}{}% + \ifstrequal{##1}{none}{\execnamedefault}{} + \ifstrequal{##1}{pinyin}{\execnamepinyin}{} + } + %\ExecuteBibliographyOptions{gbnamefmt} + + % + % 增加标签对齐选项 + % + %因为在作者年制中,不需要使用,这里也增加,为了与顺序年制的兼容性考虑。 + \DeclareBibliographyOption{gbalign}[right]{}% + %增加一个处理佚名或noauthor的控制选项 \DeclareBibliographyOption{gbnoauthor}[true]{% - \ifstrequal{##1}{false}{\dealnoathorfalse}{\dealnoathor}} + \ifstrequal{##1}{false}{}{\dealnoathor}} %\ExecuteBibliographyOptions{gbnoauthor=true}%对于需要展开较早(展开层级优先)的选项,这一执行无效,只能用宏包加载时给出的选项。 + % + % 选项设置 + % \ExecuteBibliographyOptions{ useprefix = true, %名字的信息包括前缀 firstinits = true, %名字有缩写,参考3.1.2.3 Internal @@ -126,26 +179,36 @@ } } +% +% 针对3.3<=biblatex<3.5版本的选项设置,比如texlive2016中的3.4版 +% \defversion{3.4}{opt}{ - %Alter settings that carry through from biblatex - %biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 + % + % 增加姓名大小写格式处理选项 + % + \DeclareBibliographyOption[string]{gbnamefmt}[uppercase]{% + %\ifstrequal{##1}{gbuppercase}{}{}% + \ifstrequal{##1}{lowercase}{\execgblowercase}{}% + \ifstrequal{##1}{none}{\execnamedefault}{} + \ifstrequal{##1}{pinyin}{\execnamepinyin}{} + } + %\ExecuteBibliographyOptions{gbnamefmt} - %增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 - %因为在作者年制中,不需要使用,这里也增加,为了与顺序编码制的兼容性考虑。 - \DeclareBibliographyOption[string]{align}[right]{}% + % + % 增加标签对齐选项 + % - %增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 - \newtoggle{bbx:gbpub} - \DeclareBibliographyOption[boolean]{gbpub}[true]{% - %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 - \ifstrequal{##1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} - \ExecuteBibliographyOptions{gbpub} + %因为在作者年制中,不需要使用,这里也增加,为了与顺序编码制的兼容性考虑。 + \DeclareBibliographyOption[string]{gbalign}[right]{}% %增加一个处理佚名或noauthor的控制选项 - \DeclareBibliographyOption[boolean]{gbnoauthor}[true]{% - \ifstrequal{##1}{false}{\dealnoathorfalse}{\dealnoathor}} - %\ExecuteBibliographyOptions{gbnoauthor=true}%对于需要展开较早(展开层级优先)的选项,这一执行无效,只能利用宏包加载时给出选项达到目的。 + \DeclareBibliographyOption{gbnoauthor}[true]{% + \ifstrequal{##1}{false}{}{\dealnoathor}} + %\ExecuteBibliographyOptions{gbnoauthor=true}%对于需要展开较早(展开层级优先)的选项,这一执行无效,只能用宏包加载时给出的选项。 + % + % 选项设置 + % \ExecuteBibliographyOptions{ useprefix = true, %名字的信息包括前缀 %firstinits = true, %名字有缩写,参考3.1.2.3 Internal @@ -159,26 +222,35 @@ } } +% +% 针对3.7<=biblatex<=3.9版本的选项设置,比如texlive2017中的3.7版 +% \defversion{3.7}{opt}{ - %Alter settings that carry through from biblatex - %biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 + % + % 增加姓名大小写格式处理选项 + % + \DeclareBibliographyOption[string]{gbnamefmt}[uppercase]{% + %\ifstrequal{##1}{gbuppercase}{}{}% + \ifstrequal{##1}{lowercase}{\execgblowercase}{}% + \ifstrequal{##1}{none}{\execnamedefault}{} + \ifstrequal{##1}{pinyin}{\execnamepinyin}{} + } + %\ExecuteBibliographyOptions{gbnamefmt} - %增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 + % + % 增加标签对齐选项 + % %因为在作者年制中,不需要使用,这里也增加,为了与顺序编码制的兼容性考虑。 - \DeclareBibliographyOption[string]{align}[right]{}% - - %增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 - \newtoggle{bbx:gbpub} - \DeclareBibliographyOption[boolean]{gbpub}[true]{% - %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 - \ifstrequal{##1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} - \ExecuteBibliographyOptions{gbpub} + \DeclareBibliographyOption[string]{gbalign}[right]{}% %增加一个处理佚名或noauthor的控制选项 - \DeclareBibliographyOption[boolean]{gbnoauthor}[true]{% - \ifstrequal{##1}{false}{\dealnoathorfalse}{\dealnoathor}} - %\ExecuteBibliographyOptions{gbnoauthor=true}%对于需要展开较早(展开层级优先)的选项,这一执行无效,只能利用宏包加载时给出选项达到目的。 + \DeclareBibliographyOption{gbnoauthor}[true]{% + \ifstrequal{##1}{false}{}{\dealnoathor}} + %\ExecuteBibliographyOptions{gbnoauthor=true}%对于需要展开较早(展开层级优先)的选项,这一执行无效,只能用宏包加载时给出的选项。 + % + % 选项设置 + % \ExecuteBibliographyOptions{ useprefix = true, %名字的信息包括前缀 %firstinits = true, %名字有缩写,参考3.1.2.3 Internal @@ -194,26 +266,35 @@ } } -\defversion{3.10}{opt}{ - %Alter settings that carry through from biblatex - %biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 +% +% 针对3.10<=biblatex版本的选项设置,比如texlive2018中的3.11版 +% + \defversion{3.10}{opt}{ + % + % 增加姓名大小写格式处理选项 + % + \DeclareBibliographyOption[string]{gbnamefmt}[uppercase]{% + %\ifstrequal{##1}{gbuppercase}{}{}% + \ifstrequal{##1}{lowercase}{\execgblowercase}{}% + \ifstrequal{##1}{none}{\execnamedefault}{} + \ifstrequal{##1}{pinyin}{\execnamepinyin}{} + } + %\ExecuteBibliographyOptions{gbnamefmt} - %增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 - %因为在作者年制中,不需要使用,这里也增加,为了与顺序编码制的兼容性考虑。 - \DeclareBibliographyOption[string]{align}[right]{}% - - %增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 - \newtoggle{bbx:gbpub} - \DeclareBibliographyOption[boolean]{gbpub}[true]{% - %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 - \ifstrequal{##1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} - \ExecuteBibliographyOptions{gbpub} + % + % 增加标签对齐选项 + % + % 原理方法:因为在作者年制中,不需要使用,这里也增加,为了与顺序编码制的兼容性考虑。 + \DeclareBibliographyOption[string]{gbalign}[right]{}% %增加一个处理佚名或noauthor的控制选项 - \DeclareBibliographyOption[boolean]{gbnoauthor}[true]{% - \ifstrequal{##1}{false}{\dealnoathorfalse}{\dealnoathor}} - %\ExecuteBibliographyOptions{gbnoauthor=true}%对于需要展开较早(展开层级优先)的选项,这一执行无效,只能利用宏包加载时给出选项达到目的。 + \DeclareBibliographyOption{gbnoauthor}[true]{% + \ifstrequal{##1}{false}{}{\dealnoathor}} + %\ExecuteBibliographyOptions{gbnoauthor=true}%对于需要展开较早(展开层级优先)的选项,这一执行无效,只能用宏包加载时给出的选项。 + % + % 选项设置 + % \ExecuteBibliographyOptions{ useprefix = true, %名字的信息包括前缀 %firstinits = true, %名字有缩写,参考3.1.2.3 Internal @@ -229,51 +310,65 @@ } } -\iftoggle{iftlfive} - {\switchversion{3.0}{opt}}%%当采用texlive2015以下版本时,biblatex3.0 - {\iftoggle{iftlsix}% - {\switchversion{3.4}{opt}}%%当采用texlive2016版本时,biblatex3.4 - {\iftoggle{iftlnine}% - {\switchversion{3.10}{opt}}%%当采用biblatex3.10以上版本时 - {\switchversion{3.7}{opt}}%%当采用biblatex3.4以上版本时 - } - } +% +% 根据biblatex版本信息,选择选项设置 +% +% 原理方法:如下这种选择机制能自动兼容更新的版本,但对于老版本 +% 必须要把情况列全。 +\iftoggle{iftlfive}{\switchversion{3.0}{opt}}{}%biblatex<=3.2 +\iftoggle{iftlsix}{\switchversion{3.4}{opt}}{}%3.3<=biblatex<=3.6 +\iftoggle{iftlseven}{\switchversion{3.7}{opt}}{}%biblatex=3.7 +\iftoggle{iftleight}{\switchversion{3.7}{opt}}{}%3.8<=biblatex<=3.9 +\iftoggle{iftlnine}{\switchversion{3.10}{opt}}{}%biblatex=3.10 +\iftoggle{iftlatest}{\switchversion{3.10}{opt}}{}%biblatex最新3.11 %===================================================================== -%===================================================================== %设置本地化字符串 %===================================================================== - %新建一个当地化字符串,用来记录“等”字符 + % + % 新建当地化字符串,用来记录“等”字符 + % \NewBibliographyString{andotherscn} \NewBibliographyString{noaddress} \NewBibliographyString{nopublisher} -%直接利用当地化格式english进行修改一些中文的格式,具体可以修改哪些,参考english.lbx文件 -%当然也可以增加比如上面定义的andotherscn -%注意:在lbx文件和bbx文件中定义本地字符串的不同语法,两个参数和一个参数的区别 + % + % 修改一些当地化字符串 + % + % 原理方法:直接利用当地化格式english修改出一些中文的格式,具体修改内容参考english.lbx文件 + % 当然也可以增加比如上面定义的andotherscn + % 注意:在lbx文件和bbx文件中定义本地字符串的不同语法,两个参数和一个参数的区别 \DefineBibliographyStrings{english}{ -bibliography = {参考文献}, -references = {参考文献}, -bytranslator= {\addcomma\ 译\adddot}, %将trans. by 改成 译 -and = {\addcomma},%将第2和3人名见的and符号改成 逗号,用\finalnamedelim命令也可以定义,参见3.9.1节 -%andothers = {et al.}, %将超过3个人名的省略,et al.改成为 等 -andotherscn = {等}, %将超过3个人名的省略,et al.改成为 等 -noaddress = {[S.l.]}, -nopublisher = {[s.n.]}, -backrefpage = {引用页:}, -backrefpages = {引用页:}, + bibliography = {参考文献}, + references = {参考文献}, + bytranslator= {\addcomma\ 译\adddot}, %将trans. by 改成 译 + and = {\addcomma},%将第2和3人名见的and符号改成 逗号,用\finalnamedelim命令也可以定义,参见3.9.1节 + %andothers = {et al.}, %将超过3个人名的省略,et al.改成为 等 + andotherscn = {等}, %将超过3个人名的省略,et al.改成为 等 + noaddress = {[S.l.]}, + nopublisher = {[s.n.]}, + backrefpage = {引用页:}, + backrefpages = {引用页:}, } %===================================================================== -%===================================================================== %动态数据修改,修改输入的源文件数据,用于中文判断等操作 %===================================================================== -%首先把作者和译者信息准确的记录到userf,usere中,用于后面判断是否是cjk字符。 -%注意\DeclareSourcemap命令只能出现一次 +% +% 修改输入的参考文献数据,源文件层的操作 +% +% 原理方法:增加文献标识符如[M],[J]等 +% 把作者和译者信息准确的记录到userf,usere中,用于后面判断是否是cjk字符。 +% 注意:这里用userf,usere而不是namee,namef,是因为只有把name列表转成域,才能有效读取姓名中的字符, +% 如果用namee,namef,name信息会自动解析,所以就不能为cjk判断提供需要的信息 +% 注意\DeclareSourcemap命令对于biblatex3.11以下版本只能出现一次,3.11版开始支持多个 \DeclareSourcemap{ \maps[datatype=bibtex]{ + \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 + \step[fieldsource={author}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] + } \map{ \pertype{article} \step[fieldset=usera, fieldvalue={J}] @@ -281,9 +376,9 @@ backrefpages = {引用页:}, \map{ \pertype{periodical} \step[fieldset=usera, fieldvalue={J}] - \step[fieldsource=author] %有时会把author和editor混淆,这里处理后就没有这个问题 + \step[fieldsource=author] %有时会把author和editor混淆,处理后避免该问题 \step[fieldset=editor, origfieldval] - \step[fieldsource=publisher] %有时会把publisher和institution混淆,这里处理后就没有这个问题 + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后避免该问题 \step[fieldset=institution, origfieldval] } \map{ @@ -295,7 +390,7 @@ backrefpages = {引用页:}, \pertype{book} \pertype{inbook} \step[fieldset=usera, fieldvalue={M}] - \step[fieldsource=version] %有时会把version和edition混淆,这里处理后就没有这个问题,可以直接用version + \step[fieldsource=version] %有时会把version和edition混淆,处理后避免该问题,可以直接用version \step[fieldset=edition, origfieldval] } \map{ @@ -311,7 +406,7 @@ backrefpages = {引用页:}, \pertype{inproceedings} \pertype{conference}%兼容老的conference类型 \step[fieldset=usera, fieldvalue={C}] - \step[fieldsource=institution] %有时会把publisher和institution混淆,这里处理后就没有这个问题 + \step[fieldsource=institution] %有时会把publisher和institution混淆,处理后避免该问题 \step[fieldset=publisher, origfieldval] \step[fieldsource=editor] % \step[fieldset=bookauthor, origfieldval] @@ -328,7 +423,7 @@ backrefpages = {引用页:}, \pertype{report} \pertype{techreport}%兼容老的techreport类型 \step[fieldset=usera, fieldvalue={R}] - \step[fieldsource=publisher] %有时会把publisher和institution混淆,这里处理后就没有这个问题 + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后避免该问题 \step[fieldset=institution, origfieldval] } \map{ @@ -346,7 +441,7 @@ backrefpages = {引用页:}, \map{ \pertype{manual} \step[fieldset=usera, fieldvalue={A}] - \step[fieldsource=edition] %有时会把version和edition混淆,这里处理后就没有这个问题,可以直接用version + \step[fieldsource=edition] %有时会把version和edition混淆,处理后避免该问题,可以直接用version \step[fieldset=version, origfieldval] \step[fieldsource=organization]%因为用的report的驱动,所以需要institution域,也把organization转成它,这样增大兼容性 \step[fieldset=institution, origfieldval] @@ -378,14 +473,14 @@ backrefpages = {引用页:}, \step[fieldset=date, origfieldval] } \map{%将title信息保存到userd中避免因为标签生成原因导致title域被清除 - \step[fieldsource=title, match=\regexp{([^\\\{])}] + \step[fieldsource=title, match=\regexp{([^\\\{])}]%} \step[fieldset=userd, fieldvalue={$1}] } \map{%将entrykey放入keywords中用于后期的使用 \step[fieldsource=entrykey] \step[fieldset=keywords, origfieldval] } - \map[overwrite]{%这里还必须有overwrite,怎么之前会觉得没有问题呢,可能是之前版本拷错了,还是之前是texlive2015变16后biber有了变化(2016-1207修改正确) + \map[overwrite]{%这里还必须有overwrite,注意不同版本存在差异,比如texlive2015变16后biber有变化(20161207修改正确) \step[fieldsource=note, final]%将note域信息复制给keywords,用于输出时容易区分标准和报纸 \step[fieldset=keywords, fieldvalue={,}, append] \step[fieldset=keywords, origfieldval, append] @@ -410,8 +505,8 @@ backrefpages = {引用页:}, \step[fieldset=userb,fieldvalue={en}] } %本来后面这些是放到DeclareStyleSourcemap中处理的,但是因为texlive2016的biblatex3.4不支持多个DeclareStyleSourcemap, - %但有处理特殊字符和处理gbnoauthor选项的需求,所以把这些提到这来,以后将这两个功能结合到一个DeclareStyleSourcemap时, - %不用复制如下段代码了。 + %但又有处理特殊字符和处理gbnoauthor选项两个需求,但gbnoauthor需要用DeclareStyleSourcemap所以把这些提到这来, + %以后将这两个功能结合到一个DeclareStyleSourcemap时,不用复制如下段代码了。 \map{%尝试未定义数据模型的newspaper类型映射为article,newspaper完全是针对gb7714的新类型,在biblatex中完全没有定义 %但从实践看,并没有什么影响,映射过来就可以了。 \step[typesource=newspaper, typetarget=article, final] @@ -435,64 +530,55 @@ backrefpages = {引用页:}, \step[typesource=techreport, typetarget=report, final] %\step[fieldset=type, fieldvalue=techreport] } - } -} - -\def\dealnoathorfalse{ - \iftoggle{iftlfive}{ - \DeclareStyleSourcemap{ - \maps[datatype=bibtex]{ - \map[overwrite]{%title,booktitle,journaltitle,journal,publisher,address,location,institution,organization + \map[overwrite]{%title,booktitle,journaltitle,journal,publisher,address,location,institution,organization \step[fieldsource={title}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={booktitle}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={journaltitle}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={journal}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={publisher}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={address}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={location}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={institution}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={booktitle}, match=\regexp{([^\\])\#}, replace=\regexp{$1\\\#}] - } - \map[overwrite]{ - \step[fieldsource={booktitle}, match=\regexp{([^\\])\%}, replace=\regexp{$1\\\%}] - } } - } - }{\DeclareStyleSourcemap{ - \maps[datatype=bibtex]{ - \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,address,location,institution,organization}]{ - \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\#}, replace=\regexp{$1\\\#}] - } - \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,address,location,institution,organization}]{ - \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\%}, replace=\regexp{$1\\\%}] - } - \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,% - address,location,institution,organization}]{ - \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } + \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\\\%}] + } + %对于高版本(3.4以上)可以用下面这一段取代前面那一段,为了兼容gbnoauthor选项,这些代码只能在sourcemap中使用,所以只能选择前面那一段 + %\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}] +% } } } +% +% 佚名/noauthor的处理 +% +% 原理方法:利用样式层的动态数据修改实现 \def\dealnoathor{ - \iftoggle{iftlfive}{ \DeclareStyleSourcemap{ \maps[datatype=bibtex]{ \map{%默认情况下将空缺作者设置为佚名 @@ -503,69 +589,17 @@ backrefpages = {引用页:}, \step[fieldsource=userb,match={en},final] \step[fieldset=author, fieldvalue={NOAUTHOR}] } - \map[overwrite]{%title,booktitle,journaltitle,journal,publisher,address,location,institution,organization - \step[fieldsource={title}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={booktitle}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={journaltitle}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={journal}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={publisher}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={address}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={location}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={institution}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - \map[overwrite]{ - \step[fieldsource={booktitle}, match=\regexp{([^\\])\#}, replace=\regexp{$1\\\#}] - } - \map[overwrite]{ - \step[fieldsource={booktitle}, match=\regexp{([^\\])\%}, replace=\regexp{$1\\\%}] - } - } - } - }{ \DeclareStyleSourcemap{ - \maps[datatype=bibtex]{ - \map{%默认情况下将空缺作者设置为佚名 - \step[fieldsource=userb,match={cn},final] - \step[fieldset=author, fieldvalue={佚名}] - } - \map{%默认情况下将空缺作者设置为佚名 - \step[fieldsource=userb,match={en},final] - \step[fieldset=author, fieldvalue={NOAUTHOR}] - } - \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,address,location,institution,organization}]{ - \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\#}, replace=\regexp{$1\\\#}] - } - \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,address,location,institution,organization}]{ - \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\%}, replace=\regexp{$1\\\%}] - } - \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,% - address,location,institution,organization}]{ - \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } } } - } } %===================================================================== +% 设置排序格式 %===================================================================== -%设置排序格式 -%===================================================================== -%排序用降序或userb域 +% +% 排序格式,用降序,及userb域,针对biblatex3.7及以下版本 +% \defversion{3.7}{sort}{%这是3.4版的,3.7版略有差异,但不大,后面有注释 \DeclareSortingScheme{nyt}{ \sort{ @@ -600,6 +634,9 @@ backrefpages = {引用页:}, } } +% +% 排序格式,用降序,及userb域,针对biblatex3.8及以上版本 +% \defversion{3.8}{sort}{ \DeclareSortingTemplate{nyt}{ \sort{ @@ -633,6 +670,9 @@ backrefpages = {引用页:}, } } + % + % 定义命令\defdoublelangentry,用于biblatex>v3.8版利用related实现双语文献的处理 + % %为了实现v3.8以上版本的双语文献,采用related的方法代替set方法,因为set方法已经无法实现了, %因为set不再复制其第一个成员的信息。于是定义一个命令,用于动态的修改数据,即添加related域的信息 %其中使用了\DeclareStyleSourcemap,但由于其只能出现在导言区中,因此\defdoublelangentry命令也只能出现在导言区中 @@ -650,20 +690,17 @@ backrefpages = {引用页:}, } } -\iftoggle{iftlfive} - {\switchversion{3.7}{sort}}%%当采用texlive2015以下版本时 - {\iftoggle{iftlsix}% - {\switchversion{3.7}{sort}}%%当采用texlive2016版本时 - {\iftoggle{iftlseven}% - {\switchversion{3.7}{sort}}%%当采用texlive2017版本时 - {\switchversion{3.8}{sort}}%%当采用biblatex3.8a以上版本时 - }% - } +\ifboolexpr{ +test {\iftoggle{iftlfive}} +or +test {\iftoggle{iftlsix}} +or +test {\iftoggle{iftlseven}}%biblatex<=3.7 +}{\switchversion{3.7}{sort}}{\switchversion{3.8}{sort}}%3.8<=biblatex %===================================================================== -%===================================================================== %参考文献列表环境 %===================================================================== \defbibenvironment{bibliography}%修改参考文献列表环境,不要缩进 @@ -680,42 +717,55 @@ backrefpages = {引用页:}, %===================================================================== +% 设置单元或块等的标点 %===================================================================== -%设置单元或块等的标点 -%===================================================================== -\renewrobustcmd*{\bibinitperiod}{} %将名字简写后的点去掉%来源biblatex2.STY -\renewcommand*{\revsdnamepunct}{}%来源biblatex.def +\renewrobustcmd*{\bibinithyphendelim}{\addhighpenspace}%用于处理姓名中名部分存在-的情况,比如ZHANG Yu-xin \renewcommand*{\subtitlepunct}{\addcolon\space} %修改标题和其它标题信息间的标点%来源biblatex.def -%双语言或多语言的参考文献,可以参考3.11.5 Entry Sets,4.11.1 Entry Sets -%这里调整一下两种语言参考文献的间隔,%源来自biblatex.def +% +% 利用set实现的多语言文献不同语言间的分隔符 +% 20170411,双语之间用newline替换par,避免采用gb7714-2015的项对齐方式第二语言间分段导致没有缩进 +% +% 原理方法:set方法可以参考3.11.5 Entry Sets,4.11.1 Entry Sets +% 这里调整一下两种语言参考文献的间隔,源来自biblatex.def \renewcommand*{\entrysetpunct}{\adddot\par\nobreak} \renewcommand*{\bibpagespunct}{\addcolon\addthinspace}%页码引用格式的修改%修改为用冒号 %\renewcommand{\relateddelim}{}%\par %===================================================================== +% 修改域的格式 %===================================================================== -%修改域的格式 -%===================================================================== -%新增文献类型标识符的格式 +% +% 新增文献类型标识符的格式 +% \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}} -%重设title的输出格式,不加emph,原格式来自biblatex.def文件 +% +% 重设title等参考文献信息的输出格式 +% +% 原理方法:修改来自biblatex.def文件的原格式 + \DeclareFieldFormat{title}{#1\adddot\addthinspace} \DeclareFieldFormat{journaltitle}{#1\isdot}%添加\isdot,用于缩写名带点情况,将其转换为缩写点,便于标点的追踪 \DeclareFieldFormat{issuetitle}{#1} @@ -727,10 +777,120 @@ backrefpages = {引用页:}, \DeclareFieldFormat%将期刊等文献的标题中原来带的引号去掉 [inbook,incollection,inproceedings] {title}{#1\nopunct\unspace} +\DeclareFieldFormat{url}{\url{#1}} %url域修改如本行%url相关输出,源来自biblatex.def +% +% 标题的字母大小写格式修改 +% +% 注意:修改标题的字母大小写,不同用前面的title的格式而要用titlecase +% 因为titlecase is applied to the contents of the field directly,title is not \DeclareFieldFormat{titlecase}{\MakeCapital#1}%重设标题格式,将其修改为首字母大写 +\DeclareFieldFormat{pages}{#1}%页码引用格式的修改%去掉前面引导页码的pp.等字符 +\DefineBibliographyExtras{english}{\renewcommand*{\bibrangedash}{-}} + + +% +% 文献标题后的标点问题 +% 20180405,v1.0k,为texlive2017以上版本中的beamer兼容性做的处理,Hu Zhenzhen +% +% 原理方法:如下代码处理texlive2017以上版本中,beamer中文献的标题后出现两个点的情况: +% texlive2017以上的beamer中对macro{title}做了patch,正常情况下不会出现两个点的情况,但由于 +% 之前为了处理texlive2015,2016下的title格式添加了adddot,导致出现两个点的情况,而且也影响 +% 析出文献的//符号的输出,因此再次对macro{title}做patch消除beamer中做apptocmd时添加的\newunitpunct +\ifboolexpr{% + test{\iftoggle{iftlfive}} + or + test{\iftoggle{iftlsix}} + }{}% + {%texlive 2017对应iftlseven以上版本 + \DeclareFieldFormat{title}{#1}% + \DeclareFieldFormat[article,patent,thesis,unpublished]{title}{#1} + \AtBeginDocument{% + \@ifclassloaded{beamer} + {\patchcmd{\abx@macro@title}{\newunitpunct}{}{}{}}{}} + } +% +% 修改译者位置格式 +% +% 原理方法:修改来自biblatex.def文件的bytranslator+others宏的格式 +\renewbibmacro*{bytranslator+others}{% + \ifnameundef{translator} + {} + {%\usebibmacro{bytranslator+othersstrg} + %\setunit{\addspace}% + \printnames[bytranslator]{translator}% + \clearname{translator}% + \usebibmacro{bytranslator+othersstrg}%“译”的位置换到下面来,即放到译者后面。 + \setunit{\addspace}% + \newunit}% + \usebibmacro{withothers}} + +% +% 下面一段没有作用,但从中可以看到当地化字符串格式的引用前的代码处理 +% 比如生成cotranslator等用于调用cotranslator所代表的当地化字符串 +% \renewbibmacro*{bytranslator+othersstrg}{% + + +% +% 修改作者数量超过限定值,做省略时的处理格式 +% +% 原理方法:判断作者或译者是否中文,若中文用字符等,否则用etcl。 +\renewbibmacro*{name:andothers}{% + \ifboolexpr{ + test {\ifnumequal{\value{listcount}}{\value{liststop}}} + and + test \ifmorenames + }{%这里做一个判断是在处理author还是translator用于两者是不同语言的情况 + \ifcurrentname{translator}{\iffieldundef{usere}{\togglefalse{ifCJKforgbt}}{\testCJKfirst{\thefield{usere}}}}% + {\iffieldundef{usere}{\togglefalse{ifCJKforgbt}}{\testCJKfirst{\thefield{userf}}}}% + %这句判断如果放到\andothersdelim后面会在等或etc.前增加一个空格,所以放前面 + \ifnumgreater{\value{liststop}}{1} + {\finalandcomma} + {\finalandcomma}% +\andothersdelim\iftoggle{ifCJKforgbt}{\bibstring{andotherscn}}{\bibstring{andothers}} +%\andothersdelim\bibstring{andotherscn} +}{}} + + +% 重设title的输出 +% +% 原理方法:将文献类型标识符输出出去,原输出来自biblatex.def文件 +% 利用toggle做标识符是否输出的判断 +\renewbibmacro*{title}{% + \ifboolexpr{% + test{\iffieldundef{title}}% + and% + test{\iffieldundef{subtitle}}% + }% + {}% + {\printtext[title]{% + \printfield[titlecase]{title}% + \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题 + {}{\setunit{\subtitlepunct}% + \printfield[titlecase]{subtitle}}% + \iffieldundef{titleaddon}{}%判断一下titleaddon,否则直接加可能多一个空格 + {\setunit{\subtitlepunct}\printfield{titleaddon}}% + \iftoggle{bbx:gbtype}{% + \iffieldundef{note}{\printfield[gbtypeflag]{usera}}%在标题后直接给出文献标识字母,判断一下,是否是报纸和标准 + {\iffieldequalstr{note}{standard}{\printfield[gbtypeflags]{usera}}%判断是否为标准 + {\iffieldequalstr{note}{news}{\printfield[gbtypeflagn]{usera}}%判断是否为报纸 + {\printfield[gbtypeflag]{usera}}}%其它 + }}{}% + \iffieldundef{booktitle}{\newunit}{}%当title是析出时,不要标点 + %\newunit + }% +}% +} + + +% +% 作者信息的输出格式,针对biblatex<3.3版本,gbt7714-2015的姓名全大写格式 +% \defversion{3.0}{name}{ + \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉,%来源biblatex2.STY + %\renewrobustcmd*{\bibinithyphendelim}{\addnbspace}%biblatex.STY,名中间带-符号的情况下的首字母缩写中间的分隔符 + \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def %biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 \renewbibmacro*{name:last-first}[4]{% \ifuseprefix @@ -767,7 +927,13 @@ backrefpages = {引用页:}, \usebibmacro{name:last-first}{##1}{##2}{##3}{##4}} } +% +% 作者信息的输出格式,针对biblatex>=3.3版本,gbt7714-2015的姓名全大写格式 +% \defversion{3.4}{name}{ + \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉,%来源biblatex2.STY + %\renewrobustcmd*{\bibinithyphendelim}{\addnbspace}%biblatex.STY,名中间带-符号的情况下的首字母缩写中间的分隔符 + \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def %biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 \renewbibmacro*{name:given-family}[4]{%利用family-given定义given-family \ifuseprefix @@ -799,37 +965,281 @@ backrefpages = {引用页:}, \usebibmacro{name:given-family}{##1}{##2}{##3}{##4}} } -\iftoggle{iftlfive}%根据texlive/biblatex版本选择 - {\switchversion{3.0}{name}}% - {\switchversion{3.4}{name}} +% +% 作者信息的输出格式,针对biblatex<3.3版本,姓名大小写格式不变 +% +\defversion{3.0}{nameb}{ + \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉,%来源biblatex2.STY + %\renewrobustcmd*{\bibinithyphendelim}{\addnbspace}%biblatex.STY,名中间带-符号的情况下的首字母缩写中间的分隔符 + \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def + %biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 + \renewbibmacro*{name:last-first}[4]{% + \ifuseprefix + {\usebibmacro{name:delim}{##3##1}% + \usebibmacro{name:hook}{##3##1}% + \ifblank{##3}{}{% + \ifcapital + {\mkbibnameprefix{\MakeCapital{##3}}\isdot} + {\mkbibnameprefix{##3}\isdot}% + \ifpunctmark{'}{}{\bibnamedelimc}}% + %\mkbibnamelast{#1}\isdot + \ifblank{##2}{\MakeCapital##1}{\mkbibnamelast{{##1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase + %注意上一句\MakeCapital后面如果再跟一个{}包含#1,则没有效果,可能是包在里面少了一层展开 + %因为机构名通常包括在{}内,所以要多展开一次才行,所以这里去掉#1外面的{} + %\mkbibnamelast{\MakeUppercase{#1}}\isdot + %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 + \ifblank{##2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamefirst{{##2}}\isdot}% + \ifblank{##4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{##4}\isdot}} + {\usebibmacro{name:delim}{##1}% + \usebibmacro{name:hook}{##1}% + %\mkbibnamelast{#1}\isdot %3.9.1 Generic Commands and Hooks,对姓重新处理,如下句: %\mkbibnamelast{\MakeUppercase{#1}} + \ifblank{##2}{\MakeCapital##1}{\mkbibnamelast{{##1}}}\isdot %大写,参考4.6.4 Miscellaneous Commands,\MakeUppercase %\MakeSentenceCase + %\mkbibnamelast{\MakeUppercase{#1}}\isdot + %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 + \ifblank{##2##3}{}{\revsdnamepunct}% + \ifblank{##2}{}{\bibnamedelimd\mkbibnamefirst{{##2}}\isdot}% + \ifblank{##3}{}{\bibnamedelimd\mkbibnameprefix{##3}\isdot}% + \addcomma\addspace% + \ifblank{##4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{##4}\isdot}% + } + } + \renewbibmacro*{name:first-last}[4]{% + \usebibmacro{name:last-first}{##1}{##2}{##3}{##4}} +} -%重设title的输出,将文献类型标识符输出出去,原输出来自biblatex.def文件 -\renewbibmacro*{title}{% - \ifboolexpr{% - test{\iffieldundef{title}}% - and% - test{\iffieldundef{subtitle}}% - }% - {}% - {\printtext[title]{% - \printfield[titlecase]{title}% - \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题 - {}{\setunit{\subtitlepunct}% - \printfield[titlecase]{subtitle}}% - \iffieldundef{titleaddon}{}%判断一下titleaddon,否则直接加可能多一个空格 - {\setunit{\subtitlepunct}\printfield{titleaddon}}% - \iffieldundef{note}{\printfield[gbtypeflag]{usera}}%在标题后直接给出文献标识字母,判断一下,是否是报纸和标准 - {\iffieldequalstr{note}{standard}{\printfield[gbtypeflags]{usera}}%判断是否为标准 - {\iffieldequalstr{note}{news}{\printfield[gbtypeflagn]{usera}}%判断是否为报纸 - {\printfield[gbtypeflag]{usera}}}%其它 - }% - \iffieldundef{booktitle}{\newunit}{}%当title是析出时,不要标点 - %\newunit - }% -}% +% +% 作者信息的输出格式,针对biblatex>=3.3版本,姓名大小写格式不变 +% +\defversion{3.4}{nameb}{ + \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉,%来源biblatex2.STY + %\renewrobustcmd*{\bibinithyphendelim}{\addnbspace}%biblatex.STY,名中间带-符号的情况下的首字母缩写中间的分隔符 + \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def + %biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 + \renewbibmacro*{name:given-family}[4]{%用family-given修改后的内容定义given-family + \ifuseprefix + {\usebibmacro{name:delim}{##3##1}% + \usebibmacro{name:hook}{##3##1}% + \ifdefvoid{##3}{}{% + \ifcapital + {\mkbibnameprefix{\MakeCapital{##3}}\isdot} + {\mkbibnameprefix{##3}\isdot}% + \ifprefchar{}{\bibnamedelimc}}% + \ifdefvoid{##2}{\mkbibnamefamily{\MakeCapital{##1}}}{\mkbibnamefamily{{##1}}}\isdot% + \ifdefvoid{##2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{{##2}}\isdot}%\MakeCapital + \ifdefvoid{##4}{}{\bibnamedelimd\mkbibnamesuffix{##4}\isdot}} + {\usebibmacro{name:delim}{##1}% + \usebibmacro{name:hook}{##1}% + \ifdefvoid{##2}{\mkbibnamefamily{\MakeCapital{##1}}}{\mkbibnamefamily{{##1}}}\isdot% + % + \ifboolexpe{% + test {\ifdefvoid{##2}} + and + test {\ifdefvoid{##3}}} + {} + {\revsdnamepunct}% + \ifdefvoid{##2}{}{\bibnamedelimd\mkbibnamegiven{{##2}}\isdot}%\MakeCapital + \ifdefvoid{##3}{}{\bibnamedelimd\mkbibnameprefix{##3}\isdot} + \ifdefvoid{##4}{}{\bibnamedelimd\mkbibnamesuffix{##4}\isdot}} + } + \renewbibmacro*{name:family-given}[4]{% + \usebibmacro{name:given-family}{##1}{##2}{##3}{##4}} } -\DeclareFieldFormat{url}{\url{#1}} %url域修改如本行%url相关输出,源来自biblatex.def +% +% 作者信息的输出格式,针对biblatex<3.3版本,姓名大小写格式采用标准样式 +% +\defversion{3.0}{namec}{ + \renewrobustcmd*{\bibinitperiod}{\adddot} + \renewrobustcmd*{\bibinithyphendelim}{\adddot\addnbspace}%biblatex.STY,名中间带-符号的情况下的首字母缩写中间的分隔符 + \renewcommand*{\revsdnamepunct}{\addcomma} + %biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 + \renewbibmacro*{name:last-first}[4]{% + \ifuseprefix + {\usebibmacro{name:delim}{##3##1}% + \usebibmacro{name:hook}{##3##1}% + \ifblank{##3}{}{% + \ifcapital + {\mkbibnameprefix{\MakeCapital{##3}}\isdot} + {\mkbibnameprefix{##3}\isdot}% + \ifpunctmark{'}{}{\bibnamedelimc}}% + \mkbibnamelast{##1}\isdot + \ifblank{##4}{}{\bibnamedelimd\mkbibnameaffix{##4}\isdot}%这句放到后面 + \ifblank{##2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamefirst{{##2}}\isdot}} + {\usebibmacro{name:delim}{##1}% + \usebibmacro{name:hook}{##1}% + \mkbibnamelast{##1}\isdot %3.9.1 Generic Commands and Hooks,对姓重新处理,如下句: %\mkbibnamelast{\MakeUppercase{#1}} + \ifblank{##4}{}{\bibnamedelimd\mkbibnameaffix{##4}\isdot}%这句放到后面 + \ifblank{##2##3}{}{\revsdnamepunct}% + \ifblank{##2}{}{\bibnamedelimd\mkbibnamefirst{{##2}}\isdot}% + \ifblank{##3}{}{\bibnamedelimd\mkbibnameprefix{##3}\isdot}% + } + } + \renewbibmacro*{name:first-last}[4]{% + \usebibmacro{name:last-first}{##1}{##2}{##3}{##4}} +} + +% +% 作者信息的输出格式,针对biblatex>=3.3版本,姓名大小写格式采用标准样式 +% +\defversion{3.4}{namec}{ + \renewrobustcmd*{\bibinitperiod}{\adddot} + \renewrobustcmd*{\bibinithyphendelim}{\adddot\addnbspace}%biblatex.STY,名中间带-符号的情况下的首字母缩写中间的分隔符 + \renewcommand*{\revsdnamepunct}{\addcomma} + \renewbibmacro*{name:given-family}[4]{% + \usebibmacro{name:delim}{##2##3##1}% + \usebibmacro{name:hook}{##2##3##1}% + \ifdefvoid{##2}{}{\mkbibnamegiven{##2}\isdot\bibnamedelimd}% + \ifdefvoid{##3}{}{% + \mkbibnameprefix{##3}\isdot + \ifprefchar + {} + {\ifuseprefix{\bibnamedelimc}{\bibnamedelimd}}}% + \mkbibnamefamily{##1}\isdot + \ifdefvoid{##4}{}{\bibnamedelimd\mkbibnamesuffix{##4}\isdot}} + \DeclareNameAlias{family-given}{default} + + \renewbibmacro*{name:family-given}[4]{% + \usebibmacro{name:given-family}{##1}{##2}{##3}{##4}} +} + +% +% 作者信息的输出格式,针对biblatex<3.3版本,姓名大小写格式采用拼音样式 +% +\defversion{3.0}{named}{ + \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉,%来源biblatex2.STY + \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def + \renewrobustcmd*{\bibnamedelima}{\mbox{-}} + + %注意authoryear作者输出用的sortname格式也就是family-given/given-family + %不同于nemeric的first-last格式 + \DeclareNameFormat{last-first/first-last}{% + \usebibmacro{name:first-last}{##1}{##3}{##5}{##7}% + \usebibmacro{name:andothers}} + + %biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 + \renewbibmacro*{name:last-first}[4]{% + \ifuseprefix + {\usebibmacro{name:delim}{##3##1}% + \usebibmacro{name:hook}{##3##1}% + \ifblank{##3}{}{% + \ifcapital + {\mkbibnameprefix{\MakeCapital{##3}}\isdot} + {\mkbibnameprefix{##3}\isdot}% + \ifpunctmark{'}{}{\bibnamedelimc}}% + %\mkbibnamelast{#1}\isdot + \ifblank{##2}{\MakeCapital##1}{\mkbibnamelast{\MakeUppercase{##1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase + %注意上一句\MakeCapital后面如果再跟一个{}包含#1,则没有效果,可能是包在里面少了一层展开 + %因为机构名通常包括在{}内,所以要多展开一次才行,所以这里去掉#1外面的{} + %\mkbibnamelast{\MakeUppercase{#1}}\isdot + %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 + \ifblank{##2}{}{\revsdnamepunct\bibnamedelimd\MakeSentenceCase{\mkbibnamefirst{##2}}\isdot}% + \ifblank{##4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{##4}\isdot}} + {\usebibmacro{name:delim}{##1}% + \usebibmacro{name:hook}{##1}% + %\mkbibnamelast{#1}\isdot %3.9.1 Generic Commands and Hooks,对姓重新处理,如下句: %\mkbibnamelast{\MakeUppercase{#1}} + \ifblank{##2}{\MakeCapital##1}{\mkbibnamelast{\MakeUppercase{##1}}}\isdot %大写,参考4.6.4 Miscellaneous Commands,\MakeUppercase %\MakeSentenceCase + %\mkbibnamelast{\MakeUppercase{#1}}\isdot + %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 + \ifblank{##2##3}{}{\revsdnamepunct}% + \ifblank{##2}{}{\bibnamedelimd\mkbibnamefirst{\MakeUppercase{##2}}\isdot}% + \ifblank{##3}{}{\bibnamedelimd\mkbibnameprefix{##3}\isdot}% + \addcomma\addspace% + \ifblank{##4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{##4}\isdot}% + } + } + \renewbibmacro*{name:first-last}[4]{% + \usebibmacro{name:last-first}{##1}{##2}{##3}{##4}} +} + +% +% 作者信息的输出格式,针对biblatex>=3.3版本,姓名大小写格式采用拼音样式 +% +\defversion{3.4}{named}{ + \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉,%来源biblatex2.STY + \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def + \renewrobustcmd*{\bibnamedelima}{\mbox{-}} + + %注意authoryear作者输出用的sortname格式也就是family-given/given-family + %不同于nemeric的given-family格式 + \DeclareNameFormat{family-given/given-family}{% + {\usebibmacro{name:given-family} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}}% + \usebibmacro{name:andothers}} + + %biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 + \renewbibmacro*{name:given-family}[4]{%用family-given修改后的内容定义given-family + \ifuseprefix + {\usebibmacro{name:delim}{##3##1}% + \usebibmacro{name:hook}{##3##1}% + \ifdefvoid{##3}{}{% + \ifcapital + {\mkbibnameprefix{\MakeCapital{##3}}\isdot} + {\mkbibnameprefix{##3}\isdot}% + \ifprefchar{}{\bibnamedelimc}}% + \ifdefvoid{##2}{\mkbibnamefamily{\MakeCapital{##1}}}{\mkbibnamefamily{\MakeUppercase{##1}}}\isdot% + \ifdefvoid{##2}{}{\revsdnamepunct\bibnamedelimd\MakeSentenceCase{\mkbibnamegiven{##2}}\isdot}%\MakeCapital + \ifdefvoid{##4}{}{\bibnamedelimd\mkbibnamesuffix{##4}\isdot}} + {\usebibmacro{name:delim}{##1}% + \usebibmacro{name:hook}{##1}% + \ifdefvoid{##2}{\mkbibnamefamily{\MakeCapital{##1}}}{\mkbibnamefamily{\MakeUppercase{##1}}}\isdot% + % + \ifboolexpe{% + test {\ifdefvoid{##2}} + and + test {\ifdefvoid{##3}}} + {} + {\revsdnamepunct}% + \ifdefvoid{##2}{}{\bibnamedelimd\mkbibnamegiven{\MakeCapital{##2}}\isdot}%\MakeCapital + \ifdefvoid{##3}{}{\bibnamedelimd\mkbibnameprefix{##3}\isdot} + \ifdefvoid{##4}{}{\bibnamedelimd\mkbibnamesuffix{##4}\isdot}} + } + \renewbibmacro*{name:family-given}[4]{% + \usebibmacro{name:given-family}{##1}{##2}{##3}{##4}} +} + +% +% 根据姓名格式控制选项做处理 +% +\iftoggle{iftlfive}%根据texlive/biblatex版本选择 + {%%当采用biblatex<=3.3版本时 + \switchversion{3.0}{name} + }{%%当采用3.3<=biblatex版本时 + \switchversion{3.4}{name} + } +% +\def\execnamedefault{ +\iftoggle{iftlfive}%根据texlive/biblatex版本选择 + {%%当采用biblatex<=3.3版本时 + \switchversion{3.0}{namec} + }{%%当采用3.3<=biblatex版本时 + \switchversion{3.4}{namec} + } +} +% +\def\execgblowercase{ +\iftoggle{iftlfive}%根据texlive/biblatex版本选择 + {%%当采用biblatex<=3.3版本时 + \switchversion{3.0}{nameb} + }{%%当采用3.3<=biblatex版本时 + \switchversion{3.4}{nameb} + } +} +% +\def\execnamepinyin{ +\iftoggle{iftlfive}%根据texlive/biblatex版本选择 + {%%当采用biblatex<=3.3版本时 + \switchversion{3.0}{named} + }{%%当采用3.3<=biblatex版本时 + \switchversion{3.4}{named} + }} + + +% +% url和url日期格式 +% \renewbibmacro*{url+urldate}{% %\usebibmacro{url}%%更换url的位置,放到下面 \iffieldundef{urlyear}% @@ -839,6 +1249,9 @@ backrefpages = {引用页:}, \usebibmacro{url}} \renewbibmacro*{url}{\printfield{url}} +% +% 日期信息的输出格式,针对biblatex<3.7版本 +% \defversion{3.4}{date}{ \renewbibmacro*{urldate}{% \addthinspace\printtext{[}\printfield{urlyear}% @@ -874,13 +1287,23 @@ backrefpages = {引用页:}, }% } +% +% 日期信息的输出格式,针对3.9>=biblatex>=3.7版本 +% \defversion{3.7}{date}{ \DeclareFieldFormat{urldate}{##1} \renewbibmacro*{urldate}{% \addthinspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 - \newbibmacro*{newsdate}{%%新增加一个新闻日期 - \blx@edtfdate{}{}% + % + % 专利的公告日期、或报纸的日期的输出宏 + % 20160701,v1.0,新增加 + % 20180405,v1.0k,为biblatexv3.7-3.9版本,出现多出点bug做处理,Hu Zhenzhen + % + % 原理方法:加上printtext避免破坏异步标点机制 + % + \newbibmacro*{newsdate}{% + \printtext{\blx@edtfdate{}{}}% } \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 @@ -893,13 +1316,23 @@ backrefpages = {引用页:}, }% } +% +% 日期信息的输出格式,针对biblatex>=3.10版本 +% \defversion{3.10}{date}{ \DeclareFieldFormat{urldate}{##1} \renewbibmacro*{urldate}{% \addthinspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 - \newbibmacro*{newsdate}{%%新增加一个新闻日期 - \blx@isodate{}{}% + % + % 专利的公告日期、或报纸的日期的输出宏 + % 20160701,v1.0,新增加 + % 20180405,为biblatexv3.10版本,出现多出点bug做处理,Hu Zhenzhen + % + % 原理方法:加上printtext避免破坏异步标点机制 + % + \newbibmacro*{newsdate}{%% + \printtext{\blx@isodate{}{}}%% } \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 @@ -912,17 +1345,16 @@ backrefpages = {引用页:}, }% } -\iftoggle{iftlfive}%%根据texlive/biblatex版本选择 - {\switchversion{3.4}{date}}% - {\iftoggle{iftlsix}% - {\switchversion{3.4}{date}}% - {\iftoggle{iftlnine}% - {\switchversion{3.10}{date}}%biblatex3.10版 - {\switchversion{3.7}{date}}% - }% - } - -\renewbibmacro*{related}{% +% +% 关联文献的输出格式,针对3.9>=biblatex>=3.7版本 +% +% 原理方法:因为related宏中带有##了,所以无法封装到defversion中了。所以直接做判断 +% 下面这一段主要针对v3.8-3.10,因为我提问后,biblatex作者为3.11版增加了一个钩子控制relatedblock前的分隔符。 +\ifboolexpr{ +test{\iftoggle{iftleight}} +or +test{\iftoggle{iftlnine}} +}{\renewbibmacro*{related}{%standard.bbx \ifboolexpr{ test {\iffieldundef{related}} or test {\ifrelatedloop} } {} {\usebibmacro{begrelated}% @@ -944,7 +1376,7 @@ backrefpages = {引用页:}, \setcounter{bbx:relatedcount}{0}% \def\do{% \stepcounter{bbx:relatedcount}% - \ifnumgreater{\value{bbx:relatedcount}}{0} + \ifnumgreater{\value{bbx:relatedcount}}{0}%这里从1改为0 {\ifcsundef{relateddelim\strfield{relatedtype}} {\printtext{\relateddelim}} {\printtext{\csuse{relateddelim\strfield{relatedtype}}}}} @@ -980,11 +1412,27 @@ backrefpages = {引用页:}, \usebibmacro{endrelatedloop}}}% {}% \usebibmacro{endrelated}}} +}{} + +% +% 关联文献块前的分隔符,针对biblatex3.11 +% +% 原理方法:因为增加了begrelateddelim钩子,所以不需要重定义related输出宏 +\defversion{3.11}{related}{ +\renewcommand{\begrelateddelim}{\adddot\newline\nobreak} +} -\DeclareFieldFormat{pages}{#1}%页码引用格式的修改%去掉前面引导页码的pp.等字符 - -%调整doi+eprint+url格式,源来自standard.bbx -%因为页码后面直接跟引用日期,没有标点所以去掉其中的标点。 +\iftoggle{iftlfive}{\switchversion{3.4}{date}}{}%biblatex<=3.2 +\iftoggle{iftlsix}{\switchversion{3.4}{date}}{}%3.3<=biblatex<=3.6 +\iftoggle{iftlseven}{\switchversion{3.7}{date}}{}%biblatex=3.7 +\iftoggle{iftleight}{\switchversion{3.7}{date}}{}%3.8<=biblatex<=3.9 +\iftoggle{iftlnine}{\switchversion{3.10}{date}}{}%biblatex3.10 +\iftoggle{iftlatest}{\switchversion{3.10}{date}\switchversion{3.11}{related}}{}%biblatex最新 + +% +% 调整doi+eprint+url格式 +% +% 原理方法:源来自standard.bbx,因为页码后面直接跟引用日期,没有标点所以去掉其中的标点。 \renewbibmacro*{doi+eprint+url}{% % \iftoggle{bbx:doi}%把doi的位置放到url后面 % {\printfield{doi}} @@ -1002,6 +1450,9 @@ backrefpages = {引用页:}, {\printfield{doi}} {}} +% +% 调整页码的格式,即chapter+pages格式 +% \renewbibmacro*{chapter+pages}{% \printfield{chapter}% \iffieldundef{pages}{}{%这里增加一个判断,当没有页码时就不输出 @@ -1010,22 +1461,97 @@ backrefpages = {引用页:}, %\newunit %这里的标点去掉 } -%对edition版本信息做出修改,源来自biblatex.DEF -\DeclareFieldFormat{edition}{% -\iffieldundef{title}{}{\testCJKfirst{\thefield{userd}}}% + +% 出版社和地址的处理 +% +% 原理方法:当没有出版社地址时,直接判断title的信息是否是中文,若为中文,则写出版地不详,否则用英文的字符表示。 +% 事实上title对于每个文献来说是必须的,所以用它判断是最快的,而且一般标题和出版社的语言是一样的。 +% 新增一个样式用于输出连续出版物的地址,单位,时间,%类似\newbibmacro*{publisher+location+date} +\newbibmacro*{location+institution+date}{% +\iftoggle{bbx:gbpub}% +{\testCJKfirst{\thefield{userd}} +\iflistundef{location}{\iftoggle{ifCJKforgbt}{\printtext{[出版地不详]}}{\printtext{[S.l.\adddot]}}}% + {\printlist{location}}% +% \iflistundef{institution} +% {\setunit*{\addcomma\space}} +% {\setunit*{\addcolon\space}}% +% \printlist{institution}% +% \setunit*{\addcomma\space}% +\addcolon\addspace% +\iflistundef{institution}{% +\iftoggle{ifCJKforgbt}{\printtext{[出版者不详]}}{\printtext{\mkbibbrackets{s.n.}}}}% \bibstring{nopublisher}%[s.n.\adddot] +{\printlist{institution}}% +\setunit{\addcomma\addspace}% + %\usebibmacro{date}% + \printfield{year}% + \bibrangedash% + \iffieldundef{endyear}{}{\printfield{endyear}}% + \newunit}% +{ \printlist{location}% + \iflistundef{institution}% + {\setunit*{\addcomma\space}} + {\setunit*{\addcolon\space}}% + \printlist{institution}% + \setunit*{\addcomma\space}% + \usebibmacro{date}% + \newunit}% +} +% +\renewbibmacro*{publisher+location+date}{% +\iftoggle{bbx:gbpub}% +{\testCJKfirst{\thefield{userd}}% +\iflistundef{location}{%\adddot +\iffieldequalstr{note}{standard}{}{%从gbt7714-2015标准第19页看到,标准存在出版项时输出,没有时完全省略。 +\iftoggle{ifCJKforgbt}{\printtext{[出版地不详]}\addcolon\addspace}{\printtext{[S.l.\adddot]}\addcolon\addspace}% +}}% \bibstring{noaddress} +{\printlist{location}\addcolon\addspace}% +%\addcolon\addspace% +\iflistundef{publisher}{% +\iffieldequalstr{note}{standard}{}{% +\iftoggle{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 %去掉这个标点 +}% +{\printlist{location}% + \iflistundef{publisher} + {\setunit*{\addcomma\space}} + {\setunit*{\addcolon\space}}% + \printlist{publisher}% + \setunit*{\addcomma\space}% + \usebibmacro{date}% + %\newunit + }% +} + + +% +% 对edition版本信息格式做出修改 +% +\DeclareFieldFormat{edition}{%源来自biblatex.DEF +\testCJKfirst{\thefield{userd}}% \ifinteger{#1}% {\iftoggle{ifCJKforgbt}{\printtext{#1版}}% {\mkbibordedition{#1}~\bibstring{edition}}}% {#1\isdot}} -%对version的版本信息做出修改,源来自biblatex.DEF -\DeclareFieldFormat{version}{% -\iffieldundef{title}{}{\testCJKfirst{\thefield{userd}}}% +% +% 对version的版本信息做出修改 +% +\DeclareFieldFormat{version}{%源来自biblatex.DEF +\testCJKfirst{\thefield{userd}}% \ifinteger{#1}% {\iftoggle{ifCJKforgbt}{\printtext{#1版}}% {\mkbibordedition{#1}~\bibstring{version}}}% {#1\isdot}} +% +% 作者域的输出控制宏 +% +% 当两篇文献作者相同且连续时,标准样式是用-代替后面的文献的作者,这里取消这一设置 \renewbibmacro*{author}{%author for biblatex version <=3.7 \ifboolexpr{ test \ifuseauthor @@ -1052,14 +1578,30 @@ backrefpages = {引用页:}, \usebibmacro{date+extrayear} } -%设置标注和文献表中作者和年份之间的分隔符 - \DeclareDelimFormat{nameyeardelim}{\addcomma\space} -%设置因为mergedate默认为true时的情况,来自\bbx@opt@mergedate@compact -%去掉作者后面包围年份的圆括号 -%这里因为biblatex版本的不同,做不同的处理,texlive2017版/2016等低版本分开处理 -%重设date+extrayear格式,源来自authoryear.BBX +% +% 设置标注和文献表中作者和年份之间的分隔符 +% +% 原理方法:注意3.4版已经有\nameyeardelim,上述修改的author宏虽然定义了著录表中的标点,但标注中的未定义 +% 设置因为mergedate默认为true时的情况,来自\bbx@opt@mergedate@compact +% 去掉作者后面包围年份的圆括号 +% 这里因为biblatex版本的不同,做不同的处理,texlive2017版/2016等低版本分开处理 +\defversion{3.0}{dateextra}{ +\renewcommand*{\nameyeardelim}{\addcomma\space} + \renewbibmacro*{date+extrayear}{%%重设date+extrayear格式,源来自authoryear.BBX + \iffieldundef{\thefield{datelabelsource}year} + {} + {\printtext{%[parens]%这里把括号去掉 + \iffieldsequal{year}{\thefield{datelabelsource}year} + {\printdateextralabel}% + {\printfield{labelyear}% + \printfield{extrayear}}}}}% +} + \defversion{3.4}{dateextra}{ - \renewbibmacro*{date+extrayear}{% + \DeclareDelimFormat{nameyeardelim}{\addcomma\space} + \DeclareDelimFormat[textcite]{nameyeardelim}{\addcomma\space} + \DeclareDelimFormat[bib,biblist]{nameyeardelim}{\addcomma\space} + \renewbibmacro*{date+extrayear}{%%重设date+extrayear格式,源来自authoryear.BBX \iffieldundef{\thefield{datelabelsource}year} {} {\printtext{%[parens]%这里把括号去掉 @@ -1069,16 +1611,23 @@ backrefpages = {引用页:}, \printfield{extrayear}}}}}% } \defversion{3.7}{dateextra}{ - \renewbibmacro*{date+extrayear}{% + \DeclareDelimFormat{nameyeardelim}{\addcomma\space} + \DeclareDelimFormat[textcite]{nameyeardelim}{\addcomma\space} + \DeclareDelimFormat[bib,biblist]{nameyeardelim}{\addcomma\space} + \renewbibmacro*{date+extrayear}{%以前的\printdateextralabel宏变为了\printlabeldateextra \iffieldundef{labelyear} {} - {\printtext[parens]{% + {\printtext{%[parens] \iffieldsequal{year}{labelyear} {\printlabeldateextra}% {\printfield{labelyear}% \printfield{extrayear}}}}}% } \defversion{3.8}{dateextra}{ + \DeclareDelimFormat{nameyeardelim}{\addcomma\space} + \DeclareDelimFormat[textcite]{nameyeardelim}{\addcomma\space} + \DeclareDelimFormat[bib,biblist]{nameyeardelim}{\addcomma\space} +%注意这里当没有作者只有标题时在年份之前的标点是否需要标准并未涉及,所以未做处理。 \renewbibmacro*{author}{%以前的date+extrayear变为date+extradate,所以对3.8以上版本重定义一下author \ifboolexpr{ test \ifuseauthor @@ -1087,7 +1636,7 @@ backrefpages = {引用页:}, } {\usebibmacro{bbx:dashcheck} {%\bibnamedash %去掉相同作者用横线代替的处理 - \printnames{author}% + \printnames{author}\setunit{\printdelim{nameyeardelim}}%把标点也带上 } {\usebibmacro{bbx:savehash}% \printnames{author}% @@ -1110,115 +1659,17 @@ backrefpages = {引用页:}, {\printdateextra} {\printlabeldateextra}}}}% } -\iftoggle{iftlfive}%%根据texlive/biblatex版本选择 - {\switchversion{3.4}{dateextra}}% - {\iftoggle{iftlsix}% - {\switchversion{3.4}{dateextra}}% - {\iftoggle{iftlseven}% - {\switchversion{3.7}{dateextra}}% - {\switchversion{3.8}{dateextra}}% - }% - } - -%修改译者位置格式,bytranslator+others原格式来自biblatex.def文件 -\renewbibmacro*{bytranslator+others}{% - \ifnameundef{translator} - {} - {%\usebibmacro{bytranslator+othersstrg} - %\setunit{\addspace}% - \printnames[bytranslator]{translator}% - \clearname{translator}% - \usebibmacro{bytranslator+othersstrg}%“译”的位置换到下面来,即放到译者后面。 - \setunit{\addspace}% - \newunit}% - \usebibmacro{withothers}} - -%判断作者或译者是否中文,若中文用字符等,否则用etal。 -\renewbibmacro*{name:andothers}{% - \ifboolexpr{ - test {\ifnumequal{\value{listcount}}{\value{liststop}}} - and - test \ifmorenames - } - {%这里做一个判断是在处理author还是translator用于两者是不同语言的情况 - \ifcurrentname{translator}{\iffieldundef{usere}{\togglefalse{ifCJKforgbt}}{\testCJKfirst{\thefield{usere}}}}% - {\iffieldundef{usere}{\togglefalse{ifCJKforgbt}}{\testCJKfirst{\thefield{userf}}}}% - %这句判断如果放到\andothersdelim后面会在等或etc.前增加一个空格,所以放前面 - \ifnumgreater{\value{liststop}}{1} - {\finalandcomma} - {\finalandcomma}% -\andothersdelim\iftoggle{ifCJKforgbt}{\bibstring{andotherscn}}{\bibstring{andothers}} -%\andothersdelim\bibstring{andotherscn} -} -{}} - - -%出版社和地址的处理 -%当没有出版社地址时,直接判断title的信息是否是中文,若为中文,则写出版地不详,否则用英文的字符表示。 -%事实上title对于每个文献来说是必须的,所以用它判断是最快的,而且一般标题和出版社的语言是一样的。 -%新增一个样式用于输出连续出版物的地址,单位,时间,%类似\newbibmacro*{publisher+location+date} -\newbibmacro*{location+institution+date}{% -\iftoggle{bbx:gbpub}% -{\testCJKfirst{\thefield{userd}} -\iflistundef{location}{\iftoggle{ifCJKforgbt}{\printtext{[出版地不详]}}{\printtext{[S.l.\adddot]}}}% - {\printlist{location}}% -% \iflistundef{institution} -% {\setunit*{\addcomma\space}} -% {\setunit*{\addcolon\space}}% -% \printlist{institution}% -% \setunit*{\addcomma\space}% -\addcolon\addspace% -\iflistundef{institution}{% -\iftoggle{ifCJKforgbt}{\printtext{[出版者不详]}}{\printtext{\mkbibbrackets{s.n.}}}}% \bibstring{nopublisher}%[s.n.\adddot] -{\printlist{institution}}% -\setunit{\addcomma\addspace}% - %\usebibmacro{date}% - \printfield{year}% - \bibrangedash% - \iffieldundef{endyear}{}{\printfield{endyear}}% - \newunit}% -{ \printlist{location}% - \iflistundef{institution}% - {\setunit*{\addcomma\space}} - {\setunit*{\addcolon\space}}% - \printlist{institution}% - \setunit*{\addcomma\space}% - \usebibmacro{date}% - \newunit}% -} - -\renewbibmacro*{publisher+location+date}{% -\iftoggle{bbx:gbpub}% -{\testCJKfirst{\thefield{userd}}% -\iflistundef{location}{%\adddot -\iffieldequalstr{note}{standard}{}{%从gbt7714-2015标准第19页看到,标准存在出版项时输出,没有时完全省略。 -\iftoggle{ifCJKforgbt}{\printtext{[出版地不详]}\addcolon\addspace}{\printtext{[S.l.\adddot]}\addcolon\addspace}% -}}% \bibstring{noaddress} -{\printlist{location}\addcolon\addspace}% -%\addcolon\addspace% -\iflistundef{publisher}{% -\iffieldequalstr{note}{standard}{}{% -\iftoggle{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 %去掉这个标点 -}% -{\printlist{location}% - \iflistundef{publisher} - {\setunit*{\addcomma\space}} - {\setunit*{\addcolon\space}}% - \printlist{publisher}% - \setunit*{\addcomma\space}% - \usebibmacro{date}% - %\newunit - }% -} +\iftoggle{iftlfive}{\switchversion{3.0}{dateextra}}{}%biblatex<=3.2 +\iftoggle{iftlsix}{\switchversion{3.4}{dateextra}}{}%3.3<=biblatex<=3.6 +\iftoggle{iftlseven}{\switchversion{3.7}{dateextra}}{}%biblatex=3.7 +\iftoggle{iftleight}{\switchversion{3.8}{dateextra}}{}%<=3.8biblatex<=3.9 +\iftoggle{iftlnine}{\switchversion{3.8}{dateextra}}{}%biblatex3.10 +\iftoggle{iftlatest}{\switchversion{3.8}{dateextra}}{}%biblatex最新3.11 -%修改析出文献的文集的标题与附加标题间的符号 +% +% 修改析出文献的文集的标题与附加标题间的符号 +% \renewbibmacro*{booktitle}{% \ifboolexpr{ test {\iffieldundef{booktitle}} @@ -1234,8 +1685,11 @@ backrefpages = {引用页:}, \setunit{\subtitlepunct}}% \printfield{booktitleaddon}} -%调整期刊名的格式,源来自standard.bbx -\renewbibmacro*{journal+issuetitle}{% +% +% 调整期刊名的格式 +% +% 原理方法:因为作者年制年份提到前面,因此涉及到期刊名与后面的卷期的关系。 +\renewbibmacro*{journal+issuetitle}{%源来自standard.bbx \usebibmacro{journal}% %\setunit*{\addspace}% %\setunit*{\addcomma\addspace}%修改为增加一个逗号 @@ -1255,7 +1709,11 @@ backrefpages = {引用页:}, %\newunit } -%调整journal,首先判断子标题,然后在设置标点。避免直接设置标点后,当volume不存在是需要使用\nopuct去标点进而引入不必要的空格 +% +% 调整journal输出 +% +% 原理方法:首先判断子标题,然后再设置标点。 +% 避免直接设置标点后,当volume不存在时需要使用\nopuct去标点进而引入不必要的空格 \renewbibmacro*{journal}{% \iffieldundef{journaltitle}% {}% @@ -1264,19 +1722,26 @@ backrefpages = {引用页:}, \iffieldundef{journalsubtitle}{}{\setunit{\subtitlepunct}% \printfield[titlecase]{journalsubtitle}}}}} -%调整issue+date,原在authoryear.BBX中\bbx@opt@mergedate@compact中定义 -%当issue存在时,才设置newunit。避免直接设置标点后,当volume不存在是需要使用\nopuct去标点进而引入不必要的空格 +% +% 调整issue+date +% +% 原理方法:原在authoryear.BBX中\bbx@opt@mergedate@compact中定义 +% 当issue存在时,才设置newunit。避免直接设置标点后,当volume不存在是需要使用\nopuct去标点进而引入不必要的空格 \renewbibmacro*{issue+date}{% \iffieldundef{issue}% {}% {\printtext[parens]{\printfield{issue}}\newunit}} -%增加一个number带括号的格式,避免使用mkbibparens而引入一个不必要的空格 +% +% 增加一个number带括号的格式,避免使用mkbibparens而引入一个不必要的空格 +% \DeclareFieldFormat{addnumflag}{% \nobreak\printtext{(}\nobreak #1\nobreak\printtext{)}} -%调整期刊卷和期的格式,源来自standard.bbx -\renewbibmacro*{volume+number+eid}{% +% +% 调整期刊卷和期的格式 +% +\renewbibmacro*{volume+number+eid}{%源来自standard.bbx \printfield{volume}% %\setunit*{\adddot}%去掉点号 %\printfield{number}% @@ -1286,8 +1751,10 @@ backrefpages = {引用页:}, \setunit{\addcomma\space}% \printfield{eid}}} -%调整页码前的标点和去掉期刊文章等页码后面的标点,源来自standard.bbx -\renewbibmacro*{note+pages}{% +% +% 调整页码前的标点和去掉期刊文章等页码后面的标点 +% +\renewbibmacro*{note+pages}{%源来自standard.bbx %\printfield{note}%不要note,note用来判断是否是报纸newspaper \iffieldundef{pages}{}{ \setunit{\bibpagespunct}% @@ -1295,11 +1762,13 @@ backrefpages = {引用页:}, %\newunit } -%编者类型做一修改,源来自biblatex.DEF -\renewbibmacro*{editorstrg}{% +% +% 编者类型做一修改 +% +\renewbibmacro*{editorstrg}{%源来自biblatex.DEF \printtext[editortype]{% \iffieldundef{editortype} - { + {% % \ifboolexpr{ %这一段去掉,未定义编者类型情况下不处理 % test {\ifnumgreater{\value{editor}}{1}} % or @@ -1319,8 +1788,10 @@ backrefpages = {引用页:}, {\thefield{editortype}}} }} -%修改期刊的标题,源来自biblatex.DEF -\renewbibmacro*{periodical}{% +% +% 修改期刊的标题 +% +\renewbibmacro*{periodical}{%源来自biblatex.DEF \iffieldundef{title} {} {\printtext[title]{% @@ -1330,13 +1801,16 @@ backrefpages = {引用页:}, {}{\setunit{\subtitlepunct} \printfield[titlecase]{subtitle}}% %}%把编组结束移到后面去 + \iftoggle{bbx:gbtype}{% \iffieldundef{usera}{}{%在标题后直接给出文献标识字母 - \printfield[gbtypeflag]{usera}} + \printfield[gbtypeflag]{usera}}}{} }} } -%期刊的标题做修改,源来自standard.BBX -\renewbibmacro*{title+issuetitle}{% +% +% 期刊的标题做修改 +% +\renewbibmacro*{title+issuetitle}{%源来自standard.BBX \usebibmacro{periodical}% %\setunit*{\addspace}% \setunit*{\adddot\addspace}%标点修改为句点 @@ -1374,7 +1848,9 @@ backrefpages = {引用页:}, \usebibmacro{issue}% \newunit} -%新增一个样式用于调整期刊年份的格式,只打印年份 +% +% 新增一个样式用于调整期刊年份的格式,只打印年份 +% \newbibmacro*{periodical+issue}{% \printtext{%去掉了[parens] \iffieldundef{issue} @@ -1388,8 +1864,10 @@ backrefpages = {引用页:}, %\newunit } -%重设专利title的输出,将文献类型标识符输出出去,原输出来自biblatex.def文件 -\newbibmacro*{patenttitle}{% +% +% 重设专利title的输出,将文献类型标识符输出出去 +% +\newbibmacro*{patenttitle}{%原输出来自biblatex.def文件 \ifboolexpr{% test{\iffieldundef{title}}% and% @@ -1404,15 +1882,17 @@ backrefpages = {引用页:}, \iffieldundef{titleaddon}{}%判断一下titleaddon,否则直接加可能多一个空格 {\setunit{\subtitlepunct}\printfield{titleaddon}}% \setunit{\subtitlepunct}\printfield{number}%写专利号 - \printfield[gbtypeflag]{usera}% + \iftoggle{bbx:gbtype}{\printfield[gbtypeflag]{usera}}{}% \iffieldundef{booktitle}{\newunit}{}%当title是析出时,不要标点 %\newunit }% }% } -%修改了一个institution+location+date用于report等的,当没有institution时不处理。 -\renewbibmacro*{institution+location+date}{% +% +% 修改了一个institution+location+date用于report等类型 +% +\renewbibmacro*{institution+location+date}{%当没有institution时不处理。 \printlist{location}% \iflistundef{institution} {\setunit*{\addcomma\space}} @@ -1426,11 +1906,12 @@ backrefpages = {引用页:}, %===================================================================== -%===================================================================== %设置驱动格式 %===================================================================== -%修改book的驱动,源来自standard.BBX -\DeclareBibliographyDriver{book}{% +% +% book条目类的驱动 +% + \DeclareBibliographyDriver{book}{%源来自standard.bbx文件 \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/editor+others/translator+others}% @@ -1480,8 +1961,10 @@ backrefpages = {引用页:}, {}% \usebibmacro{finentry}} -%修改inbook的驱动,源来自standard.BBX -\DeclareBibliographyDriver{inbook}{% +% +% inbook的驱动 +% +\DeclareBibliographyDriver{inbook}{%源来自standard.BBX \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/translator+others}% @@ -1536,8 +2019,11 @@ backrefpages = {引用页:}, {}% \usebibmacro{finentry}} -%collection直接用book的驱动 -\DeclareBibliographyDriver{collection}{% + +% +% collection类型驱动 +% +\DeclareBibliographyDriver{collection}{%直接用book的驱动 \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/editor+others/translator+others}% @@ -1587,8 +2073,11 @@ backrefpages = {引用页:}, {}% \usebibmacro{finentry}} -%incollection直接用inbook的驱动 -\DeclareBibliographyDriver{incollection}{% + +% +% incollection类型驱动 +% +\DeclareBibliographyDriver{incollection}{%直接用inbook的驱动 \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/translator+others}% @@ -1643,7 +2132,9 @@ backrefpages = {引用页:}, {}% \usebibmacro{finentry}} -%期刊文章,连续出版物中的析出文献的格式 +% +% 期刊文章,连续出版物中的析出文献的格式 +% \DeclareBibliographyDriver{article}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% @@ -1683,8 +2174,11 @@ backrefpages = {引用页:}, {}% \usebibmacro{finentry}} -%修改连续出版物的驱动,源来自standard.BBX - \DeclareBibliographyDriver{periodical}{% + +% +% 连续出版物的驱动 +% + \DeclareBibliographyDriver{periodical}{%源来自standard.BBX \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{editor}% @@ -1716,8 +2210,10 @@ backrefpages = {引用页:}, {}% \usebibmacro{finentry}} -%处理专利文献,源来自standard.BBX - \DeclareBibliographyDriver{patent}{% +% +% 专利文献驱动 +% + \DeclareBibliographyDriver{patent}{%源来自standard.BBX \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author}% @@ -1756,8 +2252,10 @@ backrefpages = {引用页:}, {}% \usebibmacro{finentry}} -%处理在线文献,源来自standard.BBX -\DeclareBibliographyDriver{online}{% +% +% 在线文献驱动 +% +\DeclareBibliographyDriver{online}{%源来自standard.BBX \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/editor+others/translator+others}% @@ -1796,14 +2294,16 @@ backrefpages = {引用页:}, {}% \usebibmacro{finentry}} -%学位论文修改,源来自standard.BBX - \DeclareBibliographyDriver{thesis}{% +% +% 学位论文修改 +% + \DeclareBibliographyDriver{thesis}{%源来自standard.BBX \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author}% \setunit{\labelnamepunct}\newblock \usebibmacro{title}% - \newunit + \newunit% \printlist{language}% \newunit\newblock \usebibmacro{byauthor}% @@ -1835,8 +2335,10 @@ backrefpages = {引用页:}, {}% \usebibmacro{finentry}} - -%2016-11-11增加了译者信息 +% +% 报告类型驱动 +% 2016-11-11,增加了译者信息 +% \DeclareBibliographyDriver{report}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% @@ -1881,8 +2383,11 @@ backrefpages = {引用页:}, {}% \usebibmacro{finentry}} -%直接利用report做manual,2016-11-11增加了译者信息 -%\DeclareBibliographyDriver{report}{% +% +% 手册类型驱动 +% 2016-11-11,增加了译者信息 +% +% 直接利用report做manual \DeclareBibliographyDriver{manual}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% @@ -1927,8 +2432,10 @@ backrefpages = {引用页:}, {}% \usebibmacro{finentry}} -%直接利用report做unpublished -%\DeclareBibliographyDriver{report}{% +% +% 未出版物类型驱动 +% +% 直接利用report做unpublished \DeclareBibliographyDriver{unpublished}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% @@ -1971,8 +2478,11 @@ backrefpages = {引用页:}, {}% \usebibmacro{finentry}} -%会议论文格式修改,源来自standard.BBX - \DeclareBibliographyDriver{inproceedings}{% + +% +% 会议论文文献类型驱动 +% + \DeclareBibliographyDriver{inproceedings}{%源来自standard.BBX \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/translator+others}% @@ -2027,8 +2537,10 @@ backrefpages = {引用页:}, {}% \usebibmacro{finentry}} -%会议论文集格式修改,源来自standard.BBX -\DeclareBibliographyDriver{proceedings}{% +% +% 会议论文集文献类型驱动 +% +\DeclareBibliographyDriver{proceedings}{%源来自standard.BBX \usebibmacro{bibindex}% \usebibmacro{begentry}% %\usebibmacro{editor+others}% 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 035877308e1..fd660fed3ee 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 @@ -6,17 +6,25 @@ %% history: %% 2016/05/20 v1.0 2016/10/23 v1.0a 2016/11/11 v1.0b %% 2016/11/14 v1.0c 2016/11/24 v1.0d 2016/12/07 v1.0e -%% 2017/02/26 v1.0g 2017/04/11 v1.0h -%% 2017/11/21 v1.0i +%% 2017/02/26 v1.0g 2017/04/11 v1.0h 2017/11/21 v1.0i +%% 2018/01/20 v1.0j 2018/04/03 v1.0k %% E-mail: hzzmail@163.com %% Released under the LaTeX Project Public License v1.3c or later %% --------------------------------------------------------------- %% -\ProvidesFile{gb7714-2015ay.cbx}[2017/11/21 v1.0i biblatex citation style] +\ProvidesFile{gb7714-2015ay.cbx}[2018/04/03 v1.0k biblatex citation style] +% +% 加载标准样式 +% \RequireCitationStyle{authoryear} %\RequireCitationStyle{numeric} + +% +% 选项设置,针对3.7以下版本 +% +% 原理方法:labeldate用于控制是否给引用标签提供日期的成分 \defversion{3.4}{cbxopt}{ \ExecuteBibliographyOptions{ %autocite = superscript , @@ -30,6 +38,10 @@ } } +% +% 选项设置,针对3.7以上版本 +% +% 原理方法:labeldateparts用于控制是否给引用标签提供日期的成分 \defversion{3.7}{cbxopt}{ \ExecuteBibliographyOptions{ %autocite = superscript , @@ -44,24 +56,28 @@ } } -\iftoggle{iftlfive} - {\switchversion{3.4}{cbxopt}}%%当采用texlive2015以下版本时 - {\iftoggle{iftlsix}% - {\switchversion{3.4}{cbxopt}}%%当采用texlive2016版本时 - {\iftoggle{iftlseven}% - {\switchversion{3.7}{cbxopt}}%%当采用texlive2017版本时 - {\switchversion{3.7}{cbxopt}}%%当采用biblatex3.8a版本时 - }% - } +\ifboolexpr{%选择选项设置 +test {\iftoggle{iftlfive}}%biblatex<=3.2 +or +test {\iftoggle{iftlsix}}%3.3<=biblatex<=3.6 +}{\switchversion{3.4}{cbxopt}}{\switchversion{3.7}{cbxopt}}%else: biblatex>=3.7 + -%当条目是set时,所有的信息都没有于是利用entrykey来给出标签,那么就要set的条目关键字是需要的字符串,注意字符串中间不能有空格 +% +% 重定义cite:label,针对biblatex3.8以上版本set条目集的标注(引用)标签 +% +% 原理方法:当条目是set时,v3.8以上版本,都没有有用的信息(区别于3.7以下版本set复制第一个成员的信息), +% 于是利用entrykey来给出标签,那么就要set的条目关键字是需要的字符串,注意字符串中间不能有空格 \renewbibmacro*{cite:label}{% \iffieldundef{label}% {\iffieldundef{labeltitle}{\printtext[bibhyperref]{\printfield{entrykey}}}%entrykey {\printtext[bibhyperref]{\printfield[citetitle]{labeltitle}}}}% {\printtext[bibhyperref]{\printfield{label}}}} -%\DeclareCiteCommand{\cite}[\mkbibparens]{⟨precode⟩}{⟨loopcode⟩}{⟨sepcode⟩}{⟨postcode⟩} +% +% 重定义cite命令 +% +% 方法:\DeclareCiteCommand{\cite}[\mkbibparens]{⟨precode⟩}{⟨loopcode⟩}{⟨sepcode⟩}{⟨postcode⟩} \DeclareCiteCommand{\cite}[\mkbibparens] {\usebibmacro{prenote}} {\usebibmacro{citeindex}% @@ -69,6 +85,9 @@ {\multicitedelim} {\usebibmacro{postnote}} +% +% 重定义parencite命令 +% \DeclareCiteCommand{\parencite}[\mkbibparens] {\usebibmacro{prenote}} {\usebibmacro{citeindex}% @@ -76,14 +95,19 @@ {\multicitedelim} {\usebibmacro{postnote}} + +% +% 新定义pagescite命令,以满足标签带页码的国标要求 +% +% 原理方法: +% 1.修改postnote的输出格式 \newbibmacro*{postpages}{% \iffieldundef{postnote} {\printfield{pages}} {\printfield{postnote}}} - -%修改括号外带页码的引用格式 +% 2.新增页码输出宏(括号外的页码格式) \DeclareFieldFormat{postnote}{#1} - +% 3.新增\pagescite引用命令 \DeclareCiteCommand{\pagescite} {\printtext{(}\usebibmacro{prenote}} {\usebibmacro{citeindex}% @@ -91,10 +115,23 @@ {\multicitedelim} {\printtext{)}\textsuperscript{\usebibmacro{postpages}}} -%增加一个命令yearpagescite用于当文中作者已经存在,需要页码和年份的情况。 -%参考来源,biblatex.DEF,其中\DeclareCiteCommand*{\citeyear}命令 +% +% 定义yearpagescite,用于当文中作者已经存在,需要页码和年份的情况 +% +% 原理:增加一个命令yearpagescite +% 参考biblatex.DEF中的\DeclareCiteCommand*{\citeyear}命令 \DeclareCiteCommand{\yearpagescite} {\printtext{(}\usebibmacro{prenote}} {\printfield{year}\printfield{extrayear}} {\multicitedelim} {\printtext{)}\textsuperscript{\usebibmacro{postpages}}} + +% +% 定义yearcite,用于当文中作者已经存在,仅需要年份的情况 +% +% 原理:增加一个命令yearcite +\DeclareCiteCommand{\yearcite}%仅输出年份,不要页码 + {\printtext{(}\usebibmacro{prenote}} + {\printfield{year}\printfield{extrayear}} + {\multicitedelim} + {\printtext{)}} |