texlive[72863] Master/texmf-dist: biblatex-gb7714-2015 (15nov24)
commits+karl at tug.org
commits+karl at tug.org
Fri Nov 15 23:11:57 CET 2024
Revision: 72863
https://tug.org/svn/texlive?view=revision&revision=72863
Author: karl
Date: 2024-11-15 23:11:57 +0100 (Fri, 15 Nov 2024)
Log Message:
-----------
biblatex-gb7714-2015 (15nov24)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/README.md
trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf
trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.tex
trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example.bib
trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makeall.py
trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-css.bbx
trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-jmw.bbx
trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-jmw.cbx
trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx
trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.cbx
trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx
trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.cbx
trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ms.bbx
trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015mx.bbx
Added Paths:
-----------
trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhss.bbx
trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhss.cbx
trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhssay.bbx
trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhssay.cbx
Modified: trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/README.md 2024-11-15 22:11:40 UTC (rev 72862)
+++ trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/README.md 2024-11-15 22:11:57 UTC (rev 72863)
@@ -1,4 +1,4 @@
-<b>Date of last change: 2024-03-27 to version v1.1q</b>
+<b>Date of last change: 2024-11-15 to version v1.1s</b>
@@ -25,13 +25,13 @@
biblatex-gb7714-2015 宏包是中文参考文献著录/标注标准 `GB/T 7714-2015` 的 biblatex 实现。它本质上是一个样式包,在 tex 文档中配合 biblatex 宏包使用,以生成满足《GB/T 7714-2015 信息与文献 参考文献著录规则》要求的参考文献。
宏包主要提供两种编制样式: 一、顺序编码制(gb7714-2015);二、著者-出版年制(gb7714-2015ay),能够精确实现国标提出的著录和标注格式。
-另外提供: 两个老版国标样式(gb7714-2005/gb7714-2005ay、gb7714-1987/gb7714-1987ay);
-两个特殊样式(一个文献表内中英文格式不同的gb7714-2015ms、 一个文档内顺序编码和作者年制混用的gb7714-2015mx); 三个典型文科期刊样式(经济学研究的chinese-erj、社会科学的chinese-css、管理世界的chinese-jmw); 以及几个明显有别于国标的特殊学位论文样式(西北农林的gb7714-NWAFU、华中师范的gb7714-CCNU、东南大学的gb7714-SEU)等。
+另外提供: 两个老版国标样式 (gb7714-2005/gb7714-2005ay、gb7714-1987/gb7714-1987ay);
+两个特殊样式 (一个文献表内中英文格式不同的 gb7714-2015ms、 一个文档内顺序编码和作者年制混用的 gb7714-2015mx); 三个典型文科期刊样式 (经济学研究的 chinese-erj、社会科学的 chinese-css、管理世界的 chinese-jmw); 以及几个明显有别于国标的特殊学位论文样式 (西北农林的 gb7714-NWAFU、华中师范的 gb7714-CCNU、东南大学的 gb7714-SEU)等。
宏包除了具备 biblatex 提供的不同于传统基于 bibtex 的参考文献解决方案外,还具有如下特点:
* 较强的兼容性。能够兼容 biblatex v2.8 以上版本;能够兼容国标样式的一些常用条目类型、数据域。
-* 较高的易用性。标注/著录格式完全由样式实现,不必为排序、多语言等问题手动处理bib文件;提供了丰富的标注(引用)命令,包括一些中文中习惯的命令;提供了多语言对照,多语言文献表等功能。
+* 较高的易用性。标注/著录格式完全由样式实现,不必为排序、多语言等问题手动处理 bib 文件;提供了丰富的标注(引用)命令,包括一些中文中习惯的命令;提供了多语言对照,多语言文献表等功能。
* 较大的灵活性。提供丰富的选项来帮助用户进行排序调整、著录项(姓名、出版项、文献标识符、标题超链接)格式调整、文献表格式(标签对齐、标签格式、条目格式、字体、段落格式)调整、编码兼容。
@@ -43,9 +43,9 @@
## Need to do:
- * 注意:ms.bbx样式引入内容时需要特别注意空格的引入
- * 注意:mx.cbx样式没有更新一些新的设置(比如2篇文献就压缩等),若有需要可以参考15.cbx和15ay.cbx修改。
- * 应该说经过这些年的使用,很多corner case已经处理过了,但还是可能会存在一些,特别是ms和mx两个样式使用的少。
+ * 注意:ms.bbx 样式引入内容时需要特别注意空格的引入
+ * 注意:mx.cbx 样式没有更新一些新的设置(比如 2 篇文献就压缩等),若有需要可以参考 15.cbx 和 15ay.cbx 修改。
+ * 应该说经过这些年的使用,很多 corner case 已经处理过了,但还是可能会存在一些,特别是 ms 和 mx 两个样式使用的少。
* special characters in all fields?
* entry without author: the delimiter between title and year?
* TEST FOR texlive 2015,2016,2017
@@ -55,37 +55,37 @@
## Applications
* [BIThesis(bachelor graduation thesis for Dept. of Undergraduate Academic Affairs of Beijing Institute of Technology.)](https://github.com/BITNP/BIThesis)
-* [CAUTemplate(中国农业大学课程论文模板)](https://github.com/Cdmium/CAUTemplate)
-* [CSUThesis(中南大学论文 Latex 模板 )](https://github.com/disc0ver-csu/csu-thesis)
+* [CAUTemplate (中国农业大学课程论文模板)](https://github.com/Cdmium/CAUTemplate)
+* [CSUThesis (中南大学论文 LaTeX 模板 )](https://github.com/disc0ver-csu/csu-thesis)
* [ElegantBook](https://github.com/ElegantLaTeX/ElegantBook)
* [ECNU-Undergraduate-LaTeX(华东师范大学本科毕业论文模板)](https://github.com/YijunYuan/ECNU-Undergraduate-LaTeX)
-* [fduthesis(复旦大学论文模板)](https://github.com/Stone-Zeng/fduthesis)
-* [fjnu-bathesis (福建师范大学本科毕业论文LaTeX 模板)](https://github.com/fjnuer/fjnu-bathesis)
-* [LaTeX-SWUFE-Bachelor-Thesis (西南财经大学本科毕业论文 LaTeX 模板)](https://github.com/sukanka/LaTeX-SWUFE-Bachelor-Thesis)
-* [LZUthesis(兰州大学本科毕业论文LaTeX模板)](https://github.com/szsdk/LZUthesis)
-* [neuthesis(东北大学博士学位论文Latex模板)](https://github.com/mervin0502/neuthesis)
+* [fduthesis (复旦大学论文模板)](https://github.com/Stone-Zeng/fduthesis)
+* [fjnu-bathesis (福建师范大学本科毕业论文 LaTeX 模板)](https://github.com/fjnuer/fjnu-bathesis)
+* [LaTeX-SWUFE-Bachelor-Thesis(西南财经大学本科毕业论文 LaTeX 模板)](https://github.com/sukanka/LaTeX-SWUFE-Bachelor-Thesis)
+* [LZUthesis(兰州大学本科毕业论文 LaTeX 模板)](https://github.com/szsdk/LZUthesis)
+* [neuthesis (东北大学博士学位论文 LaTeX 模板)](https://github.com/mervin0502/neuthesis)
* [NJU-thesis-esz(南京大学学位论文-微调整后适用于人文社科)](https://github.com/EdwardSaidZhou/NJU-thesis-esz)
* NKThesis(南开大学硕/博模板)[Template1](https://github.com/procuteboy/NKThesis) [Template2](https://github.com/NewFuture/NKThesis)
-* [NKUBachelorThesis(南开大学本科生毕业论文(毕业设计)LaTeX模板)](https://github.com/NKcqx/NKUBachelorThesis)
-* [nputhesis(NPU 博士、硕士学位论文 \LaTeX 模板)](https://github.com/NPUSCG/nputhesis)
+* [NKUBachelorThesis(南开大学本科生毕业论文(毕业设计) LaTeX 模板)](https://github.com/NKcqx/NKUBachelorThesis)
+* [nputhesis(NPU 博士、硕士学位论文 LaTeX 模板)](https://github.com/NPUSCG/nputhesis)
* [nuaa-thesis(南京航空航天大学本科、硕士和博士学位论文的样式模板)](https://github.com/nuaa803/nuaa-thesis)
-* [nudtpaper(nudt学位论文模板)](https://github.com/liubenyuan/nudtpaper)
+* [nudtpaper(nudt 学位论文模板)](https://github.com/liubenyuan/nudtpaper)
* [shtthesis (ShangHaiTech university THESIS)](https://github.com/lirundong/shtthesis)
* [SHMTUThesis(上海海事大学 LaTeX 学位论文模板)](https://github.com/hellckt/SHMTUThesis)
* [SJTUThesis(上海交通大学学位论文模板)](https://github.com/sjtug/SJTUThesis) (母校的论文模板,不得不说缘分真的很神奇,16年一出来就用上)
* [sustechthesis(Southern University of Science and Technology Thesis Template LaTeX Template)](https://github.com/Iydon/sustechthesis)
-* [SwufeTeX(西南财经大学学位论文LaTeX模板)](https://github.com/OopsYao/swufethesis)
-* [SYSUThesis(中山大学研究生学位论文LaTeX模板(试用))](https://github.com/1FCENdoge/SYSUThesis)
+* [SwufeTeX(西南财经大学学位论文 LaTeX 模板)](https://github.com/OopsYao/swufethesis)
+* [SYSUThesis(中山大学研究生学位论文 LaTeX 模板(试用))](https://github.com/1FCENdoge/SYSUThesis)
* [sysu-thesis(中山大学 LaTeX 论文项目模板(本科))](https://github.com/SYSU-SCC/sysu-thesis)
* [Thesis-Template-for-XJTU (西安交大毕业设计模板)](https://github.com/DXie123/Thesis-Template-for-XJTU)
* [ThuThesis(LaTeX Thesis Template for Tsinghua University )](https://github.com/tuna/thuthesis)
-* [TongjiThesis(同济大学硕博士论文LaTeX模板)](https://github.com/marquistj13/TongjiThesis)
+* [TongjiThesis(同济大学硕博士论文 LaTeX 模板)](https://github.com/marquistj13/TongjiThesis)
* [UCASthesis(中国科学院大学学位论文模板**国科大新版标准**)](https://github.com/xiaoyao9933/UCASthesis)
* [UCASthesis(ucasthesis 国科大学位论文 LaTeX 模板 [最新样式])](https://github.com/mohuangrui/ucasthesis)
* [ustcthesis(中国科学技术大学学位论文 LaTeX 模板)](https://github.com/ustctug/ustcthesis)
* [WUTthesis(武汉理工大学研究生学位论文的 LaTeX 模板)](https://github.com/Jiayin-Gu/WUTthesis)
* [whu-thesis(武汉大学毕业论文 LaTeX 模板)](https://github.com/whutug/whu-thesis)
-* [Yet anoter BUPT Thesis LaTeX class (北邮研究生学位设计的LaTeX文档类)](https://github.com/qcts33/BUPTthesis-ctex)
+* [Yet anoter BUPT Thesis LaTeX class (北邮研究生学位设计的 LaTeX 文档类)](https://github.com/qcts33/BUPTthesis-ctex)
* [Zhejiang University thesis(浙江大学毕业设计/论文模板)](https://github.com/TheNetAdmin/zjuthesis)
* [《经济研究》杂志 LaTeX 论文模板)](https://github.com/EthanDeng/Chinese-ERJ)
* [LaTeX学习笔记(Study-LaTeX)](https://github.com/Zousiyu/Study-LaTeX)
@@ -99,12 +99,12 @@
* [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)
-* [bibmap bib文件批量修改工具](https://github.com/hushidong/biblatex-map/)
-* [biblatex-check bib文件检查工具](https://github.com/Pezmc/BibLatex-Check)
+* [bibmap 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/CTeX-org/gbt7714-bibtex-style)
-* [LaTeX学习网站](http://www.latexstudio.net/)
-* [LaTeX交流论坛](http://www.ctex.org/)
+* [gbt7714-bibtex-style: GB/T7714-2015 标准的 bst 实现版本](https://github.com/CTeX-org/gbt7714-bibtex-style)
+* [LaTeX 学习网站](http://www.latexstudio.net/)
+* [LaTeX 交流论坛](http://www.ctex.org/)
---------------------------------------------------------
@@ -112,76 +112,74 @@
[//]: # "这里这种方式不适合可能主要是因为标题所导致,因此用上面的方式进行处理"
-<h3 id="jumptopkgload">0. pacakge usage/宏包加载方式</h3>
-样式包配合biblatex使用,即在biblatex调用时加载样式包:
+<h3 id="jumptopkgload">0. Package Usage/宏包加载方式</h3>
+样式包配合 biblatex 使用,即在 biblatex 调用时加载样式包:
-* 顺序编码制样式(gb7714-2015):
+* 顺序编码制样式 (gb7714-2015):
+```tex
+\usepackage[backend=biber,style=gb7714-2015]{biblatex}
```
- \usepackage[backend=biber,style=gb7714-2015]{biblatex}
-```
-* 著者-出版年制样式(gb7714-2015ay):
+* 著者-出版年制样式 (gb7714-2015ay):
+```tex
+\usepackage[backend=biber,style=gb7714-2015ay]{biblatex}
```
- \usepackage[backend=biber,style=gb7714-2015ay]{biblatex}
-```
-* 同一文献表中不同语言区分不同著录格式的样式(gb7714-2015ms):
+* 同一文献表中不同语言区分不同著录格式的样式 (gb7714-2015ms):
+```tex
+% 设置 gbstyle=false,中文文献使用 GB/T 7714-2015 著录格式,而其它语言文献使用 biblatex 标准样式
+\usepackage[backend=biber,style=gb7714-2015ms,gbstyle=false]{biblatex}
```
- %设置gbstyle=false,中文文献使用GB/T 7714-2015著录格式,而其它语言文献使用biblatex标准样式
- \usepackage[backend=biber,style=gb7714-2015ms,gbstyle=false]{biblatex}
-```
-* 同一文档中不同文献分节区分不同著录格式的样式(gb7714-2015mx):
+* 同一文档中不同文献分节区分不同著录格式的样式 (gb7714-2015mx):
+```tex
+% gb7714-2015mx 默认使用顺序编码制样式
+\usepackage[backend=biber,style=gb7714-2015mx]{biblatex}
+% 如需在某一参考文件分节使用著者年份制样式,比如第 2 个 refsection 中使用时,则在导言区设置:
+\setaystylesection{2}
```
- %gb7714-2015mx默认使用顺序编码制样式
- \usepackage[backend=biber,style=gb7714-2015mx]{biblatex}
- %如需在某一参考文件分节使用著者年份制样式,比如第2个refsection中使用时,则在导言区设置:
- \setaystylesection{2}
-```
* 标注(引用)样式和著录样式区分使用:
-```
+```tex
\usepackage[backend=biber,citestyle=gb7714-2015,bibstyle=gb7714-2015ay]{biblatex}
```
或(类似的方式均可)
-```
+```tex
\usepackage[backend=biber,citestyle=gb7714-2015ay,bibstyle=gb7714-2015]{biblatex}
```
* 宏包选项的使用:
+```tex
+% 设置 gbalign 选项以改变文献表序号标签对齐方式,
+% 设置 gbpub=false 取消缺省出版项自填补信息,比如:
+\usepackage[backend=biber,style=gb7714-2015,gbalign=gb7714-2015,gbpub=false]{biblatex}
```
- %设置gbalign选项以改变文献表序号标签对齐方式,
- %设置gbpub=false取消缺省出版项自填补信息,比如:
- \usepackage[backend=biber,style=gb7714-2015,gbalign=gb7714-2015,gbpub=false]{biblatex}
-```
-
-
更多宏包选项的说明见:[biblatex-gb7714-2015.pdf](biblatex-gb7714-2015.pdf)
-宏包加载的完整文档示例见:[tex文档一般结构](#jumptotexsrcf)
+宏包加载的完整文档示例见:[tex 文档一般结构](#jumptotexsrcf)
-<h3 id="jumptotexsrcf">1. Tex source file/tex文档一般结构</h3>
-注意其中加载biblatex宏包的代码:
+<h3 id="jumptotexsrcf">1. TeX source file/tex文档一般结构</h3>
+注意其中加载 biblatex 宏包的代码:
-```
-\documentclass{article}%文档类%导言区开始:
+```tex
+\documentclass{article} % 文档类
+% 导言区开始:
+\usepackage{ctex} % 加载 ctex 宏包,中文支持
-\usepackage{ctex}%加载ctex宏包,中文支持
+\usepackage{geometry} % 加载 geometry 宏包,定义版面
-\usepackage{geometry}%加载geometry宏包,定义版面
-
\usepackage[colorlinks=true,pdfstartview=FitH,%
-linkcolor=blue,anchorcolor=violet,citecolor=magenta]{hyperref}%加载hyperref宏包,使用超链接
+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[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}
@@ -207,9 +205,9 @@
\addbibresource[location=local]{egbibdata.bib}%biblatex宏包的参考文献数据源加载方式
-\begin{document}%正文区开始:
+\begin{document} % 正文区开始:
-%正文内容,引用参考文献
+% 正文内容,引用参考文献
一、基本用法
@@ -262,74 +260,80 @@
见文献\footfullcite{蔡敏2006--}
-%打印参考文献表
- \printbibliography[heading=bibliography,title=参考文献]
+% 打印参考文献表
+\printbibliography[heading=bibliography,title=参考文献]
\end{document}
```
### 2. Compile method/文档编译方式
+```sh
+xelatex jobname.tex
+biber jobname
+xelatex jobname.tex
+xelatex jobname.tex
```
- xelatex jobname.tex
- biber jobname
- xelatex jobname.tex
- xelatex jobname.tex
-```
或者
+```sh
+latexmk -xelatex jobname.tex
```
- latexmk -xelatex jobname.tex
-```
-编译引擎使用lualatex也是可以的,只要该引擎编译时ctex宏包能够正确支持中文。
+编译引擎使用 lualatex 也是可以的,只要该引擎编译时 ctex 宏包能够正确支持中文。
-### 3. Recommended environment/推荐使用环境
+### 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)
+- TeX Live + WinEdt
+- TeX Live + TeXstudio
+- TeX Live 及其它发行版安装见[安装指南](https://github.com/sjtug/SJTUThesis/wiki/%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97)
-### 4. Common questions/常见问题
+### 4. Common Questions/常见问题
-#### 4.1 Installation and use/安装和使用
+#### 4.1 Installation and Use/安装和使用
* <b>怎么利用biblatex生成国标GB/T 7714-2015格式的参考文献表?</b>
(1)在导言区加载biblatex宏包,并使用gb7714-2015样式:
-``` \usepackage[backend=biber,style=gb7714-2015]{biblatex}```
+```tex
+\usepackage[backend=biber,style=gb7714-2015]{biblatex}
+```
(2)正文中引用参考文献:
-``` 见文献\cite{referencbibtexkey}```
+```tex
+见文献 \cite{referencbibtexkey}
+```
(3)在需要的地方打印参考文献表:
-```\printbibliography```
-更直接的例子见前述的[tex源文档](#jumptotexsrcf)
+```tex
+\printbibliography
+```
+更直接的例子见前述的 [tex 源文档](#jumptotexsrcf)
-* <b>请问我应该怎么安装和更新biblatex-gb7714-2015宏包?</b>
+* <b>请问我应该怎么安装和更新 biblatex-gb7714-2015 宏包?</b>
-biblatex-gb7714-2015宏包是基于biblatex的样式宏包,目前texlive,miktex都已收录,因此可以直接使用,一般不需要安装。
+biblatex-gb7714-2015 宏包是基于 biblatex 的样式宏包,目前 TeX Live,MiKTeX都已收录,因此可以直接使用,一般不需要安装。
-如果使用时,系统提示找不gb7714-2015.bbx或gb7714-2015ay.bbx文件的错误,说明当前tex系统未安装biblatex-gb7714-2015样式包,这时需要安装它。
+如果使用时,系统提示找不 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 文件。对于已经安装的用户需要更新到最新版,也可以下载这些文件替换系统已经安装的文件。
+最简单的方法是从本项目源码中下载 gb7714-2015.bbx、gb7714-2015ay.bbx、gb7714-2015.cbx、gb7714-2015ay.cbx 四个文件放到你要编译的主文档所在目录,如果需要使用 gbk 编码,则还需复制 gb7714-2015-gbk.def 文件。对于已经安装的用户需要更新到最新版,也可以下载这些文件替换系统已经安装的文件。
-* <b>请问使用时biblatex-gb7714-2015宏包时出现错误“ Package xkeyval Error: gb****** ' undefined in families blx at opt@pre'. [\blx at processoptions] ”?</b>
+* <b>请问使用时 biblatex-gb7714-2015 宏包时出现错误“ Package xkeyval Error: gb****** ' undefined in families blx at opt@pre'. [\blx at processoptions] ”?</b>
-因为宏包的功能不断增加和完善,当在tex源文档中,使用新版中的一些选项时,而系统中的biblatex-gb7714-2015宏包是旧版时,就会出现`gb****`选项未定义的错误。解决方法就是更新biblatex-gb7714-2015宏包。更新方法见上一个问题。
+因为宏包的功能不断增加和完善,当在 tex 源文档中,使用新版中的一些选项时,而系统中的 biblatex-gb7714-2015 宏包是旧版时,就会出现`gb****`选项未定义的错误。解决方法就是更新 biblatex-gb7714-2015 宏包。更新方法见上一个问题。
@@ -337,98 +341,98 @@
可能有三个原因:
-(1) 辅助文件没有清理导致,当采用caspervector样式时编译产生的辅助文件中可能带有该样式的一些特有信息,由此产生一些不兼容。因此需要的操作是,清除辅助文件,然后再进行编译。清除命令为(下面的命令是windows下的,linux下的是类似的只需把删除命令换成`rm -f`):
+(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,方法见上一个问题。
+(2) biblatex-gb7714-2015 版本过于陈旧,旧版本对于一些特殊情况可能考虑不全面。因此需要的操作是更新 biblatex-gb7714-2015,方法见上一个问题。
-(3) 编译命令问题,通常情况下tex文档和bib文档是utf8编码的,因此最好采用xelatex编译,而不用pdflatex。因此如果编译时用pdflatex出现错误,请换成xelatex。
+(3) 编译命令问题,通常情况下 tex 文档和 bib 文档是 utf8 编码的,因此最好采用 xelatex 编译,而不用 pdflatex。因此如果编译时用 pdflatex 出现错误,请换成 xelatex。
* <b>为什么我编译文档后没有出现参考文献表?</b>
当编译过程出现错误时,那么检查错误的原因,并解决它。
-当编译过程没有出现错误,那么很有可能是没有采用正确的命令进行文献编译,比如采用了传统的bibtex而不是biber。那么采用正确的编译命令重新编译即可:
-```
+当编译过程没有出现错误,那么很有可能是没有采用正确的命令进行文献编译,比如采用了传统的 bibtex 而不是 biber。那么采用正确的编译命令重新编译即可:
+```sh
xelatex jobname.tex
biber jobname
xelatex jobname.tex
```
-* <b>使用biblatex时运行简单示例也出现错误,查看biber输出结果似乎不正常,这种情况怎么解决?</b>
+* <b>使用 biblatex 时运行简单示例也出现错误,查看 biber 输出结果似乎不正常,这种情况怎么解决?</b>
-由于biber在第一次运行时会在缓存文件夹下创建一些二进制运行文件,如果这些文件被破坏,那么biber运行结果会出现莫名其妙的错误。比如:
-biber运行一半就结束了,log信息如下所示:
+由于 biber 在第一次运行时会在缓存文件夹下创建一些二进制运行文件,如果这些文件被破坏,那么 biber 运行结果会出现莫名其妙的错误。比如:
+biber 运行一半就结束了,log 信息如下所示:
```
- INFO - This is Biber 2.16
- INFO - Logfile is 'thuthesis-example.blg'
- INFO - Reading 'thuthesis-example.bcf'
- INFO - Found 34 citekeys in bib section 0
- INFO - Processing section 0
- INFO - Looking for bibtex format file 'ref/refs.bib' for section 0
- INFO - LaTeX decoding ...
- INFO - Found BibTeX data source 'ref/refs.bib'
+INFO - This is Biber 2.16
+INFO - Logfile is 'thuthesis-example.blg'
+INFO - Reading 'thuthesis-example.bcf'
+INFO - Found 34 citekeys in bib section 0
+INFO - Processing section 0
+INFO - Looking for bibtex format file 'ref/refs.bib' for section 0
+INFO - LaTeX decoding ...
+INFO - Found BibTeX data source 'ref/refs.bib'
```
-这次运行中只是找到了bib文件,并没有下一步的处理,显然是存在问题的。
+这次运行中只是找到了 bib 文件,并没有下一步的处理,显然是存在问题的。
-因此如果出现这种情况,可以手动删除缓存文件夹,让biber重新创建。这些缓存文件夹名字通常为:
+因此如果出现这种情况,可以手动删除缓存文件夹,让 biber 重新创建。这些缓存文件夹名字通常为:
```
- par-<hex_encoded_username>/cache-*
- par-<hex_encoded_username>\cache-*
+par-<hex_encoded_username>/cache-*
+par-<hex_encoded_username>\cache-*
```
在不同的系统下面,缓存文件夹的位置是不同的,可能的位置包括:
```
- /var/folders/*/*/*/ (OSX, local GUI login shell)
- /var/tmp/ (OSX (remote ssh login shell), Unix)
- /tmp/ (Linux)
- C:\Documents and Settings\<username>\Local Settings\Temp (Windows XP/Cyg- win)
- C:\Windows\Temp (Windows)
- C:\Users\<username>\AppData\Local\Temp (Windows 7/8)
+/var/folders/*/*/*/ (OSX, local GUI login shell)
+/var/tmp/ (OSX (remote ssh login shell), Unix)
+/tmp/ (Linux)
+C:\Documents and Settings\<username>\Local Settings\Temp (Windows XP/Cyg- win)
+C:\Windows\Temp (Windows)
+C:\Users\<username>\AppData\Local\Temp (Windows 7/8)
```
-也可以从运行得到的.blg文件或者命令`biber --cache`来找到缓存文件夹。
+也可以从运行得到的 `.blg` 文件或者命令 `biber --cache` 来找到缓存文件夹。
-删除缓存文件夹操作,在Linux和Mac下可以使用如下命令操作:
-```
+删除缓存文件夹操作,在 Linux 和 Mac 下可以使用如下命令操作:
+```sh
rm -rf `biber --cache`
```
-在windows下,那么其实随便用个清理软件把临时文件夹清理一下就行。直接点就是找到`par-<hex_encoded_username>/cache-*`缓存文件夹然后删除它。
+在 Windows 下,那么其实随便用个清理软件把临时文件夹清理一下就行。直接点就是找到`par-<hex_encoded_username>/cache-*`缓存文件夹然后删除它。
* <b>为什么利用 ctex2.9 套装进行编译时,出现错误?</b>
-由于ctex2.9套装多年未更新,其中的biblatex宏包过于陈旧,所以需要更新 biblatex。
+由于 ctex2.9 套装多年未更新,其中的 biblatex 宏包过于陈旧,所以需要更新 biblatex。
-* <b>请问除了利用xelatex进行编译外,能不能用pdflatex进行编译?</b>
+* <b>请问除了利用 xelatex 进行编译外,能不能用 pdflatex 进行编译?</b>
-能用pdflatex进行编译。但要注意的是因为某些样式比如authoryear等使用了xstring宏包中的一些命令,所以会产生错误,但numeric类样式通常没有问题。这一问题在biblatex更新到3.12版本后取消xstring宏包后得以解决。
+能用 pdflatex 进行编译。但要注意的是因为某些样式比如 authoryear 等使用了 xstring 宏包中的一些命令,所以会产生错误,但 numeric 类样式通常没有问题。这一问题在 biblatex 更新到 3.12 版本后取消 xstring 宏包后得以解决。
中文用户需要注意一些编码的问题:
-utf-8编码的文档,采用xelatex编译没有任何注意事项,但使用pdflatex编译时,需要给ctex宏包加载UTF8选项,比如`\usepackage[UTF8]{ctex}`或者在文档类加载时给出也可以比如`\documentclass[[UTF8]{article}`,同时引用文献时使用的引用关键词应使用英文。
+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}`。
+当文档使用其他编码时,xelatex 编译通常需要指定一个文档编码,比如 Windows 环境下的 GB2312 编码的文档需要指定 `\XeTeXinputencoding "GBK"`,否则显示乱码。使用 pdflatex 进行编译,如果 biblatex 不能正确的处理编码问题,那么需要为其明确的指定 texencoding 和 bibencoding 选项。比如 Windows 环境下的 GB2312 编码的文档,需要指定 `\usepackge[texencoding=GBK]{biblatex}`。
-* <b>请问要给biblatex-gb7714-2015设置一些选项,但模板已经将biblatex调用写死且不方便修改,该如何处理?</b>
+* <b>请问要给 biblatex-gb7714-2015 设置一些选项,但模板已经将 biblatex 调用写死且不方便修改,该如何处理?</b>
-可以使用PassOptionsToPackage命令来实现。,比如将gbnamefmt=lowercase选项传递给biblatex,那么可以使用如下命令:
-```
+可以使用 `\PassOptionsToPackage` 命令来实现。,比如将 `gbnamefmt=lowercase` 选项传递给 biblatex,那么可以使用如下命令:
+```tex
\PassOptionsToPackage{gbnamefmt=lowercase}{biblatex}
```
-需要注意的是要使该命令生效,这条命令需要在调用biblatex之前出现,可以放到导言区调用biblatex之前,也可以放到文档类调用之前(即documentclass命令之前),比如:
+需要注意的是要使该命令生效,这条命令需要在调用 biblatex 之前出现,可以放到导言区调用 biblatex 之前,也可以放到文档类调用之前 (即 `\documentclass` 命令之前),比如:
-```
+```tex
\PassOptionsToPackage{gbpub=false}{biblatex}
\documentclass[twoside]{article}
@@ -438,12 +442,12 @@
-* <b>请问使用backref=true选项后,某个反向超链接总是链接到封面页是怎么回事?</b>
+* <b>请问使用 `backref=true` 选项后,某个反向超链接总是链接到封面页是怎么回事?</b>
-对页码进行正确超链接需要一个前提是,当前链接的页码是唯一的。当有两页具有相同的页码时,超链接总是链接到第一各具有该页码的页面上。比如封面页页码是1,正文第一页页码也是1,那么到正文第一页的反向超链接总会链接到封面页上。解决该问题就是要解决页码的唯一性问题。当页码的表示形式不是同一种时,那么也会得到正确的区分。比如封面页用罗马字母I表示,而正文第一页用阿拉伯数字1表示,那么就能得到正确的反向超链接。类似于:
+对页码进行正确超链接需要一个前提是,当前链接的页码是唯一的。当有两页具有相同的页码时,超链接总是链接到第一各具有该页码的页面上。比如封面页页码是 1,正文第一页页码也是 1,那么到正文第一页的反向超链接总会链接到封面页上。解决该问题就是要解决页码的唯一性问题。当页码的表示形式不是同一种时,那么也会得到正确的区分。比如封面页用罗马字母I表示,而正文第一页用阿拉伯数字1表示,那么就能得到正确的反向超链接。类似于:
-```
+```tex
\pagenumbering{roman}
\title{title}
\maketitle
@@ -460,41 +464,45 @@
一般情况下文献表是按引用顺序进行排列,标签是顺序的数字,这种方式称为顺序编码制。
如果要以文献作者字母顺序排列,那么可以换一种编制方式,称为作者年制:
-```\usepackage[backend=biber,style=gb7714-2015ay]{biblatex}```
+```tex
+\usepackage[backend=biber,style=gb7714-2015ay]{biblatex}
+```
-如果要求使用顺序编码制文献表,又要以文献作者字母顺序排列,那么可以增加排序选项`sorting=nyt`,意为按照姓名、年份、标题的字母顺序进行排序:
+如果要求使用顺序编码制文献表,又要以文献作者字母顺序排列,那么可以增加排序选项 `sorting=nyt`,意为按照姓名、年份、标题的字母顺序进行排序:
-```\usepackage[backend=biber,style=gb7714-2015,sorting=nyt]{biblatex}```
+```tex
+\usepackage[backend=biber,style=gb7714-2015,sorting=nyt]{biblatex}
+```
-
-
* <b>作者年制中英文文献能按字母顺序排列,那么中文文献能否以拼音或者笔画进行排序呢?</b>
能,有两种方式实现:
-(1)通过编译时给biber设置选项来实现:
+(1)通过编译时给 biber 设置选项来实现:
-```
-%按拼音排序,biber命令
+```sh
+% 按拼音排序,biber 命令
biber -l zh__pinyin jobname
-%按笔画排序,biber命令
+% 按笔画排序,biber 命令
biber -l zh__stroke jobname
```
-(2)通过增加 biblatex 选项来实现(此时biber编译无需另加选项),比如:
+(2)通过增加 biblatex 选项来实现(此时 biber 编译无需另加选项),比如:
-```\usepackage[backend=biber,style=gb7714-2015ay,sortlocale=zh__pinyin]{biblatex}```
+```tex
+\usepackage[backend=biber,style=gb7714-2015ay,sortlocale=zh__pinyin]{biblatex}
+```
-
-
* <b>作者年制参考文献表目前的排序时升序排列,能不能改成降序排序?</b>
-能,通过修改sorting选项实现:
+能,通过修改 sorting 选项实现:
-```\usepackage[backend=biber,style=gb7714-2015ay,sorting=gbnytd]{biblatex}```
+```tex
+\usepackage[backend=biber,style=gb7714-2015ay,sorting=gbnytd]{biblatex}
+```
可用的选项值包括:
```
@@ -514,43 +522,53 @@
* <b>如果我还希望顺序编码的文献著录表以拼音排序,请问该怎么操作?</b>
-顺序编码文献著录表默认是按引用顺序排序,但可以通过设置sorting选项进行调整,比如sorting=nyt表示按作者姓名年份以及文献标题进行排序。要使中文能按拼音排序,可以设置本地化排序调整方案,即sortlocale选项,比如:
+顺序编码文献著录表默认是按引用顺序排序,但可以通过设置 sorting 选项进行调整,比如 sorting=nyt 表示按作者姓名年份以及文献标题进行排序。要使中文能按拼音排序,可以设置本地化排序调整方案,即 sortlocale 选项,比如:
-```\usepackage[backend=biber,citestyle=gb7714-2015ay,bibstyle=gb7714-2015,sorting=nyt,sortlocale=zh__pinyin]{biblatex}```
+```tex
+\usepackage[backend=biber,citestyle=gb7714-2015ay,bibstyle=gb7714-2015,sorting=nyt,sortlocale=zh__pinyin]{biblatex}
+```
-
-
-
-
* <b>我希望文献表以阿拉伯数字编号,而正文中的引用标签使用作者和年份标注而不是数字,请问我该如何处理?</b>
可以设置不同的标注和著录样式,比如标注样式用作者年制,而著录样式用顺序编码制,比如:
-```\usepackage[backend=biber,citestyle=gb7714-2015ay,bibstyle=gb7714-2015]{biblatex}```
+```tex
+\usepackage[backend=biber,citestyle=gb7714-2015ay,bibstyle=gb7714-2015]{biblatex}
+```
但这种情况下,文献表中的年份信息是在出版项里面的,如果要提前到作者后面,可以使用如下方式:
-```\usepackage[backend=biber,style=gb7714-2015ay,gbgalign=right]{biblatex}```
+```tex
+\usepackage[backend=biber,style=gb7714-2015ay,gbgalign=right]{biblatex}
+```
-如果要让年份信息既出现在作者后面又出现在出版项里面,那么还可以增加mergedate选项进行控制:
+如果要让年份信息既出现在作者后面又出现在出版项里面,那么还可以增加 mergedate 选项进行控制:
-```\usepackage[backend=biber,style=gb7714-2015ay,gbgalign=right,mergedate=false]{biblatex}```
+```tex
+\usepackage[backend=biber,style=gb7714-2015ay,gbgalign=right,mergedate=false]{biblatex}
+```
-这种情况下,直接用gb7714-2015ay下的gbgalign选项来生成数字标签的文献表,而且可以使用right/left/center/gb7714-2015等不同的选项值来实现不同对齐形式的标签。
+这种情况下,直接用 gb7714-2015ay 下的 gbgalign 选项来生成数字标签的文献表,而且可以使用 right/left/center/gb7714-2015 等不同的选项值来实现不同对齐形式的标签。
反过来如果要在文中引用是数字标签,而文献表是无数字标签的样式,那么也可以使用下面两种方式:
-```\usepackage[backend=biber,style=gb7714-2015,gbalign=gb7714-2015ay]{biblatex}```
+```tex
+\usepackage[backend=biber,style=gb7714-2015,gbalign=gb7714-2015ay]{biblatex}
+```
这种情况下,文献表中的年份信息是在出版项里面的,如果要提前到作者后面,则使用:
-```\usepackage[backend=biber,citestyle=gb7714-2015,bibstyle=gb7714-2015ay]{biblatex}```
+```tex
+\usepackage[backend=biber,citestyle=gb7714-2015,bibstyle=gb7714-2015ay]{biblatex}
+```
-类似的也可以使用mergedate选项来控制年份的显示情况:
+类似的也可以使用 mergedate 选项来控制年份的显示情况:
-```\usepackage[backend=biber,citestyle=gb7714-2015,bibstyle=gb7714-2015ay,mergedate=false]{biblatex}```
+```tex
+\usepackage[backend=biber,citestyle=gb7714-2015,bibstyle=gb7714-2015ay,mergedate=false]{biblatex}
+```
-参见:[issue:参考文献的顺序](https://github.com/sjtug/SJTUThesis/issues/300) ,
+参见 [issue: 参考文献的顺序](https://github.com/sjtug/SJTUThesis/issues/300),
[issue90](https://github.com/hushidong/biblatex-gb7714-2015/issues/90)
@@ -559,27 +577,27 @@
-* <b>请问如果参考文献中存在一些特殊字符比如&或者一些特殊命令比如\LaTex{}等,是不是会出现问题?</b>
+* <b>请问如果参考文献中存在一些特殊字符比如 `&` 或者一些特殊命令比如 `\LaTeX{}` 等,是不是会出现问题?</b>
-通常不会出现问题,直接输入即可,当出现问题时可以手动调整比如修改为`\&`和`{\LaTex{}}`
+通常不会出现问题,直接输入即可,当出现问题时可以手动调整比如修改为 `\&` 和 `{\LaTeX{}}`
-* <b>如果希望在参考文献中直接使用一些unicode字符比如希腊字母等而不想用数学环境中的命令,请问该怎么处理?</b>
+* <b>如果希望在参考文献中直接使用一些 unicode 字符比如希腊字母等而不想用数学环境中的命令,请问该怎么处理?</b>
-直接显示希腊字母等unicode字符需要字体的支持,比如CMU Serif等,可以在整个文档全局使用该字体,也可以仅在文献表中使用该字体,比如:
+直接显示希腊字母等 unicode 字符需要字体的支持,比如 CMU Serif 等,可以在整个文档全局使用该字体,也可以仅在文献表中使用该字体,比如:
-```
+```tex
{
\newcommand{\ftcmu}{\fontspec{CMU Serif}\selectfont}
-\renewcommand{\bibfont}{\ftcmu}%设置英文字体不影响中文字体
+\renewcommand{\bibfont}{\ftcmu} % 设置英文字体不影响中文字体
\printbibliography
}
```
-当然字体设置需要fontspec宏包的支持。
+当然字体设置需要 fontspec 宏包的支持。
@@ -587,7 +605,7 @@
设置如下尺寸即可
-```
+```tex
% 间距的控制
\setlength{\bibitemsep}{0ex}
\setlength{\bibnamesep}{0ex}
@@ -594,7 +612,7 @@
\setlength{\bibinitsep}{0ex}
```
-其中itemsep设置各条文献之间的间隔,一般够用,后面两个常在西文中使用。具体意义参考biblatex-zh-cn
+其中 itemsep 设置各条文献之间的间隔,一般够用,后面两个常在西文中使用。具体意义参考 biblatex-zh-cn
@@ -601,61 +619,61 @@
* <b>如何修参考文献表的缩进?</b>
对于著者-出版年制文献表,设置如下尺寸即可:
-```
+```tex
% 文献表中各条文献的缩进控制
-\setlength{\bibitemindent}{0em} % bibitemindent表示一条文献中第一行相对后面各行的缩进
+\setlength{\bibitemindent}{0em} % bibitemindent 表示一条文献中第一行相对后面各行的缩进
\setlength{\bibhang}{0pt} % 著者-出版年制中 bibhang 表示的各行起始位置到页边的距离
```
对于顺序编码制文献表,可以采用如下方法:
-由于顺序编码制存在数字标签,且其宽度与参考文献数量相关的,在biblatex中这个宽度是一个动态变量,不是提前设定的,而是在文献表生成时给出,所以设定缩进需要更复杂的操作。
+由于顺序编码制存在数字标签,且其宽度与参考文献数量相关的,在 biblatex 中这个宽度是一个动态变量,不是提前设定的,而是在文献表生成时给出,所以设定缩进需要更复杂的操作。
-对于采用list环境的文献表,即设置gbalign=left、right、center时,那么需要修改文献表环境来设定缩进,比如:
+对于采用 list 环境的文献表,即设置 gbalign=left、right、center 时,那么需要修改文献表环境来设定缩进,比如:
-```
-%调整顺序标签与文献内容的间距
+```tex
+% 调整顺序标签与文献内容的间距
\setlength{\biblabelsep}{2mm}
-%修改对齐环境-使不缩进
+% 修改对齐环境-使不缩进
\defbibenvironment{bibliography}
{\list
{\printtext[labelnumberwidth]{%
\printfield{labelprefix}%
\printfield{labelnumber}}}
- {%这里是所做的调整,通过设置\bibitemindent,\bibhang调整缩进
+ {% 这里是所做的调整,通过设置 \bibitemindent,\bibhang 调整缩进
\addtolength{\bibitemindent}{\labelnumberwidth}%
- \addtolength{\bibitemindent}{\biblabelsep}%
- \addtolength{\bibhang}{-\labelnumberwidth} %
- \addtolength{\bibhang}{-\biblabelsep}%
- %以下是默认的设置
+ \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}}
+ \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时,可以采用如下设定:
+对于不采用 list 环境的文献表,即设置 `gbalign=gb7714-2015` 时,可以采用如下设定:
-```
-%调整顺序标签与文献内容的间距
+```tex
+% 调整顺序标签与文献内容的间距
\setlength{\biblabelsep}{2mm}
-%修改对齐环境-使不缩进
+% 修改对齐环境-使不缩进
\renewcommand{\itemcmd}{%
\settowidth{\lengthid}{\mkgbnumlabel{\printfield{labelnumber}}}
-%%这里是所做的调整,以下两句通过调整\lengthid来调整缩进
+%% 这里是所做的调整,以下两句通过调整 \lengthid 来调整缩进
\setlength{\lengthid}{0pt}
\addtolength{\lengthid}{-\biblabelsep}
-%如下是默认设置
+% 如下是默认设置
\addtolength{\lengthid}{\biblabelsep}
\setlength{\lengthlw}{\textwidth}
\addtolength{\lengthlw}{-\lengthid}
-\addvspace{\bibitemsep}%恢复\bibitemsep的作用
+\addvspace{\bibitemsep} % 恢复 \bibitemsep 的作用
%\parshape 2 0em \textwidth \lengthid \lengthlw
\hangindent\lengthid
\mkgbnumlabel{\printfield{labelnumber}}%
@@ -671,7 +689,7 @@
通过修改如下命令实现
-```
+```tex
% 字体的控制: \textit, sl, emph-楷体, \textbf, sf-黑体, \texttt-仿宋, \textsc, md, up-宋体
% 全局字体
\renewcommand{\bibfont}{\zihao{-5}}%\fangsong
@@ -679,15 +697,15 @@
\renewcommand{\bibauthorfont}{\bfseries\color{teal}}%
\renewcommand{\bibtitlefont}{\ttfamily\color{blue}}%
\renewcommand{\bibpubfont}{\itshape\color{violet}}%
-% url和doi字体
+% url 和 doi 字体
\def\UrlFont{\ttfamily} %\urlstyle{sf} %\def\UrlFont{\bfseries}
```
-* <b>我习惯用传统的bst文件来生成参考文献,有没有GB/T 7714-2015标准的实现版本?</b>
+* <b>我习惯用传统的 bst 文件来生成参考文献,有没有 GB/T 7714-2015 标准的实现版本?</b>
-GB/T 7714-2015标准实现的bst版本,已经由[zeping lee](https://github.com/CTeX-org/gbt7714-bibtex-style)开发完毕,直接使用即可。
+GB/T 7714-2015 标准实现的 bst 版本,已经由 [zepinglee](https://github.com/CTeX-org/gbt7714-bibtex-style) 开发完毕,直接使用即可。
@@ -694,7 +712,7 @@
* <b>我在使用过程中遇到了一些无法理解和无法解决的问题,怎么办?</b>
-请邮件联系hzzmail at 163.com或在项目内发issue提问即可。
+请邮件联系 hzzmail at 163.com 或在项目内发 issue 提问即可。
* <b>注意帮助的文档的查询顺序?</b>
@@ -701,92 +719,94 @@
一般用户的话查:biblatex-gb7714-2015.pdf,biblatex-solution-to-latex-bibliography.pdf,biblatex-zh-cn.PDF。
宏包作者的话查:gb7714-2015*.C/BBX,biblatex.PDF,numeric/authoryear.c/BBX,standard.bbx,biblatex.def,biblatex.sty,english.lbx
-注意别忘了lbx文件。
+注意别忘了 lbx 文件。
-#### 4.2 Bibliography format/文献表著录格式
+#### 4.2 Bibliography Format/文献表著录格式
-* <b>请问可以在参考文献表中实现类似于word那样的与文献内容等间距的标签对齐格式么?</b>
+* <b>请问可以在参考文献表中实现类似于 word 那样的与文献内容等间距的标签对齐格式么?</b>
-可以,latex的列表通常用list来实现,因此一般列表的内容都是对齐的,
-此时如果标签右对齐的,那么标签和内容等间距,但标签左侧是不对齐的,此时对应的选项为:gbalign=right。
-如果标签是左对齐的,那么标签和内容的间距不相等,此时对应的选项为:gbalign=left。
-如果标签是中间对齐的,那么标签的两侧的[]是对齐的,数字标签处于其中间,此时对应的选项为:gbalign=center。
-如果要求标签左侧对齐,且标签与内容等间距,则必须放弃使用list,这种方式在本宏包中称为项对齐,对应选项为gbalign=gb7714-2015,
-这是biblatex-7714-2015的顺序编码制样式为项对齐设计了专门环境达成的,其使用方式很简单,加上响应的选项即可:
+可以,latex 的列表通常用 list 来实现,因此一般列表的内容都是对齐的,
+此时如果标签右对齐的,那么标签和内容等间距,但标签左侧是不对齐的,此时对应的选项为:`gbalign=right`。
+如果标签是左对齐的,那么标签和内容的间距不相等,此时对应的选项为:`gbalign=left`。
+如果标签是中间对齐的,那么标签的两侧的[]是对齐的,数字标签处于其中间,此时对应的选项为:`gbalign=center`。
+如果要求标签左侧对齐,且标签与内容等间距,则必须放弃使用list,这种方式在本宏包中称为项对齐,对应选项为 `gbalign=gb7714-2015`,
+这是 biblatex-7714-2015 的顺序编码制样式为项对齐设计了专门环境达成的,其使用方式很简单,加上响应的选项即可:
-```\usepackage[backend=biber,bibstyle=gb7714-2015,gbalign=gb7714-2015]{biblatex}```
-
-
+```tex
+\usepackage[backend=biber,bibstyle=gb7714-2015,gbalign=gb7714-2015]{biblatex}
+```
* <b>如果不希望在参考文献表中出现类似“出版地不详”“出版者不详”等信息时,请问该怎么处理?</b>
-设置选项gbpub可以实现,当gbpub=false时,biblatex-gb7714-2015宏包会放弃国标的要求,不使用“出版地不详”等补充信息:
+设置选项 `gbpub` 可以实现,当 `gbpub=false` 时,biblatex-gb7714-2015 宏包会放弃国标的要求,不使用“出版地不详”等补充信息:
-```\usepackage[backend=biber,bibstyle=gb7714-2015,gbpub=false]{biblatex}```
-
-
-
+```tex
+\usepackage[backend=biber,bibstyle=gb7714-2015,gbpub=false]{biblatex}
+```
+
* <b>我觉得文献表中英文作者全部用大写不好看,请问能换一种大小写方式么?</b>
-能,通过设置gbnamefmt可以实现,默认情况下gbnamefmt=uppercase,作者姓名字母全部大写。
-当设置gbnamefmt=lowercase时,biblatex-gb7714-2015宏包对于bib文件中的作者姓名的大小写不做改变,
-这时可以在bib文件中手动设置想要的大小写方式。
-当要实现类似ZHAO Yu-xin这样的拼音方式,则可以设置gbnamefmt=pinyin:
+能,通过设置 `gbnamefmt` 可以实现,默认情况下 `gbnamefmt=uppercase`,作者姓名字母全部大写。
+当设置 `gbnamefmt=lowercase` 时,biblatex-gb7714-2015 宏包对于 bib 文件中的作者姓名的大小写不做改变,
+这时可以在 bib 文件中手动设置想要的大小写方式。
+当要实现类似 ZHAO Yu-xin 这样的拼音方式,则可以设置 `gbnamefmt=pinyin`:
-```\usepackage[backend=biber,bibstyle=gb7714-2015,gbnamefmt=lowercase]{biblatex}```
+```tex
+\usepackage[backend=biber,bibstyle=gb7714-2015,gbnamefmt=lowercase]{biblatex}
+```
-
-
* <b>如果不希望在参考文献表中出现类似“[M]”“[J]”等文献类型标识符时,请问该怎么处理?</b>
-可通过设置选项gbtype=false实现:
+可通过设置选项 `gbtype=false` 实现:
-```\usepackage[backend=biber,bibstyle=gb7714-2015,gbtype=false]{biblatex}```
+```tex
+\usepackage[backend=biber,bibstyle=gb7714-2015,gbtype=false]{biblatex}
+```
-
* <b>如果不希望在参考文献表中出现网址信息时,请问该怎么处理?</b>
-可通过设置选项url=false实现:
+可通过设置选项 `url=false` 实现:
-```\usepackage[backend=biber,bibstyle=gb7714-2015,url=false]{biblatex}```
+```tex
+\usepackage[backend=biber,bibstyle=gb7714-2015,url=false]{biblatex}
+```
+* <b>如果不希望在参考文献表中出现 DOI 信息时,请问该怎么处理?</b>
-* <b>如果不希望在参考文献表中出现DOI信息时,请问该怎么处理?</b>
-
-可通过设置选项doi=false实现:
+可通过设置选项 `doi=false` 实现:
-```\usepackage[backend=biber,bibstyle=gb7714-2015,doi=false]{biblatex}```
-
+```tex
+\usepackage[backend=biber,bibstyle=gb7714-2015,doi=false]{biblatex}
+```
-
-* <b>如果对当前文献中的url或doi显示效果(包括间距和断行)不满意,能否进行调整?</b>
+* <b>如果对当前文献中的 url 或 doi 显示效果(包括间距和断行)不满意,能否进行调整?</b>
-能,可以通过设置三个计数器的值来调整,取值范围0到9999,计数器的值越大则越容易在相应的内容后断行:
+能,可以通过设置三个计数器的值来调整,取值范围 0 到 9999,计数器的值越大则越容易在相应的内容后断行:
-```
-\setcounter{biburlnumpenalty}{100}%大于0允许在数字后面断行
-\setcounter{biburlucpenalty}{100}%大于0允许在大写字母后面断行
-\setcounter{biburllcpenalty}{100}%大于0允许在小写字母后面断行
-```
+```tex
+\setcounter{biburlnumpenalty}{100} % 大于 0 允许在数字后面断行
+\setcounter{biburlucpenalty}{100} % 大于 0 允许在大写字母后面断行
+\setcounter{biburllcpenalty}{100} % 大于 0 允许在小写字母后面断行
+```
* <b>中英文混排,有些英文断行不佳,导致行溢出,怎么解决?</b>
-biblatex的参考文献表的换行是由tex的断行机制决定的,处理行(盒子)溢出就要用tex的方式处理:
+biblatex 的参考文献表的换行是由 tex 的断行机制决定的,处理行(盒子)溢出就要用 tex 的方式处理:
-直接使用`\sloppy`命令
+直接使用 `\sloppy` 命令
-```
+```tex
{
\sloppy
\printbibliography[heading=subbibintoc,title=【参考文献】]
@@ -793,12 +813,12 @@
}
```
或者自己设置具体断行相关的参数
-```
+```tex
{
%\hyphenation{Proce-edings}
- \hyphenpenalty=5000 %断词阈值, 值越大越不容易出现断词
- \tolerance=500 %丑度, 10000为最大无溢出盒子, 参考the texbook 第6章
- \hbadness=100 %如果丑度超过hbadness这一阀值, 那么就会发出警告
+ \hyphenpenalty=5000 % 断词阈值, 值越大越不容易出现断词
+ \tolerance=500 % 丑度, 10000 为最大无溢出盒子, 参考 the TeXbook 第 6 章
+ \hbadness=100 % 如果丑度超过 hbadness 这一阀值, 那么就会发出警告
\printbibliography[heading=subbibintoc,title=【参考文献】]
}
```
@@ -812,39 +832,38 @@
通常是由一条参考文献内部不分页导致的,默认情况下希望一条参考文献条件放在一个页面内,所以在页面底部的文献可能由于放不下跑到下一页。
这种情况可以通过调整段内的分页阈值改变,即使得一条参考文献(即一个段内)更容易分页即可:
-```
+```tex
{
- \interlinepenalty=5000 %分页阈值,越小越容易分页
+ \interlinepenalty=5000 % 分页阈值,越小越容易分页
\printbibliography[heading=subbibintoc,title=【参考文献】]
}
```
-
-
-
* <b>当参考文献没有作者时,希望用佚名或Anon代替作者时,请问该怎么处理?</b>
-可通过设置选项gbnoauthor=true实现,注意该处理主要用在作者年制中:
+可通过设置选项 `gbnoauthor=true` 实现,注意该处理主要用在作者年制中:
-```\usepackage[backend=biber,bibstyle=gb7714-2015,gbnoauthor=true]{biblatex}```
-
-
-
-* <b>如果希望参考文献表中文献作者数量超过国标规定的3个时,请问该怎么处理?</b>
+```tex
+\usepackage[backend=biber,bibstyle=gb7714-2015,gbnoauthor=true]{biblatex}
+```
+* <b>如果希望参考文献表中文献作者数量超过国标规定的 3 个时,请问该怎么处理?</b>
+
-可通过设置选项maxbibnames,minbibnames实现,比如下面的设置用于显示5个作者:
+可通过设置选项 `maxbibnames`,`minbibnames` 实现,比如下面的设置用于显示 5 个作者:
-```\usepackage[backend=biber,bibstyle=gb7714-2015,maxbibnames=5,minbibnames=5]{biblatex}```
+```tex
+\usepackage[backend=biber,bibstyle=gb7714-2015,maxbibnames=5,minbibnames=5]{biblatex}
+```
-* <b>请问如何将作者之间的分隔符调整为and而不是用逗号?</b>
+* <b>请问如何将作者之间的分隔符调整为 and 而不是用逗号?</b>
-可以通过重设两个分隔符来实现,分别是multinamedelim和finalnamedelim。低版本的biblatex直接重定义命令`\multinamedelim`和`\finalnamedelim`,高版本的biblatex可以使用分隔符环境,这样可以在标注、文献表等不同位置直接使用不同的分隔符,而不像低版本biblatex那样只能在不同的位置修改局部定义。比如:
+可以通过重设两个分隔符来实现,分别是 multinamedelim 和 finalnamedelim。低版本的 biblatex 直接重定义命令 `\multinamedelim` 和 `\finalnamedelim`,高版本的 biblatex 可以使用分隔符环境,这样可以在标注、文献表等不同位置直接使用不同的分隔符,而不像低版本 biblatex 那样只能在不同的位置修改局部定义。比如:
-```
+```tex
\DeclareDelimFormat[bib]{multinamedelim}{\addspace and \addspace}
\DeclareDelimFormat[bib]{finalnamedelim}{\addspace and \addspace}
\DeclareDelimFormat[cite]{multinamedelim}{\addcomma\addspace}
@@ -856,7 +875,7 @@
* <b>请问如何使文献表中文献标题的是句首字母大写而其它所有字母均小写?</b>
-默认情况下,biblatex-gb7714-2015仅对标题首字母做调整,使其变成为大写,而其他字母大小写不做处理,因此要得到想要的字母大小写格式,需要在bib文件输入参考文献信息时给出需要的除首字母外的其它字母的大小写格式。
+默认情况下,biblatex-gb7714-2015 仅对标题首字母做调整,使其变成为大写,而其他字母大小写不做处理,因此要得到想要的字母大小写格式,需要在 bib 文件输入参考文献信息时给出需要的除首字母外的其它字母的大小写格式。
若有特殊情况,需要首字母为小写,可采用如下两种方法:
@@ -864,15 +883,15 @@
`{\MakeLowercase i}FogSim title contents`
-(2)修改titlecase域格式,即将如下命令放到导言区中,放在biblatex宏包加载命令后面
+(2)修改 titlecase 域格式,即将如下命令放到导言区中,放在 biblatex 宏包加载命令后面
-```
+```tex
\DeclareFieldFormat{titlecase}{\iftoggle{bbx:titlelink}{%
\iffieldundef{url}{#1}{%
\href{\thefield{url}}{#1}}}{#1}}%重设标题格式,将去除首字母大写
```
-注意:v1.1g版本后不再默认修改标题的字母大小写,若需要修改可以手动修改bib文件,若需要批量修改,可以使用[bibmap](https://github.com/hushidong/biblatex-map/)工具。
+注意:v1.1g 版本后不再默认修改标题的字母大小写,若需要修改可以手动修改 bib 文件,若需要批量修改,可以使用 [bibmap](https://github.com/hushidong/biblatex-map/) 工具。
@@ -879,8 +898,8 @@
* <b>请问如何使文献表中的期刊名是单词首字母大写的?</b>
-默认情况下,biblatex-gb7714-2015不对期刊名的字母大小写做处理,
-因此需要在bib文件输入参考文献信息时给出需要的大小写格式。
+默认情况下,biblatex-gb7714-2015 不对期刊名的字母大小写做处理,
+因此需要在 bib 文件输入参考文献信息时给出需要的大小写格式。
@@ -887,23 +906,31 @@
* <b>我想得到中英文对照的双语参考文献,请问该如何处理?</b>
-biblatex-gb7714-2015设计了两种多语言对照参考文献的实现方式,
+biblatex-gb7714-2015 设计了两种多语言对照参考文献的实现方式,
一种是利用条目集的概念,另一种是利用关联条目的概念。
因此有两种方法:
(1)方法一,动态定义条目集:
在导言区或正文中定义:
-```\defbibentryset{易仕和,等,2013}{易仕和2013--,Yi2013--}```
+```tex
+\defbibentryset{易仕和,等,2013}{易仕和2013--,Yi2013--}
+```
在正文中引用:
-```双语文献引用\cite{易仕和,等,2013}```
+```tex
+双语文献引用\cite{易仕和,等,2013}
+```
(2)方法二,动态定义关联条目:
在导言区定义:
-```\defdoublelangentry{易仕和2013--}{Yi2013--}```
+```tex
+\defdoublelangentry{易仕和2013--}{Yi2013--}
+```
在正文中引用:
-```双语文献引用\cite{易仕和2013--}```
+```tex
+双语文献引用\cite{易仕和2013--}
+```
@@ -911,12 +938,12 @@
* <b>我想修改文献条目的日期项诸如格式,请问该如何处理?</b>
参考文献中日期格式主要有四种修改方式:
-(1) 利用biblatex选项全局的修改日期格式
+(1) 利用 biblatex 选项全局的修改日期格式
(2) 修改日期输出宏,使根据条目类型输出不同的日期格式
(3) 修改日期输出宏,使根据具体条目输出不同的日期格式
(4) 修改参考文献信息,使当前条目原样输出需要的格式
-具体示例见:[biblatex中如何修改参考文献中日期的著录格式](https://blog.csdn.net/xenonhu/article/details/86933525)
+具体示例见:[biblatex 中如何修改参考文献中日期的著录格式](https://blog.csdn.net/xenonhu/article/details/86933525)
* <b>我希望将文献表中期刊文献的卷和期使用加粗格式,请问该如何处理?</b>
@@ -923,7 +950,7 @@
调整其域格式输出即可,比如:
-```
+```tex
\DeclareFieldFormat[article,periodical]{volume}{\textbf{#1}}
\DeclareFieldFormat[article,periodical]{number}{\textbf{#1}}
```
@@ -931,14 +958,14 @@
见:[issue](https://github.com/sjtug/SJTUThesis/issues/580)
-#### 4.3 Citation format/正文引用的标注格式
+#### 4.3 Citation Format/正文引用的标注格式
* <b>我希望在正文中同时使用上标和非上标的引用标签,请问该怎么操作?</b>
可以使用不同的命令来实现上标和非上标的标签,
-上标标签的命令为`\cite{bibtexkey}` ,非上标标签的命令为 `\parencite{bibtexkey}`。
-当希望上标的标签也给出国标要求的页码时,则可以使用`\cite[50-55]{bibtexkey}`、`\pagescite[50-55]{bibtexkey}`给出指定页码 或者`\pagescite{bibtexkey}` 直接使用bib文件中的页码。
+上标标签的命令为 `\cite{bibtexkey}` ,非上标标签的命令为 `\parencite{bibtexkey}`。
+当希望上标的标签也给出国标要求的页码时,则可以使用 `\cite[50-55]{bibtexkey}`、`\pagescite[50-55]{bibtexkey}` 给出指定页码 或者 `\pagescite{bibtexkey}` 直接使用 bib 文件中的页码。
@@ -945,15 +972,15 @@
* <b>我在引用文献时已经给出作者信息,希望引用标签仅包含年份和页码信息或者仅包含年份信息时,该怎么操作?</b>
- 需要给出年份的标签是作者年制的标签,可以使用命令`\yearpagescite{bibtexkey}`给出包含年份和页码信息的标签,
- 使用命令`\yearcite{bibtexkey}`给出仅包含年份的标签。
+ 需要给出年份的标签是作者年制的标签,可以使用命令 `\yearpagescite{bibtexkey}` 给出包含年份和页码信息的标签,
+ 使用命令 `\yearcite{bibtexkey}` 给出仅包含年份的标签。
-* <b>中文文档中,引用标注标签在一个句子中时,标签的`]`后面与中文字符之间存在一个空格,怎么消除?</b>
+* <b>中文文档中,引用标注标签在一个句子中时,标签的 `]` 后面与中文字符之间存在一个空格,怎么消除?</b>
在引用命令后面加一个没有长度的空白即可,比如:
-```
+```tex
中文字符\cite{sally_history_1985}\mbox{}中文字符
中文字符\cite{sally_history_1985}\hbox{}中文字符
@@ -964,7 +991,7 @@
```
-* <b>在使用作者年制时,我希望文献表是按作者年份标题排序,而正文某处一个cite命令引用多个参考文献,且这些文献的标签是按年份作者标题排序,该怎么操作?</b>
+* <b>在使用作者年制时,我希望文献表是按作者年份标题排序,而正文某处一个 `\cite` 命令引用多个参考文献,且这些文献的标签是按年份作者标题排序,该怎么操作?</b>
有两种方法:
@@ -972,115 +999,131 @@
宏包加载时使用:
-```\usepackage[backend=biber,style=gb7714-2015ay,sortcites,sorting=ynt]{biblatex}```
+```tex
+\usepackage[backend=biber,style=gb7714-2015ay,sortcites,sorting=ynt]{biblatex}
+```
正文中引用:
-```\cite{refa2010,refb2008,refc2009}```
+```tex
+\cite{refa2010,refb2008,refc2009}
+```
然后在文献打印前加
-```\newrefcontext[sorting=gb7714-2015]```
+```tex
+\newrefcontext[sorting=gb7714-2015]
+```
(2) 二是手动给出排序
宏包加载时使用
-```\usepackage[backend=biber,style=gb7714-2015ay,sortcites=false]{biblatex}```
+```tex
+\usepackage[backend=biber,style=gb7714-2015ay,sortcites=false]{biblatex}
+```
引用多个文献时按照年份顺序给出引用关键字,即正文中引用:
-```\cite{refb2008,refc2009,refa2010}```
+```tex
+\cite{refb2008,refc2009,refa2010}
+```
- 参考:[issue:citation的顺序和bibliography的顺序如何不关联](https://github.com/hushidong/biblatex-gb7714-2015/issues/30)
+ 参考 [issue: citation 的顺序和 bibliography 的顺序如何不关联](https://github.com/hushidong/biblatex-gb7714-2015/issues/30)
* <b>在使用作者年制时,我希望文献表同一位置引用同一作者的不同的文献实现作者姓名的压缩,该怎么操作?</b>
-可以通过将gb7714-2015ay.cbx 中的引用的基础样式authoryear更换成authoryear-comp。
+可以通过将 gb7714-2015ay.cbx 中的引用的基础样式 authoryear 更换成 authoryear-comp。
-* <b>请问希望正文中作者年制的标注(引用)标签中作者数量超过国标规定的1个时,该怎么处理?</b>
+* <b>请问希望正文中作者年制的标注(引用)标签中作者数量超过国标规定的 1 个时,该怎么处理?</b>
-可通过设置选项maxcitenames,mincitenames实现,比如下面的设置用于显示5个作者:
+可通过设置选项 maxcitenames,mincitenames 实现,比如下面的设置用于显示 5 个作者:
-```\usepackage[backend=biber,style=gb7714-2015ay,maxcitenames=5,mincitenames=5]{biblatex}```
+```tex
+\usepackage[backend=biber,style=gb7714-2015ay,maxcitenames=5,mincitenames=5]{biblatex}
+```
-
-* <b>请问希望正文中作者年制的标注(引用)标签中作者数量只能是1个,而不管是否存在歧义时,该怎么处理?</b>
+* <b>请问希望正文中作者年制的标注(引用)标签中作者数量只能是 1 个,而不管是否存在歧义时,该怎么处理?</b>
-可通过设置选项uniquelist=false实现,该设置标签中的作者只会是指定的1个:
+可通过设置选项 `uniquelist=false` 实现,该设置标签中的作者只会是指定的 1 个:
-```\usepackage[backend=biber,style=gb7714-2015ay,uniquelist=false]{biblatex}```
+```tex
+\usepackage[backend=biber,style=gb7714-2015ay,uniquelist=false]{biblatex}
+```
-
-* <b>请问希望正文中作者年制的标注(引用)标签希望作者给出3个,而且最后一个作者的前面用和及&符号链接,该怎么处理?</b>
+* <b>请问希望正文中作者年制的标注(引用)标签希望作者给出 3 个,而且最后一个作者的前面用和及 & 符号链接,该怎么处理?</b>
-首先设置标注标签中的作者的最大数量为3个:
+首先设置标注标签中的作者的最大数量为 3 个:
-```\usepackage[backend=biber,style=gb7714-2015ay,maxcitenames=3]{biblatex}```
+```tex
+\usepackage[backend=biber,style=gb7714-2015ay,maxcitenames=3]{biblatex}
+```
然后修改标注中的本地化字符串:
-```
+```tex
\DefineBibliographyStrings{english}{
- andincitecn = {\str at andcn},%将标注中的分开,便于与文献表中的区分
+ andincitecn = {\str at andcn},% 将标注中的分开,便于与文献表中的区分
andincite = {\&}}
```
-最后重新定义finalandcomma标点,注意这里与语言相关的标点,需要用DefineBibliographyExtras命令定义。
+最后重新定义 `\finalandcomma` 标点,注意这里与语言相关的标点,需要用 `\DefineBibliographyExtras` 命令定义。
-```
+```tex
\DefineBibliographyExtras{english}{\def\finalandcomma{}}%
```
-
-
+
-
-* <b>请问希望正文中作者年制的标注(引用)标签中作者数量只能是1个,且只用其作者的姓而不管是否存在歧义时,该怎么处理?</b>
+* <b>请问希望正文中作者年制的标注(引用)标签中作者数量只能是 1 个,且只用其作者的姓而不管是否存在歧义时,该怎么处理?</b>
-可通过设置选项uniquelist=false, uniquename=false实现,该设置标签中的作者只会是指定的1个且只用该作者的姓:
+可通过设置选项 `uniquelist=false`, `uniquename=false` 实现,该设置标签中的作者只会是指定的 1 个且只用该作者的姓:
-```\usepackage[backend=biber,style=gb7714-2015ay,uniquelist=false,uniquename=false]{biblatex}```
+```tex
+\usepackage[backend=biber,style=gb7714-2015ay,uniquelist=false,uniquename=false]{biblatex}
+```
-
-
* <b>请问上标的标注(引用)标签过长导致行溢出,该怎么处理?</b>
上标的标注与行内的标注不一样,因此采用了上标的处理,所以上标的标注无法自动断行,因此在页边附近的长标注很有可能会溢出。由于上标标注的断行国标中并没有什么明确要求和说明,因此只能按照自己的方式进行处理,通常是将一个长标注手动分成两个短的标注,比如将:
-```\cite{key1,key2,key3,key4,key5,key6,key7}```
+```tex
+\cite{key1,key2,key3,key4,key5,key6,key7}
+```
变换成:
-```\cite{key1,key2,key3}\linebreak\cite{key4,key5,key6,key7}```
+```tex
+\cite{key1,key2,key3}\linebreak\cite{key4,key5,key6,key7}
+```
-如果两个cite之间还需要增加一个上标的逗号,那么可以手动处理比如增加`\textsuperscript{,}`
+如果两个 cite 之间还需要增加一个上标的逗号,那么可以手动处理比如增加 `\textsuperscript{,}`
-* <b>在顺序编码制标签中,希望数字编码从两个连续编码就开始压缩,比如[1,2]压缩成[1-2],该怎么处理?</b>
+* <b>在顺序编码制标签中,希望数字编码从两个连续编码就开始压缩,比如 [1,2] 压缩成 [1-2],该怎么处理?</b>
-biblatex中处理顺序数字编码压缩的代码默认从3个连续编码开始压缩,比如[1,2,3]压缩成[1-3]。如果要修改为从2个连续编码开始压缩,只需要做一个很简单的修改即可:
+biblatex 中处理顺序数字编码压缩的代码默认从 3 个连续编码开始压缩,比如 [1,2,3] 压缩成 [1-3]。如果要修改为从 2 个连续编码开始压缩,只需要做一个很简单的修改即可:
-```
-%该宏的目的是抛弃压缩内部的编号,而仅输出最后一个编号,主要通过cbx at tempcnta来控制
-%一般情况下cbx at tempcnta为0,所以该宏不输出任何内容。当cbx at tempcnta在cite:comp:comp宏中更改变大后
-%说明开始进入需要压缩的范围,当到压缩终点时,cbx at tempcnta必然大于1,则输出内容。
-%修改第二行的数字1为0即可将默认的3个开始压缩变为2个开始压缩。
+```tex
+% 该宏的目的是抛弃压缩内部的编号,而仅输出最后一个编号,主要通过 cbx at tempcnta 来控制
+% 一般情况下 cbx at tempcnta 为 0,所以该宏不输出任何内容。当 cbx at tempcnta在cite:comp:comp 宏中更改变大后
+% 说明开始进入需要压缩的范围,当到压缩终点时,cbx at tempcnta 必然大于 1,则输出内容。
+% 修改第二行的数字 1 为 0 即可将默认的 3 个开始压缩变为 2 个开始压缩。
\renewbibmacro*{cite:dump}{
\ifnumgreater{\value{cbx at tempcnta}}{0}
- {\ifnumgreater{\value{cbx at tempcnta}}{1}%1改为0,可以将压缩起始3个编号改为2个编号
+ {\ifnumgreater{\value{cbx at tempcnta}}{1} % 1 改为 0,可以将压缩起始 3 个编号改为 2 个编号
{\bibrangedash}
{\multicitedelim}%
\bibhyperref[\cbx at lastkey]{%
@@ -1093,22 +1136,22 @@
\global\undef\cbx at lastprefix}
```
-反之,从两个开始压缩改成3个连续压缩,方法是类似的,就是将中的0改回1。
+反之,从两个开始压缩改成 3 个连续压缩,方法是类似的,就是将中的 0 改回 1。
-* <b>在顺序编码制标签中,希望修改编码压缩之间的符号,比如[1-2]变为[1~2],该怎么处理?</b>
+* <b>在顺序编码制标签中,希望修改编码压缩之间的符号,比如 [1-2] 变为 [1~2],该怎么处理?</b>
-使用最新版本的biblatex (v3.15以后)可以直接定义如下标点:
-```
+使用最新版本的 biblatex (v3.15 以后)可以直接定义如下标点:
+```tex
\renewcommand{\multiciterangedelim}{$\sim$}
```
对于老版本可以修改宏,注意其中的注释
-```
+```tex
\renewbibmacro*{cite:dump}{
\ifnumgreater{\value{cbx at tempcnta}}{0}
- {\ifnumgreater{\value{cbx at tempcnta}}{1}%1改为0,可以将压缩起始3个编号改为2个编号
- {$\sim$}%压缩的链接标点修改\bibrangedash
+ {\ifnumgreater{\value{cbx at tempcnta}}{1} % 1 改为 0,可以将压缩起始 3 个编号改为 2 个编号
+ {$\sim$}% 压缩的链接标点修改 \bibrangedash
{\multicitedelim}%
\bibhyperref[\cbx at lastkey]{%
\ifdef\cbx at lastprefix
@@ -1125,9 +1168,9 @@
* <b>在正文中的某一部分,希望取消顺序编码标签中的压缩,而其他部分保持这种压缩,该怎么处理?</b>
-顺序数字编码压缩的代码,主要有cite:comp:comp宏控制,因此需要局部取消压缩,可以局部的修改该宏。修改很简单,只需要注释掉其中的一行,在需要取消压缩的环境中,重定义该宏,比如:
+顺序数字编码压缩的代码,主要有 cite:comp:comp 宏控制,因此需要局部取消压缩,可以局部的修改该宏。修改很简单,只需要注释掉其中的一行,在需要取消压缩的环境中,重定义该宏,比如:
-```
+```tex
\renewbibmacro*{cite:comp:comp}{%
\ifboolexpr{
( test {\iffieldundef{labelprefix}} and test {\ifundef\cbx at lastprefix} )
@@ -1148,7 +1191,7 @@
\printfield{labelprefix}%
\printfield{labelnumber}}}}}
{\usebibmacro{cite:comp:end}}%
- %\setcounter{cbx at tempcntb}{\thefield{labelnumber}}%%注释该行,以取消压缩
+ %\setcounter{cbx at tempcntb}{\thefield{labelnumber}}% 注释该行,以取消压缩
\savefield{labelprefix}{\cbx at lastprefix}}
```
@@ -1362,9 +1405,10 @@
-  测试不同域中存在的特殊字符处理
-  测试GB/T7714-1987标准的样式
-  测试GB/T7714-2005标准的样式
- 测试标注中本地化字符串、标点的中英文切换
-  测试标点中英文切换
-  测试著者-出版年制联机网络文献的“出版年”
+ -  测试著者-出版年制期刊析出文献出版年与卷和期之间的间隔符,特别当某些项缺失时
+
@@ -1614,10 +1658,14 @@
* 2023/09/10 v1.1o,ctan,github
* 2024/02/10 v1.1p,ctan,github
* 2024/03/27 v1.1q,ctan,github
+* 2024/05/15 v1.1r,ctan,github
+* 2024/11/15 v1.1s,ctan,github
+
+
---------------------------------------------------------
## Update history:
Modified: trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.tex 2024-11-15 22:11:40 UTC (rev 72862)
+++ trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/biblatex-gb7714-2015.tex 2024-11-15 22:11:57 UTC (rev 72863)
@@ -538,8 +538,16 @@
\caption{文献表作者缺失处理选项gbnoauthor效果}\label{fig:eg:optgbnoauthor}
\end{figure}
+ \pdfbookmark[4]{gbnosameeditor}{gbnosameeditor}
+ \item[gbnosameeditor]=true,\textbf{false}. \hfill default is false
+ 用于控制inbook,incollection等类型中bookauthor/editor与author相同时是否输出bookauthor/editor。
+ \begin{itemize}
+ \item gbnosameeditor=false,默认方式,正常输出;
+ \item gbnosameeditor=true,不输出。
+ \end{itemize}
+
\pdfbookmark[4]{gbnoothers}{gbnoothers}
\item[gbnoothers]=true,\textbf{false}. \hfill default is false
@@ -1112,12 +1120,12 @@
将会为author2007en,author2014en两个条目添加nameformat域信息。
该命令也只能出现在导言区中。
-
+
\pdfbookmark[4]{delEntryField}{delEntryField}
\item[delEntryField] \{entrykey or entrykey comma list\}\{field\}
用于给指定的文献条目(集)删除域。即将指定的entrykey 条目或者entrykey comma list 中的各个条目中的 field 域删除。
-
+
\verb|\delEntryField{author2007en,author2014en}{usera}|
将会把author2007en,author2014en两个条目中usera域信息删除。
Modified: trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example.bib
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example.bib 2024-11-15 22:11:40 UTC (rev 72862)
+++ trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example.bib 2024-11-15 22:11:57 UTC (rev 72863)
@@ -888,7 +888,7 @@
@Article{Dowler1995-5-26,
author = {Dowler, L},
- title = {The research university’s dilemma: resource sharing and research in a transinstitutional environment},
+ title = {The research university's dilemma: resource sharing and research in a transinstitutional environment},
journal = {Journal of library administration},
year = {1995},
volume = {21},
@@ -1655,6 +1655,8 @@
urldate = {2012-03-27},
}
+
+
@Online{Hopkinson2009--,
author = {Hopkinson, A},
title = {{UNIMARC} and Metadata: Dublin Core},
@@ -3671,14 +3673,16 @@
@Article{刘裕国2013-01-12--,
Title = {雾霾来袭,如何突围},
- Author = {刘裕国 and 杨柳 and 张洋 and OTHERS},
+ Author = {刘裕国 and 杨柳 and 张洋 and 王, 汉超 and 靳, 博 and 田, 豆豆 and 付, 文},
Journal = {人民日报},
Note = {news},
- Url = {http://paper.people.com.cn},
+ url = {http://paper.people.com.cn/rmrb/html/2013-01/12/nw.D110000renmrb_20130112_2-04.htm},
Urldate = {2013-11-06},
Year = {2013-01-12}
}
+
+
@Report{中华人民共和国国务院新闻办公室2013-04-16--,
Title = {国防白皮书:中国武装力量的多样化运用},
Author = {中华人民共和国国务院新闻办公室},
Modified: trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makeall.py
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makeall.py 2024-11-15 22:11:40 UTC (rev 72862)
+++ trunk/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/makeall.py 2024-11-15 22:11:57 UTC (rev 72863)
@@ -8,7 +8,7 @@
import subprocess
-def compileall():
+def compileall(task='all'): #'all','compare'
print(os.linesep)#这些都是字符串
print(os.sep)
print(os.pathsep)
@@ -17,180 +17,200 @@
print(os.getcwd())
print(os.listdir(path='.'))
-
- pwd=os.getcwd()
- filesneedcopy=['gb7714-CCNU.bbx','gb7714-CCNU.cbx','gb7714-NWAFU.bbx','gb7714-NWAFU.cbx','gb7714-SEU.bbx','gb7714-SEU.cbx',
- 'chinese-erj.bbx','chinese-erj.cbx','chinese-css.bbx','chinese-css.cbx',
- 'chinese-jmw.bbx','chinese-jmw.cbx',
- 'example.bib', 'gb7714-1987.bbx', 'gb7714-1987.cbx',
- 'gb7714-1987ay.bbx', 'gb7714-1987ay.cbx', 'gb7714-2005.bbx', 'gb7714-2005.cbx', 'gb7714-2005ay.bbx',
- 'gb7714-2005ay.cbx', 'gb7714-2015-gbk.def', 'gb7714-2015.bbx', 'gb7714-2015.cbx', 'gb7714-2015ay.bbx',
- 'gb7714-2015ay.cbx', 'gb7714-2015ms.bbx', 'gb7714-2015ms.cbx', 'gb7714-2015mx.bbx', 'gb7714-2015mx.cbx']
+ if task=='all':
+ pwd=os.getcwd()
+ filesneedcopy=['gb7714-CCNU.bbx','gb7714-CCNU.cbx','gb7714-NWAFU.bbx','gb7714-NWAFU.cbx','gb7714-SEU.bbx','gb7714-SEU.cbx',
+ 'chinese-erj.bbx','chinese-erj.cbx','chinese-css.bbx','chinese-css.cbx',
+ 'chinese-jmw.bbx','chinese-jmw.cbx','chinese-cajhss.bbx','chinese-cajhss.cbx',
+ 'example.bib', 'gb7714-1987.bbx', 'gb7714-1987.cbx',
+ 'gb7714-1987ay.bbx', 'gb7714-1987ay.cbx', 'gb7714-2005.bbx', 'gb7714-2005.cbx', 'gb7714-2005ay.bbx',
+ 'gb7714-2005ay.cbx', 'gb7714-2015-gbk.def', 'gb7714-2015.bbx', 'gb7714-2015.cbx', 'gb7714-2015ay.bbx',
+ 'gb7714-2015ay.cbx', 'gb7714-2015ms.bbx', 'gb7714-2015ms.cbx', 'gb7714-2015mx.bbx', 'gb7714-2015mx.cbx']
- filelatexext=[".aux", ".bbl", ".blg", ".log", ".out", ".toc", ".bcf",
- ".xml", ".synctex", ".nlo", ".nls", ".bak", ".ind", ".idx",
- ".ilg", ".lof", ".lot", ".ent-x", ".tmp", ".ltx", ".los",
- ".lol", ".loc", ".listing", ".gz", ".userbak", ".nav", ".snm", ".vrb",
- ".fls", ".xdv", ".fdb_latexmk"]
+ filelatexext=[".aux", ".bbl", ".blg", ".log", ".out", ".toc", ".bcf",
+ ".xml", ".synctex", ".nlo", ".nls", ".bak", ".ind", ".idx",
+ ".ilg", ".lof", ".lot", ".ent-x", ".tmp", ".ltx", ".los",
+ ".lol", ".loc", ".listing", ".gz", ".userbak", ".nav", ".snm", ".vrb",
+ ".fls", ".xdv", ".fdb_latexmk"]
-
- #复制相关文件
- dirlst=os.listdir()
- subdirlst=[]
- for elem in dirlst:
- #print('elem=',elem)
- if os.path.isdir(elem) and elem != ".git" and elem != "tool":
- subdir=pwd+os.sep+elem
- subdirlst.append(subdir)
- for file in filesneedcopy:
- shutil.copyfile(pwd+os.sep+file,subdir+os.sep+file)
- print(subdir+os.sep+file+' ... copied')
-
-
- #进入相关文件夹进行编译
- for dirname in ["example","egthesis","egphoto","egfigure","tool"]: #
- subdir=pwd+os.sep+dirname
- os.chdir(subdir)
- pwd=os.getcwd()
- print('pwd=',pwd)
- print(os.listdir())
-
- #利用pathlib以及通配符搜索来备份文件
- if dirname=="tool":
- pf1=pathlib.Path('.').glob("*.userbak")
- pf=[str(x) for x in pf1]
- print('pf=',pf)
- if pf:
- for file in pf:
- os.remove(pwd+os.sep+file)
- pf1=pathlib.Path('.').glob("gb*.pdf")
- pf=[str(x) for x in pf1]
- print('pf=',pf)
- if pf:
- for file in pf:
- shutil.copyfile(pwd+os.sep+file,pwd+os.sep+file+".userbak")
- os.remove(pwd+os.sep+file)
-
- #--------编译latex---------
- if dirname=="example":
- texlivestr=str(subprocess.check_output(["tex","--version"]))
- print(texlivestr)
- s=re.search(".*Copyright\s(\d*)\sD.E. Knuth.*",texlivestr)
- print(s)
- texlivever=int(s.group(1))
- print(texlivever)
+ #复制相关文件
+ dirlst=os.listdir()
+ subdirlst=[]
+ for elem in dirlst:
+ #print('elem=',elem)
+ if os.path.isdir(elem) and elem != ".git" and elem != "tool":
+ subdir=pwd+os.sep+elem
+ subdirlst.append(subdir)
+ for file in filesneedcopy:
+ shutil.copyfile(pwd+os.sep+file,subdir+os.sep+file)
+ print(subdir+os.sep+file+' ... copied')
+
- if dirname=="example" and texlivever>2020:
- fileuniset=["test*.tex","cls*.tex","opt*.tex","eg*.tex","tgb*.tex","thesis*.tex","gbt*.tex"]
- else:
- fileuniset=["test*.tex","cls*.tex","opt*.tex","code*.tex","eg*.tex","tgb*.tex","thesis*.tex","gbt*.tex"]
+ #进入相关文件夹进行编译
+ for dirname in ["egstyle","example","egthesis","egphoto","egfigure","tool"]: #
+ subdir=pwd+os.sep+dirname
+ os.chdir(subdir)
+ pwd=os.getcwd()
+ print('pwd=',pwd)
+ print(os.listdir())
- for fileuni in fileuniset:
- pf1=pathlib.Path('.').glob(fileuni)
- pf=[str(x) for x in pf1]
- print('pf=',pf)
- if pf:
- for file in pf:
- print('---------compile new file:---------')
- print('file=',file)
- print('file=',os.path.splitext(file))
- jobname=os.path.splitext(file)[0]
- #删除辅助文件
- for fileext in filelatexext:
- fileaux=pwd+os.sep+jobname+fileext
- if os.path.exists(fileaux):
- os.remove(fileaux)
- #latex编译
- latexcmd="xelatex"
- if dirname =="example" and re.match("code",file):
- latexcmd="pdflatex"
- if dirname !="tool":
- subprocess.run([latexcmd,"-no-pdf",file])
- subprocess.run(["biber",jobname])
- subprocess.run([latexcmd,file])
- else:
- subprocess.run([latexcmd,file]) # 插入pdf的pdfpages宏包要使用目录,需要两次编译
- subprocess.run([latexcmd,file])
-
- #根据biber的版本区别编译文档
- if dirname=="egfigure":
- biberversion=str(subprocess.check_output(["biber", "--version"]))
- print(biberversion)
- vernumstr=biberversion.split(".")[1]
- s=re.search('(\d*).*',vernumstr)
- vernum=int(s.group(1))
- if vernum>=13:
- jobname="tngbcitationaynew"
- else:
- jobname="tngbcitationay"
- print('---------compile new file:---------')
- print('file=',jobname)
- subprocess.run(["xelatex", "-no-pdf",jobname])
- subprocess.run(["biber",jobname])
- subprocess.run(["xelatex",jobname])
-
- if dirname=="tool":
- try:
- import diff_pdf_visually
- except ImportError:
- print("there is no module: diff_pdf_visually")
- else:
- pf1=pathlib.Path('.').glob("gbT*.pdf")
+ #利用pathlib以及通配符搜索来备份文件
+ if dirname=="tool":
+ pf1=pathlib.Path('.').glob("*.userbak")
pf=[str(x) for x in pf1]
print('pf=',pf)
if pf:
for file in pf:
- if file != "gbT7714-2015ms.pdf":
- print("------------compare pdf------")
- print("file:",file,"std"+file)
- diff_pdf_visually.pdfdiff(file,"std"+file)
+ os.remove(pwd+os.sep+file)
+ pf1=pathlib.Path('.').glob("gb*.pdf")
+ pf=[str(x) for x in pf1]
+ print('pf=',pf)
+ if pf:
+ for file in pf:
+ shutil.copyfile(pwd+os.sep+file,pwd+os.sep+file+".userbak")
+ os.remove(pwd+os.sep+file)
- #--------编译latex结束---------
- os.chdir(os.pardir)
- pwd=os.getcwd()
- print('pwd=',pwd)
+ #--------编译latex---------
+
+ if dirname=="example":
+ texlivestr=str(subprocess.check_output(["tex","--version"]))
+ print(texlivestr)
+ s=re.search(".*Copyright\s(\d*)\sD.E. Knuth.*",texlivestr)
+ print(s)
+ texlivever=int(s.group(1))
+ print(texlivever)
- #主目录文档编译
- jobname="biblatex-gb7714-2015"
- subprocess.run(["xelatex","-no-pdf",jobname])
- subprocess.run(["biber",jobname])
- subprocess.run(["xelatex","--synctex=-1",jobname])
-
-
- #删除相关文件
- dirlst=os.listdir()
- subdirlst=[]
- for elem in dirlst:
- #print('elem=',elem)
- if os.path.isdir(elem):
- subdir=pwd+os.sep+elem
- os.chdir(subdir)
- pwd=os.getcwd()
- print('pwd=',pwd)
-
- if elem=="tool":
- fileextadd=[".bbx",".cbx",".def"]
+ if dirname=="example" and texlivever>2020:
+ fileuniset=["test*.tex","cls*.tex","opt*.tex","eg*.tex","tgb*.tex","thesis*.tex","gbt*.tex"]
else:
- fileextadd=[".bbx",".cbx",".def",".bib"]
+ fileuniset=["test*.tex","cls*.tex","opt*.tex","code*.tex","eg*.tex","tgb*.tex","thesis*.tex","gbt*.tex"]
- for fileext in filelatexext+fileextadd:
- pf1=pathlib.Path('.').glob("*"+fileext)
+ for fileuni in fileuniset:
+ pf1=pathlib.Path('.').glob(fileuni)
pf=[str(x) for x in pf1]
print('pf=',pf)
if pf:
for file in pf:
- fileaux=pwd+os.sep+file
- os.remove(fileaux)
- print(fileaux+" ... removed")
-
+ print('---------compile new file:---------')
+ print('file=',file)
+ print('file=',os.path.splitext(file))
+ jobname=os.path.splitext(file)[0]
+ #删除辅助文件
+ for fileext in filelatexext:
+ fileaux=pwd+os.sep+jobname+fileext
+ if os.path.exists(fileaux):
+ os.remove(fileaux)
+ #latex编译
+ latexcmd="xelatex"
+ if dirname =="example" and re.match("code",file):
+ latexcmd="pdflatex"
+ if dirname !="tool":
+ subprocess.run([latexcmd,"-no-pdf",file])
+ subprocess.run(["biber",jobname])
+ subprocess.run([latexcmd,file])
+ else:
+ subprocess.run([latexcmd,file]) # 插入pdf的pdfpages宏包要使用目录,需要两次编译
+ subprocess.run([latexcmd,file])
+
+ #根据biber的版本区别编译文档
+ if dirname=="egfigure":
+ biberversion=str(subprocess.check_output(["biber", "--version"]))
+ print(biberversion)
+ vernumstr=biberversion.split(".")[1]
+ s=re.search('(\d*).*',vernumstr)
+ vernum=int(s.group(1))
+ if vernum>=13:
+ jobname="tngbcitationaynew"
+ else:
+ jobname="tngbcitationay"
+ print('---------compile new file:---------')
+ print('file=',jobname)
+ subprocess.run(["xelatex", "-no-pdf",jobname])
+ subprocess.run(["biber",jobname])
+ subprocess.run(["xelatex",jobname])
+
+ #--------编译latex结束---------
os.chdir(os.pardir)
pwd=os.getcwd()
print('pwd=',pwd)
-
- print("compile all ended!")
+ #主目录文档编译
+ jobname="biblatex-gb7714-2015"
+ subprocess.run(["xelatex","-no-pdf",jobname])
+ subprocess.run(["biber",jobname])
+ subprocess.run(["xelatex","--synctex=-1",jobname])
+
+ #删除相关文件
+ dirlst=os.listdir()
+ subdirlst=[]
+ for elem in dirlst:
+ #print('elem=',elem)
+ if os.path.isdir(elem):
+ subdir=pwd+os.sep+elem
+ os.chdir(subdir)
+ pwd=os.getcwd()
+ print('pwd=',pwd)
+
+ if elem=="tool":
+ fileextadd=[".bbx",".cbx",".def"]
+ else:
+ fileextadd=[".bbx",".cbx",".def",".bib"]
+
+ for fileext in filelatexext+fileextadd:
+ pf1=pathlib.Path('.').glob("*"+fileext)
+ pf=[str(x) for x in pf1]
+ print('pf=',pf)
+ if pf:
+ for file in pf:
+ fileaux=pwd+os.sep+file
+ os.remove(fileaux)
+ print(fileaux+" ... removed")
+
+ os.chdir(os.pardir)
+ pwd=os.getcwd()
+ print('pwd=',pwd)
+
+ print("compile all ended!")
+
+
+ if task=='all' or task=='compare':
+
+ pwd=os.getcwd()
+ print(f'{pwd}')
+ subdir=pwd+os.sep+'tool'
+ os.chdir(subdir)
+ pwd=os.getcwd()
+ print('pwd=',pwd)
+ try:
+ import diff_pdf_visually
+ except ImportError:
+ print("there is no module: diff_pdf_visually")
+ else:
+ pf1=pathlib.Path('.').glob("gbT*2015.pdf")
+ pf=[str(x) for x in pf1]
+ print('pf=',pf)
+ if pf:
+ for file in pf:
+ if file != "gbT7714-2015ms.pdf":
+ print("------------compare pdf------")
+ print("file:",file,"std"+file)
+ diff_pdf_visually.pdfdiff(file,"std"+file)
+
+
+ #利用diff-pdf来给出比较
+ print('compare with diff-pdf')
+ appdir="D:/msys64/home/hzz/diff-pdf-win-0.5/diff-pdf.exe"
+ sourcedir="D:/work-latex/biblatex-gb7714-2015/biblatex-gb7714-2015-master/tool/"
+ #D:/msys64/home/hzz/diff-pdf-win-0.5/diff-pdf.exe --view
+ #D:/work-latex/biblatex-gb7714-2015/biblatex-gb7714-2015-master/tool/gbT7714-2015.pdf
+ #D:/work-latex/biblatex-gb7714-2015/biblatex-gb7714-2015-master/tool/stdgbT7714-2015.pdf
+ subprocess.run([appdir, "--view", sourcedir+"gbT7714-2015.pdf",sourcedir+"stdgbT7714-2015.pdf"],shell=True)
+
+
if __name__ == '__main__':
- compileall()
\ No newline at end of file
+ compileall()
+ #compileall('all')
+ #compileall('compare')
\ No newline at end of file
Added: trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhss.bbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhss.bbx (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhss.bbx 2024-11-15 22:11:57 UTC (rev 72863)
@@ -0,0 +1,1030 @@
+%%
+%% ---------------------------------------------------------------
+%% erj.bbx --- A bibliography style of comprehensive academic journal of humanities and social sciences in china
+%% modified from gb7714-2015ay
+%% Maintained by huzhenzhen
+%% E-mail: hzzmail at 163.com
+%% Released under the LaTeX Project Public License v1.3c or later
+%% history
+%% 2019/03/28 v1.0
+%% 2022/02/22 v1.0a
+%% ---------------------------------------------------------------
+%%
+%%用法:类似于标准的样式在biblatex加载时设置样式
+%%文献表正常处理,标注命令主要用cite和textcite
+\ProvidesFile{chinese-cajhss.bbx}[2024/09/12 v1.0a a biblatex bibliography style for ERJ]
+
+
+%==================================================
+%加载gb样式
+%==================================================
+\RequireBibliographyStyle{gb7714-2015ay}
+\RequirePackage{mfirstuc}%单词首字母大写的问题
+\MFUnocap{in}%
+\MFUnocap{the}%
+\MFUnocap{of}%
+\MFUnocap{on}%
+\MFUnocap{and}%
+\MFUnocap{for}%
+
+%
+% 增加一个控制标点是英文还是中文的选项
+% 20220222,v1.0a,hzz
+\DeclareBibliographyOption{gbpunctcn}[true]{%biblatex低版本
+ \ifstrequal{#1}{false}{\execerjpuncten}{}}
+
+
+%==================================================
+%考虑多音字增加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=givenahead,
+ gbpunctin=false,
+ gbfieldtype=true,
+ mergedate=none,
+ sorting=none,
+ doi=false,
+ %url=false,
+ }
+
+%==================================================
+%定义一些标点为中文全角标点
+%==================================================
+\def\gbpunctdot{。}%
+\def\gbpunctmark{、}%
+\def\gbpunctcomma{,}%
+\def\gbpunctcommalanen{\addcomma\addspace}%
+\def\gbpunctcolon{:}%
+\def\gbpunctcolonlanen{\addcolon\addspace}%
+\def\gbpunctsemicolon{;}%
+\def\gbpunctttl{《}%
+\def\gbpunctttr{》}
+\def\gbpunctprl{(}%
+\def\gbpunctprr{)}
+
+
+\def\execerjpuncten{%
+\def\gbpunctdot{\adddot}%
+\def\gbpunctmark{\addcomma\addspace}%
+\def\gbpunctcomma{\addcomma\addspace}%
+\def\gbpunctcommalanen{\addcomma\addspace}%
+\def\gbpunctcolon{\addcolon\addspace}%
+\def\gbpunctcolonlanen{\addcolon\addspace}%
+\def\gbpunctsemicolon{\addsemicolon\addspace}%
+\def\gbpunctttl{《}%
+\def\gbpunctttr{》}%
+}
+
+%==================================================
+%为标注和文献表中标点格式,重设and本地化字符串
+%==================================================
+\def\str at editorcn{编}
+\def\str at editorscn{编}
+\DefineBibliographyStrings{english}{
+ and = { and},%and后面的空格在finalnamedelim已经加过了,所以这里去掉20191009
+ andcn = {\gbpunctmark\unspace},%\gbpunctmark
+ andincitecn = {和},%将标注中的分开,便于与文献表中的区分
+ andincite = {\&},
+ incn={\str at incn},
+ %andotherscn={等},
+ %mathesiscn={[硕士学位论文]},
+ %phdthesiscn={[博士学位论文]},
+}
+
+
+%==================================================
+%设置一些标点格式为中文的标点
+%==================================================
+\DeclareFieldFormat{titlecase}{\iffieldequalstr{userd}{chinese}{#1}{\capitalisewords{#1}}}
+\DeclareFieldFormat*{title}{\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{#1\isdot}}
+\DeclareFieldFormat[book,collection]{title}{\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{\textit{#1}\isdot}}
+\DeclareFieldFormat[article,inproceedings,incollection]{title}{\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{\mkbibquote{#1}\isdot}}
+\DeclareFieldFormat*{journaltitle}{\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{\textit{#1}}}%
+\DeclareFieldFormat{booktitle}{%
+\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{\textit{#1}}}
+\renewcommand*{\revsdnamepunct}{\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\gbpunctcommalanen}}%%来源biblatex.def
+\DeclareDelimFormat*{multinamedelim}{\iffieldequalstr{userd}{chinese}{\gbpunctmark}{\gbpunctcommalanen}}%\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}{\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\gbpunctcommalanen}}%\addcomma\addspace
+\DeclareDelimFormat[bib,biblist]{nameyeardelim}{\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\gbpunctcommalanen}}%\addcomma\addspace
+
+\renewcommand*{\newunitpunct}{\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\gbpunctcommalanen}}%\addcomma\space %,
+\renewcommand*{\finentrypunct}{%
+\printdelim{finalpunct}}
+%调整标注的注释中的条目结尾标点
+\DeclareDelimFormat{finalpunct}{\iffieldequalstr{userd}{chinese}{\gbpunctdot}{\adddot}}
+\DeclareDelimFormat[fullinnercite]{finalpunct}{}
+
+
+\DeclareDelimFormat{bibpagespunct}{%
+\iffieldequalstr{userd}{chinese}{\unspace\gbpunctcomma}{\unspace\gbpunctcommalanen}}%
+
+%出版项中:出版社地址后面的标点
+\renewcommand{\publocpunct}{%
+\iffieldequalstr{userd}{chinese}{\gbpunctcolon}{\addcolon\addspace}}
+%调整出版社与年份之间的标点
+\renewcommand{\pubdatadelim}{%
+\iffieldequalstr{userd}{chinese}{\iffieldundef{year}{}{\setunit*{\gbpunctcomma}}}{\setunit*{\addcomma\space}}}%
+\renewcommand{\locnopubdelim}{%
+\iffieldequalstr{userd}{chinese}{\iffieldundef{year}{}{\setunit*{\gbpunctcomma}}}{\setunit*{\addcomma\space}}}%
+
+%编者与编者类型之间的标点
+\DeclareDelimFormat{editortypedelim}{\iffieldequalstr{userd}{chinese}{}{\addcomma\space}}
+
+\DeclareDelimFormat{authotitledelim}
+{%
+\iffieldequalstr{userd}{chinese}{\gbpunctcolon}{\addperiod\space}%
+}
+
+\DeclareListFormat{journallocation}{%
+ \usebibmacro{list:delim}{#1}%
+ \gbpunctprl#1\gbpunctprr}
+
+%==================================================
+%调整部分域的输出格式
+%==================================================
+
+
+\DeclareFieldFormat{pages}{%%前面引导页码的pp.等字符
+\ifpages{#1}{%
+\iffieldequalstr{userd}{chinese}{%
+\printtext{\bibstring{serialcn} #1\addthinspace 页}}%
+{\mkpageprefix[bookpagination]{#1}}}{#1}}
+
+
+\renewbibmacro*{institution+location+date}{\bibpubfont%当没有institution时不处理。
+{\printlist{location}%%加了一个编组避免\usebibmacro{date}把month和day信息去掉
+ \iflistundef{institution}
+ {\locnopubdelim}
+ {\setunit*{\publocpunct}}%
+ \printlist{institution}%
+ \pubdatadelim%
+ \usebibmacro{date}%
+ %\newunit
+ }}
+
+\def\bbx at opt@mergedate at none{%
+ \global\togglefalse{bbx:gbmergedate}
+ \renewbibmacro*{date+extradate}{%
+ \iffieldundef{labelyear}
+ {}
+ {}}%
+\renewbibmacro*{bbx:ifmergeddate}{\@secondoftwo}%这一句用于3.12版本
+\renewbibmacro*{date}{\printdate}%这一句用于biblatex3.11以下版本
+\renewbibmacro*{issue+date}{%去掉括号
+ \printtext{%去掉了[parens]
+ \iffieldundef{issue}
+ {\iffieldundef{entrysubtype}{\usebibmacro{date}}%判断一下,是否是报纸
+ {\iffieldequalstr{entrysubtype}{news}{\usebibmacro{newsdate}}%判断是否为报纸
+ {\usebibmacro{date}}%
+ }}%
+ {\iffieldundef{issue}{}{\printfield{issue}\newunit}%
+ \iffieldundef{entrysubtype}{\usebibmacro{date}}%判断一下,是否是报纸
+ {\iffieldequalstr{entrysubtype}{news}{\usebibmacro{newsdate}}%判断是否为报纸
+ {\usebibmacro{date}}%
+ }}}%
+ }%
+}
+
+\ExecuteBibliographyOptions{mergedate=none}
+
+%重新调整输出编者的类型
+% 责任者如果没有author用editor或translator替代
+% 20210521 v1.0y hzz
+%专著如果责任者是editor那么不用输出类型信息
+\renewbibmacro*{editor+others}{%
+ \ifboolexpr{
+ test \ifuseeditor
+ and
+ not test {\ifnameundef{editor}}
+ }
+ {\usebibmacro{bbx:dashcheck}
+ {\bibnamedash}
+ {\printnames{editor}%
+ \setunit{\printdelim{editortypedelim}}%
+ \usebibmacro{editor+othersstrg}%
+ \usebibmacro{bbx:savehash}}%
+ \clearname{editor}%
+ \setunit{\printdelim{nameyeardelim}}}%
+ {\global\undef\bbx at lasthash
+ \usebibmacro{labeltitle}%
+ \setunit*{\printdelim{nonameyeardelim}}}%
+ \usebibmacro{date+extradate}}
+
+%\renewbibmacro*{editor+others}{%
+%\ifboolexpr{
+% test \ifuseeditor
+% and
+% not test {\ifnameundef{editor}}
+% }
+% {\printnames{editor}%
+% \setunit{\printdelim{editortypedelim}}%
+% \usebibmacro{editor+othersstrg}%
+% \clearname{editor}%
+% }%
+% {}%
+% }
+
+\renewbibmacro*{editor}{%
+\ifboolexpr{
+ test \ifuseeditor
+ and
+ not test {\ifnameundef{editor}}
+ }
+ {\printnames{editor}%
+ \setunit{\printdelim{editortypedelim}}%
+ \usebibmacro{editor+othersstrg}%
+ %\clearname{editor}%
+ }%
+ {}%
+ }
+
+\renewbibmacro*{editor+othersstrg}{%
+ \iffieldundef{editortype}
+ {\ifboolexpr{
+ test {\ifnumgreater{\value{editor}}{1}}
+ or
+ test {\ifandothers{editor}}
+ }
+ {\def\abx at tempa{editors}}
+ {\def\abx at tempa{editor}}}
+ {\ifboolexpr{
+ test {\ifnumgreater{\value{editor}}{1}}
+ or
+ test {\ifandothers{editor}}
+ }
+ {\edef\abx at tempa{\thefield{editortype}s}}
+ {\edef\abx at tempa{\thefield{editortype}}}}%
+ \let\abx at tempb=\empty
+ \ifnamesequal{editor}{translator}
+ {\appto\abx at tempa{tr}%
+ \appto\abx at tempb{\clearname{translator}}}
+ {}%
+ \ifnamesequal{editor}{commentator}
+ {\appto\abx at tempa{co}%
+ \appto\abx at tempb{\clearname{commentator}}}
+ {\ifnamesequal{editor}{annotator}
+ {\appto\abx at tempa{an}%
+ \appto\abx at tempb{\clearname{annotator}}}
+ {}}%
+ \ifnamesequal{editor}{introduction}
+ {\appto\abx at tempa{in}%
+ \appto\abx at tempb{\clearname{introduction}}}
+ {\ifnamesequal{editor}{foreword}
+ {\appto\abx at tempa{fo}%
+ \appto\abx at tempb{\clearname{foreword}}}
+ {\ifnamesequal{editor}{afterword}
+ {\appto\abx at tempa{af}%
+ \appto\abx at tempb{\clearname{afterword}}}
+ {}}}%
+ \ifbibxstring{\abx at tempa}
+ {\printtext[editortype]{%
+ \iffieldequalstr{userd}{chinese}{\bibstring{\abx at tempa cn}}{\bibstring{\abx at tempa}}%
+ }\abx at tempb}
+ {\usebibmacro{editorstrg}}}
+
+
+\DeclareDelimFormat[footfullcite,bib,biblist]{andothersdelim}{}
+%去掉译前的标点
+\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}}%
+ {}%
+}
+
+
+%增加年字
+\renewbibmacro*{date}{%
+ \iffieldequalstr{userd}{chinese}{%
+ \ifboolexpr{test {\ifentrytype{article}} or test {\ifentrytype{inproceedings}}
+ or test {\ifentrytype{archive}} or test {\ifentrytype{online}}
+ or test {\ifentrytype{unpublished}}}
+ {\printtext{\blx at gbdatecn{}{}}}%
+ {\printdate\iffieldundef{year}{}{\iffieldint{year}{年}{}}}%
+ }{\ifentrytype{archive}{\printtext{\blx at gbdateen{}{}}}{\printdate}}%
+}%
+
+
+\newrobustcmd*{\blx at gbdatecn}[3][]{%
+ \dateeraprintpre{#2#3year}%
+ \iffieldundef{#2#3year}{}{\blx at imc@forcezerosy{\thefield{#2#3year}年}}\ifblank{#1}{}{\printfield{#1}}%
+ \iffieldundef{#2#3month}{}{{\thefield{#2#3month}}月}%
+ \iffieldundef{#2#3day}{}{{\thefield{#2#3day}}日}}
+
+\newrobustcmd*{\blx at gbdateen}[3][]{%
+\mkbibdateen{#2#3year}{#2#3month}{#2#3day}%
+}
+
+\newrobustcmd*{\mkbibdateen}[3]{%
+ \iffieldundef{#2}
+ {}
+ {\mkbibmonth{\thefield{#2}}%
+ \iffieldundef{#1}{}{\space}}%
+ \iffieldundef{#3}
+ {}
+ {{\thefield{#3}}%
+ \iffieldundef{#2}{}{\addcomma\space}}%
+ \iffieldbibstring{#1}
+ {\bibstring{\thefield{#1}}}
+ {\dateeraprintpre{#1}\stripzeros{\thefield{#1}}}}
+
+
+
+\renewbibmacro*{newsdate}{%%
+\ifboolexpr{%
+ test{\iffieldequalstr{userd}{chinese}}%
+ }%
+ {\printtext{\blx at gbdatecn{}{}}}%
+ {\printtext{\blx at gbdate{}{}}}%%
+}
+
+%
+\renewbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式
+\ifboolexpr{%
+ test{\iffieldequalstr{userd}{chinese}}%
+}%
+{%
+\printtext{\blx at gbdatecn{}{}}%
+}%
+ {\ifboolexpr{%
+ test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}%
+ }%
+ {}%更新或修改日期通常有day信息
+ {\iffieldundef{year}{%
+ \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{\gbleftparen}\printeventdate\printtext{\gbrightparen}}}%
+ {\printtext{\gbleftparen}\printenddate\printtext{\gbrightparen}}%
+ }{\iffieldequalstr{year}{}{%因为year存在,但为空
+ }{\printtext{\gbleftparen}\blx at gbdate{}{}\printtext{\gbrightparen}}%
+ }}%
+}}%
+
+
+\renewbibmacro*{url+urldate}{%
+ \newunit\usebibmacro{url}\newunit%
+ \printtext{\blx at gbdatecn{}{url}}%
+}
+
+
+
+%
+% 调整页码前的标点和去掉期刊文章等页码后面的标点
+%
+\renewbibmacro*{note+pages}{%源来自standard.bbx
+ \iffieldundef{postnote}{\iffieldundef{pages}{}{%
+ \setunit{\bibpagespunct}%
+ \printfield{pages}}}{}%
+ }
+
+%
+% 调整页码的格式,即chapter+pages格式
+%
+\renewbibmacro*{chapter+pages}{%
+ \iffieldundef{postnote}{\iffieldundef{pages}{}{%
+ \setunit{\bibpagespunct}%
+ \printfield{pages}}}{}%
+}
+
+%
+% 修改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 期}}%
+ }%
+ {\bibstring{number}~#1}}%\kern\z@
+
+\DeclareFieldFormat[article,periodical,newspaper]{volume}%
+{
+\iffieldequalstr{userd}{chinese}{%
+ \iffieldint{volume}%
+ {\bibstring{serialcn}#1\bibstring{volumecn}}%
+ {#1}%
+ }%
+ {\bibstring{volume}~#1}%
+}
+
+
+\DeclareFieldFormat[article,periodical,newspaper]{series}
+{\gbpunctprl#1\gbpunctprr}%
+
+%
+% 调整期刊名的格式
+%
+% 原理方法:因为作者年制年份提到前面,因此涉及到期刊名与后面的卷期的关系。
+% v1.0k,20180425,增加了字体控制命令,hzz
+\renewbibmacro*{journal+issuetitle}{\bibpubfont%源来自standard.bbx
+ \usebibmacro{journal}%
+ \iffieldequalstr{userd}{chinese}{}{\newunit}%
+ \iffieldundef{series}%
+ {}%
+ {\printfield{series}}%
+ \iflistundef{location}{}{\printlist[journallocation]{location}}%
+ \usebibmacro{issue+date}%
+ \usebibmacro{volume+number+eid}%把卷期放到年份后面
+ }
+
+%
+% 调整期刊卷和期的格式
+%
+\renewbibmacro*{volume+number+eid}{%源来自standard.bbx
+\iffieldequalstr{userd}{chinese}%
+ {\iffieldundef{volume}{}{\printfield{volume}}%
+ \iffieldundef{number}{}{\printfield{number}}}%区别于顺序编码制
+ {\newunit\printfield{volume}%
+ \newunit\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{\iffieldequalstr{userd}{chinese}{\gbpunctcolon}{\gbpunctcolonlanen}}\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{entrysubtype}{\printfield[gbtypeflag]{usera}}%在标题后直接给出文献标识字母,判断一下,是否是报纸和标准
+ {\iffieldequalstr{entrysubtype}{standard}{\printfield[gbtypeflags]{usera}}%判断是否为标准
+ {\iffieldequalstr{entrysubtype}{news}{\printfield[gbtypeflagn]{usera}}% 判断是否为报纸
+ {\printfield[gbtypeflag]{usera}}}% 其它
+ }}{}%
+ }%
+}}
+
+
+\renewbibmacro*{labeltitle}{%
+ \iffieldundef{label}
+ {\iffieldundef{shorttitle}%author,editor,translator不存在时title会变到labeltitle。
+ {\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}%
+ {\iffieldundef{origyear}{}{\printfield{origyear}}}{}\printfield{title}%
+ \clearfield{title}}
+ {\printfield[title]{shorttitle}}}
+ {\printfield{label}}}
+
+\renewbibmacro*{maintitle+title}{%
+ \iffieldsequal{maintitle}{title}
+ {\clearfield{maintitle}%
+ \clearfield{mainsubtitle}%
+ \clearfield{maintitleaddon}}
+ {\iffieldundef{maintitle}
+ {}
+ {\usebibmacro{maintitle}%
+ \newunit\newblock
+ \iffieldundef{volume}
+ {}
+ {\printfield{volume}%
+ \printfield{part}%
+ \setunit{\addcolon\space}}}}%
+ \usebibmacro{title}%
+\ifboolexpr{test{\ifentrytype{book}} and (not test{\iffieldundef{volume}})}%判断一下book类有没有volume
+ {\printfield{volume}}{}%
+\ifboolexpr{(test{\ifentrytype{archive}} or test{\ifentrytype{online}}) and (not test{\iffieldundef{number}})}%判断一下archive类有没有number
+ {\printfield{number}}{}%
+ \newunit}
+
+
+\setlength{\bibitemindent}{2\ccwd} % bibitemindent表示一条文献中第一行相对后面各行的缩进
+\setlength{\bibhang}{0pt} % 作者年制中 bibhang 表示的各行起始位置到页
+ % 边的距离,顺序编码制中
+ % bibhang+labelnumberwidth 表示各行起始位置
+ % 到页边的距离
+
+
+
+\renewbibmacro*{translator+others}{%
+ \ifboolexpr{
+ test \ifusetranslator
+ and
+ not test {\ifnameundef{translator}}
+ }
+{\usebibmacro{bbx:dashcheck}
+ {\bibnamedash}
+ {\renewcommand{\aftertransdelim}{\adddot\addspace}\printnames{translator}%
+ \usebibmacro{bbx:savehash}}%
+ \clearname{translator}%
+ \setunit{\printdelim{nameyeardelim}}}%
+ {\global\undef\bbx at lasthash
+ \usebibmacro{labeltitle}%
+ \setunit*{\printdelim{nonameyeardelim}}}%
+ \usebibmacro{date+extradate}}
+
+
+
+\renewbibmacro*{bybookauthor}{%
+ \ifnameundef{bookauthor}%
+ {\ifnameundef{editor}%
+ {}%
+ {\ifnamesequal{author}{editor}%
+ {\iftoggle{bbx:gbnosameeditor}{\clearname{editor}}{\usebibmacro{editor}}%
+ }{\usebibmacro{editor}}}%
+ }%
+ {\ifnamesequal{author}{bookauthor}%
+ {\iftoggle{bbx:gbnosameeditor}{\clearname{bookauthor}}{\printnames{bookauthor}}%
+ }{\printnames{bookauthor}}%
+ }%
+}
+
+\newbibmacro*{maintitle+booktitle}{%
+ \iffieldundef{maintitle}
+ {}
+ {\usebibmacro{maintitle}%
+ \iffieldundef{volume}
+ {}
+ {\printfield{volume}%
+ \printfield{part}}}%
+ \usebibmacro{booktitle}%
+}
+
+\renewbibmacro*{booktitle}{%
+\ifboolexpr{
+ test {\iffieldundef{booktitle}}
+ and
+ test {\iffieldundef{booksubtitle}}
+ }
+ {}
+ {\printtext[booktitle]{\bibtitlefont%
+ \printfield[titlecase]{booktitle}%
+ \iffieldundef{booksubtitle}{}%
+ {\setunit{\subtitlepunct}%
+ \printfield[titlecase]{booksubtitle}%
+ \setunit{\subtitlepunct}%
+ \printfield{booktitleaddon}}
+ }%
+ }}
+
+
+\renewbibmacro*{in:}{%
+\iftoggle{bbx:gbpunctin}{\setunit{\gbpunctcomma}}%\addthinspace
+ {\iffieldequalstr{userd}{chinese}%
+ {\setunit{\gbpunctcomma}\ifboolexpr{test {\ifnameundef{bookauthor}} and test{\ifnameundef{editor}}}%
+ {}{\printtext{\bibstring{incn}}}}%
+ {\printtext{\bibstring{in}}}%
+ }}%\newunit\newblock\intitlepunct
+
+
+\newbibmacro*{inbook:volume+number}{%
+ \iffieldundef{volume}{}{\printfield{volume}}%
+ \iffieldundef{number}{}{\printfield{number}}%
+}
+
+
+
+%
+% 增加inbook:parent用于辅助crossref传统功能的实现
+% 用在{crosscite}宏中
+% 20210216,v1.0w,hzz
+\newbibmacro*{inbook:parent}{%
+\usebibmacro{bybookauthor}%
+\ifnameundef{bookauthor}{%
+ \ifnameundef{editor}{}{\printdelim{authotitledelim}}%
+ }{\printdelim{authotitledelim}}%
+\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}{}
+{\iffieldundef{series}{}{\usebibmacro{series+number}\setunit{\addcolon\addspace}}}%为处理一些存在series的情况而增加
+\usebibmacro{maintitle+booktitle}%
+\usebibmacro{inbook:volume+number}%
+\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}%
+{\iffieldundef{series}{}{\newunit\usebibmacro{series+number}}}{}%
+ \newunit\newblock%
+\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}{}{\printfield{edition}}%
+ \newunit
+ \newunit\newblock
+ \usebibmacro{publisher+location+date}%
+\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}{\printfield{edition}}{}%
+}
+
+\DeclareFieldFormat{part}{#1}% physical part of a logical volume
+
+%
+% 专著中的析出文献的格式修改
+%
+\DeclareBibliographyDriver{inbook}{%源来自standard.bbx
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/translator+others}%
+% \ifboolexpr{
+% test {\ifnameundef{author}}
+% and
+% test {\ifnameundef{translator}}
+% }{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+\usebibmacro{title}%
+\iffieldequalstr{entrysubtype}{classic}%
+{\iffieldundef{part}{}{\printfield{part}}%
+}{}%
+\newunit%
+\iffieldequalstr{entrysubtype}{letter}%
+{\iffieldundef{eventyear}%
+ {\iffieldundef{origyear}{}{\printtext{\blx at gbdatecn{}{orig}}}}%
+ {\printtext{\blx at gbdatecn{}{event}}}%
+ }{}
+\usebibmacro{in:}%
+\usebibmacro{crosscite}{inbook:parent}%
+ \usebibmacro{chapter+pages}%
+ \usebibmacro{doi+eprint+url}%移到上面来
+ \newunit\newblock
+ \iftoggle{bbx:isbn}
+ {\printfield{isbn}}
+ {}%
+ \newunit\newblock
+ \usebibmacro{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock
+ \usebibmacro{pageref}%
+ \newunit\newblock
+ \iftoggle{bbx:related}
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}
+ {}%
+ \usebibmacro{annotation}\usebibmacro{finentry}}
+
+
+
+\DeclareBibliographyDriver{book}{%源来自standard.bbx文件
+\usebibmacro{bibindex}%
+\usebibmacro{begentry}%
+\usebibmacro{author/editor+others/translator+others}%
+\ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+\ifboolexpr{not (test{\ifnameundef{author}} and test{\ifnameundef{editor}} and %
+test{\ifnameundef{translator}}) and test{\iffieldequalstr{entrysubtype}{classic}}}%author,editor,translator不存在时title会变到labeltitle。
+{\iffieldundef{origyear}{}{\printfield{origyear}}}{}%
+\usebibmacro{maintitle+title}%
+\iftoggle{bbx:gbstrict}{}{%
+\newunit
+\printlist{language}%
+\newunit\newblock%
+\usebibmacro{byauthor}%
+\newunit\newblock}%
+\usebibmacro{byeditor+others}%
+\newunit%
+\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}{}{\printfield{edition}}%
+\newunit\newblock%%
+\iftoggle{bbx:gbstrict}{}{%
+\iffieldundef{maintitle}%
+{\printfield{volume}%
+\printfield{part}}%
+{}%
+\newunit%
+\printfield{volumes}%
+\newunit\newblock%
+\usebibmacro{series+number}}%
+\newunit\newblock%
+\usebibmacro{publisher+location+date}%
+\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}{\printfield{edition}}{}%
+\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{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock
+ \usebibmacro{pageref}%
+ \newunit\newblock
+ \iftoggle{bbx:related}
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}
+ {}%
+ \usebibmacro{annotation}%
+ \usebibmacro{finentry}%
+ }%
+
+\renewbibmacro*{doi+eprint+url}{%
+ \iftoggle{bbx:eprint}
+ {\iffieldundef{eprint}{}{\newunit\usebibmacro{eprint}}}%必须要做域判断否则容易产生多余的标点
+ {}%
+ \iftoggle{bbx:url}
+ {\iffieldundef{url}{}{\usebibmacro{url+urldate}}}
+ {}
+ \iftoggle{bbx:doi}
+ {\printfield{doi}}
+ {}}
+
+
+\DeclareBibliographyDriver{manual}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/editor+others/translator+others}%
+\ifnameundef{namea}{}{\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}}{}%
+ \ifboolexpr{test{\ifentrytype{archive}}}%
+ {}{\printfield{number}}%
+ \newunit\newblock
+ \printfield{version}%
+ \newunit
+ \printfield{note}%
+ \newunit\newblock
+ \usebibmacro{institution+location+date}%
+ \ifboolexpr{test{\ifentrytype{archive}}}%
+ {\newunit\printfield{number}}{}%
+ \usebibmacro{chapter+pages}%
+ \iffieldundef{url}{}{%当没有网址时也不输出修改或更新日期
+ \usebibmacro{modifydate}}%修改或更新日期为带括号的时间
+ \usebibmacro{doi+eprint+url}%
+ \newunit
+ \printfield{pagetotal}%
+ \newunit\newblock
+ \iftoggle{bbx:isbn}
+ {\printfield{isrn}}
+ {}%
+ \newunit\newblock
+ \usebibmacro{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock
+ \usebibmacro{pageref}%
+ \newunit\newblock
+ \iftoggle{bbx:related}
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}
+ {}%
+ \usebibmacro{annotation}\usebibmacro{finentry}}
+
+
+%
+% 期刊文章,连续出版物中的析出文献的格式
+%
+ \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{entrysubtype}{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{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock
+ \usebibmacro{pageref}%
+ \newunit\newblock
+ \iftoggle{bbx:related}
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}
+ {}%
+ \usebibmacro{finentry}\usebibmacro{annotation}}
+
+
+%=====================================================================
+%设置再次引用的驱动格式
+%=====================================================================
+
+
+\DeclareBibliographyAlias{citeseen:newspaper}{citeseen:article}%
+\DeclareBibliographyAlias{citeseen:inproceedings}{citeseen:inbook}%会议论文文献类型驱动
+\DeclareBibliographyAlias{citeseen:conference}{citeseen:inbook}%会议论文文献类型驱动
+\DeclareBibliographyAlias{citeseen:incollection}{citeseen:inbook}%文集中析出文献类型驱动
+\DeclareBibliographyAlias{citeseen:collection}{citeseen:book}%%文集类型驱动
+\DeclareBibliographyAlias{citeseen:proceedings}{citeseen:book}%会议论文集文献类型驱动
+\DeclareBibliographyAlias{citeseen:thesis}{citeseen:manual}%学位论文驱动
+\DeclareBibliographyAlias{citeseen:unpublished}{citeseen:manual}%其它类型驱动
+\DeclareBibliographyAlias{citeseen:archive}{citeseen:manual}
+
+
+%
+% book条目类的驱动
+%
+\DeclareBibliographyDriver{citeseen:book}{%源来自standard.bbx文件
+\usebibmacro{bibindex}%
+\usebibmacro{begentry}%
+\usebibmacro{author/editor+others/translator+others}%
+\ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+\usebibmacro{maintitle+title}%
+\usebibmacro{chapter+pages}%
+\usebibmacro{finentry}}
+
+
+%
+% 期刊文章,连续出版物中的析出文献的格式
+%
+\DeclareBibliographyDriver{citeseen:article}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/translator+others}%
+\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+ \usebibmacro{title}%
+ \newunit\newblock%
+ \usebibmacro{journal+issuetitle}%
+ \usebibmacro{note+pages}%
+ \usebibmacro{finentry}}
+
+
+
+%
+% 连续出版物的驱动
+%
+ \DeclareBibliographyDriver{citeseen:periodical}{%源来自standard.BBX
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{editor}%
+ \newunit\newblock %删除上面一行,添加这一行
+ \usebibmacro{title+issuetitle}%
+\usebibmacro{finentry}}
+
+
+
+%
+% 在线文献驱动
+%
+\DeclareBibliographyDriver{citeseen:online}{%源来自standard.BBX
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/editor+others/translator+others}%
+\ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+ \usebibmacro{title}%
+\usebibmacro{finentry}}
+
+
+%
+% 报告类型驱动
+% 当有网址无出版项时,用online输出
+%
+\DeclareBibliographyDriver{citeseen:report}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/editor+others/translator+others}%
+\ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+ \usebibmacro{title}%
+ \usebibmacro{chapter+pages}%
+\usebibmacro{finentry}}
+
+%
+% 论文、手册类型驱动
+% 2016-11-11,增加了译者信息
+%
+\DeclareBibliographyDriver{citeseen:manual}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/editor+others/translator+others}%
+\ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+ \usebibmacro{title}%
+ \usebibmacro{chapter+pages}%
+ \iffieldundef{url}{}{%当没有网址时也不输出修改或更新日期
+ \usebibmacro{modifydate}}%修改或更新日期为带括号的时间
+ \usebibmacro{doi+eprint+url}%
+ \newunit
+ \printfield{pagetotal}%
+\usebibmacro{finentry}}
+
+%
+% 增加inbook:parent用于辅助crossref传统功能的实现
+% 用在{crosscite}宏中
+% 20210216,v1.0w,hzz
+\newbibmacro*{citeseen:inbook:parent}{%
+\usebibmacro{bybookauthor}%
+\ifnameundef{bookauthor}{%
+ \ifnameundef{editor}{}{\printdelim{authotitledelim}}%
+ }{\printdelim{authotitledelim}}%
+\iffieldundef{series}{}{\usebibmacro{series+number}\setunit{\addcolon\addspace}}%为处理一些存在series的情况而增加
+ \usebibmacro{maintitle+booktitle}%
+ \usebibmacro{inbook:volume+number}%
+}
+
+%
+% 专著中的析出文献的格式修改
+%
+\DeclareBibliographyDriver{citeseen:inbook}{%源来自standard.bbx
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/translator+others}%
+ \ifboolexpr{
+ test {\ifnameundef{author}}
+ and
+ test {\ifnameundef{translator}}
+ }{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+\usebibmacro{title}%
+\usebibmacro{in:}%
+\usebibmacro{crosscite}{citeseen:inbook:parent}%
+\usebibmacro{chapter+pages}%
+\usebibmacro{finentry}}
Added: trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhss.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhss.cbx (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhss.cbx 2024-11-15 22:11:57 UTC (rev 72863)
@@ -0,0 +1,294 @@
+%%
+%% ---------------------------------------------------------------
+%% erj.cbx --- A citation style of comprehensive academic journal of humanities and social sciences in china
+%% modified from gb7714-2015ay
+%% Maintained by huzhenzhen
+%% E-mail: hzzmail at 163.com
+%% Released under the LaTeX Project Public License v1.3c or later
+%% ---------------------------------------------------------------
+%%
+%%用法:类似于标准的样式在biblatex加载时设置样式
+%%文献表正常处理,标注命令主要用cite和textcite
+
+\ProvidesFile{chinese-cajhss.cbx}[v1.0a a biblatex citation style for ERJ]
+
+%==================================================
+%加载gb样式
+%==================================================
+\RequireCitationStyle{gb7714-2015ay} %
+
+
+%
+% 增加一个控制标注中标点是英文还是中文的选项
+% 20220222,v1.0a,hzz
+\DeclareBibliographyOption{gbcitepunctcn}[true]{%biblatex低版本
+ \ifstrequal{#1}{false}{\exegbpunctencite}{}}
+
+\def\gbpunctmarkcite{、}%
+\def\gbpunctsemicoloncite{;}%
+\def\gbpunctparenlcite{(}%
+\def\gbpunctparenrcite{)}
+\def\exegbpunctencite{%
+\def\gbpunctmarkcite{\addcomma\addspace}%
+\def\gbpunctsemicoloncite{\addsemicolon\addspace}%
+\def\gbpunctparenlcite{(}%
+\def\gbpunctparenrcite{)}
+}
+
+%==================================================
+%选项设置
+%==================================================
+\ExecuteBibliographyOptions{
+ maxcitenames=2,
+ mincitenames=1,
+}
+
+\DefineBibliographyStrings{english}{
+ andincitecn = {和},%将标注中的分开,便于与文献表中的区分
+ andincite = {\&},
+}
+
+%==================================================
+%引用命令设置,主要用cite和textcite
+%包括标点设置
+%==================================================
+\renewcommand*{\multicitedelim}{\gbpunctsemicoloncite}%\addsemicolon\addspace;
+\renewcommand*{\textcitedelim}{%
+ \iffinalcitedelim
+ {\ifnumgreater{\value{textcitetotal}}{2}
+ {}{}%\iftextcitepunct{\finalandsemicolon}{\finalandcomma}
+ \addspace\gbpunctmarkcite}%\addspace\bibstring{andincitecn}
+ {\iftextcitepunct{\addsemicolon\space}{\addspace\gbpunctmarkcite}}%\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}{\gbpunctmarkcite}%\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}%
+ \unspace\printtext{\gbpunctparenlcite}\usebibmacro{prenote}}%\addspace
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{postnote}%
+ \gbpunctparenrcite}%\addspace
+
+%原版
+%\DeclareCiteCommand{\cite}[\mkbibparens]
+% {\usebibmacro{cite:init}%
+% \usebibmacro{prenote}}%)
+% {\usebibmacro{citeindex}%
+% \usebibmacro{cite}}
+% {}
+% {\usebibmacro{postnote}}
+
+%
+%添加后面空格
+%\DeclareCiteCommand{\cbx at textcite}
+% {\usebibmacro{cite:init}}
+% {\usebibmacro{citeindex}%
+% \usebibmacro{textcite}}
+% {}
+% {\usebibmacro{textcite:postnote}\addspace}
+
+
+%修改注释后的标点
+\renewcommand{\bibfootnotewrapper}[1]{%
+ #1}%\bibsentence
+
+%避免去除前面的空白
+\renewrobustcmd{\blx at mkbibfootnote}[2]{%
+ \iftoggle{blx at footnote}
+ {\blx at warning{Nested notes}%
+ \addspace\mkbibparens{#2}}
+ {%\unspace
+ \ifnum\blx at notetype=\tw@
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {\csuse{blx at theendnote#1}{\protecting{\blxmkbibnote{end}{#2}}}}
+ {\csuse{footnote#1}{\protecting{\blxmkbibnote{foot}{#2}}}}}}
+
+%修改脚注注释的实现
+\def\execgbfootbib%
+ {%
+ %开启引用跟踪计数器,为使用\ifciteseen等测试命令
+ \ExecuteBibliographyOptions{citetracker=true}
+
+ %
+ %重定义\footfullcite使完成css的脚注文献要求
+ \DeclareCiteCommand{\footfullcite}[\mkbibfootnote]%
+ {\defcounter{maxnames}{\blx at maxcitenames}%局部定义maxnames和minnames计数器
+ \defcounter{minnames}{\blx at mincitenames}%使footfullcite内的作者输出与正文文献表中的一致。
+ \usebibmacro{prenote}%
+ \renewbibmacro*{postnote}{%
+ \iffieldundef{postnote}%
+ {}{\setunit{\iffieldequalstr{userd}{chinese}{\unspace\gbpunctcomma}{\addcolon\addspace}}%
+ \printfield{postnote}}}%与ay样式不同,由于已修改postnote域格式,直接用printfield
+ }%
+ {\ifciteseen%
+ {\usedriver{\DeclareNameAlias{sortname}{default}}{citeseen:\thefield{entrytype}}}%\nopunct
+ {\usedriver{\DeclareNameAlias{sortname}{default}}{\thefield{entrytype}}}%
+ }%
+ {\multicitedelim}%
+ {\usebibmacro{postnote}\usebibmacro{finentry}}%
+
+
+ \DeclareCiteCommand{\fullcite}
+ {\usebibmacro{prenote}%
+ \renewbibmacro*{postnote}{%
+ \iffieldundef{postnote}%
+ {}{\setunit{\iffieldequalstr{userd}{chinese}{\unspace\gbpunctcomma}{\addcolon\addspace}}%
+ \printfield{postnote}}}%与ay样式不同,由于已修改postnote域格式,直接用printfield
+ }
+ {\ifciteseen%
+ {\usedriver{\DeclareNameAlias{sortname}{default}}{citeseen:\thefield{entrytype}}}%\nopunct
+ {\usedriver{\DeclareNameAlias{sortname}{default}}{\thefield{entrytype}}}%
+ }
+ {\multicitedelim}
+ {\usebibmacro{postnote}\usebibmacro{finentry}}%
+
+
+ \DeclareCiteCommand{\fullinnercite}
+ {\usebibmacro{prenote}%
+ \renewbibmacro*{postnote}{%
+ \iffieldundef{postnote}%
+ {}{\setunit{\iffieldequalstr{userd}{chinese}{\unspace\gbpunctcomma}{\addcolon\addspace}}%
+ \printfield{postnote}}}%与ay样式不同,由于已修改postnote域格式,直接用printfield
+ }
+ {\ifciteseen%
+ {\usedriver{\DeclareNameAlias{sortname}{default}}{citeseen:\thefield{entrytype}}}%\nopunct
+ {\usedriver{\DeclareNameAlias{sortname}{default}}{\thefield{entrytype}}}%
+ }
+ {\multicitedelim}
+ {\usebibmacro{postnote}\usebibmacro{finentry}}%
+ }
+
+
+%为先秦文献夹注做处理
+\DeclareFieldFormat*{citejz}{%
+\iffieldequalstr{userd}{chinese}{\gbpunctprl\gbpunctttl#1\gbpunctttr\gbpunctprr}%
+{\mkbibemph{#1}}}
+\DeclareCiteCommand{\citejz}
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \usebibmacro{prenote}}
+ {\ifciteindex
+ {\indexfield{indextitle}}
+ {}%
+ \printfield[citejz]{labeltitle}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+
+\DeclareFieldFormat{citetitle}{%
+\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}%
+{\mkbibemph{#1}}%
+}
+
+\DeclareFieldFormat
+ [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
+ {citetitle}{%
+ \iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}%
+ {\mkbibquote{#1\isdot}}%
+ }
+
+
+%为文献输出出版信息
+\DeclareCiteCommand{\citepub}
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \usebibmacro{prenote}}
+ {\ifciteindex
+ {\indexfield{indextitle}}
+ {}%
+ \ifentrytype{online}{\usebibmacro{institution+location+date}}{\usebibmacro{publisher+location+date}}%
+ }
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+
+\newbibmacro*{textcite}{%
+ \iffieldequals{namehash}{\cbx at lasthash}
+ {\iffieldundef{shorthand}
+ {\ifthenelse{\iffieldequals{labelyear}{\cbx at lastyear}\AND
+ \(\value{multicitecount}=0\OR\iffieldundef{postnote}\)}
+ {\setunit{\addcomma}%
+ \usebibmacro{cite:extradate}}
+ {\setunit{\compcitedelim}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{labelyear}{\cbx at lastyear}}}
+ {\setunit{\compcitedelim}%
+ \usebibmacro{cite:shorthand}%
+ \global\undef\cbx at lastyear}}
+ {\ifnameundef{labelname}
+ {\iffieldundef{shorthand}
+ {\usebibmacro{cite:label}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nonameyeardelim}\unspace\gbpunctparenlcite}%\bibopenparen
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \usebibmacro{cite:labeldate+extradate}}
+ {\usebibmacro{cite:shorthand}}}
+ {\printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nameyeardelim}\unspace\gbpunctparenlcite}%\bibopenparen
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \iffieldundef{shorthand}
+ {\iffieldundef{labelyear}
+ {\usebibmacro{cite:label}}
+ {\usebibmacro{cite:labeldate+extradate}}%
+ \savefield{labelyear}{\cbx at lastyear}}
+ {\usebibmacro{cite:shorthand}%
+ \global\undef\cbx at lastyear}}%
+ \stepcounter{textcitecount}%
+ \savefield{namehash}{\cbx at lasthash}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\gbpunctparenrcite\global\boolfalse{cbx:parens}}%\bibcloseparen
+ {}%
+ \textcitedelim}}
+
+\newbibmacro*{textcite:postnote}{%
+ \usebibmacro{postnote}%
+ \ifthenelse{\value{multicitecount}=\value{multicitetotal}}
+ {\setunit{}%
+ \printtext{%
+ \ifbool{cbx:parens}
+ {\gbpunctparenrcite\global\boolfalse{cbx:parens}}%\bibcloseparen
+ {}}}
+ {\setunit{%
+ \ifbool{cbx:parens}
+ {\gbpunctparenrcite\global\boolfalse{cbx:parens}}%\bibcloseparen
+ {}%
+ \textcitedelim}}}
+
+\let\citet=\textcite
+\let\citep=\cite
Added: trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhssay.bbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhssay.bbx (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhssay.bbx 2024-11-15 22:11:57 UTC (rev 72863)
@@ -0,0 +1,995 @@
+%%
+%% ---------------------------------------------------------------
+%% erj.bbx --- A bibliography style of comprehensive academic journal of humanities and social sciences in china
+%% modified from gb7714-2015ay
+%% Maintained by huzhenzhen
+%% E-mail: hzzmail at 163.com
+%% Released under the LaTeX Project Public License v1.3c or later
+%% history
+%% 2019/03/28 v1.0
+%% 2022/02/22 v1.0a
+%% ---------------------------------------------------------------
+%%
+%%用法:类似于标准的样式在biblatex加载时设置样式
+%%文献表正常处理,标注命令主要用cite和textcite
+\ProvidesFile{chinese-cajhssay.bbx}[2024/09/12 v1.0a a biblatex bibliography style for ERJ]
+
+
+%==================================================
+%加载gb样式
+%==================================================
+\RequireBibliographyStyle{gb7714-2015ay}
+\RequirePackage{mfirstuc}%单词首字母大写的问题
+\MFUnocap{in}%
+\MFUnocap{the}%
+\MFUnocap{of}%
+\MFUnocap{on}%
+\MFUnocap{and}%
+\MFUnocap{for}%
+
+%
+% 增加一个控制标点是英文还是中文的选项
+% 20220222,v1.0a,hzz
+\DeclareBibliographyOption{gbpunctcn}[true]{%biblatex低版本
+ \ifstrequal{#1}{false}{\execerjpuncten}{}}
+
+
+%==================================================
+%考虑多音字增加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, % givenahead,
+ gbpunctin=false,
+ gbfieldtype=true,
+ %mergedate=true,
+ %sorting=none,
+ doi=false,
+ %url=false,
+ }
+
+%==================================================
+%定义一些标点为中文全角标点
+%==================================================
+\def\gbpunctdot{。}%
+\def\gbpunctmark{、}%
+\def\gbpunctcomma{,}%
+\def\gbpunctcommalanen{\addcomma\addspace}%
+\def\gbpunctcolon{:}%
+\def\gbpunctcolonlanen{\addcolon\addspace}%
+\def\gbpunctsemicolon{;}%
+\def\gbpunctttl{《}%
+\def\gbpunctttr{》}
+\def\gbpunctprl{(}%
+\def\gbpunctprr{)}
+
+
+\def\execerjpuncten{%
+\def\gbpunctdot{\adddot}%
+\def\gbpunctmark{\addcomma\addspace}%
+\def\gbpunctcomma{\addcomma\addspace}%
+\def\gbpunctcommalanen{\addcomma\addspace}%
+\def\gbpunctcolon{\addcolon\addspace}%
+\def\gbpunctcolonlanen{\addcolon\addspace}%
+\def\gbpunctsemicolon{\addsemicolon\addspace}%
+\def\gbpunctttl{《}%
+\def\gbpunctttr{》}%
+}
+
+%==================================================
+%为标注和文献表中标点格式,重设and本地化字符串
+%==================================================
+\def\str at editorcn{编}
+\def\str at editorscn{编}
+\DefineBibliographyStrings{english}{
+ and = { and},%and后面的空格在finalnamedelim已经加过了,所以这里去掉20191009
+ andcn = {\gbpunctmark\unspace},%\gbpunctmark
+ incn={\str at incn},
+ bytranslatorcn= {\str at bytranslator}, %将trans. by 改成 译
+ %andotherscn={等},
+ %mathesiscn={[硕士学位论文]},
+ %phdthesiscn={[博士学位论文]},
+}
+
+
+%==================================================
+%设置一些标点格式为中文的标点
+%==================================================
+\DeclareFieldFormat{titlecase}{\iffieldequalstr{userd}{chinese}{#1}{\capitalisewords{#1}}}
+\DeclareFieldFormat*{title}{\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{#1\isdot}}
+\DeclareFieldFormat[book,collection]{title}{\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{\textit{#1}\isdot}}
+\DeclareFieldFormat[article,inbook,inproceedings,incollection]{title}{\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{\mkbibquote{#1}\isdot}}
+\DeclareFieldFormat*{journaltitle}{\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{\textit{#1}}}%
+\DeclareFieldFormat{booktitle}{%
+\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{\textit{#1}}}
+\renewcommand*{\revsdnamepunct}{\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\gbpunctcommalanen}}%%来源biblatex.def
+\DeclareDelimFormat*{multinamedelim}{\iffieldequalstr{userd}{chinese}{\gbpunctmark}{\gbpunctcommalanen}}%\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}{\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\gbpunctcommalanen}}%\addcomma\addspace
+\DeclareDelimFormat[bib,biblist]{nameyeardelim}{\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\gbpunctcommalanen}}%\addcomma\addspace
+
+\renewcommand*{\newunitpunct}{\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\gbpunctcommalanen}}%\addcomma\space %,
+\renewcommand*{\finentrypunct}{%
+\printdelim{finalpunct}}
+%调整标注的注释中的条目结尾标点
+\DeclareDelimFormat{finalpunct}{\iffieldequalstr{userd}{chinese}{\gbpunctdot}{\adddot}}
+\DeclareDelimFormat[fullinnercite]{finalpunct}{}
+
+
+\DeclareDelimFormat{bibpagespunct}{%
+\iffieldequalstr{userd}{chinese}{\unspace\gbpunctcomma}{\unspace\gbpunctcommalanen}}%
+
+%出版项中:出版社地址后面的标点
+\renewcommand{\publocpunct}{%
+\iffieldequalstr{userd}{chinese}{\gbpunctcolon}{\addcolon\addspace}}
+%调整出版社与年份之间的标点
+\renewcommand{\pubdatadelim}{%
+\iffieldequalstr{userd}{chinese}{\iffieldundef{year}{}{\setunit*{\gbpunctcomma}}}{\setunit*{\addcomma\space}}}%
+\renewcommand{\locnopubdelim}{%
+\iffieldequalstr{userd}{chinese}{\iffieldundef{year}{}{\setunit*{\gbpunctcomma}}}{\setunit*{\addcomma\space}}}%
+
+%编者与编者类型之间的标点
+\DeclareDelimFormat{editortypedelim}{\iffieldequalstr{userd}{chinese}{}{\addcomma\space}}
+
+\DeclareDelimFormat{authotitledelim}
+{%
+\iffieldequalstr{userd}{chinese}{\gbpunctcolon}{\addperiod\space}%
+}
+
+\DeclareListFormat{journallocation}{%
+ \usebibmacro{list:delim}{#1}%
+ \gbpunctprl#1\gbpunctprr}
+
+%==================================================
+%调整部分域的输出格式
+%==================================================
+
+
+\DeclareFieldFormat{pages}{%%前面引导页码的pp.等字符
+\ifpages{#1}{%
+\iffieldequalstr{userd}{chinese}{%
+\printtext{\bibstring{serialcn} #1\addthinspace 页}}%
+{\mkpageprefix[bookpagination]{#1}}}{#1}}
+
+
+\renewbibmacro*{institution+location+date}{\bibpubfont%当没有institution时不处理。
+{\printlist{location}%%加了一个编组避免\usebibmacro{date}把month和day信息去掉
+ \iflistundef{institution}
+ {\locnopubdelim}
+ {\setunit*{\publocpunct}}%
+ \printlist{institution}%
+ \pubdatadelim%
+ \usebibmacro{date}%
+ %\newunit
+ }}
+
+
+
+%重新调整输出编者的类型
+% 责任者如果没有author用editor或translator替代
+% 20210521 v1.0y hzz
+%专著如果责任者是editor那么不用输出类型信息
+\renewbibmacro*{editor+others}{%
+ \ifboolexpr{
+ test \ifuseeditor
+ and
+ not test {\ifnameundef{editor}}
+ }
+ {\usebibmacro{bbx:dashcheck}
+ {\bibnamedash}
+ {\printnames{editor}%
+ \setunit{\printdelim{editortypedelim}}%
+ \usebibmacro{editor+othersstrg}%
+ \usebibmacro{bbx:savehash}}%
+ \clearname{editor}%
+ \setunit{\printdelim{nameyeardelim}}}%
+ {\global\undef\bbx at lasthash
+ \usebibmacro{labeltitle}%
+ \setunit*{\printdelim{nonameyeardelim}}}%
+ \usebibmacro{date+extradate}}
+
+
+\renewbibmacro*{editor}{%
+\ifboolexpr{
+ test \ifuseeditor
+ and
+ not test {\ifnameundef{editor}}
+ }
+ {\printnames{editor}%
+ \setunit{\printdelim{editortypedelim}}%
+ \usebibmacro{editor+othersstrg}%
+ %\clearname{editor}%
+ }%
+ {}%
+ }
+
+\renewbibmacro*{editor+othersstrg}{%
+ \iffieldundef{editortype}
+ {\ifboolexpr{
+ test {\ifnumgreater{\value{editor}}{1}}
+ or
+ test {\ifandothers{editor}}
+ }
+ {\def\abx at tempa{editors}}
+ {\def\abx at tempa{editor}}}
+ {\ifboolexpr{
+ test {\ifnumgreater{\value{editor}}{1}}
+ or
+ test {\ifandothers{editor}}
+ }
+ {\edef\abx at tempa{\thefield{editortype}s}}
+ {\edef\abx at tempa{\thefield{editortype}}}}%
+ \let\abx at tempb=\empty
+ \ifnamesequal{editor}{translator}
+ {\appto\abx at tempa{tr}%
+ \appto\abx at tempb{\clearname{translator}}}
+ {}%
+ \ifnamesequal{editor}{commentator}
+ {\appto\abx at tempa{co}%
+ \appto\abx at tempb{\clearname{commentator}}}
+ {\ifnamesequal{editor}{annotator}
+ {\appto\abx at tempa{an}%
+ \appto\abx at tempb{\clearname{annotator}}}
+ {}}%
+ \ifnamesequal{editor}{introduction}
+ {\appto\abx at tempa{in}%
+ \appto\abx at tempb{\clearname{introduction}}}
+ {\ifnamesequal{editor}{foreword}
+ {\appto\abx at tempa{fo}%
+ \appto\abx at tempb{\clearname{foreword}}}
+ {\ifnamesequal{editor}{afterword}
+ {\appto\abx at tempa{af}%
+ \appto\abx at tempb{\clearname{afterword}}}
+ {}}}%
+ \ifbibxstring{\abx at tempa}
+ {\printtext[editortype]{%
+ \iffieldequalstr{userd}{chinese}{\bibstring{\abx at tempa cn}}{\bibstring{\abx at tempa}}%
+ }\abx at tempb}
+ {\usebibmacro{editorstrg}}}
+
+
+\DeclareDelimFormat[footfullcite,bib,biblist]{andothersdelim}{}
+%去掉译前的标点
+\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}}%
+ {}%
+}
+
+
+%增加年字
+\renewbibmacro*{date}{%
+ \usebibmacro{bbx:ifmergeddate}%
+ {}%
+ {\iffieldequalstr{userd}{chinese}{%
+ \ifboolexpr{test {\ifentrytype{article}} or test {\ifentrytype{inproceedings}}
+ or test {\ifentrytype{archive}} or test {\ifentrytype{online}}
+ or test {\ifentrytype{unpublished}}}
+ {\printtext{\blx at gbdatecn{}{}}}%
+ {\printdate\iffieldundef{year}{}{\iffieldint{year}{年}{}}}%
+ }{\ifentrytype{archive}{\printtext{\blx at gbdateen{}{}}}{\printdate}}%
+ }%
+}%
+
+
+\newrobustcmd*{\blx at gbdatecn}[3][]{%
+ \dateeraprintpre{#2#3year}%
+ \iffieldundef{#2#3year}{}{\blx at imc@forcezerosy{\thefield{#2#3year}年}}\ifblank{#1}{}{\printfield{#1}}%
+ \iffieldundef{#2#3month}{}{{\thefield{#2#3month}}月}%
+ \iffieldundef{#2#3day}{}{{\thefield{#2#3day}}日}}
+
+\newrobustcmd*{\blx at gbdateen}[3][]{%
+\mkbibdateen{#2#3year}{#2#3month}{#2#3day}%
+}
+
+\newrobustcmd*{\mkbibdateen}[3]{%
+ \iffieldundef{#2}
+ {}
+ {\mkbibmonth{\thefield{#2}}%
+ \iffieldundef{#1}{}{\space}}%
+ \iffieldundef{#3}
+ {}
+ {{\thefield{#3}}%
+ \iffieldundef{#2}{}{\addcomma\space}}%
+ \iffieldbibstring{#1}
+ {\bibstring{\thefield{#1}}}
+ {\dateeraprintpre{#1}\stripzeros{\thefield{#1}}}}
+
+
+
+\renewbibmacro*{newsdate}{%%
+\ifboolexpr{%
+ test{\iffieldequalstr{userd}{chinese}}%
+ }%
+ {\printtext{\blx at gbdatecn{}{}}}%
+ {\printtext{\blx at gbdate{}{}}}%%
+}
+
+%
+\renewbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式
+\ifboolexpr{%
+test{\iffieldequalstr{userd}{chinese}}%
+}%
+{%
+\printtext{\blx at gbdatecn{}{}}%
+}%
+ {\ifboolexpr{%
+ test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}%
+ }%
+ {}%更新或修改日期通常有day信息
+ {\iffieldundef{year}{%
+ \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{\gbleftparen}\printeventdate\printtext{\gbrightparen}}}%
+ {\printtext{\gbleftparen}\printenddate\printtext{\gbrightparen}}%
+ }{\iffieldequalstr{year}{}{%因为year存在,但为空
+ }{\printtext{\gbleftparen}\blx at gbdate{}{}\printtext{\gbrightparen}}%
+ }}%
+}}%
+
+
+\renewbibmacro*{url+urldate}{%
+ \newunit\usebibmacro{url}\newunit%
+ \printtext{\blx at gbdatecn{}{url}}%
+}
+
+
+
+%
+% 调整页码前的标点和去掉期刊文章等页码后面的标点
+%
+\renewbibmacro*{note+pages}{%源来自standard.bbx
+ \iffieldundef{postnote}{\iffieldundef{pages}{}{%
+ \setunit{\bibpagespunct}%
+ \printfield{pages}}}{}%
+ }
+
+%
+% 调整页码的格式,即chapter+pages格式
+%
+\renewbibmacro*{chapter+pages}{%
+ \iffieldundef{postnote}{\iffieldundef{pages}{}{%
+ \setunit{\bibpagespunct}%
+ \printfield{pages}}}{}%
+}
+
+%
+% 修改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 期}}%
+ }%
+ {\bibstring{number}~#1}}%\kern\z@
+
+\DeclareFieldFormat[article,periodical,newspaper]{volume}%
+{\iffieldequalstr{userd}{chinese}{%
+ \iffieldint{volume}%
+ {\bibstring{serialcn}#1\bibstring{volumecn}}%
+ {#1}%
+ }%
+ {\bibstring{volume}~#1}%
+}
+
+
+\DeclareFieldFormat[article,periodical,newspaper]{series}
+{\gbpunctprl#1\gbpunctprr}%
+
+%
+% 调整期刊名的格式
+%
+% 原理方法:因为作者年制年份提到前面,因此涉及到期刊名与后面的卷期的关系。
+% v1.0k,20180425,增加了字体控制命令,hzz
+\renewbibmacro*{journal+issuetitle}{\bibpubfont%源来自standard.bbx
+ \usebibmacro{journal}%
+ \iffieldequalstr{userd}{chinese}{}{\newunit}%
+ \iffieldundef{series}%
+ {}%
+ {\printfield{series}}%
+ \iflistundef{location}{}{\printlist[journallocation]{location}}%
+ \usebibmacro{issue+date}%
+ \usebibmacro{volume+number+eid}%把卷期放到年份后面
+ }
+
+%
+% 调整期刊卷和期的格式
+%
+\renewbibmacro*{volume+number+eid}{%源来自standard.bbx
+\iffieldequalstr{userd}{chinese}%
+ {\iffieldundef{volume}{}{\printfield{volume}}%
+ \iffieldundef{number}{}{\printfield{number}}}%区别于顺序编码制
+ {\newunit\printfield{volume}%
+ \newunit\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{\iffieldequalstr{userd}{chinese}{\gbpunctcolon}{\gbpunctcolonlanen}}\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{entrysubtype}{\printfield[gbtypeflag]{usera}}%在标题后直接给出文献标识字母,判断一下,是否是报纸和标准
+ {\iffieldequalstr{entrysubtype}{standard}{\printfield[gbtypeflags]{usera}}%判断是否为标准
+ {\iffieldequalstr{entrysubtype}{news}{\printfield[gbtypeflagn]{usera}}% 判断是否为报纸
+ {\printfield[gbtypeflag]{usera}}}% 其它
+ }}{}%
+ }%
+}}
+
+
+\renewbibmacro*{labeltitle}{%
+ \iffieldundef{label}
+ {\iffieldundef{shorttitle}%author,editor,translator不存在时title会变到labeltitle。
+ {\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}%
+ {\iffieldundef{origyear}{}{\printfield{origyear}}}{}\printfield{title}%
+ \clearfield{title}}
+ {\printfield[title]{shorttitle}}}
+ {\printfield{label}}}
+
+\renewbibmacro*{maintitle+title}{%
+ \iffieldsequal{maintitle}{title}
+ {\clearfield{maintitle}%
+ \clearfield{mainsubtitle}%
+ \clearfield{maintitleaddon}}
+ {\iffieldundef{maintitle}
+ {}
+ {\usebibmacro{maintitle}%
+ \newunit\newblock
+ \iffieldundef{volume}
+ {}
+ {\printfield{volume}%
+ \printfield{part}%
+ \setunit{\addcolon\space}}}}%
+ \usebibmacro{title}%
+\ifboolexpr{test{\ifentrytype{book}} and (not test{\iffieldundef{volume}})}%判断一下book类有没有volume
+ {\printfield{volume}}{}%
+\ifboolexpr{(test{\ifentrytype{archive}} or test{\ifentrytype{online}}) and (not test{\iffieldundef{number}})}%判断一下archive类有没有number
+ {\printfield{number}}{}%
+ \newunit}
+
+
+\setlength{\bibitemindent}{2\ccwd} % bibitemindent表示一条文献中第一行相对后面各行的缩进
+\setlength{\bibhang}{0pt} % 作者年制中 bibhang 表示的各行起始位置到页
+ % 边的距离,顺序编码制中
+ % bibhang+labelnumberwidth 表示各行起始位置
+ % 到页边的距离
+
+
+
+\renewbibmacro*{translator+others}{%
+ \ifboolexpr{
+ test \ifusetranslator
+ and
+ not test {\ifnameundef{translator}}
+ }
+{\usebibmacro{bbx:dashcheck}
+ {\bibnamedash}
+ {\renewcommand{\aftertransdelim}{\adddot\addspace}\printnames{translator}%
+ \usebibmacro{bbx:savehash}}%
+ \clearname{translator}%
+ \setunit{\printdelim{nameyeardelim}}}%
+ {\global\undef\bbx at lasthash
+ \usebibmacro{labeltitle}%
+ \setunit*{\printdelim{nonameyeardelim}}}%
+ \usebibmacro{date+extradate}}
+
+
+
+\renewbibmacro*{bybookauthor}{%
+ \ifnameundef{bookauthor}%
+ {\ifnameundef{editor}%
+ {}%
+ {\ifnamesequal{author}{editor}%
+ {\iftoggle{bbx:gbnosameeditor}{\clearname{editor}}{\usebibmacro{editor}}%
+ }{\usebibmacro{editor}}}%
+ }%
+ {\ifnamesequal{author}{bookauthor}%
+ {\iftoggle{bbx:gbnosameeditor}{\clearname{bookauthor}}{\printnames{bookauthor}}%
+ }{\printnames{bookauthor}}%
+ }%
+}
+
+\newbibmacro*{maintitle+booktitle}{%
+ \iffieldundef{maintitle}
+ {}
+ {\usebibmacro{maintitle}%
+ \iffieldundef{volume}
+ {}
+ {\printfield{volume}%
+ \printfield{part}}}%
+ \usebibmacro{booktitle}%
+}
+
+\renewbibmacro*{booktitle}{%
+\ifboolexpr{
+ test {\iffieldundef{booktitle}}
+ and
+ test {\iffieldundef{booksubtitle}}
+ }
+ {}
+ {\printtext[booktitle]{\bibtitlefont%
+ \printfield[titlecase]{booktitle}%
+ \iffieldundef{booksubtitle}{}%
+ {\setunit{\subtitlepunct}%
+ \printfield[titlecase]{booksubtitle}%
+ \setunit{\subtitlepunct}%
+ \printfield{booktitleaddon}}
+ }%
+ }}
+
+
+\renewbibmacro*{in:}{%
+\iftoggle{bbx:gbpunctin}{\setunit{\gbpunctcomma}}%\addthinspace
+ {\iffieldequalstr{userd}{chinese}%
+ {\setunit{\gbpunctcomma}\ifboolexpr{test {\ifnameundef{bookauthor}} and test{\ifnameundef{editor}}}%
+ {}{\printtext{\bibstring{incn}}}}%
+ {\printtext{\bibstring{in}}}%
+ }}%\newunit\newblock\intitlepunct
+
+
+\newbibmacro*{inbook:volume+number}{%
+ \iffieldundef{volume}{}{\printfield{volume}}%
+ \iffieldundef{number}{}{\printfield{number}}%
+}
+
+
+
+%
+% 增加inbook:parent用于辅助crossref传统功能的实现
+% 用在{crosscite}宏中
+% 20210216,v1.0w,hzz
+\newbibmacro*{inbook:parent}{%
+\usebibmacro{bybookauthor}%
+\ifnameundef{bookauthor}{%
+ \ifnameundef{editor}{}{\printdelim{authotitledelim}}%
+ }{\printdelim{authotitledelim}}%
+\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}{}
+{\iffieldundef{series}{}{\usebibmacro{series+number}\setunit{\addcolon\addspace}}}%为处理一些存在series的情况而增加
+\usebibmacro{maintitle+booktitle}%
+\usebibmacro{inbook:volume+number}%
+\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}%
+{\iffieldundef{series}{}{\newunit\usebibmacro{series+number}}}{}%
+ \newunit\newblock%
+\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}{}{\printfield{edition}}%
+ \newunit
+ \newunit\newblock
+ \usebibmacro{publisher+location+date}%
+\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}{\printfield{edition}}{}%
+}
+
+\DeclareFieldFormat{part}{#1}% physical part of a logical volume
+
+%
+% 专著中的析出文献的格式修改
+%
+\DeclareBibliographyDriver{inbook}{%源来自standard.bbx
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/translator+others}%
+% \ifboolexpr{
+% test {\ifnameundef{author}}
+% and
+% test {\ifnameundef{translator}}
+% }{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+\usebibmacro{title}%
+\iffieldequalstr{entrysubtype}{classic}%
+{\iffieldundef{part}{}{\printfield{part}}%
+}{}%
+\newunit%
+\iffieldequalstr{entrysubtype}{letter}%
+{\iffieldundef{eventyear}%
+ {\iffieldundef{origyear}{}{\printtext{\blx at gbdatecn{}{orig}}}}%
+ {\printtext{\blx at gbdatecn{}{event}}}%
+ }{}
+\usebibmacro{in:}%
+\usebibmacro{crosscite}{inbook:parent}%
+ \usebibmacro{chapter+pages}%
+ \usebibmacro{doi+eprint+url}%移到上面来
+ \newunit\newblock
+ \iftoggle{bbx:isbn}
+ {\printfield{isbn}}
+ {}%
+ \newunit\newblock
+ \usebibmacro{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock
+ \usebibmacro{pageref}%
+ \newunit\newblock
+ \iftoggle{bbx:related}
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}
+ {}%
+ \usebibmacro{annotation}\usebibmacro{finentry}}
+
+
+
+\DeclareBibliographyDriver{book}{%源来自standard.bbx文件
+\usebibmacro{bibindex}%
+\usebibmacro{begentry}%
+\usebibmacro{author/editor+others/translator+others}%
+\ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+\ifboolexpr{not (test{\ifnameundef{author}} and test{\ifnameundef{editor}} and %
+test{\ifnameundef{translator}}) and test{\iffieldequalstr{entrysubtype}{classic}}}%author,editor,translator不存在时title会变到labeltitle。
+{\iffieldundef{origyear}{}{\printfield{origyear}}}{}%
+\usebibmacro{maintitle+title}%
+\iftoggle{bbx:gbstrict}{}{%
+\newunit
+\printlist{language}%
+\newunit\newblock%
+\usebibmacro{byauthor}%
+\newunit\newblock}%
+\usebibmacro{byeditor+others}%
+\newunit%
+\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}{}{\printfield{edition}}%
+\newunit\newblock%%
+\iftoggle{bbx:gbstrict}{}{%
+\iffieldundef{maintitle}%
+{\printfield{volume}%
+\printfield{part}}%
+{}%
+\newunit%
+\printfield{volumes}%
+\newunit\newblock%
+\usebibmacro{series+number}}%
+\newunit\newblock%
+\usebibmacro{publisher+location+date}%
+\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}{\printfield{edition}}{}%
+\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{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock
+ \usebibmacro{pageref}%
+ \newunit\newblock
+ \iftoggle{bbx:related}
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}
+ {}%
+ \usebibmacro{annotation}%
+ \usebibmacro{finentry}%
+ }%
+
+\renewbibmacro*{doi+eprint+url}{%
+ \iftoggle{bbx:eprint}
+ {\iffieldundef{eprint}{}{\newunit\usebibmacro{eprint}}}%必须要做域判断否则容易产生多余的标点
+ {}%
+ \iftoggle{bbx:url}
+ {\iffieldundef{url}{}{\usebibmacro{url+urldate}}}
+ {}
+ \iftoggle{bbx:doi}
+ {\printfield{doi}}
+ {}}
+
+
+\DeclareBibliographyDriver{manual}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/editor+others/translator+others}%
+\ifnameundef{namea}{}{\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}}{}%
+ \ifboolexpr{test{\ifentrytype{archive}}}%
+ {}{\printfield{number}}%
+ \newunit\newblock
+ \printfield{version}%
+ \newunit
+ \printfield{note}%
+ \newunit\newblock
+ \usebibmacro{institution+location+date}%
+ \ifboolexpr{test{\ifentrytype{archive}}}%
+ {\newunit\printfield{number}}{}%
+ \usebibmacro{chapter+pages}%
+ \iffieldundef{url}{}{%当没有网址时也不输出修改或更新日期
+ \usebibmacro{modifydate}}%修改或更新日期为带括号的时间
+ \usebibmacro{doi+eprint+url}%
+ \newunit
+ \printfield{pagetotal}%
+ \newunit\newblock
+ \iftoggle{bbx:isbn}
+ {\printfield{isrn}}
+ {}%
+ \newunit\newblock
+ \usebibmacro{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock
+ \usebibmacro{pageref}%
+ \newunit\newblock
+ \iftoggle{bbx:related}
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}
+ {}%
+ \usebibmacro{annotation}\usebibmacro{finentry}}
+
+
+%
+% 期刊文章,连续出版物中的析出文献的格式
+%
+ \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{entrysubtype}{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{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock
+ \usebibmacro{pageref}%
+ \newunit\newblock
+ \iftoggle{bbx:related}
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}
+ {}%
+ \usebibmacro{finentry}\usebibmacro{annotation}}
+
+
+%=====================================================================
+%设置再次引用的驱动格式
+%=====================================================================
+
+
+\DeclareBibliographyAlias{citeseen:newspaper}{citeseen:article}%
+\DeclareBibliographyAlias{citeseen:inproceedings}{citeseen:inbook}%会议论文文献类型驱动
+\DeclareBibliographyAlias{citeseen:conference}{citeseen:inbook}%会议论文文献类型驱动
+\DeclareBibliographyAlias{citeseen:incollection}{citeseen:inbook}%文集中析出文献类型驱动
+\DeclareBibliographyAlias{citeseen:collection}{citeseen:book}%%文集类型驱动
+\DeclareBibliographyAlias{citeseen:proceedings}{citeseen:book}%会议论文集文献类型驱动
+\DeclareBibliographyAlias{citeseen:thesis}{citeseen:manual}%学位论文驱动
+\DeclareBibliographyAlias{citeseen:unpublished}{citeseen:manual}%其它类型驱动
+\DeclareBibliographyAlias{citeseen:archive}{citeseen:manual}
+
+
+%
+% book条目类的驱动
+%
+\DeclareBibliographyDriver{citeseen:book}{%源来自standard.bbx文件
+\usebibmacro{bibindex}%
+\usebibmacro{begentry}%
+\usebibmacro{author/editor+others/translator+others}%
+\ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+\usebibmacro{maintitle+title}%
+\usebibmacro{chapter+pages}%
+\usebibmacro{finentry}}
+
+
+%
+% 期刊文章,连续出版物中的析出文献的格式
+%
+\DeclareBibliographyDriver{citeseen:article}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/translator+others}%
+\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+ \usebibmacro{title}%
+ \newunit\newblock%
+ \usebibmacro{journal+issuetitle}%
+ \usebibmacro{note+pages}%
+ \usebibmacro{finentry}}
+
+
+
+%
+% 连续出版物的驱动
+%
+ \DeclareBibliographyDriver{citeseen:periodical}{%源来自standard.BBX
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{editor}%
+ \newunit\newblock %删除上面一行,添加这一行
+ \usebibmacro{title+issuetitle}%
+\usebibmacro{finentry}}
+
+
+
+%
+% 在线文献驱动
+%
+\DeclareBibliographyDriver{citeseen:online}{%源来自standard.BBX
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/editor+others/translator+others}%
+\ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+ \usebibmacro{title}%
+\usebibmacro{finentry}}
+
+
+%
+% 报告类型驱动
+% 当有网址无出版项时,用online输出
+%
+\DeclareBibliographyDriver{citeseen:report}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/editor+others/translator+others}%
+\ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+ \usebibmacro{title}%
+ \usebibmacro{chapter+pages}%
+\usebibmacro{finentry}}
+
+%
+% 论文、手册类型驱动
+% 2016-11-11,增加了译者信息
+%
+\DeclareBibliographyDriver{citeseen:manual}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/editor+others/translator+others}%
+\ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+ \usebibmacro{title}%
+ \usebibmacro{chapter+pages}%
+ \iffieldundef{url}{}{%当没有网址时也不输出修改或更新日期
+ \usebibmacro{modifydate}}%修改或更新日期为带括号的时间
+ \usebibmacro{doi+eprint+url}%
+ \newunit
+ \printfield{pagetotal}%
+\usebibmacro{finentry}}
+
+%
+% 增加inbook:parent用于辅助crossref传统功能的实现
+% 用在{crosscite}宏中
+% 20210216,v1.0w,hzz
+\newbibmacro*{citeseen:inbook:parent}{%
+\usebibmacro{bybookauthor}%
+\ifnameundef{bookauthor}{%
+ \ifnameundef{editor}{}{\printdelim{authotitledelim}}%
+ }{\printdelim{authotitledelim}}%
+\iffieldundef{series}{}{\usebibmacro{series+number}\setunit{\addcolon\addspace}}%为处理一些存在series的情况而增加
+ \usebibmacro{maintitle+booktitle}%
+ \usebibmacro{inbook:volume+number}%
+}
+
+%
+% 专著中的析出文献的格式修改
+%
+\DeclareBibliographyDriver{citeseen:inbook}{%源来自standard.bbx
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/translator+others}%
+ \ifboolexpr{
+ test {\ifnameundef{author}}
+ and
+ test {\ifnameundef{translator}}
+ }{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+\usebibmacro{title}%
+\usebibmacro{in:}%
+\usebibmacro{crosscite}{citeseen:inbook:parent}%
+\usebibmacro{chapter+pages}%
+\usebibmacro{finentry}}
Added: trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhssay.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhssay.cbx (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhssay.cbx 2024-11-15 22:11:57 UTC (rev 72863)
@@ -0,0 +1,347 @@
+%%
+%% ---------------------------------------------------------------
+%% erj.cbx --- A citation style of comprehensive academic journal of humanities and social sciences in china
+%% modified from gb7714-2015ay
+%% Maintained by huzhenzhen
+%% E-mail: hzzmail at 163.com
+%% Released under the LaTeX Project Public License v1.3c or later
+%% ---------------------------------------------------------------
+%%
+%%用法:类似于标准的样式在biblatex加载时设置样式
+%%文献表正常处理,标注命令主要用cite和textcite
+
+\ProvidesFile{chinese-cajhssay.cbx}[v1.0a a biblatex citation style for ERJ]
+
+%==================================================
+%加载gb样式
+%==================================================
+\RequireCitationStyle{gb7714-2015ay} %
+
+
+%
+% 增加一个控制标注中标点是英文还是中文的选项
+% 20220222,v1.0a,hzz
+\DeclareBibliographyOption{gbcitepunctcn}[true]{%biblatex低版本
+ \ifstrequal{#1}{false}{\exegbpunctencite}{}}
+
+\def\gbpunctcommacite{,}%
+\def\gbpunctmarkcite{、}%
+\def\gbpunctsemicoloncite{;}%
+\def\gbpunctparenlcite{(}%
+\def\gbpunctparenrcite{)}
+\def\gbpunctcoloncite{:}%
+
+\def\exegbpunctencite{%
+\def\gbpunctcommacite{\addcomma\addspace}%
+\def\gbpunctmarkcite{\addcomma\addspace}%
+\def\gbpunctsemicoloncite{\addsemicolon\addspace}%
+\def\gbpunctcoloncite{\addcolon\addspace}%
+\def\gbpunctparenlcite{(}%
+\def\gbpunctparenrcite{)}
+}
+
+%==================================================
+%选项设置
+%==================================================
+\ExecuteBibliographyOptions{
+ maxcitenames=2,
+ mincitenames=1,
+ %gbcitepunctcn=true,
+}
+
+\DeclareDelimFormat[textcite]{delimandincitecn}{和}%\addcomma\space
+\DeclareDelimFormat[parencite,cite]{delimandincitecn}{\gbpunctmarkcite}%\addcomma\space
+\DeclareDelimFormat[textcite]{delimandincite}{和}%\addcomma\space
+\DeclareDelimFormat[parencite,cite]{delimandincite}{ \& }%\addcomma\space
+\DeclareDelimFormat[textcite]{delimandothersincite}{\str at andotherscn}%\addcomma\space
+\DeclareDelimFormat[parencitem,cite]{delimandothersincite}{et al\adddot}%\addcomma\space
+
+\DefineBibliographyStrings{english}{
+ andincitecn = {\printdelim{delimandincitecn}},
+ andincite = {\printdelim{delimandincite}},
+ %andothersincitecn={\str at andotherscn},
+ %andothersincite={\printdelim{delimandothersincite}},
+}
+
+%==================================================
+%引用命令设置,主要用cite和textcite
+%包括标点设置
+%==================================================
+\renewcommand*{\multicitedelim}{\gbpunctsemicoloncite}%\addsemicolon\addspace;
+\renewcommand*{\textcitedelim}{%
+ \iffinalcitedelim
+ {\ifnumgreater{\value{textcitetotal}}{2}
+ {}{}%\iftextcitepunct{\finalandsemicolon}{\finalandcomma}
+ \addspace\gbpunctmarkcite}%\addspace\bibstring{andincitecn}
+ {\iftextcitepunct{\addsemicolon\space}{\addspace\gbpunctmarkcite}}%\addcomma
+}
+
+%注意在renewbibmacro*{cite}里面使用了compcitedelim,compextradelim
+%但其实在cite命令里面若在sepcode里面指定了multicitedelim,则这两个间隔符有时是多余的
+%在这个样式中我们直接将其定义为空了,然后再cite命令中设置了multicitedelim
+\renewcommand*{\compcitedelim}{}
+
+\DeclareDelimFormat[textcite]{nameyeardelim}{\addspace}%\addcomma\space
+\DeclareDelimFormat[cite,parencite]{nameyeardelim}{\gbpunctcommacite}%
+\DeclareDelimFormat[textcite]{andothersdelim}{\addspace}%
+\DeclareDelimFormat[cite,parencite]{andothersdelim}{\iffieldequalstr{userf}{chinese}{}{\addspace}}%
+\DeclareDelimFormat[cite,parencite,textcite]{bibpagespunct}{\gbpunctcoloncite}%
+
+
+
+%标注压缩时,直接用date+extradate代替extradate实现2006a,2006b的效果
+%\DeclareDelimFormat*{compcitedelim}{\gbpunctmarkcite}%\addcomma\addspace
+%\printfield{extradate}\printlabeldateextra\printfield{labelyear}\printfield{extradate}
+\newbibmacro*{cite:extradate}{%
+ \iffieldundef{extradate}
+ {}
+ {\printtext[bibhyperref]{\addspace\printlabeldateextra}}}%
+
+
+%添加前后空格
+\DeclareCiteCommand{\cite}%[\mkbibparens]
+ {\usebibmacro{cite:init}%
+ \unspace\printtext{\gbpunctparenlcite}\usebibmacro{prenote}%
+ \renewbibmacro*{postnote}{%
+ \iffieldundef{postnote}%
+ {}%
+ {\printdelim{bibpagespunct}\thefield{postnote}}}%
+ }%\addspace
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}%
+ \gbpunctparenrcite}%\addspace
+
+
+%添加前后空格
+\DeclareCiteCommand{\parencite}%[\mkbibparens]
+ {\usebibmacro{cite:init}%
+ \renewbibmacro*{postnote}{%
+ \iffieldundef{postnote}%
+ {}%
+ {\printdelim{bibpagespunct}\thefield{postnote}}}%
+ }%\addspace
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}%
+
+
+
+%重定义citeyear来得到不需要作者时的引用标注标签
+\DeclareCiteCommand{\citeyear}%[\mkbibparens]
+ {\usebibmacro{cite:init}%
+ \unspace\printtext{\gbpunctparenlcite}\usebibmacro{prenote}%
+ \renewbibmacro*{postnote}{%
+ \iffieldundef{postnote}%
+ {}%
+ {\printdelim{bibpagespunct}\thefield{postnote}}}%
+ }%\addspace
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite:labeldate+extradate}}
+ {}
+ {\usebibmacro{postnote}%
+ \gbpunctparenrcite}%\addspace
+
+%原版
+%\DeclareCiteCommand{\cite}[\mkbibparens]
+% {\usebibmacro{cite:init}%
+% \usebibmacro{prenote}}%)
+% {\usebibmacro{citeindex}%
+% \usebibmacro{cite}}
+% {}
+% {\usebibmacro{postnote}}
+
+%
+%添加后面空格
+%\DeclareCiteCommand{\cbx at textcite}
+% {\usebibmacro{cite:init}}
+% {\usebibmacro{citeindex}%
+% \usebibmacro{textcite}}
+% {}
+% {\usebibmacro{textcite:postnote}\addspace}
+
+
+%修改注释后的标点
+\renewcommand{\bibfootnotewrapper}[1]{%
+ #1}%\bibsentence
+
+%避免去除前面的空白
+\renewrobustcmd{\blx at mkbibfootnote}[2]{%
+ \iftoggle{blx at footnote}
+ {\blx at warning{Nested notes}%
+ \addspace\mkbibparens{#2}}
+ {%\unspace
+ \ifnum\blx at notetype=\tw@
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {\csuse{blx at theendnote#1}{\protecting{\blxmkbibnote{end}{#2}}}}
+ {\csuse{footnote#1}{\protecting{\blxmkbibnote{foot}{#2}}}}}}
+
+%修改脚注注释的实现
+\def\execgbfootbib%
+ {%
+ %开启引用跟踪计数器,为使用\ifciteseen等测试命令
+ \ExecuteBibliographyOptions{citetracker=true}
+
+ %
+ %重定义\footfullcite使完成css的脚注文献要求
+ \DeclareCiteCommand{\footfullcite}[\mkbibfootnote]%
+ {\defcounter{maxnames}{\blx at maxcitenames}%局部定义maxnames和minnames计数器
+ \defcounter{minnames}{\blx at mincitenames}%使footfullcite内的作者输出与正文文献表中的一致。
+ \usebibmacro{prenote}%
+ \renewbibmacro*{postnote}{%
+ \iffieldundef{postnote}%
+ {}{\setunit{\iffieldequalstr{userd}{chinese}{\unspace\gbpunctcomma}{\addcolon\addspace}}%
+ \printfield{postnote}}}%与ay样式不同,由于已修改postnote域格式,直接用printfield
+ }%
+ {\ifciteseen%
+ {\usedriver{\DeclareNameAlias{sortname}{default}}{citeseen:\thefield{entrytype}}}%\nopunct
+ {\usedriver{\DeclareNameAlias{sortname}{default}}{\thefield{entrytype}}}%
+ }%
+ {\multicitedelim}%
+ {\usebibmacro{postnote}\usebibmacro{finentry}}%
+
+
+ \DeclareCiteCommand{\fullcite}
+ {\usebibmacro{prenote}%
+ \renewbibmacro*{postnote}{%
+ \iffieldundef{postnote}%
+ {}{\setunit{\iffieldequalstr{userd}{chinese}{\unspace\gbpunctcomma}{\addcolon\addspace}}%
+ \printfield{postnote}}}%与ay样式不同,由于已修改postnote域格式,直接用printfield
+ }
+ {\ifciteseen%
+ {\usedriver{\DeclareNameAlias{sortname}{default}}{citeseen:\thefield{entrytype}}}%\nopunct
+ {\usedriver{\DeclareNameAlias{sortname}{default}}{\thefield{entrytype}}}%
+ }
+ {\multicitedelim}
+ {\usebibmacro{postnote}\usebibmacro{finentry}}%
+
+
+ \DeclareCiteCommand{\fullinnercite}
+ {\usebibmacro{prenote}%
+ \renewbibmacro*{postnote}{%
+ \iffieldundef{postnote}%
+ {}{\setunit{\iffieldequalstr{userd}{chinese}{\unspace\gbpunctcomma}{\addcolon\addspace}}%
+ \printfield{postnote}}}%与ay样式不同,由于已修改postnote域格式,直接用printfield
+ }
+ {\ifciteseen%
+ {\usedriver{\DeclareNameAlias{sortname}{default}}{citeseen:\thefield{entrytype}}}%\nopunct
+ {\usedriver{\DeclareNameAlias{sortname}{default}}{\thefield{entrytype}}}%
+ }
+ {\multicitedelim}
+ {\usebibmacro{postnote}\usebibmacro{finentry}}%
+ }
+
+
+%为先秦文献夹注做处理
+\DeclareFieldFormat*{citejz}{%
+\iffieldequalstr{userd}{chinese}{\gbpunctprl\gbpunctttl#1\gbpunctttr\gbpunctprr}%
+{\mkbibemph{#1}}}
+\DeclareCiteCommand{\citejz}
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \usebibmacro{prenote}}
+ {\ifciteindex
+ {\indexfield{indextitle}}
+ {}%
+ \printfield[citejz]{labeltitle}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+
+\DeclareFieldFormat{citetitle}{%
+\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}%
+{\mkbibemph{#1}}%
+}
+
+\DeclareFieldFormat
+ [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
+ {citetitle}{%
+ \iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}%
+ {\mkbibquote{#1\isdot}}%
+ }
+
+
+%为文献输出出版信息
+\DeclareCiteCommand{\citepub}
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \usebibmacro{prenote}}
+ {\ifciteindex
+ {\indexfield{indextitle}}
+ {}%
+ \ifentrytype{online}{\usebibmacro{institution+location+date}}{\usebibmacro{publisher+location+date}}%
+ }
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+
+\newbibmacro*{textcite}{%
+ \iffieldequals{namehash}{\cbx at lasthash}
+ {\iffieldundef{shorthand}
+ {\ifthenelse{\iffieldequals{labelyear}{\cbx at lastyear}\AND
+ \(\value{multicitecount}=0\OR\iffieldundef{postnote}\)}
+ {\setunit{\addcomma}%
+ \usebibmacro{cite:extradate}}
+ {\setunit{\compcitedelim}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{labelyear}{\cbx at lastyear}}}
+ {\setunit{\compcitedelim}%
+ \usebibmacro{cite:shorthand}%
+ \global\undef\cbx at lastyear}}
+ {\ifnameundef{labelname}
+ {\iffieldundef{shorthand}
+ {\usebibmacro{cite:label}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nonameyeardelim}\unspace\gbpunctparenlcite}%\bibopenparen
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \usebibmacro{cite:labeldate+extradate}}
+ {\usebibmacro{cite:shorthand}}}
+ {\printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nameyeardelim}\unspace\gbpunctparenlcite}%\bibopenparen
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \iffieldundef{shorthand}
+ {\iffieldundef{labelyear}
+ {\usebibmacro{cite:label}}
+ {\usebibmacro{cite:labeldate+extradate}}%
+ \savefield{labelyear}{\cbx at lastyear}}
+ {\usebibmacro{cite:shorthand}%
+ \global\undef\cbx at lastyear}}%
+ \stepcounter{textcitecount}%
+ \savefield{namehash}{\cbx at lasthash}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\gbpunctparenrcite\global\boolfalse{cbx:parens}}%\bibcloseparen
+ {}%
+ \textcitedelim}}
+
+\newbibmacro*{textcite:postnote}{%
+ \usebibmacro{postnote}%
+ \ifthenelse{\value{multicitecount}=\value{multicitetotal}}
+ {\setunit{}%
+ \printtext{%
+ \ifbool{cbx:parens}
+ {\gbpunctparenrcite\global\boolfalse{cbx:parens}}%\bibcloseparen
+ {}}}
+ {\setunit{%
+ \ifbool{cbx:parens}
+ {\gbpunctparenrcite\global\boolfalse{cbx:parens}}%\bibcloseparen
+ {}%
+ \textcitedelim}}}
+
+\let\citet=\parencite
+\let\citep=\cite
+\DeclareMultiCiteCommand{\cites}{\cite}{\multicitedelim}
+\DeclareMultiCiteCommand{\parencites}{\parencite}{\multicitedelim}
+\let\citets=\parencites
Modified: trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-css.bbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-css.bbx 2024-11-15 22:11:40 UTC (rev 72862)
+++ trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-css.bbx 2024-11-15 22:11:57 UTC (rev 72863)
@@ -1,6 +1,6 @@
%%
%% ---------------------------------------------------------------
-%% css.bbx --- A citation style of Society sciences in china
+%% chinese-css.bbx --- A bibliography style of Society sciences in china
%% modified from gb7714-2015
%% Maintained by huzhenzhen
%% E-mail: hzzmail at 163.com
@@ -229,7 +229,7 @@
%重新调整输出编者的类型
\renewbibmacro*{editor+others}{%
- \ifcitation{\ifboolexpr{
+ \ifboolexpr{
test \ifuseeditor
and
not test {\ifnameundef{editor}}
@@ -238,15 +238,7 @@
\setunit{\printdelim{editortypedelim}}%
\usebibmacro{editor+othersstrg}%
\clearname{editor}}%
- {}}%
- {\ifboolexpr{%
- test \ifuseeditor
- and
- not test {\ifnameundef{editor}}
- }%
- {\printnames{editor}%
- \clearname{editor}}
- {}}%
+ {}%
}
\renewbibmacro*{editor+othersstrg}{%
@@ -293,6 +285,7 @@
}\abx at tempb}
{\usebibmacro{editorstrg}}}
+
%去掉译前的标点
\renewbibmacro*{name:andothers}{\bibauthorfont%
\ifcitation{\ifboolexpr{test {\ifnumequal{\value{listcount}}{\value{liststop}}}
Modified: trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-jmw.bbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-jmw.bbx 2024-11-15 22:11:40 UTC (rev 72862)
+++ trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-jmw.bbx 2024-11-15 22:11:57 UTC (rev 72863)
@@ -1,6 +1,6 @@
%%
%% ---------------------------------------------------------------
-%% css.bbx --- A citation style of journal of management world in china
+%% chinese-jmw.bbx --- A bibliography style of journal of management world in china
%% modified from gb7714-2015
%% Maintained by huzhenzhen
%% E-mail: hzzmail at 163.com
Modified: trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-jmw.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-jmw.cbx 2024-11-15 22:11:40 UTC (rev 72862)
+++ trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-jmw.cbx 2024-11-15 22:11:57 UTC (rev 72863)
@@ -29,12 +29,13 @@
\def\gbpunctsemicoloncite{;}%
\def\gbpunctparenlcite{(}%
\def\gbpunctparenrcite{)}
+
\def\execgbpunctencite{%
\def\gbpunctcommacite{\addcomma\addspace}%
\def\gbpunctmarkcite{\addcomma\addspace}%
\def\gbpunctsemicoloncite{\addsemicolon\addspace}%
\def\gbpunctparenlcite{(}%
-\def\gbpunctparenrcite{)}
+\def\gbpunctparenrcite{)}%
}
%==================================================
Modified: trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx 2024-11-15 22:11:40 UTC (rev 72862)
+++ trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx 2024-11-15 22:11:57 UTC (rev 72863)
@@ -11,7 +11,7 @@
%
% 版本和时间信息
%
-\def\versionofgbtstyle{2024/03/27 v1.1q}
+\def\versionofgbtstyle{2024/11/15 v1.1s}
\def\versionofbiblatex{\abx at version}
\ProvidesFile{gb7714-2015.bbx}[\versionofgbtstyle biblatex bibliography style]
%\RequireBiber[3]%显式指定用biber后端,当用bibtex时会报错,但其实不会影响编译,只是采用bibtex后无法达成格式需求
@@ -236,6 +236,14 @@
% 设置宏包选项
%=====================================================================
%
+ % 增加一个控制是否输出与author相同的editor或bookauthor的选项
+ % 20240517,v1.1r,hzz
+ \newtoggle{bbx:gbnosameeditor}
+ \DeclareBibliographyOption{gbnosameeditor}[false]{%biblatex低版本
+ \settoggle{bbx:gbnosameeditor}{#1}}
+ \ExecuteBibliographyOptions{gbnosameeditor}
+
+ %
% 增加一个控制是否输出and others信息的选项
% 20240315,v1.1p,hzz
\newtoggle{bbx:gbnoothers}
@@ -2480,7 +2488,7 @@
}
%
-\newbibmacro*{byeditor+others}{%
+\renewbibmacro*{byeditor+others}{%
\ifnameundef{editor}
{}
{\iffieldequalstr{userd}{chinese}{}{\usebibmacro{byeditor+othersstrg}%
@@ -3247,6 +3255,9 @@
%为了实现v3.8以上版本的双语文献,采用related的方法代替set方法,因为set方法已经无法实现了,
%因为set不再复制其第一个成员的信息。于是定义一个命令,用于动态的修改数据,即添加related域的信息
%其中使用了\DeclareStyleSourcemap,但由于其只能出现在导言区中,因此\defdoublelangentry命令也只能出现在导言区中
+ %20240911-修改
+ %修正match多次匹配related文献的问题,当要文献A关联文献B时,若B的entrykey中包含A的entrykey的信息
+ %之前因为不是全词匹配,则B也会被加上related域,因此采用全词匹配的方式避免该问题
\newcommand{\defdoublelangentry}[2]{%
\edef\entrykeya{##1}
\edef\entrykeyb{##2}
@@ -3253,7 +3264,7 @@
\DeclareStyleSourcemap{
\maps[datatype=bibtex]{
\map{
- \step[fieldsource=entrykey, match=\entrykeya, final]
+ \step[fieldsource=entrykey, match=\regexp{^}\entrykeya\regexp{$}, final]
\step[fieldset=related, fieldvalue=\entrykeyb]
}
}
@@ -3748,15 +3759,19 @@
% v1.0q 2019-03-01 hzz
% 不再对editor和bookauthor做sourcemap,而是下面的宏内逻辑代替,
% 使得除使用bookauthor外也可以使用editor,便于在使用editor时使用editortype
+% v1.1r 2024-05-17 hzz
+% 增加选项gbnosameeditor后根据其来确定是否输出与author相同的editor或bookauthor
\renewbibmacro*{bybookauthor}{%
\ifnameundef{bookauthor}%
{\ifnameundef{editor}%
{}%
{\ifnamesequal{author}{editor}%
- {}{\usebibmacro{editor}}}%
+ {\iftoggle{bbx:gbnosameeditor}{\clearname{editor}}{\usebibmacro{editor}}%
+ }{\usebibmacro{editor}}}%
}%
{\ifnamesequal{author}{bookauthor}%
- {}{\printnames{bookauthor}}%
+ {\iftoggle{bbx:gbnosameeditor}{\clearname{bookauthor}}{\printnames{bookauthor}}%
+ }{\printnames{bookauthor}}%
}%
}
@@ -4287,6 +4302,7 @@
\usebibmacro{institution+location+date}%
%\usebibmacro{organization+location+date}%
%\newunit\newblock
+ \usebibmacro{chapter+pages}%
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
Modified: trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.cbx 2024-11-15 22:11:40 UTC (rev 72862)
+++ trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.cbx 2024-11-15 22:11:57 UTC (rev 72863)
@@ -168,7 +168,9 @@
%\DeclareDelimFormat[textcite]{andothersdelim}{\addspace}%
\renewcommand*{\compcitedelim}{\addcomma}%\addcomma\addthinspace
\renewcommand*{\supercitedelim}{\addcomma}
-\renewcommand*{\multicitedelim}{\addcomma}
+\DeclareDelimFormat{multicitedelimiter}{\addcomma}%新定义一个multicitedelim来区分不同标注命令下的空格处理
+\DeclareDelimFormat[parencite]{multicitedelimiter}{\addcomma\addthinspace}%太窄则用addspace
+\renewcommand*{\multicitedelim}{\printdelim{multicitedelimiter}}
%
%将连续3篇文献压缩改为连续2篇文献压缩
Modified: trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx 2024-11-15 22:11:40 UTC (rev 72862)
+++ trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx 2024-11-15 22:11:57 UTC (rev 72863)
@@ -10,7 +10,7 @@
%
% 版本和时间信息
%
-\def\versionofgbtstyle{2024/03/27 v1.1q}
+\def\versionofgbtstyle{2024/11/15 v1.1s}
\def\versionofbiblatex{\abx at version}
\ProvidesFile{gb7714-2015ay.bbx}[\versionofgbtstyle biblatex bibliography style]
%\RequireBiber[3]%显式指定用biber后端,当用bibtex时会报错,但其实不会影响编译,只是采用bibtex后无法达成格式需求
@@ -233,6 +233,14 @@
% 设置宏包选项
%=====================================================================
%
+ % 增加一个控制是否输出与author相同的editor或bookauthor的选项
+ % 20240517,v1.1r,hzz
+ \newtoggle{bbx:gbnosameeditor}
+ \DeclareBibliographyOption{gbnosameeditor}[false]{%biblatex低版本
+ \settoggle{bbx:gbnosameeditor}{#1}}
+ \ExecuteBibliographyOptions{gbnosameeditor}
+
+ %
% 增加一个控制是否输出and others信息的选项
% 20240315,v1.1p,hzz
\newtoggle{bbx:gbnoothers}
@@ -241,6 +249,39 @@
\ExecuteBibliographyOptions{gbnoothers}
%
+ % 增加一个控制是否输出恢复传统crossref作用的选项
+ % 20210216,v1.0w,hzz
+ \newtoggle{bbx:citexref}
+ \DeclareBibliographyOption{citexref}[true]{%
+ \settoggle{bbx:citexref}{#1}}
+ \ExecuteBibliographyOptions{citexref}
+
+ \newbibmacro*{citexref}{%
+ \printtext[bibhyperref]{%
+ \printfield{labelprefix}%
+ \printfield{labelnumber}%
+ \ifbool{bbx:subentry}
+ {\printfield{entrysetcount}}
+ {}}}
+
+ \DeclareCiteCommand{\bbx at xrefcite}[\mkbibbrackets]%
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \boolfalse{backtracker}}
+ {\usebibmacro{citexref}}
+ {}
+ {}
+
+ \newbibmacro*{crosscite}[1]{%
+ \iftoggle{bbx:citexref}
+ {\iffieldundef{crossref}
+ {\iffieldundef{xref}
+ {\usebibmacro{#1}}
+ {\printtext{\bbx at xrefcite{\thefield{xref}}}}}
+ {\printtext{\bbx at xrefcite{\thefield{crossref}}}}}
+ {\usebibmacro{#1}}}
+
+ %
% 增加一个控制是否输出文献载体的选项
% 20191125,v1,0s,hzz
\newtoggle{bbx:gbmedium}
@@ -2023,7 +2064,7 @@
\DeclareStyleSourcemap{
\maps[datatype=bibtex]{
\map{
- \step[fieldsource=entrykey, match=\entrykeya, final]
+ \step[fieldsource=entrykey, match=\regexp{^}\entrykeya\regexp{$}, final]
\step[fieldset=related, fieldvalue=\entrykeyb]
}
}
@@ -3219,6 +3260,10 @@
\DeclareListAlias{institution}{location}
\DeclareListAlias{publisher}{location}
+%定义出版社与年份之间的标点便于后面重定义
+\newcommand{\pubdatadelim}{\setunit*{\addcomma\space}}
+\newcommand{\locnopubdelim}{\setunit*{\addcomma\space}}
+
% 新增一个样式用于输出连续出版物的地址,单位,时间,
% 用于periodical连续出版物的出版社和地址的处理
%
@@ -3239,7 +3284,7 @@
\iflistundef{institution}{%
\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str at nopublisher\gbrightbracket}}{\printtext{\mkbibbrackets{s.n.}}}}%
{\printlist{institution}}}%
-\setunit{\addcomma\addspace}%
+\pubdatadelim%
%\usebibmacro{date}%
\printfield{year}%
\bibrangedash%
@@ -3250,7 +3295,7 @@
{\setunit*{\addcomma\space}}
{\setunit*{\publocpunct}}%
\printlist{institution}%
- \setunit*{\addcomma\space}%
+ \pubdatadelim%
\usebibmacro{date}%
\newunit}%
}
@@ -3277,15 +3322,15 @@
{\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str at nopublisher\gbrightbracket}\setunit{\adddot\addspace}\setunit*{\addcomma\addspace}}%
{\printtext{\mkbibbrackets{s.n.}}\setunit{\adddot\addspace}\setunit*{\addcomma\addspace}}}}%
{\printlist{publisher}}}%
-\setunit*{\addcomma\addspace}%\addcomma\addspace%
+\pubdatadelim%%\addcomma\addspace%
\usebibmacro{date}%%\newunit %去掉这个标点
}%
{\printlist{location}%
\iflistundef{publisher}
- {\setunit*{\addcomma\space}}
+ {\locnopubdelim}
{\setunit*{\publocpunct}}%
\printlist{publisher}%
- \setunit*{\addcomma\space}%
+ \pubdatadelim%
\usebibmacro{date}%%\newunit
}%
}
@@ -3301,7 +3346,7 @@
{\setunit*{\addcomma\space}}
{\setunit*{\publocpunct}}%
\printlist{institution}%
- \setunit*{\addcomma\space}%
+ \pubdatadelim%
\usebibmacro{date}%
%\newunit
}}
@@ -3493,6 +3538,8 @@
}
+\newtoggle{bbx:gbmergedate}
+\settoggle{bbx:gbmergedate}{true}
%
%为mergedate增加选项none,即实现年份不提前到作者后面的标签中
%也不打印用于区分同作者同年份文献的标识符如(a,b,c)
@@ -3499,6 +3546,7 @@
%目的是实现一些特殊的文献表样式比如ucas的作者年制
%v1.0q,20190212,hzz
\def\bbx at opt@mergedate at none{%
+ \global\togglefalse{bbx:gbmergedate}
\renewbibmacro*{date+extradate}{%
\iffieldundef{labelyear}
{}
@@ -3525,6 +3573,7 @@
}
\def\bbx at opt@mergedate at false{%
+ \global\togglefalse{bbx:gbmergedate}
\renewbibmacro*{date+extradate}{%
\iffieldundef{labelyear}
{}
@@ -3574,7 +3623,7 @@
\printfield[titlecase]{booktitle}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{booksubtitle}}%
- \newunit%标点换成下一句
+ %\newunit%标点换成下一句
\setunit{\subtitlepunct}}%
\printfield{booktitleaddon}}
@@ -3584,24 +3633,27 @@
% 原理方法:因为作者年制年份提到前面,因此涉及到期刊名与后面的卷期的关系。
% v1.0k,20180425,增加了字体控制命令,hzz
% v1.1j,20220527,修复期刊名不存在时多余的标点
+% v1.1q,20240514,修复卷不存在时期刊名与期之间引入的标点(并考虑mergedate选项的问题)
\renewbibmacro*{journal+issuetitle}{\bibpubfont%源来自standard.bbx
\usebibmacro{journal}%
- %\setunit*{\addspace}%
- \iffieldundef{journaltitle}{}{\setunit*{\addcomma\addspace}}%修改为增加一个逗号
\iffieldundef{series}%
{}%
{\newunit%
\printfield{series}%
\setunit{\addspace}}%
- %\usebibmacro{volume+number+eid}%
- %\setunit{\addspace}%
- \printtext{\usebibmacro{issue+date}}%使用printtext配合后面的\setunit*来实现后面的逗号的自动处理
- %\setunit{\addcolon\space}%
- \iffieldundef{volume}{}{\setunit*{\addcomma\space}}%
- %换成逗号和空格
- %\usebibmacro{issue}%
+ \iftoggle{bbx:gbmergedate}{%year提到前面作为extrayear
+ \iffieldundef{entrysubtype}{}%判断是否为报纸
+ {\iffieldequalstr{entrysubtype}{news}{\setunit*{\addcomma\addspace}}{}}%%
+ \printtext{\usebibmacro{issue+date}}%
+ \iffieldundef{volume}{}{\setunit*{\addcomma\addspace}}%
+ }%反之则,期刊也要求输出year
+ {\iffieldundef{journaltitle}{}%若存在期刊,那么就加入逗号
+ {\setunit*{\addcomma\addspace}}\printtext{\usebibmacro{issue+date}}%
+ \iffieldundef{volume}{}%若不存在卷则要考虑前面是否存在期刊和year,若存在加入逗号,否则不加入
+ {\ifboolexpr{test {\iffieldundef{journaltitle}} and test {\iffieldundef{year}}}%
+ {}{\setunit*{\addcomma\addspace}}}%
+ }%
\usebibmacro{volume+number+eid}%把卷期放到年份后面
- %\newunit
}
%
@@ -3804,15 +3856,19 @@
% v1.0q 2019-03-01 hzz
% 不再对editor和bookauthor做sourcemap,而是下面的宏内逻辑代替,
% 使得除使用bookauthor外也可以使用editor,便于在使用editor时使用editortype
+% v1.1r 2024-05-17 hzz
+% 增加选项gbnosameeditor后根据其来确定是否输出与author相同的editor或bookauthor
\renewbibmacro*{bybookauthor}{%
\ifnameundef{bookauthor}%
{\ifnameundef{editor}%
{}%
{\ifnamesequal{author}{editor}%
- {}{\usebibmacro{editor}}}%
+ {\iftoggle{bbx:gbnosameeditor}{\clearname{editor}}{\usebibmacro{editor}}%
+ }{\usebibmacro{editor}}}%
}%
{\ifnamesequal{author}{bookauthor}%
- {}{\printnames{bookauthor}}%
+ {\iftoggle{bbx:gbnosameeditor}{\clearname{bookauthor}}{\printnames{bookauthor}}%
+ }{\printnames{bookauthor}}%
}%
}
@@ -4381,17 +4437,11 @@
%
-% 专著中的析出文献的格式修改
-%
-\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}%
+% 增加inbook:parent用于辅助crossref传统功能的实现
+% 用在{crosscite}宏中
+% 20210216,v1.0w,hzz
+\newbibmacro*{inbook:parent}{%
+\usebibmacro{bybookauthor}%
\ifnameundef{bookauthor}{%
\ifnameundef{editor}{}{\newunit}%
}{\newunit}%替换下一句
@@ -4418,7 +4468,24 @@
\newunit\newblock
%\printfield{note}%
%\newunit\newblock
- \usebibmacro{publisher+location+date}%
+ \usebibmacro{publisher+location+date}}
+
+%
+% 专著中的析出文献的格式修改
+%
+\DeclareBibliographyDriver{inbook}{%源来自standard.bbx
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/translator+others}%
+ \ifboolexpr{
+ test {\ifnameundef{author}}
+ and
+ test {\ifnameundef{translator}}
+ }{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+\usebibmacro{title}%
+\usebibmacro{in:}%
+%\printtext{\texttt{//}\addthinspace}%
+\usebibmacro{crosscite}{inbook:parent}%
%\newunit\newblock
\usebibmacro{chapter+pages}%
%\newunit\newblock
@@ -4438,4 +4505,4 @@
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
- \usebibmacro{finentry}\usebibmacro{annotation}}
+ \usebibmacro{annotation}\usebibmacro{finentry}}
Modified: trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.cbx 2024-11-15 22:11:40 UTC (rev 72862)
+++ trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.cbx 2024-11-15 22:11:57 UTC (rev 72863)
@@ -181,7 +181,7 @@
{\iffieldundef{shorthand}
{\ifthenelse{\iffieldequals{labelyear}{\cbx at lastyear}\AND
\(\value{multicitecount}=0\OR\iffieldundef{postnote}\)}
- {\setunit{\addcomma}%
+ {\setunit{\compextradelim}%\addcomma
\usebibmacro{cite:extradate}}
{\setunit{\compcitedelim}%
\usebibmacro{cite:labeldate+extradate}%
@@ -323,7 +323,7 @@
\cite}
\newrobustcmd{\mkbiboutparens}[1]{%
- \unspace\allowhyphens%
+ \allowhyphens%
\begingroup\mkbibleftborder#1\mkbibrightborder\endgroup}%
%
Modified: trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ms.bbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ms.bbx 2024-11-15 22:11:40 UTC (rev 72862)
+++ trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ms.bbx 2024-11-15 22:11:57 UTC (rev 72863)
@@ -11,7 +11,7 @@
%
% 版本和时间信息
%
-\def\versionofgbtstyle{2024/03/27 v1.1q}
+\def\versionofgbtstyle{2024/11/15 v1.1s}
\def\versionofbiblatex{\abx at version}
\ProvidesFile{gb7714-2015ms.bbx}[\versionofgbtstyle biblatex bibliography style]
%\RequireBiber[3]%显式指定用biber后端,当用bibtex时会报错,但其实不会影响编译,只是采用bibtex后无法达成格式需求
@@ -120,6 +120,14 @@
% 设置宏包选项
%=====================================================================
%
+ % 增加一个控制是否输出与author相同的editor或bookauthor的选项
+ % 20240517,v1.1r,hzz
+ \newtoggle{bbx:gbnosameeditor}
+ \DeclareBibliographyOption{gbnosameeditor}[false]{%biblatex低版本
+ \settoggle{bbx:gbnosameeditor}{#1}}
+ \ExecuteBibliographyOptions{gbnosameeditor}
+
+ %
% 增加一个控制是否输出and others信息的选项
% 20240315,v1.1p,hzz
\newtoggle{bbx:gbnoothers}
@@ -1847,7 +1855,7 @@
\DeclareStyleSourcemap{
\maps[datatype=bibtex]{
\map{
- \step[fieldsource=entrykey, match=\entrykeya, final]
+ \step[fieldsource=entrykey, match=\regexp{^}\entrykeya\regexp{$}, final]
\step[fieldset=related, fieldvalue=\entrykeyb]
}
}
@@ -2485,15 +2493,19 @@
% v1.0q 2019-03-01 hzz
% 不再对editor和bookauthor做sourcemap,而是下面的宏内逻辑代替,
% 使得除使用bookauthor外也可以使用editor,便于在使用editor时使用editortype
+% v1.1r 2024-05-17 hzz
+% 增加选项gbnosameeditor后根据其来确定是否输出与author相同的editor或bookauthor
\renewbibmacro*{bybookauthor}{%
\ifnameundef{bookauthor}%
{\ifnameundef{editor}%
{}%
{\ifnamesequal{author}{editor}%
- {}{\usebibmacro{editor}}}%
+ {\iftoggle{bbx:gbnosameeditor}{\clearname{editor}}{\usebibmacro{editor}}%
+ }{\usebibmacro{editor}}}%
}%
{\ifnamesequal{author}{bookauthor}%
- {}{\printnames{bookauthor}}%
+ {\iftoggle{bbx:gbnosameeditor}{\clearname{bookauthor}}{\printnames{bookauthor}}%
+ }{\printnames{bookauthor}}%
}%
}%
% 责任者如果没有author用editor或translator替代
Modified: trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015mx.bbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015mx.bbx 2024-11-15 22:11:40 UTC (rev 72862)
+++ trunk/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015mx.bbx 2024-11-15 22:11:57 UTC (rev 72863)
@@ -11,7 +11,7 @@
%
% 版本和时间信息
%
-\def\versionofgbtstyle{2024/03/27 v1.1q}
+\def\versionofgbtstyle{2024/11/15 v1.1s}
\def\versionofbiblatex{\abx at version}
\ProvidesFile{gb7714-2015mx.bbx}[\versionofgbtstyle biblatex bibliography style]
%\RequireBiber[3]%显式指定用biber后端,当用bibtex时会报错,但其实不会影响编译,只是采用bibtex后无法达成格式需求
@@ -147,6 +147,14 @@
% 设置宏包选项
%=====================================================================
%
+ % 增加一个控制是否输出与author相同的editor或bookauthor的选项
+ % 20240517,v1.1r,hzz
+ \newtoggle{bbx:gbnosameeditor}
+ \DeclareBibliographyOption{gbnosameeditor}[false]{%biblatex低版本
+ \settoggle{bbx:gbnosameeditor}{#1}}
+ \ExecuteBibliographyOptions{gbnosameeditor}
+
+ %
% 增加一个控制是否输出and others信息的选项
% 20240315,v1.1p,hzz
\newtoggle{bbx:gbnoothers}
@@ -1923,7 +1931,7 @@
\patchcmd{\abx at macro@title}{\newunitpunct}{}{}{}}}{}
}
-\newbibmacro*{byeditor+others}{%
+\renewbibmacro*{byeditor+others}{%
\ifnameundef{editor}
{}
{\iffieldequalstr{userd}{chinese}{}{\usebibmacro{byeditor+othersstrg}%
@@ -2430,7 +2438,7 @@
\DeclareStyleSourcemap{
\maps[datatype=bibtex]{
\map{
- \step[fieldsource=entrykey, match=\entrykeya, final]
+ \step[fieldsource=entrykey, match=\regexp{^}\entrykeya\regexp{$}, final]
\step[fieldset=related, fieldvalue=\entrykeyb]
}
}
@@ -2822,15 +2830,19 @@
% v1.0q 2019-03-01 hzz
% 不再对editor和bookauthor做sourcemap,而是下面的宏内逻辑代替,
% 使得除使用bookauthor外也可以使用editor,便于在使用editor时使用editortype
+% v1.1r 2024-05-17 hzz
+% 增加选项gbnosameeditor后根据其来确定是否输出与author相同的editor或bookauthor
\renewbibmacro*{bybookauthor}{%
\ifnameundef{bookauthor}%
{\ifnameundef{editor}%
{}%
{\ifnamesequal{author}{editor}%
- {}{\usebibmacro{editor}}}%
+ {\iftoggle{bbx:gbnosameeditor}{\clearname{editor}}{\usebibmacro{editor}}%
+ }{\usebibmacro{editor}}}%
}%
{\ifnamesequal{author}{bookauthor}%
- {}{\printnames{bookauthor}}%
+ {\iftoggle{bbx:gbnosameeditor}{\clearname{bookauthor}}{\printnames{bookauthor}}%
+ }{\printnames{bookauthor}}%
}%
}
More information about the tex-live-commits
mailing list.