From e9f267fd4c8414d6146c5fee0dbe459613dd0f3b Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Tue, 4 Apr 2023 03:01:33 +0000 Subject: CTAN sync 202304040301 --- .../biblatex-gb7714-2015/README.md | 10 +- .../biblatex-gb7714-2015/biblatex-gb7714-2015.pdf | Bin 1687196 -> 1711461 bytes .../biblatex-gb7714-2015/biblatex-gb7714-2015.tex | 186 +++++- .../biblatex-gb7714-2015/chinese-css.bbx | 647 +++++++++++++++++++++ .../biblatex-gb7714-2015/chinese-css.cbx | 95 +++ .../biblatex-gb7714-2015/chinese-erj.bbx | 2 +- .../biblatex-gb7714-2015/chinese-erj.cbx | 2 +- .../biblatex-gb7714-2015/gb7714-2015.bbx | 60 +- .../biblatex-gb7714-2015/gb7714-2015.cbx | 19 +- .../biblatex-gb7714-2015/gb7714-2015ay.bbx | 46 +- .../biblatex-gb7714-2015/makeall.py | 2 +- .../latex/contrib/widows-and-orphans/changes.txt | 9 + .../widows-and-orphans/widows-and-orphans-code.pdf | Bin 584816 -> 586443 bytes .../widows-and-orphans/widows-and-orphans-doc.pdf | Bin 305364 -> 306153 bytes .../widows-and-orphans/widows-and-orphans.dtx | 36 +- 15 files changed, 1064 insertions(+), 50 deletions(-) create mode 100644 macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-css.bbx create mode 100644 macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-css.cbx (limited to 'macros/latex/contrib') diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/README.md b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/README.md index 8400ad2a7e..a2335e41c9 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/README.md +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/README.md @@ -1,4 +1,4 @@ -Date of last change: 2022-11-07 to version v1.1k +Date of last change: 2023-03-31 to version v1.1l # biblatex-gb7714-2015: a biblatex style package @@ -1310,7 +1310,9 @@ biblatex中处理顺序数字编码压缩的代码默认从3个连续编码开 + example - ![cls-beamer.tex](example/cls-beamer.tex) 测试beamer中的使用(gb7714-2015样式) - ![cls-beameray.tex](example/cls-beameray.tex) 测试beamer中的使用(gb7714-2015ay样式) - - ![codeopt-gbcodegbk.tex](example/codeopt-gbcodegbk.tex) 测试gb7714-2015、ay样式,对于GBK编码文档的兼容性 + - ![codeopt-gbcodegbk.tex](example/codeopt-gbcodegbk.tex) 测试gb7714-2015、ay样式,对于GBK编码文档的兼容性 + - ![teststyleerj.tex](example/teststyleerj.tex) 测试chinese-erj样式 + - ![teststylecss.tex](example/teststylecss.tex) 测试chinese-css样式 - ![eg-opt-gbstyle.tex](example/eg-opt-gbstyle.tex) 测试gb7714-2015ms样式一篇文档中中英文两种格式设置,多语言对照,多语言混合文献表 - ![testallformat.tex](example/testallformat.tex) 测试全面的类型、格式 - ![egtest.tex](example/egtest.tex) 测试示例 @@ -1333,9 +1335,11 @@ biblatex中处理顺序数字编码压缩的代码默认从3个连续编码开 - ![opt-gblocal.tex](example/opt-gblocal.tex) 测试本地化字符串设置(引用标注标签、文献表) - ![test-setlocal.tex](example/test-setlocal.tex) 测试本地化字符串设置(多种方法局部调整) - ![test-setlocal-multilan.tex](example/test-setlocal-multilan.tex) 测试本地化字符串设置(多种语言的局部调整) + - ![test-resume.tex](example/test-resume.tex) 测试研究成果、学术成果(文献表)的局部化格式调整 - ![opt-gbnamefmt.tex](example/opt-gbnamefmt.tex) 测试gbnamefmt对于作者姓名格式的控制 - ![opt-gbnamefmt-default.tex](example/opt-gbnamefmt-default.tex) 测试gbnamefmt对于作者姓名格式的控制 - ![opt-gbnamefmt-quanpin.tex](example/opt-gbnamefmt-quanpin.tex) 测试gbnamefmt对于作者姓名格式的控制 + - ![test-addfieldnameformat.tex](example/test-addfieldnameformat.tex) 测试给指定的文献设定nameformat域 - ![opt-gbnoauthor-false.tex](example/opt-gbnoauthor-false.tex) 测试gbnoauthor选项 - ![opt-gbnoauthor-true.tex](example/opt-gbnoauthor-true.tex) 测试gbnoauthor选项 - ![opt-gbpub-true.tex](example/opt-gbpub-true.tex) 测试gbpub选项 @@ -1343,7 +1347,6 @@ biblatex中处理顺序数字编码压缩的代码默认从3个连续编码开 - ![opt-gbtitlelink.tex](example/opt-gbtitlelink.tex) 测试gbtitlelink选项 - ![opt-gbtype.tex](example/opt-gbtype.tex) 测试gbtype选项 - ![opt-hyperref-backref.tex](example/opt-hyperref-backref.tex) 测试backrref选项,反向超链接 - - ![teststyleerj.tex](example/teststyleerj.tex) 测试chinese-erj样式 - ![test-translator-in-other-lan.tex](example/test-translator-in-other-lan.tex) 测试译著的其它语言的译者格式 - ![test-space-after-citelabel-inCJKline.tex](example/test-space-after-citelabel-inCJKline.tex) 测试删除标注后因为xeCJK加入的空格 - ![test-special-chars-in-fields.tex](example/test-special-chars-in-fields.tex) 测试不同域中存在的特殊字符处理 @@ -1593,6 +1596,7 @@ please see the file 'biblatex-gb7714-2015.pdf' for further information! * 2022/05/17 v1.1i,ctan,github * 2022/08/29 v1.1j,ctan,github * 2022/11/07 v1.1k,ctan,github +* 2023/03/31 v1.1l,ctan,github --------------------------------------------------------- ## Update history: diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf index 6fa77022da..96d3e9a725 100644 Binary files a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf and b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf differ diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.tex b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.tex index 8cc383e940..45cea13bd6 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.tex +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.tex @@ -180,6 +180,7 @@ GB/T 7714标准的理解和解释(\ref{sec:gbt:std}节)、 \node[below of=mscbbx,fill=gbgrey!20,yshift=8mm,text width=2cm] (mxcbbx) {\tiny \textcolor{black}{gb7715-2015mx.c/bbx}}; \node[below of=mxcbbx,fill=gbgrey!20,yshift=8mm,text width=2cm] (gbkdef) {\tiny \textcolor{black}{gb7715-2005/ay.c/bbx}}; \node[below of=gbkdef,fill=gbgrey!20,yshift=8mm,text width=2cm] (erjcbbx) {\tiny \textcolor{black}{chinese-erj.c/bbx}}; +\node[below of=erjcbbx,fill=gbgrey!20,yshift=8mm,text width=2cm] (csscbbx) {\tiny \textcolor{black}{chinese-css.c/bbx}}; %\node[below of=msbbx,fill=gbgrey!20,yshift=8mm,text width=2cm] (mscbx) {\tiny \textcolor{black}{gb7715-2015ms.cbx}}; \draw[color=blue,semithick] (numcbbx.west) -- ($(numcbbx.west)+(-3mm,0mm)$) ; @@ -188,9 +189,10 @@ GB/T 7714标准的理解和解释(\ref{sec:gbt:std}节)、 \draw[color=blue,semithick] (mxcbbx.west) -- ($(mxcbbx.west)+(-3mm,0mm)$) ; \draw[color=blue,semithick] (gbkdef.west) -- ($(gbkdef.west)+(-3mm,0mm)$) ; \draw[color=blue,semithick] (erjcbbx.west) -- ($(erjcbbx.west)+(-3mm,0mm)$) ; +\draw[color=blue,semithick] (csscbbx.west) -- ($(csscbbx.west)+(-3mm,0mm)$) ; %\draw[color=blue,semithick] (mscbx.west) -- ($(mscbx.west)+(-3mm,0mm)$) ; -\draw[color=blue,semithick] ($(erjcbbx.west)+(-3mm,0mm)$) -- ($(style.center)+(-12mm,-2.5mm)$) ; +\draw[color=blue,semithick] ($(csscbbx.west)+(-3mm,0mm)$) -- ($(style.center)+(-12mm,-2.5mm)$); \node[below of=manual,fill=gbsteelblue!15,yshift=0.5cm,xshift=2mm,text width=2.8cm] (mtex) {\tiny \textcolor{black}{biblatex-gb7714-2015.tex}}; \node[below of=mtex,fill=gbsteelblue!15,yshift=8mm,text width=2.8cm] (mpdf) {\tiny \textcolor{black}{biblatex-gb7714-2015.pdf}}; @@ -370,7 +372,7 @@ perl gb7714texttobib.pl in=textfilename out=bibfilename 其中,v1.0m版本增加的gb7714-2015ms样式文件,主要是为了在一个文献表中针对不同语言使用不同多种样式,比如中文文献使用GB/T 7714-2015规定的著录格式,而其它语言文献使用biblatex提供的标准样式。v1.0r版本增加了gb7714-2015mx样式,主要是为了在一个文档中针对不同参考文献分节使用不同的参考文献样式,比如某些节使用著者年份制,某些节使用顺序编码制。尽管这些方式不常用,但偶尔也有需求,所以都做了实现。 -另外应东升要求,v1.0r版本增加了chinese-erj样式用于生成经济研究期刊的文献。且在egthesis文件夹内,针对国内一些大学的学位论文文献要求,基于国标样式做了一些定制和测试。 +另外根据需求,v1.0r版本增加了chinese-erj样式用于生成经济研究期刊的文献,v1.1l版本增加了chinese-css样式用于生成社会科学期刊的脚注注释。且在egthesis文件夹内,针对国内一些大学的学位论文文献要求,基于国标样式做了一些定制和测试。 \pdfbookmark[4]{chinese-erj}{chinese-erj} \begin{example}{经济研究期刊文献样式(chinese-erj)}{eg:gbchineseerj} @@ -380,6 +382,14 @@ perl gb7714texttobib.pl in=textfilename out=bibfilename \end{texlist} \end{example} +\pdfbookmark[4]{chinese-css}{chinese-css} +\begin{example}{社会科学期刊文献样式(chinese-css)}{eg:gbchinesecss} +\begin{texlist} +%使用社会科学期刊文献样式 +\usepackage[backend=biber,style=chinese-css,gbfootbib=true,gbfnperpage=true]{biblatex} +\end{texlist} +\end{example} + 尽管国标1987和2005版本已经过时,但仍然有些地方还在使用,所以1.0z版本增加了gb7714-1987和gb7714-2005两个版本的样式,也分顺序编码和著者年份制: \pdfbookmark[4]{gb7714-1987}{gb7714-1987} @@ -678,13 +688,13 @@ leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt] \end{figure} - \pdfbookmark[4]{erjpunctcn}{erjpunctcn} - \item[erjpunctcn]=\textbf{true},false. \hfill default is true + \pdfbookmark[4]{gbpunctcn}{gbpunctcn} + \item[gbpunctcn]=\textbf{true},false. \hfill default is true - 为chinese-erj样式控制文献表中的标点增加的选项。 + 为chinese-erj、chinese-css样式控制文献表中的标点增加的选项。 \begin{itemize} - \item erjpunctcn=true,使用格式要求的中文标点(即全角标点)。 - \item erjpunctcn=false,则将所有的文献中的标点改为英文标点(即半角标点)。 + \item gbpunctcn=true,chinese-erj使用格式要求的中文标点(即全角标点),chinese-css注释中的中文文献使用中文标点。 + \item gbpunctcn=false,则将所有的文献中的标点改为英文标点(即半角标点)。 \end{itemize} 需要注意的是:若只想修改英文文献的全部标点为半角标点,而中文文献的标点不变,可在导言区采用如下方式修改英文文献的标点: @@ -1009,6 +1019,26 @@ leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt] \end{description} +\subsubsection{新增的重要命令}\label{sec:add:cmd} + +\begin{description} + \item[defdoublelangentry] \{entrykey1\}\{entrykey2\} + + 用于定义双语对照文献,将entrykey2条目和entrykey1条目关联起来,在文献表中对照输出。比如: + \verb|\defdoublelangentry{entrykey1}{entrykey2}|,若entrykey1条目是中文的文献,entrykey2条目是对应entrykey1条目的英文形式,那么该命令会使得在文献表中,entrykey2的英文内容紧跟在entrykey1的中文内容后对照输出。该命令也只能出现在导言区中。 + + \item[addEntryField] \{entrykey or entrykey comma list\}\{field\}\{fieldvalue\} + + 用于给指定的文献条目(集)添加域。即将field=\{fieldvalue\}这样的域信息添加到指定的entrykey条目或者entrykey comma list条目集中。比如: + + \verb|\addEntryField{author2007en,author2014en}{nameformat}{quanpin}| + + 将会为author2007en,author2014en两个条目添加nameformat域信息。 + 该命令也只能出现在导言区中。 + +\end{description} + + \subsubsection{兼容的标准选项}\label{sec:old:opt} 绝大部分biblatex标准样式选项可与gb7714-2015样式联合使用,下面给出一些经过兼容性测试的选项说明。需要注意的是:使用gb7714-2015样式时(即style=gb7714-2015),backend选择应指定为biber,还有一些选项已经在样式设计中固定,如果要严格使用国标样式,一般不应做修改,比如sorting,maxnames,minnames,date,useprefix,giveninits等,但如果用户有自己的其它需求,则可按需修改。 @@ -1759,7 +1789,7 @@ biber -l zh__stroke jobname 其中,排序模板优先使用persort域进行排序,接着是与文种相关的lansortorder域,接着是sortkey域(该域在biblatex中就是key域的别名),接着是sortname等作者姓名相关的域,要让文献根据多音字习惯音进行排序,那么就在key域中设置文献作者姓名的习惯音。比如三篇文献作者分别是[李四]、[J. B. Conway]、[曾三]。在设置sorting=multipinyin, gblanorder=chineseahead, sortlocale=zh\_\_pinyin的情况下,根据上述的multipinyin排序模板,首先根据文种和作者信息将中文文献[曾三][李四]排在前面,接着是[J. B. Conway],因为默认情况下,曾字考虑的读音是ceng2,但这不是我们希望得到的。 -所以需要手动将key域设置为中文的拼音,比如[李四]文献设置key=\{li3si4\},而[曾三]文献设置key=\{zeng1san1\},那么中文文献仍然排在前面,但根据key域的设置会将[李四]文献排列在[曾三]前面。因此手动设置作者姓名的习惯拼音后,文献排列正确,顺序为:[李四][曾三][J. B. Conway]。 需要注意的是:手动设置拼音是一个不轻松的活,所以我们可以使用自动设置拼音的工具,详见 +所以需要手动将key域设置为中文的拼音,比如[李四]文献设置key=\{li3si4\},而[曾三]文献设置key=\{zeng1san1\},那么中文文献仍然排在前面,但根据key域的设置会将[李四]文献排列在[曾三]前面。因此手动设置作者姓名的习惯拼音后,文献排列正确,顺序为:[李四][曾三][J. B. Conway]。 需要注意的是:若要手动设置拼音则需要对文献表中的全部中文文献设置否则利用key域排序就会失效,而这并是一个轻松的活,此时我们可以使用自动设置拼音的工具,详见 \href{https://www.latexstudio.net/index/details/index/ids/1546}{为中文参考文献自动添加排序用的拼音信息域},\href{https://github.com/hushidong/biblatex-map}{bibmap宏包}。 @@ -1769,6 +1799,19 @@ biber -l zh__stroke jobname 根据上述的排序逻辑可知,要做排序的调整首先可以考虑合理地设置选项,来选择合适的排序模板、文种顺序和本地化字符排序调整方案。当不满足要求时,可以自定义排序模板,并设置sorting选项为该模板,来实现用户需要的排序方式。 +\subsubsection{姓名中的多音字排序调整} + +前一小节在介绍排序模板时,附带介绍了姓名多音字处理的一种方法,具体来说,就是人工或者利用bibmap工具为bib文件中的各个中文条目添加key域,用于指定中文的多音字的拼音,从而使排序时使用这个在key域指定的拼音进行排序。 + +为避免这一添加拼音到key域的操作,这里提供另一种可能更为方便的方法。biber在做排序时实际上是利用 perl 的 Unicode::Collation::locale 模块,其中的Pinyin.pm提供了汉字的拼音顺序,对该文件做临时的修改,可以调整多音字的顺序。 + +因为在参考文献排序中通常会使用字的姓名音,所以我们对这个文件做非正式的修改,并放到github上(\href{https://github.com/hushidong/biblatex-gb7714-2015/files/11120449/Pinyin.zip}{Pinyin.zip}),若用户需要正确的姓的多音字排序,那么只要用该文件替换biber临时工作目录中的文件即可。注意:目前该文件只修改了“曾”“沈”两个字,而“翟”“仇”等没有做修改,若用户有需求后面再增加。 + +通常biber在第一次运行的时候,会构建一个依赖目录,这也是biber的临时工作路径,而所有的依赖文件就在其中。 +在windows下通常会在临时目录temp下构建类似\verb|par-/cache-|的目录(其它系统也是类似命名,可以搜索一下),所有的依赖包括Pinyin.pm都会在其内部,找到并替换即可(Pinyin.pm文件通常在\verb|cache-\inc\lib\Unicode\Collate\CJK|下)。 + + + \subsection{多语言支持} @@ -1970,7 +2013,9 @@ language={chinese} \end{texlist} \end{example} -使用该命令后,可以引用主条目“易仕和2013--”生成双语文献。但要注意由于\verb|\DeclareStyleSourcemap|命令只能在导言区中使用,因此\verb|\defdoublelangentry|命令也只能出现在导言区中,这也是相比条目集动态方法的唯一遗憾。 +使用该命令后,可以引用主条目“易仕和2013--”生成双语文献。 +但要注意由于\verb|\DeclareStyleSourcemap|命令只能在导言区中使用, +因此\verb|\defdoublelangentry|命令也只能出现在导言区中,这也是相比条目集动态方法的唯一遗憾。 实现的具体细节见 \href{https://github.com/hushidong/biblatex-solution-to-latex-bibliography}% {biblatex-solution-to-latex-bibliography}。 @@ -1978,6 +2023,40 @@ language={chinese} 双语对照文献的两种动态方法基于set和related的方法测试,参见: \href{run:./example/opt-eg-authoryear.tex}{opt-eg-authoryear.tex}。 +\paragraph{\heiti 双语文献表的格式调整} + +不同期刊对于双语文献表可能有不同的格式要求,主要是附加一些信息,修改一些标点,或者调换中英文的顺序等。例\ref{eg:refdblan:fmt}给出的一个简单的修改示例。 + +\begin{example}{双语文献表的格式调整示例}{eg:refdblan:fmt} +\begin{texlist} +%%%%%%%%%%%%%%%%% +%define double lang entry here +%%%%%%%%%%%%%%%%% +\defbibentryset{张敏莉2007dblan}{Zhang2007-500-503,张敏莉2007-500-503} +\defdoublelangentry{Yi2013--}{易仕和2013--} + +%%%%%%%%%%%%%%%%% +%modify delim here +%%%%%%%%%%%%%%%%% +%for defbibentryset +\renewcommand{\entrysetpunct}{(in chinese)\newline\nobreak(} +%for defdoublelangentry (biblatex <2.11) +\renewcommand{\relateddelim}{(in chinese)\newline\nobreak(} +%for defdoublelangentry (biblatex >=2.11) +\renewcommand{\begrelateddelim}{(in chinese)\newline\nobreak(} + +%note the difference between defbibentryset and defdoublelangentry +\DeclareBibliographyCategory{Endpuncparen} +\addtocategory{Endpuncparen}{张敏莉2007-500-503,Yi2013--} +\renewcommand{\finentrypunct}{\ifentrycategory{\thefield{keywords}}{Endpuncparen}{)}{\addperiod}} + +\apptocmd{\gbquanpinlocalset}{\renewrobustcmd*{\bibnamedelima}{\mbox{-}}}{}{} +\end{texlist} +\end{example} + +更多的示例可以参考:\href{https://github.com/hushidong/biblatex-gb7714-2015/issues/154} +{双语参考文献中note注释}。 + \subsection{多样式支持} \subsubsection{一个文献表采用多种著录样式} @@ -2023,6 +2102,93 @@ leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt] 测试见文档\href{run:egfigure/egmsindfrefsec.tex}{egmsindfrefsec.tex}。 +\subsubsection{局部定义的不同文献表的样式} + +在一些学位论文中,除了正文后面的全局文献表外,有时需要给出攻读学位期间的学术成果,这部分内容可以直接按正文的方式写,有时也可以利用文献表的方式写,即将学术成果内容写成bibtex格式,然后利用类似生成参考文献的方式输出。 + +该文献表可以利用不同的形式来得到,比如使用refsection分节,或者使用category/type等筛选输出指定的文献。若该文献表的格式不同于正文的文献表,那么就需要做局部调整,此时利用一些能够局部调整的选项来实现会比较方便,如果需要的话也可以引入一些其它设置来实现特殊的格式,比如论文作者加粗等。例\ref{eg:resume:localset}给出了一个简单示例,其中故意做了一些局部设置,使用时需注意局部选项设置和数据注解与bib文件内容的配合。 + +\begin{example}{为研究成果表局部设置格式}{eg:resume:localset} +\begin{texlist} + \begin{filecontents}{resume.bib} + @article{ref-1-1-Yang, + author = {Yang, Y and Ren, T L and Zhang, L T and others}, + title = {Miniature microphone with silicon-based ferroelectric thin films}, + journal = {Integrated Ferroelectrics}, + date = {2003}, + pages = {229-235}, + volume = {52}, + annotation = {SCI 收录, 检索号:758FZ}, + AUTHOR+an={1=thesisauthor}, + OPTIONS = {maxbibnames=1,minbibnames=1} + } + + @article{ref-2-1-杨轶, + author = {杨轶 and 张宁欣 and 任天令 and others}, + title = {硅基铁电微声学器件中薄膜残余应力的研究}, + journal = {中国机械工程}, + pages= {1289-1291}, + date = {2005}, + volume = {16}, + number ={14}, + annotation ={EI 收录, 检索号:0534931 2907}, + AUTHOR+an={1=thesisauthor} + } + + @patent{ref-8-1-任天令, + author = {任天令 and 杨轶 and 朱一平 and others}, + title = {硅基铁电微声学传感器畴极化区域控制和电极连接的方法}, + number ={中国, CN1602118A}, + annotation = {中国专利公开号.}, + } + + @patent{ref-9-1-Ren, + author = {Ren, T L and Yang, Y and Zhu, Y P and others}, + title = {Piezoelectric micro acoustic sensor based on ferroelectric materials}, + number ={USA, No.11/215, 102}, + annotation = {美国发明专利申请号.}, + } + \end{filecontents} + + \begin{refsection}[resume.bib] + \nocite{ref-8-1-任天令,ref-9-1-Ren}% + \printbibliography[heading=subbibliography,title={研究成果}] + \end{refsection} + + + \begin{refsection}[ref/resume.bib] + \settoggle{bbx:gbtype}{false}%局部设置不输出文献类型和载体标识符 + \settoggle{bbx:gbannote}{true}%局部设置输出注释信息 + \setcounter{gbnamefmtcase}{1}%局部设置作者的格式为familyahead格式 + \makeatletter + \renewcommand*{\mkbibnamegiven}[1]{%通过作者注释局部调整作者的格式需与bib配合 + \ifitemannotation{thesisauthor} + {\ifbibliography{\textcolor{blue}{\textbf{#1}}}{#1}}% + {#1}\ifbibliography{\ifitemannotation{corresponding}{\textsuperscript{*}}{}}{}% + } + \renewcommand*{\mkbibnamefamily}[1]{% + \ifitemannotation{thesisauthor} + {\ifbibliography{\textcolor{blue}{\textbf{#1}}}{#1}} + {#1}} + \def\blx@maxbibnames{2} %局部调整作者数量,bib文件中加入选项也可以调整 + \def\blx@minbibnames{2} + %\defcounter{gbbiblocalcase}{1} %局部强迫中文本地化字符串 + %\defcounter{gbbiblocalcase}{2} %局部强迫英文本地化字符串 + \setlocalbibstring{andotherscn}{et al.} %另一种调整方式 + \setlocalbibstring{andothers}{等} + \makeatother + + \nocite{ref-1-1-Yang,ref-2-1-杨轶} + + \setlength{\biblabelsep}{12pt} + \printbibliography[heading=subbibliography,title={发表的学术论文}] % 发表的和录用的合在一起 + \end{refsection} +\end{texlist} +\end{example} + +其它示例可以参考:\href{https://blog.csdn.net/xenonhu/article/details/120853247}{修改指定作者的格式来突出显示},nudtpaper,BIThesis等。 +测试文档见\href{run:example/test-resume.tex}{test-resume.tex}。 + \subsubsection{完全自定义的条目内容样式} @@ -2868,7 +3034,7 @@ gb7714-2015实现了GB/T 7714-2015第8.8节要求的析出文献相关格式。 %读者若查看样式文件内容可以看到作者对各目标要求所做的修改及,读者也可以根据自己的需求进行修改,作者设计样式文件的思路以及在设计过程中用到的一些biblatex宏包功能说明,详见第\ref{sec:biblatex:mech}节和LaTeX文档中文参考文献的biblatex解决方案的第2.7节。 最后要感谢如下各位师长和朋友,正是在各位的帮助建议下,本样式不断升级逐渐完善。包括: moewew (biblatex 现在的维护者之一,给予不少有益的建议和指导)、 李志奇(基于biblatex的符合GBT7714-2005的中文文献生成工具的作者,工具中的一些设计如usera域的使用/卷期范围解析等带来很多启发,本人之前一直使用该工具,之所以开发biblatex-gb7714-2015其实主要是因为该工具因biblatex升级而无法使用)、caspervector(虽然未曾真正交流,但从biblatex-caspervector样式包中学到很多,包括排序/GBK编码等问题的解决思路)、LeoLiu(刘海洋,给出的CJK字符判断函数 -\footnote{\url{http://bbs.ctex.org/forum.php?mod=viewthread&tid=152663&extra=page\%3D3}} 对本宏包非常有帮助)、chinatex(china tex版主,给了很多建议和帮助,并且一起合作)、Sheng wenbo(biblatex用户手册合作译者,LaTeX2e 插图指南第三版译者,我们一起翻译的过程相互激励相互促进)、zepinglee(gbt7714-2015 bst样式作者,给了很多建议和讨论)、Harry Chen(ctex套件维护者之一,给了不少好的建议)、liubenyuan(关于项目组织给出了很好的建议)、刘小涛(讨论了关于zotero的使用并提出了建议)、ghiclgi(讨论了GB中著者-出版年制标注标签的一些问题)、秀文工作组、leipility、qingkuan、湘厦人、秋平、任蒲军、fredericky123、qiuzhu、chaoxiaosu、Old Jack、Wu Nailong、Yibai Zhang、wayne508、 钟乙源、Xiaodong Yao、dsycircle、rpjshu、zjsdut、谢澜涛、Zutian Luo、海阔天空、zzqzyx、程晨、xmtangjun、蔡伟 等等。当然还有更多朋友提供了bug报告,提出了issue,提供了热心帮助,限于篇幅这里不再一一列举,在此一并表示感谢! +\footnote{\url{http://bbs.ctex.org/forum.php?mod=viewthread&tid=152663&extra=page\%3D3}} 对本宏包非常有帮助)、chinatex(china tex版主,给了很多建议和帮助,并且一起合作)、Sheng wenbo(biblatex用户手册合作译者,LaTeX2e 插图指南第三版译者,我们一起翻译的过程相互激励相互促进)、zepinglee(gbt7714-2015 bst样式作者,给了很多建议和讨论)、Harry Chen(ctex套件维护者之一,给了不少好的建议)、liubenyuan(关于项目组织给出了很好的建议)、刘小涛(讨论了关于zotero的使用并提出了建议)、ghiclgi(讨论了GB中著者-出版年制标注标签的一些问题)、邓东升(很很多建议和讨论)、秀文工作组、leipility、qingkuan、湘厦人、秋平、任蒲军、fredericky123、qiuzhu、chaoxiaosu、Old Jack、Wu Nailong、Yibai Zhang、wayne508、 钟乙源、Xiaodong Yao、dsycircle、rpjshu、zjsdut、谢澜涛、Zutian Luo、海阔天空、zzqzyx、程晨、xmtangjun、蔡伟 等等。当然还有更多朋友提供了bug报告,提出了issue,提供了热心帮助,限于篇幅这里不再一一列举,在此一并表示感谢! \section{存在的问题和下一步工作} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-css.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-css.bbx new file mode 100644 index 0000000000..8d160a44fe --- /dev/null +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-css.bbx @@ -0,0 +1,647 @@ +%% +%% --------------------------------------------------------------- +%% css.bbx --- A citation style of Society sciences in china +%% modified from gb7714-2015 +%% Maintained by huzhenzhen +%% E-mail: hzzmail@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-css.bbx}[2023/03/31 v1.0a a biblatex bibliography style for CSS] + + +%================================================== +%加载gb样式 +%================================================== +\RequireBibliographyStyle{gb7714-2015} + + +% +% 增加一个控制标点是英文还是中文的选项 +% 20220222,v1.0a,hzz +\DeclareBibliographyOption{gbpunctcn}[true]{%biblatex低版本 + \ifstrequal{#1}{false}{\execgbpuncten}{}} + + + +%================================================== +%选项设置 +%================================================== +\ExecuteBibliographyOptions{ + gbtype=false, + gbpub=false, + doi=false, + url=false, + gbfieldtype=true, + %datezeros=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\execgbpuncten{% +\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本地化字符串 +%================================================== +\DefineBibliographyStrings{english}{ +% and = { and},%and后面的空格在finalnamedelim已经加过了,所以这里去掉20191009 +% andcn = {\gbpunctmark\unspace},%\gbpunctmark +% andincitecn = {和},%将标注中的分开,便于与文献表中的区分 +% andincite = {\&}, + %andotherscn={等}, + mathesiscn={硕士学位论文}, + phdthesiscn={博士学位论文}, +} + + + + +%================================================== +%设置一些标点格式为中文的标点 +%================================================== +%\DeclareFieldFormat{titlecase}{\iffieldequalstr{userd}{chinese}{#1}{\capitalisewords{#1}}} +%\DeclareFieldFormat*{booktitle}{\gbpunctttl#1\gbpunctttr} +\DeclareFieldFormat*{title}{% +\ifcitation{\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{\textit{#1}\isdot}}{#1\isdot}} +\DeclareFieldFormat[article]{title}{% +\ifcitation{\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{\mkbibquote{#1}\isdot}}% +{#1\adddot\addthinspace}} +\DeclareFieldFormat*{journaltitle}{% +\ifcitation{\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{\textit{#1}}}{#1\isdot}}% +\renewcommand*{\revsdnamepunct}{% +\ifcitation{\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\gbpunctcommalanen}}{}} +\DeclareDelimFormat{multinamedelim}{% +\ifcitation{\iffieldequalstr{userd}{chinese}{\gbpunctmark}{\gbpunctcommalanen}}% +{\addcomma\space}} +\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}{\ifcitation{\gbpunctmark}{\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}{}% + \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}{\ifcitation{\gbpunctmark}{\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% +\ifcitation{\gbpunctmark}{\bibstring{andcn}\space}% + \or% + \bibstring{and}\space% + \fi} +\DeclareDelimFormat{nameyeardelim}{% +\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\gbpunctcommalanen}} +\DeclareDelimFormat[bib,biblist]{nameyeardelim}{% +\ifcitation{\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\gbpunctcommalanen}}{\addspace}% +} +\DeclareDelimFormat{bibpagespunct}{% +\ifcitation{\iffieldequalstr{userd}{chinese}{\unspace\gbpunctcomma}{\unspace\gbpunctcommalanen}}% +{\addcolon\addthinspace}% +} +\DeclareFieldFormat{pages}{%%前面引导页码的pp.等字符 +\ifcitation{\iffieldequalstr{userd}{chinese}{% +\printtext{\bibstring{serialcn} #1\addthinspace 页}}% +{\mkpageprefix[bookpagination]{#1}}}{#1}} + +% +% 调整页码前的标点和去掉期刊文章等页码后面的标点 +% +\renewbibmacro*{note+pages}{%源来自standard.bbx + \ifcitation{\iffieldundef{postnote}{\iffieldundef{pages}{}{% + \setunit{\bibpagespunct}% + \printfield{pages}}}{}% + }{% + \iffieldundef{pages}{}{% + \setunit{\bibpagespunct}% + \printfield{pages}}% +}} + + +% +% 调整页码的格式,即chapter+pages格式 +% +\renewbibmacro*{chapter+pages}{% +\ifcitation{\iffieldundef{postnote}{\iffieldundef{pages}{}{% + \setunit{\bibpagespunct}% + \printfield{pages}}}{}}% +{\iftoggle{bbx:gbstrict}{}{% + \printfield{chapter}}% + \iffieldundef{pages}{}{%这里增加一个判断,当没有页码时就不输出 + \setunit{\bibpagespunct}% + \printfield{pages}}}% +} + + +\renewcommand*{\newunitpunct}{% +\ifcitation{\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\gbpunctcommalanen}}{\addperiod\space}% +} +\renewcommand*{\finentrypunct}{% +\ifcitation{\printdelim{finalpunct}}{\addperiod}% +} +%调整标注的注释中的条目结尾标点 +\DeclareDelimFormat{finalpunct}{\iffieldequalstr{userd}{chinese}{\gbpunctdot}{\adddot}} +\DeclareDelimFormat[fullinnercite]{finalpunct}{} + +\DeclareFieldFormat{booktitle}{% +\ifcitation{\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{#1}}{#1}} + +%出版项中:出版社地址后面的标点 +\renewcommand{\publocpunct}{% +\ifcitation{\iffieldequalstr{userd}{chinese}{\gbpunctcolon}{\addcolon\addspace}}{\addcolon\addspace}% +} +%调整出版社与年份之间的标点 +\renewcommand{\pubdatadelim}{% +\ifcitation{\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\setunit*{\addcomma\space}}}% +{\setunit*{\addcomma\space}}% +} + +%================================================== +%调整部分域的输出格式 +%================================================== + +%增加年字 +\renewbibmacro*{date}{% +\ifcitation{\iffieldequalstr{userd}{chinese}{\printdate 年}{\printdate}}% +{\printdate}% +} + + + +\newrobustcmd*{\blx@gbdatecn}[3][]{% + \dateeraprintpre{#2#3year}% + \blx@imc@forcezerosy{\thefield{#2#3year}年}\ifblank{#1}{}{\printfield{#1}}% + \iffieldundef{#2#3month}{}{{\thefield{#2#3month}}月}% + \iffieldundef{#2#3day}{}{{\thefield{#2#3day}}日}} + +\renewbibmacro*{newsdate}{%% +\ifboolexpr{% + test{\ifcitation} and test{\iffieldequalstr{userd}{chinese}}% + }% + {\printtext{\blx@gbdatecn{}{}}}% + {\printtext{\blx@gbdate{}{}}}%% +} + + +% +\renewbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 +\ifboolexpr{% +test{\ifcitation} and test{\iffieldequalstr{userd}{chinese}}% +}% +{% +\printtext{\blx@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@gbdate{}{}\printtext{\gbrightparen}}% + }}% +}}% + + +\DeclareFieldFormat{type}% +{\ifcitation{\iffieldequalstr{userd}{chinese}% + {\ifbibxstring{#1cn}{\bibxstring{#1cn}}{#1}}% + {\ifbibstring{#1}{\bibstring{#1}}{#1}}}{}% +} + + +\renewbibmacro*{in:}{% +\iftoggle{bbx:gbpunctin}{\ifcitation{\gbpunctcomma}{\printtext{\allowbreak{\SlashFont//}\allowbreak}}}%\addthinspace + {\setunit{\adddot\addspace}% + \iffieldequalstr{userd}{chinese}% + {\ifcitation{\gbpunctcomma}{\printtext{\bibstring{incn}}}}% + {\printtext{\bibstring{in}}}% + }}%\newunit\newblock\intitlepunct + + +% +% 修改number和volume的格式 +% +\newcounter{numberwithoutzero} +\DeclareFieldFormat[newspaper,article,periodical]{number}% +{\ifcitation{% + \iffieldequalstr{userd}{chinese}{% + \iffieldequalstr{entrysubtype}{news}{\printtext{\gbpunctcomma\bibstring{serialcn} #1 版}} + {\iffieldint{number}{\setcounter{numberwithoutzero}{#1}% + \printtext{\bibstring{serialcn}\addthinspace\arabic{numberwithoutzero}\addthinspace\bibstring{numbercn}}}% + {\printtext{\bibstring{serialcn}\addthinspace #1\addthinspace\bibstring{numbercn}}}% + }}% + {\setcounter{numberwithoutzero}{#1}\printtext{(}\arabic{numberwithoutzero}\printtext{)}}% + }% + {\setcounter{numberwithoutzero}{#1}\arabic{numberwithoutzero}}% +} + +\DeclareFieldFormat[article,periodical]{volume}% +{\ifcitation{% +\iffieldequalstr{userd}{chinese}{\bibstring{serialcn}#1\bibstring{volumecn}}% + {\bibstring{volume}~#1}}% +{#1}% +} + +\DeclareFieldFormat[book]{volume}% +{\iffieldequalstr{userd}{chinese}{\iffieldint{volume}% + {\bibstring{serialcn}#1\bibstring{volumecn}}{#1}% + }% + {\bibstring{volume}~#1}% +} + +% +% 调整期刊名的格式 +% +% v1.0k,20180425,增加了字体控制命令,hzz +% v1.1j,20220527,修复期刊名不存在时多余的标点 +\renewbibmacro*{journal+issuetitle}{% +\ifcitation{\bibpubfont% + \usebibmacro{journal}% + \iffieldundef{series}% + {}% + {\printfield{series}% + \setunit{\addspace}}% + \iffieldundef{volume}% + {\ifciteseen{}{\usebibmacro{issue+date}% + \usebibmacro{volume+number+eid}}}% + {\ifciteseen{}{\usebibmacro{volume+number+eid}% + \newunit% + \usebibmacro{issue+date}}}% + }% + {\bibpubfont%源来自standard.bbx + \usebibmacro{journal}% + \iffieldundef{journaltitle}{}{\setunit*{\addcomma\addspace}}%修改为增加一个逗号 + \iffieldundef{series} + {} + {\newunit + \printfield{series}% + \setunit{\addspace}}% + \printtext{\usebibmacro{issue+date}}%使用printtext配合后面的\setunit*来实现后面的逗号的自动处理 + \iffieldundef{volume}{}{\setunit*{\addcomma\space}}% + \usebibmacro{issue}% + \usebibmacro{volume+number+eid}}%把卷期放到年份后面 + } + + +%去掉期刊名后的标点 +\renewbibmacro*{journal}{% + \ifboolexpr{ + test {\iffieldundef{journaltitle}} + and + test {\iffieldundef{journalsubtitle}} + } + {} + {\printtext[journaltitle]{% + \printfield[titlecase]{journaltitle}% + \ifcitation{}{\setunit{\subtitlepunct}}% + \printfield[titlecase]{journalsubtitle}}% + \ifcitation{}{\newunit}}% + \iffieldundef{journaltitleaddon} + {} + {\printfield{journaltitleaddon}}} + + + + +% +% 调整期刊卷和期的格式 +% +\renewbibmacro*{volume+number+eid}{%源来自standard.bbx +\ifcitation{% +\iffieldequalstr{userd}{chinese}% + {\iffieldundef{volume}{}{\printfield{volume}}% + \iffieldundef{number}{}{\printfield{number}}}%区别于顺序编码制 + {\newunit\printfield{volume}% + \printfield{number}% + \setunit{\addcomma\space}% + \printfield{eid}}% +}% +{\iftoggle{bbx:gbfieldstd}{% + \printfield{volume}% + \setunit*{\adddot}% + \printfield{number}% + \setunit{\addcomma\space}% + \printfield{eid}}{% + \printfield{volume}% + %\setunit*{\adddot}%去掉点号 + %\printfield{number}% + \iffieldundef{number}{}{\printtext{\mkbibparens{\printfield{number}}}}%增加一个圆括号 + \iffieldundef{eid}{}{% + \setunit{\addcomma\space}% + \printfield{eid}}}}} + + +% +% 期刊的标题做修改 +% +\renewbibmacro*{title+issuetitle}{%源来自standard.BBX + \usebibmacro{periodical}% + \ifcitation{\iffieldequalstr{userd}{chinese}{\setunit*{\gbpunctcomma}}{\setunit*{\adddot\addspace}}}% + {\setunit*{\adddot\addspace}}%标点修改为句点 + \iffieldundef{series}% + {}% + {\newunit% + \printfield{series}% + \setunit{\addspace}}% + \usebibmacro{periodical+issue}%将issue调整到上面来,并修改 +\ifcitation{\usebibmacro{issue+date}% + \usebibmacro{issue}% + \usebibmacro{volume+number+eid}}% + {\iffieldundef{number}{}{%%进一步处理有范围的数字 + \multinumberparser{\thefield{number}}}% + \iffieldundef{volume}% + {\printfield{year}% + \printtext{\mkbibparens{\multinumberfirst}}% + \bibrangedash% + \iffieldundef{endyear}{}{\printfield{endyear}\printtext{\mkbibparens{\multinumbersecond}}}% + }% + {\multivolparser{\thefield{volume}}% + \printfield{year}% + \setunit{\addcomma\space}%将冒号修改为逗号 + \printtext{\multivolfirst}% + \printtext{\mkbibparens{\multinumberfirst}}% + \bibrangedash% + \iffieldundef{endyear}{}{% + \printfield{endyear}% + \setunit{\addcomma\space}%将冒号修改为逗号 + \printtext{\multivolsecond}% + \printtext{\mkbibparens{\multinumbersecond}}}% + }% + \setunit{\addcomma\space}% + \printfield{eid}% + \setunit{\addspace}% + \usebibmacro{issue}% + \newunit}% +} + + + + +% +% 重设title的输出 +% +% 20180425,v1.0k,为标题增加字体控制命令,Hu Zhenzhen +% 原理方法:将文献类型标识符输出出去,原输出来自biblatex.def文件 +% 利用toggle做标识符是否输出的判断 +\renewbibmacro*{title}{% +\ifcitation{% + \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}}}% 其它 + }}{}% + }\ifboolexpr{test{\ifentrytype{book}} and (not test{\iffieldundef{volume}})}%判断一下book类有没有volume + {\ifcitation{}{\setunit{\subtitlepunct}}\printfield{volume}}{}%% +}}{\ifboolexpr{% + test{\iffieldundef{title}}% + and + test{\iffieldundef{subtitle}}}% + {}% + {\printtext[title]{\bibtitlefont%增加字体控制命令 + \printfield[titlecase]{title}% + \ifboolexpr{test {\iffieldundef{subtitle}}}%增加了对子标题的判断 + {}{\setunit{\subtitlepunct}\printfield[titlecase]{subtitle}}% + \iffieldundef{titleaddon}{}{\setunit{\subtitlepunct}\printfield{titleaddon}}%判断一下titleaddon + \ifboolexpr{test{\ifentrytype{book}} and (not test{\iffieldundef{volume}})}%判断一下book类有没有volume + {\setunit{\subtitlepunct}\printfield{volume}}{}% + \iftoggle{bbx:gbtype}% + {\iffieldundef{entrysubtype}{\printfield[gbtypeflag]{usera}}%在标题后直接给出文献标识字母,判断一下,是否是报纸和标准 + {\iffieldequalstr{entrysubtype}{standard}{\printfield[gbtypeflags]{usera}}%判断是否为标准 + {\iffieldequalstr{entrysubtype}{news}{\printfield[gbtypeflagn]{usera}}%判断是否为报纸 + {\printfield[gbtypeflag]{usera}}}}}{}%%其它 + }% + }% +}% +} + +%给注释的英文姓名调整为given-ahead +\AtEveryCite{\defcounter{gbnamefmtcase}{2}} + + +%===================================================================== +%设置驱动格式 +%===================================================================== + + +\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}% +} + +% +% 专著中的析出文献的格式修改 +% +\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}} + + +\DeclareDelimFormat{authotitledelim} +{% +\ifcitation{\iffieldequalstr{userd}{chinese}{\gbpunctcolon}{\addperiod\space}}{\addperiod\space}% +} + + +% +% 增加inbook:parent用于辅助crossref传统功能的实现 +% 用在{crosscite}宏中 +% 20210216,v1.0w,hzz +\newbibmacro*{inbook:parent}{% +\usebibmacro{bybookauthor}% +\ifnameundef{bookauthor}{% + \ifnameundef{editor}{}{\printdelim{authotitledelim}}% + }{\printdelim{authotitledelim}}% +\iffieldundef{series}{}{\usebibmacro{series+number}\setunit{\addcolon\addspace}}%为处理一些存在series的情况而增加 + \usebibmacro{maintitle+booktitle}% +\iffieldundef{volume}{}{\setunit{\addcolon\addspace}\printfield{volume}}% +\iffieldundef{number}{}{\setunit{\addcolon\addspace}\printfield{number}}%增加卷和册信息 + \newunit\newblock% + \printfield{edition}% + \newunit + \newunit\newblock + \usebibmacro{publisher+location+date}} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-css.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-css.cbx new file mode 100644 index 0000000000..a0fa1dc004 --- /dev/null +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-css.cbx @@ -0,0 +1,95 @@ +%% +%% --------------------------------------------------------------- +%% css.cbx --- A citation style of Society sciences in china +%% modified from gb7714-2015 +%% Maintained by huzhenzhen +%% E-mail: hzzmail@163.com +%% Released under the LaTeX Project Public License v1.3c or later +%% --------------------------------------------------------------- +%% +%%用法:类似于标准的样式在biblatex加载时设置样式 +%%文献表正常处理,标注命令主要用cite和textcite + +\ProvidesFile{chinese-css.cbx}[2023/03/31 v1.0a a biblatex citation style for CSS] + +%================================================== +%加载gb样式 +%================================================== +\RequireCitationStyle{gb7714-2015} % + + +%================================================== +%选项设置 +%================================================== +%\ExecuteBibliographyOptions{ +% maxcitenames=2, +% mincitenames=1, +%} + +%================================================== +%引用命令设置,主要用cite和textcite +%包括标点设置 +%================================================== + +%修改注释后的标点 +\renewcommand{\bibfootnotewrapper}[1]{% + \bibsentence#1}% + +%修改脚注注释的实现 +\def\execgbfootbib% + {% + %开启引用跟踪计数器,为使用\ifciteseen等测试命令 + \ExecuteBibliographyOptions{citetracker=true} + + % + %重定义\footfullcite使完成css的脚注文献要求 + \DeclareCiteCommand{\footfullcite}[\mkbibfootnote]% + {\defcounter{maxnames}{\blx@maxbibnames}%局部定义maxnames和minnames计数器 + \defcounter{minnames}{\blx@minbibnames}%使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}} + {\ifciteseen% + {\usedriver{\DeclareNameAlias{sortname}{default}}{citeseen:\thefield{entrytype}}}%\nopunct + {\usedriver{\DeclareNameAlias{sortname}{default}}{\thefield{entrytype}}}% + } + {\multicitedelim} + {\usebibmacro{postnote}\usebibmacro{finentry}} + + \DeclareCiteCommand{\fullinnercite} + {\usebibmacro{prenote}} + {\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}} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-erj.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-erj.bbx index 98a744005a..df668a1a57 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-erj.bbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-erj.bbx @@ -30,7 +30,7 @@ % % 增加一个控制标点是英文还是中文的选项 % 20220222,v1.0a,hzz -\DeclareBibliographyOption{erjpunctcn}[true]{%biblatex低版本 +\DeclareBibliographyOption{gbpunctcn}[true]{%biblatex低版本 \ifstrequal{#1}{false}{\execerjpuncten}{}} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-erj.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-erj.cbx index 180393dc30..4244717642 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-erj.cbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-erj.cbx @@ -21,7 +21,7 @@ % % 增加一个控制标注中标点是英文还是中文的选项 % 20220222,v1.0a,hzz -\DeclareBibliographyOption{erjcitepunctcn}[true]{%biblatex低版本 +\DeclareBibliographyOption{gbcitepunctcn}[true]{%biblatex低版本 \ifstrequal{#1}{false}{\execerjpunctencite}{}} \def\erjpunctmarkcite{、}% diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015.bbx index e5e4c99360..aa44a3870f 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015.bbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015.bbx @@ -11,7 +11,7 @@ % % 版本和时间信息 % -\def\versionofgbtstyle{2022/11/07 v1.1k} +\def\versionofgbtstyle{2023/03/31 v1.1l} \def\versionofbiblatex{\abx@version} \ProvidesFile{gb7714-2015.bbx}[\versionofgbtstyle biblatex bibliography style] %\RequireBiber[3]%显式指定用biber后端,当用bibtex时会报错,但其实不会影响编译,只是采用bibtex后无法达成格式需求 @@ -1054,6 +1054,11 @@ \step[fieldsource=address,final] \step[fieldset=location,origfieldval] } + \map{%eventtitle映射为booktitle + \pertype{inproceedings} + \step[fieldsource=eventtitle,final] + \step[fieldsource=techreport, fieldtarget=booktitle] + } \map{%处理在bib文件用mark标记文献类型标识符的情况 \step[fieldsource=mark,final] \step[fieldset=usera, origfieldval] @@ -1800,6 +1805,40 @@ } } } +%用于人工的为条目或条目集添加域 +\newcommand{\addEntryField}[3]{% + \edef\entrykeya{#1} + \edef\entrykeyb{#2} + \edef\entrykeyc{#3} + \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map[foreach={#1}]{ + \step[fieldsource=entrykey, match=\regexp{$MAPLOOP}, final] + \step[fieldset=\entrykeyb, fieldvalue=\entrykeyc] + } + \map{%处理在bib文件中直接给出文献的姓名格式为lowercase的情况 + \step[fieldsource=nameformat,match=lowercase,final] + \step[fieldset=namefmtid,fieldvalue={1}] + } + \map{%处理在bib文件中直接给出文献的姓名格式为givenahead的情况 + \step[fieldsource=nameformat,match=givenahead,final] + \step[fieldset=namefmtid,fieldvalue={2}] + } + \map{%处理在bib文件中直接给出文献的姓名格式为familyahead的情况 + \step[fieldsource=nameformat,match=familyahead,final] + \step[fieldset=namefmtid,fieldvalue={3}] + } + \map{%处理在bib文件中直接给出文献的姓名格式为pinyin的情况 + \step[fieldsource=nameformat,match=pinyin,final] + \step[fieldset=namefmtid,fieldvalue={4}] + } + \map{%处理在bib文件中直接给出文献的姓名格式为全拼的情况 + \step[fieldsource=nameformat,match=quanpin,final] + \step[fieldset=namefmtid,fieldvalue={6}] + } + } + } + } % %驱动别名等价于驱动层映射 @@ -3257,6 +3296,9 @@ test{\iftoggle{iftlnine}} \DeclareListAlias{institution}{location} \DeclareListAlias{publisher}{location} +%定义出版社与年份之间的标点便于后面重定义 +\newcommand{\pubdatadelim}{\setunit*{\addcomma\space}} + % 新增一个样式用于输出连续出版物的地址,单位,时间, % 用于periodical连续出版物的出版社和地址的处理 % @@ -3277,7 +3319,7 @@ test {\iflistundef{location}} and test {\iflistundef{institution}}% \iflistundef{institution}{% \iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str@nopublisher\gbrightbracket}}{\printtext{\mkbibbrackets{s.n.}}}}% {\printlist{institution}}}% -\setunit{\addcomma\addspace}% + \pubdatadelim% %\usebibmacro{date}% \printfield{year}% \bibrangedash% @@ -3288,7 +3330,7 @@ test {\iflistundef{location}} and test {\iflistundef{institution}}% {\setunit*{\addcomma\space}} {\setunit*{\publocpunct}}% \printlist{institution}% - \setunit*{\addcomma\space}% + \pubdatadelim% \usebibmacro{date}% \newunit}% } @@ -3315,7 +3357,7 @@ test {\iflistundef{location}} and test {\iflistundef{institution}}% {\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str@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}% @@ -3323,7 +3365,7 @@ test {\iflistundef{location}} and test {\iflistundef{institution}}% {\setunit*{\addcomma\space}} {\setunit*{\publocpunct}}% \printlist{publisher}% - \setunit*{\addcomma\space}% + \pubdatadelim% \usebibmacro{date}%%\newunit }% } @@ -3339,7 +3381,7 @@ test {\iflistundef{location}} and test {\iflistundef{institution}}% {\setunit*{\addcomma\space}} {\setunit*{\publocpunct}}% \printlist{institution}% - \setunit*{\addcomma\space}% + \pubdatadelim% \usebibmacro{date}% %\newunit }} @@ -3485,7 +3527,7 @@ incollection,proceedings,inproceedings]{number}{% % \renewbibmacro*{note+pages}{%源来自standard.bbx %\printfield{note}% - \iffieldundef{pages}{}{ + \iffieldundef{pages}{}{% \setunit{\bibpagespunct}% \printfield{pages}}% %\newunit @@ -3634,9 +3676,8 @@ incollection,proceedings,inproceedings]{number}{% \printfield[titlecase]{title}% %\setunit{\subtitlepunct}% \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题 - {}{\setunit{\subtitlepunct} + {}{\setunit{\subtitlepunct}% \printfield[titlecase]{subtitle}}% - %}%把编组结束移到后面去 \iftoggle{bbx:gbtype}{% \iffieldundef{usera}{}{%在标题后直接给出文献标识字母 \printfield[gbtypeflag]{usera}}}{} @@ -3697,7 +3738,6 @@ incollection,proceedings,inproceedings]{number}{% %\usebibmacro{date}%修改为下一句 }% }% - %\newunit } % diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015.cbx index 6279c92567..7c39e23385 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015.cbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015.cbx @@ -198,7 +198,7 @@ \newrobustcmd{\mkbibsuperscriptusp}[1]{% \unspace\allowhyphens\textsuperscript{% - \begingroup + \begingroup% \protected\long\def\mkbibsuperscriptusp##1{% \blx@warning{Nested superscript}% \mkbibbrackets{##1}}% @@ -352,7 +352,7 @@ {\usebibmacro{cite:comp}}% {\usebibmacro{cite:dump}% \ifbool{cbx:parens}% - {\mkbibsuperscript{\printtext{\bibclosebracket}}\global\boolfalse{cbx:parens}}% + {\mkbibsuperscript{{\hspace{-0.075em}\bibclosebracket}}\global\boolfalse{cbx:parens}}%\printtext {}% \iffirstcitekey {} @@ -376,12 +376,15 @@ \ifbool{cbx:incitet}{\usebibmacro{citet}}{\usebibmacro{textcite}}% }% {}% - {\ifbool{cbx:incitet}{\mkbibsuperscript{\usebibmacro{cite:dump}\usebibmacro{postnote}}}% - {\usebibmacro{cite:dump}\usebibmacro{postnote}}% - \ifbool{cbx:parens}% - {\ifbool{cbx:incitet}{\mkbibsuperscript{\bibclosebracket}}{\bibclosebracket}% - \global\boolfalse{cbx:parens}}% - {}} + {\ifbool{cbx:incitet}% + {\mkbibsuperscript{\usebibmacro{cite:dump}\usebibmacro{postnote}% + \ifbool{cbx:parens}{\hspace{-0.075em}\bibclosebracket\global\boolfalse{cbx:parens}}{}% + }% + }% + {\usebibmacro{cite:dump}\usebibmacro{postnote}% + \ifbool{cbx:parens}{\bibclosebracket\global\boolfalse{cbx:parens}}{}% + }% + } \newrobustcmd{\cbx@citet@init}[2]{% \global\booltrue{cbx:incitet}% diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.bbx index db66e248c2..e6a1ae9e41 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.bbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.bbx @@ -10,7 +10,7 @@ % % 版本和时间信息 % -\def\versionofgbtstyle{2022/11/07 v1.1k} +\def\versionofgbtstyle{2023/03/31 v1.1l} \def\versionofbiblatex{\abx@version} \ProvidesFile{gb7714-2015ay.bbx}[\versionofgbtstyle biblatex bibliography style] %\RequireBiber[3]%显式指定用biber后端,当用bibtex时会报错,但其实不会影响编译,只是采用bibtex后无法达成格式需求 @@ -1007,6 +1007,11 @@ \step[fieldsource=address,final] \step[fieldset=location,origfieldval] } + \map{%eventtitle映射为booktitle + \pertype{inproceedings} + \step[fieldsource=eventtitle,final] + \step[fieldsource=techreport, fieldtarget=booktitle] + } \map{%处理在bib文件用mark标记文献类型标识符的情况 \step[fieldsource=mark,final] \step[fieldset=usera, origfieldval] @@ -1628,7 +1633,40 @@ } } } - +%用于人工的为条目或条目集添加域 +\newcommand{\addEntryField}[3]{% + \edef\entrykeya{#1} + \edef\entrykeyb{#2} + \edef\entrykeyc{#3} + \DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map[foreach={#1}]{ + \step[fieldsource=entrykey, match=\regexp{$MAPLOOP}, final] + \step[fieldset=\entrykeyb, fieldvalue=\entrykeyc] + } + \map{%处理在bib文件中直接给出文献的姓名格式为lowercase的情况 + \step[fieldsource=nameformat,match=lowercase,final] + \step[fieldset=namefmtid,fieldvalue={1}] + } + \map{%处理在bib文件中直接给出文献的姓名格式为givenahead的情况 + \step[fieldsource=nameformat,match=givenahead,final] + \step[fieldset=namefmtid,fieldvalue={2}] + } + \map{%处理在bib文件中直接给出文献的姓名格式为familyahead的情况 + \step[fieldsource=nameformat,match=familyahead,final] + \step[fieldset=namefmtid,fieldvalue={3}] + } + \map{%处理在bib文件中直接给出文献的姓名格式为pinyin的情况 + \step[fieldsource=nameformat,match=pinyin,final] + \step[fieldset=namefmtid,fieldvalue={4}] + } + \map{%处理在bib文件中直接给出文献的姓名格式为全拼的情况 + \step[fieldsource=nameformat,match=quanpin,final] + \step[fieldset=namefmtid,fieldvalue={6}] + } + } + } + } % %驱动别名等价于驱动层映射 @@ -3295,7 +3333,6 @@ incollection,proceedings,inproceedings]{number}{% {\printlabeldateextra}% {\printfield{labelyear}% \printfield{extrayear}}}}}% - \newbibmacro{date+extradate}{\usebibmacro{date+extrayear}} } \defversion{3.8}{dateextra}{ @@ -3332,7 +3369,6 @@ incollection,proceedings,inproceedings]{number}{% \iflabeldateisdate {\printdateextra} {\printlabeldateextra}}}}% - } @@ -3474,7 +3510,7 @@ incollection,proceedings,inproceedings]{number}{% % \renewbibmacro*{note+pages}{%源来自standard.bbx %\printfield{note}% - \iffieldundef{pages}{}{ + \iffieldundef{pages}{}{% \setunit{\bibpagespunct}% \printfield{pages}}% %\newunit diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/makeall.py b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/makeall.py index 99ace83941..b783537cb5 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/makeall.py +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/makeall.py @@ -20,7 +20,7 @@ def compileall(): 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','example.bib', 'gb7714-1987.bbx', 'gb7714-1987.cbx', + 'chinese-erj.bbx','chinese-erj.cbx','chinese-css.bbx','chinese-css.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'] diff --git a/macros/latex/contrib/widows-and-orphans/changes.txt b/macros/latex/contrib/widows-and-orphans/changes.txt index 84156da8c0..63b989499d 100644 --- a/macros/latex/contrib/widows-and-orphans/changes.txt +++ b/macros/latex/contrib/widows-and-orphans/changes.txt @@ -1,3 +1,12 @@ +2023-04-02 Frank Mittelbach + + * widows-and-orphans.dtx: + Honor a global "draft" option on the documentclass and change the + default from warning to info in that case unless explicitly set + with a check option (gh/1) + + Use \ProcessKeyOptions which requires a 2022-06 kernel. + 2022-08-27 Frank Mittelbach * widows-and-orphans.dtx (subsection{Checking \outputpenalty}): diff --git a/macros/latex/contrib/widows-and-orphans/widows-and-orphans-code.pdf b/macros/latex/contrib/widows-and-orphans/widows-and-orphans-code.pdf index 8fa7f691a5..b87b12130a 100644 Binary files a/macros/latex/contrib/widows-and-orphans/widows-and-orphans-code.pdf and b/macros/latex/contrib/widows-and-orphans/widows-and-orphans-code.pdf differ diff --git a/macros/latex/contrib/widows-and-orphans/widows-and-orphans-doc.pdf b/macros/latex/contrib/widows-and-orphans/widows-and-orphans-doc.pdf index ba1d01e320..04d4320766 100644 Binary files a/macros/latex/contrib/widows-and-orphans/widows-and-orphans-doc.pdf and b/macros/latex/contrib/widows-and-orphans/widows-and-orphans-doc.pdf differ diff --git a/macros/latex/contrib/widows-and-orphans/widows-and-orphans.dtx b/macros/latex/contrib/widows-and-orphans/widows-and-orphans.dtx index 7170fae2c6..7ab5aec6fb 100644 --- a/macros/latex/contrib/widows-and-orphans/widows-and-orphans.dtx +++ b/macros/latex/contrib/widows-and-orphans/widows-and-orphans.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment %% -%% File: widows-and-orphans.dtx (C) Copyright 2017-2022 Frank Mittelbach +%% File: widows-and-orphans.dtx (C) Copyright 2017-2023 Frank Mittelbach % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -154,6 +154,12 @@ % when an issue is found: default is \ovalue{warning}, other % possibilities are \ovalue{error}, \ovalue{info} and \ovalue{none}. % +% If the option \option{draft} is given on the document class then the +% checking messages are reduced to \ovalue{info} messages and only appear in +% the log file. If one wants warnings or errors in that case, one has +% to explicitly specify \option{check} with the appropriate value on +% the package level. +% % The options \option{orphans} and \option{widows} set % reasonable parameter values; the default is to use whatever the class % defines. Possible values are \ovalue{prevent}, \ovalue{avoid} or @@ -163,7 +169,7 @@ % \option{avoid-all} or \option{default-all}. These options also assign % values to \cs{brokenpenalty} and \cs{predisplaypenalty}. % -% \TypesetImplementationTF {\pagebreak}{} +% ^^A\TypesetImplementationTF {\pagebreak}{} % % % \subsection{User commands} @@ -247,14 +253,13 @@ %<@@=fmwao> % \end{macrocode} % -% Then we check that we are running on top of \LaTeXe{} and load the -% two packages we want to use: \pkg{xparse} for the user interface and -% \pkg{l3keys2e} for key/value option syntax. They load the needed -% \pkg{expl3} code so we are ready to roll afterwards. -% Nowadays \pkg{xparse} is in the kernel so doesn't need loading any longer. -% +% Then we check that we are running on top of \LaTeXe{} and use a fairly recent +% version of the kernel that contains the L3 programming layer, +% \pkg{xparse} and the command \cs{ProcessKeyOptions}. For the latter +% we need June 2022. +% \changes{v1.0f}{2023/04/02}{Require a kernel of 2022-06 or newer} % \begin{macrocode} -\NeedsTeXFormat{LaTeX2e} \RequirePackage{l3keys2e} +\NeedsTeXFormat{LaTeX2e}[2022-06-01] % \end{macrocode} % % Then we announce the package to the world at large. This declaration @@ -335,7 +340,7 @@ % \end{figure} % % \begin{macrocode} -\ProvidesExplPackage{widows-and-orphans}{2023/03/10}{v1.0e} +\ProvidesExplPackage{widows-and-orphans}{2023/04/02}{1.0f} {Detecting widows and orphans (FMi)} % \end{macrocode} % @@ -960,6 +965,14 @@ ,check / warning .code:n = \msg_redirect_module:nnn {widows-and-orphans}{warning}{ } % \end{macrocode} +% If the class option \texttt{draft} was given we downgrade the +% checks to info, thus if one wants warnings or errors even then, +% then one has to give the check key explicitly on package level. +% \changes{v1.0f}{2023/04/02}{Honor a global draft option (gh/1)} +% \begin{macrocode} + ,draft .meta:n = {check = info} +% \end{macrocode} +% % The other options set parameters to some hopefully ``reasonable'' % values\Dash no real surprises here. \LaTeX{} internally uses % \cs{@clubpenalty} so we need to set this too, if we change @@ -1015,8 +1028,9 @@ } % \end{macrocode} % Once declared we evaluate the options given to the package: +% \changes{v1.0f}{2023/04/02}{Use kernel method now not \pkg{l3keys2e}} % \begin{macrocode} -\ProcessKeysPackageOptions{fmwao} +\ProcessKeyOptions[fmwao] % \end{macrocode} % % -- cgit v1.2.3