From 14bc93939d2ac679019a94721b4bc5c178671f2f Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Wed, 20 Jan 2021 03:01:21 +0000 Subject: CTAN sync 202101200301 --- .../biblatex-gb7714-2015/README.md | 2381 +++--- .../biblatex-gb7714-2015-preamble.tex | 862 +-- .../biblatex-gb7714-2015/biblatex-gb7714-2015.pdf | Bin 1884407 -> 1886456 bytes .../biblatex-gb7714-2015/biblatex-gb7714-2015.tex | 5377 +++++++------- .../biblatex-gb7714-2015/biblatex-map-test.bib | 114 - .../biblatex-gb7714-2015/biblatex-map.py | 2059 ------ .../biblatex-gb7714-2015/biblatex_check.py | 590 -- .../biblatex-gb7714-2015/chinese-erj.bbx | 474 +- .../biblatex-gb7714-2015/chinese-erj.cbx | 302 +- .../biblatex-gb7714-2015/example.bib | 7676 +++++++++---------- .../biblatex-gb7714-2015/gb7714-2015-gbk.def | 56 +- .../biblatex-gb7714-2015/gb7714-2015.bbx | 7799 ++++++++++---------- .../biblatex-gb7714-2015/gb7714-2015.cbx | 752 +- .../biblatex-gb7714-2015/gb7714-2015ay.bbx | 7689 +++++++++---------- .../biblatex-gb7714-2015/gb7714-2015ay.cbx | 774 +- .../biblatex-gb7714-2015/gb7714-2015ms.bbx | 5470 +++++++------- .../biblatex-gb7714-2015/gb7714-2015ms.cbx | 380 +- .../biblatex-gb7714-2015/gb7714-2015mx.bbx | 6679 ++++++++--------- .../biblatex-gb7714-2015/gb7714-2015mx.cbx | 932 +-- .../biblatex-gb7714-2015/gb7714texteg.dat | 214 - .../biblatex-gb7714-2015/gb7714texttobib.pl | 1670 ----- .../biblatex-gb7714-2015/gbT7714-2015.tex | 15 - .../biblatex-gb7714-2015/gbT7714-2015eg.tex | 114 - .../biblatex-gb7714-2015/gbT7714-2015fmt.tex | 13 - .../biblatex-gb7714-2015/gbT7714-2015lan.tex | 45 - .../biblatex-gb7714-2015/gbT7714-2015ms.tex | 15 - .../biblatex-gb7714-2015/gbT7714-2015thesis.tex | 68 - .../biblatex-gb7714-2015/readme-BibLatex-Check.md | 27 - .../biblatex-gb7714-2015/readme-BibLatex-map.md | 152 - .../biblatex-contrib/biblatex-oxref/Makefile | 2 +- .../biblatex-contrib/biblatex-oxref/README.md | 2 +- .../biblatex-contrib/biblatex-oxref/oxalph-doc.pdf | Bin 436849 -> 436778 bytes .../biblatex-oxref/oxnotes-doc.pdf | Bin 443126 -> 443291 bytes .../biblatex-contrib/biblatex-oxref/oxnum-doc.pdf | Bin 437069 -> 439195 bytes .../biblatex-contrib/biblatex-oxref/oxref.dtx | 569 +- .../biblatex-contrib/biblatex-oxref/oxref.pdf | Bin 533046 -> 535848 bytes .../biblatex-contrib/biblatex-oxref/oxyear-doc.pdf | Bin 440773 -> 440823 bytes 37 files changed, 24150 insertions(+), 29122 deletions(-) delete mode 100644 macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-map-test.bib delete mode 100644 macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-map.py delete mode 100644 macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex_check.py delete mode 100644 macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714texteg.dat delete mode 100644 macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714texttobib.pl delete mode 100644 macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gbT7714-2015.tex delete mode 100644 macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gbT7714-2015eg.tex delete mode 100644 macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gbT7714-2015fmt.tex delete mode 100644 macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gbT7714-2015lan.tex delete mode 100644 macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gbT7714-2015ms.tex delete mode 100644 macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gbT7714-2015thesis.tex delete mode 100644 macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/readme-BibLatex-Check.md delete mode 100644 macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/readme-BibLatex-map.md (limited to 'macros/latex/contrib/biblatex-contrib') diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/README.md b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/README.md index 086d623f8e..3443a0e554 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/README.md +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/README.md @@ -1,1184 +1,1197 @@ -Date of last change: 2020-07-21 to version v1.0v - - -# biblatex-gb7714-2015: a biblatex style package ---------------------------------------------------------- -[使用入门](#jumptotutorial) |==| [说明文档](biblatex-gb7714-2015.pdf) |==| [WIKI](https://github.com/hushidong/biblatex-gb7714-2015/wiki) - - -## Introduction - -Maintainer: huzhenzhen - -Homepage: - -ctan-pkg: - -License: LaTeX Project Public License 1.3 or later - - -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/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 - - -biblatex-gb7714-2015 宏包是中文参考文献著录/标注标准 `GB/T 7714-2015` 的 biblatex 实现。它本质上是一个样式包,提供了顺序编码制和著者年份制样式,在 tex 文档中配合 biblatex 宏包使用,以生成满足《GB/T 7714-2015 信息与文献 参考文献著录规则》要求的参考文献。除了具备 biblatex 提供的不同于传统基于 bibtex 的参考文献解决方案的特点外,还具有如下特点: - -* 较强的兼容性。能够兼容 biblatex v2.8 以上版本;能够兼容国标样式的一些常用条目类型、数据域。 - -* 较高的易用性。标注/著录格式完全由样式实现,不必为排序、多语言等问题手动处理bib文件;提供了丰富的标注(引用)命令,包括一些中文中习惯的命令;提供了多语言对照,多语言文献表等功能。 - -* 较大的灵活性。提供丰富的选项来帮助用户进行排序调整、著录项(姓名、出版项、文献标识符、标题超链接)格式调整、文献表格式(标签对齐、标签格式、条目格式、字体、段落格式)调整、编码兼容。 - -* 较好的维护性。样式代码主要是在标准样式基础上提供的中文国标解决方案,保持与标准样式一致的结构、风格和习惯,并提供详尽的注释,用户可轻松理解,并可在其基础上进一步修改以实现其它要求的样式,比如宏包附带的chinese-erj样式,就是基于本样式实现的经济学研究期刊的参考文献样式。 - -简单使用说明见:[使用入门](#jumptotutorial) - ---------------------------------------------------------- - -## Need to do: - - * special characters in all fields? - * entry without author: the delimiter between title and year? - * TEST FOR texlive 2015,2016,2017 - - -## Applications - -* [SJTUThesis(上海交通大学学位论文模板)](https://github.com/sjtug/SJTUThesis)(母校的论文模板,不得不说缘分真的很神奇) -* [fduthesis(复旦大学论文模板)](https://github.com/Stone-Zeng/fduthesis) -* [Zhejiang University thesis(浙江大学毕业设计/论文模板)](https://github.com/TheNetAdmin/zjuthesis) -* [UCASthesis(中国科学院大学学位论文模板**国科大新版标准**)](https://github.com/xiaoyao9933/UCASthesis) -* [UCASthesis(ucasthesis 国科大学位论文 LaTeX 模板 [最新样式])](https://github.com/mohuangrui/ucasthesis) -* [TongjiThesis(同济大学硕博士论文LaTeX模板)](https://github.com/marquistj13/TongjiThesis) -* [neuthesis(东北大学博士学位论文Latex模板)](https://github.com/mervin0502/neuthesis) -* [nwafuthesis(西北农林科技大学学位论文LaTeX文档类)](https://github.com/registor/nwafuthesis) -* [nudtpaper(nudt学位论文模板)](https://github.com/liubenyuan/nudtpaper) -* [ECNU-Undergraduate-LaTeX(华东师范大学本科毕业论文模板)](https://github.com/YijunYuan/ECNU-Undergraduate-LaTeX) -* [fjnu-bathesis (福建师范大学本科毕业论文LaTeX 模板)](https://github.com/fjnuer/fjnu-bathesis) -* [Thesis-Template-for-XJTU (西安交大毕业设计模板)](https://github.com/DXie123/Thesis-Template-for-XJTU) -* [CAUTemplate(中国农业大学课程论文模板)](https://github.com/Cdmium/CAUTemplate) -* [Yet anoter BUPT Thesis LaTeX class (北邮研究生学位设计的LaTeX文档类)](https://github.com/qcts33/BUPTthesis-ctex) -* [Study-LaTeX(LaTeX学习笔记)](https://github.com/Zousiyu/Study-LaTeX) -* [ElegantBook](https://github.com/ElegantLaTeX/ElegantBook) -* [《经济研究》杂志 LaTeX 论文模板)](https://github.com/EthanDeng/Chinese-ERJ) -* [...] - - -## Related Links - -* [Biblatex 宏包](https://github.com/plk/biblatex) -* [Beamer 文档类](https://github.com/josephwright/beamer) -* [biblatex 宏包中文手册 ](https://github.com/hushidong/biblatex-zh-cn) -* [biblatex 简明使用手册](https://github.com/hushidong/biblatex-solution-to-latex-bibliography) -* [biblatex-tutorial 摘译](https://github.com/hushidong/biblatex-tutorial-cn) -* [biblatex-map bib文件修改工具](https://github.com/hushidong/biblatex-map/) -* [biblatex-check bib文件检查工具](https://github.com/Pezmc/BibLatex-Check) -* [biblatex-caspervector: caspervector 设计的中文参考文献样式](https://github.com/CasperVector/biblatex-caspervector) -* [gbt7714-bibtex-style: GB/T7714-2015 标准的bst实现版本](https://github.com/zepinglee/gbt7714-bibtex-style) -* [LaTeX学习网站](http://www.latexstudio.net/) -* [LaTeX交流论坛](http://www.ctex.org/) - ---------------------------------------------------------- - -

Tutorial/使用入门

-[//]: # "这里这种方式不适合可能主要是因为标题所导致,因此用上面的方式进行处理" - - -

0. pacakge usage/宏包加载方式

-样式包配合biblatex使用,即在biblatex调用时加载样式包: - -* 使用顺序编码制: - -``` - \usepackage[backend=biber,style=gb7714-2015]{biblatex} -``` - -* 使用著者-出版年制: - -``` - \usepackage[backend=biber,style=gb7714-2015ay]{biblatex} -``` - -* 使用宏包提供的选项: - -``` - %设置gbalign选项以改变文献表序号标签对齐方式, - %设置gbpub=false取消缺省出版项自填补信息,比如: - \usepackage[backend=biber,style=gb7714-2015,gbalign=gb7714-2015,gbpub=false]{biblatex} -``` - -* 使用同一文献表中不同语言区分著录格式的样式(gb7714-2015ms): - -``` - %设置gbstyle=false,中文文献使用GB/T 7714-2015著录格式,而其它语言文献使用biblatex标准样式 - \usepackage[backend=biber,style=gb7714-2015ms,gbstyle=false]{biblatex} -``` - -* 同一文档中不同文献分节区分不同著录格式的样式(gb7714-2015mx): - -``` - %gb7714-2015mx默认使用顺序编码制样式 - \usepackage[backend=biber,style=gb7714-2015mx]{biblatex} - %如需在某一参考文件分节使用著者年份制样式,比如第2个refsection中使用时,则在导言区设置: - \setaystylesection{2} -``` - -更多宏包选项的说明见:[biblatex-gb7714-2015.pdf](biblatex-gb7714-2015.pdf) - -宏包加载的完整文档示例见:[tex文档一般结构](#jumptotexsrcf) - -

1. Tex source file/tex文档一般结构

-注意其中加载biblatex宏包的代码: - -``` -\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[backend=biber,bibstyle=gb7714-2015,%nature,%%加载biblatex宏包,使用参考文献 -citestyle=gb7714-2015%,backref=true%%其中后端backend使用biber -]{biblatex}%标注(引用)样式citestyle,著录样式bibstyle都采用gb7714-2015样式 - -\usepackage{filecontents} -\begin{filecontents}{egbibdata.bib} -@Book{Peebles2001-100-100, - Title = {Probability, random variable, and random signal Principles and \LaTeX{}}, - Address = {New York}, - Author = {von Peebles, Jr., P. Z.}, - Edition = {4}, - Pages = {100}, - Publisher = {McGraw-Hill}, - Year = {2001} -} - -@Book{蔡敏2006--, - Title = {UML基础和Rose建模教程},27 - Address = {北京}, - Author = {蔡敏 and 徐慧慧 and 黄柄强}, - Publisher = {人民邮电出版社}, - Year = {2006}, - Month = {1} -} -\end{filecontents} - -\addbibresource[location=local]{egbibdata.bib}%biblatex宏包的参考文献数据源加载方式 - -\begin{document}%正文区开始: - -%正文内容,引用参考文献 - -1. 不带页码的引用(顺序编码制上标,方括号包围;作者年制行内,括号包围):\\ - 见文献\cite{Peebles2001-100-100}\\ - 见文献\upcite{Peebles2001-100-100}\\ - 见文献\supercite{Peebles2001-100-100} - -2. 不带页码的引用(顺序编码制非上标,方括号包围;作者年制行内,括号包围):\\ - 见文献\parencite{Peebles2001-100-100} - -3. 带页码的引用(标准命令,默认样式; 增加命令,GB/T 7714-2015样式):\\ - 见文献\cite[见][49页]{蔡敏2006--}\\ - 见文献\parencite[见][49页]{Peebles2001-100-100}\\ - 见文献\pagescite{Peebles2001-100-100}\\ - 见文献\pagescite[201-301]{Peebles2001-100-100} - -4. 顺序编码制中同时输出作者和顺序编码标签,比如:\\ - 见\citeauthor{蔡敏2006--}\cite{蔡敏2006--}\\ - 见\authornu*mcite{蔡敏2006--}\\ - 见\textcite{蔡敏2006--} (顺序编码标签不上标) - -5. 作者年制文中已有作者还需要年份和页码(顺序编码制与pagescite作用相同,作者年制年份行内页码上标):\\ - 见蔡敏\yearpagescite[][205]{蔡敏2006--}和Peebles\yearpagescite[][15]{Peebles2001-100-100} - -6. 作者年制文中已有作者只需要年份(顺序编码制与pagescite作用相同,作者年制年份行内):\\ - 见赵耀东\yearcite{蔡敏2006--}\\ - 见赵耀东(\cite*{蔡敏2006--})\\ - 见赵耀东(\citeyear{蔡敏2006--}) - -7. 作者年制中由标注命令给出作者年份信息,作者以主语方式作为正文内容:\\ - 见\textcite{蔡敏2006--} - -8. 在页脚中引用和打印文献表:\\ - 见文献\footnote{在脚注中引用\footcite{蔡敏2006--}}\\ - 见文献\footfullcite{蔡敏2006--} - - -%打印参考文献表 - \printbibliography[heading=bibliography,title=参考文献] -\end{document} -``` - -### 2. Compile method/文档编译方式 - -``` - xelatex jobname.tex - biber jobname - xelatex jobname.tex - xelatex jobname.tex -``` - -或者 - -``` - latexmk -xelatex jobname.tex -``` - -编译引擎使用lualatex也是可以的,只要该引擎编译时ctex宏包能够正确支持中文。 - - -### 3. Recommended environment/推荐使用环境 - -- Texlive+Winedt -- Texlive+Texstudio -- texlive及其它发行版安装见[安装指南](https://github.com/sjtug/SJTUThesis/wiki/%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97) - - -### 4. Common questions/常见问题 - -#### 4.1 Installation and use/安装和使用 - -* 怎么利用biblatex生成国标GB/T 7714-2015格式的参考文献表? - -(1)在导言区加载biblatex宏包,并使用gb7714-2015样式: - -``` \usepackage[backend=biber,style=gb7714-2015]{biblatex}``` - -(2)正文中引用参考文献: - -``` 见文献\cite{referencbibtexkey}``` - -(3)在需要的地方打印参考文献表: - -```\printbibliography``` -更直接的例子见前述的[tex源文档](#jumptotexsrcf) - - - - -* 请问我应该怎么安装和更新biblatex-gb7714-2015宏包? - - -biblatex-gb7714-2015宏包是基于biblatex的样式宏包,目前texlive,miktex都已收录,因此可以直接使用,一般不需要安装。 - -如果使用时,系统提示找不gb7714-2015.bbx或gb7714-2015ay.bbx文件的错误,说明当前tex系统未安装biblatex-gb7714-2015样式包,这时需要安装它。 - -最简单的方法是从本项目源码中下载 gb7714-2015.bbx, gb7714-2015ay.bbx, gb7714-2015.cbx, gb7714-2015ay.cbx 四个文件放到你要编译的主文档所在目录,如果需要使用gbk编码,则还需复制 gb7714-2015-gbk.def 文件。对于已经安装的用户需要更新到最新版,也可以下载这些文件替换系统已经安装的文件。 - - - -* 请问使用时biblatex-gb7714-2015宏包时出现错误“ Package xkeyval Error: gb****** ' undefined in families blx@opt@pre'. [\blx@processoptions] ”? - - - -因为宏包的功能不断增加和完善,当在tex源文档中,使用新版中的一些选项时,而系统中的biblatex-gb7714-2015宏包是旧版时,就会出现`gb****`选项未定义的错误。解决方法就是更新biblatex-gb7714-2015宏包。更新方法见上一个问题。 - - - -* 为什么我之前使用样式`style=caspervector`进行编译没有问题,换成`style=gb7714-2015`后,编译就出现错误? - -可能有三个原因: - -(1) 辅助文件没有清理导致,当采用caspervector样式时编译产生的辅助文件中可能带有该样式的一些特有信息,由此产生一些不兼容。因此需要的操作是,清除辅助文件,然后再进行编译。清除命令为(下面的命令是windows下的,linux下的是类似的只需把删除命令换成`rm -f`): - -```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) *.nav *.snm *.vrb *.fls *.xdv *.fdb_latexmk``` - -(2) biblatex-gb7714-2015 版本过于陈旧,旧版本对于一些特殊情况可能考虑不全面。因此需要的操作是更新biblatex-gb7714-2015,方法见上一个问题。 - -(3) 编译命令问题,通常情况下tex文档和bib文档是utf8编码的,因此最好采用xelatex编译,而不用pdflatex。因此如果编译时用pdflatex出现错误,请换成xelatex。 - - -* 为什么我编译文档后没有出现参考文献表? - -当编译过程出现错误时,那么检查错误的原因,并解决它。 -当编译过程没有出现错误,那么很有可能是没有采用正确的命令进行文献编译,比如采用了传统的bibtex而不是biber。那么采用正确的编译命令重新编译即可: -``` -xelatex jobname.tex -biber jobname -xelatex jobname.tex -``` - - -* 为什么利用 ctex2.9 套装进行编译时,出现错误? - - -由于ctex2.9套装多年未更新,其中的biblatex宏包过于陈旧,所以需要更新 biblatex。 - - - -* 请问除了利用xelatex进行编译外,能不能用pdflatex进行编译? - - -能用pdflatex进行编译。但要注意的是因为某些样式比如authoryear等使用了xstring宏包中的一些命令,所以会产生错误,但numeric类样式通常没有问题。这一问题在biblatex更新到3.12版本后取消xstring宏包后得以解决。 - -中文用户需要注意一些编码的问题: - -utf-8编码的文档,采用xelatex编译没有任何注意事项,但使用pdflatex编译时,需要给ctex宏包加载UTF8选项,比如`\usepackage[UTF8]{ctex}`或者在文档类加载时给出也可以比如`\documentclass[[UTF8]{article}`,同时引用文献时使用的引用关键词应使用英文。 - -当文档使用其他编码时,xelatex编译通常需要指定一个文档编码,比如windows环境下的GB2312编码的文档需要指定`\XeTeXinputencoding "GBK"`, 否则显示乱码。使用pdflatex进行编译,如果biblatex不能正确的处理编码问题,那么需要为其明确的指定texencoding和bibencoding选项。比如windows环境下的GB2312编码的文档,需要指定`\usepackge[texencoding=GBK]{biblatex}`。 - - -* 请问使用backref=true选项后,某个反向超链接总是链接到封面页是怎么回事? - - -对页码进行正确超链接需要一个前提是,当前链接的页码是唯一的。当有两页具有相同的页码时,超链接总是链接到第一各具有该页码的页面上。比如封面页页码是1,正文第一页页码也是1,那么到正文第一页的反向超链接总会链接到封面页上。解决该问题就是要解决页码的唯一性问题。当页码的表示形式不是同一种时,那么也会得到正确的区分。比如封面页用罗马字母I表示,而正文第一页用阿拉伯数字1表示,那么就能得到正确的反向超链接。类似于: - -``` -\pagenumbering{roman} -\title{title} -\maketitle -\clearpage - -\pagenumbering{arabic} -\section{文献表} -``` - - -* 我希望参考文献表中的文献不是按引用顺序而是以文献作者的字母顺序排序,怎么实现? - - -一般情况下文献表是按引用顺序进行排列,标签是顺序的数字,这种方式称为顺序编码制。 -如果要以文献作者字母顺序排列,那么可以换一种编制方式,称为作者年制: - -```\usepackage[backend=biber,style=gb7714-2015ay]{biblatex}``` - -如果要求使用顺序编码制文献表,又要以文献作者字母顺序排列,那么可以增加排序选项`sorting=nyt`,意为按照姓名、年份、标题的字母顺序进行排序: - -```\usepackage[backend=biber,style=gb7714-2015,sorting=nyt]{biblatex}``` - - - -* 作者年制中英文文献能按字母顺序排列,那么中文文献能否以拼音或者笔画进行排序呢? - - -能,有两种方式实现: - -(1)通过编译时给biber设置选项来实现: - -``` -%按拼音排序,biber命令 -biber -l zh__pinyin jobname -%按笔画排序,biber命令 -biber -l zh__stroke jobname -``` - -(2)通过增加 biblatex 选项来实现(此时biber编译无需另加选项),比如: - -```\usepackage[backend=biber,style=gb7714-2015ay,sortlocale=zh__pinyin]{biblatex}``` - - - -* 作者年制参考文献表目前的排序时升序排列,能不能改成降序排序? - - -能,通过修改sorting选项实现: - - -```\usepackage[backend=biber,style=gb7714-2015ay,sorting=gbnytd]{biblatex}``` - -可用的选项值包括: -``` -nty 按照姓名、标题、年份排序。 -nyt 按照姓名、年份、标题排序。 -nyvt 按照姓名、年份、卷数、标题排序。 -anyt 按照字母标签、姓名、年份、标题排序。 -anyvt 按照字母标签、姓名、年份、卷数、标题排序。 -ynt 按照年份、姓名、标题排序。 -ydnt 按照年份(降序)、姓名、标题排序。 -none 不进行排序。所有的条目按照引用顺序处理。 -gb7714-2015 以语言、作者、年份、标题、升序排列 -gbnytd 以语言、作者、年份、标题、降序排列 -gbynta 以语言、年份、作者、标题、升序排列 -gbyntd 以语言、年份、作者、标题、降序排列 -``` - -* 如果我还希望顺序编码的文献著录表以拼音排序,请问该怎么操作? - -顺序编码文献著录表默认是按引用顺序排序,但可以通过设置sorting选项进行调整,比如sorting=nyt表示按作者姓名年份以及文献标题进行排序。要使中文能按拼音排序,可以设置本地化排序调整方案,即sortlocale选项,比如: - -```\usepackage[backend=biber,citestyle=gb7714-2015ay,bibstyle=gb7714-2015,sorting=nyt,sortlocale=zh__pinyin]{biblatex}``` - - - - - -* 我希望文献表以阿拉伯数字编号,而正文中的引用标签使用作者和年份标注而不是数字,请问我该如何处理? - -可以设置不同的标注和著录样式,比如标注样式用作者年制,而著录样式用顺序编码制,比如: - -```\usepackage[backend=biber,citestyle=gb7714-2015ay,bibstyle=gb7714-2015]{biblatex}``` - -参见:[issue:参考文献的顺序](https://github.com/sjtug/SJTUThesis/issues/300) - - - - - - -​ -* 请问如果参考文献中存在一些特殊字符比如&或者一些特殊命令比如\LaTex{}等,是不是会出现问题? - - -通常不会出现问题,直接输入即可,当出现问题时可以手动调整比如修改为`\&`和`{\LaTex{}}` - - - -* 如果希望在参考文献中直接使用一些unicode字符比如希腊字母等而不想用数学环境中的命令,请问该怎么处理? - - -直接显示希腊字母等unicode字符需要字体的支持,比如CMU Serif等,可以在整个文档全局使用该字体,也可以仅在文献表中使用该字体,比如: - -``` -{ -\newcommand{\ftcmu}{\fontspec{CMU Serif}\selectfont} -\renewcommand{\bibfont}{\ftcmu}%设置英文字体不影响中文字体 -\printbibliography -} -``` - -当然字体设置需要fontspec宏包的支持。 - - - -* 如何修改参考文献文献表的垂直间距(竖直间距)? - -设置如下尺寸即可 - -``` -% 间距的控制 -\setlength{\bibitemsep}{0ex} -\setlength{\bibnamesep}{0ex} -\setlength{\bibinitsep}{0ex} - -``` -其中itemsep设置各条文献之间的间隔,一般够用,后面两个常在西文中使用。具体意义参考biblatex-zh-cn - - - -* 如何修参考文献表的缩进? - -对于著者-出版年制文献表,设置如下尺寸即可: -``` -% 文献表中各条文献的缩进控制 -\setlength{\bibitemindent}{0em} % bibitemindent表示一条文献中第一行相对后面各行的缩进 -\setlength{\bibhang}{0pt} % 著者-出版年制中 bibhang 表示的各行起始位置到页边的距离 -``` - -对于顺序编码制文献表,可以采用如下方法: - -由于顺序编码制存在数字标签,且其宽度与参考文献数量相关的,在biblatex中这个宽度是一个动态变量,不是提前设定的,而是在文献表生成时给出,所以设定缩进需要更复杂的操作。 - -对于采用list环境的文献表,即设置gbalign=left、right、center时,那么需要修改文献表环境来设定缩进,比如: - -``` -%调整顺序标签与文献内容的间距 -\setlength{\biblabelsep}{2mm} -%修改对齐环境-使不缩进 -\defbibenvironment{bibliography} - {\list - {\printtext[labelnumberwidth]{% - \printfield{labelprefix}% - \printfield{labelnumber}}} - {%这里是所做的调整,通过设置\bibitemindent,\bibhang调整缩进 - \addtolength{\bibitemindent}{\labelnumberwidth}% - \addtolength{\bibitemindent}{\biblabelsep}% - \addtolength{\bibhang}{-\labelnumberwidth} % - \addtolength{\bibhang}{-\biblabelsep}% - %以下是默认的设置 - \setlength{\labelwidth}{\labelnumberwidth}% - \setlength{\labelsep}{\biblabelsep}% - \setlength{\leftmargin}{\bibhang}% - \addtolength{\leftmargin}{\labelnumberwidth}% - \setlength{\itemindent}{\bibitemindent}% - \setlength{\itemsep}{\bibitemsep}% - \setlength{\parsep}{\bibparsep}}% - \renewcommand*{\makelabel}[1]{\hss##1}} - {\endlist} - {\item} -``` - -对于不采用list环境的文献表,即设置gbalign=gb7714-2015时,可以采用如下设定: - -``` -%调整顺序标签与文献内容的间距 -\setlength{\biblabelsep}{2mm} -%修改对齐环境-使不缩进 -\renewcommand{\itemcmd}{% -\settowidth{\lengthid}{\mkgbnumlabel{\printfield{labelnumber}}} -%%这里是所做的调整,以下两句通过调整\lengthid来调整缩进 -\setlength{\lengthid}{0pt} -\addtolength{\lengthid}{-\biblabelsep} -%如下是默认设置 -\addtolength{\lengthid}{\biblabelsep} -\setlength{\lengthlw}{\textwidth} -\addtolength{\lengthlw}{-\lengthid} -\addvspace{\bibitemsep}%恢复\bibitemsep的作用 -%\parshape 2 0em \textwidth \lengthid \lengthlw -\hangindent\lengthid -\mkgbnumlabel{\printfield{labelnumber}}% -\hspace{\biblabelsep}} -``` - -示例见:https://github.com/hushidong/biblatex-gb7714-2015/issues/62 - - - - -* 如何修改参考文献表的字体字号? - -通过修改如下命令实现 - -``` -% 字体的控制: \textit, sl, emph-楷体, \textbf, sf-黑体, \texttt-仿宋, \textsc, md, up-宋体 -% 全局字体 -\renewcommand{\bibfont}{\zihao{-5}}%\fangsong -% 题名字体 -\renewcommand{\bibauthorfont}{\bfseries\color{teal}}% -\renewcommand{\bibtitlefont}{\ttfamily\color{blue}}% -\renewcommand{\bibpubfont}{\itshape\color{violet}}% -% url和doi字体 -\def\UrlFont{\ttfamily} %\urlstyle{sf} %\def\UrlFont{\bfseries} -``` - -​ -* 我习惯用传统的bst文件来生成参考文献,有没有GB/T 7714-2015标准的实现版本? - - -GB/T 7714-2015标准实现的bst版本,已经由[zeping lee](https://github.com/zepinglee/gbt7714-bibtex-style)开发完毕,直接使用即可。 - - - -* 我在使用过程中遇到了一些无法理解和无法解决的问题,怎么办? - - -请邮件联系hzzmail@163.com或在项目内发issue提问即可。 - - -#### 4.2 Bibliography format/文献表著录格式 - -* 请问可以在参考文献表中实现类似于word那样的与文献内容等间距标签对齐格式么? - - -可以,latex的列表通常用list来实现,因此一般列表的内容都是对齐的, -此时如果标签右对齐的,那么标签和内容等间距,但标签左侧是不对齐的。 -如果标签是左对齐的,那么标签和内容的间距不相等。 -如果要求标签左侧对齐,且标签与内容等间距必须放弃使用list。 -biblatex-7714-2015的顺序编码制样式特别设计了这样的环境,以保持和word一致。通过设置选项gbalign来实现: - -```\usepackage[backend=biber,bibstyle=gb7714-2015,gbalign=gb7714-2015]{biblatex}``` - - - -* 如果不希望在参考文献表中出现类似“出版地不详”“出版者不详”等信息时,请问该怎么处理? - - -设置选项gbpub可以实现,当gbpub=false时,biblatex-gb7714-2015宏包会放弃国标的要求,不使用“出版地不详”等补充信息: - -```\usepackage[backend=biber,bibstyle=gb7714-2015,gbpub=false]{biblatex}``` - - -​ -* 我觉得文献表中英文作者全部用大写不好看,请问能换一种大小写方式么? - - -能,通过设置gbnamefmt可以实现,默认情况下gbnamefmt=uppercase,作者姓名字母全部大写。 -当设置gbnamefmt=lowercase时,biblatex-gb7714-2015宏包对于bib文件中的作者姓名的大小写不做改变, -这时可以在bib文件中手动设置想要的大小写方式。 -当要实现类似ZHAO Yu-xin这样的拼音方式,则可以设置gbnamefmt=pinyin: - -```\usepackage[backend=biber,bibstyle=gb7714-2015,gbnamefmt=lowercase]{biblatex}``` - - - -* 如果不希望在参考文献表中出现类似“[M]”“[J]”等文献类型标识符时,请问该怎么处理? - - -可通过设置选项gbtype=false实现: - -```\usepackage[backend=biber,bibstyle=gb7714-2015,gbtype=false]{biblatex}``` - - - -* 如果不希望在参考文献表中出现网址信息时,请问该怎么处理? - - -可通过设置选项url=false实现: - -```\usepackage[backend=biber,bibstyle=gb7714-2015,url=false]{biblatex}``` - - - -* 如果不希望在参考文献表中出现DOI信息时,请问该怎么处理? - - -可通过设置选项doi=false实现: - -```\usepackage[backend=biber,bibstyle=gb7714-2015,doi=false]{biblatex}``` - - - -* 如果对当前文献中的url或doi显示效果(包括间距和断行)不满意,能否进行调整? - - -能,可以通过设置三个计数器的值来调整,取值范围0到9999,计数器的值越大则越容易在相应的内容后断行: - -``` -\setcounter{biburlnumpenalty}{100}%大于0允许在数字后面断行 -\setcounter{biburlucpenalty}{100}%大于0允许在大写字母后面断行 -\setcounter{biburllcpenalty}{100}%大于0允许在小写字母后面断行 - -``` - - -​ -* 当参考文献没有作者时,希望用佚名或Anon代替作者时,请问该怎么处理? - - -可通过设置选项gbnoauthor=true实现,注意该处理主要用在作者年制中: - -```\usepackage[backend=biber,bibstyle=gb7714-2015,gbnoauthor=true]{biblatex}``` - - - -* 如果希望参考文献表中文献作者数量超过国标规定的3个时,请问该怎么处理? - - -可通过设置选项maxbibnames,minbibnames实现,比如下面的设置用于显示5个作者: - -```\usepackage[backend=biber,bibstyle=gb7714-2015,maxbibnames=5,minbibnames=5]{biblatex}``` - - -* 请问如何将作者之间的分隔符调整为and而不是用逗号? - - -可以通过重设两个分隔符来实现,分别是multinamedelim和finalnamedelim。低版本的biblatex直接重定义命令`\multinamedelim`和`\finalnamedelim`,高版本的biblatex可以使用分隔符环境,这样可以在标注、文献表等不同位置直接使用不同的分隔符,而不像低版本biblatex那样只能在不同的位置修改局部定义。比如: - -``` -\DeclareDelimFormat[bib]{multinamedelim}{\addspace and \addspace} -\DeclareDelimFormat[bib]{finalnamedelim}{\addspace and \addspace} -\DeclareDelimFormat[cite]{multinamedelim}{\addcomma\addspace} -\DeclareDelimFormat[cite]{finalnamedelim}{\addcomma\addspace} -``` - - -​ -* 请问如何使文献表中文献标题的是句首字母大写而其它所有字母均小写? - - -默认情况下,biblatex-gb7714-2015仅对标题首字母做调整,使其变成为大写,而其他字母大小写不做处理,因此要得到想要的字母大小写格式,需要在bib文件输入参考文献信息时给出需要的除首字母外的其它字母的大小写格式。 - -若有特殊情况,需要首字母为小写,可采用如下两种方法: - -(1)根据字符大小写更换命令比如 - -`{\MakeLowercase i}FogSim title contents` - -(2)修改titlecase域格式,即将如下命令放到导言区中,放biblatex后面 - -``` -\DeclareFieldFormat{titlecase}{\iftoggle{bbx:titlelink}{% -\iffieldundef{url}{#1}{% -\href{\thefield{url}}{#1}}}{#1}}%重设标题格式,将去除首字母大写 -``` - -​ -* 请问如何使文献表中的期刊名是单词首字母大写的? - - -默认情况下,biblatex-gb7714-2015不对期刊名的字母大小写做处理, -因此需要在bib文件输入参考文献信息时给出需要的大小写格式。 - - -​ -* 我想得到中英文对照的双语参考文献,请问该如何处理? - - -biblatex-gb7714-2015设计了两种多语言对照参考文献的实现方式, -一种是利用条目集的概念,另一种是利用关联条目的概念。 -因此有两种方法: - -(1)方法一,动态定义条目集: -在导言区或正文中定义: -```\defbibentryset{易仕和,等,2013}{易仕和2013--,Yi2013--}``` - -在正文中引用: -```双语文献引用\cite{易仕和,等,2013}``` - -(2)方法二,动态定义关联条目: -在导言区定义: -```\defdoublelangentry{易仕和2013--}{Yi2013--}``` - -在正文中引用: -```双语文献引用\cite{易仕和2013--}``` - - - - -* 我想修改文献条目的日期项诸如格式,请问该如何处理? - -参考文献中日期格式主要有四种修改方式: -(1) 利用biblatex选项全局的修改日期格式 -(2) 修改日期输出宏,使根据条目类型输出不同的日期格式 -(3) 修改日期输出宏,使根据具体条目输出不同的日期格式 -(4) 修改参考文献信息,使当前条目原样输出需要的格式 - -具体示例见:[biblatex中如何修改参考文献中日期的著录格式](https://blog.csdn.net/xenonhu/article/details/86933525) - - -​ -#### 4.3 Citation format/正文引用的标注格式 - -* 我希望在正文中同时使用上标和非上标的引用标签,请问该怎么操作? - - -可以使用不同的命令来实现上标和非上标的标签, -上标标签的命令为`\cite{bibtexkey}` ,非上标标签的命令为 `\parencite{bibtexkey}`。 -当希望上标的标签也给出国标要求的页码时,则可以使用`\cite[50-55]{bibtexkey}`、`\pagescite[50-55]{bibtexkey}`给出指定页码 或者`\pagescite{bibtexkey}` 直接使用bib文件中的页码。 - - -​ -* 我在引用文献时已经给出作者信息,希望引用标签仅包含年份和页码信息或者仅包含年份信息时,该怎么操作? - - - 需要给出年份的标签是作者年制的标签,可以使用命令`\yearpagescite{bibtexkey}`给出包含年份和页码信息的标签, - 使用命令`\yearcite{bibtexkey}`给出仅包含年份的标签。 - - - -* 在使用作者年制时,我希望文献表是按作者年份标题排序,而正文某处一个cite命令引用多个参考文献,且这些文献的标签是按年份作者标题排序,该怎么操作? - - - 有两种方法: - -(1) 一是自动排序 - - 宏包加载时使用: - -```\usepackage[backend=biber,style=gb7714-2015ay,sortcites,sorting=ynt]{biblatex}``` - - 正文中引用: - -```\cite{refa2010,refb2008,refc2009}``` - - 然后在文献打印前加 - -```\newrefcontext[sorting=nyt]``` - -(2) 二是手动给出排序 - - 宏包加载时使用 - -```\usepackage[backend=biber,style=gb7714-2015ay]{biblatex}``` - - 引用多个文献时按照年份顺序给出引用关键字,即正文中引用: - -```\cite{refb2008,refc2009,refa2010}``` - - 参考:[issue:citation的顺序和bibliography的顺序如何不关联](https://github.com/hushidong/biblatex-gb7714-2015/issues/30) - - - -* 在使用作者年制时,我希望文献表同一位置引用同一作者的不同的文献实现作者姓名的压缩,该怎么操作? - -可以通过将gb7714-2015ay.cbx 中的引用的基础样式authoryear更换成authoryear-comp。 - - -​ -* 请问希望正文中作者年制的标注(引用)标签中作者数量超过国标规定的1个时,该怎么处理? - - -可通过设置选项maxcitenames,mincitenames实现,比如下面的设置用于显示5个作者: - -```\usepackage[backend=biber,style=gb7714-2015ay,maxcitenames=5,mincitenames=5]{biblatex}``` - - - -* 请问希望正文中作者年制的标注(引用)标签中作者数量只能是1个,而不管是否存在歧义时,该怎么处理? - - -可通过设置选项uniquelist=false实现,该设置标签中的作者只会是指定的1个: - -```\usepackage[backend=biber,style=gb7714-2015ay,uniquelist=false]{biblatex}``` - - - -* 请问希望正文中作者年制的标注(引用)标签中作者数量只能是1个,且只用其作者的姓而不管是否存在歧义时,该怎么处理? - - -可通过设置选项uniquelist=false, uniquename=false实现,该设置标签中的作者只会是指定的1个且只用该作者的姓: - -```\usepackage[backend=biber,style=gb7714-2015ay,uniquelist=false,uniquename=false]{biblatex}``` - - - - -* 请问上标的标注(引用)标签过长导致行溢出,该怎么处理? - - -上标的标注与行内的标注不一样,因此采用了上标的处理,所以上标的标注无法自动断行,因此在页边附近的长标注很有可能会溢出。由于上标标注的断行国标中并没有什么明确要求和说明,因此只能按照自己的方式进行处理,通常是将一个长标注手动分成两个短的标注,比如将: - -```\cite{key1,key2,key3,key4,key5,key6,key7}``` - -变换成: - -```\cite{key1,key2,key3}\linebreak\cite{key4,key5,key6,key7}``` - -如果两个cite之间还需要增加一个上标的逗号,那么可以手动处理比如增加`\textsuperscript{,}` - - - -* 在顺序编码制标签中,希望数字编码从两个连续编码就开始压缩,比如[1,2]压缩成[1-2],该怎么处理? - - -biblatex中处理顺序数字编码压缩的代码默认从3个连续编码开始压缩,比如[1,2,3]压缩成[1-3]。如果要修改为从2个连续编码开始压缩,只需要做一个很简单的修改即可: - -``` -%该宏的目的是抛弃压缩内部的编号,而仅输出最后一个编号,主要通过cbx@tempcnta来控制 -%一般情况下cbx@tempcnta为0,所以该宏不输出任何内容。当cbx@tempcnta在cite:comp:comp宏中更改变大后 -%说明开始进入需要压缩的范围,当到压缩终点时,cbx@tempcnta必然大于1,则输出内容。 -%修改第二行的数字1为0即可将默认的3个开始压缩变为2个开始压缩。 -\renewbibmacro*{cite:dump}{ - \ifnumgreater{\value{cbx@tempcnta}}{0} - {\ifnumgreater{\value{cbx@tempcnta}}{1}%1改为0,可以将压缩起始3个编号改为2个编号 - {\bibrangedash} - {\multicitedelim}% - \bibhyperref[\cbx@lastkey]{% - \ifdef\cbx@lastprefix - {\printtext[labelprefix]{\cbx@lastprefix}} - {}% - \printtext[labelnumber]{\cbx@lastnumber}}} - {}% - \setcounter{cbx@tempcnta}{0}% - \global\undef\cbx@lastprefix} -``` - -反之,从两个开始压缩改成3个连续压缩,方法是类似的,就是将中的0改回1。 - - - -* 在正文中的某一部分,希望取消顺序编码标签中的压缩,而其他部分保持这种压缩,该怎么处理? - - -顺序数字编码压缩的代码,主要有cite:comp:comp宏控制,因此需要局部取消压缩,可以局部的修改该宏。修改很简单,只需要注释掉其中的一行,在需要取消压缩的环境中,重定义该宏,比如: - -``` -\renewbibmacro*{cite:comp:comp}{% - \ifboolexpr{ - ( test {\iffieldundef{labelprefix}} and test {\ifundef\cbx@lastprefix} ) - or - test {\iffieldequals{labelprefix}{\cbx@lastprefix}} - } - {\ifnumequal{\thefield{labelnumber}}{\value{cbx@tempcntb}} - {\savefield{entrykey}{\cbx@lastkey}% - \savefield{labelnumber}{\cbx@lastnumber}% - \addtocounter{cbx@tempcnta}{1}} - {\ifnumequal{\thefield{labelnumber}}{\value{cbx@tempcntb}-1} - {} - {\usebibmacro{cite:dump}% - \ifnumgreater{\value{cbx@tempcntb}}{-1} - {\multicitedelim} - {}% - \printtext[bibhyperref]{% - \printfield{labelprefix}% - \printfield{labelnumber}}}}} - {\usebibmacro{cite:comp:end}}% - %\setcounter{cbx@tempcntb}{\thefield{labelnumber}}%%注释该行,以取消压缩 - \savefield{labelprefix}{\cbx@lastprefix}} -``` - - -​ -### 5. Examples/著录和标注结果示例 - -* 顺序编码制 - -![示例a](example/fig-style-numeric.png) - -* 作者年制 - -![示例b](example/fig-style-authoryear.png) - - -* 姓名的格式更改 - -对于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/fig-nameformat.png) - - - ---------------------------------------------------------- - - -## Usage -* for numerical sequence style: gb7714-2015 - - `\usepackage[backend=biber,style=gb7714-2015]{biblatex}` - - - add an option `gbalign` to control the align style of the numerical label: - - `gbalign=right` for the label ragged left in a list environment, this is the default setting. - - `gbalign=center` for the same width label in a list environment with the number centered in a wrapper like bracket [] - - `gbalign=left` for the label ragged right in list environment - - `gbalign=gb7714-2015` for the label in paragraph with same separation space between label and content of the reference entry - - `\usepackage[backend=biber,style=gb7714-2015,gbalign=gb7714-2015]{biblatex}` - - - add an option `gbpub` for dealing publishing items (This option is also for author-year style): - - `gbpub = true` for gb7714 style, to print `[出版者不详]` and the like when publisher or address is absent, this is the default setting. - - `gbpub = false` for standard style, not to print the additional infomation. - - `\usepackage[backend=biber,style=gb7714-2015,gbpub=true]{biblatex}` - - - add an option `gbnamefmt` for dealing author name's letter case (This option is also for author-year style): - - `gbnamefmt = uppercase` for gb7714 style, to capitalize all the letters of the name, like: ZHANG M L, this is the default setting. - - `gbnamefmt = lowercase` for gb7714 style, do no case switch of the name, like: Zhang M L - - `gbnamefmt = givenahead` for standard style, given-family style, like: M. L. Zhang as the ieee style - - `gbnamefmt = familyahead` for standard style, family-given style, like: Zhang, M. L. as the apa style. - - `gbnamefmt = pinyin` for a common Chinese style, like: ZHANG Min-li, YI Shi-he and so on. - - `gbnamefmt = reserveorder` for standard style:family-given/given-family style - - the name format can be set per-entry using a field `nameformat`, add this field like `nameformat={pinyin}` to an entry in the bib file to set the entry's name format. - - `\usepackage[backend=biber,style=gb7714-2015,gbnamefmt=uppercase]{biblatex}` - - - add an option `gbbiblabel` to control the format of the numerical label: - - `gbbiblabel=bracket` for the numerical number in the label wrapped by bracket, like: [1], this is the default setting. - - `gbbiblabel=parens` for the numerical number in the label wrapped by parenthesis, like: (1) - - `gbbiblabel=plain` for the numerical number in the label wrapped by nothing, like: 1 - - `gbbiblabel=dot` for the numerical number in the label followed with dot, like: 1. - - `gbbiblabel=box` for the numerical number in the label wrapped by box which generated by `\framebox` - - `gbbiblabel=circle` for the numerical number in the label wrapped by circle which generated by `\textcircled` - - `\usepackage[backend=biber,style=gb7714-2015,gbbiblabel=bracket]{biblatex}` - - - add an option `gbtype` to control the output of the reference type and carrier identifier like [J/OL] (This option is also for author year style): - - `gbtype = true` for gb7714 style, print a title with the identifier, like: `an on-line article [J/OL]`, this is the default setting. - - `gbtype = false` for none identifier, print a title without identifier, like: `an on-line article` - - `\usepackage[backend=biber,style=gb7714-2015,gbtype=true]{biblatex}` - - - add an option `gbfieldtype` to control the output of field type: - - `gbfieldtype = true` to print type field, like the thesis type: `PHD thesis` or `博士学位论文`。please use `\DefineBibliographyStrings{english}{mathesis={str you want}}`,`\DefineBibliographyStrings{english}{phdthesis={str you want}}`, - `\DefineBibliographyStrings{english}{mathesiscn={str you want}}`,`\DefineBibliographyStrings{english}{phdthesiscn={str you want}}` to - define the output string, or set it in bibfile like: `type={str you want},` - - `gbfieldtype = false` not to print type field. - - `\usepackage[backend=biber,style=gb7714-2015,gbfieldtype=true]{biblatex}` - - - add an option `gbpunctin` to control the output of `//` before bookauthor for entrytypes like inbook/incollection/inproceedings(This option is also for author year style): - - `gbpunctin=true` for gb7714 style, to output `//`, this is the default setting - - `gbpunctin=false` for standard style, to output a bibstring, for English it is `IN:`, If you want to eliminate it at all, please redefine the bibstring like `\DefineBibliographyStrings{english}{in={}}` and `\DefineBibliographyStrings{english}{incn={}}`in the preamble. - - `\usepackage[backend=biber,style=gb7714-2015,gbpunctin=true]{biblatex}` - - - add an option `gbctexset` to control the bibliography heading's setting method (This option is also for author year style): - - `gbctexset=true` , the bibliography heading can be set by `\bibname` or `\refname`, this is the default setting. - - `gbpunctin=false`, the heading can be set by bibstring like `\DefineBibliographyStrings{english}{bibliography={title you want}}` or `\DefineBibliographyStrings{english}{references={title you want}}` - - or alternatively, it can also be set through the printbibliography option `title`, like `printbibliography[title=title you want]`. - - `\usepackage[backend=biber,style=gb7714-2015,gbctexset=true]{biblatex}` - - - add an option `gbcodegbk` to deal the tex source file encoded with GBK (This option is also for author year style): - - `gbcodegbk=true` , if you want to compile the GBK encoded source file with pdflatex or latex - - `gbcodegbk=false`, if you want to compile the utf-8 endcoded source file with xelatex, this is the default setting. - - `\usepackage[backend=biber,style=gb7714-2015,gbcodegbk=true]{biblatex}` - - - add an option `gbtitlelink` to control the hyperlink of title field (This option is also for author year style): - - `gbtitlelink = false` not to add hyperlink, this is the default setting. - - `gbtitlelink = true` to set the title as a hyperlink. - - `\usepackage[backend=biber,style=gb7714-2015,gbtitlelink=true]{biblatex}` - - - add an option `gbfootbib` to control the bibliography in footnote (This option is also for author year style): - - `gbfootbib = true` make patches to match the standard, this is the default setting. - - `gbfootbib = false` not to patch. - - `\usepackage[backend=biber,style=gb7714-2015,gbtitlelink=true]{biblatex}` - - - add options `gbcitelocal` `gbbiblocal` to control the local strings in citation and bibliography respectively, the `gblocal` set the both options (These options are also for author year style): - - `gbcitelocal = gb7714-2015` to output local strings according to the reference's language, this is the default setting. - - `gbcitelocal = chinese` to output local strings with chinese language word like "等". - - `gbcitelocal = english` to output local strings with western language word like "et al.". - - `\usepackage[backend=biber,style=gb7714-2015,gbcitelocal = chinese]{biblatex}` - - - add an option `gbstrict` to control the output of some unnecessary fields for GB/T7714-2015 (This option is also for author year style). - - `gbstrict=true`, not to print those fields such as language, eprint, this is the default setting. - - `gbstrict=false`, to output them as the standard style - - `\usepackage[backend=biber,style=gb7714-2015,gbstrict=true]{biblatex}` - - - add an option `gbfieldstd` to control the format of some fields such as title, url and pages (This option is also for author year style): - - `gbfieldstd = false` for gb7714 style, format of the fields follows the GB/T7714-2015 standard, this is the default setting. - - `gbfieldstd = true` for standard style. - - `\usepackage[backend=biber,style=gb7714-2015,gbfieldstd=true]{biblatex}` - - -* for multi-style: gb7714-2015ms - - In order to use two styles in a tex file, add a style gb7714-2015ms. option `gbstyle` is added to control the using mode. `gbstyle=true` means all references are printed with GB/T7714-2015 style, and `gbstyle=false` means the chinese references are printed with GB/T7714-2015 style while the other references are printed with standard style shipped by biblatex, and `gbstyle=true` is the default set. all the options for numerical sequence style gb7714-2015 can also be used in gb7714-2015ms. - - - `\usepackage[backend=biber,style=gb7714-2015ms,gbstyle=false]{biblatex}` - -* for author year style: gb7714-2015ay - - `\usepackage[backend=biber,style=gb7714-2015ay,gbpub=true]{biblatex}` - - - add an option `gbnoauthor` for dealing undefined author: - - `gbnoauthor = true` for gb7714 style, to print `佚名` or `Anon` when the author of the entry is absent. - - `gbnoauthor = false` for standard style, not to pring anything, this is the default setting. - - `\usepackage[backend=biber,style=gb7714-2015ay,gbnoauthor=true]{biblatex}` - - - add an option value `mergedate=none` to control the date in bibliography: - - `mergedate=true` to output date only after author,like:LAMPORT L, (1986). Document Preparation System[M]. [S.l.]: Addison-Wesley Reading, MA. - - `mergedate=false` to output date after author and in publish items,like:LAMPORT L, (1986). Document Preparation System[M]. [S.l.]: Addison-Wesley Reading, MA, 1986. - - `mergedate=none` to output date only in publish items,like:LAMPORT L. Document Preparation System[M]. [S.l.]: Addison-Wesley Reading, MA, 1986. - - do not set mergedate output like:LAMPORT L, 1986. Document Preparation System[M]. [S.l.]: Addison-Wesley Reading, MA. - - `\usepackage[backend=biber,style=gb7714-2015ay,mergedate=none]{biblatex}` - - - add an option `gblanorder` to control sequence of reference groups of different languagesin the bibliography: - - `gblanorder=chineseahead` to set the sequence as: cn;jp;kr;en;fr;ru - - `gblanorder=englishahead` to set the sequence as: en;fr;ru;cn;jp;kr - - `gblanorder=user defined string like: cn;en;jp;kr;fr;ru` to set the sequence as: cn;en;jp;kr;fr;ru. - - `\usepackage[backend=biber,style=gb7714-2015ay,gblanorder=cn;en;jp;fr;kr;ru]{biblatex}` - -* for perl script transformation tool(only for the numerical style) - - `perl gb7714texttobib.pl in=textfilename out=bibfilename` - -A demonstration database is provided to show how to format input for the style. The biblatex-gb7714-2015 style works with texlive2014, texlive2015, texlive2016, texlive2017 , texlive2018 and so on. - -please see the file 'biblatex-gb7714-2015.pdf' for further information! - - -## Version 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 -* 2018/01/20 v1.0j -* 2018/04/03 v1.0k -* 2018/06/01 v1.0l -* 2018/08/14 v1.0m,CTAN -* 2018/11/04 v1.0n -* 2018/12/22 v1.0o -* 2019/01/19 v1.0p -* 2019/02/11 v1.0q -* 2019/03/28 v1.0r -* 2019/03/29 v1.0rm,rename erj to chinese-erj,ctan -* 2019/08/28 v1.0s -* 2020/03/04 v1.0t,ctan -* 2020/03/30 v1.0u -* 2020/07/21 v1.0v,ctan - - - ---------------------------------------------------------- -## Update history: - -[update: tex](example/updatehistory.tex) - -[update: tex](example/updatehistoryold.tex) - - - +Date of last change: 2021-01-19 to version v1.0w + + +# biblatex-gb7714-2015: a biblatex style package +--------------------------------------------------------- +[使用入门](#jumptotutorial) |==| [说明文档](biblatex-gb7714-2015.pdf) |==| [WIKI](https://github.com/hushidong/biblatex-gb7714-2015/wiki) + + +## Introduction + +Maintainer: huzhenzhen + +Homepage: + +ctan-pkg: + +License: LaTeX Project Public License 1.3 or later + + +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/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 + + +biblatex-gb7714-2015 宏包是中文参考文献著录/标注标准 `GB/T 7714-2015` 的 biblatex 实现。它本质上是一个样式包,提供了顺序编码制和著者年份制样式,在 tex 文档中配合 biblatex 宏包使用,以生成满足《GB/T 7714-2015 信息与文献 参考文献著录规则》要求的参考文献。除了具备 biblatex 提供的不同于传统基于 bibtex 的参考文献解决方案的特点外,还具有如下特点: + +* 较强的兼容性。能够兼容 biblatex v2.8 以上版本;能够兼容国标样式的一些常用条目类型、数据域。 + +* 较高的易用性。标注/著录格式完全由样式实现,不必为排序、多语言等问题手动处理bib文件;提供了丰富的标注(引用)命令,包括一些中文中习惯的命令;提供了多语言对照,多语言文献表等功能。 + +* 较大的灵活性。提供丰富的选项来帮助用户进行排序调整、著录项(姓名、出版项、文献标识符、标题超链接)格式调整、文献表格式(标签对齐、标签格式、条目格式、字体、段落格式)调整、编码兼容。 + +* 较好的维护性。样式代码主要是在标准样式基础上提供的中文国标解决方案,保持与标准样式一致的结构、风格和习惯,并提供详尽的注释,用户可轻松理解,并可在其基础上进一步修改以实现其它要求的样式,比如宏包附带的chinese-erj样式,就是基于本样式实现的经济学研究期刊的参考文献样式。 + +简单使用说明见:[使用入门](#jumptotutorial) + +--------------------------------------------------------- + +## Need to do: + + * special characters in all fields? + * entry without author: the delimiter between title and year? + * TEST FOR texlive 2015,2016,2017 + + +## Applications + +* [SJTUThesis(上海交通大学学位论文模板)](https://github.com/sjtug/SJTUThesis)(母校的论文模板,不得不说缘分真的很神奇) +* [fduthesis(复旦大学论文模板)](https://github.com/Stone-Zeng/fduthesis) +* [Zhejiang University thesis(浙江大学毕业设计/论文模板)](https://github.com/TheNetAdmin/zjuthesis) +* [UCASthesis(中国科学院大学学位论文模板**国科大新版标准**)](https://github.com/xiaoyao9933/UCASthesis) +* [UCASthesis(ucasthesis 国科大学位论文 LaTeX 模板 [最新样式])](https://github.com/mohuangrui/ucasthesis) +* [TongjiThesis(同济大学硕博士论文LaTeX模板)](https://github.com/marquistj13/TongjiThesis) +* [neuthesis(东北大学博士学位论文Latex模板)](https://github.com/mervin0502/neuthesis) +* [nwafuthesis(西北农林科技大学学位论文LaTeX文档类)](https://github.com/registor/nwafuthesis) +* [nudtpaper(nudt学位论文模板)](https://github.com/liubenyuan/nudtpaper) +* [ECNU-Undergraduate-LaTeX(华东师范大学本科毕业论文模板)](https://github.com/YijunYuan/ECNU-Undergraduate-LaTeX) +* [fjnu-bathesis (福建师范大学本科毕业论文LaTeX 模板)](https://github.com/fjnuer/fjnu-bathesis) +* [Thesis-Template-for-XJTU (西安交大毕业设计模板)](https://github.com/DXie123/Thesis-Template-for-XJTU) +* [CAUTemplate(中国农业大学课程论文模板)](https://github.com/Cdmium/CAUTemplate) +* [Yet anoter BUPT Thesis LaTeX class (北邮研究生学位设计的LaTeX文档类)](https://github.com/qcts33/BUPTthesis-ctex) +* [Study-LaTeX(LaTeX学习笔记)](https://github.com/Zousiyu/Study-LaTeX) +* [ElegantBook](https://github.com/ElegantLaTeX/ElegantBook) +* [《经济研究》杂志 LaTeX 论文模板)](https://github.com/EthanDeng/Chinese-ERJ) +* [WUTthesis(武汉理工大学研究生学位论文的 LaTeX 模板)](https://github.com/Jiayin-Gu/WUTthesis) +* [shtthesis (ShangHaiTech university THESIS)](https://github.com/lirundong/shtthesis) +* [LaTeX-SWUFE-Bachelor-Thesis (西南财经大学本科毕业论文 LaTeX 模板)](https://github.com/sukanka/LaTeX-SWUFE-Bachelor-Thesis) +* [NJU-thesis-esz(南京大学学位论文-微调整后适用于人文社科)](https://github.com/EdwardSaidZhou/NJU-thesis-esz) +* [NKThesis(南开大学硕士毕业论文(博士论文)Latex模板)](https://github.com/procuteboy/NKThesis) +* [NKUBachelorThesis(南开大学本科生毕业论文(毕业设计)LaTeX模板)](https://github.com/NKcqx/NKUBachelorThesis) +* [BIThesis(bachelor graduation thesis for Dept. of Undergraduate Academic Affairs of Beijing Institute of Technology.)](https://github.com/BITNP/BIThesis) +* [nputhesis(NPU 博士、硕士学位论文 \LaTeX 模板)](https://github.com/NPUSCG/nputhesis) +* [sustechthesis(Southern University of Science and Technology Thesis Template LaTeX Template)](https://github.com/Iydon/sustechthesis) +* [SHMTUThesis(上海海事大学 LaTeX 学位论文模板)](https://github.com/hellckt/SHMTUThesis) +* [LZUthesis(兰州大学本科毕业论文LaTeX模板)](https://github.com/szsdk/LZUthesis) +* [nuaa-thesis(南京航空航天大学本科、硕士和博士学位论文的样式模板)](https://github.com/nuaa803/nuaa-thesis) +* [...] + + +## Related Links + +* [Biblatex 宏包](https://github.com/plk/biblatex) +* [Beamer 文档类](https://github.com/josephwright/beamer) +* [biblatex 宏包中文手册 ](https://github.com/hushidong/biblatex-zh-cn) +* [biblatex 简明使用手册](https://github.com/hushidong/biblatex-solution-to-latex-bibliography) +* [biblatex-tutorial 摘译](https://github.com/hushidong/biblatex-tutorial-cn) +* [biblatex-map bib文件修改工具](https://github.com/hushidong/biblatex-map/) +* [biblatex-check bib文件检查工具](https://github.com/Pezmc/BibLatex-Check) +* [biblatex-caspervector: caspervector 设计的中文参考文献样式](https://github.com/CasperVector/biblatex-caspervector) +* [gbt7714-bibtex-style: GB/T7714-2015 标准的bst实现版本](https://github.com/zepinglee/gbt7714-bibtex-style) +* [LaTeX学习网站](http://www.latexstudio.net/) +* [LaTeX交流论坛](http://www.ctex.org/) + +--------------------------------------------------------- + +

Tutorial/使用入门

+[//]: # "这里这种方式不适合可能主要是因为标题所导致,因此用上面的方式进行处理" + + +

0. pacakge usage/宏包加载方式

+样式包配合biblatex使用,即在biblatex调用时加载样式包: + +* 使用顺序编码制: + +``` + \usepackage[backend=biber,style=gb7714-2015]{biblatex} +``` + +* 使用著者-出版年制: + +``` + \usepackage[backend=biber,style=gb7714-2015ay]{biblatex} +``` + +* 使用宏包提供的选项: + +``` + %设置gbalign选项以改变文献表序号标签对齐方式, + %设置gbpub=false取消缺省出版项自填补信息,比如: + \usepackage[backend=biber,style=gb7714-2015,gbalign=gb7714-2015,gbpub=false]{biblatex} +``` + +* 使用同一文献表中不同语言区分著录格式的样式(gb7714-2015ms): + +``` + %设置gbstyle=false,中文文献使用GB/T 7714-2015著录格式,而其它语言文献使用biblatex标准样式 + \usepackage[backend=biber,style=gb7714-2015ms,gbstyle=false]{biblatex} +``` + +* 同一文档中不同文献分节区分不同著录格式的样式(gb7714-2015mx): + +``` + %gb7714-2015mx默认使用顺序编码制样式 + \usepackage[backend=biber,style=gb7714-2015mx]{biblatex} + %如需在某一参考文件分节使用著者年份制样式,比如第2个refsection中使用时,则在导言区设置: + \setaystylesection{2} +``` + +更多宏包选项的说明见:[biblatex-gb7714-2015.pdf](biblatex-gb7714-2015.pdf) + +宏包加载的完整文档示例见:[tex文档一般结构](#jumptotexsrcf) + +

1. Tex source file/tex文档一般结构

+注意其中加载biblatex宏包的代码: + +``` +\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[backend=biber,bibstyle=gb7714-2015,%nature,%%加载biblatex宏包,使用参考文献 +citestyle=gb7714-2015%,backref=true%%其中后端backend使用biber +]{biblatex}%标注(引用)样式citestyle,著录样式bibstyle都采用gb7714-2015样式 + +\usepackage{filecontents} +\begin{filecontents}{egbibdata.bib} +@Book{Peebles2001-100-100, + Title = {Probability, random variable, and random signal Principles and \LaTeX{}}, + Address = {New York}, + Author = {von Peebles, Jr., P. Z.}, + Edition = {4}, + Pages = {100}, + Publisher = {McGraw-Hill}, + Year = {2001} +} + +@Book{蔡敏2006--, + Title = {UML基础和Rose建模教程},27 + Address = {北京}, + Author = {蔡敏 and 徐慧慧 and 黄柄强}, + Publisher = {人民邮电出版社}, + Year = {2006}, + Month = {1} +} +\end{filecontents} + +\addbibresource[location=local]{egbibdata.bib}%biblatex宏包的参考文献数据源加载方式 + +\begin{document}%正文区开始: + +%正文内容,引用参考文献 + +1. 不带页码的引用(顺序编码制上标,方括号包围;作者年制行内,括号包围):\\ + 见文献\cite{Peebles2001-100-100}\\ + 见文献\upcite{Peebles2001-100-100}\\ + 见文献\supercite{Peebles2001-100-100} + +2. 不带页码的引用(顺序编码制非上标,方括号包围;作者年制行内,括号包围):\\ + 见文献\parencite{Peebles2001-100-100} + +3. 带页码的引用(标准命令,默认样式; 增加命令,GB/T 7714-2015样式):\\ + 见文献\cite[见][49页]{蔡敏2006--}\\ + 见文献\parencite[见][49页]{Peebles2001-100-100}\\ + 见文献\pagescite{Peebles2001-100-100}\\ + 见文献\pagescite[201-301]{Peebles2001-100-100} + +4. 顺序编码制中同时输出作者和顺序编码标签,比如:\\ + 见\citeauthor{蔡敏2006--}\cite{蔡敏2006--}\\ + 见\authornu*mcite{蔡敏2006--}\\ + 见\textcite{蔡敏2006--} (顺序编码标签不上标) + +5. 作者年制文中已有作者还需要年份和页码(顺序编码制与pagescite作用相同,作者年制年份行内页码上标):\\ + 见蔡敏\yearpagescite[][205]{蔡敏2006--}和Peebles\yearpagescite[][15]{Peebles2001-100-100} + +6. 作者年制文中已有作者只需要年份(顺序编码制与pagescite作用相同,作者年制年份行内):\\ + 见赵耀东\yearcite{蔡敏2006--}\\ + 见赵耀东(\cite*{蔡敏2006--})\\ + 见赵耀东(\citeyear{蔡敏2006--}) + +7. 作者年制中由标注命令给出作者年份信息,作者以主语方式作为正文内容:\\ + 见\textcite{蔡敏2006--} + +8. 在页脚中引用和打印文献表:\\ + 见文献\footnote{在脚注中引用\footcite{蔡敏2006--}}\\ + 见文献\footfullcite{蔡敏2006--} + + +%打印参考文献表 + \printbibliography[heading=bibliography,title=参考文献] +\end{document} +``` + +### 2. Compile method/文档编译方式 + +``` + xelatex jobname.tex + biber jobname + xelatex jobname.tex + xelatex jobname.tex +``` + +或者 + +``` + latexmk -xelatex jobname.tex +``` + +编译引擎使用lualatex也是可以的,只要该引擎编译时ctex宏包能够正确支持中文。 + + +### 3. Recommended environment/推荐使用环境 + +- Texlive+Winedt +- Texlive+Texstudio +- texlive及其它发行版安装见[安装指南](https://github.com/sjtug/SJTUThesis/wiki/%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97) + + +### 4. Common questions/常见问题 + +#### 4.1 Installation and use/安装和使用 + +* 怎么利用biblatex生成国标GB/T 7714-2015格式的参考文献表? + +(1)在导言区加载biblatex宏包,并使用gb7714-2015样式: + +``` \usepackage[backend=biber,style=gb7714-2015]{biblatex}``` + +(2)正文中引用参考文献: + +``` 见文献\cite{referencbibtexkey}``` + +(3)在需要的地方打印参考文献表: + +```\printbibliography``` +更直接的例子见前述的[tex源文档](#jumptotexsrcf) + + + + +* 请问我应该怎么安装和更新biblatex-gb7714-2015宏包? + + +biblatex-gb7714-2015宏包是基于biblatex的样式宏包,目前texlive,miktex都已收录,因此可以直接使用,一般不需要安装。 + +如果使用时,系统提示找不gb7714-2015.bbx或gb7714-2015ay.bbx文件的错误,说明当前tex系统未安装biblatex-gb7714-2015样式包,这时需要安装它。 + +最简单的方法是从本项目源码中下载 gb7714-2015.bbx, gb7714-2015ay.bbx, gb7714-2015.cbx, gb7714-2015ay.cbx 四个文件放到你要编译的主文档所在目录,如果需要使用gbk编码,则还需复制 gb7714-2015-gbk.def 文件。对于已经安装的用户需要更新到最新版,也可以下载这些文件替换系统已经安装的文件。 + + + +* 请问使用时biblatex-gb7714-2015宏包时出现错误“ Package xkeyval Error: gb****** ' undefined in families blx@opt@pre'. [\blx@processoptions] ”? + + + +因为宏包的功能不断增加和完善,当在tex源文档中,使用新版中的一些选项时,而系统中的biblatex-gb7714-2015宏包是旧版时,就会出现`gb****`选项未定义的错误。解决方法就是更新biblatex-gb7714-2015宏包。更新方法见上一个问题。 + + + +* 为什么我之前使用样式`style=caspervector`进行编译没有问题,换成`style=gb7714-2015`后,编译就出现错误? + +可能有三个原因: + +(1) 辅助文件没有清理导致,当采用caspervector样式时编译产生的辅助文件中可能带有该样式的一些特有信息,由此产生一些不兼容。因此需要的操作是,清除辅助文件,然后再进行编译。清除命令为(下面的命令是windows下的,linux下的是类似的只需把删除命令换成`rm -f`): + +```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) *.nav *.snm *.vrb *.fls *.xdv *.fdb_latexmk``` + +(2) biblatex-gb7714-2015 版本过于陈旧,旧版本对于一些特殊情况可能考虑不全面。因此需要的操作是更新biblatex-gb7714-2015,方法见上一个问题。 + +(3) 编译命令问题,通常情况下tex文档和bib文档是utf8编码的,因此最好采用xelatex编译,而不用pdflatex。因此如果编译时用pdflatex出现错误,请换成xelatex。 + + +* 为什么我编译文档后没有出现参考文献表? + +当编译过程出现错误时,那么检查错误的原因,并解决它。 +当编译过程没有出现错误,那么很有可能是没有采用正确的命令进行文献编译,比如采用了传统的bibtex而不是biber。那么采用正确的编译命令重新编译即可: +``` +xelatex jobname.tex +biber jobname +xelatex jobname.tex +``` + + +* 为什么利用 ctex2.9 套装进行编译时,出现错误? + + +由于ctex2.9套装多年未更新,其中的biblatex宏包过于陈旧,所以需要更新 biblatex。 + + + +* 请问除了利用xelatex进行编译外,能不能用pdflatex进行编译? + + +能用pdflatex进行编译。但要注意的是因为某些样式比如authoryear等使用了xstring宏包中的一些命令,所以会产生错误,但numeric类样式通常没有问题。这一问题在biblatex更新到3.12版本后取消xstring宏包后得以解决。 + +中文用户需要注意一些编码的问题: + +utf-8编码的文档,采用xelatex编译没有任何注意事项,但使用pdflatex编译时,需要给ctex宏包加载UTF8选项,比如`\usepackage[UTF8]{ctex}`或者在文档类加载时给出也可以比如`\documentclass[[UTF8]{article}`,同时引用文献时使用的引用关键词应使用英文。 + +当文档使用其他编码时,xelatex编译通常需要指定一个文档编码,比如windows环境下的GB2312编码的文档需要指定`\XeTeXinputencoding "GBK"`, 否则显示乱码。使用pdflatex进行编译,如果biblatex不能正确的处理编码问题,那么需要为其明确的指定texencoding和bibencoding选项。比如windows环境下的GB2312编码的文档,需要指定`\usepackge[texencoding=GBK]{biblatex}`。 + + +* 请问使用backref=true选项后,某个反向超链接总是链接到封面页是怎么回事? + + +对页码进行正确超链接需要一个前提是,当前链接的页码是唯一的。当有两页具有相同的页码时,超链接总是链接到第一各具有该页码的页面上。比如封面页页码是1,正文第一页页码也是1,那么到正文第一页的反向超链接总会链接到封面页上。解决该问题就是要解决页码的唯一性问题。当页码的表示形式不是同一种时,那么也会得到正确的区分。比如封面页用罗马字母I表示,而正文第一页用阿拉伯数字1表示,那么就能得到正确的反向超链接。类似于: + +``` +\pagenumbering{roman} +\title{title} +\maketitle +\clearpage + +\pagenumbering{arabic} +\section{文献表} +``` + + +* 我希望参考文献表中的文献不是按引用顺序而是以文献作者的字母顺序排序,怎么实现? + + +一般情况下文献表是按引用顺序进行排列,标签是顺序的数字,这种方式称为顺序编码制。 +如果要以文献作者字母顺序排列,那么可以换一种编制方式,称为作者年制: + +```\usepackage[backend=biber,style=gb7714-2015ay]{biblatex}``` + +如果要求使用顺序编码制文献表,又要以文献作者字母顺序排列,那么可以增加排序选项`sorting=nyt`,意为按照姓名、年份、标题的字母顺序进行排序: + +```\usepackage[backend=biber,style=gb7714-2015,sorting=nyt]{biblatex}``` + + + +* 作者年制中英文文献能按字母顺序排列,那么中文文献能否以拼音或者笔画进行排序呢? + + +能,有两种方式实现: + +(1)通过编译时给biber设置选项来实现: + +``` +%按拼音排序,biber命令 +biber -l zh__pinyin jobname +%按笔画排序,biber命令 +biber -l zh__stroke jobname +``` + +(2)通过增加 biblatex 选项来实现(此时biber编译无需另加选项),比如: + +```\usepackage[backend=biber,style=gb7714-2015ay,sortlocale=zh__pinyin]{biblatex}``` + + + +* 作者年制参考文献表目前的排序时升序排列,能不能改成降序排序? + + +能,通过修改sorting选项实现: + + +```\usepackage[backend=biber,style=gb7714-2015ay,sorting=gbnytd]{biblatex}``` + +可用的选项值包括: +``` +nty 按照姓名、标题、年份排序。 +nyt 按照姓名、年份、标题排序。 +nyvt 按照姓名、年份、卷数、标题排序。 +anyt 按照字母标签、姓名、年份、标题排序。 +anyvt 按照字母标签、姓名、年份、卷数、标题排序。 +ynt 按照年份、姓名、标题排序。 +ydnt 按照年份(降序)、姓名、标题排序。 +none 不进行排序。所有的条目按照引用顺序处理。 +gb7714-2015 以语言、作者、年份、标题、升序排列 +gbnytd 以语言、作者、年份、标题、降序排列 +gbynta 以语言、年份、作者、标题、升序排列 +gbyntd 以语言、年份、作者、标题、降序排列 +``` + +* 如果我还希望顺序编码的文献著录表以拼音排序,请问该怎么操作? + +顺序编码文献著录表默认是按引用顺序排序,但可以通过设置sorting选项进行调整,比如sorting=nyt表示按作者姓名年份以及文献标题进行排序。要使中文能按拼音排序,可以设置本地化排序调整方案,即sortlocale选项,比如: + +```\usepackage[backend=biber,citestyle=gb7714-2015ay,bibstyle=gb7714-2015,sorting=nyt,sortlocale=zh__pinyin]{biblatex}``` + + + + + +* 我希望文献表以阿拉伯数字编号,而正文中的引用标签使用作者和年份标注而不是数字,请问我该如何处理? + +可以设置不同的标注和著录样式,比如标注样式用作者年制,而著录样式用顺序编码制,比如: + +```\usepackage[backend=biber,citestyle=gb7714-2015ay,bibstyle=gb7714-2015]{biblatex}``` + +参见:[issue:参考文献的顺序](https://github.com/sjtug/SJTUThesis/issues/300) + + + + + + +​ +* 请问如果参考文献中存在一些特殊字符比如&或者一些特殊命令比如\LaTex{}等,是不是会出现问题? + + +通常不会出现问题,直接输入即可,当出现问题时可以手动调整比如修改为`\&`和`{\LaTex{}}` + + + +* 如果希望在参考文献中直接使用一些unicode字符比如希腊字母等而不想用数学环境中的命令,请问该怎么处理? + + +直接显示希腊字母等unicode字符需要字体的支持,比如CMU Serif等,可以在整个文档全局使用该字体,也可以仅在文献表中使用该字体,比如: + +``` +{ +\newcommand{\ftcmu}{\fontspec{CMU Serif}\selectfont} +\renewcommand{\bibfont}{\ftcmu}%设置英文字体不影响中文字体 +\printbibliography +} +``` + +当然字体设置需要fontspec宏包的支持。 + + + +* 如何修改参考文献文献表的垂直间距(竖直间距)? + +设置如下尺寸即可 + +``` +% 间距的控制 +\setlength{\bibitemsep}{0ex} +\setlength{\bibnamesep}{0ex} +\setlength{\bibinitsep}{0ex} + +``` +其中itemsep设置各条文献之间的间隔,一般够用,后面两个常在西文中使用。具体意义参考biblatex-zh-cn + + + +* 如何修参考文献表的缩进? + +对于著者-出版年制文献表,设置如下尺寸即可: +``` +% 文献表中各条文献的缩进控制 +\setlength{\bibitemindent}{0em} % bibitemindent表示一条文献中第一行相对后面各行的缩进 +\setlength{\bibhang}{0pt} % 著者-出版年制中 bibhang 表示的各行起始位置到页边的距离 +``` + +对于顺序编码制文献表,可以采用如下方法: + +由于顺序编码制存在数字标签,且其宽度与参考文献数量相关的,在biblatex中这个宽度是一个动态变量,不是提前设定的,而是在文献表生成时给出,所以设定缩进需要更复杂的操作。 + +对于采用list环境的文献表,即设置gbalign=left、right、center时,那么需要修改文献表环境来设定缩进,比如: + +``` +%调整顺序标签与文献内容的间距 +\setlength{\biblabelsep}{2mm} +%修改对齐环境-使不缩进 +\defbibenvironment{bibliography} + {\list + {\printtext[labelnumberwidth]{% + \printfield{labelprefix}% + \printfield{labelnumber}}} + {%这里是所做的调整,通过设置\bibitemindent,\bibhang调整缩进 + \addtolength{\bibitemindent}{\labelnumberwidth}% + \addtolength{\bibitemindent}{\biblabelsep}% + \addtolength{\bibhang}{-\labelnumberwidth} % + \addtolength{\bibhang}{-\biblabelsep}% + %以下是默认的设置 + \setlength{\labelwidth}{\labelnumberwidth}% + \setlength{\labelsep}{\biblabelsep}% + \setlength{\leftmargin}{\bibhang}% + \addtolength{\leftmargin}{\labelnumberwidth}% + \setlength{\itemindent}{\bibitemindent}% + \setlength{\itemsep}{\bibitemsep}% + \setlength{\parsep}{\bibparsep}}% + \renewcommand*{\makelabel}[1]{\hss##1}} + {\endlist} + {\item} +``` + +对于不采用list环境的文献表,即设置gbalign=gb7714-2015时,可以采用如下设定: + +``` +%调整顺序标签与文献内容的间距 +\setlength{\biblabelsep}{2mm} +%修改对齐环境-使不缩进 +\renewcommand{\itemcmd}{% +\settowidth{\lengthid}{\mkgbnumlabel{\printfield{labelnumber}}} +%%这里是所做的调整,以下两句通过调整\lengthid来调整缩进 +\setlength{\lengthid}{0pt} +\addtolength{\lengthid}{-\biblabelsep} +%如下是默认设置 +\addtolength{\lengthid}{\biblabelsep} +\setlength{\lengthlw}{\textwidth} +\addtolength{\lengthlw}{-\lengthid} +\addvspace{\bibitemsep}%恢复\bibitemsep的作用 +%\parshape 2 0em \textwidth \lengthid \lengthlw +\hangindent\lengthid +\mkgbnumlabel{\printfield{labelnumber}}% +\hspace{\biblabelsep}} +``` + +示例见:https://github.com/hushidong/biblatex-gb7714-2015/issues/62 + + + + +* 如何修改参考文献表的字体字号? + +通过修改如下命令实现 + +``` +% 字体的控制: \textit, sl, emph-楷体, \textbf, sf-黑体, \texttt-仿宋, \textsc, md, up-宋体 +% 全局字体 +\renewcommand{\bibfont}{\zihao{-5}}%\fangsong +% 题名字体 +\renewcommand{\bibauthorfont}{\bfseries\color{teal}}% +\renewcommand{\bibtitlefont}{\ttfamily\color{blue}}% +\renewcommand{\bibpubfont}{\itshape\color{violet}}% +% url和doi字体 +\def\UrlFont{\ttfamily} %\urlstyle{sf} %\def\UrlFont{\bfseries} +``` + +​ +* 我习惯用传统的bst文件来生成参考文献,有没有GB/T 7714-2015标准的实现版本? + + +GB/T 7714-2015标准实现的bst版本,已经由[zeping lee](https://github.com/zepinglee/gbt7714-bibtex-style)开发完毕,直接使用即可。 + + + +* 我在使用过程中遇到了一些无法理解和无法解决的问题,怎么办? + + +请邮件联系hzzmail@163.com或在项目内发issue提问即可。 + + +#### 4.2 Bibliography format/文献表著录格式 + +* 请问可以在参考文献表中实现类似于word那样的与文献内容等间距标签对齐格式么? + + +可以,latex的列表通常用list来实现,因此一般列表的内容都是对齐的, +此时如果标签右对齐的,那么标签和内容等间距,但标签左侧是不对齐的。 +如果标签是左对齐的,那么标签和内容的间距不相等。 +如果要求标签左侧对齐,且标签与内容等间距必须放弃使用list。 +biblatex-7714-2015的顺序编码制样式特别设计了这样的环境,以保持和word一致。通过设置选项gbalign来实现: + +```\usepackage[backend=biber,bibstyle=gb7714-2015,gbalign=gb7714-2015]{biblatex}``` + + + +* 如果不希望在参考文献表中出现类似“出版地不详”“出版者不详”等信息时,请问该怎么处理? + + +设置选项gbpub可以实现,当gbpub=false时,biblatex-gb7714-2015宏包会放弃国标的要求,不使用“出版地不详”等补充信息: + +```\usepackage[backend=biber,bibstyle=gb7714-2015,gbpub=false]{biblatex}``` + + +​ +* 我觉得文献表中英文作者全部用大写不好看,请问能换一种大小写方式么? + + +能,通过设置gbnamefmt可以实现,默认情况下gbnamefmt=uppercase,作者姓名字母全部大写。 +当设置gbnamefmt=lowercase时,biblatex-gb7714-2015宏包对于bib文件中的作者姓名的大小写不做改变, +这时可以在bib文件中手动设置想要的大小写方式。 +当要实现类似ZHAO Yu-xin这样的拼音方式,则可以设置gbnamefmt=pinyin: + +```\usepackage[backend=biber,bibstyle=gb7714-2015,gbnamefmt=lowercase]{biblatex}``` + + + +* 如果不希望在参考文献表中出现类似“[M]”“[J]”等文献类型标识符时,请问该怎么处理? + + +可通过设置选项gbtype=false实现: + +```\usepackage[backend=biber,bibstyle=gb7714-2015,gbtype=false]{biblatex}``` + + + +* 如果不希望在参考文献表中出现网址信息时,请问该怎么处理? + + +可通过设置选项url=false实现: + +```\usepackage[backend=biber,bibstyle=gb7714-2015,url=false]{biblatex}``` + + + +* 如果不希望在参考文献表中出现DOI信息时,请问该怎么处理? + + +可通过设置选项doi=false实现: + +```\usepackage[backend=biber,bibstyle=gb7714-2015,doi=false]{biblatex}``` + + + +* 如果对当前文献中的url或doi显示效果(包括间距和断行)不满意,能否进行调整? + + +能,可以通过设置三个计数器的值来调整,取值范围0到9999,计数器的值越大则越容易在相应的内容后断行: + +``` +\setcounter{biburlnumpenalty}{100}%大于0允许在数字后面断行 +\setcounter{biburlucpenalty}{100}%大于0允许在大写字母后面断行 +\setcounter{biburllcpenalty}{100}%大于0允许在小写字母后面断行 + +``` + + +​ +* 当参考文献没有作者时,希望用佚名或Anon代替作者时,请问该怎么处理? + + +可通过设置选项gbnoauthor=true实现,注意该处理主要用在作者年制中: + +```\usepackage[backend=biber,bibstyle=gb7714-2015,gbnoauthor=true]{biblatex}``` + + + +* 如果希望参考文献表中文献作者数量超过国标规定的3个时,请问该怎么处理? + + +可通过设置选项maxbibnames,minbibnames实现,比如下面的设置用于显示5个作者: + +```\usepackage[backend=biber,bibstyle=gb7714-2015,maxbibnames=5,minbibnames=5]{biblatex}``` + + +* 请问如何将作者之间的分隔符调整为and而不是用逗号? + + +可以通过重设两个分隔符来实现,分别是multinamedelim和finalnamedelim。低版本的biblatex直接重定义命令`\multinamedelim`和`\finalnamedelim`,高版本的biblatex可以使用分隔符环境,这样可以在标注、文献表等不同位置直接使用不同的分隔符,而不像低版本biblatex那样只能在不同的位置修改局部定义。比如: + +``` +\DeclareDelimFormat[bib]{multinamedelim}{\addspace and \addspace} +\DeclareDelimFormat[bib]{finalnamedelim}{\addspace and \addspace} +\DeclareDelimFormat[cite]{multinamedelim}{\addcomma\addspace} +\DeclareDelimFormat[cite]{finalnamedelim}{\addcomma\addspace} +``` + + +​ +* 请问如何使文献表中文献标题的是句首字母大写而其它所有字母均小写? + + +默认情况下,biblatex-gb7714-2015仅对标题首字母做调整,使其变成为大写,而其他字母大小写不做处理,因此要得到想要的字母大小写格式,需要在bib文件输入参考文献信息时给出需要的除首字母外的其它字母的大小写格式。 + +若有特殊情况,需要首字母为小写,可采用如下两种方法: + +(1)根据字符大小写更换命令比如 + +`{\MakeLowercase i}FogSim title contents` + +(2)修改titlecase域格式,即将如下命令放到导言区中,放biblatex后面 + +``` +\DeclareFieldFormat{titlecase}{\iftoggle{bbx:titlelink}{% +\iffieldundef{url}{#1}{% +\href{\thefield{url}}{#1}}}{#1}}%重设标题格式,将去除首字母大写 +``` + +​ +* 请问如何使文献表中的期刊名是单词首字母大写的? + + +默认情况下,biblatex-gb7714-2015不对期刊名的字母大小写做处理, +因此需要在bib文件输入参考文献信息时给出需要的大小写格式。 + + +​ +* 我想得到中英文对照的双语参考文献,请问该如何处理? + + +biblatex-gb7714-2015设计了两种多语言对照参考文献的实现方式, +一种是利用条目集的概念,另一种是利用关联条目的概念。 +因此有两种方法: + +(1)方法一,动态定义条目集: +在导言区或正文中定义: +```\defbibentryset{易仕和,等,2013}{易仕和2013--,Yi2013--}``` + +在正文中引用: +```双语文献引用\cite{易仕和,等,2013}``` + +(2)方法二,动态定义关联条目: +在导言区定义: +```\defdoublelangentry{易仕和2013--}{Yi2013--}``` + +在正文中引用: +```双语文献引用\cite{易仕和2013--}``` + + + + +* 我想修改文献条目的日期项诸如格式,请问该如何处理? + +参考文献中日期格式主要有四种修改方式: +(1) 利用biblatex选项全局的修改日期格式 +(2) 修改日期输出宏,使根据条目类型输出不同的日期格式 +(3) 修改日期输出宏,使根据具体条目输出不同的日期格式 +(4) 修改参考文献信息,使当前条目原样输出需要的格式 + +具体示例见:[biblatex中如何修改参考文献中日期的著录格式](https://blog.csdn.net/xenonhu/article/details/86933525) + + +​ +#### 4.3 Citation format/正文引用的标注格式 + +* 我希望在正文中同时使用上标和非上标的引用标签,请问该怎么操作? + + +可以使用不同的命令来实现上标和非上标的标签, +上标标签的命令为`\cite{bibtexkey}` ,非上标标签的命令为 `\parencite{bibtexkey}`。 +当希望上标的标签也给出国标要求的页码时,则可以使用`\cite[50-55]{bibtexkey}`、`\pagescite[50-55]{bibtexkey}`给出指定页码 或者`\pagescite{bibtexkey}` 直接使用bib文件中的页码。 + + +​ +* 我在引用文献时已经给出作者信息,希望引用标签仅包含年份和页码信息或者仅包含年份信息时,该怎么操作? + + + 需要给出年份的标签是作者年制的标签,可以使用命令`\yearpagescite{bibtexkey}`给出包含年份和页码信息的标签, + 使用命令`\yearcite{bibtexkey}`给出仅包含年份的标签。 + + + +* 在使用作者年制时,我希望文献表是按作者年份标题排序,而正文某处一个cite命令引用多个参考文献,且这些文献的标签是按年份作者标题排序,该怎么操作? + + + 有两种方法: + +(1) 一是自动排序 + + 宏包加载时使用: + +```\usepackage[backend=biber,style=gb7714-2015ay,sortcites,sorting=ynt]{biblatex}``` + + 正文中引用: + +```\cite{refa2010,refb2008,refc2009}``` + + 然后在文献打印前加 + +```\newrefcontext[sorting=nyt]``` + +(2) 二是手动给出排序 + + 宏包加载时使用 + +```\usepackage[backend=biber,style=gb7714-2015ay]{biblatex}``` + + 引用多个文献时按照年份顺序给出引用关键字,即正文中引用: + +```\cite{refb2008,refc2009,refa2010}``` + + 参考:[issue:citation的顺序和bibliography的顺序如何不关联](https://github.com/hushidong/biblatex-gb7714-2015/issues/30) + + + +* 在使用作者年制时,我希望文献表同一位置引用同一作者的不同的文献实现作者姓名的压缩,该怎么操作? + +可以通过将gb7714-2015ay.cbx 中的引用的基础样式authoryear更换成authoryear-comp。 + + +​ +* 请问希望正文中作者年制的标注(引用)标签中作者数量超过国标规定的1个时,该怎么处理? + + +可通过设置选项maxcitenames,mincitenames实现,比如下面的设置用于显示5个作者: + +```\usepackage[backend=biber,style=gb7714-2015ay,maxcitenames=5,mincitenames=5]{biblatex}``` + + + +* 请问希望正文中作者年制的标注(引用)标签中作者数量只能是1个,而不管是否存在歧义时,该怎么处理? + + +可通过设置选项uniquelist=false实现,该设置标签中的作者只会是指定的1个: + +```\usepackage[backend=biber,style=gb7714-2015ay,uniquelist=false]{biblatex}``` + + + +* 请问希望正文中作者年制的标注(引用)标签中作者数量只能是1个,且只用其作者的姓而不管是否存在歧义时,该怎么处理? + + +可通过设置选项uniquelist=false, uniquename=false实现,该设置标签中的作者只会是指定的1个且只用该作者的姓: + +```\usepackage[backend=biber,style=gb7714-2015ay,uniquelist=false,uniquename=false]{biblatex}``` + + + + +* 请问上标的标注(引用)标签过长导致行溢出,该怎么处理? + + +上标的标注与行内的标注不一样,因此采用了上标的处理,所以上标的标注无法自动断行,因此在页边附近的长标注很有可能会溢出。由于上标标注的断行国标中并没有什么明确要求和说明,因此只能按照自己的方式进行处理,通常是将一个长标注手动分成两个短的标注,比如将: + +```\cite{key1,key2,key3,key4,key5,key6,key7}``` + +变换成: + +```\cite{key1,key2,key3}\linebreak\cite{key4,key5,key6,key7}``` + +如果两个cite之间还需要增加一个上标的逗号,那么可以手动处理比如增加`\textsuperscript{,}` + + + +* 在顺序编码制标签中,希望数字编码从两个连续编码就开始压缩,比如[1,2]压缩成[1-2],该怎么处理? + + +biblatex中处理顺序数字编码压缩的代码默认从3个连续编码开始压缩,比如[1,2,3]压缩成[1-3]。如果要修改为从2个连续编码开始压缩,只需要做一个很简单的修改即可: + +``` +%该宏的目的是抛弃压缩内部的编号,而仅输出最后一个编号,主要通过cbx@tempcnta来控制 +%一般情况下cbx@tempcnta为0,所以该宏不输出任何内容。当cbx@tempcnta在cite:comp:comp宏中更改变大后 +%说明开始进入需要压缩的范围,当到压缩终点时,cbx@tempcnta必然大于1,则输出内容。 +%修改第二行的数字1为0即可将默认的3个开始压缩变为2个开始压缩。 +\renewbibmacro*{cite:dump}{ + \ifnumgreater{\value{cbx@tempcnta}}{0} + {\ifnumgreater{\value{cbx@tempcnta}}{1}%1改为0,可以将压缩起始3个编号改为2个编号 + {\bibrangedash} + {\multicitedelim}% + \bibhyperref[\cbx@lastkey]{% + \ifdef\cbx@lastprefix + {\printtext[labelprefix]{\cbx@lastprefix}} + {}% + \printtext[labelnumber]{\cbx@lastnumber}}} + {}% + \setcounter{cbx@tempcnta}{0}% + \global\undef\cbx@lastprefix} +``` + +反之,从两个开始压缩改成3个连续压缩,方法是类似的,就是将中的0改回1。 + + + +* 在正文中的某一部分,希望取消顺序编码标签中的压缩,而其他部分保持这种压缩,该怎么处理? + + +顺序数字编码压缩的代码,主要有cite:comp:comp宏控制,因此需要局部取消压缩,可以局部的修改该宏。修改很简单,只需要注释掉其中的一行,在需要取消压缩的环境中,重定义该宏,比如: + +``` +\renewbibmacro*{cite:comp:comp}{% + \ifboolexpr{ + ( test {\iffieldundef{labelprefix}} and test {\ifundef\cbx@lastprefix} ) + or + test {\iffieldequals{labelprefix}{\cbx@lastprefix}} + } + {\ifnumequal{\thefield{labelnumber}}{\value{cbx@tempcntb}} + {\savefield{entrykey}{\cbx@lastkey}% + \savefield{labelnumber}{\cbx@lastnumber}% + \addtocounter{cbx@tempcnta}{1}} + {\ifnumequal{\thefield{labelnumber}}{\value{cbx@tempcntb}-1} + {} + {\usebibmacro{cite:dump}% + \ifnumgreater{\value{cbx@tempcntb}}{-1} + {\multicitedelim} + {}% + \printtext[bibhyperref]{% + \printfield{labelprefix}% + \printfield{labelnumber}}}}} + {\usebibmacro{cite:comp:end}}% + %\setcounter{cbx@tempcntb}{\thefield{labelnumber}}%%注释该行,以取消压缩 + \savefield{labelprefix}{\cbx@lastprefix}} +``` + + +​ +### 5. Examples/著录和标注结果示例 + +* 顺序编码制 + +![示例a](example/fig-style-numeric.png) + +* 作者年制 + +![示例b](example/fig-style-authoryear.png) + + +* 姓名的格式更改 + +对于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/fig-nameformat.png) + + + +--------------------------------------------------------- + + +## Usage +* for numerical sequence style: gb7714-2015 + + `\usepackage[backend=biber,style=gb7714-2015]{biblatex}` + + - add an option `gbalign` to control the align style of the numerical label: + + `gbalign=right` for the label ragged left in a list environment, this is the default setting. + + `gbalign=center` for the same width label in a list environment with the number centered in a wrapper like bracket [] + + `gbalign=left` for the label ragged right in list environment + + `gbalign=gb7714-2015` for the label in paragraph with same separation space between label and content of the reference entry + + `\usepackage[backend=biber,style=gb7714-2015,gbalign=gb7714-2015]{biblatex}` + + - add an option `gbpub` for dealing publishing items (This option is also for author-year style): + + `gbpub = true` for gb7714 style, to print `[出版者不详]` and the like when publisher or address is absent, this is the default setting. + + `gbpub = false` for standard style, not to print the additional infomation. + + `\usepackage[backend=biber,style=gb7714-2015,gbpub=true]{biblatex}` + + - add an option `gbnamefmt` for dealing author name's letter case (This option is also for author-year style): + + `gbnamefmt = uppercase` for gb7714 style, to capitalize all the letters of the name, like: ZHANG M L, this is the default setting. + + `gbnamefmt = lowercase` for gb7714 style, do no case switch of the name, like: Zhang M L + + `gbnamefmt = givenahead` for standard style, given-family style, like: M. L. Zhang as the ieee style + + `gbnamefmt = familyahead` for standard style, family-given style, like: Zhang, M. L. as the apa style. + + `gbnamefmt = pinyin` for a common Chinese style, like: ZHANG Min-li, YI Shi-he and so on. + + `gbnamefmt = reserveorder` for standard style:family-given/given-family style + + the name format can be set per-entry using a field `nameformat`, add this field like `nameformat={pinyin}` to an entry in the bib file to set the entry's name format. + + `\usepackage[backend=biber,style=gb7714-2015,gbnamefmt=uppercase]{biblatex}` + + - add an option `gbbiblabel` to control the format of the numerical label: + + `gbbiblabel=bracket` for the numerical number in the label wrapped by bracket, like: [1], this is the default setting. + + `gbbiblabel=parens` for the numerical number in the label wrapped by parenthesis, like: (1) + + `gbbiblabel=plain` for the numerical number in the label wrapped by nothing, like: 1 + + `gbbiblabel=dot` for the numerical number in the label followed with dot, like: 1. + + `gbbiblabel=box` for the numerical number in the label wrapped by box which generated by `\framebox` + + `gbbiblabel=circle` for the numerical number in the label wrapped by circle which generated by `\textcircled` + + `\usepackage[backend=biber,style=gb7714-2015,gbbiblabel=bracket]{biblatex}` + + - add an option `gbtype` to control the output of the reference type and carrier identifier like [J/OL] (This option is also for author year style): + + `gbtype = true` for gb7714 style, print a title with the identifier, like: `an on-line article [J/OL]`, this is the default setting. + + `gbtype = false` for none identifier, print a title without identifier, like: `an on-line article` + + `\usepackage[backend=biber,style=gb7714-2015,gbtype=true]{biblatex}` + + - add an option `gbfieldtype` to control the output of field type: + + `gbfieldtype = true` to print type field, like the thesis type: `PHD thesis` or `博士学位论文`。please use `\DefineBibliographyStrings{english}{mathesis={str you want}}`,`\DefineBibliographyStrings{english}{phdthesis={str you want}}`, + `\DefineBibliographyStrings{english}{mathesiscn={str you want}}`,`\DefineBibliographyStrings{english}{phdthesiscn={str you want}}` to + define the output string, or set it in bibfile like: `type={str you want},` + + `gbfieldtype = false` not to print type field. + + `\usepackage[backend=biber,style=gb7714-2015,gbfieldtype=true]{biblatex}` + + - add an option `gbpunctin` to control the output of `//` before bookauthor for entrytypes like inbook/incollection/inproceedings(This option is also for author year style): + + `gbpunctin=true` for gb7714 style, to output `//`, this is the default setting + + `gbpunctin=false` for standard style, to output a bibstring, for English it is `IN:`, If you want to eliminate it at all, please redefine the bibstring like `\DefineBibliographyStrings{english}{in={}}` and `\DefineBibliographyStrings{english}{incn={}}`in the preamble. + + `\usepackage[backend=biber,style=gb7714-2015,gbpunctin=true]{biblatex}` + + - add an option `gbctexset` to control the bibliography heading's setting method (This option is also for author year style): + + `gbctexset=true` , the bibliography heading can be set by `\bibname` or `\refname`, this is the default setting. + + `gbpunctin=false`, the heading can be set by bibstring like `\DefineBibliographyStrings{english}{bibliography={title you want}}` or `\DefineBibliographyStrings{english}{references={title you want}}` + + or alternatively, it can also be set through the printbibliography option `title`, like `printbibliography[title=title you want]`. + + `\usepackage[backend=biber,style=gb7714-2015,gbctexset=true]{biblatex}` + + - add an option `gbcodegbk` to deal the tex source file encoded with GBK (This option is also for author year style): + + `gbcodegbk=true` , if you want to compile the GBK encoded source file with pdflatex or latex + + `gbcodegbk=false`, if you want to compile the utf-8 endcoded source file with xelatex, this is the default setting. + + `\usepackage[backend=biber,style=gb7714-2015,gbcodegbk=true]{biblatex}` + + - add an option `gbtitlelink` to control the hyperlink of title field (This option is also for author year style): + + `gbtitlelink = false` not to add hyperlink, this is the default setting. + + `gbtitlelink = true` to set the title as a hyperlink. + + `\usepackage[backend=biber,style=gb7714-2015,gbtitlelink=true]{biblatex}` + + - add an option `gbfootbib` to control the bibliography in footnote (This option is also for author year style): + + `gbfootbib = true` make patches to match the standard, this is the default setting. + + `gbfootbib = false` not to patch. + + `\usepackage[backend=biber,style=gb7714-2015,gbtitlelink=true]{biblatex}` + + - add options `gbcitelocal` `gbbiblocal` to control the local strings in citation and bibliography respectively, the `gblocal` set the both options (These options are also for author year style): + + `gbcitelocal = gb7714-2015` to output local strings according to the reference's language, this is the default setting. + + `gbcitelocal = chinese` to output local strings with chinese language word like "等". + + `gbcitelocal = english` to output local strings with western language word like "et al.". + + `\usepackage[backend=biber,style=gb7714-2015,gbcitelocal = chinese]{biblatex}` + + - add an option `gbstrict` to control the output of some unnecessary fields for GB/T7714-2015 (This option is also for author year style). + + `gbstrict=true`, not to print those fields such as language, eprint, this is the default setting. + + `gbstrict=false`, to output them as the standard style + + `\usepackage[backend=biber,style=gb7714-2015,gbstrict=true]{biblatex}` + + - add an option `gbfieldstd` to control the format of some fields such as title, url and pages (This option is also for author year style): + + `gbfieldstd = false` for gb7714 style, format of the fields follows the GB/T7714-2015 standard, this is the default setting. + + `gbfieldstd = true` for standard style. + + `\usepackage[backend=biber,style=gb7714-2015,gbfieldstd=true]{biblatex}` + + +* for multi-style: gb7714-2015ms + + In order to use two styles in a tex file, add a style gb7714-2015ms. option `gbstyle` is added to control the using mode. `gbstyle=true` means all references are printed with GB/T7714-2015 style, and `gbstyle=false` means the chinese references are printed with GB/T7714-2015 style while the other references are printed with standard style shipped by biblatex, and `gbstyle=true` is the default set. all the options for numerical sequence style gb7714-2015 can also be used in gb7714-2015ms. + + + `\usepackage[backend=biber,style=gb7714-2015ms,gbstyle=false]{biblatex}` + +* for author year style: gb7714-2015ay + + `\usepackage[backend=biber,style=gb7714-2015ay,gbpub=true]{biblatex}` + + - add an option `gbnoauthor` for dealing undefined author: + + `gbnoauthor = true` for gb7714 style, to print `佚名` or `Anon` when the author of the entry is absent. + + `gbnoauthor = false` for standard style, not to pring anything, this is the default setting. + + `\usepackage[backend=biber,style=gb7714-2015ay,gbnoauthor=true]{biblatex}` + + - add an option value `mergedate=none` to control the date in bibliography: + + `mergedate=true` to output date only after author,like:LAMPORT L, (1986). Document Preparation System[M]. [S.l.]: Addison-Wesley Reading, MA. + + `mergedate=false` to output date after author and in publish items,like:LAMPORT L, (1986). Document Preparation System[M]. [S.l.]: Addison-Wesley Reading, MA, 1986. + + `mergedate=none` to output date only in publish items,like:LAMPORT L. Document Preparation System[M]. [S.l.]: Addison-Wesley Reading, MA, 1986. + + do not set mergedate output like:LAMPORT L, 1986. Document Preparation System[M]. [S.l.]: Addison-Wesley Reading, MA. + + `\usepackage[backend=biber,style=gb7714-2015ay,mergedate=none]{biblatex}` + + - add an option `gblanorder` to control sequence of reference groups of different languagesin the bibliography: + + `gblanorder=chineseahead` to set the sequence as: cn;jp;kr;en;fr;ru + + `gblanorder=englishahead` to set the sequence as: en;fr;ru;cn;jp;kr + + `gblanorder=user defined string like: cn;en;jp;kr;fr;ru` to set the sequence as: cn;en;jp;kr;fr;ru. + + `\usepackage[backend=biber,style=gb7714-2015ay,gblanorder=cn;en;jp;fr;kr;ru]{biblatex}` + +* for perl script transformation tool(only for the numerical style) + + `perl gb7714texttobib.pl in=textfilename out=bibfilename` + +A demonstration database is provided to show how to format input for the style. The biblatex-gb7714-2015 style works with texlive2014, texlive2015, texlive2016, texlive2017 , texlive2018 and so on. + +please see the file 'biblatex-gb7714-2015.pdf' for further information! + + +## Version 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 +* 2018/01/20 v1.0j +* 2018/04/03 v1.0k +* 2018/06/01 v1.0l +* 2018/08/14 v1.0m,CTAN +* 2018/11/04 v1.0n +* 2018/12/22 v1.0o +* 2019/01/19 v1.0p +* 2019/02/11 v1.0q +* 2019/03/28 v1.0r +* 2019/03/29 v1.0rm,rename erj to chinese-erj,ctan +* 2019/08/28 v1.0s +* 2020/03/04 v1.0t,ctan +* 2020/03/30 v1.0u +* 2020/07/21 v1.0v,ctan +* 2021/01/19 v1.0w,ctan + + + +--------------------------------------------------------- +## Update history: + +[update: tex](example/updatehistory.tex) + +[update: tex](example/updatehistoryold.tex) + + + diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015-preamble.tex b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015-preamble.tex index 89a481574e..bca0153d42 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015-preamble.tex +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015-preamble.tex @@ -1,431 +1,431 @@ -\usepackage{expl3,etoolbox,ifthen,xstring} -\usepackage{xltxtra,mflogo,texnames,fontawesome} -%\usepackage{amstext} -\usepackage[zihao=-4]{ctex} -\ctexset{today=old} -\let\kaiti=\kaishu -\usepackage{xeCJKfntef} -%\setmainfont{CMU Serif} -\usepackage{fontspec} -%\usepackage{tgpagella} -\setmainfont[Ligatures=TeX]{TeX Gyre Pagella} -\setsansfont[Ligatures=TeX]{TeX Gyre Pagella} -\setmonofont[Ligatures=TeX]{TeX Gyre Pagella} -%\usepackage{unicode-math} -%\setmathfont[math-style=ISO,bold-style=ISO]{TeX Gyre Pagella Math} - -\setmainfont{CMU Serif} -\IfFileExists{SourceHanSerifSC-Regular.otf} -{\setCJKmainfont[BoldFont=SourceHanSansSC-Regular.otf, ItalicFont=simkai.ttf]{SourceHanSerifSC-Regular.otf}}{} - -\usepackage[dvipsnames]{xcolor} -\colorlet{examplefill}{yellow!80!black} -\definecolor{graphicbackground}{rgb}{0.96,0.96,0.8} -\definecolor{codebackground}{rgb}{0.9,0.9,1} -\definecolor{gbsteelblue}{RGB}{70,130,180} -\definecolor{gborange}{RGB}{255,138,88} -\definecolor{gbblue}{RGB}{23,74,117} -\definecolor{gbforestgreen}{RGB}{21,122,81} -\definecolor{gbyellow}{RGB}{255,185,88} -\definecolor{gbgrey}{RGB}{200,200,200} -\colorlet{gblabelcolor}{violet} -\colorlet{gbemphcolor}{blue!60!black} -%\colorlet{gbemphcolor}{violet} - -%定义版面,showframe, -\usepackage[paperwidth=210mm,paperheight=290mm,left=35mm,right=20mm,top=25mm, bottom=20mm,showcrop]{geometry}%,showframe -\renewcommand{\baselinestretch}{1.35} -%页面布局的标尺 -\usepackage[type=none]{fgruler} -%[unit=cm,type=lowerleft,showframe=true,hshift=3cm,vshift=2cm] -\rulerparams{}{}{gray!10}{}{0.2pt} -\fgrulerdefnum{}\fgrulercaptioncm{}%fgruler加数字后,导致基线对齐出现问题,所以这里去掉 - -\newlength{\skipheadrule} -\deflength{\skipheadrule}{3.5pt} -\newlength{\skipfootrule} -\deflength{\skipfootrule}{5.5pt} -\newlength{\ruletotalen} -\deflength{\ruletotalen}{\textheight} -\newlength{\ruleraised} -\deflength{\ruleraised}{\headsep+\textheight} -\usepackage{fancyhdr} -\fancyhf{} -%\fancyhead[LO]{% -%\raisebox{-\skipheadrule}{% -%\raisebox{-\headsep}[0pt][0pt]{\makebox[0pt][l]{\ruler{rightup}{\linewidth}}}% -%\raisebox{-\ruleraised}[0pt][0pt]{\makebox[0pt][r]{\ruler{upleft}{\ruletotalen}}}% -%}%HEAD LEFT% -%} -%\fancyhead[LE]{% -%\raisebox{-\skipheadrule}{% -%\raisebox{-\headsep}[0pt][0pt]{\makebox[0pt][l]{\ruler{rightup}{\linewidth}}}% -%\raisebox{-\ruleraised}[0pt][0pt]{\makebox[0pt][r]{\ruler{upleft}{\ruletotalen}}}% -%}\leftmark%HEAD LEFT% -%} -%\fancyhead[RO]{% -%%HEAD RIGHT% -%\raisebox{-\skipheadrule}{% -%\hfill\makebox[0pt][l]{\raisebox{-\ruleraised}[0pt][0pt]{\ruler{downright}{\ruletotalen}}\hss}% -%}} -%\fancyhead[RE]{% -%\rightmark%HEAD RIGHT% -%\raisebox{-\skipheadrule}{% -%\hfill\makebox[0pt][l]{\raisebox{-\ruleraised}[0pt][0pt]{\ruler{downright}{\ruletotalen}}\hss}% -%}} -\fancyhead[CO]{% -符合GB/T 7714-2015标准的biblatex参考文献样式%HEAD CENTER -} -%\fancyfoot[L]{% -%\raisebox{-\skipfootrule}{% -%\raisebox{\footskip}[0pt][0pt]{\makebox[0pt][l]{\ruler{rightdown}{\linewidth}}} -%}%FOOT LEFT -%} -\fancyfoot[C]{% -\thepage%FOOT CENTER -} -\fancyfoot[R]{% -%FOOT RIGHT -} -\renewcommand{\headrulewidth}{0.4pt} -\renewcommand{\footrulewidth}{0pt} -\pagestyle{fancy} - - -%超链接书签功能,选项去掉链接红色方框 -\usepackage[colorlinks=true,% -pdfstartview=FitH,allcolors=gbemphcolor, -bookmarksopenlevel=4,% -bookmarksdepth=4,]{hyperref} -%linkcolor=gbblue,anchorcolor=gbblue,citecolor=gbblue -%linkcolor=black,linkcolor=green,blue,red,cyan, magenta, -%yellow, black, gray,white, darkgray, lightgray, brown, -%lime, olive, orange, red,purple, teal, violet. -%CJKbookmarks,bookmarksnumbered=true, -\usepackage{titleref} %标题引用 - -%标题格式设置 -\usepackage{titlesec} -%\titlespacing*{hcommandi}{hlefti}{hbefore-sepi}{hafter-sepi}[hright-sepi] -\titlespacing*{\section}{0pt}{\baselineskip}{0.5\baselineskip} -\titlespacing*{\subsection}{0pt}{0.5\baselineskip}{0.5\baselineskip} -\titlespacing*{\subsubsection}{0pt}{0.5\baselineskip}{0pt} -\titlespacing{\paragraph}{2em}{0.5\baselineskip}{1em} -%这里利用titleformat*简单做设置,也可以利用titleformat做详细设置 -\titleformat*{\section}{\zihao{-3}\bfseries\heiti} -\titleformat*{\subsection}{\zihao{4}\bfseries\songti} -\titleformat*{\subsubsection}{\zihao{-4}\bfseries\kaiti} - -%参考文献 -\usepackage[backend=biber,style=gb7714-2015,gbalign=center,gbfootbib=true%,gbtype=true% -]{biblatex}%,backref=true% -\addbibresource[location=local]{example.bib} -\setlength{\bibitemsep}{1pt} -%\defbibheading{bibliography}[\bibname]{% -%%\phantomsection%解决链接指引出错的问题,相当于加入了一个引导点 -%%\addcontentsline{toc}{subsection}{#1} -% \centering\subsubsection*{#1}}% - - -%目录,图/表/例目录,图表题注 -\usepackage[bf]{subfigure} -\usepackage[subfigure]{tocloft} %注意其与titletoc共用时分页会有问题 -\usepackage{ccaption} -\captiondelim{. } %图序图题中间的间隔符号 -\captionnamefont{\zihao{-5}\heiti} %图序样式 -\captiontitlefont{\zihao{-5}\heiti} %图题样式 -\captionwidth{0.8\linewidth} %标题宽度 -\changecaptionwidth -\captionstyle{\centering} %\captionstyle{ - - - - -
-

BibLaTeX Check

-
- -
- - - - - - -
-
-
-
-""") - html.write("

Info

    ") - html.write("
  • bib file: " + options.bibFile + "
  • ") - html.write("
  • aux file: " + options.auxFile + "
  • ") - html.write("
  • # entries: " + str(len(problems)) + "
  • ") - html.write("
  • # problems: " + str(problemCount) + "
    • ") - html.write("
    • # missing fields: " + str(counterMissingFields) + "
    • ") - html.write("
    • # flawed names: " + str(counterFlawedNames) + "
    • ") - html.write("
    • # wrong types: " + str(counterWrongTypes) + "
    • ") - html.write("
    • # non-unique id: " + str(counterNonUniqueId) + "
    • ") - html.write("
    • # wrong field: " + str(counterWrongFieldNames) + "
    • ") - html.write("
") - - problems.sort() - for problem in problems: - html.write(problem) - html.write("") - html.close() - - if options.view: - import webbrowser - webbrowser.open(html.name) - - print("SUCCESS: Report {} has been generated".format(options.htmlOutput)) - -if problemCount > 0: - print("WARNING: Found {} problems.".format(problemCount)) - sys.exit(-1) diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-erj.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-erj.bbx index dbb03b854a..161dcacd8b 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-erj.bbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-erj.bbx @@ -1,237 +1,237 @@ -%% -%% --------------------------------------------------------------- -%% erj.bbx --- A bibliography style of Economic Research Journal in china -%% modified from gb7714-2015ay at the request of ddswhu -%% Maintained by huzhenzhen -%% E-mail: hzzmail@163.com -%% Released under the LaTeX Project Public License v1.3c or later -%% --------------------------------------------------------------- -%% -%%用法:类似于标准的样式在biblatex加载时设置样式 -%%文献表正常处理,标注命令主要用cite和textcite -\ProvidesFile{chinese-erj.bbx}[2019/03/28 v1.0 a biblatex bibliography style for ERJ] - - -%================================================== -%加载gb样式 -%================================================== -\RequireBibliographyStyle{gb7714-2015ay} -\RequirePackage{mfirstuc}%单词首字母大写的问题 -\MFUnocap{in}% -\MFUnocap{the}% -\MFUnocap{of}% -\MFUnocap{on}% -\MFUnocap{and}% -\MFUnocap{for}% - - -%================================================== -%考虑多音字增加multipinyin排序,是其可以根据key域添加拼音来排序 -%================================================== -\DeclareSortingTemplate{multipinyin}{ - \sort{ - \field{presort} - } - \sort{ - \field{lansortorder}%language - } - \sort{ - \field{sortkey} - } - \sort{%[direction=descending] - \field{sortname} - \field{author} - \field{editor} - \field{translator} - } - \sort{ - \field{sortyear} - \field{year} - } - \sort{ - \field{sorttitle} - \field{title} - } - \sort{ - \field{volume} - \literal{0} - } - } - -%================================================== -%选项设置 -%================================================== - \ExecuteBibliographyOptions{ - maxbibnames=99, - gbtype=false, - gbpub=false, - gbnamefmt=reverseorder, - sorting=multipinyin, - doi=false, - url=false, - } - -%================================================== -%为标注和文献表中标点格式,重设and本地化字符串 -%================================================== -\DefineBibliographyStrings{english}{ - and = { and},%and后面的空格在finalnamedelim已经加过了,所以这里去掉20191009 - andcn = {、}, - andincitecn = {和},%将标注中的分开,便于与文献表中的区分 - andincite = {\&}, - %andotherscn={等}, - %mathesiscn={[硕士学位论文]}, - %phdthesiscn={[博士学位论文]}, -} - - -%================================================== -%设置一些标点格式为中文的标点 -%================================================== -\DeclareFieldFormat{titlecase}{\iffieldequalstr{userd}{chinese}{#1}{\capitalisewords{#1}}} -\DeclareFieldFormat*{title}{\iffieldequalstr{userd}{chinese}{《#1》}{#1\isdot}} -\DeclareFieldFormat[article]{title}{\iffieldequalstr{userd}{chinese}{《#1》}{\mkbibquote{#1}\isdot}} -\DeclareFieldFormat*{journaltitle}{\iffieldequalstr{userd}{chinese}{《#1》}{\textit{#1}}}% -%\DeclareFieldFormat*{booktitle}{《#1》} -\renewcommand*{\revsdnamepunct}{,}%%来源biblatex.def -\DeclareDelimFormat*{multinamedelim}{\iffieldequalstr{userd}{chinese}{、}{,}}%\addcomma\addspace -\DeclareDelimFormat{finalnamedelim}{% - %\ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}% - %\addspace% - \edef\userfieldabcde{userd}% - \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% - \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% - \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% - \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% - \ifcase\value{gbcitelocalcase}% - \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andincitecn}}{}% - \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andkr}}{}% - \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andjp}}{}% - \iffieldequalstr{\userfieldabcde}{english}{\space\bibstring{andincite}\space}{}% - \iffieldequalstr{\userfieldabcde}{french}{\bibstring{and}}{}% - \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{and}}{}% -%\space% - \or% - \bibstring{andincitecn}\space% - \or% - \bibstring{andincite}\space% - \fi} -\DeclareDelimFormat[bib,biblist]{finalnamedelim}{% -% \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}% -% \addspace% - \edef\userfieldabcde{userd}% - \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% - \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% - \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% - \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% - \ifcase\value{gbbiblocalcase}% - \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andcn}}{}% - \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andkr}}{}% - \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andjp}}{}% - \iffieldequalstr{\userfieldabcde}{english}{\bibstring{and}}{}% - \iffieldequalstr{\userfieldabcde}{french}{\bibstring{and}}{}% - \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{and}}{}% -\space% - \or% - \bibstring{andcn}\space% - \or% - \bibstring{and}\space% - \fi} -\DeclareDelimFormat{nameyeardelim}{,}%\addcomma\addspace -\DeclareDelimFormat[bib,biblist]{nameyeardelim}{,}%\addcomma\addspace -\DeclareDelimFormat{bibpagespunct}{\iffieldequalstr{userd}{chinese}{}{,}}%\addcomma\addspace -\renewcommand*{\newunitpunct}{,}%\addcomma\space %, -\renewcommand*{\finentrypunct}{\iffieldequalstr{userd}{chinese}{。}{\adddot}} - -%================================================== -%调整部分域的输出格式 -%================================================== -% -% 修改number和volume的格式 -% -\newcounter{numberwithoutzero} -\DeclareFieldFormat[article,periodical]{number}% - {\iffieldequalstr{userd}{chinese}{% - \iffieldint{number}{\setcounter{numberwithoutzero}{#1}\printtext{\bibstring{serialcn}\addthinspace\arabic{numberwithoutzero}\addthinspace 期}} - {\printtext{\bibstring{serialcn}\addthinspace#1\addthinspace 期}}% - }% - {\printtext{(}#1\printtext{)}}}% % -\DeclareFieldFormat[article,periodical]{volume}% - {\iffieldequalstr{userd}{chinese}{}% - {#1}}% volume of a book - -% -% 调整期刊名的格式 -% -% 原理方法:因为作者年制年份提到前面,因此涉及到期刊名与后面的卷期的关系。 -% v1.0k,20180425,增加了字体控制命令,hzz -\renewbibmacro*{journal+issuetitle}{\bibpubfont%源来自standard.bbx - \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}% - %\iffieldundef{volume}{}{\setunit{\addcomma\space}}% - %换成逗号和空格 - \usebibmacro{issue}% - \usebibmacro{volume+number+eid}%把卷期放到年份后面 - %\newunit - } - -% 调整期刊卷和期的格式 -% -\renewbibmacro*{volume+number+eid}{%源来自standard.bbx -\iffieldequalstr{userd}{chinese}{%\printfield{volume}% - \iffieldundef{number}{}{\printfield{number}}%区别于顺序编码制 - } - {\newunit\printfield{volume}% - %\setunit*{\adddot\space}% - \printfield{number}% - \setunit{\addcomma\space}% - \printfield{eid}}} - -% -% 重设title的输出 -% -% 20180425,v1.0k,为标题增加字体控制命令,Hu Zhenzhen -% 原理方法:将文献类型标识符输出出去,原输出来自biblatex.def文件 -% 利用toggle做标识符是否输出的判断 -\renewbibmacro*{title}{% - \ifboolexpr{% - test{\iffieldundef{title}}% - and - test{\iffieldundef{subtitle}}% - }% - {}% - {\setunit{:}\printtext[title]{\bibtitlefont%增加字体控制命令%增加了标点: - \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 - }% -}} - -\DeclareFieldFormat{pages}{\iffieldequalstr{userd}{chinese}{}{#1}}%页码引用格式的修改%去掉前面引导页码的pp.等字符 - -\setlength{\bibitemindent}{1.5\ccwd} % bibitemindent表示一条文献中第一行相对后面各行的缩进 -\setlength{\bibhang}{0pt} % 作者年制中 bibhang 表示的各行起始位置到页 - % 边的距离,顺序编码制中 - % bibhang+labelnumberwidth 表示各行起始位置 - % 到页边的距离 +%% +%% --------------------------------------------------------------- +%% erj.bbx --- A bibliography style of Economic Research Journal in china +%% modified from gb7714-2015ay at the request of ddswhu +%% Maintained by huzhenzhen +%% E-mail: hzzmail@163.com +%% Released under the LaTeX Project Public License v1.3c or later +%% --------------------------------------------------------------- +%% +%%用法:类似于标准的样式在biblatex加载时设置样式 +%%文献表正常处理,标注命令主要用cite和textcite +\ProvidesFile{chinese-erj.bbx}[2019/03/28 v1.0 a biblatex bibliography style for ERJ] + + +%================================================== +%加载gb样式 +%================================================== +\RequireBibliographyStyle{gb7714-2015ay} +\RequirePackage{mfirstuc}%单词首字母大写的问题 +\MFUnocap{in}% +\MFUnocap{the}% +\MFUnocap{of}% +\MFUnocap{on}% +\MFUnocap{and}% +\MFUnocap{for}% + + +%================================================== +%考虑多音字增加multipinyin排序,是其可以根据key域添加拼音来排序 +%================================================== +\DeclareSortingTemplate{multipinyin}{ + \sort{ + \field{presort} + } + \sort{ + \field{lansortorder}%language + } + \sort{ + \field{sortkey} + } + \sort{%[direction=descending] + \field{sortname} + \field{author} + \field{editor} + \field{translator} + } + \sort{ + \field{sortyear} + \field{year} + } + \sort{ + \field{sorttitle} + \field{title} + } + \sort{ + \field{volume} + \literal{0} + } + } + +%================================================== +%选项设置 +%================================================== + \ExecuteBibliographyOptions{ + maxbibnames=99, + gbtype=false, + gbpub=false, + gbnamefmt=reverseorder, + sorting=multipinyin, + doi=false, + url=false, + } + +%================================================== +%为标注和文献表中标点格式,重设and本地化字符串 +%================================================== +\DefineBibliographyStrings{english}{ + and = { and},%and后面的空格在finalnamedelim已经加过了,所以这里去掉20191009 + andcn = {、}, + andincitecn = {和},%将标注中的分开,便于与文献表中的区分 + andincite = {\&}, + %andotherscn={等}, + %mathesiscn={[硕士学位论文]}, + %phdthesiscn={[博士学位论文]}, +} + + +%================================================== +%设置一些标点格式为中文的标点 +%================================================== +\DeclareFieldFormat{titlecase}{\iffieldequalstr{userd}{chinese}{#1}{\capitalisewords{#1}}} +\DeclareFieldFormat*{title}{\iffieldequalstr{userd}{chinese}{《#1》}{#1\isdot}} +\DeclareFieldFormat[article]{title}{\iffieldequalstr{userd}{chinese}{《#1》}{\mkbibquote{#1}\isdot}} +\DeclareFieldFormat*{journaltitle}{\iffieldequalstr{userd}{chinese}{《#1》}{\textit{#1}}}% +%\DeclareFieldFormat*{booktitle}{《#1》} +\renewcommand*{\revsdnamepunct}{,}%%来源biblatex.def +\DeclareDelimFormat*{multinamedelim}{\iffieldequalstr{userd}{chinese}{、}{,}}%\addcomma\addspace +\DeclareDelimFormat{finalnamedelim}{% + %\ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}% + %\addspace% + \edef\userfieldabcde{userd}% + \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% + \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% + \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% + \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% + \ifcase\value{gbcitelocalcase}% + \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andincitecn}}{}% + \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andkr}}{}% + \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andjp}}{}% + \iffieldequalstr{\userfieldabcde}{english}{\space\bibstring{andincite}\space}{}% + \iffieldequalstr{\userfieldabcde}{french}{\bibstring{and}}{}% + \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{and}}{}% +%\space% + \or% + \bibstring{andincitecn}\space% + \or% + \bibstring{andincite}\space% + \fi} +\DeclareDelimFormat[bib,biblist]{finalnamedelim}{% +% \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}% +% \addspace% + \edef\userfieldabcde{userd}% + \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% + \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% + \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% + \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% + \ifcase\value{gbbiblocalcase}% + \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andcn}}{}% + \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andkr}}{}% + \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andjp}}{}% + \iffieldequalstr{\userfieldabcde}{english}{\bibstring{and}}{}% + \iffieldequalstr{\userfieldabcde}{french}{\bibstring{and}}{}% + \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{and}}{}% +\space% + \or% + \bibstring{andcn}\space% + \or% + \bibstring{and}\space% + \fi} +\DeclareDelimFormat{nameyeardelim}{,}%\addcomma\addspace +\DeclareDelimFormat[bib,biblist]{nameyeardelim}{,}%\addcomma\addspace +\DeclareDelimFormat{bibpagespunct}{\iffieldequalstr{userd}{chinese}{}{,}}%\addcomma\addspace +\renewcommand*{\newunitpunct}{,}%\addcomma\space %, +\renewcommand*{\finentrypunct}{\iffieldequalstr{userd}{chinese}{。}{\adddot}} + +%================================================== +%调整部分域的输出格式 +%================================================== +% +% 修改number和volume的格式 +% +\newcounter{numberwithoutzero} +\DeclareFieldFormat[article,periodical]{number}% + {\iffieldequalstr{userd}{chinese}{% + \iffieldint{number}{\setcounter{numberwithoutzero}{#1}\printtext{\bibstring{serialcn}\addthinspace\arabic{numberwithoutzero}\addthinspace 期}} + {\printtext{\bibstring{serialcn}\addthinspace#1\addthinspace 期}}% + }% + {\printtext{(}#1\printtext{)}}}% % +\DeclareFieldFormat[article,periodical]{volume}% + {\iffieldequalstr{userd}{chinese}{}% + {#1}}% volume of a book + +% +% 调整期刊名的格式 +% +% 原理方法:因为作者年制年份提到前面,因此涉及到期刊名与后面的卷期的关系。 +% v1.0k,20180425,增加了字体控制命令,hzz +\renewbibmacro*{journal+issuetitle}{\bibpubfont%源来自standard.bbx + \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}% + %\iffieldundef{volume}{}{\setunit{\addcomma\space}}% + %换成逗号和空格 + \usebibmacro{issue}% + \usebibmacro{volume+number+eid}%把卷期放到年份后面 + %\newunit + } + +% 调整期刊卷和期的格式 +% +\renewbibmacro*{volume+number+eid}{%源来自standard.bbx +\iffieldequalstr{userd}{chinese}{%\printfield{volume}% + \iffieldundef{number}{}{\printfield{number}}%区别于顺序编码制 + } + {\newunit\printfield{volume}% + %\setunit*{\adddot\space}% + \printfield{number}% + \setunit{\addcomma\space}% + \printfield{eid}}} + +% +% 重设title的输出 +% +% 20180425,v1.0k,为标题增加字体控制命令,Hu Zhenzhen +% 原理方法:将文献类型标识符输出出去,原输出来自biblatex.def文件 +% 利用toggle做标识符是否输出的判断 +\renewbibmacro*{title}{% + \ifboolexpr{% + test{\iffieldundef{title}}% + and + test{\iffieldundef{subtitle}}% + }% + {}% + {\setunit{:}\printtext[title]{\bibtitlefont%增加字体控制命令%增加了标点: + \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 + }% +}} + +\DeclareFieldFormat{pages}{\iffieldequalstr{userd}{chinese}{}{#1}}%页码引用格式的修改%去掉前面引导页码的pp.等字符 + +\setlength{\bibitemindent}{1.5\ccwd} % bibitemindent表示一条文献中第一行相对后面各行的缩进 +\setlength{\bibhang}{0pt} % 作者年制中 bibhang 表示的各行起始位置到页 + % 边的距离,顺序编码制中 + % bibhang+labelnumberwidth 表示各行起始位置 + % 到页边的距离 diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-erj.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-erj.cbx index 7fd829a0ee..53bb2e1177 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-erj.cbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-erj.cbx @@ -1,151 +1,151 @@ -%% -%% --------------------------------------------------------------- -%% erj.cbx --- A citation style of Economic Research Journal in china -%% modified from gb7714-2015ay for the request by ddswhu -%% Maintained by huzhenzhen -%% E-mail: hzzmail@163.com -%% Released under the LaTeX Project Public License v1.3c or later -%% --------------------------------------------------------------- -%% -%%用法:类似于标准的样式在biblatex加载时设置样式 -%%文献表正常处理,标注命令主要用cite和textcite - -\ProvidesFile{chinese-erj.cbx}[2019/03/28 v1.0 a biblatex citation style for ERJ] - -%================================================== -%加载gb样式 -%================================================== -\RequireCitationStyle{gb7714-2015ay} % - - - -%================================================== -%选项设置 -%================================================== -\ExecuteBibliographyOptions{ - maxcitenames=2, - mincitenames=1, -} - -%================================================== -%引用命令设置,主要用cite和textcite -%包括标点设置 -%================================================== -\renewcommand*{\multicitedelim}{;}%\addsemicolon\addspace; -\renewcommand*{\textcitedelim}{% - \iffinalcitedelim - {\ifnumgreater{\value{textcitetotal}}{2} - {}{}%\iftextcitepunct{\finalandsemicolon}{\finalandcomma} - \addspace 、}%\addspace\bibstring{andincitecn} - {\iftextcitepunct{\addsemicolon\space}{\addspace 、}}%\addcomma -}%\space - -\DeclareDelimFormat[textcite]{nameyeardelim}{\addspace}%\addcomma\space -\DeclareDelimFormat[textcite]{andothersdelim}{\iffieldequalstr{userf}{chinese}{}{\addspace}}% - -%之所以不用\DeclareDelimFormat{andothersdelim}{}这样的设置是因为gb7714-2015中为兼容老版本的biblatex做的处理就是这样的 -%所以用相同的方式 -\AtEveryCitekey{% -\iffieldequalstr{userf}{chinese}{\renewcommand*{\andothersdelim}{}}%\addthinspace - {\renewcommand*{\andothersdelim}{\addspace}}% -} - -%标注压缩时,直接用date+extradate代替extradate实现2006a,2006b的效果 -%\DeclareDelimFormat*{compcitedelim}{、}%\addcomma\addspace -\newbibmacro*{cite:extradate}{% - \iffieldundef{extradate} - {} - {\printtext[bibhyperref]{\addspace\printlabeldateextra}}}%\printfield{extradate}\printlabeldateextra \printfield{labelyear}\printfield{extradate} - -%\AtEveryCite{% -%\let\parentext=\parentexttrack% -%\let\bibopenparen=(% -%\let\bibcloseparen=)} - -%添加前后空格 -\DeclareCiteCommand{\cite}%[\mkbibparens] - {\usebibmacro{cite:init}% - \printtext{(}\usebibmacro{prenote}}%)\addspace - {\usebibmacro{citeindex}% - \usebibmacro{cite}} - {} - {\usebibmacro{postnote}%( - )}%\addspace - -%原版 -%\DeclareCiteCommand{\cite}[\mkbibparens] -% {\usebibmacro{cite:init}% -% \usebibmacro{prenote}}%) -% {\usebibmacro{citeindex}% -% \usebibmacro{cite}} -% {} -% {\usebibmacro{postnote}} - -% -%添加后面空格 -%\DeclareCiteCommand{\cbx@textcite} -% {\usebibmacro{cite:init}} -% {\usebibmacro{citeindex}% -% \usebibmacro{textcite}} -% {} -% {\usebibmacro{textcite:postnote}\addspace} - -\newbibmacro*{textcite}{% - \iffieldequals{namehash}{\cbx@lasthash} - {\iffieldundef{shorthand} - {\ifthenelse{\iffieldequals{labelyear}{\cbx@lastyear}\AND - \(\value{multicitecount}=0\OR\iffieldundef{postnote}\)} - {\setunit{\addcomma}% - \usebibmacro{cite:extradate}} - {\setunit{\compcitedelim}% - \usebibmacro{cite:labeldate+extradate}% - \savefield{labelyear}{\cbx@lastyear}}} - {\setunit{\compcitedelim}% - \usebibmacro{cite:shorthand}% - \global\undef\cbx@lastyear}} - {\ifnameundef{labelname} - {\iffieldundef{shorthand} - {\usebibmacro{cite:label}% - \setunit{% - \global\booltrue{cbx:parens}% - \printdelim{nonameyeardelim}(}%\bibopenparen - \ifnumequal{\value{citecount}}{1} - {\usebibmacro{prenote}} - {}% - \usebibmacro{cite:labeldate+extradate}} - {\usebibmacro{cite:shorthand}}} - {\printnames{labelname}% - \setunit{% - \global\booltrue{cbx:parens}% - \printdelim{nameyeardelim}(}%\bibopenparen - \ifnumequal{\value{citecount}}{1} - {\usebibmacro{prenote}} - {}% - \iffieldundef{shorthand} - {\iffieldundef{labelyear} - {\usebibmacro{cite:label}} - {\usebibmacro{cite:labeldate+extradate}}% - \savefield{labelyear}{\cbx@lastyear}} - {\usebibmacro{cite:shorthand}% - \global\undef\cbx@lastyear}}% - \stepcounter{textcitecount}% - \savefield{namehash}{\cbx@lasthash}}% - \setunit{% - \ifbool{cbx:parens} - {)\global\boolfalse{cbx:parens}}%\bibcloseparen - {}% - \textcitedelim}} - -\newbibmacro*{textcite:postnote}{% - \usebibmacro{postnote}% - \ifthenelse{\value{multicitecount}=\value{multicitetotal}} - {\setunit{}% - \printtext{% - \ifbool{cbx:parens} - {)\global\boolfalse{cbx:parens}}%\bibcloseparen - {}}} - {\setunit{% - \ifbool{cbx:parens} - {)\global\boolfalse{cbx:parens}}%\bibcloseparen - {}% - \textcitedelim}}} +%% +%% --------------------------------------------------------------- +%% erj.cbx --- A citation style of Economic Research Journal in china +%% modified from gb7714-2015ay for the request by ddswhu +%% Maintained by huzhenzhen +%% E-mail: hzzmail@163.com +%% Released under the LaTeX Project Public License v1.3c or later +%% --------------------------------------------------------------- +%% +%%用法:类似于标准的样式在biblatex加载时设置样式 +%%文献表正常处理,标注命令主要用cite和textcite + +\ProvidesFile{chinese-erj.cbx}[2019/03/28 v1.0 a biblatex citation style for ERJ] + +%================================================== +%加载gb样式 +%================================================== +\RequireCitationStyle{gb7714-2015ay} % + + + +%================================================== +%选项设置 +%================================================== +\ExecuteBibliographyOptions{ + maxcitenames=2, + mincitenames=1, +} + +%================================================== +%引用命令设置,主要用cite和textcite +%包括标点设置 +%================================================== +\renewcommand*{\multicitedelim}{;}%\addsemicolon\addspace; +\renewcommand*{\textcitedelim}{% + \iffinalcitedelim + {\ifnumgreater{\value{textcitetotal}}{2} + {}{}%\iftextcitepunct{\finalandsemicolon}{\finalandcomma} + \addspace 、}%\addspace\bibstring{andincitecn} + {\iftextcitepunct{\addsemicolon\space}{\addspace 、}}%\addcomma +}%\space + +\DeclareDelimFormat[textcite]{nameyeardelim}{\addspace}%\addcomma\space +\DeclareDelimFormat[textcite]{andothersdelim}{\iffieldequalstr{userf}{chinese}{}{\addspace}}% + +%之所以不用\DeclareDelimFormat{andothersdelim}{}这样的设置是因为gb7714-2015中为兼容老版本的biblatex做的处理就是这样的 +%所以用相同的方式 +\AtEveryCitekey{% +\iffieldequalstr{userf}{chinese}{\renewcommand*{\andothersdelim}{}}%\addthinspace + {\renewcommand*{\andothersdelim}{\addspace}}% +} + +%标注压缩时,直接用date+extradate代替extradate实现2006a,2006b的效果 +%\DeclareDelimFormat*{compcitedelim}{、}%\addcomma\addspace +\newbibmacro*{cite:extradate}{% + \iffieldundef{extradate} + {} + {\printtext[bibhyperref]{\addspace\printlabeldateextra}}}%\printfield{extradate}\printlabeldateextra \printfield{labelyear}\printfield{extradate} + +%\AtEveryCite{% +%\let\parentext=\parentexttrack% +%\let\bibopenparen=(% +%\let\bibcloseparen=)} + +%添加前后空格 +\DeclareCiteCommand{\cite}%[\mkbibparens] + {\usebibmacro{cite:init}% + \printtext{(}\usebibmacro{prenote}}%)\addspace + {\usebibmacro{citeindex}% + \usebibmacro{cite}} + {} + {\usebibmacro{postnote}%( + )}%\addspace + +%原版 +%\DeclareCiteCommand{\cite}[\mkbibparens] +% {\usebibmacro{cite:init}% +% \usebibmacro{prenote}}%) +% {\usebibmacro{citeindex}% +% \usebibmacro{cite}} +% {} +% {\usebibmacro{postnote}} + +% +%添加后面空格 +%\DeclareCiteCommand{\cbx@textcite} +% {\usebibmacro{cite:init}} +% {\usebibmacro{citeindex}% +% \usebibmacro{textcite}} +% {} +% {\usebibmacro{textcite:postnote}\addspace} + +\newbibmacro*{textcite}{% + \iffieldequals{namehash}{\cbx@lasthash} + {\iffieldundef{shorthand} + {\ifthenelse{\iffieldequals{labelyear}{\cbx@lastyear}\AND + \(\value{multicitecount}=0\OR\iffieldundef{postnote}\)} + {\setunit{\addcomma}% + \usebibmacro{cite:extradate}} + {\setunit{\compcitedelim}% + \usebibmacro{cite:labeldate+extradate}% + \savefield{labelyear}{\cbx@lastyear}}} + {\setunit{\compcitedelim}% + \usebibmacro{cite:shorthand}% + \global\undef\cbx@lastyear}} + {\ifnameundef{labelname} + {\iffieldundef{shorthand} + {\usebibmacro{cite:label}% + \setunit{% + \global\booltrue{cbx:parens}% + \printdelim{nonameyeardelim}(}%\bibopenparen + \ifnumequal{\value{citecount}}{1} + {\usebibmacro{prenote}} + {}% + \usebibmacro{cite:labeldate+extradate}} + {\usebibmacro{cite:shorthand}}} + {\printnames{labelname}% + \setunit{% + \global\booltrue{cbx:parens}% + \printdelim{nameyeardelim}(}%\bibopenparen + \ifnumequal{\value{citecount}}{1} + {\usebibmacro{prenote}} + {}% + \iffieldundef{shorthand} + {\iffieldundef{labelyear} + {\usebibmacro{cite:label}} + {\usebibmacro{cite:labeldate+extradate}}% + \savefield{labelyear}{\cbx@lastyear}} + {\usebibmacro{cite:shorthand}% + \global\undef\cbx@lastyear}}% + \stepcounter{textcitecount}% + \savefield{namehash}{\cbx@lasthash}}% + \setunit{% + \ifbool{cbx:parens} + {)\global\boolfalse{cbx:parens}}%\bibcloseparen + {}% + \textcitedelim}} + +\newbibmacro*{textcite:postnote}{% + \usebibmacro{postnote}% + \ifthenelse{\value{multicitecount}=\value{multicitetotal}} + {\setunit{}% + \printtext{% + \ifbool{cbx:parens} + {)\global\boolfalse{cbx:parens}}%\bibcloseparen + {}}} + {\setunit{% + \ifbool{cbx:parens} + {)\global\boolfalse{cbx:parens}}%\bibcloseparen + {}% + \textcitedelim}}} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/example.bib b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/example.bib index 56ce4a5794..2956469499 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/example.bib +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/example.bib @@ -1,3838 +1,3838 @@ -% Encoding: UTF-8 - - -@Other{易仕和,2013, - Entryset = {易仕和2013--,Yi2013--} -} - -@book{李时珍--, -author={李时珍} -} - -@book{乔纳斯--, -author={乔纳斯} -} - -@Book{昂温1988--, - Author = {昂温, S.}, -} - -@Book{GPS1988--, - Title = {外国出版史}, - Author = {{昂温, G} and {昂温, P S}}, - Publisher = {中国书籍出版社}, - Translator = {陈生诤}, - Year = {1988}, - Location = {北京} -} - -@Book{丸山敏秋--, - Author = {丸山敏秋}, -} - -@Book{凯西尔--, - Author = {凯西尔}, -} - -@book{Einstein--, - author = {Einstein, Albert} -} - -@book{Williams-ellis--, - author = {Williams-ellis, Amabel} -} - -@book{morgan--, - author = {De Morgan, Augustus} -} - -@book{lijianning--a, - author = {{LI Jiangning}} -} - -@book{lijianning--b, - author = {Li, Jiang Ning} -} - -@book{钱学森--, - author = {钱学森 and 刘再复} -} - -@book{李四光--, - author = {李四光 and 华罗庚 and 茅以升} -} - -@book{印森林--, - author = {印森林 and 吴胜和 and 李俊飞 and 冯文杰} -} - -@book{fordham--, - author = {Evenst W. Fordham and Amiad Ali and David A. Truner and John R. Charters} -} - -@Article{anon1981-628, - title = {Coffee drinking and cancer of the pancreas}, - journal = {Br Med J}, - year = {1981}, - volume = {283}, - number = {6292}, - pages = {628} -} - -@book{中国科学院物理研究所--, - author = {{中国科学院物理研究所}} -} - -@book{贵州省土穰普查办公室--, - author = {{贵州省土穰普查办公室}} -} - -@book{AmericanChemicalSociety--, - author = {{American Chemical Society}} -} - - -@book{StanfordUniversity--, - author = {{Stanford University. Department of Civil Eng ineering}} -} - - -@book{王夫之的诠释--, - title = {王夫之“乾坤并建”的诠释面向} -} - -@book{张子正蒙注--, - title = {张子正蒙注} -} - -@book{化学动力学和反应器原理--, - title = {化学动力学和反应器原理} -} - -@book{袖珍神学--, - title = {袖珍神学,或,简明基督教词典} -} - -@article{北京师范大学学报--, - Journaltitle = {北京师范大学学报(自然科学版)} -} - -@book{Gasesinsea--, - title = {Gases in sea ice 1975-1979} -} - -@article{jmath--, - Journaltitle = {J Math \& Phys} -} - -@book{为人民服务--, - title = {为人民服务;纪念白求恩;愚公移山} -} - -@book{编者1964--, - title = {为人民服务;纪念白求恩;愚公移山}, - address= {北京}, - publisher={人民出版社}, - date ={1964}, - pages= {1-3;7-11;31-35} -} - -@book{大趋势--, - title = {大趋势} -} - -@book{地壳运动--, - title = {地壳运动假说:从大陆漂移到板块构造} -} - -@book{三松堂--, - title = {三松堂全集:第4卷} -} - -@book{世界出版业--, - title = {世界出版业:美国卷} -} - -@book{ECL集成电路--, - title = {ECL集成电路:原理与设计} -} - -@book{中国科学技术史--, - title = {中国科学技术史:第2卷~~~~科学思想史} -} - -@article{商鞅战秋菊--, - title = {商鞅战秋菊:法治转型的一个思想实验} -} - -@article{中国科学--, - title = {中国科学:D辑~~~~地球科学} -} - -@Standard{信息与文献--, - title = {信息与文献---都柏林核心元数据元素集:GB/T 25100—2010} -} - -@Standard{全国信息与文献标准化技术委员会2010-2-3, - author = {全国信息与文献标准化技术委员会}, - title = {信息与文献\ \ \ \ 都柏林核心元数据元素集: GB/T 25100—2010}, - year = {2010}, - address = {北京}, - pages = {2--3}, - publisher = {中国标准出版社}, -} - -@report{中子反射--, - title = {中子反射数据分析技术:CNIC-01887} -} - -@article{AsianPacificjournal--, - Journaltitle = {Asian Pacific journal of eancer prevention: e-only} -} - - -@book{egbookeda--, - title = {中文书}, - edition={3} -} - -@book{egbookedb--, - title = {中文书}, - edition={新1版} -} - -@book{egbookedc--, - title = {中文书}, - edition={明刻本} -} - -@book{egbookedd--, - title = {english book}, - edition={5} -} - -@book{egbookede--, - title = {english book}, - edition={Rev. ed.} -} - -@book{egbookpuba--, - title = {中文书}, - date = {2013}, - address = {北京}, - publisher = {人民出版社}, -} - -@book{egbookpubb--, - title = {english book}, - date = {2012}, - address = {New York}, - publisher = {Academic Press}, -} - -@book{egbookpubaddressa--, - title = {english book}, - address = {Cambridge, Eng.}, - publisher = {Academic Press}, -} - -@book{egbookpubaddressb--, - title = {english book}, - address = {Cambridge, Mass.}, - publisher = {Academic Press}, -} - -@book{egbookpubaddressc--, - title = {中文书}, - date = {2013}, - address = {北京 and 上海}, - publisher = {科学出版社}, -} - -@book{egbookpubaddressd--, - title = {english book}, - date = {2000}, - address = {London and Boston and Durban and Syngapore and Sydney and Toronto and Wellington}, - publisher = {Butterworths}, -} - -@book{egbookpubaddresse--, - title = {中文书}, - date = {1990}, - publisher = {三户图书刊行社}, -} - -@book{egbookpubaddressf--, - title = {english book}, - date = {1975}, - publisher = {MacMillan}, -} - -@online{egbookpubaddressg--, - date = {2011}, - pages ={105}, - url={http://lib.myilibrary.com/Open.aspx?id=312377}, - urldate={2014-06-16}, - publisher = {Open University Press}, -} - - - -@book{egbookpubpublishera--, - title = {中文书}, - address = {北京}, - publisher = {中国标准出版社}, -} - -@book{egbookpubpublisherb--, - title = {english book}, - address = {Cambridge}, - publisher = {Elsevier Science Publishers}, -} - -@book{egbookpubpublisherc--, - title = {english book}, - address = {Cambridge}, - publisher = {IRRI}, -} - -@book{egbookpubpublisherd--, - title = {english book}, - address = {Chicago}, - publisher = {ALA and CLA}, - date ={1978} -} - -@book{egbookpubpublishere--, - title = {中文书}, - address = {哈尔滨}, - date ={2013} -} - -@book{egbookpubpublisherf--, - title = {english book}, - address = {Salt Lake City}, - date ={1964} -} - - -@book{egbookpubdatea--, - title = {中文书}, - year ={1947(民国三十六年)} -} - -@book{egbookpubdateb--, - title = {中文书}, - year ={1705(康熙四十四年)} -} - -@newspaper{egbookpubdatec--, - title = {中文书}, - date ={2013-01-08} -} - -@book{egbookpubdated--, - title = {中文书}, - year ={c1988} -} - -@book{egbookpubdatee--, - title = {中文书}, - year ={1985印刷} -} - -@book{egbookpubdatef--, - title = {中文书}, - year ={[1936]} -} - - -@online{egbookpubdateg--, - title = {english book}, - date = {2012-05-03}, - urldate={2013-11-12}, -} - -@Book{曹凌2011-19-, - author = {曹凌}, - title = {中国佛教疑伪经综录}, - year = {2011}, - publisher = {上海古籍出版社}, - address = {上海}, - pages ={19} -} - -@Book{钱学森2001--, - author = {钱学森}, - title = {创建系统学}, - year = {2001}, - publisher = {山西科学技术出版社}, - address = {太原}, - pages ={序2-3} -} - -@Book{冯友兰2008--, - author = {冯友兰}, - title = {冯友兰自选集}, - year = {2008}, - publisher = {北京大学出版社}, - address = {北京}, - edition ={2}, - pages ={第1版自序} -} - -@inbook{李约瑟1991--, - author = {李约瑟}, - title = {题词}, - bookauthor = {苏克福 and 管成学 and 邓明鲁}, - booktitle = {苏颂与《本草图经》研究}, - year = {1991}, - publisher = {长春出版社}, - address = {长春}, - pages = {扉页} -} - -@ARTICLE{DUBAR2013--, - author = {DUBAR, K L. AND MITCHELL, D A.}, - title = {Revealing nature's synthetic potential through the study of ribosomal natural product biosynthesis}, - Journaltitle = {ACS chemical biology}, - DATE = {2013}, - VOLUME = {8}, - pages = {473-487}, - url = {http://pubs.acs.org/doi/pdfplus/10.1021/cb3005325}, - urldate = {2013-10-16} -} - -@Book{周鲁卫2011--, - author = {周鲁卫}, - title = {软物质物理导论}, - year = {2011}, - publisher = {复旦大学出版社}, - address = {上海}, - pages = {1} -} - -@ARTICLE{常森2013--, - author = {常森}, - title = {《五行》学说与《荀子》}, - Journaltitle = {北京大学学报(哲学社会科学版)}, - DATE = {2013}, - VOLUME = {50}, - number = {1}, - pages = {75}, -} - -@Book{RUDDOCK2009--, - author = {RUDDOCK, L.}, - title = {Economics for the modern built environment}, - year = {2009}, - publisher = {Taylor & Francis}, - address = {London}, - pages = {12}, - url = {http://lib.mylib.com}, - urldate = {2010-06-15}, -} - -@book{kereanrefa, - AUTHOR = {김세훈 and others}, - TITLE = { 도서판및특서진흥업 개정안 연구}, - DATE = {2003}, - address={서울}, - PAGES = {15}, - publisher = {한국운화관팡정책연구원}, -} -%%김세훈, 외. 도서판및특서진흥업 개정안 연구〔M〕, 서울; 한국운화관팡정책연구원,2003: 15. - - -@book{kereanrefb, - AUTHOR = {이냉목 }, - TITLE = { 도서관꺾규총람: 세 1 권}, - DATE = {2005}, - address={서울}, - PAGES = {67-68}, - publisher = {구미무역 출판부}, -} -%%이냉목 도서관꺾규총람: 세 1 권[M〕. 서울: 구미무역 출판부,2005: 67-68. -%% - -@Book{李炳穆2005--, - author = {李炳穆}, - title = {图书馆法柜总览:第1卷}, - year = {2005}, - publisher = {九美贸易出版部}, - address = {首尔}, - pages = {67-68} -} - - -@article{kereanrefc, - DATE = {2007}, - volume={48}, - number={7}, - PAGES = {11-12}, - journaltitle={ 圖書館文化}, - TITLE = {도서관 정보정책위원회 설립식 및 도서관 정보정책기획단신성}, -} -%%도서관 정보정책위원회 설립식 및 도서관 정보정책기획단신성. 圖書館文化,2007 ,48(7): 11-12. - -@ARTICLE{图书馆信息政策委员会2007--, - title = {图书馆信息政策委员会成立仪式与图书馆信息政策规划团}, - Journaltitle = {图书馆文化}, - DATE = {2007}, - VOLUME = {48}, - number = {7}, - pages = {11-12}, -} - -@book{japaneserefc, - AUTHOR = {図書館用語辞典編集委員会}, - TITLE = { 最新図書館用語大辞典}, - DATE = {2004}, - address={東京}, - PAGES = {154}, - publisher = {柏書房株式会社}, -} -%% -%%図書館用語辞典編集委員会.最新図書館用語大辞典[M].東京:柏書房株式会社,2004:154. -%% - -@article{russianrefc, - author={Кочекоs, А Я}, - TITLE = {Молибден-медно-эолотопорфиооое месторождение Рябиноосе}, - DATE = {1993}, - number={7}, - PAGES = {50-58}, - journaltitle={ Отечестsенная гелогия} -} -%%Кочекоs А Я. Молибден-медно-эолотопорфиооое месторождение Рябиноосе[J/ОL]. ,1993(7):50-58 - -@ARTICLE{熊平2005--, - author = {熊平 and 吴颉}, - title = {从交易费用的角度谈如何构建药品流通的良性机制}, - Journaltitle = {中国物价}, - DATE = {2005}, - number = {8}, - pages = {42-45}, -} - -@ARTICLE{xiong2005--, - author = {Xiong, Ping and Wu, Xie}, - title = {Discussion on how to construct benign medicine circulantion mechanism fromtranaction cosperspective}, - Journaltitle = {China price}, - DATE = {2005}, - number = {8}, - pages = {42-45}, -} - -@ARTICLE{上海市食品药品监督管理局课题组2008--, - author = {上海市食品药品监督管理局课题组}, - title = {互联网药品经营现状和监管机制的研究}, - Journaltitle = {上海食品药品监管情报研究}, - DATE = {2008}, - number = {1}, - pages = {8-11}, -} - -@ARTICLE{Rgsfda2008--, - author = {{Research Group of Shanghai Food and Drug Administration}}, - title = {A study on online pharmaceutical operating situation and supervision mechanism}, - Journaltitle = {Shanghai food and drug information research}, - DATE = {2008}, - number = {1}, - pages = {8-11}, -} - - -@PhdThesis{刘乃安2000-17-18, - author = {刘乃安}, - title = {生物质材料热解失重动力学及其分析方法研究}, - year = {2000}, - pages = {17--18}, - doi = {10.7666/d.y351065}, - url = {http://wenku.baidu.com/link?url=GJDJxb4lxBUXnIPmq1XoEGSIr1H8TMLbidW_LjlYu33tpt707u62rKliypU_FBGUmox7ovPNaVIVBALAMd5yfwuKUUOAGYuB7cuZ-BYEhXa}, - urldate = {2014-08-29}, - address = {安徽}, - school = {中国科学技术大学}, -} - -@book{Deverell2013-21-22, - author = {Deverell, William and Igler, David}, - title = {A Companion to {California} History}, - year = {2013}, - date = {2013-11-15}, - pages = {21--22}, - doi = {10.1002/9781444305036.ch2}, - url = {http://onlinelibrary.wiley.com/doi/10.1002/9781444305036.ch2/summary}, - urldate = {2014-06-24}, - address = {New York}, - school = {John Wiley \& Sons}, -} - -@inbook{姚中秋2009--, - author = {姚中秋}, - title = {作为一种制度变迁模式的“转型”}, - bookauthor = {罗卫东 and 姚中秋}, - booktitle = {中国转型的理论分析:奥地利学派的视角}, - year = {2009}, - publisher = {浙江大学出版社}, - address = {杭州}, - pages = {44} -} - -@inbook{姚中秋2008--, - author = {姚中秋}, - title = {一种制度变迁模式}, - bookauthor = {罗, 卫东 and 姚, 中秋}, - booktitle = {中国转型的理论分析}, - year = {2008}, - publisher = {浙江大学出版社}, - address = {杭州}, - pages = {44} -} - - -@ARTICLE{关立哲2014--, - author = {关立哲 and 韩纪富 and 张晨延}, - title = {科技期刊编辑审读中要注重比较思维的科学运用}, - Journaltitle = {编辑学报}, - DATE = {2014}, - VOLUME = {26}, - number = {2}, - pages = {144-146} -} - -@ARTICLE{TENOPIR1987--, - author = {TENOPIR, C.}, - title = {Online databases, quality control}, - Journaltitle = {Library journal}, - DATE = {1987}, - VOLUME = {113}, - number = {2}, - pages = {124-125} -} - -@ARTICLE{egdatevolnumpagea--, - title = {article of journal}, - DATE = {2001}, - VOLUME = {1}, - number = {1}, - pages = {5-6} -} - -@ARTICLE{egdatevolnumpageb--, - title = {article of journal}, - DATE = {2014}, - VOLUME = {510}, - pages = {356-363} -} - -@ARTICLE{egdatevolnumpagec--, - title = {article of journal}, - DATE = {2010}, - number = {6}, - pages = {23} -} - -@ARTICLE{egdatevolnumpaged--, - title = {article of journal}, - DATE = {2012}, - VOLUME = {22}, - number = {增刊2}, - pages = {81-86} -} - -@ARTICLE{egdatevolnumpagee--, - title = {article of journal}, - DATE = {2001}, - number = {9/10}, - pages = {36-39} -} - -@ARTICLE{egdatevolnumpagef--, - title = {article of journal}, - year = {2011, 33(2):20-25;2011, 33(3):26-30}, -} - -@newspaper{egdatevolnumpageg--, - title = {article of journal}, - date = {2013-03-16}, - number = {1} -} - - -@Book{尼葛洛庞帝1996--, - author = {尼葛洛庞帝}, - title = {数字化生存}, - year = {1996}, - translator = {胡泳 and 范海燕}, - publisher = {海南出版社}, - address = {海口}, -} - -@Book{汪冰1997-16-16, - author = {汪冰}, - title = {电子图书馆理论与实践研究}, - year = {1997}, - publisher = {北京图书馆出版社}, - pages = {16}, - address = {北京}, -} - -@Article{杨宗英1996-24-29, - author = {杨宗英}, - title = {电子图书馆的现实模型}, - journal = {中国图书馆学报}, - year = {1996}, - number = {2}, - pages = {24--29}, -} - -@Book{Baker1995--, - author = {Baker, S K and Jackson, M E}, - title = {The future of resource sharing}, - year = {1995}, - publisher = {The Haworth Press}, - address = {New York}, -} - -@Book{Chernik1982--, - author = {Chernik, B E}, - title = {Introduction to library services for library technicians}, - year = {1982}, - publisher = {Libraries Unlimited, Inc.}, - address = {Littleton, Colo.}, -} - - -@Article{Dowler1995-5-26, - author = {Dowler, L}, - title = {The research university’s dilemma: resource sharing and research in a transinstitutional environment}, - journal = {Journal of library administration}, - year = {1995}, - volume = {21}, - number = {1/2}, - pages = {5--26}, -} - - -@Inproceedings{ref-replace-char, - Title = {Cognitive Radio and Cooperative Strategies for Power Saving in Multi-Standard Wireless Devices}, - Address = {Florence, Italy}, - Author = {Rodriguez, J. and P. Marques and A. Radwan and K. Moessner and R. Tafazolli and others}, - Booktitle = {Future % Network \& Mobile # Summit 2010}, - Date = {June 2010} -} - -@Online{olnoauthorcn, - Title = {如何在LaTeX写作中管理参考文献?}, - Date = {2016-08-12}, - Url = {http://www.latexstudio.net/archives/7131} -} - -@Online{Allianceurlonly, - Url = {www.wimedia.org} -} - -@Online{olnoauthoren, - Title = {Dublin Core metadata element set: version 1.1}, - Url = {http://dublincore.org}, - Urldate = {2014-06-11}, - Year = {2012-06-14} -} - -@Article{王临慧2010-147, - author = {王临慧 and others}, - title = {天津方言的源流关系刍议}, - journal = {山西师范大学学报(社会科学版)}, - year = {2010}, - volume = {37}, - number = {4}, - pages = {147}, -} - - -@InProceedings{王临慧2010-138, - author = {王临慧}, - title = {从几组声母的演变看天津方言形成的自然条件和历史条件}, - bookauthor= {曹志耘}, - booktitle = {汉语方言的地理语言学研究:首届中国地理语言学国际学术研讨会论文集}, - year = {2010}, - publisher = {北京语言大学出版社}, - pages = {138}, - address = {北京}, -} - -@Book{王夫之1845--, - Title = {宋论}, - Author = {王夫之}, - Edition = {刻本}, - Publisher = {曾氏}, - Year = {1845(清同治四年)}, - Location = {金陵} -} - -@Book{汪昂1881--, - Title = {增订本草备要:四卷}, - Address = {京都}, - Author = {汪昂}, - Edition = {刻本}, - Publisher = {老二酉堂}, - Year = {1881(清光绪七年)}, - Location = {京都} -} - -@Periodical{AAAS1883--, - Title = {Science}, - Date = {1883}, - Editor = {{American Association for the Advancement of Science}}, - Number = {1}, - Volume = {1}, - Location = {Washington, D.C.}, - Publisher = {American Association for the Advancement of Science} -} - -@Book{汪昂1912--, - Title = {(增补)本草备要}, - Author = {汪昂}, - Edition = {石印本}, - Publisher = {同文书局}, - Year = {1912}, - Location = {上海} -} - -@Periodical{中国地质学会1936--, - Title = {地质评论}, - Date = {1936}, - Editor = {中国地质学会}, - Number = {1}, - Volume = {1}, - Location = {北京}, - Publisher = {地质出版社} -} - - -@Book{1962-50-50, - Title = {康熙字典:已集上:水部}, - Address = {北京}, - Edition = {同文书局影印本}, - Pages = {50}, - Publisher = {中华书局}, - Year = {1962} -} - -@Proceedings{ROSENTHALL1963--, - Title = {Proceedings of the Fifth Canadian Mathematical Congress, University of Montreal, 1961}, - Date = {1963}, - Publisher = {University of Toronto Press}, - Editor = {E M ROSENTHALL}, - Location = {Toronto} -} - -@Thesis{CALMS1965--, - Title = {Infrared spectroscopic studies on solid oxygen}, - Author = {R B CALMS}, - Date = {1965}, - Institution = {Univ. of California}, - Location = {Berkeley} -} - -@Report{WHO1970--, - Title = {Factors regulating the immune response}, - Author = {{World Health Organization}}, - Date = {1970}, - Institution = {WHO}, - Location = {Geneva}, - Titleaddon = {report of WHO Scientific Group} -} - -@Inproceedings{FOURNEY1971-17-38, - Title = {Advances in holographic photoelasticity}, - Author = {M E FOURNEY}, - Booktitle = {Symposium on Applications of Holography in Mechanics, August 23-25, 1971, University of Southern California, Los Angeles, California}, - year = {c1971}, - Pages = {17-38}, - Publisher = {ASME}, - Location = {New York} -} - -@Inproceedings{FOURNEY1971-17-38a, - Title = {Advances in holographic photoelasticity}, - Author = {M E FOURNEY}, - Bookauthor = {{American Society of Mechanical Engineers.Applied Mechanics Division}}, - Booktitle = {Symposium on Applications of Holography in Mechanics, August 23-25, 1971. University of Southern California, Los Angeles, California}, - Date = {1971}, - Pages = {17-38}, - Publisher = {ASME}, - Location = {New York} -} - -@TechReport{Humphrey1971--, - Title = {The sonic throat method and real gas one-dimensional flow: an application to air and nitrogen}, - Author = {Humphrey, Richard L. and Wagner, Jerry L.}, - Year = {1971}, - Number = {730029}, - Type = {AD} -} - -@Book{CRANE1972--, - Title = {Invisible college}, - Author = {D. Crane}, - Date = {1972}, - Publisher = {Univ. of Chicago Press}, - Location = {Chicago} -} - - - -@Article{KENNEDY1975-311-386, - Title = {Morphology and genesis of nodular chalks and hardgrounds in the Upper - Cretacesous of southern England}, - Author = {W. J. KENNEDY and R. E. GARRISON}, - Date = {1975}, - Journaltitle = {Sedimentology}, - Pages = {311-386}, - Volume = {22} -} - -@Article{KENNEDY1975-339-360, - Title = {Morphology and genesis of nodular phosphates in the cenomanian of South-east England}, - Author = {W. J. KENNEDY and R. E. GARRISON}, - Date = {1975}, - Journaltitle = {Lethaia}, - Pages = {339-360}, - Volume = {8} -} - -@Inbook{1977-49-49, - Title = {宋史卷三:本纪第三}, - Address = {北京}, - Booktitle = {宋史:第1册}, - Pages = {49}, - Publisher = {中华书局}, - Year = {1977} -} - -@Book{IFLAI1977--, - Title = {Names of persons: national usages for entry in catalogues}, - Author = {{International Federation of Library Association and Institutions}}, - Edition = {3}, - Publisher = {IFLA International Office for UBC}, - Year = {1977}, - Location = {London} -} - - -@InProceedings{张忠智1997-33-34, - author = {张忠智}, - title = {科技书刊的总编(主编)的角色要求}, - booktitle = {中国科学技术期刊编辑学会建会十周年学术研讨会论文汇编}, - year = {1997}, - editor = {中国科学技术期刊编辑学会}, - publisher = {中国科学技术期刊编辑学会学术委员会}, - pages = {33--34}, - address = {北京}, -} - -@Book{中国社会科学院语言研究所词典编辑室1996--, - author = {中国社会科学院语言研究所词典编辑室}, - title = {现代汉语词典}, - year = {1996}, - edition = {修订本}, - publisher = {商务印书馆}, - address = {北京}, -} - - -@Article{刘彻东1998-38-39, - Title = {中国的青年刊物}, - Author = {刘彻东}, - Date = {1998}, - Journaltitle = {中国出版}, - Number = {5}, - Pages = {38-39}, - Titleaddon = {个性特色为本} -} - -@InProceedings{裴丽生1981-2-10, - author = {裴丽生}, - title = {在中国科协学术期刊编辑工作经验交流会上的讲话}, - booktitle = {中国科协学术期刊编辑工作经验交流会资料选}, - year = {1981}, - editor = {中国科学技术协会}, - publisher = {中国科学技术协会学会工作部}, - pages = {2--10}, - address = {北京}, -} - - -@Article{亚洲地质图编目组1978-194-208, - Title = {亚洲地层与地质历史概述}, - Author = {亚洲地质图编目组}, - Date = {1978}, - Journaltitle = {地质学报}, - Pages = {194-208}, - Volume = {3} -} - -@Inbook{BUSECK1980-117-211, - Title = {Subsolidus phenomena in pyroxenes}, - Author = {P R BUSECK and NORD, Jr., G L and D R VEBLEN}, - Bookauthor = {CT PREWITT}, - Booktitle = {Pyroxense}, - year = {c1980}, - Pages = {117-211}, - Publisher = {Mineralogical Society of America}, - Location = {Washington, D.C.} -} - -@Inbook{陈晋镳1980-56-114, - Title = {蓟县震旦亚界研究}, - Author = {陈晋镳 and 张惠民 and 朱士兴 and others}, - Bookauthor = {中国地质科学院天津地质矿产研究所}, - Booktitle = {中国震旦亚界}, - Pages = {56-114}, - Publisher = {天津科学出版社}, - Location = {天津}, - Year = {1980} -} - -@Article{Sunstein1996-903-903, - author = {Sunstein, Cass R.}, - title = {Social Norms and Social Roles}, - journal = {Columbia law review}, - year = {1996}, - volume = {96}, - pages = {903}, - url = {http://www.heinonline.org/HOL/Page?handle=hein.journals/clr96&id=913&collection=journals&index=journals/clr}, - urldate = {2012-01-26}, -} - -@Book{罗杰斯2011-15-16, - author = {罗杰斯}, - title = {西方文明史: 问题与源头}, - year = {2011}, - translator = {潘惠霞 and 魏婧 and 杨艳 and others}, - publisher = {东北财经大学出版社}, - pages = {15--16}, - address = {大连}, -} - -@Book{陈登原2000-29-29, - author = {陈登原}, - title = {国史旧闻: 第1卷}, - year = {2000}, - publisher = {中华书局}, - pages = {29}, - address = {北京}, -} - -@Book{哈里森沃尔德伦2012-235-236, - author = {哈里森·沃尔德伦}, - title = {经济数学与金融数学}, - year = {2012}, - translator = {谢远涛}, - publisher = {中国人民大学出版社}, - pages = {235--236}, - address = {北京}, -} - -@Book{北京市政协民族和宗教委员会2012-112-112, - author = {北京市政协民族和宗教委员会 and 北京联合大学民族与宗教研究所}, - title = {历代王朝与民族宗教}, - year = {2012}, - publisher = {民族出版社}, - pages = {112}, - address = {北京}, -} - - -@Book{徐光宪2010--, - author = {徐光宪 and 王祥云}, - title = {物质结构}, - year = {2010}, - publisher = {科学出版社}, - address = {北京}, -} - -@Book{顾炎武1992--, - author = {顾炎武}, - title = {昌平山水记:京东考古录}, - year = {1992}, - publisher = {北京古籍出版社}, - address = {北京}, -} - -@Book{王夫之1865--, - author = {王夫之}, - title = {宋论}, - year = {1865(清同治四年)}, - edition = {刻本}, - publisher = {湘乡曾国荃}, - address = {金陵}, -} - -@Proceedings{牛志明2012--, - title = {综合湿地管理国际研讨会论文集}, - year = {2012}, - editor = {牛志明 and 斯温兰德 and 雷光春}, - publisher = {海洋出版社}, - address = {北京}, -} - -@Archive{中国第一历史档案馆2001--, - author = {中国第一历史档案馆 and 辽宁省档案馆}, - title = {中国明朝档案总汇}, - year = {2001}, - address = {桂林}, - publisher = {广西师范大学出版社}, -} - -@PhdThesis{杨保军2012--, - author = {杨保军}, - title = {新闻道德论}, - year = {2010}, - url = {http://apabi.lib.pku.edu.cn/usp/pku/pub.mvc?pid=book.detail&metaid=m.20101104-BPO-889-1023&cult=CN}, - urldate = {2012-11-01}, - address = {北京}, - publisher = {中国人民大学出版社}, -} - -@Book{赵学功2001--, - author = {赵学功}, - title = {当代美国外交}, - year = {2001}, - publisher = {社会科学文献出版社}, - url = {http://www.cadal.zju.edu.cn/book/trySinglePage/33023884/1}, - urldate = {2014-06-11}, - address = {北京}, -} - -@Book{同济大学土木工程防灾国家重点实验室2011-5-6, - author = {同济大学土木工程防灾国家重点实验室}, - title = {汶川地震灾害研究}, - year = {2011}, - publisher = {同济大学出版社}, - pages = {5--6}, - url = {http://apabi.lib.pku.edu.cn/usp/pku/pub.mvc?pid=book.detail&metaid=m.20120406-YPT-889-0010}, - urldate = {2013-05-09}, - address = {上海}, -} - -@Book{中国造纸学会2003--, - author = {中国造纸学会}, - title = {中国造纸年鉴: 2003}, - year = {2003}, - publisher = {中国轻工业出版社}, - url = {http://www.cadal.zju.edu.cn/book/view/25010080}, - urldate = {2014-04-25}, - address = {北京}, -} - - -@Proceedings{Yufin2000--, - title = {Geoecology and computers: proceedings of the {Third International Conference on Advances of Computer Methods in Geotechnical and Geoenvironmental Engineering, Moscow, Russia, February 1--4, 2000}}, - year = {2000}, - editor = {Yufin, Sergey A}, - publisher = {A. A. Balkema}, - address = {Rotterdam}, -} - -@Book{Baldock2011-105-105, - author = {Baldock, Peter}, - title = {Developing early childhood services: past, present and future}, - year = {2011}, - publisher = {Open University Press}, - pages = {105}, - url = {http://lib.myilibrary.com/Open.aspx?id=312377}, - urldate = {2012-11-27}, -} - -@Book{Fan2013-25-26, - author = {Fan, Xuetong and Sommers, Christopher H.}, - title = {Food irradiation research and technology}, - year = {2013}, - edition = {2}, - publisher = {Blackwell Publishing}, - pages = {25--26}, - url = {http://onlinelibrary.wiley.com/doi/10.1002/9781118422557.ch2/summary}, - urldate = {2014-06-26}, - address = {Ames, Iowa}, -} - - -@Inbook{王夫之2011-1109-1109, - title = {周易外传:卷 5}, - booktitle = {船山全书}, - year = {2011}, - editor = {王夫之}, - number = {6}, - publisher = {岳麓书社}, - pages = {1109}, - address = {长沙}, -} - -@Inbook{程根伟1999-32-36, - author = {程根伟}, - title = {1998 年长江洪水的成因与减灾对策}, - booktitle = {长江流域洪涝灾害与科技对策}, - year = {1999}, - editor = {许厚泽 and 赵其国}, - publisher = {科学出版社}, - pages = {32--36}, - address = {北京}, -} - -@Inbook{陈晋镳1980-56-114a, - author = {陈晋镳 and 张惠民 and 朱士兴 and 赵震 and 王振刚}, - title = {蓟县震旦亚界研究}, - booktitle = {中国震旦亚界}, - year = {1980}, - editor = {中国地质科学院天津地质矿产研究所}, - publisher = {天津科学技术出版社}, - pages = {56--114}, - address = {天津}, -} - -@Inbook{马克思2013-302-302, - author = {马克思}, - title = {政治经济学批判}, - booktitle = {马克思恩格斯全集}, - year = {2013}, - editor = {马克思 and 恩格斯}, - volume = {35}, - publisher = {人民出版社}, - pages = {302}, - address = {北京}, -} - - - - - -@InProceedings{贾东琴2011-45-52, - author = {贾东琴 and 柯平}, - title = {面向数字素养的高校图书馆数字服务体系研究}, - booktitle = {中国图书馆学会年会论文集: 2011年卷}, - year = {2011}, - editor = {中国图书馆学会}, - publisher = {国家图书馆出版社}, - pages = {45--52}, - address = {北京}, -} - -@Inbook{Weinstein1974-745-772, - author = {Weinstein, L and Swertz, M N}, - title = {Pathogenic properties of invading microorganism}, - booktitle = {Pathologic physiology: mechanisms of disease}, - year = {1974}, - editor = {Sodeman, Jr., William A and Sodeman, William A}, - publisher = {Saunders}, - pages = {745--772}, - address = {Philadelphia}, -} - -@InBOOK{Roberson2011-1-36, - author = {Roberson, J. Alan and Burneson, Eric G.}, - title = {Drinking water standards, regulations and goals}, - booktitle = {Water quality \& treatment: a handbook on drinking water}, - year = {2011}, - editor = {{American Water Works Association}}, - edition = {6}, - publisher = {McGraw-Hill}, - pages = {1.1--1.36}, - url = {http://lib.myilibrary.com/Open.aspx?id=291430}, - urldate = {2012-12-10}, - address = {New York}, -} - -@Periodical{中华医学会湖北分会1984----, - title = {临床内科杂志}, - year = {1984}, - volume = {1}, - number = {1}, - address = {武汉}, - author = {中华医学会湖北分会}, - publisher = {中华医学会湖北分会}, -} - -@Periodical{中国图书馆学会1957--1990--, - title = {图书馆学通讯}, - year = {1957/1990}, - number = {1-4}, - address = {北京}, - author = {中国图书馆学会}, - publisher = {北京图书馆}, -} - -@Periodical{中国图书馆学会1957--, - Title = {图书馆学通信}, - Address = {北京}, - Date = {1957/1990}, - Editor = {中国图书馆学会}, - Institution = {北京图书馆}, - Number = {1-4} -} - -@Periodical{中国图书馆学会1957a--, - Title = {图书馆学通信}, - Date = {1957/1990}, - Editor = {中国图书馆学会}, - Institution = {北京图书馆}, - Number = {1-4} -} - -@Periodical{中国图书馆学会1957b--, - Title = {图书馆学通信}, - Address = {北京}, - Date = {1957/1990}, - Editor = {中国图书馆学会}, - Number = {1-4} -} - -@Periodical{中国图书馆学会1957c--, - Title = {图书馆学通信}, - Date = {1957/1990}, - Editor = {中国图书馆学会}, - Number = {1-4} -} - -@Periodical{AAAS1883----, - title = {Science}, - year = {1883}, - volume = {1}, - number = {1}, - address = {Washington, D.C.}, - author = {{American Association for the Advancement of Science}}, - publisher = {American Association for the Advancement of Science}, -} - - -@Article{袁训来2012-3219-3219, - author = {袁训来 and 陈哲 and 肖书海 and others}, - title = {蓝田生物群: 一个认识多细胞生物起源和早期演化的新窗口}, - journal = {科学通报}, - year = {2012}, - volume = {55}, - number = {34}, - pages = {3219}, -} - -@Newspaper{余建斌2013--, - author = {余建斌}, - date = {2013-01-12}, - journal = {人民日报}, - number = {2}, - title = {我们的科技一直在追赶: 访中国工程院院长周济}, - url = {http://paper.people.com.cn/rmrb/html/2013-01/12/nw.D110000renmrb_20130112_5-02.htm}, - urldate = {2013-03-20}, - year = {2013}, -} - -@Article{李炳穆2008-6-12, - author = {李炳穆}, - title = {韩国图书馆法}, - journal = {图书情报工作}, - year = {2008}, - volume = {52}, - number = {6}, - pages = {6--12}, - url = {http://www.docin.com/p-400265742.html}, - urldate = {2013-10-25}, -} - -@Article{李幼平2010-225-228, - author = {李幼平 and 王莉}, - title = {循证医学研究方法: 附视频}, - journal = {中华移植杂志(电子版)}, - year = {2010}, - volume = {4}, - number = {3}, - pages = {225--228}, - url = {http://www.cqvip.com/Read/Read.aspx?id=36658332}, - urldate = {2014-06-09}, -} - -@Article{武丽丽2008-8-9, - author = {武丽丽 and 华一新 and 张亚军 and others}, - title = {“北斗一号”监控管理网设计与实现}, - journal = {测绘科学}, - year = {2008}, - volume = {33}, - number = {5}, - pages = {8--9}, - doi = {10.3771/j.issn.1009-2307.2008.05.002}, - url = {http://vip.calis.edu.cn/CSTJ/Sear.dll?OPAC_CreateDetail}, - urldate = {2009-10-25}, -} - -@Article{Kanamori1998-2063-2063, - author = {Kanamori, H}, - title = {Shaking without quaking}, - journal = {Science}, - year = {1998}, - volume = {279}, - number = {5359}, - pages = {2063}, -} - -@Article{Caplan1993-61-66, - author = {Caplan, P}, - title = {Cataloging internet resources}, - journal = {The public access computer systems review}, - year = {1993}, - volume = {4}, - number = {2}, - pages = {61--66}, -} - -@Article{Frese2013-378-398, - author = {Frese, Karen S. and Katus, Hugo A. and Meder, Benjamin}, - title = {Next-generation sequencing: from understanding biology to personalized medicine}, - journal = {Biology}, - year = {2013}, - volume = {2}, - number = {1}, - pages = {378--398}, - doi = {10.3390/biology2010378}, - url = {http://www.mdpi.com/2079-7737/2/1/378}, - urldate = {2013-03-19}, -} - -@Article{Myburg2014-356-362, - author = {Myburg, Alexander A. and Grattapaglia, Dario and Tuskan, Gerald A. and others}, - title = {The genome of Eucalyptus grandis}, - journal = {Nature}, - year = {2014}, - date = {2014-06-19}, - volume = {510}, - pages = {356--362}, - doi = {10.1038/nature13308}, - url = {http://www.nature.com/nature/journal/v510/n7505/pdf/nature13308.pdf}, - urldate = {2014-06-25}, -} - -@Patent{邓一刚2006--, - author = {邓一刚}, - title = {全智能节电器}, - number = {200610171314.3}, - year = {2006}, - date = {2006-12-13}, -} - -@Patent{西安电子科技大学2002--, - author = {西安电子科技大学}, - title = {光折变自适应光外差探测方法}, - number = {01128777.2}, - year = {2002}, - date = {2002-03-06}, - url = {http://211.152.9.47/sipoasp/zljs/hyjs-yx-new.asp?recid=01128777.2&leixin=0}, - urldate = {2002-05-28}, -} - -@Patent{Tachibana2005--, - author = {Tachibana, Ryuki and Shimizu, Shuhichi and Kobayshi, Seiji and Nakamura, Taiga}, - title = {Electronic watermarking method and system}, - number = {US6915001}, - year = {2005}, - date = {2005-07-05}, - url = {http://www.google.co.in/patents/US6915001}, - urldate = {2013-11-11}, -} - -@TechReport{中国互联网络信息中心2012--, - author = {中国互联网络信息中心}, - title = {第 29 次中国互联网络发展现状统计报告}, - year = {2012}, - date = {2012-01-16}, - url = {http://www.cnnic.net.cn/hlwfzyj/hlwxzbg/201201/P020120709345264469680}, - urldate = {2013-03-26}, -} - -@Archive{北京市人民政府办公厅2005--, - author = {北京市人民政府办公厅}, - title = {关于转发北京市企业投资项目核准暂行实施办法的通知: 京政办发[2005]37号}, - year = {2005}, - date = {2005-07-12}, - url = {http://china.findlaw.cn/fagui/p_1/39934.html}, - urldate = {2011-07-12}, -} - -@Online{Bawden2008--, - author = {Bawden, D}, - title = {Origins and Concepts of Digital Literacy}, - date = {2008-05-04}, - url = {http://www.soi.city.ac.uk/~dbawden/digital%20literacy%20chapter.pdf}, - urldate = {2013-03-08}, - year = {2008}, -} - -@Online{OCLC--, - author = {{Online Computer Library Center, Inc}}, - title = {About {OCLC}: History of Cooperation}, - url = {http://www.oclc.org/about/cooperation.en.html}, - urldate = {2012-03-27}, -} - -@Online{Hopkinson2009--, - author = {Hopkinson, A}, - title = {{UNIMARC} and Metadata: Dublin Core}, - date = {2009-04-22}, - url = {http://archive.ifla.org/IV/ifla64/138-161e.htm}, - urldate = {2013-03-27}, - year = {2009}, -} - -@PhdThesis{刘乃安2000-17-18a, - author = {刘乃安}, - title = {生物质材料热解失重动力学及其分析方法研究}, - year = {2000}, - pages = {17--18}, - doi = {10.7666/d.y351065}, - url = {http://wenku.baidu.com/link?url=GJDJxb4lxBUXnIPmq1XoEGSIr1H8TMLbidW_LjlYu33tpt707u62rKliypU_FBGUmox7ovPNaVIVBALAMd5yfwuKUUOAGYuB7cuZ-BYEhXa}, - urldate = {2014-08-29}, - address = {安徽}, - school = {中国科学技术大学}, -} - -@PhdThesis{Deverell2013-21-22a, - author = {Deverell, William and Igler, David}, - title = {A Companion to {California} History}, - year = {2013}, - date = {2013-11-15}, - pages = {21--22}, - doi = {10.1002/9781444305036.ch2}, - url = {http://onlinelibrary.wiley.com/doi/10.1002/9781444305036.ch2/summary}, - urldate = {2014-06-24}, - address = {New York}, - school = {John Wiley \& Sons}, -} - -@Book{Morri2010--, - author = {Morri, I}, - title = {Why the West Rules for Now: the Patterns of History, and What They Reveal about the Future}, - year = {2010}, - publisher = {{Farrar, Straus and Giroux}}, - address = {New York}, -} - - -@Article{STIEG1981-549-560, - Title = {The information needs of historians}, - Author = {M. F. STIEG}, - Date = {1981}, - Journaltitle = {College and Research Libraries}, - Number = {6}, - Pages = {549-560}, - Volume = {42} -} - - - -@Article{Milstein1982-436-446, - Title = {The effect of multiple-tone interfering signals on a direct sequence spread spectrum communication system}, - Author = {Milstein, L. B. and Davidovici,S. and Schilling,D. L.}, - Journal = {IEEE Trans. Commun.}, - Number = {3}, - Pages = {436-446}, - Volume = {30}, - Year = {1982} -} - -@Book{顾炎武1982--, - Title = {昌平山水记}, - Author = {顾炎武}, - Publisher = {北京古籍出版社}, - Year = {1982}, - Location = {北京}, - Titleaddon = {东京考古录} -} - -@Inbook{马克思1982-505-505, - Title = {关于《工资、价格和利润》的报告札记}, - Author = {马克思}, - Bookauthor = {马克思 and 恩格斯}, - Booktitle = {马克思恩格斯全集}, - Pages = {505}, - Publisher = {人民出版社}, - Booktitleaddon = {第44卷}, - Location = {北京}, - Year = {1982} -} - -@Article{HEWITT1984-205-218, - Title = {Technical services in 1983}, - Author = {J A HEWITT}, - Date = {1984}, - Journaltitle = {Library Resource Services}, - Number = {3}, - Pages = {205-218}, - Volume = {28} -} - -@Article{McEliece1984-44-53, - Title = {Channels with block interference}, - Author = {McEliece, R. J. and Stark, W. E.}, - Journal = {IEEE Trans. Inf. Theory}, - Number = {1}, - Pages = {44-53}, - Volume = {30}, - Year = {1984} -} - -@Article{陶仁骥1984-527-527, - Title = {密码学与数学}, - Author = {陶仁骥}, - Date = {1984}, - Journaltitle = {自然杂志}, - Number = {7}, - Pages = {527}, - Volume = {7} -} - -@Periodical{中华医学会湖北分会1984--, - Title = {临床内科杂志}, - Address = {武汉}, - Date = {1984}, - Editor = {中华医学会湖北分会}, - Institution = {中华医学会湖北分会}, - Number = {1}, - Volume = {1} -} - -@Incollection{韩吉人1985-90-99, - Title = {论职工教育的特点}, - Author = {韩吉人}, - Booktitle = {职工教育研究论文集}, - Date = {1985}, - Publisher = {人民教育出版社}, - Pages = {90-99}, - Bookauthor = {中国职工教育研究会}, - Location = {北京} -} - -@Collection{中国职工教育研究会1985--, - Title = {职工教育研究论文集}, - Author = {中国职工教育研究会}, - Location = {北京}, - Publisher = {人民教育出版社}, - Year = {1985} -} - -@Standard{全国文献工作标准化委员会第七分委员会1986--, - Title = {GB/T 5795--1986 中国标准书号}, - Author = {全国文献工作标准化委员会第七分委员会}, - Note = {standard}, - Year = {1986}, - Location = {北京}, - Publisher = {中国标准出版社} -} - -@Inbook{1988-590-590, - Title = {卷39 乞致任第一}, - Address = {北京}, - Booktitle = {苏魏公文集:下册}, - Pages = {590}, - Publisher = {中华书局}, - Year = {1988} -} - - - -@Standard{国家标准局信息分类编码研究所1988-59-92, - Title = {世界各国和地区名称代码 GB/T 2659-1986}, - Author = {国家标准局信息分类编码研究所}, - Date = {1988}, - Note = {standard}, - Bookauthor = {全国文献工作标准化技术委员会}, - Booktitle = {文献工作国家标准汇编}, - Booktitleaddon = {3}, - Location = {北京}, - Pages = {59-92}, - Publisher = {中国标准出版社} -} - -@Online{1989--, - Title = {PACS-L:the public-access computer systems forum}, - Date = {1989}, - Publisher = {Tex: University of Houston Libraries}, - Url = {http://info.lib.uh.edu/pacsl.html}, - Urldate = {1995-05-17}, - Location = {Houston} -} - -@Patent{姜锡洲1989--, - Title = {一种温热外敷药制备方案}, - Author = {姜锡洲}, - Date = {1989-07-26}, - Number = {88105607.3}, - Titleaddon = {中国} -} - -@Report{DTFHA1990--, - Title = {Guidelines for handling excavated acid-producing materials: PB 91-194001}, - Author = {{U.S. Department of Transportation Federal Highway Administration}}, - Institution = {U.S. Department of Commerce National Information Service}, - Location = {Springfield}, - Year = {1990} -} - -@Book{PIGGOT1990--, - Title = {The cataloguer's way through AACR2: from document receipt to document retrieval}, - Author = {T. M. PIGGOT}, - Publisher = {The Library Association}, - Year = {1990}, - Location = {London} -} - -@Article{DESMARAIS1992-605-609, - Title = {Carbon isotope evidence for the stepwise oxidation of the Proterozoic environment}, - Author = {DES MARAIS, D J and H STRAUSS and R E SUMMONS and others}, - Date = {1992}, - Journaltitle = {Nature}, - Pages = {605-609}, - Volume = {359} -} - -@Article{Holtzman1992-243-247, - Title = {On using perturbation analysis to do sensitivity analysis: derivatives versus differences}, - Author = {Holtzman, J. M.}, - Journal = {IEEE Trans. Autom. Control}, - Number = {2}, - Pages = {243-247}, - Volume = {37}, - Year = {1992} -} - -@Article{CAPLAN1993-61-66a, - Title = {Cataloging internet resources}, - Author = {P CAPLAN}, - Date = {1993}, - Journaltitle = {The public Access Computer Systems Review}, - Number = {2}, - Pages = {61-66}, - Volume = {4} -} - -@Book{广西壮族自治区林业厅1993--, - Title = {广西自然保护区}, - Author = {广西壮族自治区林业厅}, - Date = {1993}, - Publisher = {中国林业出版社}, - Location = {北京} -} - -@Patent{刘加林1993--, - Title = {多功能一次性压舌板}, - Author = {刘加林}, - Date = {1993-04-14}, - Number = {92214985.2}, - Location = {中国} -} - -@Book{OBRIEN1994--, - Title = {Introduction to information systems}, - Author = {J A O'BRIEN}, - Date = {1994}, - Edition = {7}, - Publisher = {Irwin}, - Location = {Burr Ridge, III} -} - -@Book{辛希孟1994--, - Title = {信息技术与信息服务国际研讨会论文集}, - Author = {辛希孟}, - Publisher = {中国社会科学出版社}, - Year = {1994}, - Location = {北京}, - Titleaddon = {A集} -} - -@Article{Andersen1995-42-49, - Title = {Propagation measurements and models for wireless communications channels}, - Author = {Andersen, J. B. and Rappaport, T. S. and Yoshida, S.}, - Journal = {IEEE Commun. Mag.}, - Number = {1}, - Pages = {42-49}, - Volume = {33}, - Year = {1995} -} - -@Book{CRAWFPRD1995--, - Title = {Future libraries: dreams, maddness, \& reality}, - Author = {W CRAWFPRD and M GORMAN}, - Date = {1995}, - Publisher = {American Library Association}, - Location = {Chicago} -} - -@Book{赵凯华1995--, - Title = {{新概念物理教程}}, - Address = {北京}, - Author = {赵凯华 and 罗蔚茵}, - Publisher = {高等教育出版社}, - Year = {1995} -} - -@Inbook{MARTIN1996-85-96, - Title = {Control of electronic resources in Australia}, - Author = {G MARTIN}, - Bookauthor = {L W PATTLE and B J COX}, - Booktitle = {Electronic resources}, - Date = {1996}, - Pages = {85-96}, - Publisher = {The Haworth Press}, - Booktitleaddon = {selection and bibliographic control}, - Location = {New York} -} - -@Book{国家环境保护局科技标准司1996-2-3, - Title = {土壤环境质量标准: GB 15616-1995}, - Address = {北京}, - Author = {国家环境保护局科技标准司}, - Note = {standard}, - Pages = {2-3}, - Publisher = {中国标准出版社}, - Url = {http://wenku.baidu.com}, - Urldate = {2013-10-14}, - Year = {1996} -} - - - -@Inbook{钟文发1996-468-471, - Title = {非线性规划在可燃毒物配置中的应用}, - Author = {钟文发}, - Bookauthor = {赵玮}, - Booktitle = {运筹学的理论和应用}, - Pages = {468-471}, - Publisher = {西安电子科技大学出版社}, - Booktitleon = {中国运筹学会第五届大会讨论文集}, - Location = {西安}, - Year = {1996} -} - -@Inproceedings{Nemec1997-209-214, - Title = {Force control of redundant robots}, - Author = {B Nemec}, - Booktitle = {Processings of Symposium on Robot Control}, - Pages = {209-214}, - Country = {Nantes France}, - Year = {1997} -} - - - -@Article{Andrisano1998-1383-1401, - Title = {Millimeter waves for short-range multimedia communication systems}, - Author = {Andrisano, O. and Tralli, V. and Verdone, R.}, - Journal = {Proc. IEEE}, - Number = {7}, - Pages = {1383-1401}, - Volume = {86}, - Year = {1998} -} - -@Article{Chiani1998-2998-3008, - Title = {Error probability for block codes over channels with block interference}, - Author = {Chiani, M.}, - Journal = {IEEE Trans. Inf. Theory}, - Number = {7}, - Pages = {2998-3008}, - Volume = {44}, - Year = {1998} -} - -@Article{CHRISTINE1998-331-332, - Title = {Plant physiology:plant biology in the Genome Era}, - Author = {M CHRISTINE}, - Date = {1998}, - Journaltitle = {Science}, - Pages = {331-332}, - Volume = {281}, - Url = {http://www.sciencemag.org/cgi/collection/anatmorp}, - Urldate = {1998-09-23} -} - -@Article{KANAMORI1998-2063-2064, - Title = {Shaking without quaking}, - Author = {H KANAMORI}, - Date = {1998}, - Journaltitle = {Science}, - Number = {5359}, - Pages = {2063-2064}, - Volume = {279} -} - -@Inbook{白书农1998-146-163, - Title = {植物开花研究}, - Author = {白书农}, - Bookauthor = {李承森}, - Booktitle = {植物科学进展}, - Pages = {146-163}, - Publisher = {高等教育出版社}, - Location = {北京}, - Year = {1998} -} - -@Book{蒋有绪1998--, - Title = {中国森林群落分类及其群落学特征 and \XeLaTeX{}}, - Address = {北京}, - Author = {蒋有绪 and 郭泉水 and 马娟 and others}, - Publisher = {科学出版社}, - Year = {1998} -} - - - -@Article{鲁明羽1998-290-295, - Title = {关于数据库系统数据词典的重要作用}, - Author = {鲁明羽 and 李纲民}, - Journal = {烟台大学学报自然科学与工程版}, - Number = {4}, - Pages = {290-295}, - Volume = {11}, - Year = {1998} -} - -@Mastersthesis{张志祥1998--, - Title = {间断动力系统的随机扰动及其在守恒律方程中的应用}, - Author = {张志祥}, - Date = {1998}, - Institution = {北京大学数学学院}, - Location = {北京} -} - -@Book{赵耀东1998--, - Title = {新时代的工业工程师}, - Author = {赵耀东}, - Publisher = {天下文化出版社}, - Url = {http://www.ie.nthu.edu.tw/info/ie.newie.htm(Big5)}, - Urldate = {1998-09-26}, - Year = {1998}, - Location = {台北} -} - -@Article{高光明1998-60-65, - Title = {信号情报接收机的发展现状及趋势}, - Author = {高光明}, - Journal = {电讯技术}, - Number = {2}, - Pages = {60-65}, - Volume = {38}, - Month = {4}, - Year = {1998} -} - -@Article{Dardari1999-1709-1721, - Title = {High-speed indoor wireless communications at 60 GHz with coded OFDM}, - Author = {Dardari, D. and Tralli,V.}, - Journal = {IEEE Trans. Commun.}, - Number = {11}, - Pages = {1709-1721}, - Volume = {47}, - Year = {1999} -} - -@InBook{程根伟1999-32-36a, - author = {程根伟}, - title = {1998年长江洪水的成因与减灾对策}, - booktitle = {长江流域洪涝灾害与科技对策}, - year = {1999}, - bookauthor = {许厚泽 and 赵其国}, - publisher = {科学出版社}, - location = {北京}, - pages = {32-36}, -} - -@Article{江向东1999-4-4, - Title = {互联网环境下的信息处理与图书管理系统解决方案}, - Author = {江向东}, - Date = {1999}, - Journaltitle = {情报学报}, - Number = {2}, - Pages = {4}, - Volume = {18}, - Url = {http://www.chinainfo.gov.cn/periodical/qbxb/qbxb99/qbxb990203}, - Urldate = {2000-01-18} -} - -@Article{李晓东1999-101-106, - Title = {气候学研究的若干理论问题}, - Author = {李晓东 and 张庆红 and 叶瑾琳}, - Date = {1999}, - Journaltitle = {北京大学学报}, - Number = {1}, - Pages = {101-106}, - Volume = {35}, - Journaltitleaddon = {自然科学版} -} - -@Article{梁振兴1999-24-32, - Title = {美军一体化{C\textsuperscript{4}ISR}系统的发展研究}, - Author = {梁振兴}, - Journal = {电子展望与决策}, - Pages = {24-32}, - Year = {1999} -} - -@Article{刘武1999-2481-2488, - Title = {元谋人牙齿测量数据的统计分析及其在分类研究上的意义}, - Author = {刘武 and 郑良 and 姜础}, - Date = {1999}, - Journaltitle = {科学通报}, - Number = {23}, - Pages = {2481-2488}, - Volume = {44} -} - -@Article{莫少强1999-1-6, - Title = {数字式中文全球文献格式的设计与研究}, - Author = {莫少强}, - Date = {1999}, - Journaltitle = {情报学报}, - Number = {4}, - Pages = {1-6}, - Volume = {18}, - Url = {http://periodical.wanfangdata.com.cn/periodical/qbxb/qbxb99/qbxb9904/990407.htm}, - Urldate = {2001-07-08} -} - -@Book{唐绪军1999-117-121, - Title = {报业经济与报业经营}, - Author = {唐绪军}, - Date = {1999}, - Pages = {117-121}, - Publisher = {新华出版社}, - Location = {北京} -} - -@Proceedings{中国力学学会1999--, - Title = {第3届全国实验流体力学学术会议论文集}, - Address = {天津}, - Year = {1999}, - Editor = {中国力学学会} -} - -@Article{杨友烈1999-60-65, - Title = {DII COE的基本概念和技术特征}, - Author = {杨友烈}, - Journal = {军事通信技术}, - Pages = {60-65}, - Volume = {72}, - Month = {12}, - Year = {1999} -} - -@Proceedings{GANZHA2000--, - Title = {Computer algebra in scientific computing:CASC 2000:proceedings of the Third -Workshop on Computer Algebra in Scientific Computing, Samarkand, October 5-9, 2000}, - Date = {2000}, - Publisher = {Springer}, - Editor = {V G GANZHA and E W MAYR and E V VOROZHTSOV}, - Location = {Berlin} -} - -@Book{Gradshteyn2000--, - Title = {Tables of Integrals, Series, and Products}, - Address = {San Diego}, - Author = {Gradshteyn, I. S. and Ryzhik,I. M.}, - Edition = {Sixth Edition}, - Publisher = {CA: Academic Press, Inc.}, - Year = {2000} -} - -@Book{Parsons2000--, - Title = {The Mobile Radio Propagation Channel}, - Address = {Hoboken}, - Author = {Parsons, J. D.}, - Edition = {2}, - Publisher = {John Wiley and Sons}, - Year = {2000} -} - -@Book{Parsons2000a--, - Title = {The Mobile Radio Propagation Channel}, - Address = {Hoboken}, - Author = {PARSONS}, - Edition = {2}, - Publisher = {John Wiley and Sons}, - Year = {2000} -} - -@Book{Parsons2000b--, - Title = {The Mobile Radio Propagation Channel}, - Address = {Hoboken}, - Author = {Parsons}, - Edition = {2}, - Publisher = {John Wiley and Sons}, - Year = {2000} -} - -@Book{Parsons2000noauthor--, - Title = {The Mobile Radio Propagation Channel}, - Address = {Hoboken}, - Edition = {2}, - Publisher = {John Wiley and Sons}, - Year = {2000} -} - -@Book{Parsons2000noloc--, - Title = {The Mobile Radio Propagation Channel}, - Author = {Parsons, J. D.}, - Edition = {2}, - Publisher = {John Wiley and Sons}, - Year = {2000} -} - -@Book{Parsons2000nopub--, - Title = {The Mobile Radio Propagation Channel}, - Address = {Hoboken}, - Author = {Parsons, J. D.}, - Edition = {2}, - Year = {2000} -} - -@Book{Parsons2000nopubpages--, - Title = {The Mobile Radio Propagation Channel}, - Address = {Hoboken}, - Author = {Parsons, J. D.}, - Edition = {2}, - Pages = {15-20}, - Year = {2000} -} - -@Book{YUFIN2000--a, - Title = {Geoecology and computers}, - Author = {S. A. YUFIN}, - Publisher = {A. A. Balkema}, - Year = {2000}, - Location = {Rotterdam}, - Titleaddon = {proceedings of the Third International Conference on Advances of - Computer Methods in Geotechnical and Geoenvironmental - Engineering, Moscow, Russia, February 1-4, 2000} -} - -@Article{李炳穆2000-5-8, - Title = {理想的图书管理员和信息专家的素养与形象}, - Author = {李炳穆}, - Date = {2000}, - Journaltitle = {图书情报工作}, - Number = {2}, - Pages = {5-8} -} - -@Book{孙玉文2000--, - Title = {汉语变调构词研究}, - Author = {孙玉文}, - Publisher = {北京大学出版社}, - Year = {2000}, - Location = {北京} -} - -@Article{傅刚2000--, - Title = {大风沙过后的思考}, - Author = {傅刚 and 赵承 and 李佳路}, - Date = {2000-04-12}, - Journaltitle = {北京青年报}, - Note = {news}, - Url = {http://www.bjyouth.com.cn/Bqb/20000412/GB/4216%5ED0412B1401.htm}, - Urldate = {2005-09-28} -}% Number = {14}, - -@Newspaper{张田勤2000--, - Title = {犯罪DNA库与生命伦理学计划}, - Author = {张田勤}, - Date = {2000-11-12}, - Journaltitle = {大众科技报}, - Note = {news}, - Number = {7} -} - -@Article{丁文祥2000--, - Title = {数字革命与竞争国际化}, - Author = {丁文祥}, - Date = {2000-11-20}, - Journaltitle = {中国青年报}, - Number = {15}, - Note = {news} -} - -@Book{booknoauthor, - Title = {出版集团研究}, - Date = {2001}, - Pages = {179-193}, - Publisher = {中国书籍出版社}, - Location = {北京} -} - -@Book{booknolocation, - Title = {出版集团研究}, - Author = {余敏}, - Date = {2001}, - Pages = {179-193}, - Publisher = {中国书籍出版社} -} - -@Book{booknopages, - Title = {出版集团研究}, - Author = {余敏}, - Date = {2001}, - Publisher = {中国书籍出版社}, - Url = {www.bla~bla.org}, - Location = {北京} -} - -@Book{booknopublisher, - Title = {出版集团研究}, - Author = {余敏}, - Date = {2001}, - Location = {北京} -} - -@Book{booknopublisherpage, - Title = {出版集团研究}, - Author = {余敏}, - Date = {2001}, - Pages = {20-30}, - Location = {北京} -} - -@Article{Moeneclaey2001-497-505, - Title = {Sensitivity of multiple-access techniques to narrowband interference}, - Author = {Moeneclaey, M. and Bladel,M. V. and Sari,H.}, - Journal = {IEEE Trans. Commun.}, - Number = {3}, - Pages = {497-505}, - Volume = {49}, - Year = {2001} -} - -@Book{PEEBLES2001--, - Title = {Probability, random variable and random signal principles}, - Author = {PEEBLES, Jr., P Z}, - Edition = {4}, - Publisher = {McGraw Hill}, - Year = {2001}, - Location = {New York} -} - -@Book{Peebles2001-100-100, - Title = {Probability, random variable, and random signal Principles and \LaTeX{}}, - Address = {New York}, - Author = {von Peebles, Jr., P. Z.}, - Edition = {4}, - Pages = {100}, - Publisher = {McGraw-Hill}, - Year = {2001} -} - -@Inproceedings{Piazzo2001--, - Title = {UWB EM compatibility and coexistence issues}, - Address = {Rome, Italy}, - Author = {Piazzo, L.}, - Booktitle = {Proc. 1st Int. Workshop on Networking with UWB}, - Year = {2001} -} - -@Book{ROOD2001--, - Title = {Logic and structured design for computer programmers}, - Author = {H J ROOD}, - Date = {2001}, - Edition = {3}, - Publisher = {Brooks/Cole-Thomson Learning} -} - -@Book{Simon2001--, - Title = {Spread Spectrum Communications Handbook}, - Address = {New York City}, - Author = {Simon, M. K. and Omura,J. K. and Scholtz,R. A. and Levitt,B. K.}, - Publisher = {McGraw-Hill, Inc.}, - Year = {2001} -} - -@Book{Stueber2001--, - Title = {Principles of Mobile Communication}, - Address = {Norwell}, - Author = {Stuber, G. L.}, - Edition = {Second Edition}, - Publisher = {MA: Kluwer Academic Publishers}, - Year = {2001} -} - -@Book{余敏2001-179-193, - Title = {出版集团研究}, - Author = {余敏}, - Date = {2001}, - Pages = {179-193}, - Publisher = {中国书籍出版社}, - Location = {北京} -} - -@Book{余敏2001-179-193a, - Title = {出版集团研究}, - Author = {余敏}, - Date = {2001}, - Edition = {3}, - Pages = {179-193}, - Publisher = {中国书籍出版社}, - Location = {北京} -} - -@Book{余敏2001-179-193b, - Title = {出版集团研究}, - Author = {余敏}, - Date = {2001}, - Edition = {2}, - Pages = {179-193}, - Publisher = {中国书籍出版社}, - Location = {北京} -} - -@Book{余敏2001-179-193c, - Title = {出版集团研究}, - Author = {余敏}, - Date = {2001}, - Pages = {179-193}, - Publisher = {中国书籍出版社}, - Url = {http://www.baidu.com}, - Urldate = {2001-08-04}, - Location = {北京} -} - -@Book{赵学功2001--a, - author = {赵学功}, - title = {当代美国外交}, - year = {2001}, - publisher = {社会科学文献出版社}, - url = {http://www.baidu.com}, - urldate = {2014-06-11}, -} - -@Manual{中国第一历史档案馆2001--a, - author = {中国第一历史档案馆 and 辽宁省档案馆}, - title = {中国明朝档案总汇}, - year = {2001}, - organization = {广西师范大学出版社}, - address = {桂林}, -} - -@Article{郜宪林2001-114-116, - Title = {DII COE研究与分析}, - Author = {郜宪林}, - Journal = {计算机工程与应用}, - Number = {19}, - Pages = {114-116}, - Year = {2001} -} - -@Patent{河北绿洲生态环境科技有限公司2001--, - Title = {一种荒漠化地区生态植被综合培育种植方法}, - Author = {河北绿洲生态环境科技有限公司}, - Date = {2001-10-24}, - Number = {01129210.5}, - Url = {http://211.152.9.47/sipoasp/zlijs/hyjs-yx-new.asp?recid=01129210.5&leixin}, - Urldate = {2002-05-28} -} - -@Article{陈金成2001-1861-1864, - Title = {一种开放式体系结构经济型数控装置的研制}, - Author = {陈金成 and 杨海威 and 钟廷修}, - Journal = {上海交通大学学报}, - Number = {12}, - Pages = {1861-1864}, - Volume = {35}, - Month = {12}, - Year = {2001} -} - -@Www{萧钰2001--, - Title = {出版业信息化迈入快车道}, - Author = {萧钰}, - Url = {http://www.creader.com/news/20011219/200112190019.html}, - Urldate = {2002-04-15}, - Date = {2001-12-19} -} - -@Inproceedings{Choi2002-1075-1080, - Title = {Performance analysis of ultra-wideband spread-spectrum communications in narrowband interference}, - Address = {Anaheim, CA}, - Author = {Choi, J. D. and Stark,W. E.}, - Booktitle = {Proc. IEEE Military Commun. Conf. (MILCOM)}, - Pages = {1075-1080}, - Volume = {2}, - Year = {2002} -} - -@Inproceedings{Dardari2002-201-206, - Title = {Simple and accurate models for error probability evaluation of IEEE802.11 DS-SS physical interface in the presence of Bluetooth interference}, - Address = {Taipei}, - Author = {Dardari, D. and Pasolini,G.}, - Booktitle = {Proc. IEEE Global Telecommun. Conf. (GLOBECOM)}, - Pages = {201-206}, - Volume = {1}, - Year = {2002} -} - -@Inproceedings{Foerster2002-1931-1935, - Title = {Interference modeling of pulse-based UWB waveforms on narrowband systems}, - Address = {Birmingham, AL}, - Author = {Foerster, J. R.}, - Booktitle = {Proc. IEEE Veh. Technol. Conf.}, - Pages = {1931-1935}, - Volume = {4}, - Year = {2002} -} - -@Inproceedings{Fontana2002-309-313, - Title = {An insight into UWB interference from a shot noise perspective}, - Address = {Baltimore, MD}, - Author = {Fontana, R. J.}, - Booktitle = {Proc. of IEEE Conference on Ultrawideband Systems and Technologies (UWBST)}, - Pages = {309-313}, - Year = {2002} -} - -@Article{Haemaelaeinen2002-1712-1721, - Title = {On the UWB system coexistence with GSM900, UMTS/WCDMA, and GPS}, - Author = {Hamalainen, M. M. and Hovinen,V. and Tesi,R. and Iinatti,J. H. J. and Latvaaho, M.}, - Journal = {IEEE J. Sel. Areas Commun.}, - Number = {9}, - Pages = {1712-1721}, - Volume = {20}, - Year = {2002} -} - -@Article{Zhao2002-1684-1691, - Title = {Performance of ultra-wideband communications in the presence of interference}, - Author = {Zhao, L. and Haimovich,A. M.}, - Journal = {IEEEJ. Sel. Areas Commun.}, - Number = {9}, - Pages = {1684-1691}, - Volume = {20}, - Year = {2002} -} - -@Inproceedings{汪学军2002-22-25, - Title = {中国农业转基因生物研发进展与安全管理}, - Address = {北京}, - Author = {汪学军}, - Bookauthor = {国家环境保护总局生物安全管理办公室}, - Booktitle = {中国国家生物安全框架实施国际合作项目研讨会论文集}, - Pages = {22-25}, - Publisher = {中国环境科学出版社}, - Year = {2002} -} - -@Book{张伯伟2002--, - Title = {全唐五代诗格会考}, - Address = {南京}, - Author = {张伯伟}, - Pages = {288}, - Publisher = {江苏古籍出版社}, - Year = {2002} -} - -@Patent{西安电子科技大学2002--a, - author = {西安电子科技大学}, - title = {光折变自适应光外差探测方法}, - number = {01128777.2}, - date = {2002-03-06}, - url = {http://211.152.9.47/sipoasp/zljs/hyjs-yx-new.asp?recid=01128777.2&leixin=0}, - urldate = {2002-05-28}, -} - -@Patent{TACHIBANA2002--, - Title = {Electronic watermarking method and system}, - Author = {R TACHIBANA and S SHIMIZU and S KOBAYSHI and others}, - Date = {2002-04-25}, - Number = {US6915001}, - Url = {http://patftuspto.gov/netacgi/nph-Parser?Seetl=PTO2&Sect2=HITOFF&=1&u=/netahhml/search-bool.html&r=1&f=G&1=50&col=AND&d=ptxt&sl=`Electronic+watermarking+method+system'.TTL.&OS=TTL/}, - Urldate = {2002-05-28} -} - -@Patent{KOSEKI2002--, - Title = {Compiler}, - Author = {A KOSEKI and H MOMOSE and M KAWAHITO and others}, - Date = {2002-05-25}, - Number = {US828402}, - Url = {http://FF&p=1&u=netahtml/PTO/search-bool.html&r=5&f=G&l=50&col=AND&d=PG01&sl=IBM.AS.&0S=AN/IBM&RS=AN/IBM}, - Urldate = {2002-05-28} -} - -@Article{Chiani2003-840-845, - Title = {New exponential bounds and approximations for the computation of error probability in fading channels}, - Author = {Chiani, M. and Dardari, D. and Simon, M. K.}, - Journal = {IEEE Trans. Wireless Commun.}, - Number = {4}, - Pages = {840-845}, - Volume = {2}, - Year = {2003} -} - -@Inproceedings{Firoozbakhsh2003-473-477, - Title = {Analysis of IEEE 802.11a interference on UWB systems}, - Address = {Oulu, Finland}, - Author = {Firoozbakhsh, B. and Pratt,T. G. and Jayant,N.}, - Booktitle = {Proc. of IEEE Conference on Ultrawideband Systems and Technologies (UWBST)}, - Pages = {473-477}, - Year = {2003} -} - -@Electronic{OMG2003--, - Title = {Unified Modeling Language: Superstructure}, - Author = {{omg Inc.}}, - Url = {http://www.omg.org}, - Year = {2003} -} - -@Thesis{吴云芳2003--, - Title = {面向中文信息处理的现代汉语并列结构研究}, - Address = {北京}, - Author = {吴云芳}, - Institution = {北京大学}, - Url = {http://thesis.lib.pku.edu.cn/dlib/List.asp?lang=gb&type=Reader&DocGroupID=4&DoclD=6328}, - Urldate = {2013-10-14}, - Year = {2003} -} - -@Thesis{吴云芳2003a--, - Title = {面向中文信息处理的现代汉语并列结构研究}, - Address = {北京}, - Author = {吴云芳}, - Url = {http://thesis.lib.pku.edu.cn}, - Urldate = {2013-10-14}, - Year = {2003} -} - -@Thesis{吴云芳2003b--, - Title = {面向中文信息处理的现代汉语并列结构研究}, - Author = {吴云芳}, - Institution = {北京大学}, - Url = {http://thesis.lib.pku.edu.cn}, - Urldate = {2013-10-14}, - Year = {2003} -} - -@Thesis{吴云芳2003c--, - Title = {面向中文信息处理的现代汉语并列结构研究}, - Author = {吴云芳}, - Url = {http://thesis.lib.pku.edu.cn}, - Urldate = {2013-10-14}, - Year = {2003} -} - -@Article{Chiani2004-1312-1318, - Title = {Further results on convolutional code search for blockfading channels}, - Author = {M. Chiani and A. Conti and V. Tralli}, - Journal = {IEEE Trans. Inf. Theory}, - Number = {6}, - Pages = {1312-1318}, - Volume = {50}, - Year = {2004} -} - -@Article{Chiani2004-1312-1318a, - Title = {Further results on convolutional code search for blockfading channels-a}, - Author = {M. Chiani and A. Conti and V. Tralli}, - Pages = {1312-1318}, - Year = {2004} -} - -@Article{Chiani2004-1312-1318b, - Title = {Further results on convolutional code search for blockfading channels-b}, - Author = {M. Chiani and A. Conti and V. Tralli}, - Pages = {1312-1318}, - Year = {2004} -} - -@Article{Coulson2004-2277-2287, - Title = {Narrowband interference in pilot symbol assisted OFDM systems}, - Author = {Coulson, A. J.}, - Journal = {IEEE Trans. Wireless Commun.}, - Number = {6}, - Pages = {2277-2287}, - Volume = {3}, - Year = {2004} -} - -@Article{Dardari2004-1557-1567, - Title = {Layered video transmission on adaptive OFDM wireless systems}, - Author = {Dardari, D. and Martini,M. G. and Mazzotti, M. and Chiani,M.}, - Journal = {EURASIP Journal on Wireless Communications and Networking}, - Number = {10}, - Pages = {1557-1567}, - Year = {2004} -} - -@Book{Kopka2004--, - Title = {A Guide to LATEX and Electronic Publishing}, - Address = {Harlow, England}, - Author = {Helmut Kopka and Patrick W. Daly}, - Date = {2004}, - Edition = {4}, - Publisher = {Addison-Wesley} -} - -@Conference{Li2004-21-24, - Title = {Practical approaches to channel estimation and interference suppression for OFDM based UWB communications}, - Author = {Li, Y. and Molisch,A. F. and Zhang,J.}, - Booktitle = {Proc. of the IEEE 6th Circ. and Syst., Symp. on Emerging Technologies: Frontiers of Mobile and Wireless Communication}, - Pages = {21-24}, - Volume = {1}, - Year = {2004} -} - -@Book{Lin2004--, - Title = {Error Control Coding}, - Address = {Englewood Cliffs}, - Author = {Lin, S. and Daniel Costello,J.}, - Edition = {Second Edition}, - Publisher = {NJ:Prentice Hall}, - Year = {2004} -} - -@Book{Mittelbach2004--, - Title = {The LaTeX Companion}, - Address = {Boston}, - Author = {Frank Mittelbach and Michel Goossens and Johannes Braams and David Carlisle and Chris Rowley}, - Edition = {Second Edition}, - Publisher = {Addison-Wesley}, - Year = {2004} -} - -@Book{Simon2004--, - Title = {Digital Communication over Fading Channels}, - Address = {Hoboken}, - Author = {Simon, M. K. and Alouini,M. S.}, - Publisher = {NJ: Wiley-IEEE Press}, - Year = {2004} -} - -@PhdThesis{张若凌2004--, - Title = {高超声速非平衡流动的计算和实验研究}, - Author = {张若凌}, - School = {中国空气动力研究与发展中心}, - Year = {2004}, - Location = {绵阳} -} - -@Book{Miroslav2004--, - Title = {信号处理滤波器设计-基于matlab和mathematica的设计方法}, - Address = {北京}, - Author = {Miroslav, D. L. and Dejan, V. T. and Brian, L. E.}, - Publisher = {电子工业出版社}, - Translator = {朱义胜 and 董辉}, - Year = {2004}, - Month = {1} -} - -@Book{Miroslav2003--, - Title = {信号处理滤波器设计方法}, - Address = {北京}, - Author = {Miroslav, D. L. and Dejan, V. T.}, - Publisher = {电子工业出版社}, - Translator = {朱义胜 and 董辉}, - Year = {2003}, - Month = {1} -} - -@Article{Giorgetti2005-1037-1042, - Title = {The impact of OFDM interference on TH-PPM/BPAM transmission systems}, - Author = {Giorgetti, A. and Dardari,D.}, - Journal = {Proc. IEEE Veh. Technol. Conf.}, - Pages = {1037-1042}, - Volume = {2}, - Year = {2005} -} - -@Article{Giorgetti2005-2139-2149, - Title = {The effect of narrowband interference on wideband wireless communication systems}, - Author = {Giorgetti, A. and Chiani, M. and Win, M. Z.}, - Journal = {IEEE Trans. Commun.}, - Number = {12}, - Pages = {2139-2149}, - Volume = {53}, - Year = {2005} -} - -@Article{Giorgetti2005-384-389, - Title = {Influence of fading on the Gaussian approximation for BPSK and QPSK with asynchronous cochannel interference}, - Author = {Giorgetti, A. and Chiani,M.}, - Journal = {IEEE Trans. Wireless Commun.}, - Number = {2}, - Pages = {384-389}, - Volume = {4}, - Year = {2005} -} - -@Inproceedings{Giorgetti2005-794-798, - Title = {Coexistence of UWB and narrowband systems in Nakagami/Rice channels}, - Address = {Aalborg, Denmark}, - Author = {Giorgetti, A.}, - Booktitle = {Proc. Int. Symp. on Wireless Personal Multimedia Commun. (WPMC)}, - Pages = {794-798}, - Year = {2005} -} - -@Book{Reed2005--, - Title = {An Introduction to Ultrawideband Communication Systems}, - Address = {Upper Saddle River}, - Author = {Reed, J. H.}, - Publisher = {NJ: Prentice Hall}, - Year = {2005} -} - -@Book{樊昌信2005--, - Title = {通信原理教程}, - Address = {北京}, - Author = {樊昌信}, - Publisher = {电子工业出版社}, - Year = {2005} -} - -@Article{Coulson2006-2484-2492, - Title = {Bit error rate performance of OFDM in narrowband interference with excision filtering}, - Author = {Coulson, A. J.}, - Journal = {IEEE Trans. Wireless Commun.}, - Number = {9}, - Pages = {2484-2492}, - Volume = {5}, - Year = {2006} -} - -@Inproceedings{Giorgetti2006--, - Title = {Coexistence issues in cognitive radios based on ultra-wide bandwidth systems}, - Address = {Mykonos, Greece}, - Author = {Giorgetti, A. and Chiani, M. and Dardari,D.}, - Booktitle = {Proc. IEEE Int. Conf. on Cognitive Radio Oriented Wireless Net. and Comm. (CROWNCOM)}, - Year = {2006} -} - -@Article{Hu2006-1720-1724, - Title = {Performance of an ultra-wideband communication system in the presence of narrowband BPSK-and QPSK-modulated OFDM interference}, - Author = {Hu, B. and Beaulieu,N. C.}, - Journal = {IEEE Trans. Commun.}, - Number = {10}, - Pages = {1720-1724}, - Volume = {54}, - Year = {2006} -} - -@Article{Molisch2006-3151-3166, - Title = {A comprehensive standardized model for ultrawideband propagation channels}, - Author = {Molisch, A. F. and Cassioli, D. and Chong, C. C. and Emami, S. and Fort, A.}, - Journal = {IEEE Trans. Antennas Propag.}, - Number = {11}, - Pages = {3151-3166}, - Volume = {54}, - Year = {2006} -} - -@Article{Saito2006-169-176, - Title = {jadeite-bearing metagabbro in serpentinite m\'elange of the ``kurosegawa belt" in Izumi Town,Yatsushiro city, kumamoto prefecture, central kyushu}, - Author = {Saito, M. and Miyazaki, k.}, - Journal = {bulletin of geological survey of japan}, - Number = {5/6}, - Pages = {169-176}, - Volume = {57}, - Year = {2006} -} - -@Book{郭文彬2006--, - Title = {通信原理--基于Matlab的计算机仿真}, - Address = {北京}, - Author = {郭文彬 and 桑林}, - Publisher = {北京邮电大学出版社}, - Year = {2006} -} - -@Book{蔡敏2006--, - Title = {UML基础和Rose建模教程}, - Address = {北京}, - Author = {蔡敏 and 徐慧慧 and 黄柄强}, - Publisher = {人民邮电出版社}, - Year = {2006}, - Month = {1} -} - -@Article{Nasri2007-4090-4100, - Title = {Analysis of narrowband communication systems impaired by MB-OFDM UWB interference}, - Author = {Nasri, A. and Schober, R. and Lampe, L.}, - Journal = {IEEE Trans. Wireless Commun.}, - Number = {11}, - Pages = {4090-4100}, - Volume = {6}, - Year = {2007} -} - -@Book{Proakis2007--, - Title = {Digital signal processing: Principles,algorithms, and applications}, - Address = {北京}, - Author = {Proakis, J. G. AND Manolakis, D. G.}, - Edition = {第4版}, - Publisher = {电子工业出版社}, - Year = {2007} -} - -@Article{Quek2007-2126-2139, - Title = {Unified analysis of UWB transmitted-reference schemes in the presence of narrowband interference}, - Author = {Quek, T. Q. S. and Win,M. Z. and Dardari,D.}, - Journal = {IEEE Trans. Wireless Commun.}, - Number = {6}, - Pages = {2126-2139}, - Volume = {6}, - Year = {2007} -} - -@Article{Shi2007-1118-1128, - Title = {Impact of narrowband interference on OFDM-UWB receivers: Analysis and mitigation}, - Author = {Shi, K. and Zhou,Y. and Kelleci,B. and Fischer, T. W. and Serpedin, E.E. and Ilker Karsilayan, A.}, - Journal = {IEEE Trans.Signal Process.}, - Number = {3}, - Pages = {1118-1128}, - Volume = {55}, - Year = {2007} -} - -@Article{Snow2007-1736-1746, - Title = {Error rate analysis for coded multicarrier systems over quasistatic fading channels}, - Author = {Snow, C. and Lampe, L. and Schober,R.}, - Journal = {IEEE Trans. Commun.}, - Number = {9}, - Pages = {1736-1746}, - Volume = {55}, - Year = {2007} -} - -@Book{全国广播电视标准化技术委员会2007-1-1, - Title = {广播电视音像资料编目规范:第2部分~ 广播资料:GY/T202.2-2007}, - Address = {北京}, - Author = {全国广播电视标准化技术委员会}, - Note = {standard}, - Pages = {1}, - Publisher = {国家广播电影电视局广播电视规划院}, - Year = {2007} -} - -@Article{张敏莉2007-500-503, - Title = {超声速短化喷管的设计和试验研究}, - Author = {张敏莉 and 易仕和 and 赵玉新}, - Journal = {空气动力学报}, - Number = {4}, - Pages = {500-503}, - Volume = {25}, - Year = {2007} -} - -@Book{庄钊文2007--, - Title = {军用目标雷达散射截面预估与测量}, - Address = {北京}, - Author = {庄钊文 and 袁乃昌 and 莫锦军 and 刘少斌}, - Publisher = {科学出版社}, - Year = {2007} -} - -@Article{刘晨2007-400-404, - Title = {体系对抗仿真模型形式规范研究}, - Author = {刘晨 and 王维平 and 朱一凡}, - Journal = {系统仿真学报}, - Number = {2}, - Pages = {400-404}, - Volume = {19}, - Month = {1}, - Year = {2007} -} - -@Manual{吴凌云2007--, - Title = {CTEX FAQ}, - Author = {吴凌云}, - Version = {version 0.4}, - Month = {1}, - Subtitle = {常见问题集}, - Year = {2007} -} - -@Article{articlemorenames, - Title = {Cooperation enforcement and learning for optimizing packet forwarding in autonomous wireless networks}, - Author = {Pandana, C. and Han, Z. and Liu, K.J.R. and others}, - Journal = {Wireless Communications, IEEE Transactions on}, - Number = {8}, - Pages = {3150--3163}, - Volume = {7}, - Publisher = {IEEE}, - Year = {2008} -} - -@Inproceedings{Nasri2008-3616-3621, - Title = {Performance Evaluation of BICM-OFDM Systems Impaired by UWB Interference}, - Address = {Beijing, China}, - Author = {Nasri, A. and Schober,R. and Lampe,L.}, - Booktitle = {Proc. IEEE Int. Conf. on Commun.}, - Pages = {3616-3621}, - Year = {2008} -} - -@Book{2009-155-155, - Title = {师伏堂日记:第4册}, - Address = {北京}, - Pages = {155}, - Publisher = {北京图书馆出版社}, - Year = {2009} -} - -@Article{Chiani2009-231-254, - Title = {Coexistence between UWB and narrow-band wireless communication systems}, - Author = {Chiani, M. and Giorgetti, A.}, - Journal = {Proc. IEEE, Special Issue on UWB Technology and Emerging Applications}, - Number = {2}, - Pages = {231-254}, - Volume = {97}, - Year = {2009} -} - -@Article{Pinto2009-1268-1282, - Title = {A stochastic geometry approach to coexistence in heterogeneous wireless networks}, - Author = {Pinto, P. and Giorgetti,A. and Win,M. Z. and Chiani,M.}, - Journal = {IEEE J. Sel. Areas Commun., Special Issue on Stochastic Geometry and Random Graphs for Wireless Networks}, - Number = {7}, - Pages = {1268-1282}, - Volume = {27}, - Year = {2009} -} - -@Book{罗斯基2009--, - Title = {战前中国经济的增长}, - Address = {杭州}, - Author = {罗斯基}, - Publisher = {浙江大学出版社}, - Translator = {唐巧天 and 毛立坤 and 姜修宪}, - Year = {2009} -} - -@Book{陈希孺2009--, - Title = {概率论与数理统计}, - Address = {合肥}, - Author = {陈希孺}, - Publisher = {中国科学技术大学出版社}, - Year = {2009}, - Month = {2} -} - -@Book{李云霞2009--, - Title = {光电对抗原理与应用}, - Address = {西安}, - Author = {李云霞 and 蒙文 and 马丽华 and 赵尚弘}, - Date = {2009-02}, - Publisher = {西安电子科技大学出版社} -} - -@Article{卢秋红2009-247-251, - Title = {基于开放式架构的反恐排爆机器人关键技术分析}, - Author = {卢秋红 and 蒋金鹏 and 付西光}, - Journal = {上海电机学院学报}, - Number = {3}, - Pages = {247-251}, - Volume = {12}, - Month = {9}, - Year = {2009} -} - -@Article{张庆杰2009-30-33, - Title = {支持无人机互操作的多数据链互连网关设计}, - Author = {张庆杰 and 王林 and 朱华勇 and 沈林成}, - Journal = {计算机工程}, - Number = {20}, - Pages = {30-33}, - Volume = {35}, - Month = {10}, - Year = {2009} -} - -@Article{Park2010-696-715, - Title = {metadata quality Control in Digital repositories and collections: criteria, semantics, and mechanisms}, - Author = {Park, J R and tosaka, Y.}, - Journal = {Cataloging \& classification quarterly}, - Number = {8}, - Pages = {696-715}, - Volume = {48}, - Url = {http://www.tandfonline.com}, - Urldate = {2013-09-05}, - Year = {2010} -} - -@Article{陈建军2010-93-93, - Title = {从数字地球到智慧地球}, - Author = {陈建军}, - Journal = {国图资源导刊}, - Number = {10}, - Pages = {93}, - Volume = {7}, - Doi = {10.3969/j.issn.1672-5603.2010.10.038}, - Url = {http://d.g.wanfangdata.com.cn}, - Urldate = {2013-03-20}, - Year = {2010} -} - -@Article{储大同2010-721-724, - Title = {恶性肿瘤个体化治疗靶向药物的临床表现}, - Author = {储大同}, - Journal = {中华肿瘤杂志}, - Number = {10}, - Pages = {721-724}, - Volume = {32}, - Url = {http://www.sohu.com}, - Urldate = {2014-06-25}, - Year = {2010} -} - -@book{weiner2010-38, - Title = {Microarchaeology: beyond the visible archaeological record}, - Author = {Weiner, S}, - Address = {Cambridge, Eng.}, - Date = {2010}, - Publisher = {Cambridge University Press Textbooks}, - Url = {http://lib.MYLIB.COM/OPEN.aspx?id=253897}, - Urldate = {2013-10-14}, - pages = {38} -} - -@Article{储大同2010-721-724m, - Title = {恶性肿瘤个体化治疗靶向药物的临床表现}, - Author = {储大同}, - Journal = {中华肿瘤杂志}, - Number = {9/10}, - Pages = {721-724}, - Volume = {32}, - Doi = {10.7666/d.y351065}, - Url = {http://www.sohu.com}, - Urldate = {2014-06-25}, - Year = {2010} -} - -@Book{候文顺2010-119-119, - Title = {高分子物理:高分子材料分析、选择与改性}, - Address = {北京}, - Author = {候文顺}, - Pages = {119}, - Publisher = {化学工业出版社}, - Url = {http://apabi.lib.pku.edu.cn}, - Urldate = {2012-11-27}, - Year = {2010} -} - -@Book{胡承正2010-112-112, - Title = {理论物理概论:上}, - Address = {武汉}, - Author = {胡承正 and 周详 and 缪灵}, - Pages = {112}, - Publisher = {武汉大学出版社}, - Year = {2010} -} - -@Book{美国妇产科医师学会2010-38-39, - Title = {新生儿脑病和脑性瘫痪发病机制与病理生理}, - Address = {北京}, - Author = {美国妇产科医师学会}, - Pages = {38-39}, - Publisher = {人民卫生出版社}, - Translator = {段涛 and 杨慧霞}, - Year = {2010} -} - -@Book{全国信息文献标准化技术委员会2010-3-3, - Title = {文献著录:第4部分~ 非书资料:GB/T3792.4-2009}, - Address = {北京}, - Author = {全国信息文献标准化技术委员会}, - Note = {standard}, - Pages = {3}, - Publisher = {中国标准出版社}, - Year = {2010} -} - -@Article{伍江华2010-70-74, - Title = {C4ISR互操作框架及信息关系模型研究}, - Author = {伍江华 and 潘小群}, - Journal = {舰船电子工程}, - Number = {1}, - Pages = {70-74}, - Volume = {30}, - Year = {2010} -} - -@Book{王雪松2010--, - Title = {现代雷达电子战系统建模与仿真}, - Address = {北京}, - Author = {王雪松 and 肖顺平 and 冯德军 and 赵锋}, - Date = {2010-03}, - Publisher = {电子工业出版社} -} - -@Book{Ross2010--, - Title = {概率论基础教程}, - Address = {北京}, - Author = {Ross, S. M.}, - Edition = {第8版}, - Publisher = {人民邮电出版社}, - Translator = {郑忠国 and 詹从赞}, - Year = {2010}, - Month = {4} -} - -@Book{陈志杰2006--, - Title = {LaTeX 入门与提高}, - Address = {北京}, - Author = {陈志杰 and 赵书钦 and 李树钧 and 万福永}, - Edition = {第二版}, - Publisher = {高等教育出版社}, - Year = {2010}, - Month = {5} -} - -@Manual{Umeki2010--, - Title = {The geometry package}, - Author = {Hideo Umeki}, - Version = {v5.6}, - Month = {09}, - Year = {2010} -} - -@Report{Calkin2011-8-9, - Title = {a comparative risk assessment framework for wildland fire management: the 2010 cohesive strategy Science report: RMRS-GTR-262}, - Author = {Calkin, D and Ager, a. and Thompson, m.}, - Pages = {8-9}, - Year = {2011} -} - -@Book{Praetzellis2011-13-13, - Title = {death by theory : a tale of mystery and archaeological theory}, - Author = {Praetzellis, A.}, - Edition = {Rev. ed.}, - Pages = {13}, - Publisher = {Rowman \& Littlefield Publishing Group, Inc.}, - Url = {http://lib.myilibrary.com}, - Urldate = {2012-07-26}, - Year = {2011} -} - -@Proceedings{陈志勇2011--, - Title = {中国财税文化价值研究:“中国财税文化国际学术研讨会”论文集}, - Address = {北京}, - Author = {陈志勇}, - Publisher = {经济科学出版社}, - Url = {http://apabi.lib.pku.edu.cn}, - Urldate = {2013-10-14}, - Year = {2011} -} - -@InProceedings{贾东琴2011-45-52a, - author = {贾东琴 and 柯平}, - title = {面向数字素养的高校图书馆数字服务体系研究}, - booktitle = {中国图书馆学会年会论文集:2011年卷}, - year = {2011}, - publisher = {国家图书馆出版社}, - pages = {45-52}, - address = {北京}, - bookauthor = {中国图书馆学会}, -} - -@Inbook{楼梦麟2011-11-12, - Title = {汶川地震基岩地震动特征分析}, - Address = {上海}, - Author = {楼梦麟 and 杨燕}, - Bookauthor = {同济大学土木工程防灾国家重点实验室}, - Booktitle = {汶川地震震害研究}, - Pages = {{011-012}}, - Publisher = {同济大学出版社}, - Url = {http://apabi.lib.pku.edu.cn}, - Urldate = {2013-05-09}, - Year = {2011} -} - -@Thesis{马欢2011-27-27, - Title = {人类活动影响下海河流域典型区水循环变化分析}, - Address = {北京}, - Author = {马欢}, - Institution = {清华大学}, - Pages = {27}, - Url = {http://www.cnki.net/kcms/detail/detail.aspx?dbcode=CDFD&QueryID=.O&CurRec=11&dbname=CDFDLAST2013&.filename=1012035905.nh&uid=WEEvRE­wSIJHSldTTGJhYIJRaEhGUXFQWVB6SGZXeisxdmVhV3Zy2kpoUnozeDElbOpaMONmMjZiQ3p4TUdmcw= }, - Urldate = {2013-10-14}, - Year = {2011} -} - -@InBook{2011-1109-1109, - title = {周易外传:卷5}, - booktitle = {船山全书:第6册}, - year = {2011}, - bookauthor = {王夫之}, - publisher = {岳麓书社}, - location = {长沙}, - pages = {1109}, -} - -@Book{胡伟2011--, - Title = {LaTeX2$\varepsilon$完全学习手册}, - Address = {北京}, - Author = {胡伟}, - Publisher = {清华大学出版社}, - Year = {2011}, - Month = {1} -} - -@Manual{Oetiker2011--, - Title = {The Not So Short Introduction to \LaTeXe{}}, - Author = {Tobias Oetiker and Hubert Partl and Irene Hyna and Elisabeth Schleg}, - Month = {4}, - Year = {2011} -} - -@Article{陈高峰2011-230-232, - Title = {基于开放式框架的交叉开发环境设计与实现}, - Author = {陈高峰}, - Journal = {煤炭技术}, - Number = {6}, - Pages = {230-232}, - Volume = {30}, - Month = {6}, - Year = {2011} -} - -@Manual{Robertson2011--, - Title = {The ccaption package}, - Author = {Will Robertson and Peter Wilson and Herries Press}, - Version = {v3.2c}, - Month = {8}, - Year = {2011} -} - -@Article{谭跃进2011-441-445, - Title = {体系工程的研究与发展}, - Author = {谭跃进 and 赵青松}, - Journal = {中国电子科学研究院学报}, - Number = {5}, - Pages = {441-445}, - Volume = {6}, - Month = {10}, - Year = {2011} -} - -@Manual{Sommerfeldt2011--, - Title = {Customizing captions of floating environments}, - Author = {Axel Sommerfeldt}, - Url = {http://sourceforge.net/projects/latex-caption/}, - Month = {11}, - Year = {2011} -} - -@Article{张晓琴2011--, - Title = {有重复组合公式的几种证明方法}, - Author = {张晓琴 and 王顺勇}, - Journal = {大学数学}, - Number = {6}, - Volume = {27}, - Month = {12}, - Year = {2011} -} - -@Book{Kinchy2012-50-50, - Title = {Seeds, Sciences, and struggle : the global politics of transgenic crops}, - Address = {Cambridge,Mass.}, - Author = {Kinchy, A.}, - Pages = {50}, - Publisher = {MIT Press}, - Url = {http://lib.myilibary.com}, - Urldate = {2013-07-14}, - Year = {2012} -} - -@Book{库恩2012--, - Title = {科学革命的结构:第4版}, - Address = {北京}, - Author = {库恩}, - Edition = {2}, - Publisher = {北京大学出版社}, - Translator = {金吾伦 and 胡新和}, - Year = {2012} -} - -@Proceedings{雷光春2012--, - Title = {综合湿地管理:综合湿地管理国际研讨会论文集}, - Address = {北京}, - Author = {雷光春}, - Publisher = {海洋出版社}, - Year = {2012} -} - -@Article{于潇2012-1518-1523, - Title = {互联网药品可信交易环境中主体资质审核备案模式}, - Author = {于潇 and 刘义 and 柴跃廷 and others}, - Journal = {清华大学学报(自然科学版)}, - Number = {11}, - Pages = {1518-1523}, - Volume = {52}, - Year = {2012} -} - -@Article{于潇2011-15-23, - Title = {互联网药品可信交易环境中主体资质审核备案模式}, - Author = {于, 潇 and 刘, 义 and 柴, 跃廷 and others}, - Journal = {清华大学学报}, - Number = {11}, - Pages = {15-23}, - Volume = {52}, - Year = {2011} -} - -@Proceedings{中国社会科学院台湾史研究中心2012--, - Title = {台湾光复六十五周年暨抗战史实学术研讨会论文集}, - Address = {北京}, - Publisher = {九州出版社}, - Year = {2012}, - Editor = {中国社会科学院台湾史研究中心} -} - -@Book{埃伯哈德$ullet$蔡德勒等2012--, - Title = {数学指南-实用数学手册}, - Address = {北京}, - Author = {埃伯哈德$\bullet$蔡德勒等}, - Publisher = {科学出版社}, - Translator = {李文林等}, - Year = {2012}, - Month = {1} -} - -@Book{廖平2012--, - Title = {导弹突防中的电子对抗技术}, - Address = {北京}, - Author = {廖平 and 姜勤波}, - Date = {2012-01}, - Publisher = {国防工业出版社} -} - -@Patent{张凯军2012-04-05--, - Title = {轨道火车及高速轨道火车紧急安全制动辅助装置}, - Author = {张凯军}, - Number = {201220158825.2}, - Year = {2012-04-05} -} - -@Online{李强2012-05-03--, - Title = {化解医患矛盾需釜底抽薪}, - Author = {李强}, - Url = {http://wenku.baidu.com}, - Urldate = {2013-03-25}, - Year = {2012-05-03} -} - -@Online{Dublin2012-06-14--, - Title = {Dublin core metadata element set: version 1.1}, - Url = {http://dublincore.org}, - Urldate = {2014-06-11}, - Year = {2012-06-14} -} - -@Book{胡广书2012--, - Title = {数字信号处理—理论、算法与实现}, - Address = {北京}, - Author = {胡广书}, - Edition = {第三版}, - Publisher = {清华大学出版社}, - Year = {2012}, - Month = {10} -} - -@Article{Franz2013-1053-1062, - Title = {Phenotypic screening with oleaginous microalgae reveals modulators of lipid productivity}, - Author = {Franz,A.K. AND DANIELEWICZ, M. A. AND WONG, D. M. AND OTHERS}, - Journal = {ACS chemical biology}, - Pages = {1053-1062}, - Volume = {8}, - Url = {http://pubs.acs.org}, - Urldate = {2014-06-26}, - Year = {2013} -} - -@Article{Walls2013-399-418, - Title = {drought, deluge and declines: the impact of precipition extremes on amphibians in a changing climate}, - Author = {Walls, S C and barichivich, W. J. and BROWN, m. e.}, - Journal = {Biology}, - Number = {1}, - Pages = {399-418}, - Volume = {2}, - Url = {http://www.mdpi.com}, - Urldate = {2013-11-04}, - Year = {2013}, - doi = {10.3390/biology2010399} -} - -@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} -} - -@InBook{马克思2013-302-302a, - author = {马克思}, - title = {政治经济学批判}, - booktitle = {马克思恩格斯全集:第35卷}, - year = {2013}, - bookauthor = {马克思 and 恩格斯}, - publisher = {人民出版社}, - pages = {302}, - address = {北京}, -} - -@Article{杨洪升2013-56-75, - Title = {四库馆私家抄校书考略}, - Author = {杨洪升}, - Journal = {文献}, - Number = {1}, - Pages = {56-75}, - Year = {2013} -} - -@Book{易仕和2013--, - Title = {超声速和高超声速喷管设计}, - Address = {北京}, - Author = {易仕和 and 赵玉新 and 何霖 and 张敏莉}, - Publisher = {国防工业出版社}, - Year = {2013} -} - -@Article{詹广平2013-8-10, - Title = {美海军宙斯盾系统开放式体系结构研究}, - Author = {詹广平}, - Journal = {舰船电子工程}, - Number = {11}, - Pages = {8-10}, - Volume = {33}, - Year = {2013} -} - -@Book{中国企业投资协会2013--, - Title = {投资台湾:大陆企业赴台投资指南}, - Address = {北京}, - Author = {中国企业投资协会 and 台湾并购与私募股权协会 and 汇盈国际投资集团}, - Publisher = {九州出版社}, - Year = {2013} -} - -@Article{周学武2013-49-52, - Title = {数据链技术的发展及其在空面导弹中的应用}, - Author = {周学武 and 邹敏怀 and 张邦楚 and 黄剑斌 and 刘涛}, - Journal = {教练机}, - Number = {2}, - Pages = {49-52}, - Year = {2013} -} - -@Book{Poisel2013--, - Title = {通信电子战原理}, - Address = {北京}, - Author = {Poisel, Richard A.}, - Edition = {2版}, - Pages = {23--26}, - Publisher = {电子工业出版社}, - Translator = {聂皞 and 王振华 and 陈少昌 and 吴利民}, - Url = {http://www.baidu.com}, - Urldate = {2013-08-01}, - Year = {2013}, - Month = {1} -} - -@Article{王雪峥2013-249-254, - Title = {基于DoDAF的靶场体系结构设计}, - Author = {王雪峥 and 许雪梅}, - Journal = {系统工程理论与实践}, - Number = {1}, - Pages = {249-254}, - Volume = {33}, - Month = {1}, - Year = {2013} -} - -@Book{阎毅2013--, - Title = {软件无线电与认知无线电概论}, - Address = {北京}, - Author = {阎毅 and 贺鹏飞}, - Publisher = {电子工业出版社}, - Year = {2013}, - Month = {1} -} - -@Article{刘裕国2013-01-12--, - Title = {雾霾来袭,如何突围}, - Author = {刘裕国 and 杨柳 and 张洋 and OTHERS}, - Journal = {人民日报}, - Note = {news}, - Url = {http://paper.people.com.cn}, - Urldate = {2013-11-06}, - Year = {2013-01-12} -} - -@Report{中华人民共和国国务院新闻办公室2013-04-16--, - Title = {国防白皮书:中国武装力量的多样化运用}, - Author = {中华人民共和国国务院新闻办公室}, - Url = {http://www.mod.gov.cn}, - Urldate = {2014-06-11}, - Year = {2013}, - date = {2013-04-16} -} - -@Book{刘海洋2013--, - Title = {LaTeX 入门}, - Address = {北京}, - Author = {刘海洋}, - Publisher = {电子工业出版社}, - Year = {2013}, - Month = {6} -} - -@Unpublished{包太雷2013--, - Title = {LaTeX Notes}, - Author = {包太雷}, - Edition = {第二版}, - Month = {9}, - Subtitle = {雷太赫排版系统简介}, - Year = {2013} -} - -@Report{汤万金2013-09-30--, - Title = {人体安全重要技术标准研制最终报告: 7178999X}, - Author = {汤万金 and 杨跃翔 and 刘文 and others}, - Url = {http://www.nstrs.org.cn}, - Urldate = {2014-06-24}, - date = {2013-09-30}, - Year = {2013} -} - -@Manual{Lehman2013--, - Title = {The biblatex Package}, - Author = {Philipp Lehman and Philip Kime and Audrey Boruvka and Joseph Wright}, - Version = {version 2.8a}, - Month = {11}, - Subtitle = {Programmable Bibliographies and Citations}, - Year = {2013} -} - -@Proceedings{Babu2014--, - Title = {Proceedings of the second international conference on soft computing for problem solving, December 28-30, 2012}, - Address = {New Delhi}, - Publisher = {Springer}, - Year = {2014}, - Editor = {Babu, B. V. and NAGAR, A. K. AND DEEP, K. and others} -} - -@Book{同济大学数学系2014--, - Title = {高等数学}, - Address = {北京}, - Author = {同济大学数学系}, - Publisher = {高等教育出版社}, - Year = {2014}, - Month = {7} -} - -@Book{杨林2015--, - Title = {面向对象软件工程与UML实践教程}, - Address = {北京}, - Author = {杨林 and 叶亚琴 and 方芳}, - Publisher = {科学出版社}, - Year = {2015}, - Month = {1} -} - -@Manual{Braams2015--, - Title = {The \LaTeXe{} Sources}, - Author = {Johannes Braams and David Carlisle and Alan Jeffrey and Leslie Lamport and Frank Mittelbach and Chris Rowley and Rainer Sch¨opf}, - Date = {2015-01-01} -} - -@Manual{Lehman2015, - Title = {The Biblatex Package: Programmable Bibliographies and Citations}, - Author = {Philipp Lehman and Philip Kime and Audrey Boruvka and Joseph Wright}, - Date = {2015-04-20}, - Version = {3.0} -} - -@Book{中华人民共和国国家质量监督检验检疫总局2015, - Title = {中华人民共和国国家标准 GB/T 7714-2015 信息与文献 参考文献著录规则}, - Author = {中华人民共和国国家质量监督检验检疫总局 and 中国国家标准化管理委员会}, - Date = {2015-05-15}, - Note = {standard} -} - -@Article{高翔2015-26-31, - Title = {复杂航电架构的开放式系统标准研究}, - Author = {高翔 and 李辰}, - Journal = {航空电子技术}, - Number = {2}, - Pages = {26-31}, - Volume = {46}, - Month = {6}, - Year = {2015} -} - -@Manual{Mittelbach2015--, - Title = {An environment for multicolumn output}, - Author = {Frank Mittelbach}, - Month = {12}, - Year = {2015} -} - -@Manual{Berry2016--, - Title = {TEX Live 指南—2016}, - Author = {Karl Berry}, - Date = {2016-06} -} - -@Manual{胡振震2016, - Title = {符合 GB7714-2015 标准的 biblatex 参考文献样式文件}, - Author = {胡振震}, - Date = {2016-07-01}, - Url = {https://ctan.org/pkg/biblatex-gb7714-2015}, - Urldate = {2018-04-23} -} - -@Online{Alliance--, - Title = {WiMedia Alliance}, - Url = {www.wimedia.org} -} - -@Book{booknodate, - Title = {出版集团研究}, - Author = {余敏}, - Pages = {179-193}, - Publisher = {中国书籍出版社}, - Location = {北京} -} - -@Book{booknopublishernoyear, - Title = {出版集团研究}, - Author = {余敏}, - Location = {北京} -} - -@Online{Commonwealth--, - Title = {Pennsylvania library laws}, - Author = {{Commonwealth libraries bureau of library development.Pennsylvania department of education office}}, - Url = {http://www.racc.edu}, - Urldate = {2013-03-24} -} - -@Report{Eggrers--, - Title = {One-dimensional flows of an imperfect diatomic gas}, - Author = {Eggrers, A. J.}, - Number = {959}, - Type = {NACA report} -} - -@Online{HOPKINSON--, - Title = {UNIMARC and metadata: Dublin Core}, - Author = {A HOPKINSON}, - Url = {http://www.rfla.org/IV/rfla64/13801613.htm}, - Urldate = {1999-12-08} -} - -@Online{JabRef中文手册--, - Title = {JabRef中文手册}, - Url = {http://blog.csdn.net/zd0303/article/details/7676807} -} - -@Online{JabRefManual--, - Title = {JabRef Manual}, - Url = {http://blog.csdn.net/zd0303/article/details/7676807} -} - -@Online{OCLC--a, - author = {{Online Computer Library Center, Inc.}}, - title = {History of OCLC}, - url = {http://www.oclc.org/about/history/default.htm}, - urldate = {2000-01-08}, -} - -@Book{Parsons2000nodate--, - Title = {The Mobile Radio Propagation Channel}, - Address = {Hoboken}, - Author = {Parsons, J. D.}, - Edition = {2}, - Publisher = {John Wiley and Sons} -} - -@Book{Parsons2000nopubnoyear--, - Title = {The Mobile Radio Propagation Channel}, - Address = {Hoboken}, - Author = {Parsons, J. D.}, - Edition = {2} -} - -@Book{standardinfoiso158, - 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{鸟哥--, - Title = {鸟哥的linux私房菜}, - Author = {鸟哥}, - Edition = {3}, - Publisher = {人民邮电出版社} -} - -@Online{olqa2016--, - Title = {求助beamerposter制作海报时参考文献样式的问题}, - Date = {2016}, - Url = {http://bbs.ctex.org/forum.php?mod=viewthread&tid=153061&page=1&extra=#pid544787} -} - -@Online{北京交通大学研究生公众号2016--, - Title = {新学期定个小目标—学会在LaTeX中管理参考文献}, - Author = {北京交通大学研究生公众号}, - Date = {2016-09-17}, - Url = {http://www.latexstudio.net/archives/7488} -} - -@Online{olref2016--, - Title = {如何在LaTeX写作中管理参考文献?}, - Date = {2016-08-12}, - Url = {http://www.latexstudio.net/archives/7131} -} - -@Online{文献助手2016--, - Title = {参考文献格式搜索神器上线了}, - Author = {文献助手}, - Date = {2016-09-21}, - Url = {http://www.latexstudio.net/archives/7560} -} - -@Book{IFLAI1977b--, - Title = {Names of persons: national usages for entry in catalogues}, - Author = {{International Federation of Library Association and Institutions} and {FCC} and {FBI} and {CIA}}, - Edition = {3}, - Publisher = {IFLA International Office for UBC}, - Year = {1977}, - Location = {London} -} - -@Inproceedings{r27-BenHadjAlaya-FekiA.2008-1-5, - Title = {Interference cartography for hierarchical dynamic spectrum access}, - Address = {Chicago, IL}, - Author = {{Ben Hadj Alaya-Feki A.} and B. Sayrac and S. Ben Jemaa and E. Moulines}, - Booktitle = {Proc. IEEE Symp. on New Frontiers in Dynamic Spectrum Access Networks (DySPAN)}, - Date = {2008-10}, - Pages = {1-5} -} - -@Book{中国企业投资协会2014--, - Title = {投资台湾:大陆企业赴台投资指南}, - Address = {北京}, - Author = {{中国企业投资协会} and 台湾并购与私募股权协会 and 汇盈国际投资集团 and 国际投资集团}, - Publisher = {九州出版社}, - Year = {2014} -} - -@Book{中国企业投资协会2015--, - Title = {投资台湾:大陆企业赴台投资指南}, - Address = {北京}, - Author = {中国企业投资协会 and 台湾并购与私募股权协会 and 汇盈国际投资集团 and 国际投资集团}, - Publisher = {九州出版社}, - Year = {2015} -} - -@Manual{Tantau2015--, - Title = {The beamer class -- User Guide for version 3.36}, - Author = {Till Tantau and Joseph Wright and Vedran Miletić}, - Date = {2015-03-08}, - Url = {http://bitbucket.org/rivanvx/beamer} -} - -@Manual{Oetiker--, - Title = {一份不太简短的LATEX2ε介绍}, - Author = {Tobias Oetiker and Hubert Partl and Irene Hyna and Elisabeth Schlegl}, - Date = {2017-03}, - Translator = {ChinaTEX论坛}, - Url = {https://ctan.org/pkg/lshort-zh-cn}, - Urldate = {2018-04-23}, - Version = {5.10} -} - -@Manual{Daly2010--, - Title = {Natural Sciences Citations and References (package natbib)}, - Author = {Patrick W. Daly}, - Date = {2010-09-13}, - Url = {https://ctan.org/pkg/natbib}, - Urldate = {2018-04-27}, - Version = {8.31b} -} - -@Manual{Arseneau2010--, - Title = {chapterbib multiple bibliographies in LATEX}, - Author = {Donald Arseneau}, - Date = {2010-09-05}, - Url = {https://ctan.org/pkg/chapterbib}, - Urldate = {2018-04-23} -} - -@Manual{Shell2013--, - Title = {Mciteplus: Enhanced Multicitations}, - Author = {Michael Shell}, - Date = {2013-09-13}, - Url = {https://ctan.org/pkg/mciteplus}, - Urldate = {2018-04-23}, - Version = {1.2} -} - -@Online{Hansen2008--, - Title = {The multibib Package}, - Author = {Thorsten Hansen}, - Date = {2008-12-10}, - Url = {https://www.ctan.org/pkg/multibib}, - Urldate = {2018-05-04}, - Version = {v1.4} -} - -@Online{Seindal1994--, - Title = {Inline bibliography style}, - Author = {René Seindal}, - Date = {1994-12-06}, - Url = {https://www.ctan.org/pkg/inlinebib}, - Urldate = {2018-05-04} -} - -@Book{booknopubitems, - Title = {出版集团研究}, - Author = {余敏}, - Date = {2001}, - Pages = {50-63} -} - -@Comment{jabref-meta: databaseType:biblatex;} - -@Comment{jabref-entrytype: Newspaper: req[] opt[]} +% Encoding: UTF-8 + + +@Other{易仕和,2013, + Entryset = {易仕和2013--,Yi2013--} +} + +@book{李时珍--, +author={李时珍} +} + +@book{乔纳斯--, +author={乔纳斯} +} + +@Book{昂温1988--, + Author = {昂温, S.}, +} + +@Book{GPS1988--, + Title = {外国出版史}, + Author = {{昂温, G} and {昂温, P S}}, + Publisher = {中国书籍出版社}, + Translator = {陈生诤}, + Year = {1988}, + Location = {北京} +} + +@Book{丸山敏秋--, + Author = {丸山敏秋}, +} + +@Book{凯西尔--, + Author = {凯西尔}, +} + +@book{Einstein--, + author = {Einstein, Albert} +} + +@book{Williams-ellis--, + author = {Williams-ellis, Amabel} +} + +@book{morgan--, + author = {De Morgan, Augustus} +} + +@book{lijianning--a, + author = {{LI Jiangning}} +} + +@book{lijianning--b, + author = {Li, Jiang Ning} +} + +@book{钱学森--, + author = {钱学森 and 刘再复} +} + +@book{李四光--, + author = {李四光 and 华罗庚 and 茅以升} +} + +@book{印森林--, + author = {印森林 and 吴胜和 and 李俊飞 and 冯文杰} +} + +@book{fordham--, + author = {Evenst W. Fordham and Amiad Ali and David A. Truner and John R. Charters} +} + +@Article{anon1981-628, + title = {Coffee drinking and cancer of the pancreas}, + journal = {Br Med J}, + year = {1981}, + volume = {283}, + number = {6292}, + pages = {628} +} + +@book{中国科学院物理研究所--, + author = {{中国科学院物理研究所}} +} + +@book{贵州省土穰普查办公室--, + author = {{贵州省土穰普查办公室}} +} + +@book{AmericanChemicalSociety--, + author = {{American Chemical Society}} +} + + +@book{StanfordUniversity--, + author = {{Stanford University. Department of Civil Eng ineering}} +} + + +@book{王夫之的诠释--, + title = {王夫之“乾坤并建”的诠释面向} +} + +@book{张子正蒙注--, + title = {张子正蒙注} +} + +@book{化学动力学和反应器原理--, + title = {化学动力学和反应器原理} +} + +@book{袖珍神学--, + title = {袖珍神学,或,简明基督教词典} +} + +@article{北京师范大学学报--, + Journaltitle = {北京师范大学学报(自然科学版)} +} + +@book{Gasesinsea--, + title = {Gases in sea ice 1975-1979} +} + +@article{jmath--, + Journaltitle = {J Math \& Phys} +} + +@book{为人民服务--, + title = {为人民服务;纪念白求恩;愚公移山} +} + +@book{编者1964--, + title = {为人民服务;纪念白求恩;愚公移山}, + address= {北京}, + publisher={人民出版社}, + date ={1964}, + pages= {1-3;7-11;31-35} +} + +@book{大趋势--, + title = {大趋势} +} + +@book{地壳运动--, + title = {地壳运动假说:从大陆漂移到板块构造} +} + +@book{三松堂--, + title = {三松堂全集:第4卷} +} + +@book{世界出版业--, + title = {世界出版业:美国卷} +} + +@book{ECL集成电路--, + title = {ECL集成电路:原理与设计} +} + +@book{中国科学技术史--, + title = {中国科学技术史:第2卷~~~~科学思想史} +} + +@article{商鞅战秋菊--, + title = {商鞅战秋菊:法治转型的一个思想实验} +} + +@article{中国科学--, + title = {中国科学:D辑~~~~地球科学} +} + +@Standard{信息与文献--, + title = {信息与文献---都柏林核心元数据元素集:GB/T 25100—2010} +} + +@Standard{全国信息与文献标准化技术委员会2010-2-3, + author = {全国信息与文献标准化技术委员会}, + title = {信息与文献\ \ \ \ 都柏林核心元数据元素集: GB/T 25100—2010}, + year = {2010}, + address = {北京}, + pages = {2--3}, + publisher = {中国标准出版社}, +} + +@report{中子反射--, + title = {中子反射数据分析技术:CNIC-01887} +} + +@article{AsianPacificjournal--, + Journaltitle = {Asian Pacific journal of eancer prevention: e-only} +} + + +@book{egbookeda--, + title = {中文书}, + edition={3} +} + +@book{egbookedb--, + title = {中文书}, + edition={新1版} +} + +@book{egbookedc--, + title = {中文书}, + edition={明刻本} +} + +@book{egbookedd--, + title = {english book}, + edition={5} +} + +@book{egbookede--, + title = {english book}, + edition={Rev. ed.} +} + +@book{egbookpuba--, + title = {中文书}, + date = {2013}, + address = {北京}, + publisher = {人民出版社}, +} + +@book{egbookpubb--, + title = {english book}, + date = {2012}, + address = {New York}, + publisher = {Academic Press}, +} + +@book{egbookpubaddressa--, + title = {english book}, + address = {Cambridge, Eng.}, + publisher = {Academic Press}, +} + +@book{egbookpubaddressb--, + title = {english book}, + address = {Cambridge, Mass.}, + publisher = {Academic Press}, +} + +@book{egbookpubaddressc--, + title = {中文书}, + date = {2013}, + address = {北京 and 上海}, + publisher = {科学出版社}, +} + +@book{egbookpubaddressd--, + title = {english book}, + date = {2000}, + address = {London and Boston and Durban and Syngapore and Sydney and Toronto and Wellington}, + publisher = {Butterworths}, +} + +@book{egbookpubaddresse--, + title = {中文书}, + date = {1990}, + publisher = {三户图书刊行社}, +} + +@book{egbookpubaddressf--, + title = {english book}, + date = {1975}, + publisher = {MacMillan}, +} + +@online{egbookpubaddressg--, + date = {2011}, + pages ={105}, + url={http://lib.myilibrary.com/Open.aspx?id=312377}, + urldate={2014-06-16}, + publisher = {Open University Press}, +} + + + +@book{egbookpubpublishera--, + title = {中文书}, + address = {北京}, + publisher = {中国标准出版社}, +} + +@book{egbookpubpublisherb--, + title = {english book}, + address = {Cambridge}, + publisher = {Elsevier Science Publishers}, +} + +@book{egbookpubpublisherc--, + title = {english book}, + address = {Cambridge}, + publisher = {IRRI}, +} + +@book{egbookpubpublisherd--, + title = {english book}, + address = {Chicago}, + publisher = {ALA and CLA}, + date ={1978} +} + +@book{egbookpubpublishere--, + title = {中文书}, + address = {哈尔滨}, + date ={2013} +} + +@book{egbookpubpublisherf--, + title = {english book}, + address = {Salt Lake City}, + date ={1964} +} + + +@book{egbookpubdatea--, + title = {中文书}, + year ={1947(民国三十六年)} +} + +@book{egbookpubdateb--, + title = {中文书}, + year ={1705(康熙四十四年)} +} + +@newspaper{egbookpubdatec--, + title = {中文书}, + date ={2013-01-08} +} + +@book{egbookpubdated--, + title = {中文书}, + year ={c1988} +} + +@book{egbookpubdatee--, + title = {中文书}, + year ={1985印刷} +} + +@book{egbookpubdatef--, + title = {中文书}, + year ={[1936]} +} + + +@online{egbookpubdateg--, + title = {english book}, + date = {2012-05-03}, + urldate={2013-11-12}, +} + +@Book{曹凌2011-19-, + author = {曹凌}, + title = {中国佛教疑伪经综录}, + year = {2011}, + publisher = {上海古籍出版社}, + address = {上海}, + pages ={19} +} + +@Book{钱学森2001--, + author = {钱学森}, + title = {创建系统学}, + year = {2001}, + publisher = {山西科学技术出版社}, + address = {太原}, + pages ={序2-3} +} + +@Book{冯友兰2008--, + author = {冯友兰}, + title = {冯友兰自选集}, + year = {2008}, + publisher = {北京大学出版社}, + address = {北京}, + edition ={2}, + pages ={第1版自序} +} + +@inbook{李约瑟1991--, + author = {李约瑟}, + title = {题词}, + bookauthor = {苏克福 and 管成学 and 邓明鲁}, + booktitle = {苏颂与《本草图经》研究}, + year = {1991}, + publisher = {长春出版社}, + address = {长春}, + pages = {扉页} +} + +@ARTICLE{DUBAR2013--, + author = {DUBAR, K L. AND MITCHELL, D A.}, + title = {Revealing nature's synthetic potential through the study of ribosomal natural product biosynthesis}, + Journaltitle = {ACS chemical biology}, + DATE = {2013}, + VOLUME = {8}, + pages = {473-487}, + url = {http://pubs.acs.org/doi/pdfplus/10.1021/cb3005325}, + urldate = {2013-10-16} +} + +@Book{周鲁卫2011--, + author = {周鲁卫}, + title = {软物质物理导论}, + year = {2011}, + publisher = {复旦大学出版社}, + address = {上海}, + pages = {1} +} + +@ARTICLE{常森2013--, + author = {常森}, + title = {《五行》学说与《荀子》}, + Journaltitle = {北京大学学报(哲学社会科学版)}, + DATE = {2013}, + VOLUME = {50}, + number = {1}, + pages = {75}, +} + +@Book{RUDDOCK2009--, + author = {RUDDOCK, L.}, + title = {Economics for the modern built environment}, + year = {2009}, + publisher = {Taylor & Francis}, + address = {London}, + pages = {12}, + url = {http://lib.mylib.com}, + urldate = {2010-06-15}, +} + +@book{kereanrefa, + AUTHOR = {김세훈 and others}, + TITLE = { 도서판및특서진흥업 개정안 연구}, + DATE = {2003}, + address={서울}, + PAGES = {15}, + publisher = {한국운화관팡정책연구원}, +} +%%김세훈, 외. 도서판및특서진흥업 개정안 연구〔M〕, 서울; 한국운화관팡정책연구원,2003: 15. + + +@book{kereanrefb, + AUTHOR = {이냉목 }, + TITLE = { 도서관꺾규총람: 세 1 권}, + DATE = {2005}, + address={서울}, + PAGES = {67-68}, + publisher = {구미무역 출판부}, +} +%%이냉목 도서관꺾규총람: 세 1 권[M〕. 서울: 구미무역 출판부,2005: 67-68. +%% + +@Book{李炳穆2005--, + author = {李炳穆}, + title = {图书馆法柜总览:第1卷}, + year = {2005}, + publisher = {九美贸易出版部}, + address = {首尔}, + pages = {67-68} +} + + +@article{kereanrefc, + DATE = {2007}, + volume={48}, + number={7}, + PAGES = {11-12}, + journaltitle={ 圖書館文化}, + TITLE = {도서관 정보정책위원회 설립식 및 도서관 정보정책기획단신성}, +} +%%도서관 정보정책위원회 설립식 및 도서관 정보정책기획단신성. 圖書館文化,2007 ,48(7): 11-12. + +@ARTICLE{图书馆信息政策委员会2007--, + title = {图书馆信息政策委员会成立仪式与图书馆信息政策规划团}, + Journaltitle = {图书馆文化}, + DATE = {2007}, + VOLUME = {48}, + number = {7}, + pages = {11-12}, +} + +@book{japaneserefc, + AUTHOR = {図書館用語辞典編集委員会}, + TITLE = { 最新図書館用語大辞典}, + DATE = {2004}, + address={東京}, + PAGES = {154}, + publisher = {柏書房株式会社}, +} +%% +%%図書館用語辞典編集委員会.最新図書館用語大辞典[M].東京:柏書房株式会社,2004:154. +%% + +@article{russianrefc, + author={Кочекоs, А Я}, + TITLE = {Молибден-медно-эолотопорфиооое месторождение Рябиноосе}, + DATE = {1993}, + number={7}, + PAGES = {50-58}, + journaltitle={Отечестsенная гелогия} +} +%%Кочекоs А Я. Молибден-медно-эолотопорфиооое месторождение Рябиноосе[J/ОL]. ,1993(7):50-58 + +@ARTICLE{熊平2005--, + author = {熊平 and 吴颉}, + title = {从交易费用的角度谈如何构建药品流通的良性机制}, + Journaltitle = {中国物价}, + DATE = {2005}, + number = {8}, + pages = {42-45}, +} + +@ARTICLE{xiong2005--, + author = {Xiong, Ping and Wu, Xie}, + title = {Discussion on how to construct benign medicine circulantion mechanism fromtranaction cosperspective}, + Journaltitle = {China price}, + DATE = {2005}, + number = {8}, + pages = {42-45}, +} + +@ARTICLE{上海市食品药品监督管理局课题组2008--, + author = {上海市食品药品监督管理局课题组}, + title = {互联网药品经营现状和监管机制的研究}, + Journaltitle = {上海食品药品监管情报研究}, + DATE = {2008}, + number = {1}, + pages = {8-11}, +} + +@ARTICLE{Rgsfda2008--, + author = {{Research Group of Shanghai Food and Drug Administration}}, + title = {A study on online pharmaceutical operating situation and supervision mechanism}, + Journaltitle = {Shanghai food and drug information research}, + DATE = {2008}, + number = {1}, + pages = {8-11}, +} + + +@PhdThesis{刘乃安2000-17-18, + author = {刘乃安}, + title = {生物质材料热解失重动力学及其分析方法研究}, + year = {2000}, + pages = {17--18}, + doi = {10.7666/d.y351065}, + url = {http://wenku.baidu.com/link?url=GJDJxb4lxBUXnIPmq1XoEGSIr1H8TMLbidW_LjlYu33tpt707u62rKliypU_FBGUmox7ovPNaVIVBALAMd5yfwuKUUOAGYuB7cuZ-BYEhXa}, + urldate = {2014-08-29}, + address = {安徽}, + school = {中国科学技术大学}, +} + +@book{Deverell2013-21-22, + author = {Deverell, William and Igler, David}, + title = {A Companion to {California} History}, + year = {2013}, + date = {2013-11-15}, + pages = {21--22}, + doi = {10.1002/9781444305036.ch2}, + url = {http://onlinelibrary.wiley.com/doi/10.1002/9781444305036.ch2/summary}, + urldate = {2014-06-24}, + address = {New York}, + school = {John Wiley \& Sons}, +} + +@inbook{姚中秋2009--, + author = {姚中秋}, + title = {作为一种制度变迁模式的“转型”}, + bookauthor = {罗卫东 and 姚中秋}, + booktitle = {中国转型的理论分析:奥地利学派的视角}, + year = {2009}, + publisher = {浙江大学出版社}, + address = {杭州}, + pages = {44} +} + +@inbook{姚中秋2008--, + author = {姚中秋}, + title = {一种制度变迁模式}, + bookauthor = {罗, 卫东 and 姚, 中秋}, + booktitle = {中国转型的理论分析}, + year = {2008}, + publisher = {浙江大学出版社}, + address = {杭州}, + pages = {44} +} + + +@ARTICLE{关立哲2014--, + author = {关立哲 and 韩纪富 and 张晨延}, + title = {科技期刊编辑审读中要注重比较思维的科学运用}, + Journaltitle = {编辑学报}, + DATE = {2014}, + VOLUME = {26}, + number = {2}, + pages = {144-146} +} + +@ARTICLE{TENOPIR1987--, + author = {TENOPIR, C.}, + title = {Online databases, quality control}, + Journaltitle = {Library journal}, + DATE = {1987}, + VOLUME = {113}, + number = {2}, + pages = {124-125} +} + +@ARTICLE{egdatevolnumpagea--, + title = {article of journal}, + DATE = {2001}, + VOLUME = {1}, + number = {1}, + pages = {5-6} +} + +@ARTICLE{egdatevolnumpageb--, + title = {article of journal}, + DATE = {2014}, + VOLUME = {510}, + pages = {356-363} +} + +@ARTICLE{egdatevolnumpagec--, + title = {article of journal}, + DATE = {2010}, + number = {6}, + pages = {23} +} + +@ARTICLE{egdatevolnumpaged--, + title = {article of journal}, + DATE = {2012}, + VOLUME = {22}, + number = {增刊2}, + pages = {81-86} +} + +@ARTICLE{egdatevolnumpagee--, + title = {article of journal}, + DATE = {2001}, + number = {9/10}, + pages = {36-39} +} + +@ARTICLE{egdatevolnumpagef--, + title = {article of journal}, + year = {2011, 33(2):20-25;2011, 33(3):26-30}, +} + +@newspaper{egdatevolnumpageg--, + title = {article of journal}, + date = {2013-03-16}, + number = {1} +} + + +@Book{尼葛洛庞帝1996--, + author = {尼葛洛庞帝}, + title = {数字化生存}, + year = {1996}, + translator = {胡泳 and 范海燕}, + publisher = {海南出版社}, + address = {海口}, +} + +@Book{汪冰1997-16-16, + author = {汪冰}, + title = {电子图书馆理论与实践研究}, + year = {1997}, + publisher = {北京图书馆出版社}, + pages = {16}, + address = {北京}, +} + +@Article{杨宗英1996-24-29, + author = {杨宗英}, + title = {电子图书馆的现实模型}, + journal = {中国图书馆学报}, + year = {1996}, + number = {2}, + pages = {24--29}, +} + +@Book{Baker1995--, + author = {Baker, S K and Jackson, M E}, + title = {The future of resource sharing}, + year = {1995}, + publisher = {The Haworth Press}, + address = {New York}, +} + +@Book{Chernik1982--, + author = {Chernik, B E}, + title = {Introduction to library services for library technicians}, + year = {1982}, + publisher = {Libraries Unlimited, Inc.}, + address = {Littleton, Colo.}, +} + + +@Article{Dowler1995-5-26, + author = {Dowler, L}, + title = {The research university’s dilemma: resource sharing and research in a transinstitutional environment}, + journal = {Journal of library administration}, + year = {1995}, + volume = {21}, + number = {1/2}, + pages = {5--26}, +} + + +@Inproceedings{ref-replace-char, + Title = {Cognitive Radio and Cooperative Strategies for Power Saving in Multi-Standard Wireless Devices}, + Address = {Florence, Italy}, + Author = {Rodriguez, J. and P. Marques and A. Radwan and K. Moessner and R. Tafazolli and others}, + Booktitle = {Future % Network \& Mobile # Summit 2010}, + Date = {June 2010} +} + +@Online{olnoauthorcn, + Title = {如何在LaTeX写作中管理参考文献?}, + Date = {2016-08-12}, + Url = {http://www.latexstudio.net/archives/7131} +} + +@Online{Allianceurlonly, + Url = {www.wimedia.org} +} + +@Online{olnoauthoren, + Title = {Dublin Core metadata element set: version 1.1}, + Url = {http://dublincore.org}, + Urldate = {2014-06-11}, + Year = {2012-06-14} +} + +@Article{王临慧2010-147, + author = {王临慧 and others}, + title = {天津方言的源流关系刍议}, + journal = {山西师范大学学报(社会科学版)}, + year = {2010}, + volume = {37}, + number = {4}, + pages = {147}, +} + + +@InProceedings{王临慧2010-138, + author = {王临慧}, + title = {从几组声母的演变看天津方言形成的自然条件和历史条件}, + bookauthor= {曹志耘}, + booktitle = {汉语方言的地理语言学研究:首届中国地理语言学国际学术研讨会论文集}, + year = {2010}, + publisher = {北京语言大学出版社}, + pages = {138}, + address = {北京}, +} + +@Book{王夫之1845--, + Title = {宋论}, + Author = {王夫之}, + Edition = {刻本}, + Publisher = {曾氏}, + Year = {1845(清同治四年)}, + Location = {金陵} +} + +@Book{汪昂1881--, + Title = {增订本草备要:四卷}, + Address = {京都}, + Author = {汪昂}, + Edition = {刻本}, + Publisher = {老二酉堂}, + Year = {1881(清光绪七年)}, + Location = {京都} +} + +@Periodical{AAAS1883--, + Title = {Science}, + Date = {1883}, + Editor = {{American Association for the Advancement of Science}}, + Number = {1}, + Volume = {1}, + Location = {Washington, D.C.}, + Publisher = {American Association for the Advancement of Science} +} + +@Book{汪昂1912--, + Title = {(增补)本草备要}, + Author = {汪昂}, + Edition = {石印本}, + Publisher = {同文书局}, + Year = {1912}, + Location = {上海} +} + +@Periodical{中国地质学会1936--, + Title = {地质评论}, + Date = {1936}, + Editor = {中国地质学会}, + Number = {1}, + Volume = {1}, + Location = {北京}, + Publisher = {地质出版社} +} + + +@Book{1962-50-50, + Title = {康熙字典:已集上:水部}, + Address = {北京}, + Edition = {同文书局影印本}, + Pages = {50}, + Publisher = {中华书局}, + Year = {1962} +} + +@Proceedings{ROSENTHALL1963--, + Title = {Proceedings of the Fifth Canadian Mathematical Congress, University of Montreal, 1961}, + Date = {1963}, + Publisher = {University of Toronto Press}, + Editor = {E M ROSENTHALL}, + Location = {Toronto} +} + +@Thesis{CALMS1965--, + Title = {Infrared spectroscopic studies on solid oxygen}, + Author = {R B CALMS}, + Date = {1965}, + Institution = {Univ. of California}, + Location = {Berkeley} +} + +@Report{WHO1970--, + Title = {Factors regulating the immune response}, + Author = {{World Health Organization}}, + Date = {1970}, + Institution = {WHO}, + Location = {Geneva}, + Titleaddon = {report of WHO Scientific Group} +} + +@Inproceedings{FOURNEY1971-17-38, + Title = {Advances in holographic photoelasticity}, + Author = {M E FOURNEY}, + Booktitle = {Symposium on Applications of Holography in Mechanics, August 23-25, 1971, University of Southern California, Los Angeles, California}, + year = {c1971}, + Pages = {17-38}, + Publisher = {ASME}, + Location = {New York} +} + +@Inproceedings{FOURNEY1971-17-38a, + Title = {Advances in holographic photoelasticity}, + Author = {M E FOURNEY}, + Bookauthor = {{American Society of Mechanical Engineers.Applied Mechanics Division}}, + Booktitle = {Symposium on Applications of Holography in Mechanics, August 23-25, 1971. University of Southern California, Los Angeles, California}, + Date = {1971}, + Pages = {17-38}, + Publisher = {ASME}, + Location = {New York} +} + +@TechReport{Humphrey1971--, + Title = {The sonic throat method and real gas one-dimensional flow: an application to air and nitrogen}, + Author = {Humphrey, Richard L. and Wagner, Jerry L.}, + Year = {1971}, + Number = {730029}, + Type = {AD} +} + +@Book{CRANE1972--, + Title = {Invisible college}, + Author = {D. Crane}, + Date = {1972}, + Publisher = {Univ. of Chicago Press}, + Location = {Chicago} +} + + + +@Article{KENNEDY1975-311-386, + Title = {Morphology and genesis of nodular chalks and hardgrounds in the Upper + Cretacesous of southern England}, + Author = {W. J. KENNEDY and R. E. GARRISON}, + Date = {1975}, + Journaltitle = {Sedimentology}, + Pages = {311-386}, + Volume = {22} +} + +@Article{KENNEDY1975-339-360, + Title = {Morphology and genesis of nodular phosphates in the cenomanian of South-east England}, + Author = {W. J. KENNEDY and R. E. GARRISON}, + Date = {1975}, + Journaltitle = {Lethaia}, + Pages = {339-360}, + Volume = {8} +} + +@Inbook{1977-49-49, + Title = {宋史卷三:本纪第三}, + Address = {北京}, + Booktitle = {宋史:第1册}, + Pages = {49}, + Publisher = {中华书局}, + Year = {1977} +} + +@Book{IFLAI1977--, + Title = {Names of persons: national usages for entry in catalogues}, + Author = {{International Federation of Library Association and Institutions}}, + Edition = {3}, + Publisher = {IFLA International Office for UBC}, + Year = {1977}, + Location = {London} +} + + +@InProceedings{张忠智1997-33-34, + author = {张忠智}, + title = {科技书刊的总编(主编)的角色要求}, + booktitle = {中国科学技术期刊编辑学会建会十周年学术研讨会论文汇编}, + year = {1997}, + editor = {中国科学技术期刊编辑学会}, + publisher = {中国科学技术期刊编辑学会学术委员会}, + pages = {33--34}, + address = {北京}, +} + +@Book{中国社会科学院语言研究所词典编辑室1996--, + author = {中国社会科学院语言研究所词典编辑室}, + title = {现代汉语词典}, + year = {1996}, + edition = {修订本}, + publisher = {商务印书馆}, + address = {北京}, +} + + +@Article{刘彻东1998-38-39, + Title = {中国的青年刊物}, + Author = {刘彻东}, + Date = {1998}, + Journaltitle = {中国出版}, + Number = {5}, + Pages = {38-39}, + Titleaddon = {个性特色为本} +} + +@InProceedings{裴丽生1981-2-10, + author = {裴丽生}, + title = {在中国科协学术期刊编辑工作经验交流会上的讲话}, + booktitle = {中国科协学术期刊编辑工作经验交流会资料选}, + year = {1981}, + editor = {中国科学技术协会}, + publisher = {中国科学技术协会学会工作部}, + pages = {2--10}, + address = {北京}, +} + + +@Article{亚洲地质图编目组1978-194-208, + Title = {亚洲地层与地质历史概述}, + Author = {亚洲地质图编目组}, + Date = {1978}, + Journaltitle = {地质学报}, + Pages = {194-208}, + Volume = {3} +} + +@Inbook{BUSECK1980-117-211, + Title = {Subsolidus phenomena in pyroxenes}, + Author = {P R BUSECK and NORD, Jr., G L and D R VEBLEN}, + Bookauthor = {CT PREWITT}, + Booktitle = {Pyroxense}, + year = {c1980}, + Pages = {117-211}, + Publisher = {Mineralogical Society of America}, + Location = {Washington, D.C.} +} + +@Inbook{陈晋镳1980-56-114, + Title = {蓟县震旦亚界研究}, + Author = {陈晋镳 and 张惠民 and 朱士兴 and others}, + Bookauthor = {中国地质科学院天津地质矿产研究所}, + Booktitle = {中国震旦亚界}, + Pages = {56-114}, + Publisher = {天津科学出版社}, + Location = {天津}, + Year = {1980} +} + +@Article{Sunstein1996-903-903, + author = {Sunstein, Cass R.}, + title = {Social Norms and Social Roles}, + journal = {Columbia law review}, + year = {1996}, + volume = {96}, + pages = {903}, + url = {http://www.heinonline.org/HOL/Page?handle=hein.journals/clr96&id=913&collection=journals&index=journals/clr}, + urldate = {2012-01-26}, +} + +@Book{罗杰斯2011-15-16, + author = {罗杰斯}, + title = {西方文明史: 问题与源头}, + year = {2011}, + translator = {潘惠霞 and 魏婧 and 杨艳 and others}, + publisher = {东北财经大学出版社}, + pages = {15--16}, + address = {大连}, +} + +@Book{陈登原2000-29-29, + author = {陈登原}, + title = {国史旧闻: 第1卷}, + year = {2000}, + publisher = {中华书局}, + pages = {29}, + address = {北京}, +} + +@Book{哈里森沃尔德伦2012-235-236, + author = {哈里森·沃尔德伦}, + title = {经济数学与金融数学}, + year = {2012}, + translator = {谢远涛}, + publisher = {中国人民大学出版社}, + pages = {235--236}, + address = {北京}, +} + +@Book{北京市政协民族和宗教委员会2012-112-112, + author = {北京市政协民族和宗教委员会 and 北京联合大学民族与宗教研究所}, + title = {历代王朝与民族宗教}, + year = {2012}, + publisher = {民族出版社}, + pages = {112}, + address = {北京}, +} + + +@Book{徐光宪2010--, + author = {徐光宪 and 王祥云}, + title = {物质结构}, + year = {2010}, + publisher = {科学出版社}, + address = {北京}, +} + +@Book{顾炎武1992--, + author = {顾炎武}, + title = {昌平山水记:京东考古录}, + year = {1992}, + publisher = {北京古籍出版社}, + address = {北京}, +} + +@Book{王夫之1865--, + author = {王夫之}, + title = {宋论}, + year = {1865(清同治四年)}, + edition = {刻本}, + publisher = {湘乡曾国荃}, + address = {金陵}, +} + +@Proceedings{牛志明2012--, + title = {综合湿地管理国际研讨会论文集}, + year = {2012}, + editor = {牛志明 and 斯温兰德 and 雷光春}, + publisher = {海洋出版社}, + address = {北京}, +} + +@Archive{中国第一历史档案馆2001--, + author = {中国第一历史档案馆 and 辽宁省档案馆}, + title = {中国明朝档案总汇}, + year = {2001}, + address = {桂林}, + publisher = {广西师范大学出版社}, +} + +@PhdThesis{杨保军2012--, + author = {杨保军}, + title = {新闻道德论}, + year = {2010}, + url = {http://apabi.lib.pku.edu.cn/usp/pku/pub.mvc?pid=book.detail&metaid=m.20101104-BPO-889-1023&cult=CN}, + urldate = {2012-11-01}, + address = {北京}, + publisher = {中国人民大学出版社}, +} + +@Book{赵学功2001--, + author = {赵学功}, + title = {当代美国外交}, + year = {2001}, + publisher = {社会科学文献出版社}, + url = {http://www.cadal.zju.edu.cn/book/trySinglePage/33023884/1}, + urldate = {2014-06-11}, + address = {北京}, +} + +@Book{同济大学土木工程防灾国家重点实验室2011-5-6, + author = {同济大学土木工程防灾国家重点实验室}, + title = {汶川地震灾害研究}, + year = {2011}, + publisher = {同济大学出版社}, + pages = {5--6}, + url = {http://apabi.lib.pku.edu.cn/usp/pku/pub.mvc?pid=book.detail&metaid=m.20120406-YPT-889-0010}, + urldate = {2013-05-09}, + address = {上海}, +} + +@Book{中国造纸学会2003--, + author = {中国造纸学会}, + title = {中国造纸年鉴: 2003}, + year = {2003}, + publisher = {中国轻工业出版社}, + url = {http://www.cadal.zju.edu.cn/book/view/25010080}, + urldate = {2014-04-25}, + address = {北京}, +} + + +@Proceedings{Yufin2000--, + title = {Geoecology and computers: proceedings of the {Third International Conference on Advances of Computer Methods in Geotechnical and Geoenvironmental Engineering, Moscow, Russia, February 1--4, 2000}}, + year = {2000}, + editor = {Yufin, Sergey A}, + publisher = {A. A. Balkema}, + address = {Rotterdam}, +} + +@Book{Baldock2011-105-105, + author = {Baldock, Peter}, + title = {Developing early childhood services: past, present and future}, + year = {2011}, + publisher = {Open University Press}, + pages = {105}, + url = {http://lib.myilibrary.com/Open.aspx?id=312377}, + urldate = {2012-11-27}, +} + +@Book{Fan2013-25-26, + author = {Fan, Xuetong and Sommers, Christopher H.}, + title = {Food irradiation research and technology}, + year = {2013}, + edition = {2}, + publisher = {Blackwell Publishing}, + pages = {25--26}, + url = {http://onlinelibrary.wiley.com/doi/10.1002/9781118422557.ch2/summary}, + urldate = {2014-06-26}, + address = {Ames, Iowa}, +} + + +@Inbook{王夫之2011-1109-1109, + title = {周易外传:卷 5}, + booktitle = {船山全书}, + year = {2011}, + editor = {王夫之}, + number = {6}, + publisher = {岳麓书社}, + pages = {1109}, + address = {长沙}, +} + +@Inbook{程根伟1999-32-36, + author = {程根伟}, + title = {1998 年长江洪水的成因与减灾对策}, + booktitle = {长江流域洪涝灾害与科技对策}, + year = {1999}, + editor = {许厚泽 and 赵其国}, + publisher = {科学出版社}, + pages = {32--36}, + address = {北京}, +} + +@Inbook{陈晋镳1980-56-114a, + author = {陈晋镳 and 张惠民 and 朱士兴 and 赵震 and 王振刚}, + title = {蓟县震旦亚界研究}, + booktitle = {中国震旦亚界}, + year = {1980}, + editor = {中国地质科学院天津地质矿产研究所}, + publisher = {天津科学技术出版社}, + pages = {56--114}, + address = {天津}, +} + +@Inbook{马克思2013-302-302, + author = {马克思}, + title = {政治经济学批判}, + booktitle = {马克思恩格斯全集}, + year = {2013}, + editor = {马克思 and 恩格斯}, + volume = {35}, + publisher = {人民出版社}, + pages = {302}, + address = {北京}, +} + + + + + +@InProceedings{贾东琴2011-45-52, + author = {贾东琴 and 柯平}, + title = {面向数字素养的高校图书馆数字服务体系研究}, + booktitle = {中国图书馆学会年会论文集: 2011年卷}, + year = {2011}, + editor = {中国图书馆学会}, + publisher = {国家图书馆出版社}, + pages = {45--52}, + address = {北京}, +} + +@Inbook{Weinstein1974-745-772, + author = {Weinstein, L and Swertz, M N}, + title = {Pathogenic properties of invading microorganism}, + booktitle = {Pathologic physiology: mechanisms of disease}, + year = {1974}, + editor = {Sodeman, Jr., William A and Sodeman, William A}, + publisher = {Saunders}, + pages = {745--772}, + address = {Philadelphia}, +} + +@InBOOK{Roberson2011-1-36, + author = {Roberson, J. Alan and Burneson, Eric G.}, + title = {Drinking water standards, regulations and goals}, + booktitle = {Water quality \& treatment: a handbook on drinking water}, + year = {2011}, + editor = {{American Water Works Association}}, + edition = {6}, + publisher = {McGraw-Hill}, + pages = {1.1--1.36}, + url = {http://lib.myilibrary.com/Open.aspx?id=291430}, + urldate = {2012-12-10}, + address = {New York}, +} + +@Periodical{中华医学会湖北分会1984----, + title = {临床内科杂志}, + year = {1984}, + volume = {1}, + number = {1}, + address = {武汉}, + author = {中华医学会湖北分会}, + publisher = {中华医学会湖北分会}, +} + +@Periodical{中国图书馆学会1957--1990--, + title = {图书馆学通讯}, + year = {1957/1990}, + number = {1-4}, + address = {北京}, + author = {中国图书馆学会}, + publisher = {北京图书馆}, +} + +@Periodical{中国图书馆学会1957--, + Title = {图书馆学通信}, + Address = {北京}, + Date = {1957/1990}, + Editor = {中国图书馆学会}, + Institution = {北京图书馆}, + Number = {1-4} +} + +@Periodical{中国图书馆学会1957a--, + Title = {图书馆学通信}, + Date = {1957/1990}, + Editor = {中国图书馆学会}, + Institution = {北京图书馆}, + Number = {1-4} +} + +@Periodical{中国图书馆学会1957b--, + Title = {图书馆学通信}, + Address = {北京}, + Date = {1957/1990}, + Editor = {中国图书馆学会}, + Number = {1-4} +} + +@Periodical{中国图书馆学会1957c--, + Title = {图书馆学通信}, + Date = {1957/1990}, + Editor = {中国图书馆学会}, + Number = {1-4} +} + +@Periodical{AAAS1883----, + title = {Science}, + year = {1883}, + volume = {1}, + number = {1}, + address = {Washington, D.C.}, + author = {{American Association for the Advancement of Science}}, + publisher = {American Association for the Advancement of Science}, +} + + +@Article{袁训来2012-3219-3219, + author = {袁训来 and 陈哲 and 肖书海 and others}, + title = {蓝田生物群: 一个认识多细胞生物起源和早期演化的新窗口}, + journal = {科学通报}, + year = {2012}, + volume = {55}, + number = {34}, + pages = {3219}, +} + +@Newspaper{余建斌2013--, + author = {余建斌}, + date = {2013-01-12}, + journal = {人民日报}, + number = {2}, + title = {我们的科技一直在追赶: 访中国工程院院长周济}, + url = {http://paper.people.com.cn/rmrb/html/2013-01/12/nw.D110000renmrb_20130112_5-02.htm}, + urldate = {2013-03-20}, + year = {2013}, +} + +@Article{李炳穆2008-6-12, + author = {李炳穆}, + title = {韩国图书馆法}, + journal = {图书情报工作}, + year = {2008}, + volume = {52}, + number = {6}, + pages = {6--12}, + url = {http://www.docin.com/p-400265742.html}, + urldate = {2013-10-25}, +} + +@Article{李幼平2010-225-228, + author = {李幼平 and 王莉}, + title = {循证医学研究方法: 附视频}, + journal = {中华移植杂志(电子版)}, + year = {2010}, + volume = {4}, + number = {3}, + pages = {225--228}, + url = {http://www.cqvip.com/Read/Read.aspx?id=36658332}, + urldate = {2014-06-09}, +} + +@Article{武丽丽2008-8-9, + author = {武丽丽 and 华一新 and 张亚军 and others}, + title = {“北斗一号”监控管理网设计与实现}, + journal = {测绘科学}, + year = {2008}, + volume = {33}, + number = {5}, + pages = {8--9}, + doi = {10.3771/j.issn.1009-2307.2008.05.002}, + url = {http://vip.calis.edu.cn/CSTJ/Sear.dll?OPAC_CreateDetail}, + urldate = {2009-10-25}, +} + +@Article{Kanamori1998-2063-2063, + author = {Kanamori, H}, + title = {Shaking without quaking}, + journal = {Science}, + year = {1998}, + volume = {279}, + number = {5359}, + pages = {2063}, +} + +@Article{Caplan1993-61-66, + author = {Caplan, P}, + title = {Cataloging internet resources}, + journal = {The public access computer systems review}, + year = {1993}, + volume = {4}, + number = {2}, + pages = {61--66}, +} + +@Article{Frese2013-378-398, + author = {Frese, Karen S. and Katus, Hugo A. and Meder, Benjamin}, + title = {Next-generation sequencing: from understanding biology to personalized medicine}, + journal = {Biology}, + year = {2013}, + volume = {2}, + number = {1}, + pages = {378--398}, + doi = {10.3390/biology2010378}, + url = {http://www.mdpi.com/2079-7737/2/1/378}, + urldate = {2013-03-19}, +} + +@Article{Myburg2014-356-362, + author = {Myburg, Alexander A. and Grattapaglia, Dario and Tuskan, Gerald A. and others}, + title = {The genome of Eucalyptus grandis}, + journal = {Nature}, + year = {2014}, + date = {2014-06-19}, + volume = {510}, + pages = {356--362}, + doi = {10.1038/nature13308}, + url = {http://www.nature.com/nature/journal/v510/n7505/pdf/nature13308.pdf}, + urldate = {2014-06-25}, +} + +@Patent{邓一刚2006--, + author = {邓一刚}, + title = {全智能节电器}, + number = {200610171314.3}, + year = {2006}, + date = {2006-12-13}, +} + +@Patent{西安电子科技大学2002--, + author = {西安电子科技大学}, + title = {光折变自适应光外差探测方法}, + number = {01128777.2}, + year = {2002}, + date = {2002-03-06}, + url = {http://211.152.9.47/sipoasp/zljs/hyjs-yx-new.asp?recid=01128777.2&leixin=0}, + urldate = {2002-05-28}, +} + +@Patent{Tachibana2005--, + author = {Tachibana, Ryuki and Shimizu, Shuhichi and Kobayshi, Seiji and Nakamura, Taiga}, + title = {Electronic watermarking method and system}, + number = {US6915001}, + year = {2005}, + date = {2005-07-05}, + url = {http://www.google.co.in/patents/US6915001}, + urldate = {2013-11-11}, +} + +@TechReport{中国互联网络信息中心2012--, + author = {中国互联网络信息中心}, + title = {第 29 次中国互联网络发展现状统计报告}, + year = {2012}, + date = {2012-01-16}, + url = {http://www.cnnic.net.cn/hlwfzyj/hlwxzbg/201201/P020120709345264469680}, + urldate = {2013-03-26}, +} + +@Archive{北京市人民政府办公厅2005--, + author = {北京市人民政府办公厅}, + title = {关于转发北京市企业投资项目核准暂行实施办法的通知: 京政办发[2005]37号}, + year = {2005}, + date = {2005-07-12}, + url = {http://china.findlaw.cn/fagui/p_1/39934.html}, + urldate = {2011-07-12}, +} + +@Online{Bawden2008--, + author = {Bawden, D}, + title = {Origins and Concepts of Digital Literacy}, + date = {2008-05-04}, + url = {http://www.soi.city.ac.uk/~dbawden/digital%20literacy%20chapter.pdf}, + urldate = {2013-03-08}, + year = {2008}, +} + +@Online{OCLC--, + author = {{Online Computer Library Center, Inc}}, + title = {About {OCLC}: History of Cooperation}, + url = {http://www.oclc.org/about/cooperation.en.html}, + urldate = {2012-03-27}, +} + +@Online{Hopkinson2009--, + author = {Hopkinson, A}, + title = {{UNIMARC} and Metadata: Dublin Core}, + date = {2009-04-22}, + url = {http://archive.ifla.org/IV/ifla64/138-161e.htm}, + urldate = {2013-03-27}, + year = {2009}, +} + +@PhdThesis{刘乃安2000-17-18a, + author = {刘乃安}, + title = {生物质材料热解失重动力学及其分析方法研究}, + year = {2000}, + pages = {17--18}, + doi = {10.7666/d.y351065}, + url = {http://wenku.baidu.com/link?url=GJDJxb4lxBUXnIPmq1XoEGSIr1H8TMLbidW_LjlYu33tpt707u62rKliypU_FBGUmox7ovPNaVIVBALAMd5yfwuKUUOAGYuB7cuZ-BYEhXa}, + urldate = {2014-08-29}, + address = {安徽}, + school = {中国科学技术大学}, +} + +@PhdThesis{Deverell2013-21-22a, + author = {Deverell, William and Igler, David}, + title = {A Companion to {California} History}, + year = {2013}, + date = {2013-11-15}, + pages = {21--22}, + doi = {10.1002/9781444305036.ch2}, + url = {http://onlinelibrary.wiley.com/doi/10.1002/9781444305036.ch2/summary}, + urldate = {2014-06-24}, + address = {New York}, + school = {John Wiley \& Sons}, +} + +@Book{Morri2010--, + author = {Morri, I}, + title = {Why the West Rules for Now: the Patterns of History, and What They Reveal about the Future}, + year = {2010}, + publisher = {{Farrar, Straus and Giroux}}, + address = {New York}, +} + + +@Article{STIEG1981-549-560, + Title = {The information needs of historians}, + Author = {M. F. STIEG}, + Date = {1981}, + Journaltitle = {College and Research Libraries}, + Number = {6}, + Pages = {549-560}, + Volume = {42} +} + + + +@Article{Milstein1982-436-446, + Title = {The effect of multiple-tone interfering signals on a direct sequence spread spectrum communication system}, + Author = {Milstein, L. B. and Davidovici,S. and Schilling,D. L.}, + Journal = {IEEE Trans. Commun.}, + Number = {3}, + Pages = {436-446}, + Volume = {30}, + Year = {1982} +} + +@Book{顾炎武1982--, + Title = {昌平山水记}, + Author = {顾炎武}, + Publisher = {北京古籍出版社}, + Year = {1982}, + Location = {北京}, + Titleaddon = {东京考古录} +} + +@Inbook{马克思1982-505-505, + Title = {关于《工资、价格和利润》的报告札记}, + Author = {马克思}, + Bookauthor = {马克思 and 恩格斯}, + Booktitle = {马克思恩格斯全集}, + Pages = {505}, + Publisher = {人民出版社}, + Booktitleaddon = {第44卷}, + Location = {北京}, + Year = {1982} +} + +@Article{HEWITT1984-205-218, + Title = {Technical services in 1983}, + Author = {J A HEWITT}, + Date = {1984}, + Journaltitle = {Library Resource Services}, + Number = {3}, + Pages = {205-218}, + Volume = {28} +} + +@Article{McEliece1984-44-53, + Title = {Channels with block interference}, + Author = {McEliece, R. J. and Stark, W. E.}, + Journal = {IEEE Trans. Inf. Theory}, + Number = {1}, + Pages = {44-53}, + Volume = {30}, + Year = {1984} +} + +@Article{陶仁骥1984-527-527, + Title = {密码学与数学}, + Author = {陶仁骥}, + Date = {1984}, + Journaltitle = {自然杂志}, + Number = {7}, + Pages = {527}, + Volume = {7} +} + +@Periodical{中华医学会湖北分会1984--, + Title = {临床内科杂志}, + Address = {武汉}, + Date = {1984}, + Editor = {中华医学会湖北分会}, + Institution = {中华医学会湖北分会}, + Number = {1}, + Volume = {1} +} + +@Incollection{韩吉人1985-90-99, + Title = {论职工教育的特点}, + Author = {韩吉人}, + Booktitle = {职工教育研究论文集}, + Date = {1985}, + Publisher = {人民教育出版社}, + Pages = {90-99}, + Bookauthor = {中国职工教育研究会}, + Location = {北京} +} + +@Collection{中国职工教育研究会1985--, + Title = {职工教育研究论文集}, + Author = {中国职工教育研究会}, + Location = {北京}, + Publisher = {人民教育出版社}, + Year = {1985} +} + +@Standard{全国文献工作标准化委员会第七分委员会1986--, + Title = {GB/T 5795--1986 中国标准书号}, + Author = {全国文献工作标准化委员会第七分委员会}, + Note = {standard}, + Year = {1986}, + Location = {北京}, + Publisher = {中国标准出版社} +} + +@Inbook{1988-590-590, + Title = {卷39 乞致任第一}, + Address = {北京}, + Booktitle = {苏魏公文集:下册}, + Pages = {590}, + Publisher = {中华书局}, + Year = {1988} +} + + + +@Standard{国家标准局信息分类编码研究所1988-59-92, + Title = {世界各国和地区名称代码 GB/T 2659-1986}, + Author = {国家标准局信息分类编码研究所}, + Date = {1988}, + Note = {standard}, + Bookauthor = {全国文献工作标准化技术委员会}, + Booktitle = {文献工作国家标准汇编}, + Booktitleaddon = {3}, + Location = {北京}, + Pages = {59-92}, + Publisher = {中国标准出版社} +} + +@Online{1989--, + Title = {PACS-L:the public-access computer systems forum}, + Date = {1989}, + Publisher = {Tex: University of Houston Libraries}, + Url = {http://info.lib.uh.edu/pacsl.html}, + Urldate = {1995-05-17}, + Location = {Houston} +} + +@Patent{姜锡洲1989--, + Title = {一种温热外敷药制备方案}, + Author = {姜锡洲}, + Date = {1989-07-26}, + Number = {88105607.3}, + Titleaddon = {中国} +} + +@Report{DTFHA1990--, + Title = {Guidelines for handling excavated acid-producing materials: PB 91-194001}, + Author = {{U.S. Department of Transportation Federal Highway Administration}}, + Institution = {U.S. Department of Commerce National Information Service}, + Location = {Springfield}, + Year = {1990} +} + +@Book{PIGGOT1990--, + Title = {The cataloguer's way through AACR2: from document receipt to document retrieval}, + Author = {T. M. PIGGOT}, + Publisher = {The Library Association}, + Year = {1990}, + Location = {London} +} + +@Article{DESMARAIS1992-605-609, + Title = {Carbon isotope evidence for the stepwise oxidation of the Proterozoic environment}, + Author = {DES MARAIS, D J and H STRAUSS and R E SUMMONS and others}, + Date = {1992}, + Journaltitle = {Nature}, + Pages = {605-609}, + Volume = {359} +} + +@Article{Holtzman1992-243-247, + Title = {On using perturbation analysis to do sensitivity analysis: derivatives versus differences}, + Author = {Holtzman, J. M.}, + Journal = {IEEE Trans. Autom. Control}, + Number = {2}, + Pages = {243-247}, + Volume = {37}, + Year = {1992} +} + +@Article{CAPLAN1993-61-66a, + Title = {Cataloging internet resources}, + Author = {P CAPLAN}, + Date = {1993}, + Journaltitle = {The public Access Computer Systems Review}, + Number = {2}, + Pages = {61-66}, + Volume = {4} +} + +@Book{广西壮族自治区林业厅1993--, + Title = {广西自然保护区}, + Author = {广西壮族自治区林业厅}, + Date = {1993}, + Publisher = {中国林业出版社}, + Location = {北京} +} + +@Patent{刘加林1993--, + Title = {多功能一次性压舌板}, + Author = {刘加林}, + Date = {1993-04-14}, + Number = {92214985.2}, + Location = {中国} +} + +@Book{OBRIEN1994--, + Title = {Introduction to information systems}, + Author = {J A O'BRIEN}, + Date = {1994}, + Edition = {7}, + Publisher = {Irwin}, + Location = {Burr Ridge, III} +} + +@Book{辛希孟1994--, + Title = {信息技术与信息服务国际研讨会论文集}, + Author = {辛希孟}, + Publisher = {中国社会科学出版社}, + Year = {1994}, + Location = {北京}, + Titleaddon = {A集} +} + +@Article{Andersen1995-42-49, + Title = {Propagation measurements and models for wireless communications channels}, + Author = {Andersen, J. B. and Rappaport, T. S. and Yoshida, S.}, + Journal = {IEEE Commun. Mag.}, + Number = {1}, + Pages = {42-49}, + Volume = {33}, + Year = {1995} +} + +@Book{CRAWFPRD1995--, + Title = {Future libraries: dreams, maddness, \& reality}, + Author = {W CRAWFPRD and M GORMAN}, + Date = {1995}, + Publisher = {American Library Association}, + Location = {Chicago} +} + +@Book{赵凯华1995--, + Title = {{新概念物理教程}}, + Address = {北京}, + Author = {赵凯华 and 罗蔚茵}, + Publisher = {高等教育出版社}, + Year = {1995} +} + +@Inbook{MARTIN1996-85-96, + Title = {Control of electronic resources in Australia}, + Author = {G MARTIN}, + Bookauthor = {L W PATTLE and B J COX}, + Booktitle = {Electronic resources}, + Date = {1996}, + Pages = {85-96}, + Publisher = {The Haworth Press}, + Booktitleaddon = {selection and bibliographic control}, + Location = {New York} +} + +@Book{国家环境保护局科技标准司1996-2-3, + Title = {土壤环境质量标准: GB 15616-1995}, + Address = {北京}, + Author = {国家环境保护局科技标准司}, + Note = {standard}, + Pages = {2-3}, + Publisher = {中国标准出版社}, + Url = {http://wenku.baidu.com}, + Urldate = {2013-10-14}, + Year = {1996} +} + + + +@Inbook{钟文发1996-468-471, + Title = {非线性规划在可燃毒物配置中的应用}, + Author = {钟文发}, + Bookauthor = {赵玮}, + Booktitle = {运筹学的理论和应用}, + Pages = {468-471}, + Publisher = {西安电子科技大学出版社}, + Booktitleon = {中国运筹学会第五届大会讨论文集}, + Location = {西安}, + Year = {1996} +} + +@Inproceedings{Nemec1997-209-214, + Title = {Force control of redundant robots}, + Author = {B Nemec}, + Booktitle = {Processings of Symposium on Robot Control}, + Pages = {209-214}, + Country = {Nantes France}, + Year = {1997} +} + + + +@Article{Andrisano1998-1383-1401, + Title = {Millimeter waves for short-range multimedia communication systems}, + Author = {Andrisano, O. and Tralli, V. and Verdone, R.}, + Journal = {Proc. IEEE}, + Number = {7}, + Pages = {1383-1401}, + Volume = {86}, + Year = {1998} +} + +@Article{Chiani1998-2998-3008, + Title = {Error probability for block codes over channels with block interference}, + Author = {Chiani, M.}, + Journal = {IEEE Trans. Inf. Theory}, + Number = {7}, + Pages = {2998-3008}, + Volume = {44}, + Year = {1998} +} + +@Article{CHRISTINE1998-331-332, + Title = {Plant physiology:plant biology in the Genome Era}, + Author = {M CHRISTINE}, + Date = {1998}, + Journaltitle = {Science}, + Pages = {331-332}, + Volume = {281}, + Url = {http://www.sciencemag.org/cgi/collection/anatmorp}, + Urldate = {1998-09-23} +} + +@Article{KANAMORI1998-2063-2064, + Title = {Shaking without quaking}, + Author = {H KANAMORI}, + Date = {1998}, + Journaltitle = {Science}, + Number = {5359}, + Pages = {2063-2064}, + Volume = {279} +} + +@Inbook{白书农1998-146-163, + Title = {植物开花研究}, + Author = {白书农}, + Bookauthor = {李承森}, + Booktitle = {植物科学进展}, + Pages = {146-163}, + Publisher = {高等教育出版社}, + Location = {北京}, + Year = {1998} +} + +@Book{蒋有绪1998--, + Title = {中国森林群落分类及其群落学特征 and \XeLaTeX{}}, + Address = {北京}, + Author = {蒋有绪 and 郭泉水 and 马娟 and others}, + Publisher = {科学出版社}, + Year = {1998} +} + + + +@Article{鲁明羽1998-290-295, + Title = {关于数据库系统数据词典的重要作用}, + Author = {鲁明羽 and 李纲民}, + Journal = {烟台大学学报自然科学与工程版}, + Number = {4}, + Pages = {290-295}, + Volume = {11}, + Year = {1998} +} + +@Mastersthesis{张志祥1998--, + Title = {间断动力系统的随机扰动及其在守恒律方程中的应用}, + Author = {张志祥}, + Date = {1998}, + Institution = {北京大学数学学院}, + Location = {北京} +} + +@Book{赵耀东1998--, + Title = {新时代的工业工程师}, + Author = {赵耀东}, + Publisher = {天下文化出版社}, + Url = {http://www.ie.nthu.edu.tw/info/ie.newie.htm(Big5)}, + Urldate = {1998-09-26}, + Year = {1998}, + Location = {台北} +} + +@Article{高光明1998-60-65, + Title = {信号情报接收机的发展现状及趋势}, + Author = {高光明}, + Journal = {电讯技术}, + Number = {2}, + Pages = {60-65}, + Volume = {38}, + Month = {4}, + Year = {1998} +} + +@Article{Dardari1999-1709-1721, + Title = {High-speed indoor wireless communications at 60 GHz with coded OFDM}, + Author = {Dardari, D. and Tralli,V.}, + Journal = {IEEE Trans. Commun.}, + Number = {11}, + Pages = {1709-1721}, + Volume = {47}, + Year = {1999} +} + +@InBook{程根伟1999-32-36a, + author = {程根伟}, + title = {1998年长江洪水的成因与减灾对策}, + booktitle = {长江流域洪涝灾害与科技对策}, + year = {1999}, + bookauthor = {许厚泽 and 赵其国}, + publisher = {科学出版社}, + location = {北京}, + pages = {32-36}, +} + +@Article{江向东1999-4-4, + Title = {互联网环境下的信息处理与图书管理系统解决方案}, + Author = {江向东}, + Date = {1999}, + Journaltitle = {情报学报}, + Number = {2}, + Pages = {4}, + Volume = {18}, + Url = {http://www.chinainfo.gov.cn/periodical/qbxb/qbxb99/qbxb990203}, + Urldate = {2000-01-18} +} + +@Article{李晓东1999-101-106, + Title = {气候学研究的若干理论问题}, + Author = {李晓东 and 张庆红 and 叶瑾琳}, + Date = {1999}, + Journaltitle = {北京大学学报}, + Number = {1}, + Pages = {101-106}, + Volume = {35}, + Journaltitleaddon = {自然科学版} +} + +@Article{梁振兴1999-24-32, + Title = {美军一体化{C\textsuperscript{4}ISR}系统的发展研究}, + Author = {梁振兴}, + Journal = {电子展望与决策}, + Pages = {24-32}, + Year = {1999} +} + +@Article{刘武1999-2481-2488, + Title = {元谋人牙齿测量数据的统计分析及其在分类研究上的意义}, + Author = {刘武 and 郑良 and 姜础}, + Date = {1999}, + Journaltitle = {科学通报}, + Number = {23}, + Pages = {2481-2488}, + Volume = {44} +} + +@Article{莫少强1999-1-6, + Title = {数字式中文全球文献格式的设计与研究}, + Author = {莫少强}, + Date = {1999}, + Journaltitle = {情报学报}, + Number = {4}, + Pages = {1-6}, + Volume = {18}, + Url = {http://periodical.wanfangdata.com.cn/periodical/qbxb/qbxb99/qbxb9904/990407.htm}, + Urldate = {2001-07-08} +} + +@Book{唐绪军1999-117-121, + Title = {报业经济与报业经营}, + Author = {唐绪军}, + Date = {1999}, + Pages = {117-121}, + Publisher = {新华出版社}, + Location = {北京} +} + +@Proceedings{中国力学学会1999--, + Title = {第3届全国实验流体力学学术会议论文集}, + Address = {天津}, + Year = {1999}, + Editor = {中国力学学会} +} + +@Article{杨友烈1999-60-65, + Title = {DII COE的基本概念和技术特征}, + Author = {杨友烈}, + Journal = {军事通信技术}, + Pages = {60-65}, + Volume = {72}, + Month = {12}, + Year = {1999} +} + +@Proceedings{GANZHA2000--, + Title = {Computer algebra in scientific computing:CASC 2000:proceedings of the Third +Workshop on Computer Algebra in Scientific Computing, Samarkand, October 5-9, 2000}, + Date = {2000}, + Publisher = {Springer}, + Editor = {V G GANZHA and E W MAYR and E V VOROZHTSOV}, + Location = {Berlin} +} + +@Book{Gradshteyn2000--, + Title = {Tables of Integrals, Series, and Products}, + Address = {San Diego}, + Author = {Gradshteyn, I. S. and Ryzhik,I. M.}, + Edition = {Sixth Edition}, + Publisher = {CA: Academic Press, Inc.}, + Year = {2000} +} + +@Book{Parsons2000--, + Title = {The Mobile Radio Propagation Channel}, + Address = {Hoboken}, + Author = {Parsons, J. D.}, + Edition = {2}, + Publisher = {John Wiley and Sons}, + Year = {2000} +} + +@Book{Parsons2000a--, + Title = {The Mobile Radio Propagation Channel}, + Address = {Hoboken}, + Author = {PARSONS}, + Edition = {2}, + Publisher = {John Wiley and Sons}, + Year = {2000} +} + +@Book{Parsons2000b--, + Title = {The Mobile Radio Propagation Channel}, + Address = {Hoboken}, + Author = {Parsons}, + Edition = {2}, + Publisher = {John Wiley and Sons}, + Year = {2000} +} + +@Book{Parsons2000noauthor--, + Title = {The Mobile Radio Propagation Channel}, + Address = {Hoboken}, + Edition = {2}, + Publisher = {John Wiley and Sons}, + Year = {2000} +} + +@Book{Parsons2000noloc--, + Title = {The Mobile Radio Propagation Channel}, + Author = {Parsons, J. D.}, + Edition = {2}, + Publisher = {John Wiley and Sons}, + Year = {2000} +} + +@Book{Parsons2000nopub--, + Title = {The Mobile Radio Propagation Channel}, + Address = {Hoboken}, + Author = {Parsons, J. D.}, + Edition = {2}, + Year = {2000} +} + +@Book{Parsons2000nopubpages--, + Title = {The Mobile Radio Propagation Channel}, + Address = {Hoboken}, + Author = {Parsons, J. D.}, + Edition = {2}, + Pages = {15-20}, + Year = {2000} +} + +@Book{YUFIN2000--a, + Title = {Geoecology and computers}, + Author = {S. A. YUFIN}, + Publisher = {A. A. Balkema}, + Year = {2000}, + Location = {Rotterdam}, + Titleaddon = {proceedings of the Third International Conference on Advances of + Computer Methods in Geotechnical and Geoenvironmental + Engineering, Moscow, Russia, February 1-4, 2000} +} + +@Article{李炳穆2000-5-8, + Title = {理想的图书管理员和信息专家的素养与形象}, + Author = {李炳穆}, + Date = {2000}, + Journaltitle = {图书情报工作}, + Number = {2}, + Pages = {5-8} +} + +@Book{孙玉文2000--, + Title = {汉语变调构词研究}, + Author = {孙玉文}, + Publisher = {北京大学出版社}, + Year = {2000}, + Location = {北京} +} + +@Article{傅刚2000--, + Title = {大风沙过后的思考}, + Author = {傅刚 and 赵承 and 李佳路}, + Date = {2000-04-12}, + Journaltitle = {北京青年报}, + Note = {news}, + Url = {http://www.bjyouth.com.cn/Bqb/20000412/GB/4216%5ED0412B1401.htm}, + Urldate = {2005-09-28} +}% Number = {14}, + +@Newspaper{张田勤2000--, + Title = {犯罪DNA库与生命伦理学计划}, + Author = {张田勤}, + Date = {2000-11-12}, + Journaltitle = {大众科技报}, + Note = {news}, + Number = {7} +} + +@Article{丁文祥2000--, + Title = {数字革命与竞争国际化}, + Author = {丁文祥}, + Date = {2000-11-20}, + Journaltitle = {中国青年报}, + Number = {15}, + Note = {news} +} + +@Book{booknoauthor, + Title = {出版集团研究}, + Date = {2001}, + Pages = {179-193}, + Publisher = {中国书籍出版社}, + Location = {北京} +} + +@Book{booknolocation, + Title = {出版集团研究}, + Author = {余敏}, + Date = {2001}, + Pages = {179-193}, + Publisher = {中国书籍出版社} +} + +@Book{booknopages, + Title = {出版集团研究}, + Author = {余敏}, + Date = {2001}, + Publisher = {中国书籍出版社}, + Url = {www.bla~bla.org}, + Location = {北京} +} + +@Book{booknopublisher, + Title = {出版集团研究}, + Author = {余敏}, + Date = {2001}, + Location = {北京} +} + +@Book{booknopublisherpage, + Title = {出版集团研究}, + Author = {余敏}, + Date = {2001}, + Pages = {20-30}, + Location = {北京} +} + +@Article{Moeneclaey2001-497-505, + Title = {Sensitivity of multiple-access techniques to narrowband interference}, + Author = {Moeneclaey, M. and Bladel,M. V. and Sari,H.}, + Journal = {IEEE Trans. Commun.}, + Number = {3}, + Pages = {497-505}, + Volume = {49}, + Year = {2001} +} + +@Book{PEEBLES2001--, + Title = {Probability, random variable and random signal principles}, + Author = {PEEBLES, Jr., P Z}, + Edition = {4}, + Publisher = {McGraw Hill}, + Year = {2001}, + Location = {New York} +} + +@Book{Peebles2001-100-100, + Title = {Probability, random variable, and random signal Principles and \LaTeX{}}, + Address = {New York}, + Author = {von Peebles, Jr., P. Z.}, + Edition = {4}, + Pages = {100}, + Publisher = {McGraw-Hill}, + Year = {2001} +} + +@Inproceedings{Piazzo2001--, + Title = {UWB EM compatibility and coexistence issues}, + Address = {Rome, Italy}, + Author = {Piazzo, L.}, + Booktitle = {Proc. 1st Int. Workshop on Networking with UWB}, + Year = {2001} +} + +@Book{ROOD2001--, + Title = {Logic and structured design for computer programmers}, + Author = {H J ROOD}, + Date = {2001}, + Edition = {3}, + Publisher = {Brooks/Cole-Thomson Learning} +} + +@Book{Simon2001--, + Title = {Spread Spectrum Communications Handbook}, + Address = {New York City}, + Author = {Simon, M. K. and Omura,J. K. and Scholtz,R. A. and Levitt,B. K.}, + Publisher = {McGraw-Hill, Inc.}, + Year = {2001} +} + +@Book{Stueber2001--, + Title = {Principles of Mobile Communication}, + Address = {Norwell}, + Author = {Stuber, G. L.}, + Edition = {Second Edition}, + Publisher = {MA: Kluwer Academic Publishers}, + Year = {2001} +} + +@Book{余敏2001-179-193, + Title = {出版集团研究}, + Author = {余敏}, + Date = {2001}, + Pages = {179-193}, + Publisher = {中国书籍出版社}, + Location = {北京} +} + +@Book{余敏2001-179-193a, + Title = {出版集团研究}, + Author = {余敏}, + Date = {2001}, + Edition = {3}, + Pages = {179-193}, + Publisher = {中国书籍出版社}, + Location = {北京} +} + +@Book{余敏2001-179-193b, + Title = {出版集团研究}, + Author = {余敏}, + Date = {2001}, + Edition = {2}, + Pages = {179-193}, + Publisher = {中国书籍出版社}, + Location = {北京} +} + +@Book{余敏2001-179-193c, + Title = {出版集团研究}, + Author = {余敏}, + Date = {2001}, + Pages = {179-193}, + Publisher = {中国书籍出版社}, + Url = {http://www.baidu.com}, + Urldate = {2001-08-04}, + Location = {北京} +} + +@Book{赵学功2001--a, + author = {赵学功}, + title = {当代美国外交}, + year = {2001}, + publisher = {社会科学文献出版社}, + url = {http://www.baidu.com}, + urldate = {2014-06-11}, +} + +@Manual{中国第一历史档案馆2001--a, + author = {中国第一历史档案馆 and 辽宁省档案馆}, + title = {中国明朝档案总汇}, + year = {2001}, + organization = {广西师范大学出版社}, + address = {桂林}, +} + +@Article{郜宪林2001-114-116, + Title = {DII COE研究与分析}, + Author = {郜宪林}, + Journal = {计算机工程与应用}, + Number = {19}, + Pages = {114-116}, + Year = {2001} +} + +@Patent{河北绿洲生态环境科技有限公司2001--, + Title = {一种荒漠化地区生态植被综合培育种植方法}, + Author = {河北绿洲生态环境科技有限公司}, + Date = {2001-10-24}, + Number = {01129210.5}, + Url = {http://211.152.9.47/sipoasp/zlijs/hyjs-yx-new.asp?recid=01129210.5&leixin}, + Urldate = {2002-05-28} +} + +@Article{陈金成2001-1861-1864, + Title = {一种开放式体系结构经济型数控装置的研制}, + Author = {陈金成 and 杨海威 and 钟廷修}, + Journal = {上海交通大学学报}, + Number = {12}, + Pages = {1861-1864}, + Volume = {35}, + Month = {12}, + Year = {2001} +} + +@Www{萧钰2001--, + Title = {出版业信息化迈入快车道}, + Author = {萧钰}, + Url = {http://www.creader.com/news/20011219/200112190019.html}, + Urldate = {2002-04-15}, + Date = {2001-12-19} +} + +@Inproceedings{Choi2002-1075-1080, + Title = {Performance analysis of ultra-wideband spread-spectrum communications in narrowband interference}, + Address = {Anaheim, CA}, + Author = {Choi, J. D. and Stark,W. E.}, + Booktitle = {Proc. IEEE Military Commun. Conf. (MILCOM)}, + Pages = {1075-1080}, + Volume = {2}, + Year = {2002} +} + +@Inproceedings{Dardari2002-201-206, + Title = {Simple and accurate models for error probability evaluation of IEEE802.11 DS-SS physical interface in the presence of Bluetooth interference}, + Address = {Taipei}, + Author = {Dardari, D. and Pasolini,G.}, + Booktitle = {Proc. IEEE Global Telecommun. Conf. (GLOBECOM)}, + Pages = {201-206}, + Volume = {1}, + Year = {2002} +} + +@Inproceedings{Foerster2002-1931-1935, + Title = {Interference modeling of pulse-based UWB waveforms on narrowband systems}, + Address = {Birmingham, AL}, + Author = {Foerster, J. R.}, + Booktitle = {Proc. IEEE Veh. Technol. Conf.}, + Pages = {1931-1935}, + Volume = {4}, + Year = {2002} +} + +@Inproceedings{Fontana2002-309-313, + Title = {An insight into UWB interference from a shot noise perspective}, + Address = {Baltimore, MD}, + Author = {Fontana, R. J.}, + Booktitle = {Proc. of IEEE Conference on Ultrawideband Systems and Technologies (UWBST)}, + Pages = {309-313}, + Year = {2002} +} + +@Article{Haemaelaeinen2002-1712-1721, + Title = {On the UWB system coexistence with GSM900, UMTS/WCDMA, and GPS}, + Author = {Hamalainen, M. M. and Hovinen,V. and Tesi,R. and Iinatti,J. H. J. and Latvaaho, M.}, + Journal = {IEEE J. Sel. Areas Commun.}, + Number = {9}, + Pages = {1712-1721}, + Volume = {20}, + Year = {2002} +} + +@Article{Zhao2002-1684-1691, + Title = {Performance of ultra-wideband communications in the presence of interference}, + Author = {Zhao, L. and Haimovich,A. M.}, + Journal = {IEEEJ. Sel. Areas Commun.}, + Number = {9}, + Pages = {1684-1691}, + Volume = {20}, + Year = {2002} +} + +@Inproceedings{汪学军2002-22-25, + Title = {中国农业转基因生物研发进展与安全管理}, + Address = {北京}, + Author = {汪学军}, + Bookauthor = {国家环境保护总局生物安全管理办公室}, + Booktitle = {中国国家生物安全框架实施国际合作项目研讨会论文集}, + Pages = {22-25}, + Publisher = {中国环境科学出版社}, + Year = {2002} +} + +@Book{张伯伟2002--, + Title = {全唐五代诗格会考}, + Address = {南京}, + Author = {张伯伟}, + Pages = {288}, + Publisher = {江苏古籍出版社}, + Year = {2002} +} + +@Patent{西安电子科技大学2002--a, + author = {西安电子科技大学}, + title = {光折变自适应光外差探测方法}, + number = {01128777.2}, + date = {2002-03-06}, + url = {http://211.152.9.47/sipoasp/zljs/hyjs-yx-new.asp?recid=01128777.2&leixin=0}, + urldate = {2002-05-28}, +} + +@Patent{TACHIBANA2002--, + Title = {Electronic watermarking method and system}, + Author = {R TACHIBANA and S SHIMIZU and S KOBAYSHI and others}, + Date = {2002-04-25}, + Number = {US6915001}, + Url = {http://patftuspto.gov/netacgi/nph-Parser?Seetl=PTO2&Sect2=HITOFF&=1&u=/netahhml/search-bool.html&r=1&f=G&1=50&col=AND&d=ptxt&sl=`Electronic+watermarking+method+system'.TTL.&OS=TTL/}, + Urldate = {2002-05-28} +} + +@Patent{KOSEKI2002--, + Title = {Compiler}, + Author = {A KOSEKI and H MOMOSE and M KAWAHITO and others}, + Date = {2002-05-25}, + Number = {US828402}, + Url = {http://FF&p=1&u=netahtml/PTO/search-bool.html&r=5&f=G&l=50&col=AND&d=PG01&sl=IBM.AS.&0S=AN/IBM&RS=AN/IBM}, + Urldate = {2002-05-28} +} + +@Article{Chiani2003-840-845, + Title = {New exponential bounds and approximations for the computation of error probability in fading channels}, + Author = {Chiani, M. and Dardari, D. and Simon, M. K.}, + Journal = {IEEE Trans. Wireless Commun.}, + Number = {4}, + Pages = {840-845}, + Volume = {2}, + Year = {2003} +} + +@Inproceedings{Firoozbakhsh2003-473-477, + Title = {Analysis of IEEE 802.11a interference on UWB systems}, + Address = {Oulu, Finland}, + Author = {Firoozbakhsh, B. and Pratt,T. G. and Jayant,N.}, + Booktitle = {Proc. of IEEE Conference on Ultrawideband Systems and Technologies (UWBST)}, + Pages = {473-477}, + Year = {2003} +} + +@Electronic{OMG2003--, + Title = {Unified Modeling Language: Superstructure}, + Author = {{omg Inc.}}, + Url = {http://www.omg.org}, + Year = {2003} +} + +@Thesis{吴云芳2003--, + Title = {面向中文信息处理的现代汉语并列结构研究}, + Address = {北京}, + Author = {吴云芳}, + Institution = {北京大学}, + Url = {http://thesis.lib.pku.edu.cn/dlib/List.asp?lang=gb&type=Reader&DocGroupID=4&DoclD=6328}, + Urldate = {2013-10-14}, + Year = {2003} +} + +@Thesis{吴云芳2003a--, + Title = {面向中文信息处理的现代汉语并列结构研究}, + Address = {北京}, + Author = {吴云芳}, + Url = {http://thesis.lib.pku.edu.cn}, + Urldate = {2013-10-14}, + Year = {2003} +} + +@Thesis{吴云芳2003b--, + Title = {面向中文信息处理的现代汉语并列结构研究}, + Author = {吴云芳}, + Institution = {北京大学}, + Url = {http://thesis.lib.pku.edu.cn}, + Urldate = {2013-10-14}, + Year = {2003} +} + +@Thesis{吴云芳2003c--, + Title = {面向中文信息处理的现代汉语并列结构研究}, + Author = {吴云芳}, + Url = {http://thesis.lib.pku.edu.cn}, + Urldate = {2013-10-14}, + Year = {2003} +} + +@Article{Chiani2004-1312-1318, + Title = {Further results on convolutional code search for blockfading channels}, + Author = {M. Chiani and A. Conti and V. Tralli}, + Journal = {IEEE Trans. Inf. Theory}, + Number = {6}, + Pages = {1312-1318}, + Volume = {50}, + Year = {2004} +} + +@Article{Chiani2004-1312-1318a, + Title = {Further results on convolutional code search for blockfading channels-a}, + Author = {M. Chiani and A. Conti and V. Tralli}, + Pages = {1312-1318}, + Year = {2004} +} + +@Article{Chiani2004-1312-1318b, + Title = {Further results on convolutional code search for blockfading channels-b}, + Author = {M. Chiani and A. Conti and V. Tralli}, + Pages = {1312-1318}, + Year = {2004} +} + +@Article{Coulson2004-2277-2287, + Title = {Narrowband interference in pilot symbol assisted OFDM systems}, + Author = {Coulson, A. J.}, + Journal = {IEEE Trans. Wireless Commun.}, + Number = {6}, + Pages = {2277-2287}, + Volume = {3}, + Year = {2004} +} + +@Article{Dardari2004-1557-1567, + Title = {Layered video transmission on adaptive OFDM wireless systems}, + Author = {Dardari, D. and Martini,M. G. and Mazzotti, M. and Chiani,M.}, + Journal = {EURASIP Journal on Wireless Communications and Networking}, + Number = {10}, + Pages = {1557-1567}, + Year = {2004} +} + +@Book{Kopka2004--, + Title = {A Guide to LATEX and Electronic Publishing}, + Address = {Harlow, England}, + Author = {Helmut Kopka and Patrick W. Daly}, + Date = {2004}, + Edition = {4}, + Publisher = {Addison-Wesley} +} + +@Conference{Li2004-21-24, + Title = {Practical approaches to channel estimation and interference suppression for OFDM based UWB communications}, + Author = {Li, Y. and Molisch,A. F. and Zhang,J.}, + Booktitle = {Proc. of the IEEE 6th Circ. and Syst., Symp. on Emerging Technologies: Frontiers of Mobile and Wireless Communication}, + Pages = {21-24}, + Volume = {1}, + Year = {2004} +} + +@Book{Lin2004--, + Title = {Error Control Coding}, + Address = {Englewood Cliffs}, + Author = {Lin, S. and Daniel Costello,J.}, + Edition = {Second Edition}, + Publisher = {NJ:Prentice Hall}, + Year = {2004} +} + +@Book{Mittelbach2004--, + Title = {The LaTeX Companion}, + Address = {Boston}, + Author = {Frank Mittelbach and Michel Goossens and Johannes Braams and David Carlisle and Chris Rowley}, + Edition = {Second Edition}, + Publisher = {Addison-Wesley}, + Year = {2004} +} + +@Book{Simon2004--, + Title = {Digital Communication over Fading Channels}, + Address = {Hoboken}, + Author = {Simon, M. K. and Alouini,M. S.}, + Publisher = {NJ: Wiley-IEEE Press}, + Year = {2004} +} + +@PhdThesis{张若凌2004--, + Title = {高超声速非平衡流动的计算和实验研究}, + Author = {张若凌}, + School = {中国空气动力研究与发展中心}, + Year = {2004}, + Location = {绵阳} +} + +@Book{Miroslav2004--, + Title = {信号处理滤波器设计-基于matlab和mathematica的设计方法}, + Address = {北京}, + Author = {Miroslav, D. L. and Dejan, V. T. and Brian, L. E.}, + Publisher = {电子工业出版社}, + Translator = {朱义胜 and 董辉}, + Year = {2004}, + Month = {1} +} + +@Book{Miroslav2003--, + Title = {信号处理滤波器设计方法}, + Address = {北京}, + Author = {Miroslav, D. L. and Dejan, V. T.}, + Publisher = {电子工业出版社}, + Translator = {朱义胜 and 董辉}, + Year = {2003}, + Month = {1} +} + +@Article{Giorgetti2005-1037-1042, + Title = {The impact of OFDM interference on TH-PPM/BPAM transmission systems}, + Author = {Giorgetti, A. and Dardari,D.}, + Journal = {Proc. IEEE Veh. Technol. Conf.}, + Pages = {1037-1042}, + Volume = {2}, + Year = {2005} +} + +@Article{Giorgetti2005-2139-2149, + Title = {The effect of narrowband interference on wideband wireless communication systems}, + Author = {Giorgetti, A. and Chiani, M. and Win, M. Z.}, + Journal = {IEEE Trans. Commun.}, + Number = {12}, + Pages = {2139-2149}, + Volume = {53}, + Year = {2005} +} + +@Article{Giorgetti2005-384-389, + Title = {Influence of fading on the Gaussian approximation for BPSK and QPSK with asynchronous cochannel interference}, + Author = {Giorgetti, A. and Chiani,M.}, + Journal = {IEEE Trans. Wireless Commun.}, + Number = {2}, + Pages = {384-389}, + Volume = {4}, + Year = {2005} +} + +@Inproceedings{Giorgetti2005-794-798, + Title = {Coexistence of UWB and narrowband systems in Nakagami/Rice channels}, + Address = {Aalborg, Denmark}, + Author = {Giorgetti, A.}, + Booktitle = {Proc. Int. Symp. on Wireless Personal Multimedia Commun. (WPMC)}, + Pages = {794-798}, + Year = {2005} +} + +@Book{Reed2005--, + Title = {An Introduction to Ultrawideband Communication Systems}, + Address = {Upper Saddle River}, + Author = {Reed, J. H.}, + Publisher = {NJ: Prentice Hall}, + Year = {2005} +} + +@Book{樊昌信2005--, + Title = {通信原理教程}, + Address = {北京}, + Author = {樊昌信}, + Publisher = {电子工业出版社}, + Year = {2005} +} + +@Article{Coulson2006-2484-2492, + Title = {Bit error rate performance of OFDM in narrowband interference with excision filtering}, + Author = {Coulson, A. J.}, + Journal = {IEEE Trans. Wireless Commun.}, + Number = {9}, + Pages = {2484-2492}, + Volume = {5}, + Year = {2006} +} + +@Inproceedings{Giorgetti2006--, + Title = {Coexistence issues in cognitive radios based on ultra-wide bandwidth systems}, + Address = {Mykonos, Greece}, + Author = {Giorgetti, A. and Chiani, M. and Dardari,D.}, + Booktitle = {Proc. IEEE Int. Conf. on Cognitive Radio Oriented Wireless Net. and Comm. (CROWNCOM)}, + Year = {2006} +} + +@Article{Hu2006-1720-1724, + Title = {Performance of an ultra-wideband communication system in the presence of narrowband BPSK-and QPSK-modulated OFDM interference}, + Author = {Hu, B. and Beaulieu,N. C.}, + Journal = {IEEE Trans. Commun.}, + Number = {10}, + Pages = {1720-1724}, + Volume = {54}, + Year = {2006} +} + +@Article{Molisch2006-3151-3166, + Title = {A comprehensive standardized model for ultrawideband propagation channels}, + Author = {Molisch, A. F. and Cassioli, D. and Chong, C. C. and Emami, S. and Fort, A.}, + Journal = {IEEE Trans. Antennas Propag.}, + Number = {11}, + Pages = {3151-3166}, + Volume = {54}, + Year = {2006} +} + +@Article{Saito2006-169-176, + Title = {jadeite-bearing metagabbro in serpentinite m\'elange of the ``kurosegawa belt" in Izumi Town,Yatsushiro city, kumamoto prefecture, central kyushu}, + Author = {Saito, M. and Miyazaki, k.}, + Journal = {bulletin of geological survey of japan}, + Number = {5/6}, + Pages = {169-176}, + Volume = {57}, + Year = {2006} +} + +@Book{郭文彬2006--, + Title = {通信原理--基于Matlab的计算机仿真}, + Address = {北京}, + Author = {郭文彬 and 桑林}, + Publisher = {北京邮电大学出版社}, + Year = {2006} +} + +@Book{蔡敏2006--, + Title = {UML基础和Rose建模教程}, + Address = {北京}, + Author = {蔡敏 and 徐慧慧 and 黄柄强}, + Publisher = {人民邮电出版社}, + Year = {2006}, + Month = {1} +} + +@Article{Nasri2007-4090-4100, + Title = {Analysis of narrowband communication systems impaired by MB-OFDM UWB interference}, + Author = {Nasri, A. and Schober, R. and Lampe, L.}, + Journal = {IEEE Trans. Wireless Commun.}, + Number = {11}, + Pages = {4090-4100}, + Volume = {6}, + Year = {2007} +} + +@Book{Proakis2007--, + Title = {Digital signal processing: Principles,algorithms, and applications}, + Address = {北京}, + Author = {Proakis, J. G. AND Manolakis, D. G.}, + Edition = {第4版}, + Publisher = {电子工业出版社}, + Year = {2007} +} + +@Article{Quek2007-2126-2139, + Title = {Unified analysis of UWB transmitted-reference schemes in the presence of narrowband interference}, + Author = {Quek, T. Q. S. and Win,M. Z. and Dardari,D.}, + Journal = {IEEE Trans. Wireless Commun.}, + Number = {6}, + Pages = {2126-2139}, + Volume = {6}, + Year = {2007} +} + +@Article{Shi2007-1118-1128, + Title = {Impact of narrowband interference on OFDM-UWB receivers: Analysis and mitigation}, + Author = {Shi, K. and Zhou,Y. and Kelleci,B. and Fischer, T. W. and Serpedin, E.E. and Ilker Karsilayan, A.}, + Journal = {IEEE Trans.Signal Process.}, + Number = {3}, + Pages = {1118-1128}, + Volume = {55}, + Year = {2007} +} + +@Article{Snow2007-1736-1746, + Title = {Error rate analysis for coded multicarrier systems over quasistatic fading channels}, + Author = {Snow, C. and Lampe, L. and Schober,R.}, + Journal = {IEEE Trans. Commun.}, + Number = {9}, + Pages = {1736-1746}, + Volume = {55}, + Year = {2007} +} + +@Book{全国广播电视标准化技术委员会2007-1-1, + Title = {广播电视音像资料编目规范:第2部分~ 广播资料:GY/T202.2-2007}, + Address = {北京}, + Author = {全国广播电视标准化技术委员会}, + Note = {standard}, + Pages = {1}, + Publisher = {国家广播电影电视局广播电视规划院}, + Year = {2007} +} + +@Article{张敏莉2007-500-503, + Title = {超声速短化喷管的设计和试验研究}, + Author = {张敏莉 and 易仕和 and 赵玉新}, + Journal = {空气动力学报}, + Number = {4}, + Pages = {500-503}, + Volume = {25}, + Year = {2007} +} + +@Book{庄钊文2007--, + Title = {军用目标雷达散射截面预估与测量}, + Address = {北京}, + Author = {庄钊文 and 袁乃昌 and 莫锦军 and 刘少斌}, + Publisher = {科学出版社}, + Year = {2007} +} + +@Article{刘晨2007-400-404, + Title = {体系对抗仿真模型形式规范研究}, + Author = {刘晨 and 王维平 and 朱一凡}, + Journal = {系统仿真学报}, + Number = {2}, + Pages = {400-404}, + Volume = {19}, + Month = {1}, + Year = {2007} +} + +@Manual{吴凌云2007--, + Title = {CTEX FAQ}, + Author = {吴凌云}, + Version = {version 0.4}, + Month = {1}, + Subtitle = {常见问题集}, + Year = {2007} +} + +@Article{articlemorenames, + Title = {Cooperation enforcement and learning for optimizing packet forwarding in autonomous wireless networks}, + Author = {Pandana, C. and Han, Z. and Liu, K.J.R. and others}, + Journal = {Wireless Communications, IEEE Transactions on}, + Number = {8}, + Pages = {3150--3163}, + Volume = {7}, + Publisher = {IEEE}, + Year = {2008} +} + +@Inproceedings{Nasri2008-3616-3621, + Title = {Performance Evaluation of BICM-OFDM Systems Impaired by UWB Interference}, + Address = {Beijing, China}, + Author = {Nasri, A. and Schober,R. and Lampe,L.}, + Booktitle = {Proc. IEEE Int. Conf. on Commun.}, + Pages = {3616-3621}, + Year = {2008} +} + +@Book{2009-155-155, + Title = {师伏堂日记:第4册}, + Address = {北京}, + Pages = {155}, + Publisher = {北京图书馆出版社}, + Year = {2009} +} + +@Article{Chiani2009-231-254, + Title = {Coexistence between UWB and narrow-band wireless communication systems}, + Author = {Chiani, M. and Giorgetti, A.}, + Journal = {Proc. IEEE, Special Issue on UWB Technology and Emerging Applications}, + Number = {2}, + Pages = {231-254}, + Volume = {97}, + Year = {2009} +} + +@Article{Pinto2009-1268-1282, + Title = {A stochastic geometry approach to coexistence in heterogeneous wireless networks}, + Author = {Pinto, P. and Giorgetti,A. and Win,M. Z. and Chiani,M.}, + Journal = {IEEE J. Sel. Areas Commun., Special Issue on Stochastic Geometry and Random Graphs for Wireless Networks}, + Number = {7}, + Pages = {1268-1282}, + Volume = {27}, + Year = {2009} +} + +@Book{罗斯基2009--, + Title = {战前中国经济的增长}, + Address = {杭州}, + Author = {罗斯基}, + Publisher = {浙江大学出版社}, + Translator = {唐巧天 and 毛立坤 and 姜修宪}, + Year = {2009} +} + +@Book{陈希孺2009--, + Title = {概率论与数理统计}, + Address = {合肥}, + Author = {陈希孺}, + Publisher = {中国科学技术大学出版社}, + Year = {2009}, + Month = {2} +} + +@Book{李云霞2009--, + Title = {光电对抗原理与应用}, + Address = {西安}, + Author = {李云霞 and 蒙文 and 马丽华 and 赵尚弘}, + Date = {2009-02}, + Publisher = {西安电子科技大学出版社} +} + +@Article{卢秋红2009-247-251, + Title = {基于开放式架构的反恐排爆机器人关键技术分析}, + Author = {卢秋红 and 蒋金鹏 and 付西光}, + Journal = {上海电机学院学报}, + Number = {3}, + Pages = {247-251}, + Volume = {12}, + Month = {9}, + Year = {2009} +} + +@Article{张庆杰2009-30-33, + Title = {支持无人机互操作的多数据链互连网关设计}, + Author = {张庆杰 and 王林 and 朱华勇 and 沈林成}, + Journal = {计算机工程}, + Number = {20}, + Pages = {30-33}, + Volume = {35}, + Month = {10}, + Year = {2009} +} + +@Article{Park2010-696-715, + Title = {metadata quality Control in Digital repositories and collections: criteria, semantics, and mechanisms}, + Author = {Park, J R and tosaka, Y.}, + Journal = {Cataloging \& classification quarterly}, + Number = {8}, + Pages = {696-715}, + Volume = {48}, + Url = {http://www.tandfonline.com}, + Urldate = {2013-09-05}, + Year = {2010} +} + +@Article{陈建军2010-93-93, + Title = {从数字地球到智慧地球}, + Author = {陈建军}, + Journal = {国图资源导刊}, + Number = {10}, + Pages = {93}, + Volume = {7}, + Doi = {10.3969/j.issn.1672-5603.2010.10.038}, + Url = {http://d.g.wanfangdata.com.cn}, + Urldate = {2013-03-20}, + Year = {2010} +} + +@Article{储大同2010-721-724, + Title = {恶性肿瘤个体化治疗靶向药物的临床表现}, + Author = {储大同}, + Journal = {中华肿瘤杂志}, + Number = {10}, + Pages = {721-724}, + Volume = {32}, + Url = {http://www.sohu.com}, + Urldate = {2014-06-25}, + Year = {2010} +} + +@book{weiner2010-38, + Title = {Microarchaeology: beyond the visible archaeological record}, + Author = {Weiner, S}, + Address = {Cambridge, Eng.}, + Date = {2010}, + Publisher = {Cambridge University Press Textbooks}, + Url = {http://lib.MYLIB.COM/OPEN.aspx?id=253897}, + Urldate = {2013-10-14}, + pages = {38} +} + +@Article{储大同2010-721-724m, + Title = {恶性肿瘤个体化治疗靶向药物的临床表现}, + Author = {储大同}, + Journal = {中华肿瘤杂志}, + Number = {9/10}, + Pages = {721-724}, + Volume = {32}, + Doi = {10.7666/d.y351065}, + Url = {http://www.sohu.com}, + Urldate = {2014-06-25}, + Year = {2010} +} + +@Book{候文顺2010-119-119, + Title = {高分子物理:高分子材料分析、选择与改性}, + Address = {北京}, + Author = {候文顺}, + Pages = {119}, + Publisher = {化学工业出版社}, + Url = {http://apabi.lib.pku.edu.cn}, + Urldate = {2012-11-27}, + Year = {2010} +} + +@Book{胡承正2010-112-112, + Title = {理论物理概论:上}, + Address = {武汉}, + Author = {胡承正 and 周详 and 缪灵}, + Pages = {112}, + Publisher = {武汉大学出版社}, + Year = {2010} +} + +@Book{美国妇产科医师学会2010-38-39, + Title = {新生儿脑病和脑性瘫痪发病机制与病理生理}, + Address = {北京}, + Author = {美国妇产科医师学会}, + Pages = {38-39}, + Publisher = {人民卫生出版社}, + Translator = {段涛 and 杨慧霞}, + Year = {2010} +} + +@Book{全国信息文献标准化技术委员会2010-3-3, + Title = {文献著录:第4部分~ 非书资料:GB/T3792.4-2009}, + Address = {北京}, + Author = {全国信息文献标准化技术委员会}, + Note = {standard}, + Pages = {3}, + Publisher = {中国标准出版社}, + Year = {2010} +} + +@Article{伍江华2010-70-74, + Title = {C4ISR互操作框架及信息关系模型研究}, + Author = {伍江华 and 潘小群}, + Journal = {舰船电子工程}, + Number = {1}, + Pages = {70-74}, + Volume = {30}, + Year = {2010} +} + +@Book{王雪松2010--, + Title = {现代雷达电子战系统建模与仿真}, + Address = {北京}, + Author = {王雪松 and 肖顺平 and 冯德军 and 赵锋}, + Date = {2010-03}, + Publisher = {电子工业出版社} +} + +@Book{Ross2010--, + Title = {概率论基础教程}, + Address = {北京}, + Author = {Ross, S. M.}, + Edition = {第8版}, + Publisher = {人民邮电出版社}, + Translator = {郑忠国 and 詹从赞}, + Year = {2010}, + Month = {4} +} + +@Book{陈志杰2006--, + Title = {LaTeX 入门与提高}, + Address = {北京}, + Author = {陈志杰 and 赵书钦 and 李树钧 and 万福永}, + Edition = {第二版}, + Publisher = {高等教育出版社}, + Year = {2010}, + Month = {5} +} + +@Manual{Umeki2010--, + Title = {The geometry package}, + Author = {Hideo Umeki}, + Version = {v5.6}, + Month = {09}, + Year = {2010} +} + +@Report{Calkin2011-8-9, + Title = {a comparative risk assessment framework for wildland fire management: the 2010 cohesive strategy Science report: RMRS-GTR-262}, + Author = {Calkin, D and Ager, a. and Thompson, m.}, + Pages = {8-9}, + Year = {2011} +} + +@Book{Praetzellis2011-13-13, + Title = {death by theory : a tale of mystery and archaeological theory}, + Author = {Praetzellis, A.}, + Edition = {Rev. ed.}, + Pages = {13}, + Publisher = {Rowman \& Littlefield Publishing Group, Inc.}, + Url = {http://lib.myilibrary.com}, + Urldate = {2012-07-26}, + Year = {2011} +} + +@Proceedings{陈志勇2011--, + Title = {中国财税文化价值研究:“中国财税文化国际学术研讨会”论文集}, + Address = {北京}, + Author = {陈志勇}, + Publisher = {经济科学出版社}, + Url = {http://apabi.lib.pku.edu.cn}, + Urldate = {2013-10-14}, + Year = {2011} +} + +@InProceedings{贾东琴2011-45-52a, + author = {贾东琴 and 柯平}, + title = {面向数字素养的高校图书馆数字服务体系研究}, + booktitle = {中国图书馆学会年会论文集:2011年卷}, + year = {2011}, + publisher = {国家图书馆出版社}, + pages = {45-52}, + address = {北京}, + bookauthor = {中国图书馆学会}, +} + +@Inbook{楼梦麟2011-11-12, + Title = {汶川地震基岩地震动特征分析}, + Address = {上海}, + Author = {楼梦麟 and 杨燕}, + Bookauthor = {同济大学土木工程防灾国家重点实验室}, + Booktitle = {汶川地震震害研究}, + Pages = {{011-012}}, + Publisher = {同济大学出版社}, + Url = {http://apabi.lib.pku.edu.cn}, + Urldate = {2013-05-09}, + Year = {2011} +} + +@Thesis{马欢2011-27-27, + Title = {人类活动影响下海河流域典型区水循环变化分析}, + Address = {北京}, + Author = {马欢}, + Institution = {清华大学}, + Pages = {27}, + Url = {http://www.cnki.net/kcms/detail/detail.aspx?dbcode=CDFD&QueryID=.O&CurRec=11&dbname=CDFDLAST2013&.filename=1012035905.nh&uid=WEEvRE­wSIJHSldTTGJhYIJRaEhGUXFQWVB6SGZXeisxdmVhV3Zy2kpoUnozeDElbOpaMONmMjZiQ3p4TUdmcw= }, + Urldate = {2013-10-14}, + Year = {2011} +} + +@InBook{2011-1109-1109, + title = {周易外传:卷5}, + booktitle = {船山全书:第6册}, + year = {2011}, + bookauthor = {王夫之}, + publisher = {岳麓书社}, + location = {长沙}, + pages = {1109}, +} + +@Book{胡伟2011--, + Title = {LaTeX2$\varepsilon$完全学习手册}, + Address = {北京}, + Author = {胡伟}, + Publisher = {清华大学出版社}, + Year = {2011}, + Month = {1} +} + +@Manual{Oetiker2011--, + Title = {The Not So Short Introduction to \LaTeXe{}}, + Author = {Tobias Oetiker and Hubert Partl and Irene Hyna and Elisabeth Schleg}, + Month = {4}, + Year = {2011} +} + +@Article{陈高峰2011-230-232, + Title = {基于开放式框架的交叉开发环境设计与实现}, + Author = {陈高峰}, + Journal = {煤炭技术}, + Number = {6}, + Pages = {230-232}, + Volume = {30}, + Month = {6}, + Year = {2011} +} + +@Manual{Robertson2011--, + Title = {The ccaption package}, + Author = {Will Robertson and Peter Wilson and Herries Press}, + Version = {v3.2c}, + Month = {8}, + Year = {2011} +} + +@Article{谭跃进2011-441-445, + Title = {体系工程的研究与发展}, + Author = {谭跃进 and 赵青松}, + Journal = {中国电子科学研究院学报}, + Number = {5}, + Pages = {441-445}, + Volume = {6}, + Month = {10}, + Year = {2011} +} + +@Manual{Sommerfeldt2011--, + Title = {Customizing captions of floating environments}, + Author = {Axel Sommerfeldt}, + Url = {http://sourceforge.net/projects/latex-caption/}, + Month = {11}, + Year = {2011} +} + +@Article{张晓琴2011--, + Title = {有重复组合公式的几种证明方法}, + Author = {张晓琴 and 王顺勇}, + Journal = {大学数学}, + Number = {6}, + Volume = {27}, + Month = {12}, + Year = {2011} +} + +@Book{Kinchy2012-50-50, + Title = {Seeds, Sciences, and struggle : the global politics of transgenic crops}, + Address = {Cambridge,Mass.}, + Author = {Kinchy, A.}, + Pages = {50}, + Publisher = {MIT Press}, + Url = {http://lib.myilibary.com}, + Urldate = {2013-07-14}, + Year = {2012} +} + +@Book{库恩2012--, + Title = {科学革命的结构:第4版}, + Address = {北京}, + Author = {库恩}, + Edition = {2}, + Publisher = {北京大学出版社}, + Translator = {金吾伦 and 胡新和}, + Year = {2012} +} + +@Proceedings{雷光春2012--, + Title = {综合湿地管理:综合湿地管理国际研讨会论文集}, + Address = {北京}, + Author = {雷光春}, + Publisher = {海洋出版社}, + Year = {2012} +} + +@Article{于潇2012-1518-1523, + Title = {互联网药品可信交易环境中主体资质审核备案模式}, + Author = {于潇 and 刘义 and 柴跃廷 and others}, + Journal = {清华大学学报(自然科学版)}, + Number = {11}, + Pages = {1518-1523}, + Volume = {52}, + Year = {2012} +} + +@Article{于潇2011-15-23, + Title = {互联网药品可信交易环境中主体资质审核备案模式}, + Author = {于, 潇 and 刘, 义 and 柴, 跃廷 and others}, + Journal = {清华大学学报}, + Number = {11}, + Pages = {15-23}, + Volume = {52}, + Year = {2011} +} + +@Proceedings{中国社会科学院台湾史研究中心2012--, + Title = {台湾光复六十五周年暨抗战史实学术研讨会论文集}, + Address = {北京}, + Publisher = {九州出版社}, + Year = {2012}, + Editor = {中国社会科学院台湾史研究中心} +} + +@Book{埃伯哈德$ullet$蔡德勒等2012--, + Title = {数学指南-实用数学手册}, + Address = {北京}, + Author = {埃伯哈德$\bullet$蔡德勒等}, + Publisher = {科学出版社}, + Translator = {李文林等}, + Year = {2012}, + Month = {1} +} + +@Book{廖平2012--, + Title = {导弹突防中的电子对抗技术}, + Address = {北京}, + Author = {廖平 and 姜勤波}, + Date = {2012-01}, + Publisher = {国防工业出版社} +} + +@Patent{张凯军2012-04-05--, + Title = {轨道火车及高速轨道火车紧急安全制动辅助装置}, + Author = {张凯军}, + Number = {201220158825.2}, + Year = {2012-04-05} +} + +@Online{李强2012-05-03--, + Title = {化解医患矛盾需釜底抽薪}, + Author = {李强}, + Url = {http://wenku.baidu.com}, + Urldate = {2013-03-25}, + Year = {2012-05-03} +} + +@Online{Dublin2012-06-14--, + Title = {Dublin core metadata element set: version 1.1}, + Url = {http://dublincore.org}, + Urldate = {2014-06-11}, + Year = {2012-06-14} +} + +@Book{胡广书2012--, + Title = {数字信号处理—理论、算法与实现}, + Address = {北京}, + Author = {胡广书}, + Edition = {第三版}, + Publisher = {清华大学出版社}, + Year = {2012}, + Month = {10} +} + +@Article{Franz2013-1053-1062, + Title = {Phenotypic screening with oleaginous microalgae reveals modulators of lipid productivity}, + Author = {Franz,A.K. AND DANIELEWICZ, M. A. AND WONG, D. M. AND OTHERS}, + Journal = {ACS chemical biology}, + Pages = {1053-1062}, + Volume = {8}, + Url = {http://pubs.acs.org}, + Urldate = {2014-06-26}, + Year = {2013} +} + +@Article{Walls2013-399-418, + Title = {drought, deluge and declines: the impact of precipition extremes on amphibians in a changing climate}, + Author = {Walls, S C and barichivich, W. J. and BROWN, m. e.}, + Journal = {Biology}, + Number = {1}, + Pages = {399-418}, + Volume = {2}, + Url = {http://www.mdpi.com}, + Urldate = {2013-11-04}, + Year = {2013}, + doi = {10.3390/biology2010399} +} + +@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} +} + +@InBook{马克思2013-302-302a, + author = {马克思}, + title = {政治经济学批判}, + booktitle = {马克思恩格斯全集:第35卷}, + year = {2013}, + bookauthor = {马克思 and 恩格斯}, + publisher = {人民出版社}, + pages = {302}, + address = {北京}, +} + +@Article{杨洪升2013-56-75, + Title = {四库馆私家抄校书考略}, + Author = {杨洪升}, + Journal = {文献}, + Number = {1}, + Pages = {56-75}, + Year = {2013} +} + +@Book{易仕和2013--, + Title = {超声速和高超声速喷管设计}, + Address = {北京}, + Author = {易仕和 and 赵玉新 and 何霖 and 张敏莉}, + Publisher = {国防工业出版社}, + Year = {2013} +} + +@Article{詹广平2013-8-10, + Title = {美海军宙斯盾系统开放式体系结构研究}, + Author = {詹广平}, + Journal = {舰船电子工程}, + Number = {11}, + Pages = {8-10}, + Volume = {33}, + Year = {2013} +} + +@Book{中国企业投资协会2013--, + Title = {投资台湾:大陆企业赴台投资指南}, + Address = {北京}, + Author = {中国企业投资协会 and 台湾并购与私募股权协会 and 汇盈国际投资集团}, + Publisher = {九州出版社}, + Year = {2013} +} + +@Article{周学武2013-49-52, + Title = {数据链技术的发展及其在空面导弹中的应用}, + Author = {周学武 and 邹敏怀 and 张邦楚 and 黄剑斌 and 刘涛}, + Journal = {教练机}, + Number = {2}, + Pages = {49-52}, + Year = {2013} +} + +@Book{Poisel2013--, + Title = {通信电子战原理}, + Address = {北京}, + Author = {Poisel, Richard A.}, + Edition = {2版}, + Pages = {23--26}, + Publisher = {电子工业出版社}, + Translator = {聂皞 and 王振华 and 陈少昌 and 吴利民}, + Url = {http://www.baidu.com}, + Urldate = {2013-08-01}, + Year = {2013}, + Month = {1} +} + +@Article{王雪峥2013-249-254, + Title = {基于DoDAF的靶场体系结构设计}, + Author = {王雪峥 and 许雪梅}, + Journal = {系统工程理论与实践}, + Number = {1}, + Pages = {249-254}, + Volume = {33}, + Month = {1}, + Year = {2013} +} + +@Book{阎毅2013--, + Title = {软件无线电与认知无线电概论}, + Address = {北京}, + Author = {阎毅 and 贺鹏飞}, + Publisher = {电子工业出版社}, + Year = {2013}, + Month = {1} +} + +@Article{刘裕国2013-01-12--, + Title = {雾霾来袭,如何突围}, + Author = {刘裕国 and 杨柳 and 张洋 and OTHERS}, + Journal = {人民日报}, + Note = {news}, + Url = {http://paper.people.com.cn}, + Urldate = {2013-11-06}, + Year = {2013-01-12} +} + +@Report{中华人民共和国国务院新闻办公室2013-04-16--, + Title = {国防白皮书:中国武装力量的多样化运用}, + Author = {中华人民共和国国务院新闻办公室}, + Url = {http://www.mod.gov.cn}, + Urldate = {2014-06-11}, + Year = {2013}, + date = {2013-04-16} +} + +@Book{刘海洋2013--, + Title = {LaTeX 入门}, + Address = {北京}, + Author = {刘海洋}, + Publisher = {电子工业出版社}, + Year = {2013}, + Month = {6} +} + +@Unpublished{包太雷2013--, + Title = {LaTeX Notes}, + Author = {包太雷}, + Edition = {第二版}, + Month = {9}, + Subtitle = {雷太赫排版系统简介}, + Year = {2013} +} + +@Report{汤万金2013-09-30--, + Title = {人体安全重要技术标准研制最终报告: 7178999X}, + Author = {汤万金 and 杨跃翔 and 刘文 and others}, + Url = {http://www.nstrs.org.cn}, + Urldate = {2014-06-24}, + date = {2013-09-30}, + Year = {2013} +} + +@Manual{Lehman2013--, + Title = {The biblatex Package}, + Author = {Philipp Lehman and Philip Kime and Audrey Boruvka and Joseph Wright}, + Version = {version 2.8a}, + Month = {11}, + Subtitle = {Programmable Bibliographies and Citations}, + Year = {2013} +} + +@Proceedings{Babu2014--, + Title = {Proceedings of the second international conference on soft computing for problem solving, December 28-30, 2012}, + Address = {New Delhi}, + Publisher = {Springer}, + Year = {2014}, + Editor = {Babu, B. V. and NAGAR, A. K. AND DEEP, K. and others} +} + +@Book{同济大学数学系2014--, + Title = {高等数学}, + Address = {北京}, + Author = {同济大学数学系}, + Publisher = {高等教育出版社}, + Year = {2014}, + Month = {7} +} + +@Book{杨林2015--, + Title = {面向对象软件工程与UML实践教程}, + Address = {北京}, + Author = {杨林 and 叶亚琴 and 方芳}, + Publisher = {科学出版社}, + Year = {2015}, + Month = {1} +} + +@Manual{Braams2015--, + Title = {The \LaTeXe{} Sources}, + Author = {Johannes Braams and David Carlisle and Alan Jeffrey and Leslie Lamport and Frank Mittelbach and Chris Rowley and Rainer Sch¨opf}, + Date = {2015-01-01} +} + +@Manual{Lehman2015, + Title = {The Biblatex Package: Programmable Bibliographies and Citations}, + Author = {Philipp Lehman and Philip Kime and Audrey Boruvka and Joseph Wright}, + Date = {2015-04-20}, + Version = {3.0} +} + +@Book{中华人民共和国国家质量监督检验检疫总局2015, + Title = {中华人民共和国国家标准 GB/T 7714-2015 信息与文献 参考文献著录规则}, + Author = {中华人民共和国国家质量监督检验检疫总局 and 中国国家标准化管理委员会}, + Date = {2015-05-15}, + Note = {standard} +} + +@Article{高翔2015-26-31, + Title = {复杂航电架构的开放式系统标准研究}, + Author = {高翔 and 李辰}, + Journal = {航空电子技术}, + Number = {2}, + Pages = {26-31}, + Volume = {46}, + Month = {6}, + Year = {2015} +} + +@Manual{Mittelbach2015--, + Title = {An environment for multicolumn output}, + Author = {Frank Mittelbach}, + Month = {12}, + Year = {2015} +} + +@Manual{Berry2016--, + Title = {TEX Live 指南—2016}, + Author = {Karl Berry}, + Date = {2016-06} +} + +@Manual{胡振震2016, + Title = {符合 GB7714-2015 标准的 biblatex 参考文献样式文件}, + Author = {胡振震}, + Date = {2016-07-01}, + Url = {https://ctan.org/pkg/biblatex-gb7714-2015}, + Urldate = {2018-04-23} +} + +@Online{Alliance--, + Title = {WiMedia Alliance}, + Url = {www.wimedia.org} +} + +@Book{booknodate, + Title = {出版集团研究}, + Author = {余敏}, + Pages = {179-193}, + Publisher = {中国书籍出版社}, + Location = {北京} +} + +@Book{booknopublishernoyear, + Title = {出版集团研究}, + Author = {余敏}, + Location = {北京} +} + +@Online{Commonwealth--, + Title = {Pennsylvania library laws}, + Author = {{Commonwealth libraries bureau of library development.Pennsylvania department of education office}}, + Url = {http://www.racc.edu}, + Urldate = {2013-03-24} +} + +@Report{Eggrers--, + Title = {One-dimensional flows of an imperfect diatomic gas}, + Author = {Eggrers, A. J.}, + Number = {959}, + Type = {NACA report} +} + +@Online{HOPKINSON--, + Title = {UNIMARC and metadata: Dublin Core}, + Author = {A HOPKINSON}, + Url = {http://www.rfla.org/IV/rfla64/13801613.htm}, + Urldate = {1999-12-08} +} + +@Online{JabRef中文手册--, + Title = {JabRef中文手册}, + Url = {http://blog.csdn.net/zd0303/article/details/7676807} +} + +@Online{JabRefManual--, + Title = {JabRef Manual}, + Url = {http://blog.csdn.net/zd0303/article/details/7676807} +} + +@Online{OCLC--a, + author = {{Online Computer Library Center, Inc.}}, + title = {History of OCLC}, + url = {http://www.oclc.org/about/history/default.htm}, + urldate = {2000-01-08}, +} + +@Book{Parsons2000nodate--, + Title = {The Mobile Radio Propagation Channel}, + Address = {Hoboken}, + Author = {Parsons, J. D.}, + Edition = {2}, + Publisher = {John Wiley and Sons} +} + +@Book{Parsons2000nopubnoyear--, + Title = {The Mobile Radio Propagation Channel}, + Address = {Hoboken}, + Author = {Parsons, J. D.}, + Edition = {2} +} + +@Book{standardinfoiso158, + 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{鸟哥--, + Title = {鸟哥的linux私房菜}, + Author = {鸟哥}, + Edition = {3}, + Publisher = {人民邮电出版社} +} + +@Online{olqa2016--, + Title = {求助beamerposter制作海报时参考文献样式的问题}, + Date = {2016}, + Url = {http://bbs.ctex.org/forum.php?mod=viewthread&tid=153061&page=1&extra=#pid544787} +} + +@Online{北京交通大学研究生公众号2016--, + Title = {新学期定个小目标—学会在LaTeX中管理参考文献}, + Author = {北京交通大学研究生公众号}, + Date = {2016-09-17}, + Url = {http://www.latexstudio.net/archives/7488} +} + +@Online{olref2016--, + Title = {如何在LaTeX写作中管理参考文献?}, + Date = {2016-08-12}, + Url = {http://www.latexstudio.net/archives/7131} +} + +@Online{文献助手2016--, + Title = {参考文献格式搜索神器上线了}, + Author = {文献助手}, + Date = {2016-09-21}, + Url = {http://www.latexstudio.net/archives/7560} +} + +@Book{IFLAI1977b--, + Title = {Names of persons: national usages for entry in catalogues}, + Author = {{International Federation of Library Association and Institutions} and {FCC} and {FBI} and {CIA}}, + Edition = {3}, + Publisher = {IFLA International Office for UBC}, + Year = {1977}, + Location = {London} +} + +@Inproceedings{r27-BenHadjAlaya-FekiA.2008-1-5, + Title = {Interference cartography for hierarchical dynamic spectrum access}, + Address = {Chicago, IL}, + Author = {{Ben Hadj Alaya-Feki A.} and B. Sayrac and S. Ben Jemaa and E. Moulines}, + Booktitle = {Proc. IEEE Symp. on New Frontiers in Dynamic Spectrum Access Networks (DySPAN)}, + Date = {2008-10}, + Pages = {1-5} +} + +@Book{中国企业投资协会2014--, + Title = {投资台湾:大陆企业赴台投资指南}, + Address = {北京}, + Author = {{中国企业投资协会} and 台湾并购与私募股权协会 and 汇盈国际投资集团 and 国际投资集团}, + Publisher = {九州出版社}, + Year = {2014} +} + +@Book{中国企业投资协会2015--, + Title = {投资台湾:大陆企业赴台投资指南}, + Address = {北京}, + Author = {中国企业投资协会 and 台湾并购与私募股权协会 and 汇盈国际投资集团 and 国际投资集团}, + Publisher = {九州出版社}, + Year = {2015} +} + +@Manual{Tantau2015--, + Title = {The beamer class -- User Guide for version 3.36}, + Author = {Till Tantau and Joseph Wright and Vedran Miletić}, + Date = {2015-03-08}, + Url = {http://bitbucket.org/rivanvx/beamer} +} + +@Manual{Oetiker--, + Title = {一份不太简短的LATEX2ε介绍}, + Author = {Tobias Oetiker and Hubert Partl and Irene Hyna and Elisabeth Schlegl}, + Date = {2017-03}, + Translator = {ChinaTEX论坛}, + Url = {https://ctan.org/pkg/lshort-zh-cn}, + Urldate = {2018-04-23}, + Version = {5.10} +} + +@Manual{Daly2010--, + Title = {Natural Sciences Citations and References (package natbib)}, + Author = {Patrick W. Daly}, + Date = {2010-09-13}, + Url = {https://ctan.org/pkg/natbib}, + Urldate = {2018-04-27}, + Version = {8.31b} +} + +@Manual{Arseneau2010--, + Title = {chapterbib multiple bibliographies in LATEX}, + Author = {Donald Arseneau}, + Date = {2010-09-05}, + Url = {https://ctan.org/pkg/chapterbib}, + Urldate = {2018-04-23} +} + +@Manual{Shell2013--, + Title = {Mciteplus: Enhanced Multicitations}, + Author = {Michael Shell}, + Date = {2013-09-13}, + Url = {https://ctan.org/pkg/mciteplus}, + Urldate = {2018-04-23}, + Version = {1.2} +} + +@Online{Hansen2008--, + Title = {The multibib Package}, + Author = {Thorsten Hansen}, + Date = {2008-12-10}, + Url = {https://www.ctan.org/pkg/multibib}, + Urldate = {2018-05-04}, + Version = {v1.4} +} + +@Online{Seindal1994--, + Title = {Inline bibliography style}, + Author = {René Seindal}, + Date = {1994-12-06}, + Url = {https://www.ctan.org/pkg/inlinebib}, + Urldate = {2018-05-04} +} + +@Book{booknopubitems, + Title = {出版集团研究}, + Author = {余敏}, + Date = {2001}, + Pages = {50-63} +} + +@Comment{jabref-meta: databaseType:biblatex;} + +@Comment{jabref-entrytype: Newspaper: req[] opt[]} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015-gbk.def b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015-gbk.def index b2dc830eb6..402e13df90 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015-gbk.def +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015-gbk.def @@ -1,28 +1,28 @@ -%% -%% --------------------------------------------------------------- -%% biblatex-gb7714-2015 --- A biblatex implementation of the -%% GBT7714-2015 bibliography style, GBK supported file -%% Maintained by huzhenzhen -%% E-mail: hzzmail@163.com -%% Released under the LaTeX Project Public License v1.3c or later -%% --------------------------------------------------------------- -%% - - \def\str@bibliography{ο} - \def\str@references{ο} - \def\str@bytranslator{} - \def\str@andotherscn{} - \def\str@andcn{} - \def\str@backrefpage{ҳ} - \def\str@backrefpages{ҳ} - \def\str@noaddress{ز} - \def\str@nopublisher{߲} - \def\str@edition{} - \def\str@volumecn{} - \def\str@numbercn{} - \def\str@serialcn{} - \def\str@sameentry{ͬ} - \def\str@incn{} - \def\str@mathesiscn{˶ʿѧλ} - \def\str@phdthesiscn{ʿѧλ} - \def\str@editorcn{} +%% +%% --------------------------------------------------------------- +%% biblatex-gb7714-2015 --- A biblatex implementation of the +%% GBT7714-2015 bibliography style, GBK supported file +%% Maintained by huzhenzhen +%% E-mail: hzzmail@163.com +%% Released under the LaTeX Project Public License v1.3c or later +%% --------------------------------------------------------------- +%% + + \def\str@bibliography{ο} + \def\str@references{ο} + \def\str@bytranslator{} + \def\str@andotherscn{} + \def\str@andcn{} + \def\str@backrefpage{ҳ} + \def\str@backrefpages{ҳ} + \def\str@noaddress{ز} + \def\str@nopublisher{߲} + \def\str@edition{} + \def\str@volumecn{} + \def\str@numbercn{} + \def\str@serialcn{} + \def\str@sameentry{ͬ} + \def\str@incn{} + \def\str@mathesiscn{˶ʿѧλ} + \def\str@phdthesiscn{ʿѧλ} + \def\str@editorcn{} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015.bbx index ea6357c25e..0da0841ee9 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015.bbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015.bbx @@ -1,3899 +1,3900 @@ -%% -%% --------------------------------------------------------------- -%% biblatex-gb7714-2015 --- A biblatex implementation of the -%% GBT7714-2015 bibliography style,numerical sequence -%% Maintained by huzhenzhen -%% E-mail: hzzmail@163.com -%% Released under the LaTeX Project Public License v1.3c or later -%% --------------------------------------------------------------- -%% - -% -% 版本和时间信息 -% -\def\versionofgbtstyle{2020/07/21 v1.0v} -\def\versionofbiblatex{\abx@version} -\ProvidesFile{gb7714-2015.bbx}[\versionofgbtstyle biblatex bibliography style] -%\RequireBiber[3]%显式指定用biber后端,当用bibtex时会报错,但其实不会影响编译,只是采用bibtex后无法达成格式需求 - -%===================================================================== -% 加载标准样式 -%===================================================================== -\RequireBibliographyStyle{numeric-comp} -\RequirePackage{xstring}%解决texlive2015的biblatex3.0不加载xstring包的问题 - - -%===================================================================== -% 功能函数 -%===================================================================== - % - % biblatex版本判断 - % 20180405,v1.0k,为兼容biblatexv3.11增加toggle:iftlnine,HU zhenzhen - % 20181020,v1.0n,为不再使用xstring宏包做的修改,hzz - % - % 原理方法:当版本继续更新时,增加一个新的toggle用以处理新的旧版,最新版和未判断出来的版本永远用iftlatest - \providetoggle{iftlfive}\togglefalse{iftlfive} %处理biblatex3.2之前版本,时间2016-03-01前 - \providetoggle{iftlsix}\togglefalse{iftlsix} %处理biblatex3.3开始改变姓名机制后版本,时间2016-03-01及以后 - \providetoggle{iftlseven}\togglefalse{iftlseven}%处理biblatex3.7的兼容性,时间2016-12-01后 - \providetoggle{iftleight}\togglefalse{iftleight}%处理biblatex3.8到3.9的兼容性,时间2017-11-01后到2017-12-01前 - \providetoggle{iftlnine}\togglefalse{iftlnine} %处理biblatex10的兼容性,时间2017-12-01后 - \providetoggle{iftlatest}\toggletrue{iftlatest} %假设是最新版biblatex - - \@ifpackagelater{biblatex}{2014/04/01}{ - \@ifpackagelater{biblatex}{2016/03/01}{ - \@ifpackagelater{biblatex}{2016/12/01}{ - \@ifpackagelater{biblatex}{2017/11/01}{ - \@ifpackagelater{biblatex}{2017/12/01}{ - \@ifpackagelater{biblatex}{2018/02/19}{} - {\toggletrue{iftlnine}\togglefalse{iftlatest}}} - {\toggletrue{iftleight}\togglefalse{iftlatest}}} - {\toggletrue{iftlseven}\togglefalse{iftlatest}}} - {\toggletrue{iftlsix}\togglefalse{iftlatest}}} - {\toggletrue{iftlfive}\togglefalse{iftlatest}}} - {\PackageError{biblatex}{Outdated 'biblatex' package} - {Please update biblatex, This is a fatal error.}} - - \newcommand\defversion[2]{\csdef{codeversion#1#2}}%定义不同版本的命令 - \newcommand\switchversion[2]{\csuse{codeversion#1#2}}%使用不同版本的命令 - - % - % 判断CJK字符的函数,用于判断作者等信息是否由中文字符构成 - % v1.0k,20180509,hzz - % - % 原理方法:用biber中的perl方法代替。因为利用tex函数对字符判断时,当字符在宏 - % 中时,基于`的方法无法解决GBK编码的问题,基于CJKsymbol的方法无法解决utf-8 - % 编码用xelatex编译的问题。 - % - % 原理是:利用perl正则将中文标识记录到域中, - % 然后利用\iffieldundef和\iffieldequalstr进行判断 - \providetoggle{ifCJKforgbt} - \def\testCJKfirst#1{% - \iffieldundef{#1}{\togglefalse{ifCJKforgbt}}{% - \iffieldequalstr{#1}{chinese}{\toggletrue{ifCJKforgbt}}{\togglefalse{ifCJKforgbt}}}} - - % - % 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{}}% - } - - % 对没有分隔符环境命令的低版本biblatex做增补,避免报错 - % - \iftoggle{iftlfive}{ - - \def\blx@inf@delimdeclare#1#2{% - \blx@info{Delimiter '#1' in context '#2' already defined, overwriting}} - - \def\blx@warn@delimuse#1#2{% - \blx@warning{Delimiter '#1' in context '#2' undefined}} - % Delimiter interface - - % []{}{} - \newrobustcmd*{\DeclareDelimFormat}{% - \@ifstar - {\blx@declaredelimclear} - {\blx@declaredelim}} - - \newrobustcmd*{\blx@declaredelimclear}[3][]{% - \ifcsvoid{blx@declaredelimcontexts@#2} - {} - {\def\do##1{\csundef{blx@printdelim@##1@#2}}% - \dolistcsloop{blx@declaredelimcontexts@#2}}% - \cslet{blx@declaredelimcontexts@#2}\@empty - \ifblank{#1} - {\blx@declaredelim{#2}{#3}} - {\blx@declaredelim[#1]{#2}{#3}}} - - \newrobustcmd*{\blx@declaredelim}[3][]{% - \ifblank{#1} - {\blx@declaredelim@i{}{}{#2}{#3}} - {\def\do##1{% - \listcsadd{blx@declaredelimcontexts@#2}{##1}% - \blx@declaredelim@i{blx@printdelim@##1@}{##1}{#2}{#3}}% - \docsvlist{#1}}}% - - \def\blx@declaredelim@i#1#2#3#4{% - \def\do@i##1{% - \ifcsdef{#1##1} - {\blx@inf@delimdeclare{##1}{#2}} - {}% - \csdef{#1##1}{#4}}% - \forcsvlist{\do@i}{#3}} - - % *[]{}{} - \newrobustcmd*{\DeclareDelimAlias}{% - \@ifstar - {\blx@declaredelimalias} - {\blx@declaredelimaliasauto}} - - \newrobustcmd*{\blx@declaredelimalias}[3][]{% - \ifblank{#1} - {\blx@declaredelimalias@i{}{#2}{#3}} - {\def\do##1{% - \blx@declaredelimalias@i{blx@printdelim@##1@}{#2}{#3}}% - \docsvlist{#1}}} - - \newrobustcmd*{\blx@declaredelimaliasauto}[2]{% - \blx@declaredelimalias@i{}{#1}{#2}% - \ifcsvoid{blx@declaredelimcontexts@#2} - {} - {\def\do##1{% - \blx@declaredelimalias@i{blx@printdelim@##1@}{#1}{#2}}% - \dolistcsloop{blx@declaredelimcontexts@#2}}} - - \def\blx@declaredelimalias@i#1#2#3{% - \ifcsdef{#1#2} - {\blx@inf@delimdeclare{#2}{#1}} - {}% - \csdef{#1#2}{\csuse{#1#3}}} - - \def\blx@delimcontext{none} - \newcommand*{\printdelim}[2][]{% - \ifblank{#1} - {\ifcsdef{blx@printdelim@\blx@delimcontext @#2} - {\csuse{blx@printdelim@\blx@delimcontext @#2}} - {\ifcsdef{#2}% fall back on legacy macros - {\csuse{#2}} - {\blx@warn@delimuse{#2}{*}}}} - {\ifcsdef{blx@printdelim@#1@#2} - {\csuse{blx@printdelim@#1@#2}} - {\blx@warn@delimuse{#2}{#1}}}} - - \newcommand*{\delimcontext}[1]{% - \edef\blx@delimcontext{\blx@delimcontextalias{#1}}} - - \def\blx@delimcontextalias#1{% - \ifcsdef{blx@delimcontextalias@#1} - {\csuse{blx@delimcontextalias@#1}} - {#1}} - - \newcommand*{\DeclareDelimcontextAlias}[2]{% - \csgdef{blx@delimcontextalias@#1}{#2}} - }{} - - -%===================================================================== -% 数据模型定义 -%===================================================================== - %定义类型和载体标识,从gb内容看载体基本属于介质。 - %为与lee zeping的bst的样式统一,使用mark和medium这两域名 - %为单个条目的姓名格式控制增加nameformat和namefmtid两个域 - %为缩略信息文献表增加了shortbooktitle域 - %为多语言排序增加了lansortorder域 - \DeclareDatamodelFields[type=field,datatype=literal]{mark,medium,nameformat} - \DeclareDatamodelFields[type=field,datatype=integer]{namefmtid} - \DeclareDatamodelFields[type=field,datatype=literal]{shortbooktitle} - \DeclareDatamodelFields[type=field,datatype=literal]{lansortorder} - - %因为biblatex更新3.14版本以后,biber对于为声明数据模型的条目类型 - %不再默认读取,而是以空字符串作为条目类型名,自然在条目定义alias时 - %就会出现问题,因此显式的声明一下newspaper,然后保留后面采用alias的方式 - %而standard类型则是采用另一种方式直接在sourcemap中转换为其它类型。 - \@ifpackagelater{biblatex}{2019/11/30}{%2019/12/01 v3.14 - \DeclareDatamodelEntrytypes{newspaper}% - }{} - - - -%===================================================================== -% 设置宏包选项 -%===================================================================== - % - % 增加一个控制是否输出文献载体的选项 - % 20191125,v1,0s,hzz - \newtoggle{bbx:gbmedium} - \DeclareBibliographyOption{gbmedium}[true]{%biblatex低版本 - \settoggle{bbx:gbmedium}{#1}} - \ExecuteBibliographyOptions{gbmedium} - - % - % 增加一个控制是否输出annotation域的选项,该域可以用于在文献条目后面输出一些注释信息 - % 20190509,v1,0s,hzz - \newtoggle{bbx:gbannote} - \DeclareBibliographyOption{gbannote}[false]{%biblatex低版本 - \settoggle{bbx:gbannote}{#1}} - \ExecuteBibliographyOptions{gbannote} - % - %用于在文献条目后面输出注释信息的宏 - %FieldFormat{annotation}用于设置注释信息的格式 - \DeclareFieldFormat{annotation}{% - \printtext{\addspace(#1)}% - } - \renewbibmacro*{annotation}{% - \iftoggle{bbx:gbannote}% - {\iffieldundef{annotation}% - {\printfile[annotation]{\bibannotationprefix\thefield{entrykey}.tex}}% - {\printfield{annotation}}}% - {}% - } - - % - % 增加一个控制是否输出type域的选项 - % 20190212,v1,0q,hzz - \newtoggle{bbx:gbfieldtype} - \DeclareBibliographyOption{gbfieldtype}[false]{%biblatex低版本 - \settoggle{bbx:gbfieldtype}{#1}} - \ExecuteBibliographyOptions{gbfieldtype} - - % - % 增加一个控制是否根据页码重设脚注数字标号的选项 - % 20190422,v1,0r,hzz - \newtoggle{bbx:gbfnperpage} - \DeclareBibliographyOption{gbfnperpage}[false]{% - \settoggle{bbx:gbfnperpage}{#1}} - \ExecuteBibliographyOptions{gbfnperpage} - - - % - % 增加一个选项,用于控制是否实现GB/T 7714-2015标准的脚注文献表 - % 20190203,v1.0p,hzz - % 原理方法:默认做patch,文献引用带圈上标数字表示,脚注中的文献用带圈非上标数字做标签 - % 当前面的脚注中已经存在当前文献,那么当前文献内容不再输出而用同(4)这样的方式 - % 需要注意的是由于小页环境和表格中的脚注本身的问题,可能会有一些问题 - \DeclareBibliographyOption{gbfootbib}[false]{% - \ifstrequal{#1}{false}{}{\execgbfootbib}} - \ExecuteBibliographyOptions{gbfootbib} - - %% - \newlength{\footbibmargin} - \newlength{\footbiblabelsep} - \setlength{\footbibmargin}{1em}%脚注的段落左侧缩进距离 - \setlength{\footbiblabelsep}{0.5em}%脚注中标记号与脚注段落的间距 - \def\execgbfootbib% - {% - %开启引用跟踪计数器,为使用\ifciteseen等测试命令 - \ExecuteBibliographyOptions{citetracker=true} - % - %利用footmisc宏包来实现脚注文献的悬挂对齐 - \AtEndPreamble{ - \@ifclassloaded{beamer}{}{ - %beamer类因为其特殊性,为避免冲突不调footmisc。 - %同时footmisc与hyperref宏包也不兼容,所以使用footmisc时会破坏脚注的超链接 - %如果要实现超链接可以将下句注释掉,这里留着主要是实现悬挂对齐。 - %\PassOptionsToPackage{perpage,hang}{footmisc}% - %\RequirePackage{footmisc}% - - %重新实现脚注的根据单页重设脚注号码 - %重新实现脚注的悬挂对齐问题,不再使用footmisc,直接从latex核心代码和hyperref代码进行修改 - %v1.0q 20190317 hzz - %v1.0r 20190422 hzz 根据gbfnperpage选项设置 - \iftoggle{bbx:gbfnperpage}% - {\@addtoreset{footnote}{page}}{}%重设计数器 - -\@ifpackageloaded{hyperref}{%加载hyperref则对\H@@footnotetext做重定义 - \long\def\H@@footnotetext##1{\insert\footins{% - \reset@font\footnotesize - \interlinepenalty\interfootnotelinepenalty - \splittopskip\footnotesep - \splitmaxdepth \dp\strutbox \floatingpenalty \@MM - \hsize\columnwidth \@parboxrestore - \protected@edef\@currentlabel{% - \csname p@footnote\endcsname\@thefnmark - }% - \color@begingroup - \leftskip \footbibmargin%增加的左侧缩进 - \@makefntext{% - \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox% - }% - \color@endgroup}}% - - \long\def\H@@mpfootnotetext##1{% - \global\setbox\@mpfootins\vbox{% - \unvbox\@mpfootins - \reset@font\footnotesize - \hsize\columnwidth - \@parboxrestore - \protected@edef\@currentlabel - {\csname p@mpfootnote\endcsname\@thefnmark}% - \leftskip \footbibmargin%增加的左侧缩进 - \color@begingroup - \@makefntext{% - \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox}% - \color@endgroup}} - }{%否则对latex核心代码中的\@footnotetext做重定义 - \long\def\@footnotetext##1{\insert\footins{% - \reset@font\footnotesize - \interlinepenalty\interfootnotelinepenalty - \splittopskip\footnotesep - \splitmaxdepth \dp\strutbox \floatingpenalty \@MM - \hsize\columnwidth \@parboxrestore - \protected@edef\@currentlabel{% - \csname p@footnote\endcsname\@thefnmark - }% - \color@begingroup - \leftskip \footbibmargin%增加的左侧缩进 - \@makefntext{% - \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox% - }% - \color@endgroup}}% - - \long\def\@mpfootnotetext##1{% - \global\setbox\@mpfootins\vbox{% - \unvbox\@mpfootins - \reset@font\footnotesize - \hsize\columnwidth - \@parboxrestore - \protected@edef\@currentlabel - {\csname p@mpfootnote\endcsname\@thefnmark}% - \leftskip \footbibmargin%增加的左侧缩进 - \color@begingroup - \@makefntext{% - \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox}% - \color@endgroup}} - } - - \long\def\@makefntext##1{%增加了脚注标记与正文的间隔 - \parindent 1em\noindent \hb@xt@ 0em{\hss \@makefnmark\makebox[\footbiblabelsep]{}}##1} - - } - - % - %使脚注标记加圈并设置数字的字体为tiny,不使用修改thefootnote的方式 - \def\@makefnmark{\hbox{\@textsuperscript{\textcircled{\tiny\@thefnmark}}}} - %做patch使得脚注内容中的脚注数字标签不上标 - \pretocmd{\@makefntext}{% - \def\@makefnmark{% - \hbox{\textcircled{\tiny\@thefnmark}}% - }% - }{}{} - } - - % - %判断当前文献是否已经引用过且是做的footfullcite(即已经作为脚注输出文献内容) - %记录首次输出时的脚注号码,用于后面再次引用该文献时的输出,比如同(4)。 - %v1.0q 20190309 区分使脚注标注适应minipage中的情况 - \newbibmacro*{citesavefn}{% - \ifciteseen%当被引用过为true - {\ifcsdef{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}%当已经定义过脚注序号信息 - {\csgdef{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}{% - \str@sameentry\gdef\@thefnmark{\csuse{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}}% - \@makefnmark% - }}% - {\csxdef{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}{% - \ifcsstring{@mpfn}{mpfootnote}{\@alph\c@mpfootnote}{\thefootnote}% - }}% - }% - {\csxdef{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}{% - \ifcsstring{@mpfn}{mpfootnote}{\@alph\c@mpfootnote}{\thefootnote}% - %判断在minipage中比较麻烦,这里使用\@mpfn的定义进行判断 - }}% - } - - % - %重定义\footfullcite使完成gb7714-2015的脚注文献要求 - \DeclareCiteCommand{\footfullcite}[\mkbibfootnote]% - {\defcounter{maxnames}{\blx@maxbibnames}%局部定义maxnames和minnames计数器 - \defcounter{minnames}{\blx@minbibnames}%使footfullcite内的作者输出与正文文献表中的一致。 - \usebibmacro{prenote}% - \renewbibmacro*{postnote}{% - \iffieldundef{postnote}% - {}{\setunit{\addcolon\addspace}\printfield{postnote}}}%与ay样式不同,由于已修改postnote域格式,直接用printfield - }% - {\usebibmacro{citesavefn}% - \ifcsdef{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}% - {\csuse{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}}%\nopunct - {\usedriver{\DeclareNameAlias{sortname}{default}}{\thefield{entrytype}}}% - }% - {\multicitedelim}% - {\usebibmacro{postnote}} - - } - - % - % 增加一个选项,用于控制gb7714的使用范围,即英文文献和中文文献使用不同的样式 - % 20180814,v1.0m,hzz - % 原理方法: - % 只为兼容性考虑不做任何处理 - \DeclareBibliographyOption{gbstyle}[true]{%biblatex低版本 - } - - % - % 增加一个控制是否输出文献类型和载体标识的选项 - % - % 原理方法: - % 对于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时可以使用GBK编码。 - % v1.0k, 2018.05.08, by hzz - % - % 原理方法:将需要输出的中文字符串用命令形式表示存储,采用utf8编码时采用bbx文档 - % 内的定义即是utf8编码的中文字符串,但tex源文件是gbk编码时,利用gb7714-2015-gbk.def - % 文档内的gbk编码的字符串覆盖。这种覆盖只能在宏包末尾加载时成功实现,所以使用 - % AtEndOfPackage。该解决思路源自biblatex-caspervector宏包。 - % 另外注意: - % gbk编码的tex文档,利用pdflatex/latex能正确编译,利用xelatex能编译,但中文显示乱码 - % 在源文档前面增加 XeTeX 原语:\XeTeXinputencoding "GBK" 后,显示正常 - % utf-8编码的tex文档,利用xelatex能正确编译,而pdflatex/latex不能编译。 - \newtoggle{bbx:codegbk} - \DeclareBibliographyOption{gbcodegbk}[false]{% - \settoggle{bbx:codegbk}{#1}} - \ExecuteBibliographyOptions{gbcodegbk} - - \def\str@bibliography{参考文献} - \def\str@references{参考文献} - \def\str@bytranslator{译} - \def\str@andotherscn{等} - \def\str@andcn{和} - \def\str@backrefpage{引用页} - \def\str@backrefpages{引用页} - \def\str@noaddress{出版地不详} - \def\str@nopublisher{出版者不详} - \def\str@edition{版} - \def\str@volumecn{卷} - \def\str@numbercn{册} - \def\str@serialcn{第} - \def\str@sameentry{同} - \def\str@incn{见} - \def\str@mathesiscn{硕士学位论文} - \def\str@phdthesiscn{博士学位论文} - \def\str@editorcn{主编} - - \AtEndOfPackage{% - \iftoggle{bbx:codegbk}{% - \ExecuteBibliographyOptions{texencoding = GBK} - \input{gb7714-2015-gbk.def} - }{}} - - % - % 增加一个严格按GB/T 7714-2015给出著录格式控制域的输出的选项 - % v1.0k, 2018.05.08, by hzz - % - % 原理方法: - % 默认设置该选项为真,进而不输出GB/T 7714-2015中没有的域的信息 - % 这样可以避免因为bib文件带有多余的域的信息的输出,比如因为bibtex样式 - % 可能需要用于中英文判断的language域的信息。 - \newtoggle{bbx:gbstrict} - \DeclareBibliographyOption{gbstrict}[true]{% - \settoggle{bbx:gbstrict}{#1}} - \ExecuteBibliographyOptions{gbstrict} - - % - % 增加一个控制标题域超链接设置的选项 - % v1.0k, 2018.05.24, by hzz - % - % 原理方法: - % 利用标题域格式来实现,默认设置该选项为false,不做超链接。 - % 设置为true,则标题设置超链接 - \newtoggle{bbx:titlelink} - \DeclareBibliographyOption{gbtitlelink}[false]{% - \settoggle{bbx:titlelink}{#1}} - \ExecuteBibliographyOptions{gbtitlelink} - - % - % 增加一个控制参考文献标题是否能够被ctex宏包设置的选项 - % v1.0l, 2018.07.02, by hzz - % - % 原理方法: - % 重定义biblatex的宏,去除使用本地化字符串的方式,是的可以利用ctexset进行设置 - \newtoggle{bbx:ctexset} - \DeclareBibliographyOption{gbctexset}[true]{% - \settoggle{bbx:ctexset}{#1}} - \ExecuteBibliographyOptions{gbctexset} - - \AtEndOfPackage{% - \iftoggle{bbx:ctexset}{% - \def\blx@defbibstrings#1#2{% - \def\do##1{\csundef{abx@lstr@##1}\csundef{abx@sstr@##1}}% - \abx@dostrings - \csuse{abx@strings@#1}% - \setkeys{blx@lbx}{#2}% - \let\do\blx@defbibstrings@i - \csxdef{abx@strings@#1}{\abx@dostrings}% - } - }{}} - - % - % 增加一个处理佚名或noauthor的控制选项 - % - % 原理方法:在顺序编码制中不需要使用,为与作者年制的兼容性考虑,这里也增加避免报错 - \DeclareBibliographyOption{gbnoauthor}[true]{}% - - - % - % 增加一个恢复域格式为标准样式的控制选项 - % v1.0k, 2018.05.15, by hzz - % - % 原理方法: - % 默认设置该选项为false,采用国标要求的域格式输出相关域 - % 当设置该选项为true时,则重新利用标准样式的域格式输出相关的域 - \newtoggle{bbx:gbfieldstd} - \DeclareBibliographyOption{gbfieldstd}[false]{% - \settoggle{bbx:gbfieldstd}{#1}% - \ifstrequal{#1}{false}{}{\execgbfdfmtstd}% - } - \ExecuteBibliographyOptions{gbfieldstd} - - % - % 增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 - % - \newtoggle{bbx:gbpub} - \DeclareBibliographyOption{gbpub}[true]{% - %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 - \ifstrequal{#1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} - \ExecuteBibliographyOptions{gbpub} - - % - % 增加控制析出文献来源前的标点符号//输出的选项 - % v1.0k, 2018.04.20,added in by hzz - \newtoggle{bbx:gbpunctin} - \DeclareBibliographyOption{gbpunctin}[true]{% - \settoggle{bbx:gbpunctin}{#1}} - \ExecuteBibliographyOptions{gbpunctin} - - - - - - % - % 选项设置 - % - \ExecuteBibliographyOptions{ - sorting=none, - useprefix=true, %名字的信息包括前缀 - date = year, %日期仅写到年 - maxbibnames = 3,%设置名字最大数量 - minbibnames = 3, %设置缩减后的名字最小数量 - maxitems = 1,%设置列表最大数量 - minitems = 1, %设置缩减后的列表最小数量 - isbn=false, - } - - % - %为日期相关选项增加选项值gb7714-2015 - % - \csdef{mkdaterangegb7714-2015}#1{% - \begingroup - \blx@metadateinfo{#1}% - \iffieldundef{#1year} - {} - {\printtext[#1date]{% - \blx@gbdate{#1}{}}}% - \endgroup} - - \newrobustcmd*{\blx@gbdate}[3][]{% - \dateeraprintpre{#2#3year}% - \blx@imc@forcezerosy{\thefield{#2#3year}}\ifblank{#1}{}{\printfield{#1}}% - \iffieldundef{#2#3month}{}{\hyphen\blx@imc@forcezerosmdt{\thefield{#2#3month}}}% - \iffieldundef{#2#3day}{}{\hyphen\blx@imc@forcezerosmdt{\thefield{#2#3day}}}} - - - %为姓名格式选择增加的计数器 - \newcounter{gbnamefmtcase} - \def\thegbnamefmtcase{\the\c@gbnamefmtcase} - %为数字标签格式选择增加的计数器/命令 - \newcommand{\mkgbnumlabel}[1]{\mkbibbrackets{#1}} - \def\gbbiblabelopt@bracket{\renewcommand{\mkgbnumlabel}[1]{\mkbibbrackets{##1}}} - \def\gbbiblabelopt@parens{\renewcommand{\mkgbnumlabel}[1]{\mkbibparens{##1}}} - \def\gbbiblabelopt@dot{\renewcommand{\mkgbnumlabel}[1]{##1\adddot}} - \def\gbbiblabelopt@plain{\renewcommand{\mkgbnumlabel}[1]{##1}} - \def\gbbiblabelopt@box{\renewcommand{\mkgbnumlabel}[1]{\framebox{##1}}} - \def\gbbiblabelopt@circle{\renewcommand{\mkgbnumlabel}[1]{\textcircled{##1}}} - %为文献表中数字标签对齐方式选择增加的计数器/命令 - \newcounter{gbalignlabel} - \def\thegbalignlabel{\the\c@gbalignlabel} - %为引用标签标注/文献表中本地化字符串中英文选择增加的计数器/命令 - \newcounter{gbcitelocalcase} - \newcounter{gbbiblocalcase} - \def\thegbcitelocalcase{\the\c@gbcitelocalcase} - \def\thegbbiblocalcase{\the\c@gbbiblocalcase} - -\@ifpackagelater{biblatex}{2016/03/27} - { % 针对biblatex>=3.3版本的选项设置 - % 增加不同语言排序的切换选项 - % numeric样式,不使用该选项,这里给出仅为兼容性考虑 - % v1.0q,20190307,hzz - % - % 增加不同语言排序的切换选项 - % gblanorder=chineseahead的顺序为cn,jp,kr,en,fr,ru - % gblanorder=englishahead的顺序为en,fr,ru,cn,jp,kr - % gblanorder=cn;en;ru;fr;jp;kr的顺序为指定的cn;en;ru;fr;jp;kr,自定义内容可以随意写以分号分隔 - % v1.0q,20190307,hzz - % - \DeclareBibliographyOption[string]{gblanorder}[chineseahead]{% - \ifstrequal{#1}{chineseahead}%%中文在前的顺序 - {\gdef\lancnorder{1}\gdef\lanjporder{2}\gdef\lankrorder{3}% - \gdef\lanenorder{4}\gdef\lanfrorder{5}\gdef\lanruorder{6}}% - {% - \ifstrequal{#1}{englishahead}% - {\execlanodeah\dealsortlan}% - {\execlanodudf{#1}\dealsortlan}% - }% - } - \ExecuteBibliographyOptions{gblanorder} - - \def\execlanodeah{%中文在后的顺序 - \gdef\lancnorder{4} - \gdef\lanjporder{5} - \gdef\lankrorder{6} - \gdef\lanenorder{1} - \gdef\lanfrorder{2} - \gdef\lanruorder{3}} - - \newcounter{lanordernum} - \newcommand{\execlanodudf}[1]{%like:cn;en;ru;fr;jp;kr - \setcounter{lanordernum}{0} - \DeclareListParser{\parsinglanorder}{;} - \renewcommand*{\do}[1]{\stepcounter{lanordernum}\csxdef{lan##1order}{\thelanordernum}} - \parsinglanorder{#1} - } - - % - % 增加本地化字符串的中英文切换选项 - % gbcitelocal指标注中的本地化字符串 - % gbbiblocal 指文献表中的本地化字符串 - % gblocal 指设置文献表和标注中的本地化字符串 - % v1.0o,20190103,hzz - % - \DeclareBibliographyOption[string]{gbcitelocal}[gb7714-2015]{% - \ifstrequal{#1}{gb7714-2015}{\setcounter{gbcitelocalcase}{0}}{}% - \ifstrequal{#1}{chinese}{\setcounter{gbcitelocalcase}{1}}{}% - \ifstrequal{#1}{english}{\setcounter{gbcitelocalcase}{2}}{}% - } - \ExecuteBibliographyOptions{gbcitelocal} - - \DeclareBibliographyOption[string]{gbbiblocal}[gb7714-2015]{% - \ifstrequal{#1}{gb7714-2015}{\setcounter{gbbiblocalcase}{0}}{}% - \ifstrequal{#1}{chinese}{\setcounter{gbbiblocalcase}{1}}{}% - \ifstrequal{#1}{english}{\setcounter{gbbiblocalcase}{2}}{}% - } - \ExecuteBibliographyOptions{gbbiblocal} - - \DeclareBibliographyOption[string]{gblocal}[gb7714-2015]{% - \ExecuteBibliographyOptions{gbbiblocal=#1}% - \ExecuteBibliographyOptions{gbcitelocal=#1}% - } - %\ExecuteBibliographyOptions{gblocal} %默认值已经通过两个相关选项设置 - - % - % 增加序号标签格式处理选项 - % v1.0l,20180623,hzz - % - \DeclareBibliographyOption[string]{gbbiblabel}[bracket]{% - \csuse{gbbiblabelopt@#1} - } - \ExecuteBibliographyOptions{gbbiblabel} - - % - % 增加姓名大小写格式处理选项 - % - \DeclareBibliographyOption[string]{gbnamefmt}[uppercase]{% - \ifstrequal{#1}{uppercase}{\setcounter{gbnamefmtcase}{0}}{}% - \ifstrequal{#1}{lowercase}{\setcounter{gbnamefmtcase}{1}}{}% - \ifstrequal{#1}{givenahead}{\setcounter{gbnamefmtcase}{2}}{}%given-family - \ifstrequal{#1}{familyahead}{\setcounter{gbnamefmtcase}{3}}{} - \ifstrequal{#1}{pinyin}{\setcounter{gbnamefmtcase}{4}}{}%family-given - \ifstrequal{#1}{reverseorder}{\setcounter{gbnamefmtcase}{5}}{}%family-given/given-family - } - \ExecuteBibliographyOptions{gbnamefmt} - - % - % 增加标签对齐选项 - % - % right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 - \DeclareBibliographyOption[string]{gbalign}[right]{% - \ifstrequal{#1}{right}{\setcounter{gbalignlabel}{0}}{} - \ifstrequal{#1}{left}{\setcounter{gbalignlabel}{1}}{} - \ifstrequal{#1}{center}{\setcounter{gbalignlabel}{2}}{} - \ifstrequal{#1}{gb7714-2015}{\setaligngbstyle}{} - } - } - {% 针对biblatex<3.3版本的选项设置 - % 增加不同语言排序的切换选项 - % numeric样式, biblatex 3.4及以下版本不能使用多个stylesourcemap,所以不使用该选项 - % v1.0q,20190307,hzz - % - \DeclareBibliographyOption{gblanorder}[chineseahead]{} - - % - % 增加序号标签格式处理选项 - % v1.0l,20180623,hzz - % - \DeclareBibliographyOption{gbbiblabel}[bracket]{% - \csuse{gbbiblabelopt@#1} - } - \ExecuteBibliographyOptions{gbbiblabel} - - % - % 增加姓名大小写格式处理选项 - % - \DeclareBibliographyOption{gbnamefmt}[uppercase]{% - \ifstrequal{#1}{uppercase}{\setcounter{gbnamefmtcase}{0}}{}% - \ifstrequal{#1}{lowercase}{\setcounter{gbnamefmtcase}{1}}{}% - \ifstrequal{#1}{givenahead}{\setcounter{gbnamefmtcase}{2}}{}%given-family - \ifstrequal{#1}{familyahead}{\setcounter{gbnamefmtcase}{3}}{} - \ifstrequal{#1}{pinyin}{\setcounter{gbnamefmtcase}{4}}{}%family-given - \ifstrequal{#1}{reverseorder}{\setcounter{gbnamefmtcase}{5}}{}%family-given/given-family - } - \ExecuteBibliographyOptions{gbnamefmt} - - % - % 增加标签对齐选项 - % - % 原理方法:right是默认的右对齐,left是左对齐,gb7714-2015无效,仍然为右对齐模式, - % 因为在这种biblatex低版本中,舍弃了list类环境后,会出错。 - % 注意:texlive2015中的3.0版中的DeclareBibliographyOption选项没有类型说明 - \DeclareBibliographyOption{gbalign}[right]{% - \ifstrequal{#1}{right}{\setcounter{gbalignlabel}{0}}{} - \ifstrequal{#1}{left}{\setcounter{gbalignlabel}{1}}{} - \ifstrequal{#1}{center}{\setcounter{gbalignlabel}{2}}{} - \ifstrequal{#1}{gb7714-2015}{}{} - } - } - - -% -% 针对biblatex<3.3版本的选项设置,比如texlive2015中的3.0版 -% -\defversion{3.0}{opt}{ - \ExecuteBibliographyOptions{ - firstinits=true, %名字有缩写,参考3.1.2.3 Internal - } -} -% -% 针对3.3<=biblatex<3.5版本的选项设置,比如texlive2016中的3.4版 -% -\defversion{3.4}{opt}{ - \ExecuteBibliographyOptions{ - giveninits=true, %名字有缩写,参考3.1.2.3 Internal - } -} -% -% 针对3.7<=biblatex<=3.9版本的选项设置,比如texlive2017中的3.7版 -% -\defversion{3.7}{opt}{ - \ExecuteBibliographyOptions{ - giveninits=true, - urldate =edtf, %iso8601 - eventdate =edtf, - } -} -% -% 针对3.10<=biblatex版本的选项设置,比如texlive2018中的3.11版 -% -\defversion{3.10}{opt}{ - \ExecuteBibliographyOptions{ - giveninits=true, - urldate =gb7714-2015, %iso,iso8601,edtf - eventdate =gb7714-2015, - } -} - -% -% 根据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{andothersincitecn} - \NewBibliographyString{andothersincite} - \NewBibliographyString{andcn} - \NewBibliographyString{andothersjp} - \NewBibliographyString{andotherskr} - \NewBibliographyString{andjp} - \NewBibliographyString{andkr} - \NewBibliographyString{andincitecn} - \NewBibliographyString{andincite} - \NewBibliographyString{volumecn} - \NewBibliographyString{numbercn} - \NewBibliographyString{serialcn} - \NewBibliographyString{incn} - \NewBibliographyString{mathesiscn} - \NewBibliographyString{phdthesiscn} - \NewBibliographyString{editorcn} - \NewBibliographyString{editorscn} - - - - % - % 修改一些当地化字符串 - % - % 原理方法:直接利用当地化格式english修改出一些中文的格式,具体修改内容参考english.lbx文件 - % 当然也可以增加比如上面定义的andotherscn - % 注意:在lbx文件和bbx文件中定义本地字符串的不同语法,两个参数和一个参数的区别 - - \DefineBibliographyStrings{english}{ - bibliography = {\str@bibliography}, - references = {\str@references}, - bytranslator= {\str@bytranslator},%\addperiod,%将trans. by 改成 译\addcomma\ - and = {\addcomma},%将第2和3人名间的and符号改成逗号,用\finalnamedelim命令也可以定义,参见3.9.1节 - andcn = {\addcomma},%and本地化字符串的中文对应词 - andincitecn = {\str@andcn},%将标注中的分开,便于与文献表中的区分 - andincite = {\addcomma}, - %andothers = {et al.},%将超过3个人名的省略,et al.改成为 等 - andotherscn = {\str@andotherscn},%将超过3个人名的省略,et al.改成为 等 - andothersincitecn={\str@andotherscn},%将标注中的分开,便于与文献表中的区分 - andothersincite={et al\adddot}, - backrefpage = {\str@backrefpage:}, - backrefpages = {\str@backrefpages:}, - in={in\intitlepunct}, - volumecn={\str@volumecn}, - numbercn={\str@numbercn}, - serialcn={\str@serialcn}, - andothersjp={他}, - andotherskr={외}, - andjp={和}, - andkr={和}, - incn={\str@incn\addcolon\addspace}, - mathesiscn={\str@mathesiscn}, - phdthesiscn={\str@phdthesiscn}, - editorscn={\str@editorcn}, - editorcn={\str@editorcn}, -} - - % - % 增加两个命令用于临时的局部的修改本地化字符串 - % 其中\setlocalbibstring修改缩写字符串,setlocalbiblstring修改长字符串 - % 注意使用时因为是局部修改,因此要将其与需要修改的引用命令放在一个编组符号内 - % v1.0t,hzz,20190525 - \newcommand{\setlocalbibstring}[2]{% - \csdef{abx@sstr@#1}{#2}} - \newcommand{\setlocalbiblstring}[2]{% - \csdef{abx@lstr@#1}{#2}} - -%===================================================================== -% 动态数据修改 -%===================================================================== -% -% 各层次的数据映射和动态修改 -% -% 原理方法: -% 1. 进行语言包括中英文判断,并设置和记录,比如记录到userf,usere中 -% 2. 增加文献标识符如[M],[J]等,对一些容易混淆的域进行设置以增强兼容性 -% 3. \DeclareSourcemap命令对于biblatex3.11以下版本只能出现一次,3.11版开始支持多个 -% 4. \DeclarestyleSourcemap在biblatex v3.7版开始可以支持出现多次 -% 5. 把作者和译者信息准确的记录到userf,usere中,用于后面判断是否是cjk字符。 -% 注意:这里用userf,usere而不是namee,namef,是因为只有把name列表转成域,才能有效读取姓名中的字符, -% 如果用namee,namef,name信息会自动解析,所以就不能为cjk判断提供需要的信息 -% -% 不同的文献类型使用相同的驱动输出可以有5种方法: -% 1. 是数据源层的映射,将其它类型转换为某一要使用驱动的类型 -% 2. 是样式层映射,也是将其它类型转换为某一要使用驱动的类型 -% 3. 是驱动层映射,也是将其它类型转换为某一要使用驱动的类型 -% 4. 定义驱动类型别名DeclareBibliographyAlias,将其它类型定义为某一要使用驱动的类型的别名 -% 驱动别名定义本质上是做了驱动层映射 -% 5. 直接定义不同的类型的驱动,但驱动内容相同。 -% -% 关于数据映射和驱动使用的考虑如下: -% 1. 为避免利用biber输出bib文件时的数据变动,尽量不在数据源层映射做类型转换 -% 2. 为减少代码量,尽量少做内容相同的不同类型驱动 -% 3. 因此类型相关的处理主要在样式层映射、驱动层映射、驱动别名 -% 4. 由于biblatex默认做的驱动别名处理可能增加一些信息比如masterthesis转thesis时增加的type -% 可以在样式层映射做某些需要避免这种默认处置的转换 -% 5. 当没有避免默认行为的需求时,全部采用驱动别名的方式处理,等价于驱动层的映射 -% -% 文献类型和驱动考虑如下: -% 1. 连续出版物及析出文献有其特殊性,因此考虑两类periodical和article -% newpaper映射为article,并以note域做区分特殊处理 -% 2. 专著和专著中的析出文献是主要的类型,因此考虑book和inbook -% standard映射为book或inbook,并以note域做区分特殊处理 -% collection和proceedings基本与book类似,因此做book驱动别名处理 -% incollection和inproceedings基本与inbook类似,因此做inbook驱动别名处理 -% 3. 专利类型有其特殊性,考虑patent类型 -% 4. 电子资源类型有其特殊性,考虑online类型 -% 5. 报告类型与book有点类似,出版项处理与book一样,但有时又要有修改和更新日期 -% 因此考虑用一种类型来输出,使用report类型 -% 6. 手册/学位论文等类型与book有点类似,但对于出版项处理时,有缺省时,直接省略, -% 同时有version和edition的区别,因此考虑用一种类型来输出,使用manual类型 -% 7. 包括报告,学位论文在内的其它所有的类型,都做一个判断,当没有出版项时, -% 且存在网址信息时,将其转换为online类型输出,否则都做为manual类型输出。 -% 8. 备选类型misc当存在网址时直接转换为online,由于howpublished域可用于描述 -% 更多的信息,因此不存在网址时,独立做一个备选格式 -% 9. 出版项主要以如下方式处理: -% (a) location+institution+date 仅用于连续出版物 -% (b)publisher+location+date 用于需要完整输出出版项的类型,比如book,collection,proceedings,in*,report -% (c)institution+location+date 用于出版项缺失时不输出的类型,包括manual,thesis,archive等其他类型 -% (d)printlist{insitution} 用于电子资源,仅输出出版者或组织,为数据映射方便,本来默认的organization域转换为用insitution输出。 -% (e) 不输出,主要用于连续出版物析出的文献 -% 10. 日期以如下方式处理: -% date 由于存在biblatex选项,因此通过选项控制,数据源为date解析数据或year -% urldate 由于存在biblatex选项,因此通过选项控制,输出到日,且用[]包围,数据源为urldate -% newsdate 用于公告日期,公开日期或新闻日期,输出到日,但无包围符号,数据源为date -% modifydate 用于更新或修改日期,输出到日,且用()包围,数据源为date或enddate或eventdate - - -\DeclareSourcemap{ -\maps[datatype=bibtex]{% - \map{%当没有作者时将editor转成author - \pernottype{inbook}%因为in系列中editor可能用来表示bookauthor,所以排除 - \pernottype{inproceedings} - \pernottype{incollection} - \pernottype{periodical}%因为peridical直接使用editor,所以排除 - %注意notfield在低版本biblatex中没有 - %\step[notfield=author,final]%当author不存在,将editor复制给author - \step[fieldsource=editor,fieldtarget=author]%并删除editor - } - \map{%当没有作者时将translator转成author - \pernottype{inbook} - \pernottype{inproceedings} - \pernottype{incollection} - %\step[notfield=author,final]%当author不存在,将translator复制给author - \step[fieldsource=translator,fieldtarget=author]%并删除translator - } - \map{%让address和location同步,biblatex中address是location的别名 - %因此输出的时候只有location信息,但处理过程中是可以存在address的。 - %\step[notfield=address,final] - \step[fieldsource=location,final] - \step[fieldset=address,origfieldval] - } - \map{%让address和location同步 - %\step[notfield=location,final] - \step[fieldsource=address,final] - \step[fieldset=location,origfieldval] - } - \map{%处理在bib文件用mark标记文献类型标识符的情况 - \step[fieldsource=mark,final] - \step[fieldset=usera, origfieldval] - } - \map{%处理在bib文件中直接给出文献的姓名格式为lowercase的情况 - \step[fieldsource=nameformat,match=lowercase,final] - \step[fieldset=namefmtid,fieldvalue={1}] - } - \map{%处理在bib文件中直接给出文献的姓名格式为givenahead的情况 - \step[fieldsource=nameformat,match=givenahead,final] - \step[fieldset=namefmtid,fieldvalue={2}] - } - \map{%处理在bib文件中直接给出文献的姓名格式为familyahead的情况 - \step[fieldsource=nameformat,match=familyahead,final] - \step[fieldset=namefmtid,fieldvalue={3}] - } - \map{%处理在bib文件中直接给出文献的姓名格式为pinyin的情况 - \step[fieldsource=nameformat,match=pinyin,final] - \step[fieldset=namefmtid,fieldvalue={4}] - } - \map{%根据article确定文献类型标识符 - \pertype{article} - \step[fieldset=usera, fieldvalue={J}] - } - \map{%根据periodical确定文献类型标识符 - \pertype{periodical} - \step[fieldset=usera, fieldvalue={J}] - \step[fieldsource=author] %有时会把author和editor混淆,处理后使用editor - \step[fieldset=editor, origfieldval] - \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{%根据增加一个新闻报纸的类型newspaper确定文献类型标识符 - \pertype{newspaper} - \step[fieldset=usera, fieldvalue={N}] - \step[fieldset=note, fieldvalue=news]%因为没有专门的驱动,记录note方便映射为article后判断 - } - \map{%对应增加的一个数据库类型database确定文献类型标识符 - \pertype{database} - \step[fieldset=usera, fieldvalue={DB}] - \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{%对应增加的一个数据集类型dataset确定文献类型标识符 - \pertype{dataset} - \step[fieldset=usera, fieldvalue={DS}]% - \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{%对应增加的一个软件类型software确定文献类型标识符 - \pertype{software} - \step[fieldset=usera, fieldvalue={CP}] - \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{%对应增加的一个舆图类型map确定文献类型标识符 - \pertype{map} - \step[fieldset=usera, fieldvalue={CM}]% - \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{%对应增加的一个档案类型archive确定文献类型标识符 - \pertype{archive} - \step[fieldset=usera, fieldvalue={A}] - \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{%因为misc类型本身就是没有类型,而不像其它文献有明确的类型,所以 - %当misc类型带有网址时,直接将其转换为online类型 - \pertype{misc} - \step[fieldsource=url,final] - \step[typesource=misc,typetarget=online] - } - \map{%对应增加的一个备选类型misc确定文献类型标识符 - \pertype{misc} - \step[fieldset=usera, fieldvalue={Z}]% - } - \map{ - \pertype{book} - \pertype{inbook} - \step[fieldset=usera, fieldvalue={M}] - \step[fieldsource=version] %有时会把version和edition混淆,处理后直接用edition - \step[fieldset=edition, origfieldval] - } - \map{%兼容老的standard类型,确定文献类型标识符 - \pertype{standard} - \step[fieldset=usera, fieldvalue={S}] - \step[fieldset=note, fieldvalue=standard]%因为没有专门的驱动,记录note方便映射为book和inbook后判断 - } - \map{ - \pertype{patent} - \step[fieldset=usera, fieldvalue={P}] - } - \map{ - \pertype{inproceedings} - \pertype{conference}%兼容老的conference类型 - \step[fieldset=usera, fieldvalue={C}] - \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher - \step[fieldset=publisher, origfieldval] - } - \map{ - \pertype{proceedings} - \step[fieldset=usera, fieldvalue={C}] - \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher - \step[fieldset=publisher, origfieldval] - } - \map{ - \pertype{incollection} - \step[fieldset=usera, fieldvalue={G}] - \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher - \step[fieldset=publisher, origfieldval] - } - \map{ - \pertype{collection} - \step[fieldset=usera, fieldvalue={G}] - \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher - \step[fieldset=publisher, origfieldval] - } - \map{ - \pertype{report} - \pertype{techreport}%兼容老的techreport类型 - \step[fieldset=usera, fieldvalue={R}] - \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher - \step[fieldset=publisher, origfieldval] - } - \map{ - \pertype{thesis} - \pertype{mastersthesis}%兼容老的mastersthesis和phdthesis类型 - \pertype{phdthesis} - \step[fieldset=usera, fieldvalue={D}] - \step[fieldsource=publisher]%有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{ - \pertype{online} - \pertype{electronic}%兼容老的electronic类型 - \pertype{www}%兼容老的www类型 - \step[fieldset=usera, fieldvalue={EB}] - \step[fieldsource=publisher]%有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval]%因为online的出版项处理类似手册 - \step[fieldsource=organization]%有时会把organization和institution混淆,处理后使用institution,以增强兼容性 - \step[fieldset=institution, origfieldval] - } - \map{ - \pertype{manual} - \step[fieldset=usera, fieldvalue={A}] - \step[fieldsource=edition]%有时会把version和edition混淆,处理后使用version - \step[fieldset=version, origfieldval] - \step[fieldsource=publisher]%有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - \step[fieldsource=organization]%有时会把organization和institution混淆,处理后使用institution,以增强兼容性 - \step[fieldset=institution, origfieldval] - } - \map{ - \pertype{unpublished} - \step[fieldset=usera, fieldvalue={Z}] - } - \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 - \step[fieldsource={author}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] - }% - \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 - \step[fieldsource={editor}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] - }% - \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 - \step[fieldsource={translator}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] - }% - \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 - \step[fieldsource={bookauthor}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] - }% - \map{%处理一些用year表示date的情况 - %这样处理将会设置date域,并使得labeldatesource变为空,因为date的前缀为空(如果是urldate,那么labeldatesource就是url)。 - %同时date域会被biblatex自动解析为year,month,day,并且覆盖原来的year信息 - \step[fieldsource=year] - \step[fieldset=date, origfieldval] - } - \map{%将entrykey放入keywords中用于后期使用 - \step[fieldsource=entrykey] - \step[fieldset=keywords, origfieldval] - } - \map{\step[fieldsource=title,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF - \step[fieldset=userd,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 - } - \map{% - \step[fieldsource=title,match=\regexp{[\x{0400}-\x{052F}]},final] - \step[fieldset=userd,fieldvalue={russian}]%俄语 - } - \map{% - \step[fieldsource=title,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] - \step[fieldset=userd,fieldvalue={japanese}]%日语 - } %确定形式后可增加类似andotherscn这样的本地化字符串处理 - \map{% - \step[fieldsource=title,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] - \step[fieldset=userd,fieldvalue={korean}]%韩语 - } - \map{%文献题名的中文判断,将信息保存到userd中,避免因为标签生成原因导致title域被清除而产生问题 - \step[fieldsource=title, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]% - \step[fieldset=userd, fieldvalue={chinese}] - } - \map{%将没有设置userd,且存在title域的默认设置为英文 - \step[fieldsource=title,final] - \step[fieldset=userd,fieldvalue={english}] - } - \map{\step[fieldsource=author,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF - \step[fieldset=userf,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 - } - \map{% - \step[fieldsource=author,match=\regexp{[\x{0400}-\x{052F}]},final] - \step[fieldset=userf,fieldvalue={russian}]%俄语 - } - \map{% - \step[fieldsource=author,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] - \step[fieldset=userf,fieldvalue={japanese}]%日语 - } %确定形式后可增加类似andotherscn这样的本地化字符串处理 - \map{% - \step[fieldsource=author,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] - \step[fieldset=userf,fieldvalue={korean}]%韩语 - } - \map{%作者的中文判断 - \step[fieldsource=author, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] - \step[fieldset=userf, fieldvalue={chinese}] - } - \map{%将没有设置userf,且存在author域的默认设置为英文 - \step[fieldsource=author,final] - \step[fieldset=userf,fieldvalue={english}] - } - \map{\step[fieldsource=translator,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF - \step[fieldset=usere,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 - } - \map{% - \step[fieldsource=translator,match=\regexp{[\x{0400}-\x{052F}]},final] - \step[fieldset=usere,fieldvalue={russian}]%俄语 - } - \map{% - \step[fieldsource=translator,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] - \step[fieldset=usere,fieldvalue={japanese}]%日语 - } %确定形式后可增加类似andotherscn这样的本地化字符串处理 - \map{% - \step[fieldsource=translator,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] - \step[fieldset=usere,fieldvalue={korean}]%韩语 - } - \map{%译者的中文判断 - \step[fieldsource=translator, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] - \step[fieldset=usere, fieldvalue={chinese}] - } - \map{%将没有设置usere,且存在translator域的默认设置为英文 - \step[fieldsource=translator,final] - \step[fieldset=usere,fieldvalue={english}] - } - \map{\step[fieldsource=editor,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF - \step[fieldset=userc,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 - } - \map{% - \step[fieldsource=editor,match=\regexp{[\x{0400}-\x{052F}]},final] - \step[fieldset=userc,fieldvalue={russian}]%俄语 - } - \map{% - \step[fieldsource=editor,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] - \step[fieldset=userc,fieldvalue={japanese}]%日语 - } %确定形式后可增加类似andotherscn这样的本地化字符串处理 - \map{% - \step[fieldsource=editor,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] - \step[fieldset=userc,fieldvalue={korean}]%韩语 - } - \map{%编者的中文判断 - \step[fieldsource=editor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 - \step[fieldset=userc, fieldvalue={chinese}] - } - \map{%将没有设置userc,且存在editor域的默认设置为英文 - \step[fieldsource=editor,final] - \step[fieldset=userc,fieldvalue={english}] - } - \map{\step[fieldsource=bookauthor,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF - \step[fieldset=userb,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 - } - \map{% - \step[fieldsource=bookauthor,match=\regexp{[\x{0400}-\x{052F}]},final] - \step[fieldset=userb,fieldvalue={russian}]%俄语 - } - \map{% - \step[fieldsource=bookauthor,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] - \step[fieldset=userb,fieldvalue={japanese}]%日语 - } %确定形式后可增加类似andotherscn这样的本地化字符串处理 - \map{% - \step[fieldsource=bookauthor,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] - \step[fieldset=userb,fieldvalue={korean}]%韩语 - } - \map{%编者的中文判断 - \step[fieldsource=bookauthor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 - \step[fieldset=userb, fieldvalue={chinese}] - } - \map{%将没有设置userc,且存在editor域的默认设置为英文 - \step[fieldsource=bookauthor,final] - \step[fieldset=userb,fieldvalue={english}] - } - \map{\step[fieldsource=userd,final]%userd存在则用根据标题的语言设定language - \step[fieldset=language,origfieldval]%本身language存在则不设定 - } - \map{\step[fieldsource=userf,final]%userd不存在,而userf存在则根据author的语言设定language - \step[fieldset=language,origfieldval] - }%如果没有作者和标题,那么剩下的最可能有意义的只有网址了,而网址通常是英文的,因此不用再进一步对其它域进行判断了。 - \map{%将没有设置的language设置成en,即认为不是中文的就是英文的。 - \step[fieldset=language,fieldvalue={english}] - } - \map{%一条文献的语言已经设定在language域中,由于出版项相关宏中使用userd判断, - %所以将一条文献的主体语言设定到userd中,本身前面userd已经设定,但没有处理无标题的情况, - %这里的处理等价于没有标题时,利用作者的语言设定userd,再没有作者,则默认用英文设定userd - \step[fieldsource=language] - \step[fieldset=userd,origfieldval] - } - \map{%当文献给出language域时,设置文献要使用的本地化字符串的语言 - %biblatex 3.11及以下版本仅有match是区分大小写的,而3.12版开始用matchi来区分大小,而match不区分 - %这里为兼容3.11及以下版本,所以用一个复杂一点的正则表达式 - \step[fieldsource=language,match=\regexp{(e|E)(n|N)(g|G)(l|L)(i|I)(s|S)(h|H)},final] - \step[fieldset=langid,fieldvalue={english}] - \step[fieldset=lansortorder,fieldvalue=\lanenorder] - } - \map{ - \step[fieldsource=language,match=\regexp{(r|R)(u|U)(s|S)(s|S)(i|I)(a|A)(n|N)},final] - \step[fieldset=langid,fieldvalue={russian}] - \step[fieldset=lansortorder,fieldvalue=\lanruorder] - } - \map{% - \step[fieldsource=language,match=\regexp{(f|F)(r|R)(e|E)(n|N)(c|C)(h|H)},final] - \step[fieldset=langid,fieldvalue={french}] - \step[fieldset=lansortorder,fieldvalue=\lanfrorder] - } - \map{% - \step[fieldsource=language,match=\regexp{(c|C)(h|H)(i|I)(n|N)(e|E)(s|S)(e|E)},final]%中日韩语目前都用english, - \step[fieldset=langid,fieldvalue={english}] - \step[fieldset=lansortorder,fieldvalue=\lancnorder] - } - \map{% - \step[fieldsource=language,match=\regexp{(j|J)(a|A)(p|P)(a|A)(n|N)(e|E)(s|S)(e|E)},final]%中日韩语目前都用english, - \step[fieldset=langid,fieldvalue={english}] - \step[fieldset=lansortorder,fieldvalue=\lanjporder] - } - \map{% - \step[fieldsource=language,match=\regexp{(k|K)(o|O)(r|R)(e|E)(a|A)(n|N)},final]%中日韩语目前都用english, - \step[fieldset=langid,fieldvalue={english}] - \step[fieldset=lansortorder,fieldvalue=\lankrorder] - } -} -} - - -% -% 修改输入的参考文献数据,样式层的操作 -% -% 原理方法:因为biblatex3.0版的map不使用foreach选项,所以需要一个一个写,以处理特殊字符 -\defversion{3.0}{map}{ - \DeclareStyleSourcemap{ - \maps[datatype=bibtex]{ - \map{%尝试未定义数据模型的standard类型映射为其他类型book或inbook, - %standard类型在blx-dm中有出现,但仅定义了类型,域和约束等都没有定义 - %因为可能要映射两种类型,所以不能在驱动层处理,因为要做判断 - \step[fieldsource=booktitle,final]%当存在booktitle域是映射为inbook - \step[typesource=standard, typetarget=inbook, final] - } - \map{%剩下的全部映射为book - \step[typesource=standard, typetarget=book, final] - } -% \map{%先于标准样式的driver层映射,以取消type设置 -% \step[typesource=mastersthesis, typetarget=thesis, final] -% %\step[fieldset=type, fieldvalue=mathesis] -% } -% \map{%先于标准样式的driver层映射,以取消type设置 -% \step[typesource=phdthesis, typetarget=thesis, final] -% %\step[fieldset=type, fieldvalue=phdthesis] -% } - \map{%先于标准样式的driver层映射,以取消type设置 - \step[typesource=techreport, typetarget=report, final] - %\step[fieldset=type, fieldvalue=techreport] - } - \map{% - \pertype{report} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=report,typetarget=online] - \step[fieldset=note,fieldvalue={report}] - } - \map{% - \pertype{thesis} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=thesis,typetarget=online] - } - \map{% - \pertype{manual} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=manual,typetarget=online] - } - \map{% - \pertype{unpublished} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=unpublished,typetarget=online] - } - \map{% - \pertype{database} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=databasetypetarget=online] - } - \map{% - \pertype{dataset} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=dataset,typetarget=online] - } - \map{% - \pertype{software} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=software,typetarget=online] - } - \map{% - \pertype{map} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=map,typetarget=online] - } - \map{% - \pertype{archive} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=archive,typetarget=online] - } - \map[overwrite]{%这里还必须有overwrite,注意不同版本存在差异,比如texlive2015变16后biber有变化(20161207修改正确) - \step[fieldsource=note, final]%将note域信息复制给keywords,用于输出时容易区分标准和报纸 - \step[fieldset=keywords, fieldvalue={,}, append] - \step[fieldset=keywords, origfieldval, append] - } - \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\\\%}] - } - } - } -} - -% -% 修改输入的参考文献数据,样式层的操作 -% -% 原理方法:biblatex3.4以上版本 -\defversion{3.4}{map}{ - \DeclareStyleSourcemap{ - \maps[datatype=bibtex]{ - \map{%尝试未定义数据模型的standard类型映射为其他类型book或inbook, - %standard类型在blx-dm中有出现,但仅定义了类型,域和约束等都没有定义 - %因为可能要映射两种类型,所以不能在驱动层处理,因为要做判断 - \step[fieldsource=booktitle,final]%当存在booktitle域是映射为inbook - \step[typesource=standard, typetarget=inbook, final] - } - \map{%剩下的全部映射为book - \step[typesource=standard, typetarget=book, final] - } -% \map{%先于标准样式的driver层映射,以取消type设置 -% \step[typesource=mastersthesis, typetarget=thesis, final] -% %\step[fieldset=type, fieldvalue=mathesis] -% } -% \map{%先于标准样式的driver层映射,以取消type设置 -% \step[typesource=phdthesis, typetarget=thesis, final] -% %\step[fieldset=type, fieldvalue=phdthesis] -% } - \map{%先于标准样式的driver层映射,以取消type设置 - \step[typesource=techreport, typetarget=report, final] - %\step[fieldset=type, fieldvalue=techreport] - } - \map{% - \pertype{report} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=report,typetarget=online] - \step[fieldset=note,fieldvalue={report}] - } - \map{% - \pertype{thesis} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=thesis,typetarget=online] - } - \map{% - \pertype{manual} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=manual,typetarget=online] - } - \map{% - \pertype{unpublished} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=unpublished,typetarget=online] - } - \map{% - \pertype{database} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=databasetypetarget=online] - } - \map{% - \pertype{dataset} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=dataset,typetarget=online] - } - \map{% - \pertype{software} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=software,typetarget=online] - } - \map{% - \pertype{map} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=map,typetarget=online] - } - \map{% - \pertype{archive} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=archive,typetarget=online] - } - \map[overwrite]{%这里还必须有overwrite,注意不同版本存在差异,比如texlive2015变16后biber有变化(20161207修改正确) - \step[fieldsource=note, final]%将note域信息复制给keywords,用于输出时容易区分标准和报纸 - \step[fieldset=keywords, fieldvalue={,}, append] - \step[fieldset=keywords, origfieldval, append] - } - \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,address,location,institution,organization}]{ - \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\#}, replace=\regexp{$1\\\#}] - } - \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,address,location,institution,organization}]{ - \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\%}, replace=\regexp{$1\\\%}] - } - \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,% - address,location,institution,organization}]{ - \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] - } - } - } -} - -\iftoggle{iftlfive}% - {\switchversion{3.0}{map}}%%当采用biblatex<=3.2版本时 - {\switchversion{3.4}{map}}%%当采用3.3<=biblatex版本时 - - -% -% 不同语言分集调整的实现方式 -% -% 原理方法:利用样式层的动态数据修改lansortorder域来实现排序 -\def\dealsortlan{ - \DeclareStyleSourcemap{ - \maps[datatype=bibtex]{ - \map[overwrite]{%当文献给出language域时,设置文献要使用的本地化字符串的语言 - \step[fieldsource=language,match=english,final] - \step[fieldset=lansortorder,fieldvalue=\lanenorder] - } - \map[overwrite]{ - \step[fieldsource=language,match=russian,final] - \step[fieldset=lansortorder,fieldvalue=\lanruorder] - } - \map[overwrite]{% - \step[fieldsource=language,match=french,final] - \step[fieldset=lansortorder,fieldvalue=\lanfrorder] - } - \map[overwrite]{% - \step[fieldsource=language,match=chinese,final]%中日韩语目前都用english, - \step[fieldset=lansortorder,fieldvalue=\lancnorder] - } - \map[overwrite]{% - \step[fieldsource=language,match=japanese,final]%中日韩语目前都用english, - \step[fieldset=lansortorder,fieldvalue=\lanjporder] - } - \map[overwrite]{% - \step[fieldsource=language,match=korean,final]%中日韩语目前都用english, - \step[fieldset=lansortorder,fieldvalue=\lankrorder] - } - } - } -} - -% -%驱动别名等价于驱动层映射 -% -\DeclareBibliographyAlias{newspaper}{article}% -\DeclareBibliographyAlias{inproceedings}{inbook}%会议论文文献类型驱动 -\DeclareBibliographyAlias{conference}{inbook}%会议论文文献类型驱动 -\DeclareBibliographyAlias{incollection}{inbook}%文集中析出文献类型驱动 -\DeclareBibliographyAlias{collection}{book}%%文集类型驱动 -\DeclareBibliographyAlias{proceedings}{book}%会议论文集文献类型驱动 -\DeclareBibliographyAlias{thesis}{manual}%学位论文驱动 -\DeclareBibliographyAlias{unpublished}{manual}%其它类型驱动 -\DeclareBibliographyAlias{database}{manual} -\DeclareBibliographyAlias{dataset}{manual} -\DeclareBibliographyAlias{software}{manual} -\DeclareBibliographyAlias{map}{manual} -\DeclareBibliographyAlias{archive}{manual} - -%===================================================================== -% 设置排序格式 -%===================================================================== -% -% 排序格式,用降序,及userb域,针对biblatex3.7及以下版本 -% -\defversion{3.7}{sort}{%这是3.4版的,3.7版略有差异,但不大,后面有注释 - \DeclareSortingScheme{gb7714-2015}{ - \sort{ - \field{presort} - } - %\sort[final]{ - %\field{sortkey} - %} - \sort{ - \field{lansortorder}%language - } - \sort{ - \field{sortkey} - } - \sort{%[direction=descending] - \field{sortname} - \field{author} - \field{editor} - \field{translator} - } - \sort{ - \field{sortyear} - \field{year} - } - \sort{ - \field{sorttitle} - \field{title} - } - \sort{ - \field[padside=left,padwidth=4,padchar=0]{volume}%3.7版是\field{volume} - \literal{0000}%3.7版是\literal{0} - } - } - - %降序的nyt - \DeclareSortingScheme{gbnytd}{ - \sort{ - \field{presort} - } - %\sort[final]{ - %\field{sortkey} - %} - \sort{ - \field{lansortorder}%language - } - \sort[direction=descending]{ - \field{sortkey} - } - \sort[direction=descending]{ - \field{sortname} - \field{author} - \field{editor} - \field{translator} - } - \sort{ - \field{sortyear} - \field{year} - } - \sort{ - \field{sorttitle} - \field{title} - } - \sort{ - \field[padside=left,padwidth=4,padchar=0]{volume}%3.7版是\field{volume} - \literal{0000}%3.7版是\literal{0} - } - } - - %降序的ynt - \DeclareSortingScheme{gbyntd}{ - \sort{ - \field{presort} - } - %\sort[final]{ - %\field{sortkey} - %} - \sort{ - \field{lansortorder}%language - } - \sort[direction=descending]{ - \field{sortyear} - \field{year} - } - \sort{ - \field{sortkey} - } - \sort{ - \field{sortname} - \field{author} - \field{editor} - \field{translator} - } - \sort{ - \field{sorttitle} - \field{title} - } - \sort{ - \field[padside=left,padwidth=4,padchar=0]{volume}%3.7版是\field{volume} - \literal{0000}%3.7版是\literal{0} - } - } - - %升序的ynt - \DeclareSortingScheme{gbynta}{ - \sort{ - \field{presort} - } - %\sort[final]{ - %\field{sortkey} - %} - \sort{ - \field{lansortorder}%language - } - \sort{ - \field{sortyear} - \field{year} - } - \sort{ - \field{sortkey} - } - \sort{ - \field{sortname} - \field{author} - \field{editor} - \field{translator} - } - \sort{ - \field{sorttitle} - \field{title} - } - \sort{ - \field[padside=left,padwidth=4,padchar=0]{volume}%3.7版是\field{volume} - \literal{0000}%3.7版是\literal{0} - } - } -} - - -% -% 排序格式,用降序,及userb域,针对biblatex3.8及以上版本 -% -\defversion{3.8}{sort}{ - \DeclareSortingTemplate{gb7714-2015}{ - \sort{ - \field{presort} - } - %\sort[final]{ - %\field{sortkey} - %} - \sort{ - \field{lansortorder}%language - } - \sort{ - \field{sortkey} - } - \sort{%[direction=descending] - \field{sortname} - \field{author} - \field{editor} - \field{translator} - } - \sort{ - \field{sortyear} - \field{year} - } - \sort{ - \field{sorttitle} - \field{title} - } - \sort{ - \field{volume} - \literal{0} - } - } - - %降序的nyt - \DeclareSortingTemplate{gbnytd}{ - \sort{ - \field{presort} - } -% \sort[final]{ -% \field{sortkey} -% } - \sort{ - \field{lansortorder}%language - } - \sort[direction=descending]{ - \field{sortkey} - } - \sort[direction=descending]{% - \field{sortname} - \field{author} - \field{editor} - \field{translator} - } - \sort{ - \field{sortyear} - \field{year} - } - \sort{ - \field{sorttitle} - \field{title} - } - \sort{ - \field{volume} - \literal{0} - } - } - - %降序的ynt - \DeclareSortingTemplate{gbyntd}{ - \sort{ - \field{presort} - } -% \sort[final]{ -% \field{sortkey} -% } - \sort{ - \field{lansortorder}%language - } - \sort[direction=descending]{ - \field{sortyear} - \field{year} - } - \sort{ - \field{sortkey} - } - \sort{% - \field{sortname} - \field{author} - \field{editor} - \field{translator} - } - \sort{ - \field{sorttitle} - \field{title} - } - \sort{ - \field{volume} - \literal{0} - } - } - - %升序的ynt - \DeclareSortingTemplate{gbynta}{ - \sort{ - \field{presort} - } -% \sort[final]{ -% \field{sortkey} -% } - \sort{ - \field{lansortorder}%language - } - \sort{%[direction=ascending] - \field{sortyear} - \field{year} - } - \sort{ - \field{sortkey} - } - \sort{% - \field{sortname} - \field{author} - \field{editor} - \field{translator} - } - \sort{ - \field{sorttitle} - \field{title} - } - \sort{ - \field{volume} - \literal{0} - } - } -} - - -\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 - -%===================================================================== -% 参考文献表环境 -%===================================================================== -% -% 列表格式 -% -% 增加一个\bibitemindent尺寸用于控制list环境的itemindent -% v1.0l,20180615,hzz -% v1.0t,20200319,hzz,增加尺寸\biblabelextend使某些字体下标签宽度不足时可增加标签宽度 -\setlength{\bibhang}{\biblabelsep}% -\newlength{\bibitemindent} -\setlength{\bibitemindent}{0pt} -\newlength{\biblabelextend} -\setlength{\biblabelextend}{0pt} - - -\defbibenvironment{bibliography} - {\list - {\printtext[labelnumberwidth]{% - \printfield{labelprefix}% - \printfield{labelnumber}}} - {\addtolength{\labelnumberwidth}{\biblabelextend}% - \setlength{\labelwidth}{\labelnumberwidth}% - \setlength{\labelsep}{\biblabelsep}% - \setlength{\leftmargin}{\bibhang}% - \addtolength{\leftmargin}{\labelnumberwidth}% - \setlength{\itemindent}{\bibitemindent}% - \setlength{\itemsep}{\bibitemsep}% - \setlength{\parsep}{\bibparsep}}% - \renewcommand*{\makelabel}[1]{\hss##1}} - {\endlist} - {\item} - -% -% 顺序编码制-标签对齐方式处理 -% -% 原理方法:利用选项提供的计数器数值做选择 -% 左对齐,右对齐为list环境下的处理,此时list环境的\labelwidth只能设置一个,是最宽标签的宽度 -% 项对齐则是在段落环境下做的处理。 -% 左对齐时,参考文献各项内容对齐,序号标签与参考文献项内容的间距可变 -% 右对齐时,参考文献各项内容对齐,序号标签与参考文献项内容的间距相等,标签与页边距离可变 -% 项对齐时,序号标签贴在页边,序号标签与参考文献项内容的间距相等 -% 修改序号标签格式为: -% \DeclareFieldFormat{shorthandwidth}{\mkbibbrackets{#1}} %源来自numeric.BBX -% \DeclareFieldFormat{labelnumberwidth}{\ttfamily\mkbibbrackets{#1}\hfill} -\DeclareFieldFormat{labelnumberwidth}{% -\ifcase\value{gbalignlabel}%右对齐,整个标签为右对齐 - \mkgbnumlabel{#1}% -\or%左对齐,整个标签为左对齐 - \mkgbnumlabel{#1}\hfill% -\or%中间对齐,比如:序号数字居于[]中间 - \hfil\mkgbnumlabel{\hfill#1\hfill}\hfil% -\fi} - -% -% 修改序号标签格式为以各条参文献为基础进行对齐的方式,即序号与条目内容间隔相等的方式。 -\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 - {}} -\newlength{\lengthid} -\newlength{\lengthlw} -\newcommand{\itemcmd}{% -\settowidth{\lengthid}{\mkgbnumlabel{\printfield{labelnumber}}} -\addtolength{\lengthid}{\biblabelsep} -\setlength{\lengthlw}{\textwidth} -\addtolength{\lengthlw}{-\lengthid} -\addvspace{\bibitemsep}%恢复\bibitemsep的作用 -%\parshape 2 0em \textwidth \lengthid \lengthlw -\hangindent\lengthid -\mkgbnumlabel{\printfield{labelnumber}}% -\hspace{\biblabelsep}} -% -% 简单的段落环境 -\defbibenvironment{bibliography} -{\begingroup\setlength{\parindent}{0em}} -{\endgroup} -{\itemcmd}} - - -%===================================================================== -% 设置单元或块等的标点 -%===================================================================== -\renewrobustcmd*{\bibinithyphendelim}{\addhighpenspace}%用于处理姓名中名部分存在-的情况,比如ZHANG Yu-xin -\renewcommand*{\subtitlepunct}{\addcolon\addspace} %修改标题和其它标题信息间的标点,来源biblatex.def, -% -% 利用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}%%页码引用格式的修改,修改为用冒号 -%\renewcommand{\relateddelim}{}%\par - -%===================================================================== -% 修改域的格式,重定义域的输出宏 -%===================================================================== -% -% 新增文献类型标识符的格式 -% []前的nobreak,从GB4.1节的例子看不应该加,所以去掉 -% 但因为考虑到cjk字符和[]之间可能添加空格,所以仍然加上 -% 而[]中间的内容,从4.6.2节的例子看也是可以分割的,因此内部的nobreak也可以去掉 -% -\DeclareFieldFormat{gbtypeflag}{% -\iftoggle{bbx:gbmedium}% -{\iftoggle{bbx:url}% - {\iffieldundef{url}%当存在url时,增加一个OL标识符 - {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}}% - {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\texttt{/}OL]}}% - }% - {\ifentrytype{online}% - {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\texttt{/}OL]}}% - {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}}% - }}% - {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{]}}% -} - -% -% 新增用于报纸的文献类型标识符的格式 -% -\DeclareFieldFormat{gbtypeflagn}{%用于报纸newspaper -\iftoggle{bbx:gbmedium}% -{\iftoggle{bbx:url}% - {\iffieldundef{url}%当存在url时,增加一个OL标识符 - {\nobreak\printtext{[}\nobreak N\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% - {\nobreak\printtext{[}\nobreak N\printtext{\texttt{/}OL]}\nobreak}% - }% - {\nobreak\printtext{[}\nobreak N\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% -}{\nobreak\printtext{[}\nobreak N\printtext{]}\nobreak}% -} - -% -% 新增用于标准的文献类型标识符的格式 -% -\DeclareFieldFormat{gbtypeflags}{%用于标准standard -\iftoggle{bbx:gbmedium}% -{\iftoggle{bbx:url}% - {\iffieldundef{url}%当存在url时,增加一个OL标识符 - {\nobreak\printtext{[}\nobreak S\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% - {\nobreak\printtext{[}\nobreak S\printtext{\texttt{/}OL]}\nobreak}% - }% - {\nobreak\printtext{[}\nobreak S\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% -}{\nobreak\printtext{[}\nobreak S\printtext{]}\nobreak}% -} - -% -% 重设title等参考文献信息的输出格式 -% -% 原理方法:修改来自biblatex.def文件的原格式 -\newcommand{\bibtitlefont}{} -\newcommand{\bibauthorfont}{} -\newcommand{\bibpubfont}{} - -\DeclareFieldFormat{title}{#1\adddot\addthinspace} -\DeclareFieldFormat{journaltitle}{#1\isdot}%添加\isdot用于缩写名带点情况,将其转换为缩写点,便于标点的追踪 -\DeclareFieldFormat{issuetitle}{#1} -\DeclareFieldFormat{maintitle}{#1} -\DeclareFieldFormat{booktitle}{#1} -\DeclareFieldFormat%将期刊等文献的标题中原来带的引号去掉 - [article,patent,thesis,unpublished] - {title}{#1\adddot\addthinspace}%\mkbibquote{#1\isdot} -\DeclareFieldFormat%将期刊等文献的标题中原来带的引号去掉 - [inbook,incollection,inproceedings] - {title}{#1}%\nopunct\unspace -\DeclareFieldFormat{url}{\url{#1}} %%url相关输出,url域修改如本行,源来自biblatex.def -\def\UrlFont{\rmfamily}%设置url字体为roman字体%\ttfamily -%\urlstyle{rm} %使用这句也一样 -\setcounter{biburlnumpenalty}{100} %让url可以在数字后断行 -\setcounter{biburlucpenalty}{100} %让url可以在大写字母后断行 -\setcounter{biburllcpenalty}{100} %让url可以在小写字母后断行 -\DeclareFieldFormat{doi}{% - \rmfamily{DOI}\addcolon\space - \ifhyperref - {\href{https://doi.org/#1}{\nolinkurl{#1}}} - {\nolinkurl{#1}}} -% -% 标题的字母大小写格式修改 -% -% 注意:修改标题的字母大小写,不能用前面的title的格式而要用titlecase -% 因为titlecase is applied to the contents of the field directly,title is not -%\DeclareFieldFormat{titlecase}{\MakeCapital#1}%重设标题格式,将其修改为首字母大写 -\DeclareFieldFormat{titlecase}{\iftoggle{bbx:titlelink}{% -\iffieldundef{url}{\MakeCapital#1}{% -\href{\thefield{url}}{#1}}}{\MakeCapital#1}}%重设标题格式,将其修改为首字母大写 -\DeclareFieldFormat{pages}{#1}%去掉前面引导页码的pp.等字符,\mkpageprefix[bookpagination]{#1} -\DefineBibliographyExtras{english}{\renewcommand*{\bibrangedash}{-}}%将页码间隔符替换会英文的短横线 - -\def\execgbfdfmtstd{%恢复到标准样式的设置 -\DeclareFieldFormat{title}{\mkbibemph{##1}} -\DeclareFieldFormat - [article,inbook,incollection,inproceedings,patent,thesis,unpublished] - {title}{\mkbibquote{##1\isdot}} -\DeclareFieldFormat - [suppbook,suppcollection,suppperiodical] - {title}{##1} -\DeclareFieldFormat{journaltitle}{\mkbibemph{##1}} -\DeclareFieldFormat{issuetitle}{\mkbibemph{##1}} -\DeclareFieldFormat{maintitle}{\mkbibemph{##1}} -\DeclareFieldFormat{booktitle}{\mkbibemph{##1}} -\DeclareFieldFormat{url}{\mkbibacro{URL}\addcolon\space\url{##1}} -\DeclareFieldFormat{titlecase}{##1} -\DeclareFieldFormat{pages}{\mkpageprefix[bookpagination]{##1}} -} - -% -% 文献标题后的标点问题 -% v1.0k,20180405,为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以上版本 - \@ifclassloaded{beamer}{ - \DeclareFieldFormat{title}{#1}% - \DeclareFieldFormat[article,patent,thesis,unpublished]{title}{#1} - \AtBeginDocument{% - \patchcmd{\abx@macro@title}{\newunitpunct}{}{}{}}}{} - } - - -% -% 修改译者位置格式 -% -% 原理方法:修改来自biblatex.def文件的bytranslator+others宏的格式 -\renewbibmacro*{bytranslator+others}{\bibauthorfont% - \ifnameundef{translator} - {} - {%\usebibmacro{bytranslator+othersstrg} - %\setunit{\addspace}% - \printnames[bytranslator]{translator}% - \clearname{translator}% - %从macro*{bytranslator+othersstrg}%中可以看到当地化字符串格式的引用前的代码处理 - %比如生成cotranslator等用于调用cotranslator所代表的当地化字符串 - \usebibmacro{bytranslator+othersstrg}%“译”的位置换到下面来,即放到译者后面。 - %\setunit{\addspace}% - \newunit}% - \usebibmacro{withothers}} - - -% -% 修改作者数量超过限定值,做省略时的处理格式 -% v1.0,20160701,hzz -% v1.0O,20190103,hzz,修改利用新定义的一个分隔符strandothersdelim -% -% 原理方法:判断作者或译者是否中文,若中文用字符等,否则用et al. 。 -\renewbibmacro*{name:andothers}{\bibauthorfont% - \ifboolexpr{ - test {\ifnumequal{\value{listcount}}{\value{liststop}}} - and - test \ifmorenames - }{\ifnumgreater{\value{liststop}}{1}% - {\finalandcomma}% - {}% -\printdelim{andothersdelim}\printdelim{strandothersdelim}% -}{%当是译者的时候需要特殊处理:从7.2节看等,译前面加逗号,但从示例看等和译同时出现时,译前的逗号没有,比如: -%袁训来, 陈哲, 肖书海, 等. -%胡泳, 范海燕, 译. -%潘惠霞, 魏婧, 杨艳, 等译. -\ifcurrentname{translator}{\addcomma\addthinspace}{}%为了实现上述第二个示例情况做的处理 -}} - - -% 修改省略作者后的本地化字符串,比如et al. -% v1.0o,20190103,hzz -% -% 原理方法:默认情况下判断作者或译者是否中文,若中文用字符andotherscn=“等”,否则用andothers=“et al.”。 -% 非默认情况,根据选项信息,选择选择强制中文或英文 -% 首先设置全局的,然后设置文献表中的,这一等价于将所有的cite命令环境都设置过了 -% 而不用对每一个引用命令单独设置,比如cite,parancite,textcite都设置 -\DeclareDelimFormat{strandothersdelim}{% - \edef\userfieldabcde{userd}%这里使用\iffieldequalstr{labelnamesource}替代ifcurrentname因为标注中使用ifcurrentname无效 - \iffieldequalstr{labelnamesource}{translator}{\edef\userfieldabcde{usere}}{}% - \iffieldequalstr{labelnamesource}{editor}{\edef\userfieldabcde{userc}}{}% - \iffieldequalstr{labelnamesource}{author}{\edef\userfieldabcde{userf}}{}% - \iffieldequalstr{labelnamesource}{bookauthor}{\edef\userfieldabcde{userb}}{}% - \ifcase\value{gbcitelocalcase}% - \iffieldequalstr{\userfieldabcde}{chinese}{\ifbibstring{andothersincitecn}{\bibstring{andothersincitecn}}{\bibstring{andothers}}}{}%中文已经通过english本地化字符串定义 - \iffieldequalstr{\userfieldabcde}{korean}{\ifbibstring{andotherskr}{\bibstring{andotherskr}}{\bibstring{andothers}}}{}%韩语未定义,所以与bib中一致 - \iffieldequalstr{\userfieldabcde}{japanese}{\ifbibstring{andothersjp}{\bibstring{andothersjp}}{\bibstring{andothers}}}{}%日与同韩语 - \iffieldequalstr{\userfieldabcde}{english}{\ifbibstring{andothersincite}{\bibstring{andothersincite}}{\bibstring{andothers}}}{}%英语已定义 - \iffieldequalstr{\userfieldabcde}{french}{\bibstring{andothers}}{}%法语未定义,若要定义需要针对french本地化字符串定义 - \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{andothers}}{}%俄语未定义,若要定义需要针对russian本地化字符串定义 - \or% - \bibstring{andothersincitecn}% - \or% - \bibstring{andothersincite}% - \fi} - - -\DeclareDelimFormat[bib,biblist]{strandothersdelim}{% - \edef\userfieldabcde{userd}% - \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% - \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% - \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% - \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% - \ifcase\value{gbbiblocalcase}% - \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andotherscn}}{}% - \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andotherskr}}{}% - \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andothersjp}}{}% - \iffieldequalstr{\userfieldabcde}{english}{\bibstring{andothers}}{}% - \iffieldequalstr{\userfieldabcde}{french}{\bibstring{andothers}}{}% - \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{andothers}}{}% - \or% - \bibstring{andotherscn}% - \or% - \bibstring{andothers}% - \fi} - -% -% 修改最后一个作者前的字符串,比如 and -% v1.0o,20190103,hzz -% -% 原理方法:默认情况下判断作者或译者是否中文,若中文用字符andcn=“和”,否则用and=“and”。 -% 非默认情况,根据选项信息,选择选择强制中文或英文 -% 首先设置全局的,然后设置文献表中的,这一等价于将所有的cite命令环境都设置过了 -% 而不用对每一个引用命令单独设置,比如cite,parancite,textcite都设置 -\DeclareDelimFormat{finalnamedelim}{% - \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}% -% \addspace% - \edef\userfieldabcde{userd}% - \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% - \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% - \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% - \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% - \ifcase\value{gbcitelocalcase}% - \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andincitecn}}{}% - \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andkr}}{}% - \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andjp}}{}% - \iffieldequalstr{\userfieldabcde}{english}{\space\bibstring{andincite}\space}{}% - \iffieldequalstr{\userfieldabcde}{french}{\space\bibstring{and}\space}{}% - \iffieldequalstr{\userfieldabcde}{russian}{\space\bibstring{and}\space}{}% -%\space% - \or% - \bibstring{andincitecn}%\space% - \or% -\space\bibstring{andincite}\space% - \fi} - -\DeclareDelimFormat[bib,biblist]{finalnamedelim}{% - \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}% - \addspace% - \edef\userfieldabcde{userd}% - \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% - \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% - \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% - \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% - \ifcase\value{gbbiblocalcase}% - \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andcn}}{}% - \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andkr}}{}% - \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andjp}}{}% - \iffieldequalstr{\userfieldabcde}{english}{\bibstring{and}}{}% - \iffieldequalstr{\userfieldabcde}{french}{\bibstring{and}}{}% - \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{and}}{}% -\space% - \or% - \bibstring{andcn}\space% - \or% - \bibstring{and}\space% - \fi} - - -% -% 重设title的输出 -% -% 20180425,v1.0k,为标题增加字体控制命令,Hu Zhenzhen -% 原理方法:将文献类型标识符输出出去,原输出来自biblatex.def文件 -% 利用toggle做标识符是否输出的判断 -\renewbibmacro*{title}{% - \ifboolexpr{% - test{\iffieldundef{title}}% - and - test{\iffieldundef{subtitle}}% - }% - {}% - {\printtext[title]{\bibtitlefont%增加字体控制命令 - \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 -}% -}} - -% -% 作者信息的输出格式 -% -% 20180425,v1.0k,为作者增加字体控制命令,Hu Zhenzhen -% 20180603,v1.0l,增加使用nameformat域来选择姓名格式 -\DeclareNameFormat{namefmtselected}{% -\iffieldundef{namefmtid}{}% -{\defcounter{gbnamefmtcase}{\thefield{namefmtid}}}% -\ifcase\value{gbnamefmtcase}% - \ifgiveninits - {\usebibmacro{name:gbuppercase} - {\namepartfamily} - {\namepartgiveni} - {\namepartprefix} - {\namepartsuffix}} - {\usebibmacro{name:gbuppercase} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}}% -\or - \ifgiveninits - {\usebibmacro{name:gblowercase} - {\namepartfamily} - {\namepartgiveni} - {\namepartprefix} - {\namepartsuffix}} - {\usebibmacro{name:gblowercase} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}}% -\or - \ifgiveninits - {\usebibmacro{name:given-family} - {\namepartfamily} - {\namepartgiveni} - {\namepartprefix} - {\namepartsuffix}} - {\usebibmacro{name:given-family} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}}% -\or - \ifgiveninits - {\usebibmacro{name:family-given} - {\namepartfamily} - {\namepartgiveni} - {\namepartprefix} - {\namepartsuffix}} - {\usebibmacro{name:family-given} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}}% -\or -\usebibmacro{name:gbpinyin} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}% -\or - \ifnumequal{\value{listcount}}{1} - {\ifgiveninits - {\usebibmacro{name:family-given} - {\namepartfamily} - {\namepartgiveni} - {\namepartprefix} - {\namepartsuffix}} - {\usebibmacro{name:family-given} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}}% - \ifboolexpe{% - test {\ifdefvoid\namepartgiven} - and - test {\ifdefvoid\namepartprefix}} - {} - {\usebibmacro{name:revsdelim}}} - {\ifgiveninits - {\usebibmacro{name:given-family} - {\namepartfamily} - {\namepartgiveni} - {\namepartprefix} - {\namepartsuffix}} - {\usebibmacro{name:given-family} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}}}% -\fi - \usebibmacro{name:andothers}} - -\DeclareNameAlias{default}{namefmtselected}%姓名的默认格式采用可选的模式 -\DeclareNameAlias{sortname}{default}% Used in the bibliography %family-given/given-family -\DeclareNameAlias{citename}{default}% Default used by \citename - -\DeclareDelimFormat[bib,biblist]{andothersdelim}{\addcomma\addspace} -%\DeclareDelimFormat[textcite]{andothersdelim}{\addspace}% - -%GB/T 7714-2015 风格,全部大写 -\newbibmacro*{name:gbuppercase}[4]{\bibauthorfont% -\renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 -\renewcommand*{\revsdnamepunct}{}% - \ifuseprefix% - {\usebibmacro{name:delim}{#3#1}% - \usebibmacro{name:hook}{#3#1}% - \ifdefvoid{#3}{}{% - \ifcapital% - {\mkbibnameprefix{\MakeCapital{#3}}\isdot}% - {\mkbibnameprefix{#3}\isdot}% - \ifprefchar{}{\bibnamedelimc}}% - \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% - \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital - \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%后缀前加逗号 - {\usebibmacro{name:delim}{#1}% - \usebibmacro{name:hook}{#1}% - \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% - \ifboolexpe{% - test {\ifdefvoid{#2}} - and - test {\ifdefvoid{#3}}} - {}{\revsdnamepunct}% - \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital - \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}% - \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号 -} - -%GB/T 7714-2015 风格,大小写不变,根据bib文件内输入原样输出 -\newbibmacro*{name:gblowercase}[4]{\bibauthorfont% - \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 - \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def - \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}{}{\addcomma\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}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号 -} - -%中文常见风格,汉语拼音全拼模式 -\newbibmacro*{name:gbpinyin}[4]{\bibauthorfont% -\renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉,%来源biblatex2.STY -\renewcommand*{\revsdnamepunct}{}%%来源biblatex.def -\renewrobustcmd*{\bibnamedelima}{\mbox{-}}% - \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}}% -} - - -\@ifpackagelater{biblatex}{2016/03/27}%biblatex<3.2版的情况 - {}{ - %GB/T 7714-2015 风格,全部大写 - \renewbibmacro*{name:gbuppercase}[4]{\bibauthorfont% - \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 - \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def - \ifuseprefix - {\usebibmacro{name:delim}{#3#1}% - \usebibmacro{name:hook}{#3#1}% - \ifblank{#3}{}{% - \ifcapital - {\mkbibnameprefix{\MakeCapital{#3}}\isdot} - {\mkbibnameprefix{#3}\isdot}% - \ifpunctmark{'}{}{\bibnamedelimc}}% - %\mkbibnamelast{#1}\isdot - \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase - %注意上一句\MakeCapital后面如果再跟一个{}包含#1,则没有效果,可能是包在里面少了一层展开 - %因为机构名通常包括在{}内,所以要多展开一次才行,所以这里去掉#1外面的{} - %\mkbibnamelast{\MakeUppercase{#1}}\isdot - %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 - \ifblank{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamefirst{\MakeUppercase{#2}}\isdot}% - \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}}%后缀前加逗号 - {\usebibmacro{name:delim}{#1}% - \usebibmacro{name:hook}{#1}% - %\mkbibnamelast{#1}\isdot %3.9.1 Generic Commands and Hooks,对姓重新处理,如下句: %\mkbibnamelast{\MakeUppercase{#1}} - \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot %大写,参考4.6.4 Miscellaneous Commands,\MakeUppercase %\MakeSentenceCase - %\mkbibnamelast{\MakeUppercase{#1}}\isdot - %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 - \ifblank{#2#3}{}{\revsdnamepunct}% - \ifblank{#2}{}{\bibnamedelimd\mkbibnamefirst{\MakeUppercase{#2}}\isdot}% - \ifblank{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}% - \addcomma\addspace% - \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}%%后缀前加逗号 - }% - } - - %GB/T 7714-2015 风格,大小写不变,根据bib文件内输入原样输出 - \renewbibmacro*{name:gblowercase}[4]{\bibauthorfont% - \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 - \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def - \ifuseprefix - {\usebibmacro{name:delim}{#3#1}% - \usebibmacro{name:hook}{#3#1}% - \ifblank{#3}{}{% - \ifcapital - {\mkbibnameprefix{\MakeCapital{#3}}\isdot} - {\mkbibnameprefix{#3}\isdot}% - \ifpunctmark{'}{}{\bibnamedelimc}}% - \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{{#1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase - \ifblank{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamefirst{{#2}}\isdot}% - \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}}%后缀前加逗号 - {\usebibmacro{name:delim}{#1}% - \usebibmacro{name:hook}{#1}% - \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{{#1}}}\isdot %大写,参考4.6.4 Miscellaneous Commands,\MakeUppercase %\MakeSentenceCase - \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:gbpinyin}[4]{\bibauthorfont% - \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 - \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def - \renewrobustcmd*{\bibnamedelima}{\mbox{-}}% - \ifuseprefix - {\usebibmacro{name:delim}{#3#1}% - \usebibmacro{name:hook}{#3#1}% - \ifblank{#3}{}{% - \ifcapital - {\mkbibnameprefix{\MakeCapital{#3}}\isdot} - {\mkbibnameprefix{#3}\isdot}% - \ifpunctmark{'}{}{\bibnamedelimc}}% - \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase - \ifblank{#2}{}{\revsdnamepunct\bibnamedelimd\MakeSentenceCase{\mkbibnamefirst{#2}}\isdot}% - \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}} - {\usebibmacro{name:delim}{#1}% - \usebibmacro{name:hook}{#1}% - \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot %大写,参考4.6.4 Miscellaneous Commands,\MakeUppercase %\MakeSentenceCase - \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}% - }% - } - - %%biblatex<3.2版的情况,姓名的处理格式带参数 - \DeclareNameFormat{namefmtselected}{% - \iffieldundef{namefmtid}{}% - {\defcounter{gbnamefmtcase}{\thefield{namefmtid}}}% - \ifcase\value{gbnamefmtcase}% - \iffirstinits - {\usebibmacro{name:gbuppercase}{#1}{#4}{#5}{#7}} - {\usebibmacro{name:gbuppercase}{#1}{#3}{#5}{#7}}% - \or - \iffirstinits - {\usebibmacro{name:gblowercase}{#1}{#4}{#5}{#7}} - {\usebibmacro{name:gblowercase}{#1}{#3}{#5}{#7}}% - \or - \iffirstinits - {\usebibmacro{name:last-first}{#1}{#4}{#5}{#7}} - {\usebibmacro{name:last-first}{#1}{#3}{#5}{#7}}% - \ifblank{#3#5} - {} - {\usebibmacro{name:revsdelim}}% - \or - \iffirstinits - {\usebibmacro{name:first-last}{#1}{#4}{#5}{#7}} - {\usebibmacro{name:first-last}{#1}{#3}{#5}{#7}}% - \or - \usebibmacro{name:gbpinyin}{#1}{#3}{#5}{#7}% - \or - \ifnumequal{\value{listcount}}{1} - {\iffirstinits - {\usebibmacro{name:last-first}{#1}{#4}{#5}{#7}} - {\usebibmacro{name:last-first}{#1}{#3}{#5}{#7}}% - \ifblank{#3#5} - {} - {\usebibmacro{name:revsdelim}}} - {\iffirstinits - {\usebibmacro{name:first-last}{#1}{#4}{#5}{#7}} - {\usebibmacro{name:first-last}{#1}{#3}{#5}{#7}}}% - \fi - \usebibmacro{name:andothers}} -} - -% -% url和url日期格式 -% -\renewbibmacro*{url+urldate}{% - %\usebibmacro{url}%%更换url的位置,放到下面 - \iffieldundef{urlyear}% - {}{%\setunit*{\addspace}% - \usebibmacro{urldate}}% - \setunit{\addperiod\addspace}% - \usebibmacro{url}} -\renewbibmacro*{url}{\printfield{url}} - - - - -% -% 日期信息的输出格式,针对biblatex<3.7版本 -% -\defversion{3.4}{date}{ - \renewbibmacro*{urldate}{% - \addthinspace\printtext{[}\printfield{urlyear}% - \iffieldundef{urlmonth}{}{\bibrangedash\printfield{urlmonth}}% - \iffieldundef{urlday}{}{\bibrangedash\printfield{urlday}}\printtext{]}} - - \newbibmacro*{newsdate}{%%新增加一个公告日期,公开日期或新闻日期 - \iffieldundef{year}{}{\printfield{year}% - \iffieldundef{month}{}{\bibrangedash\printtext{\thefield{month}}% - \iffieldundef{day}{}{\bibrangedash\printfield{day}}}}% - } - - \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 - \ifboolexpr{% - test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}% - }% - {}%更新或修改日期通常有day信息 - {\iffieldequalstr{year}{}{%替换\iffieldundef{year},因为year总是存在,但为空 - \iffieldundef{endyear}{% - \iffieldundef{eventyear}{}{\printtext{\mkbibparens{\printtext{\printfield{eventyear}}% - \iffieldundef{eventmonth}{}{\bibrangedash\thefield{eventmonth}}% - \iffieldundef{eventday}{}{\bibrangedash\printfield{eventday}}}}% - }% - }{% - \iffieldundef{endyear}{}{\printtext{\mkbibparens{\printtext{\printfield{endyear}}% - \iffieldundef{endmonth}{}{\bibrangedash\thefield{endmonth}}% - \iffieldundef{endday}{}{\bibrangedash\printfield{endday}}}}% - }% - }% - }% - {% - \iffieldundef{year}{}{\printtext{\mkbibparens{\printtext{\printfield{year}}% - \iffieldundef{month}{}{\bibrangedash\thefield{month}}% - \iffieldundef{day}{}{\bibrangedash\printfield{day}}}}% - }% - }% - }}% -} - -% -% 日期信息的输出格式,针对3.9>=biblatex>=3.7版本 -% -\defversion{3.7}{date}{ - \DeclareFieldFormat{urldate}{##1} - \renewbibmacro*{urldate}{% - \addthinspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 - - % - % 专利的公告日期、或报纸的日期的输出宏 - % 20160701,v1.0,新增加 - % 20180405,v1.0k,为biblatexv3.7-3.9版本,出现多出点bug做处理,Hu Zhenzhen - % - % 原理方法:加上printtext避免破坏异步标点机制 - % - \newbibmacro*{newsdate}{% - \printtext{\blx@edtfdate{}{}}% - } - - \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 - \ifboolexpr{% - test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}% - }% - {}%更新或修改日期通常有day信息 - {\iffieldundef{year}{% - \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{(}\printeventdate\printtext{)}}}% - {\printtext{(}\printenddate\printtext{)}}% - }{\iffieldequalstr{year}{}{%因为year存在,但为空 - }{\printtext{(}\blx@edtfdate{}{}\printtext{)}}% - }% - }}% -} - -% -% 日期信息的输出格式,针对biblatex>=3.10版本 -% -\defversion{3.10}{date}{ - \DeclareFieldFormat{urldate}{##1} - \renewbibmacro*{urldate}{% - \addthinspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 - - % - % 专利的公告日期、或报纸的日期的输出宏 - % 20160701,v1.0,新增加 - % 20180405,为biblatexv3.10版本,出现多出点bug做处理,Hu Zhenzhen - % - % 原理方法:加上printtext避免破坏异步标点机制 - % 本可以用\printdate,但由于date选项设置为year,所以仅会给出年份 - % 所以无法再用选项设置的方法,印象需要用底层的命令 - % 这里可以用\blx@isodate,但用\blx@gbdate试图避免版本判断 - \newbibmacro*{newsdate}{%% - \printtext{\blx@gbdate{}{}}%%\blx@isodate{}{}% - } - - % - \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 - \ifboolexpr{% - test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}% - }% - {}%更新或修改日期通常有day信息 - {\iffieldundef{year}{% - \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{(}\printeventdate\printtext{)}}}% - {\printtext{(}\printenddate\printtext{)}}% - }{\iffieldequalstr{year}{}{%因为year存在,但为空 - }{\printtext{(}\blx@gbdate{}{}\printtext{)}}% - }% - }}% -} - -% -% biblatex>v3.8版利用related实现双语文献的处理 -% -\defversion{3.8}{dblang}{ - %为了实现v3.8以上版本的双语文献,采用related的方法代替set方法,因为set方法已经无法实现了, - %因为set不再复制其第一个成员的信息。于是定义一个命令,用于动态的修改数据,即添加related域的信息 - %其中使用了\DeclareStyleSourcemap,但由于其只能出现在导言区中,因此\defdoublelangentry命令也只能出现在导言区中 - \newcommand{\defdoublelangentry}[2]{% - \edef\entrykeya{##1} - \edef\entrykeyb{##2} - \DeclareStyleSourcemap{ - \maps[datatype=bibtex]{ - \map{ - \step[fieldsource=entrykey, match=\entrykeya, final] - \step[fieldset=related, fieldvalue=\entrykeyb] - } - } - } - } -} - -% -% 关联文献间的分隔符 -% -\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}% - \def\bbx@tempa{}% - \setcounter{bbx:relatedtotal}{0}% - \def\do##1{% - \entrydata{##1}{% - \ifrelatedloop - {} - {\stepcounter{bbx:relatedtotal}% - \gappto{\bbx@tempa}{##1,}}}}% - \docsvfield{related}% - \restorefield{related}{\bbx@tempa}% - \ifnumgreater{\value{bbx:relatedtotal}}{0} - {\listcsxadd{bbx:relatedloop}{\strfield{entrykey}}% - \iffieldundef{clonesourcekey} - {} - {\listcsxadd{bbx:relatedloop}{\strfield{clonesourcekey}}}% - \setcounter{bbx:relatedcount}{0}% - \def\do{% - \stepcounter{bbx:relatedcount}% - \ifnumgreater{\value{bbx:relatedcount}}{0}%这里从1改为0 - {\ifcsundef{relateddelim\strfield{relatedtype}} - {\printtext{\relateddelim}} - {\printtext{\csuse{relateddelim\strfield{relatedtype}}}}} - {}}% - \ifbibmacroundef{related:\strfield{relatedtype}} - {\appto{\do}{\usebibmacro{related:default}}} - {\appto{\do}{\usebibmacro*{related:\strfield{relatedtype}}}}% - \iffieldformatundef{related:\strfield{relatedtype}} - {\def\bbx@tempa{related}} - {\def\bbx@tempa{related:\strfield{relatedtype}}}% - \iffieldformatundef{relatedstring:\strfield{relatedtype}} - {\def\bbx@tempb{relatedstring:default}} - {\def\bbx@tempb{relatedstring:\strfield{relatedtype}}}% - \printtext[\bbx@tempa]{% - \usebibmacro{begrelatedloop}% - \iffieldundef{relatedstring} - {\ifboolexpr{ - test {\ifnumgreater{\value{bbx:relatedtotal}}{1}} - and - test {\ifbibxstring{\thefield{relatedtype}s}} - } - {\printtext[\bbx@tempb]{% - \bibstring[\mkrelatedstring]{\thefield{relatedtype}s}}} - {\iffieldbibstring{relatedtype} - {\printtext[\bbx@tempb]{% - \bibstring[\mkrelatedstring]{\thefield{relatedtype}}}} - {}}} - {\iffieldbibstring{relatedstring} - {\printtext[\bbx@tempb]{% - \bibstring[\mkrelatedstring]{\thefield{relatedstring}}}} - {\printfield[\bbx@tempb]{relatedstring}}}% - \docsvfield{related}% - \usebibmacro{endrelatedloop}}}% - {}% - \usebibmacro{endrelated}}} -}{} - -% -% 关联文献块前的分隔符,针对biblatex>3.11 -% -% 原理方法:因为增加了begrelateddelim钩子,所以不需要重定义related输出宏 -\defversion{3.11}{related}{ -\renewcommand{\begrelateddelim}{\adddot\newline\nobreak} -} - -\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格式 -% 2016.07.01 byhzz -% 2019.05.01 byhzz 在eprint前增加一个空格 -% 原理方法:源来自standard.bbx,因为页码后面直接跟引用日期,没有标点所以去掉其中的标点。 -\renewbibmacro*{doi+eprint+url}{% -% \iftoggle{bbx:doi}%把doi的位置放到url后面 -% {\printfield{doi}} -% {}% - %\newunit\newblock - \iftoggle{bbx:eprint} - {\iffieldundef{eprint}{}{\newunit\usebibmacro{eprint}}} - {}% - %\newunit\newblock - \iftoggle{bbx:url} - {\usebibmacro{url+urldate}} - {} - \newunit\newblock - \iftoggle{bbx:doi} - {\printfield{doi}} - {}} - -% -% 调整页码的格式,即chapter+pages格式 -% -\renewbibmacro*{chapter+pages}{% -\iftoggle{bbx:gbstrict}{}{% - \printfield{chapter}}% - \iffieldundef{pages}{}{%这里增加一个判断,当没有页码时就不输出 - \setunit{\bibpagespunct}% - \printfield{pages}}% - %\newunit %这里的标点去掉 -} - -% -% 当location等出版项超过maxitem缩减后不再输出etal -% -\DeclareListFormat{location}{% - \usebibmacro{list:delim}{#1}% - #1\isdot} -\DeclareListAlias{institution}{location} -\DeclareListAlias{publisher}{location} - -% 新增一个样式用于输出连续出版物的地址,单位,时间, -% 用于periodical连续出版物的出版社和地址的处理 -% -% v1.0k,20180425,为出版信息增加字体控制命令,hzz -% %类似\newbibmacro*{publisher+location+date} -\newbibmacro*{location+institution+date}{\bibpubfont% -\iftoggle{bbx:gbpub}% -{\testCJKfirst{userd}% -\ifboolexpr{% -test {\iflistundef{location}} and test {\iflistundef{institution}}% -}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress}\space :\space\str@nopublisher]}% -{\printtext{[S.l.\space :\space s.n.\adddot]}}% -}{% -\iflistundef{location}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress]}}{\printtext{[S.l.\adddot]}}}% - {\printlist{location}}% -\addcolon\addspace% -\iflistundef{institution}{% -\iftoggle{ifCJKforgbt}{\printtext{[\str@nopublisher]}}{\printtext{\mkbibbrackets{s.n.}}}}% -{\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}% -} -% -% 通用的出版社和地址的处理 -% -% 原理方法:当没有出版社地址时,直接判断title的信息是否是中文,若为中文,则写出版地不详,否则用英文的字符表示。 -% 事实上title对于每个文献来说是必须的,所以用它判断是最快的,而且一般标题和出版社的语言是一样的。 -% 注意标准standard类型,因为当没有出版项时直接省略,所以做特殊处理 -\renewbibmacro*{publisher+location+date}{\bibpubfont% -\iftoggle{bbx:gbpub}% -{\testCJKfirst{userd}% - \ifboolexpr{ test {\iflistundef{location}} and test {\iflistundef{publisher}} }% - {\iffieldequalstr{note}{standard}{}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress}\space :\space\str@nopublisher]}{\printtext{[S.l.\space :\space s.n.\adddot]}}}}% - {\iflistundef{location}{%\adddot - \iffieldequalstr{note}{standard}{}%%从gbt7714-2015标准第19页看到,标准存在出版项时输出,没有时完全省略。 - {\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress]}\addcolon\addspace}{\printtext{[S.l.\adddot]}\addcolon\addspace}}}% \bibstring{noaddress} - {\printlist{location}\addcolon\addspace}%%\addcolon\addspace% - \iflistundef{publisher}{% - \iffieldequalstr{note}{standard}{}% - {\iftoggle{ifCJKforgbt}{\printtext{[\str@nopublisher]}\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 - }% -} - -% -% 修改了一个institution+location+date用于manual、report、thesis等类型 -% -% 20180425,v1.0k,增加了字体控制命令,hzz -% 20190105,v1.0o,加了一个编组避免\usebibmacro{date}把month和day信息去掉 -\renewbibmacro*{institution+location+date}{\bibpubfont%当没有institution时不处理。 -{\printlist{location}%%加了一个编组避免\usebibmacro{date}把month和day信息去掉 - \iflistundef{institution} - {\setunit*{\addcomma\space}} - {\setunit*{\addcolon\space}}% - \printlist{institution}% - \setunit*{\addcomma\space}% - \usebibmacro{date}% - %\newunit - }} - -% -% 对volume卷信息格式做出修改 -% v1.0o,20190105,hzz -% -\DeclareFieldFormat{volume}{% -\testCJKfirst{userd}% -\iftoggle{ifCJKforgbt}% -{\bibstring{serialcn}#1\bibstring{volumecn}}% -{\bibstring{volume}~#1}% -}% volume of a book -\DeclareFieldFormat[article,periodical]{volume}{#1}% volume of a journal - -% -% 对number册信息格式做出修改 -% v1.0o,20190105,hzz -% -\DeclareFieldFormat{number}{#1}% -\DeclareFieldFormat[book,collection,inbook,% -incollection,proceedings,inproceedings]{number}{% -\testCJKfirst{userd}% -\iftoggle{ifCJKforgbt}% -{\bibstring{serialcn}#1\bibstring{numbercn}}% -{#1}% -}% - -% -% 对edition版本信息格式做出修改 -% -\DeclareFieldFormat{edition}{\bibtitlefont%源来自biblatex.DEF -\testCJKfirst{userd}% -\iftoggle{ifCJKforgbt}% -{\ifinteger{#1}% -{\printtext{#1\str@edition}}% -{#1\isdot}}% -{\ifinteger{#1}% -{\mkbibordedition{#1}~\bibstring{edition}}% -{#1\isdot}}} - -% -% 对version的版本信息做出修改 -% -\DeclareFieldFormat{version}{\bibtitlefont%源来自biblatex.DEF -\testCJKfirst{userd}% -\ifinteger{#1}% -{\iftoggle{ifCJKforgbt}{\printtext{#1\str@edition}}% -{\mkbibordedition{#1}~\bibstring{version}}}% -{#1\isdot}} - -% -% 修改析出文献的文集的标题与附加标题间的符号 -% -\renewbibmacro*{booktitle}{% - \ifboolexpr{ - test {\iffieldundef{booktitle}} - and - test {\iffieldundef{booksubtitle}} - } - {} - {\printtext[booktitle]{\bibtitlefont% - \printfield[titlecase]{booktitle}% - \setunit{\subtitlepunct}% - \printfield[titlecase]{booksubtitle}}% - \newunit%标点换成下一句 - \setunit{\subtitlepunct}}% - \printfield{booktitleaddon}} - - -% -% 调整期刊名的格式 -% -% v1.0k,20180425,增加了字体控制命令,hzz -\renewbibmacro*{journal+issuetitle}{\bibpubfont%源来自standard.bbx - \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}% - \iffieldundef{volume}{}{\setunit{\addcomma\space}}% - %换成逗号和空格 - \usebibmacro{issue}% - \usebibmacro{volume+number+eid}%把卷期放到年份后面 - %\newunit - } - - - -% -% 调整期刊卷和期的格式 -% -\renewbibmacro*{volume+number+eid}{%源来自standard.bbx -\iftoggle{bbx:gbfieldstd}{% - \printfield{volume}% - \setunit*{\adddot}% - \printfield{number}% - \setunit{\addcomma\space}% - \printfield{eid}}{% - \printfield{volume}% - %\setunit*{\adddot}%去掉点号 - %\printfield{number}% - \iffieldundef{number}{}{\printtext{\mkbibparens{\printfield{number}}}}%增加一个圆括号 - \iffieldundef{eid}{}{% - \setunit{\addcomma\space}% - \printfield{eid}}}} - -% -% 调整期刊年份的格式 -% -\renewbibmacro*{issue+date}{%去掉括号 - \printtext{%去掉了[parens] - \iffieldundef{issue} - {%\usebibmacro{date} - \iffieldundef{note}{\usebibmacro{date}}%判断一下,是否是报纸 - {\iffieldequalstr{note}{news}{\usebibmacro{newsdate}}%判断是否为报纸 - {\usebibmacro{date}}% - }}% - {\iftoggle{bbx:gbstrict}{}{\printfield{issue}% - \setunit*{\addspace}}% - %\usebibmacro{date} - \iffieldundef{note}{\usebibmacro{date}}%判断一下,是否是报纸 - {\iffieldequalstr{note}{news}{\usebibmacro{newsdate}}%判断是否为报纸 - {\usebibmacro{date}}% - }}}% - %\newunit - } - -% -% 调整页码前的标点和去掉期刊文章等页码后面的标点 -% -\renewbibmacro*{note+pages}{%源来自standard.bbx - %\printfield{note}%不要note,note用来判断是否是报纸newspaper - \iffieldundef{pages}{}{ - \setunit{\bibpagespunct}% - \printfield{pages}}% - %\newunit - } - - -% -% 编者的符号修改一下 -% v1.0 2016-07-01 -% v1.0q 2019-03-01 hzz 修改editortype前的标点 -% -\renewbibmacro*{editor}{%源来自biblatex.DEF - \ifboolexpr{ - test \ifuseeditor - and - not test {\ifnameundef{editor}} - } - {\printnames{editor}% - \iffieldundef{editortype}%增加一个类型判断,用于存在editortype的情况 - {\setunit\addspace}%当没有editortype时,直接用句点 - {%\setunit{\addcomma\space}% - \usebibmacro{editorstrg}}% - %\clearname{editor} - }% - {}} - -% -% 编者类型做一修改 -% v1.0 2016-07-01 -% v1.0q 2019-03-01 hzz 修改editortype不同语言的不同本地化字符串 -% -\renewbibmacro*{editorstrg}{%源来自biblatex.DEF - \printtext[editortype]{% - \iffieldundef{editortype} - {% -% \ifboolexpr{ %这一段去掉,未定义编者类型情况下不处理 -% test {\ifnumgreater{\value{editor}}{1}} -% or -% test {\ifandothers{editor}} -% } -% {\bibstring{editors}} -% {\bibstring{editor}} - } - {\ifbibxstring{\thefield{editortype}} %定义编者类型情况下处理,以后根据需要修改 - {\ifboolexpr{ - test {\ifnumgreater{\value{editor}}{1}} - or - test {\ifandothers{editor}} - } - {\printdelim{streditortypes}} - {\printdelim{streditortype}}} - {\thefield{editortype}}}% - }} - -% -% 编者类型的本地化字符串输出 -% v1.0q 2019-03-01 hzz -% 能对不同条目类型作格式设置的域格式,能对不同环境做格式设置的分隔符 -% 能对不同文境作设置的包括排序,标签等 -% 这里因为考虑可能标注和文献表中存在不同,所以用分隔符来输出本地化字符串 -% -\DeclareDelimFormat{streditortypes}{% - \edef\userfieldabcde{userd}% - \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% - \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% - \ifcase\value{gbbiblocalcase}% - \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{\thefield{editortype}scn}}{}% - \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{\thefield{editortype}skr}}{}% - \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{\thefield{editortype}sjp}}{}% - \iffieldequalstr{\userfieldabcde}{english}{\addcomma\addthinspace\bibstring{\thefield{editortype}s}}{}% - \iffieldequalstr{\userfieldabcde}{french}{\addcomma\addthinspace\bibstring{\thefield{editortype}s}}{}% - \iffieldequalstr{\userfieldabcde}{russian}{\addcomma\addthinspace\bibstring{\thefield{editortype}s}}{}% - \or% - \bibstring{\thefield{editortype}scn}% - \or% - \addcomma\addthinspace\bibstring{\thefield{editortype}s}% - \fi} -% -\DeclareDelimFormat{streditortype}{% - \edef\userfieldabcde{userd}% - \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% - \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% - \ifcase\value{gbbiblocalcase}% - \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{\thefield{editortype}cn}}{}% - \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{\thefield{editortype}kr}}{}% - \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{\thefield{editortype}jp}}{}% - \iffieldequalstr{\userfieldabcde}{english}{\addcomma\addthinspace\bibstring{\thefield{editortype}}}{}% - \iffieldequalstr{\userfieldabcde}{french}{\addcomma\addthinspace\bibstring{\thefield{editortype}}}{}% - \iffieldequalstr{\userfieldabcde}{russian}{\addcomma\addthinspace\bibstring{\thefield{editortype}}}{}% - \or% - \bibstring{\thefield{editortype}cn}% - \or% - \addcomma\addthinspace\bibstring{\thefield{editortype}}% - \fi} - - -% -% bookauthor域的输出, -% v1.0q 2019-03-01 hzz -% 不再对editor和bookauthor做sourcemap,而是下面的宏内逻辑代替, -% 使得除使用bookauthor外也可以使用editor,便于在使用editor时使用editortype -\renewbibmacro*{bybookauthor}{% - \ifnameundef{bookauthor}% - {\ifnameundef{editor}% - {}% - {\ifnamesequal{author}{editor}% - {}{\usebibmacro{editor}}}% - }% - {\ifnamesequal{author}{bookauthor}% - {}{\printnames{bookauthor}}% - }% -} - -% -% 修改期刊的标题 -% -\renewbibmacro*{periodical}{%源来自biblatex.DEF - \iffieldundef{title} - {} - {\printtext[title]{\bibtitlefont% - \printfield[titlecase]{title}% - %\setunit{\subtitlepunct}% - \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题 - {}{\setunit{\subtitlepunct} - \printfield[titlecase]{subtitle}}% - %}%把编组结束移到后面去 - \iftoggle{bbx:gbtype}{% - \iffieldundef{usera}{}{%在标题后直接给出文献标识字母 - \printfield[gbtypeflag]{usera}}}{} - }} - } - -% -% 期刊的标题做修改 -% -\renewbibmacro*{title+issuetitle}{%源来自standard.BBX - \usebibmacro{periodical}% - %\setunit*{\addspace}% - \setunit*{\adddot\addspace}%标点修改为句点 - \iffieldundef{series} - {} - {\newunit - \printfield{series}% - \setunit{\addspace}}% - \usebibmacro{periodical+issue}%将issue调整到上面来,并修改 -\iffieldundef{number}{}{%%进一步处理有范围的数字 - \multinumberparser{\thefield{number}}}% - \iffieldundef{volume}% - {\printfield{year}% - \printtext{\mkbibparens{\multinumberfirst}}% - \bibrangedash% - \iffieldundef{endyear}{}{\printfield{endyear}\printtext{\mkbibparens{\multinumbersecond}}}% - }% - {\multivolparser{\thefield{volume}}% - \printfield{year}% - \setunit{\addcomma\space}%将冒号修改为逗号 - \printtext{\multivolfirst}% - \printtext{\mkbibparens{\multinumberfirst}}% - \bibrangedash% - \iffieldundef{endyear}{}{% - \printfield{endyear}% - \setunit{\addcomma\space}%将冒号修改为逗号 - \printtext{\multivolsecond}% - \printtext{\mkbibparens{\multinumbersecond}}}% - }% - \setunit{\addcomma\space}% - \printfield{eid}% - \setunit{\addspace}% - %\usebibmacro{issue+date}% - %\setunit{\addcolon\space}% - \usebibmacro{issue}% - \newunit} - -% -% 新增一个样式用于调整期刊年份的格式,只打印年份 -% -\newbibmacro*{periodical+issue}{% - \printtext{%去掉了[parens] - \iffieldundef{issue} - {%\usebibmacro{date}%修改为下一句 - }% - {\printfield{issue}% - \setunit*{\addspace}% - %\usebibmacro{date}%修改为下一句 - }% - }% - %\newunit -} - -% -% 重设专利title的输出,将文献类型标识符输出出去 -% -\newbibmacro*{patenttitle}{%原输出来自biblatex.def文件 - \ifboolexpr{% - test{\iffieldundef{title}}% - and% - test{\iffieldundef{subtitle}}% - }% - {}% - {\printtext[title]{\bibtitlefont% - \printfield[titlecase]{title}% - \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题 - {}{\setunit{\subtitlepunct}% - \printfield[titlecase]{subtitle}}% - \iffieldundef{titleaddon}{}%判断一下titleaddon,否则直接加可能多一个空格 - {\setunit{\subtitlepunct}\printfield{titleaddon}}% - \setunit{\subtitlepunct}\printfield{number}%写专利号 - \iftoggle{bbx:gbtype}{\printfield[gbtypeflag]{usera}}{}% - %\iffieldundef{booktitle}{\newunit}{}%当title是析出时,不要标点 - %\newunit - }% -}% -} - - - -% -% 修改in:用于inbook、incollection、inproceedings等类型 -% 2018.04.20,v1.0k,renewed marco,by hzz -% 20190212,v1.0q,增加中英文区分,by hzz -% -% 原理方法:使用bibmacro{in:}改变了以前在driver中直接输出//的方式,同时也简化了标点控制。 -\renewbibmacro*{in:}{% - \iftoggle{bbx:gbpunctin}{\printtext{\texttt{//}\allowbreak}}%\addthinspace - {\setunit{\adddot\addspace}% - \iffieldequalstr{userd}{chinese}% - {\printtext{\bibstring{incn}}}% - {\printtext{\bibstring{in}}}% - }}%\newunit\newblock\intitlepunct - -% -% 修改type域的输出格式 -% 2019.02.12,v1.0q,byhzz -% 使其可以区分中英文输出不同的格式,比如博士论文英文输出PHD thesis,中文则是博士学位论文 -\DeclareFieldFormat{type}% -{\iffieldequalstr{userd}{chinese}% - {\ifbibxstring{#1cn}{\bibxstring{#1cn}}{#1}}% - {\ifbibstring{#1}{\bibstring{#1}}{#1}}% -} - -% -% 修改series域的输出格式 -% 2019.05.01,v1.0r,byhzz -\renewbibmacro*{series+number}{% - \printfield{series}% - %\setunit*{\addspace}% - %\printfield{number}% - %\newunit - } - -%===================================================================== -%设置驱动格式 -%===================================================================== -% -% book条目类的驱动 -% - \DeclareBibliographyDriver{book}{%源来自standard.bbx文件 - \usebibmacro{bibindex}% - \usebibmacro{begentry}% -\usebibmacro{author/editor+others/translator+others}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 -\usebibmacro{maintitle+title}% -\iftoggle{bbx:gbstrict}{}{% -\newunit -\printlist{language}% -\newunit\newblock% -\usebibmacro{byauthor}% -\newunit\newblock}% -\usebibmacro{byeditor+others}% -\newunit -\printfield{edition}% -\newunit\newblock%% -\iftoggle{bbx:gbstrict}{}{% -\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}% - \iffieldundef{url}{}{%当没有网址时也不输出 - \usebibmacro{modifydate}}%带括号的修改或更新日期, -\usebibmacro{doi+eprint+url}%从下面移动到上面来,因为gbt2015的url需直接放在页码后面。 - \newunit\newblock% - \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}\usebibmacro{annotation}} - - -% -% 期刊文章,连续出版物中的析出文献的格式 -% - \DeclareBibliographyDriver{article}{% - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author/translator+others}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 - \usebibmacro{title}% - \iftoggle{bbx:gbstrict}{}{% - \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}% - \iffieldequalstr{note}{news}{}{%当是新闻时不输出修改或更新日期 - \iffieldundef{url}{}{%当没有网址时也不输出 - \iftoggle{bbx:url}{%当url选项为false时,也不输出 - \usebibmacro{modifydate}}{}}}%带括号的修改或更新日期, - \usebibmacro{doi+eprint+url}%从后面移上来,调整url和页码之间的位置 - \newunit\newblock - \iftoggle{bbx:isbn} - {\printfield{issn}} - {}% - \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}\usebibmacro{annotation}} - - - -% -% 连续出版物的驱动 -% - \DeclareBibliographyDriver{periodical}{%源来自standard.BBX - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{editor}% - %\setunit{\labelnamepunct}\newblock - \newunit\newblock %删除上面一行,添加这一行 - \usebibmacro{title+issuetitle}% - \newunit\newblock% - \usebibmacro{location+institution+date}%添加这一行用于输出地址,单位和时间 - \newunit\newblock%添加这一行 - \iftoggle{bbx:gbstrict}{}{% - \printlist{language}% - \newunit\newblock - \usebibmacro{byeditor}% - \newunit\newblock - \printfield{note}% - \newunit\newblock} - \iftoggle{bbx:isbn} - {\printfield{issn}} - {}% - \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}\usebibmacro{annotation}} - -% -% 专利文献驱动 -% - \DeclareBibliographyDriver{patent}{%源来自standard.BBX - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 - %\usebibmacro{title}% - \usebibmacro{patenttitle}%给出专利专用的标题输出 - \iftoggle{bbx:gbstrict}{}{% - \newunit% - \printlist{language}% - \newunit\newblock - \usebibmacro{byauthor}}% - \newunit\newblock - \printfield{type}% - \setunit*{\addspace}% - %\printfield{number}%已放到patenttitle中处理 - \iflistundef{location} - {} - {\setunit*{\addspace}% - \printtext{%[parens] - \printlist[][-\value{listtotal}]{location}}}% - \newunit\newblock - \usebibmacro{byholder}% - \newunit\newblock - \printfield{note}% - \newunit\newblock - \usebibmacro{newsdate}% - %\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}\usebibmacro{annotation}} - - -% -% 在线文献驱动 -% -\DeclareBibliographyDriver{online}{%源来自standard.BBX - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author/editor+others/translator+others}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 - \usebibmacro{title}% - \iftoggle{bbx:gbstrict}{}{% - \newunit% - \printlist{language}% - \newunit\newblock - \usebibmacro{byauthor}% - \newunit\newblock - \usebibmacro{byeditor+others}% - \newunit\newblock - \printfield{note}}% - \newunit - \printfield{version}% - \newunit\newblock - %\printlist{organization}% - \printlist{institution}% - \newunit\newblock -\ifboolexpr{% -test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}% -}{\usebibmacro{date}}% -{\usebibmacro{modifydate}}%修改或更新日期,为带括号的时间 - \usebibmacro{url+urldate}%从下面移上来 - \newunit\newblock - \iftoggle{bbx:eprint} - {\usebibmacro{eprint}} - {}% - \newunit\newblock - %\usebibmacro{url+urldate}% - %\newunit\newblock - \usebibmacro{addendum+pubstate}% - \setunit{\bibpagerefpunct}\newblock - \usebibmacro{pageref}% - \newunit\newblock - \iftoggle{bbx:related} - {\usebibmacro{related:init}% - \usebibmacro{related}} - {}% - \usebibmacro{finentry}\usebibmacro{annotation}} - - -% -% 报告类型驱动 -% 当有网址无出版项时,用online输出 -% -\DeclareBibliographyDriver{report}{% - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 - \usebibmacro{title}% - \iftoggle{bbx:gbstrict}{}{% - \newunit% - \printlist{language}% - \newunit\newblock - \usebibmacro{byauthor}}% - \newunit\newblock - \usebibmacro{byeditor+others}%增加的译者信息 - \newunit\newblock - \printfield{type}% - \setunit*{\addspace}% - \printfield{number}% - \newunit\newblock - \printfield{version}% - \newunit - \printfield{note}% - \newunit\newblock - \usebibmacro{publisher+location+date}% - %\newunit\newblock - \usebibmacro{chapter+pages}% - \usebibmacro{doi+eprint+url}% - \newunit - \printfield{pagetotal}% - \newunit\newblock - \iftoggle{bbx:isbn} - {\printfield{isrn}} - {}% - \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}\usebibmacro{annotation}} - -% -% 论文、手册类型驱动 -% 2016-11-11,增加了译者信息 -% -\DeclareBibliographyDriver{manual}{% - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 - \usebibmacro{title}% - \iftoggle{bbx:gbstrict}{}{% - \newunit% - \printlist{language}% - \newunit\newblock - \usebibmacro{byauthor}}% - \newunit\newblock - \usebibmacro{byeditor+others}%增加的译者信息 - \newunit\newblock - \iftoggle{bbx:gbfieldtype}{% - \printfield{type}% - \setunit*{\addspace}}{}% - \printfield{number}% - \newunit\newblock - \printfield{version}% - \newunit - \printfield{note}% - \newunit\newblock - \usebibmacro{institution+location+date}% - %\newunit\newblock - \usebibmacro{chapter+pages}% - \iffieldundef{url}{}{%当没有网址时也不输出修改或更新日期 - \usebibmacro{modifydate}}%修改或更新日期为带括号的时间 - \usebibmacro{doi+eprint+url}% - \newunit - \printfield{pagetotal}% - \newunit\newblock - \iftoggle{bbx:isbn} - {\printfield{isrn}} - {}% - \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}\usebibmacro{annotation}} - -% -% 备选类型驱动 -% -% 利用biblatex的misc驱动 -\DeclareBibliographyDriver{misc}{% - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author/editor+others/translator+others}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 - \usebibmacro{title}% -\iftoggle{bbx:gbstrict}{}{% - \newunit - \printlist{language}% - \newunit\newblock - \usebibmacro{byauthor}% - \newunit\newblock - \usebibmacro{byeditor+others}}% - \newunit\newblock - \printfield{howpublished}% - \newunit\newblock - \printfield{type}% - \newunit - \printfield{version}% - \newunit - \printfield{note}% - \newunit\newblock - \usebibmacro{institution+location+date}% - %\usebibmacro{organization+location+date}% - %\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}\usebibmacro{annotation}} - - -% -% 专著中的析出文献的格式修改 -% -\DeclareBibliographyDriver{inbook}{%源来自standard.bbx - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author/translator+others}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 -\usebibmacro{title}% -\usebibmacro{in:}% -%\printtext{\texttt{//}\addthinspace}% - \usebibmacro{bybookauthor}% - \ifnameundef{bookauthor}{% - \ifnameundef{editor}{}{\newunit}% - }{\newunit}%替换下一句 - %\newunit\newblock -\iffieldundef{series}{}{\usebibmacro{series+number}\setunit{\addcolon\addspace}}%为处理一些存在series的情况而增加 - \usebibmacro{maintitle+booktitle}% -\iffieldundef{volume}{}{\setunit{\addcolon\addspace}\printfield{volume}}% -\iffieldundef{number}{}{\setunit{\addcolon\addspace}\printfield{number}}%增加卷和册信息 - \newunit\newblock% -% \usebibmacro{byeditor+others}% -% \newunit\newblock - \printfield{edition}% - \newunit - \iftoggle{bbx:gbstrict}{}{% -% \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 - \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}\usebibmacro{annotation}} +%% +%% --------------------------------------------------------------- +%% biblatex-gb7714-2015 --- A biblatex implementation of the +%% GBT7714-2015 bibliography style,numerical sequence +%% Maintained by huzhenzhen +%% E-mail: hzzmail@163.com +%% Released under the LaTeX Project Public License v1.3c or later +%% --------------------------------------------------------------- +%% + +% +% 版本和时间信息 +% +\def\versionofgbtstyle{2021/01/19 v1.0w} +\def\versionofbiblatex{\abx@version} +\ProvidesFile{gb7714-2015.bbx}[\versionofgbtstyle biblatex bibliography style] +%\RequireBiber[3]%显式指定用biber后端,当用bibtex时会报错,但其实不会影响编译,只是采用bibtex后无法达成格式需求 + +%===================================================================== +% 加载标准样式 +%===================================================================== +\RequireBibliographyStyle{numeric-comp} +\RequirePackage{xstring}%解决texlive2015的biblatex3.0不加载xstring包的问题 + + +%===================================================================== +% 功能函数 +%===================================================================== + % + % biblatex版本判断 + % 20180405,v1.0k,为兼容biblatexv3.11增加toggle:iftlnine,HU zhenzhen + % 20181020,v1.0n,为不再使用xstring宏包做的修改,hzz + % + % 原理方法:当版本继续更新时,增加一个新的toggle用以处理新的旧版,最新版和未判断出来的版本永远用iftlatest + \providetoggle{iftlfive}\togglefalse{iftlfive} %处理biblatex3.2之前版本,时间2016-03-01前 + \providetoggle{iftlsix}\togglefalse{iftlsix} %处理biblatex3.3开始改变姓名机制后版本,时间2016-03-01及以后 + \providetoggle{iftlseven}\togglefalse{iftlseven}%处理biblatex3.7的兼容性,时间2016-12-01后 + \providetoggle{iftleight}\togglefalse{iftleight}%处理biblatex3.8到3.9的兼容性,时间2017-11-01后到2017-12-01前 + \providetoggle{iftlnine}\togglefalse{iftlnine} %处理biblatex10的兼容性,时间2017-12-01后 + \providetoggle{iftlatest}\toggletrue{iftlatest} %假设是最新版biblatex + + \@ifpackagelater{biblatex}{2014/04/01}{ + \@ifpackagelater{biblatex}{2016/03/01}{ + \@ifpackagelater{biblatex}{2016/12/01}{ + \@ifpackagelater{biblatex}{2017/11/01}{ + \@ifpackagelater{biblatex}{2017/12/01}{ + \@ifpackagelater{biblatex}{2018/02/19}{} + {\toggletrue{iftlnine}\togglefalse{iftlatest}}} + {\toggletrue{iftleight}\togglefalse{iftlatest}}} + {\toggletrue{iftlseven}\togglefalse{iftlatest}}} + {\toggletrue{iftlsix}\togglefalse{iftlatest}}} + {\toggletrue{iftlfive}\togglefalse{iftlatest}}} + {\PackageError{biblatex}{Outdated 'biblatex' package} + {Please update biblatex, This is a fatal error.}} + + \newcommand\defversion[2]{\csdef{codeversion#1#2}}%定义不同版本的命令 + \newcommand\switchversion[2]{\csuse{codeversion#1#2}}%使用不同版本的命令 + + % + % 判断CJK字符的函数,用于判断作者等信息是否由中文字符构成 + % v1.0k,20180509,hzz + % + % 原理方法:用biber中的perl方法代替。因为利用tex函数对字符判断时,当字符在宏 + % 中时,基于`的方法无法解决GBK编码的问题,基于CJKsymbol的方法无法解决utf-8 + % 编码用xelatex编译的问题。 + % + % 原理是:利用perl正则将中文标识记录到域中, + % 然后利用\iffieldundef和\iffieldequalstr进行判断 + \providetoggle{ifCJKforgbt} + \def\testCJKfirst#1{% + \iffieldundef{#1}{\togglefalse{ifCJKforgbt}}{% + \iffieldequalstr{#1}{chinese}{\toggletrue{ifCJKforgbt}}{\togglefalse{ifCJKforgbt}}}} + + % + % 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{}}% + } + + % 对没有分隔符环境命令的低版本biblatex做增补,避免报错 + % + \iftoggle{iftlfive}{ + + \def\blx@inf@delimdeclare#1#2{% + \blx@info{Delimiter '#1' in context '#2' already defined, overwriting}} + + \def\blx@warn@delimuse#1#2{% + \blx@warning{Delimiter '#1' in context '#2' undefined}} + % Delimiter interface + + % []{}{} + \newrobustcmd*{\DeclareDelimFormat}{% + \@ifstar + {\blx@declaredelimclear} + {\blx@declaredelim}} + + \newrobustcmd*{\blx@declaredelimclear}[3][]{% + \ifcsvoid{blx@declaredelimcontexts@#2} + {} + {\def\do##1{\csundef{blx@printdelim@##1@#2}}% + \dolistcsloop{blx@declaredelimcontexts@#2}}% + \cslet{blx@declaredelimcontexts@#2}\@empty + \ifblank{#1} + {\blx@declaredelim{#2}{#3}} + {\blx@declaredelim[#1]{#2}{#3}}} + + \newrobustcmd*{\blx@declaredelim}[3][]{% + \ifblank{#1} + {\blx@declaredelim@i{}{}{#2}{#3}} + {\def\do##1{% + \listcsadd{blx@declaredelimcontexts@#2}{##1}% + \blx@declaredelim@i{blx@printdelim@##1@}{##1}{#2}{#3}}% + \docsvlist{#1}}}% + + \def\blx@declaredelim@i#1#2#3#4{% + \def\do@i##1{% + \ifcsdef{#1##1} + {\blx@inf@delimdeclare{##1}{#2}} + {}% + \csdef{#1##1}{#4}}% + \forcsvlist{\do@i}{#3}} + + % *[]{}{} + \newrobustcmd*{\DeclareDelimAlias}{% + \@ifstar + {\blx@declaredelimalias} + {\blx@declaredelimaliasauto}} + + \newrobustcmd*{\blx@declaredelimalias}[3][]{% + \ifblank{#1} + {\blx@declaredelimalias@i{}{#2}{#3}} + {\def\do##1{% + \blx@declaredelimalias@i{blx@printdelim@##1@}{#2}{#3}}% + \docsvlist{#1}}} + + \newrobustcmd*{\blx@declaredelimaliasauto}[2]{% + \blx@declaredelimalias@i{}{#1}{#2}% + \ifcsvoid{blx@declaredelimcontexts@#2} + {} + {\def\do##1{% + \blx@declaredelimalias@i{blx@printdelim@##1@}{#1}{#2}}% + \dolistcsloop{blx@declaredelimcontexts@#2}}} + + \def\blx@declaredelimalias@i#1#2#3{% + \ifcsdef{#1#2} + {\blx@inf@delimdeclare{#2}{#1}} + {}% + \csdef{#1#2}{\csuse{#1#3}}} + + \def\blx@delimcontext{none} + \newcommand*{\printdelim}[2][]{% + \ifblank{#1} + {\ifcsdef{blx@printdelim@\blx@delimcontext @#2} + {\csuse{blx@printdelim@\blx@delimcontext @#2}} + {\ifcsdef{#2}% fall back on legacy macros + {\csuse{#2}} + {\blx@warn@delimuse{#2}{*}}}} + {\ifcsdef{blx@printdelim@#1@#2} + {\csuse{blx@printdelim@#1@#2}} + {\blx@warn@delimuse{#2}{#1}}}} + + \newcommand*{\delimcontext}[1]{% + \edef\blx@delimcontext{\blx@delimcontextalias{#1}}} + + \def\blx@delimcontextalias#1{% + \ifcsdef{blx@delimcontextalias@#1} + {\csuse{blx@delimcontextalias@#1}} + {#1}} + + \newcommand*{\DeclareDelimcontextAlias}[2]{% + \csgdef{blx@delimcontextalias@#1}{#2}} + }{} + + +%===================================================================== +% 数据模型定义 +%===================================================================== + %定义类型和载体标识,从gb内容看载体基本属于介质。 + %为与lee zeping的bst的样式统一,使用mark和medium这两域名 + %为单个条目的姓名格式控制增加nameformat和namefmtid两个域 + %为缩略信息文献表增加了shortbooktitle域 + %为多语言排序增加了lansortorder域 + \DeclareDatamodelFields[type=field,datatype=literal]{mark,medium,nameformat} + \DeclareDatamodelFields[type=field,datatype=integer]{namefmtid} + \DeclareDatamodelFields[type=field,datatype=literal]{shortbooktitle} + \DeclareDatamodelFields[type=field,datatype=literal]{lansortorder} + + %因为biblatex更新3.14版本以后,biber对于为声明数据模型的条目类型 + %不再默认读取,而是以空字符串作为条目类型名,自然在条目定义alias时 + %就会出现问题,因此显式的声明一下newspaper,然后保留后面采用alias的方式 + %而standard类型则是采用另一种方式直接在sourcemap中转换为其它类型。 + \@ifpackagelater{biblatex}{2019/11/30}{%2019/12/01 v3.14 + \DeclareDatamodelEntrytypes{newspaper}% + }{} + + + +%===================================================================== +% 设置宏包选项 +%===================================================================== + % + % 增加一个控制是否输出文献载体的选项 + % 20191125,v1,0s,hzz + \newtoggle{bbx:gbmedium} + \DeclareBibliographyOption{gbmedium}[true]{%biblatex低版本 + \settoggle{bbx:gbmedium}{#1}} + \ExecuteBibliographyOptions{gbmedium} + + % + % 增加一个控制是否输出annotation域的选项,该域可以用于在文献条目后面输出一些注释信息 + % 20190509,v1,0s,hzz + \newtoggle{bbx:gbannote} + \DeclareBibliographyOption{gbannote}[false]{%biblatex低版本 + \settoggle{bbx:gbannote}{#1}} + \ExecuteBibliographyOptions{gbannote} + % + %用于在文献条目后面输出注释信息的宏 + %FieldFormat{annotation}用于设置注释信息的格式 + \DeclareFieldFormat{annotation}{% + \printtext{\addspace(#1)}% + } + \renewbibmacro*{annotation}{% + \iftoggle{bbx:gbannote}% + {\iffieldundef{annotation}% + {\printfile[annotation]{\bibannotationprefix\thefield{entrykey}.tex}}% + {\printfield{annotation}}}% + {}% + } + + % + % 增加一个控制是否输出type域的选项 + % 20190212,v1,0q,hzz + \newtoggle{bbx:gbfieldtype} + \DeclareBibliographyOption{gbfieldtype}[false]{%biblatex低版本 + \settoggle{bbx:gbfieldtype}{#1}} + \ExecuteBibliographyOptions{gbfieldtype} + + % + % 增加一个控制是否根据页码重设脚注数字标号的选项 + % 20190422,v1,0r,hzz + \newtoggle{bbx:gbfnperpage} + \DeclareBibliographyOption{gbfnperpage}[false]{% + \settoggle{bbx:gbfnperpage}{#1}} + \ExecuteBibliographyOptions{gbfnperpage} + + + % + % 增加一个选项,用于控制是否实现GB/T 7714-2015标准的脚注文献表 + % 20190203,v1.0p,hzz + % 原理方法:默认做patch,文献引用带圈上标数字表示,脚注中的文献用带圈非上标数字做标签 + % 当前面的脚注中已经存在当前文献,那么当前文献内容不再输出而用同(4)这样的方式 + % 需要注意的是由于小页环境和表格中的脚注本身的问题,可能会有一些问题 + \DeclareBibliographyOption{gbfootbib}[false]{% + \ifstrequal{#1}{false}{}{\execgbfootbib}} + \ExecuteBibliographyOptions{gbfootbib} + + %% + \newlength{\footbibmargin} + \newlength{\footbiblabelsep} + \setlength{\footbibmargin}{1em}%脚注的段落左侧缩进距离 + \setlength{\footbiblabelsep}{0.5em}%脚注中标记号与脚注段落的间距 + \def\execgbfootbib% + {% + %开启引用跟踪计数器,为使用\ifciteseen等测试命令 + \ExecuteBibliographyOptions{citetracker=true} + % + %利用footmisc宏包来实现脚注文献的悬挂对齐 + \AtEndPreamble{ + \@ifclassloaded{beamer}{}{ + %beamer类因为其特殊性,为避免冲突不调footmisc。 + %同时footmisc与hyperref宏包也不兼容,所以使用footmisc时会破坏脚注的超链接 + %如果要实现超链接可以将下句注释掉,这里留着主要是实现悬挂对齐。 + %\PassOptionsToPackage{perpage,hang}{footmisc}% + %\RequirePackage{footmisc}% + + %重新实现脚注的根据单页重设脚注号码 + %重新实现脚注的悬挂对齐问题,不再使用footmisc,直接从latex核心代码和hyperref代码进行修改 + %v1.0q 20190317 hzz + %v1.0r 20190422 hzz 根据gbfnperpage选项设置 + \iftoggle{bbx:gbfnperpage}% + {\@addtoreset{footnote}{page}}{}%重设计数器 + +\@ifpackageloaded{hyperref}{%加载hyperref则对\H@@footnotetext做重定义 + \long\def\H@@footnotetext##1{\insert\footins{% + \reset@font\footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox \floatingpenalty \@MM + \hsize\columnwidth \@parboxrestore + \protected@edef\@currentlabel{% + \csname p@footnote\endcsname\@thefnmark + }% + \color@begingroup + \leftskip \footbibmargin%增加的左侧缩进 + \@makefntext{% + \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox% + }% + \color@endgroup}}% + + \long\def\H@@mpfootnotetext##1{% + \global\setbox\@mpfootins\vbox{% + \unvbox\@mpfootins + \reset@font\footnotesize + \hsize\columnwidth + \@parboxrestore + \protected@edef\@currentlabel + {\csname p@mpfootnote\endcsname\@thefnmark}% + \leftskip \footbibmargin%增加的左侧缩进 + \color@begingroup + \@makefntext{% + \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox}% + \color@endgroup}} + }{%否则对latex核心代码中的\@footnotetext做重定义 + \long\def\@footnotetext##1{\insert\footins{% + \reset@font\footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox \floatingpenalty \@MM + \hsize\columnwidth \@parboxrestore + \protected@edef\@currentlabel{% + \csname p@footnote\endcsname\@thefnmark + }% + \color@begingroup + \leftskip \footbibmargin%增加的左侧缩进 + \@makefntext{% + \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox% + }% + \color@endgroup}}% + + \long\def\@mpfootnotetext##1{% + \global\setbox\@mpfootins\vbox{% + \unvbox\@mpfootins + \reset@font\footnotesize + \hsize\columnwidth + \@parboxrestore + \protected@edef\@currentlabel + {\csname p@mpfootnote\endcsname\@thefnmark}% + \leftskip \footbibmargin%增加的左侧缩进 + \color@begingroup + \@makefntext{% + \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox}% + \color@endgroup}} + } + + \long\def\@makefntext##1{%增加了脚注标记与正文的间隔 + \parindent 1em\noindent \hb@xt@ 0em{\hss \@makefnmark\makebox[\footbiblabelsep]{}}##1} + + } + + % + %使脚注标记加圈并设置数字的字体为tiny,不使用修改thefootnote的方式 + \def\@makefnmark{\hbox{\@textsuperscript{\textcircled{\tiny\@thefnmark}}}} + %做patch使得脚注内容中的脚注数字标签不上标 + \pretocmd{\@makefntext}{% + \def\@makefnmark{% + \hbox{\textcircled{\tiny\@thefnmark}}% + }% + }{}{} + } + + % + %判断当前文献是否已经引用过且是做的footfullcite(即已经作为脚注输出文献内容) + %记录首次输出时的脚注号码,用于后面再次引用该文献时的输出,比如同(4)。 + %v1.0q 20190309 区分使脚注标注适应minipage中的情况 + \newbibmacro*{citesavefn}{% + \ifciteseen%当被引用过为true + {\ifcsdef{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}%当已经定义过脚注序号信息 + {\csgdef{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}{% + \str@sameentry\gdef\@thefnmark{\csuse{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}}% + \@makefnmark% + }}% + {\csxdef{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}{% + \ifcsstring{@mpfn}{mpfootnote}{\@alph\c@mpfootnote}{\thefootnote}% + }}% + }% + {\csxdef{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}{% + \ifcsstring{@mpfn}{mpfootnote}{\@alph\c@mpfootnote}{\thefootnote}% + %判断在minipage中比较麻烦,这里使用\@mpfn的定义进行判断 + }}% + } + + % + %重定义\footfullcite使完成gb7714-2015的脚注文献要求 + \DeclareCiteCommand{\footfullcite}[\mkbibfootnote]% + {\defcounter{maxnames}{\blx@maxbibnames}%局部定义maxnames和minnames计数器 + \defcounter{minnames}{\blx@minbibnames}%使footfullcite内的作者输出与正文文献表中的一致。 + \usebibmacro{prenote}% + \renewbibmacro*{postnote}{% + \iffieldundef{postnote}% + {}{\setunit{\addcolon\addspace}\printfield{postnote}}}%与ay样式不同,由于已修改postnote域格式,直接用printfield + }% + {\usebibmacro{citesavefn}% + \ifcsdef{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}% + {\csuse{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}}%\nopunct + {\usedriver{\DeclareNameAlias{sortname}{default}}{\thefield{entrytype}}}% + }% + {\multicitedelim}% + {\usebibmacro{postnote}} + + } + + % + % 增加一个选项,用于控制gb7714的使用范围,即英文文献和中文文献使用不同的样式 + % 20180814,v1.0m,hzz + % 原理方法: + % 只为兼容性考虑不做任何处理 + \DeclareBibliographyOption{gbstyle}[true]{%biblatex低版本 + } + + % + % 增加一个控制是否输出文献类型和载体标识的选项 + % + % 原理方法: + % 对于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时可以使用GBK编码。 + % v1.0k, 2018.05.08, by hzz + % + % 原理方法:将需要输出的中文字符串用命令形式表示存储,采用utf8编码时采用bbx文档 + % 内的定义即是utf8编码的中文字符串,但tex源文件是gbk编码时,利用gb7714-2015-gbk.def + % 文档内的gbk编码的字符串覆盖。这种覆盖只能在宏包末尾加载时成功实现,所以使用 + % AtEndOfPackage。该解决思路源自biblatex-caspervector宏包。 + % 另外注意: + % gbk编码的tex文档,利用pdflatex/latex能正确编译,利用xelatex能编译,但中文显示乱码 + % 在源文档前面增加 XeTeX 原语:\XeTeXinputencoding "GBK" 后,显示正常 + % utf-8编码的tex文档,利用xelatex能正确编译,而pdflatex/latex不能编译。 + \newtoggle{bbx:codegbk} + \DeclareBibliographyOption{gbcodegbk}[false]{% + \settoggle{bbx:codegbk}{#1}} + \ExecuteBibliographyOptions{gbcodegbk} + + \def\str@bibliography{参考文献} + \def\str@references{参考文献} + \def\str@bytranslator{译} + \def\str@andotherscn{等} + \def\str@andcn{和} + \def\str@backrefpage{引用页} + \def\str@backrefpages{引用页} + \def\str@noaddress{出版地不详} + \def\str@nopublisher{出版者不详} + \def\str@edition{版} + \def\str@volumecn{卷} + \def\str@numbercn{册} + \def\str@serialcn{第} + \def\str@sameentry{同} + \def\str@incn{见} + \def\str@mathesiscn{硕士学位论文} + \def\str@phdthesiscn{博士学位论文} + \def\str@editorcn{主编} + + \AtEndOfPackage{% + \iftoggle{bbx:codegbk}{% + \ExecuteBibliographyOptions{texencoding = GBK} + \input{gb7714-2015-gbk.def} + }{}} + + % + % 增加一个严格按GB/T 7714-2015给出著录格式控制域的输出的选项 + % v1.0k, 2018.05.08, by hzz + % + % 原理方法: + % 默认设置该选项为真,进而不输出GB/T 7714-2015中没有的域的信息 + % 这样可以避免因为bib文件带有多余的域的信息的输出,比如因为bibtex样式 + % 可能需要用于中英文判断的language域的信息。 + \newtoggle{bbx:gbstrict} + \DeclareBibliographyOption{gbstrict}[true]{% + \settoggle{bbx:gbstrict}{#1}} + \ExecuteBibliographyOptions{gbstrict} + + % + % 增加一个控制标题域超链接设置的选项 + % v1.0k, 2018.05.24, by hzz + % + % 原理方法: + % 利用标题域格式来实现,默认设置该选项为false,不做超链接。 + % 设置为true,则标题设置超链接 + \newtoggle{bbx:titlelink} + \DeclareBibliographyOption{gbtitlelink}[false]{% + \settoggle{bbx:titlelink}{#1}} + \ExecuteBibliographyOptions{gbtitlelink} + + % + % 增加一个控制参考文献标题是否能够被ctex宏包设置的选项 + % v1.0l, 2018.07.02, by hzz + % + % 原理方法: + % 重定义biblatex的宏,去除使用本地化字符串的方式,是的可以利用ctexset进行设置 + \newtoggle{bbx:ctexset} + \DeclareBibliographyOption{gbctexset}[true]{% + \settoggle{bbx:ctexset}{#1}} + \ExecuteBibliographyOptions{gbctexset} + + \AtEndOfPackage{% + \iftoggle{bbx:ctexset}{% + \def\blx@defbibstrings#1#2{% + \def\do##1{\csundef{abx@lstr@##1}\csundef{abx@sstr@##1}}% + \abx@dostrings + \csuse{abx@strings@#1}% + \setkeys{blx@lbx}{#2}% + \let\do\blx@defbibstrings@i + \csxdef{abx@strings@#1}{\abx@dostrings}% + } + }{}} + + % + % 增加一个处理佚名或noauthor的控制选项 + % + % 原理方法:在顺序编码制中不需要使用,为与作者年制的兼容性考虑,这里也增加避免报错 + \DeclareBibliographyOption{gbnoauthor}[true]{}% + + + % + % 增加一个恢复域格式为标准样式的控制选项 + % v1.0k, 2018.05.15, by hzz + % + % 原理方法: + % 默认设置该选项为false,采用国标要求的域格式输出相关域 + % 当设置该选项为true时,则重新利用标准样式的域格式输出相关的域 + \newtoggle{bbx:gbfieldstd} + \DeclareBibliographyOption{gbfieldstd}[false]{% + \settoggle{bbx:gbfieldstd}{#1}% + \ifstrequal{#1}{false}{}{\execgbfdfmtstd}% + } + \ExecuteBibliographyOptions{gbfieldstd} + + % + % 增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 + % + \newtoggle{bbx:gbpub} + \DeclareBibliographyOption{gbpub}[true]{% + %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 + \ifstrequal{#1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} + \ExecuteBibliographyOptions{gbpub} + + % + % 增加控制析出文献来源前的标点符号//输出的选项 + % v1.0k, 2018.04.20,added in by hzz + \newtoggle{bbx:gbpunctin} + \DeclareBibliographyOption{gbpunctin}[true]{% + \settoggle{bbx:gbpunctin}{#1}} + \ExecuteBibliographyOptions{gbpunctin} + + + + + + % + % 选项设置 + % + \ExecuteBibliographyOptions{ + sorting=none, + useprefix=true, %名字的信息包括前缀 + date = year, %日期仅写到年 + maxbibnames = 3,%设置名字最大数量 + minbibnames = 3, %设置缩减后的名字最小数量 + maxitems = 1,%设置列表最大数量 + minitems = 1, %设置缩减后的列表最小数量 + isbn=false, + } + + % + %为日期相关选项增加选项值gb7714-2015 + % + \csdef{mkdaterangegb7714-2015}#1{% + \begingroup + \blx@metadateinfo{#1}% + \iffieldundef{#1year} + {} + {\printtext[#1date]{% + \blx@gbdate{#1}{}}}% + \endgroup} + + \newrobustcmd*{\blx@gbdate}[3][]{% + \dateeraprintpre{#2#3year}% + \blx@imc@forcezerosy{\thefield{#2#3year}}\ifblank{#1}{}{\printfield{#1}}% + \iffieldundef{#2#3month}{}{\hyphen\blx@imc@forcezerosmdt{\thefield{#2#3month}}}% + \iffieldundef{#2#3day}{}{\hyphen\blx@imc@forcezerosmdt{\thefield{#2#3day}}}} + + + %为姓名格式选择增加的计数器 + \newcounter{gbnamefmtcase} + \def\thegbnamefmtcase{\the\c@gbnamefmtcase} + %为数字标签格式选择增加的计数器/命令 + \newcommand{\mkgbnumlabel}[1]{\mkbibbrackets{#1}} + \def\gbbiblabelopt@bracket{\renewcommand{\mkgbnumlabel}[1]{\mkbibbrackets{##1}}} + \def\gbbiblabelopt@parens{\renewcommand{\mkgbnumlabel}[1]{\mkbibparens{##1}}} + \def\gbbiblabelopt@dot{\renewcommand{\mkgbnumlabel}[1]{##1\adddot}} + \def\gbbiblabelopt@plain{\renewcommand{\mkgbnumlabel}[1]{##1}} + \def\gbbiblabelopt@box{\renewcommand{\mkgbnumlabel}[1]{\framebox{##1}}} + \def\gbbiblabelopt@circle{\renewcommand{\mkgbnumlabel}[1]{\textcircled{##1}}} + %为文献表中数字标签对齐方式选择增加的计数器/命令 + \newcounter{gbalignlabel} + \def\thegbalignlabel{\the\c@gbalignlabel} + %为引用标签标注/文献表中本地化字符串中英文选择增加的计数器/命令 + \newcounter{gbcitelocalcase} + \newcounter{gbbiblocalcase} + \def\thegbcitelocalcase{\the\c@gbcitelocalcase} + \def\thegbbiblocalcase{\the\c@gbbiblocalcase} + +\@ifpackagelater{biblatex}{2016/03/27} + { % 针对biblatex>=3.3版本的选项设置 + % 增加不同语言排序的切换选项 + % numeric样式,不使用该选项,这里给出仅为兼容性考虑 + % v1.0q,20190307,hzz + % + % 增加不同语言排序的切换选项 + % gblanorder=chineseahead的顺序为cn,jp,kr,en,fr,ru + % gblanorder=englishahead的顺序为en,fr,ru,cn,jp,kr + % gblanorder=cn;en;ru;fr;jp;kr的顺序为指定的cn;en;ru;fr;jp;kr,自定义内容可以随意写以分号分隔 + % v1.0q,20190307,hzz + % + \DeclareBibliographyOption[string]{gblanorder}[chineseahead]{% + \ifstrequal{#1}{chineseahead}%%中文在前的顺序 + {\gdef\lancnorder{1}\gdef\lanjporder{2}\gdef\lankrorder{3}% + \gdef\lanenorder{4}\gdef\lanfrorder{5}\gdef\lanruorder{6}}% + {% + \ifstrequal{#1}{englishahead}% + {\execlanodeah\dealsortlan}% + {\execlanodudf{#1}\dealsortlan}% + }% + } + \ExecuteBibliographyOptions{gblanorder} + + \def\execlanodeah{%中文在后的顺序 + \gdef\lancnorder{4} + \gdef\lanjporder{5} + \gdef\lankrorder{6} + \gdef\lanenorder{1} + \gdef\lanfrorder{2} + \gdef\lanruorder{3}} + + \newcounter{lanordernum} + \newcommand{\execlanodudf}[1]{%like:cn;en;ru;fr;jp;kr + \setcounter{lanordernum}{0} + \DeclareListParser{\parsinglanorder}{;} + \renewcommand*{\do}[1]{\stepcounter{lanordernum}\csxdef{lan##1order}{\thelanordernum}} + \parsinglanorder{#1} + } + + % + % 增加本地化字符串的中英文切换选项 + % gbcitelocal指标注中的本地化字符串 + % gbbiblocal 指文献表中的本地化字符串 + % gblocal 指设置文献表和标注中的本地化字符串 + % v1.0o,20190103,hzz + % + \DeclareBibliographyOption[string]{gbcitelocal}[gb7714-2015]{% + \ifstrequal{#1}{gb7714-2015}{\setcounter{gbcitelocalcase}{0}}{}% + \ifstrequal{#1}{chinese}{\setcounter{gbcitelocalcase}{1}}{}% + \ifstrequal{#1}{english}{\setcounter{gbcitelocalcase}{2}}{}% + } + \ExecuteBibliographyOptions{gbcitelocal} + + \DeclareBibliographyOption[string]{gbbiblocal}[gb7714-2015]{% + \ifstrequal{#1}{gb7714-2015}{\setcounter{gbbiblocalcase}{0}}{}% + \ifstrequal{#1}{chinese}{\setcounter{gbbiblocalcase}{1}}{}% + \ifstrequal{#1}{english}{\setcounter{gbbiblocalcase}{2}}{}% + } + \ExecuteBibliographyOptions{gbbiblocal} + + \DeclareBibliographyOption[string]{gblocal}[gb7714-2015]{% + \ExecuteBibliographyOptions{gbbiblocal=#1}% + \ExecuteBibliographyOptions{gbcitelocal=#1}% + } + %\ExecuteBibliographyOptions{gblocal} %默认值已经通过两个相关选项设置 + + % + % 增加序号标签格式处理选项 + % v1.0l,20180623,hzz + % + \DeclareBibliographyOption[string]{gbbiblabel}[bracket]{% + \csuse{gbbiblabelopt@#1} + } + \ExecuteBibliographyOptions{gbbiblabel} + + % + % 增加姓名大小写格式处理选项 + % + \DeclareBibliographyOption[string]{gbnamefmt}[uppercase]{% + \ifstrequal{#1}{uppercase}{\setcounter{gbnamefmtcase}{0}}{}% + \ifstrequal{#1}{lowercase}{\setcounter{gbnamefmtcase}{1}}{}% + \ifstrequal{#1}{givenahead}{\setcounter{gbnamefmtcase}{2}}{}%given-family + \ifstrequal{#1}{familyahead}{\setcounter{gbnamefmtcase}{3}}{} + \ifstrequal{#1}{pinyin}{\setcounter{gbnamefmtcase}{4}}{}%family-given + \ifstrequal{#1}{reverseorder}{\setcounter{gbnamefmtcase}{5}}{}%family-given/given-family + } + \ExecuteBibliographyOptions{gbnamefmt} + + % + % 增加标签对齐选项 + % + % right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 + \DeclareBibliographyOption[string]{gbalign}[right]{% + \ifstrequal{#1}{right}{\setcounter{gbalignlabel}{0}}{} + \ifstrequal{#1}{left}{\setcounter{gbalignlabel}{1}}{} + \ifstrequal{#1}{center}{\setcounter{gbalignlabel}{2}}{} + \ifstrequal{#1}{gb7714-2015}{\setaligngbstyle}{} + } + } + {% 针对biblatex<3.3版本的选项设置 + % 增加不同语言排序的切换选项 + % numeric样式, biblatex 3.4及以下版本不能使用多个stylesourcemap,所以不使用该选项 + % v1.0q,20190307,hzz + % + \DeclareBibliographyOption{gblanorder}[chineseahead]{} + + % + % 增加序号标签格式处理选项 + % v1.0l,20180623,hzz + % + \DeclareBibliographyOption{gbbiblabel}[bracket]{% + \csuse{gbbiblabelopt@#1} + } + \ExecuteBibliographyOptions{gbbiblabel} + + % + % 增加姓名大小写格式处理选项 + % + \DeclareBibliographyOption{gbnamefmt}[uppercase]{% + \ifstrequal{#1}{uppercase}{\setcounter{gbnamefmtcase}{0}}{}% + \ifstrequal{#1}{lowercase}{\setcounter{gbnamefmtcase}{1}}{}% + \ifstrequal{#1}{givenahead}{\setcounter{gbnamefmtcase}{2}}{}%given-family + \ifstrequal{#1}{familyahead}{\setcounter{gbnamefmtcase}{3}}{} + \ifstrequal{#1}{pinyin}{\setcounter{gbnamefmtcase}{4}}{}%family-given + \ifstrequal{#1}{reverseorder}{\setcounter{gbnamefmtcase}{5}}{}%family-given/given-family + } + \ExecuteBibliographyOptions{gbnamefmt} + + % + % 增加标签对齐选项 + % + % 原理方法:right是默认的右对齐,left是左对齐,gb7714-2015无效,仍然为右对齐模式, + % 因为在这种biblatex低版本中,舍弃了list类环境后,会出错。 + % 注意:texlive2015中的3.0版中的DeclareBibliographyOption选项没有类型说明 + \DeclareBibliographyOption{gbalign}[right]{% + \ifstrequal{#1}{right}{\setcounter{gbalignlabel}{0}}{} + \ifstrequal{#1}{left}{\setcounter{gbalignlabel}{1}}{} + \ifstrequal{#1}{center}{\setcounter{gbalignlabel}{2}}{} + \ifstrequal{#1}{gb7714-2015}{}{} + } + } + + +% +% 针对biblatex<3.3版本的选项设置,比如texlive2015中的3.0版 +% +\defversion{3.0}{opt}{ + \ExecuteBibliographyOptions{ + firstinits=true, %名字有缩写,参考3.1.2.3 Internal + } +} +% +% 针对3.3<=biblatex<3.5版本的选项设置,比如texlive2016中的3.4版 +% +\defversion{3.4}{opt}{ + \ExecuteBibliographyOptions{ + giveninits=true, %名字有缩写,参考3.1.2.3 Internal + } +} +% +% 针对3.7<=biblatex<=3.9版本的选项设置,比如texlive2017中的3.7版 +% +\defversion{3.7}{opt}{ + \ExecuteBibliographyOptions{ + giveninits=true, + urldate =edtf, %iso8601 + eventdate =edtf, + } +} +% +% 针对3.10<=biblatex版本的选项设置,比如texlive2018中的3.11版 +% +\defversion{3.10}{opt}{ + \ExecuteBibliographyOptions{ + giveninits=true, + urldate =gb7714-2015, %iso,iso8601,edtf + eventdate =gb7714-2015, + } +} + +% +% 根据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{andothersincitecn} + \NewBibliographyString{andothersincite} + \NewBibliographyString{andcn} + \NewBibliographyString{andothersjp} + \NewBibliographyString{andotherskr} + \NewBibliographyString{andjp} + \NewBibliographyString{andkr} + \NewBibliographyString{andincitecn} + \NewBibliographyString{andincite} + \NewBibliographyString{volumecn} + \NewBibliographyString{numbercn} + \NewBibliographyString{serialcn} + \NewBibliographyString{incn} + \NewBibliographyString{mathesiscn} + \NewBibliographyString{phdthesiscn} + \NewBibliographyString{editorcn} + \NewBibliographyString{editorscn} + + + + % + % 修改一些当地化字符串 + % + % 原理方法:直接利用当地化格式english修改出一些中文的格式,具体修改内容参考english.lbx文件 + % 当然也可以增加比如上面定义的andotherscn + % 注意:在lbx文件和bbx文件中定义本地字符串的不同语法,两个参数和一个参数的区别 + + \DefineBibliographyStrings{english}{ + bibliography = {\str@bibliography}, + references = {\str@references}, + bytranslator= {\str@bytranslator},%\addperiod,%将trans. by 改成 译\addcomma\ + and = {\addcomma},%将第2和3人名间的and符号改成逗号,用\finalnamedelim命令也可以定义,参见3.9.1节 + andcn = {\addcomma},%and本地化字符串的中文对应词 + andincitecn = {\str@andcn},%将标注中的分开,便于与文献表中的区分 + andincite = {\addcomma}, + %andothers = {et al.},%将超过3个人名的省略,et al.改成为 等 + andotherscn = {\str@andotherscn},%将超过3个人名的省略,et al.改成为 等 + andothersincitecn={\str@andotherscn},%将标注中的分开,便于与文献表中的区分 + andothersincite={et al\adddot}, + backrefpage = {\str@backrefpage:}, + backrefpages = {\str@backrefpages:}, + in={in\intitlepunct}, + volumecn={\str@volumecn}, + numbercn={\str@numbercn}, + serialcn={\str@serialcn}, + andothersjp={他}, + andotherskr={외}, + andjp={和}, + andkr={和}, + incn={\str@incn\addcolon\addspace}, + mathesiscn={\str@mathesiscn}, + phdthesiscn={\str@phdthesiscn}, + editorscn={\str@editorcn}, + editorcn={\str@editorcn}, +} + + % + % 增加两个命令用于临时的局部的修改本地化字符串 + % 其中\setlocalbibstring修改缩写字符串,setlocalbiblstring修改长字符串 + % 注意使用时因为是局部修改,因此要将其与需要修改的引用命令放在一个编组符号内 + % v1.0t,hzz,20190525 + \newcommand{\setlocalbibstring}[2]{% + \csdef{abx@sstr@#1}{#2}} + \newcommand{\setlocalbiblstring}[2]{% + \csdef{abx@lstr@#1}{#2}} + +%===================================================================== +% 动态数据修改 +%===================================================================== +% +% 各层次的数据映射和动态修改 +% +% 原理方法: +% 1. 进行语言包括中英文判断,并设置和记录,比如记录到userf,usere中 +% 2. 增加文献标识符如[M],[J]等,对一些容易混淆的域进行设置以增强兼容性 +% 3. \DeclareSourcemap命令对于biblatex3.11以下版本只能出现一次,3.11版开始支持多个 +% 4. \DeclarestyleSourcemap在biblatex v3.7版开始可以支持出现多次 +% 5. 把作者和译者信息准确的记录到userf,usere中,用于后面判断是否是cjk字符。 +% 注意:这里用userf,usere而不是namee,namef,是因为只有把name列表转成域,才能有效读取姓名中的字符, +% 如果用namee,namef,name信息会自动解析,所以就不能为cjk判断提供需要的信息 +% +% 不同的文献类型使用相同的驱动输出可以有5种方法: +% 1. 是数据源层的映射,将其它类型转换为某一要使用驱动的类型 +% 2. 是样式层映射,也是将其它类型转换为某一要使用驱动的类型 +% 3. 是驱动层映射,也是将其它类型转换为某一要使用驱动的类型 +% 4. 定义驱动类型别名DeclareBibliographyAlias,将其它类型定义为某一要使用驱动的类型的别名 +% 驱动别名定义本质上是做了驱动层映射 +% 5. 直接定义不同的类型的驱动,但驱动内容相同。 +% +% 关于数据映射和驱动使用的考虑如下: +% 1. 为避免利用biber输出bib文件时的数据变动,尽量不在数据源层映射做类型转换 +% 2. 为减少代码量,尽量少做内容相同的不同类型驱动 +% 3. 因此类型相关的处理主要在样式层映射、驱动层映射、驱动别名 +% 4. 由于biblatex默认做的驱动别名处理可能增加一些信息比如masterthesis转thesis时增加的type +% 可以在样式层映射做某些需要避免这种默认处置的转换 +% 5. 当没有避免默认行为的需求时,全部采用驱动别名的方式处理,等价于驱动层的映射 +% +% 文献类型和驱动考虑如下: +% 1. 连续出版物及析出文献有其特殊性,因此考虑两类periodical和article +% newpaper映射为article,并以note域做区分特殊处理 +% 2. 专著和专著中的析出文献是主要的类型,因此考虑book和inbook +% standard映射为book或inbook,并以note域做区分特殊处理 +% collection和proceedings基本与book类似,因此做book驱动别名处理 +% incollection和inproceedings基本与inbook类似,因此做inbook驱动别名处理 +% 3. 专利类型有其特殊性,考虑patent类型 +% 4. 电子资源类型有其特殊性,考虑online类型 +% 5. 报告类型与book有点类似,出版项处理与book一样,但有时又要有修改和更新日期 +% 因此考虑用一种类型来输出,使用report类型 +% 6. 手册/学位论文等类型与book有点类似,但对于出版项处理时,有缺省时,直接省略, +% 同时有version和edition的区别,因此考虑用一种类型来输出,使用manual类型 +% 7. 包括报告,学位论文在内的其它所有的类型,都做一个判断,当没有出版项时, +% 且存在网址信息时,将其转换为online类型输出,否则都做为manual类型输出。 +% 8. 备选类型misc当存在网址时直接转换为online,由于howpublished域可用于描述 +% 更多的信息,因此不存在网址时,独立做一个备选格式 +% 9. 出版项主要以如下方式处理: +% (a) location+institution+date 仅用于连续出版物 +% (b)publisher+location+date 用于需要完整输出出版项的类型,比如book,collection,proceedings,in*,report +% (c)institution+location+date 用于出版项缺失时不输出的类型,包括manual,thesis,archive等其他类型 +% (d)printlist{insitution} 用于电子资源,仅输出出版者或组织,为数据映射方便,本来默认的organization域转换为用insitution输出。 +% (e) 不输出,主要用于连续出版物析出的文献 +% 10. 日期以如下方式处理: +% date 由于存在biblatex选项,因此通过选项控制,数据源为date解析数据或year +% urldate 由于存在biblatex选项,因此通过选项控制,输出到日,且用[]包围,数据源为urldate +% newsdate 用于公告日期,公开日期或新闻日期,输出到日,但无包围符号,数据源为date +% modifydate 用于更新或修改日期,输出到日,且用()包围,数据源为date或enddate或eventdate + + +\DeclareSourcemap{ +\maps[datatype=bibtex]{% + \map{%当没有作者时将editor转成author + \pernottype{inbook}%因为in系列中editor可能用来表示bookauthor,所以排除 + \pernottype{inproceedings} + \pernottype{incollection} + \pernottype{periodical}%因为peridical直接使用editor,所以排除 + %注意notfield在低版本biblatex中没有 + %\step[notfield=author,final]%当author不存在,将editor复制给author + \step[fieldsource=editor,fieldtarget=author]%并删除editor + } + \map{%当没有作者时将translator转成author + \pernottype{inbook} + \pernottype{inproceedings} + \pernottype{incollection} + %\step[notfield=author,final]%当author不存在,将translator复制给author + \step[fieldsource=translator,fieldtarget=author]%并删除translator + } + \map{%让address和location同步,biblatex中address是location的别名 + %因此输出的时候只有location信息,但处理过程中是可以存在address的。 + %\step[notfield=address,final] + \step[fieldsource=location,final] + \step[fieldset=address,origfieldval] + } + \map{%让address和location同步 + %\step[notfield=location,final] + \step[fieldsource=address,final] + \step[fieldset=location,origfieldval] + } + \map{%处理在bib文件用mark标记文献类型标识符的情况 + \step[fieldsource=mark,final] + \step[fieldset=usera, origfieldval] + } + \map{%处理在bib文件中直接给出文献的姓名格式为lowercase的情况 + \step[fieldsource=nameformat,match=lowercase,final] + \step[fieldset=namefmtid,fieldvalue={1}] + } + \map{%处理在bib文件中直接给出文献的姓名格式为givenahead的情况 + \step[fieldsource=nameformat,match=givenahead,final] + \step[fieldset=namefmtid,fieldvalue={2}] + } + \map{%处理在bib文件中直接给出文献的姓名格式为familyahead的情况 + \step[fieldsource=nameformat,match=familyahead,final] + \step[fieldset=namefmtid,fieldvalue={3}] + } + \map{%处理在bib文件中直接给出文献的姓名格式为pinyin的情况 + \step[fieldsource=nameformat,match=pinyin,final] + \step[fieldset=namefmtid,fieldvalue={4}] + } + \map{%根据article确定文献类型标识符 + \pertype{article} + \step[fieldset=usera, fieldvalue={J}] + } + \map{%根据periodical确定文献类型标识符 + \pertype{periodical} + \step[fieldset=usera, fieldvalue={J}] + \step[fieldsource=author] %有时会把author和editor混淆,处理后使用editor + \step[fieldset=editor, origfieldval] + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{%根据增加一个新闻报纸的类型newspaper确定文献类型标识符 + \pertype{newspaper} + \step[fieldset=usera, fieldvalue={N}] + \step[fieldset=note, fieldvalue=news]%因为没有专门的驱动,记录note方便映射为article后判断 + } + \map{%对应增加的一个数据库类型database确定文献类型标识符 + \pertype{database} + \step[fieldset=usera, fieldvalue={DB}] + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{%对应增加的一个数据集类型dataset确定文献类型标识符 + \pertype{dataset} + \step[fieldset=usera, fieldvalue={DS}]% + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{%对应增加的一个软件类型software确定文献类型标识符 + \pertype{software} + \step[fieldset=usera, fieldvalue={CP}] + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{%对应增加的一个舆图类型map确定文献类型标识符 + \pertype{map} + \step[fieldset=usera, fieldvalue={CM}]% + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{%对应增加的一个档案类型archive确定文献类型标识符 + \pertype{archive} + \step[fieldset=usera, fieldvalue={A}] + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{%因为misc类型本身就是没有类型,而不像其它文献有明确的类型,所以 + %当misc类型带有网址时,直接将其转换为online类型 + \pertype{misc} + \step[fieldsource=url,final] + \step[typesource=misc,typetarget=online] + } + \map{%对应增加的一个备选类型misc确定文献类型标识符 + \pertype{misc} + \step[fieldset=usera, fieldvalue={Z}]% + } + \map{ + \pertype{book} + \pertype{inbook} + \step[fieldset=usera, fieldvalue={M}] + \step[fieldsource=version] %有时会把version和edition混淆,处理后直接用edition + \step[fieldset=edition, origfieldval] + } + \map{%兼容老的standard类型,确定文献类型标识符 + \pertype{standard} + \step[fieldset=usera, fieldvalue={S}] + \step[fieldset=note, fieldvalue=standard]%因为没有专门的驱动,记录note方便映射为book和inbook后判断 + } + \map{ + \pertype{patent} + \step[fieldset=usera, fieldvalue={P}] + } + \map{ + \pertype{inproceedings} + \pertype{conference}%兼容老的conference类型 + \step[fieldset=usera, fieldvalue={C}] + \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher + \step[fieldset=publisher, origfieldval] + } + \map{ + \pertype{proceedings} + \step[fieldset=usera, fieldvalue={C}] + \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher + \step[fieldset=publisher, origfieldval] + } + \map{ + \pertype{incollection} + \step[fieldset=usera, fieldvalue={G}] + \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher + \step[fieldset=publisher, origfieldval] + } + \map{ + \pertype{collection} + \step[fieldset=usera, fieldvalue={G}] + \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher + \step[fieldset=publisher, origfieldval] + } + \map{ + \pertype{report} + \pertype{techreport}%兼容老的techreport类型 + \step[fieldset=usera, fieldvalue={R}] + \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher + \step[fieldset=publisher, origfieldval] + } + \map{ + \pertype{thesis} + \pertype{mastersthesis}%兼容老的mastersthesis和phdthesis类型 + \pertype{phdthesis} + \step[fieldset=usera, fieldvalue={D}] + \step[fieldsource=publisher]%有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{ + \pertype{online} + \pertype{electronic}%兼容老的electronic类型 + \pertype{www}%兼容老的www类型 + \step[fieldset=usera, fieldvalue={EB}] + \step[fieldsource=publisher]%有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval]%因为online的出版项处理类似手册 + \step[fieldsource=organization]%有时会把organization和institution混淆,处理后使用institution,以增强兼容性 + \step[fieldset=institution, origfieldval] + } + \map{ + \pertype{manual} + \step[fieldset=usera, fieldvalue={A}] + \step[fieldsource=edition]%有时会把version和edition混淆,处理后使用version + \step[fieldset=version, origfieldval] + \step[fieldsource=publisher]%有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + \step[fieldsource=organization]%有时会把organization和institution混淆,处理后使用institution,以增强兼容性 + \step[fieldset=institution, origfieldval] + } + \map{ + \pertype{unpublished} + \step[fieldset=usera, fieldvalue={Z}] + } + \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 + \step[fieldsource={author}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] + }% + \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 + \step[fieldsource={editor}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] + }% + \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 + \step[fieldsource={translator}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] + }% + \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 + \step[fieldsource={bookauthor}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] + }% + \map{%处理一些用year表示date的情况 + %这样处理将会设置date域,并使得labeldatesource变为空,因为date的前缀为空(如果是urldate,那么labeldatesource就是url)。 + %同时date域会被biblatex自动解析为year,month,day,并且覆盖原来的year信息 + \step[fieldsource=year] + \step[fieldset=date, origfieldval] + } + \map{%将entrykey放入keywords中用于后期使用 + \step[fieldsource=entrykey] + \step[fieldset=keywords, origfieldval] + } + \map{\step[fieldsource=title,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF + \step[fieldset=userd,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 + } + \map{% + \step[fieldsource=title,match=\regexp{[\x{0400}-\x{052F}]},final] + \step[fieldset=userd,fieldvalue={russian}]%俄语 + } + \map{% + \step[fieldsource=title,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] + \step[fieldset=userd,fieldvalue={japanese}]%日语 + } %确定形式后可增加类似andotherscn这样的本地化字符串处理 + \map{% + \step[fieldsource=title,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] + \step[fieldset=userd,fieldvalue={korean}]%韩语 + } + \map{%文献题名的中文判断,将信息保存到userd中,避免因为标签生成原因导致title域被清除而产生问题 + \step[fieldsource=title, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]% + \step[fieldset=userd, fieldvalue={chinese}] + } + \map{%将没有设置userd,且存在title域的默认设置为英文 + \step[fieldsource=title,final] + \step[fieldset=userd,fieldvalue={english}] + } + \map{\step[fieldsource=author,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF + \step[fieldset=userf,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 + } + \map{% + \step[fieldsource=author,match=\regexp{[\x{0400}-\x{052F}]},final] + \step[fieldset=userf,fieldvalue={russian}]%俄语 + } + \map{% + \step[fieldsource=author,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] + \step[fieldset=userf,fieldvalue={japanese}]%日语 + } %确定形式后可增加类似andotherscn这样的本地化字符串处理 + \map{% + \step[fieldsource=author,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] + \step[fieldset=userf,fieldvalue={korean}]%韩语 + } + \map{%作者的中文判断 + \step[fieldsource=author, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] + \step[fieldset=userf, fieldvalue={chinese}] + } + \map{%将没有设置userf,且存在author域的默认设置为英文 + \step[fieldsource=author,final] + \step[fieldset=userf,fieldvalue={english}] + } + \map{\step[fieldsource=translator,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF + \step[fieldset=usere,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 + } + \map{% + \step[fieldsource=translator,match=\regexp{[\x{0400}-\x{052F}]},final] + \step[fieldset=usere,fieldvalue={russian}]%俄语 + } + \map{% + \step[fieldsource=translator,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] + \step[fieldset=usere,fieldvalue={japanese}]%日语 + } %确定形式后可增加类似andotherscn这样的本地化字符串处理 + \map{% + \step[fieldsource=translator,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] + \step[fieldset=usere,fieldvalue={korean}]%韩语 + } + \map{%译者的中文判断 + \step[fieldsource=translator, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] + \step[fieldset=usere, fieldvalue={chinese}] + } + \map{%将没有设置usere,且存在translator域的默认设置为英文 + \step[fieldsource=translator,final] + \step[fieldset=usere,fieldvalue={english}] + } + \map{\step[fieldsource=editor,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF + \step[fieldset=userc,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 + } + \map{% + \step[fieldsource=editor,match=\regexp{[\x{0400}-\x{052F}]},final] + \step[fieldset=userc,fieldvalue={russian}]%俄语 + } + \map{% + \step[fieldsource=editor,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] + \step[fieldset=userc,fieldvalue={japanese}]%日语 + } %确定形式后可增加类似andotherscn这样的本地化字符串处理 + \map{% + \step[fieldsource=editor,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] + \step[fieldset=userc,fieldvalue={korean}]%韩语 + } + \map{%编者的中文判断 + \step[fieldsource=editor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 + \step[fieldset=userc, fieldvalue={chinese}] + } + \map{%将没有设置userc,且存在editor域的默认设置为英文 + \step[fieldsource=editor,final] + \step[fieldset=userc,fieldvalue={english}] + } + \map{\step[fieldsource=bookauthor,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF + \step[fieldset=userb,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 + } + \map{% + \step[fieldsource=bookauthor,match=\regexp{[\x{0400}-\x{052F}]},final] + \step[fieldset=userb,fieldvalue={russian}]%俄语 + } + \map{% + \step[fieldsource=bookauthor,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] + \step[fieldset=userb,fieldvalue={japanese}]%日语 + } %确定形式后可增加类似andotherscn这样的本地化字符串处理 + \map{% + \step[fieldsource=bookauthor,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] + \step[fieldset=userb,fieldvalue={korean}]%韩语 + } + \map{%编者的中文判断 + \step[fieldsource=bookauthor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 + \step[fieldset=userb, fieldvalue={chinese}] + } + \map{%将没有设置userc,且存在editor域的默认设置为英文 + \step[fieldsource=bookauthor,final] + \step[fieldset=userb,fieldvalue={english}] + } + \map{\step[fieldsource=userd,final]%userd存在则用根据标题的语言设定language + \step[fieldset=language,origfieldval]%本身language存在则不设定 + } + \map{\step[fieldsource=userf,final]%userd不存在,而userf存在则根据author的语言设定language + \step[fieldset=language,origfieldval] + }%如果没有作者和标题,那么剩下的最可能有意义的只有网址了,而网址通常是英文的,因此不用再进一步对其它域进行判断了。 + \map{%将没有设置的language设置成en,即认为不是中文的就是英文的。 + \step[fieldset=language,fieldvalue={english}] + } + \map{%一条文献的语言已经设定在language域中,由于出版项相关宏中使用userd判断, + %所以将一条文献的主体语言设定到userd中,本身前面userd已经设定,但没有处理无标题的情况, + %这里的处理等价于没有标题时,利用作者的语言设定userd,再没有作者,则默认用英文设定userd + \step[fieldsource=language] + \step[fieldset=userd,origfieldval] + } + \map{%当文献给出language域时,设置文献要使用的本地化字符串的语言 + %biblatex 3.11及以下版本仅有match是区分大小写的,而3.12版开始用matchi来区分大小,而match不区分 + %这里为兼容3.11及以下版本,所以用一个复杂一点的正则表达式 + \step[fieldsource=language,match=\regexp{(e|E)(n|N)(g|G)(l|L)(i|I)(s|S)(h|H)},final] + \step[fieldset=langid,fieldvalue={english}] + \step[fieldset=lansortorder,fieldvalue=\lanenorder] + } + \map{ + \step[fieldsource=language,match=\regexp{(r|R)(u|U)(s|S)(s|S)(i|I)(a|A)(n|N)},final] + \step[fieldset=langid,fieldvalue={russian}] + \step[fieldset=lansortorder,fieldvalue=\lanruorder] + } + \map{% + \step[fieldsource=language,match=\regexp{(f|F)(r|R)(e|E)(n|N)(c|C)(h|H)},final] + \step[fieldset=langid,fieldvalue={french}] + \step[fieldset=lansortorder,fieldvalue=\lanfrorder] + } + \map{% + \step[fieldsource=language,match=\regexp{(c|C)(h|H)(i|I)(n|N)(e|E)(s|S)(e|E)},final]%中日韩语目前都用english, + \step[fieldset=langid,fieldvalue={english}] + \step[fieldset=lansortorder,fieldvalue=\lancnorder] + } + \map{% + \step[fieldsource=language,match=\regexp{(j|J)(a|A)(p|P)(a|A)(n|N)(e|E)(s|S)(e|E)},final]%中日韩语目前都用english, + \step[fieldset=langid,fieldvalue={english}] + \step[fieldset=lansortorder,fieldvalue=\lanjporder] + } + \map{% + \step[fieldsource=language,match=\regexp{(k|K)(o|O)(r|R)(e|E)(a|A)(n|N)},final]%中日韩语目前都用english, + \step[fieldset=langid,fieldvalue={english}] + \step[fieldset=lansortorder,fieldvalue=\lankrorder] + } +} +} + + +% +% 修改输入的参考文献数据,样式层的操作 +% +% 原理方法:因为biblatex3.0版的map不使用foreach选项,所以需要一个一个写,以处理特殊字符 +\defversion{3.0}{map}{ + \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map{%尝试未定义数据模型的standard类型映射为其他类型book或inbook, + %standard类型在blx-dm中有出现,但仅定义了类型,域和约束等都没有定义 + %因为可能要映射两种类型,所以不能在驱动层处理,因为要做判断 + \step[fieldsource=booktitle,final]%当存在booktitle域是映射为inbook + \step[typesource=standard, typetarget=inbook, final] + } + \map{%剩下的全部映射为book + \step[typesource=standard, typetarget=book, final] + } +% \map{%先于标准样式的driver层映射,以取消type设置 +% \step[typesource=mastersthesis, typetarget=thesis, final] +% %\step[fieldset=type, fieldvalue=mathesis] +% } +% \map{%先于标准样式的driver层映射,以取消type设置 +% \step[typesource=phdthesis, typetarget=thesis, final] +% %\step[fieldset=type, fieldvalue=phdthesis] +% } + \map{%先于标准样式的driver层映射,以取消type设置 + \step[typesource=techreport, typetarget=report, final] + %\step[fieldset=type, fieldvalue=techreport] + } + \map{% + \pertype{report} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=report,typetarget=online] + \step[fieldset=note,fieldvalue={report}] + } + \map{% + \pertype{thesis} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=thesis,typetarget=online] + } + \map{% + \pertype{manual} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=manual,typetarget=online] + } + \map{% + \pertype{unpublished} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=unpublished,typetarget=online] + } + \map{% + \pertype{database} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=databasetypetarget=online] + } + \map{% + \pertype{dataset} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=dataset,typetarget=online] + } + \map{% + \pertype{software} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=software,typetarget=online] + } + \map{% + \pertype{map} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=map,typetarget=online] + } + \map{% + \pertype{archive} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=archive,typetarget=online] + } + \map[overwrite]{%这里还必须有overwrite,注意不同版本存在差异,比如texlive2015变16后biber有变化(20161207修改正确) + \step[fieldsource=note, final]%将note域信息复制给keywords,用于输出时容易区分标准和报纸 + \step[fieldset=keywords, fieldvalue={,}, append] + \step[fieldset=keywords, origfieldval, append] + } + \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\\\%}] + } + } + } +} + +% +% 修改输入的参考文献数据,样式层的操作 +% +% 原理方法:biblatex3.4以上版本 +\defversion{3.4}{map}{ + \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map{%尝试未定义数据模型的standard类型映射为其他类型book或inbook, + %standard类型在blx-dm中有出现,但仅定义了类型,域和约束等都没有定义 + %因为可能要映射两种类型,所以不能在驱动层处理,因为要做判断 + \step[fieldsource=booktitle,final]%当存在booktitle域是映射为inbook + \step[typesource=standard, typetarget=inbook, final] + } + \map{%剩下的全部映射为book + \step[typesource=standard, typetarget=book, final] + } +% \map{%先于标准样式的driver层映射,以取消type设置 +% \step[typesource=mastersthesis, typetarget=thesis, final] +% %\step[fieldset=type, fieldvalue=mathesis] +% } +% \map{%先于标准样式的driver层映射,以取消type设置 +% \step[typesource=phdthesis, typetarget=thesis, final] +% %\step[fieldset=type, fieldvalue=phdthesis] +% } + \map{%先于标准样式的driver层映射,以取消type设置 + \step[typesource=techreport, typetarget=report, final] + %\step[fieldset=type, fieldvalue=techreport] + } + \map{% + \pertype{report} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=report,typetarget=online] + \step[fieldset=note,fieldvalue={report}] + } + \map{% + \pertype{thesis} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=thesis,typetarget=online] + } + \map{% + \pertype{manual} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=manual,typetarget=online] + } + \map{% + \pertype{unpublished} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=unpublished,typetarget=online] + } + \map{% + \pertype{database} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=databasetypetarget=online] + } + \map{% + \pertype{dataset} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=dataset,typetarget=online] + } + \map{% + \pertype{software} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=software,typetarget=online] + } + \map{% + \pertype{map} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=map,typetarget=online] + } + \map{% + \pertype{archive} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=archive,typetarget=online] + } + \map[overwrite]{%这里还必须有overwrite,注意不同版本存在差异,比如texlive2015变16后biber有变化(20161207修改正确) + \step[fieldsource=note, final]%将note域信息复制给keywords,用于输出时容易区分标准和报纸 + \step[fieldset=keywords, fieldvalue={,}, append] + \step[fieldset=keywords, origfieldval, append] + } + \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,address,location,institution,organization}]{ + \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\#}, replace=\regexp{$1\\\#}] + } + \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,address,location,institution,organization}]{ + \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\%}, replace=\regexp{$1\\\%}] + } + \map[overwrite, foreach={title,booktitle,journaltitle,journal,publisher,% + address,location,institution,organization}]{ + \step[fieldsource=\regexp{$MAPLOOP}, match=\regexp{([^\\])\x26}, replace=\regexp{$1\\\x26}] + } + } + } +} + +\iftoggle{iftlfive}% + {\switchversion{3.0}{map}}%%当采用biblatex<=3.2版本时 + {\switchversion{3.4}{map}}%%当采用3.3<=biblatex版本时 + + +% +% 不同语言分集调整的实现方式 +% +% 原理方法:利用样式层的动态数据修改lansortorder域来实现排序 +\def\dealsortlan{ + \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map[overwrite]{%当文献给出language域时,设置文献要使用的本地化字符串的语言 + \step[fieldsource=language,match=english,final] + \step[fieldset=lansortorder,fieldvalue=\lanenorder] + } + \map[overwrite]{ + \step[fieldsource=language,match=russian,final] + \step[fieldset=lansortorder,fieldvalue=\lanruorder] + } + \map[overwrite]{% + \step[fieldsource=language,match=french,final] + \step[fieldset=lansortorder,fieldvalue=\lanfrorder] + } + \map[overwrite]{% + \step[fieldsource=language,match=chinese,final]%中日韩语目前都用english, + \step[fieldset=lansortorder,fieldvalue=\lancnorder] + } + \map[overwrite]{% + \step[fieldsource=language,match=japanese,final]%中日韩语目前都用english, + \step[fieldset=lansortorder,fieldvalue=\lanjporder] + } + \map[overwrite]{% + \step[fieldsource=language,match=korean,final]%中日韩语目前都用english, + \step[fieldset=lansortorder,fieldvalue=\lankrorder] + } + } + } +} + +% +%驱动别名等价于驱动层映射 +% +\DeclareBibliographyAlias{newspaper}{article}% +\DeclareBibliographyAlias{inproceedings}{inbook}%会议论文文献类型驱动 +\DeclareBibliographyAlias{conference}{inbook}%会议论文文献类型驱动 +\DeclareBibliographyAlias{incollection}{inbook}%文集中析出文献类型驱动 +\DeclareBibliographyAlias{collection}{book}%%文集类型驱动 +\DeclareBibliographyAlias{proceedings}{book}%会议论文集文献类型驱动 +\DeclareBibliographyAlias{thesis}{manual}%学位论文驱动 +\DeclareBibliographyAlias{unpublished}{manual}%其它类型驱动 +\DeclareBibliographyAlias{database}{manual} +\DeclareBibliographyAlias{dataset}{manual} +\DeclareBibliographyAlias{software}{manual} +\DeclareBibliographyAlias{map}{manual} +\DeclareBibliographyAlias{archive}{manual} + +%===================================================================== +% 设置排序格式 +%===================================================================== +% +% 排序格式,用降序,及userb域,针对biblatex3.7及以下版本 +% +\defversion{3.7}{sort}{%这是3.4版的,3.7版略有差异,但不大,后面有注释 + \DeclareSortingScheme{gb7714-2015}{ + \sort{ + \field{presort} + } + %\sort[final]{ + %\field{sortkey} + %} + \sort{ + \field{lansortorder}%language + } + \sort{ + \field{sortkey} + } + \sort{%[direction=descending] + \field{sortname} + \field{author} + \field{editor} + \field{translator} + } + \sort{ + \field{sortyear} + \field{year} + } + \sort{ + \field{sorttitle} + \field{title} + } + \sort{ + \field[padside=left,padwidth=4,padchar=0]{volume}%3.7版是\field{volume} + \literal{0000}%3.7版是\literal{0} + } + } + + %降序的nyt + \DeclareSortingScheme{gbnytd}{ + \sort{ + \field{presort} + } + %\sort[final]{ + %\field{sortkey} + %} + \sort{ + \field{lansortorder}%language + } + \sort[direction=descending]{ + \field{sortkey} + } + \sort[direction=descending]{ + \field{sortname} + \field{author} + \field{editor} + \field{translator} + } + \sort{ + \field{sortyear} + \field{year} + } + \sort{ + \field{sorttitle} + \field{title} + } + \sort{ + \field[padside=left,padwidth=4,padchar=0]{volume}%3.7版是\field{volume} + \literal{0000}%3.7版是\literal{0} + } + } + + %降序的ynt + \DeclareSortingScheme{gbyntd}{ + \sort{ + \field{presort} + } + %\sort[final]{ + %\field{sortkey} + %} + \sort{ + \field{lansortorder}%language + } + \sort[direction=descending]{ + \field{sortyear} + \field{year} + } + \sort{ + \field{sortkey} + } + \sort{ + \field{sortname} + \field{author} + \field{editor} + \field{translator} + } + \sort{ + \field{sorttitle} + \field{title} + } + \sort{ + \field[padside=left,padwidth=4,padchar=0]{volume}%3.7版是\field{volume} + \literal{0000}%3.7版是\literal{0} + } + } + + %升序的ynt + \DeclareSortingScheme{gbynta}{ + \sort{ + \field{presort} + } + %\sort[final]{ + %\field{sortkey} + %} + \sort{ + \field{lansortorder}%language + } + \sort{ + \field{sortyear} + \field{year} + } + \sort{ + \field{sortkey} + } + \sort{ + \field{sortname} + \field{author} + \field{editor} + \field{translator} + } + \sort{ + \field{sorttitle} + \field{title} + } + \sort{ + \field[padside=left,padwidth=4,padchar=0]{volume}%3.7版是\field{volume} + \literal{0000}%3.7版是\literal{0} + } + } +} + + +% +% 排序格式,用降序,及userb域,针对biblatex3.8及以上版本 +% +\defversion{3.8}{sort}{ + \DeclareSortingTemplate{gb7714-2015}{ + \sort{ + \field{presort} + } + %\sort[final]{ + %\field{sortkey} + %} + \sort{ + \field{lansortorder}%language + } + \sort{ + \field{sortkey} + } + \sort{%[direction=descending] + \field{sortname} + \field{author} + \field{editor} + \field{translator} + } + \sort{ + \field{sortyear} + \field{year} + } + \sort{ + \field{sorttitle} + \field{title} + } + \sort{ + \field{volume} + \literal{0} + } + } + + %降序的nyt + \DeclareSortingTemplate{gbnytd}{ + \sort{ + \field{presort} + } +% \sort[final]{ +% \field{sortkey} +% } + \sort{ + \field{lansortorder}%language + } + \sort[direction=descending]{ + \field{sortkey} + } + \sort[direction=descending]{% + \field{sortname} + \field{author} + \field{editor} + \field{translator} + } + \sort{ + \field{sortyear} + \field{year} + } + \sort{ + \field{sorttitle} + \field{title} + } + \sort{ + \field{volume} + \literal{0} + } + } + + %降序的ynt + \DeclareSortingTemplate{gbyntd}{ + \sort{ + \field{presort} + } +% \sort[final]{ +% \field{sortkey} +% } + \sort{ + \field{lansortorder}%language + } + \sort[direction=descending]{ + \field{sortyear} + \field{year} + } + \sort{ + \field{sortkey} + } + \sort{% + \field{sortname} + \field{author} + \field{editor} + \field{translator} + } + \sort{ + \field{sorttitle} + \field{title} + } + \sort{ + \field{volume} + \literal{0} + } + } + + %升序的ynt + \DeclareSortingTemplate{gbynta}{ + \sort{ + \field{presort} + } +% \sort[final]{ +% \field{sortkey} +% } + \sort{ + \field{lansortorder}%language + } + \sort{%[direction=ascending] + \field{sortyear} + \field{year} + } + \sort{ + \field{sortkey} + } + \sort{% + \field{sortname} + \field{author} + \field{editor} + \field{translator} + } + \sort{ + \field{sorttitle} + \field{title} + } + \sort{ + \field{volume} + \literal{0} + } + } +} + + +\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 + +%===================================================================== +% 参考文献表环境 +%===================================================================== +% +% 列表格式 +% +% 增加一个\bibitemindent尺寸用于控制list环境的itemindent +% v1.0l,20180615,hzz +% v1.0t,20200319,hzz,增加尺寸\biblabelextend使某些字体下标签宽度不足时可增加标签宽度 +\setlength{\bibhang}{\biblabelsep}% +\newlength{\bibitemindent} +\setlength{\bibitemindent}{0pt} +\newlength{\biblabelextend} +\setlength{\biblabelextend}{0pt} + + +\defbibenvironment{bibliography} + {\list + {\printtext[labelnumberwidth]{% + \printfield{labelprefix}% + \printfield{labelnumber}}} + {\addtolength{\labelnumberwidth}{\biblabelextend}% + \setlength{\labelwidth}{\labelnumberwidth}% + \setlength{\labelsep}{\biblabelsep}% + \setlength{\leftmargin}{\bibhang}% + \addtolength{\leftmargin}{\labelnumberwidth}% + \setlength{\itemindent}{\bibitemindent}% + \setlength{\itemsep}{\bibitemsep}% + \setlength{\parsep}{\bibparsep}}% + \renewcommand*{\makelabel}[1]{\hss##1}} + {\endlist} + {\item} + +% +% 顺序编码制-标签对齐方式处理 +% +% 原理方法:利用选项提供的计数器数值做选择 +% 左对齐,右对齐为list环境下的处理,此时list环境的\labelwidth只能设置一个,是最宽标签的宽度 +% 项对齐则是在段落环境下做的处理。 +% 左对齐时,参考文献各项内容对齐,序号标签与参考文献项内容的间距可变 +% 右对齐时,参考文献各项内容对齐,序号标签与参考文献项内容的间距相等,标签与页边距离可变 +% 项对齐时,序号标签贴在页边,序号标签与参考文献项内容的间距相等 +% 修改序号标签格式为: +% \DeclareFieldFormat{shorthandwidth}{\mkbibbrackets{#1}} %源来自numeric.BBX +% \DeclareFieldFormat{labelnumberwidth}{\ttfamily\mkbibbrackets{#1}\hfill} +\DeclareFieldFormat{labelnumberwidth}{% +\ifcase\value{gbalignlabel}%右对齐,整个标签为右对齐 + \mkgbnumlabel{#1}% +\or%左对齐,整个标签为左对齐 + \mkgbnumlabel{#1}\hfill% +\or%中间对齐,比如:序号数字居于[]中间 + \hfil\mkgbnumlabel{\hfill#1\hfill}\hfil% +\fi} + +% +% 修改序号标签格式为以各条参文献为基础进行对齐的方式,即序号与条目内容间隔相等的方式。 +\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 + {}} +\newlength{\lengthid} +\newlength{\lengthlw} +\newcommand{\itemcmd}{% +\settowidth{\lengthid}{\mkgbnumlabel{\printfield{labelnumber}}} +\addtolength{\lengthid}{\biblabelsep} +\setlength{\lengthlw}{\textwidth} +\addtolength{\lengthlw}{-\lengthid} +\addvspace{\bibitemsep}%恢复\bibitemsep的作用 +%\parshape 2 0em \textwidth \lengthid \lengthlw +\hangindent\lengthid +\mkgbnumlabel{\printfield{labelnumber}}% +\hspace{\biblabelsep}} +% +% 简单的段落环境 +\defbibenvironment{bibliography} +{\begingroup\setlength{\parindent}{0em}} +{\endgroup} +{\itemcmd}} + + +%===================================================================== +% 设置单元或块等的标点 +%===================================================================== +\renewrobustcmd*{\bibinithyphendelim}{\addhighpenspace}%用于处理姓名中名部分存在-的情况,比如ZHANG Yu-xin +\renewcommand*{\subtitlepunct}{\addcolon\addspace} %修改标题和其它标题信息间的标点,来源biblatex.def, +% +% 利用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}%%页码引用格式的修改,修改为用冒号 +%\renewcommand{\relateddelim}{}%\par + +%===================================================================== +% 修改域的格式,重定义域的输出宏 +%===================================================================== +% +% 新增文献类型标识符的格式 +% []前的nobreak,从GB4.1节的例子看不应该加,所以去掉 +% 但因为考虑到cjk字符和[]之间可能添加空格,所以仍然加上 +% 而[]中间的内容,从4.6.2节的例子看也是可以分割的,因此内部的nobreak也可以去掉 +% +\DeclareFieldFormat{gbtypeflag}{% +\iftoggle{bbx:gbmedium}% +{\iftoggle{bbx:url}% + {\iffieldundef{url}%当存在url时,增加一个OL标识符 + {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}}% + {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\texttt{/}OL]}}% + }% + {\ifentrytype{online}% + {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\texttt{/}OL]}}% + {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}}% + }}% + {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{]}}% +} + +% +% 新增用于报纸的文献类型标识符的格式 +% +\DeclareFieldFormat{gbtypeflagn}{%用于报纸newspaper +\iftoggle{bbx:gbmedium}% +{\iftoggle{bbx:url}% + {\iffieldundef{url}%当存在url时,增加一个OL标识符 + {\nobreak\printtext{[}\nobreak N\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% + {\nobreak\printtext{[}\nobreak N\printtext{\texttt{/}OL]}\nobreak}% + }% + {\nobreak\printtext{[}\nobreak N\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% +}{\nobreak\printtext{[}\nobreak N\printtext{]}\nobreak}% +} + +% +% 新增用于标准的文献类型标识符的格式 +% +\DeclareFieldFormat{gbtypeflags}{%用于标准standard +\iftoggle{bbx:gbmedium}% +{\iftoggle{bbx:url}% + {\iffieldundef{url}%当存在url时,增加一个OL标识符 + {\nobreak\printtext{[}\nobreak S\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% + {\nobreak\printtext{[}\nobreak S\printtext{\texttt{/}OL]}\nobreak}% + }% + {\nobreak\printtext{[}\nobreak S\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% +}{\nobreak\printtext{[}\nobreak S\printtext{]}\nobreak}% +} + +% +% 重设title等参考文献信息的输出格式 +% +% 原理方法:修改来自biblatex.def文件的原格式 +\newcommand{\bibtitlefont}{} +\newcommand{\bibauthorfont}{} +\newcommand{\bibpubfont}{} + +\DeclareFieldFormat{title}{#1\adddot\addthinspace} +\DeclareFieldFormat{journaltitle}{#1\isdot}%添加\isdot用于缩写名带点情况,将其转换为缩写点,便于标点的追踪 +\DeclareFieldFormat{issuetitle}{#1} +\DeclareFieldFormat{maintitle}{#1} +\DeclareFieldFormat{booktitle}{#1} +\DeclareFieldFormat%将期刊等文献的标题中原来带的引号去掉 + [article,patent,thesis,unpublished] + {title}{#1\adddot\addthinspace}%\mkbibquote{#1\isdot} +\DeclareFieldFormat%将期刊等文献的标题中原来带的引号去掉 + [inbook,incollection,inproceedings] + {title}{#1}%\nopunct\unspace +\DeclareFieldFormat{url}{\url{#1}} %%url相关输出,url域修改如本行,源来自biblatex.def +\def\UrlFont{\rmfamily}%设置url字体为roman字体%\ttfamily +%\urlstyle{rm} %使用这句也一样 +\setcounter{biburlnumpenalty}{100} %让url可以在数字后断行 +\setcounter{biburlucpenalty}{100} %让url可以在大写字母后断行 +\setcounter{biburllcpenalty}{100} %让url可以在小写字母后断行 +\DeclareFieldFormat{doi}{% + \rmfamily{DOI}\addcolon\space + \ifhyperref + {\href{https://doi.org/#1}{\nolinkurl{#1}}} + {\nolinkurl{#1}}} +% +% 标题的字母大小写格式修改 +% +% 注意:修改标题的字母大小写,不能用前面的title的格式而要用titlecase +% 因为titlecase is applied to the contents of the field directly,title is not +%\DeclareFieldFormat{titlecase}{\MakeCapital#1}%重设标题格式,将其修改为首字母大写 +\DeclareFieldFormat{titlecase}{\iftoggle{bbx:titlelink}{% +\iffieldundef{url}{\MakeCapital#1}{% +\href{\thefield{url}}{#1}}}{\MakeCapital#1}}%重设标题格式,将其修改为首字母大写 +\DeclareFieldFormat{pages}{#1}%去掉前面引导页码的pp.等字符,\mkpageprefix[bookpagination]{#1} +\DefineBibliographyExtras{english}{\renewcommand*{\bibrangedash}{-}}%将页码间隔符替换会英文的短横线 +\DefineBibliographyExtras{russian}{\renewcommand*{\bibrangedash}{-}}%将页码间隔符替换会英文的短横线 + +\def\execgbfdfmtstd{%恢复到标准样式的设置 +\DeclareFieldFormat{title}{\mkbibemph{##1}} +\DeclareFieldFormat + [article,inbook,incollection,inproceedings,patent,thesis,unpublished] + {title}{\mkbibquote{##1\isdot}} +\DeclareFieldFormat + [suppbook,suppcollection,suppperiodical] + {title}{##1} +\DeclareFieldFormat{journaltitle}{\mkbibemph{##1}} +\DeclareFieldFormat{issuetitle}{\mkbibemph{##1}} +\DeclareFieldFormat{maintitle}{\mkbibemph{##1}} +\DeclareFieldFormat{booktitle}{\mkbibemph{##1}} +\DeclareFieldFormat{url}{\mkbibacro{URL}\addcolon\space\url{##1}} +\DeclareFieldFormat{titlecase}{##1} +\DeclareFieldFormat{pages}{\mkpageprefix[bookpagination]{##1}} +} + +% +% 文献标题后的标点问题 +% v1.0k,20180405,为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以上版本 + \@ifclassloaded{beamer}{ + \DeclareFieldFormat{title}{#1}% + \DeclareFieldFormat[article,patent,thesis,unpublished]{title}{#1} + \AtBeginDocument{% + \patchcmd{\abx@macro@title}{\newunitpunct}{}{}{}}}{} + } + + +% +% 修改译者位置格式 +% +% 原理方法:修改来自biblatex.def文件的bytranslator+others宏的格式 +\renewbibmacro*{bytranslator+others}{\bibauthorfont% + \ifnameundef{translator} + {} + {%\usebibmacro{bytranslator+othersstrg} + %\setunit{\addspace}% + \printnames[bytranslator]{translator}% + \clearname{translator}% + %从macro*{bytranslator+othersstrg}%中可以看到当地化字符串格式的引用前的代码处理 + %比如生成cotranslator等用于调用cotranslator所代表的当地化字符串 + \usebibmacro{bytranslator+othersstrg}%“译”的位置换到下面来,即放到译者后面。 + %\setunit{\addspace}% + \newunit}% + \usebibmacro{withothers}} + + +% +% 修改作者数量超过限定值,做省略时的处理格式 +% v1.0,20160701,hzz +% v1.0O,20190103,hzz,修改利用新定义的一个分隔符strandothersdelim +% +% 原理方法:判断作者或译者是否中文,若中文用字符等,否则用et al. 。 +\renewbibmacro*{name:andothers}{\bibauthorfont% + \ifboolexpr{ + test {\ifnumequal{\value{listcount}}{\value{liststop}}} + and + test \ifmorenames + }{\ifnumgreater{\value{liststop}}{1}% + {\finalandcomma}% + {}% +\printdelim{andothersdelim}\printdelim{strandothersdelim}% +}{%当是译者的时候需要特殊处理:从7.2节看等,译前面加逗号,但从示例看等和译同时出现时,译前的逗号没有,比如: +%袁训来, 陈哲, 肖书海, 等. +%胡泳, 范海燕, 译. +%潘惠霞, 魏婧, 杨艳, 等译. +\ifcurrentname{translator}{\addcomma\addthinspace}{}%为了实现上述第二个示例情况做的处理 +}} + + +% 修改省略作者后的本地化字符串,比如et al. +% v1.0o,20190103,hzz +% +% 原理方法:默认情况下判断作者或译者是否中文,若中文用字符andotherscn=“等”,否则用andothers=“et al.”。 +% 非默认情况,根据选项信息,选择选择强制中文或英文 +% 首先设置全局的,然后设置文献表中的,这一等价于将所有的cite命令环境都设置过了 +% 而不用对每一个引用命令单独设置,比如cite,parancite,textcite都设置 +\DeclareDelimFormat{strandothersdelim}{% + \edef\userfieldabcde{userd}%这里使用\iffieldequalstr{labelnamesource}替代ifcurrentname因为标注中使用ifcurrentname无效 + \iffieldequalstr{labelnamesource}{translator}{\edef\userfieldabcde{usere}}{}% + \iffieldequalstr{labelnamesource}{editor}{\edef\userfieldabcde{userc}}{}% + \iffieldequalstr{labelnamesource}{author}{\edef\userfieldabcde{userf}}{}% + \iffieldequalstr{labelnamesource}{bookauthor}{\edef\userfieldabcde{userb}}{}% + \ifcase\value{gbcitelocalcase}% + \iffieldequalstr{\userfieldabcde}{chinese}{\ifbibstring{andothersincitecn}{\bibstring{andothersincitecn}}{\bibstring{andothers}}}{}%中文已经通过english本地化字符串定义 + \iffieldequalstr{\userfieldabcde}{korean}{\ifbibstring{andotherskr}{\bibstring{andotherskr}}{\bibstring{andothers}}}{}%韩语未定义,所以与bib中一致 + \iffieldequalstr{\userfieldabcde}{japanese}{\ifbibstring{andothersjp}{\bibstring{andothersjp}}{\bibstring{andothers}}}{}%日与同韩语 + \iffieldequalstr{\userfieldabcde}{english}{\ifbibstring{andothersincite}{\bibstring{andothersincite}}{\bibstring{andothers}}}{}%英语已定义 + \iffieldequalstr{\userfieldabcde}{french}{\bibstring{andothers}}{}%法语未定义,若要定义需要针对french本地化字符串定义 + \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{andothers}}{}%俄语未定义,若要定义需要针对russian本地化字符串定义 + \or% + \bibstring{andothersincitecn}% + \or% + \bibstring{andothersincite}% + \fi} + + +\DeclareDelimFormat[bib,biblist]{strandothersdelim}{% + \edef\userfieldabcde{userd}% + \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% + \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% + \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% + \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% + \ifcase\value{gbbiblocalcase}% + \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andotherscn}}{}% + \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andotherskr}}{}% + \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andothersjp}}{}% + \iffieldequalstr{\userfieldabcde}{english}{\bibstring{andothers}}{}% + \iffieldequalstr{\userfieldabcde}{french}{\bibstring{andothers}}{}% + \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{andothers}}{}% + \or% + \bibstring{andotherscn}% + \or% + \bibstring{andothers}% + \fi} + +% +% 修改最后一个作者前的字符串,比如 and +% v1.0o,20190103,hzz +% +% 原理方法:默认情况下判断作者或译者是否中文,若中文用字符andcn=“和”,否则用and=“and”。 +% 非默认情况,根据选项信息,选择选择强制中文或英文 +% 首先设置全局的,然后设置文献表中的,这一等价于将所有的cite命令环境都设置过了 +% 而不用对每一个引用命令单独设置,比如cite,parancite,textcite都设置 +\DeclareDelimFormat{finalnamedelim}{% + \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}% +% \addspace% + \edef\userfieldabcde{userd}% + \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% + \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% + \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% + \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% + \ifcase\value{gbcitelocalcase}% + \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andincitecn}}{}% + \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andkr}}{}% + \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andjp}}{}% + \iffieldequalstr{\userfieldabcde}{english}{\space\bibstring{andincite}\space}{}% + \iffieldequalstr{\userfieldabcde}{french}{\space\bibstring{and}\space}{}% + \iffieldequalstr{\userfieldabcde}{russian}{\space\bibstring{and}\space}{}% +%\space% + \or% + \bibstring{andincitecn}%\space% + \or% +\space\bibstring{andincite}\space% + \fi} + +\DeclareDelimFormat[bib,biblist]{finalnamedelim}{% + \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}% + \addspace% + \edef\userfieldabcde{userd}% + \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% + \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% + \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% + \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% + \ifcase\value{gbbiblocalcase}% + \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andcn}}{}% + \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andkr}}{}% + \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andjp}}{}% + \iffieldequalstr{\userfieldabcde}{english}{\bibstring{and}}{}% + \iffieldequalstr{\userfieldabcde}{french}{\bibstring{and}}{}% + \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{and}}{}% +\space% + \or% + \bibstring{andcn}\space% + \or% + \bibstring{and}\space% + \fi} + + +% +% 重设title的输出 +% +% 20180425,v1.0k,为标题增加字体控制命令,Hu Zhenzhen +% 原理方法:将文献类型标识符输出出去,原输出来自biblatex.def文件 +% 利用toggle做标识符是否输出的判断 +\renewbibmacro*{title}{% + \ifboolexpr{% + test{\iffieldundef{title}}% + and + test{\iffieldundef{subtitle}}% + }% + {}% + {\printtext[title]{\bibtitlefont%增加字体控制命令 + \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 +}% +}} + +% +% 作者信息的输出格式 +% +% 20180425,v1.0k,为作者增加字体控制命令,Hu Zhenzhen +% 20180603,v1.0l,增加使用nameformat域来选择姓名格式 +\DeclareNameFormat{namefmtselected}{% +\iffieldundef{namefmtid}{}% +{\defcounter{gbnamefmtcase}{\thefield{namefmtid}}}% +\ifcase\value{gbnamefmtcase}% + \ifgiveninits + {\usebibmacro{name:gbuppercase} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffix}} + {\usebibmacro{name:gbuppercase} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}}% +\or + \ifgiveninits + {\usebibmacro{name:gblowercase} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffix}} + {\usebibmacro{name:gblowercase} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}}% +\or + \ifgiveninits + {\usebibmacro{name:given-family} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffix}} + {\usebibmacro{name:given-family} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}}% +\or + \ifgiveninits + {\usebibmacro{name:family-given} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffix}} + {\usebibmacro{name:family-given} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}}% +\or +\usebibmacro{name:gbpinyin} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}% +\or + \ifnumequal{\value{listcount}}{1} + {\ifgiveninits + {\usebibmacro{name:family-given} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffix}} + {\usebibmacro{name:family-given} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}}% + \ifboolexpe{% + test {\ifdefvoid\namepartgiven} + and + test {\ifdefvoid\namepartprefix}} + {} + {\usebibmacro{name:revsdelim}}} + {\ifgiveninits + {\usebibmacro{name:given-family} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffix}} + {\usebibmacro{name:given-family} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}}}% +\fi + \usebibmacro{name:andothers}} + +\DeclareNameAlias{default}{namefmtselected}%姓名的默认格式采用可选的模式 +\DeclareNameAlias{sortname}{default}% Used in the bibliography %family-given/given-family +\DeclareNameAlias{citename}{default}% Default used by \citename + +\DeclareDelimFormat[bib,biblist]{andothersdelim}{\addcomma\addspace} +%\DeclareDelimFormat[textcite]{andothersdelim}{\addspace}% + +%GB/T 7714-2015 风格,全部大写 +\newbibmacro*{name:gbuppercase}[4]{\bibauthorfont% +\renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 +\renewcommand*{\revsdnamepunct}{}% + \ifuseprefix% + {\usebibmacro{name:delim}{#3#1}% + \usebibmacro{name:hook}{#3#1}% + \ifdefvoid{#3}{}{% + \ifcapital% + {\mkbibnameprefix{\MakeCapital{#3}}\isdot}% + {\mkbibnameprefix{#3}\isdot}% + \ifprefchar{}{\bibnamedelimc}}% + \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% + \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital + \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%后缀前加逗号 + {\usebibmacro{name:delim}{#1}% + \usebibmacro{name:hook}{#1}% + \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% + \ifboolexpe{% + test {\ifdefvoid{#2}} + and + test {\ifdefvoid{#3}}} + {}{\revsdnamepunct}% + \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital + \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}% + \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号 +} + +%GB/T 7714-2015 风格,大小写不变,根据bib文件内输入原样输出 +\newbibmacro*{name:gblowercase}[4]{\bibauthorfont% + \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 + \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def + \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}{}{\addcomma\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}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号 +} + +%中文常见风格,汉语拼音全拼模式 +\newbibmacro*{name:gbpinyin}[4]{\bibauthorfont% +\renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉,%来源biblatex2.STY +\renewcommand*{\revsdnamepunct}{}%%来源biblatex.def +\renewrobustcmd*{\bibnamedelima}{\mbox{-}}% + \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}}% +} + + +\@ifpackagelater{biblatex}{2016/03/27}%biblatex<3.2版的情况 + {}{ + %GB/T 7714-2015 风格,全部大写 + \renewbibmacro*{name:gbuppercase}[4]{\bibauthorfont% + \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 + \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def + \ifuseprefix + {\usebibmacro{name:delim}{#3#1}% + \usebibmacro{name:hook}{#3#1}% + \ifblank{#3}{}{% + \ifcapital + {\mkbibnameprefix{\MakeCapital{#3}}\isdot} + {\mkbibnameprefix{#3}\isdot}% + \ifpunctmark{'}{}{\bibnamedelimc}}% + %\mkbibnamelast{#1}\isdot + \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase + %注意上一句\MakeCapital后面如果再跟一个{}包含#1,则没有效果,可能是包在里面少了一层展开 + %因为机构名通常包括在{}内,所以要多展开一次才行,所以这里去掉#1外面的{} + %\mkbibnamelast{\MakeUppercase{#1}}\isdot + %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 + \ifblank{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamefirst{\MakeUppercase{#2}}\isdot}% + \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}}%后缀前加逗号 + {\usebibmacro{name:delim}{#1}% + \usebibmacro{name:hook}{#1}% + %\mkbibnamelast{#1}\isdot %3.9.1 Generic Commands and Hooks,对姓重新处理,如下句: %\mkbibnamelast{\MakeUppercase{#1}} + \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot %大写,参考4.6.4 Miscellaneous Commands,\MakeUppercase %\MakeSentenceCase + %\mkbibnamelast{\MakeUppercase{#1}}\isdot + %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 + \ifblank{#2#3}{}{\revsdnamepunct}% + \ifblank{#2}{}{\bibnamedelimd\mkbibnamefirst{\MakeUppercase{#2}}\isdot}% + \ifblank{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}% + \addcomma\addspace% + \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}%%后缀前加逗号 + }% + } + + %GB/T 7714-2015 风格,大小写不变,根据bib文件内输入原样输出 + \renewbibmacro*{name:gblowercase}[4]{\bibauthorfont% + \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 + \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def + \ifuseprefix + {\usebibmacro{name:delim}{#3#1}% + \usebibmacro{name:hook}{#3#1}% + \ifblank{#3}{}{% + \ifcapital + {\mkbibnameprefix{\MakeCapital{#3}}\isdot} + {\mkbibnameprefix{#3}\isdot}% + \ifpunctmark{'}{}{\bibnamedelimc}}% + \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{{#1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase + \ifblank{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamefirst{{#2}}\isdot}% + \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}}%后缀前加逗号 + {\usebibmacro{name:delim}{#1}% + \usebibmacro{name:hook}{#1}% + \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{{#1}}}\isdot %大写,参考4.6.4 Miscellaneous Commands,\MakeUppercase %\MakeSentenceCase + \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:gbpinyin}[4]{\bibauthorfont% + \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 + \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def + \renewrobustcmd*{\bibnamedelima}{\mbox{-}}% + \ifuseprefix + {\usebibmacro{name:delim}{#3#1}% + \usebibmacro{name:hook}{#3#1}% + \ifblank{#3}{}{% + \ifcapital + {\mkbibnameprefix{\MakeCapital{#3}}\isdot} + {\mkbibnameprefix{#3}\isdot}% + \ifpunctmark{'}{}{\bibnamedelimc}}% + \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase + \ifblank{#2}{}{\revsdnamepunct\bibnamedelimd\MakeSentenceCase{\mkbibnamefirst{#2}}\isdot}% + \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}} + {\usebibmacro{name:delim}{#1}% + \usebibmacro{name:hook}{#1}% + \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot %大写,参考4.6.4 Miscellaneous Commands,\MakeUppercase %\MakeSentenceCase + \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}% + }% + } + + %%biblatex<3.2版的情况,姓名的处理格式带参数 + \DeclareNameFormat{namefmtselected}{% + \iffieldundef{namefmtid}{}% + {\defcounter{gbnamefmtcase}{\thefield{namefmtid}}}% + \ifcase\value{gbnamefmtcase}% + \iffirstinits + {\usebibmacro{name:gbuppercase}{#1}{#4}{#5}{#7}} + {\usebibmacro{name:gbuppercase}{#1}{#3}{#5}{#7}}% + \or + \iffirstinits + {\usebibmacro{name:gblowercase}{#1}{#4}{#5}{#7}} + {\usebibmacro{name:gblowercase}{#1}{#3}{#5}{#7}}% + \or + \iffirstinits + {\usebibmacro{name:last-first}{#1}{#4}{#5}{#7}} + {\usebibmacro{name:last-first}{#1}{#3}{#5}{#7}}% + \ifblank{#3#5} + {} + {\usebibmacro{name:revsdelim}}% + \or + \iffirstinits + {\usebibmacro{name:first-last}{#1}{#4}{#5}{#7}} + {\usebibmacro{name:first-last}{#1}{#3}{#5}{#7}}% + \or + \usebibmacro{name:gbpinyin}{#1}{#3}{#5}{#7}% + \or + \ifnumequal{\value{listcount}}{1} + {\iffirstinits + {\usebibmacro{name:last-first}{#1}{#4}{#5}{#7}} + {\usebibmacro{name:last-first}{#1}{#3}{#5}{#7}}% + \ifblank{#3#5} + {} + {\usebibmacro{name:revsdelim}}} + {\iffirstinits + {\usebibmacro{name:first-last}{#1}{#4}{#5}{#7}} + {\usebibmacro{name:first-last}{#1}{#3}{#5}{#7}}}% + \fi + \usebibmacro{name:andothers}} +} + +% +% url和url日期格式 +% +\renewbibmacro*{url+urldate}{% + %\usebibmacro{url}%%更换url的位置,放到下面 + \iffieldundef{urlyear}% + {}{%\setunit*{\addspace}% + \usebibmacro{urldate}}% + \setunit{\addperiod\addspace}% + \usebibmacro{url}} +\renewbibmacro*{url}{\printfield{url}} + + + + +% +% 日期信息的输出格式,针对biblatex<3.7版本 +% +\defversion{3.4}{date}{ + \renewbibmacro*{urldate}{% + \addthinspace\printtext{[}\printfield{urlyear}% + \iffieldundef{urlmonth}{}{\bibrangedash\printfield{urlmonth}}% + \iffieldundef{urlday}{}{\bibrangedash\printfield{urlday}}\printtext{]}} + + \newbibmacro*{newsdate}{%%新增加一个公告日期,公开日期或新闻日期 + \iffieldundef{year}{}{\printfield{year}% + \iffieldundef{month}{}{\bibrangedash\printtext{\thefield{month}}% + \iffieldundef{day}{}{\bibrangedash\printfield{day}}}}% + } + + \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 + \ifboolexpr{% + test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}% + }% + {}%更新或修改日期通常有day信息 + {\iffieldequalstr{year}{}{%替换\iffieldundef{year},因为year总是存在,但为空 + \iffieldundef{endyear}{% + \iffieldundef{eventyear}{}{\printtext{\mkbibparens{\printtext{\printfield{eventyear}}% + \iffieldundef{eventmonth}{}{\bibrangedash\thefield{eventmonth}}% + \iffieldundef{eventday}{}{\bibrangedash\printfield{eventday}}}}% + }% + }{% + \iffieldundef{endyear}{}{\printtext{\mkbibparens{\printtext{\printfield{endyear}}% + \iffieldundef{endmonth}{}{\bibrangedash\thefield{endmonth}}% + \iffieldundef{endday}{}{\bibrangedash\printfield{endday}}}}% + }% + }% + }% + {% + \iffieldundef{year}{}{\printtext{\mkbibparens{\printtext{\printfield{year}}% + \iffieldundef{month}{}{\bibrangedash\thefield{month}}% + \iffieldundef{day}{}{\bibrangedash\printfield{day}}}}% + }% + }% + }}% +} + +% +% 日期信息的输出格式,针对3.9>=biblatex>=3.7版本 +% +\defversion{3.7}{date}{ + \DeclareFieldFormat{urldate}{##1} + \renewbibmacro*{urldate}{% + \addthinspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 + + % + % 专利的公告日期、或报纸的日期的输出宏 + % 20160701,v1.0,新增加 + % 20180405,v1.0k,为biblatexv3.7-3.9版本,出现多出点bug做处理,Hu Zhenzhen + % + % 原理方法:加上printtext避免破坏异步标点机制 + % + \newbibmacro*{newsdate}{% + \printtext{\blx@edtfdate{}{}}% + } + + \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 + \ifboolexpr{% + test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}% + }% + {}%更新或修改日期通常有day信息 + {\iffieldundef{year}{% + \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{(}\printeventdate\printtext{)}}}% + {\printtext{(}\printenddate\printtext{)}}% + }{\iffieldequalstr{year}{}{%因为year存在,但为空 + }{\printtext{(}\blx@edtfdate{}{}\printtext{)}}% + }% + }}% +} + +% +% 日期信息的输出格式,针对biblatex>=3.10版本 +% +\defversion{3.10}{date}{ + \DeclareFieldFormat{urldate}{##1} + \renewbibmacro*{urldate}{% + \addthinspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 + + % + % 专利的公告日期、或报纸的日期的输出宏 + % 20160701,v1.0,新增加 + % 20180405,为biblatexv3.10版本,出现多出点bug做处理,Hu Zhenzhen + % + % 原理方法:加上printtext避免破坏异步标点机制 + % 本可以用\printdate,但由于date选项设置为year,所以仅会给出年份 + % 所以无法再用选项设置的方法,印象需要用底层的命令 + % 这里可以用\blx@isodate,但用\blx@gbdate试图避免版本判断 + \newbibmacro*{newsdate}{%% + \printtext{\blx@gbdate{}{}}%%\blx@isodate{}{}% + } + + % + \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 + \ifboolexpr{% + test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}% + }% + {}%更新或修改日期通常有day信息 + {\iffieldundef{year}{% + \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{(}\printeventdate\printtext{)}}}% + {\printtext{(}\printenddate\printtext{)}}% + }{\iffieldequalstr{year}{}{%因为year存在,但为空 + }{\printtext{(}\blx@gbdate{}{}\printtext{)}}% + }% + }}% +} + +% +% biblatex>v3.8版利用related实现双语文献的处理 +% +\defversion{3.8}{dblang}{ + %为了实现v3.8以上版本的双语文献,采用related的方法代替set方法,因为set方法已经无法实现了, + %因为set不再复制其第一个成员的信息。于是定义一个命令,用于动态的修改数据,即添加related域的信息 + %其中使用了\DeclareStyleSourcemap,但由于其只能出现在导言区中,因此\defdoublelangentry命令也只能出现在导言区中 + \newcommand{\defdoublelangentry}[2]{% + \edef\entrykeya{##1} + \edef\entrykeyb{##2} + \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map{ + \step[fieldsource=entrykey, match=\entrykeya, final] + \step[fieldset=related, fieldvalue=\entrykeyb] + } + } + } + } +} + +% +% 关联文献间的分隔符 +% +\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}% + \def\bbx@tempa{}% + \setcounter{bbx:relatedtotal}{0}% + \def\do##1{% + \entrydata{##1}{% + \ifrelatedloop + {} + {\stepcounter{bbx:relatedtotal}% + \gappto{\bbx@tempa}{##1,}}}}% + \docsvfield{related}% + \restorefield{related}{\bbx@tempa}% + \ifnumgreater{\value{bbx:relatedtotal}}{0} + {\listcsxadd{bbx:relatedloop}{\strfield{entrykey}}% + \iffieldundef{clonesourcekey} + {} + {\listcsxadd{bbx:relatedloop}{\strfield{clonesourcekey}}}% + \setcounter{bbx:relatedcount}{0}% + \def\do{% + \stepcounter{bbx:relatedcount}% + \ifnumgreater{\value{bbx:relatedcount}}{0}%这里从1改为0 + {\ifcsundef{relateddelim\strfield{relatedtype}} + {\printtext{\relateddelim}} + {\printtext{\csuse{relateddelim\strfield{relatedtype}}}}} + {}}% + \ifbibmacroundef{related:\strfield{relatedtype}} + {\appto{\do}{\usebibmacro{related:default}}} + {\appto{\do}{\usebibmacro*{related:\strfield{relatedtype}}}}% + \iffieldformatundef{related:\strfield{relatedtype}} + {\def\bbx@tempa{related}} + {\def\bbx@tempa{related:\strfield{relatedtype}}}% + \iffieldformatundef{relatedstring:\strfield{relatedtype}} + {\def\bbx@tempb{relatedstring:default}} + {\def\bbx@tempb{relatedstring:\strfield{relatedtype}}}% + \printtext[\bbx@tempa]{% + \usebibmacro{begrelatedloop}% + \iffieldundef{relatedstring} + {\ifboolexpr{ + test {\ifnumgreater{\value{bbx:relatedtotal}}{1}} + and + test {\ifbibxstring{\thefield{relatedtype}s}} + } + {\printtext[\bbx@tempb]{% + \bibstring[\mkrelatedstring]{\thefield{relatedtype}s}}} + {\iffieldbibstring{relatedtype} + {\printtext[\bbx@tempb]{% + \bibstring[\mkrelatedstring]{\thefield{relatedtype}}}} + {}}} + {\iffieldbibstring{relatedstring} + {\printtext[\bbx@tempb]{% + \bibstring[\mkrelatedstring]{\thefield{relatedstring}}}} + {\printfield[\bbx@tempb]{relatedstring}}}% + \docsvfield{related}% + \usebibmacro{endrelatedloop}}}% + {}% + \usebibmacro{endrelated}}} +}{} + +% +% 关联文献块前的分隔符,针对biblatex>3.11 +% +% 原理方法:因为增加了begrelateddelim钩子,所以不需要重定义related输出宏 +\defversion{3.11}{related}{ +\renewcommand{\begrelateddelim}{\adddot\newline\nobreak} +} + +\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格式 +% 2016.07.01 byhzz +% 2019.05.01 byhzz 在eprint前增加一个空格 +% 原理方法:源来自standard.bbx,因为页码后面直接跟引用日期,没有标点所以去掉其中的标点。 +\renewbibmacro*{doi+eprint+url}{% +% \iftoggle{bbx:doi}%把doi的位置放到url后面 +% {\printfield{doi}} +% {}% + %\newunit\newblock + \iftoggle{bbx:eprint} + {\iffieldundef{eprint}{}{\newunit\usebibmacro{eprint}}} + {}% + %\newunit\newblock + \iftoggle{bbx:url} + {\usebibmacro{url+urldate}} + {} + \newunit\newblock + \iftoggle{bbx:doi} + {\printfield{doi}} + {}} + +% +% 调整页码的格式,即chapter+pages格式 +% +\renewbibmacro*{chapter+pages}{% +\iftoggle{bbx:gbstrict}{}{% + \printfield{chapter}}% + \iffieldundef{pages}{}{%这里增加一个判断,当没有页码时就不输出 + \setunit{\bibpagespunct}% + \printfield{pages}}% + %\newunit %这里的标点去掉 +} + +% +% 当location等出版项超过maxitem缩减后不再输出etal +% +\DeclareListFormat{location}{% + \usebibmacro{list:delim}{#1}% + #1\isdot} +\DeclareListAlias{institution}{location} +\DeclareListAlias{publisher}{location} + +% 新增一个样式用于输出连续出版物的地址,单位,时间, +% 用于periodical连续出版物的出版社和地址的处理 +% +% v1.0k,20180425,为出版信息增加字体控制命令,hzz +% %类似\newbibmacro*{publisher+location+date} +\newbibmacro*{location+institution+date}{\bibpubfont% +\iftoggle{bbx:gbpub}% +{\testCJKfirst{userd}% +\ifboolexpr{% +test {\iflistundef{location}} and test {\iflistundef{institution}}% +}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress}\space :\space\str@nopublisher]}% +{\printtext{[S.l.\space :\space s.n.\adddot]}}% +}{% +\iflistundef{location}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress]}}{\printtext{[S.l.\adddot]}}}% + {\printlist{location}}% +\addcolon\addspace% +\iflistundef{institution}{% +\iftoggle{ifCJKforgbt}{\printtext{[\str@nopublisher]}}{\printtext{\mkbibbrackets{s.n.}}}}% +{\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}% +} +% +% 通用的出版社和地址的处理 +% +% 原理方法:当没有出版社地址时,直接判断title的信息是否是中文,若为中文,则写出版地不详,否则用英文的字符表示。 +% 事实上title对于每个文献来说是必须的,所以用它判断是最快的,而且一般标题和出版社的语言是一样的。 +% 注意标准standard类型,因为当没有出版项时直接省略,所以做特殊处理 +\renewbibmacro*{publisher+location+date}{\bibpubfont% +\iftoggle{bbx:gbpub}% +{\testCJKfirst{userd}% + \ifboolexpr{ test {\iflistundef{location}} and test {\iflistundef{publisher}} }% + {\iffieldequalstr{note}{standard}{}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress}\space :\space\str@nopublisher]}{\printtext{[S.l.\space :\space s.n.\adddot]}}}}% + {\iflistundef{location}{%\adddot + \iffieldequalstr{note}{standard}{}%%从gbt7714-2015标准第19页看到,标准存在出版项时输出,没有时完全省略。 + {\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress]}\addcolon\addspace}{\printtext{[S.l.\adddot]}\addcolon\addspace}}}% \bibstring{noaddress} + {\printlist{location}\addcolon\addspace}%%\addcolon\addspace% + \iflistundef{publisher}{% + \iffieldequalstr{note}{standard}{}% + {\iftoggle{ifCJKforgbt}{\printtext{[\str@nopublisher]}\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 + }% +} + +% +% 修改了一个institution+location+date用于manual、report、thesis等类型 +% +% 20180425,v1.0k,增加了字体控制命令,hzz +% 20190105,v1.0o,加了一个编组避免\usebibmacro{date}把month和day信息去掉 +\renewbibmacro*{institution+location+date}{\bibpubfont%当没有institution时不处理。 +{\printlist{location}%%加了一个编组避免\usebibmacro{date}把month和day信息去掉 + \iflistundef{institution} + {\setunit*{\addcomma\space}} + {\setunit*{\addcolon\space}}% + \printlist{institution}% + \setunit*{\addcomma\space}% + \usebibmacro{date}% + %\newunit + }} + +% +% 对volume卷信息格式做出修改 +% v1.0o,20190105,hzz +% +\DeclareFieldFormat{volume}{% +\testCJKfirst{userd}% +\iftoggle{ifCJKforgbt}% +{\bibstring{serialcn}#1\bibstring{volumecn}}% +{\bibstring{volume}~#1}% +}% volume of a book +\DeclareFieldFormat[article,periodical]{volume}{#1}% volume of a journal + +% +% 对number册信息格式做出修改 +% v1.0o,20190105,hzz +% +\DeclareFieldFormat{number}{#1}% +\DeclareFieldFormat[book,collection,inbook,% +incollection,proceedings,inproceedings]{number}{% +\testCJKfirst{userd}% +\iftoggle{ifCJKforgbt}% +{\bibstring{serialcn}#1\bibstring{numbercn}}% +{#1}% +}% + +% +% 对edition版本信息格式做出修改 +% +\DeclareFieldFormat{edition}{\bibtitlefont%源来自biblatex.DEF +\testCJKfirst{userd}% +\iftoggle{ifCJKforgbt}% +{\ifinteger{#1}% +{\printtext{#1\str@edition}}% +{#1\isdot}}% +{\ifinteger{#1}% +{\mkbibordedition{#1}~\bibstring{edition}}% +{#1\isdot}}} + +% +% 对version的版本信息做出修改 +% +\DeclareFieldFormat{version}{\bibtitlefont%源来自biblatex.DEF +\testCJKfirst{userd}% +\ifinteger{#1}% +{\iftoggle{ifCJKforgbt}{\printtext{#1\str@edition}}% +{\mkbibordedition{#1}~\bibstring{version}}}% +{#1\isdot}} + +% +% 修改析出文献的文集的标题与附加标题间的符号 +% +\renewbibmacro*{booktitle}{% + \ifboolexpr{ + test {\iffieldundef{booktitle}} + and + test {\iffieldundef{booksubtitle}} + } + {} + {\printtext[booktitle]{\bibtitlefont% + \printfield[titlecase]{booktitle}% + \setunit{\subtitlepunct}% + \printfield[titlecase]{booksubtitle}}% + \newunit%标点换成下一句 + \setunit{\subtitlepunct}}% + \printfield{booktitleaddon}} + + +% +% 调整期刊名的格式 +% +% v1.0k,20180425,增加了字体控制命令,hzz +\renewbibmacro*{journal+issuetitle}{\bibpubfont%源来自standard.bbx + \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}% + \iffieldundef{volume}{}{\setunit{\addcomma\space}}% + %换成逗号和空格 + \usebibmacro{issue}% + \usebibmacro{volume+number+eid}%把卷期放到年份后面 + %\newunit + } + + + +% +% 调整期刊卷和期的格式 +% +\renewbibmacro*{volume+number+eid}{%源来自standard.bbx +\iftoggle{bbx:gbfieldstd}{% + \printfield{volume}% + \setunit*{\adddot}% + \printfield{number}% + \setunit{\addcomma\space}% + \printfield{eid}}{% + \printfield{volume}% + %\setunit*{\adddot}%去掉点号 + %\printfield{number}% + \iffieldundef{number}{}{\printtext{\mkbibparens{\printfield{number}}}}%增加一个圆括号 + \iffieldundef{eid}{}{% + \setunit{\addcomma\space}% + \printfield{eid}}}} + +% +% 调整期刊年份的格式 +% +\renewbibmacro*{issue+date}{%去掉括号 + \printtext{%去掉了[parens] + \iffieldundef{issue} + {%\usebibmacro{date} + \iffieldundef{note}{\usebibmacro{date}}%判断一下,是否是报纸 + {\iffieldequalstr{note}{news}{\usebibmacro{newsdate}}%判断是否为报纸 + {\usebibmacro{date}}% + }}% + {\iftoggle{bbx:gbstrict}{}{\printfield{issue}% + \setunit*{\addspace}}% + %\usebibmacro{date} + \iffieldundef{note}{\usebibmacro{date}}%判断一下,是否是报纸 + {\iffieldequalstr{note}{news}{\usebibmacro{newsdate}}%判断是否为报纸 + {\usebibmacro{date}}% + }}}% + %\newunit + } + +% +% 调整页码前的标点和去掉期刊文章等页码后面的标点 +% +\renewbibmacro*{note+pages}{%源来自standard.bbx + %\printfield{note}%不要note,note用来判断是否是报纸newspaper + \iffieldundef{pages}{}{ + \setunit{\bibpagespunct}% + \printfield{pages}}% + %\newunit + } + + +% +% 编者的符号修改一下 +% v1.0 2016-07-01 +% v1.0q 2019-03-01 hzz 修改editortype前的标点 +% +\renewbibmacro*{editor}{%源来自biblatex.DEF + \ifboolexpr{ + test \ifuseeditor + and + not test {\ifnameundef{editor}} + } + {\printnames{editor}% + \iffieldundef{editortype}%增加一个类型判断,用于存在editortype的情况 + {\setunit\addspace}%当没有editortype时,直接用句点 + {%\setunit{\addcomma\space}% + \usebibmacro{editorstrg}}% + %\clearname{editor} + }% + {}} + +% +% 编者类型做一修改 +% v1.0 2016-07-01 +% v1.0q 2019-03-01 hzz 修改editortype不同语言的不同本地化字符串 +% +\renewbibmacro*{editorstrg}{%源来自biblatex.DEF + \printtext[editortype]{% + \iffieldundef{editortype} + {% +% \ifboolexpr{ %这一段去掉,未定义编者类型情况下不处理 +% test {\ifnumgreater{\value{editor}}{1}} +% or +% test {\ifandothers{editor}} +% } +% {\bibstring{editors}} +% {\bibstring{editor}} + } + {\ifbibxstring{\thefield{editortype}} %定义编者类型情况下处理,以后根据需要修改 + {\ifboolexpr{ + test {\ifnumgreater{\value{editor}}{1}} + or + test {\ifandothers{editor}} + } + {\printdelim{streditortypes}} + {\printdelim{streditortype}}} + {\thefield{editortype}}}% + }} + +% +% 编者类型的本地化字符串输出 +% v1.0q 2019-03-01 hzz +% 能对不同条目类型作格式设置的域格式,能对不同环境做格式设置的分隔符 +% 能对不同文境作设置的包括排序,标签等 +% 这里因为考虑可能标注和文献表中存在不同,所以用分隔符来输出本地化字符串 +% +\DeclareDelimFormat{streditortypes}{% + \edef\userfieldabcde{userd}% + \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% + \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% + \ifcase\value{gbbiblocalcase}% + \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{\thefield{editortype}scn}}{}% + \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{\thefield{editortype}skr}}{}% + \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{\thefield{editortype}sjp}}{}% + \iffieldequalstr{\userfieldabcde}{english}{\addcomma\addthinspace\bibstring{\thefield{editortype}s}}{}% + \iffieldequalstr{\userfieldabcde}{french}{\addcomma\addthinspace\bibstring{\thefield{editortype}s}}{}% + \iffieldequalstr{\userfieldabcde}{russian}{\addcomma\addthinspace\bibstring{\thefield{editortype}s}}{}% + \or% + \bibstring{\thefield{editortype}scn}% + \or% + \addcomma\addthinspace\bibstring{\thefield{editortype}s}% + \fi} +% +\DeclareDelimFormat{streditortype}{% + \edef\userfieldabcde{userd}% + \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% + \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% + \ifcase\value{gbbiblocalcase}% + \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{\thefield{editortype}cn}}{}% + \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{\thefield{editortype}kr}}{}% + \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{\thefield{editortype}jp}}{}% + \iffieldequalstr{\userfieldabcde}{english}{\addcomma\addthinspace\bibstring{\thefield{editortype}}}{}% + \iffieldequalstr{\userfieldabcde}{french}{\addcomma\addthinspace\bibstring{\thefield{editortype}}}{}% + \iffieldequalstr{\userfieldabcde}{russian}{\addcomma\addthinspace\bibstring{\thefield{editortype}}}{}% + \or% + \bibstring{\thefield{editortype}cn}% + \or% + \addcomma\addthinspace\bibstring{\thefield{editortype}}% + \fi} + + +% +% bookauthor域的输出, +% v1.0q 2019-03-01 hzz +% 不再对editor和bookauthor做sourcemap,而是下面的宏内逻辑代替, +% 使得除使用bookauthor外也可以使用editor,便于在使用editor时使用editortype +\renewbibmacro*{bybookauthor}{% + \ifnameundef{bookauthor}% + {\ifnameundef{editor}% + {}% + {\ifnamesequal{author}{editor}% + {}{\usebibmacro{editor}}}% + }% + {\ifnamesequal{author}{bookauthor}% + {}{\printnames{bookauthor}}% + }% +} + +% +% 修改期刊的标题 +% +\renewbibmacro*{periodical}{%源来自biblatex.DEF + \iffieldundef{title} + {} + {\printtext[title]{\bibtitlefont% + \printfield[titlecase]{title}% + %\setunit{\subtitlepunct}% + \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题 + {}{\setunit{\subtitlepunct} + \printfield[titlecase]{subtitle}}% + %}%把编组结束移到后面去 + \iftoggle{bbx:gbtype}{% + \iffieldundef{usera}{}{%在标题后直接给出文献标识字母 + \printfield[gbtypeflag]{usera}}}{} + }} + } + +% +% 期刊的标题做修改 +% +\renewbibmacro*{title+issuetitle}{%源来自standard.BBX + \usebibmacro{periodical}% + %\setunit*{\addspace}% + \setunit*{\adddot\addspace}%标点修改为句点 + \iffieldundef{series} + {} + {\newunit + \printfield{series}% + \setunit{\addspace}}% + \usebibmacro{periodical+issue}%将issue调整到上面来,并修改 +\iffieldundef{number}{}{%%进一步处理有范围的数字 + \multinumberparser{\thefield{number}}}% + \iffieldundef{volume}% + {\printfield{year}% + \printtext{\mkbibparens{\multinumberfirst}}% + \bibrangedash% + \iffieldundef{endyear}{}{\printfield{endyear}\printtext{\mkbibparens{\multinumbersecond}}}% + }% + {\multivolparser{\thefield{volume}}% + \printfield{year}% + \setunit{\addcomma\space}%将冒号修改为逗号 + \printtext{\multivolfirst}% + \printtext{\mkbibparens{\multinumberfirst}}% + \bibrangedash% + \iffieldundef{endyear}{}{% + \printfield{endyear}% + \setunit{\addcomma\space}%将冒号修改为逗号 + \printtext{\multivolsecond}% + \printtext{\mkbibparens{\multinumbersecond}}}% + }% + \setunit{\addcomma\space}% + \printfield{eid}% + \setunit{\addspace}% + %\usebibmacro{issue+date}% + %\setunit{\addcolon\space}% + \usebibmacro{issue}% + \newunit} + +% +% 新增一个样式用于调整期刊年份的格式,只打印年份 +% +\newbibmacro*{periodical+issue}{% + \printtext{%去掉了[parens] + \iffieldundef{issue} + {%\usebibmacro{date}%修改为下一句 + }% + {\printfield{issue}% + \setunit*{\addspace}% + %\usebibmacro{date}%修改为下一句 + }% + }% + %\newunit +} + +% +% 重设专利title的输出,将文献类型标识符输出出去 +% +\newbibmacro*{patenttitle}{%原输出来自biblatex.def文件 + \ifboolexpr{% + test{\iffieldundef{title}}% + and% + test{\iffieldundef{subtitle}}% + }% + {}% + {\printtext[title]{\bibtitlefont% + \printfield[titlecase]{title}% + \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题 + {}{\setunit{\subtitlepunct}% + \printfield[titlecase]{subtitle}}% + \iffieldundef{titleaddon}{}%判断一下titleaddon,否则直接加可能多一个空格 + {\setunit{\subtitlepunct}\printfield{titleaddon}}% + \setunit{\subtitlepunct}\printfield{number}%写专利号 + \iftoggle{bbx:gbtype}{\printfield[gbtypeflag]{usera}}{}% + %\iffieldundef{booktitle}{\newunit}{}%当title是析出时,不要标点 + %\newunit + }% +}% +} + + + +% +% 修改in:用于inbook、incollection、inproceedings等类型 +% 2018.04.20,v1.0k,renewed marco,by hzz +% 20190212,v1.0q,增加中英文区分,by hzz +% +% 原理方法:使用bibmacro{in:}改变了以前在driver中直接输出//的方式,同时也简化了标点控制。 +\renewbibmacro*{in:}{% + \iftoggle{bbx:gbpunctin}{\printtext{\allowbreak\texttt{//}\allowbreak}}%\addthinspace + {\setunit{\adddot\addspace}% + \iffieldequalstr{userd}{chinese}% + {\printtext{\bibstring{incn}}}% + {\printtext{\bibstring{in}}}% + }}%\newunit\newblock\intitlepunct + +% +% 修改type域的输出格式 +% 2019.02.12,v1.0q,byhzz +% 使其可以区分中英文输出不同的格式,比如博士论文英文输出PHD thesis,中文则是博士学位论文 +\DeclareFieldFormat{type}% +{\iffieldequalstr{userd}{chinese}% + {\ifbibxstring{#1cn}{\bibxstring{#1cn}}{#1}}% + {\ifbibstring{#1}{\bibstring{#1}}{#1}}% +} + +% +% 修改series域的输出格式 +% 2019.05.01,v1.0r,byhzz +\renewbibmacro*{series+number}{% + \printfield{series}% + %\setunit*{\addspace}% + %\printfield{number}% + %\newunit + } + +%===================================================================== +%设置驱动格式 +%===================================================================== +% +% book条目类的驱动 +% + \DeclareBibliographyDriver{book}{%源来自standard.bbx文件 + \usebibmacro{bibindex}% + \usebibmacro{begentry}% +\usebibmacro{author/editor+others/translator+others}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 +\usebibmacro{maintitle+title}% +\iftoggle{bbx:gbstrict}{}{% +\newunit +\printlist{language}% +\newunit\newblock% +\usebibmacro{byauthor}% +\newunit\newblock}% +\usebibmacro{byeditor+others}% +\newunit +\printfield{edition}% +\newunit\newblock%% +\iftoggle{bbx:gbstrict}{}{% +\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}% + \iffieldundef{url}{}{%当没有网址时也不输出 + \usebibmacro{modifydate}}%带括号的修改或更新日期, +\usebibmacro{doi+eprint+url}%从下面移动到上面来,因为gbt2015的url需直接放在页码后面。 + \newunit\newblock% + \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}\usebibmacro{annotation}} + + +% +% 期刊文章,连续出版物中的析出文献的格式 +% + \DeclareBibliographyDriver{article}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author/translator+others}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 + \usebibmacro{title}% + \iftoggle{bbx:gbstrict}{}{% + \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}% + \iffieldequalstr{note}{news}{}{%当是新闻时不输出修改或更新日期 + \iffieldundef{url}{}{%当没有网址时也不输出 + \iftoggle{bbx:url}{%当url选项为false时,也不输出 + \usebibmacro{modifydate}}{}}}%带括号的修改或更新日期, + \usebibmacro{doi+eprint+url}%从后面移上来,调整url和页码之间的位置 + \newunit\newblock + \iftoggle{bbx:isbn} + {\printfield{issn}} + {}% + \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}\usebibmacro{annotation}} + + + +% +% 连续出版物的驱动 +% + \DeclareBibliographyDriver{periodical}{%源来自standard.BBX + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{editor}% + %\setunit{\labelnamepunct}\newblock + \newunit\newblock %删除上面一行,添加这一行 + \usebibmacro{title+issuetitle}% + \newunit\newblock% + \usebibmacro{location+institution+date}%添加这一行用于输出地址,单位和时间 + \newunit\newblock%添加这一行 + \iftoggle{bbx:gbstrict}{}{% + \printlist{language}% + \newunit\newblock + \usebibmacro{byeditor}% + \newunit\newblock + \printfield{note}% + \newunit\newblock} + \iftoggle{bbx:isbn} + {\printfield{issn}} + {}% + \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}\usebibmacro{annotation}} + +% +% 专利文献驱动 +% + \DeclareBibliographyDriver{patent}{%源来自standard.BBX + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 + %\usebibmacro{title}% + \usebibmacro{patenttitle}%给出专利专用的标题输出 + \iftoggle{bbx:gbstrict}{}{% + \newunit% + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}}% + \newunit\newblock + \printfield{type}% + \setunit*{\addspace}% + %\printfield{number}%已放到patenttitle中处理 + \iflistundef{location} + {} + {\setunit*{\addspace}% + \printtext{%[parens] + \printlist[][-\value{listtotal}]{location}}}% + \newunit\newblock + \usebibmacro{byholder}% + \newunit\newblock + \printfield{note}% + \newunit\newblock + \usebibmacro{newsdate}% + %\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}\usebibmacro{annotation}} + + +% +% 在线文献驱动 +% +\DeclareBibliographyDriver{online}{%源来自standard.BBX + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author/editor+others/translator+others}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 + \usebibmacro{title}% + \iftoggle{bbx:gbstrict}{}{% + \newunit% + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{byeditor+others}% + \newunit\newblock + \printfield{note}}% + \newunit + \printfield{version}% + \newunit\newblock + %\printlist{organization}% + \printlist{institution}% + \newunit\newblock +\ifboolexpr{% +test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}% +}{\usebibmacro{date}}% +{\usebibmacro{modifydate}}%修改或更新日期,为带括号的时间 + \usebibmacro{url+urldate}%从下面移上来 + \newunit\newblock + \iftoggle{bbx:eprint} + {\usebibmacro{eprint}} + {}% + \newunit\newblock + %\usebibmacro{url+urldate}% + %\newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% + \usebibmacro{finentry}\usebibmacro{annotation}} + + +% +% 报告类型驱动 +% 当有网址无出版项时,用online输出 +% +\DeclareBibliographyDriver{report}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 + \usebibmacro{title}% + \iftoggle{bbx:gbstrict}{}{% + \newunit% + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}}% + \newunit\newblock + \usebibmacro{byeditor+others}%增加的译者信息 + \newunit\newblock + \printfield{type}% + \setunit*{\addspace}% + \printfield{number}% + \newunit\newblock + \printfield{version}% + \newunit + \printfield{note}% + \newunit\newblock + \usebibmacro{publisher+location+date}% + %\newunit\newblock + \usebibmacro{chapter+pages}% + \usebibmacro{doi+eprint+url}% + \newunit + \printfield{pagetotal}% + \newunit\newblock + \iftoggle{bbx:isbn} + {\printfield{isrn}} + {}% + \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}\usebibmacro{annotation}} + +% +% 论文、手册类型驱动 +% 2016-11-11,增加了译者信息 +% +\DeclareBibliographyDriver{manual}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 + \usebibmacro{title}% + \iftoggle{bbx:gbstrict}{}{% + \newunit% + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}}% + \newunit\newblock + \usebibmacro{byeditor+others}%增加的译者信息 + \newunit\newblock + \iftoggle{bbx:gbfieldtype}{% + \printfield{type}% + \setunit*{\addspace}}{}% + \printfield{number}% + \newunit\newblock + \printfield{version}% + \newunit + \printfield{note}% + \newunit\newblock + \usebibmacro{institution+location+date}% + %\newunit\newblock + \usebibmacro{chapter+pages}% + \iffieldundef{url}{}{%当没有网址时也不输出修改或更新日期 + \usebibmacro{modifydate}}%修改或更新日期为带括号的时间 + \usebibmacro{doi+eprint+url}% + \newunit + \printfield{pagetotal}% + \newunit\newblock + \iftoggle{bbx:isbn} + {\printfield{isrn}} + {}% + \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}\usebibmacro{annotation}} + +% +% 备选类型驱动 +% +% 利用biblatex的misc驱动 +\DeclareBibliographyDriver{misc}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author/editor+others/translator+others}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 + \usebibmacro{title}% +\iftoggle{bbx:gbstrict}{}{% + \newunit + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{byeditor+others}}% + \newunit\newblock + \printfield{howpublished}% + \newunit\newblock + \printfield{type}% + \newunit + \printfield{version}% + \newunit + \printfield{note}% + \newunit\newblock + \usebibmacro{institution+location+date}% + %\usebibmacro{organization+location+date}% + %\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}\usebibmacro{annotation}} + + +% +% 专著中的析出文献的格式修改 +% +\DeclareBibliographyDriver{inbook}{%源来自standard.bbx + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author/translator+others}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 +\usebibmacro{title}% +\usebibmacro{in:}% +%\printtext{\texttt{//}\addthinspace}% + \usebibmacro{bybookauthor}% + \ifnameundef{bookauthor}{% + \ifnameundef{editor}{}{\newunit}% + }{\newunit}%替换下一句 + %\newunit\newblock +\iffieldundef{series}{}{\usebibmacro{series+number}\setunit{\addcolon\addspace}}%为处理一些存在series的情况而增加 + \usebibmacro{maintitle+booktitle}% +\iffieldundef{volume}{}{\setunit{\addcolon\addspace}\printfield{volume}}% +\iffieldundef{number}{}{\setunit{\addcolon\addspace}\printfield{number}}%增加卷和册信息 + \newunit\newblock% +% \usebibmacro{byeditor+others}% +% \newunit\newblock + \printfield{edition}% + \newunit + \iftoggle{bbx:gbstrict}{}{% +% \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 + \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}\usebibmacro{annotation}} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015.cbx index 43705f28cc..9a44c7462e 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015.cbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015.cbx @@ -1,376 +1,376 @@ -%% -%% --------------------------------------------------------------- -%% biblatex-gb7714-2015 --- A biblatex implementation of the -%% GBT7714-2015 citation style,numerical sequence -%% Maintained by huzhenzhen -%% E-mail: hzzmail@163.com -%% Released under the LaTeX Project Public License v1.3c or later -%% --------------------------------------------------------------- -%% -\def\versionofgbtstyle{2020/07/21 v1.0v} -\ProvidesFile{gb7714-2015.cbx}[\versionofgbtstyle biblatex citation style] - -% -% 加载标准样式 -% -\RequireCitationStyle{numeric-comp} %numeric - - -% -% 选项设置 -% -\ExecuteBibliographyOptions{ - autocite = superscript , - autopunct = true , - %sorting = none , - maxcitenames=1, - mincitenames=1, -} - -%textcite标注命令中的标点设置 -%\DeclareDelimFormat[textcite]{andothersdelim}{\addspace}% - -% -%将连续3篇文献压缩改为连续2篇文献压缩 -% -%该宏的目的是抛弃压缩内部的编号,而仅输出最后一个编号,主要通过cbx@tempcnta来控制 -%一般情况下cbx@tempcnta为0,所以该宏不输出任何内容。当cbx@tempcnta在cite:comp:comp宏中更改变大后 -%说明开始进入需要压缩的范围,当到压缩终点时,cbx@tempcnta必然大于1,则输出内容。 -%修改第二行的数字1为0即可将默认的3个开始压缩变为2个开始压缩。 -\renewbibmacro*{cite:dump}{% - \ifnumgreater{\value{cbx@tempcnta}}{0}% - {\ifnumgreater{\value{cbx@tempcnta}}{0}%1改为0,可以将压缩起始3个编号改为2个编号 - {\bibrangedash}% - {\multicitedelim}% - \bibhyperref[\cbx@lastkey]{% - \ifdef\cbx@lastprefix% - {\printtext[labelprefix]{\cbx@lastprefix}}% - {}% - \printtext[labelnumber]{\cbx@lastnumber}}}% - {}% - \setcounter{cbx@tempcnta}{0}% - \global\undef\cbx@lastprefix} - -% -% 定义一个上标方括号wrapper -% -\newcommand*\mkbibsuperbracket[1]{% - \mkbibsuperscript{\mkbibbrackets{#1}}% -} - -% 修改postnote的输出格式 -\DeclareFieldFormat{postnote}{#1} - -% -% 重定义cite命令 -% -% 方法:\DeclareCiteCommand{\cite}[\mkbibparens]{precode}{loopcode}{sepcode}{postcode} -% v1.0p版后将cite的处理方式修改为类似pagescite,而不再使用biblatex的标准方式 -\DeclareCiteCommand{\cite}[\mkbibsuperscript]%利用mkbibsuperbracket添加方括号 - {[\usebibmacro{cite:init}% - \usebibmacro{prenote}} - {\usebibmacro{citeindex}% - \usebibmacro{cite:comp}} - {} - {\usebibmacro{cite:dump}]% - \printfield{postnote}} -% v1.0p 以前用的方式 -%\DeclareCiteCommand{\cite}[\mkbibsuperbracket]%利用mkbibsuperbracket添加方括号 -% {\usebibmacro{cite:init}% -% \usebibmacro{prenote}} -% {\usebibmacro{citeindex}% -% \usebibmacro{cite:comp}} -% {} -% {\usebibmacro{cite:dump}% -% \usebibmacro{postnote}} - -% -% 定义upcite命令 -% 20180604,v1.0l,hzz -% 20190409,v1.0r,hzz -% 方法:对supercite增加[] -\newrobustcmd*{\upcite}{% - \cite} - -% -% 重定义parencite命令,以满足标签带页码的国标要求 -% -\DeclareCiteCommand{\parencite}%[\mkbibbrackets] - {[\usebibmacro{cite:init}%] - \usebibmacro{prenote}}% - {\usebibmacro{citeindex}% - \usebibmacro{cite:comp}} - {} - {%[ - \usebibmacro{cite:dump}]% - \mkbibsuperscript{\printfield{postnote}}} - -% -% 新定义pagescite命令,以满足标签带页码的国标要求 -% -% 原理方法: -% 1.新增页码输出宏 -\newbibmacro*{postpages}{% - \iffieldundef{postnote} - {\printfield[postnote]{pages}} - {\printfield{postnote}}} -% 2.新增\pagescite引用命令 -\DeclareCiteCommand{\pagescite}[\mkbibsuperscript]%\mkbibbrackets,仍然用上标 - {[\usebibmacro{cite:init}%]直接添加方括号 - \usebibmacro{prenote}% - } - {\usebibmacro{citeindex}% - \usebibmacro{cite:comp}} - {} - {\usebibmacro{cite:dump}]% - \usebibmacro{postpages}} - -% -% 定义yearpagescite,为与ay样式兼容,等同于\pagescite -% -\DeclareCiteCommand{\yearpagescite}[\mkbibsuperscript]%\mkbibbrackets,仍然用上标 - {[\usebibmacro{cite:init}%]直接添加方括号 - \usebibmacro{prenote}% - } - {\usebibmacro{citeindex}% - \usebibmacro{cite:comp}} - {} - {\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}]} - -% -% 定义\authornumcite命令,输出作者信息,然后在后面带上顺序编码 -% 20180427,v1.0k,增加,hzz -% gb7714样式新定义的命令都把cite放到最后,比如前面的pagescite,yearcite,这里的\authornumcite -% 区别于biblatex定义的命令都把cite放到前面,比如citeauthor等。 -%见numeric.CBX -\newbibmacro*{cite}{% - \printtext[bibhyperref]{% - \printfield{labelprefix}% - \printfield{labelnumber}% - \ifbool{bbx:subentry} - {\printfield{entrysetcount}} - {}}} -%见numeric.CBX,\DeclareCiteCommand{\cite}, -\DeclareCiteCommand{\authornumcite}%[\mkbibsuperscript] - {\usebibmacro{prenote}} - {\iffieldequalstr{userf}{cn}{\renewcommand*{\andothersdelim}{\addthinspace}}%\addthinspace - {\renewcommand*{\andothersdelim}{\addspace}}% - \printnames{labelname}\mkbibsuperscript{\mkbibbrackets{\usebibmacro{citeindex}% - \usebibmacro{cite}}}} - {\multicitedelim} - {\mkbibsuperscript{\printfield{postnote}}} - - -% -% 增加如下多个命令 -% 20190409,v1.0r,hzz -% 方法:利用newcommand或newrobustcmd命令进行定义 -% 注意\citet和\citep命令之所以不用newrobustcmd,是为避免加载natbib模块后产生冲突 -%\DeclareCiteCommand{\citet}% -% {\usebibmacro{prenote}} -% {\iffieldequalstr{userf}{cn}{\renewcommand*{\andothersdelim}{\addthinspace}}%\addthinspace -% {\renewcommand*{\andothersdelim}{\addspace}}% -% \printnames{labelname}\mkbibsuperscript{\mkbibbrackets{\usebibmacro{citeindex}% -% \usebibmacro{cite}}}} -% {\multicitedelim} -% {\mkbibsuperscript{\printfield{postnote}}} - -% -% 重定义citet,因为前面与\authornumcite同定义的命令无法正确处理多个bibtexkey同时给出的压缩情况 -% 20200721,v1.0v,hzz -% 方法:利用textcite命令进行定义 -% 基本利用textcite命令来写citet,仅利用bool{cbx:incitet}做判断,进而处理不同的上标和页码形式 -\newbool{cbx:incitet} -\global\booltrue{cbx:incitet} - -\newbibmacro*{citet}{% - \iffieldequals{namehash}{\cbx@lasthash}% - {\usebibmacro{cite:comp}}% - {\usebibmacro{cite:dump}% - \ifbool{cbx:parens}% - {\mkbibsuperscript{\printtext{\bibclosebracket}}\global\boolfalse{cbx:parens}}% - {}% - \iffirstcitekey - {} - {\textcitedelim}% - \usebibmacro{cite:init}% - \ifnameundef{labelname} - {\printfield[citetitle]{labeltitle}} - {\printnames{labelname}}% - \setunit*{\printdelim{namelabeldelim}}% - \mkbibsuperscript{\printtext{\bibopenbracket}\global\booltrue{cbx:parens}% - \ifnumequal{\value{citecount}}{1} - {\usebibmacro{prenote}}% - {}% - \usebibmacro{cite:comp}% - \stepcounter{textcitecount}% - \savefield{namehash}{\cbx@lasthash}}}} - -\DeclareCiteCommand{\cbx@textcite}% - {\usebibmacro{cite:init}}% - {\usebibmacro{citeindex}% - \ifbool{cbx:incitet}{\usebibmacro{citet}}{\usebibmacro{textcite}}% - }% - {}% - {\ifbool{cbx:incitet}{\mkbibsuperscript{\usebibmacro{cite:dump}\usebibmacro{postnote}}}% - {\usebibmacro{cite:dump}\usebibmacro{postnote}}% - \ifbool{cbx:parens}% - {\ifbool{cbx:incitet}{\mkbibsuperscript{\bibclosebracket}}{\bibclosebracket}% - \global\boolfalse{cbx:parens}}% - {}} - - \newrobustcmd{\cbx@citet@init}[2]{% - \global\booltrue{cbx:incitet}% - \setcounter{textcitetotal}{0}% - \setcounter{textcitecount}{0}% - \def\cbx@savedcites{#1}#2\cbx@savedcites\empty} - - \renewrobustcmd{\cbx@textcite@init}[2]{% - \global\boolfalse{cbx:incitet}% - \setcounter{textcitetotal}{0}% - \setcounter{textcitecount}{0}% - \def\cbx@savedcites{#1}#2\cbx@savedcites\empty} - -\DeclareCiteCommand{\citet}[\cbx@citet@init\cbx@textcite] - {\gdef\cbx@savedkeys{}% - \citetrackerfalse% - \pagetrackerfalse% - \DeferNextCitekeyHook% - \usebibmacro{cite:init}} - {\ifthenelse{\iffirstcitekey\AND\value{multicitetotal}>0} - {\protected@xappto\cbx@savedcites{()(\thefield{multipostnote})}% - \global\clearfield{multipostnote}} - {}% - \xappto\cbx@savedkeys{\thefield{entrykey},}% - \iffieldequals{namehash}{\cbx@lasthash} - {} - {\stepcounter{textcitetotal}% - \savefield{namehash}{\cbx@lasthash}}} - {} - {\protected@xappto\cbx@savedcites{% - [\thefield{prenote}][\thefield{postnote}]{\cbx@savedkeys}}} - - - -\DeclareCiteCommand{\citep}[\mkbibsuperscript]%利用mkbibsuperbracket添加方括号 - {[\usebibmacro{cite:init}% - \usebibmacro{prenote}} - {\usebibmacro{citeindex}% - \usebibmacro{cite:comp}} - {} - {\usebibmacro{cite:dump}]% - \printfield{postnote}} - -\newrobustcmd*{\citetns}% - {\textcite} - -\newrobustcmd*{\citepns}% - {\parencite} - -\newrobustcmd*{\inlinecite}% - {\parencite} - -% -% 增加如下复数的命令,以符合biblatex的复数命令习惯 -% 20190430,v1.0r,hzz -% citec和citecs命令是实现了[1]-[3]这样的压缩形式。 -% authornumcites是常用命令authornumcite的复数形式 -\DeclareFieldFormat{labelbracket}{\mkbibbrackets{#1}} - -\newbibmacro*{citec:comp:comp}{% - \ifboolexpr{ - ( test {\iffieldundef{labelprefix}} and test {\ifundef\cbx@lastprefix} ) - or - test {\iffieldequals{labelprefix}{\cbx@lastprefix}} - } - {\ifnumequal{\thefield{labelnumber}}{\value{cbx@tempcntb}} - {\savefield{entrykey}{\cbx@lastkey}% - \savefield{labelnumber}{\cbx@lastnumber}% - \addtocounter{cbx@tempcnta}{1}} - {\ifnumequal{\thefield{labelnumber}}{\value{cbx@tempcntb}-1} - {} - {\usebibmacro{citec:dump}% - \ifnumgreater{\value{cbx@tempcntb}}{-1} - {\multicitedelim} - {}% - \printtext[bibhyperref]{% - \printfield{labelprefix}% - \printtext[labelbracket]{\printfield{labelnumber}}}}}} - {\usebibmacro{cite:comp:end}}% - \setcounter{cbx@tempcntb}{\thefield{labelnumber}}% - \savefield{labelprefix}{\cbx@lastprefix}} - -\newbibmacro*{citec:comp}{% - \addtocounter{cbx@tempcntb}{1}% - \iffieldundef{shorthand} - {\ifbool{bbx:subentry} - {\iffieldundef{entrysetcount} - {\usebibmacro{citec:comp:comp}} - {\usebibmacro{cite:comp:inset}}} - {\usebibmacro{citec:comp:comp}}} - {\usebibmacro{cite:comp:shand}}} - -\newbibmacro*{citec:dump}{% - \ifnumgreater{\value{cbx@tempcnta}}{0} - {\ifnumgreater{\value{cbx@tempcnta}}{1} - {\bibrangedash} - {\multicitedelim}% - \bibhyperref[\cbx@lastkey]{% - \ifdef\cbx@lastprefix - {\printtext[labelprefix]{\cbx@lastprefix}} - {}% - \printtext[labelbracket]{\cbx@lastnumber}}}%labelnumber - {}% - \setcounter{cbx@tempcnta}{0}% - \global\undef\cbx@lastprefix} - -%\DeclareCiteCommand{\citec}[\mkbibsuperscript]%[\mkbibbrackets] -% {\usebibmacro{cite:init}% -% \usebibmacro{prenote}} -% {\usebibmacro{citeindex}% -% \usebibmacro{citec:comp}} -% {} -% {\usebibmacro{citec:dump}% -% \usebibmacro{postnote}} - -%上面这个用于非压缩情况,这里考虑了压缩的情况 -\DeclareCiteCommand{\citec}[\mkbibsuperscript]% - {\ifnumless{\value{multicitecount}}{2} - {\usebibmacro{cite:init}% - \usebibmacro{prenote}} - {\iffieldundef{prenote} - {\iffieldundef{postnote} - {} - {\usebibmacro{citec:dump}% - \usebibmacro{cite:init}% - \setunit{\multicitedelim}}} - {\usebibmacro{citec:dump}% - \usebibmacro{cite:init}% - \setunit{\multicitedelim}% - \usebibmacro{prenote}}}} - {\usebibmacro{citeindex}% - \usebibmacro{citec:comp}} - {} - {\ifboolexpr{ test {\ifnumequal{\value{multicitecount}}{\value{multicitetotal}}} - or not test {\iffieldundef{postnote}}} - {\usebibmacro{citec:dump}% - \usebibmacro{postnote}} - {}} - -\DeclareMultiCiteCommand{\citecs}[\mkbibsuperscript]{\citec}{} - -\DeclareMultiCiteCommand{\authornumcites}[]{\authornumcite}{\multicitedelim} +%% +%% --------------------------------------------------------------- +%% biblatex-gb7714-2015 --- A biblatex implementation of the +%% GBT7714-2015 citation style,numerical sequence +%% Maintained by huzhenzhen +%% E-mail: hzzmail@163.com +%% Released under the LaTeX Project Public License v1.3c or later +%% --------------------------------------------------------------- +%% +\def\versionofgbtstyle{2021/01/19 v1.0w} +\ProvidesFile{gb7714-2015.cbx}[\versionofgbtstyle biblatex citation style] + +% +% 加载标准样式 +% +\RequireCitationStyle{numeric-comp} %numeric + + +% +% 选项设置 +% +\ExecuteBibliographyOptions{ + autocite = superscript , + autopunct = true , + %sorting = none , + maxcitenames=1, + mincitenames=1, +} + +%textcite标注命令中的标点设置 +%\DeclareDelimFormat[textcite]{andothersdelim}{\addspace}% + +% +%将连续3篇文献压缩改为连续2篇文献压缩 +% +%该宏的目的是抛弃压缩内部的编号,而仅输出最后一个编号,主要通过cbx@tempcnta来控制 +%一般情况下cbx@tempcnta为0,所以该宏不输出任何内容。当cbx@tempcnta在cite:comp:comp宏中更改变大后 +%说明开始进入需要压缩的范围,当到压缩终点时,cbx@tempcnta必然大于1,则输出内容。 +%修改第二行的数字1为0即可将默认的3个开始压缩变为2个开始压缩。 +\renewbibmacro*{cite:dump}{% + \ifnumgreater{\value{cbx@tempcnta}}{0}% + {\ifnumgreater{\value{cbx@tempcnta}}{0}%1改为0,可以将压缩起始3个编号改为2个编号 + {\bibrangedash}% + {\multicitedelim}% + \bibhyperref[\cbx@lastkey]{% + \ifdef\cbx@lastprefix% + {\printtext[labelprefix]{\cbx@lastprefix}}% + {}% + \printtext[labelnumber]{\cbx@lastnumber}}}% + {}% + \setcounter{cbx@tempcnta}{0}% + \global\undef\cbx@lastprefix} + +% +% 定义一个上标方括号wrapper +% +\newcommand*\mkbibsuperbracket[1]{% + \mkbibsuperscript{\mkbibbrackets{#1}}% +} + +% 修改postnote的输出格式 +\DeclareFieldFormat{postnote}{#1} + +% +% 重定义cite命令 +% +% 方法:\DeclareCiteCommand{\cite}[\mkbibparens]{precode}{loopcode}{sepcode}{postcode} +% v1.0p版后将cite的处理方式修改为类似pagescite,而不再使用biblatex的标准方式 +\DeclareCiteCommand{\cite}[\mkbibsuperscript]%利用mkbibsuperbracket添加方括号 + {[\usebibmacro{cite:init}% + \usebibmacro{prenote}} + {\usebibmacro{citeindex}% + \usebibmacro{cite:comp}} + {} + {\usebibmacro{cite:dump}]% + \printfield{postnote}} +% v1.0p 以前用的方式 +%\DeclareCiteCommand{\cite}[\mkbibsuperbracket]%利用mkbibsuperbracket添加方括号 +% {\usebibmacro{cite:init}% +% \usebibmacro{prenote}} +% {\usebibmacro{citeindex}% +% \usebibmacro{cite:comp}} +% {} +% {\usebibmacro{cite:dump}% +% \usebibmacro{postnote}} + +% +% 定义upcite命令 +% 20180604,v1.0l,hzz +% 20190409,v1.0r,hzz +% 方法:对supercite增加[] +\newrobustcmd*{\upcite}{% + \cite} + +% +% 重定义parencite命令,以满足标签带页码的国标要求 +% +\DeclareCiteCommand{\parencite}%[\mkbibbrackets] + {[\usebibmacro{cite:init}%] + \usebibmacro{prenote}}% + {\usebibmacro{citeindex}% + \usebibmacro{cite:comp}} + {} + {%[ + \usebibmacro{cite:dump}]% + \mkbibsuperscript{\printfield{postnote}}} + +% +% 新定义pagescite命令,以满足标签带页码的国标要求 +% +% 原理方法: +% 1.新增页码输出宏 +\newbibmacro*{postpages}{% + \iffieldundef{postnote} + {\printfield[postnote]{pages}} + {\printfield{postnote}}} +% 2.新增\pagescite引用命令 +\DeclareCiteCommand{\pagescite}[\mkbibsuperscript]%\mkbibbrackets,仍然用上标 + {[\usebibmacro{cite:init}%]直接添加方括号 + \usebibmacro{prenote}% + } + {\usebibmacro{citeindex}% + \usebibmacro{cite:comp}} + {} + {\usebibmacro{cite:dump}]% + \usebibmacro{postpages}} + +% +% 定义yearpagescite,为与ay样式兼容,等同于\pagescite +% +\DeclareCiteCommand{\yearpagescite}[\mkbibsuperscript]%\mkbibbrackets,仍然用上标 + {[\usebibmacro{cite:init}%]直接添加方括号 + \usebibmacro{prenote}% + } + {\usebibmacro{citeindex}% + \usebibmacro{cite:comp}} + {} + {\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}]} + +% +% 定义\authornumcite命令,输出作者信息,然后在后面带上顺序编码 +% 20180427,v1.0k,增加,hzz +% gb7714样式新定义的命令都把cite放到最后,比如前面的pagescite,yearcite,这里的\authornumcite +% 区别于biblatex定义的命令都把cite放到前面,比如citeauthor等。 +%见numeric.CBX +\newbibmacro*{cite}{% + \printtext[bibhyperref]{% + \printfield{labelprefix}% + \printfield{labelnumber}% + \ifbool{bbx:subentry} + {\printfield{entrysetcount}} + {}}} +%见numeric.CBX,\DeclareCiteCommand{\cite}, +\DeclareCiteCommand{\authornumcite}%[\mkbibsuperscript] + {\usebibmacro{prenote}} + {\iffieldequalstr{userf}{cn}{\renewcommand*{\andothersdelim}{\addthinspace}}%\addthinspace + {\renewcommand*{\andothersdelim}{\addspace}}% + \printnames{labelname}\mkbibsuperscript{\mkbibbrackets{\usebibmacro{citeindex}% + \usebibmacro{cite}}}} + {\multicitedelim} + {\mkbibsuperscript{\printfield{postnote}}} + + +% +% 增加如下多个命令 +% 20190409,v1.0r,hzz +% 方法:利用newcommand或newrobustcmd命令进行定义 +% 注意\citet和\citep命令之所以不用newrobustcmd,是为避免加载natbib模块后产生冲突 +%\DeclareCiteCommand{\citet}% +% {\usebibmacro{prenote}} +% {\iffieldequalstr{userf}{cn}{\renewcommand*{\andothersdelim}{\addthinspace}}%\addthinspace +% {\renewcommand*{\andothersdelim}{\addspace}}% +% \printnames{labelname}\mkbibsuperscript{\mkbibbrackets{\usebibmacro{citeindex}% +% \usebibmacro{cite}}}} +% {\multicitedelim} +% {\mkbibsuperscript{\printfield{postnote}}} + +% +% 重定义citet,因为前面与\authornumcite同定义的命令无法正确处理多个bibtexkey同时给出的压缩情况 +% 20200721,v1.0v,hzz +% 方法:利用textcite命令进行定义 +% 基本利用textcite命令来写citet,仅利用bool{cbx:incitet}做判断,进而处理不同的上标和页码形式 +\newbool{cbx:incitet} +\global\booltrue{cbx:incitet} + +\newbibmacro*{citet}{% + \iffieldequals{namehash}{\cbx@lasthash}% + {\usebibmacro{cite:comp}}% + {\usebibmacro{cite:dump}% + \ifbool{cbx:parens}% + {\mkbibsuperscript{\printtext{\bibclosebracket}}\global\boolfalse{cbx:parens}}% + {}% + \iffirstcitekey + {} + {\textcitedelim}% + \usebibmacro{cite:init}% + \ifnameundef{labelname} + {\printfield[citetitle]{labeltitle}} + {\printnames{labelname}}% + \setunit*{\printdelim{namelabeldelim}}% + \mkbibsuperscript{\printtext{\bibopenbracket}\global\booltrue{cbx:parens}% + \ifnumequal{\value{citecount}}{1} + {\usebibmacro{prenote}}% + {}% + \usebibmacro{cite:comp}% + \stepcounter{textcitecount}% + \savefield{namehash}{\cbx@lasthash}}}} + +\DeclareCiteCommand{\cbx@textcite}% + {\usebibmacro{cite:init}}% + {\usebibmacro{citeindex}% + \ifbool{cbx:incitet}{\usebibmacro{citet}}{\usebibmacro{textcite}}% + }% + {}% + {\ifbool{cbx:incitet}{\mkbibsuperscript{\usebibmacro{cite:dump}\usebibmacro{postnote}}}% + {\usebibmacro{cite:dump}\usebibmacro{postnote}}% + \ifbool{cbx:parens}% + {\ifbool{cbx:incitet}{\mkbibsuperscript{\bibclosebracket}}{\bibclosebracket}% + \global\boolfalse{cbx:parens}}% + {}} + + \newrobustcmd{\cbx@citet@init}[2]{% + \global\booltrue{cbx:incitet}% + \setcounter{textcitetotal}{0}% + \setcounter{textcitecount}{0}% + \def\cbx@savedcites{#1}#2\cbx@savedcites\empty} + + \renewrobustcmd{\cbx@textcite@init}[2]{% + \global\boolfalse{cbx:incitet}% + \setcounter{textcitetotal}{0}% + \setcounter{textcitecount}{0}% + \def\cbx@savedcites{#1}#2\cbx@savedcites\empty} + +\DeclareCiteCommand{\citet}[\cbx@citet@init\cbx@textcite] + {\gdef\cbx@savedkeys{}% + \citetrackerfalse% + \pagetrackerfalse% + \DeferNextCitekeyHook% + \usebibmacro{cite:init}} + {\ifthenelse{\iffirstcitekey\AND\value{multicitetotal}>0} + {\protected@xappto\cbx@savedcites{()(\thefield{multipostnote})}% + \global\clearfield{multipostnote}} + {}% + \xappto\cbx@savedkeys{\thefield{entrykey},}% + \iffieldequals{namehash}{\cbx@lasthash} + {} + {\stepcounter{textcitetotal}% + \savefield{namehash}{\cbx@lasthash}}} + {} + {\protected@xappto\cbx@savedcites{% + [\thefield{prenote}][\thefield{postnote}]{\cbx@savedkeys}}} + + + +\DeclareCiteCommand{\citep}[\mkbibsuperscript]%利用mkbibsuperbracket添加方括号 + {[\usebibmacro{cite:init}% + \usebibmacro{prenote}} + {\usebibmacro{citeindex}% + \usebibmacro{cite:comp}} + {} + {\usebibmacro{cite:dump}]% + \printfield{postnote}} + +\newrobustcmd*{\citetns}% + {\textcite} + +\newrobustcmd*{\citepns}% + {\parencite} + +\newrobustcmd*{\inlinecite}% + {\parencite} + +% +% 增加如下复数的命令,以符合biblatex的复数命令习惯 +% 20190430,v1.0r,hzz +% citec和citecs命令是实现了[1]-[3]这样的压缩形式。 +% authornumcites是常用命令authornumcite的复数形式 +\DeclareFieldFormat{labelbracket}{\mkbibbrackets{#1}} + +\newbibmacro*{citec:comp:comp}{% + \ifboolexpr{ + ( test {\iffieldundef{labelprefix}} and test {\ifundef\cbx@lastprefix} ) + or + test {\iffieldequals{labelprefix}{\cbx@lastprefix}} + } + {\ifnumequal{\thefield{labelnumber}}{\value{cbx@tempcntb}} + {\savefield{entrykey}{\cbx@lastkey}% + \savefield{labelnumber}{\cbx@lastnumber}% + \addtocounter{cbx@tempcnta}{1}} + {\ifnumequal{\thefield{labelnumber}}{\value{cbx@tempcntb}-1} + {} + {\usebibmacro{citec:dump}% + \ifnumgreater{\value{cbx@tempcntb}}{-1} + {\multicitedelim} + {}% + \printtext[bibhyperref]{% + \printfield{labelprefix}% + \printtext[labelbracket]{\printfield{labelnumber}}}}}} + {\usebibmacro{cite:comp:end}}% + \setcounter{cbx@tempcntb}{\thefield{labelnumber}}% + \savefield{labelprefix}{\cbx@lastprefix}} + +\newbibmacro*{citec:comp}{% + \addtocounter{cbx@tempcntb}{1}% + \iffieldundef{shorthand} + {\ifbool{bbx:subentry} + {\iffieldundef{entrysetcount} + {\usebibmacro{citec:comp:comp}} + {\usebibmacro{cite:comp:inset}}} + {\usebibmacro{citec:comp:comp}}} + {\usebibmacro{cite:comp:shand}}} + +\newbibmacro*{citec:dump}{% + \ifnumgreater{\value{cbx@tempcnta}}{0} + {\ifnumgreater{\value{cbx@tempcnta}}{1} + {\bibrangedash} + {\multicitedelim}% + \bibhyperref[\cbx@lastkey]{% + \ifdef\cbx@lastprefix + {\printtext[labelprefix]{\cbx@lastprefix}} + {}% + \printtext[labelbracket]{\cbx@lastnumber}}}%labelnumber + {}% + \setcounter{cbx@tempcnta}{0}% + \global\undef\cbx@lastprefix} + +%\DeclareCiteCommand{\citec}[\mkbibsuperscript]%[\mkbibbrackets] +% {\usebibmacro{cite:init}% +% \usebibmacro{prenote}} +% {\usebibmacro{citeindex}% +% \usebibmacro{citec:comp}} +% {} +% {\usebibmacro{citec:dump}% +% \usebibmacro{postnote}} + +%上面这个用于非压缩情况,这里考虑了压缩的情况 +\DeclareCiteCommand{\citec}[\mkbibsuperscript]% + {\ifnumless{\value{multicitecount}}{2} + {\usebibmacro{cite:init}% + \usebibmacro{prenote}} + {\iffieldundef{prenote} + {\iffieldundef{postnote} + {} + {\usebibmacro{citec:dump}% + \usebibmacro{cite:init}% + \setunit{\multicitedelim}}} + {\usebibmacro{citec:dump}% + \usebibmacro{cite:init}% + \setunit{\multicitedelim}% + \usebibmacro{prenote}}}} + {\usebibmacro{citeindex}% + \usebibmacro{citec:comp}} + {} + {\ifboolexpr{ test {\ifnumequal{\value{multicitecount}}{\value{multicitetotal}}} + or not test {\iffieldundef{postnote}}} + {\usebibmacro{citec:dump}% + \usebibmacro{postnote}} + {}} + +\DeclareMultiCiteCommand{\citecs}[\mkbibsuperscript]{\citec}{} + +\DeclareMultiCiteCommand{\authornumcites}[]{\authornumcite}{\multicitedelim} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.bbx index a600997104..aca301fc9c 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.bbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.bbx @@ -1,3844 +1,3845 @@ -%% -%% --------------------------------------------------------------- -%% biblatex-gb7714-2015 --- A biblatex implementation of the -%% GBT7714-2015 bibliography style,author year sequence -%% Maintained by huzhenzhen -%% E-mail: hzzmail@163.com -%% Released under the LaTeX Project Public License v1.3c or later -%% --------------------------------------------------------------- -%% -% -% 版本和时间信息 -% -\def\versionofgbtstyle{2020/07/21 v1.0v} -\def\versionofbiblatex{\abx@version} -\ProvidesFile{gb7714-2015ay.bbx}[\versionofgbtstyle biblatex bibliography style] -%\RequireBiber[3]%显式指定用biber后端,当用bibtex时会报错,但其实不会影响编译,只是采用bibtex后无法达成格式需求 - -%===================================================================== -%加载标准样式 -%===================================================================== -\RequireBibliographyStyle{authoryear} -\RequirePackage{xstring}%解决texlive2015的biblatex3.0不加载xstring包的问题 - - -%===================================================================== -% 功能函数 -%===================================================================== - % - % biblatex版本判断 - % 20180405,v1.0k,为兼容biblatexv3.11增加toggle:iftlnine,HU zhenzhen - % 20181020,v1.0n,为不再使用xstring宏包做的修改,hzz - % - % 原理方法:当版本继续更新时,增加一个新的toggle用以处理新的旧版,最新版和未判断出来的版本永远用iftlatest - \providetoggle{iftlfive}\togglefalse{iftlfive} %处理biblatex3.2之前版本,时间2016-03-01前 - \providetoggle{iftlsix}\togglefalse{iftlsix} %处理biblatex3.3开始改变姓名机制后版本,时间2016-03-01及以后 - \providetoggle{iftlseven}\togglefalse{iftlseven}%处理biblatex3.7的兼容性,时间2016-12-01后 - \providetoggle{iftleight}\togglefalse{iftleight}%处理biblatex3.8到3.9的兼容性,时间2017-11-01后到2017-12-01前 - \providetoggle{iftlnine}\togglefalse{iftlnine} %处理biblatex10的兼容性,时间2017-12-01后 - \providetoggle{iftlatest}\toggletrue{iftlatest} %假设是最新版biblatex - \@ifpackagelater{biblatex}{2014/04/01}{ - \@ifpackagelater{biblatex}{2016/03/01}{ - \@ifpackagelater{biblatex}{2016/12/01}{ - \@ifpackagelater{biblatex}{2017/11/01}{ - \@ifpackagelater{biblatex}{2017/12/01}{ - \@ifpackagelater{biblatex}{2018/02/19}{} - {\toggletrue{iftlnine}\togglefalse{iftlatest}}} - {\toggletrue{iftleight}\togglefalse{iftlatest}}} - {\toggletrue{iftlseven}\togglefalse{iftlatest}}} - {\toggletrue{iftlsix}\togglefalse{iftlatest}}} - {\toggletrue{iftlfive}\togglefalse{iftlatest}}} - {\PackageError{biblatex}{Outdated 'biblatex' package} - {Please update biblatex, This is a fatal error.}} - - \newcommand\defversion[2]{\csdef{codeversion#1#2}}%定义不同版本的命令 - \newcommand\switchversion[2]{\csuse{codeversion#1#2}}%使用不同版本的命令 - - % - % 判断CJK字符的函数,用于判断作者等信息是否由中文字符构成 - % v1.0k,20180509,hzz - % - % 原理方法:用biber中的perl方法代替。因为利用tex函数对字符判断时,当字符在宏 - % 中时,基于`的方法无法解决GBK编码的问题,基于CJKsymbol的方法无法解决utf-8 - % 编码用xelatex编译的问题。 - % - % 原理是:利用perl正则将中文标识记录到域中, - % 然后利用\iffieldundef和\iffieldequalstr进行判断 - \providetoggle{ifCJKforgbt} - \def\testCJKfirst#1{% - \iffieldundef{#1}{\togglefalse{ifCJKforgbt}}{% - \iffieldequalstr{#1}{chinese}{\toggletrue{ifCJKforgbt}}{\togglefalse{ifCJKforgbt}}}} - - % - % 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{}}% - } - - % 对没有分隔符环境命令的低版本biblatex做增补,避免报错 - % - \iftoggle{iftlfive}{ - - \def\blx@inf@delimdeclare#1#2{% - \blx@info{Delimiter '#1' in context '#2' already defined, overwriting}} - - \def\blx@warn@delimuse#1#2{% - \blx@warning{Delimiter '#1' in context '#2' undefined}} - % Delimiter interface - - % []{}{} - \newrobustcmd*{\DeclareDelimFormat}{% - \@ifstar - {\blx@declaredelimclear} - {\blx@declaredelim}} - - \newrobustcmd*{\blx@declaredelimclear}[3][]{% - \ifcsvoid{blx@declaredelimcontexts@#2} - {} - {\def\do##1{\csundef{blx@printdelim@##1@#2}}% - \dolistcsloop{blx@declaredelimcontexts@#2}}% - \cslet{blx@declaredelimcontexts@#2}\@empty - \ifblank{#1} - {\blx@declaredelim{#2}{#3}} - {\blx@declaredelim[#1]{#2}{#3}}} - - \newrobustcmd*{\blx@declaredelim}[3][]{% - \ifblank{#1} - {\blx@declaredelim@i{}{}{#2}{#3}} - {\def\do##1{% - \listcsadd{blx@declaredelimcontexts@#2}{##1}% - \blx@declaredelim@i{blx@printdelim@##1@}{##1}{#2}{#3}}% - \docsvlist{#1}}}% - - \def\blx@declaredelim@i#1#2#3#4{% - \def\do@i##1{% - \ifcsdef{#1##1} - {\blx@inf@delimdeclare{##1}{#2}} - {}% - \csdef{#1##1}{#4}}% - \forcsvlist{\do@i}{#3}} - - % *[]{}{} - \newrobustcmd*{\DeclareDelimAlias}{% - \@ifstar - {\blx@declaredelimalias} - {\blx@declaredelimaliasauto}} - - \newrobustcmd*{\blx@declaredelimalias}[3][]{% - \ifblank{#1} - {\blx@declaredelimalias@i{}{#2}{#3}} - {\def\do##1{% - \blx@declaredelimalias@i{blx@printdelim@##1@}{#2}{#3}}% - \docsvlist{#1}}} - - \newrobustcmd*{\blx@declaredelimaliasauto}[2]{% - \blx@declaredelimalias@i{}{#1}{#2}% - \ifcsvoid{blx@declaredelimcontexts@#2} - {} - {\def\do##1{% - \blx@declaredelimalias@i{blx@printdelim@##1@}{#1}{#2}}% - \dolistcsloop{blx@declaredelimcontexts@#2}}} - - \def\blx@declaredelimalias@i#1#2#3{% - \ifcsdef{#1#2} - {\blx@inf@delimdeclare{#2}{#1}} - {}% - \csdef{#1#2}{\csuse{#1#3}}} - - \def\blx@delimcontext{none} - \newcommand*{\printdelim}[2][]{% - \ifblank{#1} - {\ifcsdef{blx@printdelim@\blx@delimcontext @#2} - {\csuse{blx@printdelim@\blx@delimcontext @#2}} - {\ifcsdef{#2}% fall back on legacy macros - {\csuse{#2}} - {\blx@warn@delimuse{#2}{*}}}} - {\ifcsdef{blx@printdelim@#1@#2} - {\csuse{blx@printdelim@#1@#2}} - {\blx@warn@delimuse{#2}{#1}}}} - - \newcommand*{\delimcontext}[1]{% - \edef\blx@delimcontext{\blx@delimcontextalias{#1}}} - - \def\blx@delimcontextalias#1{% - \ifcsdef{blx@delimcontextalias@#1} - {\csuse{blx@delimcontextalias@#1}} - {#1}} - - \newcommand*{\DeclareDelimcontextAlias}[2]{% - \csgdef{blx@delimcontextalias@#1}{#2}} - }{} - - -%===================================================================== -% 数据模型定义 -%===================================================================== - %定义类型和载体标识,从gb内容看载体基本属于介质。 - %为与lee zeping的bst的样式统一,使用mark和medium这两域名 - %为单个条目的姓名格式控制增加nameformat和namefmtid两个域 - %为缩略信息文献表增加了shortbooktitle域 - %为多语言排序增加了lansortorder域 - \DeclareDatamodelFields[type=field,datatype=literal]{mark,medium,nameformat} - \DeclareDatamodelFields[type=field,datatype=integer]{namefmtid} - \DeclareDatamodelFields[type=field,datatype=literal]{shortbooktitle} - \DeclareDatamodelFields[type=field,datatype=literal]{lansortorder} - - %因为biblatex更新3.14版本以后,biber对于为声明数据模型的条目类型 - %不再默认读取,而是以空字符串作为条目类型名,自然在条目定义alias时 - %就会出现问题,因此显式的声明一下newspaper,然后保留后面采用alias的方式 - %而standard类型则是采用另一种方式直接在sourcemap中转换为其它类型。 - \@ifpackagelater{biblatex}{2019/11/30}{%2019/12/01 v3.14 - \DeclareDatamodelEntrytypes{newspaper}% - }{} - -%===================================================================== -% 设置宏包选项 -%===================================================================== - % - % 增加一个控制是否输出文献载体的选项 - % 20191125,v1,0s,hzz - \newtoggle{bbx:gbmedium} - \DeclareBibliographyOption{gbmedium}[true]{%biblatex低版本 - \settoggle{bbx:gbmedium}{#1}} - \ExecuteBibliographyOptions{gbmedium} - - % - % 增加一个控制是否输出annotation域的选项,该域可以用于在文献条目后面输出一些注释信息 - % 20190509,v1,0s,hzz - \newtoggle{bbx:gbannote} - \DeclareBibliographyOption{gbannote}[false]{%biblatex低版本 - \settoggle{bbx:gbannote}{#1}} - \ExecuteBibliographyOptions{gbannote} - % - %用于在文献条目后面输出注释信息的宏 - %FieldFormat{annotation}用于设置注释信息的格式 - \DeclareFieldFormat{annotation}{% - \printtext{\addspace(#1)}% - } - \renewbibmacro*{annotation}{% - \iftoggle{bbx:gbannote}% - {\iffieldundef{annotation}% - {\printfile[annotation]{\bibannotationprefix\thefield{entrykey}.tex}}% - {\printfield{annotation}}}% - {}% - } - - - % - % 增加一个控制是否输出type域的选项 - % 20190212,v1,0q,hzz - \newtoggle{bbx:gbfieldtype} - \DeclareBibliographyOption{gbfieldtype}[false]{%biblatex低版本 - \settoggle{bbx:gbfieldtype}{#1}} - \ExecuteBibliographyOptions{gbfieldtype} - - % - % 增加一个控制是否根据页码重设脚注数字标号的选项 - % 20190422,v1,0r,hzz - \newtoggle{bbx:gbfnperpage} - \DeclareBibliographyOption{gbfnperpage}[false]{% - \settoggle{bbx:gbfnperpage}{#1}} - \ExecuteBibliographyOptions{gbfnperpage} - - % - % 增加一个选项,用于控制是否实现GB/T 7714-2015标准的脚注文献表 - % 20190203,v1.0p,hzz - % 原理方法:默认做patch,文献引用带圈上标数字表示,脚注中的文献用带圈非上标数字做标签 - % 当前面的脚注中已经存在当前文献,那么当前文献内容不再输出而用同(4)这样的方式 - % 需要注意的是由于小页环境和表格中的脚注本身的问题,可能会有一些问题 - \DeclareBibliographyOption{gbfootbib}[false]{% - \ifstrequal{#1}{false}{}{\execgbfootbib}} - \ExecuteBibliographyOptions{gbfootbib} - - %% - \newlength{\footbibmargin} - \newlength{\footbiblabelsep} - \setlength{\footbibmargin}{1em}%脚注的段落左侧缩进距离 - \setlength{\footbiblabelsep}{0.5em}%脚注中标记号与脚注段落的间距 - \def\execgbfootbib% - {% - %开启引用跟踪计数器,为使用\ifciteseen等测试命令 - \ExecuteBibliographyOptions{citetracker=true} - % - %利用footmisc宏包来实现脚注文献的悬挂对齐 - \AtEndPreamble{ - \@ifclassloaded{beamer}{}{ - %beamer类因为其特殊性,为避免冲突不调footmisc。 - %同时footmisc与hyperref宏包也不兼容,所以使用footmisc时会破坏脚注的超链接 - %如果要实现超链接可以将下句注释掉,这里留着主要是实现悬挂对齐。 - %\PassOptionsToPackage{perpage,hang}{footmisc}% - %\RequirePackage{footmisc}% - - %重新实现脚注的根据单页重设脚注号码 - %重新实现脚注的悬挂对齐问题,不再使用footmisc,直接从latex核心代码和hyperref代码进行修改 - %v1.0q 20190317 hzz - %v1.0r 20190422 hzz 根据gbfnperpage选项设置 - \iftoggle{bbx:gbfnperpage}% - {\@addtoreset{footnote}{page}}{}%重设计数器 - -\@ifpackageloaded{hyperref}{%加载hyperref则对\H@@footnotetext做重定义 - \long\def\H@@footnotetext##1{\insert\footins{% - \reset@font\footnotesize - \interlinepenalty\interfootnotelinepenalty - \splittopskip\footnotesep - \splitmaxdepth \dp\strutbox \floatingpenalty \@MM - \hsize\columnwidth \@parboxrestore - \protected@edef\@currentlabel{% - \csname p@footnote\endcsname\@thefnmark - }% - \color@begingroup - \leftskip \footbibmargin%增加的左侧缩进 - \@makefntext{% - \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox% - }% - \color@endgroup}}% - \long\def\H@@mpfootnotetext##1{% - \global\setbox\@mpfootins\vbox{% - \unvbox\@mpfootins - \reset@font\footnotesize - \hsize\columnwidth - \@parboxrestore - \protected@edef\@currentlabel - {\csname p@mpfootnote\endcsname\@thefnmark}% - \leftskip \footbibmargin%增加的左侧缩进 - \color@begingroup - \@makefntext{% - \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox}% - \color@endgroup}} - }{%否则对latex核心代码中的\@footnotetext做重定义 - \long\def\@footnotetext##1{\insert\footins{% - \reset@font\footnotesize - \interlinepenalty\interfootnotelinepenalty - \splittopskip\footnotesep - \splitmaxdepth \dp\strutbox \floatingpenalty \@MM - \hsize\columnwidth \@parboxrestore - \protected@edef\@currentlabel{% - \csname p@footnote\endcsname\@thefnmark - }% - \color@begingroup - \leftskip \footbibmargin%增加的左侧缩进 - \@makefntext{% - \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox% - }% - \color@endgroup}}% - - \long\def\@mpfootnotetext##1{% - \global\setbox\@mpfootins\vbox{% - \unvbox\@mpfootins - \reset@font\footnotesize - \hsize\columnwidth - \@parboxrestore - \protected@edef\@currentlabel - {\csname p@mpfootnote\endcsname\@thefnmark}% - \leftskip \footbibmargin%增加的左侧缩进 - \color@begingroup - \@makefntext{% - \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox}% - \color@endgroup}} - } - - \long\def\@makefntext##1{%增加了脚注标记与正文的间隔 - \parindent 1em\noindent \hb@xt@ 0em{\hss \@makefnmark\makebox[\footbiblabelsep]{}}##1} - - } - - % - %使脚注标记加圈并设置数字的字体为tiny,不使用修改thefootnote的方式 - \def\@makefnmark{\hbox{\@textsuperscript{\textcircled{\tiny\@thefnmark}}}} - %做patch使得脚注内容中的脚注数字标签不上标 - \pretocmd{\@makefntext}{% - \def\@makefnmark{% - \hbox{\textcircled{\tiny\@thefnmark}}% - }% - }{}{} - } - - % - %判断当前文献是否已经引用过且是做的footfullcite(即已经作为脚注输出文献内容) - %记录首次输出时的脚注号码,用于后面再次引用该文献时的输出,比如同(4)。 - %v1.0q 20190309 区分使脚注标注适应minipage中的情况 - \newbibmacro*{citesavefn}{% - \ifciteseen%当被引用过为true - {\ifcsdef{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}%当已经定义过脚注序号信息 - {\csgdef{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}{% - \str@sameentry\gdef\@thefnmark{\csuse{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}}% - \@makefnmark% - }}% - {\csxdef{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}{% - \ifcsstring{@mpfn}{mpfootnote}{\@alph\c@mpfootnote}{\thefootnote}% - }}% - }% - {\csxdef{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}{% - \ifcsstring{@mpfn}{mpfootnote}{\@alph\c@mpfootnote}{\thefootnote}% - %判断在minipage中比较麻烦,这里使用\@mpfn的定义进行判断 - }}% - } - - % - %重定义\footfullcite使完成gb7714-2015的脚注文献要求 - \DeclareCiteCommand{\footfullcite}[\mkbibfootnote]% - {\defcounter{maxnames}{\blx@maxbibnames}%局部定义maxnames和minnames计数器 - \defcounter{minnames}{\blx@minbibnames}%使footfullcite内的作者输出与正文文献表中的一致。 - \usebibmacro{prenote}% - \renewbibmacro*{postnote}{% - \iffieldundef{postnote}% - {}{\setunit{\addcolon\addspace}\printtext{\thefield{postnote}}}}%由于ay样式中没有修改postnote域,此处因为格式需要不使用默认域格式 - }% - {\usebibmacro{citesavefn}% - \ifcsdef{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}% - {\csuse{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}\nopunct}% - {\usedriver{\DeclareNameAlias{sortname}{default}}{\thefield{entrytype}}}% - }% - {\multicitedelim}% - {\usebibmacro{postnote}} - - } - - % - % 增加一个选项,用于控制gb7714的使用范围,即英文文献和中文文献使用不同的样式 - % 20180814,v1.0m,hzz - % 原理方法: - % 只为兼容性考虑不做任何处理 - \DeclareBibliographyOption{gbstyle}[true]{%biblatex低版本 - } - - % - % 增加一个控制是否输出文献类型和载体标识的选项 - % - % 原理方法: - % 对于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时可以使用GBK编码。 - % v1.0k, 2018.05.08, by hzz - % - % 原理方法:将需要输出的中文字符串用命令形式表示存储,采用utf8编码时采用bbx文档 - % 内的定义即是utf8编码的中文字符串,但tex源文件是gbk编码时,利用gb7714-2015-gbk.def - % 文档内的gbk编码的字符串覆盖。这种覆盖只能在宏包末尾加载时成功实现,所以使用 - % AtEndOfPackage。该解决思路源自biblatex-caspervector宏包。 - % 另外注意: - % gbk编码的tex文档,利用pdflatex/latex能正确编译,利用xelatex能编译,但中文显示乱码 - % 在源文档前面增加 XeTeX 原语:\XeTeXinputencoding "GBK" 后,显示正常 - % utf-8编码的tex文档,利用xelatex能正确编译,而pdflatex/latex不能编译。 - \newtoggle{bbx:codegbk} - \DeclareBibliographyOption{gbcodegbk}[false]{% - \settoggle{bbx:codegbk}{#1}} - \ExecuteBibliographyOptions{gbcodegbk} - - \def\str@bibliography{参考文献} - \def\str@references{参考文献} - \def\str@bytranslator{译} - \def\str@andotherscn{等} - \def\str@andcn{和} - \def\str@backrefpage{引用页} - \def\str@backrefpages{引用页} - \def\str@noaddress{出版地不详} - \def\str@nopublisher{出版者不详} - \def\str@edition{版} - \def\str@volumecn{卷} - \def\str@numbercn{册} - \def\str@serialcn{第} - \def\str@sameentry{同} - \def\str@incn{见} - \def\str@mathesiscn{硕士学位论文} - \def\str@phdthesiscn{博士学位论文} - \def\str@editorcn{主编} - - \AtEndOfPackage{% - \iftoggle{bbx:codegbk}{% - \ExecuteBibliographyOptions{texencoding = GBK} - \input{gb7714-2015-gbk.def} - }{}} - - % - % 增加一个严格按GB/T 7714-2015给出著录格式控制域的输出的选项 - % v1.0k, 2018.05.08, by hzz - % - % 原理方法: - % 默认设置该选项为真,进而不输出GB/T 7714-2015中没有的域的信息 - % 这样可以避免因为bib文件带有多余的域的信息的输出,比如因为bibtex样式 - % 可能需要用于中英文判断的language域的信息。 - \newtoggle{bbx:gbstrict} - \DeclareBibliographyOption{gbstrict}[true]{% - \settoggle{bbx:gbstrict}{#1}} - \ExecuteBibliographyOptions{gbstrict} - - % - % 增加一个控制标题域超链接设置的选项 - % v1.0k, 2018.05.24, by hzz - % - % 原理方法: - % 利用标题域格式来实现,默认设置该选项为false,不做超链接。 - % 设置为true,则标题设置超链接 - \newtoggle{bbx:titlelink} - \DeclareBibliographyOption{gbtitlelink}[false]{% - \settoggle{bbx:titlelink}{#1}} - \ExecuteBibliographyOptions{gbtitlelink} - - % - % 增加一个控制参考文献标题是否能够被ctex宏包设置的选项 - % v1.0l, 2018.07.02, by hzz - % - % 原理方法: - % 重定义biblatex的宏,去除使用本地化字符串的方式,是的可以利用ctexset进行设置 - \newtoggle{bbx:ctexset} - \DeclareBibliographyOption{gbctexset}[true]{% - \settoggle{bbx:ctexset}{#1}} - \ExecuteBibliographyOptions{gbctexset} - - \AtEndOfPackage{% - \iftoggle{bbx:ctexset}{% - \def\blx@defbibstrings#1#2{% - \def\do##1{\csundef{abx@lstr@##1}\csundef{abx@sstr@##1}}% - \abx@dostrings - \csuse{abx@strings@#1}% - \setkeys{blx@lbx}{#2}% - \let\do\blx@defbibstrings@i - \csxdef{abx@strings@#1}{\abx@dostrings}% - } - }{}} - - % - %增加一个处理佚名或noauthor的控制选项 - \DeclareBibliographyOption{gbnoauthor}[true]{% - \ifstrequal{#1}{false}{}{\dealnoathor}} - %\ExecuteBibliographyOptions{gbnoauthor=true}%对于需要展开较早(展开层级优先)的选项,这一执行无效,只能用宏包加载时给出的选项。 - - - % - % 增加一个恢复域格式为标准样式的控制选项 - % v1.0k, 2018.05.15, by hzz - % - % 原理方法: - % 默认设置该选项为false,采用国标要求的域格式输出相关域 - % 当设置该选项为true时,则重新利用标准样式的域格式输出相关的域 - \newtoggle{bbx:gbfieldstd} - \DeclareBibliographyOption{gbfieldstd}[false]{% - \settoggle{bbx:gbfieldstd}{#1}% - \ifstrequal{#1}{false}{}{\execgbfdfmtstd}% - } - \ExecuteBibliographyOptions{gbfieldstd} - - % - % 增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 - % - \newtoggle{bbx:gbpub} - \DeclareBibliographyOption{gbpub}[true]{% - %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 - \ifstrequal{#1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} - \ExecuteBibliographyOptions{gbpub} - - % - % 增加控制析出文献来源前的标点符号//输出的选项 - % v1.0k, 2018.04.20,added in by hzz - \newtoggle{bbx:gbpunctin} - \DeclareBibliographyOption{gbpunctin}[true]{% - \settoggle{bbx:gbpunctin}{#1}} - \ExecuteBibliographyOptions{gbpunctin} - - - % 选项设置 - % - \ExecuteBibliographyOptions{ - useprefix = true, %名字的信息包括前缀 - date = year, %日期仅写到年 - maxbibnames=3, %将文献列表和引用中最大名字数量区分开 - minbibnames=3, - maxitems = 1,%设置列表最大数量 - minitems = 1, %设置缩减后的列表最小数量 - isbn=false, - sorting=gb7714-2015, - sortlocale=zh__pinyin,%zh__big5han,%zh__stroke,%zh__gb2312han,%zh__pinyin, - } - - % - %为日期相关选项增加选项值gb7714-2015 - % - \csdef{mkdaterangegb7714-2015}#1{% - \begingroup - \blx@metadateinfo{#1}% - \iffieldundef{#1year} - {} - {\printtext[#1date]{% - \blx@gbdate{#1}{}}}% - \endgroup} - - \newrobustcmd*{\blx@gbdate}[3][]{% - \dateeraprintpre{#2#3year}% - \blx@imc@forcezerosy{\thefield{#2#3year}}\ifblank{#1}{}{\printfield{#1}}% - \iffieldundef{#2#3month}{}{\hyphen\blx@imc@forcezerosmdt{\thefield{#2#3month}}}% - \iffieldundef{#2#3day}{}{\hyphen\blx@imc@forcezerosmdt{\thefield{#2#3day}}}} - - %为姓名格式选择增加的计数器 - \newcounter{gbnamefmtcase} - \def\thegbnamefmtcase{\the\c@gbnamefmtcase} - %为引用标签标注/文献表中本地化字符串中英文选择增加的计数器/命令 - \newcounter{gbcitelocalcase} - \newcounter{gbbiblocalcase} - \def\thegbcitelocalcase{\the\c@gbcitelocalcase} - \def\thegbbiblocalcase{\the\c@gbbiblocalcase} - - -\@ifpackagelater{biblatex}{2016/03/27} - { % 针对biblatex>=3.3版本的选项设置 - - % 增加不同语言排序的切换选项 - % gblanorder=chineseahead的顺序为cn,jp,kr,en,fr,ru - % gblanorder=englishahead的顺序为en,fr,ru,cn,jp,kr - % gblanorder=cn;en;ru;fr;jp;kr的顺序为指定的cn;en;ru;fr;jp;kr,自定义内容可以随意写以分号分隔 - % v1.0q,20190307,hzz - % - \DeclareBibliographyOption[string]{gblanorder}[chineseahead]{% - \ifstrequal{#1}{chineseahead}%%中文在前的顺序 - {\gdef\lancnorder{1}\gdef\lanjporder{2}\gdef\lankrorder{3}% - \gdef\lanenorder{4}\gdef\lanfrorder{5}\gdef\lanruorder{6}}% - {% - \ifstrequal{#1}{englishahead}% - {\execlanodeah\dealsortlan}% - {\execlanodudf{#1}\dealsortlan}% - }% - } - \ExecuteBibliographyOptions{gblanorder} - - \def\execlanodeah{%中文在后的顺序 - \gdef\lancnorder{4} - \gdef\lanjporder{5} - \gdef\lankrorder{6} - \gdef\lanenorder{1} - \gdef\lanfrorder{2} - \gdef\lanruorder{3}} - - \newcounter{lanordernum} - \newcommand{\execlanodudf}[1]{%like:cn;en;ru;fr;jp;kr - \setcounter{lanordernum}{0} - \DeclareListParser{\parsinglanorder}{;} - \renewcommand*{\do}[1]{\stepcounter{lanordernum}\csxdef{lan##1order}{\thelanordernum}} - \parsinglanorder{#1} - } - - % 增加本地化字符串的中英文切换选项 - % gbcitelocal指标注中的本地化字符串 - % gbbiblocal 指文献表中的本地化字符串 - % gblocal 指设置文献表和标注中的本地化字符串 - % v1.0o,20190103,hzz - % - \DeclareBibliographyOption[string]{gbcitelocal}[gb7714-2015]{% - \ifstrequal{#1}{gb7714-2015}{\setcounter{gbcitelocalcase}{0}}{}% - \ifstrequal{#1}{chinese}{\setcounter{gbcitelocalcase}{1}}{}% - \ifstrequal{#1}{english}{\setcounter{gbcitelocalcase}{2}}{}% - } - \ExecuteBibliographyOptions{gbcitelocal} - - \DeclareBibliographyOption[string]{gbbiblocal}[gb7714-2015]{% - \ifstrequal{#1}{gb7714-2015}{\setcounter{gbbiblocalcase}{0}}{}% - \ifstrequal{#1}{chinese}{\setcounter{gbbiblocalcase}{1}}{}% - \ifstrequal{#1}{english}{\setcounter{gbbiblocalcase}{2}}{}% - } - \ExecuteBibliographyOptions{gbbiblocal} - - \DeclareBibliographyOption[string]{gblocal}[gb7714-2015]{% - \ExecuteBibliographyOptions{gbbiblocal=#1}% - \ExecuteBibliographyOptions{gbcitelocal=#1}% - } - %\ExecuteBibliographyOptions{gblocal} %默认值已经通过两个相关选项设置 - - - % - % 增加序号标签格式处理选项,作者年制不做处理,给出只为兼容选项考虑 - % v1.0l,20180623,hzz - % - \DeclareBibliographyOption[string]{gbbiblabel}[bracket]{} - - % - % 增加姓名大小写格式处理选项 - % - \DeclareBibliographyOption[string]{gbnamefmt}[uppercase]{% - \ifstrequal{#1}{uppercase}{\setcounter{gbnamefmtcase}{0}}{}% - \ifstrequal{#1}{lowercase}{\setcounter{gbnamefmtcase}{1}}{}% - \ifstrequal{#1}{givenahead}{\setcounter{gbnamefmtcase}{2}}{}%given-family - \ifstrequal{#1}{familyahead}{\setcounter{gbnamefmtcase}{3}}{}%family-given - \ifstrequal{#1}{pinyin}{\setcounter{gbnamefmtcase}{4}}{}% - \ifstrequal{#1}{reverseorder}{\setcounter{gbnamefmtcase}{5}}{}%family-given/given-family - } - \ExecuteBibliographyOptions{gbnamefmt} - - % - % 增加标签对齐选项 - % - %因为在作者年制中,不需要使用,这里也增加,为了与顺序编码制的兼容性考虑。 - \DeclareBibliographyOption[string]{gbalign}[right]{}% - - - - - } - { - % 增加不同语言排序的切换选项 - % biblatex 3.4及以下版本不能使用多个stylesourcemap,所以不使用该选项 - % 这里给出仅为兼容性考虑 - % v1.0q,20190307,hzz - % - \DeclareBibliographyOption[string]{gblanorder}[chineseahead]{} - - % - % 增加序号标签格式处理选项,作者年制不做处理,给出只为兼容选项考虑 - % v1.0l,20180623,hzz - % - \DeclareBibliographyOption{gbbiblabel}[bracket]{} - - % - % 增加姓名大小写格式处理选项 - % - \DeclareBibliographyOption{gbnamefmt}[uppercase]{% - \ifstrequal{#1}{uppercase}{\setcounter{gbnamefmtcase}{0}}{}% - \ifstrequal{#1}{lowercase}{\setcounter{gbnamefmtcase}{1}}{}% - \ifstrequal{#1}{givenahead}{\setcounter{gbnamefmtcase}{2}}{}%given-family - \ifstrequal{#1}{familyahead}{\setcounter{gbnamefmtcase}{3}}{} - \ifstrequal{#1}{pinyin}{\setcounter{gbnamefmtcase}{4}}{}%family-given - \ifstrequal{#1}{reverseorder}{\setcounter{gbnamefmtcase}{5}}{}%family-given/given-family - } - \ExecuteBibliographyOptions{gbnamefmt} - - % - % 增加标签对齐选项 - % - %因为在作者年制中,不需要使用,这里也增加,为了与顺序年制的兼容性考虑。 - \DeclareBibliographyOption{gbalign}[right]{}% - - } - - -% -% 针对biblatex<3.3版本的选项设置,比如texlive2015中的3.0版 -% -\defversion{3.0}{opt}{ - \ExecuteBibliographyOptions{ - firstinits = true, %名字有缩写,参考3.1.2.3 Internal - } -} -% -% 针对3.3<=biblatex<3.5版本的选项设置,比如texlive2016中的3.4版 -% -\defversion{3.4}{opt}{ - \ExecuteBibliographyOptions{ - giveninits = true, - } -} -% -% 针对3.7<=biblatex<=3.9版本的选项设置,比如texlive2017中的3.7版 -% -\defversion{3.7}{opt}{ - \ExecuteBibliographyOptions{ - giveninits = true, - urldate =edtf, - eventdate =edtf, - } -} -% -% 针对3.10<=biblatex版本的选项设置,比如texlive2018中的3.11版 -% -\defversion{3.10}{opt}{ - \ExecuteBibliographyOptions{ - giveninits = true, - urldate =gb7714-2015,%iso - eventdate =gb7714-2015,%iso - } -} - -% -% 针对3.13<=biblatex版本的选项设置,因为内容有限,所以不再增加版本区分,而用时间直接判断 -% -% 解决国标中“王临慧, 2010a.”和“王临慧, 等, 2010b.”的问题 -% 在没有这个选项之前无法加上a和b -% v1.0s,20190828 -\@ifpackagelater{biblatex}{2019/08/16}{% - \ExecuteBibliographyOptions{% - nohashothers=true}}{} - -% -% 根据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{andothersincitecn} - \NewBibliographyString{andothersincite} - \NewBibliographyString{andcn} - \NewBibliographyString{andothersjp} - \NewBibliographyString{andotherskr} - \NewBibliographyString{andjp} - \NewBibliographyString{andkr} - \NewBibliographyString{andincitecn} - \NewBibliographyString{andincite} - \NewBibliographyString{volumecn} - \NewBibliographyString{numbercn} - \NewBibliographyString{serialcn} - \NewBibliographyString{incn} - \NewBibliographyString{mathesiscn} - \NewBibliographyString{phdthesiscn} - \NewBibliographyString{editorcn} - \NewBibliographyString{editorscn} - - % - % 修改一些当地化字符串 - % - % 原理方法:直接利用当地化格式english修改出一些中文的格式,具体修改内容参考english.lbx文件 - % 当然也可以增加比如上面定义的andotherscn - % 注意:在lbx文件和bbx文件中定义本地字符串的不同语法,两个参数和一个参数的区别 - \DefineBibliographyStrings{english}{ - bibliography = {\str@bibliography}, - references = {\str@references}, - bytranslator= {\str@bytranslator\adddot}, %将trans. by 改成 译 - and = {\addcomma},%将第2和3人名见的and符号改成 逗号,用\finalnamedelim命令也可以定义,参见3.9.1节 - andcn = {\addcomma},%\str@andcn\ and本地化字符串的中文对应词 - andincitecn = {\str@andcn},%将标注中的分开,便于与文献表中的区分 - andincite = {\addcomma}, - %andothers = {et al.}, %将超过3个人名的省略,et al.改成为 等 - andotherscn = {\str@andotherscn},%将超过3个人名的省略,et al.改成为 等 - andothersincitecn={\str@andotherscn},%将标注中的分开,便于与文献表中的区分 - andothersincite={et al\adddot}, - backrefpage = {\str@backrefpage:}, - backrefpages = {\str@backrefpages:}, - in={in\intitlepunct}, - volumecn={\str@volumecn}, - numbercn={\str@numbercn}, - serialcn={\str@serialcn}, - andothersjp={他}, - andotherskr={외}, - andjp={和}, - andkr={和}, - incn={\str@incn\addcolon\addspace}, - mathesiscn={\str@mathesiscn}, - phdthesiscn={\str@phdthesiscn}, - editorscn={\str@editorcn}, - editorcn={\str@editorcn}, - } - - % - % 增加两个命令用于临时的局部的修改本地化字符串 - % 其中\setlocalbibstring修改缩写字符串,setlocalbiblstring修改长字符串 - % 注意使用时因为是局部修改,因此要将其与需要修改的引用命令放在一个编组符号内 - % v1.0t,hzz,20190525 - \newcommand{\setlocalbibstring}[2]{% - \csdef{abx@sstr@#1}{#2}} - \newcommand{\setlocalbiblstring}[2]{% - \csdef{abx@lstr@#1}{#2}} - -%===================================================================== -% 动态数据修改 -%===================================================================== -% -% 各层次的数据映射和动态修改 -% -% 原理方法: -% 1. 进行语言包括中英文判断,并设置和记录,比如记录到userf,usere中 -% 2. 增加文献标识符如[M],[J]等,对一些容易混淆的域进行设置以增强兼容性 -% 3. \DeclareSourcemap命令对于biblatex3.11以下版本只能出现一次,3.11版开始支持多个 -% 4. \DeclarestyleSourcemap在biblatex v3.7版开始可以支持出现多次 -% 5. 把作者和译者信息准确的记录到userf,usere中,用于后面判断是否是cjk字符。 -% 注意:这里用userf,usere而不是namee,namef,是因为只有把name列表转成域,才能有效读取姓名中的字符, -% 如果用namee,namef,name信息会自动解析,所以就不能为cjk判断提供需要的信息 -% -% 不同的文献类型使用相同的驱动输出可以有5种方法: -% 1. 是数据源层的映射,将其它类型转换为某一要使用驱动的类型 -% 2. 是样式层映射,也是将其它类型转换为某一要使用驱动的类型 -% 3. 是驱动层映射,也是将其它类型转换为某一要使用驱动的类型 -% 4. 定义驱动类型别名DeclareBibliographyAlias,将其它类型定义为某一要使用驱动的类型的别名 -% 驱动别名定义本质上是做了驱动层映射 -% 5. 直接定义不同的类型的驱动,但驱动内容相同。 -% -% 关于数据映射和驱动使用的考虑如下: -% 1. 为避免利用biber输出bib文件时的数据变动,尽量不在数据源层映射做类型转换 -% 2. 为减少代码量,尽量少做内容相同的不同类型驱动 -% 3. 因此类型相关的处理主要在样式层映射、驱动层映射、驱动别名 -% 4. 由于biblatex默认做的驱动别名处理可能增加一些信息比如masterthesis转thesis时增加的type -% 可以在样式层映射做某些需要避免这种默认处置的转换 -% 5. 当没有避免默认行为的需求时,全部采用驱动别名的方式处理,等价于驱动层的映射 -% -% 文献类型和驱动考虑如下: -% 1. 连续出版物及析出文献有其特殊性,因此考虑两类periodical和article -% newpaper映射为article,并以note域做区分特殊处理 -% 2. 专著和专著中的析出文献是主要的类型,因此考虑book和inbook -% standard映射为book或inbook,并以note域做区分特殊处理 -% collection和proceedings基本与book类似,因此做book驱动别名处理 -% incollection和inproceedings基本与inbook类似,因此做inbook驱动别名处理 -% 3. 专利类型有其特殊性,考虑patent类型 -% 4. 电子资源类型有其特殊性,考虑online类型 -% 5. 报告类型与book有点类似,出版项处理与book一样,但有时又要有修改和更新日期 -% 因此考虑用一种类型来输出,使用report类型 -% 6. 手册/学位论文等类型与book有点类似,但对于出版项处理时,有缺省时,直接省略, -% 同时有version和edition的区别,因此考虑用一种类型来输出,使用manual类型 -% 7. 包括报告,学位论文在内的其它所有的类型,都做一个判断,当没有出版项时, -% 且存在网址信息时,将其转换为online类型输出,否则都做为manual类型输出。 -% 8. 备选类型misc当存在网址时直接转换为online,由于howpublished域可用于描述 -% 更多的信息,因此不存在网址时,独立做一个备选格式 -% 9. 出版项主要以如下方式处理: -% (a) location+institution+date 仅用于连续出版物 -% (b)publisher+location+date 用于需要完整输出出版项的类型,比如book,collection,proceedings,in*,report -% (c)institution+location+date 用于出版项缺失时不输出的类型,包括manual,thesis,archive等其他类型 -% (d)printlist{insitution} 用于电子资源,仅输出出版者或组织,为数据映射方便,本来默认的organization域转换为用insitution输出。 -% (e) 不输出,主要用于连续出版物析出的文献 -% 10. 日期以如下方式处理: -% date 由于存在biblatex选项,因此通过选项控制,数据源为date解析数据或year -% urldate 由于存在biblatex选项,因此通过选项控制,输出到日,且用[]包围,数据源为urldate -% newsdate 用于公告日期,公开日期或新闻日期,输出到日,但无包围符号,数据源为date -% modifydate 用于更新或修改日期,输出到日,且用()包围,数据源为date或enddate或eventdate - -\DeclareSourcemap{ -\maps[datatype=bibtex]{% - \map{%当没有作者时将editor转成author - \pernottype{inbook}%因为in系列中editor可能用来表示bookauthor,所以排除 - \pernottype{inproceedings} - \pernottype{incollection} - \pernottype{periodical}%因为peridical直接使用editor,所以排除 - %注意notfield在低版本biblatex中没有 - %\step[notfield=author,final]%当author不存在,将editor复制给author - \step[fieldsource=editor,fieldtarget=author]%并删除editor - } - \map{%当没有作者时将translator转成author - \pernottype{inbook} - \pernottype{inproceedings} - \pernottype{incollection} - %\step[notfield=author,final]%当author不存在,将translator复制给author - \step[fieldsource=translator,fieldtarget=author]%并删除translator - } - \map{%让address和location同步,biblatex中address是location的别名 - %因此输出的时候只有location信息,但处理过程中是可以存在address的。 - %\step[notfield=address,final] - \step[fieldsource=location,final] - \step[fieldset=address,origfieldval] - } - \map{%让address和location同步 - %\step[notfield=location,final] - \step[fieldsource=address,final] - \step[fieldset=location,origfieldval] - } - \map{%处理在bib文件用mark标记文献类型标识符的情况 - \step[fieldsource=mark,final] - \step[fieldset=usera, origfieldval] - } - \map{%处理在bib文件中直接给出文献的姓名格式为lowercase的情况 - \step[fieldsource=nameformat,match=lowercase,final] - \step[fieldset=namefmtid,fieldvalue={1}] - } - \map{%处理在bib文件中直接给出文献的姓名格式为givenahead的情况 - \step[fieldsource=nameformat,match=givenahead,final] - \step[fieldset=namefmtid,fieldvalue={2}] - } - \map{%处理在bib文件中直接给出文献的姓名格式为familyahead的情况 - \step[fieldsource=nameformat,match=familyahead,final] - \step[fieldset=namefmtid,fieldvalue={3}] - } - \map{%处理在bib文件中直接给出文献的姓名格式为pinyin的情况 - \step[fieldsource=nameformat,match=pinyin,final] - \step[fieldset=namefmtid,fieldvalue={4}] - } - \map{%根据article确定文献类型标识符 - \pertype{article} - \step[fieldset=usera, fieldvalue={J}] - } - \map{%根据periodical确定文献类型标识符 - \pertype{periodical} - \step[fieldset=usera, fieldvalue={J}] - \step[fieldsource=author] %有时会把author和editor混淆,处理后使用editor - \step[fieldset=editor, origfieldval] - \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{%根据增加一个新闻报纸的类型newspaper确定文献类型标识符 - \pertype{newspaper} - \step[fieldset=usera, fieldvalue={N}] - \step[fieldset=note, fieldvalue=news]%因为没有专门的驱动,记录note方便映射为article后判断 - } - \map{%对应增加的一个数据库类型database确定文献类型标识符 - \pertype{database} - \step[fieldset=usera, fieldvalue={DB}] - \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{%对应增加的一个数据集类型dataset确定文献类型标识符 - \pertype{dataset} - \step[fieldset=usera, fieldvalue={DS}]% - \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{%对应增加的一个软件类型software确定文献类型标识符 - \pertype{software} - \step[fieldset=usera, fieldvalue={CP}] - \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{%对应增加的一个舆图类型map确定文献类型标识符 - \pertype{map} - \step[fieldset=usera, fieldvalue={CM}]% - \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{%对应增加的一个档案类型archive确定文献类型标识符 - \pertype{archive} - \step[fieldset=usera, fieldvalue={A}] - \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{%因为misc类型本身就是没有类型,而不像其它文献有明确的类型,所以 - %当misc类型带有网址时,直接将其转换为online类型 - \pertype{misc} - \step[fieldsource=url,final] - \step[typesource=misc,typetarget=online] - } - \map{%对应增加的一个备选类型misc确定文献类型标识符 - \pertype{misc} - \step[fieldset=usera, fieldvalue={Z}]% - } - \map{ - \pertype{book} - \pertype{inbook} - \step[fieldset=usera, fieldvalue={M}] - \step[fieldsource=version] %有时会把version和edition混淆,处理后直接用edition - \step[fieldset=edition, origfieldval] - } - \map{%兼容老的standard类型,确定文献类型标识符 - \pertype{standard} - \step[fieldset=usera, fieldvalue={S}] - \step[fieldset=note, fieldvalue=standard]%因为没有专门的驱动,记录note方便映射为book和inbook后判断 - } - \map{ - \pertype{patent} - \step[fieldset=usera, fieldvalue={P}] - } - \map{ - \pertype{inproceedings} - \pertype{conference}%兼容老的conference类型 - \step[fieldset=usera, fieldvalue={C}] - \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher - \step[fieldset=publisher, origfieldval] - } - \map{ - \pertype{proceedings} - \step[fieldset=usera, fieldvalue={C}] - \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher - \step[fieldset=publisher, origfieldval] - } - \map{ - \pertype{incollection} - \step[fieldset=usera, fieldvalue={G}] - \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher - \step[fieldset=publisher, origfieldval] - } - \map{ - \pertype{collection} - \step[fieldset=usera, fieldvalue={G}] - \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher - \step[fieldset=publisher, origfieldval] - } - \map{ - \pertype{report} - \pertype{techreport}%兼容老的techreport类型 - \step[fieldset=usera, fieldvalue={R}] - \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher - \step[fieldset=publisher, origfieldval] - } - \map{ - \pertype{thesis} - \pertype{mastersthesis}%兼容老的mastersthesis和phdthesis类型 - \pertype{phdthesis} - \step[fieldset=usera, fieldvalue={D}] - \step[fieldsource=publisher]%有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{ - \pertype{online} - \pertype{electronic}%兼容老的electronic类型 - \pertype{www}%兼容老的www类型 - \step[fieldset=usera, fieldvalue={EB}] - \step[fieldsource=publisher]%有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval]%因为online的出版项处理类似手册 - \step[fieldsource=organization]%有时会把organization和institution混淆,处理后使用institution,以增强兼容性 - \step[fieldset=institution, origfieldval] - } - \map{ - \pertype{manual} - \step[fieldset=usera, fieldvalue={A}] - \step[fieldsource=edition]%有时会把version和edition混淆,处理后使用version - \step[fieldset=version, origfieldval] - \step[fieldsource=publisher]%有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - \step[fieldsource=organization]%有时会把organization和institution混淆,处理后使用institution,以增强兼容性 - \step[fieldset=institution, origfieldval] - } - \map{ - \pertype{unpublished} - \step[fieldset=usera, fieldvalue={Z}] - } - \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 - \step[fieldsource={author}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] - }% - \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 - \step[fieldsource={editor}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] - }% - \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 - \step[fieldsource={translator}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] - }% - \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 - \step[fieldsource={bookauthor}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] - }% - \map{%处理一些用year表示date的情况 - %这样处理将会设置date域,并使得labeldatesource变为空,因为date的前缀为空(如果是urldate,那么labeldatesource就是url)。 - %同时date域会被biblatex自动解析为year,month,day,并且覆盖原来的year信息 - \step[fieldsource=year] - \step[fieldset=date, origfieldval] - } - \map{%将entrykey放入keywords中用于后期使用 - \step[fieldsource=entrykey] - \step[fieldset=keywords, origfieldval] - } - \map{\step[fieldsource=title,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF - \step[fieldset=userd,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 - } - \map{% - \step[fieldsource=title,match=\regexp{[\x{0400}-\x{052F}]},final] - \step[fieldset=userd,fieldvalue={russian}]%俄语 - } - \map{% - \step[fieldsource=title,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] - \step[fieldset=userd,fieldvalue={japanese}]%日语 - } %确定形式后可增加类似andotherscn这样的本地化字符串处理 - \map{% - \step[fieldsource=title,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] - \step[fieldset=userd,fieldvalue={korean}]%韩语 - } - \map{%文献题名的中文判断,将信息保存到userd中,避免因为标签生成原因导致title域被清除而产生问题 - \step[fieldsource=title, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]% - \step[fieldset=userd, fieldvalue={chinese}] - } - \map{%将没有设置userd,且存在title域的默认设置为英文 - \step[fieldsource=title,final] - \step[fieldset=userd,fieldvalue={english}] - } - \map{\step[fieldsource=author,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF - \step[fieldset=userf,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 - } - \map{% - \step[fieldsource=author,match=\regexp{[\x{0400}-\x{052F}]},final] - \step[fieldset=userf,fieldvalue={russian}]%俄语 - } - \map{% - \step[fieldsource=author,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] - \step[fieldset=userf,fieldvalue={japanese}]%日语 - } %确定形式后可增加类似andotherscn这样的本地化字符串处理 - \map{% - \step[fieldsource=author,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] - \step[fieldset=userf,fieldvalue={korean}]%韩语 - } - \map{%作者的中文判断 - \step[fieldsource=author, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] - \step[fieldset=userf, fieldvalue={chinese}] - } - \map{%将没有设置userf,且存在author域的默认设置为英文 - \step[fieldsource=author,final] - \step[fieldset=userf,fieldvalue={english}] - } - \map{\step[fieldsource=translator,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF - \step[fieldset=usere,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 - } - \map{% - \step[fieldsource=translator,match=\regexp{[\x{0400}-\x{052F}]},final] - \step[fieldset=usere,fieldvalue={russian}]%俄语 - } - \map{% - \step[fieldsource=translator,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] - \step[fieldset=usere,fieldvalue={japanese}]%日语 - } %确定形式后可增加类似andotherscn这样的本地化字符串处理 - \map{% - \step[fieldsource=translator,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] - \step[fieldset=usere,fieldvalue={korean}]%韩语 - } - \map{%译者的中文判断 - \step[fieldsource=translator, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] - \step[fieldset=usere, fieldvalue={chinese}] - } - \map{%将没有设置usere,且存在translator域的默认设置为英文 - \step[fieldsource=translator,final] - \step[fieldset=usere,fieldvalue={english}] - } - \map{\step[fieldsource=editor,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF - \step[fieldset=userc,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 - } - \map{% - \step[fieldsource=editor,match=\regexp{[\x{0400}-\x{052F}]},final] - \step[fieldset=userc,fieldvalue={russian}]%俄语 - } - \map{% - \step[fieldsource=editor,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] - \step[fieldset=userc,fieldvalue={japanese}]%日语 - } %确定形式后可增加类似andotherscn这样的本地化字符串处理 - \map{% - \step[fieldsource=editor,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] - \step[fieldset=userc,fieldvalue={korean}]%韩语 - } - \map{%编者的中文判断 - \step[fieldsource=editor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 - \step[fieldset=userc, fieldvalue={chinese}] - } - \map{%将没有设置userc,且存在editor域的默认设置为英文 - \step[fieldsource=editor,final] - \step[fieldset=userc,fieldvalue={english}] - } - \map{\step[fieldsource=bookauthor,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF - \step[fieldset=userb,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 - } - \map{% - \step[fieldsource=bookauthor,match=\regexp{[\x{0400}-\x{052F}]},final] - \step[fieldset=userb,fieldvalue={russian}]%俄语 - } - \map{% - \step[fieldsource=bookauthor,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] - \step[fieldset=userb,fieldvalue={japanese}]%日语 - } %确定形式后可增加类似andotherscn这样的本地化字符串处理 - \map{% - \step[fieldsource=bookauthor,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] - \step[fieldset=userb,fieldvalue={korean}]%韩语 - } - \map{%编者的中文判断 - \step[fieldsource=bookauthor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 - \step[fieldset=userb, fieldvalue={chinese}] - } - \map{%将没有设置userc,且存在editor域的默认设置为英文 - \step[fieldsource=bookauthor,final] - \step[fieldset=userb,fieldvalue={english}] - } - \map{\step[fieldsource=userd,final]%userd存在则用根据标题的语言设定language - \step[fieldset=language,origfieldval]%本身language存在则不设定 - } - \map{\step[fieldsource=userf,final]%userd不存在,而userf存在则根据author的语言设定language - \step[fieldset=language,origfieldval] - }%如果没有作者和标题,那么剩下的最可能有意义的只有网址了,而网址通常是英文的,因此不用再进一步对其它域进行判断了。 - \map{%将没有设置的language设置成en,即认为不是中文的就是英文的。 - \step[fieldset=language,fieldvalue={english}] - } - \map{%一条文献的语言已经设定在language域中,由于出版项相关宏中使用userd判断, - %所以将一条文献的主体语言设定到userd中,本身前面userd已经设定,但没有处理无标题的情况, - %这里的处理等价于没有标题时,利用作者的语言设定userd,再没有作者,则默认用英文设定userd - \step[fieldsource=language] - \step[fieldset=userd,origfieldval] - } - \map{%当文献给出language域时,设置文献要使用的本地化字符串的语言 - %biblatex 3.11及以下版本仅有match是区分大小写的,而3.12版开始用matchi来区分大小,而match不区分 - %这里为兼容3.11及以下版本,所以用一个复杂一点的正则表达式 - \step[fieldsource=language,match=\regexp{(e|E)(n|N)(g|G)(l|L)(i|I)(s|S)(h|H)},final] - \step[fieldset=langid,fieldvalue={english}] - \step[fieldset=lansortorder,fieldvalue=\lanenorder] - } - \map{ - \step[fieldsource=language,match=\regexp{(r|R)(u|U)(s|S)(s|S)(i|I)(a|A)(n|N)},final] - \step[fieldset=langid,fieldvalue={russian}] - \step[fieldset=lansortorder,fieldvalue=\lanruorder] - } - \map{% - \step[fieldsource=language,match=\regexp{(f|F)(r|R)(e|E)(n|N)(c|C)(h|H)},final] - \step[fieldset=langid,fieldvalue={french}] - \step[fieldset=lansortorder,fieldvalue=\lanfrorder] - } - \map{% - \step[fieldsource=language,match=\regexp{(c|C)(h|H)(i|I)(n|N)(e|E)(s|S)(e|E)},final]%中日韩语目前都用english, - \step[fieldset=langid,fieldvalue={english}] - \step[fieldset=lansortorder,fieldvalue=\lancnorder] - } - \map{% - \step[fieldsource=language,match=\regexp{(j|J)(a|A)(p|P)(a|A)(n|N)(e|E)(s|S)(e|E)},final]%中日韩语目前都用english, - \step[fieldset=langid,fieldvalue={english}] - \step[fieldset=lansortorder,fieldvalue=\lanjporder] - } - \map{% - \step[fieldsource=language,match=\regexp{(k|K)(o|O)(r|R)(e|E)(a|A)(n|N)},final]%中日韩语目前都用english, - \step[fieldset=langid,fieldvalue={english}] - \step[fieldset=lansortorder,fieldvalue=\lankrorder] - } - \map{%尝试未定义数据模型的standard类型映射为其他类型book或inbook, - %standard类型在blx-dm中有出现,但仅定义了类型,域和约束等都没有定义 - %因为可能要映射两种类型,所以不能在驱动层处理,因为要做判断 - \step[fieldsource=booktitle,final]%当存在booktitle域是映射为inbook - \step[typesource=standard, typetarget=inbook, final] - } - \map{%剩下的全部映射为book - \step[typesource=standard, typetarget=book, final] - } -% \map{%先于标准样式的driver层映射,以取消type设置 -% \step[typesource=mastersthesis, typetarget=thesis, final] -% %\step[fieldset=type, fieldvalue=mathesis] -% } -% \map{%先于标准样式的driver层映射,以取消type设置 -% \step[typesource=phdthesis, typetarget=thesis, final] -% %\step[fieldset=type, fieldvalue=phdthesis] -% } - \map{%先于标准样式的driver层映射,以取消type设置 - \step[typesource=techreport, typetarget=report, final] - %\step[fieldset=type, fieldvalue=techreport] - } - \map{% - \pertype{report} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=report,typetarget=online] - \step[fieldset=note,fieldvalue={report}] - } - \map{% - \pertype{thesis} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=thesis,typetarget=online] - } - \map{% - \pertype{manual} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=manual,typetarget=online] - } - \map{% - \pertype{unpublished} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=unpublished,typetarget=online] - } - \map{% - \pertype{database} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=databasetypetarget=online] - } - \map{% - \pertype{dataset} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=dataset,typetarget=online] - } - \map{% - \pertype{software} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=software,typetarget=online] - } - \map{% - \pertype{map} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=map,typetarget=online] - } - \map{% - \pertype{archive} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=archive,typetarget=online] - } - \map[overwrite]{%这里还必须有overwrite,注意不同版本存在差异,比如texlive2015变16后biber有变化(20161207修改正确) - \step[fieldsource=note, final]%将note域信息复制给keywords,用于输出时容易区分标准和报纸 - \step[fieldset=keywords, fieldvalue={,}, append] - \step[fieldset=keywords, origfieldval, append] - } - \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\\\%}] - } - %对于高版本(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{ - \DeclareStyleSourcemap{ - \maps[datatype=bibtex]{ - \map{%默认情况下将空缺作者的中文文献设置为佚名 - \step[fieldsource=language,match={chinese},final] - \step[fieldset=author, fieldvalue={佚名}] - } - \map{%默认情况下将空缺作者的英文文献设置为A{non} - \step[fieldsource=language,match={english},final] - \step[fieldset=author, fieldvalue={A{non}}]%noauthor换成Anon,同时为避免大写还加了{} - } - } - } -} - -% -% 不同语言分集调整的实现方式 -% -% 原理方法:利用样式层的动态数据修改lansortorder域来实现排序 -\def\dealsortlan{ - \DeclareStyleSourcemap{ - \maps[datatype=bibtex]{ - \map[overwrite]{%当文献给出language域时,设置文献要使用的本地化字符串的语言 - \step[fieldsource=language,match=english,final] - \step[fieldset=lansortorder,fieldvalue=\lanenorder] - } - \map[overwrite]{ - \step[fieldsource=language,match=russian,final] - \step[fieldset=lansortorder,fieldvalue=\lanruorder] - } - \map[overwrite]{% - \step[fieldsource=language,match=french,final] - \step[fieldset=lansortorder,fieldvalue=\lanfrorder] - } - \map[overwrite]{% - \step[fieldsource=language,match=chinese,final]%中日韩语目前都用english, - \step[fieldset=lansortorder,fieldvalue=\lancnorder] - } - \map[overwrite]{% - \step[fieldsource=language,match=japanese,final]%中日韩语目前都用english, - \step[fieldset=lansortorder,fieldvalue=\lanjporder] - } - \map[overwrite]{% - \step[fieldsource=language,match=korean,final]%中日韩语目前都用english, - \step[fieldset=lansortorder,fieldvalue=\lankrorder] - } - } - } -} - - -% -%驱动别名等价于驱动层映射 -% -\DeclareBibliographyAlias{newspaper}{article}% -\DeclareBibliographyAlias{inproceedings}{inbook}%会议论文文献类型驱动 -\DeclareBibliographyAlias{conference}{inbook}%会议论文文献类型驱动 -\DeclareBibliographyAlias{incollection}{inbook}%文集中析出文献类型驱动 -\DeclareBibliographyAlias{collection}{book}%%文集类型驱动 -\DeclareBibliographyAlias{proceedings}{book}%会议论文集文献类型驱动 -\DeclareBibliographyAlias{thesis}{manual}%学位论文驱动 -\DeclareBibliographyAlias{unpublished}{manual}%其它类型驱动 -\DeclareBibliographyAlias{database}{manual} -\DeclareBibliographyAlias{dataset}{manual} -\DeclareBibliographyAlias{software}{manual} -\DeclareBibliographyAlias{map}{manual} -\DeclareBibliographyAlias{archive}{manual} - -%===================================================================== -% 设置排序格式 -%===================================================================== -% -% 排序格式,用降序,及userb域,针对biblatex3.7及以下版本 -% -\defversion{3.7}{sort}{%这是3.4版的,3.7版略有差异,但不大,后面有注释 - \DeclareSortingScheme{gb7714-2015}{ - \sort{ - \field{presort} - } - %\sort[final]{ - %\field{sortkey} - %} - \sort{ - \field{lansortorder}%language - } - \sort{ - \field{sortkey} - } - \sort{%[direction=descending] - \field{sortname} - \field{author} - \field{editor} - \field{translator} - } - \sort{ - \field{sortyear} - \field{year} - } - \sort{ - \field{sorttitle} - \field{title} - } - \sort{ - \field[padside=left,padwidth=4,padchar=0]{volume}%3.7版是\field{volume} - \literal{0000}%3.7版是\literal{0} - } - } - - %降序的nyt - \DeclareSortingScheme{gbnytd}{ - \sort{ - \field{presort} - } - %\sort[final]{ - %\field{sortkey} - %} - \sort{ - \field{lansortorder}%language - } - \sort[direction=descending]{ - \field{sortkey} - } - \sort[direction=descending]{ - \field{sortname} - \field{author} - \field{editor} - \field{translator} - } - \sort{ - \field{sortyear} - \field{year} - } - \sort{ - \field{sorttitle} - \field{title} - } - \sort{ - \field[padside=left,padwidth=4,padchar=0]{volume}%3.7版是\field{volume} - \literal{0000}%3.7版是\literal{0} - } - } - - %降序的ynt - \DeclareSortingScheme{gbyntd}{ - \sort{ - \field{presort} - } - %\sort[final]{ - %\field{sortkey} - %} - \sort{ - \field{lansortorder}%language - } - \sort[direction=descending]{ - \field{sortyear} - \field{year} - } - \sort{ - \field{sortkey} - } - \sort{ - \field{sortname} - \field{author} - \field{editor} - \field{translator} - } - \sort{ - \field{sorttitle} - \field{title} - } - \sort{ - \field[padside=left,padwidth=4,padchar=0]{volume}%3.7版是\field{volume} - \literal{0000}%3.7版是\literal{0} - } - } - - %升序的ynt - \DeclareSortingScheme{gbynta}{ - \sort{ - \field{presort} - } - %\sort[final]{ - %\field{sortkey} - %} - \sort{ - \field{lansortorder}%language - } - \sort{ - \field{sortyear} - \field{year} - } - \sort{ - \field{sortkey} - } - \sort{ - \field{sortname} - \field{author} - \field{editor} - \field{translator} - } - \sort{ - \field{sorttitle} - \field{title} - } - \sort{ - \field[padside=left,padwidth=4,padchar=0]{volume}%3.7版是\field{volume} - \literal{0000}%3.7版是\literal{0} - } - } -} - - -% -% 排序格式,用降序,及userb域,针对biblatex3.8及以上版本 -% -\defversion{3.8}{sort}{ - \DeclareSortingTemplate{gb7714-2015}{ - \sort{ - \field{presort} - } - %\sort[final]{ - %\field{sortkey} - %} - \sort{ - \field{lansortorder}%language - } - \sort{ - \field{sortkey} - } - \sort{%[direction=descending] - \field{sortname} - \field{author} - \field{editor} - \field{translator} - } - \sort{ - \field{sortyear} - \field{year} - } - \sort{ - \field{sorttitle} - \field{title} - } - \sort{ - \field{volume} - \literal{0} - } - } - - %降序的nyt - \DeclareSortingTemplate{gbnytd}{ - \sort{ - \field{presort} - } -% \sort[final]{ -% \field{sortkey} -% } - \sort{ - \field{lansortorder}%language - } - \sort[direction=descending]{ - \field{sortkey} - } - \sort[direction=descending]{% - \field{sortname} - \field{author} - \field{editor} - \field{translator} - } - \sort{ - \field{sortyear} - \field{year} - } - \sort{ - \field{sorttitle} - \field{title} - } - \sort{ - \field{volume} - \literal{0} - } - } - - %降序的ynt - \DeclareSortingTemplate{gbyntd}{ - \sort{ - \field{presort} - } -% \sort[final]{ -% \field{sortkey} -% } - \sort{ - \field{lansortorder}%language - } - \sort[direction=descending]{ - \field{sortyear} - \field{year} - } - \sort{ - \field{sortkey} - } - \sort{% - \field{sortname} - \field{author} - \field{editor} - \field{translator} - } - \sort{ - \field{sorttitle} - \field{title} - } - \sort{ - \field{volume} - \literal{0} - } - } - - %升序的ynt - \DeclareSortingTemplate{gbynta}{ - \sort{ - \field{presort} - } -% \sort[final]{ -% \field{sortkey} -% } - \sort{ - \field{lansortorder}%language - } - \sort{%[direction=ascending] - \field{sortyear} - \field{year} - } - \sort{ - \field{sortkey} - } - \sort{% - \field{sortname} - \field{author} - \field{editor} - \field{translator} - } - \sort{ - \field{sorttitle} - \field{title} - } - \sort{ - \field{volume} - \literal{0} - } - } - - % - % 定义命令\defdoublelangentry,用于biblatex>v3.8版利用related实现双语文献的处理 - % - %为了实现v3.8以上版本的双语文献,采用related的方法代替set方法,因为set方法已经无法实现了, - %因为set不再复制其第一个成员的信息。于是定义一个命令,用于动态的修改数据,即添加related域的信息 - %其中使用了\DeclareStyleSourcemap,但由于其只能出现在导言区中,因此\defdoublelangentry命令也只能出现在导言区中 - \newcommand{\defdoublelangentry}[2]{% - \edef\entrykeya{##1} - \edef\entrykeyb{##2} - \DeclareStyleSourcemap{ - \maps[datatype=bibtex]{ - \map{ - \step[fieldsource=entrykey, match=\entrykeya, final] - \step[fieldset=related, fieldvalue=\entrykeyb] - } - } - } - } -} - - -\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 - - -%===================================================================== -%参考文献表环境 -%===================================================================== - -% -% 列表格式 -% -% 增加一个\bibitemindent尺寸用于控制list环境的itemindent -% v1.0l,20180615,hzz -\setlength{\bibhang}{1em} -\newlength{\bibitemindent} -\setlength{\bibitemindent}{-\bibhang} -\setlength{\bibitemsep}{4.5pt} - \defbibenvironment{bibliography} - {\list - {} - {\setlength{\leftmargin}{\bibhang}% - \setlength{\itemindent}{\bibitemindent}% - \setlength{\itemsep}{\bibitemsep}% - \setlength{\parsep}{\bibparsep}}} - {\endlist} - {\item} - - -%===================================================================== -% 设置单元或块等的标点 -%===================================================================== -\renewrobustcmd*{\bibinithyphendelim}{\addhighpenspace}%用于处理姓名中名部分存在-的情况,比如ZHANG Yu-xin -\renewcommand*{\subtitlepunct}{\addcolon\space} %修改标题和其它标题信息间的标点%来源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}%ay样式用par也可以,因为没有悬挂对齐问题 -\renewcommand*{\bibpagespunct}{\addcolon\addthinspace}%%页码引用格式的修改,修改为用冒号 -%\renewcommand{\relateddelim}{}%\par - -%===================================================================== -% 修改域的格式,重定义域的输出宏 -%===================================================================== -% -% 新增文献类型标识符的格式 -% []前的nobreak,从GB4.1节的例子看不应该加,所以去掉 -% 但因为考虑到cjk字符和[]之间可能添加空格,所以仍然加上 -% 而[]中间的内容,从4.6.2节的例子看也是可以分割的,因此内部的nobreak也可以去掉 -% -\DeclareFieldFormat{gbtypeflag}{% -\iftoggle{bbx:gbmedium}% -{\iftoggle{bbx:url}% - {\iffieldundef{url}%当存在url时,增加一个OL标识符 - {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}}% - {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\texttt{/}OL]}}% - }% - {\ifentrytype{online}% - {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\texttt{/}OL]}}% - {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}}% - }}% - {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{]}}% -} - -% -% 新增用于报纸的文献类型标识符的格式 -% -\DeclareFieldFormat{gbtypeflagn}{%用于报纸newspaper -\iftoggle{bbx:gbmedium}% -{\iftoggle{bbx:url}% - {\iffieldundef{url}%当存在url时,增加一个OL标识符 - {\nobreak\printtext{[}\nobreak N\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% - {\nobreak\printtext{[}\nobreak N\printtext{\texttt{/}OL]}\nobreak}% - }% - {\nobreak\printtext{[}\nobreak N\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% -}{\nobreak\printtext{[}\nobreak N\printtext{]}\nobreak}% -} - -% -% 新增用于标准的文献类型标识符的格式 -% -\DeclareFieldFormat{gbtypeflags}{%用于标准standard -\iftoggle{bbx:gbmedium}% -{\iftoggle{bbx:url}% - {\iffieldundef{url}%当存在url时,增加一个OL标识符 - {\nobreak\printtext{[}\nobreak S\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% - {\nobreak\printtext{[}\nobreak S\printtext{\texttt{/}OL]}\nobreak}% - }% - {\nobreak\printtext{[}\nobreak S\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% -}{\nobreak\printtext{[}\nobreak S\printtext{]}\nobreak}% -} - -% -% 重设title等参考文献信息的输出格式 -% -% 原理方法:修改来自biblatex.def文件的原格式 -\newcommand{\bibtitlefont}{} -\newcommand{\bibauthorfont}{} -\newcommand{\bibpubfont}{} -\DeclareFieldFormat{title}{#1\adddot\addthinspace} -\DeclareFieldFormat{journaltitle}{#1\isdot}%添加\isdot,用于缩写名带点情况,将其转换为缩写点,便于标点的追踪 -\DeclareFieldFormat{issuetitle}{#1} -\DeclareFieldFormat{maintitle}{#1} -\DeclareFieldFormat{booktitle}{#1} -\DeclareFieldFormat%将期刊等文献的标题中原来带的引号去掉 - [article,patent,thesis,unpublished] - {title}{#1\adddot\addthinspace} -\DeclareFieldFormat%将期刊等文献的标题中原来带的引号去掉 - [inbook,incollection,inproceedings] - {title}{#1}%\nopunct\unspace -\DeclareFieldFormat{url}{\url{#1}} %url域修改如本行%url相关输出,源来自biblatex.def -\def\UrlFont{\rmfamily}%设置url字体为roman字体%\ttfamily -%\urlstyle{rm} %使用这句也一样 -\setcounter{biburlnumpenalty}{100} %让url可以在数字后断行 -\setcounter{biburlucpenalty}{100} %让url可以在大写字母后断行 -\setcounter{biburllcpenalty}{100} %让url可以在小写字母后断行 -\DeclareFieldFormat{doi}{% - \rmfamily{DOI}\addcolon\space - \ifhyperref - {\href{https://doi.org/#1}{\nolinkurl{#1}}} - {\nolinkurl{#1}}} -% -% 标题的字母大小写格式修改 -% -% 注意:修改标题的字母大小写,不能用前面的title的格式而要用titlecase -% 因为titlecase is applied to the contents of the field directly,title is not -%\DeclareFieldFormat{titlecase}{\MakeCapital#1}%重设标题格式,将其修改为首字母大写 -\DeclareFieldFormat{titlecase}{\iftoggle{bbx:titlelink}{% -\iffieldundef{url}{\MakeCapital#1}{% -\href{\thefield{url}}{#1}}}{\MakeCapital#1}}%重设标题格式,将其修改为首字母大写 -\DeclareFieldFormat{pages}{#1}%页码引用格式的修改%去掉前面引导页码的pp.等字符 -\DefineBibliographyExtras{english}{\renewcommand*{\bibrangedash}{-}} - -\def\execgbfdfmtstd{%恢复到标准样式的设置 -\DeclareFieldFormat{title}{\mkbibemph{##1}} -\DeclareFieldFormat - [article,inbook,incollection,inproceedings,patent,thesis,unpublished] - {title}{\mkbibquote{##1\isdot}} -\DeclareFieldFormat - [suppbook,suppcollection,suppperiodical] - {title}{##1} -\DeclareFieldFormat{journaltitle}{\mkbibemph{##1}} -\DeclareFieldFormat{issuetitle}{\mkbibemph{##1}} -\DeclareFieldFormat{maintitle}{\mkbibemph{##1}} -\DeclareFieldFormat{booktitle}{\mkbibemph{##1}} -\DeclareFieldFormat{url}{\mkbibacro{URL}\addcolon\space\url{##1}} -\DeclareFieldFormat{titlecase}{##1} -\DeclareFieldFormat{pages}{\mkpageprefix[bookpagination]{##1}} -} - -% -% 文献标题后的标点问题 -% v1.0k,20180405,为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以上版本 - \@ifclassloaded{beamer}{ - \DeclareFieldFormat{title}{#1}% - \DeclareFieldFormat[article,patent,thesis,unpublished]{title}{#1} - \AtBeginDocument{% - \patchcmd{\abx@macro@title}{\newunitpunct}{}{}{}}}{} - } - - -% -% 修改译者位置格式 -% -% 原理方法:修改来自biblatex.def文件的bytranslator+others宏的格式 -\renewbibmacro*{bytranslator+others}{\bibauthorfont% - \ifnameundef{translator} - {} - {%\usebibmacro{bytranslator+othersstrg} - %\setunit{\addspace}% - \printnames[bytranslator]{translator}% - \clearname{translator}% - %从macro*{bytranslator+othersstrg}%中可以看到当地化字符串格式的引用前的代码处理 - %比如生成cotranslator等用于调用cotranslator所代表的当地化字符串 - \usebibmacro{bytranslator+othersstrg}%“译”的位置换到下面来,即放到译者后面。 - %\setunit{\addspace}% - \newunit}% - \usebibmacro{withothers}} - - - -% -% 修改作者数量超过限定值,做省略时的处理格式 -% v1.0,20160701,hzz -% v1.0O,20190103,hzz,修改利用新定义的一个分隔符strandothersdelim -% -% 原理方法:判断作者或译者是否中文,若中文用字符等,否则用et al. 。 -% \printnames由start-stop控制项数,默认是1和maxnames/minnames -\renewbibmacro*{name:andothers}{\bibauthorfont% - \ifboolexpr{ - test {\ifnumequal{\value{listcount}}{\value{liststop}}} - and - test \ifmorenames - }{\ifnumgreater{\value{liststop}}{1}%注意这里试图去区分姓名总数大于1的情况,当姓名总数大于1时,最后一个姓名后面先加入一个\finalandcomma - {\finalandcomma}%目前国标没有这样的区分要求,如果有需要也是可以这么去做的。 - {}% -\printdelim{andothersdelim}\printdelim{strandothersdelim}% -}{%当是译者的时候需要特殊处理:从7.2节看等,译前面加逗号,但从示例看等和译同时出现时,译前的逗号没有,比如: -%袁训来, 陈哲, 肖书海, 等. -%胡泳, 范海燕, 译. -%潘惠霞, 魏婧, 杨艳, 等译. -\ifcurrentname{translator}{\addcomma\addthinspace}{}%为了实现上述第二个示例情况做的处理 -}} - -% 修改省略作者后的本地化字符串,比如et al. -% v1.0o,20190103,hzz -% -% 原理方法:默认情况下判断作者或译者是否中文,若中文用字符andotherscn=“等”,否则用andothers=“et al.”。 -% 非默认情况,根据选项信息,选择选择强制中文或英文 -% 首先设置全局的,然后设置文献表中的,这一等价于将所有的cite命令环境都设置过了 -% 而不用对每一个引用命令单独设置,比如cite,parancite,textcite都设置 -\DeclareDelimFormat{strandothersdelim}{% - \edef\userfieldabcde{userd}%这里使用\iffieldequalstr{labelnamesource}替代ifcurrentname因为标注中使用ifcurrentname无效 - \iffieldequalstr{labelnamesource}{translator}{\edef\userfieldabcde{usere}}{}% - \iffieldequalstr{labelnamesource}{editor}{\edef\userfieldabcde{userc}}{}% - \iffieldequalstr{labelnamesource}{author}{\edef\userfieldabcde{userf}}{}% - \iffieldequalstr{labelnamesource}{bookauthor}{\edef\userfieldabcde{userb}}{}% - \ifcase\value{gbcitelocalcase}% - \iffieldequalstr{\userfieldabcde}{chinese}{\ifbibstring{andothersincitecn}{\bibstring{andothersincitecn}}{\bibstring{andothers}}}{}%中文已经通过english本地化字符串定义 - \iffieldequalstr{\userfieldabcde}{korean}{\ifbibstring{andotherskr}{\bibstring{andotherskr}}{\bibstring{andothers}}}{}%韩语未定义,所以与bib中一致 - \iffieldequalstr{\userfieldabcde}{japanese}{\ifbibstring{andothersjp}{\bibstring{andothersjp}}{\bibstring{andothers}}}{}%日与同韩语 - \iffieldequalstr{\userfieldabcde}{english}{\ifbibstring{andothersincite}{\bibstring{andothersincite}}{\bibstring{andothers}}}{}%英语已定义 - \iffieldequalstr{\userfieldabcde}{french}{\bibstring{andothers}}{}%法语未定义,若要定义需要针对french本地化字符串定义 - \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{andothers}}{}%俄语未定义,若要定义需要针对russian本地化字符串定义 - \or% - \bibstring{andothersincitecn}% - \or% - \bibstring{andothersincite}% - \fi} - - -\DeclareDelimFormat[bib,biblist]{strandothersdelim}{% - \edef\userfieldabcde{userd}% - \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% - \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% - \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% - \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% - \ifcase\value{gbbiblocalcase}% - \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andotherscn}}{}% - \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andotherskr}}{}% - \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andothersjp}}{}% - \iffieldequalstr{\userfieldabcde}{english}{\bibstring{andothers}}{}% - \iffieldequalstr{\userfieldabcde}{french}{\bibstring{andothers}}{}% - \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{andothers}}{}% - \or% - \bibstring{andotherscn}% - \or% - \bibstring{andothers}% - \fi} - - -% -% 修改最后一个作者前的字符串,比如 and -% v1.0o,20190103,hzz -% -% 原理方法:默认情况下判断作者或译者是否中文,若中文用字符andcn=“和”,否则用and=“and”。 -% 非默认情况,根据选项信息,选择选择强制中文或英文 -% 首先设置全局的,然后设置文献表中的,这一等价于将所有的cite命令环境都设置过了 -% 而不用对每一个引用命令单独设置,比如cite,parancite,textcite都设置 -\DeclareDelimFormat{finalnamedelim}{% - \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}% -% \addspace% - \edef\userfieldabcde{userd}% - \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% - \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% - \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% - \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% - \ifcase\value{gbcitelocalcase}% - \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andincitecn}}{}% - \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andkr}}{}% - \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andjp}}{}% - \iffieldequalstr{\userfieldabcde}{english}{\space\bibstring{andincite}\space}{}% - \iffieldequalstr{\userfieldabcde}{french}{\space\bibstring{and}\space}{}% - \iffieldequalstr{\userfieldabcde}{russian}{\space\bibstring{and}\space}{}% -%\space% - \or% - \bibstring{andincitecn}%\space% - \or% -\space\bibstring{andincite}\space% - \fi} - -\DeclareDelimFormat[bib,biblist]{finalnamedelim}{% - \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}% - \addspace% - \edef\userfieldabcde{userd}% - \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% - \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% - \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% - \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% - \ifcase\value{gbbiblocalcase}% - \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andcn}}{}% - \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andkr}}{}% - \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andjp}}{}% - \iffieldequalstr{\userfieldabcde}{english}{\bibstring{and}}{}% - \iffieldequalstr{\userfieldabcde}{french}{\bibstring{and}}{}% - \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{and}}{}% -\space% - \or% - \bibstring{andcn}\space% - \or% - \bibstring{and}\space% - \fi} - - - -% -% 重设title的输出 -% -% 20180425,v1.0k,为标题增加字体控制命令,Hu Zhenzhen -% 原理方法:将文献类型标识符输出出去,原输出来自biblatex.def文件 -% 利用toggle做标识符是否输出的判断 -\renewbibmacro*{title}{% - \ifboolexpr{% - test{\iffieldundef{title}}% - and - test{\iffieldundef{subtitle}}% - }% - {}% - {\printtext[title]{\bibtitlefont%增加字体控制命令 - \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 - }% -}} - - -% -% 作者信息的输出格式 -% -% 20180425,v1.0k,为作者增加字体控制命令,Hu Zhenzhen -% 20180603,v1.0l,增加使用nameformat域来选择姓名格式 -\DeclareNameFormat{namefmtselected}{% -\iffieldundef{namefmtid}{}% -{\defcounter{gbnamefmtcase}{\thefield{namefmtid}}}% -\ifcase\value{gbnamefmtcase}% - \ifgiveninits - {\usebibmacro{name:gbuppercase} - {\namepartfamily} - {\namepartgiveni} - {\namepartprefix} - {\namepartsuffix}} - {\usebibmacro{name:gbuppercase} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}}% -\or - \ifgiveninits - {\usebibmacro{name:gblowercase} - {\namepartfamily} - {\namepartgiveni} - {\namepartprefix} - {\namepartsuffix}} - {\usebibmacro{name:gblowercase} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}}% -\or - \ifgiveninits - {\usebibmacro{name:given-family} - {\namepartfamily} - {\namepartgiveni} - {\namepartprefix} - {\namepartsuffix}} - {\usebibmacro{name:given-family} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}}% -\or - \ifgiveninits - {\usebibmacro{name:family-given} - {\namepartfamily} - {\namepartgiveni} - {\namepartprefix} - {\namepartsuffix}} - {\usebibmacro{name:family-given} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}}% -\or -\usebibmacro{name:gbpinyin} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}% -\or - \ifnumequal{\value{listcount}}{1} - {\ifgiveninits - {\usebibmacro{name:family-given} - {\namepartfamily} - {\namepartgiveni} - {\namepartprefix} - {\namepartsuffix}} - {\usebibmacro{name:family-given} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}}% - \ifboolexpe{% - test {\ifdefvoid\namepartgiven} - and - test {\ifdefvoid\namepartprefix}} - {} - {\usebibmacro{name:revsdelim}}} - {\ifgiveninits - {\usebibmacro{name:given-family} - {\namepartfamily} - {\namepartgiveni} - {\namepartprefix} - {\namepartsuffix}} - {\usebibmacro{name:given-family} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}}}% -\fi - \usebibmacro{name:andothers}} - -\DeclareNameAlias{default}{namefmtselected}%姓名的默认格式采用可选的模式 -\DeclareNameAlias{sortname}{default}% Used in the bibliography %family-given/given-family -\DeclareNameAlias{citename}{default}% Default used by \citename - -\DeclareDelimFormat[bib,biblist]{andothersdelim}{\addcomma\addspace} -%\DeclareDelimFormat[textcite]{andothersdelim}{\addspace}% - -%GB/T 7714-2015 风格,全部大写 -\newbibmacro*{name:gbuppercase}[4]{\bibauthorfont% -\renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 -\renewcommand*{\revsdnamepunct}{}% - \ifuseprefix% - {\usebibmacro{name:delim}{#3#1}% - \usebibmacro{name:hook}{#3#1}% - \ifdefvoid{#3}{}{% - \ifcapital% - {\mkbibnameprefix{\MakeCapital{#3}}\isdot}% - {\mkbibnameprefix{#3}\isdot}% - \ifprefchar{}{\bibnamedelimc}}% - \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% - \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital - \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}% - {\usebibmacro{name:delim}{#1}% - \usebibmacro{name:hook}{#1}% - \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% - \ifboolexpe{% - test {\ifdefvoid{#2}} - and - test {\ifdefvoid{#3}}} - {}{\revsdnamepunct}% - \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital - \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}% - \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}% -} - -%GB/T 7714-2015 风格,大小写不变,根据bib文件内输入原样输出 -\newbibmacro*{name:gblowercase}[4]{\bibauthorfont% - \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 - \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def - \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}}% -} - -%中文常见风格,汉语拼音全拼模式 -\newbibmacro*{name:gbpinyin}[4]{\bibauthorfont% -\renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉,%来源biblatex2.STY -\renewcommand*{\revsdnamepunct}{}%%来源biblatex.def -\renewrobustcmd*{\bibnamedelima}{\mbox{-}}% - \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}}% -} - - -\@ifpackagelater{biblatex}{2016/03/27}%biblatex<3.2版的情况 - {}{ - %GB/T 7714-2015 风格,全部大写 - \renewbibmacro*{name:gbuppercase}[4]{\bibauthorfont% - \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 - \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def - \ifuseprefix - {\usebibmacro{name:delim}{#3#1}% - \usebibmacro{name:hook}{#3#1}% - \ifblank{#3}{}{% - \ifcapital - {\mkbibnameprefix{\MakeCapital{#3}}\isdot} - {\mkbibnameprefix{#3}\isdot}% - \ifpunctmark{'}{}{\bibnamedelimc}}% - %\mkbibnamelast{#1}\isdot - \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase - %注意上一句\MakeCapital后面如果再跟一个{}包含#1,则没有效果,可能是包在里面少了一层展开 - %因为机构名通常包括在{}内,所以要多展开一次才行,所以这里去掉#1外面的{} - %\mkbibnamelast{\MakeUppercase{#1}}\isdot - %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 - \ifblank{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamefirst{\MakeUppercase{#2}}\isdot}% - \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}} - {\usebibmacro{name:delim}{#1}% - \usebibmacro{name:hook}{#1}% - %\mkbibnamelast{#1}\isdot %3.9.1 Generic Commands and Hooks,对姓重新处理,如下句: %\mkbibnamelast{\MakeUppercase{#1}} - \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot %大写,参考4.6.4 Miscellaneous Commands,\MakeUppercase %\MakeSentenceCase - %\mkbibnamelast{\MakeUppercase{#1}}\isdot - %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 - \ifblank{#2#3}{}{\revsdnamepunct}% - \ifblank{#2}{}{\bibnamedelimd\mkbibnamefirst{\MakeUppercase{#2}}\isdot}% - \ifblank{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}% - \addcomma\addspace% - \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}% - }% - } - - %GB/T 7714-2015 风格,大小写不变,根据bib文件内输入原样输出 - \renewbibmacro*{name:gblowercase}[4]{\bibauthorfont% - \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 - \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def - \ifuseprefix - {\usebibmacro{name:delim}{#3#1}% - \usebibmacro{name:hook}{#3#1}% - \ifblank{#3}{}{% - \ifcapital - {\mkbibnameprefix{\MakeCapital{#3}}\isdot} - {\mkbibnameprefix{#3}\isdot}% - \ifpunctmark{'}{}{\bibnamedelimc}}% - \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{{#1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase - \ifblank{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamefirst{{#2}}\isdot}% - \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}} - {\usebibmacro{name:delim}{#1}% - \usebibmacro{name:hook}{#1}% - \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{{#1}}}\isdot %大写,参考4.6.4 Miscellaneous Commands,\MakeUppercase %\MakeSentenceCase - \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:gbpinyin}[4]{\bibauthorfont% - \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 - \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def - \renewrobustcmd*{\bibnamedelima}{\mbox{-}}% - \ifuseprefix - {\usebibmacro{name:delim}{#3#1}% - \usebibmacro{name:hook}{#3#1}% - \ifblank{#3}{}{% - \ifcapital - {\mkbibnameprefix{\MakeCapital{#3}}\isdot} - {\mkbibnameprefix{#3}\isdot}% - \ifpunctmark{'}{}{\bibnamedelimc}}% - \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase - \ifblank{#2}{}{\revsdnamepunct\bibnamedelimd\MakeSentenceCase{\mkbibnamefirst{#2}}\isdot}% - \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}} - {\usebibmacro{name:delim}{#1}% - \usebibmacro{name:hook}{#1}% - \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot %大写,参考4.6.4 Miscellaneous Commands,\MakeUppercase %\MakeSentenceCase - \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}% - }% - } - - %%biblatex<3.2版的情况,姓名的处理格式带参数 - \DeclareNameFormat{namefmtselected}{% - \iffieldundef{namefmtid}{}% - {\defcounter{gbnamefmtcase}{\thefield{namefmtid}}}% - \ifcase\value{gbnamefmtcase}% - \iffirstinits - {\usebibmacro{name:gbuppercase}{#1}{#4}{#5}{#7}} - {\usebibmacro{name:gbuppercase}{#1}{#3}{#5}{#7}}% - \or - \iffirstinits - {\usebibmacro{name:gblowercase}{#1}{#4}{#5}{#7}} - {\usebibmacro{name:gblowercase}{#1}{#3}{#5}{#7}}% - \or - \iffirstinits - {\usebibmacro{name:last-first}{#1}{#4}{#5}{#7}} - {\usebibmacro{name:last-first}{#1}{#3}{#5}{#7}}% - \ifblank{#3#5} - {} - {\usebibmacro{name:revsdelim}}% - \or - \iffirstinits - {\usebibmacro{name:first-last}{#1}{#4}{#5}{#7}} - {\usebibmacro{name:first-last}{#1}{#3}{#5}{#7}}% - \or - \usebibmacro{name:gbpinyin}{#1}{#3}{#5}{#7}% - \or - \ifnumequal{\value{listcount}}{1} - {\iffirstinits - {\usebibmacro{name:last-first}{#1}{#4}{#5}{#7}} - {\usebibmacro{name:last-first}{#1}{#3}{#5}{#7}}% - \ifblank{#3#5} - {} - {\usebibmacro{name:revsdelim}}} - {\iffirstinits - {\usebibmacro{name:first-last}{#1}{#4}{#5}{#7}} - {\usebibmacro{name:first-last}{#1}{#3}{#5}{#7}}}% - \fi - \usebibmacro{name:andothers}} -} - -% -% url和url日期格式 -% -\renewbibmacro*{url+urldate}{% - %\usebibmacro{url}%%更换url的位置,放到下面 - \iffieldundef{urlyear}% - {}{%\setunit*{\addspace}% - \usebibmacro{urldate}}% - \setunit{\addperiod\addspace}% - \usebibmacro{url}} -\renewbibmacro*{url}{\printfield{url}} - -% -% 日期信息的输出格式,针对biblatex<3.7版本 -% -\defversion{3.4}{date}{ - \renewbibmacro*{urldate}{% - \addthinspace\printtext{[}\printfield{urlyear}% - \iffieldundef{urlmonth}{}{\bibrangedash\printfield{urlmonth}}% - \iffieldundef{urlday}{}{\bibrangedash\printfield{urlday}}\printtext{]}} - - \newbibmacro*{newsdate}{%%新增加一个公告日期,公开日期或新闻日期 - \iffieldundef{year}{}{\printfield{year}% - \iffieldundef{month}{}{\bibrangedash\printtext{\thefield{month}}% - \iffieldundef{day}{}{\bibrangedash\printfield{day}}}}% - } - - \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 - \ifboolexpr{% - test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}% - }% - {}%更新或修改日期通常有day信息 - {\iffieldequalstr{year}{}{%替换\iffieldundef{year},因为year总是存在,但为空 - \iffieldundef{endyear}{% - \iffieldundef{eventyear}{}{\printtext{\mkbibparens{\printtext{\printfield{eventyear}}% - \iffieldundef{eventmonth}{}{\bibrangedash\thefield{eventmonth}}% - \iffieldundef{eventday}{}{\bibrangedash\printfield{eventday}}}}% - }% - }{% - \iffieldundef{endyear}{}{\printtext{\mkbibparens{\printtext{\printfield{endyear}}% - \iffieldundef{endmonth}{}{\bibrangedash\thefield{endmonth}}% - \iffieldundef{endday}{}{\bibrangedash\printfield{endday}}}}% - }% - }% - }% - {% - \iffieldundef{year}{}{\printtext{\mkbibparens{\printtext{\printfield{year}}% - \iffieldundef{month}{}{\bibrangedash\thefield{month}}% - \iffieldundef{day}{}{\bibrangedash\printfield{day}}}}% - }% - }% - }}% -} - -% -% 日期信息的输出格式,针对3.9>=biblatex>=3.7版本 -% -\defversion{3.7}{date}{ - \DeclareFieldFormat{urldate}{##1} - \renewbibmacro*{urldate}{% - \addthinspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 - - % - % 专利的公告日期、或报纸的日期的输出宏 - % 20160701,v1.0,新增加 - % 20180405,v1.0k,为biblatexv3.7-3.9版本,出现多出点bug做处理,Hu Zhenzhen - % - % 原理方法:加上printtext避免破坏异步标点机制 - % - \newbibmacro*{newsdate}{% - \printtext{\blx@edtfdate{}{}}% - } - - \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 - \ifboolexpr{% - test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}% - }% - {}%更新或修改日期通常有day信息 - {\iffieldundef{year}{% - \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{(}\printeventdate\printtext{)}}}% - {\printtext{(}\printenddate\printtext{)}}% - }{\iffieldequalstr{year}{}{%因为year存在,但为空 - }{\printtext{(}\blx@edtfdate{}{}\printtext{)}}% - }% - }}% -} - -% -% 日期信息的输出格式,针对biblatex>=3.10版本 -% -\defversion{3.10}{date}{ - \DeclareFieldFormat{urldate}{##1} - \renewbibmacro*{urldate}{% - \addthinspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 - - % - % 专利的公告日期、或报纸的日期的输出宏 - % 20160701,v1.0,新增加 - % 20180405,为biblatexv3.10版本,出现多出点bug做处理,Hu Zhenzhen - % - % 原理方法:加上printtext避免破坏异步标点机制 - % 本可以用\printdate,但由于date选项设置为year,所以仅会给出年份 - % 所以无法再用选项设置的方法,印象需要用底层的命令 - % 这里可以用\blx@isodate,但用\blx@gbdate试图避免版本判断 - \newbibmacro*{newsdate}{%% - \printtext{\blx@gbdate{}{}}%%\blx@isodate{}{}% - } - - \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 - \ifboolexpr{% - test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}% - }% - {}%更新或修改日期通常有day信息 - {\iffieldundef{year}{% - \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{(}\printeventdate\printtext{)}}}% - {\printtext{(}\printenddate\printtext{)}}% - }{\iffieldequalstr{year}{}{%因为year存在,但为空 - }{\printtext{(}\blx@gbdate{}{}\printtext{)}}% - }% - }}% -} - -% -% 关联文献的输出格式,针对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}% - \def\bbx@tempa{}% - \setcounter{bbx:relatedtotal}{0}% - \def\do##1{% - \entrydata{##1}{% - \ifrelatedloop - {} - {\stepcounter{bbx:relatedtotal}% - \gappto{\bbx@tempa}{##1,}}}}% - \docsvfield{related}% - \restorefield{related}{\bbx@tempa}% - \ifnumgreater{\value{bbx:relatedtotal}}{0} - {\listcsxadd{bbx:relatedloop}{\strfield{entrykey}}% - \iffieldundef{clonesourcekey} - {} - {\listcsxadd{bbx:relatedloop}{\strfield{clonesourcekey}}}% - \setcounter{bbx:relatedcount}{0}% - \def\do{% - \stepcounter{bbx:relatedcount}% - \ifnumgreater{\value{bbx:relatedcount}}{0}%这里从1改为0 - {\ifcsundef{relateddelim\strfield{relatedtype}} - {\printtext{\relateddelim}} - {\printtext{\csuse{relateddelim\strfield{relatedtype}}}}} - {}}% - \ifbibmacroundef{related:\strfield{relatedtype}} - {\appto{\do}{\usebibmacro{related:default}}} - {\appto{\do}{\usebibmacro*{related:\strfield{relatedtype}}}}% - \iffieldformatundef{related:\strfield{relatedtype}} - {\def\bbx@tempa{related}} - {\def\bbx@tempa{related:\strfield{relatedtype}}}% - \iffieldformatundef{relatedstring:\strfield{relatedtype}} - {\def\bbx@tempb{relatedstring:default}} - {\def\bbx@tempb{relatedstring:\strfield{relatedtype}}}% - \printtext[\bbx@tempa]{% - \usebibmacro{begrelatedloop}% - \iffieldundef{relatedstring} - {\ifboolexpr{ - test {\ifnumgreater{\value{bbx:relatedtotal}}{1}} - and - test {\ifbibxstring{\thefield{relatedtype}s}} - } - {\printtext[\bbx@tempb]{% - \bibstring[\mkrelatedstring]{\thefield{relatedtype}s}}} - {\iffieldbibstring{relatedtype} - {\printtext[\bbx@tempb]{% - \bibstring[\mkrelatedstring]{\thefield{relatedtype}}}} - {}}} - {\iffieldbibstring{relatedstring} - {\printtext[\bbx@tempb]{% - \bibstring[\mkrelatedstring]{\thefield{relatedstring}}}} - {\printfield[\bbx@tempb]{relatedstring}}}% - \docsvfield{related}% - \usebibmacro{endrelatedloop}}}% - {}% - \usebibmacro{endrelated}}} -}{} - -% -% 关联文献块前的分隔符,针对biblatex3.11 -% -% 原理方法:因为增加了begrelateddelim钩子,所以不需要重定义related输出宏 -\defversion{3.11}{related}{ -\renewcommand{\begrelateddelim}{\adddot\newline\nobreak} -} - -\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}} -% {}% - %\newunit\newblock - \iftoggle{bbx:eprint} - {\iffieldundef{eprint}{}{\newunit\usebibmacro{eprint}}}%必须要做域判断否则容易产生多余的标点 - {}% - %\newunit\newblock - \iftoggle{bbx:url} - {\usebibmacro{url+urldate}} - {} - \newunit\newblock - \iftoggle{bbx:doi} - {\printfield{doi}} - {}} - -% -% 调整页码的格式,即chapter+pages格式 -% -\renewbibmacro*{chapter+pages}{% -\iftoggle{bbx:gbstrict}{}{% - \printfield{chapter}}% - \iffieldundef{pages}{}{%这里增加一个判断,当没有页码时就不输出 - \setunit{\bibpagespunct}% - \printfield{pages}}% - %\newunit %这里的标点去掉 - } - -% -% 当location等出版项超过maxitem缩减后不再输出etal -% -\DeclareListFormat{location}{% - \usebibmacro{list:delim}{#1}% - #1\isdot} -\DeclareListAlias{institution}{location} -\DeclareListAlias{publisher}{location} - -% 新增一个样式用于输出连续出版物的地址,单位,时间, -% 用于periodical连续出版物的出版社和地址的处理 -% -% v1.0k,20180425,为出版信息增加字体控制命令,hzz -% %类似\newbibmacro*{publisher+location+date} -\newbibmacro*{location+institution+date}{\bibpubfont% -\iftoggle{bbx:gbpub}% -{\testCJKfirst{userd}% -\ifboolexpr{% -test {\iflistundef{location}} and test {\iflistundef{institution}}% -}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress}\space :\space\str@nopublisher]}% -{\printtext{[S.l.\space :\space s.n.\adddot]}}% -}{% -\iflistundef{location}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress]}}{\printtext{[S.l.\adddot]}}}% - {\printlist{location}}% -\addcolon\addspace% -\iflistundef{institution}{% -\iftoggle{ifCJKforgbt}{\printtext{[\str@nopublisher]}}{\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}% -} -% -% 通用的出版社和地址的处理 -% -% 原理方法:当没有出版社地址时,直接判断title的信息是否是中文,若为中文,则写出版地不详,否则用英文的字符表示。 -% 事实上title对于每个文献来说是必须的,所以用它判断是最快的,而且一般标题和出版社的语言是一样的。 -% 注意标准standard类型,因为当没有出版项时直接省略,所以做特殊处理 -\renewbibmacro*{publisher+location+date}{\bibpubfont% -\iftoggle{bbx:gbpub}% -{\testCJKfirst{userd}% - \ifboolexpr{ test {\iflistundef{location}} and test {\iflistundef{publisher}} }% - {\iffieldequalstr{note}{standard}{}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress}\space :\space\str@nopublisher]}{\printtext{[S.l.\space :\space s.n.\adddot]}}}}% - {\iflistundef{location}{%\adddot - \iffieldequalstr{note}{standard}{}%%从gbt7714-2015标准第19页看到,标准存在出版项时输出,没有时完全省略。 - {\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress]}\addcolon\addspace}{\printtext{[S.l.\adddot]}\addcolon\addspace}}}% \bibstring{noaddress} - {\printlist{location}\addcolon\addspace}%%\addcolon\addspace% - \iflistundef{publisher}{% - \iffieldequalstr{note}{standard}{}% - {\iftoggle{ifCJKforgbt}{\printtext{[\str@nopublisher]}\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 - }% -} - -% -% 修改了一个institution+location+date用于manual、report、thesis等类型 -% -% 20180425,v1.0k,增加了字体控制命令,hzz -% 20190105,v1.0o,加了一个编组避免\usebibmacro{date}把month和day信息去掉 -\renewbibmacro*{institution+location+date}{\bibpubfont%当没有institution时不处理。 -{\printlist{location}%%加了一个编组避免\usebibmacro{date}把month和day信息去掉 - \iflistundef{institution} - {\setunit*{\addcomma\space}} - {\setunit*{\addcolon\space}}% - \printlist{institution}% - \setunit*{\addcomma\space}% - \usebibmacro{date}% - %\newunit - }} - -% -% 对volume卷信息格式做出修改 -% v1.0o,20190105,hzz -% -\DeclareFieldFormat{volume}{% -\testCJKfirst{userd}% -\iftoggle{ifCJKforgbt}% -{\bibstring{serialcn}#1\bibstring{volumecn}}% -{\bibstring{volume}~#1}% -}% volume of a book -\DeclareFieldFormat[article,periodical]{volume}{#1}% volume of a journal - -% -% 对number册信息格式做出修改 -% v1.0o,20190105,hzz -% -\DeclareFieldFormat{number}{#1}% -\DeclareFieldFormat[book,collection,inbook,% -incollection,proceedings,inproceedings]{number}{% -\testCJKfirst{userd}% -\iftoggle{ifCJKforgbt}% -{\bibstring{serialcn}#1\bibstring{numbercn}}% -{#1}% -}% - -% -% 对edition版本信息格式做出修改 -% -\DeclareFieldFormat{edition}{\bibtitlefont%源来自biblatex.DEF -\testCJKfirst{userd}% -\iftoggle{ifCJKforgbt}% -{\ifinteger{#1}% -{\printtext{#1\str@edition}}% -{#1\isdot}}% -{\ifinteger{#1}% -{\mkbibordedition{#1}~\bibstring{edition}}% -{#1\isdot}}} - -% -% 对version的版本信息做出修改 -% -\DeclareFieldFormat{version}{\bibtitlefont%源来自biblatex.DEF -\testCJKfirst{userd}% - \ifinteger{#1}% - {\iftoggle{ifCJKforgbt}{\printtext{#1\str@edition}}% - {\mkbibordedition{#1}~\bibstring{version}}}% - {#1\isdot}} - -% -% 作者域的输出控制宏 -% -% 当两篇文献作者相同且连续时,标准样式是用-代替后面的文献的作者,这里取消这一设置 -\renewbibmacro*{author}{%author for biblatex version <=3.7 - \ifboolexpr{ - test \ifuseauthor - and - not test {\ifnameundef{author}} - } - {\usebibmacro{bbx:dashcheck} - {%\bibnamedash - \printnames{author}% - }% - {\usebibmacro{bbx:savehash}% - \printnames{author}% - \iffieldundef{authortype} - {\setunit{\addspace}} - {\setunit{\addcomma\space}}}% - \iffieldundef{authortype} - {} - {\usebibmacro{authorstrg}% - \setunit{\addspace}}}% - {\global\undef\bbx@lasthash - \usebibmacro{labeltitle}% - \setunit*{\addspace}}% - \setunit{\addcomma\space}%增加一个逗号 - \usebibmacro{date+extrayear} - } - -% -% 设置标注和文献表中作者和年份之间的分隔符 -% -% 原理方法:注意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}}}}}% - \newbibmacro{date+extradate}{\usebibmacro{date+extrayear}} -} - -\defversion{3.4}{dateextra}{ - \DeclareDelimFormat{nameyeardelim}{\addcomma\space} - \DeclareDelimFormat[bib,biblist]{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}}}}}% - \newbibmacro{date+extradate}{\usebibmacro{date+extrayear}} -} -\defversion{3.7}{dateextra}{ - \DeclareDelimFormat{nameyeardelim}{\addcomma\space} - \DeclareDelimFormat[bib,biblist]{nameyeardelim}{\addcomma\space} - \renewbibmacro*{date+extrayear}{%以前的\printdateextralabel宏变为了\printlabeldateextra - \iffieldundef{labelyear} - {} - {\printtext{%[parens] - \iffieldsequal{year}{labelyear} - {\printlabeldateextra}% - {\printfield{labelyear}% - \printfield{extrayear}}}}}% - -\newbibmacro{date+extradate}{\usebibmacro{date+extrayear}} -} -\defversion{3.8}{dateextra}{ - \DeclareDelimFormat{nameyeardelim}{\addcomma\space} - \DeclareDelimFormat[bib,biblist]{nameyeardelim}{\addcomma\space} -%注意这里当没有作者只有标题时在年份之前的标点是否需要标准并未涉及,所以未做处理。 -\renewbibmacro*{author}{%以前的date+extrayear变为date+extradate,所以对3.8以上版本重定义一下author - \ifboolexpr{ - test \ifuseauthor - and - not test {\ifnameundef{author}} - } - {\usebibmacro{bbx:dashcheck} - {%\bibnamedash %去掉相同作者用横线代替的处理 - \printnames{author}\setunit{\printdelim{nameyeardelim}}%把标点也带上 - } - {\usebibmacro{bbx:savehash}% - \printnames{author}% - \iffieldundef{authortype} - {\setunit{\printdelim{nameyeardelim}}} - {\setunit{\printdelim{authortypedelim}}}}% - \iffieldundef{authortype} - {} - {\usebibmacro{authorstrg}% - \setunit{\printdelim{nameyeardelim}}}}% - {\global\undef\bbx@lasthash - \usebibmacro{labeltitle}% - \setunit*{\printdelim{nonameyeardelim}}}% - \usebibmacro{date+extradate}} - \renewbibmacro*{date+extradate}{% - \iffieldundef{labelyear} - {} - {\printtext{%[parens]%这里去掉括号 - \iflabeldateisdate - {\printdateextra} - {\printlabeldateextra}}}}% - -} - - -% -%为mergedate增加选项none,即实现年份不提前到作者后面的标签中 -%也不打印用于区分同作者同年份文献的标识符如(a,b,c) -%目的是实现一些特殊的文献表样式比如ucas的作者年制 -%v1.0q,20190212,hzz -\def\bbx@opt@mergedate@none{% - \renewbibmacro*{date+extradate}{% - \iffieldundef{labelyear} - {} - {}}%[parens]\printtext{\printlabeldateextra} -\renewbibmacro*{bbx:ifmergeddate}{\@secondoftwo}%这一句用于3.12版本 -\renewbibmacro*{date}{\printdate}%这一句用于biblatex3.11以下版本 -\renewbibmacro*{issue+date}{%去掉括号 -\setunit{\addcomma\addspace}% - \printtext{%去掉了[parens] - \iffieldundef{issue} - {%\usebibmacro{date} - \iffieldundef{note}{\usebibmacro{date}}%判断一下,是否是报纸 - {\iffieldequalstr{note}{news}{\usebibmacro{newsdate}}%判断是否为报纸 - {\usebibmacro{date}}% - }}% - {\iftoggle{bbx:gbstrict}{}{\printfield{issue}% - \setunit*{\addspace}}% - %\usebibmacro{date} - \iffieldundef{note}{\usebibmacro{date}}%判断一下,是否是报纸 - {\iffieldequalstr{note}{news}{\usebibmacro{newsdate}}%判断是否为报纸 - {\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}} - and - test {\iffieldundef{booksubtitle}} - } - {} - {\printtext[booktitle]{\bibtitlefont% - \printfield[titlecase]{booktitle}% - \setunit{\subtitlepunct}% - \printfield[titlecase]{booksubtitle}}% - \newunit%标点换成下一句 - \setunit{\subtitlepunct}}% - \printfield{booktitleaddon}} - -% -% 调整期刊名的格式 -% -% 原理方法:因为作者年制年份提到前面,因此涉及到期刊名与后面的卷期的关系。 -% v1.0k,20180425,增加了字体控制命令,hzz -\renewbibmacro*{journal+issuetitle}{\bibpubfont%源来自standard.bbx - \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}% - \iffieldundef{volume}{}{\setunit{\addcomma\space}}% - %换成逗号和空格 - \usebibmacro{issue}% - \usebibmacro{volume+number+eid}%把卷期放到年份后面 - %\newunit - } - -% -% 增加一个number带括号的格式,避免使用mkbibparens而引入一个不必要的空格 -% -\DeclareFieldFormat{addnumflag}{% -\nobreak\printtext{(}\nobreak #1\nobreak\printtext{)}} - -% -% 调整journal输出 -% -% 原理方法:首先判断子标题,然后再设置标点。 -% 避免直接设置标点后,当volume不存在时需要使用\nopuct去标点进而引入不必要的空格 -\renewbibmacro*{journal}{% - \iffieldundef{journaltitle}% - {}% - {\printtext[journaltitle]{% - \printfield[titlecase]{journaltitle}% - \iffieldundef{journalsubtitle}{}{\setunit{\subtitlepunct}% - \printfield[titlecase]{journalsubtitle}}}}} - - - -% -% 调整期刊卷和期的格式 -% -\renewbibmacro*{volume+number+eid}{%源来自standard.bbx -\iftoggle{bbx:gbfieldstd}{% - \printfield{volume}% - \setunit*{\adddot}% - \printfield{number}% - \setunit{\addcomma\space}% - \printfield{eid}}{% - \printfield{volume}% - %\setunit*{\adddot}%去掉点号 - %\printfield{number}% - \iffieldundef{number}{}{\printfield[addnumflag]{number}}%区别于顺序编码制 - \iffieldundef{eid}{}{% - \setunit{\addcomma\space}% - \printfield{eid}}}} - -% -% 调整期刊年份的格式 -% -% 原理方法:原在authoryear.BBX中\bbx@opt@mergedate@compact中定义 -% 当issue存在时,才设置newunit。避免直接设置标点后,当volume不存在是需要使用\nopuct去标点进而引入不必要的空格 - \renewbibmacro*{issue+date}{% - \iffieldundef{issue}% - {}% - {\iftoggle{bbx:gbstrict}{}{\printtext[parens]{\printfield{issue}}\newunit}}} - - - -% -% 调整页码前的标点和去掉期刊文章等页码后面的标点 -% -\renewbibmacro*{note+pages}{%源来自standard.bbx - %\printfield{note}%不要note,note用来判断是否是报纸newspaper - \iffieldundef{pages}{}{ - \setunit{\bibpagespunct}% - \printfield{pages}}% - %\newunit - } - -% -% 编者的符号修改一下 -% v1.0 2016-07-01 -% v1.0q 2019-03-01 hzz 修改editortype前的标点 -% -\renewbibmacro*{editor}{% - \ifboolexpr{ - test \ifuseeditor - and - not test {\ifnameundef{editor}} - } - {\usebibmacro{bbx:dashcheck} - {%\bibnamedash - \printnames{editor}% - } - {\printnames{editor}% - %\setunit{\printdelim{editortypedelim}}% - %\usebibmacro{bbx:savehash} - }% - \usebibmacro{editorstrg}% - %\clearname{editor}% - \setunit{\printdelim{nameyeardelim}}}% - {\global\undef\bbx@lasthash - \usebibmacro{labeltitle}% - \setunit*{\printdelim{nonameyeardelim}}}% - \ifboolexpr{% -test {\ifentrytype{inbook}} -or -test {\ifentrytype{incollection}} -or -test {\ifentrytype{inproceedings}} -or -test {\ifentrytype{conference}} -}% -{}% -{\usebibmacro{date+extradate}}} - -% -% 编者类型做一修改 -% v1.0 2016-07-01 -% v1.0q 2019-03-01 hzz 修改editortype不同语言的不同本地化字符串 -% -\renewbibmacro*{editorstrg}{%源来自biblatex.DEF - \printtext[editortype]{% - \iffieldundef{editortype} - {% -% \ifboolexpr{ %这一段去掉,未定义编者类型情况下不处理 -% test {\ifnumgreater{\value{editor}}{1}} -% or -% test {\ifandothers{editor}} -% } -% {\bibstring{editors}} -% {\bibstring{editor}} - } - {\ifbibxstring{\thefield{editortype}} %定义编者类型情况下处理,以后根据需要修改 - {\ifboolexpr{ - test {\ifnumgreater{\value{editor}}{1}} - or - test {\ifandothers{editor}} - } - {\printdelim{streditortypes}} - {\printdelim{streditortype}}} - {\thefield{editortype}}}% - }} - -% -% 编者类型的本地化字符串输出 -% v1.0q 2019-03-01 hzz -% 能对不同条目类型作格式设置的域格式,能对不同环境做格式设置的分隔符 -% 能对不同文境作设置的包括排序,标签等 -% 这里因为考虑可能标注和文献表中存在不同,所以用分隔符来输出本地化字符串 -% -\DeclareDelimFormat{streditortypes}{% - \edef\userfieldabcde{userd}% - \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% - \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% - \ifcase\value{gbbiblocalcase}% - \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{\thefield{editortype}scn}}{}% - \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{\thefield{editortype}skr}}{}% - \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{\thefield{editortype}sjp}}{}% - \iffieldequalstr{\userfieldabcde}{english}{\addcomma\addthinspace\bibstring{\thefield{editortype}s}}{}% - \iffieldequalstr{\userfieldabcde}{french}{\addcomma\addthinspace\bibstring{\thefield{editortype}s}}{}% - \iffieldequalstr{\userfieldabcde}{russian}{\addcomma\addthinspace\bibstring{\thefield{editortype}s}}{}% - \or% - \bibstring{\thefield{editortype}scn}% - \or% - \addcomma\addthinspace\bibstring{\thefield{editortype}s}% - \fi} -% -\DeclareDelimFormat{streditortype}{% - \edef\userfieldabcde{userd}% - \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% - \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% - \ifcase\value{gbbiblocalcase}% - \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{\thefield{editortype}cn}}{}% - \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{\thefield{editortype}kr}}{}% - \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{\thefield{editortype}jp}}{}% - \iffieldequalstr{\userfieldabcde}{english}{\addcomma\addthinspace\bibstring{\thefield{editortype}}}{}% - \iffieldequalstr{\userfieldabcde}{french}{\addcomma\addthinspace\bibstring{\thefield{editortype}}}{}% - \iffieldequalstr{\userfieldabcde}{russian}{\addcomma\addthinspace\bibstring{\thefield{editortype}}}{}% - \or% - \bibstring{\thefield{editortype}cn}% - \or% - \addcomma\addthinspace\bibstring{\thefield{editortype}}% - \fi} - - -% -% bookauthor域的输出, -% v1.0q 2019-03-01 hzz -% 不再对editor和bookauthor做sourcemap,而是下面的宏内逻辑代替, -% 使得除使用bookauthor外也可以使用editor,便于在使用editor时使用editortype -\renewbibmacro*{bybookauthor}{% - \ifnameundef{bookauthor}% - {\ifnameundef{editor}% - {}% - {\ifnamesequal{author}{editor}% - {}{\usebibmacro{editor}}}% - }% - {\ifnamesequal{author}{bookauthor}% - {}{\printnames{bookauthor}}% - }% -} - -% -% 修改期刊的标题 -% -\renewbibmacro*{periodical}{%源来自biblatex.DEF - \iffieldundef{title} - {} - {\printtext[title]{\bibtitlefont% - \printfield[titlecase]{title}% - %\setunit{\subtitlepunct}% - \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题 - {}{\setunit{\subtitlepunct} - \printfield[titlecase]{subtitle}}% - %}%把编组结束移到后面去 - \iftoggle{bbx:gbtype}{% - \iffieldundef{usera}{}{%在标题后直接给出文献标识字母 - \printfield[gbtypeflag]{usera}}}{} - }} - } - -% -% 期刊的标题做修改 -% -\renewbibmacro*{title+issuetitle}{%源来自standard.BBX - \usebibmacro{periodical}% - %\setunit*{\addspace}% - \setunit*{\adddot\addspace}%标点修改为句点 - \iffieldundef{series} - {} - {\newunit - \printfield{series}% - \setunit{\addspace}}% - \usebibmacro{periodical+issue}%将issue调整到上面来,并修改 -\iffieldundef{number}{}{%%进一步处理有范围的数字 - \multinumberparser{\thefield{number}}}% - \iffieldundef{volume}% - {\printfield{year}% - \printtext{\mkbibparens{\multinumberfirst}}% - \bibrangedash% - \iffieldundef{endyear}{}{\printfield{endyear}\printtext{\mkbibparens{\multinumbersecond}}}% - }% - {\multivolparser{\thefield{volume}}% - \printfield{year}% - \setunit{\addcomma\space}%将冒号修改为逗号 - \printtext{\multivolfirst}% - \printtext{\mkbibparens{\multinumberfirst}}% - \bibrangedash% - \iffieldundef{endyear}{}{% - \printfield{endyear}% - \setunit{\addcomma\space}%将冒号修改为逗号 - \printtext{\multivolsecond}% - \printtext{\mkbibparens{\multinumbersecond}}}% - }% - \setunit{\addcomma\space}% - \printfield{eid}% - \setunit{\addspace}% - %\usebibmacro{issue+date}% - %\setunit{\addcolon\space}% - \usebibmacro{issue}% - \newunit} - -% -% 新增一个样式用于调整期刊年份的格式,只打印年份 -% -\newbibmacro*{periodical+issue}{% - \printtext{%去掉了[parens] - \iffieldundef{issue} - {%\usebibmacro{date}%修改为下一句 - }% - {\printfield{issue}% - \setunit*{\addspace}% - %\usebibmacro{date}%修改为下一句 - }% - }% - %\newunit -} - -% -% 重设专利title的输出,将文献类型标识符输出出去 -% -\newbibmacro*{patenttitle}{%原输出来自biblatex.def文件 - \ifboolexpr{% - test{\iffieldundef{title}}% - and% - test{\iffieldundef{subtitle}}% - }% - {}% - {\printtext[title]{\bibtitlefont% - \printfield[titlecase]{title}% - \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题 - {}{\setunit{\subtitlepunct}% - \printfield[titlecase]{subtitle}}% - \iffieldundef{titleaddon}{}%判断一下titleaddon,否则直接加可能多一个空格 - {\setunit{\subtitlepunct}\printfield{titleaddon}}% - \setunit{\subtitlepunct}\printfield{number}%写专利号 - \iftoggle{bbx:gbtype}{\printfield[gbtypeflag]{usera}}{}% - %\iffieldundef{booktitle}{\newunit}{}%当title是析出时,不要标点 - %\newunit - }% -}% -} - - - -% -% 修改in:用于inbook、incollection、inproceedings等类型 -% 2018.04.20,v1.0k,renewed marco,by hzz -% 20190212,v1.0q,增加中英文区分,by hzz -% -% 原理方法:使用bibmacro{in:}改变了以前在driver中直接输出//的方式,同时也简化了标点控制。 -\renewbibmacro*{in:}{% - \iftoggle{bbx:gbpunctin}{\printtext{\texttt{//}\allowbreak}}%\addthinspace - {\setunit{\adddot\addspace}% - \iffieldequalstr{userd}{chinese}% - {\printtext{\bibstring{incn}}}% - {\printtext{\bibstring{in}}}% - }}%\newunit\newblock\intitlepunct - -% -% 修改type域的输出格式 -% 2019.02.12,v1.0q,byhzz -% 使其可以区分中英文输出不同的格式,比如博士论文英文输出PHD thesis,中文则是博士学位论文 -\DeclareFieldFormat{type}% -{\iffieldequalstr{userd}{chinese}% - {\ifbibxstring{#1cn}{\bibxstring{#1cn}}{#1}}% - {\ifbibstring{#1}{\bibstring{#1}}{#1}}% -} - - -% -% 修改series域的输出格式 -% 2019.05.01,v1.0r,byhzz -\renewbibmacro*{series+number}{% - \printfield{series}% - %\setunit*{\addspace}% - %\printfield{number}% - %\newunit - } - -%===================================================================== -%设置驱动格式 -%===================================================================== -% -% book条目类的驱动 -% - \DeclareBibliographyDriver{book}{%源来自standard.bbx文件 - \usebibmacro{bibindex}% - \usebibmacro{begentry}% -\usebibmacro{author/editor+others/translator+others}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 -\usebibmacro{maintitle+title}% -\iftoggle{bbx:gbstrict}{}{% -\newunit -\printlist{language}% -\newunit\newblock% -\usebibmacro{byauthor}% -\newunit\newblock}% -\usebibmacro{byeditor+others}% -\newunit -\printfield{edition}% -\newunit\newblock%% -\iftoggle{bbx:gbstrict}{}{% -\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}% - \iffieldundef{url}{}{%当没有网址时也不输出 - \usebibmacro{modifydate}}%带括号的修改或更新日期, -\usebibmacro{doi+eprint+url}%从下面移动到上面来,因为gbt2015的url需直接放在页码后面。 - \newunit\newblock% - \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}\usebibmacro{annotation}} - - - - -% -% 期刊文章,连续出版物中的析出文献的格式 -% - \DeclareBibliographyDriver{article}{% - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author/translator+others}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 - \usebibmacro{title}% - \iftoggle{bbx:gbstrict}{}{% - \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}% - \iffieldequalstr{note}{news}{}{%当是新闻时不输出修改或更新日期 - \iffieldundef{url}{}{%当没有网址时也不输出 - \iftoggle{bbx:url}{%当url选项为false时,也不输出 - \usebibmacro{modifydate}}{}}}%带括号的修改或更新日期, - \usebibmacro{doi+eprint+url}%从后面移上来,调整url和页码之间的位置 - \newunit\newblock - \iftoggle{bbx:isbn} - {\printfield{issn}} - {}% - \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}\usebibmacro{annotation}} - - -% -% 连续出版物的驱动 -% - \DeclareBibliographyDriver{periodical}{%源来自standard.BBX - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{editor}% - %\setunit{\labelnamepunct}\newblock - \newunit\newblock %删除上面一行,添加这一行 - \usebibmacro{title+issuetitle}% - \newunit\newblock% - \usebibmacro{location+institution+date}%添加这一行用于输出地址,单位和时间 - \newunit\newblock%添加这一行 - \iftoggle{bbx:gbstrict}{}{% - \printlist{language}% - \newunit\newblock - \usebibmacro{byeditor}% - \newunit\newblock - \printfield{note}% - \newunit\newblock} - \iftoggle{bbx:isbn} - {\printfield{issn}} - {}% - \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}\usebibmacro{annotation}} - -% -% 专利文献驱动 -% - \DeclareBibliographyDriver{patent}{%源来自standard.BBX - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 - %\usebibmacro{title}% - \usebibmacro{patenttitle}%给出专利专用的标题输出 - \iftoggle{bbx:gbstrict}{}{% - \newunit% - \printlist{language}% - \newunit\newblock - \usebibmacro{byauthor}}% - \newunit\newblock - \printfield{type}% - \setunit*{\addspace}% - %\printfield{number}%已放到patenttitle中处理 - \iflistundef{location} - {} - {\setunit*{\addspace}% - \printtext{%[parens] - \printlist[][-\value{listtotal}]{location}}}% - \newunit\newblock - \usebibmacro{byholder}% - \newunit\newblock - \printfield{note}% - \newunit\newblock - \usebibmacro{newsdate}% - %\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}\usebibmacro{annotation}} - - -% -% 在线文献驱动 -% -\DeclareBibliographyDriver{online}{%源来自standard.BBX - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author/editor+others/translator+others}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 - \usebibmacro{title}% - \iftoggle{bbx:gbstrict}{}{% - \newunit% - \printlist{language}% - \newunit\newblock - \usebibmacro{byauthor}% - \newunit\newblock - \usebibmacro{byeditor+others}% - \newunit\newblock - \printfield{note}}% - \newunit - \printfield{version}% - \newunit\newblock -% \printlist{organization}% - \printlist{institution}% - \newunit\newblock -\ifboolexpr{% -test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}% -}{\usebibmacro{date}}% -{\usebibmacro{modifydate}}%修改或更新日期,为带括号的时间 - \usebibmacro{url+urldate}%从下面移上来 - \newunit\newblock - \iftoggle{bbx:eprint} - {\usebibmacro{eprint}} - {}% - \newunit\newblock - %\usebibmacro{url+urldate}% - %\newunit\newblock - \usebibmacro{addendum+pubstate}% - \setunit{\bibpagerefpunct}\newblock - \usebibmacro{pageref}% - \newunit\newblock - \iftoggle{bbx:related} - {\usebibmacro{related:init}% - \usebibmacro{related}} - {}% - \usebibmacro{finentry}\usebibmacro{annotation}} - - - - -% -% 报告类型驱动 -% 当有网址无出版项时,用online输出 -% -\DeclareBibliographyDriver{report}{% - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 - \usebibmacro{title}% - \iftoggle{bbx:gbstrict}{}{% - \newunit% - \printlist{language}% - \newunit\newblock - \usebibmacro{byauthor}}% - \newunit\newblock - \usebibmacro{byeditor+others}%增加的译者信息 - \newunit\newblock - \printfield{type}% - \setunit*{\addspace}% - \printfield{number}% - \newunit\newblock - \printfield{version}% - \newunit - \printfield{note}% - \newunit\newblock - \usebibmacro{publisher+location+date}% - %\newunit\newblock - \usebibmacro{chapter+pages}% - \usebibmacro{doi+eprint+url}% - \newunit - \printfield{pagetotal}% - \newunit\newblock - \iftoggle{bbx:isbn} - {\printfield{isrn}} - {}% - \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}\usebibmacro{annotation}} - -% -% 论文、手册类型驱动 -% 2016-11-11,增加了译者信息 -% -\DeclareBibliographyDriver{manual}{% - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 - \usebibmacro{title}% - \iftoggle{bbx:gbstrict}{}{% - \newunit% - \printlist{language}% - \newunit\newblock - \usebibmacro{byauthor}}% - \newunit\newblock - \usebibmacro{byeditor+others}%增加的译者信息 - \newunit\newblock - \iftoggle{bbx:gbfieldtype}{% - \printfield{type}% - \setunit*{\addspace}% - }{}% - \printfield{number}% - \newunit\newblock - \printfield{version}% - \newunit - \printfield{note}% - \newunit\newblock - \usebibmacro{institution+location+date}% - %\newunit\newblock - \usebibmacro{chapter+pages}% - \iffieldundef{url}{}{%当没有网址时也不输出修改或更新日期 - \usebibmacro{modifydate}}%修改或更新日期为带括号的时间 - \usebibmacro{doi+eprint+url}% - \newunit - \printfield{pagetotal}% - \newunit\newblock - \iftoggle{bbx:isbn} - {\printfield{isrn}} - {}% - \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}\usebibmacro{annotation}} - -% -% 备选类型驱动 -% -% 利用biblatex的misc驱动 -\DeclareBibliographyDriver{misc}{% - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author/editor+others/translator+others}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 - \usebibmacro{title}% -\iftoggle{bbx:gbstrict}{}{% - \newunit - \printlist{language}% - \newunit\newblock - \usebibmacro{byauthor}% - \newunit\newblock - \usebibmacro{byeditor+others}}% - \newunit\newblock - \printfield{howpublished}% - \newunit\newblock - \printfield{type}% - \newunit - \printfield{version}% - \newunit - \printfield{note}% - \newunit\newblock - \usebibmacro{institution+location+date}% - %\usebibmacro{organization+location+date}% - %\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}\usebibmacro{annotation}} - - - - - -% -% 专著中的析出文献的格式修改 -% -\DeclareBibliographyDriver{inbook}{%源来自standard.bbx - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author/translator+others}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 -\usebibmacro{title}% -\usebibmacro{in:}% -%\printtext{\texttt{//}\addthinspace}% - \usebibmacro{bybookauthor}% - \ifnameundef{bookauthor}{% - \ifnameundef{editor}{}{\newunit}% - }{\newunit}%替换下一句 - %\newunit\newblock -\iffieldundef{series}{}{\usebibmacro{series+number}\setunit{\addcolon\addspace}}%为处理一些存在series的情况而增加 - \usebibmacro{maintitle+booktitle}% -\iffieldundef{volume}{}{\setunit{\addcolon\addspace}\printfield{volume}}% -\iffieldundef{number}{}{\setunit{\addcolon\addspace}\printfield{number}}%增加卷和册信息 - \newunit\newblock% -% \usebibmacro{byeditor+others}% -% \newunit\newblock - \printfield{edition}% - \newunit - \iftoggle{bbx:gbstrict}{}{% -% \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 - \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}\usebibmacro{annotation}} +%% +%% --------------------------------------------------------------- +%% biblatex-gb7714-2015 --- A biblatex implementation of the +%% GBT7714-2015 bibliography style,author year sequence +%% Maintained by huzhenzhen +%% E-mail: hzzmail@163.com +%% Released under the LaTeX Project Public License v1.3c or later +%% --------------------------------------------------------------- +%% +% +% 版本和时间信息 +% +\def\versionofgbtstyle{2021/01/19 v1.0w} +\def\versionofbiblatex{\abx@version} +\ProvidesFile{gb7714-2015ay.bbx}[\versionofgbtstyle biblatex bibliography style] +%\RequireBiber[3]%显式指定用biber后端,当用bibtex时会报错,但其实不会影响编译,只是采用bibtex后无法达成格式需求 + +%===================================================================== +%加载标准样式 +%===================================================================== +\RequireBibliographyStyle{authoryear} +\RequirePackage{xstring}%解决texlive2015的biblatex3.0不加载xstring包的问题 + + +%===================================================================== +% 功能函数 +%===================================================================== + % + % biblatex版本判断 + % 20180405,v1.0k,为兼容biblatexv3.11增加toggle:iftlnine,HU zhenzhen + % 20181020,v1.0n,为不再使用xstring宏包做的修改,hzz + % + % 原理方法:当版本继续更新时,增加一个新的toggle用以处理新的旧版,最新版和未判断出来的版本永远用iftlatest + \providetoggle{iftlfive}\togglefalse{iftlfive} %处理biblatex3.2之前版本,时间2016-03-01前 + \providetoggle{iftlsix}\togglefalse{iftlsix} %处理biblatex3.3开始改变姓名机制后版本,时间2016-03-01及以后 + \providetoggle{iftlseven}\togglefalse{iftlseven}%处理biblatex3.7的兼容性,时间2016-12-01后 + \providetoggle{iftleight}\togglefalse{iftleight}%处理biblatex3.8到3.9的兼容性,时间2017-11-01后到2017-12-01前 + \providetoggle{iftlnine}\togglefalse{iftlnine} %处理biblatex10的兼容性,时间2017-12-01后 + \providetoggle{iftlatest}\toggletrue{iftlatest} %假设是最新版biblatex + \@ifpackagelater{biblatex}{2014/04/01}{ + \@ifpackagelater{biblatex}{2016/03/01}{ + \@ifpackagelater{biblatex}{2016/12/01}{ + \@ifpackagelater{biblatex}{2017/11/01}{ + \@ifpackagelater{biblatex}{2017/12/01}{ + \@ifpackagelater{biblatex}{2018/02/19}{} + {\toggletrue{iftlnine}\togglefalse{iftlatest}}} + {\toggletrue{iftleight}\togglefalse{iftlatest}}} + {\toggletrue{iftlseven}\togglefalse{iftlatest}}} + {\toggletrue{iftlsix}\togglefalse{iftlatest}}} + {\toggletrue{iftlfive}\togglefalse{iftlatest}}} + {\PackageError{biblatex}{Outdated 'biblatex' package} + {Please update biblatex, This is a fatal error.}} + + \newcommand\defversion[2]{\csdef{codeversion#1#2}}%定义不同版本的命令 + \newcommand\switchversion[2]{\csuse{codeversion#1#2}}%使用不同版本的命令 + + % + % 判断CJK字符的函数,用于判断作者等信息是否由中文字符构成 + % v1.0k,20180509,hzz + % + % 原理方法:用biber中的perl方法代替。因为利用tex函数对字符判断时,当字符在宏 + % 中时,基于`的方法无法解决GBK编码的问题,基于CJKsymbol的方法无法解决utf-8 + % 编码用xelatex编译的问题。 + % + % 原理是:利用perl正则将中文标识记录到域中, + % 然后利用\iffieldundef和\iffieldequalstr进行判断 + \providetoggle{ifCJKforgbt} + \def\testCJKfirst#1{% + \iffieldundef{#1}{\togglefalse{ifCJKforgbt}}{% + \iffieldequalstr{#1}{chinese}{\toggletrue{ifCJKforgbt}}{\togglefalse{ifCJKforgbt}}}} + + % + % 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{}}% + } + + % 对没有分隔符环境命令的低版本biblatex做增补,避免报错 + % + \iftoggle{iftlfive}{ + + \def\blx@inf@delimdeclare#1#2{% + \blx@info{Delimiter '#1' in context '#2' already defined, overwriting}} + + \def\blx@warn@delimuse#1#2{% + \blx@warning{Delimiter '#1' in context '#2' undefined}} + % Delimiter interface + + % []{}{} + \newrobustcmd*{\DeclareDelimFormat}{% + \@ifstar + {\blx@declaredelimclear} + {\blx@declaredelim}} + + \newrobustcmd*{\blx@declaredelimclear}[3][]{% + \ifcsvoid{blx@declaredelimcontexts@#2} + {} + {\def\do##1{\csundef{blx@printdelim@##1@#2}}% + \dolistcsloop{blx@declaredelimcontexts@#2}}% + \cslet{blx@declaredelimcontexts@#2}\@empty + \ifblank{#1} + {\blx@declaredelim{#2}{#3}} + {\blx@declaredelim[#1]{#2}{#3}}} + + \newrobustcmd*{\blx@declaredelim}[3][]{% + \ifblank{#1} + {\blx@declaredelim@i{}{}{#2}{#3}} + {\def\do##1{% + \listcsadd{blx@declaredelimcontexts@#2}{##1}% + \blx@declaredelim@i{blx@printdelim@##1@}{##1}{#2}{#3}}% + \docsvlist{#1}}}% + + \def\blx@declaredelim@i#1#2#3#4{% + \def\do@i##1{% + \ifcsdef{#1##1} + {\blx@inf@delimdeclare{##1}{#2}} + {}% + \csdef{#1##1}{#4}}% + \forcsvlist{\do@i}{#3}} + + % *[]{}{} + \newrobustcmd*{\DeclareDelimAlias}{% + \@ifstar + {\blx@declaredelimalias} + {\blx@declaredelimaliasauto}} + + \newrobustcmd*{\blx@declaredelimalias}[3][]{% + \ifblank{#1} + {\blx@declaredelimalias@i{}{#2}{#3}} + {\def\do##1{% + \blx@declaredelimalias@i{blx@printdelim@##1@}{#2}{#3}}% + \docsvlist{#1}}} + + \newrobustcmd*{\blx@declaredelimaliasauto}[2]{% + \blx@declaredelimalias@i{}{#1}{#2}% + \ifcsvoid{blx@declaredelimcontexts@#2} + {} + {\def\do##1{% + \blx@declaredelimalias@i{blx@printdelim@##1@}{#1}{#2}}% + \dolistcsloop{blx@declaredelimcontexts@#2}}} + + \def\blx@declaredelimalias@i#1#2#3{% + \ifcsdef{#1#2} + {\blx@inf@delimdeclare{#2}{#1}} + {}% + \csdef{#1#2}{\csuse{#1#3}}} + + \def\blx@delimcontext{none} + \newcommand*{\printdelim}[2][]{% + \ifblank{#1} + {\ifcsdef{blx@printdelim@\blx@delimcontext @#2} + {\csuse{blx@printdelim@\blx@delimcontext @#2}} + {\ifcsdef{#2}% fall back on legacy macros + {\csuse{#2}} + {\blx@warn@delimuse{#2}{*}}}} + {\ifcsdef{blx@printdelim@#1@#2} + {\csuse{blx@printdelim@#1@#2}} + {\blx@warn@delimuse{#2}{#1}}}} + + \newcommand*{\delimcontext}[1]{% + \edef\blx@delimcontext{\blx@delimcontextalias{#1}}} + + \def\blx@delimcontextalias#1{% + \ifcsdef{blx@delimcontextalias@#1} + {\csuse{blx@delimcontextalias@#1}} + {#1}} + + \newcommand*{\DeclareDelimcontextAlias}[2]{% + \csgdef{blx@delimcontextalias@#1}{#2}} + }{} + + +%===================================================================== +% 数据模型定义 +%===================================================================== + %定义类型和载体标识,从gb内容看载体基本属于介质。 + %为与lee zeping的bst的样式统一,使用mark和medium这两域名 + %为单个条目的姓名格式控制增加nameformat和namefmtid两个域 + %为缩略信息文献表增加了shortbooktitle域 + %为多语言排序增加了lansortorder域 + \DeclareDatamodelFields[type=field,datatype=literal]{mark,medium,nameformat} + \DeclareDatamodelFields[type=field,datatype=integer]{namefmtid} + \DeclareDatamodelFields[type=field,datatype=literal]{shortbooktitle} + \DeclareDatamodelFields[type=field,datatype=literal]{lansortorder} + + %因为biblatex更新3.14版本以后,biber对于为声明数据模型的条目类型 + %不再默认读取,而是以空字符串作为条目类型名,自然在条目定义alias时 + %就会出现问题,因此显式的声明一下newspaper,然后保留后面采用alias的方式 + %而standard类型则是采用另一种方式直接在sourcemap中转换为其它类型。 + \@ifpackagelater{biblatex}{2019/11/30}{%2019/12/01 v3.14 + \DeclareDatamodelEntrytypes{newspaper}% + }{} + +%===================================================================== +% 设置宏包选项 +%===================================================================== + % + % 增加一个控制是否输出文献载体的选项 + % 20191125,v1,0s,hzz + \newtoggle{bbx:gbmedium} + \DeclareBibliographyOption{gbmedium}[true]{%biblatex低版本 + \settoggle{bbx:gbmedium}{#1}} + \ExecuteBibliographyOptions{gbmedium} + + % + % 增加一个控制是否输出annotation域的选项,该域可以用于在文献条目后面输出一些注释信息 + % 20190509,v1,0s,hzz + \newtoggle{bbx:gbannote} + \DeclareBibliographyOption{gbannote}[false]{%biblatex低版本 + \settoggle{bbx:gbannote}{#1}} + \ExecuteBibliographyOptions{gbannote} + % + %用于在文献条目后面输出注释信息的宏 + %FieldFormat{annotation}用于设置注释信息的格式 + \DeclareFieldFormat{annotation}{% + \printtext{\addspace(#1)}% + } + \renewbibmacro*{annotation}{% + \iftoggle{bbx:gbannote}% + {\iffieldundef{annotation}% + {\printfile[annotation]{\bibannotationprefix\thefield{entrykey}.tex}}% + {\printfield{annotation}}}% + {}% + } + + + % + % 增加一个控制是否输出type域的选项 + % 20190212,v1,0q,hzz + \newtoggle{bbx:gbfieldtype} + \DeclareBibliographyOption{gbfieldtype}[false]{%biblatex低版本 + \settoggle{bbx:gbfieldtype}{#1}} + \ExecuteBibliographyOptions{gbfieldtype} + + % + % 增加一个控制是否根据页码重设脚注数字标号的选项 + % 20190422,v1,0r,hzz + \newtoggle{bbx:gbfnperpage} + \DeclareBibliographyOption{gbfnperpage}[false]{% + \settoggle{bbx:gbfnperpage}{#1}} + \ExecuteBibliographyOptions{gbfnperpage} + + % + % 增加一个选项,用于控制是否实现GB/T 7714-2015标准的脚注文献表 + % 20190203,v1.0p,hzz + % 原理方法:默认做patch,文献引用带圈上标数字表示,脚注中的文献用带圈非上标数字做标签 + % 当前面的脚注中已经存在当前文献,那么当前文献内容不再输出而用同(4)这样的方式 + % 需要注意的是由于小页环境和表格中的脚注本身的问题,可能会有一些问题 + \DeclareBibliographyOption{gbfootbib}[false]{% + \ifstrequal{#1}{false}{}{\execgbfootbib}} + \ExecuteBibliographyOptions{gbfootbib} + + %% + \newlength{\footbibmargin} + \newlength{\footbiblabelsep} + \setlength{\footbibmargin}{1em}%脚注的段落左侧缩进距离 + \setlength{\footbiblabelsep}{0.5em}%脚注中标记号与脚注段落的间距 + \def\execgbfootbib% + {% + %开启引用跟踪计数器,为使用\ifciteseen等测试命令 + \ExecuteBibliographyOptions{citetracker=true} + % + %利用footmisc宏包来实现脚注文献的悬挂对齐 + \AtEndPreamble{ + \@ifclassloaded{beamer}{}{ + %beamer类因为其特殊性,为避免冲突不调footmisc。 + %同时footmisc与hyperref宏包也不兼容,所以使用footmisc时会破坏脚注的超链接 + %如果要实现超链接可以将下句注释掉,这里留着主要是实现悬挂对齐。 + %\PassOptionsToPackage{perpage,hang}{footmisc}% + %\RequirePackage{footmisc}% + + %重新实现脚注的根据单页重设脚注号码 + %重新实现脚注的悬挂对齐问题,不再使用footmisc,直接从latex核心代码和hyperref代码进行修改 + %v1.0q 20190317 hzz + %v1.0r 20190422 hzz 根据gbfnperpage选项设置 + \iftoggle{bbx:gbfnperpage}% + {\@addtoreset{footnote}{page}}{}%重设计数器 + +\@ifpackageloaded{hyperref}{%加载hyperref则对\H@@footnotetext做重定义 + \long\def\H@@footnotetext##1{\insert\footins{% + \reset@font\footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox \floatingpenalty \@MM + \hsize\columnwidth \@parboxrestore + \protected@edef\@currentlabel{% + \csname p@footnote\endcsname\@thefnmark + }% + \color@begingroup + \leftskip \footbibmargin%增加的左侧缩进 + \@makefntext{% + \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox% + }% + \color@endgroup}}% + \long\def\H@@mpfootnotetext##1{% + \global\setbox\@mpfootins\vbox{% + \unvbox\@mpfootins + \reset@font\footnotesize + \hsize\columnwidth + \@parboxrestore + \protected@edef\@currentlabel + {\csname p@mpfootnote\endcsname\@thefnmark}% + \leftskip \footbibmargin%增加的左侧缩进 + \color@begingroup + \@makefntext{% + \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox}% + \color@endgroup}} + }{%否则对latex核心代码中的\@footnotetext做重定义 + \long\def\@footnotetext##1{\insert\footins{% + \reset@font\footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox \floatingpenalty \@MM + \hsize\columnwidth \@parboxrestore + \protected@edef\@currentlabel{% + \csname p@footnote\endcsname\@thefnmark + }% + \color@begingroup + \leftskip \footbibmargin%增加的左侧缩进 + \@makefntext{% + \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox% + }% + \color@endgroup}}% + + \long\def\@mpfootnotetext##1{% + \global\setbox\@mpfootins\vbox{% + \unvbox\@mpfootins + \reset@font\footnotesize + \hsize\columnwidth + \@parboxrestore + \protected@edef\@currentlabel + {\csname p@mpfootnote\endcsname\@thefnmark}% + \leftskip \footbibmargin%增加的左侧缩进 + \color@begingroup + \@makefntext{% + \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox}% + \color@endgroup}} + } + + \long\def\@makefntext##1{%增加了脚注标记与正文的间隔 + \parindent 1em\noindent \hb@xt@ 0em{\hss \@makefnmark\makebox[\footbiblabelsep]{}}##1} + + } + + % + %使脚注标记加圈并设置数字的字体为tiny,不使用修改thefootnote的方式 + \def\@makefnmark{\hbox{\@textsuperscript{\textcircled{\tiny\@thefnmark}}}} + %做patch使得脚注内容中的脚注数字标签不上标 + \pretocmd{\@makefntext}{% + \def\@makefnmark{% + \hbox{\textcircled{\tiny\@thefnmark}}% + }% + }{}{} + } + + % + %判断当前文献是否已经引用过且是做的footfullcite(即已经作为脚注输出文献内容) + %记录首次输出时的脚注号码,用于后面再次引用该文献时的输出,比如同(4)。 + %v1.0q 20190309 区分使脚注标注适应minipage中的情况 + \newbibmacro*{citesavefn}{% + \ifciteseen%当被引用过为true + {\ifcsdef{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}%当已经定义过脚注序号信息 + {\csgdef{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}{% + \str@sameentry\gdef\@thefnmark{\csuse{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}}% + \@makefnmark% + }}% + {\csxdef{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}{% + \ifcsstring{@mpfn}{mpfootnote}{\@alph\c@mpfootnote}{\thefootnote}% + }}% + }% + {\csxdef{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}{% + \ifcsstring{@mpfn}{mpfootnote}{\@alph\c@mpfootnote}{\thefootnote}% + %判断在minipage中比较麻烦,这里使用\@mpfn的定义进行判断 + }}% + } + + % + %重定义\footfullcite使完成gb7714-2015的脚注文献要求 + \DeclareCiteCommand{\footfullcite}[\mkbibfootnote]% + {\defcounter{maxnames}{\blx@maxbibnames}%局部定义maxnames和minnames计数器 + \defcounter{minnames}{\blx@minbibnames}%使footfullcite内的作者输出与正文文献表中的一致。 + \usebibmacro{prenote}% + \renewbibmacro*{postnote}{% + \iffieldundef{postnote}% + {}{\setunit{\addcolon\addspace}\printtext{\thefield{postnote}}}}%由于ay样式中没有修改postnote域,此处因为格式需要不使用默认域格式 + }% + {\usebibmacro{citesavefn}% + \ifcsdef{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}% + {\csuse{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}\nopunct}% + {\usedriver{\DeclareNameAlias{sortname}{default}}{\thefield{entrytype}}}% + }% + {\multicitedelim}% + {\usebibmacro{postnote}} + + } + + % + % 增加一个选项,用于控制gb7714的使用范围,即英文文献和中文文献使用不同的样式 + % 20180814,v1.0m,hzz + % 原理方法: + % 只为兼容性考虑不做任何处理 + \DeclareBibliographyOption{gbstyle}[true]{%biblatex低版本 + } + + % + % 增加一个控制是否输出文献类型和载体标识的选项 + % + % 原理方法: + % 对于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时可以使用GBK编码。 + % v1.0k, 2018.05.08, by hzz + % + % 原理方法:将需要输出的中文字符串用命令形式表示存储,采用utf8编码时采用bbx文档 + % 内的定义即是utf8编码的中文字符串,但tex源文件是gbk编码时,利用gb7714-2015-gbk.def + % 文档内的gbk编码的字符串覆盖。这种覆盖只能在宏包末尾加载时成功实现,所以使用 + % AtEndOfPackage。该解决思路源自biblatex-caspervector宏包。 + % 另外注意: + % gbk编码的tex文档,利用pdflatex/latex能正确编译,利用xelatex能编译,但中文显示乱码 + % 在源文档前面增加 XeTeX 原语:\XeTeXinputencoding "GBK" 后,显示正常 + % utf-8编码的tex文档,利用xelatex能正确编译,而pdflatex/latex不能编译。 + \newtoggle{bbx:codegbk} + \DeclareBibliographyOption{gbcodegbk}[false]{% + \settoggle{bbx:codegbk}{#1}} + \ExecuteBibliographyOptions{gbcodegbk} + + \def\str@bibliography{参考文献} + \def\str@references{参考文献} + \def\str@bytranslator{译} + \def\str@andotherscn{等} + \def\str@andcn{和} + \def\str@backrefpage{引用页} + \def\str@backrefpages{引用页} + \def\str@noaddress{出版地不详} + \def\str@nopublisher{出版者不详} + \def\str@edition{版} + \def\str@volumecn{卷} + \def\str@numbercn{册} + \def\str@serialcn{第} + \def\str@sameentry{同} + \def\str@incn{见} + \def\str@mathesiscn{硕士学位论文} + \def\str@phdthesiscn{博士学位论文} + \def\str@editorcn{主编} + + \AtEndOfPackage{% + \iftoggle{bbx:codegbk}{% + \ExecuteBibliographyOptions{texencoding = GBK} + \input{gb7714-2015-gbk.def} + }{}} + + % + % 增加一个严格按GB/T 7714-2015给出著录格式控制域的输出的选项 + % v1.0k, 2018.05.08, by hzz + % + % 原理方法: + % 默认设置该选项为真,进而不输出GB/T 7714-2015中没有的域的信息 + % 这样可以避免因为bib文件带有多余的域的信息的输出,比如因为bibtex样式 + % 可能需要用于中英文判断的language域的信息。 + \newtoggle{bbx:gbstrict} + \DeclareBibliographyOption{gbstrict}[true]{% + \settoggle{bbx:gbstrict}{#1}} + \ExecuteBibliographyOptions{gbstrict} + + % + % 增加一个控制标题域超链接设置的选项 + % v1.0k, 2018.05.24, by hzz + % + % 原理方法: + % 利用标题域格式来实现,默认设置该选项为false,不做超链接。 + % 设置为true,则标题设置超链接 + \newtoggle{bbx:titlelink} + \DeclareBibliographyOption{gbtitlelink}[false]{% + \settoggle{bbx:titlelink}{#1}} + \ExecuteBibliographyOptions{gbtitlelink} + + % + % 增加一个控制参考文献标题是否能够被ctex宏包设置的选项 + % v1.0l, 2018.07.02, by hzz + % + % 原理方法: + % 重定义biblatex的宏,去除使用本地化字符串的方式,是的可以利用ctexset进行设置 + \newtoggle{bbx:ctexset} + \DeclareBibliographyOption{gbctexset}[true]{% + \settoggle{bbx:ctexset}{#1}} + \ExecuteBibliographyOptions{gbctexset} + + \AtEndOfPackage{% + \iftoggle{bbx:ctexset}{% + \def\blx@defbibstrings#1#2{% + \def\do##1{\csundef{abx@lstr@##1}\csundef{abx@sstr@##1}}% + \abx@dostrings + \csuse{abx@strings@#1}% + \setkeys{blx@lbx}{#2}% + \let\do\blx@defbibstrings@i + \csxdef{abx@strings@#1}{\abx@dostrings}% + } + }{}} + + % + %增加一个处理佚名或noauthor的控制选项 + \DeclareBibliographyOption{gbnoauthor}[true]{% + \ifstrequal{#1}{false}{}{\dealnoathor}} + %\ExecuteBibliographyOptions{gbnoauthor=true}%对于需要展开较早(展开层级优先)的选项,这一执行无效,只能用宏包加载时给出的选项。 + + + % + % 增加一个恢复域格式为标准样式的控制选项 + % v1.0k, 2018.05.15, by hzz + % + % 原理方法: + % 默认设置该选项为false,采用国标要求的域格式输出相关域 + % 当设置该选项为true时,则重新利用标准样式的域格式输出相关的域 + \newtoggle{bbx:gbfieldstd} + \DeclareBibliographyOption{gbfieldstd}[false]{% + \settoggle{bbx:gbfieldstd}{#1}% + \ifstrequal{#1}{false}{}{\execgbfdfmtstd}% + } + \ExecuteBibliographyOptions{gbfieldstd} + + % + % 增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 + % + \newtoggle{bbx:gbpub} + \DeclareBibliographyOption{gbpub}[true]{% + %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 + \ifstrequal{#1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} + \ExecuteBibliographyOptions{gbpub} + + % + % 增加控制析出文献来源前的标点符号//输出的选项 + % v1.0k, 2018.04.20,added in by hzz + \newtoggle{bbx:gbpunctin} + \DeclareBibliographyOption{gbpunctin}[true]{% + \settoggle{bbx:gbpunctin}{#1}} + \ExecuteBibliographyOptions{gbpunctin} + + + % 选项设置 + % + \ExecuteBibliographyOptions{ + useprefix = true, %名字的信息包括前缀 + date = year, %日期仅写到年 + maxbibnames=3, %将文献列表和引用中最大名字数量区分开 + minbibnames=3, + maxitems = 1,%设置列表最大数量 + minitems = 1, %设置缩减后的列表最小数量 + isbn=false, + sorting=gb7714-2015, + sortlocale=zh__pinyin,%zh__big5han,%zh__stroke,%zh__gb2312han,%zh__pinyin, + } + + % + %为日期相关选项增加选项值gb7714-2015 + % + \csdef{mkdaterangegb7714-2015}#1{% + \begingroup + \blx@metadateinfo{#1}% + \iffieldundef{#1year} + {} + {\printtext[#1date]{% + \blx@gbdate{#1}{}}}% + \endgroup} + + \newrobustcmd*{\blx@gbdate}[3][]{% + \dateeraprintpre{#2#3year}% + \blx@imc@forcezerosy{\thefield{#2#3year}}\ifblank{#1}{}{\printfield{#1}}% + \iffieldundef{#2#3month}{}{\hyphen\blx@imc@forcezerosmdt{\thefield{#2#3month}}}% + \iffieldundef{#2#3day}{}{\hyphen\blx@imc@forcezerosmdt{\thefield{#2#3day}}}} + + %为姓名格式选择增加的计数器 + \newcounter{gbnamefmtcase} + \def\thegbnamefmtcase{\the\c@gbnamefmtcase} + %为引用标签标注/文献表中本地化字符串中英文选择增加的计数器/命令 + \newcounter{gbcitelocalcase} + \newcounter{gbbiblocalcase} + \def\thegbcitelocalcase{\the\c@gbcitelocalcase} + \def\thegbbiblocalcase{\the\c@gbbiblocalcase} + + +\@ifpackagelater{biblatex}{2016/03/27} + { % 针对biblatex>=3.3版本的选项设置 + + % 增加不同语言排序的切换选项 + % gblanorder=chineseahead的顺序为cn,jp,kr,en,fr,ru + % gblanorder=englishahead的顺序为en,fr,ru,cn,jp,kr + % gblanorder=cn;en;ru;fr;jp;kr的顺序为指定的cn;en;ru;fr;jp;kr,自定义内容可以随意写以分号分隔 + % v1.0q,20190307,hzz + % + \DeclareBibliographyOption[string]{gblanorder}[chineseahead]{% + \ifstrequal{#1}{chineseahead}%%中文在前的顺序 + {\gdef\lancnorder{1}\gdef\lanjporder{2}\gdef\lankrorder{3}% + \gdef\lanenorder{4}\gdef\lanfrorder{5}\gdef\lanruorder{6}}% + {% + \ifstrequal{#1}{englishahead}% + {\execlanodeah\dealsortlan}% + {\execlanodudf{#1}\dealsortlan}% + }% + } + \ExecuteBibliographyOptions{gblanorder} + + \def\execlanodeah{%中文在后的顺序 + \gdef\lancnorder{4} + \gdef\lanjporder{5} + \gdef\lankrorder{6} + \gdef\lanenorder{1} + \gdef\lanfrorder{2} + \gdef\lanruorder{3}} + + \newcounter{lanordernum} + \newcommand{\execlanodudf}[1]{%like:cn;en;ru;fr;jp;kr + \setcounter{lanordernum}{0} + \DeclareListParser{\parsinglanorder}{;} + \renewcommand*{\do}[1]{\stepcounter{lanordernum}\csxdef{lan##1order}{\thelanordernum}} + \parsinglanorder{#1} + } + + % 增加本地化字符串的中英文切换选项 + % gbcitelocal指标注中的本地化字符串 + % gbbiblocal 指文献表中的本地化字符串 + % gblocal 指设置文献表和标注中的本地化字符串 + % v1.0o,20190103,hzz + % + \DeclareBibliographyOption[string]{gbcitelocal}[gb7714-2015]{% + \ifstrequal{#1}{gb7714-2015}{\setcounter{gbcitelocalcase}{0}}{}% + \ifstrequal{#1}{chinese}{\setcounter{gbcitelocalcase}{1}}{}% + \ifstrequal{#1}{english}{\setcounter{gbcitelocalcase}{2}}{}% + } + \ExecuteBibliographyOptions{gbcitelocal} + + \DeclareBibliographyOption[string]{gbbiblocal}[gb7714-2015]{% + \ifstrequal{#1}{gb7714-2015}{\setcounter{gbbiblocalcase}{0}}{}% + \ifstrequal{#1}{chinese}{\setcounter{gbbiblocalcase}{1}}{}% + \ifstrequal{#1}{english}{\setcounter{gbbiblocalcase}{2}}{}% + } + \ExecuteBibliographyOptions{gbbiblocal} + + \DeclareBibliographyOption[string]{gblocal}[gb7714-2015]{% + \ExecuteBibliographyOptions{gbbiblocal=#1}% + \ExecuteBibliographyOptions{gbcitelocal=#1}% + } + %\ExecuteBibliographyOptions{gblocal} %默认值已经通过两个相关选项设置 + + + % + % 增加序号标签格式处理选项,作者年制不做处理,给出只为兼容选项考虑 + % v1.0l,20180623,hzz + % + \DeclareBibliographyOption[string]{gbbiblabel}[bracket]{} + + % + % 增加姓名大小写格式处理选项 + % + \DeclareBibliographyOption[string]{gbnamefmt}[uppercase]{% + \ifstrequal{#1}{uppercase}{\setcounter{gbnamefmtcase}{0}}{}% + \ifstrequal{#1}{lowercase}{\setcounter{gbnamefmtcase}{1}}{}% + \ifstrequal{#1}{givenahead}{\setcounter{gbnamefmtcase}{2}}{}%given-family + \ifstrequal{#1}{familyahead}{\setcounter{gbnamefmtcase}{3}}{}%family-given + \ifstrequal{#1}{pinyin}{\setcounter{gbnamefmtcase}{4}}{}% + \ifstrequal{#1}{reverseorder}{\setcounter{gbnamefmtcase}{5}}{}%family-given/given-family + } + \ExecuteBibliographyOptions{gbnamefmt} + + % + % 增加标签对齐选项 + % + %因为在作者年制中,不需要使用,这里也增加,为了与顺序编码制的兼容性考虑。 + \DeclareBibliographyOption[string]{gbalign}[right]{}% + + + + + } + { + % 增加不同语言排序的切换选项 + % biblatex 3.4及以下版本不能使用多个stylesourcemap,所以不使用该选项 + % 这里给出仅为兼容性考虑 + % v1.0q,20190307,hzz + % + \DeclareBibliographyOption[string]{gblanorder}[chineseahead]{} + + % + % 增加序号标签格式处理选项,作者年制不做处理,给出只为兼容选项考虑 + % v1.0l,20180623,hzz + % + \DeclareBibliographyOption{gbbiblabel}[bracket]{} + + % + % 增加姓名大小写格式处理选项 + % + \DeclareBibliographyOption{gbnamefmt}[uppercase]{% + \ifstrequal{#1}{uppercase}{\setcounter{gbnamefmtcase}{0}}{}% + \ifstrequal{#1}{lowercase}{\setcounter{gbnamefmtcase}{1}}{}% + \ifstrequal{#1}{givenahead}{\setcounter{gbnamefmtcase}{2}}{}%given-family + \ifstrequal{#1}{familyahead}{\setcounter{gbnamefmtcase}{3}}{} + \ifstrequal{#1}{pinyin}{\setcounter{gbnamefmtcase}{4}}{}%family-given + \ifstrequal{#1}{reverseorder}{\setcounter{gbnamefmtcase}{5}}{}%family-given/given-family + } + \ExecuteBibliographyOptions{gbnamefmt} + + % + % 增加标签对齐选项 + % + %因为在作者年制中,不需要使用,这里也增加,为了与顺序年制的兼容性考虑。 + \DeclareBibliographyOption{gbalign}[right]{}% + + } + + +% +% 针对biblatex<3.3版本的选项设置,比如texlive2015中的3.0版 +% +\defversion{3.0}{opt}{ + \ExecuteBibliographyOptions{ + firstinits = true, %名字有缩写,参考3.1.2.3 Internal + } +} +% +% 针对3.3<=biblatex<3.5版本的选项设置,比如texlive2016中的3.4版 +% +\defversion{3.4}{opt}{ + \ExecuteBibliographyOptions{ + giveninits = true, + } +} +% +% 针对3.7<=biblatex<=3.9版本的选项设置,比如texlive2017中的3.7版 +% +\defversion{3.7}{opt}{ + \ExecuteBibliographyOptions{ + giveninits = true, + urldate =edtf, + eventdate =edtf, + } +} +% +% 针对3.10<=biblatex版本的选项设置,比如texlive2018中的3.11版 +% +\defversion{3.10}{opt}{ + \ExecuteBibliographyOptions{ + giveninits = true, + urldate =gb7714-2015,%iso + eventdate =gb7714-2015,%iso + } +} + +% +% 针对3.13<=biblatex版本的选项设置,因为内容有限,所以不再增加版本区分,而用时间直接判断 +% +% 解决国标中“王临慧, 2010a.”和“王临慧, 等, 2010b.”的问题 +% 在没有这个选项之前无法加上a和b +% v1.0s,20190828 +\@ifpackagelater{biblatex}{2019/08/16}{% + \ExecuteBibliographyOptions{% + nohashothers=true}}{} + +% +% 根据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{andothersincitecn} + \NewBibliographyString{andothersincite} + \NewBibliographyString{andcn} + \NewBibliographyString{andothersjp} + \NewBibliographyString{andotherskr} + \NewBibliographyString{andjp} + \NewBibliographyString{andkr} + \NewBibliographyString{andincitecn} + \NewBibliographyString{andincite} + \NewBibliographyString{volumecn} + \NewBibliographyString{numbercn} + \NewBibliographyString{serialcn} + \NewBibliographyString{incn} + \NewBibliographyString{mathesiscn} + \NewBibliographyString{phdthesiscn} + \NewBibliographyString{editorcn} + \NewBibliographyString{editorscn} + + % + % 修改一些当地化字符串 + % + % 原理方法:直接利用当地化格式english修改出一些中文的格式,具体修改内容参考english.lbx文件 + % 当然也可以增加比如上面定义的andotherscn + % 注意:在lbx文件和bbx文件中定义本地字符串的不同语法,两个参数和一个参数的区别 + \DefineBibliographyStrings{english}{ + bibliography = {\str@bibliography}, + references = {\str@references}, + bytranslator= {\str@bytranslator\adddot}, %将trans. by 改成 译 + and = {\addcomma},%将第2和3人名见的and符号改成 逗号,用\finalnamedelim命令也可以定义,参见3.9.1节 + andcn = {\addcomma},%\str@andcn\ and本地化字符串的中文对应词 + andincitecn = {\str@andcn},%将标注中的分开,便于与文献表中的区分 + andincite = {\addcomma}, + %andothers = {et al.}, %将超过3个人名的省略,et al.改成为 等 + andotherscn = {\str@andotherscn},%将超过3个人名的省略,et al.改成为 等 + andothersincitecn={\str@andotherscn},%将标注中的分开,便于与文献表中的区分 + andothersincite={et al\adddot}, + backrefpage = {\str@backrefpage:}, + backrefpages = {\str@backrefpages:}, + in={in\intitlepunct}, + volumecn={\str@volumecn}, + numbercn={\str@numbercn}, + serialcn={\str@serialcn}, + andothersjp={他}, + andotherskr={외}, + andjp={和}, + andkr={和}, + incn={\str@incn\addcolon\addspace}, + mathesiscn={\str@mathesiscn}, + phdthesiscn={\str@phdthesiscn}, + editorscn={\str@editorcn}, + editorcn={\str@editorcn}, + } + + % + % 增加两个命令用于临时的局部的修改本地化字符串 + % 其中\setlocalbibstring修改缩写字符串,setlocalbiblstring修改长字符串 + % 注意使用时因为是局部修改,因此要将其与需要修改的引用命令放在一个编组符号内 + % v1.0t,hzz,20190525 + \newcommand{\setlocalbibstring}[2]{% + \csdef{abx@sstr@#1}{#2}} + \newcommand{\setlocalbiblstring}[2]{% + \csdef{abx@lstr@#1}{#2}} + +%===================================================================== +% 动态数据修改 +%===================================================================== +% +% 各层次的数据映射和动态修改 +% +% 原理方法: +% 1. 进行语言包括中英文判断,并设置和记录,比如记录到userf,usere中 +% 2. 增加文献标识符如[M],[J]等,对一些容易混淆的域进行设置以增强兼容性 +% 3. \DeclareSourcemap命令对于biblatex3.11以下版本只能出现一次,3.11版开始支持多个 +% 4. \DeclarestyleSourcemap在biblatex v3.7版开始可以支持出现多次 +% 5. 把作者和译者信息准确的记录到userf,usere中,用于后面判断是否是cjk字符。 +% 注意:这里用userf,usere而不是namee,namef,是因为只有把name列表转成域,才能有效读取姓名中的字符, +% 如果用namee,namef,name信息会自动解析,所以就不能为cjk判断提供需要的信息 +% +% 不同的文献类型使用相同的驱动输出可以有5种方法: +% 1. 是数据源层的映射,将其它类型转换为某一要使用驱动的类型 +% 2. 是样式层映射,也是将其它类型转换为某一要使用驱动的类型 +% 3. 是驱动层映射,也是将其它类型转换为某一要使用驱动的类型 +% 4. 定义驱动类型别名DeclareBibliographyAlias,将其它类型定义为某一要使用驱动的类型的别名 +% 驱动别名定义本质上是做了驱动层映射 +% 5. 直接定义不同的类型的驱动,但驱动内容相同。 +% +% 关于数据映射和驱动使用的考虑如下: +% 1. 为避免利用biber输出bib文件时的数据变动,尽量不在数据源层映射做类型转换 +% 2. 为减少代码量,尽量少做内容相同的不同类型驱动 +% 3. 因此类型相关的处理主要在样式层映射、驱动层映射、驱动别名 +% 4. 由于biblatex默认做的驱动别名处理可能增加一些信息比如masterthesis转thesis时增加的type +% 可以在样式层映射做某些需要避免这种默认处置的转换 +% 5. 当没有避免默认行为的需求时,全部采用驱动别名的方式处理,等价于驱动层的映射 +% +% 文献类型和驱动考虑如下: +% 1. 连续出版物及析出文献有其特殊性,因此考虑两类periodical和article +% newpaper映射为article,并以note域做区分特殊处理 +% 2. 专著和专著中的析出文献是主要的类型,因此考虑book和inbook +% standard映射为book或inbook,并以note域做区分特殊处理 +% collection和proceedings基本与book类似,因此做book驱动别名处理 +% incollection和inproceedings基本与inbook类似,因此做inbook驱动别名处理 +% 3. 专利类型有其特殊性,考虑patent类型 +% 4. 电子资源类型有其特殊性,考虑online类型 +% 5. 报告类型与book有点类似,出版项处理与book一样,但有时又要有修改和更新日期 +% 因此考虑用一种类型来输出,使用report类型 +% 6. 手册/学位论文等类型与book有点类似,但对于出版项处理时,有缺省时,直接省略, +% 同时有version和edition的区别,因此考虑用一种类型来输出,使用manual类型 +% 7. 包括报告,学位论文在内的其它所有的类型,都做一个判断,当没有出版项时, +% 且存在网址信息时,将其转换为online类型输出,否则都做为manual类型输出。 +% 8. 备选类型misc当存在网址时直接转换为online,由于howpublished域可用于描述 +% 更多的信息,因此不存在网址时,独立做一个备选格式 +% 9. 出版项主要以如下方式处理: +% (a) location+institution+date 仅用于连续出版物 +% (b)publisher+location+date 用于需要完整输出出版项的类型,比如book,collection,proceedings,in*,report +% (c)institution+location+date 用于出版项缺失时不输出的类型,包括manual,thesis,archive等其他类型 +% (d)printlist{insitution} 用于电子资源,仅输出出版者或组织,为数据映射方便,本来默认的organization域转换为用insitution输出。 +% (e) 不输出,主要用于连续出版物析出的文献 +% 10. 日期以如下方式处理: +% date 由于存在biblatex选项,因此通过选项控制,数据源为date解析数据或year +% urldate 由于存在biblatex选项,因此通过选项控制,输出到日,且用[]包围,数据源为urldate +% newsdate 用于公告日期,公开日期或新闻日期,输出到日,但无包围符号,数据源为date +% modifydate 用于更新或修改日期,输出到日,且用()包围,数据源为date或enddate或eventdate + +\DeclareSourcemap{ +\maps[datatype=bibtex]{% + \map{%当没有作者时将editor转成author + \pernottype{inbook}%因为in系列中editor可能用来表示bookauthor,所以排除 + \pernottype{inproceedings} + \pernottype{incollection} + \pernottype{periodical}%因为peridical直接使用editor,所以排除 + %注意notfield在低版本biblatex中没有 + %\step[notfield=author,final]%当author不存在,将editor复制给author + \step[fieldsource=editor,fieldtarget=author]%并删除editor + } + \map{%当没有作者时将translator转成author + \pernottype{inbook} + \pernottype{inproceedings} + \pernottype{incollection} + %\step[notfield=author,final]%当author不存在,将translator复制给author + \step[fieldsource=translator,fieldtarget=author]%并删除translator + } + \map{%让address和location同步,biblatex中address是location的别名 + %因此输出的时候只有location信息,但处理过程中是可以存在address的。 + %\step[notfield=address,final] + \step[fieldsource=location,final] + \step[fieldset=address,origfieldval] + } + \map{%让address和location同步 + %\step[notfield=location,final] + \step[fieldsource=address,final] + \step[fieldset=location,origfieldval] + } + \map{%处理在bib文件用mark标记文献类型标识符的情况 + \step[fieldsource=mark,final] + \step[fieldset=usera, origfieldval] + } + \map{%处理在bib文件中直接给出文献的姓名格式为lowercase的情况 + \step[fieldsource=nameformat,match=lowercase,final] + \step[fieldset=namefmtid,fieldvalue={1}] + } + \map{%处理在bib文件中直接给出文献的姓名格式为givenahead的情况 + \step[fieldsource=nameformat,match=givenahead,final] + \step[fieldset=namefmtid,fieldvalue={2}] + } + \map{%处理在bib文件中直接给出文献的姓名格式为familyahead的情况 + \step[fieldsource=nameformat,match=familyahead,final] + \step[fieldset=namefmtid,fieldvalue={3}] + } + \map{%处理在bib文件中直接给出文献的姓名格式为pinyin的情况 + \step[fieldsource=nameformat,match=pinyin,final] + \step[fieldset=namefmtid,fieldvalue={4}] + } + \map{%根据article确定文献类型标识符 + \pertype{article} + \step[fieldset=usera, fieldvalue={J}] + } + \map{%根据periodical确定文献类型标识符 + \pertype{periodical} + \step[fieldset=usera, fieldvalue={J}] + \step[fieldsource=author] %有时会把author和editor混淆,处理后使用editor + \step[fieldset=editor, origfieldval] + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{%根据增加一个新闻报纸的类型newspaper确定文献类型标识符 + \pertype{newspaper} + \step[fieldset=usera, fieldvalue={N}] + \step[fieldset=note, fieldvalue=news]%因为没有专门的驱动,记录note方便映射为article后判断 + } + \map{%对应增加的一个数据库类型database确定文献类型标识符 + \pertype{database} + \step[fieldset=usera, fieldvalue={DB}] + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{%对应增加的一个数据集类型dataset确定文献类型标识符 + \pertype{dataset} + \step[fieldset=usera, fieldvalue={DS}]% + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{%对应增加的一个软件类型software确定文献类型标识符 + \pertype{software} + \step[fieldset=usera, fieldvalue={CP}] + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{%对应增加的一个舆图类型map确定文献类型标识符 + \pertype{map} + \step[fieldset=usera, fieldvalue={CM}]% + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{%对应增加的一个档案类型archive确定文献类型标识符 + \pertype{archive} + \step[fieldset=usera, fieldvalue={A}] + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{%因为misc类型本身就是没有类型,而不像其它文献有明确的类型,所以 + %当misc类型带有网址时,直接将其转换为online类型 + \pertype{misc} + \step[fieldsource=url,final] + \step[typesource=misc,typetarget=online] + } + \map{%对应增加的一个备选类型misc确定文献类型标识符 + \pertype{misc} + \step[fieldset=usera, fieldvalue={Z}]% + } + \map{ + \pertype{book} + \pertype{inbook} + \step[fieldset=usera, fieldvalue={M}] + \step[fieldsource=version] %有时会把version和edition混淆,处理后直接用edition + \step[fieldset=edition, origfieldval] + } + \map{%兼容老的standard类型,确定文献类型标识符 + \pertype{standard} + \step[fieldset=usera, fieldvalue={S}] + \step[fieldset=note, fieldvalue=standard]%因为没有专门的驱动,记录note方便映射为book和inbook后判断 + } + \map{ + \pertype{patent} + \step[fieldset=usera, fieldvalue={P}] + } + \map{ + \pertype{inproceedings} + \pertype{conference}%兼容老的conference类型 + \step[fieldset=usera, fieldvalue={C}] + \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher + \step[fieldset=publisher, origfieldval] + } + \map{ + \pertype{proceedings} + \step[fieldset=usera, fieldvalue={C}] + \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher + \step[fieldset=publisher, origfieldval] + } + \map{ + \pertype{incollection} + \step[fieldset=usera, fieldvalue={G}] + \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher + \step[fieldset=publisher, origfieldval] + } + \map{ + \pertype{collection} + \step[fieldset=usera, fieldvalue={G}] + \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher + \step[fieldset=publisher, origfieldval] + } + \map{ + \pertype{report} + \pertype{techreport}%兼容老的techreport类型 + \step[fieldset=usera, fieldvalue={R}] + \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher + \step[fieldset=publisher, origfieldval] + } + \map{ + \pertype{thesis} + \pertype{mastersthesis}%兼容老的mastersthesis和phdthesis类型 + \pertype{phdthesis} + \step[fieldset=usera, fieldvalue={D}] + \step[fieldsource=publisher]%有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{ + \pertype{online} + \pertype{electronic}%兼容老的electronic类型 + \pertype{www}%兼容老的www类型 + \step[fieldset=usera, fieldvalue={EB}] + \step[fieldsource=publisher]%有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval]%因为online的出版项处理类似手册 + \step[fieldsource=organization]%有时会把organization和institution混淆,处理后使用institution,以增强兼容性 + \step[fieldset=institution, origfieldval] + } + \map{ + \pertype{manual} + \step[fieldset=usera, fieldvalue={A}] + \step[fieldsource=edition]%有时会把version和edition混淆,处理后使用version + \step[fieldset=version, origfieldval] + \step[fieldsource=publisher]%有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + \step[fieldsource=organization]%有时会把organization和institution混淆,处理后使用institution,以增强兼容性 + \step[fieldset=institution, origfieldval] + } + \map{ + \pertype{unpublished} + \step[fieldset=usera, fieldvalue={Z}] + } + \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 + \step[fieldsource={author}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] + }% + \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 + \step[fieldsource={editor}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] + }% + \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 + \step[fieldsource={translator}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] + }% + \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 + \step[fieldsource={bookauthor}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] + }% + \map{%处理一些用year表示date的情况 + %这样处理将会设置date域,并使得labeldatesource变为空,因为date的前缀为空(如果是urldate,那么labeldatesource就是url)。 + %同时date域会被biblatex自动解析为year,month,day,并且覆盖原来的year信息 + \step[fieldsource=year] + \step[fieldset=date, origfieldval] + } + \map{%将entrykey放入keywords中用于后期使用 + \step[fieldsource=entrykey] + \step[fieldset=keywords, origfieldval] + } + \map{\step[fieldsource=title,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF + \step[fieldset=userd,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 + } + \map{% + \step[fieldsource=title,match=\regexp{[\x{0400}-\x{052F}]},final] + \step[fieldset=userd,fieldvalue={russian}]%俄语 + } + \map{% + \step[fieldsource=title,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] + \step[fieldset=userd,fieldvalue={japanese}]%日语 + } %确定形式后可增加类似andotherscn这样的本地化字符串处理 + \map{% + \step[fieldsource=title,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] + \step[fieldset=userd,fieldvalue={korean}]%韩语 + } + \map{%文献题名的中文判断,将信息保存到userd中,避免因为标签生成原因导致title域被清除而产生问题 + \step[fieldsource=title, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]% + \step[fieldset=userd, fieldvalue={chinese}] + } + \map{%将没有设置userd,且存在title域的默认设置为英文 + \step[fieldsource=title,final] + \step[fieldset=userd,fieldvalue={english}] + } + \map{\step[fieldsource=author,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF + \step[fieldset=userf,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 + } + \map{% + \step[fieldsource=author,match=\regexp{[\x{0400}-\x{052F}]},final] + \step[fieldset=userf,fieldvalue={russian}]%俄语 + } + \map{% + \step[fieldsource=author,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] + \step[fieldset=userf,fieldvalue={japanese}]%日语 + } %确定形式后可增加类似andotherscn这样的本地化字符串处理 + \map{% + \step[fieldsource=author,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] + \step[fieldset=userf,fieldvalue={korean}]%韩语 + } + \map{%作者的中文判断 + \step[fieldsource=author, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] + \step[fieldset=userf, fieldvalue={chinese}] + } + \map{%将没有设置userf,且存在author域的默认设置为英文 + \step[fieldsource=author,final] + \step[fieldset=userf,fieldvalue={english}] + } + \map{\step[fieldsource=translator,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF + \step[fieldset=usere,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 + } + \map{% + \step[fieldsource=translator,match=\regexp{[\x{0400}-\x{052F}]},final] + \step[fieldset=usere,fieldvalue={russian}]%俄语 + } + \map{% + \step[fieldsource=translator,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] + \step[fieldset=usere,fieldvalue={japanese}]%日语 + } %确定形式后可增加类似andotherscn这样的本地化字符串处理 + \map{% + \step[fieldsource=translator,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] + \step[fieldset=usere,fieldvalue={korean}]%韩语 + } + \map{%译者的中文判断 + \step[fieldsource=translator, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] + \step[fieldset=usere, fieldvalue={chinese}] + } + \map{%将没有设置usere,且存在translator域的默认设置为英文 + \step[fieldsource=translator,final] + \step[fieldset=usere,fieldvalue={english}] + } + \map{\step[fieldsource=editor,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF + \step[fieldset=userc,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 + } + \map{% + \step[fieldsource=editor,match=\regexp{[\x{0400}-\x{052F}]},final] + \step[fieldset=userc,fieldvalue={russian}]%俄语 + } + \map{% + \step[fieldsource=editor,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] + \step[fieldset=userc,fieldvalue={japanese}]%日语 + } %确定形式后可增加类似andotherscn这样的本地化字符串处理 + \map{% + \step[fieldsource=editor,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] + \step[fieldset=userc,fieldvalue={korean}]%韩语 + } + \map{%编者的中文判断 + \step[fieldsource=editor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 + \step[fieldset=userc, fieldvalue={chinese}] + } + \map{%将没有设置userc,且存在editor域的默认设置为英文 + \step[fieldsource=editor,final] + \step[fieldset=userc,fieldvalue={english}] + } + \map{\step[fieldsource=bookauthor,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF + \step[fieldset=userb,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 + } + \map{% + \step[fieldsource=bookauthor,match=\regexp{[\x{0400}-\x{052F}]},final] + \step[fieldset=userb,fieldvalue={russian}]%俄语 + } + \map{% + \step[fieldsource=bookauthor,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] + \step[fieldset=userb,fieldvalue={japanese}]%日语 + } %确定形式后可增加类似andotherscn这样的本地化字符串处理 + \map{% + \step[fieldsource=bookauthor,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] + \step[fieldset=userb,fieldvalue={korean}]%韩语 + } + \map{%编者的中文判断 + \step[fieldsource=bookauthor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 + \step[fieldset=userb, fieldvalue={chinese}] + } + \map{%将没有设置userc,且存在editor域的默认设置为英文 + \step[fieldsource=bookauthor,final] + \step[fieldset=userb,fieldvalue={english}] + } + \map{\step[fieldsource=userd,final]%userd存在则用根据标题的语言设定language + \step[fieldset=language,origfieldval]%本身language存在则不设定 + } + \map{\step[fieldsource=userf,final]%userd不存在,而userf存在则根据author的语言设定language + \step[fieldset=language,origfieldval] + }%如果没有作者和标题,那么剩下的最可能有意义的只有网址了,而网址通常是英文的,因此不用再进一步对其它域进行判断了。 + \map{%将没有设置的language设置成en,即认为不是中文的就是英文的。 + \step[fieldset=language,fieldvalue={english}] + } + \map{%一条文献的语言已经设定在language域中,由于出版项相关宏中使用userd判断, + %所以将一条文献的主体语言设定到userd中,本身前面userd已经设定,但没有处理无标题的情况, + %这里的处理等价于没有标题时,利用作者的语言设定userd,再没有作者,则默认用英文设定userd + \step[fieldsource=language] + \step[fieldset=userd,origfieldval] + } + \map{%当文献给出language域时,设置文献要使用的本地化字符串的语言 + %biblatex 3.11及以下版本仅有match是区分大小写的,而3.12版开始用matchi来区分大小,而match不区分 + %这里为兼容3.11及以下版本,所以用一个复杂一点的正则表达式 + \step[fieldsource=language,match=\regexp{(e|E)(n|N)(g|G)(l|L)(i|I)(s|S)(h|H)},final] + \step[fieldset=langid,fieldvalue={english}] + \step[fieldset=lansortorder,fieldvalue=\lanenorder] + } + \map{ + \step[fieldsource=language,match=\regexp{(r|R)(u|U)(s|S)(s|S)(i|I)(a|A)(n|N)},final] + \step[fieldset=langid,fieldvalue={russian}] + \step[fieldset=lansortorder,fieldvalue=\lanruorder] + } + \map{% + \step[fieldsource=language,match=\regexp{(f|F)(r|R)(e|E)(n|N)(c|C)(h|H)},final] + \step[fieldset=langid,fieldvalue={french}] + \step[fieldset=lansortorder,fieldvalue=\lanfrorder] + } + \map{% + \step[fieldsource=language,match=\regexp{(c|C)(h|H)(i|I)(n|N)(e|E)(s|S)(e|E)},final]%中日韩语目前都用english, + \step[fieldset=langid,fieldvalue={english}] + \step[fieldset=lansortorder,fieldvalue=\lancnorder] + } + \map{% + \step[fieldsource=language,match=\regexp{(j|J)(a|A)(p|P)(a|A)(n|N)(e|E)(s|S)(e|E)},final]%中日韩语目前都用english, + \step[fieldset=langid,fieldvalue={english}] + \step[fieldset=lansortorder,fieldvalue=\lanjporder] + } + \map{% + \step[fieldsource=language,match=\regexp{(k|K)(o|O)(r|R)(e|E)(a|A)(n|N)},final]%中日韩语目前都用english, + \step[fieldset=langid,fieldvalue={english}] + \step[fieldset=lansortorder,fieldvalue=\lankrorder] + } + \map{%尝试未定义数据模型的standard类型映射为其他类型book或inbook, + %standard类型在blx-dm中有出现,但仅定义了类型,域和约束等都没有定义 + %因为可能要映射两种类型,所以不能在驱动层处理,因为要做判断 + \step[fieldsource=booktitle,final]%当存在booktitle域是映射为inbook + \step[typesource=standard, typetarget=inbook, final] + } + \map{%剩下的全部映射为book + \step[typesource=standard, typetarget=book, final] + } +% \map{%先于标准样式的driver层映射,以取消type设置 +% \step[typesource=mastersthesis, typetarget=thesis, final] +% %\step[fieldset=type, fieldvalue=mathesis] +% } +% \map{%先于标准样式的driver层映射,以取消type设置 +% \step[typesource=phdthesis, typetarget=thesis, final] +% %\step[fieldset=type, fieldvalue=phdthesis] +% } + \map{%先于标准样式的driver层映射,以取消type设置 + \step[typesource=techreport, typetarget=report, final] + %\step[fieldset=type, fieldvalue=techreport] + } + \map{% + \pertype{report} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=report,typetarget=online] + \step[fieldset=note,fieldvalue={report}] + } + \map{% + \pertype{thesis} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=thesis,typetarget=online] + } + \map{% + \pertype{manual} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=manual,typetarget=online] + } + \map{% + \pertype{unpublished} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=unpublished,typetarget=online] + } + \map{% + \pertype{database} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=databasetypetarget=online] + } + \map{% + \pertype{dataset} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=dataset,typetarget=online] + } + \map{% + \pertype{software} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=software,typetarget=online] + } + \map{% + \pertype{map} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=map,typetarget=online] + } + \map{% + \pertype{archive} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=archive,typetarget=online] + } + \map[overwrite]{%这里还必须有overwrite,注意不同版本存在差异,比如texlive2015变16后biber有变化(20161207修改正确) + \step[fieldsource=note, final]%将note域信息复制给keywords,用于输出时容易区分标准和报纸 + \step[fieldset=keywords, fieldvalue={,}, append] + \step[fieldset=keywords, origfieldval, append] + } + \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\\\%}] + } + %对于高版本(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{ + \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map{%默认情况下将空缺作者的中文文献设置为佚名 + \step[fieldsource=language,match={chinese},final] + \step[fieldset=author, fieldvalue={佚名}] + } + \map{%默认情况下将空缺作者的英文文献设置为A{non} + \step[fieldsource=language,match={english},final] + \step[fieldset=author, fieldvalue={A{non}}]%noauthor换成Anon,同时为避免大写还加了{} + } + } + } +} + +% +% 不同语言分集调整的实现方式 +% +% 原理方法:利用样式层的动态数据修改lansortorder域来实现排序 +\def\dealsortlan{ + \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map[overwrite]{%当文献给出language域时,设置文献要使用的本地化字符串的语言 + \step[fieldsource=language,match=english,final] + \step[fieldset=lansortorder,fieldvalue=\lanenorder] + } + \map[overwrite]{ + \step[fieldsource=language,match=russian,final] + \step[fieldset=lansortorder,fieldvalue=\lanruorder] + } + \map[overwrite]{% + \step[fieldsource=language,match=french,final] + \step[fieldset=lansortorder,fieldvalue=\lanfrorder] + } + \map[overwrite]{% + \step[fieldsource=language,match=chinese,final]%中日韩语目前都用english, + \step[fieldset=lansortorder,fieldvalue=\lancnorder] + } + \map[overwrite]{% + \step[fieldsource=language,match=japanese,final]%中日韩语目前都用english, + \step[fieldset=lansortorder,fieldvalue=\lanjporder] + } + \map[overwrite]{% + \step[fieldsource=language,match=korean,final]%中日韩语目前都用english, + \step[fieldset=lansortorder,fieldvalue=\lankrorder] + } + } + } +} + + +% +%驱动别名等价于驱动层映射 +% +\DeclareBibliographyAlias{newspaper}{article}% +\DeclareBibliographyAlias{inproceedings}{inbook}%会议论文文献类型驱动 +\DeclareBibliographyAlias{conference}{inbook}%会议论文文献类型驱动 +\DeclareBibliographyAlias{incollection}{inbook}%文集中析出文献类型驱动 +\DeclareBibliographyAlias{collection}{book}%%文集类型驱动 +\DeclareBibliographyAlias{proceedings}{book}%会议论文集文献类型驱动 +\DeclareBibliographyAlias{thesis}{manual}%学位论文驱动 +\DeclareBibliographyAlias{unpublished}{manual}%其它类型驱动 +\DeclareBibliographyAlias{database}{manual} +\DeclareBibliographyAlias{dataset}{manual} +\DeclareBibliographyAlias{software}{manual} +\DeclareBibliographyAlias{map}{manual} +\DeclareBibliographyAlias{archive}{manual} + +%===================================================================== +% 设置排序格式 +%===================================================================== +% +% 排序格式,用降序,及userb域,针对biblatex3.7及以下版本 +% +\defversion{3.7}{sort}{%这是3.4版的,3.7版略有差异,但不大,后面有注释 + \DeclareSortingScheme{gb7714-2015}{ + \sort{ + \field{presort} + } + %\sort[final]{ + %\field{sortkey} + %} + \sort{ + \field{lansortorder}%language + } + \sort{ + \field{sortkey} + } + \sort{%[direction=descending] + \field{sortname} + \field{author} + \field{editor} + \field{translator} + } + \sort{ + \field{sortyear} + \field{year} + } + \sort{ + \field{sorttitle} + \field{title} + } + \sort{ + \field[padside=left,padwidth=4,padchar=0]{volume}%3.7版是\field{volume} + \literal{0000}%3.7版是\literal{0} + } + } + + %降序的nyt + \DeclareSortingScheme{gbnytd}{ + \sort{ + \field{presort} + } + %\sort[final]{ + %\field{sortkey} + %} + \sort{ + \field{lansortorder}%language + } + \sort[direction=descending]{ + \field{sortkey} + } + \sort[direction=descending]{ + \field{sortname} + \field{author} + \field{editor} + \field{translator} + } + \sort{ + \field{sortyear} + \field{year} + } + \sort{ + \field{sorttitle} + \field{title} + } + \sort{ + \field[padside=left,padwidth=4,padchar=0]{volume}%3.7版是\field{volume} + \literal{0000}%3.7版是\literal{0} + } + } + + %降序的ynt + \DeclareSortingScheme{gbyntd}{ + \sort{ + \field{presort} + } + %\sort[final]{ + %\field{sortkey} + %} + \sort{ + \field{lansortorder}%language + } + \sort[direction=descending]{ + \field{sortyear} + \field{year} + } + \sort{ + \field{sortkey} + } + \sort{ + \field{sortname} + \field{author} + \field{editor} + \field{translator} + } + \sort{ + \field{sorttitle} + \field{title} + } + \sort{ + \field[padside=left,padwidth=4,padchar=0]{volume}%3.7版是\field{volume} + \literal{0000}%3.7版是\literal{0} + } + } + + %升序的ynt + \DeclareSortingScheme{gbynta}{ + \sort{ + \field{presort} + } + %\sort[final]{ + %\field{sortkey} + %} + \sort{ + \field{lansortorder}%language + } + \sort{ + \field{sortyear} + \field{year} + } + \sort{ + \field{sortkey} + } + \sort{ + \field{sortname} + \field{author} + \field{editor} + \field{translator} + } + \sort{ + \field{sorttitle} + \field{title} + } + \sort{ + \field[padside=left,padwidth=4,padchar=0]{volume}%3.7版是\field{volume} + \literal{0000}%3.7版是\literal{0} + } + } +} + + +% +% 排序格式,用降序,及userb域,针对biblatex3.8及以上版本 +% +\defversion{3.8}{sort}{ + \DeclareSortingTemplate{gb7714-2015}{ + \sort{ + \field{presort} + } + %\sort[final]{ + %\field{sortkey} + %} + \sort{ + \field{lansortorder}%language + } + \sort{ + \field{sortkey} + } + \sort{%[direction=descending] + \field{sortname} + \field{author} + \field{editor} + \field{translator} + } + \sort{ + \field{sortyear} + \field{year} + } + \sort{ + \field{sorttitle} + \field{title} + } + \sort{ + \field{volume} + \literal{0} + } + } + + %降序的nyt + \DeclareSortingTemplate{gbnytd}{ + \sort{ + \field{presort} + } +% \sort[final]{ +% \field{sortkey} +% } + \sort{ + \field{lansortorder}%language + } + \sort[direction=descending]{ + \field{sortkey} + } + \sort[direction=descending]{% + \field{sortname} + \field{author} + \field{editor} + \field{translator} + } + \sort{ + \field{sortyear} + \field{year} + } + \sort{ + \field{sorttitle} + \field{title} + } + \sort{ + \field{volume} + \literal{0} + } + } + + %降序的ynt + \DeclareSortingTemplate{gbyntd}{ + \sort{ + \field{presort} + } +% \sort[final]{ +% \field{sortkey} +% } + \sort{ + \field{lansortorder}%language + } + \sort[direction=descending]{ + \field{sortyear} + \field{year} + } + \sort{ + \field{sortkey} + } + \sort{% + \field{sortname} + \field{author} + \field{editor} + \field{translator} + } + \sort{ + \field{sorttitle} + \field{title} + } + \sort{ + \field{volume} + \literal{0} + } + } + + %升序的ynt + \DeclareSortingTemplate{gbynta}{ + \sort{ + \field{presort} + } +% \sort[final]{ +% \field{sortkey} +% } + \sort{ + \field{lansortorder}%language + } + \sort{%[direction=ascending] + \field{sortyear} + \field{year} + } + \sort{ + \field{sortkey} + } + \sort{% + \field{sortname} + \field{author} + \field{editor} + \field{translator} + } + \sort{ + \field{sorttitle} + \field{title} + } + \sort{ + \field{volume} + \literal{0} + } + } + + % + % 定义命令\defdoublelangentry,用于biblatex>v3.8版利用related实现双语文献的处理 + % + %为了实现v3.8以上版本的双语文献,采用related的方法代替set方法,因为set方法已经无法实现了, + %因为set不再复制其第一个成员的信息。于是定义一个命令,用于动态的修改数据,即添加related域的信息 + %其中使用了\DeclareStyleSourcemap,但由于其只能出现在导言区中,因此\defdoublelangentry命令也只能出现在导言区中 + \newcommand{\defdoublelangentry}[2]{% + \edef\entrykeya{##1} + \edef\entrykeyb{##2} + \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map{ + \step[fieldsource=entrykey, match=\entrykeya, final] + \step[fieldset=related, fieldvalue=\entrykeyb] + } + } + } + } +} + + +\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 + + +%===================================================================== +%参考文献表环境 +%===================================================================== + +% +% 列表格式 +% +% 增加一个\bibitemindent尺寸用于控制list环境的itemindent +% v1.0l,20180615,hzz +\setlength{\bibhang}{1em} +\newlength{\bibitemindent} +\setlength{\bibitemindent}{-\bibhang} +\setlength{\bibitemsep}{4.5pt} + \defbibenvironment{bibliography} + {\list + {} + {\setlength{\leftmargin}{\bibhang}% + \setlength{\itemindent}{\bibitemindent}% + \setlength{\itemsep}{\bibitemsep}% + \setlength{\parsep}{\bibparsep}}} + {\endlist} + {\item} + + +%===================================================================== +% 设置单元或块等的标点 +%===================================================================== +\renewrobustcmd*{\bibinithyphendelim}{\addhighpenspace}%用于处理姓名中名部分存在-的情况,比如ZHANG Yu-xin +\renewcommand*{\subtitlepunct}{\addcolon\space} %修改标题和其它标题信息间的标点%来源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}%ay样式用par也可以,因为没有悬挂对齐问题 +\renewcommand*{\bibpagespunct}{\addcolon\addthinspace}%%页码引用格式的修改,修改为用冒号 +%\renewcommand{\relateddelim}{}%\par + +%===================================================================== +% 修改域的格式,重定义域的输出宏 +%===================================================================== +% +% 新增文献类型标识符的格式 +% []前的nobreak,从GB4.1节的例子看不应该加,所以去掉 +% 但因为考虑到cjk字符和[]之间可能添加空格,所以仍然加上 +% 而[]中间的内容,从4.6.2节的例子看也是可以分割的,因此内部的nobreak也可以去掉 +% +\DeclareFieldFormat{gbtypeflag}{% +\iftoggle{bbx:gbmedium}% +{\iftoggle{bbx:url}% + {\iffieldundef{url}%当存在url时,增加一个OL标识符 + {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}}% + {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\texttt{/}OL]}}% + }% + {\ifentrytype{online}% + {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\texttt{/}OL]}}% + {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}}% + }}% + {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{]}}% +} + +% +% 新增用于报纸的文献类型标识符的格式 +% +\DeclareFieldFormat{gbtypeflagn}{%用于报纸newspaper +\iftoggle{bbx:gbmedium}% +{\iftoggle{bbx:url}% + {\iffieldundef{url}%当存在url时,增加一个OL标识符 + {\nobreak\printtext{[}\nobreak N\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% + {\nobreak\printtext{[}\nobreak N\printtext{\texttt{/}OL]}\nobreak}% + }% + {\nobreak\printtext{[}\nobreak N\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% +}{\nobreak\printtext{[}\nobreak N\printtext{]}\nobreak}% +} + +% +% 新增用于标准的文献类型标识符的格式 +% +\DeclareFieldFormat{gbtypeflags}{%用于标准standard +\iftoggle{bbx:gbmedium}% +{\iftoggle{bbx:url}% + {\iffieldundef{url}%当存在url时,增加一个OL标识符 + {\nobreak\printtext{[}\nobreak S\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% + {\nobreak\printtext{[}\nobreak S\printtext{\texttt{/}OL]}\nobreak}% + }% + {\nobreak\printtext{[}\nobreak S\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% +}{\nobreak\printtext{[}\nobreak S\printtext{]}\nobreak}% +} + +% +% 重设title等参考文献信息的输出格式 +% +% 原理方法:修改来自biblatex.def文件的原格式 +\newcommand{\bibtitlefont}{} +\newcommand{\bibauthorfont}{} +\newcommand{\bibpubfont}{} +\DeclareFieldFormat{title}{#1\adddot\addthinspace} +\DeclareFieldFormat{journaltitle}{#1\isdot}%添加\isdot,用于缩写名带点情况,将其转换为缩写点,便于标点的追踪 +\DeclareFieldFormat{issuetitle}{#1} +\DeclareFieldFormat{maintitle}{#1} +\DeclareFieldFormat{booktitle}{#1} +\DeclareFieldFormat%将期刊等文献的标题中原来带的引号去掉 + [article,patent,thesis,unpublished] + {title}{#1\adddot\addthinspace} +\DeclareFieldFormat%将期刊等文献的标题中原来带的引号去掉 + [inbook,incollection,inproceedings] + {title}{#1}%\nopunct\unspace +\DeclareFieldFormat{url}{\url{#1}} %url域修改如本行%url相关输出,源来自biblatex.def +\def\UrlFont{\rmfamily}%设置url字体为roman字体%\ttfamily +%\urlstyle{rm} %使用这句也一样 +\setcounter{biburlnumpenalty}{100} %让url可以在数字后断行 +\setcounter{biburlucpenalty}{100} %让url可以在大写字母后断行 +\setcounter{biburllcpenalty}{100} %让url可以在小写字母后断行 +\DeclareFieldFormat{doi}{% + \rmfamily{DOI}\addcolon\space + \ifhyperref + {\href{https://doi.org/#1}{\nolinkurl{#1}}} + {\nolinkurl{#1}}} +% +% 标题的字母大小写格式修改 +% +% 注意:修改标题的字母大小写,不能用前面的title的格式而要用titlecase +% 因为titlecase is applied to the contents of the field directly,title is not +%\DeclareFieldFormat{titlecase}{\MakeCapital#1}%重设标题格式,将其修改为首字母大写 +\DeclareFieldFormat{titlecase}{\iftoggle{bbx:titlelink}{% +\iffieldundef{url}{\MakeCapital#1}{% +\href{\thefield{url}}{#1}}}{\MakeCapital#1}}%重设标题格式,将其修改为首字母大写 +\DeclareFieldFormat{pages}{#1}%页码引用格式的修改%去掉前面引导页码的pp.等字符 +\DefineBibliographyExtras{english}{\renewcommand*{\bibrangedash}{-}} +\DefineBibliographyExtras{russian}{\renewcommand*{\bibrangedash}{-}} + +\def\execgbfdfmtstd{%恢复到标准样式的设置 +\DeclareFieldFormat{title}{\mkbibemph{##1}} +\DeclareFieldFormat + [article,inbook,incollection,inproceedings,patent,thesis,unpublished] + {title}{\mkbibquote{##1\isdot}} +\DeclareFieldFormat + [suppbook,suppcollection,suppperiodical] + {title}{##1} +\DeclareFieldFormat{journaltitle}{\mkbibemph{##1}} +\DeclareFieldFormat{issuetitle}{\mkbibemph{##1}} +\DeclareFieldFormat{maintitle}{\mkbibemph{##1}} +\DeclareFieldFormat{booktitle}{\mkbibemph{##1}} +\DeclareFieldFormat{url}{\mkbibacro{URL}\addcolon\space\url{##1}} +\DeclareFieldFormat{titlecase}{##1} +\DeclareFieldFormat{pages}{\mkpageprefix[bookpagination]{##1}} +} + +% +% 文献标题后的标点问题 +% v1.0k,20180405,为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以上版本 + \@ifclassloaded{beamer}{ + \DeclareFieldFormat{title}{#1}% + \DeclareFieldFormat[article,patent,thesis,unpublished]{title}{#1} + \AtBeginDocument{% + \patchcmd{\abx@macro@title}{\newunitpunct}{}{}{}}}{} + } + + +% +% 修改译者位置格式 +% +% 原理方法:修改来自biblatex.def文件的bytranslator+others宏的格式 +\renewbibmacro*{bytranslator+others}{\bibauthorfont% + \ifnameundef{translator} + {} + {%\usebibmacro{bytranslator+othersstrg} + %\setunit{\addspace}% + \printnames[bytranslator]{translator}% + \clearname{translator}% + %从macro*{bytranslator+othersstrg}%中可以看到当地化字符串格式的引用前的代码处理 + %比如生成cotranslator等用于调用cotranslator所代表的当地化字符串 + \usebibmacro{bytranslator+othersstrg}%“译”的位置换到下面来,即放到译者后面。 + %\setunit{\addspace}% + \newunit}% + \usebibmacro{withothers}} + + + +% +% 修改作者数量超过限定值,做省略时的处理格式 +% v1.0,20160701,hzz +% v1.0O,20190103,hzz,修改利用新定义的一个分隔符strandothersdelim +% +% 原理方法:判断作者或译者是否中文,若中文用字符等,否则用et al. 。 +% \printnames由start-stop控制项数,默认是1和maxnames/minnames +\renewbibmacro*{name:andothers}{\bibauthorfont% + \ifboolexpr{ + test {\ifnumequal{\value{listcount}}{\value{liststop}}} + and + test \ifmorenames + }{\ifnumgreater{\value{liststop}}{1}%注意这里试图去区分姓名总数大于1的情况,当姓名总数大于1时,最后一个姓名后面先加入一个\finalandcomma + {\finalandcomma}%目前国标没有这样的区分要求,如果有需要也是可以这么去做的。 + {}% +\printdelim{andothersdelim}\printdelim{strandothersdelim}% +}{%当是译者的时候需要特殊处理:从7.2节看等,译前面加逗号,但从示例看等和译同时出现时,译前的逗号没有,比如: +%袁训来, 陈哲, 肖书海, 等. +%胡泳, 范海燕, 译. +%潘惠霞, 魏婧, 杨艳, 等译. +\ifcurrentname{translator}{\addcomma\addthinspace}{}%为了实现上述第二个示例情况做的处理 +}} + +% 修改省略作者后的本地化字符串,比如et al. +% v1.0o,20190103,hzz +% +% 原理方法:默认情况下判断作者或译者是否中文,若中文用字符andotherscn=“等”,否则用andothers=“et al.”。 +% 非默认情况,根据选项信息,选择选择强制中文或英文 +% 首先设置全局的,然后设置文献表中的,这一等价于将所有的cite命令环境都设置过了 +% 而不用对每一个引用命令单独设置,比如cite,parancite,textcite都设置 +\DeclareDelimFormat{strandothersdelim}{% + \edef\userfieldabcde{userd}%这里使用\iffieldequalstr{labelnamesource}替代ifcurrentname因为标注中使用ifcurrentname无效 + \iffieldequalstr{labelnamesource}{translator}{\edef\userfieldabcde{usere}}{}% + \iffieldequalstr{labelnamesource}{editor}{\edef\userfieldabcde{userc}}{}% + \iffieldequalstr{labelnamesource}{author}{\edef\userfieldabcde{userf}}{}% + \iffieldequalstr{labelnamesource}{bookauthor}{\edef\userfieldabcde{userb}}{}% + \ifcase\value{gbcitelocalcase}% + \iffieldequalstr{\userfieldabcde}{chinese}{\ifbibstring{andothersincitecn}{\bibstring{andothersincitecn}}{\bibstring{andothers}}}{}%中文已经通过english本地化字符串定义 + \iffieldequalstr{\userfieldabcde}{korean}{\ifbibstring{andotherskr}{\bibstring{andotherskr}}{\bibstring{andothers}}}{}%韩语未定义,所以与bib中一致 + \iffieldequalstr{\userfieldabcde}{japanese}{\ifbibstring{andothersjp}{\bibstring{andothersjp}}{\bibstring{andothers}}}{}%日与同韩语 + \iffieldequalstr{\userfieldabcde}{english}{\ifbibstring{andothersincite}{\bibstring{andothersincite}}{\bibstring{andothers}}}{}%英语已定义 + \iffieldequalstr{\userfieldabcde}{french}{\bibstring{andothers}}{}%法语未定义,若要定义需要针对french本地化字符串定义 + \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{andothers}}{}%俄语未定义,若要定义需要针对russian本地化字符串定义 + \or% + \bibstring{andothersincitecn}% + \or% + \bibstring{andothersincite}% + \fi} + + +\DeclareDelimFormat[bib,biblist]{strandothersdelim}{% + \edef\userfieldabcde{userd}% + \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% + \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% + \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% + \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% + \ifcase\value{gbbiblocalcase}% + \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andotherscn}}{}% + \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andotherskr}}{}% + \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andothersjp}}{}% + \iffieldequalstr{\userfieldabcde}{english}{\bibstring{andothers}}{}% + \iffieldequalstr{\userfieldabcde}{french}{\bibstring{andothers}}{}% + \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{andothers}}{}% + \or% + \bibstring{andotherscn}% + \or% + \bibstring{andothers}% + \fi} + + +% +% 修改最后一个作者前的字符串,比如 and +% v1.0o,20190103,hzz +% +% 原理方法:默认情况下判断作者或译者是否中文,若中文用字符andcn=“和”,否则用and=“and”。 +% 非默认情况,根据选项信息,选择选择强制中文或英文 +% 首先设置全局的,然后设置文献表中的,这一等价于将所有的cite命令环境都设置过了 +% 而不用对每一个引用命令单独设置,比如cite,parancite,textcite都设置 +\DeclareDelimFormat{finalnamedelim}{% + \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}% +% \addspace% + \edef\userfieldabcde{userd}% + \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% + \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% + \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% + \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% + \ifcase\value{gbcitelocalcase}% + \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andincitecn}}{}% + \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andkr}}{}% + \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andjp}}{}% + \iffieldequalstr{\userfieldabcde}{english}{\space\bibstring{andincite}\space}{}% + \iffieldequalstr{\userfieldabcde}{french}{\space\bibstring{and}\space}{}% + \iffieldequalstr{\userfieldabcde}{russian}{\space\bibstring{and}\space}{}% +%\space% + \or% + \bibstring{andincitecn}%\space% + \or% +\space\bibstring{andincite}\space% + \fi} + +\DeclareDelimFormat[bib,biblist]{finalnamedelim}{% + \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}% + \addspace% + \edef\userfieldabcde{userd}% + \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% + \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% + \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% + \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% + \ifcase\value{gbbiblocalcase}% + \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andcn}}{}% + \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andkr}}{}% + \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andjp}}{}% + \iffieldequalstr{\userfieldabcde}{english}{\bibstring{and}}{}% + \iffieldequalstr{\userfieldabcde}{french}{\bibstring{and}}{}% + \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{and}}{}% +\space% + \or% + \bibstring{andcn}\space% + \or% + \bibstring{and}\space% + \fi} + + + +% +% 重设title的输出 +% +% 20180425,v1.0k,为标题增加字体控制命令,Hu Zhenzhen +% 原理方法:将文献类型标识符输出出去,原输出来自biblatex.def文件 +% 利用toggle做标识符是否输出的判断 +\renewbibmacro*{title}{% + \ifboolexpr{% + test{\iffieldundef{title}}% + and + test{\iffieldundef{subtitle}}% + }% + {}% + {\printtext[title]{\bibtitlefont%增加字体控制命令 + \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 + }% +}} + + +% +% 作者信息的输出格式 +% +% 20180425,v1.0k,为作者增加字体控制命令,Hu Zhenzhen +% 20180603,v1.0l,增加使用nameformat域来选择姓名格式 +\DeclareNameFormat{namefmtselected}{% +\iffieldundef{namefmtid}{}% +{\defcounter{gbnamefmtcase}{\thefield{namefmtid}}}% +\ifcase\value{gbnamefmtcase}% + \ifgiveninits + {\usebibmacro{name:gbuppercase} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffix}} + {\usebibmacro{name:gbuppercase} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}}% +\or + \ifgiveninits + {\usebibmacro{name:gblowercase} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffix}} + {\usebibmacro{name:gblowercase} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}}% +\or + \ifgiveninits + {\usebibmacro{name:given-family} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffix}} + {\usebibmacro{name:given-family} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}}% +\or + \ifgiveninits + {\usebibmacro{name:family-given} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffix}} + {\usebibmacro{name:family-given} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}}% +\or +\usebibmacro{name:gbpinyin} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}% +\or + \ifnumequal{\value{listcount}}{1} + {\ifgiveninits + {\usebibmacro{name:family-given} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffix}} + {\usebibmacro{name:family-given} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}}% + \ifboolexpe{% + test {\ifdefvoid\namepartgiven} + and + test {\ifdefvoid\namepartprefix}} + {} + {\usebibmacro{name:revsdelim}}} + {\ifgiveninits + {\usebibmacro{name:given-family} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffix}} + {\usebibmacro{name:given-family} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}}}% +\fi + \usebibmacro{name:andothers}} + +\DeclareNameAlias{default}{namefmtselected}%姓名的默认格式采用可选的模式 +\DeclareNameAlias{sortname}{default}% Used in the bibliography %family-given/given-family +\DeclareNameAlias{citename}{default}% Default used by \citename + +\DeclareDelimFormat[bib,biblist]{andothersdelim}{\addcomma\addspace} +%\DeclareDelimFormat[textcite]{andothersdelim}{\addspace}% + +%GB/T 7714-2015 风格,全部大写 +\newbibmacro*{name:gbuppercase}[4]{\bibauthorfont% +\renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 +\renewcommand*{\revsdnamepunct}{}% + \ifuseprefix% + {\usebibmacro{name:delim}{#3#1}% + \usebibmacro{name:hook}{#3#1}% + \ifdefvoid{#3}{}{% + \ifcapital% + {\mkbibnameprefix{\MakeCapital{#3}}\isdot}% + {\mkbibnameprefix{#3}\isdot}% + \ifprefchar{}{\bibnamedelimc}}% + \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% + \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital + \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}% + {\usebibmacro{name:delim}{#1}% + \usebibmacro{name:hook}{#1}% + \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% + \ifboolexpe{% + test {\ifdefvoid{#2}} + and + test {\ifdefvoid{#3}}} + {}{\revsdnamepunct}% + \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital + \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}% + \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}% +} + +%GB/T 7714-2015 风格,大小写不变,根据bib文件内输入原样输出 +\newbibmacro*{name:gblowercase}[4]{\bibauthorfont% + \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 + \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def + \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}}% +} + +%中文常见风格,汉语拼音全拼模式 +\newbibmacro*{name:gbpinyin}[4]{\bibauthorfont% +\renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉,%来源biblatex2.STY +\renewcommand*{\revsdnamepunct}{}%%来源biblatex.def +\renewrobustcmd*{\bibnamedelima}{\mbox{-}}% + \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}}% +} + + +\@ifpackagelater{biblatex}{2016/03/27}%biblatex<3.2版的情况 + {}{ + %GB/T 7714-2015 风格,全部大写 + \renewbibmacro*{name:gbuppercase}[4]{\bibauthorfont% + \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 + \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def + \ifuseprefix + {\usebibmacro{name:delim}{#3#1}% + \usebibmacro{name:hook}{#3#1}% + \ifblank{#3}{}{% + \ifcapital + {\mkbibnameprefix{\MakeCapital{#3}}\isdot} + {\mkbibnameprefix{#3}\isdot}% + \ifpunctmark{'}{}{\bibnamedelimc}}% + %\mkbibnamelast{#1}\isdot + \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase + %注意上一句\MakeCapital后面如果再跟一个{}包含#1,则没有效果,可能是包在里面少了一层展开 + %因为机构名通常包括在{}内,所以要多展开一次才行,所以这里去掉#1外面的{} + %\mkbibnamelast{\MakeUppercase{#1}}\isdot + %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 + \ifblank{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamefirst{\MakeUppercase{#2}}\isdot}% + \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}} + {\usebibmacro{name:delim}{#1}% + \usebibmacro{name:hook}{#1}% + %\mkbibnamelast{#1}\isdot %3.9.1 Generic Commands and Hooks,对姓重新处理,如下句: %\mkbibnamelast{\MakeUppercase{#1}} + \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot %大写,参考4.6.4 Miscellaneous Commands,\MakeUppercase %\MakeSentenceCase + %\mkbibnamelast{\MakeUppercase{#1}}\isdot + %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 + \ifblank{#2#3}{}{\revsdnamepunct}% + \ifblank{#2}{}{\bibnamedelimd\mkbibnamefirst{\MakeUppercase{#2}}\isdot}% + \ifblank{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}% + \addcomma\addspace% + \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}% + }% + } + + %GB/T 7714-2015 风格,大小写不变,根据bib文件内输入原样输出 + \renewbibmacro*{name:gblowercase}[4]{\bibauthorfont% + \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 + \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def + \ifuseprefix + {\usebibmacro{name:delim}{#3#1}% + \usebibmacro{name:hook}{#3#1}% + \ifblank{#3}{}{% + \ifcapital + {\mkbibnameprefix{\MakeCapital{#3}}\isdot} + {\mkbibnameprefix{#3}\isdot}% + \ifpunctmark{'}{}{\bibnamedelimc}}% + \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{{#1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase + \ifblank{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamefirst{{#2}}\isdot}% + \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}} + {\usebibmacro{name:delim}{#1}% + \usebibmacro{name:hook}{#1}% + \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{{#1}}}\isdot %大写,参考4.6.4 Miscellaneous Commands,\MakeUppercase %\MakeSentenceCase + \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:gbpinyin}[4]{\bibauthorfont% + \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 + \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def + \renewrobustcmd*{\bibnamedelima}{\mbox{-}}% + \ifuseprefix + {\usebibmacro{name:delim}{#3#1}% + \usebibmacro{name:hook}{#3#1}% + \ifblank{#3}{}{% + \ifcapital + {\mkbibnameprefix{\MakeCapital{#3}}\isdot} + {\mkbibnameprefix{#3}\isdot}% + \ifpunctmark{'}{}{\bibnamedelimc}}% + \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase + \ifblank{#2}{}{\revsdnamepunct\bibnamedelimd\MakeSentenceCase{\mkbibnamefirst{#2}}\isdot}% + \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}} + {\usebibmacro{name:delim}{#1}% + \usebibmacro{name:hook}{#1}% + \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot %大写,参考4.6.4 Miscellaneous Commands,\MakeUppercase %\MakeSentenceCase + \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}% + }% + } + + %%biblatex<3.2版的情况,姓名的处理格式带参数 + \DeclareNameFormat{namefmtselected}{% + \iffieldundef{namefmtid}{}% + {\defcounter{gbnamefmtcase}{\thefield{namefmtid}}}% + \ifcase\value{gbnamefmtcase}% + \iffirstinits + {\usebibmacro{name:gbuppercase}{#1}{#4}{#5}{#7}} + {\usebibmacro{name:gbuppercase}{#1}{#3}{#5}{#7}}% + \or + \iffirstinits + {\usebibmacro{name:gblowercase}{#1}{#4}{#5}{#7}} + {\usebibmacro{name:gblowercase}{#1}{#3}{#5}{#7}}% + \or + \iffirstinits + {\usebibmacro{name:last-first}{#1}{#4}{#5}{#7}} + {\usebibmacro{name:last-first}{#1}{#3}{#5}{#7}}% + \ifblank{#3#5} + {} + {\usebibmacro{name:revsdelim}}% + \or + \iffirstinits + {\usebibmacro{name:first-last}{#1}{#4}{#5}{#7}} + {\usebibmacro{name:first-last}{#1}{#3}{#5}{#7}}% + \or + \usebibmacro{name:gbpinyin}{#1}{#3}{#5}{#7}% + \or + \ifnumequal{\value{listcount}}{1} + {\iffirstinits + {\usebibmacro{name:last-first}{#1}{#4}{#5}{#7}} + {\usebibmacro{name:last-first}{#1}{#3}{#5}{#7}}% + \ifblank{#3#5} + {} + {\usebibmacro{name:revsdelim}}} + {\iffirstinits + {\usebibmacro{name:first-last}{#1}{#4}{#5}{#7}} + {\usebibmacro{name:first-last}{#1}{#3}{#5}{#7}}}% + \fi + \usebibmacro{name:andothers}} +} + +% +% url和url日期格式 +% +\renewbibmacro*{url+urldate}{% + %\usebibmacro{url}%%更换url的位置,放到下面 + \iffieldundef{urlyear}% + {}{%\setunit*{\addspace}% + \usebibmacro{urldate}}% + \setunit{\addperiod\addspace}% + \usebibmacro{url}} +\renewbibmacro*{url}{\printfield{url}} + +% +% 日期信息的输出格式,针对biblatex<3.7版本 +% +\defversion{3.4}{date}{ + \renewbibmacro*{urldate}{% + \addthinspace\printtext{[}\printfield{urlyear}% + \iffieldundef{urlmonth}{}{\bibrangedash\printfield{urlmonth}}% + \iffieldundef{urlday}{}{\bibrangedash\printfield{urlday}}\printtext{]}} + + \newbibmacro*{newsdate}{%%新增加一个公告日期,公开日期或新闻日期 + \iffieldundef{year}{}{\printfield{year}% + \iffieldundef{month}{}{\bibrangedash\printtext{\thefield{month}}% + \iffieldundef{day}{}{\bibrangedash\printfield{day}}}}% + } + + \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 + \ifboolexpr{% + test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}% + }% + {}%更新或修改日期通常有day信息 + {\iffieldequalstr{year}{}{%替换\iffieldundef{year},因为year总是存在,但为空 + \iffieldundef{endyear}{% + \iffieldundef{eventyear}{}{\printtext{\mkbibparens{\printtext{\printfield{eventyear}}% + \iffieldundef{eventmonth}{}{\bibrangedash\thefield{eventmonth}}% + \iffieldundef{eventday}{}{\bibrangedash\printfield{eventday}}}}% + }% + }{% + \iffieldundef{endyear}{}{\printtext{\mkbibparens{\printtext{\printfield{endyear}}% + \iffieldundef{endmonth}{}{\bibrangedash\thefield{endmonth}}% + \iffieldundef{endday}{}{\bibrangedash\printfield{endday}}}}% + }% + }% + }% + {% + \iffieldundef{year}{}{\printtext{\mkbibparens{\printtext{\printfield{year}}% + \iffieldundef{month}{}{\bibrangedash\thefield{month}}% + \iffieldundef{day}{}{\bibrangedash\printfield{day}}}}% + }% + }% + }}% +} + +% +% 日期信息的输出格式,针对3.9>=biblatex>=3.7版本 +% +\defversion{3.7}{date}{ + \DeclareFieldFormat{urldate}{##1} + \renewbibmacro*{urldate}{% + \addthinspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 + + % + % 专利的公告日期、或报纸的日期的输出宏 + % 20160701,v1.0,新增加 + % 20180405,v1.0k,为biblatexv3.7-3.9版本,出现多出点bug做处理,Hu Zhenzhen + % + % 原理方法:加上printtext避免破坏异步标点机制 + % + \newbibmacro*{newsdate}{% + \printtext{\blx@edtfdate{}{}}% + } + + \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 + \ifboolexpr{% + test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}% + }% + {}%更新或修改日期通常有day信息 + {\iffieldundef{year}{% + \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{(}\printeventdate\printtext{)}}}% + {\printtext{(}\printenddate\printtext{)}}% + }{\iffieldequalstr{year}{}{%因为year存在,但为空 + }{\printtext{(}\blx@edtfdate{}{}\printtext{)}}% + }% + }}% +} + +% +% 日期信息的输出格式,针对biblatex>=3.10版本 +% +\defversion{3.10}{date}{ + \DeclareFieldFormat{urldate}{##1} + \renewbibmacro*{urldate}{% + \addthinspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 + + % + % 专利的公告日期、或报纸的日期的输出宏 + % 20160701,v1.0,新增加 + % 20180405,为biblatexv3.10版本,出现多出点bug做处理,Hu Zhenzhen + % + % 原理方法:加上printtext避免破坏异步标点机制 + % 本可以用\printdate,但由于date选项设置为year,所以仅会给出年份 + % 所以无法再用选项设置的方法,印象需要用底层的命令 + % 这里可以用\blx@isodate,但用\blx@gbdate试图避免版本判断 + \newbibmacro*{newsdate}{%% + \printtext{\blx@gbdate{}{}}%%\blx@isodate{}{}% + } + + \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 + \ifboolexpr{% + test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}% + }% + {}%更新或修改日期通常有day信息 + {\iffieldundef{year}{% + \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{(}\printeventdate\printtext{)}}}% + {\printtext{(}\printenddate\printtext{)}}% + }{\iffieldequalstr{year}{}{%因为year存在,但为空 + }{\printtext{(}\blx@gbdate{}{}\printtext{)}}% + }% + }}% +} + +% +% 关联文献的输出格式,针对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}% + \def\bbx@tempa{}% + \setcounter{bbx:relatedtotal}{0}% + \def\do##1{% + \entrydata{##1}{% + \ifrelatedloop + {} + {\stepcounter{bbx:relatedtotal}% + \gappto{\bbx@tempa}{##1,}}}}% + \docsvfield{related}% + \restorefield{related}{\bbx@tempa}% + \ifnumgreater{\value{bbx:relatedtotal}}{0} + {\listcsxadd{bbx:relatedloop}{\strfield{entrykey}}% + \iffieldundef{clonesourcekey} + {} + {\listcsxadd{bbx:relatedloop}{\strfield{clonesourcekey}}}% + \setcounter{bbx:relatedcount}{0}% + \def\do{% + \stepcounter{bbx:relatedcount}% + \ifnumgreater{\value{bbx:relatedcount}}{0}%这里从1改为0 + {\ifcsundef{relateddelim\strfield{relatedtype}} + {\printtext{\relateddelim}} + {\printtext{\csuse{relateddelim\strfield{relatedtype}}}}} + {}}% + \ifbibmacroundef{related:\strfield{relatedtype}} + {\appto{\do}{\usebibmacro{related:default}}} + {\appto{\do}{\usebibmacro*{related:\strfield{relatedtype}}}}% + \iffieldformatundef{related:\strfield{relatedtype}} + {\def\bbx@tempa{related}} + {\def\bbx@tempa{related:\strfield{relatedtype}}}% + \iffieldformatundef{relatedstring:\strfield{relatedtype}} + {\def\bbx@tempb{relatedstring:default}} + {\def\bbx@tempb{relatedstring:\strfield{relatedtype}}}% + \printtext[\bbx@tempa]{% + \usebibmacro{begrelatedloop}% + \iffieldundef{relatedstring} + {\ifboolexpr{ + test {\ifnumgreater{\value{bbx:relatedtotal}}{1}} + and + test {\ifbibxstring{\thefield{relatedtype}s}} + } + {\printtext[\bbx@tempb]{% + \bibstring[\mkrelatedstring]{\thefield{relatedtype}s}}} + {\iffieldbibstring{relatedtype} + {\printtext[\bbx@tempb]{% + \bibstring[\mkrelatedstring]{\thefield{relatedtype}}}} + {}}} + {\iffieldbibstring{relatedstring} + {\printtext[\bbx@tempb]{% + \bibstring[\mkrelatedstring]{\thefield{relatedstring}}}} + {\printfield[\bbx@tempb]{relatedstring}}}% + \docsvfield{related}% + \usebibmacro{endrelatedloop}}}% + {}% + \usebibmacro{endrelated}}} +}{} + +% +% 关联文献块前的分隔符,针对biblatex3.11 +% +% 原理方法:因为增加了begrelateddelim钩子,所以不需要重定义related输出宏 +\defversion{3.11}{related}{ +\renewcommand{\begrelateddelim}{\adddot\newline\nobreak} +} + +\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}} +% {}% + %\newunit\newblock + \iftoggle{bbx:eprint} + {\iffieldundef{eprint}{}{\newunit\usebibmacro{eprint}}}%必须要做域判断否则容易产生多余的标点 + {}% + %\newunit\newblock + \iftoggle{bbx:url} + {\usebibmacro{url+urldate}} + {} + \newunit\newblock + \iftoggle{bbx:doi} + {\printfield{doi}} + {}} + +% +% 调整页码的格式,即chapter+pages格式 +% +\renewbibmacro*{chapter+pages}{% +\iftoggle{bbx:gbstrict}{}{% + \printfield{chapter}}% + \iffieldundef{pages}{}{%这里增加一个判断,当没有页码时就不输出 + \setunit{\bibpagespunct}% + \printfield{pages}}% + %\newunit %这里的标点去掉 + } + +% +% 当location等出版项超过maxitem缩减后不再输出etal +% +\DeclareListFormat{location}{% + \usebibmacro{list:delim}{#1}% + #1\isdot} +\DeclareListAlias{institution}{location} +\DeclareListAlias{publisher}{location} + +% 新增一个样式用于输出连续出版物的地址,单位,时间, +% 用于periodical连续出版物的出版社和地址的处理 +% +% v1.0k,20180425,为出版信息增加字体控制命令,hzz +% %类似\newbibmacro*{publisher+location+date} +\newbibmacro*{location+institution+date}{\bibpubfont% +\iftoggle{bbx:gbpub}% +{\testCJKfirst{userd}% +\ifboolexpr{% +test {\iflistundef{location}} and test {\iflistundef{institution}}% +}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress}\space :\space\str@nopublisher]}% +{\printtext{[S.l.\space :\space s.n.\adddot]}}% +}{% +\iflistundef{location}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress]}}{\printtext{[S.l.\adddot]}}}% + {\printlist{location}}% +\addcolon\addspace% +\iflistundef{institution}{% +\iftoggle{ifCJKforgbt}{\printtext{[\str@nopublisher]}}{\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}% +} +% +% 通用的出版社和地址的处理 +% +% 原理方法:当没有出版社地址时,直接判断title的信息是否是中文,若为中文,则写出版地不详,否则用英文的字符表示。 +% 事实上title对于每个文献来说是必须的,所以用它判断是最快的,而且一般标题和出版社的语言是一样的。 +% 注意标准standard类型,因为当没有出版项时直接省略,所以做特殊处理 +\renewbibmacro*{publisher+location+date}{\bibpubfont% +\iftoggle{bbx:gbpub}% +{\testCJKfirst{userd}% + \ifboolexpr{ test {\iflistundef{location}} and test {\iflistundef{publisher}} }% + {\iffieldequalstr{note}{standard}{}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress}\space :\space\str@nopublisher]}{\printtext{[S.l.\space :\space s.n.\adddot]}}}}% + {\iflistundef{location}{%\adddot + \iffieldequalstr{note}{standard}{}%%从gbt7714-2015标准第19页看到,标准存在出版项时输出,没有时完全省略。 + {\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress]}\addcolon\addspace}{\printtext{[S.l.\adddot]}\addcolon\addspace}}}% \bibstring{noaddress} + {\printlist{location}\addcolon\addspace}%%\addcolon\addspace% + \iflistundef{publisher}{% + \iffieldequalstr{note}{standard}{}% + {\iftoggle{ifCJKforgbt}{\printtext{[\str@nopublisher]}\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 + }% +} + +% +% 修改了一个institution+location+date用于manual、report、thesis等类型 +% +% 20180425,v1.0k,增加了字体控制命令,hzz +% 20190105,v1.0o,加了一个编组避免\usebibmacro{date}把month和day信息去掉 +\renewbibmacro*{institution+location+date}{\bibpubfont%当没有institution时不处理。 +{\printlist{location}%%加了一个编组避免\usebibmacro{date}把month和day信息去掉 + \iflistundef{institution} + {\setunit*{\addcomma\space}} + {\setunit*{\addcolon\space}}% + \printlist{institution}% + \setunit*{\addcomma\space}% + \usebibmacro{date}% + %\newunit + }} + +% +% 对volume卷信息格式做出修改 +% v1.0o,20190105,hzz +% +\DeclareFieldFormat{volume}{% +\testCJKfirst{userd}% +\iftoggle{ifCJKforgbt}% +{\bibstring{serialcn}#1\bibstring{volumecn}}% +{\bibstring{volume}~#1}% +}% volume of a book +\DeclareFieldFormat[article,periodical]{volume}{#1}% volume of a journal + +% +% 对number册信息格式做出修改 +% v1.0o,20190105,hzz +% +\DeclareFieldFormat{number}{#1}% +\DeclareFieldFormat[book,collection,inbook,% +incollection,proceedings,inproceedings]{number}{% +\testCJKfirst{userd}% +\iftoggle{ifCJKforgbt}% +{\bibstring{serialcn}#1\bibstring{numbercn}}% +{#1}% +}% + +% +% 对edition版本信息格式做出修改 +% +\DeclareFieldFormat{edition}{\bibtitlefont%源来自biblatex.DEF +\testCJKfirst{userd}% +\iftoggle{ifCJKforgbt}% +{\ifinteger{#1}% +{\printtext{#1\str@edition}}% +{#1\isdot}}% +{\ifinteger{#1}% +{\mkbibordedition{#1}~\bibstring{edition}}% +{#1\isdot}}} + +% +% 对version的版本信息做出修改 +% +\DeclareFieldFormat{version}{\bibtitlefont%源来自biblatex.DEF +\testCJKfirst{userd}% + \ifinteger{#1}% + {\iftoggle{ifCJKforgbt}{\printtext{#1\str@edition}}% + {\mkbibordedition{#1}~\bibstring{version}}}% + {#1\isdot}} + +% +% 作者域的输出控制宏 +% +% 当两篇文献作者相同且连续时,标准样式是用-代替后面的文献的作者,这里取消这一设置 +\renewbibmacro*{author}{%author for biblatex version <=3.7 + \ifboolexpr{ + test \ifuseauthor + and + not test {\ifnameundef{author}} + } + {\usebibmacro{bbx:dashcheck} + {%\bibnamedash + \printnames{author}% + }% + {\usebibmacro{bbx:savehash}% + \printnames{author}% + \iffieldundef{authortype} + {\setunit{\addspace}} + {\setunit{\addcomma\space}}}% + \iffieldundef{authortype} + {} + {\usebibmacro{authorstrg}% + \setunit{\addspace}}}% + {\global\undef\bbx@lasthash + \usebibmacro{labeltitle}% + \setunit*{\addspace}}% + \setunit{\addcomma\space}%增加一个逗号 + \usebibmacro{date+extrayear} + } + +% +% 设置标注和文献表中作者和年份之间的分隔符 +% +% 原理方法:注意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}}}}}% + \newbibmacro{date+extradate}{\usebibmacro{date+extrayear}} +} + +\defversion{3.4}{dateextra}{ + \DeclareDelimFormat{nameyeardelim}{\addcomma\space} + \DeclareDelimFormat[bib,biblist]{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}}}}}% + \newbibmacro{date+extradate}{\usebibmacro{date+extrayear}} +} +\defversion{3.7}{dateextra}{ + \DeclareDelimFormat{nameyeardelim}{\addcomma\space} + \DeclareDelimFormat[bib,biblist]{nameyeardelim}{\addcomma\space} + \renewbibmacro*{date+extrayear}{%以前的\printdateextralabel宏变为了\printlabeldateextra + \iffieldundef{labelyear} + {} + {\printtext{%[parens] + \iffieldsequal{year}{labelyear} + {\printlabeldateextra}% + {\printfield{labelyear}% + \printfield{extrayear}}}}}% + +\newbibmacro{date+extradate}{\usebibmacro{date+extrayear}} +} +\defversion{3.8}{dateextra}{ + \DeclareDelimFormat{nameyeardelim}{\addcomma\space} + \DeclareDelimFormat[bib,biblist]{nameyeardelim}{\addcomma\space} +%注意这里当没有作者只有标题时在年份之前的标点是否需要标准并未涉及,所以未做处理。 +\renewbibmacro*{author}{%以前的date+extrayear变为date+extradate,所以对3.8以上版本重定义一下author + \ifboolexpr{ + test \ifuseauthor + and + not test {\ifnameundef{author}} + } + {\usebibmacro{bbx:dashcheck} + {%\bibnamedash %去掉相同作者用横线代替的处理 + \printnames{author}\setunit{\printdelim{nameyeardelim}}%把标点也带上 + } + {\usebibmacro{bbx:savehash}% + \printnames{author}% + \iffieldundef{authortype} + {\setunit{\printdelim{nameyeardelim}}} + {\setunit{\printdelim{authortypedelim}}}}% + \iffieldundef{authortype} + {} + {\usebibmacro{authorstrg}% + \setunit{\printdelim{nameyeardelim}}}}% + {\global\undef\bbx@lasthash + \usebibmacro{labeltitle}% + \setunit*{\printdelim{nonameyeardelim}}}% + \usebibmacro{date+extradate}} + \renewbibmacro*{date+extradate}{% + \iffieldundef{labelyear} + {} + {\printtext{%[parens]%这里去掉括号 + \iflabeldateisdate + {\printdateextra} + {\printlabeldateextra}}}}% + +} + + +% +%为mergedate增加选项none,即实现年份不提前到作者后面的标签中 +%也不打印用于区分同作者同年份文献的标识符如(a,b,c) +%目的是实现一些特殊的文献表样式比如ucas的作者年制 +%v1.0q,20190212,hzz +\def\bbx@opt@mergedate@none{% + \renewbibmacro*{date+extradate}{% + \iffieldundef{labelyear} + {} + {}}%[parens]\printtext{\printlabeldateextra} +\renewbibmacro*{bbx:ifmergeddate}{\@secondoftwo}%这一句用于3.12版本 +\renewbibmacro*{date}{\printdate}%这一句用于biblatex3.11以下版本 +\renewbibmacro*{issue+date}{%去掉括号 +\setunit{\addcomma\addspace}% + \printtext{%去掉了[parens] + \iffieldundef{issue} + {%\usebibmacro{date} + \iffieldundef{note}{\usebibmacro{date}}%判断一下,是否是报纸 + {\iffieldequalstr{note}{news}{\usebibmacro{newsdate}}%判断是否为报纸 + {\usebibmacro{date}}% + }}% + {\iftoggle{bbx:gbstrict}{}{\printfield{issue}% + \setunit*{\addspace}}% + %\usebibmacro{date} + \iffieldundef{note}{\usebibmacro{date}}%判断一下,是否是报纸 + {\iffieldequalstr{note}{news}{\usebibmacro{newsdate}}%判断是否为报纸 + {\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}} + and + test {\iffieldundef{booksubtitle}} + } + {} + {\printtext[booktitle]{\bibtitlefont% + \printfield[titlecase]{booktitle}% + \setunit{\subtitlepunct}% + \printfield[titlecase]{booksubtitle}}% + \newunit%标点换成下一句 + \setunit{\subtitlepunct}}% + \printfield{booktitleaddon}} + +% +% 调整期刊名的格式 +% +% 原理方法:因为作者年制年份提到前面,因此涉及到期刊名与后面的卷期的关系。 +% v1.0k,20180425,增加了字体控制命令,hzz +\renewbibmacro*{journal+issuetitle}{\bibpubfont%源来自standard.bbx + \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}% + \iffieldundef{volume}{}{\setunit{\addcomma\space}}% + %换成逗号和空格 + \usebibmacro{issue}% + \usebibmacro{volume+number+eid}%把卷期放到年份后面 + %\newunit + } + +% +% 增加一个number带括号的格式,避免使用mkbibparens而引入一个不必要的空格 +% +\DeclareFieldFormat{addnumflag}{% +\nobreak\printtext{(}\nobreak #1\nobreak\printtext{)}} + +% +% 调整journal输出 +% +% 原理方法:首先判断子标题,然后再设置标点。 +% 避免直接设置标点后,当volume不存在时需要使用\nopuct去标点进而引入不必要的空格 +\renewbibmacro*{journal}{% + \iffieldundef{journaltitle}% + {}% + {\printtext[journaltitle]{% + \printfield[titlecase]{journaltitle}% + \iffieldundef{journalsubtitle}{}{\setunit{\subtitlepunct}% + \printfield[titlecase]{journalsubtitle}}}}} + + + +% +% 调整期刊卷和期的格式 +% +\renewbibmacro*{volume+number+eid}{%源来自standard.bbx +\iftoggle{bbx:gbfieldstd}{% + \printfield{volume}% + \setunit*{\adddot}% + \printfield{number}% + \setunit{\addcomma\space}% + \printfield{eid}}{% + \printfield{volume}% + %\setunit*{\adddot}%去掉点号 + %\printfield{number}% + \iffieldundef{number}{}{\printfield[addnumflag]{number}}%区别于顺序编码制 + \iffieldundef{eid}{}{% + \setunit{\addcomma\space}% + \printfield{eid}}}} + +% +% 调整期刊年份的格式 +% +% 原理方法:原在authoryear.BBX中\bbx@opt@mergedate@compact中定义 +% 当issue存在时,才设置newunit。避免直接设置标点后,当volume不存在是需要使用\nopuct去标点进而引入不必要的空格 + \renewbibmacro*{issue+date}{% + \iffieldundef{issue}% + {}% + {\iftoggle{bbx:gbstrict}{}{\printtext[parens]{\printfield{issue}}\newunit}}} + + + +% +% 调整页码前的标点和去掉期刊文章等页码后面的标点 +% +\renewbibmacro*{note+pages}{%源来自standard.bbx + %\printfield{note}%不要note,note用来判断是否是报纸newspaper + \iffieldundef{pages}{}{ + \setunit{\bibpagespunct}% + \printfield{pages}}% + %\newunit + } + +% +% 编者的符号修改一下 +% v1.0 2016-07-01 +% v1.0q 2019-03-01 hzz 修改editortype前的标点 +% +\renewbibmacro*{editor}{% + \ifboolexpr{ + test \ifuseeditor + and + not test {\ifnameundef{editor}} + } + {\usebibmacro{bbx:dashcheck} + {%\bibnamedash + \printnames{editor}% + } + {\printnames{editor}% + %\setunit{\printdelim{editortypedelim}}% + %\usebibmacro{bbx:savehash} + }% + \usebibmacro{editorstrg}% + %\clearname{editor}% + \setunit{\printdelim{nameyeardelim}}}% + {\global\undef\bbx@lasthash + \usebibmacro{labeltitle}% + \setunit*{\printdelim{nonameyeardelim}}}% + \ifboolexpr{% +test {\ifentrytype{inbook}} +or +test {\ifentrytype{incollection}} +or +test {\ifentrytype{inproceedings}} +or +test {\ifentrytype{conference}} +}% +{}% +{\usebibmacro{date+extradate}}} + +% +% 编者类型做一修改 +% v1.0 2016-07-01 +% v1.0q 2019-03-01 hzz 修改editortype不同语言的不同本地化字符串 +% +\renewbibmacro*{editorstrg}{%源来自biblatex.DEF + \printtext[editortype]{% + \iffieldundef{editortype} + {% +% \ifboolexpr{ %这一段去掉,未定义编者类型情况下不处理 +% test {\ifnumgreater{\value{editor}}{1}} +% or +% test {\ifandothers{editor}} +% } +% {\bibstring{editors}} +% {\bibstring{editor}} + } + {\ifbibxstring{\thefield{editortype}} %定义编者类型情况下处理,以后根据需要修改 + {\ifboolexpr{ + test {\ifnumgreater{\value{editor}}{1}} + or + test {\ifandothers{editor}} + } + {\printdelim{streditortypes}} + {\printdelim{streditortype}}} + {\thefield{editortype}}}% + }} + +% +% 编者类型的本地化字符串输出 +% v1.0q 2019-03-01 hzz +% 能对不同条目类型作格式设置的域格式,能对不同环境做格式设置的分隔符 +% 能对不同文境作设置的包括排序,标签等 +% 这里因为考虑可能标注和文献表中存在不同,所以用分隔符来输出本地化字符串 +% +\DeclareDelimFormat{streditortypes}{% + \edef\userfieldabcde{userd}% + \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% + \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% + \ifcase\value{gbbiblocalcase}% + \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{\thefield{editortype}scn}}{}% + \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{\thefield{editortype}skr}}{}% + \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{\thefield{editortype}sjp}}{}% + \iffieldequalstr{\userfieldabcde}{english}{\addcomma\addthinspace\bibstring{\thefield{editortype}s}}{}% + \iffieldequalstr{\userfieldabcde}{french}{\addcomma\addthinspace\bibstring{\thefield{editortype}s}}{}% + \iffieldequalstr{\userfieldabcde}{russian}{\addcomma\addthinspace\bibstring{\thefield{editortype}s}}{}% + \or% + \bibstring{\thefield{editortype}scn}% + \or% + \addcomma\addthinspace\bibstring{\thefield{editortype}s}% + \fi} +% +\DeclareDelimFormat{streditortype}{% + \edef\userfieldabcde{userd}% + \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% + \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% + \ifcase\value{gbbiblocalcase}% + \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{\thefield{editortype}cn}}{}% + \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{\thefield{editortype}kr}}{}% + \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{\thefield{editortype}jp}}{}% + \iffieldequalstr{\userfieldabcde}{english}{\addcomma\addthinspace\bibstring{\thefield{editortype}}}{}% + \iffieldequalstr{\userfieldabcde}{french}{\addcomma\addthinspace\bibstring{\thefield{editortype}}}{}% + \iffieldequalstr{\userfieldabcde}{russian}{\addcomma\addthinspace\bibstring{\thefield{editortype}}}{}% + \or% + \bibstring{\thefield{editortype}cn}% + \or% + \addcomma\addthinspace\bibstring{\thefield{editortype}}% + \fi} + + +% +% bookauthor域的输出, +% v1.0q 2019-03-01 hzz +% 不再对editor和bookauthor做sourcemap,而是下面的宏内逻辑代替, +% 使得除使用bookauthor外也可以使用editor,便于在使用editor时使用editortype +\renewbibmacro*{bybookauthor}{% + \ifnameundef{bookauthor}% + {\ifnameundef{editor}% + {}% + {\ifnamesequal{author}{editor}% + {}{\usebibmacro{editor}}}% + }% + {\ifnamesequal{author}{bookauthor}% + {}{\printnames{bookauthor}}% + }% +} + +% +% 修改期刊的标题 +% +\renewbibmacro*{periodical}{%源来自biblatex.DEF + \iffieldundef{title} + {} + {\printtext[title]{\bibtitlefont% + \printfield[titlecase]{title}% + %\setunit{\subtitlepunct}% + \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题 + {}{\setunit{\subtitlepunct} + \printfield[titlecase]{subtitle}}% + %}%把编组结束移到后面去 + \iftoggle{bbx:gbtype}{% + \iffieldundef{usera}{}{%在标题后直接给出文献标识字母 + \printfield[gbtypeflag]{usera}}}{} + }} + } + +% +% 期刊的标题做修改 +% +\renewbibmacro*{title+issuetitle}{%源来自standard.BBX + \usebibmacro{periodical}% + %\setunit*{\addspace}% + \setunit*{\adddot\addspace}%标点修改为句点 + \iffieldundef{series} + {} + {\newunit + \printfield{series}% + \setunit{\addspace}}% + \usebibmacro{periodical+issue}%将issue调整到上面来,并修改 +\iffieldundef{number}{}{%%进一步处理有范围的数字 + \multinumberparser{\thefield{number}}}% + \iffieldundef{volume}% + {\printfield{year}% + \printtext{\mkbibparens{\multinumberfirst}}% + \bibrangedash% + \iffieldundef{endyear}{}{\printfield{endyear}\printtext{\mkbibparens{\multinumbersecond}}}% + }% + {\multivolparser{\thefield{volume}}% + \printfield{year}% + \setunit{\addcomma\space}%将冒号修改为逗号 + \printtext{\multivolfirst}% + \printtext{\mkbibparens{\multinumberfirst}}% + \bibrangedash% + \iffieldundef{endyear}{}{% + \printfield{endyear}% + \setunit{\addcomma\space}%将冒号修改为逗号 + \printtext{\multivolsecond}% + \printtext{\mkbibparens{\multinumbersecond}}}% + }% + \setunit{\addcomma\space}% + \printfield{eid}% + \setunit{\addspace}% + %\usebibmacro{issue+date}% + %\setunit{\addcolon\space}% + \usebibmacro{issue}% + \newunit} + +% +% 新增一个样式用于调整期刊年份的格式,只打印年份 +% +\newbibmacro*{periodical+issue}{% + \printtext{%去掉了[parens] + \iffieldundef{issue} + {%\usebibmacro{date}%修改为下一句 + }% + {\printfield{issue}% + \setunit*{\addspace}% + %\usebibmacro{date}%修改为下一句 + }% + }% + %\newunit +} + +% +% 重设专利title的输出,将文献类型标识符输出出去 +% +\newbibmacro*{patenttitle}{%原输出来自biblatex.def文件 + \ifboolexpr{% + test{\iffieldundef{title}}% + and% + test{\iffieldundef{subtitle}}% + }% + {}% + {\printtext[title]{\bibtitlefont% + \printfield[titlecase]{title}% + \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题 + {}{\setunit{\subtitlepunct}% + \printfield[titlecase]{subtitle}}% + \iffieldundef{titleaddon}{}%判断一下titleaddon,否则直接加可能多一个空格 + {\setunit{\subtitlepunct}\printfield{titleaddon}}% + \setunit{\subtitlepunct}\printfield{number}%写专利号 + \iftoggle{bbx:gbtype}{\printfield[gbtypeflag]{usera}}{}% + %\iffieldundef{booktitle}{\newunit}{}%当title是析出时,不要标点 + %\newunit + }% +}% +} + + + +% +% 修改in:用于inbook、incollection、inproceedings等类型 +% 2018.04.20,v1.0k,renewed marco,by hzz +% 20190212,v1.0q,增加中英文区分,by hzz +% +% 原理方法:使用bibmacro{in:}改变了以前在driver中直接输出//的方式,同时也简化了标点控制。 +\renewbibmacro*{in:}{% + \iftoggle{bbx:gbpunctin}{\printtext{\allowbreak\texttt{//}\allowbreak}}%\addthinspace + {\setunit{\adddot\addspace}% + \iffieldequalstr{userd}{chinese}% + {\printtext{\bibstring{incn}}}% + {\printtext{\bibstring{in}}}% + }}%\newunit\newblock\intitlepunct + +% +% 修改type域的输出格式 +% 2019.02.12,v1.0q,byhzz +% 使其可以区分中英文输出不同的格式,比如博士论文英文输出PHD thesis,中文则是博士学位论文 +\DeclareFieldFormat{type}% +{\iffieldequalstr{userd}{chinese}% + {\ifbibxstring{#1cn}{\bibxstring{#1cn}}{#1}}% + {\ifbibstring{#1}{\bibstring{#1}}{#1}}% +} + + +% +% 修改series域的输出格式 +% 2019.05.01,v1.0r,byhzz +\renewbibmacro*{series+number}{% + \printfield{series}% + %\setunit*{\addspace}% + %\printfield{number}% + %\newunit + } + +%===================================================================== +%设置驱动格式 +%===================================================================== +% +% book条目类的驱动 +% + \DeclareBibliographyDriver{book}{%源来自standard.bbx文件 + \usebibmacro{bibindex}% + \usebibmacro{begentry}% +\usebibmacro{author/editor+others/translator+others}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 +\usebibmacro{maintitle+title}% +\iftoggle{bbx:gbstrict}{}{% +\newunit +\printlist{language}% +\newunit\newblock% +\usebibmacro{byauthor}% +\newunit\newblock}% +\usebibmacro{byeditor+others}% +\newunit +\printfield{edition}% +\newunit\newblock%% +\iftoggle{bbx:gbstrict}{}{% +\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}% + \iffieldundef{url}{}{%当没有网址时也不输出 + \usebibmacro{modifydate}}%带括号的修改或更新日期, +\usebibmacro{doi+eprint+url}%从下面移动到上面来,因为gbt2015的url需直接放在页码后面。 + \newunit\newblock% + \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}\usebibmacro{annotation}} + + + + +% +% 期刊文章,连续出版物中的析出文献的格式 +% + \DeclareBibliographyDriver{article}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author/translator+others}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 + \usebibmacro{title}% + \iftoggle{bbx:gbstrict}{}{% + \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}% + \iffieldequalstr{note}{news}{}{%当是新闻时不输出修改或更新日期 + \iffieldundef{url}{}{%当没有网址时也不输出 + \iftoggle{bbx:url}{%当url选项为false时,也不输出 + \usebibmacro{modifydate}}{}}}%带括号的修改或更新日期, + \usebibmacro{doi+eprint+url}%从后面移上来,调整url和页码之间的位置 + \newunit\newblock + \iftoggle{bbx:isbn} + {\printfield{issn}} + {}% + \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}\usebibmacro{annotation}} + + +% +% 连续出版物的驱动 +% + \DeclareBibliographyDriver{periodical}{%源来自standard.BBX + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{editor}% + %\setunit{\labelnamepunct}\newblock + \newunit\newblock %删除上面一行,添加这一行 + \usebibmacro{title+issuetitle}% + \newunit\newblock% + \usebibmacro{location+institution+date}%添加这一行用于输出地址,单位和时间 + \newunit\newblock%添加这一行 + \iftoggle{bbx:gbstrict}{}{% + \printlist{language}% + \newunit\newblock + \usebibmacro{byeditor}% + \newunit\newblock + \printfield{note}% + \newunit\newblock} + \iftoggle{bbx:isbn} + {\printfield{issn}} + {}% + \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}\usebibmacro{annotation}} + +% +% 专利文献驱动 +% + \DeclareBibliographyDriver{patent}{%源来自standard.BBX + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 + %\usebibmacro{title}% + \usebibmacro{patenttitle}%给出专利专用的标题输出 + \iftoggle{bbx:gbstrict}{}{% + \newunit% + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}}% + \newunit\newblock + \printfield{type}% + \setunit*{\addspace}% + %\printfield{number}%已放到patenttitle中处理 + \iflistundef{location} + {} + {\setunit*{\addspace}% + \printtext{%[parens] + \printlist[][-\value{listtotal}]{location}}}% + \newunit\newblock + \usebibmacro{byholder}% + \newunit\newblock + \printfield{note}% + \newunit\newblock + \usebibmacro{newsdate}% + %\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}\usebibmacro{annotation}} + + +% +% 在线文献驱动 +% +\DeclareBibliographyDriver{online}{%源来自standard.BBX + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author/editor+others/translator+others}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 + \usebibmacro{title}% + \iftoggle{bbx:gbstrict}{}{% + \newunit% + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{byeditor+others}% + \newunit\newblock + \printfield{note}}% + \newunit + \printfield{version}% + \newunit\newblock +% \printlist{organization}% + \printlist{institution}% + \newunit\newblock +\ifboolexpr{% +test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}% +}{\usebibmacro{date}}% +{\usebibmacro{modifydate}}%修改或更新日期,为带括号的时间 + \usebibmacro{url+urldate}%从下面移上来 + \newunit\newblock + \iftoggle{bbx:eprint} + {\usebibmacro{eprint}} + {}% + \newunit\newblock + %\usebibmacro{url+urldate}% + %\newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% + \usebibmacro{finentry}\usebibmacro{annotation}} + + + + +% +% 报告类型驱动 +% 当有网址无出版项时,用online输出 +% +\DeclareBibliographyDriver{report}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 + \usebibmacro{title}% + \iftoggle{bbx:gbstrict}{}{% + \newunit% + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}}% + \newunit\newblock + \usebibmacro{byeditor+others}%增加的译者信息 + \newunit\newblock + \printfield{type}% + \setunit*{\addspace}% + \printfield{number}% + \newunit\newblock + \printfield{version}% + \newunit + \printfield{note}% + \newunit\newblock + \usebibmacro{publisher+location+date}% + %\newunit\newblock + \usebibmacro{chapter+pages}% + \usebibmacro{doi+eprint+url}% + \newunit + \printfield{pagetotal}% + \newunit\newblock + \iftoggle{bbx:isbn} + {\printfield{isrn}} + {}% + \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}\usebibmacro{annotation}} + +% +% 论文、手册类型驱动 +% 2016-11-11,增加了译者信息 +% +\DeclareBibliographyDriver{manual}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 + \usebibmacro{title}% + \iftoggle{bbx:gbstrict}{}{% + \newunit% + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}}% + \newunit\newblock + \usebibmacro{byeditor+others}%增加的译者信息 + \newunit\newblock + \iftoggle{bbx:gbfieldtype}{% + \printfield{type}% + \setunit*{\addspace}% + }{}% + \printfield{number}% + \newunit\newblock + \printfield{version}% + \newunit + \printfield{note}% + \newunit\newblock + \usebibmacro{institution+location+date}% + %\newunit\newblock + \usebibmacro{chapter+pages}% + \iffieldundef{url}{}{%当没有网址时也不输出修改或更新日期 + \usebibmacro{modifydate}}%修改或更新日期为带括号的时间 + \usebibmacro{doi+eprint+url}% + \newunit + \printfield{pagetotal}% + \newunit\newblock + \iftoggle{bbx:isbn} + {\printfield{isrn}} + {}% + \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}\usebibmacro{annotation}} + +% +% 备选类型驱动 +% +% 利用biblatex的misc驱动 +\DeclareBibliographyDriver{misc}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author/editor+others/translator+others}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 + \usebibmacro{title}% +\iftoggle{bbx:gbstrict}{}{% + \newunit + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{byeditor+others}}% + \newunit\newblock + \printfield{howpublished}% + \newunit\newblock + \printfield{type}% + \newunit + \printfield{version}% + \newunit + \printfield{note}% + \newunit\newblock + \usebibmacro{institution+location+date}% + %\usebibmacro{organization+location+date}% + %\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}\usebibmacro{annotation}} + + + + + +% +% 专著中的析出文献的格式修改 +% +\DeclareBibliographyDriver{inbook}{%源来自standard.bbx + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author/translator+others}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 +\usebibmacro{title}% +\usebibmacro{in:}% +%\printtext{\texttt{//}\addthinspace}% + \usebibmacro{bybookauthor}% + \ifnameundef{bookauthor}{% + \ifnameundef{editor}{}{\newunit}% + }{\newunit}%替换下一句 + %\newunit\newblock +\iffieldundef{series}{}{\usebibmacro{series+number}\setunit{\addcolon\addspace}}%为处理一些存在series的情况而增加 + \usebibmacro{maintitle+booktitle}% +\iffieldundef{volume}{}{\setunit{\addcolon\addspace}\printfield{volume}}% +\iffieldundef{number}{}{\setunit{\addcolon\addspace}\printfield{number}}%增加卷和册信息 + \newunit\newblock% +% \usebibmacro{byeditor+others}% +% \newunit\newblock + \printfield{edition}% + \newunit + \iftoggle{bbx:gbstrict}{}{% +% \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 + \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}\usebibmacro{annotation}} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.cbx index 868af8c863..077b5c8bb9 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.cbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.cbx @@ -1,345 +1,429 @@ -%% -%% --------------------------------------------------------------- -%% biblatex-gb7714-2015 --- A biblatex implementation of the -%% GBT7714-2015 citation style,author year sequence -%% Maintained by huzhenzhen -%% E-mail: hzzmail@163.com -%% Released under the LaTeX Project Public License v1.3c or later -%% --------------------------------------------------------------- -%% -\def\versionofgbtstyle{2020/07/21 v1.0v} -\ProvidesFile{gb7714-2015ay.cbx}[\versionofgbtstyle biblatex citation style] - -% -% 加载标准样式 -% -\RequireCitationStyle{authoryear-comp} - -\ExecuteBibliographyOptions{ - %autocite = superscript , - %autopunct = true , - %sorting = none , - maxcitenames=1, - mincitenames=1, - uniquename=init,%因为使用了名字缩写选项,所以需要设置uniquename=init而不是full避免冲突 - uniquelist=minyear -} - -% -% 选项设置,针对3.7以下版本 -% -% 原理方法:labeldate用于控制是否给引用标签提供日期的成分 -\defversion{3.4}{cbxopt}{ - \ExecuteBibliographyOptions{ - labeldate=true - } -} - -% -% 选项设置,针对3.7以上版本 -% -% 原理方法:labeldateparts用于控制是否给引用标签提供日期的成分 -\defversion{3.7}{cbxopt}{ - \ExecuteBibliographyOptions{ - labeldateparts=true - } -} - -\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 - - -\ifboolexpr{%兼容cite:labelyear+extrayear -test {\iftoggle{iftlfive}}%biblatex<=3.2 -or -test {\iftoggle{iftlsix}}%3.3<=biblatex<=3.6 -or -test {\iftoggle{iftlseven}}%3.7=biblatex -}{\newbibmacro{cite:labeldate+extradate}{\usebibmacro{cite:labelyear+extrayear}}}{}%else: biblatex>3.7 - -%textcite标注命令中的标点设置,注意只针对textcite命令。 -% v-old -% v1.0t,20200320,hzz,修改如下 -% 在cbx中增加标注中的nameyeardelim标点定义,避免bbx使用其它样式时出现问题 -% 同时设置textcite的nameyeardelim为一个短空格,似乎原来直接连上去的不够美观 -\DeclareDelimFormat[cite,parencite,pagescite]{nameyeardelim}{\addcomma\space}%\addcomma\space -\DeclareDelimFormat[textcite]{nameyeardelim}{\addthinspace}%\addcomma\space -\DeclareDelimFormat[textcite]{andothersdelim}{\iffieldequalstr{userf}{chinese}{\addthinspace}{\addspace}}% -\AtEveryCitekey{% -\iffieldequalstr{userf}{chinese}{\renewcommand*{\andothersdelim}{\addthinspace}}%\addthinspace - {\renewcommand*{\andothersdelim}{\addspace}}% -} - - -% -% 重定义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}}}} - -% -% 重定义cite命令 -% -% 方法:\DeclareCiteCommand{\cite}[\mkbibparens]{precode}{loopcode}{sepcode}{postcode} -% v1.0p版后将cite的处理方式修改为类似pagescite,而不再使用biblatex的标准方式 -\DeclareCiteCommand{\cite} - {\usebibmacro{cite:init}% - \renewbibmacro*{postnote}{% - \iffieldundef{postnote}% - {}% - {\thefield{postnote}}}% - (\usebibmacro{prenote}}%) - {\usebibmacro{citeindex}% - \usebibmacro{cite}} - {} - {%( - )\mkbibsuperscript{\usebibmacro{postnote}}%\usebibmacro{postnote} - } - -% -% 定义upcite命令 -% 20180604,v1.0l,hzz -% 20190409,v1.0r,hzz -% 方法:与cite命令相同 -\newrobustcmd*{\upcite}{% - \cite} - -% -% 重定义parencite命令 -% -%\DeclareCiteCommand{\parencite} -% {\usebibmacro{cite:init}% -% \renewbibmacro*{postnote}{% -% \iffieldundef{postnote}% -% {}% -% {\nopunct% -% \printfield{postnote}}}% -% (\usebibmacro{prenote}}%) -% {\usebibmacro{citeindex}% -% \usebibmacro{cite}} -% {} -% {%( -% )\mkbibsuperscript{\usebibmacro{postnote}}} - - -% -% 新定义pagescite命令,以满足标签带页码的国标要求 -% -% 原理方法: -% 新增\pagescite引用命令 -\DeclareCiteCommand{\pagescite} - {\usebibmacro{cite:init}% - \renewbibmacro*{postnote}{% - \iffieldundef{postnote}% - {\thefield{pages}}% - {\thefield{postnote}}}% - (\usebibmacro{prenote}%) - }% - {\usebibmacro{citeindex}% - \usebibmacro{cite}} - {} - {%( - )\mkbibsuperscript{\usebibmacro{postnote}}} - -% -% 定义yearpagescite,用于当文中作者已经存在,需要页码和年份的情况 -% -% 原理:增加一个命令yearpagescite -% 参考biblatex.DEF中的\DeclareCiteCommand*{\citeyear}命令 -\DeclareCiteCommand{\yearpagescite} - {\usebibmacro{cite:init}% - \renewbibmacro*{postnote}{% - \iffieldundef{postnote}% - {\thefield{pages}}% - {\thefield{postnote}}}% - \printtext{(}\usebibmacro{prenote}}% - {\usebibmacro{cite:labeldate+extradate}}%\printfield{year}\printfield{extrayear} - {\multicitedelim}% - {\printtext{)}\textsuperscript{\usebibmacro{postnote}}} - -% -% 定义yearcite,用于当文中作者已经存在,仅需要年份的情况 -% -% 原理:增加一个命令yearcite -\DeclareCiteCommand{\yearcite}%仅输出年份,不要页码 - {\usebibmacro{cite:init}% - \printtext{(}\usebibmacro{prenote}}% - {\usebibmacro{cite:labeldate+extradate}}%\printfield{year}\printfield{extrayear} - {\multicitedelim}% - {\printtext{)}} - -% -% 定义\authornumcite命令,输出作者信息,然后在后面带上顺序编码 -% 20180427,v1.0k,增加,hzz -% 20190409,v1.0r,hzz -% 为与顺序编码制兼容,增加了命令,定义与citet相同 -\newbibmacro*{citeta}{% - \iffieldundef{shorthand} - {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}} - {\usebibmacro{cite:label}% - \setunit{\printdelim{nonameyeardelim}}% - \usebibmacro{cite:labeldate+extradate}% - \usebibmacro{cite:reinit}} - {\iffieldequals{namehash}{\cbx@lasthash} - {\ifthenelse{\iffieldequals{labelyear}{\cbx@lastyear}\AND - \(\value{multicitecount}=0\OR\iffieldundef{postnote}\)} - {\setunit{\addcomma}% - \usebibmacro{cite:extradate}} - {\setunit{\compcitedelim}% - \usebibmacro{cite:labeldate+extradate}% - \savefield{labelyear}{\cbx@lastyear}}} - {\printnames{labelname}% - %\setunit{\printdelim{nameyeardelim}}% - (\usebibmacro{cite:labeldate+extradate})% - \savefield{namehash}{\cbx@lasthash}% - \savefield{labelyear}{\cbx@lastyear}}}} - {\usebibmacro{cite:shorthand}% - \usebibmacro{cite:reinit}}% - \setunit{\multicitedelim}} - -\DeclareCiteCommand{\authornumcite}% - {\usebibmacro{cite:init}% - \renewbibmacro*{postnote}{% - \iffieldundef{postnote}% - {}% - {\thefield{postnote}}}% - \usebibmacro{prenote}}% - {\usebibmacro{citeindex}% - \usebibmacro{citeta}} - {} - {\mkbibsuperscript{\usebibmacro{postnote}}%\usebibmacro{postnote} - } - -% -% 增加如下多个命令 -% 20190409,v1.0r,hzz -% 方法:利用newcommand或newrobustcmd命令进行定义 -% 注意\citet和\citep命令之所以不用newrobustcmd,是为避免加载natbib模块后产生冲突 - -%同\authornumcite -%\DeclareCiteCommand{\citet}% -% {\usebibmacro{cite:init}% -% \renewbibmacro*{postnote}{% -% \iffieldundef{postnote}% -% {}% -% {\thefield{postnote}}}% -% \usebibmacro{prenote}}% -% {\usebibmacro{citeindex}% -% \usebibmacro{citet}} -% {} -% {%( -% )\mkbibsuperscript{\usebibmacro{postnote}}%\usebibmacro{postnote} -% } - - -% -% 重定义citet,因为前面与\authornumcite同定义的命令无法正确处理多个bibtexkey同时给出的压缩情况 -% 20200721,v1.0v,hzz -% 方法:利用textcite命令进行定义 -% 基本利用textcite命令来写citet,仅利用bool{cbx:incitet}做判断,进而处理不同的页码形式 -\newbool{cbx:incitet} -\newbibmacro*{citet:postnote}{% - \ifthenelse{\value{multicitecount}=\value{multicitetotal}} - {\setunit{}% - \printtext{% - \ifbool{cbx:parens} - {\bibcloseparen\global\boolfalse{cbx:parens}} - {}}} - {\setunit{% - \ifbool{cbx:parens} - {\bibcloseparen\global\boolfalse{cbx:parens}} - {}% - \textcitedelim}}% - \renewbibmacro*{postnote}{% - \iffieldundef{postnote}% - {}% - {\thefield{postnote}}}% - \mkbibsuperscript{\usebibmacro{postnote}}% - } - -\DeclareCiteCommand{\cbx@textcite} - {\usebibmacro{cite:init}} - {\usebibmacro{citeindex}% - \usebibmacro{textcite}} - {} - {\ifbool{cbx:incitet}{\usebibmacro{citet:postnote}}{\usebibmacro{textcite:postnote}}} - - \newrobustcmd{\cbx@citet@init}[2]{% - \global\booltrue{cbx:incitet}% - \setcounter{textcitetotal}{0}% - \setcounter{textcitecount}{0}% - \def\cbx@savedcites{#1}#2\cbx@savedcites\empty} - - \renewrobustcmd{\cbx@textcite@init}[2]{% - \global\boolfalse{cbx:incitet}% - \setcounter{textcitetotal}{0}% - \setcounter{textcitecount}{0}% - \def\cbx@savedcites{#1}#2\cbx@savedcites\empty} - -\DeclareCiteCommand{\citet}[\cbx@citet@init\cbx@textcite] - {\gdef\cbx@savedkeys{}% - \citetrackerfalse% - \pagetrackerfalse% - \DeferNextCitekeyHook% - \usebibmacro{cite:init}} - {\ifthenelse{\iffirstcitekey\AND\value{multicitetotal}>0} - {\protected@xappto\cbx@savedcites{()(\thefield{multipostnote})}% - \global\clearfield{multipostnote}} - {}% - \xappto\cbx@savedkeys{\thefield{entrykey},}% - \iffieldequals{namehash}{\cbx@lasthash} - {} - {\stepcounter{textcitetotal}% - \savefield{namehash}{\cbx@lasthash}}} - {} - {\protected@xappto\cbx@savedcites{% - [\thefield{prenote}][\thefield{postnote}]{\cbx@savedkeys}}} - -\let\cbx@citets@init\cbx@citet@init -\pretocmd{\cbx@citets@init}{\UseNextMultiCiteHook}{}{} -\DeclareMultiCiteCommand{\citets}[\cbx@citets@init\cbx@textcites]{\citet}{} - -%同cite -\DeclareCiteCommand{\citep} - {\usebibmacro{cite:init}% - \renewbibmacro*{postnote}{% - \iffieldundef{postnote}% - {}% - {\thefield{postnote}}}% - (\usebibmacro{prenote}}%) - {\usebibmacro{citeindex}% - \usebibmacro{cite}} - {} - {%( - )\mkbibsuperscript{\usebibmacro{postnote}}%\usebibmacro{postnote} - } - -\newrobustcmd*{\citetns}% - {\textcite} - -\newrobustcmd*{\citepns}% - {\parencite} - -\newrobustcmd*{\inlinecite}% - {\parencite} - - -% -% 增加如下复数的命令,以符合biblatex的复数命令习惯 -% 20190430,v1.0r,hzz -% citec和citecs命令是为了兼容顺序编码制。 -% authornumcites是常用命令authornumcite的复数形式 -\newrobustcmd*{\citec}% - {\cite} - -\DeclareMultiCiteCommand{\citecs}[]{\cite}{\multicitedelim} - -\DeclareMultiCiteCommand{\authornumcites}[]{\authornumcite}{\multicitedelim} +%% +%% --------------------------------------------------------------- +%% biblatex-gb7714-2015 --- A biblatex implementation of the +%% GBT7714-2015 citation style,author year sequence +%% Maintained by huzhenzhen +%% E-mail: hzzmail@163.com +%% Released under the LaTeX Project Public License v1.3c or later +%% --------------------------------------------------------------- +%% +\def\versionofgbtstyle{2021/01/19 v1.0w} +\ProvidesFile{gb7714-2015ay.cbx}[\versionofgbtstyle biblatex citation style] + +% +% 加载标准样式 +% +\RequireCitationStyle{authoryear-comp} + + +% +% 增加一个控制是否将标准标签中的作者加上超链接的选项 +% 20210119,v1.0v,hzz +\newtoggle{bbx:gblabelref} +\DeclareBibliographyOption{gblabelref}[true]{%biblatex低版本 + \settoggle{bbx:gblabelref}{#1}} +\ExecuteBibliographyOptions{gblabelref} + + +\ExecuteBibliographyOptions{ + %autocite = superscript , + %autopunct = true , + %sorting = none , + maxcitenames=1, + mincitenames=1, + uniquename=init,%因为使用了名字缩写选项,所以需要设置uniquename=init而不是full避免冲突 + uniquelist=minyear +} + +% +% 选项设置,针对3.7以下版本 +% +% 原理方法:labeldate用于控制是否给引用标签提供日期的成分 +\defversion{3.4}{cbxopt}{ + \ExecuteBibliographyOptions{ + labeldate=true + } +} + +% +% 选项设置,针对3.7以上版本 +% +% 原理方法:labeldateparts用于控制是否给引用标签提供日期的成分 +\defversion{3.7}{cbxopt}{ + \ExecuteBibliographyOptions{ + labeldateparts=true + } +} + +\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 + + +\ifboolexpr{%兼容cite:labelyear+extrayear +test {\iftoggle{iftlfive}}%biblatex<=3.2 +or +test {\iftoggle{iftlsix}}%3.3<=biblatex<=3.6 +or +test {\iftoggle{iftlseven}}%3.7=biblatex +}{\newbibmacro{cite:labeldate+extradate}{\usebibmacro{cite:labelyear+extrayear}}}{}%else: biblatex>3.7 + +%textcite标注命令中的标点设置,注意只针对textcite命令。 +% v-old +% v1.0t,20200320,hzz,修改如下 +% 在cbx中增加标注中的nameyeardelim标点定义,避免bbx使用其它样式时出现问题 +% 同时设置textcite的nameyeardelim为一个短空格,似乎原来直接连上去的不够美观 +\DeclareDelimFormat[cite,parencite,pagescite]{nameyeardelim}{\addcomma\space}%\addcomma\space +\DeclareDelimFormat[textcite]{nameyeardelim}{\addthinspace}%\addcomma\space +\DeclareDelimFormat[textcite]{andothersdelim}{\iffieldequalstr{userf}{chinese}{\addthinspace}{\addspace}}% +\AtEveryCitekey{% +\iffieldequalstr{userf}{chinese}{\renewcommand*{\andothersdelim}{\addthinspace}}%\addthinspace + {\renewcommand*{\andothersdelim}{\addspace}}% +} + +% +% 修订使可用选项gblabelref来控制是否将标准标签中的作者加上超链接 +% 20210119,v1.0v,hzz +\iftoggle{iftlatest}% +{\renewbibmacro*{cite}{% + \iffieldundef{shorthand} + {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}} + {\usebibmacro{cite:label}% + \setunit{\printdelim{nonameyeardelim}}% + \usebibmacro{cite:labeldate+extradate}% + \usebibmacro{cite:reinit}} + {\iffieldequals{namehash}{\cbx@lasthash} + {\ifthenelse{\iffieldequals{labelyear}{\cbx@lastyear}\AND + \(\value{multicitecount}=0\OR\iffieldundef{postnote}\)} + {\setunit{\addcomma}% + \usebibmacro{cite:extradate}} + {\setunit{\compcitedelim}% + \usebibmacro{cite:labeldate+extradate}% + \savefield{labelyear}{\cbx@lastyear}}} + {\iftoggle{bbx:gblabelref}{\printtext[bibhyperref]{\printnames{labelname}}}{\printnames{labelname}}% + \setunit{\printdelim{nameyeardelim}}% + \usebibmacro{cite:labeldate+extradate}% + \savefield{namehash}{\cbx@lasthash}% + \savefield{labelyear}{\cbx@lastyear}}}} + {\usebibmacro{cite:shorthand}% + \usebibmacro{cite:reinit}}% + \setunit{\multicitedelim}} +\renewbibmacro*{textcite}{% + \iffieldequals{namehash}{\cbx@lasthash} + {\iffieldundef{shorthand} + {\ifthenelse{\iffieldequals{labelyear}{\cbx@lastyear}\AND + \(\value{multicitecount}=0\OR\iffieldundef{postnote}\)} + {\setunit{\addcomma}% + \usebibmacro{cite:extradate}} + {\setunit{\compcitedelim}% + \usebibmacro{cite:labeldate+extradate}% + \savefield{labelyear}{\cbx@lastyear}}} + {\setunit{\compcitedelim}% + \usebibmacro{cite:shorthand}% + \global\undef\cbx@lastyear}} + {\ifnameundef{labelname} + {\iffieldundef{shorthand} + {\usebibmacro{cite:label}% + \setunit{% + \global\booltrue{cbx:parens}% + \printdelim{nonameyeardelim}\bibopenparen}% + \ifnumequal{\value{citecount}}{1} + {\usebibmacro{prenote}} + {}% + \usebibmacro{cite:labeldate+extradate}} + {\usebibmacro{cite:shorthand}}} + {\iftoggle{bbx:gblabelref}{\printtext[bibhyperref]{\printnames{labelname}}}{\printnames{labelname}}% + \setunit{% + \global\booltrue{cbx:parens}% + \printdelim{nameyeardelim}\bibopenparen}% + \ifnumequal{\value{citecount}}{1} + {\usebibmacro{prenote}} + {}% + \iffieldundef{shorthand} + {\iffieldundef{labelyear} + {\usebibmacro{cite:label}} + {\usebibmacro{cite:labeldate+extradate}}% + \savefield{labelyear}{\cbx@lastyear}} + {\usebibmacro{cite:shorthand}% + \global\undef\cbx@lastyear}}% + \stepcounter{textcitecount}% + \savefield{namehash}{\cbx@lasthash}}% + \setunit{% + \ifbool{cbx:parens} + {\bibcloseparen\global\boolfalse{cbx:parens}} + {}% + \textcitedelim}}}{} + + + +% +% 重定义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}}}} + +% +% 重定义cite命令 +% +% 方法:\DeclareCiteCommand{\cite}[\mkbibparens]{precode}{loopcode}{sepcode}{postcode} +% v1.0p版后将cite的处理方式修改为类似pagescite,而不再使用biblatex的标准方式 +\DeclareCiteCommand{\cite} + {\usebibmacro{cite:init}% + \renewbibmacro*{postnote}{% + \iffieldundef{postnote}% + {}% + {\thefield{postnote}}}% + (\usebibmacro{prenote}}%) + {\usebibmacro{citeindex}% + \usebibmacro{cite}} + {} + {%( + )\mkbibsuperscript{\usebibmacro{postnote}}%\usebibmacro{postnote} + } + +% +% 定义upcite命令 +% 20180604,v1.0l,hzz +% 20190409,v1.0r,hzz +% 方法:与cite命令相同 +\newrobustcmd*{\upcite}{% + \cite} + +% +% 重定义parencite命令 +% +%\DeclareCiteCommand{\parencite} +% {\usebibmacro{cite:init}% +% \renewbibmacro*{postnote}{% +% \iffieldundef{postnote}% +% {}% +% {\nopunct% +% \printfield{postnote}}}% +% (\usebibmacro{prenote}}%) +% {\usebibmacro{citeindex}% +% \usebibmacro{cite}} +% {} +% {%( +% )\mkbibsuperscript{\usebibmacro{postnote}}} + + +% +% 新定义pagescite命令,以满足标签带页码的国标要求 +% +% 原理方法: +% 新增\pagescite引用命令 +\DeclareCiteCommand{\pagescite} + {\usebibmacro{cite:init}% + \renewbibmacro*{postnote}{% + \iffieldundef{postnote}% + {\thefield{pages}}% + {\thefield{postnote}}}% + (\usebibmacro{prenote}%) + }% + {\usebibmacro{citeindex}% + \usebibmacro{cite}} + {} + {%( + )\mkbibsuperscript{\usebibmacro{postnote}}} + +% +% 定义yearpagescite,用于当文中作者已经存在,需要页码和年份的情况 +% +% 原理:增加一个命令yearpagescite +% 参考biblatex.DEF中的\DeclareCiteCommand*{\citeyear}命令 +\DeclareCiteCommand{\yearpagescite} + {\usebibmacro{cite:init}% + \renewbibmacro*{postnote}{% + \iffieldundef{postnote}% + {\thefield{pages}}% + {\thefield{postnote}}}% + \printtext{(}\usebibmacro{prenote}}% + {\usebibmacro{cite:labeldate+extradate}}%\printfield{year}\printfield{extrayear} + {\multicitedelim}% + {\printtext{)}\textsuperscript{\usebibmacro{postnote}}} + +% +% 定义yearcite,用于当文中作者已经存在,仅需要年份的情况 +% +% 原理:增加一个命令yearcite +\DeclareCiteCommand{\yearcite}%仅输出年份,不要页码 + {\usebibmacro{cite:init}% + \printtext{(}\usebibmacro{prenote}}% + {\usebibmacro{cite:labeldate+extradate}}%\printfield{year}\printfield{extrayear} + {\multicitedelim}% + {\printtext{)}} + +% +% 定义\authornumcite命令,输出作者信息,然后在后面带上顺序编码 +% 20180427,v1.0k,增加,hzz +% 20190409,v1.0r,hzz +% 为与顺序编码制兼容,增加了命令,定义与citet相同 +\newbibmacro*{citeta}{% + \iffieldundef{shorthand} + {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}} + {\usebibmacro{cite:label}% + \setunit{\printdelim{nonameyeardelim}}% + \usebibmacro{cite:labeldate+extradate}% + \usebibmacro{cite:reinit}} + {\iffieldequals{namehash}{\cbx@lasthash} + {\ifthenelse{\iffieldequals{labelyear}{\cbx@lastyear}\AND + \(\value{multicitecount}=0\OR\iffieldundef{postnote}\)} + {\setunit{\addcomma}% + \usebibmacro{cite:extradate}} + {\setunit{\compcitedelim}% + \usebibmacro{cite:labeldate+extradate}% + \savefield{labelyear}{\cbx@lastyear}}} + {\iftoggle{bbx:gblabelref}{\printtext[bibhyperref]{\printnames{labelname}}}{\printnames{labelname}}%% + %\setunit{\printdelim{nameyeardelim}}% + (\usebibmacro{cite:labeldate+extradate})% + \savefield{namehash}{\cbx@lasthash}% + \savefield{labelyear}{\cbx@lastyear}}}} + {\usebibmacro{cite:shorthand}% + \usebibmacro{cite:reinit}}% + \setunit{\multicitedelim}} + +\DeclareCiteCommand{\authornumcite}% + {\usebibmacro{cite:init}% + \renewbibmacro*{postnote}{% + \iffieldundef{postnote}% + {}% + {\thefield{postnote}}}% + \usebibmacro{prenote}}% + {\usebibmacro{citeindex}% + \usebibmacro{citeta}} + {} + {\mkbibsuperscript{\usebibmacro{postnote}}%\usebibmacro{postnote} + } + +% +% 增加如下多个命令 +% 20190409,v1.0r,hzz +% 方法:利用newcommand或newrobustcmd命令进行定义 +% 注意\citet和\citep命令之所以不用newrobustcmd,是为避免加载natbib模块后产生冲突 + +%同\authornumcite +%\DeclareCiteCommand{\citet}% +% {\usebibmacro{cite:init}% +% \renewbibmacro*{postnote}{% +% \iffieldundef{postnote}% +% {}% +% {\thefield{postnote}}}% +% \usebibmacro{prenote}}% +% {\usebibmacro{citeindex}% +% \usebibmacro{citet}} +% {} +% {%( +% )\mkbibsuperscript{\usebibmacro{postnote}}%\usebibmacro{postnote} +% } + + +% +% 重定义citet,因为前面与\authornumcite同定义的命令无法正确处理多个bibtexkey同时给出的压缩情况 +% 20200721,v1.0v,hzz +% 方法:利用textcite命令进行定义 +% 基本利用textcite命令来写citet,仅利用bool{cbx:incitet}做判断,进而处理不同的页码形式 +\newbool{cbx:incitet} +\newbibmacro*{citet:postnote}{% + \ifthenelse{\value{multicitecount}=\value{multicitetotal}} + {\setunit{}% + \printtext{% + \ifbool{cbx:parens} + {\bibcloseparen\global\boolfalse{cbx:parens}} + {}}} + {\setunit{% + \ifbool{cbx:parens} + {\bibcloseparen\global\boolfalse{cbx:parens}} + {}% + \textcitedelim}}% + \renewbibmacro*{postnote}{% + \iffieldundef{postnote}% + {}% + {\thefield{postnote}}}% + \mkbibsuperscript{\usebibmacro{postnote}}% + } + +\DeclareCiteCommand{\cbx@textcite} + {\usebibmacro{cite:init}} + {\usebibmacro{citeindex}% + \usebibmacro{textcite}} + {} + {\ifbool{cbx:incitet}{\usebibmacro{citet:postnote}}{\usebibmacro{textcite:postnote}}} + + \newrobustcmd{\cbx@citet@init}[2]{% + \global\booltrue{cbx:incitet}% + \setcounter{textcitetotal}{0}% + \setcounter{textcitecount}{0}% + \def\cbx@savedcites{#1}#2\cbx@savedcites\empty} + + \renewrobustcmd{\cbx@textcite@init}[2]{% + \global\boolfalse{cbx:incitet}% + \setcounter{textcitetotal}{0}% + \setcounter{textcitecount}{0}% + \def\cbx@savedcites{#1}#2\cbx@savedcites\empty} + +\DeclareCiteCommand{\citet}[\cbx@citet@init\cbx@textcite] + {\gdef\cbx@savedkeys{}% + \citetrackerfalse% + \pagetrackerfalse% + \DeferNextCitekeyHook% + \usebibmacro{cite:init}} + {\ifthenelse{\iffirstcitekey\AND\value{multicitetotal}>0} + {\protected@xappto\cbx@savedcites{()(\thefield{multipostnote})}% + \global\clearfield{multipostnote}} + {}% + \xappto\cbx@savedkeys{\thefield{entrykey},}% + \iffieldequals{namehash}{\cbx@lasthash} + {} + {\stepcounter{textcitetotal}% + \savefield{namehash}{\cbx@lasthash}}} + {} + {\protected@xappto\cbx@savedcites{% + [\thefield{prenote}][\thefield{postnote}]{\cbx@savedkeys}}} + +\let\cbx@citets@init\cbx@citet@init +\pretocmd{\cbx@citets@init}{\UseNextMultiCiteHook}{}{} +\DeclareMultiCiteCommand{\citets}[\cbx@citets@init\cbx@textcites]{\citet}{} + +%同cite +\DeclareCiteCommand{\citep} + {\usebibmacro{cite:init}% + \renewbibmacro*{postnote}{% + \iffieldundef{postnote}% + {}% + {\thefield{postnote}}}% + (\usebibmacro{prenote}}%) + {\usebibmacro{citeindex}% + \usebibmacro{cite}} + {} + {%( + )\mkbibsuperscript{\usebibmacro{postnote}}%\usebibmacro{postnote} + } + +\newrobustcmd*{\citetns}% + {\textcite} + +\newrobustcmd*{\citepns}% + {\parencite} + +\newrobustcmd*{\inlinecite}% + {\parencite} + + +% +% 增加如下复数的命令,以符合biblatex的复数命令习惯 +% 20190430,v1.0r,hzz +% citec和citecs命令是为了兼容顺序编码制。 +% authornumcites是常用命令authornumcite的复数形式 +\newrobustcmd*{\citec}% + {\cite} + +\DeclareMultiCiteCommand{\citecs}[]{\cite}{\multicitedelim} + +\DeclareMultiCiteCommand{\authornumcites}[]{\authornumcite}{\multicitedelim} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ms.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ms.bbx index 3747757004..3c5fe9097a 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ms.bbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ms.bbx @@ -1,2735 +1,2735 @@ -%% -%% --------------------------------------------------------------- -%% biblatex-gb7714-2015 --- A biblatex implementation of the -%% GBT7714-2015 bibliography style,numerical sequence -%% Maintained by huzhenzhen -%% E-mail: hzzmail@163.com -%% Released under the LaTeX Project Public License v1.3c or later -%% --------------------------------------------------------------- -%% - -% -% 版本和时间信息 -% -\def\versionofgbtstyle{2020/07/21 v1.0v} -\def\versionofbiblatex{\abx@version} -\ProvidesFile{gb7714-2015ms.bbx}[\versionofgbtstyle biblatex bibliography style] -%\RequireBiber[3]%显式指定用biber后端,当用bibtex时会报错,但其实不会影响编译,只是采用bibtex后无法达成格式需求 - - -%===================================================================== -% 加载标准样式 -%===================================================================== -\RequireBibliographyStyle{numeric-comp} -\RequirePackage{xstring}%解决texlive2015的biblatex3.0不加载xstring包的问题 - -%===================================================================== -% 功能函数 -%===================================================================== - % - % biblatex版本判断 - % 20180629,v1.0k,hzz - % - % 原理方法:适用于3.10以上版本的biblatex,否则给出警告 - \@ifpackagelater{biblatex}{2017/12/28}{}{ - \blx@warning@noline{% - biblatex version is too old for this style\MessageBreak - if errors raised,Please update biblatex to the latest version.} - } - - - % - % 判断CJK字符的函数,用于判断作者等信息是否由中文字符构成 - % v1.0k,20180509,hzz - % - % 原理方法:用biber中的perl方法代替。因为利用tex函数对字符判断时,当字符在宏 - % 中时,基于`的方法无法解决GBK编码的问题,基于CJKsymbol的方法无法解决utf-8 - % 编码用xelatex编译的问题。 - % - % 原理是:利用perl正则将中文标识记录到域中, - % 然后利用\iffieldundef和\iffieldequalstr进行判断 - \providetoggle{ifCJKforgbt} - \def\testCJKfirst#1{% - \iffieldundef{#1}{\togglefalse{ifCJKforgbt}}{% - \iffieldequalstr{#1}{chinese}{\toggletrue{ifCJKforgbt}}{\togglefalse{ifCJKforgbt}}}} - - % - % 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{}}% - } - - -%===================================================================== -% 数据模型定义 -%===================================================================== - %定义类型和载体标识,从gb内容看载体基本属于介质。 - %为与lee zeping的bst的样式统一,使用mark和medium这两域名 - %为单个条目的姓名格式控制增加nameformat和namefmtid两个域 - %为缩略信息文献表增加了shortbooktitle域 - %为多语言排序增加了lansortorder域 - \DeclareDatamodelFields[type=field,datatype=literal]{mark,medium,nameformat} - \DeclareDatamodelFields[type=field,datatype=integer]{namefmtid} - \DeclareDatamodelFields[type=field,datatype=literal]{shortbooktitle} - \DeclareDatamodelFields[type=field,datatype=literal]{lansortorder} - - %因为biblatex更新3.14版本以后,biber对于为声明数据模型的条目类型 - %不再默认读取,而是以空字符串作为条目类型名,自然在条目定义alias时 - %就会出现问题,因此显式的声明一下newspaper,然后保留后面采用alias的方式 - %而standard类型则是采用另一种方式直接在sourcemap中转换为其它类型。 - \@ifpackagelater{biblatex}{2019/11/30}{%2019/12/01 v3.14 - \DeclareDatamodelEntrytypes{newspaper}% - }{} - -%===================================================================== -% 设置宏包选项 -%===================================================================== - % - % 增加一个控制是否输出文献载体的选项 - % 20191125,v1,0s,hzz - \newtoggle{bbx:gbmedium} - \DeclareBibliographyOption{gbmedium}[true]{%biblatex低版本 - \settoggle{bbx:gbmedium}{#1}} - \ExecuteBibliographyOptions{gbmedium} - - % - % 增加一个控制是否输出annotation域的选项,该域可以用于在文献条目后面输出一些注释信息 - % 20190509,v1,0s,hzz - \newtoggle{bbx:gbannote} - \DeclareBibliographyOption{gbannote}[false]{%biblatex低版本 - \settoggle{bbx:gbannote}{#1}} - \ExecuteBibliographyOptions{gbannote} - % - %用于在文献条目后面输出注释信息的宏 - %FieldFormat{annotation}用于设置注释信息的格式 - \DeclareFieldFormat{annotation}{% - \printtext{\addspace(#1)}% - } - \renewbibmacro*{annotation}{% - \iftoggle{bbx:gbannote}% - {\iffieldundef{annotation}% - {\printfile[annotation]{\bibannotationprefix\thefield{entrykey}.tex}}% - {\printfield{annotation}}}% - {}% - } - - - % - % 增加一个控制是否输出type域的选项 - % 20190212,v1,0q,hzz - \newtoggle{bbx:gbfieldtype} - \DeclareBibliographyOption{gbfieldtype}[false]{%biblatex低版本 - \settoggle{bbx:gbfieldtype}{#1}} - \ExecuteBibliographyOptions{gbfieldtype} - - % - % 增加一个控制是否根据页码重设脚注数字标号的选项 - % 20190422,v1,0r,hzz - \newtoggle{bbx:gbfnperpage} - \DeclareBibliographyOption{gbfnperpage}[false]{% - \settoggle{bbx:gbfnperpage}{#1}} - \ExecuteBibliographyOptions{gbfnperpage} - - % - % 增加一个选项,用于控制是否实现GB/T 7714-2015标准的脚注文献表 - % 20190203,v1.0p,hzz - % 原理方法:默认做patch,文献引用带圈上标数字表示,脚注中的文献用带圈非上标数字做标签 - % 当前面的脚注中已经存在当前文献,那么当前文献内容不再输出而用同(4)这样的方式 - % 需要注意的是由于小页环境和表格中的脚注本身的问题,可能会有一些问题 - \DeclareBibliographyOption{gbfootbib}[false]{% - \ifstrequal{#1}{false}{}{\execgbfootbib}} - \ExecuteBibliographyOptions{gbfootbib} - - %% - \newlength{\footbibmargin} - \newlength{\footbiblabelsep} - \setlength{\footbibmargin}{1em}%脚注的段落左侧缩进距离 - \setlength{\footbiblabelsep}{0.5em}%脚注中标记号与脚注段落的间距 - \def\execgbfootbib% - {% - %开启引用跟踪计数器,为使用\ifciteseen等测试命令 - \ExecuteBibliographyOptions{citetracker=true} - % - %利用footmisc宏包来实现脚注文献的悬挂对齐 - \AtEndPreamble{ - \@ifclassloaded{beamer}{}{ - %beamer类因为其特殊性,为避免冲突不调footmisc。 - %同时footmisc与hyperref宏包也不兼容,所以使用footmisc时会破坏脚注的超链接 - %如果要实现超链接可以将下句注释掉,这里留着主要是实现悬挂对齐。 - %\PassOptionsToPackage{perpage,hang}{footmisc}% - %\RequirePackage{footmisc}% - - %重新实现脚注的根据单页重设脚注号码 - %重新实现脚注的悬挂对齐问题,不再使用footmisc,直接从latex核心代码和hyperref代码进行修改 - %v1.0q 20190317 hzz - %v1.0r 20190422 hzz 根据gbfnperpage选项设置 - \iftoggle{bbx:gbfnperpage}% - {\@addtoreset{footnote}{page}}{}%重设计数器 - -\@ifpackageloaded{hyperref}{%加载hyperref则对\H@@footnotetext做重定义 - \long\def\H@@footnotetext##1{\insert\footins{% - \reset@font\footnotesize - \interlinepenalty\interfootnotelinepenalty - \splittopskip\footnotesep - \splitmaxdepth \dp\strutbox \floatingpenalty \@MM - \hsize\columnwidth \@parboxrestore - \protected@edef\@currentlabel{% - \csname p@footnote\endcsname\@thefnmark - }% - \color@begingroup - \leftskip \footbibmargin%增加的左侧缩进 - \@makefntext{% - \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox% - }% - \color@endgroup}}% - - \long\def\H@@mpfootnotetext##1{% - \global\setbox\@mpfootins\vbox{% - \unvbox\@mpfootins - \reset@font\footnotesize - \hsize\columnwidth - \@parboxrestore - \protected@edef\@currentlabel - {\csname p@mpfootnote\endcsname\@thefnmark}% - \leftskip \footbibmargin%增加的左侧缩进 - \color@begingroup - \@makefntext{% - \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox}% - \color@endgroup}} - }{%否则对latex核心代码中的\@footnotetext做重定义 - \long\def\@footnotetext##1{\insert\footins{% - \reset@font\footnotesize - \interlinepenalty\interfootnotelinepenalty - \splittopskip\footnotesep - \splitmaxdepth \dp\strutbox \floatingpenalty \@MM - \hsize\columnwidth \@parboxrestore - \protected@edef\@currentlabel{% - \csname p@footnote\endcsname\@thefnmark - }% - \color@begingroup - \leftskip \footbibmargin%增加的左侧缩进 - \@makefntext{% - \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox% - }% - \color@endgroup}}% - - \long\def\@mpfootnotetext##1{% - \global\setbox\@mpfootins\vbox{% - \unvbox\@mpfootins - \reset@font\footnotesize - \hsize\columnwidth - \@parboxrestore - \protected@edef\@currentlabel - {\csname p@mpfootnote\endcsname\@thefnmark}% - \leftskip \footbibmargin%增加的左侧缩进 - \color@begingroup - \@makefntext{% - \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox}% - \color@endgroup}} - } - - \long\def\@makefntext##1{%增加了脚注标记与正文的间隔 - \parindent 1em\noindent \hb@xt@ 0em{\hss \@makefnmark\makebox[\footbiblabelsep]{}}##1} - - } - - % - %使脚注标记加圈并设置数字的字体为tiny,不使用修改thefootnote的方式 - \def\@makefnmark{\hbox{\@textsuperscript{\textcircled{\tiny\@thefnmark}}}} - %做patch使得脚注内容中的脚注数字标签不上标 - \pretocmd{\@makefntext}{% - \def\@makefnmark{% - \hbox{\textcircled{\tiny\@thefnmark}}% - }% - }{}{} - } - - % - %判断当前文献是否已经引用过且是做的footfullcite(即已经作为脚注输出文献内容) - %记录首次输出时的脚注号码,用于后面再次引用该文献时的输出,比如同(4)。 - %v1.0q 20190309 区分使脚注标注适应minipage中的情况 - \newbibmacro*{citesavefn}{% - \ifciteseen%当被引用过为true - {\ifcsdef{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}%当已经定义过脚注序号信息 - {\csgdef{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}{% - \str@sameentry\gdef\@thefnmark{\csuse{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}}% - \@makefnmark% - }}% - {\csxdef{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}{% - \ifcsstring{@mpfn}{mpfootnote}{\@alph\c@mpfootnote}{\thefootnote}% - }}% - }% - {\csxdef{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}{% - \ifcsstring{@mpfn}{mpfootnote}{\@alph\c@mpfootnote}{\thefootnote}% - %判断在minipage中比较麻烦,这里使用\@mpfn的定义进行判断 - }}% - } - - % - %重定义\footfullcite使完成gb7714-2015的脚注文献要求 - \DeclareCiteCommand{\footfullcite}[\mkbibfootnote]% - {\defcounter{maxnames}{\blx@maxbibnames}%局部定义maxnames和minnames计数器 - \defcounter{minnames}{\blx@minbibnames}%使footfullcite内的作者输出与正文文献表中的一致。 - \usebibmacro{prenote}% - \renewbibmacro*{postnote}{% - \iffieldundef{postnote}% - {}{\setunit{\addcolon\addspace}\printfield{postnote}}}%与ay样式不同,由于已修改postnote域格式,直接用printfield - }% - {\usebibmacro{citesavefn}% - \ifcsdef{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}% - {\csuse{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}\nopunct}% - {\usedriver{\DeclareNameAlias{sortname}{default}}{\thefield{entrytype}}}% - }% - {\multicitedelim}% - {\usebibmacro{postnote}} - - } - - % - % 增加一个选项,用于控制gb7714的使用范围,即英文文献和中文文献使用不同的样式 - % 20180814,v1.0m,hzz - % 原理方法: - % 当gbstyle=true,则所有的文献使用国标样式,否则仅中文文献使用国标样式 - \newtoggle{bbx:gbstyle} - \DeclareBibliographyOption{gbstyle}[true]{%biblatex低版本 - \settoggle{bbx:gbstyle}{#1}} - - % - % 增加一个控制是否输出文献类型和载体标识的选项 - % - % 原理方法: - % 对于biblatex3.4以上版本DeclareBibliographyOption命令中的[datatype]如果是boolean,那么是可以省略的 - % 所以用老版本的不用[datatype]的命令可以兼容所有biblatex版本 - \newtoggle{bbx:gbtype} - %\DeclareBibliographyOption[boolean]{gbtype}[true]{%biblatex高版本 - \DeclareBibliographyOption{gbtype}[true]{%biblatex低版本 - \settoggle{bbx:gbtype}{#1}} - - % - % 增加一个源文件编码选择选项,当true时可以使用GBK编码。 - % v1.0k, 2018.05.08, by hzz - % - % 原理方法:将需要输出的中文字符串用命令形式表示存储,采用utf8编码时采用bbx文档 - % 内的定义即是utf8编码的中文字符串,但tex源文件是gbk编码时,利用gb7714-2015-gbk.def - % 文档内的gbk编码的字符串覆盖。这种覆盖只能在宏包末尾加载时成功实现,所以使用 - % AtEndOfPackage。该解决思路源自biblatex-caspervector宏包。 - % 另外注意: - % gbk编码的tex文档,利用pdflatex/latex能正确编译,利用xelatex能编译,但中文显示乱码 - % 在源文档前面增加 XeTeX 原语:\XeTeXinputencoding "GBK" 后,显示正常 - % utf-8编码的tex文档,利用xelatex能正确编译,而pdflatex/latex不能编译。 - \newtoggle{bbx:codegbk} - \DeclareBibliographyOption{gbcodegbk}[false]{% - \settoggle{bbx:codegbk}{#1}} - - \def\str@bibliography{参考文献} - \def\str@references{参考文献} - \def\str@bytranslator{译} - \def\str@andotherscn{等} - \def\str@backrefpage{引用页} - \def\str@backrefpages{引用页} - \def\str@noaddress{出版地不详} - \def\str@nopublisher{出版者不详} - \def\str@edition{版} - \def\str@volumecn{卷} - \def\str@numbercn{册} - \def\str@serialcn{第} - \def\str@sameentry{同} - \def\str@incn{见} - \def\str@mathesiscn{硕士学位论文} - \def\str@phdthesiscn{博士学位论文} - \def\str@editorcn{主编} - - \AtEndOfPackage{% - \iftoggle{bbx:codegbk}{% - \ExecuteBibliographyOptions{texencoding = GBK} - \input{gb7714-2015-gbk.def} - }{}} - - % - % 增加一个严格按GB/T 7714-2015给出著录格式控制域的输出的选项 - % v1.0k, 2018.05.08, by hzz - % - % 原理方法: - % 默认设置该选项为真,进而不输出GB/T 7714-2015中没有的域的信息 - % 这样可以避免因为bib文件带有多余的域的信息的输出,比如因为bibtex样式 - % 可能需要用于中英文判断的language域的信息。 - \newtoggle{bbx:gbstrict} - \DeclareBibliographyOption{gbstrict}[true]{% - \settoggle{bbx:gbstrict}{#1}} - - % - % 增加一个控制标题域超链接设置的选项 - % v1.0k, 2018.05.24, by hzz - % - % 原理方法: - % 利用标题域格式来实现,默认设置该选项为false,不做超链接。 - % 设置为true,则标题设置超链接 - \newtoggle{bbx:titlelink} - \DeclareBibliographyOption{gbtitlelink}[false]{% - \settoggle{bbx:titlelink}{#1}} - - % - % 增加一个控制参考文献标题是否能够被ctex宏包设置的选项 - % v1.0l, 2018.07.02, by hzz - % - % 原理方法: - % 重定义biblatex的宏,去除使用本地化字符串的方式,是的可以利用ctexset进行设置 - \newtoggle{bbx:ctexset} - \DeclareBibliographyOption{gbctexset}[true]{% - \settoggle{bbx:ctexset}{#1}} - - \AtEndOfPackage{% - \iftoggle{bbx:ctexset}{% - \def\blx@defbibstrings#1#2{% - \def\do##1{\csundef{abx@lstr@##1}\csundef{abx@sstr@##1}}% - \abx@dostrings - \csuse{abx@strings@#1}% - \setkeys{blx@lbx}{#2}% - \let\do\blx@defbibstrings@i - \csxdef{abx@strings@#1}{\abx@dostrings}% - } - }{}} - - % - % 增加一个恢复域格式为标准样式的控制选项 - % v1.0k, 2018.05.15, by hzz - % - % 原理方法: - % 默认设置该选项为false,采用国标要求的域格式输出相关域 - % 当设置该选项为true时,则重新利用标准样式的域格式输出相关的域 - \newtoggle{bbx:gbfieldstd} - \DeclareBibliographyOption{gbfieldstd}[false]{% - \settoggle{bbx:gbfieldstd}{#1}% - } - - % - % 增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 - % - \newtoggle{bbx:gbpub} - \DeclareBibliographyOption{gbpub}[true]{% - %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 - \ifstrequal{#1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} - - % - % 增加控制析出文献来源前的标点符号//输出的选项 - % v1.0k, 2018.04.20,added in by hzz - \newtoggle{bbx:gbpunctin} - \DeclareBibliographyOption{gbpunctin}[true]{% - \settoggle{bbx:gbpunctin}{#1}} - - % - % 增加一个处理佚名或noauthor的控制选项 - % - % 原理方法:在顺序编码制中不需要使用,为与作者年制的兼容性考虑,这里也增加避免报错 - \DeclareBibliographyOption{gbnoauthor}[true]{}% - - - % - %为日期控制格式增加一个gb7714-2015选项 - % - \csdef{mkdaterangegb7714-2015}#1{% - \begingroup - \blx@metadateinfo{#1}% - \iffieldundef{#1year} - {} - {\printtext[#1date]{% - \blx@gbdate{#1}{}}}% - \endgroup} - - \newrobustcmd*{\blx@gbdate}[3][]{% - \dateeraprintpre{#2#3year}% - \blx@imc@forcezerosy{\thefield{#2#3year}}\ifblank{#1}{}{\printfield{#1}}% - \iffieldundef{#2#3month}{}{\hyphen\blx@imc@forcezerosmdt{\thefield{#2#3month}}}% - \iffieldundef{#2#3day}{}{\hyphen\blx@imc@forcezerosmdt{\thefield{#2#3day}}}} - - %为姓名格式选择增加的计数器 - \newcounter{gbnamefmtcase} - \def\thegbnamefmtcase{\the\c@gbnamefmtcase} - %为数字标签格式选择增加的计数器/命令 - \newcommand{\mkgbnumlabel}[1]{\mkbibbrackets{#1}} - \def\gbbiblabelopt@bracket{\renewcommand{\mkgbnumlabel}[1]{\mkbibbrackets{##1}}} - \def\gbbiblabelopt@parens{\renewcommand{\mkgbnumlabel}[1]{\mkbibparens{##1}}} - \def\gbbiblabelopt@dot{\renewcommand{\mkgbnumlabel}[1]{##1\adddot}} - \def\gbbiblabelopt@plain{\renewcommand{\mkgbnumlabel}[1]{##1}} - \def\gbbiblabelopt@box{\renewcommand{\mkgbnumlabel}[1]{\framebox{##1}}} - \def\gbbiblabelopt@circle{\renewcommand{\mkgbnumlabel}[1]{\textcircled{##1}}} - %为文献表中数字标签对齐方式选择增加的计数器/命令 - \newcounter{gbalignlabel} - \def\thegbalignlabel{\the\c@gbalignlabel} - %为引用标签标注/文献表中本地化字符串中英文选择增加的计数器/命令 - \newcounter{gbcitelocalcase} - \newcounter{gbbiblocalcase} - \def\thegbcitelocalcase{\the\c@gbcitelocalcase} - \def\thegbbiblocalcase{\the\c@gbbiblocalcase} - - % 增加不同语言排序的切换选项 - % numeric样式,不使用该选项,这里给出仅为兼容性考虑 - % v1.0q,20190307,hzz - % - \DeclareBibliographyOption[string]{gblanorder}[chineseahead]{} - - - % - % 增加本地化字符串的中英文切换选项 - % gbcitelocal指标注中的本地化字符串 - % gbbiblocal 指文献表中的本地化字符串 - % gblocal 指设置文献表和标注中的本地化字符串 - % v1.0o,20190103,hzz - % - \DeclareBibliographyOption[string]{gbcitelocal}[gb7714-2015]{% - \ifstrequal{#1}{gb7714-2015}{\setcounter{gbcitelocalcase}{0}}{}% - \ifstrequal{#1}{chinese}{\setcounter{gbcitelocalcase}{1}}{}% - \ifstrequal{#1}{english}{\setcounter{gbcitelocalcase}{2}}{}% - } - - \DeclareBibliographyOption[string]{gbbiblocal}[gb7714-2015]{% - \ifstrequal{#1}{gb7714-2015}{\setcounter{gbbiblocalcase}{0}}{}% - \ifstrequal{#1}{chinese}{\setcounter{gbbiblocalcase}{1}}{}% - \ifstrequal{#1}{english}{\setcounter{gbbiblocalcase}{2}}{}% - } - - \DeclareBibliographyOption[string]{gblocal}[gb7714-2015]{% - \ExecuteBibliographyOptions{gbbiblocal=#1}% - \ExecuteBibliographyOptions{gbcitelocal=#1}% - } - - % - % 增加序号标签格式处理选项 - % v1.0l,20180623,hzz - % - \DeclareBibliographyOption[string]{gbbiblabel}[bracket]{% - \csuse{gbbiblabelopt@#1} - } - - % - % 增加姓名大小写格式处理选项 - % - \DeclareBibliographyOption[string]{gbnamefmt}[uppercase]{% - \ifstrequal{#1}{uppercase}{\setcounter{gbnamefmtcase}{0}}{}% - \ifstrequal{#1}{lowercase}{\setcounter{gbnamefmtcase}{1}}{}% - \ifstrequal{#1}{givenahead}{\setcounter{gbnamefmtcase}{2}}{}%given-family - \ifstrequal{#1}{familyahead}{\setcounter{gbnamefmtcase}{3}}{} - \ifstrequal{#1}{pinyin}{\setcounter{gbnamefmtcase}{4}}{}%family-given - \ifstrequal{#1}{reverseorder}{\setcounter{gbnamefmtcase}{5}}{}%family-given/given-family - } - - - % - % 增加标签对齐选项 - % - % right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 - \DeclareBibliographyOption[string]{gbalign}[right]{% - \ifstrequal{#1}{right}{\setcounter{gbalignlabel}{0}}{} - \ifstrequal{#1}{left}{\setcounter{gbalignlabel}{1}}{} - \ifstrequal{#1}{center}{\setcounter{gbalignlabel}{2}}{} - \ifstrequal{#1}{gb7714-2015}{\setaligngbstyle}{} - } - - - % - % 选项设置 - % - \ExecuteBibliographyOptions{ - %firstinits=true, 针对biblatex<3.3版本的选项设置,比如texlive2015中的3.0版 - giveninits=true, %针对3.3<=biblatex<3.5版本,比如texlive2016中的3.4版 - sorting=none, - useprefix=true, %名字的信息包括前缀 - date = year, %日期仅写到年 - maxbibnames = 3,%设置名字最大数量 - minbibnames = 3, %设置缩减后的名字最小数量 - maxitems = 1,%设置列表最大数量 - minitems = 1, %设置缩减后的列表最小数量 - isbn=false, - gbstyle=true, - gbtype=true, - gbcodegbk=false, - gbstrict=true, - gbtitlelink=false, - gbfieldstd=false, - gbpub=true, - gbpunctin=true, - gbbiblabel=bracket, - gbnamefmt=uppercase, - gbalign=right, - gbctexset=true, - %urldate =edtf, %针对3.7<=biblatex<=3.9版本的选项设置,比如texlive2017中的3.7版 - %eventdate =edtf,%针对3.7<=biblatex<=3.9版本的选项设置,比如texlive2017中的3.7版 - urldate =gb7714-2015, %iso,针对3.10<=biblatex版本的选项设置,比如texlive2018中的3.11版 - eventdate =gb7714-2015, - gblocal=gb7714-2015, - } - - -%===================================================================== -% 设置本地化字符串 -%===================================================================== - % - % 新建当地化字符串,用来记录“等”字符、“和”字符 - % - \NewBibliographyString{andotherscn} - \NewBibliographyString{andothersincitecn} - \NewBibliographyString{andothersincite} - \NewBibliographyString{andcn} - \NewBibliographyString{andothersjp} - \NewBibliographyString{andotherskr} - \NewBibliographyString{andjp} - \NewBibliographyString{andkr} - \NewBibliographyString{andincitecn} - \NewBibliographyString{andincite} - \NewBibliographyString{volumecn} - \NewBibliographyString{numbercn} - \NewBibliographyString{serialcn} - \NewBibliographyString{incn} - \NewBibliographyString{mathesiscn} - \NewBibliographyString{phdthesiscn} - \NewBibliographyString{editorcn} - \NewBibliographyString{editorscn} - - - % - % 修改一些当地化字符串 - % - % 原理方法:直接利用当地化格式english修改出一些中文的格式,具体修改内容参考english.lbx文件 - % 当然也可以增加比如上面定义的andotherscn - % 注意:在lbx文件和bbx文件中定义本地字符串的不同语法,两个参数和一个参数的区别 - \DefineBibliographyStrings{english}{ - bibliography = {\str@bibliography}, - references = {\str@references}, - bytranslator= {\str@bytranslator},%\addperiod,%将trans. by 改成 译 - and = {\addcomma},%将第2和3人名间的and符号改成逗号,用\finalnamedelim命令也可以定义,参见3.9.1节 - andcn = {\addcomma},%and本地化字符串的中文对应词 - andincitecn = {\addcomma},%将标注中的分开,便于与文献表中的区分 - andincite = {\addcomma}, - %andothers = {et al.}, %将超过3个人名的省略,et al.改成为 等 - andotherscn = {\str@andotherscn}, %将超过3个人名的省略,et al.改成为 等 - andothersincitecn={\str@andotherscn},%将标注中的分开,便于与文献表中的区分 - andothersincite={et al\adddot}, - backrefpage = {\str@backrefpage:}, - backrefpages = {\str@backrefpages:}, - in={in\intitlepunct}, - volumecn={\str@volumecn}, - numbercn={\str@numbercn}, - serialcn={\str@serialcn}, - andothersjp={他}, - andotherskr={외}, - andjp={和}, - andkr={和}, - incn={\str@incn\addcolon\addspace}, - mathesiscn={\str@mathesiscn}, - phdthesiscn={\str@phdthesiscn}, - editorscn={\str@editorcn}, - editorcn={\str@editorcn}, -} - - % - % 增加两个命令用于临时的局部的修改本地化字符串 - % 其中\setlocalbibstring修改缩写字符串,setlocalbiblstring修改长字符串 - % 注意使用时因为是局部修改,因此要将其与需要修改的引用命令放在一个编组符号内 - % v1.0t,hzz,20190525 - \newcommand{\setlocalbibstring}[2]{% - \csdef{abx@sstr@#1}{#2}} - \newcommand{\setlocalbiblstring}[2]{% - \csdef{abx@lstr@#1}{#2}} - -%===================================================================== -% 动态数据修改 -%===================================================================== -% -% 各层次的数据映射和动态修改 -% -% 原理方法: -% 1. 进行语言包括中英文判断,并设置和记录,比如记录到userf,usere中 -% 2. 增加文献标识符如[M],[J]等,对一些容易混淆的域进行设置以增强兼容性 -% 3. \DeclareSourcemap命令对于biblatex3.11以下版本只能出现一次,3.11版开始支持多个 -% 4. \DeclarestyleSourcemap在biblatex v3.7版开始可以支持出现多次 -% 5. 把作者和译者信息准确的记录到userf,usere中,用于后面判断是否是cjk字符。 -% 注意:这里用userf,usere而不是namee,namef,是因为只有把name列表转成域,才能有效读取姓名中的字符, -% 如果用namee,namef,name信息会自动解析,所以就不能为cjk判断提供需要的信息 -% -% 不同的文献类型使用相同的驱动输出可以有5种方法: -% 1. 是数据源层的映射,将其它类型转换为某一要使用驱动的类型 -% 2. 是样式层映射,也是将其它类型转换为某一要使用驱动的类型 -% 3. 是驱动层映射,也是将其它类型转换为某一要使用驱动的类型 -% 4. 定义驱动类型别名DeclareBibliographyAlias,将其它类型定义为某一要使用驱动的类型的别名 -% 驱动别名定义本质上是做了驱动层映射 -% 5. 直接定义不同的类型的驱动,但驱动内容相同。 -% -% 关于数据映射和驱动使用的考虑如下: -% 1. 为避免利用biber输出bib文件时的数据变动,尽量不在数据源层映射做类型转换 -% 2. 为减少代码量,尽量少做内容相同的不同类型驱动 -% 3. 因此类型相关的处理主要在样式层映射、驱动层映射、驱动别名 -% 4. 由于biblatex默认做的驱动别名处理可能增加一些信息比如masterthesis转thesis时增加的type -% 可以在样式层映射做某些需要避免这种默认处置的转换 -% 5. 当没有避免默认行为的需求时,全部采用驱动别名的方式处理,等价于驱动层的映射 -% -% 文献类型和驱动考虑如下: -% 1. 连续出版物及析出文献有其特殊性,因此考虑两类periodical和article -% newpaper映射为article,并以note域做区分特殊处理 -% 2. 专著和专著中的析出文献是主要的类型,因此考虑book和inbook -% standard映射为book或inbook,并以note域做区分特殊处理 -% collection和proceedings基本与book类似,因此做book驱动别名处理 -% incollection和inproceedings基本与inbook类似,因此做inbook驱动别名处理 -% 3. 专利类型有其特殊性,考虑patent类型 -% 4. 电子资源类型有其特殊性,考虑online类型 -% 5. 报告类型与book有点类似,出版项处理与book一样,但有时又要有修改和更细日期 -% 因此考虑用一种类型来输出,使用report类型 -% 6. 手册/学位论文等类型与book有点类似,但对于出版项处理时,有缺省时,直接省略, -% 同时有version和edition的区别,因此考虑用一种类型来输出,使用manual类型 -% 7. 包括报告,学位论文在内的其它所有的类型,都做一个判断,当没有出版项时, -% 且存在网址信息时,将其转换为online类型输出,否则都做为manual类型输出。 -% 8. 备选类型misc当存在网址时直接转换为online,由于howpublished域可用于描述 -% 更多的信息,因此不存在网址时,独立做一个备选格式 -% 9. 出版项主要以如下方式处理: -% (a) location+institution+date 仅用于连续出版物 -% (b)publisher+location+date 用于需要完整输出出版项的类型,比如book,collection,proceedings,in*,report -% (c)institution+location+date 用于出版项缺失时不输出的类型,包括manual,thesis,archive等其他类型 -% (d)printlist{insitution} 用于电子资源,仅输出出版者或组织,为数据映射方便,本来默认的organization域转换为用insitution输出。 -% (e) 不输出,主要用于连续出版物析出的文献 -% 10. 日期以如下方式处理: -% date 由于存在biblatex选项,因此通过选项控制,数据源为date解析数据或year -% urldate 由于存在biblatex选项,因此通过选项控制,输出到日,且用[]包围,数据源为urldate -% newsdate 用于公告日期,公开日期或新闻日期,输出到日,但无包围符号,数据源为date -% modifydate 用于更新或修改日期,输出到日,且用()包围,数据源为date或enddate或eventdate - -\DeclareSourcemap{%\perdatasource{examples.bib} -\maps[datatype=bibtex]{% - \map{%当没有作者时将editor转成author - \pernottype{inbook}%因为in系列中editor可能用来表示bookauthor,所以排除 - \pernottype{inproceedings} - \pernottype{incollection} - \pernottype{periodical}%因为peridical直接使用editor,所以排除 - %注意notfield在低版本biblatex中没有 - %\step[notfield=author,final]%当author不存在,将editor复制给author - \step[fieldsource=editor,fieldtarget=author]%并删除editor - } - \map{%当没有作者时将translator转成author - \pernottype{inbook} - \pernottype{inproceedings} - \pernottype{incollection} - %\step[notfield=author,final]%当author不存在,将translator复制给author - \step[fieldsource=translator,fieldtarget=author]%并删除translator - } - \map{%让address和location同步,biblatex中address是location的别名 - %因此输出的时候只有location信息,但处理过程中是可以存在address的。 - \step[notfield=address,final]% - \step[fieldsource=location,final] - \step[fieldset=address,origfieldval] - } - \map{ - \step[notfield=location,final]% - \step[fieldsource=address,final] - \step[fieldset=location,origfieldval] - } - \map{%处理在bib文件用mark标记文献类型标识符的情况 - \step[fieldsource=mark,final] - \step[fieldset=usera, origfieldval] - } - \map{%处理在bib文件中直接给出文献的姓名格式为lowercase的情况 - \step[fieldsource=nameformat,match=lowercase,final] - \step[fieldset=namefmtid,fieldvalue={1}] - } - \map{%处理在bib文件中直接给出文献的姓名格式为givenahead的情况 - \step[fieldsource=nameformat,match=givenahead,final] - \step[fieldset=namefmtid,fieldvalue={2}] - } - \map{%处理在bib文件中直接给出文献的姓名格式为familyahead的情况 - \step[fieldsource=nameformat,match=familyahead,final] - \step[fieldset=namefmtid,fieldvalue={3}] - } - \map{%处理在bib文件中直接给出文献的姓名格式为pinyin的情况 - \step[fieldsource=nameformat,match=pinyin,final] - \step[fieldset=namefmtid,fieldvalue={4}] - } - \map{%根据article确定文献类型标识符 - \pertype{article} - \step[fieldset=usera, fieldvalue={J}] - } - \map{%根据periodical确定文献类型标识符 - \pertype{periodical} - \step[fieldset=usera, fieldvalue={J}] - \step[fieldsource=author] %有时会把author和editor混淆,处理后使用editor - \step[fieldset=editor, origfieldval] - \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{%根据增加一个新闻报纸的类型newspaper确定文献类型标识符 - \pertype{newspaper} - \step[fieldset=usera, fieldvalue={N}] - \step[fieldset=note, fieldvalue=news]%因为没有专门的驱动,记录note方便映射为article后判断 - } - \map{%对应增加的一个数据库类型database确定文献类型标识符 - \pertype{database} - \step[fieldset=usera, fieldvalue={DB}] - \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{%对应增加的一个数据集类型dataset确定文献类型标识符 - \pertype{dataset} - \step[fieldset=usera, fieldvalue={DS}]% - \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{%对应增加的一个软件类型software确定文献类型标识符 - \pertype{software} - \step[fieldset=usera, fieldvalue={CP}] - \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{%对应增加的一个舆图类型map确定文献类型标识符 - \pertype{map} - \step[fieldset=usera, fieldvalue={CM}]% - \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{%对应增加的一个档案类型archive确定文献类型标识符 - \pertype{archive} - \step[fieldset=usera, fieldvalue={A}] - \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{%因为misc类型本身就是没有类型,而不像其它文献有明确的类型,所以 - %当misc类型带有网址时,直接将其转换为online类型 - \pertype{misc} - \step[fieldsource=url,final] - \step[typesource=misc,typetarget=online] - } - \map{%对应增加的一个备选类型misc确定文献类型标识符 - \pertype{misc} - \step[fieldset=usera, fieldvalue={Z}]% - } - \map{ - \pertype{book} - \pertype{inbook} - \step[fieldset=usera, fieldvalue={M}] - \step[fieldsource=version] %有时会把version和edition混淆,处理后直接用edition - \step[fieldset=edition, origfieldval] - } - \map{%兼容老的standard类型,确定文献类型标识符 - \pertype{standard} - \step[fieldset=usera, fieldvalue={S}] - \step[fieldset=note, fieldvalue=standard]%因为没有专门的驱动,记录note方便映射为book和inbook后判断 - } - \map{ - \pertype{patent} - \step[fieldset=usera, fieldvalue={P}] - } - \map{ - \pertype{inproceedings} - \pertype{conference}%兼容老的conference类型 - \step[fieldset=usera, fieldvalue={C}] - \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=publisher, origfieldval] - } - \map{ - \pertype{proceedings} - \step[fieldset=usera, fieldvalue={C}] - \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher - \step[fieldset=publisher, origfieldval] - } - \map{ - \pertype{incollection} - \step[fieldset=usera, fieldvalue={G}] - \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=publisher, origfieldval] - } - \map{ - \pertype{collection} - \step[fieldset=usera, fieldvalue={G}] - \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher - \step[fieldset=publisher, origfieldval] - } - \map{ - \pertype{report} - \pertype{techreport}%兼容老的techreport类型 - \step[fieldset=usera, fieldvalue={R}] - \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher - \step[fieldset=publisher, origfieldval] - } - \map{ - \pertype{thesis} - \pertype{mastersthesis}%兼容老的mastersthesis和phdthesis类型 - \pertype{phdthesis} - \step[fieldset=usera, fieldvalue={D}] - \step[fieldsource=publisher]%有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{ - \pertype{online} - \pertype{electronic}%兼容老的electronic类型 - \pertype{www}%兼容老的www类型 - \step[fieldset=usera, fieldvalue={EB}] - \step[fieldsource=publisher]%有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval]%因为online的出版项处理类似手册 - \step[fieldsource=organization]%有时会把organization和institution混淆,处理后使用institution,以增强兼容性 - \step[fieldset=institution, origfieldval] - } - \map{ - \pertype{manual} - \step[fieldset=usera, fieldvalue={A}] - \step[fieldsource=edition]%有时会把version和edition混淆,处理后使用version - \step[fieldset=version, origfieldval] - \step[fieldsource=publisher]%有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - \step[fieldsource=organization]%有时会把organization和institution混淆,处理后使用institution,以增强兼容性 - \step[fieldset=institution, origfieldval] - } - \map{ - \pertype{unpublished} - \step[fieldset=usera, fieldvalue={Z}] - } - \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 - \step[fieldsource={author}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] - } - \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 - \step[fieldsource={editor}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] - }% - \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 - \step[fieldsource={translator}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] - }% - \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 - \step[fieldsource={bookauthor}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] - }% - \map{%处理一些用year表示date的情况 - %这样处理将会设置date域,并使得labeldatesource变为空,因为date的前缀为空(如果是urldate,那么labeldatesource就是url)。 - %同时date域会被biblatex自动解析为year,month,day,并且覆盖原来的year信息 - \step[fieldsource=year] - \step[fieldset=date, origfieldval] - } - \map{%将entrykey放入keywords中用于后期使用 - \step[fieldsource=entrykey] - \step[fieldset=keywords, origfieldval] - } - \map{\step[fieldsource=title,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF - \step[fieldset=userd,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 - } - \map{% - \step[fieldsource=title,match=\regexp{[\x{0400}-\x{052F}]},final] - \step[fieldset=userd,fieldvalue={russian}]%俄语 - } - \map{% - \step[fieldsource=title,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] - \step[fieldset=userd,fieldvalue={japanese}]%日语 - } %确定形式后可增加类似andotherscn这样的本地化字符串处理 - \map{% - \step[fieldsource=title,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] - \step[fieldset=userd,fieldvalue={korean}]%韩语 - } - \map{%文献题名的中文判断,将信息保存到userd中,避免因为标签生成原因导致title域被清除而产生问题 - \step[fieldsource=title, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]% - \step[fieldset=userd, fieldvalue={chinese}] - } - \map{%将没有设置userd,且存在title域的默认设置为英文 - \step[fieldsource=title,final] - \step[fieldset=userd,fieldvalue={english}] - } - \map{\step[fieldsource=author,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF - \step[fieldset=userf,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 - } - \map{% - \step[fieldsource=author,match=\regexp{[\x{0400}-\x{052F}]},final] - \step[fieldset=userf,fieldvalue={russian}]%俄语 - } - \map{% - \step[fieldsource=author,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] - \step[fieldset=userf,fieldvalue={japanese}]%日语 - } %确定形式后可增加类似andotherscn这样的本地化字符串处理 - \map{% - \step[fieldsource=author,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] - \step[fieldset=userf,fieldvalue={korean}]%韩语 - } - \map{%作者的中文判断 - \step[fieldsource=author, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] - \step[fieldset=userf, fieldvalue={chinese}] - } - \map{%将没有设置userf,且存在author域的默认设置为英文 - \step[fieldsource=author,final] - \step[fieldset=userf,fieldvalue={english}] - } - \map{\step[fieldsource=translator,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF - \step[fieldset=usere,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 - } - \map{% - \step[fieldsource=translator,match=\regexp{[\x{0400}-\x{052F}]},final] - \step[fieldset=usere,fieldvalue={russian}]%俄语 - } - \map{% - \step[fieldsource=translator,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] - \step[fieldset=usere,fieldvalue={japanese}]%日语 - } %确定形式后可增加类似andotherscn这样的本地化字符串处理 - \map{% - \step[fieldsource=translator,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] - \step[fieldset=usere,fieldvalue={korean}]%韩语 - } - \map{%译者的中文判断 - \step[fieldsource=translator, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] - \step[fieldset=usere, fieldvalue={chinese}] - } - \map{%将没有设置usere,且存在translator域的默认设置为英文 - \step[fieldsource=translator,final] - \step[fieldset=usere,fieldvalue={english}] - } - \map{\step[fieldsource=editor,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF - \step[fieldset=userc,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 - } - \map{% - \step[fieldsource=editor,match=\regexp{[\x{0400}-\x{052F}]},final] - \step[fieldset=userc,fieldvalue={russian}]%俄语 - } - \map{% - \step[fieldsource=editor,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] - \step[fieldset=userc,fieldvalue={japanese}]%日语 - } %确定形式后可增加类似andotherscn这样的本地化字符串处理 - \map{% - \step[fieldsource=editor,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] - \step[fieldset=userc,fieldvalue={korean}]%韩语 - } - \map{%编者的中文判断 - \step[fieldsource=editor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 - \step[fieldset=userc, fieldvalue={chinese}] - } - \map{%将没有设置userc,且存在editor域的默认设置为英文 - \step[fieldsource=editor,final] - \step[fieldset=userc,fieldvalue={english}] - } - \map{\step[fieldsource=bookauthor,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF - \step[fieldset=userb,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 - } - \map{% - \step[fieldsource=bookauthor,match=\regexp{[\x{0400}-\x{052F}]},final] - \step[fieldset=userb,fieldvalue={russian}]%俄语 - } - \map{% - \step[fieldsource=bookauthor,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] - \step[fieldset=userb,fieldvalue={japanese}]%日语 - } %确定形式后可增加类似andotherscn这样的本地化字符串处理 - \map{% - \step[fieldsource=bookauthor,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] - \step[fieldset=userb,fieldvalue={korean}]%韩语 - } - \map{%编者的中文判断 - \step[fieldsource=bookauthor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 - \step[fieldset=userb, fieldvalue={chinese}] - } - \map{%将没有设置userc,且存在editor域的默认设置为英文 - \step[fieldsource=bookauthor,final] - \step[fieldset=userb,fieldvalue={english}] - } - \map{\step[fieldsource=userd,final]%userd存在则用根据标题的语言设定language - \step[fieldset=language,origfieldval]%本身language存在则不设定 - } - \map{\step[fieldsource=userf,final]%userd不存在,而userf存在则根据author的语言设定language - \step[fieldset=language,origfieldval] - }%如果没有作者和标题,那么剩下的最可能有意义的只有网址了,而网址通常是英文的,因此不用再进一步对其它域进行判断了。 - \map{%将没有设置的language设置成en,即认为不是中文的就是英文的。 - \step[fieldset=language,fieldvalue={english}] - } - \map{%一条文献的语言已经设定在language域中,由于出版项相关宏中使用userd判断, - %所以将一条文献的主体语言设定到userd中,本身前面userd已经设定,但没有处理无标题的情况, - %这里的处理等价于没有标题时,利用作者的语言设定userd,再没有作者,则默认用英文设定userd - \step[fieldsource=language] - \step[fieldset=userd,origfieldval] - } - \map{%当文献给出language域时,设置文献要使用的本地化字符串的语言 - \step[fieldsource=language,match=\regexp{(e|E)(n|N)(g|G)(l|L)(i|I)(s|S)(h|H)},final] - \step[fieldset=langid,fieldvalue={english}] - } - \map{ - \step[fieldsource=language,match=\regexp{(r|R)(u|U)(s|S)(s|S)(i|I)(a|A)(n|N)},final] - \step[fieldset=langid,fieldvalue={russian}] - } - \map{% - \step[fieldsource=language,match=\regexp{(f|F)(r|R)(e|E)(n|N)(c|C)(h|H)},final] - \step[fieldset=langid,fieldvalue={french}] - } - \map{% - \step[fieldsource=language,match=\regexp{(c|C)(h|H)(i|I)(n|N)(e|E)(s|S)(e|E)},final]%中日韩语目前都用english, - \step[fieldset=langid,fieldvalue={english}] - } - \map{% - \step[fieldsource=language,match=\regexp{(j|J)(a|A)(p|P)(a|A)(n|N)(e|E)(s|S)(e|E)},final]%中日韩语目前都用english, - \step[fieldset=langid,fieldvalue={english}] - } - \map{% - \step[fieldsource=language,match=\regexp{(k|K)(o|O)(r|R)(e|E)(a|A)(n|N)},final]%中日韩语目前都用english, - \step[fieldset=langid,fieldvalue={english}] - } -} -} - - - % - % 修改输入的参考文献数据,样式层的操作 - % - % 原理方法:biblatex3.4以上版本map可使用foreach选项来处理特殊字符 - \DeclareStyleSourcemap{ - \maps[datatype=bibtex]{ - \map{%尝试未定义数据模型的standard类型映射为其他类型book或inbook, - %standard类型在blx-dm中有出现,但仅定义了类型,域和约束等都没有定义 - %因为可能要映射两种类型,所以不能在驱动层处理,因为要做判断 - \step[fieldsource=booktitle,final]%当存在booktitle域是映射为inbook - \step[typesource=standard, typetarget=inbook, final] - } - \map{%尝试未定义数据模型的standard类型映射为book,standard类型在blx-dm中有出现,但仅定义了类型,域和约束等都没有定义 - \step[typesource=standard, typetarget=book, final]%当不存在booktitle域是映射为book - } -% \map{%先于标准样式的driver层映射,将其先映射过来,并取消type设置 -% \step[typesource=mastersthesis, typetarget=thesis, final] -% %\step[fieldset=type, fieldvalue=mathesis] -% } -% \map{%先于标准样式的driver层映射,将其先映射过来,并取消type设置 -% \step[typesource=phdthesis, typetarget=thesis, final] -% %\step[fieldset=type, fieldvalue=phdthesis] -% } - \map{%先于标准样式的driver层映射,将其先映射过来,并取消type设置 - \step[typesource=techreport, typetarget=report, final] - %\step[fieldset=type, fieldvalue=techreport] - } - \map{% - \pertype{report} - \step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=report,typetarget=online] - \step[fieldset=note,fieldvalue={report}] - } - \map{% - \pertype{thesis} - \step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=thesis,typetarget=online] - } - \map{% - \pertype{manual} - \step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=manual,typetarget=online] - } - \map{% - \pertype{unpublished} - \step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=unpublished,typetarget=online] - } - \map{% - \pertype{database} - \step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=databasetypetarget=online] - } - \map{% - \pertype{dataset} - \step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=dataset,typetarget=online] - } - \map{% - \pertype{software} - \step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=software,typetarget=online] - } - \map{% - \pertype{map} - \step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=map,typetarget=online] - } - \map{% - \pertype{archive} - \step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=archive,typetarget=online] - } - \map[overwrite]{%这里还必须有overwrite,注意不同版本存在差异,比如texlive2015变16后biber有变化(20161207修改正确) - \step[fieldsource=note, final]%将note域信息复制给keywords,用于输出时容易区分标准和报纸 - \step[fieldset=keywords, fieldvalue={,}, append] - \step[fieldset=keywords, origfieldval, append] - } - \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}] - } - } - } - -% -%驱动别名等价于驱动层映射 -% -\DeclareBibliographyAlias{newspaper}{article}% -\DeclareBibliographyAlias{inproceedings}{inbook}%会议论文文献类型驱动 -\DeclareBibliographyAlias{conference}{inbook}%会议论文文献类型驱动 -\DeclareBibliographyAlias{incollection}{inbook}%文集中析出文献类型驱动 -\DeclareBibliographyAlias{collection}{book}%%文集类型驱动 -\DeclareBibliographyAlias{proceedings}{book}%会议论文集文献类型驱动 -\DeclareBibliographyAlias{thesis}{manual}%学位论文驱动 -\DeclareBibliographyAlias{unpublished}{manual}%其它类型驱动 -\DeclareBibliographyAlias{database}{manual} -\DeclareBibliographyAlias{dataset}{manual} -\DeclareBibliographyAlias{software}{manual} -\DeclareBibliographyAlias{map}{manual} -\DeclareBibliographyAlias{archive}{manual} - - -%===================================================================== -% 参考文献表环境 -%===================================================================== -% -% 列表格式 -% -% 增加一个\bibitemindent尺寸用于控制list环境的itemindent -% v1.0l,20180615,hzz -% v1.0t,20200319,hzz,增加尺寸\biblabelextend使某些字体下标签宽度不足时可增加标签宽度 -\setlength{\bibhang}{\biblabelsep}% -\newlength{\bibitemindent} -\setlength{\bibitemindent}{0pt} -\newlength{\biblabelextend} -\setlength{\biblabelextend}{0pt} - - -\defbibenvironment{bibliography} - {\list - {\printtext[labelnumberwidth]{% - \printfield{labelprefix}% - \printfield{labelnumber}}} - {\addtolength{\labelnumberwidth}{\biblabelextend}% - \setlength{\labelwidth}{\labelnumberwidth}% - \setlength{\labelsep}{\biblabelsep}% - \setlength{\leftmargin}{\bibhang}% - \addtolength{\leftmargin}{\labelnumberwidth}% - \setlength{\itemindent}{\bibitemindent}% - \setlength{\itemsep}{\bibitemsep}% - \setlength{\parsep}{\bibparsep}}% - \renewcommand*{\makelabel}[1]{\hss##1}} - {\endlist} - {\item} - -% -% 顺序编码制-标签对齐方式处理 -% -% 原理方法:利用选项提供的计数器数值做选择 -% 左对齐,右对齐为list环境下的处理,此时list环境的\labelwidth只能设置一个,是最宽标签的宽度 -% 项对齐则是在段落环境下做的处理。 -% 左对齐时,参考文献各项内容对齐,序号标签与参考文献项内容的间距可变 -% 右对齐时,参考文献各项内容对齐,序号标签与参考文献项内容的间距相等,标签与页边距离可变 -% 项对齐时,序号标签贴在页边,序号标签与参考文献项内容的间距相等 -% 修改序号标签格式为: -% \DeclareFieldFormat{shorthandwidth}{\mkbibbrackets{#1}} %源来自numeric.BBX -% \DeclareFieldFormat{labelnumberwidth}{\ttfamily\mkbibbrackets{#1}\hfill} -\DeclareFieldFormat{labelnumberwidth}{% -\ifcase\value{gbalignlabel}%右对齐,整个标签为右对齐 - \mkgbnumlabel{#1}% -\or%左对齐,整个标签为左对齐 - \mkgbnumlabel{#1}\hfill% -\or%中间对齐,比如:序号数字居于[]中间 - \hfil\mkgbnumlabel{\hfill#1\hfill}\hfil% -\fi} - -% -% 修改序号标签格式为以各条参文献为基础进行对齐的方式,即序号与条目内容间隔相等的方式。 -\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 - {}} -\newlength{\lengthid} -\newlength{\lengthlw} -\newcommand{\itemcmd}{% -\settowidth{\lengthid}{\mkgbnumlabel{\printfield{labelnumber}}} -\addtolength{\lengthid}{\biblabelsep} -\setlength{\lengthlw}{\textwidth} -\addtolength{\lengthlw}{-\lengthid} -\addvspace{\bibitemsep}%恢复\bibitemsep的作用 -%\parshape 2 0em \textwidth \lengthid \lengthlw -\hangindent\lengthid -\mkgbnumlabel{\printfield{labelnumber}}% -\hspace{\biblabelsep}} -% -% 简单的段落环境 -\defbibenvironment{bibliography} -{\begingroup\setlength{\parindent}{0em}} -{\endgroup} -{\itemcmd}} - - -%===================================================================== -% 设置单元或块等的标点 -%===================================================================== -\renewrobustcmd*{\bibinithyphendelim}{\addhighpenspace}%用于处理姓名中名部分存在-的情况,比如ZHANG Yu-xin -\renewcommand*{\subtitlepunct}{\addcolon\addspace} %修改标题和其它标题信息间的标点,来源biblatex.def, -% -% 利用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}%%页码引用格式的修改,修改为用冒号 -%\renewcommand{\relateddelim}{}%\par - -%===================================================================== -% 修改域的格式,重定义域的输出宏 -%===================================================================== -% -% 新增文献类型标识符的格式 -% []前的nobreak,从GB4.1节的例子看不应该加,所以去掉 -% 但因为考虑到cjk字符和[]之间可能添加空格,所以仍然加上 -% 而[]中间的内容,从4.6.2节的例子看也是可以分割的,因此内部的nobreak也可以去掉 -% -\DeclareFieldFormat{gbtypeflag}{% -\iftoggle{bbx:gbmedium}% -{\iftoggle{bbx:url}% - {\iffieldundef{url}%当存在url时,增加一个OL标识符 - {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}}% - {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\texttt{/}OL]}}% - }% - {\ifentrytype{online}% - {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\texttt{/}OL]}}% - {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}}% - }}% - {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{]}}% -} - -% -% 新增用于报纸的文献类型标识符的格式 -% -\DeclareFieldFormat{gbtypeflagn}{%用于报纸newspaper -\iftoggle{bbx:gbmedium}% -{\iftoggle{bbx:url}% - {\iffieldundef{url}%当存在url时,增加一个OL标识符 - {\nobreak\printtext{[}\nobreak N\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% - {\nobreak\printtext{[}\nobreak N\printtext{\texttt{/}OL]}\nobreak}% - }% - {\nobreak\printtext{[}\nobreak N\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% -}{\nobreak\printtext{[}\nobreak N\printtext{]}\nobreak}% -} - -% -% 新增用于标准的文献类型标识符的格式 -% -\DeclareFieldFormat{gbtypeflags}{%用于标准standard -\iftoggle{bbx:gbmedium}% -{\iftoggle{bbx:url}% - {\iffieldundef{url}%当存在url时,增加一个OL标识符 - {\nobreak\printtext{[}\nobreak S\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% - {\nobreak\printtext{[}\nobreak S\printtext{\texttt{/}OL]}\nobreak}% - }% - {\nobreak\printtext{[}\nobreak S\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% -}{\nobreak\printtext{[}\nobreak S\printtext{]}\nobreak}% -} - -% -% 重设title等参考文献信息的输出格式 -% -% 原理方法:修改来自biblatex.def文件的原格式 -\newcommand{\bibtitlefont}{} -\newcommand{\bibauthorfont}{} -\newcommand{\bibpubfont}{} - -% -% 作者信息的输出格式 -% -% 20180425,v1.0k,为作者增加字体控制命令,Hu Zhenzhen -% 20180603,v1.0l,增加使用nameformat域来选择姓名格式 -\DeclareNameFormat{namefmtselected}{% -\iffieldundef{namefmtid}{}% -{\defcounter{gbnamefmtcase}{\thefield{namefmtid}}}% -\ifcase\value{gbnamefmtcase}% - \ifgiveninits - {\usebibmacro{name:gbuppercase} - {\namepartfamily} - {\namepartgiveni} - {\namepartprefix} - {\namepartsuffix}} - {\usebibmacro{name:gbuppercase} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}}% -\or - \ifgiveninits - {\usebibmacro{name:gblowercase} - {\namepartfamily} - {\namepartgiveni} - {\namepartprefix} - {\namepartsuffix}} - {\usebibmacro{name:gblowercase} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}}% -\or - \ifgiveninits - {\usebibmacro{name:given-family} - {\namepartfamily} - {\namepartgiveni} - {\namepartprefix} - {\namepartsuffix}} - {\usebibmacro{name:given-family} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}}% -\or - \ifgiveninits - {\usebibmacro{name:family-given} - {\namepartfamily} - {\namepartgiveni} - {\namepartprefix} - {\namepartsuffix}} - {\usebibmacro{name:family-given} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}}% -\or -\usebibmacro{name:gbpinyin} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}% -\or - \ifnumequal{\value{listcount}}{1} - {\ifgiveninits - {\usebibmacro{name:family-given} - {\namepartfamily} - {\namepartgiveni} - {\namepartprefix} - {\namepartsuffix}} - {\usebibmacro{name:family-given} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}}% - \ifboolexpe{% - test {\ifdefvoid\namepartgiven} - and - test {\ifdefvoid\namepartprefix}} - {} - {\usebibmacro{name:revsdelim}}} - {\ifgiveninits - {\usebibmacro{name:given-family} - {\namepartfamily} - {\namepartgiveni} - {\namepartprefix} - {\namepartsuffix}} - {\usebibmacro{name:given-family} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}}}% -\fi - \usebibmacro{name:andothers}} - -\DeclareNameAlias{default}{namefmtselected}%姓名的默认格式采用可选的模式 -\DeclareNameAlias{sortname}{default}% Used in the bibliography %family-given/given-family -\DeclareNameAlias{citename}{default}% Default used by \citename - -\DeclareDelimFormat[bib,biblist]{andothersdelim}{\addcomma\addspace} -%\DeclareDelimFormat[textcite]{andothersdelim}{\addspace}% - -%GB/T 7714-2015 风格,全部大写 -\newbibmacro*{name:gbuppercase}[4]{\bibauthorfont% -\renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 -\renewcommand*{\revsdnamepunct}{}% - \ifuseprefix% - {\usebibmacro{name:delim}{#3#1}% - \usebibmacro{name:hook}{#3#1}% - \ifdefvoid{#3}{}{% - \ifcapital% - {\mkbibnameprefix{\MakeCapital{#3}}\isdot}% - {\mkbibnameprefix{#3}\isdot}% - \ifprefchar{}{\bibnamedelimc}}% - \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% - \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital - \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%后缀前加逗号 - {\usebibmacro{name:delim}{#1}% - \usebibmacro{name:hook}{#1}% - \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% - \ifboolexpe{% - test {\ifdefvoid{#2}} - and - test {\ifdefvoid{#3}}} - {}{\revsdnamepunct}% - \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital - \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}% - \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号 -} - -%GB/T 7714-2015 风格,大小写不变,根据bib文件内输入原样输出 -\newbibmacro*{name:gblowercase}[4]{\bibauthorfont% - \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 - \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def - \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}{}{\addcomma\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}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号 -} - -%中文常见风格,汉语拼音全拼模式 -\newbibmacro*{name:gbpinyin}[4]{\bibauthorfont% -\renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉,%来源biblatex2.STY -\renewcommand*{\revsdnamepunct}{}%%来源biblatex.def -\renewrobustcmd*{\bibnamedelima}{\mbox{-}}% - \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}}% -} - - -\def\UrlFont{\rmfamily}%设置url字体为roman字体%\ttfamily -%\urlstyle{rm} %使用这句也一样 -\setcounter{biburlnumpenalty}{100} %让url可以在数字后断行 -\setcounter{biburlucpenalty}{100} %让url可以在大写字母后断行 -\setcounter{biburllcpenalty}{100} %让url可以在小写字母后断行 -\DeclareFieldFormat{doi}{% - \rmfamily{DOI}\addcolon\space - \ifhyperref - {\href{https://doi.org/#1}{\nolinkurl{#1}}} - {\nolinkurl{#1}}} - -\DefineBibliographyExtras{english}{\renewcommand*{\bibrangedash}{-}}%将页码间隔符替换会英文的短横线 - -% -% beamer中文献标题后的标点问题 -% v1.0k,20180405,为texlive2017以上版本中的beamer兼容性做的处理,Hu Zhenzhen -% -% 原理方法:如下代码处理texlive2017以上版本中,beamer中文献的标题后出现两个点的情况: -% texlive2017以上的beamer中对macro{title}做了patch,正常情况下不会出现两个点的情况,但由于 -% 之前为了处理texlive2015,2016下的title格式添加了adddot,导致出现两个点的情况,而且也影响 -% 析出文献的//符号的输出,因此再次对macro{title}做patch消除beamer中做apptocmd时添加的\newunitpunct -\@ifclassloaded{beamer}{ - \DeclareFieldFormat{title}{#1}% - \DeclareFieldFormat[article,patent,thesis,unpublished]{title}{#1} - \AtBeginDocument{% - \patchcmd{\abx@macro@title}{\newunitpunct}{}{}{}}}{} - - - % - % 专利的公告日期、或报纸的日期的输出宏 - % 20160701,v1.0,新增加 - % 20180405,为biblatexv3.10版本,出现多出点bug做处理,Hu Zhenzhen - % - % 原理方法:加上printtext避免破坏异步标点机制 - % 本可以用\printdate,但由于date选项设置为year,所以仅会给出年份 - % 所以无法再用选项设置的方法,印象需要用底层的命令 - % 这里可以用\blx@isodate,但用自定义的\blx@gbdate,以避免版本判断 - \newbibmacro*{newsdate}{%% - \printtext{\blx@gbdate{}{}}%%\blx@isodate{}{}% - } - - \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 - \ifboolexpr{% - test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}% - }% - {}%更新或修改日期通常有day信息 - {\iffieldundef{year}{% - \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{(}\printeventdate\printtext{)}}}% - {\printtext{(}\printenddate\printtext{)}}% - }{\iffieldequalstr{year}{}{%因为year存在,但为空 - }{\printtext{(}\blx@gbdate{}{}\printtext{)}}% - }% - }}% - - - % - % biblatex>v3.8版利用related实现双语文献的处理 - % - %为了实现v3.8以上版本的双语文献,采用related的方法代替set方法,因为set方法已经无法实现了, - %因为set不再复制其第一个成员的信息。于是定义一个命令,用于动态的修改数据,即添加related域的信息 - %其中使用了\DeclareStyleSourcemap,但由于其只能出现在导言区中,因此\defdoublelangentry命令也只能出现在导言区中 - \newcommand{\defdoublelangentry}[2]{% - \edef\entrykeya{#1} - \edef\entrykeyb{#2} - \DeclareStyleSourcemap{ - \maps[datatype=bibtex]{ - \map{ - \step[fieldsource=entrykey, match=\entrykeya, final] - \step[fieldset=related, fieldvalue=\entrykeyb] - } - } - } - } - - % 关联文献的输出格式 - % - % 关联文献间的分隔符 - % - \renewcommand{\relateddelim}{\adddot\newline\nobreak}%\par,而作者年样式不需要修改,因为没有项对齐的标签问题 - % - % 关联文献块前的分隔符,针对biblatex>3.11 - % - % 原理方法:因为增加了begrelateddelim钩子,所以不需要重定义related输出宏 - \ifdef{\begrelateddelim}{\renewcommand{\begrelateddelim}{\adddot\newline\nobreak}}{} - - - -% -% 新增一个样式用于调整期刊年份的格式,只打印年份 -% -\newbibmacro*{periodical+issue}{% - \printtext{%去掉了[parens] - \iffieldundef{issue} - {%\usebibmacro{date}%修改为下一句 - }% - {\printfield{issue}% - \setunit*{\addspace}% - %\usebibmacro{date}%修改为下一句 - }% - }% - %\newunit -} - -% -% 重设专利title的输出,将文献类型标识符输出出去 -% -\renewbibmacro*{patenttitle}{%原输出来自biblatex.def文件 - \ifboolexpr{% - test{\iffieldundef{title}}% - and% - test{\iffieldundef{subtitle}}% - }% - {}% - {\printtext[title]{\bibtitlefont% - \printfield[titlecase]{title}% - \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题 - {}{\setunit{\subtitlepunct}% - \printfield[titlecase]{subtitle}}% - \iffieldundef{titleaddon}{}%判断一下titleaddon,否则直接加可能多一个空格 - {\setunit{\subtitlepunct}\printfield{titleaddon}}% - \setunit{\subtitlepunct}\printfield{number}%写专利号 - \iftoggle{bbx:gbtype}{\printfield[gbtypeflag]{usera}}{}% - %\iffieldundef{booktitle}{\newunit}{}%当title是析出时,不要标点 - %\newunit - }% -}% -} - -% -% 编者类型的本地化字符串输出 -% v1.0q 2019-03-01 hzz -% 能对不同条目类型作格式设置的域格式,能对不同环境做格式设置的分隔符 -% 能对不同文境作设置的包括排序,标签等 -% 这里因为考虑可能标注和文献表中存在不同,所以用分隔符来输出本地化字符串 -% -\DeclareDelimFormat{streditortypes}{% - \edef\userfieldabcde{userd}% - \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% - \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% - \ifcase\value{gbbiblocalcase}% - \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{\thefield{editortype}scn}}{}% - \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{\thefield{editortype}skr}}{}% - \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{\thefield{editortype}sjp}}{}% - \iffieldequalstr{\userfieldabcde}{english}{\addcomma\addthinspace\bibstring{\thefield{editortype}s}}{}% - \iffieldequalstr{\userfieldabcde}{french}{\addcomma\addthinspace\bibstring{\thefield{editortype}s}}{}% - \iffieldequalstr{\userfieldabcde}{russian}{\addcomma\addthinspace\bibstring{\thefield{editortype}s}}{}% - \or% - \bibstring{\thefield{editortype}scn}% - \or% - \addcomma\addthinspace\bibstring{\thefield{editortype}s}% - \fi}% -% -\DeclareDelimFormat{streditortype}{% - \edef\userfieldabcde{userd}% - \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% - \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% - \ifcase\value{gbbiblocalcase}% - \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{\thefield{editortype}cn}}{}% - \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{\thefield{editortype}kr}}{}% - \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{\thefield{editortype}jp}}{}% - \iffieldequalstr{\userfieldabcde}{english}{\addcomma\addthinspace\bibstring{\thefield{editortype}}}{}% - \iffieldequalstr{\userfieldabcde}{french}{\addcomma\addthinspace\bibstring{\thefield{editortype}}}{}% - \iffieldequalstr{\userfieldabcde}{russian}{\addcomma\addthinspace\bibstring{\thefield{editortype}}}{}% - \or% - \bibstring{\thefield{editortype}cn}% - \or% - \addcomma\addthinspace\bibstring{\thefield{editortype}}% - \fi}% - - -% -% 修改series域的输出格式 -% 2019.05.01,v1.0r,byhzz -\renewbibmacro*{series+number}{% - \printfield{series}% - %\setunit*{\addspace}% - %\printfield{number}% - %\newunit - } - -%===================================================================== -%设置驱动格式 -%===================================================================== - -%中文环境的局部化代码 -\def\localsetchinesecode{% -\ifboolexpr{% -togl{bbx:gbstyle} or test {\iffieldequalstr{userd}{chinese}}% -}% -{% -\iftoggle{bbx:gbfieldstd}{}{% -\DeclareFieldFormat{title}{##1\adddot\addthinspace}% -\DeclareFieldFormat{journaltitle}{##1\isdot}%添加\isdot用于缩写名带点情况,将其转换为缩写点,便于标点的追踪 -\DeclareFieldFormat{issuetitle}{##1}% -\DeclareFieldFormat{maintitle}{##1}% -\DeclareFieldFormat{booktitle}{##1}% -\DeclareFieldFormat%将期刊等文献的标题中原来带的引号去掉 - [article,patent,thesis,unpublished]% - {title}{##1\adddot\addthinspace}%\mkbibquote{##1\isdot} -\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{titlecase}{\iftoggle{bbx:titlelink}{% -\iffieldundef{url}{\MakeCapital##1}{% -\href{\thefield{url}}{##1}}}{\MakeCapital##1}}%重设标题格式,将其修改为首字母大写 -\DeclareFieldFormat{pages}{##1}%去掉前面引导页码的pp.等字符,\mkpageprefix[bookpagination]{##1} -}% -% -% 修改译者位置格式 -% -% 原理方法:修改来自biblatex.def文件的bytranslator+others宏的格式 -\renewbibmacro*{bytranslator+others}{% - \ifnameundef{translator}% - {}% - {%\usebibmacro{bytranslator+othersstrg} - %\setunit{\addspace}% - \printnames[bytranslator]{translator}% - \clearname{translator}% - %从macro*{bytranslator+othersstrg}%中可以看到当地化字符串格式的引用前的代码处理 - %比如生成cotranslator等用于调用cotranslator所代表的当地化字符串 - \usebibmacro{bytranslator+othersstrg}%“译”的位置换到下面来,即放到译者后面。 - %\setunit{\addspace}% - \newunit}% - \usebibmacro{withothers}}% -% -% 修改作者数量超过限定值,做省略时的处理格式 -% v1.0,20160701,hzz -% v1.0O,20190103,hzz,修改利用新定义的一个分隔符strandothersdelim -% -% 原理方法:判断作者或译者是否中文,若中文用字符等,否则用et al. 。 -\renewbibmacro*{name:andothers}{% - \ifboolexpr{% - test {\ifnumequal{\value{listcount}}{\value{liststop}}}% - and - test \ifmorenames - }{\ifnumgreater{\value{liststop}}{1}% - {\finalandcomma}% - {}% -\printdelim{andothersdelim}\printdelim{strandothersdelim}% -}{%当是译者的时候需要特殊处理:从7.2节看等,译前面加逗号,但从示例看等和译同时出现时,译前的逗号没有,比如: -%袁训来, 陈哲, 肖书海, 等. -%胡泳, 范海燕, 译. -%潘惠霞, 魏婧, 杨艳, 等译. -\ifcurrentname{translator}{\addcomma\addthinspace}{}%为了实现上述第二个示例情况做的处理 -}}% -% -% 修改省略作者后的本地化字符串,比如et al. -% v1.0o,20190103,hzz -% -% 原理方法:默认情况下判断作者或译者是否中文,若中文用字符andotherscn=“等”,否则用andothers=“et al.”。 -% 非默认情况,根据选项信息,选择选择强制中文或英文 -% 首先设置全局的,然后设置文献表中的,这一等价于将所有的cite命令环境都设置过了 -% 而不用对每一个引用命令单独设置,比如cite,parancite,textcite都设置 -\DeclareDelimFormat{strandothersdelim}{% - \edef\userfieldabcde{userd}% - \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% - \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% - \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% - \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% - \ifcase\value{gbbiblocalcase}% - \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andotherscn}}{}% - \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andotherskr}}{}% - \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andothersjp}}{}% - \iffieldequalstr{\userfieldabcde}{english}{\bibstring{andothers}}{}% - \iffieldequalstr{\userfieldabcde}{french}{\bibstring{andothers}}{}% - \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{andothers}}{}% - \or% - \bibstring{andotherscn}% - \or% - \bibstring{andothers}% - \fi}% -% -% 修改最后一个作者前的字符串,比如 and -% v1.0o,20190103,hzz -% -% 原理方法:默认情况下判断作者或译者是否中文,若中文用字符andcn=“和”,否则用and=“and”。 -% 非默认情况,根据选项信息,选择选择强制中文或英文 -% 首先设置全局的,然后设置文献表中的,这一等价于将所有的cite命令环境都设置过了 -% 而不用对每一个引用命令单独设置,比如cite,parancite,textcite都设置 -\DeclareDelimFormat{finalnamedelim}{% - \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}% - \addspace% - \edef\userfieldabcde{userd}% - \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% - \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% - \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% - \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% - \ifcase\value{gbbiblocalcase}% - \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andcn}}{}% - \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andkr}}{}% - \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andjp}}{}% - \iffieldequalstr{\userfieldabcde}{english}{\bibstring{and}}{}% - \iffieldequalstr{\userfieldabcde}{french}{\bibstring{and}}{}% - \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{and}}{}% -\space% - \or% - \bibstring{andcn}\space% - \or% - \bibstring{and}\space% - \fi}% -% -% url和url日期格式 -% - \renewbibmacro*{url+urldate}{% - %\usebibmacro{url}%%更换url的位置,放到下面 - \iffieldundef{urlyear}% - {}{%\setunit*{\addspace}% - \usebibmacro{urldate}}% - \setunit{\addperiod\addspace}% - \usebibmacro{url}}% - \renewbibmacro*{url}{\printfield{url}}% -% -% 重设title的输出 -% -% 20180425,v1.0k,为标题增加字体控制命令,Hu Zhenzhen -% 原理方法:将文献类型标识符输出出去,原输出来自biblatex.def文件 -% 利用toggle做标识符是否输出的判断 -\renewbibmacro*{title}{% - \ifboolexpr{% - test{\iffieldundef{title}}% - and - test{\iffieldundef{subtitle}}% - }% - {}% - {\printtext[title]{\bibtitlefont%增加字体控制命令 - \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.7版本 -% -\DeclareFieldFormat{urldate}{##1}% -\renewbibmacro*{urldate}{% -\addthinspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 -% -% 调整doi+eprint+url格式 -% -% 原理方法:源来自standard.bbx,因为页码后面直接跟引用日期,没有标点所以去掉其中的标点。 -\renewbibmacro*{doi+eprint+url}{% -% \iftoggle{bbx:doi}%把doi的位置放到url后面 -% {\printfield{doi}} -% {}% - %\newunit\newblock - \iftoggle{bbx:eprint} - {\iffieldundef{eprint}{}{\newunit\usebibmacro{eprint}}} - {}% - %\newunit\newblock - \iftoggle{bbx:url} - {\usebibmacro{url+urldate}} - {} - \newunit\newblock - \iftoggle{bbx:doi} - {\printfield{doi}} - {}}% -% -% 调整页码的格式,即chapter+pages格式 -% -\renewbibmacro*{chapter+pages}{% -\iftoggle{bbx:gbstrict}{}{% - \printfield{chapter}}% - \iffieldundef{pages}{}{%这里增加一个判断,当没有页码时就不输出 - \setunit{\bibpagespunct}% - \printfield{pages}}% - %\newunit %这里的标点去掉 -}% -% -% 当location等出版项超过maxitem缩减后不再输出etal -% -\DeclareListFormat{location}{% - \usebibmacro{list:delim}{##1}% - ##1\isdot}% -\DeclareListAlias{institution}{location}% -\DeclareListAlias{publisher}{location}% -% 新增一个样式用于输出连续出版物的地址,单位,时间, -% 用于periodical连续出版物的出版社和地址的处理 -% -% v1.0k,20180425,为出版信息增加字体控制命令,hzz -% %类似\newbibmacro*{publisher+location+date} -\newbibmacro*{location+institution+date}{\bibpubfont% -\iftoggle{bbx:gbpub}% -{\testCJKfirst{userd}% -\ifboolexpr{% -test {\iflistundef{location}} and test {\iflistundef{institution}}% -}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress}\space :\space\str@nopublisher]}% -{\printtext{[S.l.\space :\space s.n.\adddot]}}% -}{% -\iflistundef{location}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress]}}{\printtext{[S.l.\adddot]}}}% - {\printlist{location}}% -\addcolon\addspace% -\iflistundef{institution}{% -\iftoggle{ifCJKforgbt}{\printtext{[\str@nopublisher]}}{\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}% -}% -% -% 通用的出版社和地址的处理 -% -% 原理方法:当没有出版社地址时,直接判断title的信息是否是中文,若为中文,则写出版地不详,否则用英文的字符表示。 -% 事实上title对于每个文献来说是必须的,所以用它判断是最快的,而且一般标题和出版社的语言是一样的。 -% 注意标准standard类型,因为当没有出版项时直接省略,所以做特殊处理 -\renewbibmacro*{publisher+location+date}{\bibpubfont% -\iftoggle{bbx:gbpub}% -{\testCJKfirst{userd}% - \ifboolexpr{ test {\iflistundef{location}} and test {\iflistundef{publisher}} }% - {\iffieldequalstr{note}{standard}{}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress}\space :\space\str@nopublisher]}{\printtext{[S.l.\space :\space s.n.\adddot]}}}}% - {\iflistundef{location}{%\adddot - \iffieldequalstr{note}{standard}{}%%从gbt7714-2015标准第19页看到,标准存在出版项时输出,没有时完全省略。 - {\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress]}\addcolon\addspace}{\printtext{[S.l.\adddot]}\addcolon\addspace}}}% \bibstring{noaddress} - {\printlist{location}\addcolon\addspace}%%\addcolon\addspace% - \iflistundef{publisher}{% - \iffieldequalstr{note}{standard}{}% - {\iftoggle{ifCJKforgbt}{\printtext{[\str@nopublisher]}\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 - }% -}% -% -% 修改了一个institution+location+date用于manual、report、thesis等类型 -% -% 20180425,v1.0k,增加了字体控制命令,hzz -% 20190105,v1.0o,加了一个编组避免\usebibmacro{date}把month和day信息去掉 -\renewbibmacro*{institution+location+date}{\bibpubfont%当没有institution时不处理。 -{\printlist{location}%%加了一个编组避免\usebibmacro{date}把month和day信息去掉 - \iflistundef{institution} - {\setunit*{\addcomma\space}} - {\setunit*{\addcolon\space}}% - \printlist{institution}% - \setunit*{\addcomma\space}% - \usebibmacro{date}% - %\newunit - }}% -% -% 对volume卷信息格式做出修改 -% v1.0o,20190105,hzz -% -\DeclareFieldFormat{volume}{% -\testCJKfirst{userd}% -\iftoggle{ifCJKforgbt}% -{\bibstring{serialcn}##1\bibstring{volumecn}}% -{\bibstring{volume}~##1}% -}% volume of a book -\DeclareFieldFormat[article,periodical]{volume}{##1}% volume of a journal -% -% 对number册信息格式做出修改 -% v1.0o,20190105,hzz -% -\DeclareFieldFormat{number}{##1}% -\DeclareFieldFormat[book,collection,inbook,% -incollection,proceedings,inproceedings]{number}{% -\testCJKfirst{userd}% -\iftoggle{ifCJKforgbt}% -{\bibstring{serialcn}##1\bibstring{numbercn}}% -{##1}% -}% -% -% 对edition版本信息格式做出修改 -% -\DeclareFieldFormat{edition}{%源来自biblatex.DEF -\testCJKfirst{userd}% -\iftoggle{ifCJKforgbt}% -{\ifinteger{##1}% -{\printtext{##1\str@edition}}% -{##1\isdot}}% -{\ifinteger{##1}% -{\mkbibordedition{##1}~\bibstring{edition}}% -{##1\isdot}}}% -% -% 对version的版本信息做出修改 -% -\DeclareFieldFormat{version}{%源来自biblatex.DEF -\testCJKfirst{userd}% -\ifinteger{##1}% -{\iftoggle{ifCJKforgbt}{\printtext{##1\str@edition}}% -{\mkbibordedition{##1}~\bibstring{version}}}% -{##1\isdot}}% -% -% 修改析出文献的文集的标题与附加标题间的符号 -% -\renewbibmacro*{booktitle}{% - \ifboolexpr{% - test {\iffieldundef{booktitle}} - and - test {\iffieldundef{booksubtitle}} - }% - {}% - {\printtext[booktitle]{\bibtitlefont% - \printfield[titlecase]{booktitle}% - \setunit{\subtitlepunct}% - \printfield[titlecase]{booksubtitle}}% - \newunit%标点换成下一句 - \setunit{\subtitlepunct}}% - \printfield{booktitleaddon}}% -% -% 调整期刊名的格式 -% -% v1.0k,20180425,增加了字体控制命令,hzz -\renewbibmacro*{journal+issuetitle}{\bibpubfont%源来自standard.bbx - \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}% - \iffieldundef{volume}{}{\setunit{\addcomma\space}}% - %换成逗号和空格 - \usebibmacro{issue}% - \usebibmacro{volume+number+eid}%把卷期放到年份后面 - %\newunit - }% -% -% 调整期刊卷和期的格式 -% -\renewbibmacro*{volume+number+eid}{%源来自standard.bbx -\iftoggle{bbx:gbfieldstd}{% - \printfield{volume}% - \setunit*{\adddot}% - \printfield{number}% - \setunit{\addcomma\space}% - \printfield{eid}}{% - \printfield{volume}% - %\setunit*{\adddot}%去掉点号 - %\printfield{number}% - \iffieldundef{number}{}{\printtext{\mkbibparens{\printfield{number}}}}%增加一个圆括号 - \iffieldundef{eid}{}{% - \setunit{\addcomma\space}% - \printfield{eid}}}}% -% -% 调整期刊年份的格式 -% -\renewbibmacro*{issue+date}{%去掉括号 - \printtext{%去掉了[parens] - \iffieldundef{issue} - {%\usebibmacro{date} - \iffieldundef{note}{\usebibmacro{date}}%判断一下,是否是报纸 - {\iffieldequalstr{note}{news}{\usebibmacro{newsdate}}%判断是否为报纸 - {\usebibmacro{date}}% - }}% - {\iftoggle{bbx:gbstrict}{}{\printfield{issue}% - \setunit*{\addspace}}% - %\usebibmacro{date} - \iffieldundef{note}{\usebibmacro{date}}%判断一下,是否是报纸 - {\iffieldequalstr{note}{news}{\usebibmacro{newsdate}}%判断是否为报纸 - {\usebibmacro{date}}% - }}}% - %\newunit - }% -% -% 调整页码前的标点和去掉期刊文章等页码后面的标点 -% -\renewbibmacro*{note+pages}{%源来自standard.bbx - %\printfield{note}%不要note,note用来判断是否是报纸newspaper - \iffieldundef{pages}{}{% - \setunit{\bibpagespunct}% - \printfield{pages}}% - %\newunit - }% -% -% 编者的符号修改一下 -% v1.0 2016-07-01 -% v1.0q 2019-03-01 hzz 修改editortype前的标点 -% -\renewbibmacro*{editor}{%源来自biblatex.DEF - \ifboolexpr{% - test \ifuseeditor - and - not test {\ifnameundef{editor}}% - }% - {\printnames{editor}% - \iffieldundef{editortype}%增加一个类型判断,用于存在editortype的情况 - {\setunit\addspace}%当没有editortype时,直接用句点 - {%\setunit{\addcomma\space}% - \usebibmacro{editorstrg}}% - %\clearname{editor} - }% - {}}% -% -% 编者类型做一修改 -% v1.0 2016-07-01 -% v1.0q 2019-03-01 hzz 修改editortype不同语言的不同本地化字符串 -% -\renewbibmacro*{editorstrg}{%源来自biblatex.DEF - \printtext[editortype]{% - \iffieldundef{editortype}% - {% -% \ifboolexpr{ %这一段去掉,未定义编者类型情况下不处理 -% test {\ifnumgreater{\value{editor}}{1}} -% or -% test {\ifandothers{editor}} -% } -% {\bibstring{editors}} -% {\bibstring{editor}} - }% - {\ifbibxstring{\thefield{editortype}}%定义编者类型情况下处理,以后根据需要修改 - {\ifboolexpr{% - test {\ifnumgreater{\value{editor}}{1}}% - or - test {\ifandothers{editor}}% - }% - {\printdelim{streditortypes}}% - {\printdelim{streditortype}}}% - {\thefield{editortype}}}% - }}% -% -% bookauthor域的输出, -% v1.0q 2019-03-01 hzz -% 不再对editor和bookauthor做sourcemap,而是下面的宏内逻辑代替, -% 使得除使用bookauthor外也可以使用editor,便于在使用editor时使用editortype -\renewbibmacro*{bybookauthor}{% - \ifnameundef{bookauthor}% - {\ifnameundef{editor}% - {}% - {\ifnamesequal{author}{editor}% - {}{\usebibmacro{editor}}}% - }% - {\ifnamesequal{author}{bookauthor}% - {}{\printnames{bookauthor}}% - }% -}% -% -% 修改期刊的标题 -% -\renewbibmacro*{periodical}{%源来自biblatex.DEF - \iffieldundef{title} - {}% - {\printtext[title]{\bibtitlefont% - \printfield[titlecase]{title}% - %\setunit{\subtitlepunct}% - \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题 - {}{\setunit{\subtitlepunct} - \printfield[titlecase]{subtitle}}% - %}%把编组结束移到后面去 - \iftoggle{bbx:gbtype}{% - \iffieldundef{usera}{}{%在标题后直接给出文献标识字母 - \printfield[gbtypeflag]{usera}}}{}% - }}% - }% -% -% 期刊的标题做修改 -% -\renewbibmacro*{title+issuetitle}{%源来自standard.BBX - \usebibmacro{periodical}% - %\setunit*{\addspace}% - \setunit*{\adddot\addspace}%标点修改为句点 - \iffieldundef{series} - {}% - {\newunit - \printfield{series}% - \setunit{\addspace}}% - \usebibmacro{periodical+issue}%将issue调整到上面来,并修改 -\iffieldundef{number}{}{%%进一步处理有范围的数字 - \multinumberparser{\thefield{number}}}% - \iffieldundef{volume}% - {\printfield{year}% - \printtext{\mkbibparens{\multinumberfirst}}% - \bibrangedash% - \iffieldundef{endyear}{}{\printfield{endyear}\printtext{\mkbibparens{\multinumbersecond}}}% - }% - {\multivolparser{\thefield{volume}}% - \printfield{year}% - \setunit{\addcomma\space}%将冒号修改为逗号 - \printtext{\multivolfirst}% - \printtext{\mkbibparens{\multinumberfirst}}% - \bibrangedash% - \iffieldundef{endyear}{}{% - \printfield{endyear}% - \setunit{\addcomma\space}%将冒号修改为逗号 - \printtext{\multivolsecond}% - \printtext{\mkbibparens{\multinumbersecond}}}% - }% - \setunit{\addcomma\space}% - \printfield{eid}% - \setunit{\addspace}% - %\usebibmacro{issue+date}% - %\setunit{\addcolon\space}% - \usebibmacro{issue}% - \newunit}% -% -% 修改in:用于inbook、incollection、inproceedings等类型 -% 2018.04.20,v1.0k,renewed marco,by hzz -% 20190212,v1.0q,增加中英文区分,by hzz -% -% 原理方法:使用bibmacro{in:}改变了以前在driver中直接输出//的方式,同时也简化了标点控制。 -\renewbibmacro*{in:}{% - \iftoggle{bbx:gbpunctin}{\printtext{\texttt{//}\allowbreak}}%\addthinspace - {\setunit{\adddot\addspace}% - \iffieldequalstr{userd}{chinese}% - {\printtext{\bibstring{incn}}}% - {\printtext{\bibstring{in}}}% - }}%\newunit\newblock\intitlepunct -% -% 修改type域的输出格式 -% 2019.02.12,v1.0q,byhzz -% 使其可以区分中英文输出不同的格式,比如博士论文英文输出PHD thesis,中文则是博士学位论文 -\DeclareFieldFormat{type}% -{\iffieldequalstr{userd}{chinese}% - {\ifbibxstring{##1cn}{\bibxstring{##1cn}}{##1}}% - {\ifbibstring{##1}{\bibstring{##1}}{##1}}% -}% -% -% book条目类的驱动 -% -\csdef{blx@bbx@book}{%%源来自standard.bbx文件 - \usebibmacro{bibindex}% - \usebibmacro{begentry}% -\usebibmacro{author/editor+others/translator+others}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 -\usebibmacro{maintitle+title}% -\iftoggle{bbx:gbstrict}{}{% -\newunit -\printlist{language}% -\newunit\newblock% -\usebibmacro{byauthor}% -\newunit\newblock}% -\usebibmacro{byeditor+others}% -\newunit -\printfield{edition}% -\newunit\newblock%% -\iftoggle{bbx:gbstrict}{}{% -\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}% - \iffieldundef{url}{}{%当没有网址时也不输出 - \usebibmacro{modifydate}}%带括号的修改或更新日期, -\usebibmacro{doi+eprint+url}%从下面移动到上面来,因为gbt2015的url需直接放在页码后面。 - \newunit\newblock% - \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}\usebibmacro{annotation}}% -% -% 期刊文章,连续出版物中的析出文献的格式 -% -\csdef{blx@bbx@article}{% - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author/translator+others}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 - \usebibmacro{title}% - \iftoggle{bbx:gbstrict}{}{% - \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}% - \iffieldequalstr{note}{news}{}{%当是新闻时不输出修改或更新日期 - \iffieldundef{url}{}{%当没有网址时也不输出 - \iftoggle{bbx:url}{%当url选项为false时,也不输出 - \usebibmacro{modifydate}}{}}}%带括号的修改或更新日期, - \usebibmacro{doi+eprint+url}%从后面移上来,调整url和页码之间的位置 - \newunit\newblock - \iftoggle{bbx:isbn} - {\printfield{issn}} - {}% - \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}\usebibmacro{annotation}}% -% -% 连续出版物的驱动 -% -\csdef{blx@bbx@periodical}{%源来自standard.BBX - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{editor}% - %\setunit{\labelnamepunct}\newblock - \newunit\newblock %删除上面一行,添加这一行 - \usebibmacro{title+issuetitle}% - \newunit\newblock% - \usebibmacro{location+institution+date}%添加这一行用于输出地址,单位和时间 - \newunit\newblock%添加这一行 - \iftoggle{bbx:gbstrict}{}{% - \printlist{language}% - \newunit\newblock - \usebibmacro{byeditor}% - \newunit\newblock - \printfield{note}% - \newunit\newblock} - \iftoggle{bbx:isbn} - {\printfield{issn}} - {}% - \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}\usebibmacro{annotation}}% -% -% 专利文献驱动 -% -\csdef{blx@bbx@patent}{%源来自standard.BBX - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 - %\usebibmacro{title}% - \usebibmacro{patenttitle}%给出专利专用的标题输出 - \iftoggle{bbx:gbstrict}{}{% - \newunit% - \printlist{language}% - \newunit\newblock - \usebibmacro{byauthor}}% - \newunit\newblock - \printfield{type}% - \setunit*{\addspace}% - %\printfield{number}%已放到patenttitle中处理 - \iflistundef{location} - {} - {\setunit*{\addspace}% - \printtext{%[parens] - \printlist[][-\value{listtotal}]{location}}}% - \newunit\newblock - \usebibmacro{byholder}% - \newunit\newblock - \printfield{note}% - \newunit\newblock - \usebibmacro{newsdate}% - %\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}\usebibmacro{annotation}}% -% -% 在线文献驱动 -% -\csdef{blx@bbx@online}{%源来自standard.BBX - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author/editor+others/translator+others}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 - \usebibmacro{title}% - \iftoggle{bbx:gbstrict}{}{% - \newunit% - \printlist{language}% - \newunit\newblock - \usebibmacro{byauthor}% - \newunit\newblock - \usebibmacro{byeditor+others}% - \newunit\newblock - \printfield{note}}% - \newunit - \printfield{version}% - \newunit\newblock -%\printlist{organization}% - \printlist{institution}% - \newunit\newblock -\ifboolexpr{% -test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}% -}{\usebibmacro{date}}% -{\usebibmacro{modifydate}}%修改或更新日期,为带括号的时间 - \usebibmacro{url+urldate}%从下面移上来 - \newunit\newblock - \iftoggle{bbx:eprint} - {\usebibmacro{eprint}} - {}% - \newunit\newblock - %\usebibmacro{url+urldate}% - %\newunit\newblock - \usebibmacro{addendum+pubstate}% - \setunit{\bibpagerefpunct}\newblock - \usebibmacro{pageref}% - \newunit\newblock - \iftoggle{bbx:related} - {\usebibmacro{related:init}% - \usebibmacro{related}} - {}% - \usebibmacro{finentry}\usebibmacro{annotation}}% -% -% 报告类型驱动 -% 2016-11-11,增加了译者信息 -% -\csdef{blx@bbx@report}{% - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 - \usebibmacro{title}% - \iftoggle{bbx:gbstrict}{}{% - \newunit% - \printlist{language}% - \newunit\newblock - \usebibmacro{byauthor}}% - \newunit\newblock - \usebibmacro{byeditor+others}%增加的译者信息 - \newunit\newblock - \printfield{type}% - \setunit*{\addspace}% - \printfield{number}% - \newunit\newblock - \printfield{version}% - \newunit - \printfield{note}% - \newunit\newblock - \usebibmacro{publisher+location+date}% - %\newunit\newblock - \usebibmacro{chapter+pages}% - \usebibmacro{doi+eprint+url}% - \newunit - \printfield{pagetotal}% - \newunit\newblock - \iftoggle{bbx:isbn} - {\printfield{isrn}} - {}% - \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}\usebibmacro{annotation}}% -% -% 手册类型驱动 -% 2016-11-11,增加了译者信息 -% -% -\csdef{blx@bbx@manual}{% - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 - \usebibmacro{title}% - \iftoggle{bbx:gbstrict}{}{% - \newunit% - \printlist{language}% - \newunit\newblock - \usebibmacro{byauthor}}% - \newunit\newblock - \usebibmacro{byeditor+others}%增加的译者信息 - \newunit\newblock - \iftoggle{bbx:gbfieldtype}{% - \printfield{type}% - \setunit*{\addspace}}{}% - \printfield{number}% - \newunit\newblock - \printfield{version}% - \newunit - \printfield{note}% - \newunit\newblock - \usebibmacro{institution+location+date}% - %\newunit\newblock - \usebibmacro{chapter+pages}% - \iffieldundef{url}{}{%当没有网址时也不输出修改或更新日期 - \usebibmacro{modifydate}}%修改或更新日期为带括号的时间 - \usebibmacro{doi+eprint+url}% - \newunit - \printfield{pagetotal}% - \newunit\newblock - \iftoggle{bbx:isbn} - {\printfield{isrn}} - {}% - \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}\usebibmacro{annotation}}% -% -% 备选类型驱动 -% -% 利用biblatex的misc驱动 -\csdef{blx@bbx@misc}{% - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author/editor+others/translator+others}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 - \usebibmacro{title}% -\iftoggle{bbx:gbstrict}{}{% - \newunit - \printlist{language}% - \newunit\newblock - \usebibmacro{byauthor}% - \newunit\newblock - \usebibmacro{byeditor+others}}% - \newunit\newblock - \printfield{howpublished}% - \newunit\newblock - \printfield{type}% - \newunit - \printfield{version}% - \newunit - \printfield{note}% - \newunit\newblock - \usebibmacro{institution+location+date}% - %\usebibmacro{organization+location+date}% - %\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}\usebibmacro{annotation}}% -% -% 专著中的析出文献的格式修改 -% -\csdef{blx@bbx@inbook}{%源来自standard.bbx - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author/translator+others}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 -\usebibmacro{title}% -\usebibmacro{in:}% -%\printtext{\texttt{//}\addthinspace}% - \usebibmacro{bybookauthor}% - \ifnameundef{bookauthor}{% - \ifnameundef{editor}{}{\newunit}% - }{\newunit}%替换下一句 - %\newunit\newblock -\iffieldundef{series}{}{\usebibmacro{series+number}\setunit{\addcolon\addspace}}%为处理一些存在series的情况而增加 - \usebibmacro{maintitle+booktitle}% -\iffieldundef{volume}{}{\setunit{\addcolon\addspace}\printfield{volume}}% -\iffieldundef{number}{}{\setunit{\addcolon\addspace}\printfield{number}}%增加卷和册信息 - \newunit\newblock% -% \usebibmacro{byeditor+others}% -% \newunit\newblock - \printfield{edition}% - \newunit - \iftoggle{bbx:gbstrict}{}{% -% \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 - \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}\usebibmacro{annotation}}% -}{}% -} - -\AtEveryBibitem{\localsetchinesecode}% -\AtEveryCite{\localsetchinesecode}% -\AtEveryLositem{\localsetchinesecode}% +%% +%% --------------------------------------------------------------- +%% biblatex-gb7714-2015 --- A biblatex implementation of the +%% GBT7714-2015 bibliography style,numerical sequence +%% Maintained by huzhenzhen +%% E-mail: hzzmail@163.com +%% Released under the LaTeX Project Public License v1.3c or later +%% --------------------------------------------------------------- +%% + +% +% 版本和时间信息 +% +\def\versionofgbtstyle{2021/01/19 v1.0w} +\def\versionofbiblatex{\abx@version} +\ProvidesFile{gb7714-2015ms.bbx}[\versionofgbtstyle biblatex bibliography style] +%\RequireBiber[3]%显式指定用biber后端,当用bibtex时会报错,但其实不会影响编译,只是采用bibtex后无法达成格式需求 + + +%===================================================================== +% 加载标准样式 +%===================================================================== +\RequireBibliographyStyle{numeric-comp} +\RequirePackage{xstring}%解决texlive2015的biblatex3.0不加载xstring包的问题 + +%===================================================================== +% 功能函数 +%===================================================================== + % + % biblatex版本判断 + % 20180629,v1.0k,hzz + % + % 原理方法:适用于3.10以上版本的biblatex,否则给出警告 + \@ifpackagelater{biblatex}{2017/12/28}{}{ + \blx@warning@noline{% + biblatex version is too old for this style\MessageBreak + if errors raised,Please update biblatex to the latest version.} + } + + + % + % 判断CJK字符的函数,用于判断作者等信息是否由中文字符构成 + % v1.0k,20180509,hzz + % + % 原理方法:用biber中的perl方法代替。因为利用tex函数对字符判断时,当字符在宏 + % 中时,基于`的方法无法解决GBK编码的问题,基于CJKsymbol的方法无法解决utf-8 + % 编码用xelatex编译的问题。 + % + % 原理是:利用perl正则将中文标识记录到域中, + % 然后利用\iffieldundef和\iffieldequalstr进行判断 + \providetoggle{ifCJKforgbt} + \def\testCJKfirst#1{% + \iffieldundef{#1}{\togglefalse{ifCJKforgbt}}{% + \iffieldequalstr{#1}{chinese}{\toggletrue{ifCJKforgbt}}{\togglefalse{ifCJKforgbt}}}} + + % + % 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{}}% + } + + +%===================================================================== +% 数据模型定义 +%===================================================================== + %定义类型和载体标识,从gb内容看载体基本属于介质。 + %为与lee zeping的bst的样式统一,使用mark和medium这两域名 + %为单个条目的姓名格式控制增加nameformat和namefmtid两个域 + %为缩略信息文献表增加了shortbooktitle域 + %为多语言排序增加了lansortorder域 + \DeclareDatamodelFields[type=field,datatype=literal]{mark,medium,nameformat} + \DeclareDatamodelFields[type=field,datatype=integer]{namefmtid} + \DeclareDatamodelFields[type=field,datatype=literal]{shortbooktitle} + \DeclareDatamodelFields[type=field,datatype=literal]{lansortorder} + + %因为biblatex更新3.14版本以后,biber对于为声明数据模型的条目类型 + %不再默认读取,而是以空字符串作为条目类型名,自然在条目定义alias时 + %就会出现问题,因此显式的声明一下newspaper,然后保留后面采用alias的方式 + %而standard类型则是采用另一种方式直接在sourcemap中转换为其它类型。 + \@ifpackagelater{biblatex}{2019/11/30}{%2019/12/01 v3.14 + \DeclareDatamodelEntrytypes{newspaper}% + }{} + +%===================================================================== +% 设置宏包选项 +%===================================================================== + % + % 增加一个控制是否输出文献载体的选项 + % 20191125,v1,0s,hzz + \newtoggle{bbx:gbmedium} + \DeclareBibliographyOption{gbmedium}[true]{%biblatex低版本 + \settoggle{bbx:gbmedium}{#1}} + \ExecuteBibliographyOptions{gbmedium} + + % + % 增加一个控制是否输出annotation域的选项,该域可以用于在文献条目后面输出一些注释信息 + % 20190509,v1,0s,hzz + \newtoggle{bbx:gbannote} + \DeclareBibliographyOption{gbannote}[false]{%biblatex低版本 + \settoggle{bbx:gbannote}{#1}} + \ExecuteBibliographyOptions{gbannote} + % + %用于在文献条目后面输出注释信息的宏 + %FieldFormat{annotation}用于设置注释信息的格式 + \DeclareFieldFormat{annotation}{% + \printtext{\addspace(#1)}% + } + \renewbibmacro*{annotation}{% + \iftoggle{bbx:gbannote}% + {\iffieldundef{annotation}% + {\printfile[annotation]{\bibannotationprefix\thefield{entrykey}.tex}}% + {\printfield{annotation}}}% + {}% + } + + + % + % 增加一个控制是否输出type域的选项 + % 20190212,v1,0q,hzz + \newtoggle{bbx:gbfieldtype} + \DeclareBibliographyOption{gbfieldtype}[false]{%biblatex低版本 + \settoggle{bbx:gbfieldtype}{#1}} + \ExecuteBibliographyOptions{gbfieldtype} + + % + % 增加一个控制是否根据页码重设脚注数字标号的选项 + % 20190422,v1,0r,hzz + \newtoggle{bbx:gbfnperpage} + \DeclareBibliographyOption{gbfnperpage}[false]{% + \settoggle{bbx:gbfnperpage}{#1}} + \ExecuteBibliographyOptions{gbfnperpage} + + % + % 增加一个选项,用于控制是否实现GB/T 7714-2015标准的脚注文献表 + % 20190203,v1.0p,hzz + % 原理方法:默认做patch,文献引用带圈上标数字表示,脚注中的文献用带圈非上标数字做标签 + % 当前面的脚注中已经存在当前文献,那么当前文献内容不再输出而用同(4)这样的方式 + % 需要注意的是由于小页环境和表格中的脚注本身的问题,可能会有一些问题 + \DeclareBibliographyOption{gbfootbib}[false]{% + \ifstrequal{#1}{false}{}{\execgbfootbib}} + \ExecuteBibliographyOptions{gbfootbib} + + %% + \newlength{\footbibmargin} + \newlength{\footbiblabelsep} + \setlength{\footbibmargin}{1em}%脚注的段落左侧缩进距离 + \setlength{\footbiblabelsep}{0.5em}%脚注中标记号与脚注段落的间距 + \def\execgbfootbib% + {% + %开启引用跟踪计数器,为使用\ifciteseen等测试命令 + \ExecuteBibliographyOptions{citetracker=true} + % + %利用footmisc宏包来实现脚注文献的悬挂对齐 + \AtEndPreamble{ + \@ifclassloaded{beamer}{}{ + %beamer类因为其特殊性,为避免冲突不调footmisc。 + %同时footmisc与hyperref宏包也不兼容,所以使用footmisc时会破坏脚注的超链接 + %如果要实现超链接可以将下句注释掉,这里留着主要是实现悬挂对齐。 + %\PassOptionsToPackage{perpage,hang}{footmisc}% + %\RequirePackage{footmisc}% + + %重新实现脚注的根据单页重设脚注号码 + %重新实现脚注的悬挂对齐问题,不再使用footmisc,直接从latex核心代码和hyperref代码进行修改 + %v1.0q 20190317 hzz + %v1.0r 20190422 hzz 根据gbfnperpage选项设置 + \iftoggle{bbx:gbfnperpage}% + {\@addtoreset{footnote}{page}}{}%重设计数器 + +\@ifpackageloaded{hyperref}{%加载hyperref则对\H@@footnotetext做重定义 + \long\def\H@@footnotetext##1{\insert\footins{% + \reset@font\footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox \floatingpenalty \@MM + \hsize\columnwidth \@parboxrestore + \protected@edef\@currentlabel{% + \csname p@footnote\endcsname\@thefnmark + }% + \color@begingroup + \leftskip \footbibmargin%增加的左侧缩进 + \@makefntext{% + \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox% + }% + \color@endgroup}}% + + \long\def\H@@mpfootnotetext##1{% + \global\setbox\@mpfootins\vbox{% + \unvbox\@mpfootins + \reset@font\footnotesize + \hsize\columnwidth + \@parboxrestore + \protected@edef\@currentlabel + {\csname p@mpfootnote\endcsname\@thefnmark}% + \leftskip \footbibmargin%增加的左侧缩进 + \color@begingroup + \@makefntext{% + \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox}% + \color@endgroup}} + }{%否则对latex核心代码中的\@footnotetext做重定义 + \long\def\@footnotetext##1{\insert\footins{% + \reset@font\footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox \floatingpenalty \@MM + \hsize\columnwidth \@parboxrestore + \protected@edef\@currentlabel{% + \csname p@footnote\endcsname\@thefnmark + }% + \color@begingroup + \leftskip \footbibmargin%增加的左侧缩进 + \@makefntext{% + \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox% + }% + \color@endgroup}}% + + \long\def\@mpfootnotetext##1{% + \global\setbox\@mpfootins\vbox{% + \unvbox\@mpfootins + \reset@font\footnotesize + \hsize\columnwidth + \@parboxrestore + \protected@edef\@currentlabel + {\csname p@mpfootnote\endcsname\@thefnmark}% + \leftskip \footbibmargin%增加的左侧缩进 + \color@begingroup + \@makefntext{% + \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox}% + \color@endgroup}} + } + + \long\def\@makefntext##1{%增加了脚注标记与正文的间隔 + \parindent 1em\noindent \hb@xt@ 0em{\hss \@makefnmark\makebox[\footbiblabelsep]{}}##1} + + } + + % + %使脚注标记加圈并设置数字的字体为tiny,不使用修改thefootnote的方式 + \def\@makefnmark{\hbox{\@textsuperscript{\textcircled{\tiny\@thefnmark}}}} + %做patch使得脚注内容中的脚注数字标签不上标 + \pretocmd{\@makefntext}{% + \def\@makefnmark{% + \hbox{\textcircled{\tiny\@thefnmark}}% + }% + }{}{} + } + + % + %判断当前文献是否已经引用过且是做的footfullcite(即已经作为脚注输出文献内容) + %记录首次输出时的脚注号码,用于后面再次引用该文献时的输出,比如同(4)。 + %v1.0q 20190309 区分使脚注标注适应minipage中的情况 + \newbibmacro*{citesavefn}{% + \ifciteseen%当被引用过为true + {\ifcsdef{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}%当已经定义过脚注序号信息 + {\csgdef{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}{% + \str@sameentry\gdef\@thefnmark{\csuse{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}}% + \@makefnmark% + }}% + {\csxdef{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}{% + \ifcsstring{@mpfn}{mpfootnote}{\@alph\c@mpfootnote}{\thefootnote}% + }}% + }% + {\csxdef{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}{% + \ifcsstring{@mpfn}{mpfootnote}{\@alph\c@mpfootnote}{\thefootnote}% + %判断在minipage中比较麻烦,这里使用\@mpfn的定义进行判断 + }}% + } + + % + %重定义\footfullcite使完成gb7714-2015的脚注文献要求 + \DeclareCiteCommand{\footfullcite}[\mkbibfootnote]% + {\defcounter{maxnames}{\blx@maxbibnames}%局部定义maxnames和minnames计数器 + \defcounter{minnames}{\blx@minbibnames}%使footfullcite内的作者输出与正文文献表中的一致。 + \usebibmacro{prenote}% + \renewbibmacro*{postnote}{% + \iffieldundef{postnote}% + {}{\setunit{\addcolon\addspace}\printfield{postnote}}}%与ay样式不同,由于已修改postnote域格式,直接用printfield + }% + {\usebibmacro{citesavefn}% + \ifcsdef{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}% + {\csuse{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}\nopunct}% + {\usedriver{\DeclareNameAlias{sortname}{default}}{\thefield{entrytype}}}% + }% + {\multicitedelim}% + {\usebibmacro{postnote}} + + } + + % + % 增加一个选项,用于控制gb7714的使用范围,即英文文献和中文文献使用不同的样式 + % 20180814,v1.0m,hzz + % 原理方法: + % 当gbstyle=true,则所有的文献使用国标样式,否则仅中文文献使用国标样式 + \newtoggle{bbx:gbstyle} + \DeclareBibliographyOption{gbstyle}[true]{%biblatex低版本 + \settoggle{bbx:gbstyle}{#1}} + + % + % 增加一个控制是否输出文献类型和载体标识的选项 + % + % 原理方法: + % 对于biblatex3.4以上版本DeclareBibliographyOption命令中的[datatype]如果是boolean,那么是可以省略的 + % 所以用老版本的不用[datatype]的命令可以兼容所有biblatex版本 + \newtoggle{bbx:gbtype} + %\DeclareBibliographyOption[boolean]{gbtype}[true]{%biblatex高版本 + \DeclareBibliographyOption{gbtype}[true]{%biblatex低版本 + \settoggle{bbx:gbtype}{#1}} + + % + % 增加一个源文件编码选择选项,当true时可以使用GBK编码。 + % v1.0k, 2018.05.08, by hzz + % + % 原理方法:将需要输出的中文字符串用命令形式表示存储,采用utf8编码时采用bbx文档 + % 内的定义即是utf8编码的中文字符串,但tex源文件是gbk编码时,利用gb7714-2015-gbk.def + % 文档内的gbk编码的字符串覆盖。这种覆盖只能在宏包末尾加载时成功实现,所以使用 + % AtEndOfPackage。该解决思路源自biblatex-caspervector宏包。 + % 另外注意: + % gbk编码的tex文档,利用pdflatex/latex能正确编译,利用xelatex能编译,但中文显示乱码 + % 在源文档前面增加 XeTeX 原语:\XeTeXinputencoding "GBK" 后,显示正常 + % utf-8编码的tex文档,利用xelatex能正确编译,而pdflatex/latex不能编译。 + \newtoggle{bbx:codegbk} + \DeclareBibliographyOption{gbcodegbk}[false]{% + \settoggle{bbx:codegbk}{#1}} + + \def\str@bibliography{参考文献} + \def\str@references{参考文献} + \def\str@bytranslator{译} + \def\str@andotherscn{等} + \def\str@backrefpage{引用页} + \def\str@backrefpages{引用页} + \def\str@noaddress{出版地不详} + \def\str@nopublisher{出版者不详} + \def\str@edition{版} + \def\str@volumecn{卷} + \def\str@numbercn{册} + \def\str@serialcn{第} + \def\str@sameentry{同} + \def\str@incn{见} + \def\str@mathesiscn{硕士学位论文} + \def\str@phdthesiscn{博士学位论文} + \def\str@editorcn{主编} + + \AtEndOfPackage{% + \iftoggle{bbx:codegbk}{% + \ExecuteBibliographyOptions{texencoding = GBK} + \input{gb7714-2015-gbk.def} + }{}} + + % + % 增加一个严格按GB/T 7714-2015给出著录格式控制域的输出的选项 + % v1.0k, 2018.05.08, by hzz + % + % 原理方法: + % 默认设置该选项为真,进而不输出GB/T 7714-2015中没有的域的信息 + % 这样可以避免因为bib文件带有多余的域的信息的输出,比如因为bibtex样式 + % 可能需要用于中英文判断的language域的信息。 + \newtoggle{bbx:gbstrict} + \DeclareBibliographyOption{gbstrict}[true]{% + \settoggle{bbx:gbstrict}{#1}} + + % + % 增加一个控制标题域超链接设置的选项 + % v1.0k, 2018.05.24, by hzz + % + % 原理方法: + % 利用标题域格式来实现,默认设置该选项为false,不做超链接。 + % 设置为true,则标题设置超链接 + \newtoggle{bbx:titlelink} + \DeclareBibliographyOption{gbtitlelink}[false]{% + \settoggle{bbx:titlelink}{#1}} + + % + % 增加一个控制参考文献标题是否能够被ctex宏包设置的选项 + % v1.0l, 2018.07.02, by hzz + % + % 原理方法: + % 重定义biblatex的宏,去除使用本地化字符串的方式,是的可以利用ctexset进行设置 + \newtoggle{bbx:ctexset} + \DeclareBibliographyOption{gbctexset}[true]{% + \settoggle{bbx:ctexset}{#1}} + + \AtEndOfPackage{% + \iftoggle{bbx:ctexset}{% + \def\blx@defbibstrings#1#2{% + \def\do##1{\csundef{abx@lstr@##1}\csundef{abx@sstr@##1}}% + \abx@dostrings + \csuse{abx@strings@#1}% + \setkeys{blx@lbx}{#2}% + \let\do\blx@defbibstrings@i + \csxdef{abx@strings@#1}{\abx@dostrings}% + } + }{}} + + % + % 增加一个恢复域格式为标准样式的控制选项 + % v1.0k, 2018.05.15, by hzz + % + % 原理方法: + % 默认设置该选项为false,采用国标要求的域格式输出相关域 + % 当设置该选项为true时,则重新利用标准样式的域格式输出相关的域 + \newtoggle{bbx:gbfieldstd} + \DeclareBibliographyOption{gbfieldstd}[false]{% + \settoggle{bbx:gbfieldstd}{#1}% + } + + % + % 增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 + % + \newtoggle{bbx:gbpub} + \DeclareBibliographyOption{gbpub}[true]{% + %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 + \ifstrequal{#1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} + + % + % 增加控制析出文献来源前的标点符号//输出的选项 + % v1.0k, 2018.04.20,added in by hzz + \newtoggle{bbx:gbpunctin} + \DeclareBibliographyOption{gbpunctin}[true]{% + \settoggle{bbx:gbpunctin}{#1}} + + % + % 增加一个处理佚名或noauthor的控制选项 + % + % 原理方法:在顺序编码制中不需要使用,为与作者年制的兼容性考虑,这里也增加避免报错 + \DeclareBibliographyOption{gbnoauthor}[true]{}% + + + % + %为日期控制格式增加一个gb7714-2015选项 + % + \csdef{mkdaterangegb7714-2015}#1{% + \begingroup + \blx@metadateinfo{#1}% + \iffieldundef{#1year} + {} + {\printtext[#1date]{% + \blx@gbdate{#1}{}}}% + \endgroup} + + \newrobustcmd*{\blx@gbdate}[3][]{% + \dateeraprintpre{#2#3year}% + \blx@imc@forcezerosy{\thefield{#2#3year}}\ifblank{#1}{}{\printfield{#1}}% + \iffieldundef{#2#3month}{}{\hyphen\blx@imc@forcezerosmdt{\thefield{#2#3month}}}% + \iffieldundef{#2#3day}{}{\hyphen\blx@imc@forcezerosmdt{\thefield{#2#3day}}}} + + %为姓名格式选择增加的计数器 + \newcounter{gbnamefmtcase} + \def\thegbnamefmtcase{\the\c@gbnamefmtcase} + %为数字标签格式选择增加的计数器/命令 + \newcommand{\mkgbnumlabel}[1]{\mkbibbrackets{#1}} + \def\gbbiblabelopt@bracket{\renewcommand{\mkgbnumlabel}[1]{\mkbibbrackets{##1}}} + \def\gbbiblabelopt@parens{\renewcommand{\mkgbnumlabel}[1]{\mkbibparens{##1}}} + \def\gbbiblabelopt@dot{\renewcommand{\mkgbnumlabel}[1]{##1\adddot}} + \def\gbbiblabelopt@plain{\renewcommand{\mkgbnumlabel}[1]{##1}} + \def\gbbiblabelopt@box{\renewcommand{\mkgbnumlabel}[1]{\framebox{##1}}} + \def\gbbiblabelopt@circle{\renewcommand{\mkgbnumlabel}[1]{\textcircled{##1}}} + %为文献表中数字标签对齐方式选择增加的计数器/命令 + \newcounter{gbalignlabel} + \def\thegbalignlabel{\the\c@gbalignlabel} + %为引用标签标注/文献表中本地化字符串中英文选择增加的计数器/命令 + \newcounter{gbcitelocalcase} + \newcounter{gbbiblocalcase} + \def\thegbcitelocalcase{\the\c@gbcitelocalcase} + \def\thegbbiblocalcase{\the\c@gbbiblocalcase} + + % 增加不同语言排序的切换选项 + % numeric样式,不使用该选项,这里给出仅为兼容性考虑 + % v1.0q,20190307,hzz + % + \DeclareBibliographyOption[string]{gblanorder}[chineseahead]{} + + + % + % 增加本地化字符串的中英文切换选项 + % gbcitelocal指标注中的本地化字符串 + % gbbiblocal 指文献表中的本地化字符串 + % gblocal 指设置文献表和标注中的本地化字符串 + % v1.0o,20190103,hzz + % + \DeclareBibliographyOption[string]{gbcitelocal}[gb7714-2015]{% + \ifstrequal{#1}{gb7714-2015}{\setcounter{gbcitelocalcase}{0}}{}% + \ifstrequal{#1}{chinese}{\setcounter{gbcitelocalcase}{1}}{}% + \ifstrequal{#1}{english}{\setcounter{gbcitelocalcase}{2}}{}% + } + + \DeclareBibliographyOption[string]{gbbiblocal}[gb7714-2015]{% + \ifstrequal{#1}{gb7714-2015}{\setcounter{gbbiblocalcase}{0}}{}% + \ifstrequal{#1}{chinese}{\setcounter{gbbiblocalcase}{1}}{}% + \ifstrequal{#1}{english}{\setcounter{gbbiblocalcase}{2}}{}% + } + + \DeclareBibliographyOption[string]{gblocal}[gb7714-2015]{% + \ExecuteBibliographyOptions{gbbiblocal=#1}% + \ExecuteBibliographyOptions{gbcitelocal=#1}% + } + + % + % 增加序号标签格式处理选项 + % v1.0l,20180623,hzz + % + \DeclareBibliographyOption[string]{gbbiblabel}[bracket]{% + \csuse{gbbiblabelopt@#1} + } + + % + % 增加姓名大小写格式处理选项 + % + \DeclareBibliographyOption[string]{gbnamefmt}[uppercase]{% + \ifstrequal{#1}{uppercase}{\setcounter{gbnamefmtcase}{0}}{}% + \ifstrequal{#1}{lowercase}{\setcounter{gbnamefmtcase}{1}}{}% + \ifstrequal{#1}{givenahead}{\setcounter{gbnamefmtcase}{2}}{}%given-family + \ifstrequal{#1}{familyahead}{\setcounter{gbnamefmtcase}{3}}{} + \ifstrequal{#1}{pinyin}{\setcounter{gbnamefmtcase}{4}}{}%family-given + \ifstrequal{#1}{reverseorder}{\setcounter{gbnamefmtcase}{5}}{}%family-given/given-family + } + + + % + % 增加标签对齐选项 + % + % right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 + \DeclareBibliographyOption[string]{gbalign}[right]{% + \ifstrequal{#1}{right}{\setcounter{gbalignlabel}{0}}{} + \ifstrequal{#1}{left}{\setcounter{gbalignlabel}{1}}{} + \ifstrequal{#1}{center}{\setcounter{gbalignlabel}{2}}{} + \ifstrequal{#1}{gb7714-2015}{\setaligngbstyle}{} + } + + + % + % 选项设置 + % + \ExecuteBibliographyOptions{ + %firstinits=true, 针对biblatex<3.3版本的选项设置,比如texlive2015中的3.0版 + giveninits=true, %针对3.3<=biblatex<3.5版本,比如texlive2016中的3.4版 + sorting=none, + useprefix=true, %名字的信息包括前缀 + date = year, %日期仅写到年 + maxbibnames = 3,%设置名字最大数量 + minbibnames = 3, %设置缩减后的名字最小数量 + maxitems = 1,%设置列表最大数量 + minitems = 1, %设置缩减后的列表最小数量 + isbn=false, + gbstyle=true, + gbtype=true, + gbcodegbk=false, + gbstrict=true, + gbtitlelink=false, + gbfieldstd=false, + gbpub=true, + gbpunctin=true, + gbbiblabel=bracket, + gbnamefmt=uppercase, + gbalign=right, + gbctexset=true, + %urldate =edtf, %针对3.7<=biblatex<=3.9版本的选项设置,比如texlive2017中的3.7版 + %eventdate =edtf,%针对3.7<=biblatex<=3.9版本的选项设置,比如texlive2017中的3.7版 + urldate =gb7714-2015, %iso,针对3.10<=biblatex版本的选项设置,比如texlive2018中的3.11版 + eventdate =gb7714-2015, + gblocal=gb7714-2015, + } + + +%===================================================================== +% 设置本地化字符串 +%===================================================================== + % + % 新建当地化字符串,用来记录“等”字符、“和”字符 + % + \NewBibliographyString{andotherscn} + \NewBibliographyString{andothersincitecn} + \NewBibliographyString{andothersincite} + \NewBibliographyString{andcn} + \NewBibliographyString{andothersjp} + \NewBibliographyString{andotherskr} + \NewBibliographyString{andjp} + \NewBibliographyString{andkr} + \NewBibliographyString{andincitecn} + \NewBibliographyString{andincite} + \NewBibliographyString{volumecn} + \NewBibliographyString{numbercn} + \NewBibliographyString{serialcn} + \NewBibliographyString{incn} + \NewBibliographyString{mathesiscn} + \NewBibliographyString{phdthesiscn} + \NewBibliographyString{editorcn} + \NewBibliographyString{editorscn} + + + % + % 修改一些当地化字符串 + % + % 原理方法:直接利用当地化格式english修改出一些中文的格式,具体修改内容参考english.lbx文件 + % 当然也可以增加比如上面定义的andotherscn + % 注意:在lbx文件和bbx文件中定义本地字符串的不同语法,两个参数和一个参数的区别 + \DefineBibliographyStrings{english}{ + bibliography = {\str@bibliography}, + references = {\str@references}, + bytranslator= {\str@bytranslator},%\addperiod,%将trans. by 改成 译 + and = {\addcomma},%将第2和3人名间的and符号改成逗号,用\finalnamedelim命令也可以定义,参见3.9.1节 + andcn = {\addcomma},%and本地化字符串的中文对应词 + andincitecn = {\addcomma},%将标注中的分开,便于与文献表中的区分 + andincite = {\addcomma}, + %andothers = {et al.}, %将超过3个人名的省略,et al.改成为 等 + andotherscn = {\str@andotherscn}, %将超过3个人名的省略,et al.改成为 等 + andothersincitecn={\str@andotherscn},%将标注中的分开,便于与文献表中的区分 + andothersincite={et al\adddot}, + backrefpage = {\str@backrefpage:}, + backrefpages = {\str@backrefpages:}, + in={in\intitlepunct}, + volumecn={\str@volumecn}, + numbercn={\str@numbercn}, + serialcn={\str@serialcn}, + andothersjp={他}, + andotherskr={외}, + andjp={和}, + andkr={和}, + incn={\str@incn\addcolon\addspace}, + mathesiscn={\str@mathesiscn}, + phdthesiscn={\str@phdthesiscn}, + editorscn={\str@editorcn}, + editorcn={\str@editorcn}, +} + + % + % 增加两个命令用于临时的局部的修改本地化字符串 + % 其中\setlocalbibstring修改缩写字符串,setlocalbiblstring修改长字符串 + % 注意使用时因为是局部修改,因此要将其与需要修改的引用命令放在一个编组符号内 + % v1.0t,hzz,20190525 + \newcommand{\setlocalbibstring}[2]{% + \csdef{abx@sstr@#1}{#2}} + \newcommand{\setlocalbiblstring}[2]{% + \csdef{abx@lstr@#1}{#2}} + +%===================================================================== +% 动态数据修改 +%===================================================================== +% +% 各层次的数据映射和动态修改 +% +% 原理方法: +% 1. 进行语言包括中英文判断,并设置和记录,比如记录到userf,usere中 +% 2. 增加文献标识符如[M],[J]等,对一些容易混淆的域进行设置以增强兼容性 +% 3. \DeclareSourcemap命令对于biblatex3.11以下版本只能出现一次,3.11版开始支持多个 +% 4. \DeclarestyleSourcemap在biblatex v3.7版开始可以支持出现多次 +% 5. 把作者和译者信息准确的记录到userf,usere中,用于后面判断是否是cjk字符。 +% 注意:这里用userf,usere而不是namee,namef,是因为只有把name列表转成域,才能有效读取姓名中的字符, +% 如果用namee,namef,name信息会自动解析,所以就不能为cjk判断提供需要的信息 +% +% 不同的文献类型使用相同的驱动输出可以有5种方法: +% 1. 是数据源层的映射,将其它类型转换为某一要使用驱动的类型 +% 2. 是样式层映射,也是将其它类型转换为某一要使用驱动的类型 +% 3. 是驱动层映射,也是将其它类型转换为某一要使用驱动的类型 +% 4. 定义驱动类型别名DeclareBibliographyAlias,将其它类型定义为某一要使用驱动的类型的别名 +% 驱动别名定义本质上是做了驱动层映射 +% 5. 直接定义不同的类型的驱动,但驱动内容相同。 +% +% 关于数据映射和驱动使用的考虑如下: +% 1. 为避免利用biber输出bib文件时的数据变动,尽量不在数据源层映射做类型转换 +% 2. 为减少代码量,尽量少做内容相同的不同类型驱动 +% 3. 因此类型相关的处理主要在样式层映射、驱动层映射、驱动别名 +% 4. 由于biblatex默认做的驱动别名处理可能增加一些信息比如masterthesis转thesis时增加的type +% 可以在样式层映射做某些需要避免这种默认处置的转换 +% 5. 当没有避免默认行为的需求时,全部采用驱动别名的方式处理,等价于驱动层的映射 +% +% 文献类型和驱动考虑如下: +% 1. 连续出版物及析出文献有其特殊性,因此考虑两类periodical和article +% newpaper映射为article,并以note域做区分特殊处理 +% 2. 专著和专著中的析出文献是主要的类型,因此考虑book和inbook +% standard映射为book或inbook,并以note域做区分特殊处理 +% collection和proceedings基本与book类似,因此做book驱动别名处理 +% incollection和inproceedings基本与inbook类似,因此做inbook驱动别名处理 +% 3. 专利类型有其特殊性,考虑patent类型 +% 4. 电子资源类型有其特殊性,考虑online类型 +% 5. 报告类型与book有点类似,出版项处理与book一样,但有时又要有修改和更细日期 +% 因此考虑用一种类型来输出,使用report类型 +% 6. 手册/学位论文等类型与book有点类似,但对于出版项处理时,有缺省时,直接省略, +% 同时有version和edition的区别,因此考虑用一种类型来输出,使用manual类型 +% 7. 包括报告,学位论文在内的其它所有的类型,都做一个判断,当没有出版项时, +% 且存在网址信息时,将其转换为online类型输出,否则都做为manual类型输出。 +% 8. 备选类型misc当存在网址时直接转换为online,由于howpublished域可用于描述 +% 更多的信息,因此不存在网址时,独立做一个备选格式 +% 9. 出版项主要以如下方式处理: +% (a) location+institution+date 仅用于连续出版物 +% (b)publisher+location+date 用于需要完整输出出版项的类型,比如book,collection,proceedings,in*,report +% (c)institution+location+date 用于出版项缺失时不输出的类型,包括manual,thesis,archive等其他类型 +% (d)printlist{insitution} 用于电子资源,仅输出出版者或组织,为数据映射方便,本来默认的organization域转换为用insitution输出。 +% (e) 不输出,主要用于连续出版物析出的文献 +% 10. 日期以如下方式处理: +% date 由于存在biblatex选项,因此通过选项控制,数据源为date解析数据或year +% urldate 由于存在biblatex选项,因此通过选项控制,输出到日,且用[]包围,数据源为urldate +% newsdate 用于公告日期,公开日期或新闻日期,输出到日,但无包围符号,数据源为date +% modifydate 用于更新或修改日期,输出到日,且用()包围,数据源为date或enddate或eventdate + +\DeclareSourcemap{%\perdatasource{examples.bib} +\maps[datatype=bibtex]{% + \map{%当没有作者时将editor转成author + \pernottype{inbook}%因为in系列中editor可能用来表示bookauthor,所以排除 + \pernottype{inproceedings} + \pernottype{incollection} + \pernottype{periodical}%因为peridical直接使用editor,所以排除 + %注意notfield在低版本biblatex中没有 + %\step[notfield=author,final]%当author不存在,将editor复制给author + \step[fieldsource=editor,fieldtarget=author]%并删除editor + } + \map{%当没有作者时将translator转成author + \pernottype{inbook} + \pernottype{inproceedings} + \pernottype{incollection} + %\step[notfield=author,final]%当author不存在,将translator复制给author + \step[fieldsource=translator,fieldtarget=author]%并删除translator + } + \map{%让address和location同步,biblatex中address是location的别名 + %因此输出的时候只有location信息,但处理过程中是可以存在address的。 + \step[notfield=address,final]% + \step[fieldsource=location,final] + \step[fieldset=address,origfieldval] + } + \map{ + \step[notfield=location,final]% + \step[fieldsource=address,final] + \step[fieldset=location,origfieldval] + } + \map{%处理在bib文件用mark标记文献类型标识符的情况 + \step[fieldsource=mark,final] + \step[fieldset=usera, origfieldval] + } + \map{%处理在bib文件中直接给出文献的姓名格式为lowercase的情况 + \step[fieldsource=nameformat,match=lowercase,final] + \step[fieldset=namefmtid,fieldvalue={1}] + } + \map{%处理在bib文件中直接给出文献的姓名格式为givenahead的情况 + \step[fieldsource=nameformat,match=givenahead,final] + \step[fieldset=namefmtid,fieldvalue={2}] + } + \map{%处理在bib文件中直接给出文献的姓名格式为familyahead的情况 + \step[fieldsource=nameformat,match=familyahead,final] + \step[fieldset=namefmtid,fieldvalue={3}] + } + \map{%处理在bib文件中直接给出文献的姓名格式为pinyin的情况 + \step[fieldsource=nameformat,match=pinyin,final] + \step[fieldset=namefmtid,fieldvalue={4}] + } + \map{%根据article确定文献类型标识符 + \pertype{article} + \step[fieldset=usera, fieldvalue={J}] + } + \map{%根据periodical确定文献类型标识符 + \pertype{periodical} + \step[fieldset=usera, fieldvalue={J}] + \step[fieldsource=author] %有时会把author和editor混淆,处理后使用editor + \step[fieldset=editor, origfieldval] + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{%根据增加一个新闻报纸的类型newspaper确定文献类型标识符 + \pertype{newspaper} + \step[fieldset=usera, fieldvalue={N}] + \step[fieldset=note, fieldvalue=news]%因为没有专门的驱动,记录note方便映射为article后判断 + } + \map{%对应增加的一个数据库类型database确定文献类型标识符 + \pertype{database} + \step[fieldset=usera, fieldvalue={DB}] + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{%对应增加的一个数据集类型dataset确定文献类型标识符 + \pertype{dataset} + \step[fieldset=usera, fieldvalue={DS}]% + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{%对应增加的一个软件类型software确定文献类型标识符 + \pertype{software} + \step[fieldset=usera, fieldvalue={CP}] + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{%对应增加的一个舆图类型map确定文献类型标识符 + \pertype{map} + \step[fieldset=usera, fieldvalue={CM}]% + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{%对应增加的一个档案类型archive确定文献类型标识符 + \pertype{archive} + \step[fieldset=usera, fieldvalue={A}] + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{%因为misc类型本身就是没有类型,而不像其它文献有明确的类型,所以 + %当misc类型带有网址时,直接将其转换为online类型 + \pertype{misc} + \step[fieldsource=url,final] + \step[typesource=misc,typetarget=online] + } + \map{%对应增加的一个备选类型misc确定文献类型标识符 + \pertype{misc} + \step[fieldset=usera, fieldvalue={Z}]% + } + \map{ + \pertype{book} + \pertype{inbook} + \step[fieldset=usera, fieldvalue={M}] + \step[fieldsource=version] %有时会把version和edition混淆,处理后直接用edition + \step[fieldset=edition, origfieldval] + } + \map{%兼容老的standard类型,确定文献类型标识符 + \pertype{standard} + \step[fieldset=usera, fieldvalue={S}] + \step[fieldset=note, fieldvalue=standard]%因为没有专门的驱动,记录note方便映射为book和inbook后判断 + } + \map{ + \pertype{patent} + \step[fieldset=usera, fieldvalue={P}] + } + \map{ + \pertype{inproceedings} + \pertype{conference}%兼容老的conference类型 + \step[fieldset=usera, fieldvalue={C}] + \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=publisher, origfieldval] + } + \map{ + \pertype{proceedings} + \step[fieldset=usera, fieldvalue={C}] + \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher + \step[fieldset=publisher, origfieldval] + } + \map{ + \pertype{incollection} + \step[fieldset=usera, fieldvalue={G}] + \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=publisher, origfieldval] + } + \map{ + \pertype{collection} + \step[fieldset=usera, fieldvalue={G}] + \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher + \step[fieldset=publisher, origfieldval] + } + \map{ + \pertype{report} + \pertype{techreport}%兼容老的techreport类型 + \step[fieldset=usera, fieldvalue={R}] + \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher + \step[fieldset=publisher, origfieldval] + } + \map{ + \pertype{thesis} + \pertype{mastersthesis}%兼容老的mastersthesis和phdthesis类型 + \pertype{phdthesis} + \step[fieldset=usera, fieldvalue={D}] + \step[fieldsource=publisher]%有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{ + \pertype{online} + \pertype{electronic}%兼容老的electronic类型 + \pertype{www}%兼容老的www类型 + \step[fieldset=usera, fieldvalue={EB}] + \step[fieldsource=publisher]%有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval]%因为online的出版项处理类似手册 + \step[fieldsource=organization]%有时会把organization和institution混淆,处理后使用institution,以增强兼容性 + \step[fieldset=institution, origfieldval] + } + \map{ + \pertype{manual} + \step[fieldset=usera, fieldvalue={A}] + \step[fieldsource=edition]%有时会把version和edition混淆,处理后使用version + \step[fieldset=version, origfieldval] + \step[fieldsource=publisher]%有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + \step[fieldsource=organization]%有时会把organization和institution混淆,处理后使用institution,以增强兼容性 + \step[fieldset=institution, origfieldval] + } + \map{ + \pertype{unpublished} + \step[fieldset=usera, fieldvalue={Z}] + } + \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 + \step[fieldsource={author}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] + } + \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 + \step[fieldsource={editor}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] + }% + \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 + \step[fieldsource={translator}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] + }% + \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 + \step[fieldsource={bookauthor}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] + }% + \map{%处理一些用year表示date的情况 + %这样处理将会设置date域,并使得labeldatesource变为空,因为date的前缀为空(如果是urldate,那么labeldatesource就是url)。 + %同时date域会被biblatex自动解析为year,month,day,并且覆盖原来的year信息 + \step[fieldsource=year] + \step[fieldset=date, origfieldval] + } + \map{%将entrykey放入keywords中用于后期使用 + \step[fieldsource=entrykey] + \step[fieldset=keywords, origfieldval] + } + \map{\step[fieldsource=title,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF + \step[fieldset=userd,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 + } + \map{% + \step[fieldsource=title,match=\regexp{[\x{0400}-\x{052F}]},final] + \step[fieldset=userd,fieldvalue={russian}]%俄语 + } + \map{% + \step[fieldsource=title,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] + \step[fieldset=userd,fieldvalue={japanese}]%日语 + } %确定形式后可增加类似andotherscn这样的本地化字符串处理 + \map{% + \step[fieldsource=title,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] + \step[fieldset=userd,fieldvalue={korean}]%韩语 + } + \map{%文献题名的中文判断,将信息保存到userd中,避免因为标签生成原因导致title域被清除而产生问题 + \step[fieldsource=title, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]% + \step[fieldset=userd, fieldvalue={chinese}] + } + \map{%将没有设置userd,且存在title域的默认设置为英文 + \step[fieldsource=title,final] + \step[fieldset=userd,fieldvalue={english}] + } + \map{\step[fieldsource=author,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF + \step[fieldset=userf,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 + } + \map{% + \step[fieldsource=author,match=\regexp{[\x{0400}-\x{052F}]},final] + \step[fieldset=userf,fieldvalue={russian}]%俄语 + } + \map{% + \step[fieldsource=author,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] + \step[fieldset=userf,fieldvalue={japanese}]%日语 + } %确定形式后可增加类似andotherscn这样的本地化字符串处理 + \map{% + \step[fieldsource=author,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] + \step[fieldset=userf,fieldvalue={korean}]%韩语 + } + \map{%作者的中文判断 + \step[fieldsource=author, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] + \step[fieldset=userf, fieldvalue={chinese}] + } + \map{%将没有设置userf,且存在author域的默认设置为英文 + \step[fieldsource=author,final] + \step[fieldset=userf,fieldvalue={english}] + } + \map{\step[fieldsource=translator,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF + \step[fieldset=usere,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 + } + \map{% + \step[fieldsource=translator,match=\regexp{[\x{0400}-\x{052F}]},final] + \step[fieldset=usere,fieldvalue={russian}]%俄语 + } + \map{% + \step[fieldsource=translator,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] + \step[fieldset=usere,fieldvalue={japanese}]%日语 + } %确定形式后可增加类似andotherscn这样的本地化字符串处理 + \map{% + \step[fieldsource=translator,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] + \step[fieldset=usere,fieldvalue={korean}]%韩语 + } + \map{%译者的中文判断 + \step[fieldsource=translator, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] + \step[fieldset=usere, fieldvalue={chinese}] + } + \map{%将没有设置usere,且存在translator域的默认设置为英文 + \step[fieldsource=translator,final] + \step[fieldset=usere,fieldvalue={english}] + } + \map{\step[fieldsource=editor,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF + \step[fieldset=userc,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 + } + \map{% + \step[fieldsource=editor,match=\regexp{[\x{0400}-\x{052F}]},final] + \step[fieldset=userc,fieldvalue={russian}]%俄语 + } + \map{% + \step[fieldsource=editor,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] + \step[fieldset=userc,fieldvalue={japanese}]%日语 + } %确定形式后可增加类似andotherscn这样的本地化字符串处理 + \map{% + \step[fieldsource=editor,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] + \step[fieldset=userc,fieldvalue={korean}]%韩语 + } + \map{%编者的中文判断 + \step[fieldsource=editor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 + \step[fieldset=userc, fieldvalue={chinese}] + } + \map{%将没有设置userc,且存在editor域的默认设置为英文 + \step[fieldsource=editor,final] + \step[fieldset=userc,fieldvalue={english}] + } + \map{\step[fieldsource=bookauthor,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF + \step[fieldset=userb,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 + } + \map{% + \step[fieldsource=bookauthor,match=\regexp{[\x{0400}-\x{052F}]},final] + \step[fieldset=userb,fieldvalue={russian}]%俄语 + } + \map{% + \step[fieldsource=bookauthor,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] + \step[fieldset=userb,fieldvalue={japanese}]%日语 + } %确定形式后可增加类似andotherscn这样的本地化字符串处理 + \map{% + \step[fieldsource=bookauthor,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] + \step[fieldset=userb,fieldvalue={korean}]%韩语 + } + \map{%编者的中文判断 + \step[fieldsource=bookauthor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 + \step[fieldset=userb, fieldvalue={chinese}] + } + \map{%将没有设置userc,且存在editor域的默认设置为英文 + \step[fieldsource=bookauthor,final] + \step[fieldset=userb,fieldvalue={english}] + } + \map{\step[fieldsource=userd,final]%userd存在则用根据标题的语言设定language + \step[fieldset=language,origfieldval]%本身language存在则不设定 + } + \map{\step[fieldsource=userf,final]%userd不存在,而userf存在则根据author的语言设定language + \step[fieldset=language,origfieldval] + }%如果没有作者和标题,那么剩下的最可能有意义的只有网址了,而网址通常是英文的,因此不用再进一步对其它域进行判断了。 + \map{%将没有设置的language设置成en,即认为不是中文的就是英文的。 + \step[fieldset=language,fieldvalue={english}] + } + \map{%一条文献的语言已经设定在language域中,由于出版项相关宏中使用userd判断, + %所以将一条文献的主体语言设定到userd中,本身前面userd已经设定,但没有处理无标题的情况, + %这里的处理等价于没有标题时,利用作者的语言设定userd,再没有作者,则默认用英文设定userd + \step[fieldsource=language] + \step[fieldset=userd,origfieldval] + } + \map{%当文献给出language域时,设置文献要使用的本地化字符串的语言 + \step[fieldsource=language,match=\regexp{(e|E)(n|N)(g|G)(l|L)(i|I)(s|S)(h|H)},final] + \step[fieldset=langid,fieldvalue={english}] + } + \map{ + \step[fieldsource=language,match=\regexp{(r|R)(u|U)(s|S)(s|S)(i|I)(a|A)(n|N)},final] + \step[fieldset=langid,fieldvalue={russian}] + } + \map{% + \step[fieldsource=language,match=\regexp{(f|F)(r|R)(e|E)(n|N)(c|C)(h|H)},final] + \step[fieldset=langid,fieldvalue={french}] + } + \map{% + \step[fieldsource=language,match=\regexp{(c|C)(h|H)(i|I)(n|N)(e|E)(s|S)(e|E)},final]%中日韩语目前都用english, + \step[fieldset=langid,fieldvalue={english}] + } + \map{% + \step[fieldsource=language,match=\regexp{(j|J)(a|A)(p|P)(a|A)(n|N)(e|E)(s|S)(e|E)},final]%中日韩语目前都用english, + \step[fieldset=langid,fieldvalue={english}] + } + \map{% + \step[fieldsource=language,match=\regexp{(k|K)(o|O)(r|R)(e|E)(a|A)(n|N)},final]%中日韩语目前都用english, + \step[fieldset=langid,fieldvalue={english}] + } +} +} + + + % + % 修改输入的参考文献数据,样式层的操作 + % + % 原理方法:biblatex3.4以上版本map可使用foreach选项来处理特殊字符 + \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map{%尝试未定义数据模型的standard类型映射为其他类型book或inbook, + %standard类型在blx-dm中有出现,但仅定义了类型,域和约束等都没有定义 + %因为可能要映射两种类型,所以不能在驱动层处理,因为要做判断 + \step[fieldsource=booktitle,final]%当存在booktitle域是映射为inbook + \step[typesource=standard, typetarget=inbook, final] + } + \map{%尝试未定义数据模型的standard类型映射为book,standard类型在blx-dm中有出现,但仅定义了类型,域和约束等都没有定义 + \step[typesource=standard, typetarget=book, final]%当不存在booktitle域是映射为book + } +% \map{%先于标准样式的driver层映射,将其先映射过来,并取消type设置 +% \step[typesource=mastersthesis, typetarget=thesis, final] +% %\step[fieldset=type, fieldvalue=mathesis] +% } +% \map{%先于标准样式的driver层映射,将其先映射过来,并取消type设置 +% \step[typesource=phdthesis, typetarget=thesis, final] +% %\step[fieldset=type, fieldvalue=phdthesis] +% } + \map{%先于标准样式的driver层映射,将其先映射过来,并取消type设置 + \step[typesource=techreport, typetarget=report, final] + %\step[fieldset=type, fieldvalue=techreport] + } + \map{% + \pertype{report} + \step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=report,typetarget=online] + \step[fieldset=note,fieldvalue={report}] + } + \map{% + \pertype{thesis} + \step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=thesis,typetarget=online] + } + \map{% + \pertype{manual} + \step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=manual,typetarget=online] + } + \map{% + \pertype{unpublished} + \step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=unpublished,typetarget=online] + } + \map{% + \pertype{database} + \step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=databasetypetarget=online] + } + \map{% + \pertype{dataset} + \step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=dataset,typetarget=online] + } + \map{% + \pertype{software} + \step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=software,typetarget=online] + } + \map{% + \pertype{map} + \step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=map,typetarget=online] + } + \map{% + \pertype{archive} + \step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=archive,typetarget=online] + } + \map[overwrite]{%这里还必须有overwrite,注意不同版本存在差异,比如texlive2015变16后biber有变化(20161207修改正确) + \step[fieldsource=note, final]%将note域信息复制给keywords,用于输出时容易区分标准和报纸 + \step[fieldset=keywords, fieldvalue={,}, append] + \step[fieldset=keywords, origfieldval, append] + } + \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}] + } + } + } + +% +%驱动别名等价于驱动层映射 +% +\DeclareBibliographyAlias{newspaper}{article}% +\DeclareBibliographyAlias{inproceedings}{inbook}%会议论文文献类型驱动 +\DeclareBibliographyAlias{conference}{inbook}%会议论文文献类型驱动 +\DeclareBibliographyAlias{incollection}{inbook}%文集中析出文献类型驱动 +\DeclareBibliographyAlias{collection}{book}%%文集类型驱动 +\DeclareBibliographyAlias{proceedings}{book}%会议论文集文献类型驱动 +\DeclareBibliographyAlias{thesis}{manual}%学位论文驱动 +\DeclareBibliographyAlias{unpublished}{manual}%其它类型驱动 +\DeclareBibliographyAlias{database}{manual} +\DeclareBibliographyAlias{dataset}{manual} +\DeclareBibliographyAlias{software}{manual} +\DeclareBibliographyAlias{map}{manual} +\DeclareBibliographyAlias{archive}{manual} + + +%===================================================================== +% 参考文献表环境 +%===================================================================== +% +% 列表格式 +% +% 增加一个\bibitemindent尺寸用于控制list环境的itemindent +% v1.0l,20180615,hzz +% v1.0t,20200319,hzz,增加尺寸\biblabelextend使某些字体下标签宽度不足时可增加标签宽度 +\setlength{\bibhang}{\biblabelsep}% +\newlength{\bibitemindent} +\setlength{\bibitemindent}{0pt} +\newlength{\biblabelextend} +\setlength{\biblabelextend}{0pt} + + +\defbibenvironment{bibliography} + {\list + {\printtext[labelnumberwidth]{% + \printfield{labelprefix}% + \printfield{labelnumber}}} + {\addtolength{\labelnumberwidth}{\biblabelextend}% + \setlength{\labelwidth}{\labelnumberwidth}% + \setlength{\labelsep}{\biblabelsep}% + \setlength{\leftmargin}{\bibhang}% + \addtolength{\leftmargin}{\labelnumberwidth}% + \setlength{\itemindent}{\bibitemindent}% + \setlength{\itemsep}{\bibitemsep}% + \setlength{\parsep}{\bibparsep}}% + \renewcommand*{\makelabel}[1]{\hss##1}} + {\endlist} + {\item} + +% +% 顺序编码制-标签对齐方式处理 +% +% 原理方法:利用选项提供的计数器数值做选择 +% 左对齐,右对齐为list环境下的处理,此时list环境的\labelwidth只能设置一个,是最宽标签的宽度 +% 项对齐则是在段落环境下做的处理。 +% 左对齐时,参考文献各项内容对齐,序号标签与参考文献项内容的间距可变 +% 右对齐时,参考文献各项内容对齐,序号标签与参考文献项内容的间距相等,标签与页边距离可变 +% 项对齐时,序号标签贴在页边,序号标签与参考文献项内容的间距相等 +% 修改序号标签格式为: +% \DeclareFieldFormat{shorthandwidth}{\mkbibbrackets{#1}} %源来自numeric.BBX +% \DeclareFieldFormat{labelnumberwidth}{\ttfamily\mkbibbrackets{#1}\hfill} +\DeclareFieldFormat{labelnumberwidth}{% +\ifcase\value{gbalignlabel}%右对齐,整个标签为右对齐 + \mkgbnumlabel{#1}% +\or%左对齐,整个标签为左对齐 + \mkgbnumlabel{#1}\hfill% +\or%中间对齐,比如:序号数字居于[]中间 + \hfil\mkgbnumlabel{\hfill#1\hfill}\hfil% +\fi} + +% +% 修改序号标签格式为以各条参文献为基础进行对齐的方式,即序号与条目内容间隔相等的方式。 +\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 + {}} +\newlength{\lengthid} +\newlength{\lengthlw} +\newcommand{\itemcmd}{% +\settowidth{\lengthid}{\mkgbnumlabel{\printfield{labelnumber}}} +\addtolength{\lengthid}{\biblabelsep} +\setlength{\lengthlw}{\textwidth} +\addtolength{\lengthlw}{-\lengthid} +\addvspace{\bibitemsep}%恢复\bibitemsep的作用 +%\parshape 2 0em \textwidth \lengthid \lengthlw +\hangindent\lengthid +\mkgbnumlabel{\printfield{labelnumber}}% +\hspace{\biblabelsep}} +% +% 简单的段落环境 +\defbibenvironment{bibliography} +{\begingroup\setlength{\parindent}{0em}} +{\endgroup} +{\itemcmd}} + + +%===================================================================== +% 设置单元或块等的标点 +%===================================================================== +\renewrobustcmd*{\bibinithyphendelim}{\addhighpenspace}%用于处理姓名中名部分存在-的情况,比如ZHANG Yu-xin +\renewcommand*{\subtitlepunct}{\addcolon\addspace} %修改标题和其它标题信息间的标点,来源biblatex.def, +% +% 利用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}%%页码引用格式的修改,修改为用冒号 +%\renewcommand{\relateddelim}{}%\par + +%===================================================================== +% 修改域的格式,重定义域的输出宏 +%===================================================================== +% +% 新增文献类型标识符的格式 +% []前的nobreak,从GB4.1节的例子看不应该加,所以去掉 +% 但因为考虑到cjk字符和[]之间可能添加空格,所以仍然加上 +% 而[]中间的内容,从4.6.2节的例子看也是可以分割的,因此内部的nobreak也可以去掉 +% +\DeclareFieldFormat{gbtypeflag}{% +\iftoggle{bbx:gbmedium}% +{\iftoggle{bbx:url}% + {\iffieldundef{url}%当存在url时,增加一个OL标识符 + {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}}% + {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\texttt{/}OL]}}% + }% + {\ifentrytype{online}% + {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\texttt{/}OL]}}% + {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}}% + }}% + {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{]}}% +} + +% +% 新增用于报纸的文献类型标识符的格式 +% +\DeclareFieldFormat{gbtypeflagn}{%用于报纸newspaper +\iftoggle{bbx:gbmedium}% +{\iftoggle{bbx:url}% + {\iffieldundef{url}%当存在url时,增加一个OL标识符 + {\nobreak\printtext{[}\nobreak N\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% + {\nobreak\printtext{[}\nobreak N\printtext{\texttt{/}OL]}\nobreak}% + }% + {\nobreak\printtext{[}\nobreak N\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% +}{\nobreak\printtext{[}\nobreak N\printtext{]}\nobreak}% +} + +% +% 新增用于标准的文献类型标识符的格式 +% +\DeclareFieldFormat{gbtypeflags}{%用于标准standard +\iftoggle{bbx:gbmedium}% +{\iftoggle{bbx:url}% + {\iffieldundef{url}%当存在url时,增加一个OL标识符 + {\nobreak\printtext{[}\nobreak S\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% + {\nobreak\printtext{[}\nobreak S\printtext{\texttt{/}OL]}\nobreak}% + }% + {\nobreak\printtext{[}\nobreak S\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% +}{\nobreak\printtext{[}\nobreak S\printtext{]}\nobreak}% +} + +% +% 重设title等参考文献信息的输出格式 +% +% 原理方法:修改来自biblatex.def文件的原格式 +\newcommand{\bibtitlefont}{} +\newcommand{\bibauthorfont}{} +\newcommand{\bibpubfont}{} + +% +% 作者信息的输出格式 +% +% 20180425,v1.0k,为作者增加字体控制命令,Hu Zhenzhen +% 20180603,v1.0l,增加使用nameformat域来选择姓名格式 +\DeclareNameFormat{namefmtselected}{% +\iffieldundef{namefmtid}{}% +{\defcounter{gbnamefmtcase}{\thefield{namefmtid}}}% +\ifcase\value{gbnamefmtcase}% + \ifgiveninits + {\usebibmacro{name:gbuppercase} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffix}} + {\usebibmacro{name:gbuppercase} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}}% +\or + \ifgiveninits + {\usebibmacro{name:gblowercase} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffix}} + {\usebibmacro{name:gblowercase} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}}% +\or + \ifgiveninits + {\usebibmacro{name:given-family} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffix}} + {\usebibmacro{name:given-family} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}}% +\or + \ifgiveninits + {\usebibmacro{name:family-given} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffix}} + {\usebibmacro{name:family-given} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}}% +\or +\usebibmacro{name:gbpinyin} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}% +\or + \ifnumequal{\value{listcount}}{1} + {\ifgiveninits + {\usebibmacro{name:family-given} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffix}} + {\usebibmacro{name:family-given} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}}% + \ifboolexpe{% + test {\ifdefvoid\namepartgiven} + and + test {\ifdefvoid\namepartprefix}} + {} + {\usebibmacro{name:revsdelim}}} + {\ifgiveninits + {\usebibmacro{name:given-family} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffix}} + {\usebibmacro{name:given-family} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}}}% +\fi + \usebibmacro{name:andothers}} + +\DeclareNameAlias{default}{namefmtselected}%姓名的默认格式采用可选的模式 +\DeclareNameAlias{sortname}{default}% Used in the bibliography %family-given/given-family +\DeclareNameAlias{citename}{default}% Default used by \citename + +\DeclareDelimFormat[bib,biblist]{andothersdelim}{\addcomma\addspace} +%\DeclareDelimFormat[textcite]{andothersdelim}{\addspace}% + +%GB/T 7714-2015 风格,全部大写 +\newbibmacro*{name:gbuppercase}[4]{\bibauthorfont% +\renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 +\renewcommand*{\revsdnamepunct}{}% + \ifuseprefix% + {\usebibmacro{name:delim}{#3#1}% + \usebibmacro{name:hook}{#3#1}% + \ifdefvoid{#3}{}{% + \ifcapital% + {\mkbibnameprefix{\MakeCapital{#3}}\isdot}% + {\mkbibnameprefix{#3}\isdot}% + \ifprefchar{}{\bibnamedelimc}}% + \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% + \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital + \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%后缀前加逗号 + {\usebibmacro{name:delim}{#1}% + \usebibmacro{name:hook}{#1}% + \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% + \ifboolexpe{% + test {\ifdefvoid{#2}} + and + test {\ifdefvoid{#3}}} + {}{\revsdnamepunct}% + \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital + \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}% + \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号 +} + +%GB/T 7714-2015 风格,大小写不变,根据bib文件内输入原样输出 +\newbibmacro*{name:gblowercase}[4]{\bibauthorfont% + \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 + \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def + \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}{}{\addcomma\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}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号 +} + +%中文常见风格,汉语拼音全拼模式 +\newbibmacro*{name:gbpinyin}[4]{\bibauthorfont% +\renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉,%来源biblatex2.STY +\renewcommand*{\revsdnamepunct}{}%%来源biblatex.def +\renewrobustcmd*{\bibnamedelima}{\mbox{-}}% + \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}}% +} + + +\def\UrlFont{\rmfamily}%设置url字体为roman字体%\ttfamily +%\urlstyle{rm} %使用这句也一样 +\setcounter{biburlnumpenalty}{100} %让url可以在数字后断行 +\setcounter{biburlucpenalty}{100} %让url可以在大写字母后断行 +\setcounter{biburllcpenalty}{100} %让url可以在小写字母后断行 +\DeclareFieldFormat{doi}{% + \rmfamily{DOI}\addcolon\space + \ifhyperref + {\href{https://doi.org/#1}{\nolinkurl{#1}}} + {\nolinkurl{#1}}} + +\DefineBibliographyExtras{english}{\renewcommand*{\bibrangedash}{-}}%将页码间隔符替换会英文的短横线 + +% +% beamer中文献标题后的标点问题 +% v1.0k,20180405,为texlive2017以上版本中的beamer兼容性做的处理,Hu Zhenzhen +% +% 原理方法:如下代码处理texlive2017以上版本中,beamer中文献的标题后出现两个点的情况: +% texlive2017以上的beamer中对macro{title}做了patch,正常情况下不会出现两个点的情况,但由于 +% 之前为了处理texlive2015,2016下的title格式添加了adddot,导致出现两个点的情况,而且也影响 +% 析出文献的//符号的输出,因此再次对macro{title}做patch消除beamer中做apptocmd时添加的\newunitpunct +\@ifclassloaded{beamer}{ + \DeclareFieldFormat{title}{#1}% + \DeclareFieldFormat[article,patent,thesis,unpublished]{title}{#1} + \AtBeginDocument{% + \patchcmd{\abx@macro@title}{\newunitpunct}{}{}{}}}{} + + + % + % 专利的公告日期、或报纸的日期的输出宏 + % 20160701,v1.0,新增加 + % 20180405,为biblatexv3.10版本,出现多出点bug做处理,Hu Zhenzhen + % + % 原理方法:加上printtext避免破坏异步标点机制 + % 本可以用\printdate,但由于date选项设置为year,所以仅会给出年份 + % 所以无法再用选项设置的方法,印象需要用底层的命令 + % 这里可以用\blx@isodate,但用自定义的\blx@gbdate,以避免版本判断 + \newbibmacro*{newsdate}{%% + \printtext{\blx@gbdate{}{}}%%\blx@isodate{}{}% + } + + \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 + \ifboolexpr{% + test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}% + }% + {}%更新或修改日期通常有day信息 + {\iffieldundef{year}{% + \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{(}\printeventdate\printtext{)}}}% + {\printtext{(}\printenddate\printtext{)}}% + }{\iffieldequalstr{year}{}{%因为year存在,但为空 + }{\printtext{(}\blx@gbdate{}{}\printtext{)}}% + }% + }}% + + + % + % biblatex>v3.8版利用related实现双语文献的处理 + % + %为了实现v3.8以上版本的双语文献,采用related的方法代替set方法,因为set方法已经无法实现了, + %因为set不再复制其第一个成员的信息。于是定义一个命令,用于动态的修改数据,即添加related域的信息 + %其中使用了\DeclareStyleSourcemap,但由于其只能出现在导言区中,因此\defdoublelangentry命令也只能出现在导言区中 + \newcommand{\defdoublelangentry}[2]{% + \edef\entrykeya{#1} + \edef\entrykeyb{#2} + \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map{ + \step[fieldsource=entrykey, match=\entrykeya, final] + \step[fieldset=related, fieldvalue=\entrykeyb] + } + } + } + } + + % 关联文献的输出格式 + % + % 关联文献间的分隔符 + % + \renewcommand{\relateddelim}{\adddot\newline\nobreak}%\par,而作者年样式不需要修改,因为没有项对齐的标签问题 + % + % 关联文献块前的分隔符,针对biblatex>3.11 + % + % 原理方法:因为增加了begrelateddelim钩子,所以不需要重定义related输出宏 + \ifdef{\begrelateddelim}{\renewcommand{\begrelateddelim}{\adddot\newline\nobreak}}{} + + + +% +% 新增一个样式用于调整期刊年份的格式,只打印年份 +% +\newbibmacro*{periodical+issue}{% + \printtext{%去掉了[parens] + \iffieldundef{issue} + {%\usebibmacro{date}%修改为下一句 + }% + {\printfield{issue}% + \setunit*{\addspace}% + %\usebibmacro{date}%修改为下一句 + }% + }% + %\newunit +} + +% +% 重设专利title的输出,将文献类型标识符输出出去 +% +\renewbibmacro*{patenttitle}{%原输出来自biblatex.def文件 + \ifboolexpr{% + test{\iffieldundef{title}}% + and% + test{\iffieldundef{subtitle}}% + }% + {}% + {\printtext[title]{\bibtitlefont% + \printfield[titlecase]{title}% + \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题 + {}{\setunit{\subtitlepunct}% + \printfield[titlecase]{subtitle}}% + \iffieldundef{titleaddon}{}%判断一下titleaddon,否则直接加可能多一个空格 + {\setunit{\subtitlepunct}\printfield{titleaddon}}% + \setunit{\subtitlepunct}\printfield{number}%写专利号 + \iftoggle{bbx:gbtype}{\printfield[gbtypeflag]{usera}}{}% + %\iffieldundef{booktitle}{\newunit}{}%当title是析出时,不要标点 + %\newunit + }% +}% +} + +% +% 编者类型的本地化字符串输出 +% v1.0q 2019-03-01 hzz +% 能对不同条目类型作格式设置的域格式,能对不同环境做格式设置的分隔符 +% 能对不同文境作设置的包括排序,标签等 +% 这里因为考虑可能标注和文献表中存在不同,所以用分隔符来输出本地化字符串 +% +\DeclareDelimFormat{streditortypes}{% + \edef\userfieldabcde{userd}% + \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% + \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% + \ifcase\value{gbbiblocalcase}% + \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{\thefield{editortype}scn}}{}% + \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{\thefield{editortype}skr}}{}% + \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{\thefield{editortype}sjp}}{}% + \iffieldequalstr{\userfieldabcde}{english}{\addcomma\addthinspace\bibstring{\thefield{editortype}s}}{}% + \iffieldequalstr{\userfieldabcde}{french}{\addcomma\addthinspace\bibstring{\thefield{editortype}s}}{}% + \iffieldequalstr{\userfieldabcde}{russian}{\addcomma\addthinspace\bibstring{\thefield{editortype}s}}{}% + \or% + \bibstring{\thefield{editortype}scn}% + \or% + \addcomma\addthinspace\bibstring{\thefield{editortype}s}% + \fi}% +% +\DeclareDelimFormat{streditortype}{% + \edef\userfieldabcde{userd}% + \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% + \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% + \ifcase\value{gbbiblocalcase}% + \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{\thefield{editortype}cn}}{}% + \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{\thefield{editortype}kr}}{}% + \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{\thefield{editortype}jp}}{}% + \iffieldequalstr{\userfieldabcde}{english}{\addcomma\addthinspace\bibstring{\thefield{editortype}}}{}% + \iffieldequalstr{\userfieldabcde}{french}{\addcomma\addthinspace\bibstring{\thefield{editortype}}}{}% + \iffieldequalstr{\userfieldabcde}{russian}{\addcomma\addthinspace\bibstring{\thefield{editortype}}}{}% + \or% + \bibstring{\thefield{editortype}cn}% + \or% + \addcomma\addthinspace\bibstring{\thefield{editortype}}% + \fi}% + + +% +% 修改series域的输出格式 +% 2019.05.01,v1.0r,byhzz +\renewbibmacro*{series+number}{% + \printfield{series}% + %\setunit*{\addspace}% + %\printfield{number}% + %\newunit + } + +%===================================================================== +%设置驱动格式 +%===================================================================== + +%中文环境的局部化代码 +\def\localsetchinesecode{% +\ifboolexpr{% +togl{bbx:gbstyle} or test {\iffieldequalstr{userd}{chinese}}% +}% +{% +\iftoggle{bbx:gbfieldstd}{}{% +\DeclareFieldFormat{title}{##1\adddot\addthinspace}% +\DeclareFieldFormat{journaltitle}{##1\isdot}%添加\isdot用于缩写名带点情况,将其转换为缩写点,便于标点的追踪 +\DeclareFieldFormat{issuetitle}{##1}% +\DeclareFieldFormat{maintitle}{##1}% +\DeclareFieldFormat{booktitle}{##1}% +\DeclareFieldFormat%将期刊等文献的标题中原来带的引号去掉 + [article,patent,thesis,unpublished]% + {title}{##1\adddot\addthinspace}%\mkbibquote{##1\isdot} +\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{titlecase}{\iftoggle{bbx:titlelink}{% +\iffieldundef{url}{\MakeCapital##1}{% +\href{\thefield{url}}{##1}}}{\MakeCapital##1}}%重设标题格式,将其修改为首字母大写 +\DeclareFieldFormat{pages}{##1}%去掉前面引导页码的pp.等字符,\mkpageprefix[bookpagination]{##1} +}% +% +% 修改译者位置格式 +% +% 原理方法:修改来自biblatex.def文件的bytranslator+others宏的格式 +\renewbibmacro*{bytranslator+others}{% + \ifnameundef{translator}% + {}% + {%\usebibmacro{bytranslator+othersstrg} + %\setunit{\addspace}% + \printnames[bytranslator]{translator}% + \clearname{translator}% + %从macro*{bytranslator+othersstrg}%中可以看到当地化字符串格式的引用前的代码处理 + %比如生成cotranslator等用于调用cotranslator所代表的当地化字符串 + \usebibmacro{bytranslator+othersstrg}%“译”的位置换到下面来,即放到译者后面。 + %\setunit{\addspace}% + \newunit}% + \usebibmacro{withothers}}% +% +% 修改作者数量超过限定值,做省略时的处理格式 +% v1.0,20160701,hzz +% v1.0O,20190103,hzz,修改利用新定义的一个分隔符strandothersdelim +% +% 原理方法:判断作者或译者是否中文,若中文用字符等,否则用et al. 。 +\renewbibmacro*{name:andothers}{% + \ifboolexpr{% + test {\ifnumequal{\value{listcount}}{\value{liststop}}}% + and + test \ifmorenames + }{\ifnumgreater{\value{liststop}}{1}% + {\finalandcomma}% + {}% +\printdelim{andothersdelim}\printdelim{strandothersdelim}% +}{%当是译者的时候需要特殊处理:从7.2节看等,译前面加逗号,但从示例看等和译同时出现时,译前的逗号没有,比如: +%袁训来, 陈哲, 肖书海, 等. +%胡泳, 范海燕, 译. +%潘惠霞, 魏婧, 杨艳, 等译. +\ifcurrentname{translator}{\addcomma\addthinspace}{}%为了实现上述第二个示例情况做的处理 +}}% +% +% 修改省略作者后的本地化字符串,比如et al. +% v1.0o,20190103,hzz +% +% 原理方法:默认情况下判断作者或译者是否中文,若中文用字符andotherscn=“等”,否则用andothers=“et al.”。 +% 非默认情况,根据选项信息,选择选择强制中文或英文 +% 首先设置全局的,然后设置文献表中的,这一等价于将所有的cite命令环境都设置过了 +% 而不用对每一个引用命令单独设置,比如cite,parancite,textcite都设置 +\DeclareDelimFormat{strandothersdelim}{% + \edef\userfieldabcde{userd}% + \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% + \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% + \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% + \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% + \ifcase\value{gbbiblocalcase}% + \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andotherscn}}{}% + \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andotherskr}}{}% + \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andothersjp}}{}% + \iffieldequalstr{\userfieldabcde}{english}{\bibstring{andothers}}{}% + \iffieldequalstr{\userfieldabcde}{french}{\bibstring{andothers}}{}% + \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{andothers}}{}% + \or% + \bibstring{andotherscn}% + \or% + \bibstring{andothers}% + \fi}% +% +% 修改最后一个作者前的字符串,比如 and +% v1.0o,20190103,hzz +% +% 原理方法:默认情况下判断作者或译者是否中文,若中文用字符andcn=“和”,否则用and=“and”。 +% 非默认情况,根据选项信息,选择选择强制中文或英文 +% 首先设置全局的,然后设置文献表中的,这一等价于将所有的cite命令环境都设置过了 +% 而不用对每一个引用命令单独设置,比如cite,parancite,textcite都设置 +\DeclareDelimFormat{finalnamedelim}{% + \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}% + \addspace% + \edef\userfieldabcde{userd}% + \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% + \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% + \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% + \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% + \ifcase\value{gbbiblocalcase}% + \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andcn}}{}% + \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andkr}}{}% + \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andjp}}{}% + \iffieldequalstr{\userfieldabcde}{english}{\bibstring{and}}{}% + \iffieldequalstr{\userfieldabcde}{french}{\bibstring{and}}{}% + \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{and}}{}% +\space% + \or% + \bibstring{andcn}\space% + \or% + \bibstring{and}\space% + \fi}% +% +% url和url日期格式 +% + \renewbibmacro*{url+urldate}{% + %\usebibmacro{url}%%更换url的位置,放到下面 + \iffieldundef{urlyear}% + {}{%\setunit*{\addspace}% + \usebibmacro{urldate}}% + \setunit{\addperiod\addspace}% + \usebibmacro{url}}% + \renewbibmacro*{url}{\printfield{url}}% +% +% 重设title的输出 +% +% 20180425,v1.0k,为标题增加字体控制命令,Hu Zhenzhen +% 原理方法:将文献类型标识符输出出去,原输出来自biblatex.def文件 +% 利用toggle做标识符是否输出的判断 +\renewbibmacro*{title}{% + \ifboolexpr{% + test{\iffieldundef{title}}% + and + test{\iffieldundef{subtitle}}% + }% + {}% + {\printtext[title]{\bibtitlefont%增加字体控制命令 + \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.7版本 +% +\DeclareFieldFormat{urldate}{##1}% +\renewbibmacro*{urldate}{% +\addthinspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 +% +% 调整doi+eprint+url格式 +% +% 原理方法:源来自standard.bbx,因为页码后面直接跟引用日期,没有标点所以去掉其中的标点。 +\renewbibmacro*{doi+eprint+url}{% +% \iftoggle{bbx:doi}%把doi的位置放到url后面 +% {\printfield{doi}} +% {}% + %\newunit\newblock + \iftoggle{bbx:eprint} + {\iffieldundef{eprint}{}{\newunit\usebibmacro{eprint}}} + {}% + %\newunit\newblock + \iftoggle{bbx:url} + {\usebibmacro{url+urldate}} + {} + \newunit\newblock + \iftoggle{bbx:doi} + {\printfield{doi}} + {}}% +% +% 调整页码的格式,即chapter+pages格式 +% +\renewbibmacro*{chapter+pages}{% +\iftoggle{bbx:gbstrict}{}{% + \printfield{chapter}}% + \iffieldundef{pages}{}{%这里增加一个判断,当没有页码时就不输出 + \setunit{\bibpagespunct}% + \printfield{pages}}% + %\newunit %这里的标点去掉 +}% +% +% 当location等出版项超过maxitem缩减后不再输出etal +% +\DeclareListFormat{location}{% + \usebibmacro{list:delim}{##1}% + ##1\isdot}% +\DeclareListAlias{institution}{location}% +\DeclareListAlias{publisher}{location}% +% 新增一个样式用于输出连续出版物的地址,单位,时间, +% 用于periodical连续出版物的出版社和地址的处理 +% +% v1.0k,20180425,为出版信息增加字体控制命令,hzz +% %类似\newbibmacro*{publisher+location+date} +\newbibmacro*{location+institution+date}{\bibpubfont% +\iftoggle{bbx:gbpub}% +{\testCJKfirst{userd}% +\ifboolexpr{% +test {\iflistundef{location}} and test {\iflistundef{institution}}% +}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress}\space :\space\str@nopublisher]}% +{\printtext{[S.l.\space :\space s.n.\adddot]}}% +}{% +\iflistundef{location}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress]}}{\printtext{[S.l.\adddot]}}}% + {\printlist{location}}% +\addcolon\addspace% +\iflistundef{institution}{% +\iftoggle{ifCJKforgbt}{\printtext{[\str@nopublisher]}}{\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}% +}% +% +% 通用的出版社和地址的处理 +% +% 原理方法:当没有出版社地址时,直接判断title的信息是否是中文,若为中文,则写出版地不详,否则用英文的字符表示。 +% 事实上title对于每个文献来说是必须的,所以用它判断是最快的,而且一般标题和出版社的语言是一样的。 +% 注意标准standard类型,因为当没有出版项时直接省略,所以做特殊处理 +\renewbibmacro*{publisher+location+date}{\bibpubfont% +\iftoggle{bbx:gbpub}% +{\testCJKfirst{userd}% + \ifboolexpr{ test {\iflistundef{location}} and test {\iflistundef{publisher}} }% + {\iffieldequalstr{note}{standard}{}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress}\space :\space\str@nopublisher]}{\printtext{[S.l.\space :\space s.n.\adddot]}}}}% + {\iflistundef{location}{%\adddot + \iffieldequalstr{note}{standard}{}%%从gbt7714-2015标准第19页看到,标准存在出版项时输出,没有时完全省略。 + {\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress]}\addcolon\addspace}{\printtext{[S.l.\adddot]}\addcolon\addspace}}}% \bibstring{noaddress} + {\printlist{location}\addcolon\addspace}%%\addcolon\addspace% + \iflistundef{publisher}{% + \iffieldequalstr{note}{standard}{}% + {\iftoggle{ifCJKforgbt}{\printtext{[\str@nopublisher]}\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 + }% +}% +% +% 修改了一个institution+location+date用于manual、report、thesis等类型 +% +% 20180425,v1.0k,增加了字体控制命令,hzz +% 20190105,v1.0o,加了一个编组避免\usebibmacro{date}把month和day信息去掉 +\renewbibmacro*{institution+location+date}{\bibpubfont%当没有institution时不处理。 +{\printlist{location}%%加了一个编组避免\usebibmacro{date}把month和day信息去掉 + \iflistundef{institution} + {\setunit*{\addcomma\space}} + {\setunit*{\addcolon\space}}% + \printlist{institution}% + \setunit*{\addcomma\space}% + \usebibmacro{date}% + %\newunit + }}% +% +% 对volume卷信息格式做出修改 +% v1.0o,20190105,hzz +% +\DeclareFieldFormat{volume}{% +\testCJKfirst{userd}% +\iftoggle{ifCJKforgbt}% +{\bibstring{serialcn}##1\bibstring{volumecn}}% +{\bibstring{volume}~##1}% +}% volume of a book +\DeclareFieldFormat[article,periodical]{volume}{##1}% volume of a journal +% +% 对number册信息格式做出修改 +% v1.0o,20190105,hzz +% +\DeclareFieldFormat{number}{##1}% +\DeclareFieldFormat[book,collection,inbook,% +incollection,proceedings,inproceedings]{number}{% +\testCJKfirst{userd}% +\iftoggle{ifCJKforgbt}% +{\bibstring{serialcn}##1\bibstring{numbercn}}% +{##1}% +}% +% +% 对edition版本信息格式做出修改 +% +\DeclareFieldFormat{edition}{%源来自biblatex.DEF +\testCJKfirst{userd}% +\iftoggle{ifCJKforgbt}% +{\ifinteger{##1}% +{\printtext{##1\str@edition}}% +{##1\isdot}}% +{\ifinteger{##1}% +{\mkbibordedition{##1}~\bibstring{edition}}% +{##1\isdot}}}% +% +% 对version的版本信息做出修改 +% +\DeclareFieldFormat{version}{%源来自biblatex.DEF +\testCJKfirst{userd}% +\ifinteger{##1}% +{\iftoggle{ifCJKforgbt}{\printtext{##1\str@edition}}% +{\mkbibordedition{##1}~\bibstring{version}}}% +{##1\isdot}}% +% +% 修改析出文献的文集的标题与附加标题间的符号 +% +\renewbibmacro*{booktitle}{% + \ifboolexpr{% + test {\iffieldundef{booktitle}} + and + test {\iffieldundef{booksubtitle}} + }% + {}% + {\printtext[booktitle]{\bibtitlefont% + \printfield[titlecase]{booktitle}% + \setunit{\subtitlepunct}% + \printfield[titlecase]{booksubtitle}}% + \newunit%标点换成下一句 + \setunit{\subtitlepunct}}% + \printfield{booktitleaddon}}% +% +% 调整期刊名的格式 +% +% v1.0k,20180425,增加了字体控制命令,hzz +\renewbibmacro*{journal+issuetitle}{\bibpubfont%源来自standard.bbx + \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}% + \iffieldundef{volume}{}{\setunit{\addcomma\space}}% + %换成逗号和空格 + \usebibmacro{issue}% + \usebibmacro{volume+number+eid}%把卷期放到年份后面 + %\newunit + }% +% +% 调整期刊卷和期的格式 +% +\renewbibmacro*{volume+number+eid}{%源来自standard.bbx +\iftoggle{bbx:gbfieldstd}{% + \printfield{volume}% + \setunit*{\adddot}% + \printfield{number}% + \setunit{\addcomma\space}% + \printfield{eid}}{% + \printfield{volume}% + %\setunit*{\adddot}%去掉点号 + %\printfield{number}% + \iffieldundef{number}{}{\printtext{\mkbibparens{\printfield{number}}}}%增加一个圆括号 + \iffieldundef{eid}{}{% + \setunit{\addcomma\space}% + \printfield{eid}}}}% +% +% 调整期刊年份的格式 +% +\renewbibmacro*{issue+date}{%去掉括号 + \printtext{%去掉了[parens] + \iffieldundef{issue} + {%\usebibmacro{date} + \iffieldundef{note}{\usebibmacro{date}}%判断一下,是否是报纸 + {\iffieldequalstr{note}{news}{\usebibmacro{newsdate}}%判断是否为报纸 + {\usebibmacro{date}}% + }}% + {\iftoggle{bbx:gbstrict}{}{\printfield{issue}% + \setunit*{\addspace}}% + %\usebibmacro{date} + \iffieldundef{note}{\usebibmacro{date}}%判断一下,是否是报纸 + {\iffieldequalstr{note}{news}{\usebibmacro{newsdate}}%判断是否为报纸 + {\usebibmacro{date}}% + }}}% + %\newunit + }% +% +% 调整页码前的标点和去掉期刊文章等页码后面的标点 +% +\renewbibmacro*{note+pages}{%源来自standard.bbx + %\printfield{note}%不要note,note用来判断是否是报纸newspaper + \iffieldundef{pages}{}{% + \setunit{\bibpagespunct}% + \printfield{pages}}% + %\newunit + }% +% +% 编者的符号修改一下 +% v1.0 2016-07-01 +% v1.0q 2019-03-01 hzz 修改editortype前的标点 +% +\renewbibmacro*{editor}{%源来自biblatex.DEF + \ifboolexpr{% + test \ifuseeditor + and + not test {\ifnameundef{editor}}% + }% + {\printnames{editor}% + \iffieldundef{editortype}%增加一个类型判断,用于存在editortype的情况 + {\setunit\addspace}%当没有editortype时,直接用句点 + {%\setunit{\addcomma\space}% + \usebibmacro{editorstrg}}% + %\clearname{editor} + }% + {}}% +% +% 编者类型做一修改 +% v1.0 2016-07-01 +% v1.0q 2019-03-01 hzz 修改editortype不同语言的不同本地化字符串 +% +\renewbibmacro*{editorstrg}{%源来自biblatex.DEF + \printtext[editortype]{% + \iffieldundef{editortype}% + {% +% \ifboolexpr{ %这一段去掉,未定义编者类型情况下不处理 +% test {\ifnumgreater{\value{editor}}{1}} +% or +% test {\ifandothers{editor}} +% } +% {\bibstring{editors}} +% {\bibstring{editor}} + }% + {\ifbibxstring{\thefield{editortype}}%定义编者类型情况下处理,以后根据需要修改 + {\ifboolexpr{% + test {\ifnumgreater{\value{editor}}{1}}% + or + test {\ifandothers{editor}}% + }% + {\printdelim{streditortypes}}% + {\printdelim{streditortype}}}% + {\thefield{editortype}}}% + }}% +% +% bookauthor域的输出, +% v1.0q 2019-03-01 hzz +% 不再对editor和bookauthor做sourcemap,而是下面的宏内逻辑代替, +% 使得除使用bookauthor外也可以使用editor,便于在使用editor时使用editortype +\renewbibmacro*{bybookauthor}{% + \ifnameundef{bookauthor}% + {\ifnameundef{editor}% + {}% + {\ifnamesequal{author}{editor}% + {}{\usebibmacro{editor}}}% + }% + {\ifnamesequal{author}{bookauthor}% + {}{\printnames{bookauthor}}% + }% +}% +% +% 修改期刊的标题 +% +\renewbibmacro*{periodical}{%源来自biblatex.DEF + \iffieldundef{title} + {}% + {\printtext[title]{\bibtitlefont% + \printfield[titlecase]{title}% + %\setunit{\subtitlepunct}% + \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题 + {}{\setunit{\subtitlepunct} + \printfield[titlecase]{subtitle}}% + %}%把编组结束移到后面去 + \iftoggle{bbx:gbtype}{% + \iffieldundef{usera}{}{%在标题后直接给出文献标识字母 + \printfield[gbtypeflag]{usera}}}{}% + }}% + }% +% +% 期刊的标题做修改 +% +\renewbibmacro*{title+issuetitle}{%源来自standard.BBX + \usebibmacro{periodical}% + %\setunit*{\addspace}% + \setunit*{\adddot\addspace}%标点修改为句点 + \iffieldundef{series} + {}% + {\newunit + \printfield{series}% + \setunit{\addspace}}% + \usebibmacro{periodical+issue}%将issue调整到上面来,并修改 +\iffieldundef{number}{}{%%进一步处理有范围的数字 + \multinumberparser{\thefield{number}}}% + \iffieldundef{volume}% + {\printfield{year}% + \printtext{\mkbibparens{\multinumberfirst}}% + \bibrangedash% + \iffieldundef{endyear}{}{\printfield{endyear}\printtext{\mkbibparens{\multinumbersecond}}}% + }% + {\multivolparser{\thefield{volume}}% + \printfield{year}% + \setunit{\addcomma\space}%将冒号修改为逗号 + \printtext{\multivolfirst}% + \printtext{\mkbibparens{\multinumberfirst}}% + \bibrangedash% + \iffieldundef{endyear}{}{% + \printfield{endyear}% + \setunit{\addcomma\space}%将冒号修改为逗号 + \printtext{\multivolsecond}% + \printtext{\mkbibparens{\multinumbersecond}}}% + }% + \setunit{\addcomma\space}% + \printfield{eid}% + \setunit{\addspace}% + %\usebibmacro{issue+date}% + %\setunit{\addcolon\space}% + \usebibmacro{issue}% + \newunit}% +% +% 修改in:用于inbook、incollection、inproceedings等类型 +% 2018.04.20,v1.0k,renewed marco,by hzz +% 20190212,v1.0q,增加中英文区分,by hzz +% +% 原理方法:使用bibmacro{in:}改变了以前在driver中直接输出//的方式,同时也简化了标点控制。 +\renewbibmacro*{in:}{% + \iftoggle{bbx:gbpunctin}{\printtext{\allowbreak\texttt{//}\allowbreak}}%\addthinspace + {\setunit{\adddot\addspace}% + \iffieldequalstr{userd}{chinese}% + {\printtext{\bibstring{incn}}}% + {\printtext{\bibstring{in}}}% + }}%\newunit\newblock\intitlepunct +% +% 修改type域的输出格式 +% 2019.02.12,v1.0q,byhzz +% 使其可以区分中英文输出不同的格式,比如博士论文英文输出PHD thesis,中文则是博士学位论文 +\DeclareFieldFormat{type}% +{\iffieldequalstr{userd}{chinese}% + {\ifbibxstring{##1cn}{\bibxstring{##1cn}}{##1}}% + {\ifbibstring{##1}{\bibstring{##1}}{##1}}% +}% +% +% book条目类的驱动 +% +\csdef{blx@bbx@book}{%%源来自standard.bbx文件 + \usebibmacro{bibindex}% + \usebibmacro{begentry}% +\usebibmacro{author/editor+others/translator+others}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 +\usebibmacro{maintitle+title}% +\iftoggle{bbx:gbstrict}{}{% +\newunit +\printlist{language}% +\newunit\newblock% +\usebibmacro{byauthor}% +\newunit\newblock}% +\usebibmacro{byeditor+others}% +\newunit +\printfield{edition}% +\newunit\newblock%% +\iftoggle{bbx:gbstrict}{}{% +\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}% + \iffieldundef{url}{}{%当没有网址时也不输出 + \usebibmacro{modifydate}}%带括号的修改或更新日期, +\usebibmacro{doi+eprint+url}%从下面移动到上面来,因为gbt2015的url需直接放在页码后面。 + \newunit\newblock% + \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}\usebibmacro{annotation}}% +% +% 期刊文章,连续出版物中的析出文献的格式 +% +\csdef{blx@bbx@article}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author/translator+others}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 + \usebibmacro{title}% + \iftoggle{bbx:gbstrict}{}{% + \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}% + \iffieldequalstr{note}{news}{}{%当是新闻时不输出修改或更新日期 + \iffieldundef{url}{}{%当没有网址时也不输出 + \iftoggle{bbx:url}{%当url选项为false时,也不输出 + \usebibmacro{modifydate}}{}}}%带括号的修改或更新日期, + \usebibmacro{doi+eprint+url}%从后面移上来,调整url和页码之间的位置 + \newunit\newblock + \iftoggle{bbx:isbn} + {\printfield{issn}} + {}% + \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}\usebibmacro{annotation}}% +% +% 连续出版物的驱动 +% +\csdef{blx@bbx@periodical}{%源来自standard.BBX + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{editor}% + %\setunit{\labelnamepunct}\newblock + \newunit\newblock %删除上面一行,添加这一行 + \usebibmacro{title+issuetitle}% + \newunit\newblock% + \usebibmacro{location+institution+date}%添加这一行用于输出地址,单位和时间 + \newunit\newblock%添加这一行 + \iftoggle{bbx:gbstrict}{}{% + \printlist{language}% + \newunit\newblock + \usebibmacro{byeditor}% + \newunit\newblock + \printfield{note}% + \newunit\newblock} + \iftoggle{bbx:isbn} + {\printfield{issn}} + {}% + \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}\usebibmacro{annotation}}% +% +% 专利文献驱动 +% +\csdef{blx@bbx@patent}{%源来自standard.BBX + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 + %\usebibmacro{title}% + \usebibmacro{patenttitle}%给出专利专用的标题输出 + \iftoggle{bbx:gbstrict}{}{% + \newunit% + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}}% + \newunit\newblock + \printfield{type}% + \setunit*{\addspace}% + %\printfield{number}%已放到patenttitle中处理 + \iflistundef{location} + {} + {\setunit*{\addspace}% + \printtext{%[parens] + \printlist[][-\value{listtotal}]{location}}}% + \newunit\newblock + \usebibmacro{byholder}% + \newunit\newblock + \printfield{note}% + \newunit\newblock + \usebibmacro{newsdate}% + %\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}\usebibmacro{annotation}}% +% +% 在线文献驱动 +% +\csdef{blx@bbx@online}{%源来自standard.BBX + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author/editor+others/translator+others}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 + \usebibmacro{title}% + \iftoggle{bbx:gbstrict}{}{% + \newunit% + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{byeditor+others}% + \newunit\newblock + \printfield{note}}% + \newunit + \printfield{version}% + \newunit\newblock +%\printlist{organization}% + \printlist{institution}% + \newunit\newblock +\ifboolexpr{% +test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}% +}{\usebibmacro{date}}% +{\usebibmacro{modifydate}}%修改或更新日期,为带括号的时间 + \usebibmacro{url+urldate}%从下面移上来 + \newunit\newblock + \iftoggle{bbx:eprint} + {\usebibmacro{eprint}} + {}% + \newunit\newblock + %\usebibmacro{url+urldate}% + %\newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% + \usebibmacro{finentry}\usebibmacro{annotation}}% +% +% 报告类型驱动 +% 2016-11-11,增加了译者信息 +% +\csdef{blx@bbx@report}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 + \usebibmacro{title}% + \iftoggle{bbx:gbstrict}{}{% + \newunit% + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}}% + \newunit\newblock + \usebibmacro{byeditor+others}%增加的译者信息 + \newunit\newblock + \printfield{type}% + \setunit*{\addspace}% + \printfield{number}% + \newunit\newblock + \printfield{version}% + \newunit + \printfield{note}% + \newunit\newblock + \usebibmacro{publisher+location+date}% + %\newunit\newblock + \usebibmacro{chapter+pages}% + \usebibmacro{doi+eprint+url}% + \newunit + \printfield{pagetotal}% + \newunit\newblock + \iftoggle{bbx:isbn} + {\printfield{isrn}} + {}% + \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}\usebibmacro{annotation}}% +% +% 手册类型驱动 +% 2016-11-11,增加了译者信息 +% +% +\csdef{blx@bbx@manual}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 + \usebibmacro{title}% + \iftoggle{bbx:gbstrict}{}{% + \newunit% + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}}% + \newunit\newblock + \usebibmacro{byeditor+others}%增加的译者信息 + \newunit\newblock + \iftoggle{bbx:gbfieldtype}{% + \printfield{type}% + \setunit*{\addspace}}{}% + \printfield{number}% + \newunit\newblock + \printfield{version}% + \newunit + \printfield{note}% + \newunit\newblock + \usebibmacro{institution+location+date}% + %\newunit\newblock + \usebibmacro{chapter+pages}% + \iffieldundef{url}{}{%当没有网址时也不输出修改或更新日期 + \usebibmacro{modifydate}}%修改或更新日期为带括号的时间 + \usebibmacro{doi+eprint+url}% + \newunit + \printfield{pagetotal}% + \newunit\newblock + \iftoggle{bbx:isbn} + {\printfield{isrn}} + {}% + \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}\usebibmacro{annotation}}% +% +% 备选类型驱动 +% +% 利用biblatex的misc驱动 +\csdef{blx@bbx@misc}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author/editor+others/translator+others}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 + \usebibmacro{title}% +\iftoggle{bbx:gbstrict}{}{% + \newunit + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{byeditor+others}}% + \newunit\newblock + \printfield{howpublished}% + \newunit\newblock + \printfield{type}% + \newunit + \printfield{version}% + \newunit + \printfield{note}% + \newunit\newblock + \usebibmacro{institution+location+date}% + %\usebibmacro{organization+location+date}% + %\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}\usebibmacro{annotation}}% +% +% 专著中的析出文献的格式修改 +% +\csdef{blx@bbx@inbook}{%源来自standard.bbx + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author/translator+others}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 +\usebibmacro{title}% +\usebibmacro{in:}% +%\printtext{\texttt{//}\addthinspace}% + \usebibmacro{bybookauthor}% + \ifnameundef{bookauthor}{% + \ifnameundef{editor}{}{\newunit}% + }{\newunit}%替换下一句 + %\newunit\newblock +\iffieldundef{series}{}{\usebibmacro{series+number}\setunit{\addcolon\addspace}}%为处理一些存在series的情况而增加 + \usebibmacro{maintitle+booktitle}% +\iffieldundef{volume}{}{\setunit{\addcolon\addspace}\printfield{volume}}% +\iffieldundef{number}{}{\setunit{\addcolon\addspace}\printfield{number}}%增加卷和册信息 + \newunit\newblock% +% \usebibmacro{byeditor+others}% +% \newunit\newblock + \printfield{edition}% + \newunit + \iftoggle{bbx:gbstrict}{}{% +% \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 + \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}\usebibmacro{annotation}}% +}{}% +} + +\AtEveryBibitem{\localsetchinesecode}% +\AtEveryCite{\localsetchinesecode}% +\AtEveryLositem{\localsetchinesecode}% diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ms.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ms.cbx index e339e22c5c..3679a03ae9 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ms.cbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ms.cbx @@ -1,190 +1,190 @@ -%% -%% --------------------------------------------------------------- -%% biblatex-gb7714-2015 --- A biblatex implementation of the -%% GBT7714-2015 citation style,numerical sequence -%% Maintained by huzhenzhen -%% E-mail: hzzmail@163.com -%% Released under the LaTeX Project Public License v1.3c or later -%% --------------------------------------------------------------- -%% -\def\versionofgbtstyle{2020/07/21 v1.0v} -\ProvidesFile{gb7714-2015ms.cbx}[\versionofgbtstyle biblatex citation style] - -% -% 加载标准样式 -% -\RequireCitationStyle{numeric-comp} %numeric - - -% -% 选项设置 -% -\ExecuteBibliographyOptions{ - autocite = superscript , - autopunct = true , - %sorting = none , - maxcitenames=1, - mincitenames=1, -} - -%textcite标注命令中的标点设置 -%\DeclareDelimFormat[textcite]{andothersdelim}{\addspace}% - -% -% 定义一个上标方括号wrapper -% -\newcommand*\mkbibsuperbracket[1]{% - \mkbibsuperscript{\mkbibbrackets{#1}}% -} - -% 修改postnote的输出格式 -\DeclareFieldFormat{postnote}{#1} - -% -% 重定义cite命令 -% -% 方法:\DeclareCiteCommand{\cite}[\mkbibparens]{precode}{loopcode}{sepcode}{postcode} -% v1.0p版后将cite的处理方式修改为类似pagescite,而不再使用biblatex的标准方式 -\DeclareCiteCommand{\cite}[\mkbibsuperscript]%利用mkbibsuperbracket添加方括号 - {[\usebibmacro{cite:init}% - \usebibmacro{prenote}} - {\usebibmacro{citeindex}% - \usebibmacro{cite:comp}} - {} - {\usebibmacro{cite:dump}]% - \printfield{postnote}} -% v1.0p 以前用的方式 -%\DeclareCiteCommand{\cite}[\mkbibsuperbracket]%利用mkbibsuperbracket添加方括号 -% {\usebibmacro{cite:init}% -% \usebibmacro{prenote}} -% {\usebibmacro{citeindex}% -% \usebibmacro{cite:comp}} -% {} -% {\usebibmacro{cite:dump}% -% \usebibmacro{postnote}} - -% -% 定义upcite命令 -% 20180604,v1.0l,hzz -% 20190409,v1.0r,hzz -% 方法:对supercite增加[] -\newrobustcmd*{\upcite}{% - \cite} - -% -% 重定义parencite命令,以满足标签带页码的国标要求 -% -\DeclareCiteCommand{\parencite}%[\mkbibbrackets] - {[\usebibmacro{cite:init}%] - \usebibmacro{prenote}}% - {\usebibmacro{citeindex}% - \usebibmacro{cite:comp}} - {} - {%[ - \usebibmacro{cite:dump}]% - \mkbibsuperscript{\printfield{postnote}}} - -% -% 新定义pagescite命令,以满足标签带页码的国标要求 -% -% 原理方法: -% 1.新增页码输出宏 -\newbibmacro*{postpages}{% - \iffieldundef{postnote} - {\printfield[postnote]{pages}} - {\printfield{postnote}}} -% 2.新增\pagescite引用命令 -\DeclareCiteCommand{\pagescite}[\mkbibsuperscript]%\mkbibbrackets,仍然用上标 - {[\usebibmacro{cite:init}%]直接添加方括号 - \usebibmacro{prenote}% - } - {\usebibmacro{citeindex}% - \usebibmacro{cite:comp}} - {} - {\usebibmacro{cite:dump}]% - \usebibmacro{postpages}} - -% -% 定义yearpagescite,为与ay样式兼容,等同于\pagescite -% -\DeclareCiteCommand{\yearpagescite}[\mkbibsuperscript]%\mkbibbrackets,仍然用上标 - {[\usebibmacro{cite:init}%]直接添加方括号 - \usebibmacro{prenote}% - } - {\usebibmacro{citeindex}% - \usebibmacro{cite:comp}} - {} - {\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}]} - -% -% 定义\authornumcite命令,输出作者信息,然后在后面带上顺序编码 -% 20180427,v1.0k,增加,hzz -% gb7714样式新定义的命令都把cite放到最后,比如前面的pagescite,yearcite,这里的\authornumcite -% 区别于biblatex定义的命令都把cite放到前面,比如citeauthor等。 -%见numeric.CBX -\newbibmacro*{cite}{% - \printtext[bibhyperref]{% - \printfield{labelprefix}% - \printfield{labelnumber}% - \ifbool{bbx:subentry} - {\printfield{entrysetcount}} - {}}} -%见numeric.CBX,\DeclareCiteCommand{\cite}, -\DeclareCiteCommand{\authornumcite}%[\mkbibsuperscript] - {\usebibmacro{prenote}} - {\iffieldequalstr{userf}{cn}{\renewcommand*{\andothersdelim}{\addthinspace}}%\addthinspace - {\renewcommand*{\andothersdelim}{\addspace}}% - \printnames{labelname}\mkbibsuperscript{\mkbibbrackets{\usebibmacro{citeindex}% - \usebibmacro{cite}}}} - {\multicitedelim} - {\mkbibsuperscript{\printfield{postnote}}} - - -% -% 增加如下多个命令 -% 20190409,v1.0r,hzz -% 方法:利用newcommand或newrobustcmd命令进行定义 -% 注意\citet和\citep命令之所以不用newrobustcmd,是为避免加载natbib模块后产生冲突 -\DeclareCiteCommand{\citet}% - {\usebibmacro{prenote}} - {\iffieldequalstr{userf}{cn}{\renewcommand*{\andothersdelim}{\addthinspace}}%\addthinspace - {\renewcommand*{\andothersdelim}{\addspace}}% - \printnames{labelname}\mkbibsuperscript{\mkbibbrackets{\usebibmacro{citeindex}% - \usebibmacro{cite}}}} - {\multicitedelim} - {\mkbibsuperscript{\printfield{postnote}}} - - -\DeclareCiteCommand{\citep}[\mkbibsuperscript]%利用mkbibsuperbracket添加方括号 - {[\usebibmacro{cite:init}% - \usebibmacro{prenote}} - {\usebibmacro{citeindex}% - \usebibmacro{cite:comp}} - {} - {\usebibmacro{cite:dump}]% - \printfield{postnote}} - -\newrobustcmd*{\citetns}% - {\textcite} - -\newrobustcmd*{\citepns}% - {\parencite} - -\newrobustcmd*{\inlinecite}% - {\parencite} +%% +%% --------------------------------------------------------------- +%% biblatex-gb7714-2015 --- A biblatex implementation of the +%% GBT7714-2015 citation style,numerical sequence +%% Maintained by huzhenzhen +%% E-mail: hzzmail@163.com +%% Released under the LaTeX Project Public License v1.3c or later +%% --------------------------------------------------------------- +%% +\def\versionofgbtstyle{2021/01/19 v1.0w} +\ProvidesFile{gb7714-2015ms.cbx}[\versionofgbtstyle biblatex citation style] + +% +% 加载标准样式 +% +\RequireCitationStyle{numeric-comp} %numeric + + +% +% 选项设置 +% +\ExecuteBibliographyOptions{ + autocite = superscript , + autopunct = true , + %sorting = none , + maxcitenames=1, + mincitenames=1, +} + +%textcite标注命令中的标点设置 +%\DeclareDelimFormat[textcite]{andothersdelim}{\addspace}% + +% +% 定义一个上标方括号wrapper +% +\newcommand*\mkbibsuperbracket[1]{% + \mkbibsuperscript{\mkbibbrackets{#1}}% +} + +% 修改postnote的输出格式 +\DeclareFieldFormat{postnote}{#1} + +% +% 重定义cite命令 +% +% 方法:\DeclareCiteCommand{\cite}[\mkbibparens]{precode}{loopcode}{sepcode}{postcode} +% v1.0p版后将cite的处理方式修改为类似pagescite,而不再使用biblatex的标准方式 +\DeclareCiteCommand{\cite}[\mkbibsuperscript]%利用mkbibsuperbracket添加方括号 + {[\usebibmacro{cite:init}% + \usebibmacro{prenote}} + {\usebibmacro{citeindex}% + \usebibmacro{cite:comp}} + {} + {\usebibmacro{cite:dump}]% + \printfield{postnote}} +% v1.0p 以前用的方式 +%\DeclareCiteCommand{\cite}[\mkbibsuperbracket]%利用mkbibsuperbracket添加方括号 +% {\usebibmacro{cite:init}% +% \usebibmacro{prenote}} +% {\usebibmacro{citeindex}% +% \usebibmacro{cite:comp}} +% {} +% {\usebibmacro{cite:dump}% +% \usebibmacro{postnote}} + +% +% 定义upcite命令 +% 20180604,v1.0l,hzz +% 20190409,v1.0r,hzz +% 方法:对supercite增加[] +\newrobustcmd*{\upcite}{% + \cite} + +% +% 重定义parencite命令,以满足标签带页码的国标要求 +% +\DeclareCiteCommand{\parencite}%[\mkbibbrackets] + {[\usebibmacro{cite:init}%] + \usebibmacro{prenote}}% + {\usebibmacro{citeindex}% + \usebibmacro{cite:comp}} + {} + {%[ + \usebibmacro{cite:dump}]% + \mkbibsuperscript{\printfield{postnote}}} + +% +% 新定义pagescite命令,以满足标签带页码的国标要求 +% +% 原理方法: +% 1.新增页码输出宏 +\newbibmacro*{postpages}{% + \iffieldundef{postnote} + {\printfield[postnote]{pages}} + {\printfield{postnote}}} +% 2.新增\pagescite引用命令 +\DeclareCiteCommand{\pagescite}[\mkbibsuperscript]%\mkbibbrackets,仍然用上标 + {[\usebibmacro{cite:init}%]直接添加方括号 + \usebibmacro{prenote}% + } + {\usebibmacro{citeindex}% + \usebibmacro{cite:comp}} + {} + {\usebibmacro{cite:dump}]% + \usebibmacro{postpages}} + +% +% 定义yearpagescite,为与ay样式兼容,等同于\pagescite +% +\DeclareCiteCommand{\yearpagescite}[\mkbibsuperscript]%\mkbibbrackets,仍然用上标 + {[\usebibmacro{cite:init}%]直接添加方括号 + \usebibmacro{prenote}% + } + {\usebibmacro{citeindex}% + \usebibmacro{cite:comp}} + {} + {\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}]} + +% +% 定义\authornumcite命令,输出作者信息,然后在后面带上顺序编码 +% 20180427,v1.0k,增加,hzz +% gb7714样式新定义的命令都把cite放到最后,比如前面的pagescite,yearcite,这里的\authornumcite +% 区别于biblatex定义的命令都把cite放到前面,比如citeauthor等。 +%见numeric.CBX +\newbibmacro*{cite}{% + \printtext[bibhyperref]{% + \printfield{labelprefix}% + \printfield{labelnumber}% + \ifbool{bbx:subentry} + {\printfield{entrysetcount}} + {}}} +%见numeric.CBX,\DeclareCiteCommand{\cite}, +\DeclareCiteCommand{\authornumcite}%[\mkbibsuperscript] + {\usebibmacro{prenote}} + {\iffieldequalstr{userf}{cn}{\renewcommand*{\andothersdelim}{\addthinspace}}%\addthinspace + {\renewcommand*{\andothersdelim}{\addspace}}% + \printnames{labelname}\mkbibsuperscript{\mkbibbrackets{\usebibmacro{citeindex}% + \usebibmacro{cite}}}} + {\multicitedelim} + {\mkbibsuperscript{\printfield{postnote}}} + + +% +% 增加如下多个命令 +% 20190409,v1.0r,hzz +% 方法:利用newcommand或newrobustcmd命令进行定义 +% 注意\citet和\citep命令之所以不用newrobustcmd,是为避免加载natbib模块后产生冲突 +\DeclareCiteCommand{\citet}% + {\usebibmacro{prenote}} + {\iffieldequalstr{userf}{cn}{\renewcommand*{\andothersdelim}{\addthinspace}}%\addthinspace + {\renewcommand*{\andothersdelim}{\addspace}}% + \printnames{labelname}\mkbibsuperscript{\mkbibbrackets{\usebibmacro{citeindex}% + \usebibmacro{cite}}}} + {\multicitedelim} + {\mkbibsuperscript{\printfield{postnote}}} + + +\DeclareCiteCommand{\citep}[\mkbibsuperscript]%利用mkbibsuperbracket添加方括号 + {[\usebibmacro{cite:init}% + \usebibmacro{prenote}} + {\usebibmacro{citeindex}% + \usebibmacro{cite:comp}} + {} + {\usebibmacro{cite:dump}]% + \printfield{postnote}} + +\newrobustcmd*{\citetns}% + {\textcite} + +\newrobustcmd*{\citepns}% + {\parencite} + +\newrobustcmd*{\inlinecite}% + {\parencite} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015mx.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015mx.bbx index 2efd24b091..6ff1d8af16 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015mx.bbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015mx.bbx @@ -1,3339 +1,3340 @@ -%% -%% --------------------------------------------------------------- -%% biblatex-gb7714-2015 --- A biblatex implementation of the -%% GBT7714-2015 bibliography style,numerical sequence and authoryear mixed style -%% Maintained by huzhenzhen -%% E-mail: hzzmail@163.com -%% Released under the LaTeX Project Public License v1.3c or later -%% --------------------------------------------------------------- -%% - -% -% 版本和时间信息 -% -\def\versionofgbtstyle{2020/07/21 v1.0v} -\def\versionofbiblatex{\abx@version} -\ProvidesFile{gb7714-2015mx.bbx}[\versionofgbtstyle biblatex bibliography style] -%\RequireBiber[3]%显式指定用biber后端,当用bibtex时会报错,但其实不会影响编译,只是采用bibtex后无法达成格式需求 - -%===================================================================== -% 加载标准样式 -%===================================================================== -\RequireBibliographyStyle{numeric-comp} -\RequirePackage{xstring}%解决texlive2015的biblatex3.0不加载xstring包的问题 - - -%===================================================================== -% 功能函数 -%===================================================================== - % - % 增加一个控制是否输出文献载体的选项 - % 20191125,v1,0s,hzz - \newtoggle{bbx:gbmedium} - \DeclareBibliographyOption{gbmedium}[true]{%biblatex低版本 - \settoggle{bbx:gbmedium}{#1}} - \ExecuteBibliographyOptions{gbmedium} - % - % 增加一个控制是否输出annotation域的选项,该域可以用于在文献条目后面输出一些注释信息 - % 20190509,v1,0s,hzz - \newtoggle{bbx:gbannote} - \DeclareBibliographyOption{gbannote}[false]{%biblatex低版本 - \settoggle{bbx:gbannote}{#1}} - \ExecuteBibliographyOptions{gbannote} - % - %用于在文献条目后面输出注释信息的宏 - %FieldFormat{annotation}用于设置注释信息的格式 - \DeclareFieldFormat{annotation}{% - \printtext{\addspace(#1)}% - } - \renewbibmacro*{annotation}{% - \iftoggle{bbx:gbannote}% - {\iffieldundef{annotation}% - {\printfile[annotation]{\bibannotationprefix\thefield{entrykey}.tex}}% - {\printfield{annotation}}}% - {}% - } - - - % - % biblatex版本判断 - % 20180629,v1.0k,hzz - % - % 原理方法:适用于3.10以上版本的biblatex,否则给出警告 - \@ifpackagelater{biblatex}{2017/12/28}{}{ - \blx@warning@noline{% - biblatex version is too old for this style\MessageBreak - if errors raised,Please update biblatex to the latest version.} - } - - % - % 判断CJK字符的函数,用于判断作者等信息是否由中文字符构成 - % v1.0k,20180509,hzz - % - % 原理方法:用biber中的perl方法代替。因为利用tex函数对字符判断时,当字符在宏 - % 中时,基于`的方法无法解决GBK编码的问题,基于CJKsymbol的方法无法解决utf-8 - % 编码用xelatex编译的问题。 - % - % 原理是:利用perl正则将中文标识记录到域中, - % 然后利用\iffieldundef和\iffieldequalstr进行判断 - \providetoggle{ifCJKforgbt} - \def\testCJKfirst#1{% - \iffieldundef{#1}{\togglefalse{ifCJKforgbt}}{% - \iffieldequalstr{#1}{chinese}{\toggletrue{ifCJKforgbt}}{\togglefalse{ifCJKforgbt}}}} - - % - % 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{}}% - } - -%===================================================================== -% 数据模型定义 -%===================================================================== - %定义类型和载体标识,从gb内容看载体基本属于介质。 - %为与lee zeping的bst的样式统一,使用mark和medium这两域名 - %为单个条目的姓名格式控制增加nameformat和namefmtid两个域 - %为缩略信息文献表增加了shortbooktitle域 - %为多语言排序增加了lansortorder域 - \DeclareDatamodelFields[type=field,datatype=literal]{mark,medium,nameformat} - \DeclareDatamodelFields[type=field,datatype=integer]{namefmtid} - \DeclareDatamodelFields[type=field,datatype=literal]{shortbooktitle} - \DeclareDatamodelFields[type=field,datatype=literal]{lansortorder} - %为多样式文献表增加的stylesections、styleaysection域: - \DeclareDatamodelFields[type=field,datatype=integer]{aysections} - \DeclareDatamodelFields[type=field,datatype=literal]{styleaysection} - - %因为biblatex更新3.14版本以后,biber对于为声明数据模型的条目类型 - %不再默认读取,而是以空字符串作为条目类型名,自然在条目定义alias时 - %就会出现问题,因此显式的声明一下newspaper,然后保留后面采用alias的方式 - %而standard类型则是采用另一种方式直接在sourcemap中转换为其它类型。 - \@ifpackagelater{biblatex}{2019/11/30}{%2019/12/01 v3.14 - \DeclareDatamodelEntrytypes{newspaper}% - }{} - - - -%===================================================================== -% 设置宏包选项 -%===================================================================== - % - % 增加一个控制是否输出type域的选项 - % 20190212,v1,0q,hzz - \newtoggle{bbx:gbfieldtype} - \DeclareBibliographyOption{gbfieldtype}[false]{%biblatex低版本 - \settoggle{bbx:gbfieldtype}{#1}} - \ExecuteBibliographyOptions{gbfieldtype} - - % - % 增加一个控制是否根据页码重设脚注数字标号的选项 - % 20190422,v1,0r,hzz - \newtoggle{bbx:gbfnperpage} - \DeclareBibliographyOption{gbfnperpage}[false]{% - \settoggle{bbx:gbfnperpage}{#1}} - \ExecuteBibliographyOptions{gbfnperpage} - - % - % 增加一个选项,用于控制是否实现GB/T 7714-2015标准的脚注文献表 - % 20190203,v1.0p,hzz - % 原理方法:默认做patch,文献引用带圈上标数字表示,脚注中的文献用带圈非上标数字做标签 - % 当前面的脚注中已经存在当前文献,那么当前文献内容不再输出而用同(4)这样的方式 - % 需要注意的是由于小页环境和表格中的脚注本身的问题,可能会有一些问题 - \DeclareBibliographyOption{gbfootbib}[false]{% - \ifstrequal{#1}{false}{}{\execgbfootbib}} - \ExecuteBibliographyOptions{gbfootbib} - - %% - \newlength{\footbibmargin} - \newlength{\footbiblabelsep} - \setlength{\footbibmargin}{1em}%脚注的段落左侧缩进距离 - \setlength{\footbiblabelsep}{0.5em}%脚注中标记号与脚注段落的间距 - \def\execgbfootbib% - {% - %开启引用跟踪计数器,为使用\ifciteseen等测试命令 - \ExecuteBibliographyOptions{citetracker=true} - % - %利用footmisc宏包来实现脚注文献的悬挂对齐 - \AtEndPreamble{ - \@ifclassloaded{beamer}{}{ - %beamer类因为其特殊性,为避免冲突不调footmisc。 - %同时footmisc与hyperref宏包也不兼容,所以使用footmisc时会破坏脚注的超链接 - %如果要实现超链接可以将下句注释掉,这里留着主要是实现悬挂对齐。 - %\PassOptionsToPackage{perpage,hang}{footmisc}% - %\RequirePackage{footmisc}% - - %重新实现脚注的根据单页重设脚注号码 - %重新实现脚注的悬挂对齐问题,不再使用footmisc,直接从latex核心代码和hyperref代码进行修改 - %v1.0q 20190317 hzz - %v1.0r 20190422 hzz 根据gbfnperpage选项设置 - \iftoggle{bbx:gbfnperpage}% - {\@addtoreset{footnote}{page}}{}%重设计数器 - - \@ifpackageloaded{hyperref}{%加载hyperref则对\H@@footnotetext做重定义 - \long\def\H@@footnotetext##1{\insert\footins{% - \reset@font\footnotesize - \interlinepenalty\interfootnotelinepenalty - \splittopskip\footnotesep - \splitmaxdepth \dp\strutbox \floatingpenalty \@MM - \hsize\columnwidth \@parboxrestore - \protected@edef\@currentlabel{% - \csname p@footnote\endcsname\@thefnmark - }% - \color@begingroup - \leftskip \footbibmargin%增加的左侧缩进 - \@makefntext{% - \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox% - }% - \color@endgroup}}% - - \long\def\H@@mpfootnotetext##1{% - \global\setbox\@mpfootins\vbox{% - \unvbox\@mpfootins - \reset@font\footnotesize - \hsize\columnwidth - \@parboxrestore - \protected@edef\@currentlabel - {\csname p@mpfootnote\endcsname\@thefnmark}% - \leftskip \footbibmargin%增加的左侧缩进 - \color@begingroup - \@makefntext{% - \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox}% - \color@endgroup}} - }{%否则对latex核心代码中的\@footnotetext做重定义 - \long\def\@footnotetext##1{\insert\footins{% - \reset@font\footnotesize - \interlinepenalty\interfootnotelinepenalty - \splittopskip\footnotesep - \splitmaxdepth \dp\strutbox \floatingpenalty \@MM - \hsize\columnwidth \@parboxrestore - \protected@edef\@currentlabel{% - \csname p@footnote\endcsname\@thefnmark - }% - \color@begingroup - \leftskip \footbibmargin%增加的左侧缩进 - \@makefntext{% - \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox% - }% - \color@endgroup}}% - - \long\def\@mpfootnotetext##1{% - \global\setbox\@mpfootins\vbox{% - \unvbox\@mpfootins - \reset@font\footnotesize - \hsize\columnwidth - \@parboxrestore - \protected@edef\@currentlabel - {\csname p@mpfootnote\endcsname\@thefnmark}% - \leftskip \footbibmargin%增加的左侧缩进 - \color@begingroup - \@makefntext{% - \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox}% - \color@endgroup}} - } - - \long\def\@makefntext##1{%增加了脚注标记与正文的间隔 - \parindent 1em\noindent \hb@xt@ 0em{\hss \@makefnmark\makebox[\footbiblabelsep]{}}##1} - - } - - % - %使脚注标记加圈并设置数字的字体为tiny,不使用修改thefootnote的方式 - \def\@makefnmark{\hbox{\@textsuperscript{\textcircled{\tiny\@thefnmark}}}} - %做patch使得脚注内容中的脚注数字标签不上标 - \pretocmd{\@makefntext}{% - \def\@makefnmark{% - \hbox{\textcircled{\tiny\@thefnmark}}% - }% - }{}{} - } - - % - %判断当前文献是否已经引用过且是做的footfullcite(即已经作为脚注输出文献内容) - %记录首次输出时的脚注号码,用于后面再次引用该文献时的输出,比如同(4)。 - %v1.0q 20190309 区分使脚注标注适应minipage中的情况 - \newbibmacro*{citesavefn}{% - \ifciteseen%当被引用过为true - {\ifcsdef{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}%当已经定义过脚注序号信息 - {\csgdef{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}{% - \str@sameentry\gdef\@thefnmark{\csuse{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}}% - \@makefnmark% - }}% - {\csxdef{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}{% - \ifcsstring{@mpfn}{mpfootnote}{\@alph\c@mpfootnote}{\thefootnote}% - }}% - }% - {\csxdef{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}{% - \ifcsstring{@mpfn}{mpfootnote}{\@alph\c@mpfootnote}{\thefootnote}% - %判断在minipage中比较麻烦,这里使用\@mpfn的定义进行判断 - }}% - } - - % - %重定义\footfullcite使完成gb7714-2015的脚注文献要求 - \DeclareCiteCommand{\footfullcite}[\mkbibfootnote]% - {\defcounter{maxnames}{\blx@maxbibnames}%局部定义maxnames和minnames计数器 - \defcounter{minnames}{\blx@minbibnames}%使footfullcite内的作者输出与正文文献表中的一致。 - \usebibmacro{prenote}% - \renewbibmacro*{postnote}{% - \iffieldundef{postnote}% - {}{\setunit{\addcolon\addspace}\printtext{\thefield{postnote}}}}%由于ay样式中没有修改postnote域,此处因为格式需要不使用默认域格式 - }% - {\usebibmacro{citesavefn}% - \ifcsdef{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}% - {\csuse{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}}%\nopunct - {\usedriver{\DeclareNameAlias{sortname}{default}}{\thefield{entrytype}}}% - }% - {\multicitedelim}% - {\usebibmacro{postnote}} - - } - - % - % 增加一个选项,用于控制gb7714的使用范围,即英文文献和中文文献使用不同的样式 - % 20180814,v1.0m,hzz - % 原理方法: - % 只为兼容性考虑不做任何处理 - \DeclareBibliographyOption{gbstyle}[true]{%biblatex低版本 - } - - % - % 增加一个控制是否输出文献类型和载体标识的选项 - % - % 原理方法: - % 对于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时可以使用GBK编码。 - % v1.0k, 2018.05.08, by hzz - % - % 原理方法:将需要输出的中文字符串用命令形式表示存储,采用utf8编码时采用bbx文档 - % 内的定义即是utf8编码的中文字符串,但tex源文件是gbk编码时,利用gb7714-2015-gbk.def - % 文档内的gbk编码的字符串覆盖。这种覆盖只能在宏包末尾加载时成功实现,所以使用 - % AtEndOfPackage。该解决思路源自biblatex-caspervector宏包。 - % 另外注意: - % gbk编码的tex文档,利用pdflatex/latex能正确编译,利用xelatex能编译,但中文显示乱码 - % 在源文档前面增加 XeTeX 原语:\XeTeXinputencoding "GBK" 后,显示正常 - % utf-8编码的tex文档,利用xelatex能正确编译,而pdflatex/latex不能编译。 - \newtoggle{bbx:codegbk} - \DeclareBibliographyOption{gbcodegbk}[false]{% - \settoggle{bbx:codegbk}{#1}} - \ExecuteBibliographyOptions{gbcodegbk} - - \def\str@bibliography{参考文献} - \def\str@references{参考文献} - \def\str@bytranslator{译} - \def\str@andotherscn{等} - \def\str@backrefpage{引用页} - \def\str@backrefpages{引用页} - \def\str@noaddress{出版地不详} - \def\str@nopublisher{出版者不详} - \def\str@edition{版} - \def\str@volumecn{卷} - \def\str@numbercn{册} - \def\str@serialcn{第} - \def\str@sameentry{同} - \def\str@incn{见} - \def\str@mathesiscn{硕士学位论文} - \def\str@phdthesiscn{博士学位论文} - \def\str@editorcn{主编} - - \AtEndOfPackage{% - \iftoggle{bbx:codegbk}{% - \ExecuteBibliographyOptions{texencoding = GBK} - \input{gb7714-2015-gbk.def} - }{}} - - % - % 增加一个严格按GB/T 7714-2015给出著录格式控制域的输出的选项 - % v1.0k, 2018.05.08, by hzz - % - % 原理方法: - % 默认设置该选项为真,进而不输出GB/T 7714-2015中没有的域的信息 - % 这样可以避免因为bib文件带有多余的域的信息的输出,比如因为bibtex样式 - % 可能需要用于中英文判断的language域的信息。 - \newtoggle{bbx:gbstrict} - \DeclareBibliographyOption{gbstrict}[true]{% - \settoggle{bbx:gbstrict}{#1}} - \ExecuteBibliographyOptions{gbstrict} - - % - % 增加一个控制标题域超链接设置的选项 - % v1.0k, 2018.05.24, by hzz - % - % 原理方法: - % 利用标题域格式来实现,默认设置该选项为false,不做超链接。 - % 设置为true,则标题设置超链接 - \newtoggle{bbx:titlelink} - \DeclareBibliographyOption{gbtitlelink}[false]{% - \settoggle{bbx:titlelink}{#1}} - \ExecuteBibliographyOptions{gbtitlelink} - - % - % 增加一个控制参考文献标题是否能够被ctex宏包设置的选项 - % v1.0l, 2018.07.02, by hzz - % - % 原理方法: - % 重定义biblatex的宏,去除使用本地化字符串的方式,是的可以利用ctexset进行设置 - \newtoggle{bbx:ctexset} - \DeclareBibliographyOption{gbctexset}[true]{% - \settoggle{bbx:ctexset}{#1}} - \ExecuteBibliographyOptions{gbctexset} - - \AtEndOfPackage{% - \iftoggle{bbx:ctexset}{% - \def\blx@defbibstrings#1#2{% - \def\do##1{\csundef{abx@lstr@##1}\csundef{abx@sstr@##1}}% - \abx@dostrings - \csuse{abx@strings@#1}% - \setkeys{blx@lbx}{#2}% - \let\do\blx@defbibstrings@i - \csxdef{abx@strings@#1}{\abx@dostrings}% - } - }{}} - - - - % - % 增加一个恢复域格式为标准样式的控制选项 - % v1.0k, 2018.05.15, by hzz - % - % 原理方法: - % 默认设置该选项为false,采用国标要求的域格式输出相关域 - % 当设置该选项为true时,则重新利用标准样式的域格式输出相关的域 - \newtoggle{bbx:gbfieldstd} - \DeclareBibliographyOption{gbfieldstd}[false]{% - \settoggle{bbx:gbfieldstd}{#1}% - \ifstrequal{#1}{false}{}{\execgbfdfmtstd}% - } - \ExecuteBibliographyOptions{gbfieldstd} - - % - % 增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 - % - \newtoggle{bbx:gbpub} - \DeclareBibliographyOption{gbpub}[true]{% - %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 - \ifstrequal{#1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} - \ExecuteBibliographyOptions{gbpub} - - % - % 增加控制析出文献来源前的标点符号//输出的选项 - % v1.0k, 2018.04.20,added in by hzz - \newtoggle{bbx:gbpunctin} - \DeclareBibliographyOption{gbpunctin}[true]{% - \settoggle{bbx:gbpunctin}{#1}} - \ExecuteBibliographyOptions{gbpunctin} - - - % - % 增加一个处理佚名或noauthor的控制选项 - % - % 原理方法:顺序编码制中与作者年制都使用 - \DeclareBibliographyOption{gbnoauthor}[true]{% - \ifstrequal{#1}{false}{}{\dealnoathor}} - %\ExecuteBibliographyOptions{gbnoauthor=true}%对于需要展开较早(展开层级优先)的选项,这一执行无效,只能用宏包加载时给出的选项。 - - - - - % - % 选项设置 - % - \ExecuteBibliographyOptions{ - sorting=none, - useprefix=true, %名字的信息包括前缀 - date = year, %日期仅写到年 - maxbibnames = 3,%设置名字最大数量 - minbibnames = 3, %设置缩减后的名字最小数量 - maxitems = 1,%设置列表最大数量 - minitems = 1, %设置缩减后的列表最小数量 - isbn=false, - sortlocale=zh__pinyin,%zh__big5han,%zh__stroke,%zh__gb2312han,%zh__pinyin, - } - - % - %为日期相关选项增加选项值gb7714-2015 - % - \csdef{mkdaterangegb7714-2015}#1{% - \begingroup - \blx@metadateinfo{#1}% - \iffieldundef{#1year} - {} - {\printtext[#1date]{% - \blx@gbdate{#1}{}}}% - \endgroup} - - \newrobustcmd*{\blx@gbdate}[3][]{% - \dateeraprintpre{#2#3year}% - \blx@imc@forcezerosy{\thefield{#2#3year}}\ifblank{#1}{}{\printfield{#1}}% - \iffieldundef{#2#3month}{}{\hyphen\blx@imc@forcezerosmdt{\thefield{#2#3month}}}% - \iffieldundef{#2#3day}{}{\hyphen\blx@imc@forcezerosmdt{\thefield{#2#3day}}}} - - - %为姓名格式选择增加的计数器 - \newcounter{gbnamefmtcase} - \def\thegbnamefmtcase{\the\c@gbnamefmtcase} - %为数字标签格式选择增加的计数器/命令 - \newcommand{\mkgbnumlabel}[1]{\mkbibbrackets{#1}} - \def\gbbiblabelopt@bracket{\renewcommand{\mkgbnumlabel}[1]{\mkbibbrackets{##1}}} - \def\gbbiblabelopt@parens{\renewcommand{\mkgbnumlabel}[1]{\mkbibparens{##1}}} - \def\gbbiblabelopt@dot{\renewcommand{\mkgbnumlabel}[1]{##1\adddot}} - \def\gbbiblabelopt@plain{\renewcommand{\mkgbnumlabel}[1]{##1}} - \def\gbbiblabelopt@box{\renewcommand{\mkgbnumlabel}[1]{\framebox{##1}}} - \def\gbbiblabelopt@circle{\renewcommand{\mkgbnumlabel}[1]{\textcircled{##1}}} - %为文献表中数字标签对齐方式选择增加的计数器/命令 - \newcounter{gbalignlabel} - \def\thegbalignlabel{\the\c@gbalignlabel} - %为引用标签标注/文献表中本地化字符串中英文选择增加的计数器/命令 - \newcounter{gbcitelocalcase} - \newcounter{gbbiblocalcase} - \def\thegbcitelocalcase{\the\c@gbcitelocalcase} - \def\thegbbiblocalcase{\the\c@gbbiblocalcase} - - - % - % 增加不同语言排序的切换选项,numeric样式,不使用该选项 - % gblanorder=chineseahead的顺序为cn,jp,kr,en,fr,ru - % gblanorder=englishahead的顺序为en,fr,ru,cn,jp,kr - % gblanorder=cn;en;ru;fr;jp;kr的顺序为指定的cn;en;ru;fr;jp;kr,自定义内容可以随意写以分号分隔 - % v1.0q,20190307,hzz - % - \DeclareBibliographyOption[string]{gblanorder}[chineseahead]{% - \ifstrequal{#1}{chineseahead}%%中文在前的顺序 - {\gdef\lancnorder{1}\gdef\lanjporder{2}\gdef\lankrorder{3}% - \gdef\lanenorder{4}\gdef\lanfrorder{5}\gdef\lanruorder{6}}% - {% - \ifstrequal{#1}{englishahead}% - {\execlanodeah\dealsortlan}% - {\execlanodudf{#1}\dealsortlan}% - }% - } - \ExecuteBibliographyOptions{gblanorder} - - \def\execlanodeah{%中文在后的顺序 - \gdef\lancnorder{4} - \gdef\lanjporder{5} - \gdef\lankrorder{6} - \gdef\lanenorder{1} - \gdef\lanfrorder{2} - \gdef\lanruorder{3}} - - \newcounter{lanordernum} - \newcommand{\execlanodudf}[1]{%like:cn;en;ru;fr;jp;kr - \setcounter{lanordernum}{0} - \DeclareListParser{\parsinglanorder}{;} - \renewcommand*{\do}[1]{\stepcounter{lanordernum}\csxdef{lan##1order}{\thelanordernum}} - \parsinglanorder{#1} - } - - % - % 增加本地化字符串的中英文切换选项 - % gbcitelocal指标注中的本地化字符串 - % gbbiblocal 指文献表中的本地化字符串 - % gblocal 指设置文献表和标注中的本地化字符串 - % v1.0o,20190103,hzz - % - \DeclareBibliographyOption[string]{gbcitelocal}[gb7714-2015]{% - \ifstrequal{#1}{gb7714-2015}{\setcounter{gbcitelocalcase}{0}}{}% - \ifstrequal{#1}{chinese}{\setcounter{gbcitelocalcase}{1}}{}% - \ifstrequal{#1}{english}{\setcounter{gbcitelocalcase}{2}}{}% - } - \ExecuteBibliographyOptions{gbcitelocal} - - \DeclareBibliographyOption[string]{gbbiblocal}[gb7714-2015]{% - \ifstrequal{#1}{gb7714-2015}{\setcounter{gbbiblocalcase}{0}}{}% - \ifstrequal{#1}{chinese}{\setcounter{gbbiblocalcase}{1}}{}% - \ifstrequal{#1}{english}{\setcounter{gbbiblocalcase}{2}}{}% - } - \ExecuteBibliographyOptions{gbbiblocal} - - \DeclareBibliographyOption[string]{gblocal}[gb7714-2015]{% - \ExecuteBibliographyOptions{gbbiblocal=#1}% - \ExecuteBibliographyOptions{gbcitelocal=#1}% - } - %\ExecuteBibliographyOptions{gblocal} %默认值已经通过两个相关选项设置 - - % - % 增加序号标签格式处理选项 - % v1.0l,20180623,hzz - % - \DeclareBibliographyOption[string]{gbbiblabel}[bracket]{% - \csuse{gbbiblabelopt@#1} - } - \ExecuteBibliographyOptions{gbbiblabel} - - % - % 增加姓名大小写格式处理选项 - % - \DeclareBibliographyOption[string]{gbnamefmt}[uppercase]{% - \ifstrequal{#1}{uppercase}{\setcounter{gbnamefmtcase}{0}}{}% - \ifstrequal{#1}{lowercase}{\setcounter{gbnamefmtcase}{1}}{}% - \ifstrequal{#1}{givenahead}{\setcounter{gbnamefmtcase}{2}}{}%given-family - \ifstrequal{#1}{familyahead}{\setcounter{gbnamefmtcase}{3}}{} - \ifstrequal{#1}{pinyin}{\setcounter{gbnamefmtcase}{4}}{}%family-given - \ifstrequal{#1}{reverseorder}{\setcounter{gbnamefmtcase}{5}}{}%family-given/given-family - } - \ExecuteBibliographyOptions{gbnamefmt} - - % - % 增加标签对齐选项 - % - % right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 - \DeclareBibliographyOption[string]{gbalign}[right]{% - \ifstrequal{#1}{right}{\setcounter{gbalignlabel}{0}}{} - \ifstrequal{#1}{left}{\setcounter{gbalignlabel}{1}}{} - \ifstrequal{#1}{center}{\setcounter{gbalignlabel}{2}}{} - \ifstrequal{#1}{gb7714-2015}{\setaligngbstyle}{} - } - - \ExecuteBibliographyOptions{ - giveninits=true, - urldate =gb7714-2015, %iso,iso8601,edtf - eventdate =gb7714-2015, - labeldateparts=true, - } - -% -% 针对3.13<=biblatex版本的选项设置,因为内容有限,所以不做版本区分,而用时间直接判断 -% -% 解决国标中“王临慧, 2010a.”和“王临慧, 等, 2010b.”的问题 -% 在没有这个选项之前无法加上a和b -% v1.0s,20190828 -\@ifpackagelater{biblatex}{2019/08/16}{% - \ExecuteBibliographyOptions{% - nohashothers=true}}{} - -%===================================================================== -% 设置本地化字符串 -%===================================================================== - % - % 新建当地化字符串,用来记录“等”字符、“和”字符 - % - \NewBibliographyString{andotherscn} - \NewBibliographyString{andothersincitecn} - \NewBibliographyString{andothersincite} - \NewBibliographyString{andcn} - \NewBibliographyString{andothersjp} - \NewBibliographyString{andotherskr} - \NewBibliographyString{andjp} - \NewBibliographyString{andkr} - \NewBibliographyString{andincitecn} - \NewBibliographyString{andincite} - \NewBibliographyString{volumecn} - \NewBibliographyString{numbercn} - \NewBibliographyString{serialcn} - \NewBibliographyString{incn} - \NewBibliographyString{mathesiscn} - \NewBibliographyString{phdthesiscn} - \NewBibliographyString{editorcn} - \NewBibliographyString{editorscn} - - - - % - % 修改一些当地化字符串 - % - % 原理方法:直接利用当地化格式english修改出一些中文的格式,具体修改内容参考english.lbx文件 - % 当然也可以增加比如上面定义的andotherscn - % 注意:在lbx文件和bbx文件中定义本地字符串的不同语法,两个参数和一个参数的区别 - - \DefineBibliographyStrings{english}{ - bibliography = {\str@bibliography}, - references = {\str@references}, - bytranslator= {\str@bytranslator},%\addperiod,%将trans. by 改成 译\addcomma\ - and = {\addcomma},%将第2和3人名间的and符号改成逗号,用\finalnamedelim命令也可以定义,参见3.9.1节 - andcn = {\addcomma},%and本地化字符串的中文对应词 - andincitecn = {\addcomma},%将标注中的分开,便于与文献表中的区分 - andincite = {\addcomma}, - %andothers = {et al.},%将超过3个人名的省略,et al.改成为 等 - andotherscn = {\str@andotherscn},%将超过3个人名的省略,et al.改成为 等 - andothersincitecn={\str@andotherscn},%将标注中的分开,便于与文献表中的区分 - andothersincite={et al\adddot}, - backrefpage = {\str@backrefpage:}, - backrefpages = {\str@backrefpages:}, - in={in\intitlepunct}, - volumecn={\str@volumecn}, - numbercn={\str@numbercn}, - serialcn={\str@serialcn}, - andothersjp={他}, - andotherskr={외}, - andjp={和}, - andkr={和}, - incn={\str@incn\addcolon\addspace}, - mathesiscn={\str@mathesiscn}, - phdthesiscn={\str@phdthesiscn}, - editorscn={\str@editorcn}, - editorcn={\str@editorcn}, -} - - % - % 增加两个命令用于临时的局部的修改本地化字符串 - % 其中\setlocalbibstring修改缩写字符串,setlocalbiblstring修改长字符串 - % 注意使用时因为是局部修改,因此要将其与需要修改的引用命令放在一个编组符号内 - % v1.0t,hzz,20190525 - \newcommand{\setlocalbibstring}[2]{% - \csdef{abx@sstr@#1}{#2}} - \newcommand{\setlocalbiblstring}[2]{% - \csdef{abx@lstr@#1}{#2}} - -%===================================================================== -% 动态数据修改 -%===================================================================== -% -% 各层次的数据映射和动态修改 -% -% 原理方法: -% 1. 进行语言包括中英文判断,并设置和记录,比如记录到userf,usere中 -% 2. 增加文献标识符如[M],[J]等,对一些容易混淆的域进行设置以增强兼容性 -% 3. \DeclareSourcemap命令对于biblatex3.11以下版本只能出现一次,3.11版开始支持多个 -% 4. \DeclarestyleSourcemap在biblatex v3.7版开始可以支持出现多次 -% 5. 把作者和译者信息准确的记录到userf,usere中,用于后面判断是否是cjk字符。 -% 注意:这里用userf,usere而不是namee,namef,是因为只有把name列表转成域,才能有效读取姓名中的字符, -% 如果用namee,namef,name信息会自动解析,所以就不能为cjk判断提供需要的信息 -% -% 不同的文献类型使用相同的驱动输出可以有5种方法: -% 1. 是数据源层的映射,将其它类型转换为某一要使用驱动的类型 -% 2. 是样式层映射,也是将其它类型转换为某一要使用驱动的类型 -% 3. 是驱动层映射,也是将其它类型转换为某一要使用驱动的类型 -% 4. 定义驱动类型别名DeclareBibliographyAlias,将其它类型定义为某一要使用驱动的类型的别名 -% 驱动别名定义本质上是做了驱动层映射 -% 5. 直接定义不同的类型的驱动,但驱动内容相同。 -% -% 关于数据映射和驱动使用的考虑如下: -% 1. 为避免利用biber输出bib文件时的数据变动,尽量不在数据源层映射做类型转换 -% 2. 为减少代码量,尽量少做内容相同的不同类型驱动 -% 3. 因此类型相关的处理主要在样式层映射、驱动层映射、驱动别名 -% 4. 由于biblatex默认做的驱动别名处理可能增加一些信息比如masterthesis转thesis时增加的type -% 可以在样式层映射做某些需要避免这种默认处置的转换 -% 5. 当没有避免默认行为的需求时,全部采用驱动别名的方式处理,等价于驱动层的映射 -% -% 文献类型和驱动考虑如下: -% 1. 连续出版物及析出文献有其特殊性,因此考虑两类periodical和article -% newpaper映射为article,并以note域做区分特殊处理 -% 2. 专著和专著中的析出文献是主要的类型,因此考虑book和inbook -% standard映射为book或inbook,并以note域做区分特殊处理 -% collection和proceedings基本与book类似,因此做book驱动别名处理 -% incollection和inproceedings基本与inbook类似,因此做inbook驱动别名处理 -% 3. 专利类型有其特殊性,考虑patent类型 -% 4. 电子资源类型有其特殊性,考虑online类型 -% 5. 报告类型与book有点类似,出版项处理与book一样,但有时又要有修改和更新日期 -% 因此考虑用一种类型来输出,使用report类型 -% 6. 手册/学位论文等类型与book有点类似,但对于出版项处理时,有缺省时,直接省略, -% 同时有version和edition的区别,因此考虑用一种类型来输出,使用manual类型 -% 7. 包括报告,学位论文在内的其它所有的类型,都做一个判断,当没有出版项时, -% 且存在网址信息时,将其转换为online类型输出,否则都做为manual类型输出。 -% 8. 备选类型misc当存在网址时直接转换为online,由于howpublished域可用于描述 -% 更多的信息,因此不存在网址时,独立做一个备选格式 -% 9. 出版项主要以如下方式处理: -% (a) location+institution+date 仅用于连续出版物 -% (b)publisher+location+date 用于需要完整输出出版项的类型,比如book,collection,proceedings,in*,report -% (c)institution+location+date 用于出版项缺失时不输出的类型,包括manual,thesis,archive等其他类型 -% (d)printlist{insitution} 用于电子资源,仅输出出版者或组织,为数据映射方便,本来默认的organization域转换为用insitution输出。 -% (e) 不输出,主要用于连续出版物析出的文献 -% 10. 日期以如下方式处理: -% date 由于存在biblatex选项,因此通过选项控制,数据源为date解析数据或year -% urldate 由于存在biblatex选项,因此通过选项控制,输出到日,且用[]包围,数据源为urldate -% newsdate 用于公告日期,公开日期或新闻日期,输出到日,但无包围符号,数据源为date -% modifydate 用于更新或修改日期,输出到日,且用()包围,数据源为date或enddate或eventdate - - -\DeclareSourcemap{ -\maps[datatype=bibtex]{% - \map{%当没有作者时将editor转成author - \pernottype{inbook}%因为in系列中editor可能用来表示bookauthor,所以排除 - \pernottype{inproceedings} - \pernottype{incollection} - \pernottype{periodical}%因为peridical直接使用editor,所以排除 - %注意notfield在低版本biblatex中没有 - %\step[notfield=author,final]%当author不存在,将editor复制给author - \step[fieldsource=editor,fieldtarget=author]%并删除editor - } - \map{%当没有作者时将translator转成author - \pernottype{inbook} - \pernottype{inproceedings} - \pernottype{incollection} - %\step[notfield=author,final]%当author不存在,将translator复制给author - \step[fieldsource=translator,fieldtarget=author]%并删除translator - } - \map{%让address和location同步,biblatex中address是location的别名 - %因此输出的时候只有location信息,但处理过程中是可以存在address的。 - %\step[notfield=address,final] - \step[fieldsource=location,final] - \step[fieldset=address,origfieldval] - } - \map{%让address和location同步 - %\step[notfield=location,final] - \step[fieldsource=address,final] - \step[fieldset=location,origfieldval] - } - \map{%处理在bib文件用mark标记文献类型标识符的情况 - \step[fieldsource=mark,final] - \step[fieldset=usera, origfieldval] - } - \map{%处理在bib文件中直接给出文献的姓名格式为lowercase的情况 - \step[fieldsource=nameformat,match=lowercase,final] - \step[fieldset=namefmtid,fieldvalue={1}] - } - \map{%处理在bib文件中直接给出文献的姓名格式为givenahead的情况 - \step[fieldsource=nameformat,match=givenahead,final] - \step[fieldset=namefmtid,fieldvalue={2}] - } - \map{%处理在bib文件中直接给出文献的姓名格式为familyahead的情况 - \step[fieldsource=nameformat,match=familyahead,final] - \step[fieldset=namefmtid,fieldvalue={3}] - } - \map{%处理在bib文件中直接给出文献的姓名格式为pinyin的情况 - \step[fieldsource=nameformat,match=pinyin,final] - \step[fieldset=namefmtid,fieldvalue={4}] - } - \map{%根据article确定文献类型标识符 - \pertype{article} - \step[fieldset=usera, fieldvalue={J}] - } - \map{%根据periodical确定文献类型标识符 - \pertype{periodical} - \step[fieldset=usera, fieldvalue={J}] - \step[fieldsource=author] %有时会把author和editor混淆,处理后使用editor - \step[fieldset=editor, origfieldval] - \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{%根据增加一个新闻报纸的类型newspaper确定文献类型标识符 - \pertype{newspaper} - \step[fieldset=usera, fieldvalue={N}] - \step[fieldset=note, fieldvalue=news]%因为没有专门的驱动,记录note方便映射为article后判断 - } - \map{%对应增加的一个数据库类型database确定文献类型标识符 - \pertype{database} - \step[fieldset=usera, fieldvalue={DB}] - \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{%对应增加的一个数据集类型dataset确定文献类型标识符 - \pertype{dataset} - \step[fieldset=usera, fieldvalue={DS}]% - \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{%对应增加的一个软件类型software确定文献类型标识符 - \pertype{software} - \step[fieldset=usera, fieldvalue={CP}] - \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{%对应增加的一个舆图类型map确定文献类型标识符 - \pertype{map} - \step[fieldset=usera, fieldvalue={CM}]% - \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{%对应增加的一个档案类型archive确定文献类型标识符 - \pertype{archive} - \step[fieldset=usera, fieldvalue={A}] - \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{%因为misc类型本身就是没有类型,而不像其它文献有明确的类型,所以 - %当misc类型带有网址时,直接将其转换为online类型 - \pertype{misc} - \step[fieldsource=url,final] - \step[typesource=misc,typetarget=online] - } - \map{%对应增加的一个备选类型misc确定文献类型标识符 - \pertype{misc} - \step[fieldset=usera, fieldvalue={Z}]% - } - \map{ - \pertype{book} - \pertype{inbook} - \step[fieldset=usera, fieldvalue={M}] - \step[fieldsource=version] %有时会把version和edition混淆,处理后直接用edition - \step[fieldset=edition, origfieldval] - } - \map{%兼容老的standard类型,确定文献类型标识符 - \pertype{standard} - \step[fieldset=usera, fieldvalue={S}] - \step[fieldset=note, fieldvalue=standard]%因为没有专门的驱动,记录note方便映射为book和inbook后判断 - } - \map{ - \pertype{patent} - \step[fieldset=usera, fieldvalue={P}] - } - \map{ - \pertype{inproceedings} - \pertype{conference}%兼容老的conference类型 - \step[fieldset=usera, fieldvalue={C}] - \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher - \step[fieldset=publisher, origfieldval] - } - \map{ - \pertype{proceedings} - \step[fieldset=usera, fieldvalue={C}] - \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher - \step[fieldset=publisher, origfieldval] - } - \map{ - \pertype{incollection} - \step[fieldset=usera, fieldvalue={G}] - \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher - \step[fieldset=publisher, origfieldval] - } - \map{ - \pertype{collection} - \step[fieldset=usera, fieldvalue={G}] - \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher - \step[fieldset=publisher, origfieldval] - } - \map{ - \pertype{report} - \pertype{techreport}%兼容老的techreport类型 - \step[fieldset=usera, fieldvalue={R}] - \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher - \step[fieldset=publisher, origfieldval] - } - \map{ - \pertype{thesis} - \pertype{mastersthesis}%兼容老的mastersthesis和phdthesis类型 - \pertype{phdthesis} - \step[fieldset=usera, fieldvalue={D}] - \step[fieldsource=publisher]%有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - } - \map{ - \pertype{online} - \pertype{electronic}%兼容老的electronic类型 - \pertype{www}%兼容老的www类型 - \step[fieldset=usera, fieldvalue={EB}] - \step[fieldsource=publisher]%有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval]%因为online的出版项处理类似手册 - \step[fieldsource=organization]%有时会把organization和institution混淆,处理后使用institution,以增强兼容性 - \step[fieldset=institution, origfieldval] - } - \map{ - \pertype{manual} - \step[fieldset=usera, fieldvalue={A}] - \step[fieldsource=edition]%有时会把version和edition混淆,处理后使用version - \step[fieldset=version, origfieldval] - \step[fieldsource=publisher]%有时会把publisher和institution混淆,处理后使用institution - \step[fieldset=institution, origfieldval] - \step[fieldsource=organization]%有时会把organization和institution混淆,处理后使用institution,以增强兼容性 - \step[fieldset=institution, origfieldval] - } - \map{ - \pertype{unpublished} - \step[fieldset=usera, fieldvalue={Z}] - } - \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 - \step[fieldsource={author}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] - }% - \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 - \step[fieldsource={editor}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] - }% - \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 - \step[fieldsource={translator}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] - }% - \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 - \step[fieldsource={bookauthor}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] - }% - \map{%处理一些用year表示date的情况 - %这样处理将会设置date域,并使得labeldatesource变为空,因为date的前缀为空(如果是urldate,那么labeldatesource就是url)。 - %同时date域会被biblatex自动解析为year,month,day,并且覆盖原来的year信息 - \step[fieldsource=year] - \step[fieldset=date, origfieldval] - } - \map{%将entrykey放入keywords中用于后期使用 - \step[fieldsource=entrykey] - \step[fieldset=keywords, origfieldval] - } - \map{\step[fieldsource=title,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF - \step[fieldset=userd,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 - } - \map{% - \step[fieldsource=title,match=\regexp{[\x{0400}-\x{052F}]},final] - \step[fieldset=userd,fieldvalue={russian}]%俄语 - } - \map{% - \step[fieldsource=title,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] - \step[fieldset=userd,fieldvalue={japanese}]%日语 - } %确定形式后可增加类似andotherscn这样的本地化字符串处理 - \map{% - \step[fieldsource=title,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] - \step[fieldset=userd,fieldvalue={korean}]%韩语 - } - \map{%文献题名的中文判断,将信息保存到userd中,避免因为标签生成原因导致title域被清除而产生问题 - \step[fieldsource=title, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]% - \step[fieldset=userd, fieldvalue={chinese}] - } - \map{%将没有设置userd,且存在title域的默认设置为英文 - \step[fieldsource=title,final] - \step[fieldset=userd,fieldvalue={english}] - } - \map{\step[fieldsource=author,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF - \step[fieldset=userf,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 - } - \map{% - \step[fieldsource=author,match=\regexp{[\x{0400}-\x{052F}]},final] - \step[fieldset=userf,fieldvalue={russian}]%俄语 - } - \map{% - \step[fieldsource=author,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] - \step[fieldset=userf,fieldvalue={japanese}]%日语 - } %确定形式后可增加类似andotherscn这样的本地化字符串处理 - \map{% - \step[fieldsource=author,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] - \step[fieldset=userf,fieldvalue={korean}]%韩语 - } - \map{%作者的中文判断 - \step[fieldsource=author, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] - \step[fieldset=userf, fieldvalue={chinese}] - } - \map{%将没有设置userf,且存在author域的默认设置为英文 - \step[fieldsource=author,final] - \step[fieldset=userf,fieldvalue={english}] - } - \map{\step[fieldsource=translator,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF - \step[fieldset=usere,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 - } - \map{% - \step[fieldsource=translator,match=\regexp{[\x{0400}-\x{052F}]},final] - \step[fieldset=usere,fieldvalue={russian}]%俄语 - } - \map{% - \step[fieldsource=translator,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] - \step[fieldset=usere,fieldvalue={japanese}]%日语 - } %确定形式后可增加类似andotherscn这样的本地化字符串处理 - \map{% - \step[fieldsource=translator,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] - \step[fieldset=usere,fieldvalue={korean}]%韩语 - } - \map{%译者的中文判断 - \step[fieldsource=translator, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] - \step[fieldset=usere, fieldvalue={chinese}] - } - \map{%将没有设置usere,且存在translator域的默认设置为英文 - \step[fieldsource=translator,final] - \step[fieldset=usere,fieldvalue={english}] - } - \map{\step[fieldsource=editor,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF - \step[fieldset=userc,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 - } - \map{% - \step[fieldsource=editor,match=\regexp{[\x{0400}-\x{052F}]},final] - \step[fieldset=userc,fieldvalue={russian}]%俄语 - } - \map{% - \step[fieldsource=editor,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] - \step[fieldset=userc,fieldvalue={japanese}]%日语 - } %确定形式后可增加类似andotherscn这样的本地化字符串处理 - \map{% - \step[fieldsource=editor,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] - \step[fieldset=userc,fieldvalue={korean}]%韩语 - } - \map{%编者的中文判断 - \step[fieldsource=editor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 - \step[fieldset=userc, fieldvalue={chinese}] - } - \map{%将没有设置userc,且存在editor域的默认设置为英文 - \step[fieldsource=editor,final] - \step[fieldset=userc,fieldvalue={english}] - } - \map{\step[fieldsource=bookauthor,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF - \step[fieldset=userb,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 - } - \map{% - \step[fieldsource=bookauthor,match=\regexp{[\x{0400}-\x{052F}]},final] - \step[fieldset=userb,fieldvalue={russian}]%俄语 - } - \map{% - \step[fieldsource=bookauthor,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] - \step[fieldset=userb,fieldvalue={japanese}]%日语 - } %确定形式后可增加类似andotherscn这样的本地化字符串处理 - \map{% - \step[fieldsource=bookauthor,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] - \step[fieldset=userb,fieldvalue={korean}]%韩语 - } - \map{%编者的中文判断 - \step[fieldsource=bookauthor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 - \step[fieldset=userb, fieldvalue={chinese}] - } - \map{%将没有设置userc,且存在editor域的默认设置为英文 - \step[fieldsource=bookauthor,final] - \step[fieldset=userb,fieldvalue={english}] - } - \map{\step[fieldsource=userd,final]%userd存在则用根据标题的语言设定language - \step[fieldset=language,origfieldval]%本身language存在则不设定 - } - \map{\step[fieldsource=userf,final]%userd不存在,而userf存在则根据author的语言设定language - \step[fieldset=language,origfieldval] - }%如果没有作者和标题,那么剩下的最可能有意义的只有网址了,而网址通常是英文的,因此不用再进一步对其它域进行判断了。 - \map{%将没有设置的language设置成en,即认为不是中文的就是英文的。 - \step[fieldset=language,fieldvalue={english}] - } - \map{%一条文献的语言已经设定在language域中,由于出版项相关宏中使用userd判断, - %所以将一条文献的主体语言设定到userd中,本身前面userd已经设定,但没有处理无标题的情况, - %这里的处理等价于没有标题时,利用作者的语言设定userd,再没有作者,则默认用英文设定userd - \step[fieldsource=language] - \step[fieldset=userd,origfieldval] - } - \map{%当文献给出language域时,设置文献要使用的本地化字符串的语言 - %biblatex 3.11及以下版本仅有match是区分大小写的,而3.12版开始用matchi来区分大小,而match不区分 - %这里为兼容3.11及以下版本,所以用一个复杂一点的正则表达式 - \step[fieldsource=language,match=\regexp{(e|E)(n|N)(g|G)(l|L)(i|I)(s|S)(h|H)},final] - \step[fieldset=langid,fieldvalue={english}] - \step[fieldset=lansortorder,fieldvalue=\lanenorder] - } - \map{ - \step[fieldsource=language,match=\regexp{(r|R)(u|U)(s|S)(s|S)(i|I)(a|A)(n|N)},final] - \step[fieldset=langid,fieldvalue={russian}] - \step[fieldset=lansortorder,fieldvalue=\lanruorder] - } - \map{% - \step[fieldsource=language,match=\regexp{(f|F)(r|R)(e|E)(n|N)(c|C)(h|H)},final] - \step[fieldset=langid,fieldvalue={french}] - \step[fieldset=lansortorder,fieldvalue=\lanfrorder] - } - \map{% - \step[fieldsource=language,match=\regexp{(c|C)(h|H)(i|I)(n|N)(e|E)(s|S)(e|E)},final]%中日韩语目前都用english, - \step[fieldset=langid,fieldvalue={english}] - \step[fieldset=lansortorder,fieldvalue=\lancnorder] - } - \map{% - \step[fieldsource=language,match=\regexp{(j|J)(a|A)(p|P)(a|A)(n|N)(e|E)(s|S)(e|E)},final]%中日韩语目前都用english, - \step[fieldset=langid,fieldvalue={english}] - \step[fieldset=lansortorder,fieldvalue=\lanjporder] - } - \map{% - \step[fieldsource=language,match=\regexp{(k|K)(o|O)(r|R)(e|E)(a|A)(n|N)},final]%中日韩语目前都用english, - \step[fieldset=langid,fieldvalue={english}] - \step[fieldset=lansortorder,fieldvalue=\lankrorder] - } -} -} - - -% -% 修改输入的参考文献数据,样式层的操作 -% - \DeclareStyleSourcemap{ - \maps[datatype=bibtex]{ - \map{%尝试未定义数据模型的standard类型映射为其他类型book或inbook, - %standard类型在blx-dm中有出现,但仅定义了类型,域和约束等都没有定义 - %因为可能要映射两种类型,所以不能在驱动层处理,因为要做判断 - \step[fieldsource=booktitle,final]%当存在booktitle域是映射为inbook - \step[typesource=standard, typetarget=inbook, final] - } - \map{%剩下的全部映射为book - \step[typesource=standard, typetarget=book, final] - } -% \map{%先于标准样式的driver层映射,以取消type设置 -% \step[typesource=mastersthesis, typetarget=thesis, final] -% %\step[fieldset=type, fieldvalue=mathesis] -% } -% \map{%先于标准样式的driver层映射,以取消type设置 -% \step[typesource=phdthesis, typetarget=thesis, final] -% %\step[fieldset=type, fieldvalue=phdthesis] -% } - \map{%先于标准样式的driver层映射,以取消type设置 - \step[typesource=techreport, typetarget=report, final] - %\step[fieldset=type, fieldvalue=techreport] - } - \map{% - \pertype{report} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=report,typetarget=online] - \step[fieldset=note,fieldvalue={report}] - } - \map{% - \pertype{thesis} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=thesis,typetarget=online] - } - \map{% - \pertype{manual} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=manual,typetarget=online] - } - \map{% - \pertype{unpublished} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=unpublished,typetarget=online] - } - \map{% - \pertype{database} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=databasetypetarget=online] - } - \map{% - \pertype{dataset} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=dataset,typetarget=online] - } - \map{% - \pertype{software} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=software,typetarget=online] - } - \map{% - \pertype{map} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=map,typetarget=online] - } - \map{% - \pertype{archive} - %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 - \step[fieldset=location,fieldvalue={}] - \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online - %3.7以上版本用notfield - %\step[notfield=address,final]%当address不存在则继续 - \step[fieldsource=url,final]%地址不存在且存在url那么转变为online - \step[typesource=archive,typetarget=online] - } - \map[overwrite]{%这里还必须有overwrite,注意不同版本存在差异,比如texlive2015变16后biber有变化(20161207修改正确) - \step[fieldsource=note, final]%将note域信息复制给keywords,用于输出时容易区分标准和报纸 - \step[fieldset=keywords, fieldvalue={,}, append] - \step[fieldset=keywords, origfieldval, append] - } - \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{ - \DeclareStyleSourcemap{ - \maps[datatype=bibtex]{ - \map{%默认情况下将空缺作者的中文文献设置为佚名 - \step[fieldsource=language,match={chinese},final] - \step[fieldset=author, fieldvalue={佚名}] - } - \map{%默认情况下将空缺作者的英文文献设置为A{non} - \step[fieldsource=language,match={english},final] - \step[fieldset=author, fieldvalue={A{non}}]%noauthor换成Anon,同时为避免大写还加了{} - } - } - } -} - -% -% 不同语言分集调整的实现方式 -% -% 原理方法:利用样式层的动态数据修改lansortorder域来实现排序 -\def\dealsortlan{ - \DeclareStyleSourcemap{ - \maps[datatype=bibtex]{ - \map[overwrite]{%当文献给出language域时,设置文献要使用的本地化字符串的语言 - \step[fieldsource=language,match=english,final] - \step[fieldset=lansortorder,fieldvalue=\lanenorder] - } - \map[overwrite]{ - \step[fieldsource=language,match=russian,final] - \step[fieldset=lansortorder,fieldvalue=\lanruorder] - } - \map[overwrite]{% - \step[fieldsource=language,match=french,final] - \step[fieldset=lansortorder,fieldvalue=\lanfrorder] - } - \map[overwrite]{% - \step[fieldsource=language,match=chinese,final]%中日韩语目前都用english, - \step[fieldset=lansortorder,fieldvalue=\lancnorder] - } - \map[overwrite]{% - \step[fieldsource=language,match=japanese,final]%中日韩语目前都用english, - \step[fieldset=lansortorder,fieldvalue=\lanjporder] - } - \map[overwrite]{% - \step[fieldsource=language,match=korean,final]%中日韩语目前都用english, - \step[fieldset=lansortorder,fieldvalue=\lankrorder] - } - } - } -} - - - - -% -%驱动别名等价于驱动层映射 -% -\DeclareBibliographyAlias{newspaper}{article}% -\DeclareBibliographyAlias{inproceedings}{inbook}%会议论文文献类型驱动 -\DeclareBibliographyAlias{conference}{inbook}%会议论文文献类型驱动 -\DeclareBibliographyAlias{incollection}{inbook}%文集中析出文献类型驱动 -\DeclareBibliographyAlias{collection}{book}%%文集类型驱动 -\DeclareBibliographyAlias{proceedings}{book}%会议论文集文献类型驱动 -\DeclareBibliographyAlias{thesis}{manual}%学位论文驱动 -\DeclareBibliographyAlias{unpublished}{manual}%其它类型驱动 -\DeclareBibliographyAlias{database}{manual} -\DeclareBibliographyAlias{dataset}{manual} -\DeclareBibliographyAlias{software}{manual} -\DeclareBibliographyAlias{map}{manual} -\DeclareBibliographyAlias{archive}{manual} - - -%===================================================================== -% 设置排序格式 -%===================================================================== -% -% 排序格式,用降序,及userb域,针对biblatex3.8及以上版本 -% -\DeclareSortingTemplate{gb7714-2015}{ - \sort{ - \field{presort} - } - %\sort[final]{ - %\field{sortkey} - %} - \sort{ - \field{lansortorder}%language - } - \sort{ - \field{sortkey} - } - \sort{%[direction=descending] - \field{sortname} - \field{author} - \field{editor} - \field{translator} - } - \sort{ - \field{sortyear} - \field{year} - } - \sort{ - \field{sorttitle} - \field{title} - } - \sort{ - \field{volume} - \literal{0} - } - } - - %降序的nyt - \DeclareSortingTemplate{gbnytd}{ - \sort{ - \field{presort} - } -% \sort[final]{ -% \field{sortkey} -% } - \sort{ - \field{lansortorder}%language - } - \sort[direction=descending]{ - \field{sortkey} - } - \sort[direction=descending]{% - \field{sortname} - \field{author} - \field{editor} - \field{translator} - } - \sort{ - \field{sortyear} - \field{year} - } - \sort{ - \field{sorttitle} - \field{title} - } - \sort{ - \field{volume} - \literal{0} - } - } - - %降序的ynt - \DeclareSortingTemplate{gbyntd}{ - \sort{ - \field{presort} - } -% \sort[final]{ -% \field{sortkey} -% } - \sort{ - \field{lansortorder}%language - } - \sort[direction=descending]{ - \field{sortyear} - \field{year} - } - \sort{ - \field{sortkey} - } - \sort{% - \field{sortname} - \field{author} - \field{editor} - \field{translator} - } - \sort{ - \field{sorttitle} - \field{title} - } - \sort{ - \field{volume} - \literal{0} - } - } - - %升序的ynt - \DeclareSortingTemplate{gbynta}{ - \sort{ - \field{presort} - } -% \sort[final]{ -% \field{sortkey} -% } - \sort{ - \field{lansortorder}%language - } - \sort{%[direction=ascending] - \field{sortyear} - \field{year} - } - \sort{ - \field{sortkey} - } - \sort{% - \field{sortname} - \field{author} - \field{editor} - \field{translator} - } - \sort{ - \field{sorttitle} - \field{title} - } - \sort{ - \field{volume} - \literal{0} - } - } - -%===================================================================== -% 参考文献表环境 -%===================================================================== -% -% 列表格式 -% -% 增加一个\bibitemindent尺寸用于控制list环境的itemindent -% v1.0l,20180615,hzz -% v1.0t,20200319,hzz,增加尺寸\biblabelextend使某些字体下标签宽度不足时可增加标签宽度 -\setlength{\bibhang}{\biblabelsep}% -\newlength{\bibitemindent} -\setlength{\bibitemindent}{0pt} -\newlength{\biblabelextend} -\setlength{\biblabelextend}{0pt} - - -\defbibenvironment{bibliography} - {\list - {\printtext[labelnumberwidth]{% - \printfield{labelprefix}% - \printfield{labelnumber}}} - {\addtolength{\labelnumberwidth}{\biblabelextend}% - \setlength{\labelwidth}{\labelnumberwidth}% - \setlength{\labelsep}{\biblabelsep}% - \setlength{\leftmargin}{\bibhang}% - \addtolength{\leftmargin}{\labelnumberwidth}% - \setlength{\itemindent}{\bibitemindent}% - \setlength{\itemsep}{\bibitemsep}% - \setlength{\parsep}{\bibparsep}}% - \renewcommand*{\makelabel}[1]{\hss##1}} - {\endlist} - {\item} - -% -% 顺序编码制-标签对齐方式处理 -% -% 原理方法:利用选项提供的计数器数值做选择 -% 左对齐,右对齐为list环境下的处理,此时list环境的\labelwidth只能设置一个,是最宽标签的宽度 -% 项对齐则是在段落环境下做的处理。 -% 左对齐时,参考文献各项内容对齐,序号标签与参考文献项内容的间距可变 -% 右对齐时,参考文献各项内容对齐,序号标签与参考文献项内容的间距相等,标签与页边距离可变 -% 项对齐时,序号标签贴在页边,序号标签与参考文献项内容的间距相等 -% 修改序号标签格式为: -% \DeclareFieldFormat{shorthandwidth}{\mkbibbrackets{#1}} %源来自numeric.BBX -% \DeclareFieldFormat{labelnumberwidth}{\ttfamily\mkbibbrackets{#1}\hfill} -\DeclareFieldFormat{labelnumberwidth}{% -\ifcase\value{gbalignlabel}%右对齐,整个标签为右对齐 - \mkgbnumlabel{#1}% -\or%左对齐,整个标签为左对齐 - \mkgbnumlabel{#1}\hfill% -\or%中间对齐,比如:序号数字居于[]中间 - \hfil\mkgbnumlabel{\hfill#1\hfill}\hfil% -\fi} - -% -% 修改序号标签格式为以各条参文献为基础进行对齐的方式,即序号与条目内容间隔相等的方式。 -\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 - {}} -\newlength{\lengthid} -\newlength{\lengthlw} -\newcommand{\itemcmd}{% -\settowidth{\lengthid}{\mkgbnumlabel{\printfield{labelnumber}}} -\addtolength{\lengthid}{\biblabelsep} -\setlength{\lengthlw}{\textwidth} -\addtolength{\lengthlw}{-\lengthid} -\addvspace{\bibitemsep}%恢复\bibitemsep的作用 -%\parshape 2 0em \textwidth \lengthid \lengthlw -\hangindent\lengthid -\mkgbnumlabel{\printfield{labelnumber}}% -\hspace{\biblabelsep}} -% -% 简单的段落环境 -\defbibenvironment{bibliography} -{\begingroup\setlength{\parindent}{0em}} -{\endgroup} -{\itemcmd}} - - -%===================================================================== -% 设置单元或块等的标点 -%===================================================================== -\renewrobustcmd*{\bibinithyphendelim}{\addhighpenspace}%用于处理姓名中名部分存在-的情况,比如ZHANG Yu-xin -\renewcommand*{\subtitlepunct}{\addcolon\addspace} %修改标题和其它标题信息间的标点,来源biblatex.def, -% -% 利用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}%%页码引用格式的修改,修改为用冒号 -%\renewcommand{\relateddelim}{}%\par - -%===================================================================== -% 修改域的格式,重定义域的输出宏 -%===================================================================== -% -% 新增文献类型标识符的格式 -% []前的nobreak,从GB4.1节的例子看不应该加,所以去掉 -% 但因为考虑到cjk字符和[]之间可能添加空格,所以仍然加上 -% 而[]中间的内容,从4.6.2节的例子看也是可以分割的,因此内部的nobreak也可以去掉 -% -\DeclareFieldFormat{gbtypeflag}{% -\iftoggle{bbx:gbmedium}% -{\iftoggle{bbx:url}% - {\iffieldundef{url}%当存在url时,增加一个OL标识符 - {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}}% - {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\texttt{/}OL]}}% - }% - {\ifentrytype{online}% - {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\texttt{/}OL]}}% - {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}}% - }}% - {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{]}}% -} - -% -% 新增用于报纸的文献类型标识符的格式 -% -\DeclareFieldFormat{gbtypeflagn}{%用于报纸newspaper -\iftoggle{bbx:gbmedium}% -{\iftoggle{bbx:url}% - {\iffieldundef{url}%当存在url时,增加一个OL标识符 - {\nobreak\printtext{[}\nobreak N\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% - {\nobreak\printtext{[}\nobreak N\printtext{\texttt{/}OL]}\nobreak}% - }% - {\nobreak\printtext{[}\nobreak N\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% -}{\nobreak\printtext{[}\nobreak N\printtext{]}\nobreak}% -} - -% -% 新增用于标准的文献类型标识符的格式 -% -\DeclareFieldFormat{gbtypeflags}{%用于标准standard -\iftoggle{bbx:gbmedium}% -{\iftoggle{bbx:url}% - {\iffieldundef{url}%当存在url时,增加一个OL标识符 - {\nobreak\printtext{[}\nobreak S\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% - {\nobreak\printtext{[}\nobreak S\printtext{\texttt{/}OL]}\nobreak}% - }% - {\nobreak\printtext{[}\nobreak S\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% -}{\nobreak\printtext{[}\nobreak S\printtext{]}\nobreak}% -} - -% -% 重设title等参考文献信息的输出格式 -% -% 原理方法:修改来自biblatex.def文件的原格式 -\newcommand{\bibtitlefont}{} -\newcommand{\bibauthorfont}{} -\newcommand{\bibpubfont}{} - -\DeclareFieldFormat{title}{#1\adddot\addthinspace} -\DeclareFieldFormat{journaltitle}{#1\isdot}%添加\isdot用于缩写名带点情况,将其转换为缩写点,便于标点的追踪 -\DeclareFieldFormat{issuetitle}{#1} -\DeclareFieldFormat{maintitle}{#1} -\DeclareFieldFormat{booktitle}{#1} -\DeclareFieldFormat%将期刊等文献的标题中原来带的引号去掉 - [article,patent,thesis,unpublished] - {title}{#1\adddot\addthinspace}%\mkbibquote{#1\isdot} -\DeclareFieldFormat%将期刊等文献的标题中原来带的引号去掉 - [inbook,incollection,inproceedings] - {title}{#1}%\nopunct\unspace -\DeclareFieldFormat{url}{\url{#1}} %%url相关输出,url域修改如本行,源来自biblatex.def -\def\UrlFont{\rmfamily}%设置url字体为roman字体%\ttfamily -%\urlstyle{rm} %使用这句也一样 -\setcounter{biburlnumpenalty}{100} %让url可以在数字后断行 -\setcounter{biburlucpenalty}{100} %让url可以在大写字母后断行 -\setcounter{biburllcpenalty}{100} %让url可以在小写字母后断行 -\DeclareFieldFormat{doi}{% - \rmfamily{DOI}\addcolon\space - \ifhyperref - {\href{https://doi.org/#1}{\nolinkurl{#1}}} - {\nolinkurl{#1}}} -% -% 标题的字母大小写格式修改 -% -% 注意:修改标题的字母大小写,不能用前面的title的格式而要用titlecase -% 因为titlecase is applied to the contents of the field directly,title is not -%\DeclareFieldFormat{titlecase}{\MakeCapital#1}%重设标题格式,将其修改为首字母大写 -\DeclareFieldFormat{titlecase}{\iftoggle{bbx:titlelink}{% -\iffieldundef{url}{\MakeCapital#1}{% -\href{\thefield{url}}{#1}}}{\MakeCapital#1}}%重设标题格式,将其修改为首字母大写 -\DeclareFieldFormat{pages}{#1}%去掉前面引导页码的pp.等字符,\mkpageprefix[bookpagination]{#1} -\DefineBibliographyExtras{english}{\renewcommand*{\bibrangedash}{-}}%将页码间隔符替换会英文的短横线 - -\def\execgbfdfmtstd{%恢复到标准样式的设置 -\DeclareFieldFormat{title}{\mkbibemph{##1}} -\DeclareFieldFormat - [article,inbook,incollection,inproceedings,patent,thesis,unpublished] - {title}{\mkbibquote{##1\isdot}} -\DeclareFieldFormat - [suppbook,suppcollection,suppperiodical] - {title}{##1} -\DeclareFieldFormat{journaltitle}{\mkbibemph{##1}} -\DeclareFieldFormat{issuetitle}{\mkbibemph{##1}} -\DeclareFieldFormat{maintitle}{\mkbibemph{##1}} -\DeclareFieldFormat{booktitle}{\mkbibemph{##1}} -\DeclareFieldFormat{url}{\mkbibacro{URL}\addcolon\space\url{##1}} -\DeclareFieldFormat{titlecase}{##1} -\DeclareFieldFormat{pages}{\mkpageprefix[bookpagination]{##1}} -} - -% -% 文献标题后的标点问题 -% v1.0k,20180405,为texlive2017以上版本中的beamer兼容性做的处理,Hu Zhenzhen -% -% 原理方法:如下代码处理texlive2017以上版本中,beamer中文献的标题后出现两个点的情况: -% texlive2017以上的beamer中对macro{title}做了patch,正常情况下不会出现两个点的情况,但由于 -% 之前为了处理texlive2015,2016下的title格式添加了adddot,导致出现两个点的情况,而且也影响 -% 析出文献的//符号的输出,因此再次对macro{title}做patch消除beamer中做apptocmd时添加的\newunitpunct - {%texlive 2017对应iftlseven以上版本 - \@ifclassloaded{beamer}{ - \DeclareFieldFormat{title}{#1}% - \DeclareFieldFormat[article,patent,thesis,unpublished]{title}{#1} - \AtBeginDocument{% - \patchcmd{\abx@macro@title}{\newunitpunct}{}{}{}}}{} - } - - -% -% 修改译者位置格式 -% -% 原理方法:修改来自biblatex.def文件的bytranslator+others宏的格式 -\renewbibmacro*{bytranslator+others}{% - \ifnameundef{translator} - {} - {%\usebibmacro{bytranslator+othersstrg} - %\setunit{\addspace}% - \printnames[bytranslator]{translator}% - \clearname{translator}% - %从macro*{bytranslator+othersstrg}%中可以看到当地化字符串格式的引用前的代码处理 - %比如生成cotranslator等用于调用cotranslator所代表的当地化字符串 - \usebibmacro{bytranslator+othersstrg}%“译”的位置换到下面来,即放到译者后面。 - %\setunit{\addspace}% - \newunit}% - \usebibmacro{withothers}} - - -% -% 修改作者数量超过限定值,做省略时的处理格式 -% v1.0,20160701,hzz -% v1.0O,20190103,hzz,修改利用新定义的一个分隔符strandothersdelim -% -% 原理方法:判断作者或译者是否中文,若中文用字符等,否则用et al. 。 -% \printnames由start-stop控制项数,默认是1和maxnames/minnames -\renewbibmacro*{name:andothers}{% - \ifboolexpr{ - test {\ifnumequal{\value{listcount}}{\value{liststop}}} - and - test \ifmorenames - }{\ifnumgreater{\value{liststop}}{1}%注意这里试图去区分姓名总数大于1的情况,当姓名总数大于1时,最后一个姓名后面先加入一个\finalandcomma - {\finalandcomma}%目前国标没有这样的区分要求,如果有需要也是可以这么去做的。 - {}% -\printdelim{andothersdelim}\printdelim{strandothersdelim}% -}{%当是译者的时候需要特殊处理:从7.2节看等,译前面加逗号,但从示例看等和译同时出现时,译前的逗号没有,比如: -%袁训来, 陈哲, 肖书海, 等. -%胡泳, 范海燕, 译. -%潘惠霞, 魏婧, 杨艳, 等译. -\ifcurrentname{translator}{\addcomma\addthinspace}{}%为了实现上述第二个示例情况做的处理 -}} - - -% -% 修改省略作者后的本地化字符串,比如et al. -% v1.0o,20190103,hzz -% -% 原理方法:默认情况下判断作者或译者是否中文,若中文用字符andotherscn=“等”,否则用andothers=“et al.”。 -% 非默认情况,根据选项信息,选择选择强制中文或英文 -% 首先设置全局的,然后设置文献表中的,这一等价于将所有的cite命令环境都设置过了 -% 而不用对每一个引用命令单独设置,比如cite,parancite,textcite都设置 -\DeclareDelimFormat{strandothersdelim}{% - \edef\userfieldabcde{userd}%这里使用\iffieldequalstr{labelnamesource}替代ifcurrentname因为标注中使用ifcurrentname无效 - \iffieldequalstr{labelnamesource}{translator}{\edef\userfieldabcde{usere}}{}% - \iffieldequalstr{labelnamesource}{editor}{\edef\userfieldabcde{userc}}{}% - \iffieldequalstr{labelnamesource}{author}{\edef\userfieldabcde{userf}}{}% - \iffieldequalstr{labelnamesource}{bookauthor}{\edef\userfieldabcde{userb}}{}% - \ifcase\value{gbcitelocalcase}% - \iffieldequalstr{\userfieldabcde}{chinese}{\ifbibstring{andothersincitecn}{\bibstring{andothersincitecn}}{\bibstring{andothers}}}{}%中文已经通过english本地化字符串定义 - \iffieldequalstr{\userfieldabcde}{korean}{\ifbibstring{andotherskr}{\bibstring{andotherskr}}{\bibstring{andothers}}}{}%韩语未定义,所以与bib中一致 - \iffieldequalstr{\userfieldabcde}{japanese}{\ifbibstring{andothersjp}{\bibstring{andothersjp}}{\bibstring{andothers}}}{}%日与同韩语 - \iffieldequalstr{\userfieldabcde}{english}{\ifbibstring{andothersincite}{\bibstring{andothersincite}}{\bibstring{andothers}}}{}%英语已定义 - \iffieldequalstr{\userfieldabcde}{french}{\bibstring{andothers}}{}%法语未定义,若要定义需要针对french本地化字符串定义 - \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{andothers}}{}%俄语未定义,若要定义需要针对russian本地化字符串定义 - \or% - \bibstring{andothersincitecn}% - \or% - \bibstring{andothersincite}% - \fi} - - -\DeclareDelimFormat[bib,biblist]{strandothersdelim}{% - \edef\userfieldabcde{userd}% - \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% - \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% - \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% - \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% - \ifcase\value{gbbiblocalcase}% - \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andotherscn}}{}% - \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andotherskr}}{}% - \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andothersjp}}{}% - \iffieldequalstr{\userfieldabcde}{english}{\bibstring{andothers}}{}% - \iffieldequalstr{\userfieldabcde}{french}{\bibstring{andothers}}{}% - \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{andothers}}{}% - \or% - \bibstring{andotherscn}% - \or% - \bibstring{andothers}% - \fi} - -% -% 修改最后一个作者前的字符串,比如 and -% v1.0o,20190103,hzz -% -% 原理方法:默认情况下判断作者或译者是否中文,若中文用字符andcn=“和”,否则用and=“and”。 -% 非默认情况,根据选项信息,选择选择强制中文或英文 -% 首先设置全局的,然后设置文献表中的,这一等价于将所有的cite命令环境都设置过了 -% 而不用对每一个引用命令单独设置,比如cite,parancite,textcite都设置 -\DeclareDelimFormat{finalnamedelim}{% - \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}% - \addspace% - \edef\userfieldabcde{userd}% - \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% - \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% - \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% - \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% - \ifcase\value{gbcitelocalcase}% - \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andincitecn}}{}% - \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andkr}}{}% - \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andjp}}{}% - \iffieldequalstr{\userfieldabcde}{english}{\bibstring{andincite}}{}% - \iffieldequalstr{\userfieldabcde}{french}{\bibstring{and}}{}% - \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{and}}{}% -\space% - \or% - \bibstring{andincitecn}\space% - \or% - \bibstring{andincite}\space% - \fi} - -\DeclareDelimFormat[bib,biblist]{finalnamedelim}{% - \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}% - \addspace% - \edef\userfieldabcde{userd}% - \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% - \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% - \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% - \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% - \ifcase\value{gbbiblocalcase}% - \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andcn}}{}% - \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andkr}}{}% - \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andjp}}{}% - \iffieldequalstr{\userfieldabcde}{english}{\bibstring{and}}{}% - \iffieldequalstr{\userfieldabcde}{french}{\bibstring{and}}{}% - \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{and}}{}% -\space% - \or% - \bibstring{andcn}\space% - \or% - \bibstring{and}\space% - \fi} - - -% -% 重设title的输出 -% -% 20180425,v1.0k,为标题增加字体控制命令,Hu Zhenzhen -% 原理方法:将文献类型标识符输出出去,原输出来自biblatex.def文件 -% 利用toggle做标识符是否输出的判断 -\renewbibmacro*{title}{% - \ifboolexpr{% - test{\iffieldundef{title}}% - and - test{\iffieldundef{subtitle}}% - }% - {}% - {\printtext[title]{\bibtitlefont%增加字体控制命令 - \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 -}% -}} - -% -% 作者信息的输出格式 -% -% 20180425,v1.0k,为作者增加字体控制命令,Hu Zhenzhen -% 20180603,v1.0l,增加使用nameformat域来选择姓名格式 -\DeclareNameFormat{namefmtselected}{% -\iffieldundef{namefmtid}{}% -{\defcounter{gbnamefmtcase}{\thefield{namefmtid}}}% -\ifcase\value{gbnamefmtcase}% - \ifgiveninits - {\usebibmacro{name:gbuppercase} - {\namepartfamily} - {\namepartgiveni} - {\namepartprefix} - {\namepartsuffix}} - {\usebibmacro{name:gbuppercase} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}}% -\or - \ifgiveninits - {\usebibmacro{name:gblowercase} - {\namepartfamily} - {\namepartgiveni} - {\namepartprefix} - {\namepartsuffix}} - {\usebibmacro{name:gblowercase} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}}% -\or - \ifgiveninits - {\usebibmacro{name:given-family} - {\namepartfamily} - {\namepartgiveni} - {\namepartprefix} - {\namepartsuffix}} - {\usebibmacro{name:given-family} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}}% -\or - \ifgiveninits - {\usebibmacro{name:family-given} - {\namepartfamily} - {\namepartgiveni} - {\namepartprefix} - {\namepartsuffix}} - {\usebibmacro{name:family-given} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}}% -\or -\usebibmacro{name:gbpinyin} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}% -\or - \ifnumequal{\value{listcount}}{1} - {\ifgiveninits - {\usebibmacro{name:family-given} - {\namepartfamily} - {\namepartgiveni} - {\namepartprefix} - {\namepartsuffix}} - {\usebibmacro{name:family-given} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}}% - \ifboolexpe{% - test {\ifdefvoid\namepartgiven} - and - test {\ifdefvoid\namepartprefix}} - {} - {\usebibmacro{name:revsdelim}}} - {\ifgiveninits - {\usebibmacro{name:given-family} - {\namepartfamily} - {\namepartgiveni} - {\namepartprefix} - {\namepartsuffix}} - {\usebibmacro{name:given-family} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}}}% -\fi - \usebibmacro{name:andothers}} - -\DeclareNameAlias{default}{namefmtselected}%姓名的默认格式采用可选的模式 -\DeclareNameAlias{sortname}{default}% Used in the bibliography %family-given/given-family -\DeclareNameAlias{citename}{default}% Default used by \citename - -\DeclareDelimFormat[bib,biblist]{andothersdelim}{\addcomma\addspace} -%\DeclareDelimFormat[textcite]{andothersdelim}{\addspace}% - -%GB/T 7714-2015 风格,全部大写 -\newbibmacro*{name:gbuppercase}[4]{\bibauthorfont% -\renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 -\renewcommand*{\revsdnamepunct}{}% - \ifuseprefix% - {\usebibmacro{name:delim}{#3#1}% - \usebibmacro{name:hook}{#3#1}% - \ifdefvoid{#3}{}{% - \ifcapital% - {\mkbibnameprefix{\MakeCapital{#3}}\isdot}% - {\mkbibnameprefix{#3}\isdot}% - \ifprefchar{}{\bibnamedelimc}}% - \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% - \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital - \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%后缀前加逗号 - {\usebibmacro{name:delim}{#1}% - \usebibmacro{name:hook}{#1}% - \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% - \ifboolexpe{% - test {\ifdefvoid{#2}} - and - test {\ifdefvoid{#3}}} - {}{\revsdnamepunct}% - \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital - \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}% - \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号 -} - -%GB/T 7714-2015 风格,大小写不变,根据bib文件内输入原样输出 -\newbibmacro*{name:gblowercase}[4]{\bibauthorfont% - \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 - \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def - \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}{}{\addcomma\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}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号 -} - -%中文常见风格,汉语拼音全拼模式 -\newbibmacro*{name:gbpinyin}[4]{\bibauthorfont% -\renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉,%来源biblatex2.STY -\renewcommand*{\revsdnamepunct}{}%%来源biblatex.def -\renewrobustcmd*{\bibnamedelima}{\mbox{-}}% - \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}}% -} - - -% -% url和url日期格式 -% -\renewbibmacro*{url+urldate}{% - %\usebibmacro{url}%%更换url的位置,放到下面 - \iffieldundef{urlyear}% - {}{%\setunit*{\addspace}% - \usebibmacro{urldate}}% - \setunit{\addperiod\addspace}% - \usebibmacro{url}} -\renewbibmacro*{url}{\printfield{url}} - - -% -% 日期信息的输出格式,针对biblatex>=3.10版本 -% - \DeclareFieldFormat{urldate}{#1} - \renewbibmacro*{urldate}{% - \addthinspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 - - % - % 专利的公告日期、或报纸的日期的输出宏 - % 20160701,v1.0,新增加 - % 20180405,为biblatexv3.10版本,出现多出点bug做处理,Hu Zhenzhen - % - % 原理方法:加上printtext避免破坏异步标点机制 - % 本可以用\printdate,但由于date选项设置为year,所以仅会给出年份 - % 所以无法再用选项设置的方法,印象需要用底层的命令 - % 这里可以用\blx@isodate,但用\blx@gbdate试图避免版本判断 - \newbibmacro*{newsdate}{%% - \printtext{\blx@gbdate{}{}}%%\blx@isodate{}{}% - } - - % - \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 - \ifboolexpr{% - test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}% - }% - {}%更新或修改日期通常有day信息 - {\iffieldundef{year}{% - \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{(}\printeventdate\printtext{)}}}% - {\printtext{(}\printenddate\printtext{)}}% - }{\iffieldequalstr{year}{}{%因为year存在,但为空 - }{\printtext{(}\blx@gbdate{}{}\printtext{)}}% - }% - }}% - - -% -% biblatex>v3.8版利用related实现双语文献的处理 -% - %为了实现v3.8以上版本的双语文献,采用related的方法代替set方法,因为set方法已经无法实现了, - %因为set不再复制其第一个成员的信息。于是定义一个命令,用于动态的修改数据,即添加related域的信息 - %其中使用了\DeclareStyleSourcemap,但由于其只能出现在导言区中,因此\defdoublelangentry命令也只能出现在导言区中 - \newcommand{\defdoublelangentry}[2]{% - \edef\entrykeya{##1} - \edef\entrykeyb{##2} - \DeclareStyleSourcemap{ - \maps[datatype=bibtex]{ - \map{ - \step[fieldsource=entrykey, match=\entrykeya, final] - \step[fieldset=related, fieldvalue=\entrykeyb] - } - } - } - } - -% -% 关联文献间的分隔符 -% -\renewcommand{\relateddelim}{\adddot\newline\nobreak}%\par,而作者年样式不需要修改,因为没有项对齐的标签问题 - -% -% 关联文献块前的分隔符,针对biblatex>=3.11 -% -% 原理方法:因为增加了begrelateddelim钩子,所以不需要重定义related输出宏 -\renewcommand{\begrelateddelim}{\adddot\newline\nobreak} - - -% -% 调整doi+eprint+url格式 -% -% 原理方法:源来自standard.bbx,因为页码后面直接跟引用日期,没有标点所以去掉其中的标点。 -\renewbibmacro*{doi+eprint+url}{% -% \iftoggle{bbx:doi}%把doi的位置放到url后面 -% {\printfield{doi}} -% {}% - %\newunit\newblock - \iftoggle{bbx:eprint} - {\iffieldundef{eprint}{}{\newunit\usebibmacro{eprint}}} - {}% - %\newunit\newblock - \iftoggle{bbx:url} - {\usebibmacro{url+urldate}} - {} - \newunit\newblock - \iftoggle{bbx:doi} - {\printfield{doi}} - {}} - -% -% 调整页码的格式,即chapter+pages格式 -% -\renewbibmacro*{chapter+pages}{% -\iftoggle{bbx:gbstrict}{}{% - \printfield{chapter}}% - \iffieldundef{pages}{}{%这里增加一个判断,当没有页码时就不输出 - \setunit{\bibpagespunct}% - \printfield{pages}}% - %\newunit %这里的标点去掉 -} - -% -% 当location等出版项超过maxitem缩减后不再输出etal -% -\DeclareListFormat{location}{% - \usebibmacro{list:delim}{#1}% - #1\isdot} -\DeclareListAlias{institution}{location} -\DeclareListAlias{publisher}{location} - -% 新增一个样式用于输出连续出版物的地址,单位,时间, -% 用于periodical连续出版物的出版社和地址的处理 -% -% v1.0k,20180425,为出版信息增加字体控制命令,hzz -% %类似\newbibmacro*{publisher+location+date} -\newbibmacro*{location+institution+date}{\bibpubfont% -\iftoggle{bbx:gbpub}% -{\testCJKfirst{userd}% -\ifboolexpr{% -test {\iflistundef{location}} and test {\iflistundef{institution}}% -}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress}\space :\space\str@nopublisher]}% -{\printtext{[S.l.\space :\space s.n.\adddot]}}% -}{% -\iflistundef{location}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress]}}{\printtext{[S.l.\adddot]}}}% - {\printlist{location}}% -\addcolon\addspace% -\iflistundef{institution}{% -\iftoggle{ifCJKforgbt}{\printtext{[\str@nopublisher]}}{\printtext{\mkbibbrackets{s.n.}}}}% -{\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}% -} -% -% 通用的出版社和地址的处理 -% -% 原理方法:当没有出版社地址时,直接判断title的信息是否是中文,若为中文,则写出版地不详,否则用英文的字符表示。 -% 事实上title对于每个文献来说是必须的,所以用它判断是最快的,而且一般标题和出版社的语言是一样的。 -% 注意标准standard类型,因为当没有出版项时直接省略,所以做特殊处理 -\renewbibmacro*{publisher+location+date}{\bibpubfont% -\iftoggle{bbx:gbpub}% -{\testCJKfirst{userd}% - \ifboolexpr{ test {\iflistundef{location}} and test {\iflistundef{publisher}} }% - {\iffieldequalstr{note}{standard}{}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress}\space :\space\str@nopublisher]}{\printtext{[S.l.\space :\space s.n.\adddot]}}}}% - {\iflistundef{location}{%\adddot - \iffieldequalstr{note}{standard}{}%%从gbt7714-2015标准第19页看到,标准存在出版项时输出,没有时完全省略。 - {\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress]}\addcolon\addspace}{\printtext{[S.l.\adddot]}\addcolon\addspace}}}% \bibstring{noaddress} - {\printlist{location}\addcolon\addspace}%%\addcolon\addspace% - \iflistundef{publisher}{% - \iffieldequalstr{note}{standard}{}% - {\iftoggle{ifCJKforgbt}{\printtext{[\str@nopublisher]}\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 - }% -} - -% -% 修改了一个institution+location+date用于manual、report、thesis等类型 -% -% 20180425,v1.0k,增加了字体控制命令,hzz -% 20190105,v1.0o,加了一个编组避免\usebibmacro{date}把month和day信息去掉 -\renewbibmacro*{institution+location+date}{\bibpubfont%当没有institution时不处理。 -{\printlist{location}%%加了一个编组避免\usebibmacro{date}把month和day信息去掉 - \iflistundef{institution} - {\setunit*{\addcomma\space}} - {\setunit*{\addcolon\space}}% - \printlist{institution}% - \setunit*{\addcomma\space}% - \usebibmacro{date}% - %\newunit - }} - -% -% 对volume卷信息格式做出修改 -% v1.0o,20190105,hzz -% -\DeclareFieldFormat{volume}{% -\testCJKfirst{userd}% -\iftoggle{ifCJKforgbt}% -{\bibstring{serialcn}#1\bibstring{volumecn}}% -{\bibstring{volume}~#1}% -}% volume of a book -\DeclareFieldFormat[article,periodical]{volume}{#1}% volume of a journal - -% -% 对number册信息格式做出修改 -% v1.0o,20190105,hzz -% -\DeclareFieldFormat{number}{#1}% -\DeclareFieldFormat[book,collection,inbook,% -incollection,proceedings,inproceedings]{number}{% -\testCJKfirst{userd}% -\iftoggle{ifCJKforgbt}% -{\bibstring{serialcn}#1\bibstring{numbercn}}% -{#1}% -}% - -% -% 对edition版本信息格式做出修改 -% -\DeclareFieldFormat{edition}{%源来自biblatex.DEF -\testCJKfirst{userd}% -\iftoggle{ifCJKforgbt}% -{\ifinteger{#1}% -{\printtext{#1\str@edition}}% -{#1\isdot}}% -{\ifinteger{#1}% -{\mkbibordedition{#1}~\bibstring{edition}}% -{#1\isdot}}} - -% -% 对version的版本信息做出修改 -% -\DeclareFieldFormat{version}{%源来自biblatex.DEF -\testCJKfirst{userd}% -\ifinteger{#1}% -{\iftoggle{ifCJKforgbt}{\printtext{#1\str@edition}}% -{\mkbibordedition{#1}~\bibstring{version}}}% -{#1\isdot}} - -% -% 修改析出文献的文集的标题与附加标题间的符号 -% -\renewbibmacro*{booktitle}{% - \ifboolexpr{ - test {\iffieldundef{booktitle}} - and - test {\iffieldundef{booksubtitle}} - } - {} - {\printtext[booktitle]{\bibtitlefont% - \printfield[titlecase]{booktitle}% - \setunit{\subtitlepunct}% - \printfield[titlecase]{booksubtitle}}% - \newunit%标点换成下一句 - \setunit{\subtitlepunct}}% - \printfield{booktitleaddon}} - - -% -% 调整期刊名的格式 -% -% v1.0k,20180425,增加了字体控制命令,hzz -\renewbibmacro*{journal+issuetitle}{\bibpubfont%源来自standard.bbx - \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}% - \iffieldundef{volume}{}{\setunit{\addcomma\space}}% - %换成逗号和空格 - \usebibmacro{issue}% - \usebibmacro{volume+number+eid}%把卷期放到年份后面 - %\newunit - } - - - -% -% 调整期刊卷和期的格式 -% -\renewbibmacro*{volume+number+eid}{%源来自standard.bbx -\iftoggle{bbx:gbfieldstd}{% - \printfield{volume}% - \setunit*{\adddot}% - \printfield{number}% - \setunit{\addcomma\space}% - \printfield{eid}}{% - \printfield{volume}% - %\setunit*{\adddot}%去掉点号 - %\printfield{number}% - \iffieldundef{number}{}{\printtext{\mkbibparens{\printfield{number}}}}%增加一个圆括号 - \iffieldundef{eid}{}{% - \setunit{\addcomma\space}% - \printfield{eid}}}} - -% -% 调整期刊年份的格式 -% -\renewbibmacro*{issue+date}{%去掉括号 - \printtext{%去掉了[parens] - \iffieldundef{issue} - {%\usebibmacro{date} - \iffieldundef{note}{\usebibmacro{date}}%判断一下,是否是报纸 - {\iffieldequalstr{note}{news}{\usebibmacro{newsdate}}%判断是否为报纸 - {\usebibmacro{date}}% - }}% - {\iftoggle{bbx:gbstrict}{}{\printfield{issue}% - \setunit*{\addspace}}% - %\usebibmacro{date} - \iffieldundef{note}{\usebibmacro{date}}%判断一下,是否是报纸 - {\iffieldequalstr{note}{news}{\usebibmacro{newsdate}}%判断是否为报纸 - {\usebibmacro{date}}% - }}}% - %\newunit - } - -% -% 调整页码前的标点和去掉期刊文章等页码后面的标点 -% -\renewbibmacro*{note+pages}{%源来自standard.bbx - %\printfield{note}%不要note,note用来判断是否是报纸newspaper - \iffieldundef{pages}{}{ - \setunit{\bibpagespunct}% - \printfield{pages}}% - %\newunit - } - - -% -% 编者的符号修改一下 -% v1.0 2016-07-01 -% v1.0q 2019-03-01 hzz 修改editortype前的标点 -% -\renewbibmacro*{editor}{%源来自biblatex.DEF - \ifboolexpr{ - test \ifuseeditor - and - not test {\ifnameundef{editor}} - } - {\printnames{editor}% - \iffieldundef{editortype}%增加一个类型判断,用于存在editortype的情况 - {\setunit\addspace}%当没有editortype时,直接用句点 - {%\setunit{\addcomma\space}% - \usebibmacro{editorstrg}}% - %\clearname{editor} - }% - {}} - -% -% 编者类型做一修改 -% v1.0 2016-07-01 -% v1.0q 2019-03-01 hzz 修改editortype不同语言的不同本地化字符串 -% -\renewbibmacro*{editorstrg}{%源来自biblatex.DEF - \printtext[editortype]{% - \iffieldundef{editortype} - {% -% \ifboolexpr{ %这一段去掉,未定义编者类型情况下不处理 -% test {\ifnumgreater{\value{editor}}{1}} -% or -% test {\ifandothers{editor}} -% } -% {\bibstring{editors}} -% {\bibstring{editor}} - } - {\ifbibxstring{\thefield{editortype}} %定义编者类型情况下处理,以后根据需要修改 - {\ifboolexpr{ - test {\ifnumgreater{\value{editor}}{1}} - or - test {\ifandothers{editor}} - } - {\printdelim{streditortypes}} - {\printdelim{streditortype}}} - {\thefield{editortype}}}% - }} - -% -% 编者类型的本地化字符串输出 -% v1.0q 2019-03-01 hzz -% 能对不同条目类型作格式设置的域格式,能对不同环境做格式设置的分隔符 -% 能对不同文境作设置的包括排序,标签等 -% 这里因为考虑可能标注和文献表中存在不同,所以用分隔符来输出本地化字符串 -% -\DeclareDelimFormat{streditortypes}{% - \edef\userfieldabcde{userd}% - \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% - \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% - \ifcase\value{gbbiblocalcase}% - \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{\thefield{editortype}scn}}{}% - \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{\thefield{editortype}skr}}{}% - \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{\thefield{editortype}sjp}}{}% - \iffieldequalstr{\userfieldabcde}{english}{\addcomma\addthinspace\bibstring{\thefield{editortype}s}}{}% - \iffieldequalstr{\userfieldabcde}{french}{\addcomma\addthinspace\bibstring{\thefield{editortype}s}}{}% - \iffieldequalstr{\userfieldabcde}{russian}{\addcomma\addthinspace\bibstring{\thefield{editortype}s}}{}% - \or% - \bibstring{\thefield{editortype}scn}% - \or% - \addcomma\addthinspace\bibstring{\thefield{editortype}s}% - \fi} -% -\DeclareDelimFormat{streditortype}{% - \edef\userfieldabcde{userd}% - \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% - \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% - \ifcase\value{gbbiblocalcase}% - \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{\thefield{editortype}cn}}{}% - \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{\thefield{editortype}kr}}{}% - \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{\thefield{editortype}jp}}{}% - \iffieldequalstr{\userfieldabcde}{english}{\addcomma\addthinspace\bibstring{\thefield{editortype}}}{}% - \iffieldequalstr{\userfieldabcde}{french}{\addcomma\addthinspace\bibstring{\thefield{editortype}}}{}% - \iffieldequalstr{\userfieldabcde}{russian}{\addcomma\addthinspace\bibstring{\thefield{editortype}}}{}% - \or% - \bibstring{\thefield{editortype}cn}% - \or% - \addcomma\addthinspace\bibstring{\thefield{editortype}}% - \fi} - - -% -% bookauthor域的输出, -% v1.0q 2019-03-01 hzz -% 不再对editor和bookauthor做sourcemap,而是下面的宏内逻辑代替, -% 使得除使用bookauthor外也可以使用editor,便于在使用editor时使用editortype -\renewbibmacro*{bybookauthor}{% - \ifnameundef{bookauthor}% - {\ifnameundef{editor}% - {}% - {\ifnamesequal{author}{editor}% - {}{\usebibmacro{editor}}}% - }% - {\ifnamesequal{author}{bookauthor}% - {}{\printnames{bookauthor}}% - }% -} - -% -% 修改期刊的标题 -% -\renewbibmacro*{periodical}{%源来自biblatex.DEF - \iffieldundef{title} - {} - {\printtext[title]{\bibtitlefont% - \printfield[titlecase]{title}% - %\setunit{\subtitlepunct}% - \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题 - {}{\setunit{\subtitlepunct} - \printfield[titlecase]{subtitle}}% - %{}%把编组结束移到后面去 - \iftoggle{bbx:gbtype}{% - \iffieldundef{usera}{}{%在标题后直接给出文献标识字母 - \printfield[gbtypeflag]{usera}}}{} - }} - } - - -% -% 期刊的标题做修改 -% -\renewbibmacro*{title+issuetitle}{%源来自standard.BBX - \usebibmacro{periodical}% - %\setunit*{\addspace}% - \setunit*{\adddot\addspace}%标点修改为句点 - \iffieldundef{series} - {} - {\newunit - \printfield{series}% - \setunit{\addspace}}% - \usebibmacro{periodical+issue}%将issue调整到上面来,并修改 -\iffieldundef{number}{}{%%进一步处理有范围的数字 - \multinumberparser{\thefield{number}}}% - \iffieldundef{volume}% - {\printfield{year}% - \printtext{\mkbibparens{\multinumberfirst}}% - \bibrangedash% - \iffieldundef{endyear}{}{\printfield{endyear}\printtext{\mkbibparens{\multinumbersecond}}}% - }% - {\multivolparser{\thefield{volume}}% - \printfield{year}% - \setunit{\addcomma\space}%将冒号修改为逗号 - \printtext{\multivolfirst}% - \printtext{\mkbibparens{\multinumberfirst}}% - \bibrangedash% - \iffieldundef{endyear}{}{% - \printfield{endyear}% - \setunit{\addcomma\space}%将冒号修改为逗号 - \printtext{\multivolsecond}% - \printtext{\mkbibparens{\multinumbersecond}}}% - }% - \setunit{\addcomma\space}% - \printfield{eid}% - \setunit{\addspace}% - %\usebibmacro{issue+date}% - %\setunit{\addcolon\space}% - \usebibmacro{issue}% - \newunit} - -% -% 新增一个样式用于调整期刊年份的格式,只打印年份 -% -\newbibmacro*{periodical+issue}{% - \printtext{%去掉了[parens] - \iffieldundef{issue} - {%\usebibmacro{date}%修改为下一句 - }% - {\printfield{issue}% - \setunit*{\addspace}% - %\usebibmacro{date}%修改为下一句 - }% - }% - %\newunit -} - -% -% 重设专利title的输出,将文献类型标识符输出出去 -% -\newbibmacro*{patenttitle}{%原输出来自biblatex.def文件 - \ifboolexpr{% - test{\iffieldundef{title}}% - and% - test{\iffieldundef{subtitle}}% - }% - {}% - {\printtext[title]{\bibtitlefont% - \printfield[titlecase]{title}% - \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题 - {}{\setunit{\subtitlepunct}% - \printfield[titlecase]{subtitle}}% - \iffieldundef{titleaddon}{}%判断一下titleaddon,否则直接加可能多一个空格 - {\setunit{\subtitlepunct}\printfield{titleaddon}}% - \setunit{\subtitlepunct}\printfield{number}%写专利号 - \iftoggle{bbx:gbtype}{\printfield[gbtypeflag]{usera}}{}% - %\iffieldundef{booktitle}{\newunit}{}%当title是析出时,不要标点 - %\newunit - }% -}% -} - - - -% -% 修改in:用于inbook、incollection、inproceedings等类型 -% 2018.04.20,v1.0k,renewed marco,by hzz -% 20190212,v1.0q,增加中英文区分,by hzz -% -% 原理方法:使用bibmacro{in:}改变了以前在driver中直接输出//的方式,同时也简化了标点控制。 -\renewbibmacro*{in:}{% - \iftoggle{bbx:gbpunctin}{\printtext{\texttt{//}\allowbreak}}%\addthinspace - {\setunit{\adddot\addspace}% - \iffieldequalstr{userd}{chinese}% - {\printtext{\bibstring{incn}}}% - {\printtext{\bibstring{in}}}% - }}%\newunit\newblock\intitlepunct - -% -% 修改type域的输出格式 -% 2019.02.12,v1.0q,byhzz -% 使其可以区分中英文输出不同的格式,比如博士论文英文输出PHD thesis,中文则是博士学位论文 -\DeclareFieldFormat{type}% -{\iffieldequalstr{userd}{chinese}% - {\ifbibxstring{#1cn}{\bibxstring{#1cn}}{#1}}% - {\ifbibstring{#1}{\bibstring{#1}}{#1}}% -} - - -% -% 修改series域的输出格式 -% 2019.05.01,v1.0r,byhzz -\renewbibmacro*{series+number}{% - \printfield{series}% - %\setunit*{\addspace}% - %\printfield{number}% - %\newunit - } - -%===================================================================== -%设置驱动格式 -%===================================================================== -% -% book条目类的驱动 -% - \DeclareBibliographyDriver{book}{%源来自standard.bbx文件 - \usebibmacro{bibindex}% - \usebibmacro{begentry}% -\usebibmacro{author/editor+others/translator+others}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 -\usebibmacro{maintitle+title}% -\iftoggle{bbx:gbstrict}{}{% -\newunit -\printlist{language}% -\newunit\newblock% -\usebibmacro{byauthor}% -\newunit\newblock}% -\usebibmacro{byeditor+others}% -\newunit -\printfield{edition}% -\newunit\newblock%% -\iftoggle{bbx:gbstrict}{}{% -\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}% - \iffieldundef{url}{}{%当没有网址时也不输出 - \usebibmacro{modifydate}}%带括号的修改或更新日期, -\usebibmacro{doi+eprint+url}%从下面移动到上面来,因为gbt2015的url需直接放在页码后面。 - \newunit\newblock% - \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}\usebibmacro{annotation}} - - -% -% 期刊文章,连续出版物中的析出文献的格式 -% - \DeclareBibliographyDriver{article}{% - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author/translator+others}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 - \usebibmacro{title}% - \iftoggle{bbx:gbstrict}{}{% - \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}% - \iffieldequalstr{note}{news}{}{%当是新闻时不输出修改或更新日期 - \iffieldundef{url}{}{%当没有网址时也不输出 - \iftoggle{bbx:url}{%当url选项为false时,也不输出 - \usebibmacro{modifydate}}{}}}%带括号的修改或更新日期, - \usebibmacro{doi+eprint+url}%从后面移上来,调整url和页码之间的位置 - \newunit\newblock - \iftoggle{bbx:isbn} - {\printfield{issn}} - {}% - \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}\usebibmacro{annotation}} - - - -% -% 连续出版物的驱动 -% - \DeclareBibliographyDriver{periodical}{%源来自standard.BBX - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{editor}% - %\setunit{\labelnamepunct}\newblock - \newunit\newblock %删除上面一行,添加这一行 - \usebibmacro{title+issuetitle}% - \newunit\newblock% - \usebibmacro{location+institution+date}%添加这一行用于输出地址,单位和时间 - \newunit\newblock%添加这一行 - \iftoggle{bbx:gbstrict}{}{% - \printlist{language}% - \newunit\newblock - \usebibmacro{byeditor}% - \newunit\newblock - \printfield{note}% - \newunit\newblock} - \iftoggle{bbx:isbn} - {\printfield{issn}} - {}% - \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}\usebibmacro{annotation}} - -% -% 专利文献驱动 -% - \DeclareBibliographyDriver{patent}{%源来自standard.BBX - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 - %\usebibmacro{title}% - \usebibmacro{patenttitle}%给出专利专用的标题输出 - \iftoggle{bbx:gbstrict}{}{% - \newunit% - \printlist{language}% - \newunit\newblock - \usebibmacro{byauthor}}% - \newunit\newblock - \printfield{type}% - \setunit*{\addspace}% - %\printfield{number}%已放到patenttitle中处理 - \iflistundef{location} - {} - {\setunit*{\addspace}% - \printtext{%[parens] - \printlist[][-\value{listtotal}]{location}}}% - \newunit\newblock - \usebibmacro{byholder}% - \newunit\newblock - \printfield{note}% - \newunit\newblock - \usebibmacro{newsdate}% - %\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}\usebibmacro{annotation}} - - -% -% 在线文献驱动 -% -\DeclareBibliographyDriver{online}{%源来自standard.BBX - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author/editor+others/translator+others}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 - \usebibmacro{title}% - \iftoggle{bbx:gbstrict}{}{% - \newunit% - \printlist{language}% - \newunit\newblock - \usebibmacro{byauthor}% - \newunit\newblock - \usebibmacro{byeditor+others}% - \newunit\newblock - \printfield{note}}% - \newunit - \printfield{version}% - \newunit\newblock - %\printlist{organization}% - \printlist{institution}% - \newunit\newblock -\ifboolexpr{% -test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}% -}{\usebibmacro{date}}% -{\usebibmacro{modifydate}}%修改或更新日期,为带括号的时间 - \usebibmacro{url+urldate}%从下面移上来 - \newunit\newblock - \iftoggle{bbx:eprint} - {\usebibmacro{eprint}} - {}% - \newunit\newblock - %\usebibmacro{url+urldate}% - %\newunit\newblock - \usebibmacro{addendum+pubstate}% - \setunit{\bibpagerefpunct}\newblock - \usebibmacro{pageref}% - \newunit\newblock - \iftoggle{bbx:related} - {\usebibmacro{related:init}% - \usebibmacro{related}} - {}% - \usebibmacro{finentry}\usebibmacro{annotation}} - - -% -% 报告类型驱动 -% 当有网址无出版项时,用online输出 -% -\DeclareBibliographyDriver{report}{% - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 - \usebibmacro{title}% - \iftoggle{bbx:gbstrict}{}{% - \newunit% - \printlist{language}% - \newunit\newblock - \usebibmacro{byauthor}}% - \newunit\newblock - \usebibmacro{byeditor+others}%增加的译者信息 - \newunit\newblock - \printfield{type}% - \setunit*{\addspace}% - \printfield{number}% - \newunit\newblock - \printfield{version}% - \newunit - \printfield{note}% - \newunit\newblock - \usebibmacro{publisher+location+date}% - %\newunit\newblock - \usebibmacro{chapter+pages}% - \usebibmacro{doi+eprint+url}% - \newunit - \printfield{pagetotal}% - \newunit\newblock - \iftoggle{bbx:isbn} - {\printfield{isrn}} - {}% - \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}\usebibmacro{annotation}} - -% -% 论文、手册类型驱动 -% 2016-11-11,增加了译者信息 -% -\DeclareBibliographyDriver{manual}{% - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 - \usebibmacro{title}% - \iftoggle{bbx:gbstrict}{}{% - \newunit% - \printlist{language}% - \newunit\newblock - \usebibmacro{byauthor}}% - \newunit\newblock - \usebibmacro{byeditor+others}%增加的译者信息 - \newunit\newblock - \iftoggle{bbx:gbfieldtype}{% - \printfield{type}% - \setunit*{\addspace}}{}% - \printfield{number}% - \newunit\newblock - \printfield{version}% - \newunit - \printfield{note}% - \newunit\newblock - \usebibmacro{institution+location+date}% - %\newunit\newblock - \usebibmacro{chapter+pages}% - \iffieldundef{url}{}{%当没有网址时也不输出修改或更新日期 - \usebibmacro{modifydate}}%修改或更新日期为带括号的时间 - \usebibmacro{doi+eprint+url}% - \newunit - \printfield{pagetotal}% - \newunit\newblock - \iftoggle{bbx:isbn} - {\printfield{isrn}} - {}% - \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}\usebibmacro{annotation}} - -% -% 备选类型驱动 -% -% 利用biblatex的misc驱动 -\DeclareBibliographyDriver{misc}{% - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author/editor+others/translator+others}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 - \usebibmacro{title}% -\iftoggle{bbx:gbstrict}{}{% - \newunit - \printlist{language}% - \newunit\newblock - \usebibmacro{byauthor}% - \newunit\newblock - \usebibmacro{byeditor+others}}% - \newunit\newblock - \printfield{howpublished}% - \newunit\newblock - \printfield{type}% - \newunit - \printfield{version}% - \newunit - \printfield{note}% - \newunit\newblock - \usebibmacro{institution+location+date}% - %\usebibmacro{organization+location+date}% - %\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}\usebibmacro{annotation}} - - -% -% 专著中的析出文献的格式修改 -% -\DeclareBibliographyDriver{inbook}{%源来自standard.bbx - \usebibmacro{bibindex}% - \usebibmacro{begentry}% - \usebibmacro{author/translator+others}% -\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 -\usebibmacro{title}% -\usebibmacro{in:}% -%\printtext{\texttt{//}\addthinspace}% - \usebibmacro{bybookauthor}% - \ifnameundef{bookauthor}{% - \ifnameundef{editor}{}{\newunit}% - }{\newunit}%替换下一句 - %\newunit\newblock -\iffieldundef{series}{}{\usebibmacro{series+number}\setunit{\addcolon\addspace}}%为处理一些存在series的情况而增加 - \usebibmacro{maintitle+booktitle}% -\iffieldundef{volume}{}{\setunit{\addcolon\addspace}\printfield{volume}}% -\iffieldundef{number}{}{\setunit{\addcolon\addspace}\printfield{number}}%增加卷和册信息 - \newunit\newblock% -% \usebibmacro{byeditor+others}% -% \newunit\newblock - \printfield{edition}% - \newunit - \iftoggle{bbx:gbstrict}{}{% -% \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 - \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}\usebibmacro{annotation}} - - -% -%针对不同refsection做不同的格式处理的代码 -% - -% -%默认采用顺序编码制,因此只需增加的是作者年制 -\newrobustcmd{\setaystylesection}[1]{\csxdef{gb@aystyle@section#1}{#1}} - -% -%在AtBeginBibliography处已经无法重定义defbibenvironment{bibliographyay} -%所以输出只能是用另外定义的环境来实现 -%可以在refsection后面做patch -%为排序引入newrefcontext -\apptocmd{\refsection}{ -\edef\gb@refsecnum{\number\c@refsection}% -\ifcsdef{gb@aystyle@section\gb@refsecnum}% -{ -\newrefcontext[sorting=gb7714-2015] - -\setlength{\bibhang}{1em} -\setlength{\bibitemindent}{-\bibhang} -\defbibenvironment{bibliography} - {\list - {} - {\setlength{\leftmargin}{\bibhang}% - \setlength{\itemindent}{\bibitemindent}% - \setlength{\itemsep}{\bibitemsep}% - \setlength{\parsep}{\bibparsep}}} - {\endlist} - {\item} -}{} -}{}{} - -% -%为排序引入endrefcontext -% -\pretocmd{\endrefsection}{ -\edef\gb@refsecnum{\number\c@refsection}% -\ifcsdef{gb@aystyle@section\gb@refsecnum}% -{\endrefcontext}{} -}{}{} - -%因为是整个文献表,在打印文献表的时候,增加钩子代码 -%因为下面的钩子是在defbibenvironment的begincode之后,所以对于defbibenvironment相关的设置都是无效的 -\AtBeginBibliography{ - -\edef\gb@refsecnum{\number\c@refsection}% -\ifcsdef{gb@aystyle@section\gb@refsecnum}% -%\ifboolexpr{ -%not test {\ifcsundef{gb@aystyle@section\gb@refsecnum}} -%and -%test {\ifcsequal{gb@refsecnum}{gb@aystyle@section\gb@refsecnum}} -%} - { - - \DeclareDelimFormat{nameyeardelim}{\addcomma\space} - \DeclareDelimFormat[bib,biblist]{nameyeardelim}{\addcomma\space} - - \renewbibmacro*{date}{% - \iflabeldateisdate - {} - {\printdate}}% - - \renewbibmacro*{date+extradate}{% - \iffieldundef{labelyear} - {} - {\printtext{%[parens]%这里去掉括号 - \iflabeldateisdate - {\printdateextra} - {\printlabeldateextra}}}}% - - \newbibmacro*{bbx:savehash}{% - \savefield{fullhash}{\bbx@lasthash}} - - \newbibmacro*{bbx:dashcheck}[2]{} - - %注意这里当没有作者只有标题时在年份之前的标点是否需要标准并未涉及,所以未做处理。 - \renewbibmacro*{author}{%以前的date+extrayear变为date+extradate,所以对3.8以上版本重定义一下author - \ifboolexpr{ - test \ifuseauthor - and - not test {\ifnameundef{author}} - } - {% - \usebibmacro{bbx:savehash}% - \printnames{author}% - \iffieldundef{authortype} - {\setunit{\printdelim{nameyeardelim}}} - {\setunit{\printdelim{authortypedelim}}}% - \iffieldundef{authortype} - {} - {\usebibmacro{authorstrg}% - \setunit{\printdelim{nameyeardelim}}} - }% - {\global\undef\bbx@lasthash - \usebibmacro{labeltitle}% - \setunit*{\printdelim{nonameyeardelim}}}% - \usebibmacro{date+extradate}} - - \newbibmacro*{labeltitle}{% - \iffieldundef{label} - {\iffieldundef{shorttitle} - {\printfield{title}% - \clearfield{title}} - {\printfield[title]{shorttitle}}} - {\printfield{label}}} - -% -% 增加一个number带括号的格式,避免使用mkbibparens而引入一个不必要的空格 -% -\DeclareFieldFormat{addnumflag}{% -\nobreak\printtext{(}\nobreak #1\nobreak\printtext{)}} - -% -% 调整journal输出 -% -% 原理方法:首先判断子标题,然后再设置标点。 -% 避免直接设置标点后,当volume不存在时需要使用\nopuct去标点进而引入不必要的空格 -\renewbibmacro*{journal}{% - \iffieldundef{journaltitle}% - {}% - {\printtext[journaltitle]{% - \printfield[titlecase]{journaltitle}% - \iffieldundef{journalsubtitle}{}{\setunit{\subtitlepunct}% - \printfield[titlecase]{journalsubtitle}}}}} - - - -% -% 调整期刊卷和期的格式 -% -\renewbibmacro*{volume+number+eid}{%源来自standard.bbx -\iftoggle{bbx:gbfieldstd}{% - \printfield{volume}% - \setunit*{\adddot}% - \printfield{number}% - \setunit{\addcomma\space}% - \printfield{eid}}{% - \printfield{volume}% - %\setunit*{\adddot}%去掉点号 - %\printfield{number}% - \iffieldundef{number}{}{\printfield[addnumflag]{number}}%区别于顺序编码制 - \iffieldundef{eid}{}{% - \setunit{\addcomma\space}% - \printfield{eid}}}} - -% -% 调整期刊年份的格式 -% -% 原理方法:原在authoryear.BBX中\bbx@opt@mergedate@compact中定义 -% 当issue存在时,才设置newunit。避免直接设置标点后,当volume不存在是需要使用\nopuct去标点进而引入不必要的空格 - \renewbibmacro*{issue+date}{% - \iffieldundef{issue}% - {}% - {\iftoggle{bbx:gbstrict}{}{\printtext[parens]{\printfield{issue}}\newunit}}} - -% -% 编者的符号修改一下 -% v1.0 2016-07-01 -% v1.0q 2019-03-01 hzz 修改editortype前的标点 -% -\renewbibmacro*{editor}{% - \ifboolexpr{ - test \ifuseeditor - and - not test {\ifnameundef{editor}} - } - {\usebibmacro{bbx:dashcheck} - {%\bibnamedash - \printnames{editor}% - } - {\printnames{editor}% - %\setunit{\printdelim{editortypedelim}}% - %\usebibmacro{bbx:savehash} - }% - \usebibmacro{editorstrg}% - %\clearname{editor}% - \setunit{\printdelim{nameyeardelim}}}% - {\global\undef\bbx@lasthash - \usebibmacro{labeltitle}% - \setunit*{\printdelim{nonameyeardelim}}}% - \ifboolexpr{% - test {\ifentrytype{inbook}} - or - test {\ifentrytype{incollection}} - or - test {\ifentrytype{inproceedings}} - or - test {\ifentrytype{conference}} - }% - {}% - {\usebibmacro{date+extradate}}} - - - }{} - - - -} - - - -% -%针对具体条目做处理时的特殊处理 -% -%\def\localsetrefsectionstyle{% -%} - -%\AtEveryBibitem{\localsetrefsectionstyle}% -%\AtEveryCite{\localsetchinesecode}% -%\AtEveryLositem{\localsetchinesecode}% +%% +%% --------------------------------------------------------------- +%% biblatex-gb7714-2015 --- A biblatex implementation of the +%% GBT7714-2015 bibliography style,numerical sequence and authoryear mixed style +%% Maintained by huzhenzhen +%% E-mail: hzzmail@163.com +%% Released under the LaTeX Project Public License v1.3c or later +%% --------------------------------------------------------------- +%% + +% +% 版本和时间信息 +% +\def\versionofgbtstyle{2021/01/19 v1.0w} +\def\versionofbiblatex{\abx@version} +\ProvidesFile{gb7714-2015mx.bbx}[\versionofgbtstyle biblatex bibliography style] +%\RequireBiber[3]%显式指定用biber后端,当用bibtex时会报错,但其实不会影响编译,只是采用bibtex后无法达成格式需求 + +%===================================================================== +% 加载标准样式 +%===================================================================== +\RequireBibliographyStyle{numeric-comp} +\RequirePackage{xstring}%解决texlive2015的biblatex3.0不加载xstring包的问题 + + +%===================================================================== +% 功能函数 +%===================================================================== + % + % 增加一个控制是否输出文献载体的选项 + % 20191125,v1,0s,hzz + \newtoggle{bbx:gbmedium} + \DeclareBibliographyOption{gbmedium}[true]{%biblatex低版本 + \settoggle{bbx:gbmedium}{#1}} + \ExecuteBibliographyOptions{gbmedium} + % + % 增加一个控制是否输出annotation域的选项,该域可以用于在文献条目后面输出一些注释信息 + % 20190509,v1,0s,hzz + \newtoggle{bbx:gbannote} + \DeclareBibliographyOption{gbannote}[false]{%biblatex低版本 + \settoggle{bbx:gbannote}{#1}} + \ExecuteBibliographyOptions{gbannote} + % + %用于在文献条目后面输出注释信息的宏 + %FieldFormat{annotation}用于设置注释信息的格式 + \DeclareFieldFormat{annotation}{% + \printtext{\addspace(#1)}% + } + \renewbibmacro*{annotation}{% + \iftoggle{bbx:gbannote}% + {\iffieldundef{annotation}% + {\printfile[annotation]{\bibannotationprefix\thefield{entrykey}.tex}}% + {\printfield{annotation}}}% + {}% + } + + + % + % biblatex版本判断 + % 20180629,v1.0k,hzz + % + % 原理方法:适用于3.10以上版本的biblatex,否则给出警告 + \@ifpackagelater{biblatex}{2017/12/28}{}{ + \blx@warning@noline{% + biblatex version is too old for this style\MessageBreak + if errors raised,Please update biblatex to the latest version.} + } + + % + % 判断CJK字符的函数,用于判断作者等信息是否由中文字符构成 + % v1.0k,20180509,hzz + % + % 原理方法:用biber中的perl方法代替。因为利用tex函数对字符判断时,当字符在宏 + % 中时,基于`的方法无法解决GBK编码的问题,基于CJKsymbol的方法无法解决utf-8 + % 编码用xelatex编译的问题。 + % + % 原理是:利用perl正则将中文标识记录到域中, + % 然后利用\iffieldundef和\iffieldequalstr进行判断 + \providetoggle{ifCJKforgbt} + \def\testCJKfirst#1{% + \iffieldundef{#1}{\togglefalse{ifCJKforgbt}}{% + \iffieldequalstr{#1}{chinese}{\toggletrue{ifCJKforgbt}}{\togglefalse{ifCJKforgbt}}}} + + % + % 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{}}% + } + +%===================================================================== +% 数据模型定义 +%===================================================================== + %定义类型和载体标识,从gb内容看载体基本属于介质。 + %为与lee zeping的bst的样式统一,使用mark和medium这两域名 + %为单个条目的姓名格式控制增加nameformat和namefmtid两个域 + %为缩略信息文献表增加了shortbooktitle域 + %为多语言排序增加了lansortorder域 + \DeclareDatamodelFields[type=field,datatype=literal]{mark,medium,nameformat} + \DeclareDatamodelFields[type=field,datatype=integer]{namefmtid} + \DeclareDatamodelFields[type=field,datatype=literal]{shortbooktitle} + \DeclareDatamodelFields[type=field,datatype=literal]{lansortorder} + %为多样式文献表增加的stylesections、styleaysection域: + \DeclareDatamodelFields[type=field,datatype=integer]{aysections} + \DeclareDatamodelFields[type=field,datatype=literal]{styleaysection} + + %因为biblatex更新3.14版本以后,biber对于为声明数据模型的条目类型 + %不再默认读取,而是以空字符串作为条目类型名,自然在条目定义alias时 + %就会出现问题,因此显式的声明一下newspaper,然后保留后面采用alias的方式 + %而standard类型则是采用另一种方式直接在sourcemap中转换为其它类型。 + \@ifpackagelater{biblatex}{2019/11/30}{%2019/12/01 v3.14 + \DeclareDatamodelEntrytypes{newspaper}% + }{} + + + +%===================================================================== +% 设置宏包选项 +%===================================================================== + % + % 增加一个控制是否输出type域的选项 + % 20190212,v1,0q,hzz + \newtoggle{bbx:gbfieldtype} + \DeclareBibliographyOption{gbfieldtype}[false]{%biblatex低版本 + \settoggle{bbx:gbfieldtype}{#1}} + \ExecuteBibliographyOptions{gbfieldtype} + + % + % 增加一个控制是否根据页码重设脚注数字标号的选项 + % 20190422,v1,0r,hzz + \newtoggle{bbx:gbfnperpage} + \DeclareBibliographyOption{gbfnperpage}[false]{% + \settoggle{bbx:gbfnperpage}{#1}} + \ExecuteBibliographyOptions{gbfnperpage} + + % + % 增加一个选项,用于控制是否实现GB/T 7714-2015标准的脚注文献表 + % 20190203,v1.0p,hzz + % 原理方法:默认做patch,文献引用带圈上标数字表示,脚注中的文献用带圈非上标数字做标签 + % 当前面的脚注中已经存在当前文献,那么当前文献内容不再输出而用同(4)这样的方式 + % 需要注意的是由于小页环境和表格中的脚注本身的问题,可能会有一些问题 + \DeclareBibliographyOption{gbfootbib}[false]{% + \ifstrequal{#1}{false}{}{\execgbfootbib}} + \ExecuteBibliographyOptions{gbfootbib} + + %% + \newlength{\footbibmargin} + \newlength{\footbiblabelsep} + \setlength{\footbibmargin}{1em}%脚注的段落左侧缩进距离 + \setlength{\footbiblabelsep}{0.5em}%脚注中标记号与脚注段落的间距 + \def\execgbfootbib% + {% + %开启引用跟踪计数器,为使用\ifciteseen等测试命令 + \ExecuteBibliographyOptions{citetracker=true} + % + %利用footmisc宏包来实现脚注文献的悬挂对齐 + \AtEndPreamble{ + \@ifclassloaded{beamer}{}{ + %beamer类因为其特殊性,为避免冲突不调footmisc。 + %同时footmisc与hyperref宏包也不兼容,所以使用footmisc时会破坏脚注的超链接 + %如果要实现超链接可以将下句注释掉,这里留着主要是实现悬挂对齐。 + %\PassOptionsToPackage{perpage,hang}{footmisc}% + %\RequirePackage{footmisc}% + + %重新实现脚注的根据单页重设脚注号码 + %重新实现脚注的悬挂对齐问题,不再使用footmisc,直接从latex核心代码和hyperref代码进行修改 + %v1.0q 20190317 hzz + %v1.0r 20190422 hzz 根据gbfnperpage选项设置 + \iftoggle{bbx:gbfnperpage}% + {\@addtoreset{footnote}{page}}{}%重设计数器 + + \@ifpackageloaded{hyperref}{%加载hyperref则对\H@@footnotetext做重定义 + \long\def\H@@footnotetext##1{\insert\footins{% + \reset@font\footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox \floatingpenalty \@MM + \hsize\columnwidth \@parboxrestore + \protected@edef\@currentlabel{% + \csname p@footnote\endcsname\@thefnmark + }% + \color@begingroup + \leftskip \footbibmargin%增加的左侧缩进 + \@makefntext{% + \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox% + }% + \color@endgroup}}% + + \long\def\H@@mpfootnotetext##1{% + \global\setbox\@mpfootins\vbox{% + \unvbox\@mpfootins + \reset@font\footnotesize + \hsize\columnwidth + \@parboxrestore + \protected@edef\@currentlabel + {\csname p@mpfootnote\endcsname\@thefnmark}% + \leftskip \footbibmargin%增加的左侧缩进 + \color@begingroup + \@makefntext{% + \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox}% + \color@endgroup}} + }{%否则对latex核心代码中的\@footnotetext做重定义 + \long\def\@footnotetext##1{\insert\footins{% + \reset@font\footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox \floatingpenalty \@MM + \hsize\columnwidth \@parboxrestore + \protected@edef\@currentlabel{% + \csname p@footnote\endcsname\@thefnmark + }% + \color@begingroup + \leftskip \footbibmargin%增加的左侧缩进 + \@makefntext{% + \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox% + }% + \color@endgroup}}% + + \long\def\@mpfootnotetext##1{% + \global\setbox\@mpfootins\vbox{% + \unvbox\@mpfootins + \reset@font\footnotesize + \hsize\columnwidth + \@parboxrestore + \protected@edef\@currentlabel + {\csname p@mpfootnote\endcsname\@thefnmark}% + \leftskip \footbibmargin%增加的左侧缩进 + \color@begingroup + \@makefntext{% + \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox}% + \color@endgroup}} + } + + \long\def\@makefntext##1{%增加了脚注标记与正文的间隔 + \parindent 1em\noindent \hb@xt@ 0em{\hss \@makefnmark\makebox[\footbiblabelsep]{}}##1} + + } + + % + %使脚注标记加圈并设置数字的字体为tiny,不使用修改thefootnote的方式 + \def\@makefnmark{\hbox{\@textsuperscript{\textcircled{\tiny\@thefnmark}}}} + %做patch使得脚注内容中的脚注数字标签不上标 + \pretocmd{\@makefntext}{% + \def\@makefnmark{% + \hbox{\textcircled{\tiny\@thefnmark}}% + }% + }{}{} + } + + % + %判断当前文献是否已经引用过且是做的footfullcite(即已经作为脚注输出文献内容) + %记录首次输出时的脚注号码,用于后面再次引用该文献时的输出,比如同(4)。 + %v1.0q 20190309 区分使脚注标注适应minipage中的情况 + \newbibmacro*{citesavefn}{% + \ifciteseen%当被引用过为true + {\ifcsdef{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}%当已经定义过脚注序号信息 + {\csgdef{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}{% + \str@sameentry\gdef\@thefnmark{\csuse{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}}% + \@makefnmark% + }}% + {\csxdef{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}{% + \ifcsstring{@mpfn}{mpfootnote}{\@alph\c@mpfootnote}{\thefootnote}% + }}% + }% + {\csxdef{sec\arabic{refsection}\arabic{page}et\thefield{entrykey}}{% + \ifcsstring{@mpfn}{mpfootnote}{\@alph\c@mpfootnote}{\thefootnote}% + %判断在minipage中比较麻烦,这里使用\@mpfn的定义进行判断 + }}% + } + + % + %重定义\footfullcite使完成gb7714-2015的脚注文献要求 + \DeclareCiteCommand{\footfullcite}[\mkbibfootnote]% + {\defcounter{maxnames}{\blx@maxbibnames}%局部定义maxnames和minnames计数器 + \defcounter{minnames}{\blx@minbibnames}%使footfullcite内的作者输出与正文文献表中的一致。 + \usebibmacro{prenote}% + \renewbibmacro*{postnote}{% + \iffieldundef{postnote}% + {}{\setunit{\addcolon\addspace}\printtext{\thefield{postnote}}}}%由于ay样式中没有修改postnote域,此处因为格式需要不使用默认域格式 + }% + {\usebibmacro{citesavefn}% + \ifcsdef{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}% + {\csuse{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}}%\nopunct + {\usedriver{\DeclareNameAlias{sortname}{default}}{\thefield{entrytype}}}% + }% + {\multicitedelim}% + {\usebibmacro{postnote}} + + } + + % + % 增加一个选项,用于控制gb7714的使用范围,即英文文献和中文文献使用不同的样式 + % 20180814,v1.0m,hzz + % 原理方法: + % 只为兼容性考虑不做任何处理 + \DeclareBibliographyOption{gbstyle}[true]{%biblatex低版本 + } + + % + % 增加一个控制是否输出文献类型和载体标识的选项 + % + % 原理方法: + % 对于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时可以使用GBK编码。 + % v1.0k, 2018.05.08, by hzz + % + % 原理方法:将需要输出的中文字符串用命令形式表示存储,采用utf8编码时采用bbx文档 + % 内的定义即是utf8编码的中文字符串,但tex源文件是gbk编码时,利用gb7714-2015-gbk.def + % 文档内的gbk编码的字符串覆盖。这种覆盖只能在宏包末尾加载时成功实现,所以使用 + % AtEndOfPackage。该解决思路源自biblatex-caspervector宏包。 + % 另外注意: + % gbk编码的tex文档,利用pdflatex/latex能正确编译,利用xelatex能编译,但中文显示乱码 + % 在源文档前面增加 XeTeX 原语:\XeTeXinputencoding "GBK" 后,显示正常 + % utf-8编码的tex文档,利用xelatex能正确编译,而pdflatex/latex不能编译。 + \newtoggle{bbx:codegbk} + \DeclareBibliographyOption{gbcodegbk}[false]{% + \settoggle{bbx:codegbk}{#1}} + \ExecuteBibliographyOptions{gbcodegbk} + + \def\str@bibliography{参考文献} + \def\str@references{参考文献} + \def\str@bytranslator{译} + \def\str@andotherscn{等} + \def\str@backrefpage{引用页} + \def\str@backrefpages{引用页} + \def\str@noaddress{出版地不详} + \def\str@nopublisher{出版者不详} + \def\str@edition{版} + \def\str@volumecn{卷} + \def\str@numbercn{册} + \def\str@serialcn{第} + \def\str@sameentry{同} + \def\str@incn{见} + \def\str@mathesiscn{硕士学位论文} + \def\str@phdthesiscn{博士学位论文} + \def\str@editorcn{主编} + + \AtEndOfPackage{% + \iftoggle{bbx:codegbk}{% + \ExecuteBibliographyOptions{texencoding = GBK} + \input{gb7714-2015-gbk.def} + }{}} + + % + % 增加一个严格按GB/T 7714-2015给出著录格式控制域的输出的选项 + % v1.0k, 2018.05.08, by hzz + % + % 原理方法: + % 默认设置该选项为真,进而不输出GB/T 7714-2015中没有的域的信息 + % 这样可以避免因为bib文件带有多余的域的信息的输出,比如因为bibtex样式 + % 可能需要用于中英文判断的language域的信息。 + \newtoggle{bbx:gbstrict} + \DeclareBibliographyOption{gbstrict}[true]{% + \settoggle{bbx:gbstrict}{#1}} + \ExecuteBibliographyOptions{gbstrict} + + % + % 增加一个控制标题域超链接设置的选项 + % v1.0k, 2018.05.24, by hzz + % + % 原理方法: + % 利用标题域格式来实现,默认设置该选项为false,不做超链接。 + % 设置为true,则标题设置超链接 + \newtoggle{bbx:titlelink} + \DeclareBibliographyOption{gbtitlelink}[false]{% + \settoggle{bbx:titlelink}{#1}} + \ExecuteBibliographyOptions{gbtitlelink} + + % + % 增加一个控制参考文献标题是否能够被ctex宏包设置的选项 + % v1.0l, 2018.07.02, by hzz + % + % 原理方法: + % 重定义biblatex的宏,去除使用本地化字符串的方式,是的可以利用ctexset进行设置 + \newtoggle{bbx:ctexset} + \DeclareBibliographyOption{gbctexset}[true]{% + \settoggle{bbx:ctexset}{#1}} + \ExecuteBibliographyOptions{gbctexset} + + \AtEndOfPackage{% + \iftoggle{bbx:ctexset}{% + \def\blx@defbibstrings#1#2{% + \def\do##1{\csundef{abx@lstr@##1}\csundef{abx@sstr@##1}}% + \abx@dostrings + \csuse{abx@strings@#1}% + \setkeys{blx@lbx}{#2}% + \let\do\blx@defbibstrings@i + \csxdef{abx@strings@#1}{\abx@dostrings}% + } + }{}} + + + + % + % 增加一个恢复域格式为标准样式的控制选项 + % v1.0k, 2018.05.15, by hzz + % + % 原理方法: + % 默认设置该选项为false,采用国标要求的域格式输出相关域 + % 当设置该选项为true时,则重新利用标准样式的域格式输出相关的域 + \newtoggle{bbx:gbfieldstd} + \DeclareBibliographyOption{gbfieldstd}[false]{% + \settoggle{bbx:gbfieldstd}{#1}% + \ifstrequal{#1}{false}{}{\execgbfdfmtstd}% + } + \ExecuteBibliographyOptions{gbfieldstd} + + % + % 增加一个出版项自动处理控制选项,当true时使用出版者不详等信息补充缺失的出版信息。 + % + \newtoggle{bbx:gbpub} + \DeclareBibliographyOption{gbpub}[true]{% + %\settoggle{bbx:gbpub}{#1} %或采用下面这一句 + \ifstrequal{#1}{false}{\togglefalse{bbx:gbpub}}{\toggletrue{bbx:gbpub}}} + \ExecuteBibliographyOptions{gbpub} + + % + % 增加控制析出文献来源前的标点符号//输出的选项 + % v1.0k, 2018.04.20,added in by hzz + \newtoggle{bbx:gbpunctin} + \DeclareBibliographyOption{gbpunctin}[true]{% + \settoggle{bbx:gbpunctin}{#1}} + \ExecuteBibliographyOptions{gbpunctin} + + + % + % 增加一个处理佚名或noauthor的控制选项 + % + % 原理方法:顺序编码制中与作者年制都使用 + \DeclareBibliographyOption{gbnoauthor}[true]{% + \ifstrequal{#1}{false}{}{\dealnoathor}} + %\ExecuteBibliographyOptions{gbnoauthor=true}%对于需要展开较早(展开层级优先)的选项,这一执行无效,只能用宏包加载时给出的选项。 + + + + + % + % 选项设置 + % + \ExecuteBibliographyOptions{ + sorting=none, + useprefix=true, %名字的信息包括前缀 + date = year, %日期仅写到年 + maxbibnames = 3,%设置名字最大数量 + minbibnames = 3, %设置缩减后的名字最小数量 + maxitems = 1,%设置列表最大数量 + minitems = 1, %设置缩减后的列表最小数量 + isbn=false, + sortlocale=zh__pinyin,%zh__big5han,%zh__stroke,%zh__gb2312han,%zh__pinyin, + } + + % + %为日期相关选项增加选项值gb7714-2015 + % + \csdef{mkdaterangegb7714-2015}#1{% + \begingroup + \blx@metadateinfo{#1}% + \iffieldundef{#1year} + {} + {\printtext[#1date]{% + \blx@gbdate{#1}{}}}% + \endgroup} + + \newrobustcmd*{\blx@gbdate}[3][]{% + \dateeraprintpre{#2#3year}% + \blx@imc@forcezerosy{\thefield{#2#3year}}\ifblank{#1}{}{\printfield{#1}}% + \iffieldundef{#2#3month}{}{\hyphen\blx@imc@forcezerosmdt{\thefield{#2#3month}}}% + \iffieldundef{#2#3day}{}{\hyphen\blx@imc@forcezerosmdt{\thefield{#2#3day}}}} + + + %为姓名格式选择增加的计数器 + \newcounter{gbnamefmtcase} + \def\thegbnamefmtcase{\the\c@gbnamefmtcase} + %为数字标签格式选择增加的计数器/命令 + \newcommand{\mkgbnumlabel}[1]{\mkbibbrackets{#1}} + \def\gbbiblabelopt@bracket{\renewcommand{\mkgbnumlabel}[1]{\mkbibbrackets{##1}}} + \def\gbbiblabelopt@parens{\renewcommand{\mkgbnumlabel}[1]{\mkbibparens{##1}}} + \def\gbbiblabelopt@dot{\renewcommand{\mkgbnumlabel}[1]{##1\adddot}} + \def\gbbiblabelopt@plain{\renewcommand{\mkgbnumlabel}[1]{##1}} + \def\gbbiblabelopt@box{\renewcommand{\mkgbnumlabel}[1]{\framebox{##1}}} + \def\gbbiblabelopt@circle{\renewcommand{\mkgbnumlabel}[1]{\textcircled{##1}}} + %为文献表中数字标签对齐方式选择增加的计数器/命令 + \newcounter{gbalignlabel} + \def\thegbalignlabel{\the\c@gbalignlabel} + %为引用标签标注/文献表中本地化字符串中英文选择增加的计数器/命令 + \newcounter{gbcitelocalcase} + \newcounter{gbbiblocalcase} + \def\thegbcitelocalcase{\the\c@gbcitelocalcase} + \def\thegbbiblocalcase{\the\c@gbbiblocalcase} + + + % + % 增加不同语言排序的切换选项,numeric样式,不使用该选项 + % gblanorder=chineseahead的顺序为cn,jp,kr,en,fr,ru + % gblanorder=englishahead的顺序为en,fr,ru,cn,jp,kr + % gblanorder=cn;en;ru;fr;jp;kr的顺序为指定的cn;en;ru;fr;jp;kr,自定义内容可以随意写以分号分隔 + % v1.0q,20190307,hzz + % + \DeclareBibliographyOption[string]{gblanorder}[chineseahead]{% + \ifstrequal{#1}{chineseahead}%%中文在前的顺序 + {\gdef\lancnorder{1}\gdef\lanjporder{2}\gdef\lankrorder{3}% + \gdef\lanenorder{4}\gdef\lanfrorder{5}\gdef\lanruorder{6}}% + {% + \ifstrequal{#1}{englishahead}% + {\execlanodeah\dealsortlan}% + {\execlanodudf{#1}\dealsortlan}% + }% + } + \ExecuteBibliographyOptions{gblanorder} + + \def\execlanodeah{%中文在后的顺序 + \gdef\lancnorder{4} + \gdef\lanjporder{5} + \gdef\lankrorder{6} + \gdef\lanenorder{1} + \gdef\lanfrorder{2} + \gdef\lanruorder{3}} + + \newcounter{lanordernum} + \newcommand{\execlanodudf}[1]{%like:cn;en;ru;fr;jp;kr + \setcounter{lanordernum}{0} + \DeclareListParser{\parsinglanorder}{;} + \renewcommand*{\do}[1]{\stepcounter{lanordernum}\csxdef{lan##1order}{\thelanordernum}} + \parsinglanorder{#1} + } + + % + % 增加本地化字符串的中英文切换选项 + % gbcitelocal指标注中的本地化字符串 + % gbbiblocal 指文献表中的本地化字符串 + % gblocal 指设置文献表和标注中的本地化字符串 + % v1.0o,20190103,hzz + % + \DeclareBibliographyOption[string]{gbcitelocal}[gb7714-2015]{% + \ifstrequal{#1}{gb7714-2015}{\setcounter{gbcitelocalcase}{0}}{}% + \ifstrequal{#1}{chinese}{\setcounter{gbcitelocalcase}{1}}{}% + \ifstrequal{#1}{english}{\setcounter{gbcitelocalcase}{2}}{}% + } + \ExecuteBibliographyOptions{gbcitelocal} + + \DeclareBibliographyOption[string]{gbbiblocal}[gb7714-2015]{% + \ifstrequal{#1}{gb7714-2015}{\setcounter{gbbiblocalcase}{0}}{}% + \ifstrequal{#1}{chinese}{\setcounter{gbbiblocalcase}{1}}{}% + \ifstrequal{#1}{english}{\setcounter{gbbiblocalcase}{2}}{}% + } + \ExecuteBibliographyOptions{gbbiblocal} + + \DeclareBibliographyOption[string]{gblocal}[gb7714-2015]{% + \ExecuteBibliographyOptions{gbbiblocal=#1}% + \ExecuteBibliographyOptions{gbcitelocal=#1}% + } + %\ExecuteBibliographyOptions{gblocal} %默认值已经通过两个相关选项设置 + + % + % 增加序号标签格式处理选项 + % v1.0l,20180623,hzz + % + \DeclareBibliographyOption[string]{gbbiblabel}[bracket]{% + \csuse{gbbiblabelopt@#1} + } + \ExecuteBibliographyOptions{gbbiblabel} + + % + % 增加姓名大小写格式处理选项 + % + \DeclareBibliographyOption[string]{gbnamefmt}[uppercase]{% + \ifstrequal{#1}{uppercase}{\setcounter{gbnamefmtcase}{0}}{}% + \ifstrequal{#1}{lowercase}{\setcounter{gbnamefmtcase}{1}}{}% + \ifstrequal{#1}{givenahead}{\setcounter{gbnamefmtcase}{2}}{}%given-family + \ifstrequal{#1}{familyahead}{\setcounter{gbnamefmtcase}{3}}{} + \ifstrequal{#1}{pinyin}{\setcounter{gbnamefmtcase}{4}}{}%family-given + \ifstrequal{#1}{reverseorder}{\setcounter{gbnamefmtcase}{5}}{}%family-given/given-family + } + \ExecuteBibliographyOptions{gbnamefmt} + + % + % 增加标签对齐选项 + % + % right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 + \DeclareBibliographyOption[string]{gbalign}[right]{% + \ifstrequal{#1}{right}{\setcounter{gbalignlabel}{0}}{} + \ifstrequal{#1}{left}{\setcounter{gbalignlabel}{1}}{} + \ifstrequal{#1}{center}{\setcounter{gbalignlabel}{2}}{} + \ifstrequal{#1}{gb7714-2015}{\setaligngbstyle}{} + } + + \ExecuteBibliographyOptions{ + giveninits=true, + urldate =gb7714-2015, %iso,iso8601,edtf + eventdate =gb7714-2015, + labeldateparts=true, + } + +% +% 针对3.13<=biblatex版本的选项设置,因为内容有限,所以不做版本区分,而用时间直接判断 +% +% 解决国标中“王临慧, 2010a.”和“王临慧, 等, 2010b.”的问题 +% 在没有这个选项之前无法加上a和b +% v1.0s,20190828 +\@ifpackagelater{biblatex}{2019/08/16}{% + \ExecuteBibliographyOptions{% + nohashothers=true}}{} + +%===================================================================== +% 设置本地化字符串 +%===================================================================== + % + % 新建当地化字符串,用来记录“等”字符、“和”字符 + % + \NewBibliographyString{andotherscn} + \NewBibliographyString{andothersincitecn} + \NewBibliographyString{andothersincite} + \NewBibliographyString{andcn} + \NewBibliographyString{andothersjp} + \NewBibliographyString{andotherskr} + \NewBibliographyString{andjp} + \NewBibliographyString{andkr} + \NewBibliographyString{andincitecn} + \NewBibliographyString{andincite} + \NewBibliographyString{volumecn} + \NewBibliographyString{numbercn} + \NewBibliographyString{serialcn} + \NewBibliographyString{incn} + \NewBibliographyString{mathesiscn} + \NewBibliographyString{phdthesiscn} + \NewBibliographyString{editorcn} + \NewBibliographyString{editorscn} + + + + % + % 修改一些当地化字符串 + % + % 原理方法:直接利用当地化格式english修改出一些中文的格式,具体修改内容参考english.lbx文件 + % 当然也可以增加比如上面定义的andotherscn + % 注意:在lbx文件和bbx文件中定义本地字符串的不同语法,两个参数和一个参数的区别 + + \DefineBibliographyStrings{english}{ + bibliography = {\str@bibliography}, + references = {\str@references}, + bytranslator= {\str@bytranslator},%\addperiod,%将trans. by 改成 译\addcomma\ + and = {\addcomma},%将第2和3人名间的and符号改成逗号,用\finalnamedelim命令也可以定义,参见3.9.1节 + andcn = {\addcomma},%and本地化字符串的中文对应词 + andincitecn = {\addcomma},%将标注中的分开,便于与文献表中的区分 + andincite = {\addcomma}, + %andothers = {et al.},%将超过3个人名的省略,et al.改成为 等 + andotherscn = {\str@andotherscn},%将超过3个人名的省略,et al.改成为 等 + andothersincitecn={\str@andotherscn},%将标注中的分开,便于与文献表中的区分 + andothersincite={et al\adddot}, + backrefpage = {\str@backrefpage:}, + backrefpages = {\str@backrefpages:}, + in={in\intitlepunct}, + volumecn={\str@volumecn}, + numbercn={\str@numbercn}, + serialcn={\str@serialcn}, + andothersjp={他}, + andotherskr={외}, + andjp={和}, + andkr={和}, + incn={\str@incn\addcolon\addspace}, + mathesiscn={\str@mathesiscn}, + phdthesiscn={\str@phdthesiscn}, + editorscn={\str@editorcn}, + editorcn={\str@editorcn}, +} + + % + % 增加两个命令用于临时的局部的修改本地化字符串 + % 其中\setlocalbibstring修改缩写字符串,setlocalbiblstring修改长字符串 + % 注意使用时因为是局部修改,因此要将其与需要修改的引用命令放在一个编组符号内 + % v1.0t,hzz,20190525 + \newcommand{\setlocalbibstring}[2]{% + \csdef{abx@sstr@#1}{#2}} + \newcommand{\setlocalbiblstring}[2]{% + \csdef{abx@lstr@#1}{#2}} + +%===================================================================== +% 动态数据修改 +%===================================================================== +% +% 各层次的数据映射和动态修改 +% +% 原理方法: +% 1. 进行语言包括中英文判断,并设置和记录,比如记录到userf,usere中 +% 2. 增加文献标识符如[M],[J]等,对一些容易混淆的域进行设置以增强兼容性 +% 3. \DeclareSourcemap命令对于biblatex3.11以下版本只能出现一次,3.11版开始支持多个 +% 4. \DeclarestyleSourcemap在biblatex v3.7版开始可以支持出现多次 +% 5. 把作者和译者信息准确的记录到userf,usere中,用于后面判断是否是cjk字符。 +% 注意:这里用userf,usere而不是namee,namef,是因为只有把name列表转成域,才能有效读取姓名中的字符, +% 如果用namee,namef,name信息会自动解析,所以就不能为cjk判断提供需要的信息 +% +% 不同的文献类型使用相同的驱动输出可以有5种方法: +% 1. 是数据源层的映射,将其它类型转换为某一要使用驱动的类型 +% 2. 是样式层映射,也是将其它类型转换为某一要使用驱动的类型 +% 3. 是驱动层映射,也是将其它类型转换为某一要使用驱动的类型 +% 4. 定义驱动类型别名DeclareBibliographyAlias,将其它类型定义为某一要使用驱动的类型的别名 +% 驱动别名定义本质上是做了驱动层映射 +% 5. 直接定义不同的类型的驱动,但驱动内容相同。 +% +% 关于数据映射和驱动使用的考虑如下: +% 1. 为避免利用biber输出bib文件时的数据变动,尽量不在数据源层映射做类型转换 +% 2. 为减少代码量,尽量少做内容相同的不同类型驱动 +% 3. 因此类型相关的处理主要在样式层映射、驱动层映射、驱动别名 +% 4. 由于biblatex默认做的驱动别名处理可能增加一些信息比如masterthesis转thesis时增加的type +% 可以在样式层映射做某些需要避免这种默认处置的转换 +% 5. 当没有避免默认行为的需求时,全部采用驱动别名的方式处理,等价于驱动层的映射 +% +% 文献类型和驱动考虑如下: +% 1. 连续出版物及析出文献有其特殊性,因此考虑两类periodical和article +% newpaper映射为article,并以note域做区分特殊处理 +% 2. 专著和专著中的析出文献是主要的类型,因此考虑book和inbook +% standard映射为book或inbook,并以note域做区分特殊处理 +% collection和proceedings基本与book类似,因此做book驱动别名处理 +% incollection和inproceedings基本与inbook类似,因此做inbook驱动别名处理 +% 3. 专利类型有其特殊性,考虑patent类型 +% 4. 电子资源类型有其特殊性,考虑online类型 +% 5. 报告类型与book有点类似,出版项处理与book一样,但有时又要有修改和更新日期 +% 因此考虑用一种类型来输出,使用report类型 +% 6. 手册/学位论文等类型与book有点类似,但对于出版项处理时,有缺省时,直接省略, +% 同时有version和edition的区别,因此考虑用一种类型来输出,使用manual类型 +% 7. 包括报告,学位论文在内的其它所有的类型,都做一个判断,当没有出版项时, +% 且存在网址信息时,将其转换为online类型输出,否则都做为manual类型输出。 +% 8. 备选类型misc当存在网址时直接转换为online,由于howpublished域可用于描述 +% 更多的信息,因此不存在网址时,独立做一个备选格式 +% 9. 出版项主要以如下方式处理: +% (a) location+institution+date 仅用于连续出版物 +% (b)publisher+location+date 用于需要完整输出出版项的类型,比如book,collection,proceedings,in*,report +% (c)institution+location+date 用于出版项缺失时不输出的类型,包括manual,thesis,archive等其他类型 +% (d)printlist{insitution} 用于电子资源,仅输出出版者或组织,为数据映射方便,本来默认的organization域转换为用insitution输出。 +% (e) 不输出,主要用于连续出版物析出的文献 +% 10. 日期以如下方式处理: +% date 由于存在biblatex选项,因此通过选项控制,数据源为date解析数据或year +% urldate 由于存在biblatex选项,因此通过选项控制,输出到日,且用[]包围,数据源为urldate +% newsdate 用于公告日期,公开日期或新闻日期,输出到日,但无包围符号,数据源为date +% modifydate 用于更新或修改日期,输出到日,且用()包围,数据源为date或enddate或eventdate + + +\DeclareSourcemap{ +\maps[datatype=bibtex]{% + \map{%当没有作者时将editor转成author + \pernottype{inbook}%因为in系列中editor可能用来表示bookauthor,所以排除 + \pernottype{inproceedings} + \pernottype{incollection} + \pernottype{periodical}%因为peridical直接使用editor,所以排除 + %注意notfield在低版本biblatex中没有 + %\step[notfield=author,final]%当author不存在,将editor复制给author + \step[fieldsource=editor,fieldtarget=author]%并删除editor + } + \map{%当没有作者时将translator转成author + \pernottype{inbook} + \pernottype{inproceedings} + \pernottype{incollection} + %\step[notfield=author,final]%当author不存在,将translator复制给author + \step[fieldsource=translator,fieldtarget=author]%并删除translator + } + \map{%让address和location同步,biblatex中address是location的别名 + %因此输出的时候只有location信息,但处理过程中是可以存在address的。 + %\step[notfield=address,final] + \step[fieldsource=location,final] + \step[fieldset=address,origfieldval] + } + \map{%让address和location同步 + %\step[notfield=location,final] + \step[fieldsource=address,final] + \step[fieldset=location,origfieldval] + } + \map{%处理在bib文件用mark标记文献类型标识符的情况 + \step[fieldsource=mark,final] + \step[fieldset=usera, origfieldval] + } + \map{%处理在bib文件中直接给出文献的姓名格式为lowercase的情况 + \step[fieldsource=nameformat,match=lowercase,final] + \step[fieldset=namefmtid,fieldvalue={1}] + } + \map{%处理在bib文件中直接给出文献的姓名格式为givenahead的情况 + \step[fieldsource=nameformat,match=givenahead,final] + \step[fieldset=namefmtid,fieldvalue={2}] + } + \map{%处理在bib文件中直接给出文献的姓名格式为familyahead的情况 + \step[fieldsource=nameformat,match=familyahead,final] + \step[fieldset=namefmtid,fieldvalue={3}] + } + \map{%处理在bib文件中直接给出文献的姓名格式为pinyin的情况 + \step[fieldsource=nameformat,match=pinyin,final] + \step[fieldset=namefmtid,fieldvalue={4}] + } + \map{%根据article确定文献类型标识符 + \pertype{article} + \step[fieldset=usera, fieldvalue={J}] + } + \map{%根据periodical确定文献类型标识符 + \pertype{periodical} + \step[fieldset=usera, fieldvalue={J}] + \step[fieldsource=author] %有时会把author和editor混淆,处理后使用editor + \step[fieldset=editor, origfieldval] + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{%根据增加一个新闻报纸的类型newspaper确定文献类型标识符 + \pertype{newspaper} + \step[fieldset=usera, fieldvalue={N}] + \step[fieldset=note, fieldvalue=news]%因为没有专门的驱动,记录note方便映射为article后判断 + } + \map{%对应增加的一个数据库类型database确定文献类型标识符 + \pertype{database} + \step[fieldset=usera, fieldvalue={DB}] + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{%对应增加的一个数据集类型dataset确定文献类型标识符 + \pertype{dataset} + \step[fieldset=usera, fieldvalue={DS}]% + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{%对应增加的一个软件类型software确定文献类型标识符 + \pertype{software} + \step[fieldset=usera, fieldvalue={CP}] + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{%对应增加的一个舆图类型map确定文献类型标识符 + \pertype{map} + \step[fieldset=usera, fieldvalue={CM}]% + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{%对应增加的一个档案类型archive确定文献类型标识符 + \pertype{archive} + \step[fieldset=usera, fieldvalue={A}] + \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{%因为misc类型本身就是没有类型,而不像其它文献有明确的类型,所以 + %当misc类型带有网址时,直接将其转换为online类型 + \pertype{misc} + \step[fieldsource=url,final] + \step[typesource=misc,typetarget=online] + } + \map{%对应增加的一个备选类型misc确定文献类型标识符 + \pertype{misc} + \step[fieldset=usera, fieldvalue={Z}]% + } + \map{ + \pertype{book} + \pertype{inbook} + \step[fieldset=usera, fieldvalue={M}] + \step[fieldsource=version] %有时会把version和edition混淆,处理后直接用edition + \step[fieldset=edition, origfieldval] + } + \map{%兼容老的standard类型,确定文献类型标识符 + \pertype{standard} + \step[fieldset=usera, fieldvalue={S}] + \step[fieldset=note, fieldvalue=standard]%因为没有专门的驱动,记录note方便映射为book和inbook后判断 + } + \map{ + \pertype{patent} + \step[fieldset=usera, fieldvalue={P}] + } + \map{ + \pertype{inproceedings} + \pertype{conference}%兼容老的conference类型 + \step[fieldset=usera, fieldvalue={C}] + \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher + \step[fieldset=publisher, origfieldval] + } + \map{ + \pertype{proceedings} + \step[fieldset=usera, fieldvalue={C}] + \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher + \step[fieldset=publisher, origfieldval] + } + \map{ + \pertype{incollection} + \step[fieldset=usera, fieldvalue={G}] + \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher + \step[fieldset=publisher, origfieldval] + } + \map{ + \pertype{collection} + \step[fieldset=usera, fieldvalue={G}] + \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher + \step[fieldset=publisher, origfieldval] + } + \map{ + \pertype{report} + \pertype{techreport}%兼容老的techreport类型 + \step[fieldset=usera, fieldvalue={R}] + \step[fieldsource=institution]%有时会把publisher和institution混淆,处理后使用publisher + \step[fieldset=publisher, origfieldval] + } + \map{ + \pertype{thesis} + \pertype{mastersthesis}%兼容老的mastersthesis和phdthesis类型 + \pertype{phdthesis} + \step[fieldset=usera, fieldvalue={D}] + \step[fieldsource=publisher]%有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + } + \map{ + \pertype{online} + \pertype{electronic}%兼容老的electronic类型 + \pertype{www}%兼容老的www类型 + \step[fieldset=usera, fieldvalue={EB}] + \step[fieldsource=publisher]%有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval]%因为online的出版项处理类似手册 + \step[fieldsource=organization]%有时会把organization和institution混淆,处理后使用institution,以增强兼容性 + \step[fieldset=institution, origfieldval] + } + \map{ + \pertype{manual} + \step[fieldset=usera, fieldvalue={A}] + \step[fieldsource=edition]%有时会把version和edition混淆,处理后使用version + \step[fieldset=version, origfieldval] + \step[fieldsource=publisher]%有时会把publisher和institution混淆,处理后使用institution + \step[fieldset=institution, origfieldval] + \step[fieldsource=organization]%有时会把organization和institution混淆,处理后使用institution,以增强兼容性 + \step[fieldset=institution, origfieldval] + } + \map{ + \pertype{unpublished} + \step[fieldset=usera, fieldvalue={Z}] + } + \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 + \step[fieldsource={author}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] + }% + \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 + \step[fieldsource={editor}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] + }% + \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 + \step[fieldsource={translator}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] + }% + \map[overwrite]{%用于处理zotero从cnki导出中文文献姓名中存在逗号的情况 + \step[fieldsource={bookauthor}, match=\regexp{([\x{2FF0}-\x{9FA5}])\,\s*}, replace=\regexp{$1}] + }% + \map{%处理一些用year表示date的情况 + %这样处理将会设置date域,并使得labeldatesource变为空,因为date的前缀为空(如果是urldate,那么labeldatesource就是url)。 + %同时date域会被biblatex自动解析为year,month,day,并且覆盖原来的year信息 + \step[fieldsource=year] + \step[fieldset=date, origfieldval] + } + \map{%将entrykey放入keywords中用于后期使用 + \step[fieldsource=entrykey] + \step[fieldset=keywords, origfieldval] + } + \map{\step[fieldsource=title,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF + \step[fieldset=userd,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 + } + \map{% + \step[fieldsource=title,match=\regexp{[\x{0400}-\x{052F}]},final] + \step[fieldset=userd,fieldvalue={russian}]%俄语 + } + \map{% + \step[fieldsource=title,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] + \step[fieldset=userd,fieldvalue={japanese}]%日语 + } %确定形式后可增加类似andotherscn这样的本地化字符串处理 + \map{% + \step[fieldsource=title,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] + \step[fieldset=userd,fieldvalue={korean}]%韩语 + } + \map{%文献题名的中文判断,将信息保存到userd中,避免因为标签生成原因导致title域被清除而产生问题 + \step[fieldsource=title, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]% + \step[fieldset=userd, fieldvalue={chinese}] + } + \map{%将没有设置userd,且存在title域的默认设置为英文 + \step[fieldsource=title,final] + \step[fieldset=userd,fieldvalue={english}] + } + \map{\step[fieldsource=author,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF + \step[fieldset=userf,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 + } + \map{% + \step[fieldsource=author,match=\regexp{[\x{0400}-\x{052F}]},final] + \step[fieldset=userf,fieldvalue={russian}]%俄语 + } + \map{% + \step[fieldsource=author,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] + \step[fieldset=userf,fieldvalue={japanese}]%日语 + } %确定形式后可增加类似andotherscn这样的本地化字符串处理 + \map{% + \step[fieldsource=author,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] + \step[fieldset=userf,fieldvalue={korean}]%韩语 + } + \map{%作者的中文判断 + \step[fieldsource=author, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] + \step[fieldset=userf, fieldvalue={chinese}] + } + \map{%将没有设置userf,且存在author域的默认设置为英文 + \step[fieldsource=author,final] + \step[fieldset=userf,fieldvalue={english}] + } + \map{\step[fieldsource=translator,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF + \step[fieldset=usere,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 + } + \map{% + \step[fieldsource=translator,match=\regexp{[\x{0400}-\x{052F}]},final] + \step[fieldset=usere,fieldvalue={russian}]%俄语 + } + \map{% + \step[fieldsource=translator,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] + \step[fieldset=usere,fieldvalue={japanese}]%日语 + } %确定形式后可增加类似andotherscn这样的本地化字符串处理 + \map{% + \step[fieldsource=translator,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] + \step[fieldset=usere,fieldvalue={korean}]%韩语 + } + \map{%译者的中文判断 + \step[fieldsource=translator, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] + \step[fieldset=usere, fieldvalue={chinese}] + } + \map{%将没有设置usere,且存在translator域的默认设置为英文 + \step[fieldsource=translator,final] + \step[fieldset=usere,fieldvalue={english}] + } + \map{\step[fieldsource=editor,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF + \step[fieldset=userc,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 + } + \map{% + \step[fieldsource=editor,match=\regexp{[\x{0400}-\x{052F}]},final] + \step[fieldset=userc,fieldvalue={russian}]%俄语 + } + \map{% + \step[fieldsource=editor,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] + \step[fieldset=userc,fieldvalue={japanese}]%日语 + } %确定形式后可增加类似andotherscn这样的本地化字符串处理 + \map{% + \step[fieldsource=editor,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] + \step[fieldset=userc,fieldvalue={korean}]%韩语 + } + \map{%编者的中文判断 + \step[fieldsource=editor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 + \step[fieldset=userc, fieldvalue={chinese}] + } + \map{%将没有设置userc,且存在editor域的默认设置为英文 + \step[fieldsource=editor,final] + \step[fieldset=userc,fieldvalue={english}] + } + \map{\step[fieldsource=bookauthor,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF + \step[fieldset=userb,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 + } + \map{% + \step[fieldsource=bookauthor,match=\regexp{[\x{0400}-\x{052F}]},final] + \step[fieldset=userb,fieldvalue={russian}]%俄语 + } + \map{% + \step[fieldsource=bookauthor,match=\regexp{[\x{3040}-\x{30FF}\x{31F0}-\x{31FF}]},final] + \step[fieldset=userb,fieldvalue={japanese}]%日语 + } %确定形式后可增加类似andotherscn这样的本地化字符串处理 + \map{% + \step[fieldsource=bookauthor,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] + \step[fieldset=userb,fieldvalue={korean}]%韩语 + } + \map{%编者的中文判断 + \step[fieldsource=bookauthor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 + \step[fieldset=userb, fieldvalue={chinese}] + } + \map{%将没有设置userc,且存在editor域的默认设置为英文 + \step[fieldsource=bookauthor,final] + \step[fieldset=userb,fieldvalue={english}] + } + \map{\step[fieldsource=userd,final]%userd存在则用根据标题的语言设定language + \step[fieldset=language,origfieldval]%本身language存在则不设定 + } + \map{\step[fieldsource=userf,final]%userd不存在,而userf存在则根据author的语言设定language + \step[fieldset=language,origfieldval] + }%如果没有作者和标题,那么剩下的最可能有意义的只有网址了,而网址通常是英文的,因此不用再进一步对其它域进行判断了。 + \map{%将没有设置的language设置成en,即认为不是中文的就是英文的。 + \step[fieldset=language,fieldvalue={english}] + } + \map{%一条文献的语言已经设定在language域中,由于出版项相关宏中使用userd判断, + %所以将一条文献的主体语言设定到userd中,本身前面userd已经设定,但没有处理无标题的情况, + %这里的处理等价于没有标题时,利用作者的语言设定userd,再没有作者,则默认用英文设定userd + \step[fieldsource=language] + \step[fieldset=userd,origfieldval] + } + \map{%当文献给出language域时,设置文献要使用的本地化字符串的语言 + %biblatex 3.11及以下版本仅有match是区分大小写的,而3.12版开始用matchi来区分大小,而match不区分 + %这里为兼容3.11及以下版本,所以用一个复杂一点的正则表达式 + \step[fieldsource=language,match=\regexp{(e|E)(n|N)(g|G)(l|L)(i|I)(s|S)(h|H)},final] + \step[fieldset=langid,fieldvalue={english}] + \step[fieldset=lansortorder,fieldvalue=\lanenorder] + } + \map{ + \step[fieldsource=language,match=\regexp{(r|R)(u|U)(s|S)(s|S)(i|I)(a|A)(n|N)},final] + \step[fieldset=langid,fieldvalue={russian}] + \step[fieldset=lansortorder,fieldvalue=\lanruorder] + } + \map{% + \step[fieldsource=language,match=\regexp{(f|F)(r|R)(e|E)(n|N)(c|C)(h|H)},final] + \step[fieldset=langid,fieldvalue={french}] + \step[fieldset=lansortorder,fieldvalue=\lanfrorder] + } + \map{% + \step[fieldsource=language,match=\regexp{(c|C)(h|H)(i|I)(n|N)(e|E)(s|S)(e|E)},final]%中日韩语目前都用english, + \step[fieldset=langid,fieldvalue={english}] + \step[fieldset=lansortorder,fieldvalue=\lancnorder] + } + \map{% + \step[fieldsource=language,match=\regexp{(j|J)(a|A)(p|P)(a|A)(n|N)(e|E)(s|S)(e|E)},final]%中日韩语目前都用english, + \step[fieldset=langid,fieldvalue={english}] + \step[fieldset=lansortorder,fieldvalue=\lanjporder] + } + \map{% + \step[fieldsource=language,match=\regexp{(k|K)(o|O)(r|R)(e|E)(a|A)(n|N)},final]%中日韩语目前都用english, + \step[fieldset=langid,fieldvalue={english}] + \step[fieldset=lansortorder,fieldvalue=\lankrorder] + } +} +} + + +% +% 修改输入的参考文献数据,样式层的操作 +% + \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map{%尝试未定义数据模型的standard类型映射为其他类型book或inbook, + %standard类型在blx-dm中有出现,但仅定义了类型,域和约束等都没有定义 + %因为可能要映射两种类型,所以不能在驱动层处理,因为要做判断 + \step[fieldsource=booktitle,final]%当存在booktitle域是映射为inbook + \step[typesource=standard, typetarget=inbook, final] + } + \map{%剩下的全部映射为book + \step[typesource=standard, typetarget=book, final] + } +% \map{%先于标准样式的driver层映射,以取消type设置 +% \step[typesource=mastersthesis, typetarget=thesis, final] +% %\step[fieldset=type, fieldvalue=mathesis] +% } +% \map{%先于标准样式的driver层映射,以取消type设置 +% \step[typesource=phdthesis, typetarget=thesis, final] +% %\step[fieldset=type, fieldvalue=phdthesis] +% } + \map{%先于标准样式的driver层映射,以取消type设置 + \step[typesource=techreport, typetarget=report, final] + %\step[fieldset=type, fieldvalue=techreport] + } + \map{% + \pertype{report} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=report,typetarget=online] + \step[fieldset=note,fieldvalue={report}] + } + \map{% + \pertype{thesis} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=thesis,typetarget=online] + } + \map{% + \pertype{manual} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=manual,typetarget=online] + } + \map{% + \pertype{unpublished} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=unpublished,typetarget=online] + } + \map{% + \pertype{database} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=databasetypetarget=online] + } + \map{% + \pertype{dataset} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=dataset,typetarget=online] + } + \map{% + \pertype{software} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=software,typetarget=online] + } + \map{% + \pertype{map} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=map,typetarget=online] + } + \map{% + \pertype{archive} + %biblatex3.7以下版本用如下方式来替代,address和location已在sourcemap中同步 + \step[fieldset=location,fieldvalue={}] + \step[fieldsource=location,notmatch=\regexp{.},final]%地址不存在且存在url那么转变为online + %3.7以上版本用notfield + %\step[notfield=address,final]%当address不存在则继续 + \step[fieldsource=url,final]%地址不存在且存在url那么转变为online + \step[typesource=archive,typetarget=online] + } + \map[overwrite]{%这里还必须有overwrite,注意不同版本存在差异,比如texlive2015变16后biber有变化(20161207修改正确) + \step[fieldsource=note, final]%将note域信息复制给keywords,用于输出时容易区分标准和报纸 + \step[fieldset=keywords, fieldvalue={,}, append] + \step[fieldset=keywords, origfieldval, append] + } + \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{ + \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map{%默认情况下将空缺作者的中文文献设置为佚名 + \step[fieldsource=language,match={chinese},final] + \step[fieldset=author, fieldvalue={佚名}] + } + \map{%默认情况下将空缺作者的英文文献设置为A{non} + \step[fieldsource=language,match={english},final] + \step[fieldset=author, fieldvalue={A{non}}]%noauthor换成Anon,同时为避免大写还加了{} + } + } + } +} + +% +% 不同语言分集调整的实现方式 +% +% 原理方法:利用样式层的动态数据修改lansortorder域来实现排序 +\def\dealsortlan{ + \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map[overwrite]{%当文献给出language域时,设置文献要使用的本地化字符串的语言 + \step[fieldsource=language,match=english,final] + \step[fieldset=lansortorder,fieldvalue=\lanenorder] + } + \map[overwrite]{ + \step[fieldsource=language,match=russian,final] + \step[fieldset=lansortorder,fieldvalue=\lanruorder] + } + \map[overwrite]{% + \step[fieldsource=language,match=french,final] + \step[fieldset=lansortorder,fieldvalue=\lanfrorder] + } + \map[overwrite]{% + \step[fieldsource=language,match=chinese,final]%中日韩语目前都用english, + \step[fieldset=lansortorder,fieldvalue=\lancnorder] + } + \map[overwrite]{% + \step[fieldsource=language,match=japanese,final]%中日韩语目前都用english, + \step[fieldset=lansortorder,fieldvalue=\lanjporder] + } + \map[overwrite]{% + \step[fieldsource=language,match=korean,final]%中日韩语目前都用english, + \step[fieldset=lansortorder,fieldvalue=\lankrorder] + } + } + } +} + + + + +% +%驱动别名等价于驱动层映射 +% +\DeclareBibliographyAlias{newspaper}{article}% +\DeclareBibliographyAlias{inproceedings}{inbook}%会议论文文献类型驱动 +\DeclareBibliographyAlias{conference}{inbook}%会议论文文献类型驱动 +\DeclareBibliographyAlias{incollection}{inbook}%文集中析出文献类型驱动 +\DeclareBibliographyAlias{collection}{book}%%文集类型驱动 +\DeclareBibliographyAlias{proceedings}{book}%会议论文集文献类型驱动 +\DeclareBibliographyAlias{thesis}{manual}%学位论文驱动 +\DeclareBibliographyAlias{unpublished}{manual}%其它类型驱动 +\DeclareBibliographyAlias{database}{manual} +\DeclareBibliographyAlias{dataset}{manual} +\DeclareBibliographyAlias{software}{manual} +\DeclareBibliographyAlias{map}{manual} +\DeclareBibliographyAlias{archive}{manual} + + +%===================================================================== +% 设置排序格式 +%===================================================================== +% +% 排序格式,用降序,及userb域,针对biblatex3.8及以上版本 +% +\DeclareSortingTemplate{gb7714-2015}{ + \sort{ + \field{presort} + } + %\sort[final]{ + %\field{sortkey} + %} + \sort{ + \field{lansortorder}%language + } + \sort{ + \field{sortkey} + } + \sort{%[direction=descending] + \field{sortname} + \field{author} + \field{editor} + \field{translator} + } + \sort{ + \field{sortyear} + \field{year} + } + \sort{ + \field{sorttitle} + \field{title} + } + \sort{ + \field{volume} + \literal{0} + } + } + + %降序的nyt + \DeclareSortingTemplate{gbnytd}{ + \sort{ + \field{presort} + } +% \sort[final]{ +% \field{sortkey} +% } + \sort{ + \field{lansortorder}%language + } + \sort[direction=descending]{ + \field{sortkey} + } + \sort[direction=descending]{% + \field{sortname} + \field{author} + \field{editor} + \field{translator} + } + \sort{ + \field{sortyear} + \field{year} + } + \sort{ + \field{sorttitle} + \field{title} + } + \sort{ + \field{volume} + \literal{0} + } + } + + %降序的ynt + \DeclareSortingTemplate{gbyntd}{ + \sort{ + \field{presort} + } +% \sort[final]{ +% \field{sortkey} +% } + \sort{ + \field{lansortorder}%language + } + \sort[direction=descending]{ + \field{sortyear} + \field{year} + } + \sort{ + \field{sortkey} + } + \sort{% + \field{sortname} + \field{author} + \field{editor} + \field{translator} + } + \sort{ + \field{sorttitle} + \field{title} + } + \sort{ + \field{volume} + \literal{0} + } + } + + %升序的ynt + \DeclareSortingTemplate{gbynta}{ + \sort{ + \field{presort} + } +% \sort[final]{ +% \field{sortkey} +% } + \sort{ + \field{lansortorder}%language + } + \sort{%[direction=ascending] + \field{sortyear} + \field{year} + } + \sort{ + \field{sortkey} + } + \sort{% + \field{sortname} + \field{author} + \field{editor} + \field{translator} + } + \sort{ + \field{sorttitle} + \field{title} + } + \sort{ + \field{volume} + \literal{0} + } + } + +%===================================================================== +% 参考文献表环境 +%===================================================================== +% +% 列表格式 +% +% 增加一个\bibitemindent尺寸用于控制list环境的itemindent +% v1.0l,20180615,hzz +% v1.0t,20200319,hzz,增加尺寸\biblabelextend使某些字体下标签宽度不足时可增加标签宽度 +\setlength{\bibhang}{\biblabelsep}% +\newlength{\bibitemindent} +\setlength{\bibitemindent}{0pt} +\newlength{\biblabelextend} +\setlength{\biblabelextend}{0pt} + + +\defbibenvironment{bibliography} + {\list + {\printtext[labelnumberwidth]{% + \printfield{labelprefix}% + \printfield{labelnumber}}} + {\addtolength{\labelnumberwidth}{\biblabelextend}% + \setlength{\labelwidth}{\labelnumberwidth}% + \setlength{\labelsep}{\biblabelsep}% + \setlength{\leftmargin}{\bibhang}% + \addtolength{\leftmargin}{\labelnumberwidth}% + \setlength{\itemindent}{\bibitemindent}% + \setlength{\itemsep}{\bibitemsep}% + \setlength{\parsep}{\bibparsep}}% + \renewcommand*{\makelabel}[1]{\hss##1}} + {\endlist} + {\item} + +% +% 顺序编码制-标签对齐方式处理 +% +% 原理方法:利用选项提供的计数器数值做选择 +% 左对齐,右对齐为list环境下的处理,此时list环境的\labelwidth只能设置一个,是最宽标签的宽度 +% 项对齐则是在段落环境下做的处理。 +% 左对齐时,参考文献各项内容对齐,序号标签与参考文献项内容的间距可变 +% 右对齐时,参考文献各项内容对齐,序号标签与参考文献项内容的间距相等,标签与页边距离可变 +% 项对齐时,序号标签贴在页边,序号标签与参考文献项内容的间距相等 +% 修改序号标签格式为: +% \DeclareFieldFormat{shorthandwidth}{\mkbibbrackets{#1}} %源来自numeric.BBX +% \DeclareFieldFormat{labelnumberwidth}{\ttfamily\mkbibbrackets{#1}\hfill} +\DeclareFieldFormat{labelnumberwidth}{% +\ifcase\value{gbalignlabel}%右对齐,整个标签为右对齐 + \mkgbnumlabel{#1}% +\or%左对齐,整个标签为左对齐 + \mkgbnumlabel{#1}\hfill% +\or%中间对齐,比如:序号数字居于[]中间 + \hfil\mkgbnumlabel{\hfill#1\hfill}\hfil% +\fi} + +% +% 修改序号标签格式为以各条参文献为基础进行对齐的方式,即序号与条目内容间隔相等的方式。 +\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 + {}} +\newlength{\lengthid} +\newlength{\lengthlw} +\newcommand{\itemcmd}{% +\settowidth{\lengthid}{\mkgbnumlabel{\printfield{labelnumber}}} +\addtolength{\lengthid}{\biblabelsep} +\setlength{\lengthlw}{\textwidth} +\addtolength{\lengthlw}{-\lengthid} +\addvspace{\bibitemsep}%恢复\bibitemsep的作用 +%\parshape 2 0em \textwidth \lengthid \lengthlw +\hangindent\lengthid +\mkgbnumlabel{\printfield{labelnumber}}% +\hspace{\biblabelsep}} +% +% 简单的段落环境 +\defbibenvironment{bibliography} +{\begingroup\setlength{\parindent}{0em}} +{\endgroup} +{\itemcmd}} + + +%===================================================================== +% 设置单元或块等的标点 +%===================================================================== +\renewrobustcmd*{\bibinithyphendelim}{\addhighpenspace}%用于处理姓名中名部分存在-的情况,比如ZHANG Yu-xin +\renewcommand*{\subtitlepunct}{\addcolon\addspace} %修改标题和其它标题信息间的标点,来源biblatex.def, +% +% 利用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}%%页码引用格式的修改,修改为用冒号 +%\renewcommand{\relateddelim}{}%\par + +%===================================================================== +% 修改域的格式,重定义域的输出宏 +%===================================================================== +% +% 新增文献类型标识符的格式 +% []前的nobreak,从GB4.1节的例子看不应该加,所以去掉 +% 但因为考虑到cjk字符和[]之间可能添加空格,所以仍然加上 +% 而[]中间的内容,从4.6.2节的例子看也是可以分割的,因此内部的nobreak也可以去掉 +% +\DeclareFieldFormat{gbtypeflag}{% +\iftoggle{bbx:gbmedium}% +{\iftoggle{bbx:url}% + {\iffieldundef{url}%当存在url时,增加一个OL标识符 + {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}}% + {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\texttt{/}OL]}}% + }% + {\ifentrytype{online}% + {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\texttt{/}OL]}}% + {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}}% + }}% + {\nobreak\printtext{[}\nobreak#1\nobreak\printtext{]}}% +} + +% +% 新增用于报纸的文献类型标识符的格式 +% +\DeclareFieldFormat{gbtypeflagn}{%用于报纸newspaper +\iftoggle{bbx:gbmedium}% +{\iftoggle{bbx:url}% + {\iffieldundef{url}%当存在url时,增加一个OL标识符 + {\nobreak\printtext{[}\nobreak N\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% + {\nobreak\printtext{[}\nobreak N\printtext{\texttt{/}OL]}\nobreak}% + }% + {\nobreak\printtext{[}\nobreak N\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% +}{\nobreak\printtext{[}\nobreak N\printtext{]}\nobreak}% +} + +% +% 新增用于标准的文献类型标识符的格式 +% +\DeclareFieldFormat{gbtypeflags}{%用于标准standard +\iftoggle{bbx:gbmedium}% +{\iftoggle{bbx:url}% + {\iffieldundef{url}%当存在url时,增加一个OL标识符 + {\nobreak\printtext{[}\nobreak S\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% + {\nobreak\printtext{[}\nobreak S\printtext{\texttt{/}OL]}\nobreak}% + }% + {\nobreak\printtext{[}\nobreak S\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% +}{\nobreak\printtext{[}\nobreak S\printtext{]}\nobreak}% +} + +% +% 重设title等参考文献信息的输出格式 +% +% 原理方法:修改来自biblatex.def文件的原格式 +\newcommand{\bibtitlefont}{} +\newcommand{\bibauthorfont}{} +\newcommand{\bibpubfont}{} + +\DeclareFieldFormat{title}{#1\adddot\addthinspace} +\DeclareFieldFormat{journaltitle}{#1\isdot}%添加\isdot用于缩写名带点情况,将其转换为缩写点,便于标点的追踪 +\DeclareFieldFormat{issuetitle}{#1} +\DeclareFieldFormat{maintitle}{#1} +\DeclareFieldFormat{booktitle}{#1} +\DeclareFieldFormat%将期刊等文献的标题中原来带的引号去掉 + [article,patent,thesis,unpublished] + {title}{#1\adddot\addthinspace}%\mkbibquote{#1\isdot} +\DeclareFieldFormat%将期刊等文献的标题中原来带的引号去掉 + [inbook,incollection,inproceedings] + {title}{#1}%\nopunct\unspace +\DeclareFieldFormat{url}{\url{#1}} %%url相关输出,url域修改如本行,源来自biblatex.def +\def\UrlFont{\rmfamily}%设置url字体为roman字体%\ttfamily +%\urlstyle{rm} %使用这句也一样 +\setcounter{biburlnumpenalty}{100} %让url可以在数字后断行 +\setcounter{biburlucpenalty}{100} %让url可以在大写字母后断行 +\setcounter{biburllcpenalty}{100} %让url可以在小写字母后断行 +\DeclareFieldFormat{doi}{% + \rmfamily{DOI}\addcolon\space + \ifhyperref + {\href{https://doi.org/#1}{\nolinkurl{#1}}} + {\nolinkurl{#1}}} +% +% 标题的字母大小写格式修改 +% +% 注意:修改标题的字母大小写,不能用前面的title的格式而要用titlecase +% 因为titlecase is applied to the contents of the field directly,title is not +%\DeclareFieldFormat{titlecase}{\MakeCapital#1}%重设标题格式,将其修改为首字母大写 +\DeclareFieldFormat{titlecase}{\iftoggle{bbx:titlelink}{% +\iffieldundef{url}{\MakeCapital#1}{% +\href{\thefield{url}}{#1}}}{\MakeCapital#1}}%重设标题格式,将其修改为首字母大写 +\DeclareFieldFormat{pages}{#1}%去掉前面引导页码的pp.等字符,\mkpageprefix[bookpagination]{#1} +\DefineBibliographyExtras{english}{\renewcommand*{\bibrangedash}{-}}%将页码间隔符替换会英文的短横线 +\DefineBibliographyExtras{russian}{\renewcommand*{\bibrangedash}{-}} + +\def\execgbfdfmtstd{%恢复到标准样式的设置 +\DeclareFieldFormat{title}{\mkbibemph{##1}} +\DeclareFieldFormat + [article,inbook,incollection,inproceedings,patent,thesis,unpublished] + {title}{\mkbibquote{##1\isdot}} +\DeclareFieldFormat + [suppbook,suppcollection,suppperiodical] + {title}{##1} +\DeclareFieldFormat{journaltitle}{\mkbibemph{##1}} +\DeclareFieldFormat{issuetitle}{\mkbibemph{##1}} +\DeclareFieldFormat{maintitle}{\mkbibemph{##1}} +\DeclareFieldFormat{booktitle}{\mkbibemph{##1}} +\DeclareFieldFormat{url}{\mkbibacro{URL}\addcolon\space\url{##1}} +\DeclareFieldFormat{titlecase}{##1} +\DeclareFieldFormat{pages}{\mkpageprefix[bookpagination]{##1}} +} + +% +% 文献标题后的标点问题 +% v1.0k,20180405,为texlive2017以上版本中的beamer兼容性做的处理,Hu Zhenzhen +% +% 原理方法:如下代码处理texlive2017以上版本中,beamer中文献的标题后出现两个点的情况: +% texlive2017以上的beamer中对macro{title}做了patch,正常情况下不会出现两个点的情况,但由于 +% 之前为了处理texlive2015,2016下的title格式添加了adddot,导致出现两个点的情况,而且也影响 +% 析出文献的//符号的输出,因此再次对macro{title}做patch消除beamer中做apptocmd时添加的\newunitpunct + {%texlive 2017对应iftlseven以上版本 + \@ifclassloaded{beamer}{ + \DeclareFieldFormat{title}{#1}% + \DeclareFieldFormat[article,patent,thesis,unpublished]{title}{#1} + \AtBeginDocument{% + \patchcmd{\abx@macro@title}{\newunitpunct}{}{}{}}}{} + } + + +% +% 修改译者位置格式 +% +% 原理方法:修改来自biblatex.def文件的bytranslator+others宏的格式 +\renewbibmacro*{bytranslator+others}{% + \ifnameundef{translator} + {} + {%\usebibmacro{bytranslator+othersstrg} + %\setunit{\addspace}% + \printnames[bytranslator]{translator}% + \clearname{translator}% + %从macro*{bytranslator+othersstrg}%中可以看到当地化字符串格式的引用前的代码处理 + %比如生成cotranslator等用于调用cotranslator所代表的当地化字符串 + \usebibmacro{bytranslator+othersstrg}%“译”的位置换到下面来,即放到译者后面。 + %\setunit{\addspace}% + \newunit}% + \usebibmacro{withothers}} + + +% +% 修改作者数量超过限定值,做省略时的处理格式 +% v1.0,20160701,hzz +% v1.0O,20190103,hzz,修改利用新定义的一个分隔符strandothersdelim +% +% 原理方法:判断作者或译者是否中文,若中文用字符等,否则用et al. 。 +% \printnames由start-stop控制项数,默认是1和maxnames/minnames +\renewbibmacro*{name:andothers}{% + \ifboolexpr{ + test {\ifnumequal{\value{listcount}}{\value{liststop}}} + and + test \ifmorenames + }{\ifnumgreater{\value{liststop}}{1}%注意这里试图去区分姓名总数大于1的情况,当姓名总数大于1时,最后一个姓名后面先加入一个\finalandcomma + {\finalandcomma}%目前国标没有这样的区分要求,如果有需要也是可以这么去做的。 + {}% +\printdelim{andothersdelim}\printdelim{strandothersdelim}% +}{%当是译者的时候需要特殊处理:从7.2节看等,译前面加逗号,但从示例看等和译同时出现时,译前的逗号没有,比如: +%袁训来, 陈哲, 肖书海, 等. +%胡泳, 范海燕, 译. +%潘惠霞, 魏婧, 杨艳, 等译. +\ifcurrentname{translator}{\addcomma\addthinspace}{}%为了实现上述第二个示例情况做的处理 +}} + + +% +% 修改省略作者后的本地化字符串,比如et al. +% v1.0o,20190103,hzz +% +% 原理方法:默认情况下判断作者或译者是否中文,若中文用字符andotherscn=“等”,否则用andothers=“et al.”。 +% 非默认情况,根据选项信息,选择选择强制中文或英文 +% 首先设置全局的,然后设置文献表中的,这一等价于将所有的cite命令环境都设置过了 +% 而不用对每一个引用命令单独设置,比如cite,parancite,textcite都设置 +\DeclareDelimFormat{strandothersdelim}{% + \edef\userfieldabcde{userd}%这里使用\iffieldequalstr{labelnamesource}替代ifcurrentname因为标注中使用ifcurrentname无效 + \iffieldequalstr{labelnamesource}{translator}{\edef\userfieldabcde{usere}}{}% + \iffieldequalstr{labelnamesource}{editor}{\edef\userfieldabcde{userc}}{}% + \iffieldequalstr{labelnamesource}{author}{\edef\userfieldabcde{userf}}{}% + \iffieldequalstr{labelnamesource}{bookauthor}{\edef\userfieldabcde{userb}}{}% + \ifcase\value{gbcitelocalcase}% + \iffieldequalstr{\userfieldabcde}{chinese}{\ifbibstring{andothersincitecn}{\bibstring{andothersincitecn}}{\bibstring{andothers}}}{}%中文已经通过english本地化字符串定义 + \iffieldequalstr{\userfieldabcde}{korean}{\ifbibstring{andotherskr}{\bibstring{andotherskr}}{\bibstring{andothers}}}{}%韩语未定义,所以与bib中一致 + \iffieldequalstr{\userfieldabcde}{japanese}{\ifbibstring{andothersjp}{\bibstring{andothersjp}}{\bibstring{andothers}}}{}%日与同韩语 + \iffieldequalstr{\userfieldabcde}{english}{\ifbibstring{andothersincite}{\bibstring{andothersincite}}{\bibstring{andothers}}}{}%英语已定义 + \iffieldequalstr{\userfieldabcde}{french}{\bibstring{andothers}}{}%法语未定义,若要定义需要针对french本地化字符串定义 + \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{andothers}}{}%俄语未定义,若要定义需要针对russian本地化字符串定义 + \or% + \bibstring{andothersincitecn}% + \or% + \bibstring{andothersincite}% + \fi} + + +\DeclareDelimFormat[bib,biblist]{strandothersdelim}{% + \edef\userfieldabcde{userd}% + \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% + \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% + \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% + \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% + \ifcase\value{gbbiblocalcase}% + \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andotherscn}}{}% + \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andotherskr}}{}% + \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andothersjp}}{}% + \iffieldequalstr{\userfieldabcde}{english}{\bibstring{andothers}}{}% + \iffieldequalstr{\userfieldabcde}{french}{\bibstring{andothers}}{}% + \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{andothers}}{}% + \or% + \bibstring{andotherscn}% + \or% + \bibstring{andothers}% + \fi} + +% +% 修改最后一个作者前的字符串,比如 and +% v1.0o,20190103,hzz +% +% 原理方法:默认情况下判断作者或译者是否中文,若中文用字符andcn=“和”,否则用and=“and”。 +% 非默认情况,根据选项信息,选择选择强制中文或英文 +% 首先设置全局的,然后设置文献表中的,这一等价于将所有的cite命令环境都设置过了 +% 而不用对每一个引用命令单独设置,比如cite,parancite,textcite都设置 +\DeclareDelimFormat{finalnamedelim}{% + \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}% + \addspace% + \edef\userfieldabcde{userd}% + \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% + \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% + \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% + \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% + \ifcase\value{gbcitelocalcase}% + \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andincitecn}}{}% + \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andkr}}{}% + \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andjp}}{}% + \iffieldequalstr{\userfieldabcde}{english}{\bibstring{andincite}}{}% + \iffieldequalstr{\userfieldabcde}{french}{\bibstring{and}}{}% + \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{and}}{}% +\space% + \or% + \bibstring{andincitecn}\space% + \or% + \bibstring{andincite}\space% + \fi} + +\DeclareDelimFormat[bib,biblist]{finalnamedelim}{% + \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}% + \addspace% + \edef\userfieldabcde{userd}% + \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% + \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% + \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% + \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% + \ifcase\value{gbbiblocalcase}% + \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andcn}}{}% + \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andkr}}{}% + \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andjp}}{}% + \iffieldequalstr{\userfieldabcde}{english}{\bibstring{and}}{}% + \iffieldequalstr{\userfieldabcde}{french}{\bibstring{and}}{}% + \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{and}}{}% +\space% + \or% + \bibstring{andcn}\space% + \or% + \bibstring{and}\space% + \fi} + + +% +% 重设title的输出 +% +% 20180425,v1.0k,为标题增加字体控制命令,Hu Zhenzhen +% 原理方法:将文献类型标识符输出出去,原输出来自biblatex.def文件 +% 利用toggle做标识符是否输出的判断 +\renewbibmacro*{title}{% + \ifboolexpr{% + test{\iffieldundef{title}}% + and + test{\iffieldundef{subtitle}}% + }% + {}% + {\printtext[title]{\bibtitlefont%增加字体控制命令 + \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 +}% +}} + +% +% 作者信息的输出格式 +% +% 20180425,v1.0k,为作者增加字体控制命令,Hu Zhenzhen +% 20180603,v1.0l,增加使用nameformat域来选择姓名格式 +\DeclareNameFormat{namefmtselected}{% +\iffieldundef{namefmtid}{}% +{\defcounter{gbnamefmtcase}{\thefield{namefmtid}}}% +\ifcase\value{gbnamefmtcase}% + \ifgiveninits + {\usebibmacro{name:gbuppercase} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffix}} + {\usebibmacro{name:gbuppercase} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}}% +\or + \ifgiveninits + {\usebibmacro{name:gblowercase} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffix}} + {\usebibmacro{name:gblowercase} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}}% +\or + \ifgiveninits + {\usebibmacro{name:given-family} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffix}} + {\usebibmacro{name:given-family} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}}% +\or + \ifgiveninits + {\usebibmacro{name:family-given} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffix}} + {\usebibmacro{name:family-given} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}}% +\or +\usebibmacro{name:gbpinyin} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}% +\or + \ifnumequal{\value{listcount}}{1} + {\ifgiveninits + {\usebibmacro{name:family-given} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffix}} + {\usebibmacro{name:family-given} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}}% + \ifboolexpe{% + test {\ifdefvoid\namepartgiven} + and + test {\ifdefvoid\namepartprefix}} + {} + {\usebibmacro{name:revsdelim}}} + {\ifgiveninits + {\usebibmacro{name:given-family} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffix}} + {\usebibmacro{name:given-family} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}}}% +\fi + \usebibmacro{name:andothers}} + +\DeclareNameAlias{default}{namefmtselected}%姓名的默认格式采用可选的模式 +\DeclareNameAlias{sortname}{default}% Used in the bibliography %family-given/given-family +\DeclareNameAlias{citename}{default}% Default used by \citename + +\DeclareDelimFormat[bib,biblist]{andothersdelim}{\addcomma\addspace} +%\DeclareDelimFormat[textcite]{andothersdelim}{\addspace}% + +%GB/T 7714-2015 风格,全部大写 +\newbibmacro*{name:gbuppercase}[4]{\bibauthorfont% +\renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 +\renewcommand*{\revsdnamepunct}{}% + \ifuseprefix% + {\usebibmacro{name:delim}{#3#1}% + \usebibmacro{name:hook}{#3#1}% + \ifdefvoid{#3}{}{% + \ifcapital% + {\mkbibnameprefix{\MakeCapital{#3}}\isdot}% + {\mkbibnameprefix{#3}\isdot}% + \ifprefchar{}{\bibnamedelimc}}% + \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% + \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital + \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%后缀前加逗号 + {\usebibmacro{name:delim}{#1}% + \usebibmacro{name:hook}{#1}% + \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% + \ifboolexpe{% + test {\ifdefvoid{#2}} + and + test {\ifdefvoid{#3}}} + {}{\revsdnamepunct}% + \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital + \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}% + \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号 +} + +%GB/T 7714-2015 风格,大小写不变,根据bib文件内输入原样输出 +\newbibmacro*{name:gblowercase}[4]{\bibauthorfont% + \renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉 + \renewcommand*{\revsdnamepunct}{}%%来源biblatex.def + \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}{}{\addcomma\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}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号 +} + +%中文常见风格,汉语拼音全拼模式 +\newbibmacro*{name:gbpinyin}[4]{\bibauthorfont% +\renewrobustcmd*{\bibinitperiod}{}%将名字简写后的点去掉,%来源biblatex2.STY +\renewcommand*{\revsdnamepunct}{}%%来源biblatex.def +\renewrobustcmd*{\bibnamedelima}{\mbox{-}}% + \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}}% +} + + +% +% url和url日期格式 +% +\renewbibmacro*{url+urldate}{% + %\usebibmacro{url}%%更换url的位置,放到下面 + \iffieldundef{urlyear}% + {}{%\setunit*{\addspace}% + \usebibmacro{urldate}}% + \setunit{\addperiod\addspace}% + \usebibmacro{url}} +\renewbibmacro*{url}{\printfield{url}} + + +% +% 日期信息的输出格式,针对biblatex>=3.10版本 +% + \DeclareFieldFormat{urldate}{#1} + \renewbibmacro*{urldate}{% + \addthinspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 + + % + % 专利的公告日期、或报纸的日期的输出宏 + % 20160701,v1.0,新增加 + % 20180405,为biblatexv3.10版本,出现多出点bug做处理,Hu Zhenzhen + % + % 原理方法:加上printtext避免破坏异步标点机制 + % 本可以用\printdate,但由于date选项设置为year,所以仅会给出年份 + % 所以无法再用选项设置的方法,印象需要用底层的命令 + % 这里可以用\blx@isodate,但用\blx@gbdate试图避免版本判断 + \newbibmacro*{newsdate}{%% + \printtext{\blx@gbdate{}{}}%%\blx@isodate{}{}% + } + + % + \newbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 + \ifboolexpr{% + test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}% + }% + {}%更新或修改日期通常有day信息 + {\iffieldundef{year}{% + \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{(}\printeventdate\printtext{)}}}% + {\printtext{(}\printenddate\printtext{)}}% + }{\iffieldequalstr{year}{}{%因为year存在,但为空 + }{\printtext{(}\blx@gbdate{}{}\printtext{)}}% + }% + }}% + + +% +% biblatex>v3.8版利用related实现双语文献的处理 +% + %为了实现v3.8以上版本的双语文献,采用related的方法代替set方法,因为set方法已经无法实现了, + %因为set不再复制其第一个成员的信息。于是定义一个命令,用于动态的修改数据,即添加related域的信息 + %其中使用了\DeclareStyleSourcemap,但由于其只能出现在导言区中,因此\defdoublelangentry命令也只能出现在导言区中 + \newcommand{\defdoublelangentry}[2]{% + \edef\entrykeya{##1} + \edef\entrykeyb{##2} + \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map{ + \step[fieldsource=entrykey, match=\entrykeya, final] + \step[fieldset=related, fieldvalue=\entrykeyb] + } + } + } + } + +% +% 关联文献间的分隔符 +% +\renewcommand{\relateddelim}{\adddot\newline\nobreak}%\par,而作者年样式不需要修改,因为没有项对齐的标签问题 + +% +% 关联文献块前的分隔符,针对biblatex>=3.11 +% +% 原理方法:因为增加了begrelateddelim钩子,所以不需要重定义related输出宏 +\renewcommand{\begrelateddelim}{\adddot\newline\nobreak} + + +% +% 调整doi+eprint+url格式 +% +% 原理方法:源来自standard.bbx,因为页码后面直接跟引用日期,没有标点所以去掉其中的标点。 +\renewbibmacro*{doi+eprint+url}{% +% \iftoggle{bbx:doi}%把doi的位置放到url后面 +% {\printfield{doi}} +% {}% + %\newunit\newblock + \iftoggle{bbx:eprint} + {\iffieldundef{eprint}{}{\newunit\usebibmacro{eprint}}} + {}% + %\newunit\newblock + \iftoggle{bbx:url} + {\usebibmacro{url+urldate}} + {} + \newunit\newblock + \iftoggle{bbx:doi} + {\printfield{doi}} + {}} + +% +% 调整页码的格式,即chapter+pages格式 +% +\renewbibmacro*{chapter+pages}{% +\iftoggle{bbx:gbstrict}{}{% + \printfield{chapter}}% + \iffieldundef{pages}{}{%这里增加一个判断,当没有页码时就不输出 + \setunit{\bibpagespunct}% + \printfield{pages}}% + %\newunit %这里的标点去掉 +} + +% +% 当location等出版项超过maxitem缩减后不再输出etal +% +\DeclareListFormat{location}{% + \usebibmacro{list:delim}{#1}% + #1\isdot} +\DeclareListAlias{institution}{location} +\DeclareListAlias{publisher}{location} + +% 新增一个样式用于输出连续出版物的地址,单位,时间, +% 用于periodical连续出版物的出版社和地址的处理 +% +% v1.0k,20180425,为出版信息增加字体控制命令,hzz +% %类似\newbibmacro*{publisher+location+date} +\newbibmacro*{location+institution+date}{\bibpubfont% +\iftoggle{bbx:gbpub}% +{\testCJKfirst{userd}% +\ifboolexpr{% +test {\iflistundef{location}} and test {\iflistundef{institution}}% +}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress}\space :\space\str@nopublisher]}% +{\printtext{[S.l.\space :\space s.n.\adddot]}}% +}{% +\iflistundef{location}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress]}}{\printtext{[S.l.\adddot]}}}% + {\printlist{location}}% +\addcolon\addspace% +\iflistundef{institution}{% +\iftoggle{ifCJKforgbt}{\printtext{[\str@nopublisher]}}{\printtext{\mkbibbrackets{s.n.}}}}% +{\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}% +} +% +% 通用的出版社和地址的处理 +% +% 原理方法:当没有出版社地址时,直接判断title的信息是否是中文,若为中文,则写出版地不详,否则用英文的字符表示。 +% 事实上title对于每个文献来说是必须的,所以用它判断是最快的,而且一般标题和出版社的语言是一样的。 +% 注意标准standard类型,因为当没有出版项时直接省略,所以做特殊处理 +\renewbibmacro*{publisher+location+date}{\bibpubfont% +\iftoggle{bbx:gbpub}% +{\testCJKfirst{userd}% + \ifboolexpr{ test {\iflistundef{location}} and test {\iflistundef{publisher}} }% + {\iffieldequalstr{note}{standard}{}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress}\space :\space\str@nopublisher]}{\printtext{[S.l.\space :\space s.n.\adddot]}}}}% + {\iflistundef{location}{%\adddot + \iffieldequalstr{note}{standard}{}%%从gbt7714-2015标准第19页看到,标准存在出版项时输出,没有时完全省略。 + {\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress]}\addcolon\addspace}{\printtext{[S.l.\adddot]}\addcolon\addspace}}}% \bibstring{noaddress} + {\printlist{location}\addcolon\addspace}%%\addcolon\addspace% + \iflistundef{publisher}{% + \iffieldequalstr{note}{standard}{}% + {\iftoggle{ifCJKforgbt}{\printtext{[\str@nopublisher]}\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 + }% +} + +% +% 修改了一个institution+location+date用于manual、report、thesis等类型 +% +% 20180425,v1.0k,增加了字体控制命令,hzz +% 20190105,v1.0o,加了一个编组避免\usebibmacro{date}把month和day信息去掉 +\renewbibmacro*{institution+location+date}{\bibpubfont%当没有institution时不处理。 +{\printlist{location}%%加了一个编组避免\usebibmacro{date}把month和day信息去掉 + \iflistundef{institution} + {\setunit*{\addcomma\space}} + {\setunit*{\addcolon\space}}% + \printlist{institution}% + \setunit*{\addcomma\space}% + \usebibmacro{date}% + %\newunit + }} + +% +% 对volume卷信息格式做出修改 +% v1.0o,20190105,hzz +% +\DeclareFieldFormat{volume}{% +\testCJKfirst{userd}% +\iftoggle{ifCJKforgbt}% +{\bibstring{serialcn}#1\bibstring{volumecn}}% +{\bibstring{volume}~#1}% +}% volume of a book +\DeclareFieldFormat[article,periodical]{volume}{#1}% volume of a journal + +% +% 对number册信息格式做出修改 +% v1.0o,20190105,hzz +% +\DeclareFieldFormat{number}{#1}% +\DeclareFieldFormat[book,collection,inbook,% +incollection,proceedings,inproceedings]{number}{% +\testCJKfirst{userd}% +\iftoggle{ifCJKforgbt}% +{\bibstring{serialcn}#1\bibstring{numbercn}}% +{#1}% +}% + +% +% 对edition版本信息格式做出修改 +% +\DeclareFieldFormat{edition}{%源来自biblatex.DEF +\testCJKfirst{userd}% +\iftoggle{ifCJKforgbt}% +{\ifinteger{#1}% +{\printtext{#1\str@edition}}% +{#1\isdot}}% +{\ifinteger{#1}% +{\mkbibordedition{#1}~\bibstring{edition}}% +{#1\isdot}}} + +% +% 对version的版本信息做出修改 +% +\DeclareFieldFormat{version}{%源来自biblatex.DEF +\testCJKfirst{userd}% +\ifinteger{#1}% +{\iftoggle{ifCJKforgbt}{\printtext{#1\str@edition}}% +{\mkbibordedition{#1}~\bibstring{version}}}% +{#1\isdot}} + +% +% 修改析出文献的文集的标题与附加标题间的符号 +% +\renewbibmacro*{booktitle}{% + \ifboolexpr{ + test {\iffieldundef{booktitle}} + and + test {\iffieldundef{booksubtitle}} + } + {} + {\printtext[booktitle]{\bibtitlefont% + \printfield[titlecase]{booktitle}% + \setunit{\subtitlepunct}% + \printfield[titlecase]{booksubtitle}}% + \newunit%标点换成下一句 + \setunit{\subtitlepunct}}% + \printfield{booktitleaddon}} + + +% +% 调整期刊名的格式 +% +% v1.0k,20180425,增加了字体控制命令,hzz +\renewbibmacro*{journal+issuetitle}{\bibpubfont%源来自standard.bbx + \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}% + \iffieldundef{volume}{}{\setunit{\addcomma\space}}% + %换成逗号和空格 + \usebibmacro{issue}% + \usebibmacro{volume+number+eid}%把卷期放到年份后面 + %\newunit + } + + + +% +% 调整期刊卷和期的格式 +% +\renewbibmacro*{volume+number+eid}{%源来自standard.bbx +\iftoggle{bbx:gbfieldstd}{% + \printfield{volume}% + \setunit*{\adddot}% + \printfield{number}% + \setunit{\addcomma\space}% + \printfield{eid}}{% + \printfield{volume}% + %\setunit*{\adddot}%去掉点号 + %\printfield{number}% + \iffieldundef{number}{}{\printtext{\mkbibparens{\printfield{number}}}}%增加一个圆括号 + \iffieldundef{eid}{}{% + \setunit{\addcomma\space}% + \printfield{eid}}}} + +% +% 调整期刊年份的格式 +% +\renewbibmacro*{issue+date}{%去掉括号 + \printtext{%去掉了[parens] + \iffieldundef{issue} + {%\usebibmacro{date} + \iffieldundef{note}{\usebibmacro{date}}%判断一下,是否是报纸 + {\iffieldequalstr{note}{news}{\usebibmacro{newsdate}}%判断是否为报纸 + {\usebibmacro{date}}% + }}% + {\iftoggle{bbx:gbstrict}{}{\printfield{issue}% + \setunit*{\addspace}}% + %\usebibmacro{date} + \iffieldundef{note}{\usebibmacro{date}}%判断一下,是否是报纸 + {\iffieldequalstr{note}{news}{\usebibmacro{newsdate}}%判断是否为报纸 + {\usebibmacro{date}}% + }}}% + %\newunit + } + +% +% 调整页码前的标点和去掉期刊文章等页码后面的标点 +% +\renewbibmacro*{note+pages}{%源来自standard.bbx + %\printfield{note}%不要note,note用来判断是否是报纸newspaper + \iffieldundef{pages}{}{ + \setunit{\bibpagespunct}% + \printfield{pages}}% + %\newunit + } + + +% +% 编者的符号修改一下 +% v1.0 2016-07-01 +% v1.0q 2019-03-01 hzz 修改editortype前的标点 +% +\renewbibmacro*{editor}{%源来自biblatex.DEF + \ifboolexpr{ + test \ifuseeditor + and + not test {\ifnameundef{editor}} + } + {\printnames{editor}% + \iffieldundef{editortype}%增加一个类型判断,用于存在editortype的情况 + {\setunit\addspace}%当没有editortype时,直接用句点 + {%\setunit{\addcomma\space}% + \usebibmacro{editorstrg}}% + %\clearname{editor} + }% + {}} + +% +% 编者类型做一修改 +% v1.0 2016-07-01 +% v1.0q 2019-03-01 hzz 修改editortype不同语言的不同本地化字符串 +% +\renewbibmacro*{editorstrg}{%源来自biblatex.DEF + \printtext[editortype]{% + \iffieldundef{editortype} + {% +% \ifboolexpr{ %这一段去掉,未定义编者类型情况下不处理 +% test {\ifnumgreater{\value{editor}}{1}} +% or +% test {\ifandothers{editor}} +% } +% {\bibstring{editors}} +% {\bibstring{editor}} + } + {\ifbibxstring{\thefield{editortype}} %定义编者类型情况下处理,以后根据需要修改 + {\ifboolexpr{ + test {\ifnumgreater{\value{editor}}{1}} + or + test {\ifandothers{editor}} + } + {\printdelim{streditortypes}} + {\printdelim{streditortype}}} + {\thefield{editortype}}}% + }} + +% +% 编者类型的本地化字符串输出 +% v1.0q 2019-03-01 hzz +% 能对不同条目类型作格式设置的域格式,能对不同环境做格式设置的分隔符 +% 能对不同文境作设置的包括排序,标签等 +% 这里因为考虑可能标注和文献表中存在不同,所以用分隔符来输出本地化字符串 +% +\DeclareDelimFormat{streditortypes}{% + \edef\userfieldabcde{userd}% + \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% + \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% + \ifcase\value{gbbiblocalcase}% + \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{\thefield{editortype}scn}}{}% + \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{\thefield{editortype}skr}}{}% + \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{\thefield{editortype}sjp}}{}% + \iffieldequalstr{\userfieldabcde}{english}{\addcomma\addthinspace\bibstring{\thefield{editortype}s}}{}% + \iffieldequalstr{\userfieldabcde}{french}{\addcomma\addthinspace\bibstring{\thefield{editortype}s}}{}% + \iffieldequalstr{\userfieldabcde}{russian}{\addcomma\addthinspace\bibstring{\thefield{editortype}s}}{}% + \or% + \bibstring{\thefield{editortype}scn}% + \or% + \addcomma\addthinspace\bibstring{\thefield{editortype}s}% + \fi} +% +\DeclareDelimFormat{streditortype}{% + \edef\userfieldabcde{userd}% + \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% + \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% + \ifcase\value{gbbiblocalcase}% + \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{\thefield{editortype}cn}}{}% + \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{\thefield{editortype}kr}}{}% + \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{\thefield{editortype}jp}}{}% + \iffieldequalstr{\userfieldabcde}{english}{\addcomma\addthinspace\bibstring{\thefield{editortype}}}{}% + \iffieldequalstr{\userfieldabcde}{french}{\addcomma\addthinspace\bibstring{\thefield{editortype}}}{}% + \iffieldequalstr{\userfieldabcde}{russian}{\addcomma\addthinspace\bibstring{\thefield{editortype}}}{}% + \or% + \bibstring{\thefield{editortype}cn}% + \or% + \addcomma\addthinspace\bibstring{\thefield{editortype}}% + \fi} + + +% +% bookauthor域的输出, +% v1.0q 2019-03-01 hzz +% 不再对editor和bookauthor做sourcemap,而是下面的宏内逻辑代替, +% 使得除使用bookauthor外也可以使用editor,便于在使用editor时使用editortype +\renewbibmacro*{bybookauthor}{% + \ifnameundef{bookauthor}% + {\ifnameundef{editor}% + {}% + {\ifnamesequal{author}{editor}% + {}{\usebibmacro{editor}}}% + }% + {\ifnamesequal{author}{bookauthor}% + {}{\printnames{bookauthor}}% + }% +} + +% +% 修改期刊的标题 +% +\renewbibmacro*{periodical}{%源来自biblatex.DEF + \iffieldundef{title} + {} + {\printtext[title]{\bibtitlefont% + \printfield[titlecase]{title}% + %\setunit{\subtitlepunct}% + \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题 + {}{\setunit{\subtitlepunct} + \printfield[titlecase]{subtitle}}% + %{}%把编组结束移到后面去 + \iftoggle{bbx:gbtype}{% + \iffieldundef{usera}{}{%在标题后直接给出文献标识字母 + \printfield[gbtypeflag]{usera}}}{} + }} + } + + +% +% 期刊的标题做修改 +% +\renewbibmacro*{title+issuetitle}{%源来自standard.BBX + \usebibmacro{periodical}% + %\setunit*{\addspace}% + \setunit*{\adddot\addspace}%标点修改为句点 + \iffieldundef{series} + {} + {\newunit + \printfield{series}% + \setunit{\addspace}}% + \usebibmacro{periodical+issue}%将issue调整到上面来,并修改 +\iffieldundef{number}{}{%%进一步处理有范围的数字 + \multinumberparser{\thefield{number}}}% + \iffieldundef{volume}% + {\printfield{year}% + \printtext{\mkbibparens{\multinumberfirst}}% + \bibrangedash% + \iffieldundef{endyear}{}{\printfield{endyear}\printtext{\mkbibparens{\multinumbersecond}}}% + }% + {\multivolparser{\thefield{volume}}% + \printfield{year}% + \setunit{\addcomma\space}%将冒号修改为逗号 + \printtext{\multivolfirst}% + \printtext{\mkbibparens{\multinumberfirst}}% + \bibrangedash% + \iffieldundef{endyear}{}{% + \printfield{endyear}% + \setunit{\addcomma\space}%将冒号修改为逗号 + \printtext{\multivolsecond}% + \printtext{\mkbibparens{\multinumbersecond}}}% + }% + \setunit{\addcomma\space}% + \printfield{eid}% + \setunit{\addspace}% + %\usebibmacro{issue+date}% + %\setunit{\addcolon\space}% + \usebibmacro{issue}% + \newunit} + +% +% 新增一个样式用于调整期刊年份的格式,只打印年份 +% +\newbibmacro*{periodical+issue}{% + \printtext{%去掉了[parens] + \iffieldundef{issue} + {%\usebibmacro{date}%修改为下一句 + }% + {\printfield{issue}% + \setunit*{\addspace}% + %\usebibmacro{date}%修改为下一句 + }% + }% + %\newunit +} + +% +% 重设专利title的输出,将文献类型标识符输出出去 +% +\newbibmacro*{patenttitle}{%原输出来自biblatex.def文件 + \ifboolexpr{% + test{\iffieldundef{title}}% + and% + test{\iffieldundef{subtitle}}% + }% + {}% + {\printtext[title]{\bibtitlefont% + \printfield[titlecase]{title}% + \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题 + {}{\setunit{\subtitlepunct}% + \printfield[titlecase]{subtitle}}% + \iffieldundef{titleaddon}{}%判断一下titleaddon,否则直接加可能多一个空格 + {\setunit{\subtitlepunct}\printfield{titleaddon}}% + \setunit{\subtitlepunct}\printfield{number}%写专利号 + \iftoggle{bbx:gbtype}{\printfield[gbtypeflag]{usera}}{}% + %\iffieldundef{booktitle}{\newunit}{}%当title是析出时,不要标点 + %\newunit + }% +}% +} + + + +% +% 修改in:用于inbook、incollection、inproceedings等类型 +% 2018.04.20,v1.0k,renewed marco,by hzz +% 20190212,v1.0q,增加中英文区分,by hzz +% +% 原理方法:使用bibmacro{in:}改变了以前在driver中直接输出//的方式,同时也简化了标点控制。 +\renewbibmacro*{in:}{% + \iftoggle{bbx:gbpunctin}{\printtext{\allowbreak\texttt{//}\allowbreak}}%\addthinspace + {\setunit{\adddot\addspace}% + \iffieldequalstr{userd}{chinese}% + {\printtext{\bibstring{incn}}}% + {\printtext{\bibstring{in}}}% + }}%\newunit\newblock\intitlepunct + +% +% 修改type域的输出格式 +% 2019.02.12,v1.0q,byhzz +% 使其可以区分中英文输出不同的格式,比如博士论文英文输出PHD thesis,中文则是博士学位论文 +\DeclareFieldFormat{type}% +{\iffieldequalstr{userd}{chinese}% + {\ifbibxstring{#1cn}{\bibxstring{#1cn}}{#1}}% + {\ifbibstring{#1}{\bibstring{#1}}{#1}}% +} + + +% +% 修改series域的输出格式 +% 2019.05.01,v1.0r,byhzz +\renewbibmacro*{series+number}{% + \printfield{series}% + %\setunit*{\addspace}% + %\printfield{number}% + %\newunit + } + +%===================================================================== +%设置驱动格式 +%===================================================================== +% +% book条目类的驱动 +% + \DeclareBibliographyDriver{book}{%源来自standard.bbx文件 + \usebibmacro{bibindex}% + \usebibmacro{begentry}% +\usebibmacro{author/editor+others/translator+others}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 +\usebibmacro{maintitle+title}% +\iftoggle{bbx:gbstrict}{}{% +\newunit +\printlist{language}% +\newunit\newblock% +\usebibmacro{byauthor}% +\newunit\newblock}% +\usebibmacro{byeditor+others}% +\newunit +\printfield{edition}% +\newunit\newblock%% +\iftoggle{bbx:gbstrict}{}{% +\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}% + \iffieldundef{url}{}{%当没有网址时也不输出 + \usebibmacro{modifydate}}%带括号的修改或更新日期, +\usebibmacro{doi+eprint+url}%从下面移动到上面来,因为gbt2015的url需直接放在页码后面。 + \newunit\newblock% + \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}\usebibmacro{annotation}} + + +% +% 期刊文章,连续出版物中的析出文献的格式 +% + \DeclareBibliographyDriver{article}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author/translator+others}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 + \usebibmacro{title}% + \iftoggle{bbx:gbstrict}{}{% + \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}% + \iffieldequalstr{note}{news}{}{%当是新闻时不输出修改或更新日期 + \iffieldundef{url}{}{%当没有网址时也不输出 + \iftoggle{bbx:url}{%当url选项为false时,也不输出 + \usebibmacro{modifydate}}{}}}%带括号的修改或更新日期, + \usebibmacro{doi+eprint+url}%从后面移上来,调整url和页码之间的位置 + \newunit\newblock + \iftoggle{bbx:isbn} + {\printfield{issn}} + {}% + \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}\usebibmacro{annotation}} + + + +% +% 连续出版物的驱动 +% + \DeclareBibliographyDriver{periodical}{%源来自standard.BBX + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{editor}% + %\setunit{\labelnamepunct}\newblock + \newunit\newblock %删除上面一行,添加这一行 + \usebibmacro{title+issuetitle}% + \newunit\newblock% + \usebibmacro{location+institution+date}%添加这一行用于输出地址,单位和时间 + \newunit\newblock%添加这一行 + \iftoggle{bbx:gbstrict}{}{% + \printlist{language}% + \newunit\newblock + \usebibmacro{byeditor}% + \newunit\newblock + \printfield{note}% + \newunit\newblock} + \iftoggle{bbx:isbn} + {\printfield{issn}} + {}% + \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}\usebibmacro{annotation}} + +% +% 专利文献驱动 +% + \DeclareBibliographyDriver{patent}{%源来自standard.BBX + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 + %\usebibmacro{title}% + \usebibmacro{patenttitle}%给出专利专用的标题输出 + \iftoggle{bbx:gbstrict}{}{% + \newunit% + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}}% + \newunit\newblock + \printfield{type}% + \setunit*{\addspace}% + %\printfield{number}%已放到patenttitle中处理 + \iflistundef{location} + {} + {\setunit*{\addspace}% + \printtext{%[parens] + \printlist[][-\value{listtotal}]{location}}}% + \newunit\newblock + \usebibmacro{byholder}% + \newunit\newblock + \printfield{note}% + \newunit\newblock + \usebibmacro{newsdate}% + %\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}\usebibmacro{annotation}} + + +% +% 在线文献驱动 +% +\DeclareBibliographyDriver{online}{%源来自standard.BBX + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author/editor+others/translator+others}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 + \usebibmacro{title}% + \iftoggle{bbx:gbstrict}{}{% + \newunit% + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{byeditor+others}% + \newunit\newblock + \printfield{note}}% + \newunit + \printfield{version}% + \newunit\newblock + %\printlist{organization}% + \printlist{institution}% + \newunit\newblock +\ifboolexpr{% +test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}% +}{\usebibmacro{date}}% +{\usebibmacro{modifydate}}%修改或更新日期,为带括号的时间 + \usebibmacro{url+urldate}%从下面移上来 + \newunit\newblock + \iftoggle{bbx:eprint} + {\usebibmacro{eprint}} + {}% + \newunit\newblock + %\usebibmacro{url+urldate}% + %\newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% + \usebibmacro{finentry}\usebibmacro{annotation}} + + +% +% 报告类型驱动 +% 当有网址无出版项时,用online输出 +% +\DeclareBibliographyDriver{report}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 + \usebibmacro{title}% + \iftoggle{bbx:gbstrict}{}{% + \newunit% + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}}% + \newunit\newblock + \usebibmacro{byeditor+others}%增加的译者信息 + \newunit\newblock + \printfield{type}% + \setunit*{\addspace}% + \printfield{number}% + \newunit\newblock + \printfield{version}% + \newunit + \printfield{note}% + \newunit\newblock + \usebibmacro{publisher+location+date}% + %\newunit\newblock + \usebibmacro{chapter+pages}% + \usebibmacro{doi+eprint+url}% + \newunit + \printfield{pagetotal}% + \newunit\newblock + \iftoggle{bbx:isbn} + {\printfield{isrn}} + {}% + \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}\usebibmacro{annotation}} + +% +% 论文、手册类型驱动 +% 2016-11-11,增加了译者信息 +% +\DeclareBibliographyDriver{manual}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 + \usebibmacro{title}% + \iftoggle{bbx:gbstrict}{}{% + \newunit% + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}}% + \newunit\newblock + \usebibmacro{byeditor+others}%增加的译者信息 + \newunit\newblock + \iftoggle{bbx:gbfieldtype}{% + \printfield{type}% + \setunit*{\addspace}}{}% + \printfield{number}% + \newunit\newblock + \printfield{version}% + \newunit + \printfield{note}% + \newunit\newblock + \usebibmacro{institution+location+date}% + %\newunit\newblock + \usebibmacro{chapter+pages}% + \iffieldundef{url}{}{%当没有网址时也不输出修改或更新日期 + \usebibmacro{modifydate}}%修改或更新日期为带括号的时间 + \usebibmacro{doi+eprint+url}% + \newunit + \printfield{pagetotal}% + \newunit\newblock + \iftoggle{bbx:isbn} + {\printfield{isrn}} + {}% + \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}\usebibmacro{annotation}} + +% +% 备选类型驱动 +% +% 利用biblatex的misc驱动 +\DeclareBibliographyDriver{misc}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author/editor+others/translator+others}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 + \usebibmacro{title}% +\iftoggle{bbx:gbstrict}{}{% + \newunit + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{byeditor+others}}% + \newunit\newblock + \printfield{howpublished}% + \newunit\newblock + \printfield{type}% + \newunit + \printfield{version}% + \newunit + \printfield{note}% + \newunit\newblock + \usebibmacro{institution+location+date}% + %\usebibmacro{organization+location+date}% + %\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}\usebibmacro{annotation}} + + +% +% 专著中的析出文献的格式修改 +% +\DeclareBibliographyDriver{inbook}{%源来自standard.bbx + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author/translator+others}% +\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 +\usebibmacro{title}% +\usebibmacro{in:}% +%\printtext{\texttt{//}\addthinspace}% + \usebibmacro{bybookauthor}% + \ifnameundef{bookauthor}{% + \ifnameundef{editor}{}{\newunit}% + }{\newunit}%替换下一句 + %\newunit\newblock +\iffieldundef{series}{}{\usebibmacro{series+number}\setunit{\addcolon\addspace}}%为处理一些存在series的情况而增加 + \usebibmacro{maintitle+booktitle}% +\iffieldundef{volume}{}{\setunit{\addcolon\addspace}\printfield{volume}}% +\iffieldundef{number}{}{\setunit{\addcolon\addspace}\printfield{number}}%增加卷和册信息 + \newunit\newblock% +% \usebibmacro{byeditor+others}% +% \newunit\newblock + \printfield{edition}% + \newunit + \iftoggle{bbx:gbstrict}{}{% +% \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 + \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}\usebibmacro{annotation}} + + +% +%针对不同refsection做不同的格式处理的代码 +% + +% +%默认采用顺序编码制,因此只需增加的是作者年制 +\newrobustcmd{\setaystylesection}[1]{\csxdef{gb@aystyle@section#1}{#1}} + +% +%在AtBeginBibliography处已经无法重定义defbibenvironment{bibliographyay} +%所以输出只能是用另外定义的环境来实现 +%可以在refsection后面做patch +%为排序引入newrefcontext +\apptocmd{\refsection}{ +\edef\gb@refsecnum{\number\c@refsection}% +\ifcsdef{gb@aystyle@section\gb@refsecnum}% +{ +\newrefcontext[sorting=gb7714-2015] + +\setlength{\bibhang}{1em} +\setlength{\bibitemindent}{-\bibhang} +\defbibenvironment{bibliography} + {\list + {} + {\setlength{\leftmargin}{\bibhang}% + \setlength{\itemindent}{\bibitemindent}% + \setlength{\itemsep}{\bibitemsep}% + \setlength{\parsep}{\bibparsep}}} + {\endlist} + {\item} +}{} +}{}{} + +% +%为排序引入endrefcontext +% +\pretocmd{\endrefsection}{ +\edef\gb@refsecnum{\number\c@refsection}% +\ifcsdef{gb@aystyle@section\gb@refsecnum}% +{\endrefcontext}{} +}{}{} + +%因为是整个文献表,在打印文献表的时候,增加钩子代码 +%因为下面的钩子是在defbibenvironment的begincode之后,所以对于defbibenvironment相关的设置都是无效的 +\AtBeginBibliography{ + +\edef\gb@refsecnum{\number\c@refsection}% +\ifcsdef{gb@aystyle@section\gb@refsecnum}% +%\ifboolexpr{ +%not test {\ifcsundef{gb@aystyle@section\gb@refsecnum}} +%and +%test {\ifcsequal{gb@refsecnum}{gb@aystyle@section\gb@refsecnum}} +%} + { + + \DeclareDelimFormat{nameyeardelim}{\addcomma\space} + \DeclareDelimFormat[bib,biblist]{nameyeardelim}{\addcomma\space} + + \renewbibmacro*{date}{% + \iflabeldateisdate + {} + {\printdate}}% + + \renewbibmacro*{date+extradate}{% + \iffieldundef{labelyear} + {} + {\printtext{%[parens]%这里去掉括号 + \iflabeldateisdate + {\printdateextra} + {\printlabeldateextra}}}}% + + \newbibmacro*{bbx:savehash}{% + \savefield{fullhash}{\bbx@lasthash}} + + \newbibmacro*{bbx:dashcheck}[2]{} + + %注意这里当没有作者只有标题时在年份之前的标点是否需要标准并未涉及,所以未做处理。 + \renewbibmacro*{author}{%以前的date+extrayear变为date+extradate,所以对3.8以上版本重定义一下author + \ifboolexpr{ + test \ifuseauthor + and + not test {\ifnameundef{author}} + } + {% + \usebibmacro{bbx:savehash}% + \printnames{author}% + \iffieldundef{authortype} + {\setunit{\printdelim{nameyeardelim}}} + {\setunit{\printdelim{authortypedelim}}}% + \iffieldundef{authortype} + {} + {\usebibmacro{authorstrg}% + \setunit{\printdelim{nameyeardelim}}} + }% + {\global\undef\bbx@lasthash + \usebibmacro{labeltitle}% + \setunit*{\printdelim{nonameyeardelim}}}% + \usebibmacro{date+extradate}} + + \newbibmacro*{labeltitle}{% + \iffieldundef{label} + {\iffieldundef{shorttitle} + {\printfield{title}% + \clearfield{title}} + {\printfield[title]{shorttitle}}} + {\printfield{label}}} + +% +% 增加一个number带括号的格式,避免使用mkbibparens而引入一个不必要的空格 +% +\DeclareFieldFormat{addnumflag}{% +\nobreak\printtext{(}\nobreak #1\nobreak\printtext{)}} + +% +% 调整journal输出 +% +% 原理方法:首先判断子标题,然后再设置标点。 +% 避免直接设置标点后,当volume不存在时需要使用\nopuct去标点进而引入不必要的空格 +\renewbibmacro*{journal}{% + \iffieldundef{journaltitle}% + {}% + {\printtext[journaltitle]{% + \printfield[titlecase]{journaltitle}% + \iffieldundef{journalsubtitle}{}{\setunit{\subtitlepunct}% + \printfield[titlecase]{journalsubtitle}}}}} + + + +% +% 调整期刊卷和期的格式 +% +\renewbibmacro*{volume+number+eid}{%源来自standard.bbx +\iftoggle{bbx:gbfieldstd}{% + \printfield{volume}% + \setunit*{\adddot}% + \printfield{number}% + \setunit{\addcomma\space}% + \printfield{eid}}{% + \printfield{volume}% + %\setunit*{\adddot}%去掉点号 + %\printfield{number}% + \iffieldundef{number}{}{\printfield[addnumflag]{number}}%区别于顺序编码制 + \iffieldundef{eid}{}{% + \setunit{\addcomma\space}% + \printfield{eid}}}} + +% +% 调整期刊年份的格式 +% +% 原理方法:原在authoryear.BBX中\bbx@opt@mergedate@compact中定义 +% 当issue存在时,才设置newunit。避免直接设置标点后,当volume不存在是需要使用\nopuct去标点进而引入不必要的空格 + \renewbibmacro*{issue+date}{% + \iffieldundef{issue}% + {}% + {\iftoggle{bbx:gbstrict}{}{\printtext[parens]{\printfield{issue}}\newunit}}} + +% +% 编者的符号修改一下 +% v1.0 2016-07-01 +% v1.0q 2019-03-01 hzz 修改editortype前的标点 +% +\renewbibmacro*{editor}{% + \ifboolexpr{ + test \ifuseeditor + and + not test {\ifnameundef{editor}} + } + {\usebibmacro{bbx:dashcheck} + {%\bibnamedash + \printnames{editor}% + } + {\printnames{editor}% + %\setunit{\printdelim{editortypedelim}}% + %\usebibmacro{bbx:savehash} + }% + \usebibmacro{editorstrg}% + %\clearname{editor}% + \setunit{\printdelim{nameyeardelim}}}% + {\global\undef\bbx@lasthash + \usebibmacro{labeltitle}% + \setunit*{\printdelim{nonameyeardelim}}}% + \ifboolexpr{% + test {\ifentrytype{inbook}} + or + test {\ifentrytype{incollection}} + or + test {\ifentrytype{inproceedings}} + or + test {\ifentrytype{conference}} + }% + {}% + {\usebibmacro{date+extradate}}} + + + }{} + + + +} + + + +% +%针对具体条目做处理时的特殊处理 +% +%\def\localsetrefsectionstyle{% +%} + +%\AtEveryBibitem{\localsetrefsectionstyle}% +%\AtEveryCite{\localsetchinesecode}% +%\AtEveryLositem{\localsetchinesecode}% diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015mx.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015mx.cbx index d1d882e4df..52ea63a1d3 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015mx.cbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015mx.cbx @@ -1,466 +1,466 @@ -%% -%% --------------------------------------------------------------- -%% biblatex-gb7714-2015 --- A biblatex implementation of the -%% GBT7714-2015 citation style,numerical sequence -%% Maintained by huzhenzhen -%% E-mail: hzzmail@163.com -%% Released under the LaTeX Project Public License v1.3c or later -%% --------------------------------------------------------------- -%% -\def\versionofgbtstyle{2020/07/21 v1.0v} -\ProvidesFile{gb7714-2015mx.cbx}[\versionofgbtstyle biblatex citation style] - -% -% 加载标准样式 -% -\RequireCitationStyle{numeric-comp} %numeric - - -% -% 选项设置 -% -\ExecuteBibliographyOptions{ - %autocite = superscript , - %autopunct = true , - %sorting = none , - maxcitenames=1, - mincitenames=1, - uniquename=init,%因为使用了名字缩写选项,所以需要设置uniquename=init而不是full避免冲突 - uniquelist=minyear, - labeldateparts, - sortcites, -} - - - -% -% 定义一个上标方括号wrapper -% -\newcommand*\mkbibsuperbracket[1]{% - \mkbibsuperscript{\mkbibbrackets{#1}}% -} - -% 修改postnote的输出格式 -\DeclareFieldFormat{postnote}{#1} - -% -% 重定义cite命令 -% -% 方法:\DeclareCiteCommand{\cite}[\mkbibparens]{precode}{loopcode}{sepcode}{postcode} -% v1.0p版后将cite的处理方式修改为类似pagescite,而不再使用biblatex的标准方式 -\DeclareCiteCommand{\cite}[\mkbibsuperscript]%利用mkbibsuperbracket添加方括号 - {[\usebibmacro{cite:init}% - \usebibmacro{prenote}} - {\usebibmacro{citeindex}% - \usebibmacro{cite:comp}} - {} - {\usebibmacro{cite:dump}]% - \printfield{postnote}} -% v1.0p 以前用的方式 -%\DeclareCiteCommand{\cite}[\mkbibsuperbracket]%利用mkbibsuperbracket添加方括号 -% {\usebibmacro{cite:init}% -% \usebibmacro{prenote}} -% {\usebibmacro{citeindex}% -% \usebibmacro{cite:comp}} -% {} -% {\usebibmacro{cite:dump}% -% \usebibmacro{postnote}} - -% -% 定义upcite命令 -% 20180604,v1.0l,hzz -% 20190409,v1.0r,hzz -% 方法:对supercite增加[] -\newrobustcmd*{\upcite}{% - \cite} - -% -% 重定义parencite命令,以满足标签带页码的国标要求 -% -\DeclareCiteCommand{\parencite}%[\mkbibbrackets] - {[\usebibmacro{cite:init}%] - \usebibmacro{prenote}}% - {\usebibmacro{citeindex}% - \usebibmacro{cite:comp}} - {} - {%[ - \usebibmacro{cite:dump}]% - \mkbibsuperscript{\printfield{postnote}}} - -% -% 新定义pagescite命令,以满足标签带页码的国标要求 -% -% 原理方法: -% 1.新增页码输出宏 -\newbibmacro*{postpages}{% - \iffieldundef{postnote} - {\printfield[postnote]{pages}} - {\printfield{postnote}}} -% 2.新增\pagescite引用命令 -\DeclareCiteCommand{\pagescite}[\mkbibsuperscript]%\mkbibbrackets,仍然用上标 - {[\usebibmacro{cite:init}%]直接添加方括号 - \usebibmacro{prenote}% - } - {\usebibmacro{citeindex}% - \usebibmacro{cite:comp}} - {} - {\usebibmacro{cite:dump}]% - \usebibmacro{postpages}} - -% -% 定义yearpagescite,为与ay样式兼容,等同于\pagescite -% -\DeclareCiteCommand{\yearpagescite}[\mkbibsuperscript]%\mkbibbrackets,仍然用上标 - {[\usebibmacro{cite:init}%]直接添加方括号 - \usebibmacro{prenote}% - } - {\usebibmacro{citeindex}% - \usebibmacro{cite:comp}} - {} - {\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}]} - -% -% 定义\authornumcite命令,输出作者信息,然后在后面带上顺序编码 -% 20180427,v1.0k,增加,hzz -% gb7714样式新定义的命令都把cite放到最后,比如前面的pagescite,yearcite,这里的\authornumcite -% 区别于biblatex定义的命令都把cite放到前面,比如citeauthor等。 -%见numeric.CBX -\newbibmacro*{cite}{% - \printtext[bibhyperref]{% - \printfield{labelprefix}% - \printfield{labelnumber}% - \ifbool{bbx:subentry} - {\printfield{entrysetcount}} - {}}} -%见numeric.CBX,\DeclareCiteCommand{\cite}, -\DeclareCiteCommand{\authornumcite}%[\mkbibsuperscript] - {\usebibmacro{prenote}} - {\iffieldequalstr{userf}{cn}{\renewcommand*{\andothersdelim}{\addthinspace}}%\addthinspace - {\renewcommand*{\andothersdelim}{\addspace}}% - \printnames{labelname}\mkbibsuperscript{\mkbibbrackets{\usebibmacro{citeindex}% - \usebibmacro{cite}}}} - {\multicitedelim} - {\mkbibsuperscript{\printfield{postnote}}} - - -% -% 增加如下多个命令 -% 20190409,v1.0r,hzz -% 方法:利用newcommand或newrobustcmd命令进行定义 -% 注意\citet和\citep命令之所以不用newrobustcmd,是为避免加载natbib模块后产生冲突 -\DeclareCiteCommand{\citet}% - {\usebibmacro{prenote}} - {\iffieldequalstr{userf}{cn}{\renewcommand*{\andothersdelim}{\addthinspace}}%\addthinspace - {\renewcommand*{\andothersdelim}{\addspace}}% - \printnames{labelname}\mkbibsuperscript{\mkbibbrackets{\usebibmacro{citeindex}% - \usebibmacro{cite}}}} - {\multicitedelim} - {\mkbibsuperscript{\printfield{postnote}}} - - -\DeclareCiteCommand{\citep}[\mkbibsuperscript]%利用mkbibsuperbracket添加方括号 - {[\usebibmacro{cite:init}% - \usebibmacro{prenote}} - {\usebibmacro{citeindex}% - \usebibmacro{cite:comp}} - {} - {\usebibmacro{cite:dump}]% - \printfield{postnote}} - -\newrobustcmd*{\citetns}% - {\textcite} - -\newrobustcmd*{\citepns}% - {\parencite} - -\newrobustcmd*{\inlinecite}% - {\parencite} - - -%textcite标注命令中的标点设置 -%\DeclareDelimFormat[textcite]{andothersdelim}{\addspace}% - -%textcite标注命令中的标点设置,注意只针对textcite命令。 -\DeclareDelimFormat[textcite]{nameyeardelim}{}%\addcomma\space -\DeclareDelimFormat[textcite]{andothersdelim}{\iffieldequalstr{userf}{chinese}{\addthinspace}{\addspace}}% -\AtEveryCitekey{% -\iffieldequalstr{userf}{chinese}{\renewcommand*{\andothersdelim}{\addthinspace}}%\addthinspace - {\renewcommand*{\andothersdelim}{\addspace}}% -} - -% -% -% -\apptocmd{\refsection}{ - -%\edef\gb@refsecnum{\number\c@refsection} -\edef\gb@refsecnum{\number\c@refsection}% -\ifcsundef{gb@aystyle@section\gb@refsecnum}% -{}% -{ - -\renewcommand*{\iffinalcitedelim}{% - \ifnumequal{\value{textcitecount}}{\value{textcitetotal}-1}} - -\newbibmacro*{cite:init}{% - \ifnumless{\value{multicitecount}}{2} - {\global\boolfalse{cbx:parens}% - \global\undef\cbx@lasthash - \global\undef\cbx@lastyear} - {\iffieldundef{prenote} - {} - {\global\undef\cbx@lasthash - \global\undef\cbx@lastyear}}} - -\newbibmacro*{cite:reinit}{% - \global\undef\cbx@lasthash - \global\undef\cbx@lastyear} - -\newbibmacro*{cite}{% - \iffieldundef{shorthand} - {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}} - {\usebibmacro{cite:label}% - \setunit{\printdelim{nonameyeardelim}}% - \usebibmacro{cite:labeldate+extradate}% - \usebibmacro{cite:reinit}} - {\iffieldequals{namehash}{\cbx@lasthash} - {\ifthenelse{\iffieldequals{labelyear}{\cbx@lastyear}\AND - \(\value{multicitecount}=0\OR\iffieldundef{postnote}\)} - {\setunit{\addcomma}% - \usebibmacro{cite:extradate}} - {\setunit{\compcitedelim}% - \usebibmacro{cite:labeldate+extradate}% - \savefield{labelyear}{\cbx@lastyear}}} - {\printnames{labelname}% - \setunit{\printdelim{nameyeardelim}}% - \usebibmacro{cite:labeldate+extradate}% - \savefield{namehash}{\cbx@lasthash}% - \savefield{labelyear}{\cbx@lastyear}}}} - {\usebibmacro{cite:shorthand}% - \usebibmacro{cite:reinit}}% - \setunit{\multicitedelim}} - -\newbibmacro*{citeyear}{% - \iffieldundef{shorthand} - {\iffieldundef{labelyear} - {\usebibmacro{cite:label}% - \usebibmacro{cite:reinit}} - {\iffieldequals{namehash}{\cbx@lasthash} - {\ifthenelse{\iffieldequals{labelyear}{\cbx@lastyear}\AND - \(\value{multicitecount}=0\OR\iffieldundef{postnote}\)} - {\setunit{\addcomma}% - \usebibmacro{cite:extradate}} - {\setunit{\compcitedelim}% - \usebibmacro{cite:labeldate+extradate}% - \savefield{labelyear}{\cbx@lastyear}}} - {\usebibmacro{cite:labeldate+extradate}% - \savefield{namehash}{\cbx@lasthash}% - \savefield{labelyear}{\cbx@lastyear}}}} - {\usebibmacro{cite:shorthand}% - \usebibmacro{cite:reinit}}% - \setunit{\multicitedelim}} - -\newbibmacro*{textcite}{% - \iffieldequals{namehash}{\cbx@lasthash} - {\iffieldundef{shorthand} - {\ifthenelse{\iffieldequals{labelyear}{\cbx@lastyear}\AND - \(\value{multicitecount}=0\OR\iffieldundef{postnote}\)} - {\setunit{\addcomma}% - \usebibmacro{cite:extradate}} - {\setunit{\compcitedelim}% - \usebibmacro{cite:labeldate+extradate}% - \savefield{labelyear}{\cbx@lastyear}}} - {\setunit{\compcitedelim}% - \usebibmacro{cite:shorthand}% - \global\undef\cbx@lastyear}} - {\ifnameundef{labelname} - {\iffieldundef{shorthand} - {\usebibmacro{cite:label}% - \setunit{% - \global\booltrue{cbx:parens}% - \printdelim{nonameyeardelim}\bibopenparen}% - \ifnumequal{\value{citecount}}{1} - {\usebibmacro{prenote}} - {}% - \usebibmacro{cite:labeldate+extradate}} - {\usebibmacro{cite:shorthand}}} - {\printnames{labelname}% - \setunit{% - \global\booltrue{cbx:parens}% - \printdelim{nameyeardelim}\bibopenparen}% - \ifnumequal{\value{citecount}}{1} - {\usebibmacro{prenote}} - {}% - \iffieldundef{shorthand} - {\iffieldundef{labelyear} - {\usebibmacro{cite:label}} - {\usebibmacro{cite:labeldate+extradate}}% - \savefield{labelyear}{\cbx@lastyear}} - {\usebibmacro{cite:shorthand}% - \global\undef\cbx@lastyear}}% - \stepcounter{textcitecount}% - \savefield{namehash}{\cbx@lasthash}}% - \setunit{% - \ifbool{cbx:parens} - {\bibcloseparen\global\boolfalse{cbx:parens}} - {}% - \textcitedelim}} - -\newbibmacro*{cite:shorthand}{% - \printtext[bibhyperref]{\printfield{shorthand}}} - -% -% 重定义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}}}} - -\newbibmacro*{cite:labeldate+extradate}{% - \iffieldundef{labelyear} - {} - {\printtext[bibhyperref]{\printlabeldateextra}}} - -\newbibmacro*{cite:extradate}{% - \iffieldundef{extradate} - {} - {\printtext[bibhyperref]{\printfield{extradate}}}} - - - -% -% 重定义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}}}} - -% -% 重定义cite命令 -% -% 方法:\DeclareCiteCommand{\cite}[\mkbibparens]{precode}{loopcode}{sepcode}{postcode} -% v1.0p版后将cite的处理方式修改为类似pagescite,而不再使用biblatex的标准方式 -\DeclareCiteCommand{\cite} - {\usebibmacro{cite:init}% - \renewbibmacro*{postnote}{% - \iffieldundef{postnote}% - {}% - {\thefield{postnote}}}% - (\usebibmacro{prenote}}%) - {\usebibmacro{citeindex}% - \usebibmacro{cite}} - {} - {%( - )\mkbibsuperscript{\usebibmacro{postnote}}%\usebibmacro{postnote} - } - -\DeclareCiteCommand{\parencite}[\mkbibparens] - {\usebibmacro{cite:init}% - \usebibmacro{prenote}} - {\usebibmacro{citeindex}% - \usebibmacro{cite}} - {} - {\usebibmacro{postnote}} - -% -% 定义\authornumcite命令,输出作者信息,然后在后面带上顺序编码 -% 20180427,v1.0k,增加,hzz -% 20190409,v1.0r,hzz -% 为与顺序编码制兼容,增加了命令,定义与citet相同 -\newbibmacro*{citet}{% - \iffieldundef{shorthand} - {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}} - {\usebibmacro{cite:label}% - \setunit{\printdelim{nonameyeardelim}}% - \usebibmacro{cite:labeldate+extradate}% - \usebibmacro{cite:reinit}} - {\iffieldequals{namehash}{\cbx@lasthash} - {\ifthenelse{\iffieldequals{labelyear}{\cbx@lastyear}\AND - \(\value{multicitecount}=0\OR\iffieldundef{postnote}\)} - {\setunit{\addcomma}% - \usebibmacro{cite:extradate}} - {\setunit{\compcitedelim}% - \usebibmacro{cite:labeldate+extradate}% - \savefield{labelyear}{\cbx@lastyear}}} - {\printnames{labelname}% - %\setunit{\printdelim{nameyeardelim}}% - (\usebibmacro{cite:labeldate+extradate})% - \savefield{namehash}{\cbx@lasthash}% - \savefield{labelyear}{\cbx@lastyear}}}} - {\usebibmacro{cite:shorthand}% - \usebibmacro{cite:reinit}}% - \setunit{\multicitedelim}} - -\DeclareCiteCommand{\authornumcite}% - {\usebibmacro{cite:init}% - \renewbibmacro*{postnote}{% - \iffieldundef{postnote}% - {}% - {\thefield{postnote}}}% - \usebibmacro{prenote}}% - {\usebibmacro{citeindex}% - \usebibmacro{citet}} - {} - {\mkbibsuperscript{\usebibmacro{postnote}}%\usebibmacro{postnote} - } - -% -% 增加如下多个命令 -% 20190409,v1.0r,hzz -% 方法:利用newcommand或newrobustcmd命令进行定义 -% 注意\citet和\citep命令之所以不用newrobustcmd,是为避免加载natbib模块后产生冲突 - -%同\authornumcite -\DeclareCiteCommand{\citet}% - {\usebibmacro{cite:init}% - \renewbibmacro*{postnote}{% - \iffieldundef{postnote}% - {}% - {\thefield{postnote}}}% - \usebibmacro{prenote}}% - {\usebibmacro{citeindex}% - \usebibmacro{citet}} - {} - {\mkbibsuperscript{\usebibmacro{postnote}}%\usebibmacro{postnote} - } - -%同cite -\DeclareCiteCommand{\citep} - {\usebibmacro{cite:init}% - \renewbibmacro*{postnote}{% - \iffieldundef{postnote}% - {}% - {\thefield{postnote}}}% - (\usebibmacro{prenote}}%) - {\usebibmacro{citeindex}% - \usebibmacro{cite}} - {} - {%( - )\mkbibsuperscript{\usebibmacro{postnote}}%\usebibmacro{postnote} - } - - -} -}{}{} +%% +%% --------------------------------------------------------------- +%% biblatex-gb7714-2015 --- A biblatex implementation of the +%% GBT7714-2015 citation style,numerical sequence +%% Maintained by huzhenzhen +%% E-mail: hzzmail@163.com +%% Released under the LaTeX Project Public License v1.3c or later +%% --------------------------------------------------------------- +%% +\def\versionofgbtstyle{2021/01/19 v1.0w} +\ProvidesFile{gb7714-2015mx.cbx}[\versionofgbtstyle biblatex citation style] + +% +% 加载标准样式 +% +\RequireCitationStyle{numeric-comp} %numeric + + +% +% 选项设置 +% +\ExecuteBibliographyOptions{ + %autocite = superscript , + %autopunct = true , + %sorting = none , + maxcitenames=1, + mincitenames=1, + uniquename=init,%因为使用了名字缩写选项,所以需要设置uniquename=init而不是full避免冲突 + uniquelist=minyear, + labeldateparts, + sortcites, +} + + + +% +% 定义一个上标方括号wrapper +% +\newcommand*\mkbibsuperbracket[1]{% + \mkbibsuperscript{\mkbibbrackets{#1}}% +} + +% 修改postnote的输出格式 +\DeclareFieldFormat{postnote}{#1} + +% +% 重定义cite命令 +% +% 方法:\DeclareCiteCommand{\cite}[\mkbibparens]{precode}{loopcode}{sepcode}{postcode} +% v1.0p版后将cite的处理方式修改为类似pagescite,而不再使用biblatex的标准方式 +\DeclareCiteCommand{\cite}[\mkbibsuperscript]%利用mkbibsuperbracket添加方括号 + {[\usebibmacro{cite:init}% + \usebibmacro{prenote}} + {\usebibmacro{citeindex}% + \usebibmacro{cite:comp}} + {} + {\usebibmacro{cite:dump}]% + \printfield{postnote}} +% v1.0p 以前用的方式 +%\DeclareCiteCommand{\cite}[\mkbibsuperbracket]%利用mkbibsuperbracket添加方括号 +% {\usebibmacro{cite:init}% +% \usebibmacro{prenote}} +% {\usebibmacro{citeindex}% +% \usebibmacro{cite:comp}} +% {} +% {\usebibmacro{cite:dump}% +% \usebibmacro{postnote}} + +% +% 定义upcite命令 +% 20180604,v1.0l,hzz +% 20190409,v1.0r,hzz +% 方法:对supercite增加[] +\newrobustcmd*{\upcite}{% + \cite} + +% +% 重定义parencite命令,以满足标签带页码的国标要求 +% +\DeclareCiteCommand{\parencite}%[\mkbibbrackets] + {[\usebibmacro{cite:init}%] + \usebibmacro{prenote}}% + {\usebibmacro{citeindex}% + \usebibmacro{cite:comp}} + {} + {%[ + \usebibmacro{cite:dump}]% + \mkbibsuperscript{\printfield{postnote}}} + +% +% 新定义pagescite命令,以满足标签带页码的国标要求 +% +% 原理方法: +% 1.新增页码输出宏 +\newbibmacro*{postpages}{% + \iffieldundef{postnote} + {\printfield[postnote]{pages}} + {\printfield{postnote}}} +% 2.新增\pagescite引用命令 +\DeclareCiteCommand{\pagescite}[\mkbibsuperscript]%\mkbibbrackets,仍然用上标 + {[\usebibmacro{cite:init}%]直接添加方括号 + \usebibmacro{prenote}% + } + {\usebibmacro{citeindex}% + \usebibmacro{cite:comp}} + {} + {\usebibmacro{cite:dump}]% + \usebibmacro{postpages}} + +% +% 定义yearpagescite,为与ay样式兼容,等同于\pagescite +% +\DeclareCiteCommand{\yearpagescite}[\mkbibsuperscript]%\mkbibbrackets,仍然用上标 + {[\usebibmacro{cite:init}%]直接添加方括号 + \usebibmacro{prenote}% + } + {\usebibmacro{citeindex}% + \usebibmacro{cite:comp}} + {} + {\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}]} + +% +% 定义\authornumcite命令,输出作者信息,然后在后面带上顺序编码 +% 20180427,v1.0k,增加,hzz +% gb7714样式新定义的命令都把cite放到最后,比如前面的pagescite,yearcite,这里的\authornumcite +% 区别于biblatex定义的命令都把cite放到前面,比如citeauthor等。 +%见numeric.CBX +\newbibmacro*{cite}{% + \printtext[bibhyperref]{% + \printfield{labelprefix}% + \printfield{labelnumber}% + \ifbool{bbx:subentry} + {\printfield{entrysetcount}} + {}}} +%见numeric.CBX,\DeclareCiteCommand{\cite}, +\DeclareCiteCommand{\authornumcite}%[\mkbibsuperscript] + {\usebibmacro{prenote}} + {\iffieldequalstr{userf}{cn}{\renewcommand*{\andothersdelim}{\addthinspace}}%\addthinspace + {\renewcommand*{\andothersdelim}{\addspace}}% + \printnames{labelname}\mkbibsuperscript{\mkbibbrackets{\usebibmacro{citeindex}% + \usebibmacro{cite}}}} + {\multicitedelim} + {\mkbibsuperscript{\printfield{postnote}}} + + +% +% 增加如下多个命令 +% 20190409,v1.0r,hzz +% 方法:利用newcommand或newrobustcmd命令进行定义 +% 注意\citet和\citep命令之所以不用newrobustcmd,是为避免加载natbib模块后产生冲突 +\DeclareCiteCommand{\citet}% + {\usebibmacro{prenote}} + {\iffieldequalstr{userf}{cn}{\renewcommand*{\andothersdelim}{\addthinspace}}%\addthinspace + {\renewcommand*{\andothersdelim}{\addspace}}% + \printnames{labelname}\mkbibsuperscript{\mkbibbrackets{\usebibmacro{citeindex}% + \usebibmacro{cite}}}} + {\multicitedelim} + {\mkbibsuperscript{\printfield{postnote}}} + + +\DeclareCiteCommand{\citep}[\mkbibsuperscript]%利用mkbibsuperbracket添加方括号 + {[\usebibmacro{cite:init}% + \usebibmacro{prenote}} + {\usebibmacro{citeindex}% + \usebibmacro{cite:comp}} + {} + {\usebibmacro{cite:dump}]% + \printfield{postnote}} + +\newrobustcmd*{\citetns}% + {\textcite} + +\newrobustcmd*{\citepns}% + {\parencite} + +\newrobustcmd*{\inlinecite}% + {\parencite} + + +%textcite标注命令中的标点设置 +%\DeclareDelimFormat[textcite]{andothersdelim}{\addspace}% + +%textcite标注命令中的标点设置,注意只针对textcite命令。 +\DeclareDelimFormat[textcite]{nameyeardelim}{}%\addcomma\space +\DeclareDelimFormat[textcite]{andothersdelim}{\iffieldequalstr{userf}{chinese}{\addthinspace}{\addspace}}% +\AtEveryCitekey{% +\iffieldequalstr{userf}{chinese}{\renewcommand*{\andothersdelim}{\addthinspace}}%\addthinspace + {\renewcommand*{\andothersdelim}{\addspace}}% +} + +% +% +% +\apptocmd{\refsection}{ + +%\edef\gb@refsecnum{\number\c@refsection} +\edef\gb@refsecnum{\number\c@refsection}% +\ifcsundef{gb@aystyle@section\gb@refsecnum}% +{}% +{ + +\renewcommand*{\iffinalcitedelim}{% + \ifnumequal{\value{textcitecount}}{\value{textcitetotal}-1}} + +\newbibmacro*{cite:init}{% + \ifnumless{\value{multicitecount}}{2} + {\global\boolfalse{cbx:parens}% + \global\undef\cbx@lasthash + \global\undef\cbx@lastyear} + {\iffieldundef{prenote} + {} + {\global\undef\cbx@lasthash + \global\undef\cbx@lastyear}}} + +\newbibmacro*{cite:reinit}{% + \global\undef\cbx@lasthash + \global\undef\cbx@lastyear} + +\newbibmacro*{cite}{% + \iffieldundef{shorthand} + {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}} + {\usebibmacro{cite:label}% + \setunit{\printdelim{nonameyeardelim}}% + \usebibmacro{cite:labeldate+extradate}% + \usebibmacro{cite:reinit}} + {\iffieldequals{namehash}{\cbx@lasthash} + {\ifthenelse{\iffieldequals{labelyear}{\cbx@lastyear}\AND + \(\value{multicitecount}=0\OR\iffieldundef{postnote}\)} + {\setunit{\addcomma}% + \usebibmacro{cite:extradate}} + {\setunit{\compcitedelim}% + \usebibmacro{cite:labeldate+extradate}% + \savefield{labelyear}{\cbx@lastyear}}} + {\printnames{labelname}% + \setunit{\printdelim{nameyeardelim}}% + \usebibmacro{cite:labeldate+extradate}% + \savefield{namehash}{\cbx@lasthash}% + \savefield{labelyear}{\cbx@lastyear}}}} + {\usebibmacro{cite:shorthand}% + \usebibmacro{cite:reinit}}% + \setunit{\multicitedelim}} + +\newbibmacro*{citeyear}{% + \iffieldundef{shorthand} + {\iffieldundef{labelyear} + {\usebibmacro{cite:label}% + \usebibmacro{cite:reinit}} + {\iffieldequals{namehash}{\cbx@lasthash} + {\ifthenelse{\iffieldequals{labelyear}{\cbx@lastyear}\AND + \(\value{multicitecount}=0\OR\iffieldundef{postnote}\)} + {\setunit{\addcomma}% + \usebibmacro{cite:extradate}} + {\setunit{\compcitedelim}% + \usebibmacro{cite:labeldate+extradate}% + \savefield{labelyear}{\cbx@lastyear}}} + {\usebibmacro{cite:labeldate+extradate}% + \savefield{namehash}{\cbx@lasthash}% + \savefield{labelyear}{\cbx@lastyear}}}} + {\usebibmacro{cite:shorthand}% + \usebibmacro{cite:reinit}}% + \setunit{\multicitedelim}} + +\newbibmacro*{textcite}{% + \iffieldequals{namehash}{\cbx@lasthash} + {\iffieldundef{shorthand} + {\ifthenelse{\iffieldequals{labelyear}{\cbx@lastyear}\AND + \(\value{multicitecount}=0\OR\iffieldundef{postnote}\)} + {\setunit{\addcomma}% + \usebibmacro{cite:extradate}} + {\setunit{\compcitedelim}% + \usebibmacro{cite:labeldate+extradate}% + \savefield{labelyear}{\cbx@lastyear}}} + {\setunit{\compcitedelim}% + \usebibmacro{cite:shorthand}% + \global\undef\cbx@lastyear}} + {\ifnameundef{labelname} + {\iffieldundef{shorthand} + {\usebibmacro{cite:label}% + \setunit{% + \global\booltrue{cbx:parens}% + \printdelim{nonameyeardelim}\bibopenparen}% + \ifnumequal{\value{citecount}}{1} + {\usebibmacro{prenote}} + {}% + \usebibmacro{cite:labeldate+extradate}} + {\usebibmacro{cite:shorthand}}} + {\printnames{labelname}% + \setunit{% + \global\booltrue{cbx:parens}% + \printdelim{nameyeardelim}\bibopenparen}% + \ifnumequal{\value{citecount}}{1} + {\usebibmacro{prenote}} + {}% + \iffieldundef{shorthand} + {\iffieldundef{labelyear} + {\usebibmacro{cite:label}} + {\usebibmacro{cite:labeldate+extradate}}% + \savefield{labelyear}{\cbx@lastyear}} + {\usebibmacro{cite:shorthand}% + \global\undef\cbx@lastyear}}% + \stepcounter{textcitecount}% + \savefield{namehash}{\cbx@lasthash}}% + \setunit{% + \ifbool{cbx:parens} + {\bibcloseparen\global\boolfalse{cbx:parens}} + {}% + \textcitedelim}} + +\newbibmacro*{cite:shorthand}{% + \printtext[bibhyperref]{\printfield{shorthand}}} + +% +% 重定义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}}}} + +\newbibmacro*{cite:labeldate+extradate}{% + \iffieldundef{labelyear} + {} + {\printtext[bibhyperref]{\printlabeldateextra}}} + +\newbibmacro*{cite:extradate}{% + \iffieldundef{extradate} + {} + {\printtext[bibhyperref]{\printfield{extradate}}}} + + + +% +% 重定义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}}}} + +% +% 重定义cite命令 +% +% 方法:\DeclareCiteCommand{\cite}[\mkbibparens]{precode}{loopcode}{sepcode}{postcode} +% v1.0p版后将cite的处理方式修改为类似pagescite,而不再使用biblatex的标准方式 +\DeclareCiteCommand{\cite} + {\usebibmacro{cite:init}% + \renewbibmacro*{postnote}{% + \iffieldundef{postnote}% + {}% + {\thefield{postnote}}}% + (\usebibmacro{prenote}}%) + {\usebibmacro{citeindex}% + \usebibmacro{cite}} + {} + {%( + )\mkbibsuperscript{\usebibmacro{postnote}}%\usebibmacro{postnote} + } + +\DeclareCiteCommand{\parencite}[\mkbibparens] + {\usebibmacro{cite:init}% + \usebibmacro{prenote}} + {\usebibmacro{citeindex}% + \usebibmacro{cite}} + {} + {\usebibmacro{postnote}} + +% +% 定义\authornumcite命令,输出作者信息,然后在后面带上顺序编码 +% 20180427,v1.0k,增加,hzz +% 20190409,v1.0r,hzz +% 为与顺序编码制兼容,增加了命令,定义与citet相同 +\newbibmacro*{citet}{% + \iffieldundef{shorthand} + {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}} + {\usebibmacro{cite:label}% + \setunit{\printdelim{nonameyeardelim}}% + \usebibmacro{cite:labeldate+extradate}% + \usebibmacro{cite:reinit}} + {\iffieldequals{namehash}{\cbx@lasthash} + {\ifthenelse{\iffieldequals{labelyear}{\cbx@lastyear}\AND + \(\value{multicitecount}=0\OR\iffieldundef{postnote}\)} + {\setunit{\addcomma}% + \usebibmacro{cite:extradate}} + {\setunit{\compcitedelim}% + \usebibmacro{cite:labeldate+extradate}% + \savefield{labelyear}{\cbx@lastyear}}} + {\printnames{labelname}% + %\setunit{\printdelim{nameyeardelim}}% + (\usebibmacro{cite:labeldate+extradate})% + \savefield{namehash}{\cbx@lasthash}% + \savefield{labelyear}{\cbx@lastyear}}}} + {\usebibmacro{cite:shorthand}% + \usebibmacro{cite:reinit}}% + \setunit{\multicitedelim}} + +\DeclareCiteCommand{\authornumcite}% + {\usebibmacro{cite:init}% + \renewbibmacro*{postnote}{% + \iffieldundef{postnote}% + {}% + {\thefield{postnote}}}% + \usebibmacro{prenote}}% + {\usebibmacro{citeindex}% + \usebibmacro{citet}} + {} + {\mkbibsuperscript{\usebibmacro{postnote}}%\usebibmacro{postnote} + } + +% +% 增加如下多个命令 +% 20190409,v1.0r,hzz +% 方法:利用newcommand或newrobustcmd命令进行定义 +% 注意\citet和\citep命令之所以不用newrobustcmd,是为避免加载natbib模块后产生冲突 + +%同\authornumcite +\DeclareCiteCommand{\citet}% + {\usebibmacro{cite:init}% + \renewbibmacro*{postnote}{% + \iffieldundef{postnote}% + {}% + {\thefield{postnote}}}% + \usebibmacro{prenote}}% + {\usebibmacro{citeindex}% + \usebibmacro{citet}} + {} + {\mkbibsuperscript{\usebibmacro{postnote}}%\usebibmacro{postnote} + } + +%同cite +\DeclareCiteCommand{\citep} + {\usebibmacro{cite:init}% + \renewbibmacro*{postnote}{% + \iffieldundef{postnote}% + {}% + {\thefield{postnote}}}% + (\usebibmacro{prenote}}%) + {\usebibmacro{citeindex}% + \usebibmacro{cite}} + {} + {%( + )\mkbibsuperscript{\usebibmacro{postnote}}%\usebibmacro{postnote} + } + + +} +}{}{} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714texteg.dat b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714texteg.dat deleted file mode 100644 index 6fb3ef1a4a..0000000000 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714texteg.dat +++ /dev/null @@ -1,214 +0,0 @@ -[14] ANDERSEN J B, RAPPAPORT T S, YOSHIDA S. Propagation measurements and models for wireless communications channels[J]. IEEE Commun. Mag., 1995, 33(1): 42–49. -[49] 陈高峰. 基于开放式框架的交叉开发环境设计与实现[J]. 煤炭技术, 2011, 30(6): 230–232. -[51] 陈金成, 杨海威, 钟廷修. 一种开放式体系结构经济型数控装置的研制[J]. 上海交通大学学报, 2001, 35(12): 1861–1864. -[52] 高光明. 信号情报接收机的发展现状及趋势[J]. 电讯技术, 1998, 38(2): 60–65. -[53] 高翔, 李辰. 复杂航电架构的开放式系统标准研究[J]. 航空电子技术, 2015, 46(2): 26–31. -[55] 李炳穆. 理想的图书管理员和信息专家的素养与形象[J]. 图书情报工作, 2000(2): 5–8. -[48] ZHAO L, HAIMOVICH A M. Performance of ultra-wideband communications in the presence of interference[J]. IEEE J. Sel. Areas Commun., 2002, 20(9): 1684–1691. -[8] 张敏莉, 易仕和, 赵玉新. 超声速短化喷管的设计和试验研究[J]. 空气动力学报, 2007, 25(4): 500–503. - -[47] WALLS S C, BARICHIVICH W J, BROWN M E. Drought, deluge and declines: the impact of precipition extremes on amphibians in a changing climate[J/OL]. Biology, 2013, 2(1): 399–418[2013–11–04]. http://www.mdpi.com. -[50] 陈建军. 从数字地球到智慧地球[J/OL]. 国图资源导刊, 2010, 7(10): 93 [2013–03–20]. http://d.g.wanfangdata.com.cn. doi: 10.3969/j.issn.1672-5603.2010.10.038. -[54] 江向东. 互联网环境下的信息处理与图书管理系统解决方案[J/OL]. 情报学报, 1999, 18(2): 4[2000–01–18]. http://www.chinainfo.gov.cn/periodical/qbxb/qbxb99/qbxb990203. -[7] 储大同. 恶性肿瘤个体化治疗靶向药物的临床表现[J/OL]. 中华肿瘤杂志, 2010, 32(10): 721–724[2014–06–25]. http://www.sohu.com. doi: 10.7666/d.y351065. -[9] 储大同. 恶性肿瘤个体化治疗靶向药物的临床表现[J/OL]. 中华肿瘤杂志, 2010, 32(9/10): 721–724 [2014–06–25]. http://www.sohu.com. doi: 10.7666/d.y351065. - -[10] 丁文祥. 数字革命与竞争国际化[N]. 中国青年报, 2000–11–20(15). -[11] 傅刚, 赵承, 李佳路. 大风沙过后的思考[N/OL]. 北京青年报, 2000–04–12(14) [2005–07–12]. http://www.bjyouth.com.cn/Bqb/20000412/GB/4216%5ED0412B1401.htm. -[12] 刘裕国, 杨柳, 张洋, 等. 雾霾来袭,如何突围[N/OL]. 人民日报, 2013–01–12 [2013–11–06]. http://paper.people.com.cn. -[13] 张田勤. 犯罪 DNA 库与生命伦理学计划[N]. 大众科技报, 2000–11–12(7). - - - - -[2] CHIANI M, CONTI A, TRALLI V. Further results on convolutional code search for blockfading channels[J]. IEEE Trans. Inf. Theory, 2004, 50(6): 1312–1318. -[2] CHIANI M, CONTI A, TRALLI V. Further results on convolutional code search for blockfading channels[J]. IEEE Trans. Inf. Theory, 2004, 50(6). -[2] CHIANI M, CONTI A, TRALLI V. Further results on convolutional code search for blockfading channels[J]. IEEE Trans. Inf. Theory, 2004, 50: 1312–1318. -[2] CHIANI M, CONTI A, TRALLI V. Further results on convolutional code search for blockfading channels[J]. IEEE Trans. Inf. Theory, 2004(6): 1312–1318. -[2] CHIANI M, CONTI A, TRALLI V. Further results on convolutional code search for blockfading channels[J]. IEEE Trans. Inf. Theory, 50(6): 1312–1318. -[2] CHIANI M, CONTI A, TRALLI V. Further results on convolutional code search for blockfading channels[J]. IEEE Trans. Inf. Theory, 2004, 50. -[2] CHIANI M, CONTI A, TRALLI V. Further results on convolutional code search for blockfading channels[J]. IEEE Trans. Inf. Theory, 2004(6). -[2] CHIANI M, CONTI A, TRALLI V. Further results on convolutional code search for blockfading channels[J]. IEEE Trans. Inf. Theory, 50(6). -[2] CHIANI M, CONTI A, TRALLI V. Further results on convolutional code search for blockfading channels[J]. IEEE Trans. Inf. Theory, 2004: 1312–1318. -[2] CHIANI M, CONTI A, TRALLI V. Further results on convolutional code search for blockfading channels[J]. IEEE Trans. Inf. Theory, 50: 1312–1318. - -[1] 中国地质学会. 地质评论[J]. 1936, 1(1)–. 北京: [出版者不详], 1936–. -[2] 中国图书馆学会. 图书馆学通信[J]. 1957(1)–1990(4). 北京: 北京图书馆, 1957–1990. -[3] American Association for the Advancement of Science. Science[J]. 1883, 1(1)–. Washington, D.C.: [s.n.], 1883–. -[4] 中华医学会湖北分会. 临床内科杂志[J]. 1984, 1(1)–. 武汉: 中华医学会湖北分会, 1984–. -[8] 张敏莉, 易仕和, 赵玉新. 超声速短化喷管的设计和试验研究[J]. 空气动力学报, 2007, 25(4): 500–503. -[8] ZHANG M L, YI S H, ZHAO Y X. The design and experimental investigations of supersonic length shorted nozzle[J]. ACTA AERODYNAMICA SINICA, 2007, 25(4): 500–503. -[14] ANDERSEN J B, RAPPAPORT T S, YOSHIDA S. Propagation measurements and models for wireless communications channels[J]. IEEE Commun. Mag., 1995, 33(1): 42–49. -[15] ANDRISANO O, TRALLI V, VERDONE R. Millimeter waves for short-range multimedia communication systems[J]. Proc. IEEE, 1998, 86(7): 1383–1401. -[16] CAPLAN P. Cataloging internet resources[J]. The public Access Computer Systems Review, 1993, 4(2): 61–66. -[7] 储大同. 恶性肿瘤个体化治疗靶向药物的临床表现[J/OL]. 中华肿瘤杂志, 2010, 32(10): 721–724[2014–06–25]. http://www.sohu.com. doi: 10.7666/d.y351065. - - -[1] 韩吉人. 论职工教育的特点[G]//中国职工教育研究会. 职工教育研究论文集. 北京: 人民教育出版社, 1985: 90–99. -[2] FOURNEY M E. Advances in holographic photoelasticity[C]//Symposium on Applications of Holography in Mechanics, August 23-25, 1971, University of Southern California, Los Angeles, California. New York: ASME, 1971: 17–38. -[3] FOURNEY M E. Advances in holographic photoelasticity[C]//American Society of Mechanical Engineers.Applied Mechanics Division. Symposium on Applications of Holography in Mechanics, August 23-25, 1971. University of Southern California, Los Angeles, California. New York: ASME, 1971: 17–38. -[4] NEMEC B. Force control of redundant robots[C]//Processings of Symposium on Robot Control. [S.l.]: [s.n.], 1997: 209–214. -[5] 贾东琴, 柯平. 面向数字素养的高校图书馆数字服务体系研究[C]//中国图书馆学会. 中国图书馆学会年会论文集:2011 年卷. 北京: 国家图书馆出版社, 2011: 45–52. -[6] 裴丽生. 在中国科协技术期刊编辑工作经验交流会上的讲话[C]//中国科学技术协会学会工作部. 中国科协学术期刊编辑工作经验交流会资料选. 北京: 中国科学技术协会学会工作部, 1981: 2–10. -[7] 汪学军. 中国农业转基因生物研发进展与安全管理[C]//国家环境保护总局生物安全管理办公室. 中国国家生物安全框架实施国际合作项目研讨会论文集. 北京: 中国环境科学出版社, 2002: 22–25. -[8] 张忠智. 科技书刊的总编 (主编) 的角色要求[C]//中国科学技术期刊编辑学会学术委员会. 中国科学技术期刊编辑学会建会十周年学术研讨会论文汇编. 北京: 中国科学技术期刊编辑学会学术委员会, 1997: 33–34. -[9] CHOI J D, STARK W E. Performance analysis of ultra-wideband spread-spectrum communications in narrowband interference[C]//Proc. IEEE Military Commun. Conf. (MILCOM). Vol. 2. Anaheim, CA: [s.n.], 2002: 1075–1080. -[10] DARDARI D, PASOLINI G. Simple and accurate models for error probability evaluation of IEEE802.11 DS-SS physical interface in the presence of Bluetooth interference[C]//Proc. IEEE Global Telecommun. Conf. (GLOBECOM). Vol. 1. Taipei: [s.n.], 2002: 201–206. -[11] FIROOZBAKHSH B, PRATT T G, JAYANT N. Analysis of IEEE 802.11a interference on UWB systems[C]//Proc. of IEEE Conference on Ultrawideband Systems and Technologies (UWBST). Oulu, Finland: [s.n.], 2003: 473–477. -[12] FOERSTER J R. Interference modeling of pulse-based UWB waveforms on narrowband systems[C]//Proc. IEEE Veh. Technol. Conf. Vol. 4. Birmingham, AL: [s.n.], 2002: 1931–1935. -[13] FONTANA R J. An insight into UWB interference from a shot noise perspective[C]//Proc. of IEEE Conference on Ultrawideband Systems and Technologies (UWBST). Baltimore, MD: [s.n.], 2002: 309–313. -[14] GIORGETTI A. Coexistence of UWB and narrowband systems in Nakagami/Rice channels[C]//Proc. Int. Symp. on Wireless Personal Multimedia Commun. (WPMC). Aalborg, Denmark: [s.n.], 2005: 794–798. -[15] GIORGETTI A, CHIANI M, DARDARI D. Coexistence issues in cognitive radios based on ultra-wide bandwidth systems[C]//Proc. IEEE Int. Conf. on Cognitive Radio Oriented Wireless Net. and Comm. (CROWNCOM). Mykonos, Greece: [s.n.], 2006. -[16] LI Y, MOLISCH A F, ZHANG J. Practical approaches to channel estimation and interference suppression for OFDM based UWB communications[C]//Proc. of the IEEE 6th Circ. and Syst., Symp. on Emerging Technologies: Frontiers of Mobile and Wireless Communication. Vol. 1. [S.l.]: [s.n.], 2004: 21–24. -[17] NASRI A, SCHOBER R, LAMPE L. Performance Evaluation of BICM-OFDM Systems Impaired by UWB Interference[C]//Proc. IEEE Int. Conf. on Commun. Beijing, China: [s.n.], 2008: 3616–3621. -[18] PIAZZO L. UWB EM compatibility and coexistence issues[C]//Proc. 1st Int. Workshop on Networking with UWB. Rome, Italy: [s.n.], 2001. -[19] 陈志勇. 中国财税文化价值研究:“中国财税文化国际学术研讨会”论文集[C/OL]. 北京: 经济科学出版社, 2011 [2013–10–14]. http://apabi.lib.pku.edu.cn. -[20] 雷光春. 综合湿地管理: 综合湿地管理国际研讨会论文集[C]. 北京: 海洋出版社, 2012. -[21] ROSENTHALL E M. Proceedings of the Fifth Canadian Mathematical Congress, University of Montreal, 1961[C]. Toronto: University of Toronto Press, 1963. -[22] GANZHA V G, MAYR E W, VOROZHTSOV E V. Computer algebra in scientific computing:CASC 2000:proceedings of the Third Workshop on Computer Algebra in Scientific Computing, Samarkand, October 5-9, 2000[C]. Berlin: Springer, 2000. -[23] BABU B V, NAGAR A K, DEEP K, et al. Proceedings of the second international conference on soft computing for problem solving, December 28-30[C]. New Delhi: Springer, 2014. -[24] 中国力学学会. 第 3 届全国实验流体力学学术会议论文集[C]. 天津: [出版者不详], 1999. -[25] 中国社会科学院台湾史研究中心. 台湾光复六十五周年暨抗战史实学术研讨会论文集[C]. 北京: 九州出版社, 2012. - - -[8] LEHMAN P, KIME P, BORUVKA A, et al. The biblatex Package: Programmable Bibliographies and Citations[A]. version 2.8a. 2013. -[9] LEHMAN P, KIME P, BORUVKA A, et al. The Biblatex Package: Programmable Bibliographies and Citations[A]. 3.0. 2015. -[10] MITTELBACH F. An environment for multicolumn output[A]. 2015. -[11] OETIKER T, PARTL H, HYNA I, et al. The Not So Short Introduction to L ATEX 2ε[A]. 2011. -[12] ROBERTSON W, WILSON P, PRESS H. The ccaption package[A]. v3.2c. 2011. -[13] SOMMERFELDT A. Customizing captions of floating environments[A/OL]. 2011. http://sourceforge.net/projects/latex-caption/. -[14] UMEKI H. The geometry package[A]. v5.6. 2010. -[15] 胡振震. 符合 GB7714-2015 标准的 biblatex 参考文献样式文件[A]. 2016. -[16] 吴凌云. CTEX FAQ: 常见问题集[A]. version 0.4. 2007. -[17] 中国第一历史档案馆, 辽宁省档案馆. 中国明朝档案总汇[A]. 桂林: 广西师范大学出版社, 2001. -[18] 包太雷. LaTeX Notes: 雷太赫排版系统简介[Z]. 2013. -[1] CALKIN D, AGER A, THOMPSON M. A comparative risk assessment framework for wildland fire management: the 2010 cohesive strategy Science report:RMRS-GTR-262[R]. 2011: 8–9. -[2] EGGRERS A J. One-dimensional flows of an imperfect diatomic gas[R]. NACA report 959. -[3] HUMPHREY R L, WAGNER J L. The sonic throat method and real gas one-dimensional flow: an application to air and nitrogen[R]. AD 730029. 1971. -[4] U.S. Department of Transportation Federal Highway Administration. Guidelines for handling excavated acid-producing materials, PB 91-194001[R]. Springfield: U.S. Department of Commerce National Information Service, 1990. -[5] World Health Organization. Factors regulating the immune response: report of WHO Scientific Group[R]. Geneva: WHO, 1970. -[6] 汤万金, 杨跃翔, 刘文, 等. 人体安全重要技术标准研制最终报告:7178999X[R/OL]. 2013 [2014–06–24]. http://www.nstrs.org.cn. -[7] 中华人民共和国国务院新闻办公室. 国防白皮书: 中国武装力量的多样化运用[R/OL]. 2013 [2014–06–11]. http://www.mod.gov.cn. - -[1] Commonwealth libraries bureau of library development.Pennsylvania department of education office. Pennsylvania library laws[EB/OL]. [2013–03–24]. http://www.racc.edu. -[3] Omg Inc. Unified Modeling Language: Superstructure[EB/OL]. (2003). http://www.omg.org. -[4] Online Computer Library Center, Inc. History of OCLC[EB/OL]. [2000–01–08]. http://www.oclc.org/about/history/default.htm. -[2] HOPKINSON A. UNIMARC and metadata: Dublin Core[EB/OL]. [1999–12–08]. http://www.rfla.org/IV/rfla64/13801613.htm. -[5] 李强. 化解医患矛盾需釜底抽薪[EB/OL]. (2012–05–03) [2013–03–25]. http://wenku.baidu.com. -[6] 萧钰. 出版业信息化迈入快车道[EB/OL]. (2001–12–19) [2002–04–15]. http://www.creader.com/news/20011219/200112190019.html. -[7] WiMedia Alliance[EB/OL]. www.wimedia.org. -[8] Dublin Core metadata element set: version 1.1[EB/OL]. (2012–06–14) [2014–06–11]. http://dublincore.org. -[9] JabRef 中文手册[EB/OL]. http://blog.csdn.net/zd0303/article/details/7676807. -[10] PACS-L:the public-access computer systems forum[EB/OL]. (1989) [1995–05–17]. http://info.lib.uh.edu/pacsl.html. - -[33] 全国信息文献标准化技术委员会. 文献著录: 第 4 部分 非书资料:GB/T3792.4-2009[S]. 北京: 中国标准出版社, 2010: 3. -[34] 全国广播电视标准化技术委员会. 广播电视音像资料编目规范: 第 2 部分 广播资料:GY/T202.2-2007[S]. 北京: 国家广播电影电视局广播电视规划院, 2007: 1. -[35] 国家环境保护局科技标准司. 土壤环境质量标准:GB 15616-1995[S/OL]. 北京: 中国标准出版社, 1996: 2–3 [2013–10–14]. http://wenku.baidu.com. -[36] Information and documdocument-the Dublin core metadata element set:ISO 15836:2009[S/OL].[2013–03–24]. http://www.iso.org. -[40] 国家标准局信息分类编码研究所. 世界各国和地区名称代码 GB/T 2659-1986[S]//全国文献工作标准化技术委员会. 文献工作国家标准汇编: 3. 北京: 中国标准出版社, 1988: 59–92. -[41] 宋史卷三: 本纪第三[M/OL]//李承森. 宋史: 第 1 册. 北京: 中华书局, 2011: 11–12 [2013–05–09]. http://apabi.lib.pku.edu.cn. - -[1] CALMS R B. Infrared spectroscopic studies on solid oxygen[D]. Berkeley: Univ. of California, 1965. -[4] 张若凌. 高超声速非平衡流动的计算和实验研究[D]. 绵阳: 中国空气动力研究与发展中心, 2004. -[5] 张志祥. 间断动力系统的随机扰动及其在守恒律方程中的应用[D]. 北京: 北京大学数学学院, 1998. -[2] 马欢. 人类活动影响下海河流域典型区水循环变化分析[D/OL]. 北京: 清华大学, 2011: 27 [2013–10–14]. http://www.cnki.net. -[3] 吴云芳. 面向中文信息处理的现代汉语并列结构研究[D/OL]. 北京: 北京大学, 2003 [2013–10–14]. http://thesis.lib.pku.edu.cn. - -[2] 中国职工教育研究会. 职工教育研究论文集[G]. 北京: 人民教育出版社, 1985. -[1] 韩吉人. 论职工教育的特点[G]//中国职工教育研究会. 职工教育研究论文集. 北京: 人民教育出版社, 1985: 90–99. -[1] KOSEKI A, MOMOSE H, KAWAHITO M, et al. Compiler: US828402[P/OL]. 2002–05–25[2002–05–28]. http://FF&p=1&u=netahtml/PTO/search-bool.html&r=5&f=G&l=50&col=AND&d=PG01&sl=IBM.AS.&0S=AN/IBM&RS=AN/IBM. -[2] TACHIBANA R, SHIMIZU S, KOBAYSHI S, et al. Electronic watermarking method and system: US6915001[P/OL]. 2002–04–25 [2002–05–28]. http://patftuspto.gov/netacgi/nphParser?%20Seetl=PTO2&Sect2=HITOFF&=1&u=/netahhml/search-bool.html%20&r=1&f=G&1=50&col=AND&d=ptxt&sl=%60Electronic+watermarking+method+system'.TTL.&OS=TTL/. -[3] 河北绿洲生态环境科技有限公司. 一种荒漠化地区生态植被综合培育种植方法: 01129210.5[P/OL]. 2001–10–24 [2002–05–28]. http://211.152.9.47/sipoasp/zlijs/hyjs-yx-new.asp?recid=01129210.5&leixin.27 -[4] 姜锡洲. 一种温热外敷药制备方案: 中国: 88105607.3[P]. 1989–07–26. -[5] 刘加林. 多功能一次性压舌板: 92214985.2[P]. 1993–04–14. -[6] 西安电子科技大学. 光折变自适应光外差探测方法: 01128777.2[P/OL]. 2002–03–06 [2002–05–28]. http://211.152.9.47/sipoasp/zljs/hyjs-yx-new.asp?recid=01128777.2&leixin=0. -[7] 张凯军. 轨道火车及高速轨道火车紧急安全制动辅助装置: 201220158825.2[P]. 2012–04–05. - -[1] Commonwealth libraries bureau of library development.Pennsylvania department of education office. Pennsylvania library laws[EB/OL]. [2013–03–24]. http://www.racc.edu. -[2] HOPKINSON A. UNIMARC and metadata: Dublin Core[EB/OL]. [1999–12–08]. http://www.rfla.org/IV/rfla64/13801613.htm. -[3] Omg Inc. Unified Modeling Language: Superstructure[EB/OL]. (2003). http://www.omg.org. -[4] Online Computer Library Center, Inc. History of OCLC[EB/OL]. [2000–01–08]. http://www.oclc.org/about/history/default.htm. -[5] 李强. 化解医患矛盾需釜底抽薪[EB/OL]. (2012–05–03) [2013–03–25]. http://wenku.baidu.com. -[6] 萧钰. 出版业信息化迈入快车道[EB/OL]. (2001–12–19) [2002–04–15]. http://www.creader.com/news/20011219/200112190019.html. -[7] WiMedia Alliance[EB/OL]. www.wimedia.org. -[8] Dublin Core metadata element set: version 1.1[EB/OL]. (2012–06–14) [2014–06–11]. http://dublincore.org. -[9] JabRef 中文手册[EB/OL]. http://blog.csdn.net/zd0303/article/details/7676807. -[10] PACS-L:the public-access computer systems forum[EB/OL]. (1989) [1995–05–17]. http://info.lib.uh.edu/pacsl.html. - -[38] 白书农. 植物开花研究[M]//李承森. 植物科学进展. 北京: 高等教育出版社, 1998: 146–163. -[42] 楼梦麟, 杨燕. 汶川地震基岩地震动特征分析[M/OL]//同济大学土木工程防灾国家重点实验室. 汶川地震震害研究. 上海: 同济大学出版社, 2011: 11–12 [2013–05–09]. http://apabi.lib.pku.edu.cn. DOI: AFAC1212121. -[42] 楼梦麟, 杨燕. 汶川地震基岩地震动特征分析[M/OL]//同济大学土木工程防灾国家重点实验室. 汶川地震震害研究. 上海: 同济大学出版社: 11–12 [2013–05–09]. http://apabi.lib.pku.edu.cn. DOI: AFAC1212121. -[42] 楼梦麟, 杨燕. 汶川地震基岩地震动特征分析[M/OL]//同济大学土木工程防灾国家重点实验室. 汶川地震震害研究. 上海: 同济大学出版社, 2011[2013–05–09]. http://apabi.lib.pku.edu.cn. DOI: AFAC1212121. -[42] 楼梦麟, 杨燕. 汶川地震基岩地震动特征分析[M/OL]//同济大学土木工程防灾国家重点实验室. 汶川地震震害研究. 上海: 同济大学出版社[2013–05–09]. http://apabi.lib.pku.edu.cn. DOI: AFAC1212121. -[41] 宋史卷三: 本纪第三[M/OL]//李承森. 宋史colon第 1 册. 北京: 中华书局, 2011: 11–12 [2013–05–09]. http://apabi.lib.pku.edu.cn. -[41] 宋史卷三: 本纪第三[M]//李承森. 宋史colon第 1 册. 北京: 中华书局. -[41] 宋史卷三: 本纪第三[M]//宋史: 第 1 册. 北京: 中华书局. -[41] 宋史卷三: 本纪第三[M]//宋史. 北京: 中华书局. -[37] 卷 39 乞致任第一[M]//苏魏公文集: 下册. 北京: 中华书局, 1988: 590. -[41] 宋史卷三: 本纪第三[M]//宋史: 第 1 册. 北京: 中华书局, 1977: 49. -[43] BUSECK P R, NORD G L Jr., VEBLEN D R. Subsolidus phenomena in pyroxenes[M]//PREWITT C. Pyroxense. Washington, D.C.: Mineralogical Society of America, 1980: 117–211. -[42] 楼梦麟, 杨燕. 汶川地震基岩地震动特征分析[M]//同济大学土木工程防灾国家重点实验室. 汶川地震震害研究. 上海: 同济大学出版社, 2011: 11–12. -[33] POISEL R A. 通信电子战原理[M/OL]. 聂皞, 王振华, 陈少昌, 等, 译. 2 版. 北京: 电子工业出版社[2013–08–01]. http://www.baidu.com. DOI: AFAC1212121. -[33] POISEL R A. 通信电子战原理[M/OL]. 聂皞, 王振华, 陈少昌, 等, 译. 2 版. 北京: 电子工业出版社: 23–26 [2013–08–01]. http://www.baidu.com. DOI: AFAC1212121. -[33] POISEL R A. 通信电子战原理[M/OL]. 聂皞, 王振华, 陈少昌, 等, 译. 2 版. 北京: 电子工业出版社, 2013: 23–26 [2013–08–01]. http://www.baidu.com. DOI: AFAC1212121. -[33] 赵学功. 当代美国外交[M/OL]. [出版地不详]: 社会科学文献出版社, 2001 [2014–06–11]. http://www.baidu.com. -[3] 余敏. 出版集团研究[M/OL]. 北京: 中国书籍出版社, 2001. www.bla~bla.org. -[10] 余敏. 出版集团研究[M/OL]. 北京: 中国书籍出版社, 2001: 179–193 [2001–08–04]. http://www.baidu.com. -[11] 候文顺. 高分子物理: 高分子材料分析、选择与改性[M/OL]. 北京: 化学工业出版社, 2010: 119[2012–11–27]. http://apabi.lib.pku.edu.cn. -[15] KINCHY A. Seeds, Sciences, and struggle : the global politics of transgenic crops[M/OL]. Cambridge,Mass.: MIT Press, 2012: 50 [2013–07–14]. http://lib.myilibary.com. -[16] PRAETZELLIS A. Death by theory: a tale of mystery and archaeological theory[M/OL]. Rev.ed. [S.l.]: Rowman & Littlefield Publishing Group, Inc., 2011: 13 [2012–07–26]. http://lib.myilibrary.com. -[15] KINCHY A. Seeds, Sciences, and struggle : the global politics of transgenic crops[M]. Cambridge,Mass.: MIT Press, 2012: 50. -[22] 易仕和, 赵玉新, 何霖, 等. 超声速和高超声速喷管设计[M]. 北京: 国防工业出版社, 2013. -[24] MIROSLAV D L, DEJAN V T, BRIAN L E. 信号处理滤波器设计-基于 matlab 和 mathematica 的设计方法[M]. 朱义胜, 董辉, 译. 北京: 电子工业出版社, 2004. -[25] 蔡敏, 徐慧慧, 黄柄强. UML 基础和 Rose 建模教程[M]. 北京: 人民邮电出版社, 2006. -[33] POISEL R A. 通信电子战原理[M]. 聂皞, 王振华, 陈少昌, 等, 译. 2 版. 北京: 电子工业出版社, 2013: 23–26. -[27] SIMON M K, OMURA J K, SCHOLTZ R A, et al. Spread Spectrum Communications Handbook[M]. New York City: McGraw-Hill, Inc., 2001. -[23] Von PEEBLES P Z Jr, LIN S, DANIEL COSTELLO J. Probability, random variable, and random signal Principles[M]. 4th ed. New York: McGraw-Hill, 2001: 100. -[22] YI S H, ZHAO Y X, HE L, et al. Supersonic and hypersonic nozzle design[M]. BeiJing: National Defense Industry Press, 2013. -[41] LIN S, DANIEL COSTELLO J. Error Control Coding[M]. Second Edition. Englewood Cliffs: NJ:Prentice Hall, 2004. -[45] PROAKIS J G, MANOLAKIS D G. Digital signal processing: Principles,algorithms, and applications[M]. 第 4 版. 北京: 电子工业出版社, 2007. -[46] REED J H. An Introduction to Ultrawideband Communication Systems[M]. Upper Saddle River: NJ: Prentice Hall, 2005. -[47] ROOD H J. Logic and structured design for computer programmers[M]. 3rd ed. [S.l.]: Brooks/ColeThomson Learning, 2001. -[48] ROSS S M. 概率论基础教程[M]. 郑忠国, 詹从赞, 译. 第 8 版. 北京: 人民邮电出版社, 2010. -[49] SIMON M K, ALOUINI M S. Digital Communication over Fading Channels[M]. Hoboken: NJ: Wiley-IEEE Press, 2004. -[50] STUBER G L. Principles of Mobile Communication[M]. Second Edition. Norwell: MA: Kluwer Academic Publishers, 2001. -[51] YUFIN S A. Geoecology and computers: proceedings of the Third International Conference on Advances of Computer Methods in Geotechnical and Geoenvironmental Engineering, Moscow, Russia, February 1-4, 2000[M]. Rotterdam: A. A. Balkema, 2000. -[52] 埃伯哈德 蔡德勒, 等. 数学指南-实用数学手册[M]. 李文林等, 译. 北京: 科学出版社, 2012. -[53] 陈希孺. 概率论与数理统计[M]. 合肥: 中国科学技术大学出版社, 2009. -[54] 陈志杰, 赵书钦, 李树钧, 等. LaTeX 入门与提高[M]. 第二版. 北京: 高等教育出版社, 2010. -[1] 张伯伟. 全唐五代诗格会考[M]. 南京: 江苏古籍出版社, 2002: 288. -[2] 师伏堂日记: 第 4 册[M]. 北京: 北京图书馆出版社, 2009: 155. -[3] 胡承正, 周详, 缪灵. 理论物理概论: 上[M]. 武汉: 武汉大学出版社, 2010: 112. -[4] 美国妇产科医师学会. 新生儿脑病和脑性瘫痪发病机制与病理生理[M]. 段涛, 杨慧霞, 译. 北京: 人民卫生出版社, 2010: 38–39. -[5] 康熙字典: 已集上: 水部[M]. 同文书局影印本. 北京: 中华书局, 1962: 50. -[6] 汪昂. 增订本草备要: 四卷[M]. 刻本. 上海: 老二酉堂. -[7] 蒋有绪, 郭泉水, 马娟, 等. 中国森林群落分类及其群落学特征[M]. 北京: 科学出版社, 1998. -[8] 中国企业投资协会, 台湾并购与私募股权协会, 汇盈国际投资集团. 投资台湾: 大陆企业赴台投资指南[M]. 北京: 九州出版社, 2013. -[9] 罗斯基. 战前中国经济的增长[M]. 唐巧天, 毛立坤, 姜修宪, 译. 杭州: 浙江大学出版社, 2009. -[10] 库恩. 科学革命的结构: 第 4 版[M]. 金吾伦, 胡新和, 译. 2 版. 北京: 北京大学出版社, 2012. -[12] CRAWFPRD W, GORMAN M. Future libraries:dreams, maddness, & reality[M]. Chicago: American Library Association, 1995. -[13] International Federation of Library Association and Institutions. Names of persons: national usages for entry in catalogues[M]. 3rd ed. London: IFLA International Office for UBC, 1977. -[14] O’BRIEN J A. Introduction to information systems[M]. 7th ed. Burr Ridge, III.: Irwin, 1994. -[10] 库恩, 余敏, 阿飞, 等. 科学革命的结构: 第 4 版[M]. 金吾伦, 胡新和, 译. 北京: 北京大学出版社, 2012. -[10] 库恩. 科学革命的结构: 第 4 版[M]. 北京: 北京大学出版社, 2012. -[10] 库恩. 科学革命的结构: 第 4 版[M]. 金吾伦, 胡新和, 译. 2 版. 北京: 北京大学出版社, 2012. -[8] 余敏. 出版集团研究[M]. 3 版. 北京: 中国书籍出版社, 2001. DOI: AFAC1212121. -[1] 余敏. 出版集团研究[M]. 北京: 中国书籍出版社. DOI: AFAC1212121. -[1] 余敏. 出版集团研究[M]. 北京: 中国书籍出版社: 179–193. DOI: AFAC1212121. -[11] 出版集团研究[M]. 北京: 中国书籍出版社, 2001: 179–193. -[8] 余敏. 出版集团研究[M]. 北京: 中国书籍出版社, 2001: 179–193.DOI:AFAC1212121. -[7] 余敏. 出版集团研究[M]. 北京: 中国书籍出版社, 2001: 179–193. -[2] 余敏. 出版集团研究[M]. [出版地不详]: 中国书籍出版社, 2001: 179–193. -[4] 余敏. 出版集团研究[M]. 北京: [出版者不详], 2001. -[5] 余敏. 出版集团研究[M]. 北京: [出版者不详]. -[6] 余敏. 出版集团研究[M]. 北京: [出版者不详], 2001: 20–30. -[9] 余敏. 出版集团研究[M]. 2 版. 北京: 中国书籍出版社, 2001: 179–193. -[11] 出版集团研究[M]. 北京: 中国书籍出版社, 2001: 179–193. -[12] PARSONS. The Mobile Radio Propagation Channel[M]. 2nd ed. Hoboken: John Wiley, Sons,2000. -[13] Parsons. The Mobile Radio Propagation Channel[M]. 2nd ed. Hoboken: John Wiley, Sons, 2000. -[14] PARSONS J D. The Mobile Radio Propagation Channel[M]. 2nd ed. Hoboken: John Wiley,Sons, 2000. -[15] PARSONS J D. The Mobile Radio Propagation Channel[M]. 2nd ed. Hoboken: John Wiley,Sons. -[16] PARSONS J D. The Mobile Radio Propagation Channel[M]. 2nd ed. [S.l.]: John Wiley, Sons,2000. -[17] PARSONS J D. The Mobile Radio Propagation Channel[M]. 2nd ed. Hoboken: [s.n.], 2000. -[18] PARSONS J D. The Mobile Radio Propagation Channel[M]. 2nd ed. Hoboken: [s.n.]. -[19] PARSONS J D. The Mobile Radio Propagation Channel[M]. 2nd ed. Hoboken: [s.n.], 2000: 15–20. \ No newline at end of file diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714texttobib.pl b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714texttobib.pl deleted file mode 100644 index 1b8dc7be36..0000000000 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714texttobib.pl +++ /dev/null @@ -1,1670 +0,0 @@ -##% -##% --------------------------------------------------------------- -##% gb7714texttobib--- A transformation tool for GB/T 7714-2015 style -##% bibliography text to bib source file -##% -##% Maintained by huzhenzhen -##% Homepage: -##% history: -##% 2017/02/26 v1.0g -##% E-mail: -##% hzzmail@163.com -##% Released under the LaTeX Project Public License v1.3c or later -##% usage: -##% perl gb7714texttobib.pl in=textfilename out=bibfilename -##% options(need to do): -##% style=ay or default -##% key=ay or default -##% -##% --------------------------------------------------------------- -#%Target:: 将pdf文档中拷出的参考文献文本转换成bib文件,文本文件中的一条参考文献为一行 -#%Method:: 利用perl进行文本处理,处理和判断的两个重要方面是: -# 分析分割后的文本的位置和内容,使用的是正则表达式匹配,主要两种方式 -# 1.根据标点和本文特征一部分一部分的解析,比如book条目处理 -# 2.直接列出所有可能的正则表达式一个个匹配,比如article条目处理 -#%Date :: 2017-02-22 -#%Note :: 1.网址之类如果解析出错,应确认其前导词http://之前没有空格 -# 2.有些以.连接有从属关系的机构作者,可以把.后的空格去掉便于正确解析 -# 3.有些尽管解析到的域不是真实的域,但不影响著录格式(显示效果),相应条目的域 -# 可以在bib文件中完善,尽管从实用角度并不需要这么做。 -# -##% --------------------------------------------------------------- -##% todo: 1. pdf 的比较? -##% obsolete intro: -##% 1.源文件文档如果个别地方不符合规范,可以修改一下 -##% (a):inbook/standard类中,当出现//后面第二项是booktitle且其中存在:时,先把父标题的冒号改成colon,比如 -##% [M]//李承森. 宋史: 第 1 册. 北京: 中华书局. 应把宋史后的冒号改掉 -##% [S]//全国文献工作标准化技术委员会. 文献工作国家标准汇编: 3. 北京: 中国标准出版社, 1988: 59–92. -##% --------------------------------------------------------------- - - -foreach $file(@ARGV){ - print 'file:',$file,"\n"; - if($file=~m/in=/){ - ($infile)=($file=~m/in=(.*)/) - } - if($file=~m/out=/){ - ($outfile)=($file=~m/out=(.*)/) - } -} - -open (FHR,"<$infile"); -open (FHW,">$outfile"); -print FHW '% Encoding: UTF-8',"\n"; - -@references=;#将所有的文献存为@references数组,各文献以<行>为单位进行区分 - -$ns=1; -$ne=@references; -$nline=0; -foreach $reference(@references){ - - $nline=$nline+1; - if($nline<$ns){next;} #先跳过几行进行,配合后面的last进行当行测试 - - while($reference=~m/–/){ - $reference=~s/–/-/;#直接利用正则表达式更正页码/日期/网址中的连字符 - } - print "$reference ";#打印各文献的内容 - - undef $entrytype; - undef $author; - undef $title; - undef $journal; - undef $translator; - undef $bookauthor; - undef $booktitle; - undef $version; - undef $address; - undef $publisher; - undef $institution; - undef $year; - undef $type; - undef $date; - undef $volume; - undef $number; - undef $pages; - undef $eventdate; - undef $urldate; - undef $url; - undef $doi; - undef $note; - undef $eventyvn; - undef $endeventyvn; - undef $eventdate; - undef $eventvol; - undef $eventnum; - undef $endeventdate; - undef $endeventvol; - undef $endeventnum; - - #--------------------------------------------------------------- - #条目类型:期刊和期刊中析出的文献/periodical、article - #--------------------------------------------------------------- - if(1){ - if($reference=~m/\[J\]/){ - if($reference=~m/:\s/ and $reference=~m/:\s\D/){#根据存在出版社前的冒号加空格区分 - print 'this entry is periodical',"\n"; - $entrytype='periodical'; - }else{ - print 'this entry is article',"\n"; - $entrytype='article'; - } - } - - if($entrytype eq 'periodical'){#字符串比较用eq而数字比较用==,如果用==那么两边都是1,则是真 - $regexformach='\[J\]\.'; - &bfidentifier; - - ($preadderess, $pospublisher)=($reference=~m/\[J\]\.(.*):\s(.*)/); - print 'preadderess =',$preadderess,"\n"; - print 'pospublisher=',$pospublisher,"\n"; - ($eventyear, $address)=($preadderess=~m/(.*)\.\s(.*)/); - print 'eventyear =',$eventyear,"\n"; - print 'address =',$address,"\n"; - ($eventyvn, $endeventyvn)=($eventyear=~m/(.*)\-(.*)/);#yvn表示year,volume,number - print 'eventyvn =',$eventyvn,"\n"; - print 'endeventyvn =',$endeventyvn,"\n"; - if($eventyvn=~m/.*,.*/){#存在逗号表明有卷信息 - ($eventdate, $eventvol, $eventnum)=($eventyvn=~m/\s*(.*),\s(.*)\((.*)\)/);#yvn表示year,volume,number - print 'eventdate =',$eventdate,"\n"; - print 'eventvol =',$eventvol,"\n"; - print 'eventnum =',$eventnum,"\n"; - if($endeventyvn){ - ($endeventdate, $endeventvol, $endeventnum)=($endeventyvn=~m/\s*(.*),\s(.*)\((.*)\)/);#yvn表示year,volume,number - print 'endeventdate =',$endeventdate,"\n"; - print 'endeventvol =',$endeventvol,"\n"; - print 'endeventnum =',$endeventnum,"\n"; - } - }else{ - ($eventdate, $eventnum)=($eventyvn=~m/\s*(.*)\((.*)\)/);#yvn表示year,volume,number - print 'eventdate =',$eventdate,"\n"; - print 'eventvol =',$eventvol,"\n"; - print 'eventnum =',$eventnum,"\n"; - if($endeventyvn){ - ($endeventdate, $endeventnum)=($endeventyvn=~m/\s*(.*)\((.*)\)/);#yvn表示year,volume,number - print 'endeventdate =',$endeventdate,"\n"; - print 'endeventvol =',$endeventvol,"\n"; - print 'endeventnum =',$endeventnum,"\n"; - } - } - if($endeventdate){ - $date=$eventdate.'-'.$endeventdate; - }else{ - $date=$eventdate - } - if($endeventvol){ - $volume=$eventvol.'-'.$endeventvol; - }else{ - $volume=$eventvol - } - if($endeventnum){ - $number=$eventnum.'-'.$endeventnum; - }else{ - $number=$eventnum - } - print 'date =',$date,"\n"; - print 'volume =',$volume,"\n"; - print 'number =',$number,"\n"; - ($publisher)=($pospublisher=~m/(.*),/); - print 'publisher =',$publisher,"\n"; - } - - if($entrytype eq 'article'){ - $regexformach='\[J\]\.'; - &bfidentifier; - - $flagmatched=0; - $regexbfjournal='\]\.\s(.*),\s(.*),\s(.*)\((.*)\):\s(.*)\.';#包括全部信息 - if($reference=~m/$regexbfjournal/){ - ($journal,$date,$volume,$number,$pages)=($reference=~m/$regexbfjournal/); - $flagmatched=1; - print '包括全部信息',"\n"; - } - $regexbfjournal='\]\.\s(.*),\s(.*),\s(.*)\((.*)\)\.';#没有页码 - if($reference=~m/$regexbfjournal/ and $flagmatched==0){ - ($journal,$date,$volume,$number)=($reference=~m/$regexbfjournal/); - $flagmatched=1; - print '没有页码',"\n"; - } - $regexbfjournal='\]\.\s(.*),\s(.*),\s(.*):\s(.*)\.';#没有期 - if($reference=~m/$regexbfjournal/ and $flagmatched==0){ - ($journal,$date,$volume,$pages)=($reference=~m/$regexbfjournal/); - $flagmatched=1; - print '没有期',"\n"; - } - $regexbfjournal='\]\.\s(.*),\s(.*)\((.*)\):\s(.*)\.';#没有卷/年 - if($reference=~m/$regexbfjournal/ and $flagmatched==0){ - ($journal,$date,$number,$pages)=($reference=~m/$regexbfjournal/); - $flagmatched=1; - if($date!~m/\d{4}/){ - $volume=$date; - $date=''; - } - print '没有卷/年',"\n"; - } - $regexbfjournal='\]\.\s(.*),\s(.*),\s(.*)\.';#没有页码,期 - if($reference=~m/$regexbfjournal/ and $flagmatched==0){ - ($journal,$date,$volume)=($reference=~m/$regexbfjournal/); - $flagmatched=1; - print '没有页码,期',"\n"; - } - $regexbfjournal='\]\.\s(.*),\s(.*)\((.*)\)\.';#没有页码,卷/年 - if($reference=~m/$regexbfjournal/ and $flagmatched==0){ - ($journal,$date,$number)=($reference=~m/$regexbfjournal/); - $flagmatched=1; - if($date!~m/\d{4}/){ - $volume=$date; - $date=''; - } - print '没有页码,卷/年',"\n"; - } - $regexbfjournal='\]\.\s(.*),\s(.*):\s(.*)\.';#没有卷/年,期 - if($reference=~m/$regexbfjournal/ and $flagmatched==0){ - ($journal,$date,$pages)=($reference=~m/$regexbfjournal/); - $flagmatched=1; - if($date!~m/\d{4}/){ - $volume=$date; - $date=''; - } - print '没有卷/年,期',"\n"; - } - - if($flagmatched==0){ - print 'the text after title was not matched, please add a regex for the current entry in the perl source code!',"\n"; - print '当前条目标题之后的内容没有匹配的正则表达式,请在perl代码中增加适合该条目正则表达式!',"\n"; - } - - print 'journal =',$journal,"\n"; - print 'date =',$date,"\n"; - print 'volume =',$volume,"\n"; - print 'number =',$number,"\n"; - print 'pages =',$pages,"\n"; - - } - - #判断期刊中析出的文献,带url - if($reference=~m/\[J\/OL\]/){ - print 'this entry is article with url',"\n"; - $entrytype='article'; - - $regexformach='\[J\/OL\]\.'; - &bfidentifier; - - ($postitle)=($reference=~m/\[J\/OL\]\.\s(.*)/); - if($postitle=~m/\[.*\]/){#存在urldate - ($preurldate,$urldate,$posurl)=($postitle=~m/(.*)\[(.*)\]\.\s(.*)/); - }else{#不存在urldate - ($preurldate,$posurl)=($postitle=~m/(.*)(http:.*)/); - } - unless($preurldate=~m/\.$/){$preurldate=$preurldate.'.';}#加个点统一上面两种方式 - - #处理url和doi - $regexposurl='(.*)doi:\s(.*)';#处理url和doi - if($posurl=~m/$regexposurl/i){ - ($url,$doi)=($posurl=~m/$regexposurl/i); - }else{ - $url=$posurl; - } - - #处理urldate前的内容,基本article不带url的情况相同 - $flagmatched=0; - $regexbfjournal='(.*),\s(.*),\s(.*)\((.*)\):\s(.*)\.';#包括全部信息 - if($preurldate=~m/$regexbfjournal/ and $flagmatched==0){ - ($journal,$date,$volume,$number,$pages)=($preurldate=~m/$regexbfjournal/); - $flagmatched=1; - } - $regexbfjournal='(.*),\s(.*),\s(.*)\((.*)\)\.';#没有页码 - if($preurldate=~m/$regexbfjournal/ and $flagmatched==0){ - ($journal,$date,$volume,$number)=($preurldate=~m/$regexbfjournal/); - $flagmatched=1; - } - $regexbfjournal='(.*),\s(.*),\s(.*):\s(.*)\.';#没有期 - if($preurldate=~m/$regexbfjournal/ and $flagmatched==0){ - ($journal,$date,$volume,$pages)=($preurldate=~m/$regexbfjournal/); - $flagmatched=1; - } - $regexbfjournal='(.*),\s(.*)\((.*)\):\s(.*)\.';#没有卷/年 - if($preurldate=~m/$regexbfjournal/ and $flagmatched==0){ - ($journal,$date,$number,$pages)=($preurldate=~m/$regexbfjournal/); - $flagmatched=1; - if($date!~m/\d{4}/){ - $volume=$date; - $date=''; - } - } - $regexbfjournal='(.*),\s(.*),\s(.*)\.';#没有页码,期 - if($preurldate=~m/$regexbfjournal/ and $flagmatched==0){ - ($journal,$date,$volume)=($preurldate=~m/$regexbfjournal/); - $flagmatched=1; - } - $regexbfjournal='(.*),\s(.*)\((.*)\)\.';#没有页码,卷/年 - if($preurldate=~m/$regexbfjournal/ and $flagmatched==0){ - ($journal,$date,$number)=($preurldate=~m/$regexbfjournal/); - $flagmatched=1; - if($date!~m/\d{4}/){ - $volume=$date; - $date=''; - } - } - $regexbfjournal='(.*),\s(.*):\s(.*)\.';#没有卷/年,期 - if($preurldate=~m/$regexbfjournal/ and $flagmatched==0){ - ($journal,$date,$pages)=($preurldate=~m/$regexbfjournal/); - $flagmatched=1; - if($date!~m/\d{4}/){ - $volume=$date; - $date=''; - } - } - - if($flagmatched==0){ - print 'the text after title was not matched, please add a regex for the current entry in the perl source code!',"\n"; - print '当前条目标题之后的内容没有匹配的正则表达式,请在perl代码中增加适合该条目正则表达式!',"\n"; - } - - print 'journal =',$journal,"\n"; - print 'date =',$date,"\n"; - print 'volume =',$volume,"\n"; - print 'number =',$number,"\n"; - print 'pages =',$pages,"\n"; - print 'urldate =',$urldate,"\n"; - print 'url =',$url,"\n"; - print 'doi =',$doi,"\n"; - - - } - } - - #--------------------------------------------------------------- - #条目类型:判断报纸中析出的文献/newspaper - #--------------------------------------------------------------- - if(1){ - if($reference=~m/\[N\]/){ - print 'this entry is newspaper',"\n"; - $entrytype='newspaper'; - $note='news'; - $regexnewsflag='\[N\]'; - $onlineflag=0; - } - if($reference=~m/\[N\/OL\]/){ - print 'this entry is newspaper with url',"\n"; - $entrytype='newspaper'; - $note='news'; - $regexnewsflag='\[N\/OL\]'; - $onlineflag=1; - } - if($entrytype eq 'newspaper'){ - if($onlineflag==1){ - $regexformach='\[N\/OL\]'; - &bfidentifier; - - print 'has url',"\n"; - $flagmatched=0; - $regexnewspostitle='\.\s(.*),\s(.*)\((.*)\)\s*\[(.*)\]\.\s(.*)'; - if($reference=~m/$regexnewsflag$regexnewspostitle/ and $flagmatched==0){ - $flagmatched=1; - ($journal,$date,$number,$urldate,$posurl)=($reference=~m/$regexnewsflag$regexnewspostitle/);} - $regexnewspostitle='\.\s(.*),\s(.*)\s*\[(.*)\]\.\s(.*)'; - if($reference=~m/$regexnewsflag$regexnewspostitle/ and $flagmatched==0){ - $flagmatched=1; - ($journal,$date,$urldate,$posurl)=($reference=~m/$regexnewsflag$regexnewspostitle/);} - if($flagmatched==0){ - print 'the text after title was not matched, please add a regex for the current entry in the perl source code!',"\n"; - print '当前条目标题之后的内容没有匹配的正则表达式,请在perl代码中增加适合该条目正则表达式!',"\n"; - } - }else{ - $regexformach='\[N\]'; - &bfidentifier; - - print 'no url',"\n"; - $regexnewspostitle='\.\s(.*),\s(.*)\((.*)\)'; - ($journal,$date,$number)=($reference=~m/$regexnewsflag$regexnewspostitle/); - } - #处理url和doi - $regexposurl='(.*)doi:\s(.*)';#处理url和doi - if($posurl=~m/$regexposurl/i){ - ($url,$doi)=($posurl=~m/$regexposurl/i); - }else{ - $url=$posurl; - } - - # print 'journal =',$journal,"\n"; - # print 'date =',$date,"\n"; - # print 'volume =',$volume,"\n"; - # print 'number =',$number,"\n"; - # print 'pages =',$pages,"\n"; - # print 'urldate =',$urldate,"\n"; - # print 'url =',$url,"\n"; - # print 'doi =',$doi,"\n"; - } - } - - - #--------------------------------------------------------------- - #条目类型:论文集中析出的文献/inproceedings - #--------------------------------------------------------------- - if(1){#\/\/ - if ($reference=~m/\[C\/OL\]\/\//){ - $entrytype='inproceedings'; - print "this entry's type is: $entrytype with url\n"; - $regexformach='\[C\/OL\]\/\/'; - &bfidentifier; - - $regexformach='C\/OL\]\/\/'; - &bfaddressinbook; - - &afpublisherbookurl; - }elsif($reference=~m/\[C\]\/\//){ - $entrytype='inproceedings'; - print "this entry's type is: $entrytype \n"; - $regexformach='\[C\]\/\/'; - &bfidentifier; - - $regexformach='C\]\/\/'; - &bfaddressinbook; - - &afpublisherbook; - } - - if ($entrytype eq 'inproceedings'){ - if ($address=~m/\[S\.l\.\]/ or $address=~m/出版地不详/) {#当存在英文的[s.n.] - $address=""; - } - if ($publisher=~m/\[s\.n\.\]/ or $publisher=~m/出版者不详/) {#当存在英文的[s.n.] - $publisher=""; - } - $date=$year; - } - - } - - - #--------------------------------------------------------------- - #条目类型:论文集/proceedings - #--------------------------------------------------------------- - if(1){ - if ($reference=~m/\[C\/OL\]\./){ - $entrytype='proceedings'; - print "this entry's type is: $entrytype with url\n"; - $regexformach='\[C\/OL\]\.'; - &bfidentifier; - - $regexformach='C\/OL\]\.'; - &bfaddressbook; - - &afpublisherbookurl; - }elsif($reference=~m/\[C\]\./){ - $entrytype='proceedings'; - print "this entry's type is: $entrytype \n"; - $regexformach='\[C\]\.'; - &bfidentifier; - - $regexformach='C\]\.'; - &bfaddressbook; - - &afpublisherbook; - } - - if ($entrytype eq 'proceedings'){ - if ($address=~m/\[S\.l\.\]/ or $address=~m/出版地不详/) {#当存在英文的[s.n.] - $address=""; - } - if ($publisher=~m/\[s\.n\.\]/ or $publisher=~m/出版者不详/) {#当存在英文的[s.n.] - $publisher=""; - } - $date=$year; - print 'date=',"$date"; - } - } - - - - - #--------------------------------------------------------------- - #条目类型:未出版物/unpublished - #--------------------------------------------------------------- - if(1){ - if ($reference=~m/\[Z\/OL\]\./){ - $entrytype='unpublished'; - print "this entry's type is: $entrytype with url\n"; - $regexformach='\[Z\/OL\]\.'; - &bfidentifier; - - $regexformach='Z\/OL\]\.'; - &bfaddressbook; - - &afpublisherbookurlb; - }elsif($reference=~m/\[Z\]\./){ - $entrytype='unpublished'; - print "this entry's type is: $entrytype \n"; - $regexformach='\[Z\]\.'; - &bfidentifier; - - $regexformach='Z\]\.'; - &bfaddressbook; - - &afpublisherbookb; - } - - if ($entrytype eq 'unpublished'){ - $date=$year; - print 'date=',"$date"; - } - } - - - #--------------------------------------------------------------- - #条目类型:手册、档案/manual - #--------------------------------------------------------------- - if(1){ - if ($reference=~m/\[A\/OL\]\./){ - $entrytype='manual'; - print "this entry's type is: $entrytype with url\n"; - $regexformach='\[A\/OL\]\.'; - &bfidentifier; - - $regexformach='A\/OL\]\.'; - &bfaddressbook; - - &afpublisherbookurlb; - }elsif($reference=~m/\[A\]\./){ - $entrytype='manual'; - print "this entry's type is: $entrytype \n"; - $regexformach='\[A\]\.'; - &bfidentifier; - - $regexformach='A\]\.'; - &bfaddressbook; - - &afpublisherbookb; - } - - if ($entrytype eq 'manual'){ - $date=$year; - print 'date=',"$date"; - } - } - - - - #--------------------------------------------------------------- - #条目类型:报告/report - #--------------------------------------------------------------- - if(1){ - if ($reference=~m/\[R\/OL\]\./){ - $entrytype='report'; - print "this entry's type is: $entrytype with url\n"; - $regexformach='\[R\/OL\]\.'; - &bfidentifier; - - $regexformach='R\/OL\]\.'; - &bfaddressbook; - - &afpublisherbookurlb; - }elsif($reference=~m/\[R\]\./){ - $entrytype='report'; - print "this entry's type is: $entrytype \n"; - $regexformach='\[R\]\.'; - &bfidentifier; - - $regexformach='R\]\.'; - &bfaddressbook; - - &afpublisherbookb; - } - - if ($entrytype eq 'report'){ - $date=$year; - print 'date=',"$date"; - } - - } - - #--------------------------------------------------------------- - #条目类型:标准/standard - #--------------------------------------------------------------- - if(1){ - if ($reference=~m/\[S\/OL\]\./){ - $entrytype='standard'; - print "this entry's type is: $entrytype with url\n"; - $regexformach='\[S\/OL\]\.'; - &bfidentifier; - - $regexformach='S\/OL\]\.'; - &bfaddressbook; - &afpublisherbookurl; - }elsif($reference=~m/\[S\]\./){ - $entrytype='standard'; - print "this entry's type is: $entrytype \n"; - $regexformach='\[S\]\.'; - &bfidentifier; - - $regexformach='S\]\.'; - &bfaddressbook; - - &afpublisherbook; - }elsif ($reference=~m/\[S\/OL\]\/\//){ - $entrytype='standard'; - print "this entry's type is: $entrytype with url\n"; - $regexformach='\[S\/OL\]\/\/'; - &bfidentifier; - - $regexformach='S\/OL\]\/\/'; - &bfaddressinbook; - - &afpublisherbookurl; - }elsif($reference=~m/\[S\]\/\//){ - $entrytype='standard'; - print "this entry's type is: $entrytype \n"; - $regexformach='\[S\]\/\/'; - &bfidentifier; - - $regexformach='S\]\/\/'; - &bfaddressinbook; - - &afpublisherbook; - } - if ($entrytype eq 'standard'){ - if ($address=~m/\[S\.l\.\]/ or $address=~m/出版地不详/) {#当存在英文的[s.n.] - $address=""; - } - if ($publisher=~m/\[s\.n\.\]/ or $publisher=~m/出版者不详/) {#当存在英文的[s.n.] - $publisher=""; - } - $date=$year; - $note='standard'; - print 'date=',"$date"; - print 'note=',"$note"; - } - - } - - #--------------------------------------------------------------- - #条目类型:学位论文/thesis - #--------------------------------------------------------------- - if(1){ - if ($reference=~m/\[D\/OL\]\./){ - $entrytype='thesis'; - print "this entry's type is: $entrytype with url\n"; - $regexformach='\[D\/OL\]\.'; - &bfidentifier; - - $regexformach='D\/OL\]\.'; - &bfaddressbook; - - &afpublisherbookurl; - }elsif($reference=~m/\[D\]\./){ - $entrytype='thesis'; - print "this entry's type is: $entrytype \n"; - $regexformach='\[D\]\.'; - &bfidentifier; - - $regexformach='D\]\.'; - &bfaddressbook; - - &afpublisherbook; - } - - if ($entrytype eq 'thesis'){ - if ($address=~m/\[S\.l\.\]/ or $address=~m/出版地不详/) {#当存在英文的[s.n.] - $address=""; - } - if ($publisher=~m/\[s\.n\.\]/ or $publisher=~m/出版者不详/) {#当存在英文的[s.n.] - $publisher=""; - } - $date=$year; - print 'date=',"$date"; - } - - } - - - #--------------------------------------------------------------- - #条目类型:汇编中析出的文献/incollection - #--------------------------------------------------------------- - if(1){#\/\/ - if ($reference=~m/\[G\/OL\]\/\//){ - $entrytype='incollection'; - print "this entry's type is: $entrytype with url\n"; - $regexformach='\[G\/OL\]\/\/'; - &bfidentifier; - - $regexformach='G\/OL\]\/\/'; - &bfaddressinbook; - - &afpublisherbookurl; - }elsif($reference=~m/\[G\]\/\//){ - $entrytype='incollection'; - print "this entry's type is: $entrytype \n"; - $regexformach='\[G\]\/\/'; - &bfidentifier; - - $regexformach='G\]\/\/'; - &bfaddressinbook; - - &afpublisherbook; - } - - if ($entrytype eq 'incollection'){ - if ($address=~m/\[S\.l\.\]/ or $address=~m/出版地不详/) {#当存在英文的[s.n.] - $address=""; - } - if ($publisher=~m/\[s\.n\.\]/ or $publisher=~m/出版者不详/) {#当存在英文的[s.n.] - $publisher=""; - } - $date=$year; - } - - } - - - #--------------------------------------------------------------- - #条目类型:汇编/collection - #--------------------------------------------------------------- - if(1){ - if ($reference=~m/\[G\/OL\]\./){ - $entrytype='collection'; - print "this entry's type is: $entrytype with url\n"; - $regexformach='\[G\/OL\]\.'; - &bfidentifier; - - $regexformach='G\/OL\]\.'; - &bfaddressbook; - - &afpublisherbookurl; - }elsif($reference=~m/\[G\]\./){ - $entrytype='collection'; - print "this entry's type is: $entrytype \n"; - $regexformach='\[G\]\.'; - &bfidentifier; - - $regexformach='G\]\.'; - &bfaddressbook; - - &afpublisherbook; - } - - if ($entrytype eq 'collection'){ - if ($address=~m/\[S\.l\.\]/ or $address=~m/出版地不详/) {#当存在英文的[s.n.] - $address=""; - } - if ($publisher=~m/\[s\.n\.\]/ or $publisher=~m/出版者不详/) {#当存在英文的[s.n.] - $publisher=""; - } - $date=$year; - print 'date=',"$date"; - } - } - - - #--------------------------------------------------------------- - #条目类型:专利/patent - #--------------------------------------------------------------- - if(1){ - if ($reference=~m/\[P\/OL\]\./){ - $entrytype='patent'; - print "this entry's type is: $entrytype with url\n"; - $regexformach='\[P\/OL\]\.'; - &bfidentifier; - }elsif($reference=~m/\[P\]\./){ - $entrytype='patent'; - print "this entry's type is: $entrytype \n"; - $regexformach='\[P\]\.'; - &bfidentifier; - } - - if($entrytype eq 'patent'){ - ($postitle)=($reference=~m/$regexformach\s*(.*)/); - print 'postitle=',$postitle,"\n"; - $titlenumber=$title; - if($titlenumber=~m/:\s*\d.*/){ - ($title,$number)=($titlenumber=~m/(.*):\s*(\d.*)/); - print 'title =',$title,"\n"; - print 'number =',$number,"\n"; - } - - if($postitle=~m/\[.*\]/ and $reference=~m/\[P\/OL\]\./){ - ($date,$urldate,$posurl)=($postitle=~/(.*)\s*\[(.*)\]\.\s*(.*)/); - print 'date=',$date,"\n"; - print 'urldate =',$urldate,"\n"; - print 'posurl =',$posurl,"\n"; - if($posurl=~m/DOI/i){#匹配存在doi的话 - ($url,$doi)=($posurl=~m/(.*)DOI:(.*)\./i); - print 'url=',"$url \n"; - print 'doi=',"$doi \n"; - }else{ - $url=$posurl; - print 'url =',"$url \n"; - } - }else{ - $posurl=$postitle; - if($posurl=~m/DOI/i){#匹配存在doi的话 - ($date,$doi)=($posurl=~m/(.*)DOI:(.*)\./i); - print 'date=',"$date \n"; - print 'doi =',"$doi \n"; - }else{ - $date=$posurl; - print 'date =',"$date \n"; - } - } - } - } - - - #--------------------------------------------------------------- - #条目类型:电子资源/online - #--------------------------------------------------------------- - if(1){ - if ($reference=~m/\[EB\/OL\]\./){#匹配[EB/OL]判断为online类型 - $entrytype='online'; - print "this entry's type is: $entrytype \n"; - - $regexformach='\[EB\/OL\]\.'; - &bfidentifier; - - ($postitle)=($reference=~m/$regexformach\s*(.*)/); - print 'postitle=',$postitle,"\n"; - - if($postitle=~m/\(.*\)/ and $postitle=~m/\[.*\]/){#存在更新日期和引用日期 - ($eventdate,$urldate,$posurl)=($postitle=~/\s*\((.*)\)\s*\[(.*)\]\.\s*(.*)/); - }elsif($postitle=~m/\(.*\)/ and $postitle!~m/\[.*\]/){#存在更新日期但无引用日期 - ($eventdate,$posurl)=($postitle=~/\s*\((.*)\)\.\s*(.*)/); - }elsif($postitle!~m/\(.*\)/ and $postitle=~m/\[.*\]/){#存在引用日期但无更新日期 - ($urldate,$posurl)=($postitle=~/\s*\[(.*)\]\.\s*(.*)/); - }else{ - ($posurl)=($postitle=~/\s*(.*)/); - } - print 'eventdate=',$eventdate,"\n"; - print 'urldate =',$urldate,"\n"; - print 'posurl =',$posurl,"\n"; - - if($posurl=~m/DOI/i){#匹配存在doi的话 - ($url,$doi)=($posurl=~m/(.*)DOI:(.*)\./i); - print 'url=',"$url \n"; - print 'doi=',"$doi \n"; - }else{ - $url=$posurl; - print 'url =',"$url \n"; - } - } - } - - #--------------------------------------------------------------- - #条目类型:专著/book - #--------------------------------------------------------------- - if(1){ - if ($reference=~m/\[M\]\./){#匹配[M]判断为book类型 - print "this entry's type is: book \n"; - $entrytype='book'; - - $regexformach='\[M\]\.'; - &bfidentifier; - - $regexformach='M\]\.'; - &bfaddressbook; - - &afpublisherbook; - - if ($address=~m/\[S\.l\.\]/ or $address=~m/出版地不详/) {#当存在英文的[s.n.] - $address=""; - } - if ($publisher=~m/\[s\.n\.\]/ or $publisher=~m/出版者不详/) {#当存在英文的[s.n.] - $publisher=""; - } - $date=$year; - } - } - - #--------------------------------------------------------------- - #条目类型:专著但存在网址/book with url - #--------------------------------------------------------------- - if(1){ - if ($reference=~m/\[M\/OL\]\./){ - print "this entry's type is: book with url\n"; - $entrytype='book'; - - $regexformach='\[M\/OL\]\.'; - &bfidentifier; - - $regexformach='M\/OL\]\.'; - &bfaddressbook; - - &afpublisherbookurl; - - - if ($address=~m/\[S\.l\.\]/ or $address=~m/出版地不详/) {#当存在英文的[s.n.] - $address=""; - } - if ($publisher=~m/\[s\.n\.\]/ or $publisher=~m/出版者不详/) {#当存在英文的[s.n.] - $publisher=""; - } - $date=$year; - } - } - - - #--------------------------------------------------------------- - #条目类型:专著中析出文献/inbook - #--------------------------------------------------------------- - if(1){ - if ($reference=~m/\[M\]\/\//){#匹配[M]//判断为inbook类型 - print "this entry's type is: inbook \n"; - $entrytype='inbook'; - - $regexformach='\[M\]\/\/'; - &bfidentifier; - - $regexformach='M\]\/\/'; - &bfaddressinbook; - - &afpublisherbook;#出版社及之后的信息inbook/book一样的 - - - if ($address=~m/\[S\.l\.\]/ or $address=~m/出版地不详/) {#当存在英文的[s.n.] - $address=""; - } - if ($publisher=~m/\[s\.n\.\]/ or $publisher=~m/出版者不详/) {#当存在英文的[s.n.] - $publisher=""; - } - $date=$year; - } - } - - - #--------------------------------------------------------------- - #条目类型:专著中析出文献但存在网址/inbook with url - #--------------------------------------------------------------- - if(1){ - if ($reference=~m/\[M\/OL\]\/\//){#匹配[M]//判断为inbook类型 - print "this entry's type is: inbook \n"; - $entrytype='inbook'; - - - $regexformach='\[M\/OL\]\/\/'; - &bfidentifier; - - $regexformach='M\/OL\]\/\/'; - &bfaddressinbook; - - &afpublisherbookurl;#出版社及之后的信息inbook/book一样的 - - - if ($address=~m/\[S\.l\.\]/ or $address=~m/出版地不详/) {#当存在英文的[s.n.] - $address=""; - } - if ($publisher=~m/\[s\.n\.\]/ or $publisher=~m/出版者不详/) {#当存在英文的[s.n.] - $publisher=""; - } - $date=$year; - } - } - - - #--------------------------------------------------------------- - #输出到bib文件中 - #--------------------------------------------------------------- - if(1){ - if($date=~m/-\d{4}/){#存在enddate的情况下,将中间的连字符转化成斜杠 - print 'date=',$date,"\n"; - ($datetempa,$datetempb)=($date=~m/(.*)-(\d{4}.*)/); - $date=$datetempa.'/'.$datetempb; - print 'date=',$date,"\n"; - } - - if($url=~m/.*\.$/){ - $urlplusdot=$url; - ($url)=($urlplusdot=~m/(.*)\.$/);#去掉处于条目末尾的url地址后的点 - } - #最后输出 - print "\n"; - print '@',"$entrytype",'{',"ref-$nline-$sn",',',"\n"; - $author&& print 'author = {',$author,'},',"\n"; - $title&& print 'title = {',$title,'},',"\n"; - $journal&& print 'journal = {',$journal,'},',"\n"; - $translator&& print 'translator= {',$translator,'},',"\n"; - $bookauthor&& print 'bookauthor= {',$bookauthor,'},',"\n"; - $booktitle&& print 'booktitle = {',$booktitle,'},',"\n"; - $version&& print 'version = {',$version,'},',"\n"; - $address&& print 'address = {',$address,'},',"\n"; - $publisher&& print 'publisher = {',$publisher,'},',"\n"; - $type&& print 'type = {',$type,'},',"\n"; - $date&& print 'date = {',$date,'},',"\n"; - $volume&& print 'volume = {',$volume,'},',"\n"; - $number&& print 'number = {',$number,'},',"\n"; - $pages&& print 'pages = {',$pages,'},',"\n"; - $eventdate&& print 'eventdate = {',$eventdate,'},',"\n"; - $urldate&& print 'urldate = {',$urldate,'},',"\n"; - $url&& print 'url = {',$url,'},',"\n"; - $doi&& print 'doi = {',$doi,'},',"\n"; - $note&& print 'note = {',$note,'},',"\n"; - print '}',"\n"; - print 'authorlabel=',$authorlabel,"\n"; - - - print FHW '@',"$entrytype",'{',"ref-$nline-$sn-$authorlabel",',',"\n"; - $author&& print FHW 'author = {',$author,'},',"\n"; - $title&& print FHW 'title = {',$title,'},',"\n"; - $journal&& print FHW 'journal = {',$journal,'},',"\n"; - $translator&& print FHW 'translator= {',$translator,'},',"\n"; - $bookauthor&& print FHW 'bookauthor= {',$bookauthor,'},',"\n"; - $booktitle&& print FHW 'booktitle = {',$booktitle,'},',"\n"; - $version&& print FHW 'version = {',$version,'},',"\n"; - $address&& print FHW 'address = {',$address,'},',"\n"; - $publisher&& print FHW 'publisher = {',$publisher,'},',"\n"; - $type&& print FHW 'type = {',$type,'},',"\n"; - $date&& print FHW 'date = {',$date,'},',"\n"; - $volume&& print FHW 'volume = {',$volume,'},',"\n"; - $number&& print FHW 'number = {',$number,'},',"\n"; - $pages&& print FHW 'pages = {',$pages,'},',"\n"; - $eventdate&& print FHW 'eventdate = {',$eventdate,'},',"\n"; - $urldate&& print FHW 'urldate = {',$urldate,'},',"\n"; - $url&& print FHW 'url = {',$url,'},',"\n"; - $doi&& print FHW 'doi = {',$doi,'},',"\n"; - $note&& print FHW 'note = {',$note,'},',"\n"; - print FHW '}',"\n"; - } - - - print "\n"; - if($nline>=$ne){last;} #先跳过几行进行,配合后面的last进行当行测试 -} - - sub bfidentifier{#bf表示before,标识符前所有的类型都一样 - #$regexpformach=@_; - #print '@_=',@_,"\n"; - #print 'regexpformach=',"$regexpformach \n"; - #标识符之前很容易匹配三个内容,序号,作者和标题 - if($reference=~m/.*\D\.\s\D.*$regexformach/){#匹配存在作者后的点的话,同时点号周围不是数字,有时标题中可能出现1.1这样的信息 - ($sn , $author , $title)=($reference=~m/\[(\d+)\]\s*(.*)\.\s(.*)$regexformach/); - print 'sn =',"$sn \n"; - print 'author=',"$author \n";#作者多个姓名还需要处理,还要注意有前后缀的情况 - print 'title =',"$title \n"; - if($author=~m/等/){ - $author=~s/等/others/;#将等换成others - }else{ - $author=~s/,\s*$//;#将最后一个逗号去掉 - } - if($author=~m/et\sal/){ - $author=~s/et\sal/others/;#将et al.换成others - }else{ - $author=~s/,\s*$//;#将最后一个逗号去掉 - } - while($author=~m/,/){ - $author=~s/,/ and /;#将逗号换成and - } - print 'author=',"$author \n"; - }else{#不存在作者的话\[M\]\/\/ - ($sn , $title)=($reference=~m/\[(\d+)\]\s*(.*)$regexformach/);#标识符之前很容易匹配三个内容,序号,作者和标题 - print 'sn =',"$sn \n"; - print 'title =',"$title \n"; - } - - #进一步处理责任者的姓名,主要针对英文名需要有一些符号进行区分姓,名,前缀和后缀。 - @names=split('and',$author); - print 'names=',@names,"\n"; - $author=""; - $j=0; - foreach $name(@names){#一个姓名一个姓名处理 - - $j=$j+1; - #print $name,"\n"; - @nameparts=split(' ',$name); - #print 'nameparts=',@nameparts,"\n"; - - $org=0; - for($k=0;$k<@nameparts;$k++){ - if(@nameparts[$k]=~m/.{2,}/ and @nameparts[$k]!~m/\s*von\s*/i and @nameparts[$k]!~m/\s*jr\s*/i){ - #当分解的单作者的各个部分,存在两个以上为2个字符以上的情况,说明不是一般的姓名而是机构作者 - $org=$org+1; - print 'org=',"$org\n"; - } - } - - if(@nameparts>1){ - if(@nameparts[0]=~m/\s*von\s*/i){#确定姓的位置 - $family=1; - @nameparts[1]=@nameparts[1].','; - }else{ - $family=0; - @nameparts[0]=@nameparts[0].','; - } - if(@nameparts[-1]=~m/\s*jr\s*/i){#确定后缀的位置 - @nameparts[-1]=@nameparts[-1].'.,'; - $given=@nameparts-2; - $suffix=1; - }else{ - $suffix=0; - $given=@nameparts-1; - } - print 'family=',$family,"\n"; - print 'given=',$given,"\n"; - print 'suffix=',$suffix,"\n"; - print 'familyname=',@nameparts[$family],"\n"; - - $namefmt=""; - for($i=0;$i<=$family;$i++){ - $namefmt=$namefmt.@nameparts[$i].' '; - print $i,$family,$namefmt,"\n"; - } - if($suffix){ - $namefmt=$namefmt.@nameparts[-1].' '; - } - for($i=$family+1;$i<=$given;$i++){ - $namefmt=$namefmt.@nameparts[$i].' '; - print $i,$family,$namefmt,"\n"; - } - }else{ - $namefmt=$name; - } - if($org > 1){#当是机构作者时 - $namefmt='{'.$name.'}'; - } - print 'namefmt=',"$namefmt \n"; - - if($j==1){#把姓名用and连接起来 - $author=$namefmt; - }else{ - $author=$author.' and '.$namefmt; - } - - if($j==1){#根据第一个作者构建authorlabel - if($org > 1){#机构作者取各单词的首字母 - $authorlabel=''; - for($k=0;$k<@nameparts;$k++){ - ($strtmp)=($nameparts[$k]=~/^(.)/); - $authorlabel=$authorlabel.$strtmp; - } - }else{#姓名则仅取作者姓 - ($authorlabel)=$nameparts[$family]; - if($authorlabel=~m/,$/){$authorlabel=~s/,$//;}#去掉最后的逗号 - } - } - } - while($author=~m/\s{2,}/){ - $author=~s/\s{2,}/ /;#将多余的空格去掉 - } - while($author=~m/\.{2,}/){ - $author=~s/\.{2,}/\./;#将多余的点去掉 - } - print 'author=',"$author\n"; - } - - - sub bfaddressbook{#bf表示before,出版者前book和inbook不一样 - #对于book类型,必然存在出版地和出版者信息,以此为根据展开 - print 'sub:bfaddressbook ',"\n"; - if($reference!~m/$regexformach\s*[^:]+:\s\D{1,}.*/){#如果不存在出版地和出版者信息 - ($pospublisher)=($reference=~m/$regexformach\s*(.*)/); - print 'pospublisher=',"$pospublisher \n"; - }else{ - ($preaddress, $pospublisher)=($reference=~m/$regexformach\s*([^:]+):\s(\D{1,}.*)/);#标识符之后根据第一个冒号分为包括地址的信息和包括出版者的信息两部分 - print 'preaddress =',"$preaddress \n"; - print 'pospublisher=',"$pospublisher \n"; - - #处理出版地及其前面的信息 - if ($preaddress=~m/.*\[S\.l\.\].*/) {#当存在英文的[S.l.],英文的一般不存在译者,所以下面处理比较简单 - $preaddress=~s/\[S\.l\.\]/\[S-l-\]/; #先将[S.l.]换成[S-l-]然后换回来 - } - if ($preaddress=~m/.*\d.*\.\s*.*/){#匹配存在数字版本的话 - ($preversion, $version, $address)=($preaddress=~m/(.*)(\d)[^\.]*\.\s*(.*)/); - print 'preversion =',"$preversion \n"; - print 'version =',"$version \n"; - print 'address =',"$address \n"; - if($preversion=~m/.*\..*/){#如果存在译者等信息 - ($translator)=($preversion=~m/(.*)\..*/); - print 'translator =',"$translator \n";#作者多个姓名还需要处理,还有译这个标识 - } - }else {#不存在数字版本的话 - if($preaddress=~m/.*\.\s+.*/){#存在点加空格,表示存在其他作者信息,区别点在末尾但无空格 - ($preversion,$address)=($preaddress=~m/(.*)\.\s*(.*)/); - print 'preversion =',"$preversion \n"; - print 'address =',"$address \n"; - $translator=$preversion; - print 'translator =',"$translator \n"; - }else{ - $address=$preaddress; - print 'address =',"$address \n"; - } - } - - if($translator=~m/译/){#当译者真实存在 - $translator=~s/,\s*译//;#将译去掉 - if($translator=~m/等/){ - $translator=~s/等/others/;#将等换成others - }else{ - $translator=~s/,\s*$//;#将最后一个逗号去掉 - } - while($translator=~m/,/){ - $translator=~s/,/ and /;#将逗号换成and - } - print 'translator =',"$translator \n"; - }else {#当译者不存在,那么translator中信息可能是非数字的版本信息 - unless($version) {#除非version没有信息 - $version=$translator; - $translator=""; - }else{ - print "version is already exisit!\n"; - print 'version=',$version,"\n"; - print 'translator=',$translator,"\n"; - } - } - - if ($address=~m/.*\[S-l-\].*/) {#当存在英文的[S-l-][S.l.] - $address=~s/\[S-l-\]/\[S\.l\.\]/; #将[S-l-]换回[S.l.] - } - } - } - - - sub bfaddressinbook{#bf表示before,出版者前book和inbook不一样 - ($postitle)=($reference=~m/$regexformach\s*(.*)/); - print 'postitle=',$postitle,"\n"; - if($postitle=~m/^[^:\.]+:[^:\.]+\./){#当存在析出源第一项中出现:时 - $postitle=~s/:/colon/;#先将该冒号换成colon - print 'postitle=',$postitle,"\n"; - } - #对于inbook类型,必然存在出版地和出版者信息,以此为根据展开 - ($preaddress, $pospublisher)=($postitle=~m/\s*(.*):\s(\D.*)/); - #($preaddress, $pospublisher)=($postitle=~m/\s*([^:]+):\s(\D.*)/); - #标识符之后根据第一个冒号分为包括地址的信息和包括出版者的信息两部分 - print 'preaddress =',"$preaddress \n"; - print 'pospublisher=',"$pospublisher \n"; - - #处理出版地及其前面的信息 - if ($preaddress=~m/.*\[S\.l\.\].*/) {#当存在英文的[S.l.],英文的一般不存在译者,所以下面处理比较简单 - $preaddress=~s/\[S\.l\.\]/\[S-l-\]/; #先将[S.l.]换成[S-l-]然后换回来 - } - if ($preaddress=~m/.*\d.*\.\s+.*/ and ($preaddress=~m/.*th\sed.*/ or $preaddress=~m/.*版.*/)){#匹配存在数字版本的话 - ($preversion, $version, $address)=($preaddress=~m/(.*)(\d)[^\.]*\.\s+(.*)/); - print 'preversion =',"$preversion \n"; - print 'version =',"$version \n"; - print 'address =',"$address \n"; - if($preversion=~m/.*\.\s+.*/){#如果存在译者等信息 - ($translator)=($preversion=~m/(.*)\.\s+.*/); - print 'translator =',"$translator \n";#作者多个姓名还需要处理,还有译这个标识 - } - }else {#不存在数字版本的话 - if($preaddress=~m/.*\.\s+.*/){#存在点加空格,表示存在其他作者信息,区别点在末尾但无空格 - ($preversion,$address)=($preaddress=~m/(.*)\.\s+(.*)/); - print 'preversion =',"$preversion \n"; - print 'address =',"$address \n"; - if($preversion=~m/.*\.\s+.*/){#中间还存在点加空格 - ($bookauthor,$booktitle)=($preversion=~m/(.*)\.\s+(.*)/); - - if($bookauthor=~m/等/){ - $bookauthor=~s/等/others/;#将等换成others - }else{ - $bookauthor=~s/,\s*$//;#将最后一个逗号去掉 - } - if($bookauthor=~m/et\sal/){ - $bookauthor=~s/et\sal/others/;#将et al.换成others - }else{ - $bookauthor=~s/,\s*$//;#将最后一个逗号去掉 - } - while($bookauthor=~m/,/){ - $bookauthor=~s/,/ and /;#将逗号换成and - } - print 'bookauthor=',"$bookauthor \n"; - }else{ - $booktitle=$preversion; - } - }else{ - $address=$preaddress; - print 'address =',"$address \n"; - } - } - - if ($address=~m/.*\[S-l-\].*/) {#当存在英文的[S-l-][S.l.] - $address=~s/\[S-l-\]/\[S\.l\.\]/; #将[S-l-]换回[S.l.] - } - if ($booktitle=~m/.*colon.*/) {#当存在colon - $booktitle=~s/colon/:/; #将colon换回: - } - - #进一步处理责任者的姓名,主要针对英文名需要有一些符号进行区分姓,名,前缀和后缀。 - @names=split('and',$bookauthor); - print 'names=',@names,"\n"; - $bookauthor=""; - $j=0; - foreach $name(@names){ - $j=$j+1; - #print $name,"\n"; - @nameparts=split(' ',$name); - #print 'nameparts=',@nameparts,"\n"; - - $org=0; - for($k=0;$k<@nameparts;$k++){ - if(@nameparts[$k]=~m/.{2,}/ and @nameparts[$k]!~m/\s*von\s*/i and @nameparts[$k]!~m/\s*jr\s*/i){ - #当分解的单作者的各个部分,存在两个以上为2个字符以上的情况,说明不是一般的姓名而是机构作者 - $org=$org+1; - print 'org=',"$org\n"; - } - } - - if(@nameparts>1){ - if(@nameparts[0]=~m/\s*von\s*/i){#确定姓的位置 - $family=1; - @nameparts[1]=@nameparts[1].','; - }else{ - $family=0; - @nameparts[0]=@nameparts[0].','; - } - if(@nameparts[-1]=~m/\s*jr\s*/i){#确定后缀的位置 - @nameparts[-1]=@nameparts[-1].'.,'; - $given=@nameparts-2; - $suffix=1; - }else{ - $suffix=0; - $given=@nameparts-1; - } - #print 'family=',$family,"\n"; - #print 'given=',$given,"\n"; - #print 'suffix=',$suffix,"\n"; - - $namefmt=""; - for($i=0;$i<=$family;$i++){ - $namefmt=$namefmt.@nameparts[$i].' '; - #print $i,$family,$namefmt,"\n"; - } - if($suffix){ - $namefmt=$namefmt.@nameparts[-1].' '; - } - for($i=$family+1;$i<=$given;$i++){ - $namefmt=$namefmt.@nameparts[$i].' '; - } - }else{ - $namefmt=$name; - } - if($org > 1){#当是机构作者时 - $namefmt='{'.$name.'}'; - } - #print 'namefmt=',"$namefmt \n"; - - if($j==1){ - $bookauthor=$namefmt; - }else{ - $bookauthor=$bookauthor.' and '.$namefmt; - } - } - while($bookauthor=~m/\s{2,}/){ - $bookauthor=~s/\s{2,}/ /;#将多余的空格去掉 - } - while($bookauthor=~m/\.{2,}/){ - $bookauthor=~s/\.{2,}/\./;#将多余的点去掉 - } - print 'bookauthor=',"$bookauthor\n"; - } - - - sub afpublisherbook{#af表示after,出版者后book和inbook一样,但如果存在url则不同 - #处理出版者及其后面的信息 - if ($pospublisher=~m/.*\[s\.n\.\].*/) {#当存在英文的[s.n.] - $pospublisher=~s/\[s\.n\.\]/\[s-n-\]/; #先将[s.n.]换成[s-n-]然后换回来 - } - if ($pospublisher=~m/.*,\s*\d{4}\S+/){#匹配存在年份的话 - ($publisher, $year, $posyear)=($pospublisher=~m/(.*),\s*(\d{4})(.*)/); - print 'publisher=',"$publisher \n"; - print 'year =',"$year \n"; - print 'posyear =',"$posyear \n"; - if($posyear=~m/^:/){#匹配存在页码前面的冒号的话 - ($pages, $pospages)=($posyear=~m/^:([^\.]+)\.(.*)/); - print 'pages =',"$pages \n"; - print 'pospages=',"$pospages \n"; - if($pospages=~m/DOI/i){#匹配存在doi的话 - ($doi)=($pospages=~m/DOI:(.*)\./i); - print 'doi=',"$doi \n"; - } - }else{#不存在页码的话 - if($posyear=~m/DOI/i){#匹配存在doi的话 - ($doi)=($posyear=~m/DOI:(.*)\./i); - print 'doi=',"$doi \n"; - } - } - }else{#不存在年份,匹配一下是否存在冒号和页码 - if($pospublisher=~m/.*[^DOI]:.*/i){#当存在不是doi后面的冒号时,说明有页码 - ($publisher, $pages, $pospages)=($pospublisher=~m/([^:]*):([^\.]*)\.(.*)/); - print 'publisher=',"$publisher \n"; - print 'pages =',"$pages \n"; - print 'pospages =',"$pospages \n"; - if($pospages=~m/DOI/i){#匹配存在doi的话 - ($doi)=($pospages=~m/DOI:(.*)\./i); - print 'doi=',"$doi \n"; - } - }else{#没有页码冒号以点作为出版者后的分隔点 - ($publisher, $pospages)=($pospublisher=~m/([^\.]*)\.(.*)/); - print 'publisher=',"$publisher \n"; - print 'pospages =',"$pospages \n"; - if($pospages=~m/DOI/i){#匹配存在doi的话 - ($doi)=($pospages=~m/DOI:(.*)\./i); - print 'doi=',"$doi \n"; - } - } - } - if ($publisher=~m/.*\[s-n-\].*/) {#当存在英文的[s-n-] - $publisher=~s/\[s-n-\]/\[s\.n\.\]/; #将[s-n-]换回[s.n.] - } - } - - - sub afpublisherbookurl{#af表示after,出版者后book和inbook一样,但如果存在url则不同 - #处理出版者及其后面的信息 - if ($pospublisher=~m/.*\[s\.n\.\].*/) {#当存在英文的[s.n.] - $pospublisher=~s/\[s\.n\.\]/\[s-n-\]/; #先将[s.n.]换成[s-n-]然后换回来 - } - if ($pospublisher=~m/.*,\s*\d{4}[^\d-]/){#匹配存在年份的话,4个数字后面跟着不能是数字和连字符- - ($publisher, $year, $posyear)=($pospublisher=~m/(.*),\s*(\d{4})(.*)/); - print 'publisher=',"$publisher \n"; - print 'year =',"$year \n"; - print 'posyear =',"$posyear \n"; - if($posyear=~m/^:/){#匹配存在页码前面的冒号的话 - ($pages, $pospages)=($posyear=~m/^:([^\.]+)\.(.*)/); - print 'pages =',"$pages \n"; - print 'pospages=',"$pospages \n"; - if($pages=~m/\[.*\]/){ - ($pagesa, $urldate)=($pages=~m/(.*)\[(.*)\]/); - $pages=$pagesa; - print 'urldate=',"$urldate \n"; - print 'pages=',"$pages \n"; - } - if($pospages=~m/DOI/i){#匹配存在doi的话 - ($url, $doi)=($pospages=~m/(.*)\.\s*DOI:(.*)\./i); - print 'url=',"$url \n"; - print 'doi=',"$doi \n"; - }else{ - ($url)=($pospages=~m/(.*)\./i); - print 'url=',"$url \n"; - } - } - else{#不存在页码的话 - if($posyear=~m/\[.*\]/){ - ($urldate,$pospages)=($posyear=~m/.*\[(.*)\]\.(.*)/); - print 'urldate=',"$urldate \n"; - print 'pospages=',"$pospages \n"; - } - else{#不存在页码,又不存在引用日期的话,那么会有一个点和空格 - ($pospages)=($posyear=~m/.*\s(.*)/); - print 'pospages=',"$pospages \n"; - } - if($pospages=~m/DOI/i){#匹配存在doi的话 - ($url, $doi)=($pospages=~m/(.*)\.\s*DOI:(.*)\./i); - print 'url=',"$url \n"; - print 'doi=',"$doi \n"; - }else{ - ($url)=($pospages=~m/(.*)\./i); - print 'url=',"$url \n"; - } - } - }else{#不存在年份,匹配一下是否存在冒号和页码 - if($pospublisher=~m/.*[^DOIhttp]:.*/i){#当存在不是doi或http后面的冒号时,说明有页码 - ($publisher, $pages, $pospages)=($pospublisher=~m/([^:]*):([^\.]*)\.(.*)/); - print 'publisher=',"$publisher \n"; - print 'pages =',"$pages \n"; - print 'pospages =',"$pospages \n"; - if($pages=~m/\[.*\]/){ - ($pagesa, $urldate)=($pages=~m/(.*)\[(.*)\]/); - $pages=$pagesa; - print 'urldate=',"$urldate \n"; - print 'pages=',"$pages \n"; - } - if($pospages=~m/DOI/i){#匹配存在doi的话 - ($url, $doi)=($pospages=~m/(.*)\.\s*DOI:(.*)\./i); - print 'url=',"$url \n"; - print 'doi=',"$doi \n"; - }else{ - ($url)=($pospages=~m/(.*)\./i); - print 'url=',"$url \n"; - } - }else{#没有页码冒号以点作为出版者后的分隔点 - ($publisher, $pospages)=($pospublisher=~m/([^\.]*)\.(.*)/); - print 'publisher=',"$publisher \n"; - print 'pospages =',"$pospages \n"; - if($publisher=~m/\[.*\]/){ - ($publishera, $urldate)=($publisher=~m/(.*)\[(.*)\]/); - $publisher=$publishera; - print 'urldate=',"$urldate \n"; - print 'publisher=',"$publisher \n"; - } - if($pospages=~m/DOI/i){#匹配存在doi的话 - ($url, $doi)=($pospages=~m/(.*)\.\s*DOI:(.*)\./i); - print 'url=',"$url \n"; - print 'doi=',"$doi \n"; - }else{ - ($url)=($pospages=~m/(.*)\./i); - print 'url=',"$url \n"; - } - } - } - if ($publisher=~m/.*\[s-n-\].*/) {#当存在英文的[s-n-] - $publisher=~s/\[s-n-\]/\[s\.n\.\]/; #将[s-n-]换回[s.n.] - } - } - - - sub afpublisherbookb{#af表示after,出版者后book和inbook一样,但如果存在url则不同 - #处理出版者及其后面的信息 - if ($pospublisher=~m/.*\[s\.n\.\].*/) {#当存在英文的[s.n.] - $pospublisher=~s/\[s\.n\.\]/\[s-n-\]/; #先将[s.n.]换成[s-n-]然后换回来 - } - if ($pospublisher=~m/.*[\.\s,]*\d{4}[\D\S]+/){#匹配存在年份的话,年份前面没有逗号+空格 - ($publisher, $year, $posyear)=($pospublisher=~m/(.*)[\.\s,]*(\d{4})([\D\S].*)/); - print 'publisher=',"$publisher \n"; - if($publisher=~m/[,\s]+$/){$publisher=~s/[,\s]+$//;}#去掉最后的逗号 - unless($address){#当没有出版地时,也没有必要存在 - $version=$publisher; - $publisher=''; - } - print 'year =',"$year \n"; - print 'posyear =',"$posyear \n"; - if($posyear=~m/^:/){#匹配存在页码前面的冒号的话 - ($pages, $pospages)=($posyear=~m/^:([^\.]+)\.(.*)/); - print 'pages =',"$pages \n"; - print 'pospages=',"$pospages \n"; - if($pospages=~m/DOI/i){#匹配存在doi的话 - ($doi)=($pospages=~m/DOI:(.*)\./i); - print 'doi=',"$doi \n"; - } - }else{#不存在页码的话 - if($posyear=~m/DOI/i){#匹配存在doi的话 - ($doi)=($posyear=~m/DOI:(.*)\./i); - print 'doi=',"$doi \n"; - } - } - }else{#不存在年份,匹配一下是否存在冒号和页码 - if($pospublisher=~m/.*[^DOI]:.*/i){#当存在不是doi后面的冒号时,说明有页码 - ($publisher, $pages, $pospages)=($pospublisher=~m/([^:]*):([^\.]*)\.(.*)/); - print 'publisher=',"$publisher \n"; - print 'pages =',"$pages \n"; - print 'pospages =',"$pospages \n"; - if($pospages=~m/DOI/i){#匹配存在doi的话 - ($doi)=($pospages=~m/DOI:(.*)\./i); - print 'doi=',"$doi \n"; - } - }else{#没有页码冒号以点作为出版者后的分隔点 - ($publisher, $pospages)=($pospublisher=~m/([^\.]*)\.(.*)/); - print 'publisher=',"$publisher \n"; - print 'pospages =',"$pospages \n"; - if($pospages=~m/DOI/i){#匹配存在doi的话 - ($doi)=($pospages=~m/DOI:(.*)\./i); - print 'doi=',"$doi \n"; - } - } - if($publisher=~m/,$/){$publisher=~s/,$//;}#去掉最后的逗号 - unless($address){#当没有出版地时,也没有必要存在 - $type=$publisher; - $publisher=''; - } - } - if ($publisher=~m/.*\[s-n-\].*/) {#当存在英文的[s-n-] - $publisher=~s/\[s-n-\]/\[s\.n\.\]/; #将[s-n-]换回[s.n.] - } - } - - - - sub afpublisherbookurlb{#af表示after,出版者后book和inbook一样,但如果存在url则不同 - #处理出版者及其后面的信息 - if ($pospublisher=~m/.*\[s\.n\.\].*/) {#当存在英文的[s.n.] - $pospublisher=~s/\[s\.n\.\]/\[s-n-\]/; #先将[s.n.]换成[s-n-]然后换回来 - } - if ($pospublisher=~m/.*[\.\s,]*\d{4}[^\d-]/){#匹配存在年份的话,4个数字后面跟着不能是数字和连字符- - ($publisher, $year, $posyear)=($pospublisher=~m/(.*)[\.\s,]*(\d{4})([^\d-].*)/); - print 'publisher=',"$publisher \n"; - print 'year =',"$year \n"; - print 'posyear =',"$posyear \n"; - if($publisher=~m/,$/){$publisher=~s/,$//;}#去掉最后的逗号 - unless($address){#当没有出版地时,也没有必要存在 - $version=$publisher; - $publisher=''; - } - if($posyear=~m/^:/){#匹配存在页码前面的冒号的话 - ($pages, $pospages)=($posyear=~m/^:([^\.]+)\.(.*)/); - print 'pages =',"$pages \n"; - print 'pospages=',"$pospages \n"; - if($pages=~m/\[.*\]/){ - ($pagesa, $urldate)=($pages=~m/(.*)\[(.*)\]/); - $pages=$pagesa; - print 'urldate=',"$urldate \n"; - print 'pages=',"$pages \n"; - } - if($pospages=~m/DOI/i){#匹配存在doi的话 - ($url, $doi)=($pospages=~m/(.*)\.\s*DOI:(.*)\./i); - print 'url=',"$url \n"; - print 'doi=',"$doi \n"; - }else{ - ($url)=($pospages=~m/(.*)\./i); - print 'url=',"$url \n"; - } - } - else{#不存在页码的话 - if($posyear=~m/\[.*\]/){ - ($urldate,$pospages)=($posyear=~m/.*\[(.*)\]\.(.*)/); - print 'urldate=',"$urldate \n"; - print 'pospages=',"$pospages \n"; - } - else{#不存在页码,又不存在引用日期的话,那么会有一个点和空格 - ($pospages)=($posyear=~m/.*\s(.*)/); - print 'pospages=',"$pospages \n"; - } - if($pospages=~m/DOI/i){#匹配存在doi的话 - ($url, $doi)=($pospages=~m/(.*)\.\s*DOI:(.*)\./i); - print 'url=',"$url \n"; - print 'doi=',"$doi \n"; - }else{ - ($url)=($pospages=~m/(.*)\./i); - print 'url=',"$url \n"; - } - } - }else{#不存在年份,匹配一下是否存在冒号和页码 - if($pospublisher=~m/.*[^DOIhttp]:.*/i){#当存在不是doi或http后面的冒号时,说明有页码 - ($publisher, $pages, $pospages)=($pospublisher=~m/([^:]*):([^\.]*)\.(.*)/); - print 'publisher=',"$publisher \n"; - print 'pages =',"$pages \n"; - print 'pospages =',"$pospages \n"; - if($pages=~m/\[.*\]/){ - ($pagesa, $urldate)=($pages=~m/(.*)\[(.*)\]/); - $pages=$pagesa; - print 'urldate=',"$urldate \n"; - print 'pages=',"$pages \n"; - } - if($pospages=~m/DOI/i){#匹配存在doi的话 - ($url, $doi)=($pospages=~m/(.*)\.\s*DOI:(.*)\./i); - print 'url=',"$url \n"; - print 'doi=',"$doi \n"; - }else{ - ($url)=($pospages=~m/(.*)\./i); - print 'url=',"$url \n"; - } - }else{#没有页码冒号以点作为出版者后的分隔点 - ($publisher, $pospages)=($pospublisher=~m/([^\.]*)\.(.*)/); - print 'publisher=',"$publisher \n"; - print 'pospages =',"$pospages \n"; - if($publisher=~m/\[.*\]/){ - ($publishera, $urldate)=($publisher=~m/(.*)\[(.*)\]/); - $publisher=$publishera; - print 'urldate=',"$urldate \n"; - print 'publisher=',"$publisher \n"; - } - if($pospages=~m/DOI/i){#匹配存在doi的话 - ($url, $doi)=($pospages=~m/(.*)\.\s*DOI:(.*)\./i); - print 'url=',"$url \n"; - print 'doi=',"$doi \n"; - }else{ - ($url)=($pospages=~m/(.*)\./i); - print 'url=',"$url \n"; - } - } - if($publisher=~m/,$/){$publisher=~s/,$//;}#去掉最后的逗号 - unless($address){#当没有出版地时,也没有必要存在 - $type=$publisher; - $publisher=''; - } - } - if ($publisher=~m/.*\[s-n-\].*/) {#当存在英文的[s-n-] - $publisher=~s/\[s-n-\]/\[s\.n\.\]/; #将[s-n-]换回[s.n.] - } - } - - - -close (FHR); -close (FHW); \ No newline at end of file diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gbT7714-2015.tex b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gbT7714-2015.tex deleted file mode 100644 index b495abd4d8..0000000000 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gbT7714-2015.tex +++ /dev/null @@ -1,15 +0,0 @@ -\documentclass{article} -\usepackage{pdfpages}%直接插入pdf文件页 -\graphicspath{{egfigure/}{example/}} - -\begin{document} - -\includepdf[pages=-]{egfigure/tgbcitation.pdf} - -\IfFileExists{egfigure/tngbcitationay.pdf} -{\includepdf[pages=-]{egfigure/tngbcitationay.pdf}} -{\includepdf[pages=-]{egfigure/tngbcitationaynew.pdf}} - -\includepdf[pages=-]{egfigure/tgbbiblio.pdf} - -\end{document} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gbT7714-2015eg.tex b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gbT7714-2015eg.tex deleted file mode 100644 index f64360b40f..0000000000 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gbT7714-2015eg.tex +++ /dev/null @@ -1,114 +0,0 @@ -\documentclass{article} -\usepackage[colorlinks=true]{hyperref} -\usepackage{pdfpages}%直接插入pdf文件页 -\graphicspath{{egfigure/}{example/}} - -\begin{document} - -\phantomsection -%\addcontentsline{toc}{section}{cls-beamer} -\includepdf[pages=-,addtotoc={1,section,1,cls-beamer,eg:beamer}]{example/cls-beamer.pdf} - - -\phantomsection -%\addcontentsline{toc}{section}{cls-beameray} -\includepdf[pages=-,addtotoc={1,section,1,cls-beameray,eg:beameray}]{example/cls-beameray.pdf} - - -\phantomsection -%\addcontentsline{toc}{section}{codeopt-gbcodegbk} -\includepdf[pages=-,addtotoc={1,section,1,codeopt-gbcodegbk,eg:gbk}]{example/codeopt-gbcodegbk.pdf} - - -\phantomsection -%\addcontentsline{toc}{section}{eg-opt-gbstyle} -\includepdf[pages=-,addtotoc={1,section,1,eg-opt-gbstyle,eg:multistyle}]{example/eg-opt-gbstyle.pdf} - - -\phantomsection -%\addcontentsline{toc}{section}{opt-gbalign-center} -\includepdf[pages=-,addtotoc={1,section,1,opt-gbalign-center,eg:aligncenter}]{example/opt-gbalign-center.pdf} - - -\phantomsection -%\addcontentsline{toc}{section}{opt-gbalign-gb} -\includepdf[pages=-,addtotoc={1,section,1,opt-gbalign-gb,eg:aligngb}]{example/opt-gbalign-gb.pdf} - - -\phantomsection -%\addcontentsline{toc}{section}{opt-gbalign-left} -\includepdf[pages=-,addtotoc={1,section,1,opt-gbalign-left,eg:alignleft}]{example/opt-gbalign-left.pdf} - - -\phantomsection -%\addcontentsline{toc}{section}{opt-gbbiblabel} -\includepdf[pages=-,addtotoc={1,section,1,opt-gbbiblabel,eg:biblabel}]{example/opt-gbbiblabel.pdf} - - - - - -\phantomsection -%\addcontentsline{toc}{section}{opt-gbfieldstd} -\includepdf[pages=-,addtotoc={1,section,1,opt-gbfieldstd,eg:fieldstd}]{example/opt-gbfieldstd.pdf} - - -\phantomsection -%\addcontentsline{toc}{section}{opt-gbnamefmt} -\includepdf[pages=-,addtotoc={1,section,1,opt-gbnamefmt,eg:namefmt}]{example/opt-gbnamefmt.pdf} - - -\phantomsection -%\addcontentsline{toc}{section}{opt-gbnamefmt-default} -\includepdf[pages=-,addtotoc={1,section,1,opt-gbnamefmt-default,eg:namefmta}]{example/opt-gbnamefmt-default.pdf} - - - -\phantomsection -%\addcontentsline{toc}{section}{opt-gbpub-true} -\includepdf[pages=-,addtotoc={1,section,1,opt-gbpub-true,eg:pub}]{example/opt-gbpub-true.pdf} - - -\phantomsection -%\addcontentsline{toc}{section}{opt-gbpunctin} -\includepdf[pages=-,addtotoc={1,section,1,opt-gbpunctin,eg:in}]{example/opt-gbpunctin.pdf} - - -\phantomsection -%\addcontentsline{toc}{section}{opt-gbtitlelink} -\includepdf[pages=-,addtotoc={1,section,1,opt-gbtitlelink,eg:titlelink}]{example/opt-gbtitlelink.pdf} - - - -\phantomsection -%\addcontentsline{toc}{section}{opt-footbib} -\includepdf[pages=-,addtotoc={1,section,1,opt-gbfootbib,eg:footbib}]{example/opt-gbfootbib.pdf} - - -\phantomsection -%\addcontentsline{toc}{section}{opt-gbtype} -\includepdf[pages=-,addtotoc={1,section,1,opt-gbtype,eg:entrytype}]{example/opt-gbtype.pdf} - -\phantomsection -%\addcontentsline{toc}{section}{opt-gbctexset} -\includepdf[pages=-,addtotoc={1,section,1,opt-gbctexset,eg:ctexset}]{example/opt-gbctexset.pdf} - -\phantomsection -%\addcontentsline{toc}{section}{opt-gbnoauthor-false} -\includepdf[pages=-,addtotoc={1,section,1,opt-gbnoauthor-false,eg:noauthor}]{example/opt-gbnoauthor-false.pdf} - - -\phantomsection -%\addcontentsline{toc}{section}{opt-gbnoauthor-true} -\includepdf[pages=-,addtotoc={1,section,1,opt-gbnoauthor-true,eg:noauthora}]{example/opt-gbnoauthor-true.pdf} - - -\phantomsection -%\addcontentsline{toc}{section}{opt-gblocal} -\includepdf[pages=-,addtotoc={1,section,1,opt-gblocal,eg:local}]{example/opt-gblocal.pdf} - - - - - -\end{document} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gbT7714-2015fmt.tex b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gbT7714-2015fmt.tex deleted file mode 100644 index e3cd6eaa29..0000000000 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gbT7714-2015fmt.tex +++ /dev/null @@ -1,13 +0,0 @@ -\documentclass{article} -\usepackage[colorlinks=true]{hyperref} -\usepackage{pdfpages}%直接插入pdf文件页 -\graphicspath{{egfigure/}{example/}} - -\begin{document} - - -\phantomsection -%\addcontentsline{toc}{section}{testallformat} -\includepdf[pages=-,addtotoc={1,section,1,allfmt,eg:allfmt}]{example/testallformat.pdf} - -\end{document} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gbT7714-2015lan.tex b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gbT7714-2015lan.tex deleted file mode 100644 index 637fc0c293..0000000000 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gbT7714-2015lan.tex +++ /dev/null @@ -1,45 +0,0 @@ -\documentclass{article} -\usepackage[colorlinks=true]{hyperref} -\usepackage{pdfpages}%直接插入pdf文件页 -\graphicspath{{egfigure/}{example/}} - -\begin{document} - -\phantomsection -%\addcontentsline{toc}{section}{opt-eg-authoryear} -\includepdf[pages=-,addtotoc={1,section,1,opt-eg-dblang,eg:doublelang}]{example/opt-eg-dblang.pdf} - - -\phantomsection -%\addcontentsline{toc}{section}{opt-eg-authoryear} -\includepdf[pages=-,addtotoc={1,section,1,opt-eg-authoryear,eg:ay}]{example/opt-eg-authoryear.pdf} - -\phantomsection -%\addcontentsline{toc}{section}{opt-autolang-multilan} -\includepdf[pages=-,addtotoc={1,section,1,opt-autolang-multilan,eg:multilang}]{example/opt-autolang-multilan.pdf} - - -\phantomsection -%\addcontentsline{toc}{section}{opt-eg-multilan} -\includepdf[pages=-,addtotoc={1,section,1,opt-eg-multilan,eg:multilanga}]{example/opt-eg-multilan.pdf} - - -\phantomsection -\includepdf[pages=-,addtotoc={1,section,1,opt-gblanorder-chineseahead,eg:lanordercnah}]{example/opt-gblanorder-chineseahead.pdf} - -\phantomsection -\includepdf[pages=-,addtotoc={1,section,1,opt-gblanorder-englishahead,eg:lanorderenah}]{example/opt-gblanorder-englishahead.pdf} - -\phantomsection -\includepdf[pages=-,addtotoc={1,section,1,opt-gblanorder-udforder,eg:lanorderudf}]{example/opt-gblanorder-udforder.pdf} - -\phantomsection -\includepdf[pages=-,addtotoc={1,section,1,test-setlocal,eg:setlocalstring}] -{example/test-setlocal.pdf} - -\phantomsection -\includepdf[pages=-,addtotoc={1,section,1,test-setlocal-multilan,eg:setlocalstringmutillan}] -{example/test-setlocal-multilan.pdf} - - -\end{document} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gbT7714-2015ms.tex b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gbT7714-2015ms.tex deleted file mode 100644 index ffc76f6e26..0000000000 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gbT7714-2015ms.tex +++ /dev/null @@ -1,15 +0,0 @@ -\documentclass{article} -\usepackage{pdfpages}%直接插入pdf文件页 -\graphicspath{{egfigure/}{example/}} - -\begin{document} - -\includepdf[pages=-]{egfigure/tgbcitationms.pdf} - -\IfFileExists{egfigure/tngbcitationay.pdf} -{\includepdf[pages=-]{egfigure/tngbcitationay.pdf}} -{\includepdf[pages=-]{egfigure/tngbcitationaynew.pdf}} - -\includepdf[pages=-]{egfigure/tgbbiblioms.pdf} - -\end{document} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gbT7714-2015thesis.tex b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gbT7714-2015thesis.tex deleted file mode 100644 index 80ede4a301..0000000000 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gbT7714-2015thesis.tex +++ /dev/null @@ -1,68 +0,0 @@ -\documentclass{article} -\usepackage[colorlinks]{hyperref} -\usepackage{pdfpages}%直接插入pdf文件页 -\graphicspath{{egfigure/}{example/}} - -\begin{document} - -\tableofcontents - -\newpage -%\addcontentsline{toc}{section}{BUPT} -\includepdf[pages=-,addtotoc={1,section,1,BUPT,eg:BUPT}]{egthesis/thesis-bupt-numeric.pdf} - - -%\addcontentsline{toc}{section}{CAU} -\includepdf[pages=-,addtotoc={1,section,1,CAU,eg:CAU}]{egthesis/thesis-cau-numeric.pdf} - - -%\addcontentsline{toc}{section}{ECNU} -\includepdf[pages=-,addtotoc={1,section,1,ECNU,eg:ECNU}]{egthesis/thesis-ecnu-numeric.pdf} - - -%\addcontentsline{toc}{section}{FDU} -\includepdf[pages=-,addtotoc={1,section,1,FDU,eg:FDU}]{egthesis/thesis-fdu-numeric.pdf} - - -%\addcontentsline{toc}{section}{NWAFU} -\includepdf[pages=-,addtotoc={1,section,1,NWAFU,eg:nwafu}]{egthesis/thesis-nwafu-ay.pdf} - -%\addcontentsline{toc}{section}{SEU} -\includepdf[pages=-,addtotoc={1,section,1,SEU,eg:seu}]{egthesis/thesis-seu-numeric.pdf} - -%\addcontentsline{toc}{section}{SJTU} -\includepdf[pages=-,addtotoc={1,section,1,SJTU,eg:SJTU}]{egthesis/thesis-sjtu-numeric.pdf} - - -%\addcontentsline{toc}{section}{THU} -\includepdf[pages=-,addtotoc={1,section,1,THU,eg:THU}]{egthesis/thesis-thu-numeric.pdf} - -%\addcontentsline{toc}{section}{THU} -\includepdf[pages=-,addtotoc={1,section,1,THU,eg:TongJi}]{egthesis/thesis-tongji.pdf} - -%\addcontentsline{toc}{section}{UCAS} -\includepdf[pages=-,addtotoc={1,section,1,UCAS-m,eg:UCASm}]{egthesis/thesis-ucas-m.pdf} - - -%\addcontentsline{toc}{section}{UIBE} -\includepdf[pages=-,addtotoc={1,section,1,UIBE,eg:UIBE}]{egthesis/thesis-uibe-numeric.pdf} - - -%\addcontentsline{toc}{section}{USTC} -\includepdf[pages=-,addtotoc={1,section,1,USTC-ay,eg:USTCay}]{egthesis/thesis-ustc-authoryear.pdf} - - -%\addcontentsline{toc}{section}{USTC} -\includepdf[pages=-,addtotoc={1,section,1,USTC-num,eg:USTCnum}]{egthesis/thesis-ustc-numeric.pdf} - - -%\addcontentsline{toc}{section}{XJTU} -\includepdf[pages=-,addtotoc={1,section,1,XJTU,eg:XJTU}]{egthesis/thesis-xjtu-numeric.pdf} - - -%\addcontentsline{toc}{section}{ZJU} -\includepdf[pages=-,addtotoc={1,section,1,ZJU,eg:ZJU}]{egthesis/thesis-zju-numeric.pdf} - - - -\end{document} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/readme-BibLatex-Check.md b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/readme-BibLatex-Check.md deleted file mode 100644 index d441c64790..0000000000 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/readme-BibLatex-Check.md +++ /dev/null @@ -1,27 +0,0 @@ -BibLatex-Check - -是Pezmc开发检查bib文件中参考文献条目和域是否符合biblatex设定的python脚本。 -输入为bib文件,输出为bib文件正确与否的信息,会包括域的欠缺信息等,为一个html文件,该用firefox打开会比较快。 - -仓库见:https://github.com/Pezmc/BibLatex-Check - -用法: - -`./biblatex_check.py <-b input.bib> [-a input.aux] [-o output.html]` - -注意:aux和html文件是可选的。 - -帮助命令: - -`./biblatex_check.py -h` - -选项: - -- -b (--bib=file.bib) Set the input Bib File -- -a (--aux=file.aux) Set the input Aux File -- -o (--output=file.html) Write results to the HTML Output File. -- -v (--view) Open in Browser. Use together with -o. -- -N (--no-console) Do not print problems to console. An exit code is always returned. - - - diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/readme-BibLatex-map.md b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/readme-BibLatex-map.md deleted file mode 100644 index 9209550fc7..0000000000 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/readme-BibLatex-map.md +++ /dev/null @@ -1,152 +0,0 @@ -# biblatex-map.py - -是一个用于处理、修改和规范化bib文件的python脚本。 - -主要功能包括: -1. 基于biblatex的source map的逻辑修改bib文件中的参考文献信息 -2. 输入bib文件的解析,输出修改后的bib文件,以及json格式的参考文献文件 -3. 输出定制著录格式比如GB/T 7714-2015标准的参考文献表,输出文本或者thebibliography环境。简化格式定制方式 -4. 进一步可以实现一个宏包,实现一个简化功能的低配版biblatex - -处理的逻辑遵循biblatex的动态数据修改的规范,修改参数设置基本相同,只是把biblatex用tex命令表示的`\maps`、`\map`和`\step`转换为用json格式表示。 - -等价于用python重新实现了biber的动态数据修改功能。 - -------------------------------- - -本来想将这一内容放到Pezmc开发的biblatex_check脚本中,但想想还是纯粹点好了。 - -------------------------------- - -Maintainer: huzhenzhen - -Homepage: - -License:MIT license - - --------------------------------------- - -## 用法: - -直接在python命令行中运行 - -`./biblatex-map.py` - -需要修改的bib文件在`biblatex-map.py`修改: - -``` -if __name__=="__main__": - - #设置输入的bib文件 - inputbibfile='biblatex-map-test.bib' - - #set the aux file - #this is not necessary - #auxfile='tex-source-code.aux' -``` - -输出的bib/json文件自动生成,当设置了aux文件后,那么输出的bib文件中条目将限制为aux中引用的文献条目。 - -修改bib文件内容的配置用json格式表示,直接在`biblatex-map.py`修改sourcemaps参数: - -``` -#maps所有的修改用map构成一个maps -sourcemaps=[ - [#map1:将ELECTRONIC类型转换为online类型 - [{"typesource":"ELECTRONIC","typetarget":"online"}]#step1 - ], - [#map2:将source域转换为url域 - [{"fieldsource":"source","fieldtarget":"url"}]#step1 - ], - [#map3:将urldate域的信息“yyyy-m-d”转换为“yyyy-mm-dd”,注意正则表达式直接写不用在外面套"" - [{"fieldsource":"urldate","match":r'(\d\d\d\d)\-(\d)\-(\d)',"replace":r'\1-0\2-0\3'}]#step1 - ], - [#map4:将urldate域的信息“yyyy-m-d”转换为“yyyy-mm-dd”,注意正则表达式直接写不用在外面套"" - [{"fieldsource":"date","match":r'(\d\d\d\d)\-(\d)\-(\d)',"replace":r'\1-0\2-0\3',"overwrite":True}]#step1 - ], - [#map5:将refdate域转换为urldate域 - [{"fieldsource":"refdate","fieldtarget":"urldate"}]#step1 - ], - [#map6:对于newspaper类型,设置note为news - [{"pertype":"newspaper"}],#step1 - [{"fieldset":"note","fieldvalue":"news","overwrite":True}]#step2 - ], - [#map7:设置edition域等于version - [{"fieldsource":"version","final":True}],#step1 - [{"fieldset":"edition","origfieldval":True}]#step2 - ], - [#map8:设置entrykey域设置给keywords - [{"fieldsource":"entrykey"}],#step1 - [{"fieldset":"keywords","origfieldval":True}]#step2 - ], - [#map9:对于存在note域的情况,将其值添加到keywords - [{"fieldsource":"note","final":True}],#step1 - [{"fieldset":"keywords","origfieldval":True,"overwrite":True,"append":True}]#step2 - ], - [#map10:根据标题的字符编码范围确定标题的语言类型 - [{"fieldsource":"title","match":r'[\u2FF0-\u9FA5]',"final":True}],#step1 - [{"fieldset":"userd","fieldvalue":"chinese"}]#step2 - ], -] -``` - -sourcemaps参数其实是json格式的。 -sourcemaps是一个列表,记录所有的修改,一个修改是一个map,也是一个列表。 -一个map列表中有任意数量的step(步骤),一个step内由一个key-val参数构成字典(dict)数据结构。 - -处理逻辑是这样: -``` - for map in maps #遍历maps中的所有map - for entry in entries #对所有的条目均执行该map - for step in map #遍历map中的所有step - code for the step to modify the bib entry -``` - -需要注意:python中正则和perl中的略有不同,比如python用\xHH,\uHHHH,\UHHHHHHHH表示unicode字符,而perl直接用\x{HHHH}表示。 - -## need to do: - -已实现的选项: -typesource=?entrytype? -typetarget=?entrytype? -fieldsource=?entryfield? -fieldtarget=?entryfield? -match=?regexp? -matchi=?regexp? -notmatch=?regexp? -notmatchi=?regexp? -replace=?regexp? - -notfield=?entryfield? -final=true, false default: false -origfieldval=true, false default: false -append=true, false default: false -pertype -pernottype - -fieldset=?entryfield? -fieldvalue=?string? -null=true, false default: false -origfield=true, false default: false -origentrytype=true, false default: false -origfieldval=true, false default: false - - - -未实现的选项 - -entryclone=?clonekey? -entrynew=?entrynewkey? -entrynewtype=?string? -entrytarget=?string? -entrynocite=true, false default: false -entrynull=true, false default: false - -1. match 大小写区分的match - - - - - - diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/Makefile b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/Makefile index 527f4146c6..e58dba0ac6 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/Makefile +++ b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/Makefile @@ -26,7 +26,7 @@ $(STYS:%=%-doc.pdf): %-doc.pdf : %-doc.tex $(NAME).bbx %.bbx %.cbx british-$(NAM latexmk -silent -lualatex -shell-escape -interaction=nonstopmode $< >/dev/null clean: - for log in *.log; do [ -e "$$log" ] || continue; grep "WARNING: biblatex-oxref" $$log; test $$? -eq 1; done + @for log in *.log; do [ -e "$$log" ] || continue; grep "WARNING: biblatex-oxref" $$log; test $$? -eq 1; done rm -f $(NAME).{$(AUX)} $(STYS:%=%-doc.{$(AUX)}) rm -f $(STYS:%=%.doc) {american,british,english}-$(NAME).doc rm -rf _minted-* diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/README.md b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/README.md index ed2a550642..070e51eb27 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/README.md +++ b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/README.md @@ -140,7 +140,7 @@ first two steps. ## Licence -Copyright 2016–2020 Alex Ball. +Copyright 2016–2021 Alex Ball. This work consists of the documented LaTeX file oxref.dtx and a Makefile. diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxalph-doc.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxalph-doc.pdf index ce452f4772..d298a7d4f2 100644 Binary files a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxalph-doc.pdf and b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxalph-doc.pdf differ diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxnotes-doc.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxnotes-doc.pdf index d31e38c0b2..032b19373f 100644 Binary files a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxnotes-doc.pdf and b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxnotes-doc.pdf differ diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxnum-doc.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxnum-doc.pdf index 96f409d6d6..8851a9b454 100644 Binary files a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxnum-doc.pdf and b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxnum-doc.pdf differ diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxref.dtx b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxref.dtx index 32c12f7cb7..66eeb6bee5 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxref.dtx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxref.dtx @@ -1,6 +1,6 @@ % \iffalse %<*internal|bbx|cbx|dbx|lbx|doc> -\def\Version{2020/10/19 v2.1} +\def\Version{2021/01/18 v2.2} % %<*internal> \iffalse @@ -166,7 +166,7 @@ See: http://www.latex-project.org/lppl.txt \endpreamble \postamble -Copyright (C) 2016–2020 Alex Ball +Copyright (C) 2016–2021 Alex Ball \endpostamble \usedir{tex/latex/\jobname} @@ -229,7 +229,7 @@ Copyright (C) 2016–2020 Alex Ball \PassOptionsToPackage{style=oxnotes}{biblatex} % %\PassOptionsToPackage{style=oxnotes,scnames,varissuedate,anon}{biblatex} -%\PassOptionsToPackage{style=oxnum,scnames,varissuedate,anon}{biblatex} +%\PassOptionsToPackage{style=oxnum,scnames,varissuedate,anon,backref=true}{biblatex} %\PassOptionsToPackage{style=oxalph,varissuedate,anon}{biblatex} %\PassOptionsToPackage{style=oxyear,varissuedate,anon}{biblatex} %<*driver|doc> @@ -380,7 +380,7 @@ Copyright (C) 2016–2020 Alex Ball } % -\hypersetup{pdfborder={0 0 0},pdfencoding=auto} +\hypersetup{pdfborder={0 0 0},pdfencoding=unicode} \usepackage[noabbrev,capitalize,nameinlink]{cleveref} \crefname{page}{page}{pages} @@ -842,7 +842,7 @@ first two steps. ## Licence -Copyright 2016–2020 Alex Ball. +Copyright 2016–2021 Alex Ball. This work consists of the documented LaTeX file oxref.dtx and a Makefile. @@ -971,6 +971,10 @@ The style has some options additional to the regular \pkg{biblatex} ones: Removes publisher name from all entries. Once set, this option cannot be overridden. \end{docKey} +\begin{docKey}{norelatedin}{=\val{true}|\val{false}}{default \val{true}, initially \val{false}} + Suppresses the printing of the \code{in} localization string in circumstances where it would appear directly following a related string such as \enquote{originally published as}. It can also be set on a per-type and per-entry basis. The effects of this key are not well tested, so do please get in touch (see below) if you encounter problems with it. +\end{docKey} + \begin{docKey}{relationpunct}{=\val{period}|\val{comma}|\val{semicolon}|\val{colon}|\val{space}}{default \val{semicolon}, initially \val{semicolon}} Sets the punctuation that precedes the \code{relatedtype} localization string. An additional space is assumed unless the value is \val{space}. @@ -6918,8 +6922,13 @@ will trigger the use of parentheses. \end{Verbatim} \end{bibexbox} +\defbibnote{preface}{This document uses the \pkg{biblatex} option \key{backref} +to demonstrate how entries can be marked with the page(s) on which they were +cited. The format of the back references comes from \pkg{biblatex} itself +rather than \pkg[biblatex]{oxref}.} -\printbibliography[notcategory=hidden] +%\printbibliography[notcategory=hidden] +%\printbibliography[notcategory=hidden,prenote=preface] % % %<*driver> @@ -7120,11 +7129,7 @@ will trigger the use of parentheses. % % \begin{macrocode} \newtoggle{blx@ox@nametitle}\toggletrue{blx@ox@nametitle}% -\DeclareBibliographyOption{usenametitles}[true]{% - \settoggle{blx@ox@nametitle}{#1}} -\DeclareTypeOption{usenametitles}[true]{% - \settoggle{blx@ox@nametitle}{#1}} -\DeclareEntryOption{usenametitles}[true]{% +\DeclareBiblatexOption{global,type,entry}{usenametitles}[true]{% \settoggle{blx@ox@nametitle}{#1}} % \end{macrocode} % @@ -7903,11 +7908,7 @@ will trigger the use of parentheses. \ifbibstring{#1}{\bibstring{#1}}{#1\isdot}% } \newtoggle{blx@ox@timefirst} -\DeclareBibliographyOption{timefirst}[true]{% - \settoggle{blx@ox@timefirst}{#1}} -\DeclareTypeOption{timefirst}[true]{% - \settoggle{blx@ox@timefirst}{#1}} -\DeclareEntryOption{timefirst}[true]{% +\DeclareBiblatexOption{global,type,entry}{timefirst}[true]{% \settoggle{blx@ox@timefirst}{#1}} \newbibmacro*{date+time}{% \ifboolexpr{ @@ -8213,7 +8214,7 @@ will trigger the use of parentheses. } \newcommand*{\ifabbrev}[3]{% \StrRight{#1}{1}[\blx@ox@lastchar]% - \IfSubStr{\blx@ox@abbrevstring}{\blx@ox@lastchar}{#2}{#3} + \expandafter\IfSubStr*{\blx@ox@abbrevstring}{\blx@ox@lastchar}{#2}{#3}% } % \end{macrocode} % @@ -8245,9 +8246,9 @@ will trigger the use of parentheses. }{}}% \usebibmacro{journal}% \iffieldundef{journalsubtitle}{% - \ifabbrev{\thefield{journaltitle}}{\setunit{\addspace}}{\newunit}% + \ifabbrev{\strfield{journaltitle}}{\setunit{\addspace}}{\newunit}% }{% - \ifabbrev{\thefield{journalsubtitle}}{\setunit{\addspace}}{\newunit}}% + \ifabbrev{\strfield{journalsubtitle}}{\setunit{\addspace}}{\newunit}}% \iffieldundef{series}{}{% \newunit\newblock \printfield{series}% @@ -8270,9 +8271,9 @@ will trigger the use of parentheses. \renewbibmacro*{title+issuetitle}{% \usebibmacro{periodical}% \iffieldundef{subtitle}{% - \ifabbrev{\thefield{title}}{\setunit{\addspace}}{\newunit}% + \ifabbrev{\strfield{title}}{\setunit{\addspace}}{\newunit}% }{% - \ifabbrev{\thefield{subtitle}}{\setunit{\addspace}}{\newunit}}% + \ifabbrev{\strfield{subtitle}}{\setunit{\addspace}}{\newunit}}% \iffieldundef{series}{}{% \newunit\newblock \printfield{series}% @@ -8345,17 +8346,9 @@ will trigger the use of parentheses. % % \begin{macrocode} \newtoggle{blx@ox@varissuedate} -\DeclareBibliographyOption{varissuedate}[true]{% - \settoggle{blx@ox@varissuedate}{#1}} -\DeclareTypeOption{varissuedate}[true]{% - \settoggle{blx@ox@varissuedate}{#1}} -\DeclareEntryOption{varissuedate}[true]{% +\DeclareBiblatexOption{global,type,entry}{varissuedate}[true]{% \settoggle{blx@ox@varissuedate}{#1}} -\DeclareBibliographyOption{issuedate-plain}[true]{% - \settoggle{blx@ox@varissuedate}{#1}} -\DeclareTypeOption{issuedate-plain}[true]{% - \settoggle{blx@ox@varissuedate}{#1}} -\DeclareEntryOption{issuedate-plain}[true]{% +\DeclareBiblatexOption{global,type,entry}{issuedate-plain}[true]{% \settoggle{blx@ox@varissuedate}{#1}} \renewbibmacro*{issue+date}{% \ifboolexpr{ @@ -8438,13 +8431,12 @@ will trigger the use of parentheses. \usebibmacro{doi+eprint+url}% \newunit\newblock \usebibmacro{addendum+pubstate}% - \setunit{\bibpagerefpunct}\newblock - \usebibmacro{pageref}% - \setunit{\relatedtypepunct}\newblock \iftoggle{bbx:related} {\usebibmacro{related:init}% \usebibmacro{related}} {}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% \usebibmacro{finentry}} % \end{macrocode} % @@ -8469,13 +8461,12 @@ will trigger the use of parentheses. \usebibmacro{doi+eprint+url}% \newunit\newblock \usebibmacro{addendum+pubstate}% - \setunit{\bibpagerefpunct}\newblock - \usebibmacro{pageref}% - \setunit{\relatedtypepunct}\newblock \iftoggle{bbx:related} {\usebibmacro{related:init}% \usebibmacro{related}} {}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% \usebibmacro{finentry}} % \end{macrocode} % @@ -8531,13 +8522,12 @@ will trigger the use of parentheses. \usebibmacro{doi+eprint+url}% \newunit\newblock \usebibmacro{addendum+pubstate}% - \setunit{\bibpagerefpunct}\newblock - \usebibmacro{pageref}% - \setunit{\relatedtypepunct}\newblock \iftoggle{bbx:related} {\usebibmacro{related:init}% \usebibmacro{related}} {}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% \usebibmacro{finentry}} % \end{macrocode} % @@ -8889,13 +8879,12 @@ reference,mvreference,inreference]{volume}{% \usebibmacro{doi+eprint+url}% \newunit\newblock \usebibmacro{addendum+pubstate}% - \setunit{\bibpagerefpunct}\newblock - \usebibmacro{pageref}% - \setunit{\relatedtypepunct}\newblock \iftoggle{bbx:related} {\usebibmacro{related:init}% \usebibmacro{related}} {}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% \usebibmacro{finentry}} % \end{macrocode} % @@ -8953,19 +8942,18 @@ reference,mvreference,inreference]{volume}{% \printfield{pagetotal}% \newunit\newblock \iftoggle{bbx:isbn} - {\printfield{isbn}} - {}% + {\printfield{isbn}} + {}% \newunit\newblock \usebibmacro{doi+eprint+url}% \newunit\newblock \usebibmacro{addendum+pubstate}% + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% - \setunit{\relatedtypepunct}\newblock - \iftoggle{bbx:related} - {\usebibmacro{related:init}% - \usebibmacro{related}} - {}% \usebibmacro{finentry}} % \end{macrocode} % @@ -8988,9 +8976,9 @@ reference,mvreference,inreference]{volume}{% \usebibmacro{maintitle+booktitle}% \newunit \iffieldundef{maintitle} - {\printfield{volume}% - \printfield{part}} - {}% + {\printfield{volume}% + \printfield{part}} + {}% \newunit\newblock \usebibmacro{byeditor+others}% \newunit\newblock @@ -9003,19 +8991,18 @@ reference,mvreference,inreference]{volume}{% \usebibmacro{chapter+pages}% \newunit\newblock \iftoggle{bbx:isbn} - {\printfield{isbn}} - {}% + {\printfield{isbn}} + {}% \newunit\newblock \usebibmacro{doi+eprint+url}% \newunit\newblock \usebibmacro{addendum+pubstate}% + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% - \setunit{\relatedtypepunct}\newblock - \iftoggle{bbx:related} - {\usebibmacro{related:init}% - \usebibmacro{related}} - {}% \usebibmacro{finentry}} % \end{macrocode} % @@ -9044,9 +9031,9 @@ reference,mvreference,inreference]{volume}{% \usebibmacro{maintitle+booktitle}% \newunit \iffieldundef{maintitle} - {\printfield{volume}% - \printfield{part}} - {}% + {\printfield{volume}% + \printfield{part}} + {}% \newunit\newblock \usebibmacro{byeditor+others}% \newunit\newblock @@ -9057,19 +9044,18 @@ reference,mvreference,inreference]{volume}{% \usebibmacro{chapter+pages}% \newunit\newblock \iftoggle{bbx:isbn} - {\printfield{isbn}} - {}% + {\printfield{isbn}} + {}% \newunit\newblock \usebibmacro{doi+eprint+url}% \newunit\newblock \usebibmacro{addendum+pubstate}% + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% - \setunit{\relatedtypepunct}\newblock - \iftoggle{bbx:related} - {\usebibmacro{related:init}% - \usebibmacro{related}} - {}% \usebibmacro{finentry}} % \end{macrocode} % @@ -9092,9 +9078,9 @@ reference,mvreference,inreference]{volume}{% \usebibmacro{maintitle+booktitle}% \newunit \iffieldundef{maintitle} - {\printfield{volume}% - \printfield{part}} - {}% + {\printfield{volume}% + \printfield{part}} + {}% \newunit\newblock \usebibmacro{byeditor+others}% \newunit\newblock @@ -9107,19 +9093,18 @@ reference,mvreference,inreference]{volume}{% \usebibmacro{chapter+pages}% \newunit\newblock \iftoggle{bbx:isbn} - {\printfield{isbn}} - {}% + {\printfield{isbn}} + {}% \newunit\newblock \usebibmacro{doi+eprint+url}% \newunit\newblock \usebibmacro{addendum+pubstate}% + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% - \setunit{\relatedtypepunct}\newblock - \iftoggle{bbx:related} - {\usebibmacro{related:init}% - \usebibmacro{related}} - {}% \usebibmacro{finentry}} % \end{macrocode} % @@ -9147,19 +9132,18 @@ reference,mvreference,inreference]{volume}{% \printfield{pagetotal}% \newunit\newblock \iftoggle{bbx:isbn} - {\printfield{isbn}} - {}% + {\printfield{isbn}} + {}% \newunit\newblock \usebibmacro{doi+eprint+url}% \newunit\newblock \usebibmacro{addendum+pubstate}% + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% - \setunit{\relatedtypepunct}\newblock - \iftoggle{bbx:related} - {\usebibmacro{related:init}% - \usebibmacro{related}} - {}% \usebibmacro{finentry}} % \end{macrocode} % @@ -9205,19 +9189,18 @@ reference,mvreference,inreference]{volume}{% \printfield{pagetotal}% \newunit\newblock \iftoggle{bbx:isbn} - {\printfield{isbn}} - {}% + {\printfield{isbn}} + {}% \newunit\newblock \usebibmacro{doi+eprint+url}% \newunit\newblock \usebibmacro{addendum+pubstate}% + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% - \setunit{\relatedtypepunct}\newblock - \iftoggle{bbx:related} - {\usebibmacro{related:init}% - \usebibmacro{related}} - {}% \usebibmacro{finentry}} % \end{macrocode} % @@ -9242,9 +9225,9 @@ reference,mvreference,inreference]{volume}{% \usebibmacro{maintitle+booktitle}% \newunit \iffieldundef{maintitle} - {\printfield{volume}% - \printfield{part}} - {}% + {\printfield{volume}% + \printfield{part}} + {}% \newunit\newblock \printfield{volumes}% \newunit\newblock @@ -9255,19 +9238,18 @@ reference,mvreference,inreference]{volume}{% \usebibmacro{chapter+pages}% \newunit\newblock \iftoggle{bbx:isbn} - {\printfield{isbn}} - {}% + {\printfield{isbn}} + {}% \newunit\newblock \usebibmacro{doi+eprint+url}% \newunit\newblock \usebibmacro{addendum+pubstate}% + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% - \setunit{\relatedtypepunct}\newblock - \iftoggle{bbx:related} - {\usebibmacro{related:init}% - \usebibmacro{related}} - {}% \usebibmacro{finentry}} % \end{macrocode} % @@ -9296,9 +9278,9 @@ reference,mvreference,inreference]{volume}{% \usebibmacro{maintitle+booktitle}% \newunit \iffieldundef{maintitle} - {\printfield{volume}% - \printfield{part}} - {}% + {\printfield{volume}% + \printfield{part}} + {}% \newunit\newblock \printfield{volumes}% \newunit\newblock% @@ -9307,19 +9289,18 @@ reference,mvreference,inreference]{volume}{% \usebibmacro{chapter+pages}% \newunit\newblock \iftoggle{bbx:isbn} - {\printfield{isbn}} - {}% + {\printfield{isbn}} + {}% \newunit\newblock \usebibmacro{doi+eprint+url}% \newunit\newblock \usebibmacro{addendum+pubstate}% + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% - \setunit{\relatedtypepunct}\newblock - \iftoggle{bbx:related} - {\usebibmacro{related:init}% - \usebibmacro{related}} - {}% \usebibmacro{finentry}} % \end{macrocode} % @@ -9352,19 +9333,18 @@ reference,mvreference,inreference]{volume}{% \printfield{pagetotal}% \newunit\newblock \iftoggle{bbx:isbn} - {\printfield{isbn}} - {}% + {\printfield{isbn}} + {}% \newunit\newblock \usebibmacro{doi+eprint+url}% \newunit\newblock \usebibmacro{addendum+pubstate}% + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% - \setunit{\relatedtypepunct}\newblock - \iftoggle{bbx:related} - {\usebibmacro{related:init}% - \usebibmacro{related}} - {}% \usebibmacro{finentry}} % \end{macrocode} % @@ -9413,19 +9393,18 @@ reference,mvreference,inreference]{volume}{% \printfield{pagetotal}% \newunit\newblock \iftoggle{bbx:isbn} - {\printfield{isbn}} - {}% + {\printfield{isbn}} + {}% \newunit\newblock \usebibmacro{doi+eprint+url}% \newunit\newblock \usebibmacro{addendum+pubstate}% + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% - \setunit{\relatedtypepunct}\newblock - \iftoggle{bbx:related} - {\usebibmacro{related:init}% - \usebibmacro{related}} - {}% \usebibmacro{finentry}} % \end{macrocode} % @@ -9450,9 +9429,9 @@ reference,mvreference,inreference]{volume}{% \usebibmacro{maintitle+booktitle}% \newunit \iffieldundef{maintitle} - {\printfield{volume}% - \printfield{part}} - {}% + {\printfield{volume}% + \printfield{part}} + {}% \newunit\newblock \printfield{edition}% \newunit @@ -9469,19 +9448,18 @@ reference,mvreference,inreference]{volume}{% \printfield{pagetotal}% \newunit\newblock \iftoggle{bbx:isbn} - {\printfield{isbn}} - {}% + {\printfield{isbn}} + {}% \newunit\newblock \usebibmacro{doi+eprint+url}% \newunit\newblock \usebibmacro{addendum+pubstate}% + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% - \setunit{\relatedtypepunct}\newblock - \iftoggle{bbx:related} - {\usebibmacro{related:init}% - \usebibmacro{related}} - {}% \usebibmacro{finentry}} % \end{macrocode} % @@ -9539,9 +9517,9 @@ reference,mvreference,inreference]{volume}{% \usebibmacro{maintitle+title}% \newunit \iffieldundef{maintitle} - {\printfield{volume}% - \printfield{part}} - {}% + {\printfield{volume}% + \printfield{part}} + {}% \newunit\newblock \usebibmacro{event+venue+date}% \newunit\newblock @@ -9560,19 +9538,18 @@ reference,mvreference,inreference]{volume}{% \printfield{pagetotal}% \newunit\newblock \iftoggle{bbx:isbn} - {\printfield{isbn}} - {}% + {\printfield{isbn}} + {}% \newunit\newblock \usebibmacro{doi+eprint+url}% \newunit\newblock \usebibmacro{addendum+pubstate}% + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% - \setunit{\relatedtypepunct}\newblock - \iftoggle{bbx:related} - {\usebibmacro{related:init}% - \usebibmacro{related}} - {}% \usebibmacro{finentry}} % \end{macrocode} % @@ -9593,9 +9570,9 @@ reference,mvreference,inreference]{volume}{% \usebibmacro{maintitle+booktitle}% \newunit \iffieldundef{maintitle} - {\printfield{volume}% - \printfield{part}} - {}% + {\printfield{volume}% + \printfield{part}} + {}% \newunit\newblock \usebibmacro{event+venue+date}% \newunit\newblock @@ -9612,19 +9589,18 @@ reference,mvreference,inreference]{volume}{% \usebibmacro{chapter+pages}% \newunit\newblock \iftoggle{bbx:isbn} - {\printfield{isbn}} - {}% + {\printfield{isbn}} + {}% \newunit\newblock \usebibmacro{doi+eprint+url}% \newunit\newblock \usebibmacro{addendum+pubstate}% + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% - \setunit{\relatedtypepunct}\newblock - \iftoggle{bbx:related} - {\usebibmacro{related:init}% - \usebibmacro{related}} - {}% \usebibmacro{finentry}} % \end{macrocode} % @@ -9835,9 +9811,9 @@ reference,mvreference,inreference]{volume}{% \usebibmacro{maintitle+title}% \newunit \iffieldundef{maintitle} - {\printfield{volume}% - \printfield{part}} - {}% + {\printfield{volume}% + \printfield{part}} + {}% \setunit{\titlebyauthordelim}\newblock \usebibmacro{byauthor}% \newunit\newblock @@ -9848,28 +9824,26 @@ reference,mvreference,inreference]{volume}{% \usebibmacro{series+type+number}% \setunit{\addspace}% \usebibmacro{institution+location+date}% - \iffieldequals{entrysubtype}{\legreport}{% - \setunit{\addspace}\nopunct - }{% - \newunit\newblock}% + \iffieldequals{entrysubtype}{\legreport} + {\setunit{\addspace}\nopunct} + {\newunit\newblock}% \usebibmacro{chapter+pages}% \newunit \printfield{pagetotal}% \newunit\newblock \iftoggle{bbx:isbn} - {\printfield{isrn}} - {}% + {\printfield{isrn}} + {}% \newunit\newblock \usebibmacro{doi+eprint+url}% \newunit\newblock \usebibmacro{addendum+pubstate}% + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% - \setunit{\relatedtypepunct}\newblock - \iftoggle{bbx:related} - {\usebibmacro{related:init}% - \usebibmacro{related}} - {}% \usebibmacro{finentry}} % \end{macrocode} % @@ -9982,13 +9956,12 @@ reference,mvreference,inreference]{volume}{% \usebibmacro{doi+eprint+url}% \newunit\newblock \usebibmacro{addendum+pubstate}% - \setunit{\bibpagerefpunct}\newblock - \usebibmacro{pageref}% - \setunit{\relatedtypepunct}\newblock \iftoggle{bbx:related} {\usebibmacro{related:init}% \usebibmacro{related}} {}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% \usebibmacro{finentry}} % \end{macrocode} % @@ -10018,17 +9991,17 @@ reference,mvreference,inreference]{volume}{% }{}% \usebibmacro{author/editor}% \setunit{\printdelim{nametitledelim}}\newblock - \ifentrytype{software}{% - \usebibmacro{title+version}% - }{% - \usebibmacro{title}}% + \ifentrytype{software} + {\usebibmacro{title+version}} + {\usebibmacro{title}}% \setunit{\titlebyauthordelim}\newblock \usebibmacro{byauthor}% \newunit\newblock \usebibmacro{byeditor}% \newunit - \ifentrytype{software}{}{% - \newunit\printfield{version}}% + \ifentrytype{software} + {} + {\newunit\printfield{version}}% \newunit \printfield{note}% \newunit\newblock @@ -10039,19 +10012,18 @@ reference,mvreference,inreference]{volume}{% \printfield{pagetotal}% \newunit\newblock \iftoggle{bbx:isbn} - {\printfield{isbn}} - {}% + {\printfield{isbn}} + {}% \newunit\newblock \usebibmacro{doi+eprint+url}% \newunit\newblock \usebibmacro{addendum+pubstate}% + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% - \setunit{\relatedtypepunct}\newblock - \iftoggle{bbx:related} - {\usebibmacro{related:init}% - \usebibmacro{related}} - {}% \usebibmacro{finentry}} \DeclareBibliographyAlias{standard}{manual} \ExecuteBibliographyOptions[standard]{useeditor=false} @@ -10183,19 +10155,18 @@ reference,mvreference,inreference]{volume}{% \usebibmacro{post-byeditor+others}% \newunit\newblock \iftoggle{bbx:isbn} - {\printfield{isbn}} - {}% + {\printfield{isbn}} + {}% \newunit\newblock \usebibmacro{doi+eprint+url}% \newunit\newblock \usebibmacro{addendum+pubstate}% + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% - \setunit{\relatedtypepunct}\newblock - \iftoggle{bbx:related} - {\usebibmacro{related:init}% - \usebibmacro{related}} - {}% \usebibmacro{finentry}} % \end{macrocode} % @@ -10250,19 +10221,18 @@ reference,mvreference,inreference]{volume}{% \usebibmacro{post-byeditor+others}% \newunit\newblock \iftoggle{bbx:isbn} - {\printfield{isbn}} - {}% + {\printfield{isbn}} + {}% \newunit\newblock \usebibmacro{doi+eprint+url}% \newunit\newblock \usebibmacro{addendum+pubstate}% + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% - \setunit{\relatedtypepunct}\newblock - \iftoggle{bbx:related} - {\usebibmacro{related:init}% - \usebibmacro{related}} - {}% \usebibmacro{finentry}} % \end{macrocode} % @@ -10397,19 +10367,18 @@ reference,mvreference,inreference]{volume}{% \printlist{organization}% \newunit\newblock \iftoggle{bbx:isbn} - {\printfield{isbn}} - {}% + {\printfield{isbn}} + {}% \newunit\newblock \usebibmacro{doi+eprint+url}% \newunit\newblock \usebibmacro{addendum+pubstate}% + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% - \setunit{\relatedtypepunct}\newblock - \iftoggle{bbx:related} - {\usebibmacro{related:init}% - \usebibmacro{related}} - {}% \usebibmacro{finentry}} \DeclareBibliographyAlias{image}{performance} \DeclareBibliographyAlias{artwork}{performance} @@ -10512,19 +10481,18 @@ reference,mvreference,inreference]{volume}{% \printlist{publisher}% \newunit\newblock \iftoggle{bbx:eprint} - {\usebibmacro{eprint}} - {}% + {\usebibmacro{eprint}} + {}% \newunit\newblock \usebibmacro{url+urldate}% \newunit\newblock \usebibmacro{addendum+pubstate}% + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% - \setunit{\relatedtypepunct}\newblock - \iftoggle{bbx:related} - {\usebibmacro{related:init}% - \usebibmacro{related}} - {}% \usebibmacro{finentry}} % \end{macrocode} % @@ -10596,13 +10564,12 @@ reference,mvreference,inreference]{volume}{% \usebibmacro{doi+eprint+url}% \newunit\newblock \usebibmacro{addendum+pubstate}% - \setunit{\bibpagerefpunct}\newblock - \usebibmacro{pageref}% - \newunit\newblock \iftoggle{bbx:related} {\usebibmacro{related:init}% \usebibmacro{related}} {}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% \usebibmacro{finentry}} % \end{macrocode} % @@ -10626,9 +10593,7 @@ reference,mvreference,inreference]{volume}{% \setboolean{bbx@paryear-essential}{#1}} \newtoggle{blx@ox@nopostnotedelim} \newtoggle{bbx:altcourt} -\DeclareBibliographyOption{court-plain}[true]{% - \settoggle{bbx:altcourt}{#1}} -\DeclareEntryOption{court-plain}[true]{% +\DeclareBiblatexOption{global,type,entry}{court-plain}[true]{% \settoggle{bbx:altcourt}{#1}} \newtoggle{bbx@ecliuse} \newtoggle{bbx@eclionly} @@ -10962,13 +10927,13 @@ reference,mvreference,inreference]{volume}{% \usebibmacro{doi+eprint+url}% \setunit{\addspace}%\newblock \usebibmacro{addendum+pubstate}% - \setunit{\bibpagerefpunct}\newblock - \usebibmacro{pageref}% \setunit{\addspace}%\newblock \iftoggle{bbx:related} {\usebibmacro{related:init}% \usebibmacro{related}} {}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% \usebibmacro{finentry}} \newtoggle{bbx@juriscitedone} \newbibmacro{juriscitation}{% @@ -11387,7 +11352,8 @@ reference,mvreference,inreference]{volume}{% \usebibmacro{legsupp}}}}% \setunit{\addcomma\space}% \printfield{note}% - \setunit{\addspace}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% \usebibmacro{finentry}} \newbibmacro*{courtrules}{% \restorefield{prenote}{\postnotesecond}% @@ -11757,11 +11723,12 @@ reference,mvreference,inreference]{volume}{% \iftoggle{bbx:url}{% \usebibmacro{url+urldate}% }{}% - \setunit{\relatedtypepunct}\newblock \iftoggle{bbx:related}{% \usebibmacro{related:init}% \usebibmacro{related}% }{}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% \usebibmacro{finentry}} % \end{macrocode} % @@ -11824,13 +11791,12 @@ reference,mvreference,inreference]{volume}{% {}% \newunit\newblock \usebibmacro{addendum+pubstate}% - \setunit{\bibpagerefpunct}\newblock - \usebibmacro{pageref}% - \setunit{\relatedtypepunct}\newblock \iftoggle{bbx:related} {\usebibmacro{related:init}% \usebibmacro{related}} {}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% \usebibmacro{finentry}} % \end{macrocode} % @@ -11851,81 +11817,128 @@ reference,mvreference,inreference]{volume}{% % \subsection{Related entries} % % We make the punctuation before related items configurable in remaining drivers -% inherited from the standard style. +% inherited from the standard style, and move the |pageref| macro to the end. % % \begin{macrocode} \xpatchbibdriver{booklet}{% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% \newunit\newblock \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% }{% - \setunit{\relatedtypepunct}\newblock \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% }{}{\wlog{WARNING: biblatex-oxref failed to patch booklet}} +% \end{macrocode} +% \begin{macrocode} \xpatchbibdriver{misc}{% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% \newunit\newblock \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% }{% - \setunit{\relatedtypepunct}\newblock \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% }{}{\wlog{WARNING: biblatex-oxref failed to patch misc}} % \end{macrocode} % % We provide an option for setting the relatedtype punctuation. % % \begin{macrocode} -\DeclareBibliographyOption[string]{relationpunct}[semicolon]{% - \ifcsdef{add#1}{% - \ifstrequal{#1}{space}{% - \renewcommand*{\relatedtypepunct}{\addspace}% - }{% - \renewcommand*{\relatedtypepunct}{\csuse{add#1}\space}}% - }{% +\DeclareDelimFormat{begrelateddelimequals}{\addspace} +\DeclareDelimFormat{begrelateddelimin}{\addcomma\space} +\DeclareDelimFormat{begrelateddelimincludes}{\addcomma\space} +\DeclareDelimFormat{begrelateddelimreprintfrom}{\addperiod\space} +\DeclareDelimFormat{begrelateddelimreviewof}{\newunitpunct} +\DeclareDelimFormat{begrelateddelimtranslationof}{\addspace} +\DeclareDelimFormat{begrelateddelimmultivolume}{\newunitpunct} +\DeclareDelimFormat{relateddelimmultivolume}{\newunitpunct} +\newtoggle{blx@ox@success} +\DeclareBiblatexOption{global,type}[string]{relationpunct}[semicolon]{% + \bgroup\blx@blxinit + \ifcsdef{add#1}{\global\toggletrue{blx@ox@success}}{% + \global\togglefalse{blx@ox@success}% \PackageError{biblatex-oxref}{% Invalid option 'relationpunct=#1'% }{% Valid values are 'dot', 'comma', 'semicolon', 'colon',\MessageBreak - 'period', 'exclam', 'question', and 'space'.}}} -\DeclareTypeOption[string]{relationpunct}[semicolon]{% - \ifcsdef{add#1}{% - \ifstrequal{#1}{space}{% - \renewcommand*{\relatedtypepunct}{\addspace}% - }{% - \renewcommand*{\relatedtypepunct}{\csuse{add#1}\space}}% + 'period', 'exclam', 'question', and 'space'.}}% + \egroup + \iftoggle{blx@ox@success}{\ifstrequal{#1}{space}{% + \DeclareDelimFormat{begrelateddelim}{\addspace}% }{% - \PackageError{biblatex-oxref}{% - Invalid option 'relationpunct=#1'% - }{% - Valid values are 'dot', 'comma', 'semicolon', 'colon',\MessageBreak - 'period', 'exclam', 'question', and 'space'.}}} -\newtoggle{blx@ox@relpunctset} + \DeclareDelimFormat{begrelateddelim}{\csuse{add#1}\space}}% + }{}} \DeclareEntryOption[string]{relationpunct}[semicolon]{% - \ifcsdef{add#1}{% - \ifstrequal{#1}{space}{% - \renewcommand*{\relatedtypepunct}{\addspace}% - }{% - \renewcommand*{\relatedtypepunct}{\csuse{add#1}\space}}% - \toggletrue{blx@ox@relpunctset} - }{% + \bgroup\blx@blxinit + \ifcsdef{add#1}{\global\toggletrue{blx@ox@success}}{% + \global\togglefalse{blx@ox@success}% \PackageError{biblatex-oxref}{% Invalid option 'relationpunct=#1'% }{% Valid values are 'dot', 'comma', 'semicolon', 'colon',\MessageBreak - 'period', 'exclam', 'question', and 'space'.}}} + 'period', 'exclam', 'question', and 'space'.}}% + \egroup + \iftoggle{blx@ox@success}{\ifstrequal{#1}{space}{% + \DeclareDelimFormat{begrelateddelim}{\addspace}% + \DeclareDelimFormat{begrelateddelimequals}{\addspace}% + \DeclareDelimFormat{begrelateddelimin}{\addspace}% + \DeclareDelimFormat{begrelateddelimincludes}{\addspace}% + \DeclareDelimFormat{begrelateddelimreprintfrom}{\addspace}% + \DeclareDelimFormat{begrelateddelimreviewof}{\addspace}% + \DeclareDelimFormat{begrelateddelimtranslationof}{\addspace}% + \DeclareDelimFormat{begrelateddelimmultivolume}{\addspace}% + }{% + \DeclareDelimFormat{begrelateddelim}{\csuse{add#1}\space}% + \DeclareDelimFormat{begrelateddelimequals}{\csuse{add#1}\space}% + \DeclareDelimFormat{begrelateddelimin}{\csuse{add#1}\space}% + \DeclareDelimFormat{begrelateddelimincludes}{\csuse{add#1}\space}% + \DeclareDelimFormat{begrelateddelimreprintfrom}{\csuse{add#1}\space}% + \DeclareDelimFormat{begrelateddelimreviewof}{\csuse{add#1}\space}% + \DeclareDelimFormat{begrelateddelimtranslationof}{\csuse{add#1}\space}% + \DeclareDelimFormat{begrelateddelimmultivolume}{\csuse{add#1}\space}}% + }{}} +\ExecuteBibliographyOptions{relationpunct} \newcounter{blx@ox@relitem} \xapptobibmacro{begrelated}{% \setcounter{blx@ox@relitem}{0}% - \iftoggle{blx@ox@relpunctset}{}{% - \iffieldequalstr{relatedtype}{in}{% - \setunit{\addcomma\space}}{}% - \iffieldequalstr{relatedtype}{reprintfrom}{% - \setunit{\addperiod\space}}{}% - \iffieldequalstr{relatedtype}{translationof}{% - \setunit{\addspace}}{}% - \iffieldequalstr{relatedtype}{multivolume}{% - \setunit{\addcomma\space}}{}% -}}{}{\wlog{WARNING: biblatex-oxref failed to append to begrelated}} -\DeclareDelimFormat{relateddelimmultivolume}{\newunitpunct} -\DeclareDelimFormat{begrelateddelimmultivolume}{\newunitpunct} +}{}{\wlog{WARNING: biblatex-oxref failed to append to begrelated}} +% \end{macrocode} +% +% We provide an option to prevent a related item beginning with "in". +% +% \begin{macrocode} +\newtoggle{blx@ox@norelin} +\DeclareBiblatexOption{global,type,entry}{norelatedin}[true]{% + \settoggle{blx@ox@norelin}{#1}} +\xapptobibmacro{begrelatedloop}{% + \iftoggle{blx@ox@norelin}{% + \renewbibmacro*{in:}{% + \ifboolexpr{ + test {\ifnameundef{author}} + and + test {\ifnameundef{translator}} + and + test {\iffieldundef{title}} + }{}{% + \bibstring{in}% + \printunit{\intitlepunct}% + }}}{}% +}{}{\wlog{WARNING: biblatex-oxref failed to append to begrelatedloop}} % \end{macrocode} % @@ -12843,8 +12856,8 @@ reference,mvreference,inreference]{volume}{% \defbibenvironment{bibliography} {\list {\printtext[labelnumberwidth]{% - \printfield{labelprefix}% - \printfield{labelnumber}}} + \printfield{labelprefix}% + \printfield{labelnumber}}} {\setlength{\labelwidth}{\labelnumberwidth}% \setlength{\leftmargin}{\labelwidth}% \setlength{\labelsep}{\biblabelsep}% @@ -12872,7 +12885,7 @@ reference,mvreference,inreference]{volume}{% \entryset {\ifbool{bbx:subentry} {\printfield[bibentrysetcount]{entrysetcount}% - \printunit*{\addnbspace}} + \printunit*{\addnbspace}} {}} {}% \newunit\newblock @@ -12996,11 +13009,7 @@ reference,mvreference,inreference]{volume}{% % % \begin{macrocode} \newtoggle{blx@ox@nonodate} -\DeclareBibliographyOption{nonodate}[true]{% - \settoggle{blx@ox@nonodate}{#1}} -\DeclareTypeOption{nonodate}[true]{% - \settoggle{blx@ox@nonodate}{#1}} -\DeclareEntryOption{nonodate}[true]{% +\DeclareBiblatexOption{global,type,entry}{nonodate}[true]{% \settoggle{blx@ox@nonodate}{#1}} \newbibmacro*{labeldate}{% \ifboolexpr{ diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxref.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxref.pdf index f2e38b76aa..3daf20e3ce 100644 Binary files a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxref.pdf and b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxref.pdf differ diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxyear-doc.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxyear-doc.pdf index f9a115aab7..7492f2c4b1 100644 Binary files a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxyear-doc.pdf and b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxyear-doc.pdf differ -- cgit v1.2.3