diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx')
-rw-r--r-- | Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx | 937 |
1 files changed, 484 insertions, 453 deletions
diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx index 98751e89e90..e5e0cb13bec 100644 --- a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx +++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx @@ -9,15 +9,19 @@ %% 2016/11/11 v1.0b %% 2016/11/14 v1.0c %% 2016/11/24 v1.0d +%% 2016/12/07 v1.0e %% E-mail: hzzmail@163.com %% Released under the LaTeX Project Public License v1.3c or later %% --------------------------------------------------------------- %% -\ProvidesFile{gb7714-2015ay.bbx}[2016/11/24 v1.0d biblatex bibliography style] +\ProvidesFile{gb7714-2015ay.bbx}[2016/12/07 v1.0e biblatex bibliography style] -% Load the standard style to avoid copy-pasting unnecessary material -\RequireBibliographyStyle{authoryear} %加载标准样式 +%===================================================================== +%加载标准样式 +\RequireBibliographyStyle{authoryear} % Load the standard style to avoid copy-pasting unnecessary material +%===================================================================== +%增加一些功能函数 \providetoggle{iftexlivesix} %版本判断,根据biblatex更新历史可知,版本3.3开始使用新的姓名机制 %所以当版本大于3.2开始,就用设置\toggletrue{iftexlivesix} @@ -27,155 +31,16 @@ \def\numdigital{\expandafter\numparsertb\abx@version\relax} \ifnumcomp{\numdigital}{>}{2}{\toggletrue{iftexlivesix}}{\togglefalse{iftexlivesix}} -%设置一些全局选项 -% Alter settings that carry through from biblatex -\iftoggle{iftexlivesix}{ -%biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 -\ExecuteBibliographyOptions{ - useprefix = true, %名字的信息包括前缀 - %firstinits = true, %名字有缩写,参考3.1.2.3 Internal - giveninits = true, - date = year, %日期仅写到年 - %maxnames = 3 , %设置名字最大数量 - %minnames = 3, %设置缩减后的名字最小数量 - maxbibnames=3, %将文献列表和引用中最大名字数量区分开 - minbibnames=3, -} - -\newbibmacro*{name:given-family}[4]{%利用family-given定义given-family - \ifuseprefix - {\usebibmacro{name:delim}{#3#1}% - \usebibmacro{name:hook}{#3#1}% - \ifdefvoid{#3}{}{% - \ifcapital - {\mkbibnameprefix{\MakeCapital{#3}}\isdot} - {\mkbibnameprefix{#3}\isdot}% - \ifprefchar{}{\bibnamedelimc}}% - \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot - \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital{#2} - \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}} - {\usebibmacro{name:delim}{#1}% - \usebibmacro{name:hook}{#1}% - \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot - % - \ifboolexpe{% - test {\ifdefvoid{#2}} - and - test {\ifdefvoid{#3}}} - {} - {\revsdnamepunct}% - \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital{#2} - \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot} - \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}} - -\newbibmacro*{name:family-given}[4]{%利用family-given定义given-family - \ifuseprefix - {\usebibmacro{name:delim}{#3#1}% - \usebibmacro{name:hook}{#3#1}% - \ifdefvoid{#3}{}{% - \ifcapital - {\mkbibnameprefix{\MakeCapital{#3}}\isdot} - {\mkbibnameprefix{#3}\isdot}% - \ifprefchar{}{\bibnamedelimc}}% - \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot - \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital{#2} - \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}} - {\usebibmacro{name:delim}{#1}% - \usebibmacro{name:hook}{#1}% - \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot - % - \ifboolexpe{% - test {\ifdefvoid{#2}} - and - test {\ifdefvoid{#3}}} - {} - {\revsdnamepunct}% - \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%%\MakeCapital{#2} - \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot} - \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}} - -} -{ -%biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 -\ExecuteBibliographyOptions{ - useprefix = true, %名字的信息包括前缀 - firstinits = true, %名字有缩写,参考3.1.2.3 Internal - date = year, %日期仅写到年 - %maxnames = 3 , %设置名字最大数量 - %minnames = 3, %设置缩减后的名字最小数量 - maxbibnames=3, %将文献列表和引用中最大名字数量区分开 - minbibnames=3, - %uniquename=init, -} - -%作者名字的处理,参考文档4.2.3节,3.12.4 Name Parts and Name Spacing -\newbibmacro*{name:last-first}[4]{% - \ifuseprefix - {\usebibmacro{name:delim}{#3#1}% - \usebibmacro{name:hook}{#3#1}% - \ifblank{#3}{}{% - \ifcapital - {\mkbibnameprefix{\MakeCapital{#3}}\isdot} - {\mkbibnameprefix{#3}\isdot}% - \ifpunctmark{'}{}{\bibnamedelimc}}% - %\mkbibnamelast{#1}\isdot - \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase - %注意上一句\MakeCapital后面如果再跟一个{}包含#1,则没有效果,可能是包在里面少了一层展开 - %因为机构名通常包括在{}内,所以要多展开一次才行,所以这里去掉#1外面的{} - %\mkbibnamelast{\MakeUppercase{#1}}\isdot - %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 - \ifblank{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamefirst{\MakeUppercase{#2}}\isdot}% - \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}} - {\usebibmacro{name:delim}{#1}% - \usebibmacro{name:hook}{#1}% - %\mkbibnamelast{#1}\isdot %3.9.1 Generic Commands and Hooks,对姓重新处理,如下句: %\mkbibnamelast{\MakeUppercase{#1}} - \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot %大写,参考4.6.4 Miscellaneous Commands,\MakeUppercase %\MakeSentenceCase - %\mkbibnamelast{\MakeUppercase{#1}}\isdot - %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 - \ifblank{#2#3}{}{\revsdnamepunct}% - \ifblank{#2}{}{\bibnamedelimd\mkbibnamefirst{\MakeUppercase{#2}}\isdot}% - \ifblank{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}% - \addcomma\addspace% - \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}% - }} - -\newbibmacro*{name:first-last}[4]{% - \ifuseprefix - {\usebibmacro{name:delim}{#3#1}% - \usebibmacro{name:hook}{#3#1}% - \ifblank{#3}{}{% - \ifcapital - {\mkbibnameprefix{\MakeCapital{#3}}\isdot} - {\mkbibnameprefix{#3}\isdot}% - \ifpunctmark{'}{}{\bibnamedelimc}}% - %\mkbibnamelast{#1}\isdot - \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase - %注意上一句\MakeCapital后面如果再跟一个{}包含#1,则没有效果,可能是包在里面少了一层展开 - %因为机构名通常包括在{}内,所以要多展开一次才行,所以这里去掉#1外面的{} - %\mkbibnamelast{\MakeUppercase{#1}}\isdot - %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 - \ifblank{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamefirst{\MakeUppercase{#2}}\isdot}% - \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}} - {\usebibmacro{name:delim}{#1}% - \usebibmacro{name:hook}{#1}% - %\mkbibnamelast{#1}\isdot %3.9.1 Generic Commands and Hooks,对姓重新处理,如下句: %\mkbibnamelast{\MakeUppercase{#1}} - \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot %大写,参考4.6.4 Miscellaneous Commands,\MakeUppercase %\MakeSentenceCase - %\mkbibnamelast{\MakeUppercase{#1}}\isdot - %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 - \ifblank{#2#3}{}{\revsdnamepunct}% - \ifblank{#2}{}{\bibnamedelimd\mkbibnamefirst{\MakeUppercase{#2}}\isdot}% - \ifblank{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}% - \addcomma\addspace% - \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}% - }} -} - %定义判断中文字符的函数,用于判断作者等信息是否由中文字符构成 \providetoggle{ifCJKforgbt} \def\testCJKfirstchar#1#2&{% -\ifnumgreater{`#1}{"2E7F}{\toggletrue{ifCJKforgbt}}{\togglefalse{ifCJKforgbt}}}% +\ifnumgreater{`#1}{"2E7F}{\toggletrue{ifCJKforgbt}}{\togglefalse{ifCJKforgbt}}% +}% + \def\testCJKfirst#1{% -\edef\tempa{#1}% +%\edef\tempa{#1}% +\exploregroups% +\StrChar{#1}{1}[\tempa]% \expandafter\testCJKfirstchar\tempa&} %判断是否是标准 @@ -189,41 +54,6 @@ \togglefalse{ifnoteeqstandard}% \fi}} -%将名字简写后的点去掉 -%\renewrobustcmd*{\bibinitperiod}{\adddot} %来源biblatex2.STY -\renewrobustcmd*{\bibinitperiod}{} -%\newcommand*{\revsdnamepunct}{\addcomma} %来源biblatex.def -\renewcommand*{\revsdnamepunct}{} -%\newcommand*{\subtitlepunct}{\newunitpunct} %修改标题和其它标题信息间的标点 -\renewcommand*{\subtitlepunct}{\addcolon\space} %来源biblatex.def - -%新建一个当地化字符串,用来记录“等”字符 -\NewBibliographyString{andotherscn} -\NewBibliographyString{noaddress} -\NewBibliographyString{nopublisher} - -%直接利用当地化格式english进行修改一些中文的格式, -%具体可以修改哪些需要的参考english.lbx文件 -%当然也可以增加比如上面定义的andotherscn -\DefineBibliographyStrings{english}{ -bibliography = {参考文献}, -references = {参考文献}, -bytranslator= {\addcomma\ 译\adddot}, %将trans. by 改成 译 -and = {\addcomma},%将第2和3人名见的and符号改成 逗号,用\finalnamedelim命令也可以定义,参见3.9.1节 -%andothers = {et al.}, %将超过3个人名的省略,et al.改成为 等 -andotherscn = {等}, %将超过3个人名的省略,et al.改成为 等 -noaddress = {[S.l.]}, -nopublisher = {[s.n.]}, -backrefpage = {引用页:}, -backrefpages = {引用页:}, -} - -%关于双语言或多语言的参考文献,可以参考3.11.5 Entry Sets,4.11.1 Entry Sets -%这里调整一下两种语言参考文献的间隔 -%\renewcommand*{\entrysetpunct}{\addsemicolon\space}%源来自biblatex.def -\renewcommand*{\entrysetpunct}{\adddot\par\nobreak} - - %用于解析连续出版物,2个卷期的情况 \def\multivolumeparsetoparts#1/#2{\def\multivolumefirst{#1}\def\multivolumesecond{#2}} %\def\multinumberparsetoparts#1/#2{\def\multinumberfirst{#1}\def\multinumbersecond{#2}} @@ -270,8 +100,61 @@ backrefpages = {引用页:}, \multinumberparsetopartsb#2\@empty% \fi} +%===================================================================== +%设置宏包选项 +%增加标签对齐选项,right是默认的右对齐,left是左对齐,gb7714-2015是项对齐方式 +%因为在作者年制中,不需要使用,这里也增加,为了与顺序年制的兼容性考虑。 +\DeclareBibliographyOption[string]{align}[right]{}% + +\iftoggle{iftexlivesix}{% Alter settings that carry through from biblatex +%biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 +\ExecuteBibliographyOptions{ + useprefix = true, %名字的信息包括前缀 + %firstinits = true, %名字有缩写,参考3.1.2.3 Internal + giveninits = true, + date = year, %日期仅写到年 + %maxnames = 3 , %设置名字最大数量 + %minnames = 3, %设置缩减后的名字最小数量 + maxbibnames=3, %将文献列表和引用中最大名字数量区分开 + minbibnames=3, +}} +{%biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 +\ExecuteBibliographyOptions{ + useprefix = true, %名字的信息包括前缀 + firstinits = true, %名字有缩写,参考3.1.2.3 Internal + date = year, %日期仅写到年 + %maxnames = 3 , %设置名字最大数量 + %minnames = 3, %设置缩减后的名字最小数量 + maxbibnames=3, %将文献列表和引用中最大名字数量区分开 + minbibnames=3, + %uniquename=init, +}} + +%===================================================================== +%设置本地化字符串 +%新建一个当地化字符串,用来记录“等”字符 +\NewBibliographyString{andotherscn} +\NewBibliographyString{noaddress} +\NewBibliographyString{nopublisher} -%修改输入的源文件数据,用于中文判断等 +%直接利用当地化格式english进行修改一些中文的格式, +%具体可以修改哪些需要的参考english.lbx文件 +%当然也可以增加比如上面定义的andotherscn +\DefineBibliographyStrings{english}{ +bibliography = {参考文献}, +references = {参考文献}, +bytranslator= {\addcomma\ 译\adddot}, %将trans. by 改成 译 +and = {\addcomma},%将第2和3人名见的and符号改成 逗号,用\finalnamedelim命令也可以定义,参见3.9.1节 +%andothers = {et al.}, %将超过3个人名的省略,et al.改成为 等 +andotherscn = {等}, %将超过3个人名的省略,et al.改成为 等 +noaddress = {[S.l.]}, +nopublisher = {[s.n.]}, +backrefpage = {引用页:}, +backrefpages = {引用页:}, +} + +%===================================================================== +%动态数据修改,修改输入的源文件数据,用于中文判断等 %首先把作者和译者信息准确的记录到userf,usere中,用于判断是否是cjk字符。 %注意\DeclareSourcemap命令只能出现一次 \DeclareSourcemap{ @@ -365,13 +248,15 @@ backrefpages = {引用页:}, \map{%将entrykey放入keywords中用于后期的使用 \step[fieldsource=entrykey] \step[fieldset=keywords, origfieldval] - \step[fieldsource=note,final]%将note域信息复制给keywords,用于输出时容易区分标准和报纸 - \step[fieldset=keywords, fieldvalue={,},append] - \step[fieldset=keywords, origfieldval,append] + } + \map[overwrite]{%这里还必须有overwrite,怎么之前会觉得没有问题呢,可能是之前版本拷错了,还是之前是texlive2015变16后biber有了变化(2016-1207修改正确) + \step[fieldsource=note, final]%将note域信息复制给keywords,用于输出时容易区分标准和报纸 + \step[fieldset=keywords, fieldvalue={,}, append] + \step[fieldset=keywords, origfieldval, append] } \map{%因为无法进行cjk字符判断,所以用反的思路,判断没有英文字符,没有空格,没有逗号等字符情况下 %认为是中文的,将文献userb设置成cn,用于排序 - \step[fieldsource=author,match=\regexp{[^a-zA-Z\s\.\,\'\{\}]},final] + \step[fieldsource=author,match=\regexp{[^a-zA-Z\s\.\,\'\{\}\-]},final] \step[fieldset=userb,fieldvalue={cn}] } \map{%将没有设置的userb设置成en,即认为不是中文的就是英文的。 @@ -380,7 +265,8 @@ backrefpages = {引用页:}, } } - +%===================================================================== +%设置排序格式 %排序用降序或userb域 \DeclareSortingScheme{nyt}{ \sort{ @@ -414,6 +300,42 @@ backrefpages = {引用页:}, } } +%===================================================================== +%参考文献列表环境 + \defbibenvironment{bibliography}%修改参考文献列表环境,不要缩进 + {\list + {} + {%\setlength{\leftmargin}{\bibhang}% + %\setlength{\itemindent}{-\leftmargin}% + \setlength{\leftmargin}{0pt}% + \setlength{\itemindent}{0pt}% + \setlength{\itemsep}{\bibitemsep}% + \setlength{\parsep}{\bibparsep}}} + {\endlist} + {\item} + +%===================================================================== +%设置单元或块等的标点 +%将名字简写后的点去掉 +%\renewrobustcmd*{\bibinitperiod}{\adddot} %来源biblatex2.STY +\renewrobustcmd*{\bibinitperiod}{} +%\newcommand*{\revsdnamepunct}{\addcomma} %来源biblatex.def +\renewcommand*{\revsdnamepunct}{} +%\newcommand*{\subtitlepunct}{\newunitpunct} %修改标题和其它标题信息间的标点 +\renewcommand*{\subtitlepunct}{\addcolon\space} %来源biblatex.def + +%关于双语言或多语言的参考文献,可以参考3.11.5 Entry Sets,4.11.1 Entry Sets +%这里调整一下两种语言参考文献的间隔 +%\renewcommand*{\entrysetpunct}{\addsemicolon\space}%源来自biblatex.def +\renewcommand*{\entrysetpunct}{\adddot\par\nobreak} + +%页码引用格式的修改 +%\newcommand*{\bibpagespunct}{\addcomma\space} +\renewcommand*{\bibpagespunct}{\addcolon\space}%修改为用冒号 + + +%===================================================================== +%修改域的格式 %新增文献类型标识符的格式 %\DeclareFieldFormat{gbtypeflag}{\nobreak\mkbibbrackets{\nobreak#1}\nobreak} \DeclareFieldFormat{gbtypeflag}{% @@ -456,8 +378,126 @@ backrefpages = {引用页:}, %\DeclareFieldFormat{titlecase}{#1} \DeclareFieldFormat{titlecase}{\MakeCapital#1} +\iftoggle{iftexlivesix}{ +%biblatex3.3版后(比如texlive2016中的3.4版)的使用方式 +\renewbibmacro*{name:given-family}[4]{%利用family-given定义given-family + \ifuseprefix + {\usebibmacro{name:delim}{#3#1}% + \usebibmacro{name:hook}{#3#1}% + \ifdefvoid{#3}{}{% + \ifcapital + {\mkbibnameprefix{\MakeCapital{#3}}\isdot} + {\mkbibnameprefix{#3}\isdot}% + \ifprefchar{}{\bibnamedelimc}}% + \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot + \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital{#2} + \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}} + {\usebibmacro{name:delim}{#1}% + \usebibmacro{name:hook}{#1}% + \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot + % + \ifboolexpe{% + test {\ifdefvoid{#2}} + and + test {\ifdefvoid{#3}}} + {} + {\revsdnamepunct}% + \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital{#2} + \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot} + \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}} + +\renewbibmacro*{name:family-given}[4]{%利用family-given定义given-family + \ifuseprefix + {\usebibmacro{name:delim}{#3#1}% + \usebibmacro{name:hook}{#3#1}% + \ifdefvoid{#3}{}{% + \ifcapital + {\mkbibnameprefix{\MakeCapital{#3}}\isdot} + {\mkbibnameprefix{#3}\isdot}% + \ifprefchar{}{\bibnamedelimc}}% + \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot + \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital{#2} + \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}} + {\usebibmacro{name:delim}{#1}% + \usebibmacro{name:hook}{#1}% + \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot + % + \ifboolexpe{% + test {\ifdefvoid{#2}} + and + test {\ifdefvoid{#3}}} + {} + {\revsdnamepunct}% + \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%%\MakeCapital{#2} + \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot} + \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}} + +} +{%biblatex3.3版前(比如texlive2015中的3.0版)的使用方式 +%作者名字的处理,参考文档4.2.3节,3.12.4 Name Parts and Name Spacing +\renewbibmacro*{name:last-first}[4]{% + \ifuseprefix + {\usebibmacro{name:delim}{#3#1}% + \usebibmacro{name:hook}{#3#1}% + \ifblank{#3}{}{% + \ifcapital + {\mkbibnameprefix{\MakeCapital{#3}}\isdot} + {\mkbibnameprefix{#3}\isdot}% + \ifpunctmark{'}{}{\bibnamedelimc}}% + %\mkbibnamelast{#1}\isdot + \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase + %注意上一句\MakeCapital后面如果再跟一个{}包含#1,则没有效果,可能是包在里面少了一层展开 + %因为机构名通常包括在{}内,所以要多展开一次才行,所以这里去掉#1外面的{} + %\mkbibnamelast{\MakeUppercase{#1}}\isdot + %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 + \ifblank{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamefirst{\MakeUppercase{#2}}\isdot}% + \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}} + {\usebibmacro{name:delim}{#1}% + \usebibmacro{name:hook}{#1}% + %\mkbibnamelast{#1}\isdot %3.9.1 Generic Commands and Hooks,对姓重新处理,如下句: %\mkbibnamelast{\MakeUppercase{#1}} + \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot %大写,参考4.6.4 Miscellaneous Commands,\MakeUppercase %\MakeSentenceCase + %\mkbibnamelast{\MakeUppercase{#1}}\isdot + %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 + \ifblank{#2#3}{}{\revsdnamepunct}% + \ifblank{#2}{}{\bibnamedelimd\mkbibnamefirst{\MakeUppercase{#2}}\isdot}% + \ifblank{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}% + \addcomma\addspace% + \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}% + }} + +\renewbibmacro*{name:first-last}[4]{% + \ifuseprefix + {\usebibmacro{name:delim}{#3#1}% + \usebibmacro{name:hook}{#3#1}% + \ifblank{#3}{}{% + \ifcapital + {\mkbibnameprefix{\MakeCapital{#3}}\isdot} + {\mkbibnameprefix{#3}\isdot}% + \ifpunctmark{'}{}{\bibnamedelimc}}% + %\mkbibnamelast{#1}\isdot + \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot%\MakeUppercase %\mkbibnamelast{\MakeUppercase{#1}} %\MakeSentenceCase + %注意上一句\MakeCapital后面如果再跟一个{}包含#1,则没有效果,可能是包在里面少了一层展开 + %因为机构名通常包括在{}内,所以要多展开一次才行,所以这里去掉#1外面的{} + %\mkbibnamelast{\MakeUppercase{#1}}\isdot + %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 + \ifblank{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamefirst{\MakeUppercase{#2}}\isdot}% + \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}} + {\usebibmacro{name:delim}{#1}% + \usebibmacro{name:hook}{#1}% + %\mkbibnamelast{#1}\isdot %3.9.1 Generic Commands and Hooks,对姓重新处理,如下句: %\mkbibnamelast{\MakeUppercase{#1}} + \ifblank{#2}{\MakeCapital#1}{\mkbibnamelast{\MakeUppercase{#1}}}\isdot %大写,参考4.6.4 Miscellaneous Commands,\MakeUppercase %\MakeSentenceCase + %\mkbibnamelast{\MakeUppercase{#1}}\isdot + %\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%这句放到后面 + \ifblank{#2#3}{}{\revsdnamepunct}% + \ifblank{#2}{}{\bibnamedelimd\mkbibnamefirst{\MakeUppercase{#2}}\isdot}% + \ifblank{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}% + \addcomma\addspace% + \ifblank{#4}{}{\addcomma\addspace\bibnamedelimd\mkbibnameaffix{#4}\isdot}% + }} +} + %重设title的输出,将文献类型标识符输出出去,原输出来自biblatex.def文件 -\newbibmacro*{title}{% +\renewbibmacro*{title}{% \ifboolexpr{% test{\iffieldundef{title}}% and% @@ -494,7 +534,7 @@ backrefpages = {引用页:}, \DeclareFieldFormat{url}{\url{#1}} %url域修改如本行 %\DeclareFieldFormat{urldate}{\mkbibparens{\bibstring{urlseen}\space#1}} -\newbibmacro*{url+urldate}{% +\renewbibmacro*{url+urldate}{% %\usebibmacro{url}%%更换url的位置,放到下面 \iffieldundef{urlyear}% {}{%\setunit*{\addspace}% @@ -502,9 +542,12 @@ backrefpages = {引用页:}, \setunit{\addperiod\addspace}% \usebibmacro{url}} -\newbibmacro*{url}{\printfield{url}} +\renewbibmacro*{url}{\printfield{url}} %\newbibmacro*{urldate}{\printurldate} %引用时间修改如下一行 -\newbibmacro*{urldate}{\addspace\printtext{[}\printfield{urlyear}\bibrangedash\printfield{urlmonth}\bibrangedash\printfield{urlday}\printtext{]}} +\renewbibmacro*{urldate}{% +\addspace\printtext{[}\printfield{urlyear}% +\iffieldundef{urlmonth}{}{\bibrangedash\printfield{urlmonth}}% +\iffieldundef{urlday}{}{\bibrangedash\printfield{urlday}}\printtext{]}} \newbibmacro*{newsdate}{%%新增加一个新闻日期 \iffieldundef{year}{}{\printfield{year}% \iffieldundef{month}{}{\bibrangedash\printtext{\thefield{month}}% @@ -517,15 +560,12 @@ backrefpages = {引用页:}, \iffieldundef{day}{}{\bibrangedash\printfield{day}}}}% }}% -%页码引用格式的修改 -%\newcommand*{\bibpagespunct}{\addcomma\space} -\renewcommand*{\bibpagespunct}{\addcolon\space}%修改为用冒号 -%\DeclareFieldFormat{pages}{\mkpageprefix[bookpagination]{#1}} +%\DeclareFieldFormat{pages}{\mkpageprefix[bookpagination]{#1}}%页码引用格式的修改 \DeclareFieldFormat{pages}{#1}%去掉前面引导页码的pp.等字符 %调整doi+eprint+url格式,源来自standard.bbx %因为页码后面直接跟引用日期,没有标点所以去掉其中的标点。 -\newbibmacro*{doi+eprint+url}{% +\renewbibmacro*{doi+eprint+url}{% % \iftoggle{bbx:doi}%把doi的位置放到url后面 % {\printfield{doi}} % {}% @@ -542,7 +582,7 @@ backrefpages = {引用页:}, {\printfield{doi}} {}} -\newbibmacro*{chapter+pages}{% +\renewbibmacro*{chapter+pages}{% \printfield{chapter}% \iffieldundef{pages}{}{%这里增加一个判断,当没有页码时就不输出 \setunit{\bibpagespunct}% @@ -606,7 +646,7 @@ backrefpages = {引用页:}, \printfield{extrayear}}}}}% %修改译者位置格式,bytranslator+others原格式来自biblatex.def文件 -\newbibmacro*{bytranslator+others}{% +\renewbibmacro*{bytranslator+others}{% \ifnameundef{translator} {} {%\usebibmacro{bytranslator+othersstrg} @@ -619,7 +659,7 @@ backrefpages = {引用页:}, \usebibmacro{withothers}} %判断作者或译者是否中文,若中文用字符等,否则用etal。 -\newbibmacro*{name:andothers}{% +\renewbibmacro*{name:andothers}{% \ifboolexpr{ test {\ifnumequal{\value{listcount}}{\value{liststop}}} and @@ -639,7 +679,7 @@ backrefpages = {引用页:}, %出版社和地址的处理,当没有出版社地址时 %直接判断title的信息是否是中文,若为中文,则写出版地不详,否则用英文的字符表示。 %事实上title对于每个文献来说是必须的,所以用它判断是最快的,而且一般标题和出版社的语言是一样的。 -\newbibmacro*{publisher+location+date}{% +\renewbibmacro*{publisher+location+date}{% \iffieldundef{title}{}{\testCJKfirst{\thefield{title}}}% \testifnoteeqstd% \iflistundef{location}{%\adddot @@ -659,6 +699,248 @@ backrefpages = {引用页:}, %\newunit %去掉这个标点 } +%修改析出文献的文集的标题与附加标题间的符号 +\renewbibmacro*{booktitle}{% + \ifboolexpr{ + test {\iffieldundef{booktitle}} + and + test {\iffieldundef{booksubtitle}} + } + {} + {\printtext[booktitle]{% + \printfield[titlecase]{booktitle}% + \setunit{\subtitlepunct}% + \printfield[titlecase]{booksubtitle}}% + \newunit%标点换成下一句 + \setunit{\subtitlepunct}}% + \printfield{booktitleaddon}} + +%调整期刊名的格式,源来自standard.bbx +\renewbibmacro*{journal+issuetitle}{% + \usebibmacro{journal}% + %\setunit*{\addspace}% + \setunit*{\addcomma\addspace}%修改为增加一个逗号 + \iffieldundef{series} + {} + {\newunit + \printfield{series}% + \setunit{\addspace}}% + %\usebibmacro{volume+number+eid}% + %\setunit{\addspace}% + \usebibmacro{issue+date}% + %\setunit{\addcolon\space}% + \iffieldundef{volume}{}{\setunit{\addcomma\space}}% + %换成逗号和空格 + \usebibmacro{issue}% + \usebibmacro{volume+number+eid}%把卷期放到年份后面 + %\newunit + } + +%调整期刊年份的格式,去掉括号 +\renewbibmacro*{issue+date}{% + \printtext{%去掉了[parens] + \iffieldundef{issue} + {%\usebibmacro{date} + \iffieldundef{note}{\usebibmacro{date}}%判断一下,是否是报纸和标准 + {\def\comparetmp{news}\edef\comparetmpb{\thefield{note}}% + \ifx\comparetmp\comparetmpb% + \usebibmacro{newsdate}% + \else% + \usebibmacro{date}% + \fi}% + } + {\printfield{issue}% + \setunit*{\addspace}% + %\usebibmacro{date} + \iffieldundef{note}{\usebibmacro{date}}%判断一下,是否是报纸和标准 + {\def\comparetmp{news}\edef\comparetmpb{\thefield{note}}% + \ifx\comparetmp\comparetmpb% + \usebibmacro{newsdate}% + \else% + \usebibmacro{date}% + \fi}% + }% + }% + %\newunit + } + +%调整期刊卷和期的格式,源来自standard.bbx +\renewbibmacro*{volume+number+eid}{% + \printfield{volume}% + %\setunit*{\adddot}%去掉点号 + %\printfield{number}% + \iffieldundef{number}{}{\printtext{\mkbibparens{\printfield{number}}}}%增加一个圆括号 + \iffieldundef{eid}{}{% + \setunit{\addcomma\space}% + \printfield{eid}}} + +%调整页码前的标点和去掉期刊文章等页码后面的标点,源来自standard.bbx +\renewbibmacro*{note+pages}{% + %\printfield{note}%不要note,note用来判断是否是报纸newspaper + \iffieldundef{pages}{}{ + \setunit{\bibpagespunct}% + \printfield{pages}}% + %\newunit + } + +%编者类型做一修改,源来自biblatex.DEF +\renewbibmacro*{editorstrg}{% + \printtext[editortype]{% + \iffieldundef{editortype} + { +% \ifboolexpr{ %这一段去掉,未定义编者类型情况下不处理 +% test {\ifnumgreater{\value{editor}}{1}} +% or +% test {\ifandothers{editor}} +% } +% {\bibstring{editors}} +% {\bibstring{editor}} + } + {\ifbibxstring{\thefield{editortype}} %定义编者类型情况下处理,以后根据需要修改 + {\ifboolexpr{ + test {\ifnumgreater{\value{editor}}{1}} + or + test {\ifandothers{editor}} + } + {\bibstring{\thefield{editortype}s}} + {\bibstring{\thefield{editortype}}}} + {\thefield{editortype}}} + }} + +%修改期刊的标题,源来自biblatex.DEF +\renewbibmacro*{periodical}{% + \iffieldundef{title} + {} + {\printtext[title]{% + \printfield[titlecase]{title}% + %\setunit{\subtitlepunct}% + \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题 + {}{\setunit{\subtitlepunct} + \printfield[titlecase]{subtitle}}% + %}%把编组结束移到后面去 + \iffieldundef{usera}{}{%在标题后直接给出文献标识字母 + \printfield[gbtypeflag]{usera}} + }} + } + +%期刊的标题做修改,源来自standard.BBX +\renewbibmacro*{title+issuetitle}{% + \usebibmacro{periodical}% + %\setunit*{\addspace}% + \setunit*{\adddot\addspace}%标点修改为句点 + \iffieldundef{series} + {} + {\newunit + \printfield{series}% + \setunit{\addspace}}% + \usebibmacro{periodical+issue}%将issue调整到上面来,并修改 +\iffieldundef{number}{}{%%进一步处理有范围的数字 + \multinumberparser{\thefield{number}}}% + \iffieldundef{volume}% + {\printfield{year}% + \printtext{\mkbibparens{\multinumberfirst}}% + \bibrangedash% + \iffieldundef{endyear}{}{\printfield{endyear}\printtext{\mkbibparens{\multinumbersecond}}}% + }% + {\gbt@parse@range{\thefield{volume}}% + \printfield{year}% + \setunit{\addcomma\space}%将冒号修改为逗号 + \printtext{\gbt@range@first}% + \printtext{\mkbibparens{\multinumberfirst}}% + \bibrangedash% + \iffieldundef{endyear}{}{% + \printfield{endyear}% + \setunit{\addcomma\space}%将冒号修改为逗号 + \printtext{\gbt@range@second}% + \printtext{\mkbibparens{\multinumbersecond}}}% + }% + \setunit{\addcomma\space}% + \printfield{eid}% + \setunit{\addspace}% + %\usebibmacro{issue+date}% + %\setunit{\addcolon\space}% + \usebibmacro{issue}% + \newunit} + +%新增一个样式用于调整期刊年份的格式,只打印年份 +\newbibmacro*{periodical+issue}{% + \printtext{%去掉了[parens] + \iffieldundef{issue} + {%\usebibmacro{date}%修改为下一句 + }% + {\printfield{issue}% + \setunit*{\addspace}% + %\usebibmacro{date}%修改为下一句 + }% + }% + %\newunit +} + +%新增一个样式用于输出连续出版物的地址,单位,时间 +%类似与上面的\newbibmacro*{publisher+location+date} +\newbibmacro*{location+institution+date}{% +\testCJKfirst{\thefield{title}} +\iflistundef{location}{\iftoggle{ifCJKforgbt}{\printtext{[出版地不详]}}{\printtext{[S.l.\adddot]}}}% + {\printlist{location}}% +% \iflistundef{institution} +% {\setunit*{\addcomma\space}} +% {\setunit*{\addcolon\space}}% +% \printlist{institution}% +% \setunit*{\addcomma\space}% +\addcolon\addspace% +\iflistundef{institution}{% +%注意这里\printtext{\mkbibbrackets{s.n.}}和\printtext{[s.n.\adddot]}是不同的,这里的]不影响标点追踪, +%这里要理解的是newunit插入的是period,看def中的命令:\newcommand*{\newunitpunct}{\addperiod\space},\newcommand*{\finentrypunct}{\addperiod} +\iftoggle{ifCJKforgbt}{\printtext{[出版者不详]}}{\printtext{\mkbibbrackets{s.n.}}\setunit{\adddot\addspace}}}% \bibstring{nopublisher} +{\printlist{institution}}% +\setunit{\addcomma\addspace}% + %\usebibmacro{date}% +% \printfield{year}% +% \bibrangedash% +% \iffieldundef{endyear}{}{\printfield{endyear}}% + \newunit% +} + +%重设专利title的输出,将文献类型标识符输出出去,原输出来自biblatex.def文件 +\newbibmacro*{patenttitle}{% + \ifboolexpr{% + test{\iffieldundef{title}}% + and% + test{\iffieldundef{subtitle}}% + }% + {}% + {\printtext[title]{% + \printfield[titlecase]{title}% + \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题 + {}{\setunit{\subtitlepunct}% + \printfield[titlecase]{subtitle}}% + \iffieldundef{titleaddon}{}%判断一下titleaddon,否则直接加可能多一个空格 + {\setunit{\subtitlepunct}\printfield{titleaddon}}% + \setunit{\subtitlepunct}\printfield{number}%写专利号 + \printfield[gbtypeflag]{usera}% + \iffieldundef{booktitle}{\newunit}{}%当title是析出时,不要标点 + %\newunit + }% +}% +} + +%修改了一个institution+location+date用于report等的,当没有institution时不处理。 +\renewbibmacro*{institution+location+date}{% + \printlist{location}% + \iflistundef{institution} + {\setunit*{\addcomma\space}} + {\setunit*{\addcolon\space}}% + \printlist{institution}% + \setunit*{\addcomma\space}% + \usebibmacro{date}% + %\usebibmacro{modifydate}% + %\newunit + } + + +%===================================================================== +%设置驱动格式 + %修改book的驱动,源来自standard.BBX \DeclareBibliographyDriver{book}{% \usebibmacro{bibindex}% @@ -710,35 +992,6 @@ backrefpages = {引用页:}, {}% \usebibmacro{finentry}} -%修改参考文献列表环境,不要缩进 - \defbibenvironment{bibliography} - {\list - {} - {%\setlength{\leftmargin}{\bibhang}% - %\setlength{\itemindent}{-\leftmargin}% - \setlength{\leftmargin}{0pt}% - \setlength{\itemindent}{0pt}% - \setlength{\itemsep}{\bibitemsep}% - \setlength{\parsep}{\bibparsep}}} - {\endlist} - {\item} - -%修改析出文献的文集的标题与附加标题间的符号 -\newbibmacro*{booktitle}{% - \ifboolexpr{ - test {\iffieldundef{booktitle}} - and - test {\iffieldundef{booksubtitle}} - } - {} - {\printtext[booktitle]{% - \printfield[titlecase]{booktitle}% - \setunit{\subtitlepunct}% - \printfield[titlecase]{booksubtitle}}% - \newunit%标点换成下一句 - \setunit{\subtitlepunct}}% - \printfield{booktitleaddon}} - %修改inbook的驱动,源来自standard.BBX \DeclareBibliographyDriver{inbook}{% \usebibmacro{bibindex}% @@ -902,75 +1155,6 @@ backrefpages = {引用页:}, {}% \usebibmacro{finentry}} -%调整期刊名的格式,源来自standard.bbx -\newbibmacro*{journal+issuetitle}{% - \usebibmacro{journal}% - %\setunit*{\addspace}% - \setunit*{\addcomma\addspace}%修改为增加一个逗号 - \iffieldundef{series} - {} - {\newunit - \printfield{series}% - \setunit{\addspace}}% - %\usebibmacro{volume+number+eid}% - %\setunit{\addspace}% - \usebibmacro{issue+date}% - %\setunit{\addcolon\space}% - \iffieldundef{volume}{}{\setunit{\addcomma\space}}% - %换成逗号和空格 - \usebibmacro{issue}% - \usebibmacro{volume+number+eid}%把卷期放到年份后面 - %\newunit - } - -%调整期刊年份的格式,去掉括号 -\newbibmacro*{issue+date}{% - \printtext{%去掉了[parens] - \iffieldundef{issue} - {%\usebibmacro{date} - \iffieldundef{note}{\usebibmacro{date}}%判断一下,是否是报纸和标准 - {\def\comparetmp{news}\edef\comparetmpb{\thefield{note}}% - \ifx\comparetmp\comparetmpb% - \usebibmacro{newsdate}% - \else% - \usebibmacro{date}% - \fi}% - } - {\printfield{issue}% - \setunit*{\addspace}% - %\usebibmacro{date} - \iffieldundef{note}{\usebibmacro{date}}%判断一下,是否是报纸和标准 - {\def\comparetmp{news}\edef\comparetmpb{\thefield{note}}% - \ifx\comparetmp\comparetmpb% - \usebibmacro{newsdate}% - \else% - \usebibmacro{date}% - \fi}% - }% - }% - %\newunit - } - -%调整期刊卷和期的格式,源来自standard.bbx -\newbibmacro*{volume+number+eid}{% - \printfield{volume}% - %\setunit*{\adddot}%去掉点号 - %\printfield{number}% - \iffieldundef{number}{}{\printtext{\mkbibparens{\printfield{number}}}}%增加一个圆括号 - \iffieldundef{eid}{}{% - \setunit{\addcomma\space}% - \printfield{eid}}} - -%调整页码前的标点和去掉期刊文章等页码后面的标点,源来自standard.bbx -\newbibmacro*{note+pages}{% - %\printfield{note}%不要note,note用来判断是否是报纸newspaper - \iffieldundef{pages}{}{ - \setunit{\bibpagespunct}% - \printfield{pages}}% - %\newunit - } - - %期刊文章,连续出版物中的析出文献的格式 \DeclareBibliographyDriver{article}{% \usebibmacro{bibindex}% @@ -1011,125 +1195,6 @@ backrefpages = {引用页:}, {}% \usebibmacro{finentry}} -%编者类型做一修改,源来自biblatex.DEF -\newbibmacro*{editorstrg}{% - \printtext[editortype]{% - \iffieldundef{editortype} - { -% \ifboolexpr{ %这一段去掉,未定义编者类型情况下不处理 -% test {\ifnumgreater{\value{editor}}{1}} -% or -% test {\ifandothers{editor}} -% } -% {\bibstring{editors}} -% {\bibstring{editor}} - } - {\ifbibxstring{\thefield{editortype}} %定义编者类型情况下处理,以后根据需要修改 - {\ifboolexpr{ - test {\ifnumgreater{\value{editor}}{1}} - or - test {\ifandothers{editor}} - } - {\bibstring{\thefield{editortype}s}} - {\bibstring{\thefield{editortype}}}} - {\thefield{editortype}}} - }} - -%修改期刊的标题,源来自biblatex.DEF -\newbibmacro*{periodical}{% - \iffieldundef{title} - {} - {\printtext[title]{% - \printfield[titlecase]{title}% - %\setunit{\subtitlepunct}% - \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题 - {}{\setunit{\subtitlepunct} - \printfield[titlecase]{subtitle}}% - %}%把编组结束移到后面去 - \iffieldundef{usera}{}{%在标题后直接给出文献标识字母 - \printfield[gbtypeflag]{usera}} - }} - } - -%期刊的标题做修改,源来自standard.BBX -\newbibmacro*{title+issuetitle}{% - \usebibmacro{periodical}% - %\setunit*{\addspace}% - \setunit*{\adddot\addspace}%标点修改为句点 - \iffieldundef{series} - {} - {\newunit - \printfield{series}% - \setunit{\addspace}}% - \usebibmacro{periodical+issue}%将issue调整到上面来,并修改 -\iffieldundef{number}{}{%%进一步处理有范围的数字 - \multinumberparser{\thefield{number}}}% - \iffieldundef{volume}% - {\printfield{year}% - \printtext{\mkbibparens{\multinumberfirst}}% - \bibrangedash% - \iffieldundef{endyear}{}{\printfield{endyear}\printtext{\mkbibparens{\multinumbersecond}}}% - }% - {\gbt@parse@range{\thefield{volume}}% - \printfield{year}% - \setunit{\addcomma\space}%将冒号修改为逗号 - \printtext{\gbt@range@first}% - \printtext{\mkbibparens{\multinumberfirst}}% - \bibrangedash% - \iffieldundef{endyear}{}{% - \printfield{endyear}% - \setunit{\addcomma\space}%将冒号修改为逗号 - \printtext{\gbt@range@second}% - \printtext{\mkbibparens{\multinumbersecond}}}% - }% - \setunit{\addcomma\space}% - \printfield{eid}% - \setunit{\addspace}% - %\usebibmacro{issue+date}% - %\setunit{\addcolon\space}% - \usebibmacro{issue}% - \newunit} - -%新增一个样式用于调整期刊年份的格式,只打印年份 -\newbibmacro*{periodical+issue}{% - \printtext{%去掉了[parens] - \iffieldundef{issue} - {%\usebibmacro{date}%修改为下一句 - }% - {\printfield{issue}% - \setunit*{\addspace}% - %\usebibmacro{date}%修改为下一句 - }% - }% - %\newunit -} - -%新增一个样式用于输出连续出版物的地址,单位,时间 -%类似与上面的\newbibmacro*{publisher+location+date} -\newbibmacro*{location+institution+date}{% -\testCJKfirst{\thefield{title}} -\iflistundef{location}{\iftoggle{ifCJKforgbt}{\printtext{[出版地不详]}}{\printtext{[S.l.\adddot]}}}% - {\printlist{location}}% -% \iflistundef{institution} -% {\setunit*{\addcomma\space}} -% {\setunit*{\addcolon\space}}% -% \printlist{institution}% -% \setunit*{\addcomma\space}% -\addcolon\addspace% -\iflistundef{institution}{% -%注意这里\printtext{\mkbibbrackets{s.n.}}和\printtext{[s.n.\adddot]}是不同的,这里的]不影响标点追踪, -%这里要理解的是newunit插入的是period,看def中的命令:\newcommand*{\newunitpunct}{\addperiod\space},\newcommand*{\finentrypunct}{\addperiod} -\iftoggle{ifCJKforgbt}{\printtext{[出版者不详]}}{\printtext{\mkbibbrackets{s.n.}}\setunit{\adddot\addspace}}}% \bibstring{nopublisher} -{\printlist{institution}}% -\setunit{\addcomma\addspace}% - %\usebibmacro{date}% -% \printfield{year}% -% \bibrangedash% -% \iffieldundef{endyear}{}{\printfield{endyear}}% - \newunit% -} - - %修改连续出版物的驱动,源来自standard.BBX \DeclareBibliographyDriver{periodical}{% \usebibmacro{bibindex}% @@ -1163,29 +1228,6 @@ backrefpages = {引用页:}, {}% \usebibmacro{finentry}} -%重设专利title的输出,将文献类型标识符输出出去,原输出来自biblatex.def文件 -\newbibmacro*{patenttitle}{% - \ifboolexpr{% - test{\iffieldundef{title}}% - and% - test{\iffieldundef{subtitle}}% - }% - {}% - {\printtext[title]{% - \printfield[titlecase]{title}% - \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题 - {}{\setunit{\subtitlepunct}% - \printfield[titlecase]{subtitle}}% - \iffieldundef{titleaddon}{}%判断一下titleaddon,否则直接加可能多一个空格 - {\setunit{\subtitlepunct}\printfield{titleaddon}}% - \setunit{\subtitlepunct}\printfield{number}%写专利号 - \printfield[gbtypeflag]{usera}% - \iffieldundef{booktitle}{\newunit}{}%当title是析出时,不要标点 - %\newunit - }% -}% -} - %处理专利文献,源来自standard.BBX \DeclareBibliographyDriver{patent}{% \usebibmacro{bibindex}% @@ -1305,17 +1347,6 @@ backrefpages = {引用页:}, {}% \usebibmacro{finentry}} -\newbibmacro*{institution+location+date}{% - \printlist{location}% - \iflistundef{institution} - {\setunit*{\addcomma\space}} - {\setunit*{\addcolon\space}}% - \printlist{institution}% - \setunit*{\addcomma\space}% - \usebibmacro{date}% - %\usebibmacro{modifydate}% - %\newunit - } %2016-11-11增加了译者信息 \DeclareBibliographyDriver{report}{% |