diff options
author | Karl Berry <karl@freefriends.org> | 2022-08-29 20:01:55 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2022-08-29 20:01:55 +0000 |
commit | 6e1c7bc0d87a84e7cc88426556b8ce88edb12351 (patch) | |
tree | 052f4890b0bcd6193a9fcdd858286cda80f647f0 /Master/texmf-dist/tex/latex/biblatex-gb7714-2015 | |
parent | 513bf833508462daa52da254fb1caef05cd890e8 (diff) |
biblatex-gb7714-2015 (29aug22)
git-svn-id: svn://tug.org/texlive/trunk@64230 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/biblatex-gb7714-2015')
9 files changed, 395 insertions, 220 deletions
diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx index cc70cc84ade..e7cd2c50004 100644 --- a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx +++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx @@ -11,7 +11,7 @@ % % 版本和时间信息 % -\def\versionofgbtstyle{2022/05/17 v1.1i} +\def\versionofgbtstyle{2022/08/29 v1.1j} \def\versionofbiblatex{\abx@version} \ProvidesFile{gb7714-2015.bbx}[\versionofgbtstyle biblatex bibliography style] %\RequireBiber[3]%显式指定用biber后端,当用bibtex时会报错,但其实不会影响编译,只是采用bibtex后无法达成格式需求 @@ -200,6 +200,7 @@ \DeclareDatamodelFields[type=field,datatype=literal]{shortbooktitle} \DeclareDatamodelFields[type=field,datatype=literal]{lansortorder} \DeclareDatamodelFields[type=field,datatype=literal]{languageid} + \DeclareDatamodelFields[type=field,datatype=integer]{refnumber} %因为biblatex更新3.14版本以后,biber对于为声明数据模型的条目类型 %不再默认读取,而是以空字符串作为条目类型名,自然在条目定义alias时 @@ -209,6 +210,19 @@ \DeclareDatamodelEntrytypes{newspaper}% }{} +%% +%%符号的垂直位置调整一下 +%% 20220625,hzz,v1.1i +\newlength{\BracketLift} +\setlength{\BracketLift}{0.0ex} +\renewcommand*{\bibleftparen}{\blx@postpunct\raise\BracketLift\hbox{(}} +\renewcommand*{\bibrightparen}{\blx@postpunct\raise\BracketLift\hbox{)}\midsentence} +\renewcommand*{\bibleftbracket}{\blx@postpunct\raise\BracketLift\hbox{[}} +\renewcommand*{\bibrightbracket}{\blx@postpunct\raise\BracketLift\hbox{]}\midsentence} +\newcommand*{\gbleftparen}{\raise\BracketLift\hbox{(}} +\newcommand*{\gbrightparen}{\raise\BracketLift\hbox{)}} +\newcommand*{\gbleftbracket}{\raise\BracketLift\hbox{[}} +\newcommand*{\gbrightbracket}{\raise\BracketLift\hbox{]}} %===================================================================== @@ -282,7 +296,7 @@ %用于在文献条目后面输出注释信息的宏 %FieldFormat{annotation}用于设置注释信息的格式 \DeclareFieldFormat{annotation}{% - \printtext{\addspace(#1)}% + \printtext{\addspace\gbleftparen#1\gbrightparen}% } \renewbibmacro*{annotation}{% \iftoggle{bbx:gbannote}% @@ -316,20 +330,25 @@ % 当前面的脚注中已经存在当前文献,那么当前文献内容不再输出而用同(4)这样的方式 % 需要注意的是由于小页环境和表格中的脚注本身的问题,可能会有一些问题 \DeclareBibliographyOption{gbfootbib}[false]{% - \ifstrequal{#1}{false}{}{\execgbfootbib}} + \ifstrequal{#1}{false}{}{\execgbfootbib\execgbfootbibfmt}} \ExecuteBibliographyOptions{gbfootbib} + % + % 增加一个选项,用于控制分离后的脚注的格式 + % 20220829,v1.1j,hzz + % 将原来的一个gbfootbib选项控制所有格式分离为由两个选项gbfootbib和gbfootbibfmt控制 + % 分离后,gbfootbibfmt实现同(4)这样的方式,gbfootbib则实现全部的格式 + \DeclareBibliographyOption{gbfootbibfmt}[false]{% + \ifstrequal{#1}{false}{}{\execgbfootbib}} + \ExecuteBibliographyOptions{gbfootbibfmt} %% \newlength{\footbibmargin} \newlength{\footbiblabelsep} \setlength{\footbibmargin}{1em}%脚注的段落左侧缩进距离 \setlength{\footbiblabelsep}{0.5em}%脚注中标记号与脚注段落的间距 - \def\execgbfootbib% - {% - %开启引用跟踪计数器,为使用\ifciteseen等测试命令 - \ExecuteBibliographyOptions{citetracker=true} - % - %利用footmisc宏包来实现脚注文献的悬挂对齐 + + \def\execgbfootbibfmt% + {%利用footmisc宏包来实现脚注文献的悬挂对齐 \AtEndPreamble{ \@ifclassloaded{beamer}{}{ %beamer类因为其特殊性,为避免冲突不调footmisc。 @@ -345,7 +364,7 @@ \iftoggle{bbx:gbfnperpage}% {\@addtoreset{footnote}{page}}{}%重设计数器 -\@ifpackageloaded{hyperref}{%加载hyperref则对\H@@footnotetext做重定义 + \@ifpackageloaded{hyperref}{%加载hyperref则对\H@@footnotetext做重定义 \long\def\H@@footnotetext##1{\insert\footins{% \reset@font\footnotesize \interlinepenalty\interfootnotelinepenalty @@ -422,6 +441,12 @@ }% }{}{} } + } + + \def\execgbfootbib% + {% + %开启引用跟踪计数器,为使用\ifciteseen等测试命令 + \ExecuteBibliographyOptions{citetracker=true} % %判断当前文献是否已经引用过且是做的footfullcite(即已经作为脚注输出文献内容) @@ -461,7 +486,6 @@ }% {\multicitedelim}% {\usebibmacro{postnote}} - } % @@ -2190,7 +2214,7 @@ test {\iftoggle{iftlseven}}%biblatex<=3.7 \addvspace{\bibitemsep}%恢复\bibitemsep的作用 %\parshape 2 0em \textwidth \lengthid \lengthlw \hangindent\lengthid -\mkgbnumlabel{\printfield{labelnumber}}% +\leavevmode\mkgbnumlabel{\printfield{labelnumber}}% \hspace{\biblabelsep}} % % 简单的段落环境 @@ -2247,14 +2271,14 @@ test {\iftoggle{iftlseven}}%biblatex<=3.7 \iftoggle{bbx:gbmedium}% {\iftoggle{bbx:url}% {\iffieldundef{url}%当存在url时,增加一个OL标识符 - {\allowbreak\printtext{[}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}}% - {\allowbreak\printtext{[}\nobreak#1\nobreak\printtext{\texttt{/}OL]}}% + {\allowbreak\printtext{\gbleftbracket}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{{\SlashFont/}\thefield{medium}}\gbrightbracket}}% + {\allowbreak\printtext{\gbleftbracket}\nobreak#1\nobreak\printtext{{\SlashFont/}OL\gbrightbracket}}% }% {\ifentrytype{online}% - {\allowbreak\printtext{[}\nobreak#1\nobreak\printtext{\texttt{/}OL]}}% - {\allowbreak\printtext{[}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}}% + {\allowbreak\printtext{\gbleftbracket}\nobreak#1\nobreak\printtext{{\SlashFont/}OL\gbrightbracket}}% + {\allowbreak\printtext{\gbleftbracket}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{{\SlashFont/}\thefield{medium}}\gbrightbracket}}% }}% - {\allowbreak\printtext{[}\nobreak#1\nobreak\printtext{]}}% + {\allowbreak\printtext{\gbleftbracket}\nobreak#1\nobreak\printtext{\gbrightbracket}}% } % @@ -2264,11 +2288,11 @@ test {\iftoggle{iftlseven}}%biblatex<=3.7 \iftoggle{bbx:gbmedium}% {\iftoggle{bbx:url}% {\iffieldundef{url}%当存在url时,增加一个OL标识符 - {\allowbreak\printtext{[}\nobreak N\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% - {\allowbreak\printtext{[}\nobreak N\printtext{\texttt{/}OL]}\nobreak}% + {\allowbreak\printtext{\gbleftbracket}\nobreak N\printtext{\iffieldundef{medium}{}{{\SlashFont/}\thefield{medium}}\gbrightbracket}\nobreak}% + {\allowbreak\printtext{\gbleftbracket}\nobreak N\printtext{{\SlashFont/}OL\gbrightbracket}\nobreak}% }% - {\allowbreak\printtext{[}\nobreak N\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% -}{\allowbreak\printtext{[}\nobreak N\printtext{]}\nobreak}% + {\allowbreak\printtext{\gbleftbracket}\nobreak N\printtext{\iffieldundef{medium}{}{{\SlashFont/}\thefield{medium}}\gbrightbracket}\nobreak}% +}{\allowbreak\printtext{\gbleftbracket}\nobreak N\printtext{\gbrightbracket}\nobreak}% } % @@ -2278,11 +2302,11 @@ test {\iftoggle{iftlseven}}%biblatex<=3.7 \iftoggle{bbx:gbmedium}% {\iftoggle{bbx:url}% {\iffieldundef{url}%当存在url时,增加一个OL标识符 - {\allowbreak\printtext{[}\nobreak S\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% - {\allowbreak\printtext{[}\nobreak S\printtext{\texttt{/}OL]}\nobreak}% + {\allowbreak\printtext{\gbleftbracket}\nobreak S\printtext{\iffieldundef{medium}{}{{\SlashFont/}\thefield{medium}}\gbrightbracket}\nobreak}% + {\allowbreak\printtext{\gbleftbracket}\nobreak S\printtext{{\SlashFont/}OL\gbrightbracket}\nobreak}% }% - {\allowbreak\printtext{[}\nobreak S\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% -}{\allowbreak\printtext{[}\nobreak S\printtext{]}\nobreak}% + {\allowbreak\printtext{\gbleftbracket}\nobreak S\printtext{\iffieldundef{medium}{}{{\SlashFont/}\thefield{medium}}\gbrightbracket}\nobreak}% +}{\allowbreak\printtext{\gbleftbracket}\nobreak S\printtext{\gbrightbracket}\nobreak}% } % @@ -2306,6 +2330,7 @@ test {\iftoggle{iftlseven}}%biblatex<=3.7 {title}{#1}%\nopunct\unspace \DeclareFieldFormat{url}{\url{#1}} %%url相关输出,url域修改如本行,源来自biblatex.def \def\UrlFont{\rmfamily}%设置url字体为roman字体%\ttfamily +\def\SlashFont{\ttfamily}%设置斜杠的字体,比如:[J/OL]中的斜杠;\rmfamily %\urlstyle{rm} %使用这句也一样 \setcounter{biburlnumpenalty}{100} %让url可以在数字后断行 \setcounter{biburlucpenalty}{100} %让url可以在大写字母后断行 @@ -2971,9 +2996,9 @@ test {\iftoggle{iftlseven}}%biblatex<=3.7 % \defversion{3.4}{date}{ \renewbibmacro*{urldate}{% - \addthinspace\printtext{[}\printfield{urlyear}% + \addthinspace\printtext{\gbleftbracket}\printfield{urlyear}% \iffieldundef{urlmonth}{}{\bibrangedash\printfield{urlmonth}}% - \iffieldundef{urlday}{}{\bibrangedash\printfield{urlday}}\printtext{]}} + \iffieldundef{urlday}{}{\bibrangedash\printfield{urlday}}\printtext{\gbrightbracket}} \newbibmacro*{newsdate}{%%新增加一个公告日期,公开日期或新闻日期 \iffieldundef{year}{}{\printfield{year}% @@ -3014,7 +3039,7 @@ test {\iftoggle{iftlseven}}%biblatex<=3.7 \defversion{3.7}{date}{ \DeclareFieldFormat{urldate}{##1} \renewbibmacro*{urldate}{% - \addthinspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 + \addthinspace\printtext{\gbleftbracket}\printurldate\printtext{\gbrightbracket}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 % % 专利的公告日期、或报纸的日期的输出宏 @@ -3033,10 +3058,10 @@ test {\iftoggle{iftlseven}}%biblatex<=3.7 }% {}%更新或修改日期通常有day信息 {\iffieldundef{year}{% - \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{(}\printeventdate\printtext{)}}}% - {\printtext{(}\printenddate\printtext{)}}% + \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{\gbleftparen}\printeventdate\printtext{\gbrightparen}}}% + {\printtext{\gbleftparen}\printenddate\printtext{\gbrightparen}}% }{\iffieldequalstr{year}{}{%因为year存在,但为空 - }{\printtext{(}\blx@edtfdate{}{}\printtext{)}}% + }{\printtext{\gbleftparen}\blx@edtfdate{}{}\printtext{\gbrightparen}}% }% }}% } @@ -3047,7 +3072,7 @@ test {\iftoggle{iftlseven}}%biblatex<=3.7 \defversion{3.10}{date}{ \DeclareFieldFormat{urldate}{##1} \renewbibmacro*{urldate}{% - \addthinspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 + \addthinspace\printtext{\gbleftbracket}\printurldate\printtext{\gbrightbracket}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 % % 专利的公告日期、或报纸的日期的输出宏 @@ -3069,10 +3094,10 @@ test {\iftoggle{iftlseven}}%biblatex<=3.7 }% {}%更新或修改日期通常有day信息 {\iffieldundef{year}{% - \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{(}\printeventdate\printtext{)}}}% - {\printtext{(}\printenddate\printtext{)}}% + \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{\gbleftparen}\printeventdate\printtext{\gbrightparen}}}% + {\printtext{\gbleftparen}\printenddate\printtext{\gbrightparen}}% }{\iffieldequalstr{year}{}{%因为year存在,但为空 - }{\printtext{(}\blx@gbdate{}{}\printtext{)}}% + }{\printtext{\gbleftparen}\blx@gbdate{}{}\printtext{\gbrightparen}}% }% }}% } @@ -3240,14 +3265,15 @@ test{\iftoggle{iftlnine}} {\testCJKfirst{userd}% \ifboolexpr{% test {\iflistundef{location}} and test {\iflistundef{institution}}% -}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress}\space :\space\str@nopublisher]}% -{\printtext{[S.l.\space :\space s.n.\adddot]}}% +}{\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str@noaddress}\space :\space\str@nopublisher\gbrightbracket}% +{\printtext{\gbleftbracket S.l.\space :\space s.n.\adddot\gbrightbracket}}% }{% -\iflistundef{location}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress]}}{\printtext{[S.l.\adddot]}}}% +\iflistundef{location}{\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str@noaddress\gbrightbracket}}% + {\printtext{\gbleftbracket S.l.\adddot\gbrightbracket}}}% {\printlist{location}}% \publocpunct% \iflistundef{institution}{% -\iftoggle{ifCJKforgbt}{\printtext{[\str@nopublisher]}}{\printtext{\mkbibbrackets{s.n.}}}}% +\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str@nopublisher\gbrightbracket}}{\printtext{\mkbibbrackets{s.n.}}}}% {\printlist{institution}}}% \setunit{\addcomma\addspace}% %\usebibmacro{date}% @@ -3274,14 +3300,17 @@ test {\iflistundef{location}} and test {\iflistundef{institution}}% \iftoggle{bbx:gbpub}% {\testCJKfirst{userd}% \ifboolexpr{ test {\iflistundef{location}} and test {\iflistundef{publisher}} }% - {\iffieldequalstr{entrysubtype}{standard}{}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress}\space :\space\str@nopublisher]}{\printtext{[S.l.\space :\space s.n.\adddot]}}}}% + {\iffieldequalstr{entrysubtype}{standard}{} + {\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str@noaddress}\space :\space\str@nopublisher\gbrightbracket} + {\printtext{\gbleftbracket S.l.\space :\space s.n.\adddot\gbrightbracket}}}}% {\iflistundef{location}{%\adddot \iffieldequalstr{entrysubtype}{standard}{}%%从gbt7714-2015标准第19页看到,标准存在出版项时输出,没有时完全省略。 - {\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress]}\addcolon\addspace}{\printtext{[S.l.\adddot]}\publocpunct}}}% \bibstring{noaddress} + {\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str@noaddress\gbrightbracket}\addcolon\addspace}% + {\printtext{\gbleftbracket S.l.\adddot\gbrightbracket}\publocpunct}}}% \bibstring{noaddress} {\printlist{location}\publocpunct}%%\addcolon\addspace% \iflistundef{publisher}{% \iffieldequalstr{entrysubtype}{standard}{}% - {\iftoggle{ifCJKforgbt}{\printtext{[\str@nopublisher]}\setunit{\adddot\addspace}\setunit*{\addcomma\addspace}}% + {\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% @@ -3387,10 +3416,11 @@ incollection,proceedings,inproceedings]{number}{% % 调整期刊名的格式 % % v1.0k,20180425,增加了字体控制命令,hzz +% v1.1j,20220527,修复期刊名不存在时多余的标点 \renewbibmacro*{journal+issuetitle}{\bibpubfont%源来自standard.bbx \usebibmacro{journal}% %\setunit*{\addspace}% - \setunit*{\addcomma\addspace}%修改为增加一个逗号 + \iffieldundef{journaltitle}{}{\setunit*{\addcomma\addspace}}%修改为增加一个逗号 \iffieldundef{series} {} {\newunit @@ -3398,9 +3428,9 @@ incollection,proceedings,inproceedings]{number}{% \setunit{\addspace}}% %\usebibmacro{volume+number+eid}% %\setunit{\addspace}% - \usebibmacro{issue+date}% + \printtext{\usebibmacro{issue+date}}%使用printtext配合后面的\setunit*来实现后面的逗号的自动处理 %\setunit{\addcolon\space}% - \iffieldundef{volume}{}{\setunit{\addcomma\space}}% + \iffieldundef{volume}{}{\setunit*{\addcomma\space}}% %换成逗号和空格 \usebibmacro{issue}% \usebibmacro{volume+number+eid}%把卷期放到年份后面 @@ -3703,7 +3733,7 @@ incollection,proceedings,inproceedings]{number}{% % 原理方法:使用bibmacro{in:}改变了以前在driver中直接输出//的方式,同时也简化了标点控制。 % 需要注意\bibstring命令会把首字母大写的。 \renewbibmacro*{in:}{% - \iftoggle{bbx:gbpunctin}{\printtext{\allowbreak\texttt{//}\allowbreak}}%\addthinspace + \iftoggle{bbx:gbpunctin}{\printtext{\allowbreak{\SlashFont//}\allowbreak}}%\addthinspace {\setunit{\adddot\addspace}% \iffieldequalstr{userd}{chinese}% {\printtext{\bibstring{incn}}}% diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.cbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.cbx index 597820363a5..6279c925678 100644 --- a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.cbx +++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.cbx @@ -35,8 +35,8 @@ % 增加标签包围符号格式处理选项 % 20211030,1.1a,hzz % -\newrobustcmd{\mkbibleftborder}{[} -\newrobustcmd{\mkbibrightborder}{]} +\newrobustcmd{\mkbibleftborder}{\gbleftbracket} +\newrobustcmd{\mkbibrightborder}{\gbrightbracket} \DeclareBibliographyOption[string]{gbcitelabel}[bracket]{% \csuse{gbcitelabelopt@#1} } @@ -51,12 +51,12 @@ #1\endgroup}\kern\z@}% \def\gbcitelabelopt@bracket{% -\renewrobustcmd{\mkbibleftborder}{[}% -\renewrobustcmd{\mkbibrightborder}{]}% +\renewrobustcmd{\mkbibleftborder}{\gbleftbracket}% +\renewrobustcmd{\mkbibrightborder}{\gbrightbracket}% } \def\gbcitelabelopt@parens{% -\renewrobustcmd{\mkbibleftborder}{(}% -\renewrobustcmd{\mkbibrightborder}{)}% +\renewrobustcmd{\mkbibleftborder}{\gbleftparen}% +\renewrobustcmd{\mkbibrightborder}{\gbrightparen}% } \def\gbcitelabelopt@dot{% \renewrobustcmd{\mkbibleftborder}{}% @@ -243,13 +243,12 @@ % 重定义parencite命令,以满足标签带页码的国标要求 % \DeclareCiteCommand{\parencite}%[\mkbibbrackets] - {\mkbibleftborder\usebibmacro{cite:init}% + {\addspace\mkbibleftborder\usebibmacro{cite:init}% \usebibmacro{prenote}}% {\usebibmacro{citeindex}% \usebibmacro{cite:comp}} {} - {%[ - \usebibmacro{cite:dump}\mkbibrightborder% + {\usebibmacro{cite:dump}\mkbibrightborder% \mkbibsuperscriptusp{\printfield{postnote}}} % 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 1504d40265a..c1aa141644f 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 @@ -10,7 +10,7 @@ % % 版本和时间信息 % -\def\versionofgbtstyle{2022/05/17 v1.1i} +\def\versionofgbtstyle{2022/08/29 v1.1j} \def\versionofbiblatex{\abx@version} \ProvidesFile{gb7714-2015ay.bbx}[\versionofgbtstyle biblatex bibliography style] %\RequireBiber[3]%显式指定用biber后端,当用bibtex时会报错,但其实不会影响编译,只是采用bibtex后无法达成格式需求 @@ -197,6 +197,7 @@ \DeclareDatamodelFields[type=field,datatype=literal]{shortbooktitle} \DeclareDatamodelFields[type=field,datatype=literal]{lansortorder} \DeclareDatamodelFields[type=field,datatype=literal]{languageid} + \DeclareDatamodelFields[type=field,datatype=integer]{refnumber} %因为biblatex更新3.14版本以后,biber对于为声明数据模型的条目类型 %不再默认读取,而是以空字符串作为条目类型名,自然在条目定义alias时 @@ -206,6 +207,21 @@ \DeclareDatamodelEntrytypes{newspaper}% }{} +%% +%%符号的垂直位置调整一下 +%% 20220625,hzz,v1.1i +\newlength{\BracketLift} +\setlength{\BracketLift}{0.0ex} +\renewcommand*{\bibleftparen}{\blx@postpunct\raise\BracketLift\hbox{(}} +\renewcommand*{\bibrightparen}{\blx@postpunct\raise\BracketLift\hbox{)}\midsentence} +\renewcommand*{\bibleftbracket}{\blx@postpunct\raise\BracketLift\hbox{[}} +\renewcommand*{\bibrightbracket}{\blx@postpunct\raise\BracketLift\hbox{]}\midsentence} +\newcommand*{\gbleftparen}{\raise\BracketLift\hbox{(}} +\newcommand*{\gbrightparen}{\raise\BracketLift\hbox{)}} +\newcommand*{\gbleftbracket}{\raise\BracketLift\hbox{[}} +\newcommand*{\gbrightbracket}{\raise\BracketLift\hbox{]}} + + %===================================================================== % 设置宏包选项 %===================================================================== @@ -228,7 +244,7 @@ %用于在文献条目后面输出注释信息的宏 %FieldFormat{annotation}用于设置注释信息的格式 \DeclareFieldFormat{annotation}{% - \printtext{\addspace(#1)}% + \printtext{\addspace\gbleftparen#1\gbrightparen}% } \renewbibmacro*{annotation}{% \iftoggle{bbx:gbannote}% @@ -262,20 +278,25 @@ % 当前面的脚注中已经存在当前文献,那么当前文献内容不再输出而用同(4)这样的方式 % 需要注意的是由于小页环境和表格中的脚注本身的问题,可能会有一些问题 \DeclareBibliographyOption{gbfootbib}[false]{% - \ifstrequal{#1}{false}{}{\execgbfootbib}} + \ifstrequal{#1}{false}{}{\execgbfootbib\execgbfootbibfmt}} \ExecuteBibliographyOptions{gbfootbib} + % + % 增加一个选项,用于控制分离后的脚注的格式 + % 20220829,v1.1j,hzz + % 将原来的一个gbfootbib选项控制所有格式分离为由两个选项gbfootbib和gbfootbibfmt控制 + % 分离后,gbfootbibfmt实现同(4)这样的方式,gbfootbib则实现全部的格式 + \DeclareBibliographyOption{gbfootbibfmt}[false]{% + \ifstrequal{#1}{false}{}{\execgbfootbib}} + \ExecuteBibliographyOptions{gbfootbibfmt} - %% + %% \newlength{\footbibmargin} \newlength{\footbiblabelsep} \setlength{\footbibmargin}{1em}%脚注的段落左侧缩进距离 \setlength{\footbiblabelsep}{0.5em}%脚注中标记号与脚注段落的间距 - \def\execgbfootbib% - {% - %开启引用跟踪计数器,为使用\ifciteseen等测试命令 - \ExecuteBibliographyOptions{citetracker=true} - % - %利用footmisc宏包来实现脚注文献的悬挂对齐 + + \def\execgbfootbibfmt% + {%利用footmisc宏包来实现脚注文献的悬挂对齐 \AtEndPreamble{ \@ifclassloaded{beamer}{}{ %beamer类因为其特殊性,为避免冲突不调footmisc。 @@ -291,7 +312,7 @@ \iftoggle{bbx:gbfnperpage}% {\@addtoreset{footnote}{page}}{}%重设计数器 -\@ifpackageloaded{hyperref}{%加载hyperref则对\H@@footnotetext做重定义 + \@ifpackageloaded{hyperref}{%加载hyperref则对\H@@footnotetext做重定义 \long\def\H@@footnotetext##1{\insert\footins{% \reset@font\footnotesize \interlinepenalty\interfootnotelinepenalty @@ -307,6 +328,7 @@ \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox% }% \color@endgroup}}% + \long\def\H@@mpfootnotetext##1{% \global\setbox\@mpfootins\vbox{% \unvbox\@mpfootins @@ -367,6 +389,12 @@ }% }{}{} } + } + + \def\execgbfootbib% + {% + %开启引用跟踪计数器,为使用\ifciteseen等测试命令 + \ExecuteBibliographyOptions{citetracker=true} % %判断当前文献是否已经引用过且是做的footfullcite(即已经作为脚注输出文献内容) @@ -395,7 +423,7 @@ {\defcounter{maxnames}{\blx@maxbibnames}%局部定义maxnames和minnames计数器 \defcounter{minnames}{\blx@minbibnames}%使footfullcite内的作者输出与正文文献表中的一致。 \usebibmacro{prenote}% - \renewbibmacro*{postnote}{% + \renewbibmacro*{postnote}{% \iffieldundef{postnote}% {}{\setunit{\addcolon\addspace}\printtext{\thefield{postnote}}}}%由于ay样式中没有修改postnote域,此处因为格式需要不使用默认域格式 }% @@ -406,9 +434,9 @@ }% {\multicitedelim}% {\usebibmacro{postnote}} - } + % % 增加一个选项,用于控制gb7714的使用范围,即英文文献和中文文献使用不同的样式 % 20180814,v1.0m,hzz @@ -2062,7 +2090,7 @@ test {\iftoggle{iftlseven}}%biblatex<=3.7 \addvspace{\bibitemsep}%恢复\bibitemsep的作用 %\parshape 2 0em \textwidth \lengthid \lengthlw \hangindent\lengthid -\mkgbnumlabel{\arabic{refnumeric}}% +\leavevmode\mkgbnumlabel{\arabic{refnumeric}}% \hspace{\biblabelsep}} % % 简单的段落环境 @@ -2102,14 +2130,14 @@ test {\iftoggle{iftlseven}}%biblatex<=3.7 \iftoggle{bbx:gbmedium}% {\iftoggle{bbx:url}% {\iffieldundef{url}%当存在url时,增加一个OL标识符 - {\allowbreak\printtext{[}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}}% - {\allowbreak\printtext{[}\nobreak#1\nobreak\printtext{\texttt{/}OL]}}% + {\allowbreak\printtext{\gbleftbracket}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{{\SlashFont/}\thefield{medium}}\gbrightbracket}}% + {\allowbreak\printtext{\gbleftbracket}\nobreak#1\nobreak\printtext{{\SlashFont/}OL\gbrightbracket}}% }% {\ifentrytype{online}% - {\allowbreak\printtext{[}\nobreak#1\nobreak\printtext{\texttt{/}OL]}}% - {\allowbreak\printtext{[}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}}% + {\allowbreak\printtext{\gbleftbracket}\nobreak#1\nobreak\printtext{{\SlashFont/}OL\gbrightbracket}}% + {\allowbreak\printtext{\gbleftbracket}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{{\SlashFont/}\thefield{medium}}\gbrightbracket}}% }}% - {\allowbreak\printtext{[}\nobreak#1\nobreak\printtext{]}}% + {\allowbreak\printtext{\gbleftbracket}\nobreak#1\nobreak\printtext{\gbrightbracket}}% } % @@ -2119,11 +2147,11 @@ test {\iftoggle{iftlseven}}%biblatex<=3.7 \iftoggle{bbx:gbmedium}% {\iftoggle{bbx:url}% {\iffieldundef{url}%当存在url时,增加一个OL标识符 - {\allowbreak\printtext{[}\nobreak N\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% - {\allowbreak\printtext{[}\nobreak N\printtext{\texttt{/}OL]}\nobreak}% + {\allowbreak\printtext{\gbleftbracket}\nobreak N\printtext{\iffieldundef{medium}{}{{\SlashFont/}\thefield{medium}}\gbrightbracket}\nobreak}% + {\allowbreak\printtext{\gbleftbracket}\nobreak N\printtext{{\SlashFont/}OL\gbrightbracket}\nobreak}% }% - {\allowbreak\printtext{[}\nobreak N\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% -}{\allowbreak\printtext{[}\nobreak N\printtext{]}\nobreak}% + {\allowbreak\printtext{\gbleftbracket}\nobreak N\printtext{\iffieldundef{medium}{}{{\SlashFont/}\thefield{medium}}\gbrightbracket}\nobreak}% +}{\allowbreak\printtext{\gbleftbracket}\nobreak N\printtext{\gbrightbracket}\nobreak}% } % @@ -2133,11 +2161,11 @@ test {\iftoggle{iftlseven}}%biblatex<=3.7 \iftoggle{bbx:gbmedium}% {\iftoggle{bbx:url}% {\iffieldundef{url}%当存在url时,增加一个OL标识符 - {\allowbreak\printtext{[}\nobreak S\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% - {\allowbreak\printtext{[}\nobreak S\printtext{\texttt{/}OL]}\nobreak}% + {\allowbreak\printtext{\gbleftbracket}\nobreak S\printtext{\iffieldundef{medium}{}{{\SlashFont/}\thefield{medium}}\gbrightbracket}\nobreak}% + {\allowbreak\printtext{\gbleftbracket}\nobreak S\printtext{{\SlashFont/}OL\gbrightbracket}\nobreak}% }% - {\allowbreak\printtext{[}\nobreak S\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% -}{\allowbreak\printtext{[}\nobreak S\printtext{]}\nobreak}% + {\allowbreak\printtext{\gbleftbracket}\nobreak S\printtext{\iffieldundef{medium}{}{{\SlashFont/}\thefield{medium}}\gbrightbracket}\nobreak}% +}{\allowbreak\printtext{\gbleftbracket}\nobreak S\printtext{\gbrightbracket}\nobreak}% } % @@ -2160,6 +2188,7 @@ test {\iftoggle{iftlseven}}%biblatex<=3.7 {title}{#1}%\nopunct\unspace \DeclareFieldFormat{url}{\url{#1}} %url域修改如本行%url相关输出,源来自biblatex.def \def\UrlFont{\rmfamily}%设置url字体为roman字体%\ttfamily +\def\SlashFont{\ttfamily}%设置斜杠的字体,比如:[J/OL]中的斜杠;\rmfamily %\urlstyle{rm} %使用这句也一样 \setcounter{biburlnumpenalty}{100} %让url可以在数字后断行 \setcounter{biburlucpenalty}{100} %让url可以在大写字母后断行 @@ -2820,9 +2849,9 @@ test {\iftoggle{iftlseven}}%biblatex<=3.7 % \defversion{3.4}{date}{ \renewbibmacro*{urldate}{% - \addthinspace\printtext{[}\printfield{urlyear}% + \addthinspace\printtext{\gbleftbracket}\printfield{urlyear}% \iffieldundef{urlmonth}{}{\bibrangedash\printfield{urlmonth}}% - \iffieldundef{urlday}{}{\bibrangedash\printfield{urlday}}\printtext{]}} + \iffieldundef{urlday}{}{\bibrangedash\printfield{urlday}}\printtext{\gbrightbracket}} \newbibmacro*{newsdate}{%%新增加一个公告日期,公开日期或新闻日期 \iffieldundef{year}{}{\printfield{year}% @@ -2863,7 +2892,7 @@ test {\iftoggle{iftlseven}}%biblatex<=3.7 \defversion{3.7}{date}{ \DeclareFieldFormat{urldate}{##1} \renewbibmacro*{urldate}{% - \addthinspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 + \addthinspace\printtext{\gbleftbracket}\printurldate\printtext{\gbrightbracket}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 % % 专利的公告日期、或报纸的日期的输出宏 @@ -2882,10 +2911,10 @@ test {\iftoggle{iftlseven}}%biblatex<=3.7 }% {}%更新或修改日期通常有day信息 {\iffieldundef{year}{% - \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{(}\printeventdate\printtext{)}}}% - {\printtext{(}\printenddate\printtext{)}}% + \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{\gbleftparen}\printeventdate\printtext{\gbrightparen}}}% + {\printtext{\gbleftparen}\printenddate\printtext{\gbrightparen}}% }{\iffieldequalstr{year}{}{%因为year存在,但为空 - }{\printtext{(}\blx@edtfdate{}{}\printtext{)}}% + }{\printtext{\gbleftparen}\blx@edtfdate{}{}\printtext{\gbrightparen}}% }% }}% } @@ -2896,7 +2925,7 @@ test {\iftoggle{iftlseven}}%biblatex<=3.7 \defversion{3.10}{date}{ \DeclareFieldFormat{urldate}{##1} \renewbibmacro*{urldate}{% - \addthinspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 + \addthinspace\printtext{\gbleftbracket}\printurldate\printtext{\gbrightbracket}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 % % 专利的公告日期、或报纸的日期的输出宏 @@ -2917,10 +2946,10 @@ test {\iftoggle{iftlseven}}%biblatex<=3.7 }% {}%更新或修改日期通常有day信息 {\iffieldundef{year}{% - \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{(}\printeventdate\printtext{)}}}% - {\printtext{(}\printenddate\printtext{)}}% + \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{\gbleftparen}\printeventdate\printtext{\gbrightparen}}}% + {\printtext{\gbleftparen}\printenddate\printtext{\gbrightparen}}% }{\iffieldequalstr{year}{}{%因为year存在,但为空 - }{\printtext{(}\blx@gbdate{}{}\printtext{)}}% + }{\printtext{\gbleftparen}\blx@gbdate{}{}\printtext{\gbrightparen}}% }% }}% } @@ -3061,14 +3090,15 @@ test{\iftoggle{iftlnine}} {\testCJKfirst{userd}% \ifboolexpr{% test {\iflistundef{location}} and test {\iflistundef{institution}}% -}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress}\space :\space\str@nopublisher]}% -{\printtext{[S.l.\space :\space s.n.\adddot]}}% +}{\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str@noaddress}\space :\space\str@nopublisher\gbrightbracket}% +{\printtext{\gbleftbracket S.l.\space :\space s.n.\adddot\gbrightbracket}}% }{% -\iflistundef{location}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress]}}{\printtext{[S.l.\adddot]}}}% +\iflistundef{location}{\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str@noaddress\gbrightbracket}}% + {\printtext{\gbleftbracket S.l.\adddot\gbrightbracket}}}% {\printlist{location}}% \publocpunct% \iflistundef{institution}{% -\iftoggle{ifCJKforgbt}{\printtext{[\str@nopublisher]}}{\printtext{\mkbibbrackets{s.n.}}}}% \bibstring{nopublisher}%[s.n.\adddot] +\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str@nopublisher\gbrightbracket}}{\printtext{\mkbibbrackets{s.n.}}}}% {\printlist{institution}}}% \setunit{\addcomma\addspace}% %\usebibmacro{date}% @@ -3076,7 +3106,7 @@ test {\iflistundef{location}} and test {\iflistundef{institution}}% \bibrangedash% \iffieldundef{endyear}{}{\printfield{endyear}}% \newunit}% -{ \printlist{location}% +{\printlist{location}% \iflistundef{institution}% {\setunit*{\addcomma\space}} {\setunit*{\publocpunct}}% @@ -3095,14 +3125,17 @@ test {\iflistundef{location}} and test {\iflistundef{institution}}% \iftoggle{bbx:gbpub}% {\testCJKfirst{userd}% \ifboolexpr{ test {\iflistundef{location}} and test {\iflistundef{publisher}} }% - {\iffieldequalstr{entrysubtype}{standard}{}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress}\space :\space\str@nopublisher]}{\printtext{[S.l.\space :\space s.n.\adddot]}}}}% + {\iffieldequalstr{entrysubtype}{standard}{} + {\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str@noaddress}\space :\space\str@nopublisher\gbrightbracket} + {\printtext{\gbleftbracket S.l.\space :\space s.n.\adddot\gbrightbracket}}}}% {\iflistundef{location}{%\adddot \iffieldequalstr{entrysubtype}{standard}{}%%从gbt7714-2015标准第19页看到,标准存在出版项时输出,没有时完全省略。 - {\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress]}\addcolon\addspace}{\printtext{[S.l.\adddot]}\publocpunct}}}% \bibstring{noaddress} + {\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str@noaddress\gbrightbracket}\addcolon\addspace}% + {\printtext{\gbleftbracket S.l.\adddot\gbrightbracket}\publocpunct}}}% \bibstring{noaddress} {\printlist{location}\publocpunct}%%\addcolon\addspace% \iflistundef{publisher}{% \iffieldequalstr{entrysubtype}{standard}{}% - {\iftoggle{ifCJKforgbt}{\printtext{[\str@nopublisher]}\setunit{\adddot\addspace}\setunit*{\addcomma\addspace}}% + {\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% @@ -3314,7 +3347,6 @@ incollection,proceedings,inproceedings]{number}{% \renewbibmacro*{bbx:ifmergeddate}{\@secondoftwo}%这一句用于3.12版本 \renewbibmacro*{date}{\printdate}%这一句用于biblatex3.11以下版本 \renewbibmacro*{issue+date}{%去掉括号 -\setunit{\addcomma\addspace}% \printtext{%去掉了[parens] \iffieldundef{issue} {%\usebibmacro{date} @@ -3363,10 +3395,11 @@ incollection,proceedings,inproceedings]{number}{% % % 原理方法:因为作者年制年份提到前面,因此涉及到期刊名与后面的卷期的关系。 % v1.0k,20180425,增加了字体控制命令,hzz +% v1.1j,20220527,修复期刊名不存在时多余的标点 \renewbibmacro*{journal+issuetitle}{\bibpubfont%源来自standard.bbx \usebibmacro{journal}% %\setunit*{\addspace}% - %\setunit*{\addcomma\addspace}%修改为增加一个逗号 + \iffieldundef{journaltitle}{}{\setunit*{\addcomma\addspace}}%修改为增加一个逗号 \iffieldundef{series}% {}% {\newunit% @@ -3374,11 +3407,11 @@ incollection,proceedings,inproceedings]{number}{% \setunit{\addspace}}% %\usebibmacro{volume+number+eid}% %\setunit{\addspace}% - \usebibmacro{issue+date}% + \printtext{\usebibmacro{issue+date}}%使用printtext配合后面的\setunit*来实现后面的逗号的自动处理 %\setunit{\addcolon\space}% - \iffieldundef{volume}{}{\setunit{\addcomma\space}}% + \iffieldundef{volume}{}{\setunit*{\addcomma\space}}% %换成逗号和空格 - \usebibmacro{issue}% + %\usebibmacro{issue}% \usebibmacro{volume+number+eid}%把卷期放到年份后面 %\newunit } @@ -3387,7 +3420,7 @@ incollection,proceedings,inproceedings]{number}{% % 增加一个number带括号的格式,避免使用mkbibparens而引入一个不必要的空格 % \DeclareFieldFormat{addnumflag}{% -\nobreak\printtext{(}\nobreak #1\nobreak\printtext{)}} +\nobreak\printtext{\gbleftparen}\nobreak #1\nobreak\printtext{\gbrightparen}} % % 调整journal输出 @@ -3716,8 +3749,9 @@ test {\ifentrytype{conference}} % 20190212,v1.0q,增加中英文区分,by hzz % % 原理方法:使用bibmacro{in:}改变了以前在driver中直接输出//的方式,同时也简化了标点控制。 +% 需要注意\bibstring命令会把首字母大写的。 \renewbibmacro*{in:}{% - \iftoggle{bbx:gbpunctin}{\printtext{\allowbreak\texttt{//}\allowbreak}}%\addthinspace + \iftoggle{bbx:gbpunctin}{\printtext{\allowbreak{\SlashFont//}\allowbreak}}%\addthinspace {\setunit{\adddot\addspace}% \iffieldequalstr{userd}{chinese}% {\printtext{\bibstring{incn}}}% diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.cbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.cbx index c0d9d4b9850..454e5cc7e69 100644 --- a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.cbx +++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.cbx @@ -28,20 +28,20 @@ % 增加标签包围符号格式处理选项 % 20211030,1.1a,hzz % -\newrobustcmd{\mkbibleftborder}{(} -\newrobustcmd{\mkbibrightborder}{)} +\newrobustcmd{\mkbibleftborder}{\gbleftparen} +\newrobustcmd{\mkbibrightborder}{\gbrightparen} \DeclareBibliographyOption[string]{gbcitelabel}[bracket]{% \csuse{gbcitelabelopt@#1} } \ExecuteBibliographyOptions{gbcitelabel} \def\gbcitelabelopt@bracket{% -\renewrobustcmd{\mkbibleftborder}{[}% -\renewrobustcmd{\mkbibrightborder}{]}% +\renewrobustcmd{\mkbibleftborder}{\gbleftbracket}% +\renewrobustcmd{\mkbibrightborder}{\gbrightbracket}% } \def\gbcitelabelopt@parens{% -\renewrobustcmd{\mkbibleftborder}{(}% -\renewrobustcmd{\mkbibrightborder}{)}% +\renewrobustcmd{\mkbibleftborder}{\gbleftparen}% +\renewrobustcmd{\mkbibrightborder}{\gbrightparen}% } \def\gbcitelabelopt@dot{% \renewrobustcmd{\mkbibleftborder}{}% @@ -332,7 +332,7 @@ test {\iftoggle{iftlseven}}%3.7=biblatex \savefield{labelyear}{\cbx@lastyear}}} {\iftoggle{bbx:gblabelref}{\printtext[bibhyperref]{\printnames{labelname}}}{\printnames{labelname}}%% %\setunit{\printdelim{nameyeardelim}}% - (\usebibmacro{cite:labeldate+extradate})% + \gbleftparen\usebibmacro{cite:labeldate+extradate}\gbrightparen% \savefield{namehash}{\cbx@lasthash}% \savefield{labelyear}{\cbx@lastyear}}}} {\usebibmacro{cite:shorthand}% diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ms.bbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ms.bbx index 1ae850d3630..d8fe13aa06c 100644 --- a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ms.bbx +++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ms.bbx @@ -11,7 +11,7 @@ % % 版本和时间信息 % -\def\versionofgbtstyle{2022/05/17 v1.1i} +\def\versionofgbtstyle{2022/08/29 v1.1j} \def\versionofbiblatex{\abx@version} \ProvidesFile{gb7714-2015ms.bbx}[\versionofgbtstyle biblatex bibliography style] %\RequireBiber[3]%显式指定用biber后端,当用bibtex时会报错,但其实不会影响编译,只是采用bibtex后无法达成格式需求 @@ -91,6 +91,7 @@ \DeclareDatamodelFields[type=field,datatype=literal]{shortbooktitle} \DeclareDatamodelFields[type=field,datatype=literal]{lansortorder} \DeclareDatamodelFields[type=field,datatype=literal]{languageid} + \DeclareDatamodelFields[type=field,datatype=integer]{refnumber} %因为biblatex更新3.14版本以后,biber对于为声明数据模型的条目类型 %不再默认读取,而是以空字符串作为条目类型名,自然在条目定义alias时 @@ -100,6 +101,21 @@ \DeclareDatamodelEntrytypes{newspaper}% }{} +%% +%%符号的垂直位置调整一下 +%% 20220625,hzz,v1.1i +\newlength{\BracketLift} +\setlength{\BracketLift}{0.0ex} +\renewcommand*{\bibleftparen}{\blx@postpunct\raise\BracketLift\hbox{(}} +\renewcommand*{\bibrightparen}{\blx@postpunct\raise\BracketLift\hbox{)}\midsentence} +\renewcommand*{\bibleftbracket}{\blx@postpunct\raise\BracketLift\hbox{[}} +\renewcommand*{\bibrightbracket}{\blx@postpunct\raise\BracketLift\hbox{]}\midsentence} +\newcommand*{\gbleftparen}{\raise\BracketLift\hbox{(}} +\newcommand*{\gbrightparen}{\raise\BracketLift\hbox{)}} +\newcommand*{\gbleftbracket}{\raise\BracketLift\hbox{[}} +\newcommand*{\gbrightbracket}{\raise\BracketLift\hbox{]}} + + %===================================================================== % 设置宏包选项 %===================================================================== @@ -122,7 +138,7 @@ %用于在文献条目后面输出注释信息的宏 %FieldFormat{annotation}用于设置注释信息的格式 \DeclareFieldFormat{annotation}{% - \printtext{\addspace(#1)}% + \printtext{\addspace\gbleftparen#1\gbrightparen}% } \renewbibmacro*{annotation}{% \iftoggle{bbx:gbannote}% @@ -156,20 +172,25 @@ % 当前面的脚注中已经存在当前文献,那么当前文献内容不再输出而用同(4)这样的方式 % 需要注意的是由于小页环境和表格中的脚注本身的问题,可能会有一些问题 \DeclareBibliographyOption{gbfootbib}[false]{% - \ifstrequal{#1}{false}{}{\execgbfootbib}} + \ifstrequal{#1}{false}{}{\execgbfootbib\execgbfootbibfmt}} \ExecuteBibliographyOptions{gbfootbib} + % + % 增加一个选项,用于控制分离后的脚注的格式 + % 20220829,v1.1j,hzz + % 将原来的一个gbfootbib选项控制所有格式分离为由两个选项gbfootbib和gbfootbibfmt控制 + % 分离后,gbfootbibfmt实现同(4)这样的方式,gbfootbib则实现全部的格式 + \DeclareBibliographyOption{gbfootbibfmt}[false]{% + \ifstrequal{#1}{false}{}{\execgbfootbib}} + \ExecuteBibliographyOptions{gbfootbibfmt} - %% + %% \newlength{\footbibmargin} \newlength{\footbiblabelsep} \setlength{\footbibmargin}{1em}%脚注的段落左侧缩进距离 \setlength{\footbiblabelsep}{0.5em}%脚注中标记号与脚注段落的间距 - \def\execgbfootbib% - {% - %开启引用跟踪计数器,为使用\ifciteseen等测试命令 - \ExecuteBibliographyOptions{citetracker=true} - % - %利用footmisc宏包来实现脚注文献的悬挂对齐 + + \def\execgbfootbibfmt% + {%利用footmisc宏包来实现脚注文献的悬挂对齐 \AtEndPreamble{ \@ifclassloaded{beamer}{}{ %beamer类因为其特殊性,为避免冲突不调footmisc。 @@ -185,7 +206,7 @@ \iftoggle{bbx:gbfnperpage}% {\@addtoreset{footnote}{page}}{}%重设计数器 -\@ifpackageloaded{hyperref}{%加载hyperref则对\H@@footnotetext做重定义 + \@ifpackageloaded{hyperref}{%加载hyperref则对\H@@footnotetext做重定义 \long\def\H@@footnotetext##1{\insert\footins{% \reset@font\footnotesize \interlinepenalty\interfootnotelinepenalty @@ -202,8 +223,8 @@ }% \color@endgroup}}% - \long\def\H@@mpfootnotetext##1{% - \global\setbox\@mpfootins\vbox{% + \long\def\H@@mpfootnotetext##1{% + \global\setbox\@mpfootins\vbox{% \unvbox\@mpfootins \reset@font\footnotesize \hsize\columnwidth @@ -262,6 +283,12 @@ }% }{}{} } + } + + \def\execgbfootbib% + {% + %开启引用跟踪计数器,为使用\ifciteseen等测试命令 + \ExecuteBibliographyOptions{citetracker=true} % %判断当前文献是否已经引用过且是做的footfullcite(即已经作为脚注输出文献内容) @@ -296,12 +323,11 @@ }% {\usebibmacro{citesavefn}% \ifcsdef{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}% - {\csuse{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}\nopunct}% + {\csuse{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}}%\nopunct {\usedriver{\DeclareNameAlias{sortname}{default}}{\thefield{entrytype}}}% }% {\multicitedelim}% {\usebibmacro{postnote}} - } % @@ -344,6 +370,7 @@ \def\str@references{参考文献} \def\str@bytranslator{译} \def\str@andotherscn{等} + \def\str@andcn{和} \def\str@backrefpage{引用页} \def\str@backrefpages{引用页} \def\str@noaddress{出版地不详} @@ -1350,7 +1377,7 @@ \addvspace{\bibitemsep}%恢复\bibitemsep的作用 %\parshape 2 0em \textwidth \lengthid \lengthlw \hangindent\lengthid% -\mkgbnumlabel{\printfield{labelnumber}}% +\leavevmode\mkgbnumlabel{\printfield{labelnumber}}% \hspace{\biblabelsep}} % % 简单的段落环境 @@ -1409,14 +1436,14 @@ \iftoggle{bbx:gbmedium}% {\iftoggle{bbx:url}% {\iffieldundef{url}%当存在url时,增加一个OL标识符 - {\allowbreak\printtext{[}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}}% - {\allowbreak\printtext{[}\nobreak#1\nobreak\printtext{\texttt{/}OL]}}% + {\allowbreak\printtext{\gbleftbracket}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{{\SlashFont/}\thefield{medium}}\gbrightbracket}}% + {\allowbreak\printtext{\gbleftbracket}\nobreak#1\nobreak\printtext{{\SlashFont/}OL\gbrightbracket}}% }% {\ifentrytype{online}% - {\allowbreak\printtext{[}\nobreak#1\nobreak\printtext{\texttt{/}OL]}}% - {\allowbreak\printtext{[}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}}% + {\allowbreak\printtext{\gbleftbracket}\nobreak#1\nobreak\printtext{{\SlashFont/}OL\gbrightbracket}}% + {\allowbreak\printtext{\gbleftbracket}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{{\SlashFont/}\thefield{medium}}\gbrightbracket}}% }}% - {\allowbreak\printtext{[}\nobreak#1\nobreak\printtext{]}}% + {\allowbreak\printtext{\gbleftbracket}\nobreak#1\nobreak\printtext{\gbrightbracket}}% } % @@ -1426,11 +1453,11 @@ \iftoggle{bbx:gbmedium}% {\iftoggle{bbx:url}% {\iffieldundef{url}%当存在url时,增加一个OL标识符 - {\allowbreak\printtext{[}\nobreak N\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% - {\allowbreak\printtext{[}\nobreak N\printtext{\texttt{/}OL]}\nobreak}% + {\allowbreak\printtext{\gbleftbracket}\nobreak N\printtext{\iffieldundef{medium}{}{{\SlashFont/}\thefield{medium}}\gbrightbracket}\nobreak}% + {\allowbreak\printtext{\gbleftbracket}\nobreak N\printtext{{\SlashFont/}OL\gbrightbracket}\nobreak}% }% - {\allowbreak\printtext{[}\nobreak N\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% -}{\allowbreak\printtext{[}\nobreak N\printtext{]}\nobreak}% + {\allowbreak\printtext{\gbleftbracket}\nobreak N\printtext{\iffieldundef{medium}{}{{\SlashFont/}\thefield{medium}}\gbrightbracket}\nobreak}% +}{\allowbreak\printtext{\gbleftbracket}\nobreak N\printtext{\gbrightbracket}\nobreak}% } % @@ -1440,11 +1467,11 @@ \iftoggle{bbx:gbmedium}% {\iftoggle{bbx:url}% {\iffieldundef{url}%当存在url时,增加一个OL标识符 - {\allowbreak\printtext{[}\nobreak S\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% - {\allowbreak\printtext{[}\nobreak S\printtext{\texttt{/}OL]}\nobreak}% + {\allowbreak\printtext{\gbleftbracket}\nobreak S\printtext{\iffieldundef{medium}{}{{\SlashFont/}\thefield{medium}}\gbrightbracket}\nobreak}% + {\allowbreak\printtext{\gbleftbracket}\nobreak S\printtext{{\SlashFont/}OL\gbrightbracket}\nobreak}% }% - {\allowbreak\printtext{[}\nobreak S\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% -}{\allowbreak\printtext{[}\nobreak S\printtext{]}\nobreak}% + {\allowbreak\printtext{\gbleftbracket}\nobreak S\printtext{\iffieldundef{medium}{}{{\SlashFont/}\thefield{medium}}\gbrightbracket}\nobreak}% +}{\allowbreak\printtext{\gbleftbracket}\nobreak S\printtext{\gbrightbracket}\nobreak}% } % @@ -1684,6 +1711,7 @@ \def\UrlFont{\rmfamily}%设置url字体为roman字体%\ttfamily +\def\SlashFont{\ttfamily}%设置斜杠的字体,比如:[J/OL]中的斜杠;\rmfamily %\urlstyle{rm} %使用这句也一样 \setcounter{biburlnumpenalty}{100} %让url可以在数字后断行 \setcounter{biburlucpenalty}{100} %让url可以在大写字母后断行 @@ -1730,10 +1758,10 @@ }% {}%更新或修改日期通常有day信息 {\iffieldundef{year}{% - \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{(}\printeventdate\printtext{)}}}% - {\printtext{(}\printenddate\printtext{)}}% + \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{\gbleftparen}\printeventdate\printtext{\gbrightparen}}}% + {\printtext{\gbleftparen}\printenddate\printtext{\gbrightparen}}% }{\iffieldequalstr{year}{}{%因为year存在,但为空 - }{\printtext{(}\blx@gbdate{}{}\printtext{)}}% + }{\printtext{\gbleftparen}\blx@gbdate{}{}\printtext{\gbrightparen}}% }% }}% @@ -2066,7 +2094,7 @@ togl{bbx:gbstyle} or test {\iffieldequalstr{userd}{chinese}}% % \DeclareFieldFormat{urldate}{##1}% \renewbibmacro*{urldate}{% -\addthinspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 +\addthinspace\printtext{\gbleftbracket}\printurldate\printtext{\gbrightbracket}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 % % 调整doi+eprint+url格式 % @@ -2116,14 +2144,14 @@ togl{bbx:gbstyle} or test {\iffieldequalstr{userd}{chinese}}% {\testCJKfirst{userd}% \ifboolexpr{% test {\iflistundef{location}} and test {\iflistundef{institution}}% -}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress}\space :\space\str@nopublisher]}% -{\printtext{[S.l.\space :\space s.n.\adddot]}}% +}{\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str@noaddress}\space :\space\str@nopublisher\gbrightbracket}% +{\printtext{\gbleftbracket S.l.\space :\space s.n.\adddot\gbrightbracket}}% }{% -\iflistundef{location}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress]}}{\printtext{[S.l.\adddot]}}}% +\iflistundef{location}{\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str@noaddress\gbrightbracket}}{\printtext{\gbleftbracket S.l.\adddot\gbrightbracket}}}% {\printlist{location}}% \publocpunct% \iflistundef{institution}{% -\iftoggle{ifCJKforgbt}{\printtext{[\str@nopublisher]}}{\printtext{\mkbibbrackets{s.n.}}}}% \bibstring{nopublisher}%[s.n.\adddot] +\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str@nopublisher\gbrightbracket}}{\printtext{\mkbibbrackets{s.n.}}}}% \bibstring{nopublisher}%[s.n.\adddot] {\printlist{institution}}}% \setunit{\addcomma\addspace}% %\usebibmacro{date}% @@ -2150,14 +2178,16 @@ test {\iflistundef{location}} and test {\iflistundef{institution}}% \iftoggle{bbx:gbpub}% {\testCJKfirst{userd}% \ifboolexpr{ test {\iflistundef{location}} and test {\iflistundef{publisher}} }% - {\iffieldequalstr{entrysubtype}{standard}{}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress}\space :\space\str@nopublisher]}{\printtext{[S.l.\space :\space s.n.\adddot]}}}}% + {\iffieldequalstr{entrysubtype}{standard}{}% + {\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str@noaddress}\space :\space\str@nopublisher\gbrighttbracket}% + {\printtext{\gbleftbracket S.l.\space :\space s.n.\adddot\gbrightbracket}}}}% {\iflistundef{location}{%\adddot \iffieldequalstr{entrysubtype}{standard}{}%%从gbt7714-2015标准第19页看到,标准存在出版项时输出,没有时完全省略。 - {\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress]}\addcolon\addspace}{\printtext{[S.l.\adddot]}\publocpunct}}}% \bibstring{noaddress} + {\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str@noaddress\gbrightbracket}\addcolon\addspace}{\printtext{\gbleftbracket S.l.\adddot\gbrightbracket}\publocpunct}}}% \bibstring{noaddress} {\printlist{location}\publocpunct}%%\addcolon\addspace% \iflistundef{publisher}{% \iffieldequalstr{entrysubtype}{standard}{}% - {\iftoggle{ifCJKforgbt}{\printtext{[\str@nopublisher]}\setunit{\adddot\addspace}\setunit*{\addcomma\addspace}}% + {\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% @@ -2255,10 +2285,11 @@ incollection,proceedings,inproceedings]{number}{% % 调整期刊名的格式 % % v1.0k,20180425,增加了字体控制命令,hzz +% v1.1j,20220527,修复期刊名不存在时多余的标点 \renewbibmacro*{journal+issuetitle}{\bibpubfont%源来自standard.bbx \usebibmacro{journal}% %\setunit*{\addspace}% - \setunit*{\addcomma\addspace}%修改为增加一个逗号 + \iffieldundef{journaltitle}{}{\setunit*{\addcomma\addspace}}%修改为增加一个逗号 \iffieldundef{series} {} {\newunit @@ -2266,9 +2297,9 @@ incollection,proceedings,inproceedings]{number}{% \setunit{\addspace}}% %\usebibmacro{volume+number+eid}% %\setunit{\addspace}% - \usebibmacro{issue+date}% + \printtext{\usebibmacro{issue+date}}%使用printtext配合后面的\setunit*来实现后面的逗号的自动处理 %\setunit{\addcolon\space}% - \iffieldundef{volume}{}{\setunit{\addcomma\space}}% + \iffieldundef{volume}{}{\setunit*{\addcomma\space}}% %换成逗号和空格 \usebibmacro{issue}% \usebibmacro{volume+number+eid}%把卷期放到年份后面 @@ -2470,8 +2501,9 @@ incollection,proceedings,inproceedings]{number}{% % 20190212,v1.0q,增加中英文区分,by hzz % % 原理方法:使用bibmacro{in:}改变了以前在driver中直接输出//的方式,同时也简化了标点控制。 +% 需要注意\bibstring命令会把首字母大写的。 \renewbibmacro*{in:}{% - \iftoggle{bbx:gbpunctin}{\printtext{\allowbreak\texttt{//}\allowbreak}}%\addthinspace + \iftoggle{bbx:gbpunctin}{\printtext{\allowbreak{\SlashFont//}\allowbreak}}%\addthinspace {\setunit{\adddot\addspace}% \iffieldequalstr{userd}{chinese}% {\printtext{\bibstring{incn}}}% diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015mx.bbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015mx.bbx index 62bdf65054c..84729ef0fd5 100644 --- a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015mx.bbx +++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015mx.bbx @@ -11,7 +11,7 @@ % % 版本和时间信息 % -\def\versionofgbtstyle{2022/05/17 v1.1i} +\def\versionofgbtstyle{2022/08/29 v1.1j} \def\versionofbiblatex{\abx@version} \ProvidesFile{gb7714-2015mx.bbx}[\versionofgbtstyle biblatex bibliography style] %\RequireBiber[3]%显式指定用biber后端,当用bibtex时会报错,但其实不会影响编译,只是采用bibtex后无法达成格式需求 @@ -118,6 +118,7 @@ %为多样式文献表增加的stylesections、styleaysection域: \DeclareDatamodelFields[type=field,datatype=integer]{aysections} \DeclareDatamodelFields[type=field,datatype=literal]{styleaysection} + \DeclareDatamodelFields[type=field,datatype=integer]{refnumber} %因为biblatex更新3.14版本以后,biber对于为声明数据模型的条目类型 %不再默认读取,而是以空字符串作为条目类型名,自然在条目定义alias时 @@ -127,6 +128,19 @@ \DeclareDatamodelEntrytypes{newspaper}% }{} +%% +%%符号的垂直位置调整一下 +%% 20220625,hzz,v1.1i +\newlength{\BracketLift} +\setlength{\BracketLift}{0.0ex} +\renewcommand*{\bibleftparen}{\blx@postpunct\raise\BracketLift\hbox{(}} +\renewcommand*{\bibrightparen}{\blx@postpunct\raise\BracketLift\hbox{)}\midsentence} +\renewcommand*{\bibleftbracket}{\blx@postpunct\raise\BracketLift\hbox{[}} +\renewcommand*{\bibrightbracket}{\blx@postpunct\raise\BracketLift\hbox{]}\midsentence} +\newcommand*{\gbleftparen}{\raise\BracketLift\hbox{(}} +\newcommand*{\gbrightparen}{\raise\BracketLift\hbox{)}} +\newcommand*{\gbleftbracket}{\raise\BracketLift\hbox{[}} +\newcommand*{\gbrightbracket}{\raise\BracketLift\hbox{]}} %===================================================================== @@ -155,20 +169,25 @@ % 当前面的脚注中已经存在当前文献,那么当前文献内容不再输出而用同(4)这样的方式 % 需要注意的是由于小页环境和表格中的脚注本身的问题,可能会有一些问题 \DeclareBibliographyOption{gbfootbib}[false]{% - \ifstrequal{#1}{false}{}{\execgbfootbib}} + \ifstrequal{#1}{false}{}{\execgbfootbib\execgbfootbibfmt}} \ExecuteBibliographyOptions{gbfootbib} + % + % 增加一个选项,用于控制分离后的脚注的格式 + % 20220829,v1.1j,hzz + % 将原来的一个gbfootbib选项控制所有格式分离为由两个选项gbfootbib和gbfootbibfmt控制 + % 分离后,gbfootbibfmt实现同(4)这样的方式,gbfootbib则实现全部的格式 + \DeclareBibliographyOption{gbfootbibfmt}[false]{% + \ifstrequal{#1}{false}{}{\execgbfootbib}} + \ExecuteBibliographyOptions{gbfootbibfmt} %% \newlength{\footbibmargin} \newlength{\footbiblabelsep} \setlength{\footbibmargin}{1em}%脚注的段落左侧缩进距离 \setlength{\footbiblabelsep}{0.5em}%脚注中标记号与脚注段落的间距 - \def\execgbfootbib% - {% - %开启引用跟踪计数器,为使用\ifciteseen等测试命令 - \ExecuteBibliographyOptions{citetracker=true} - % - %利用footmisc宏包来实现脚注文献的悬挂对齐 + + \def\execgbfootbibfmt% + {%利用footmisc宏包来实现脚注文献的悬挂对齐 \AtEndPreamble{ \@ifclassloaded{beamer}{}{ %beamer类因为其特殊性,为避免冲突不调footmisc。 @@ -261,6 +280,12 @@ }% }{}{} } + } + + \def\execgbfootbib% + {% + %开启引用跟踪计数器,为使用\ifciteseen等测试命令 + \ExecuteBibliographyOptions{citetracker=true} % %判断当前文献是否已经引用过且是做的footfullcite(即已经作为脚注输出文献内容) @@ -295,14 +320,14 @@ }% {\usebibmacro{citesavefn}% \ifcsdef{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}% - {\csuse{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}}%\nopunct + {\csuse{labelsec\arabic{refsection}\arabic{page}et\thefield{entrykey}}\nopunct}% {\usedriver{\DeclareNameAlias{sortname}{default}}{\thefield{entrytype}}}% }% {\multicitedelim}% {\usebibmacro{postnote}} - } + % % 增加一个选项,用于控制gb7714的使用范围,即英文文献和中文文献使用不同的样式 % 20180814,v1.0m,hzz @@ -344,6 +369,7 @@ \def\str@references{参考文献} \def\str@bytranslator{译} \def\str@andotherscn{等} + \def\str@andcn{和} \def\str@backrefpage{引用页} \def\str@backrefpages{引用页} \def\str@noaddress{出版地不详} @@ -1639,7 +1665,7 @@ \addvspace{\bibitemsep}%恢复\bibitemsep的作用 %\parshape 2 0em \textwidth \lengthid \lengthlw \hangindent\lengthid -\mkgbnumlabel{\printfield{labelnumber}}% +\leavevmode\mkgbnumlabel{\printfield{labelnumber}}% \hspace{\biblabelsep}} % % 简单的段落环境 @@ -1717,14 +1743,14 @@ \iftoggle{bbx:gbmedium}% {\iftoggle{bbx:url}% {\iffieldundef{url}%当存在url时,增加一个OL标识符 - {\allowbreak\printtext{[}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}}% - {\allowbreak\printtext{[}\nobreak#1\nobreak\printtext{\texttt{/}OL]}}% + {\allowbreak\printtext{\gbleftbracket}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{{\SlashFont/}\thefield{medium}}\gbrightbracket}}% + {\allowbreak\printtext{\gbleftbracket}\nobreak#1\nobreak\printtext{{\SlashFont/}OL\gbrightbracket}}% }% {\ifentrytype{online}% - {\allowbreak\printtext{[}\nobreak#1\nobreak\printtext{\texttt{/}OL]}}% - {\allowbreak\printtext{[}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}}% + {\allowbreak\printtext{\gbleftbracket}\nobreak#1\nobreak\printtext{{\SlashFont/}OL\gbrightbracket}}% + {\allowbreak\printtext{\gbleftbracket}\nobreak#1\nobreak\printtext{\iffieldundef{medium}{}{{\SlashFont/}\thefield{medium}}\gbrightbracket}}% }}% - {\allowbreak\printtext{[}\nobreak#1\nobreak\printtext{]}}% + {\allowbreak\printtext{\gbleftbracket}\nobreak#1\nobreak\printtext{\gbrightbracket}}% } % @@ -1734,11 +1760,11 @@ \iftoggle{bbx:gbmedium}% {\iftoggle{bbx:url}% {\iffieldundef{url}%当存在url时,增加一个OL标识符 - {\allowbreak\printtext{[}\nobreak N\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% - {\allowbreak\printtext{[}\nobreak N\printtext{\texttt{/}OL]}\nobreak}% + {\allowbreak\printtext{\gbleftbracket}\nobreak N\printtext{\iffieldundef{medium}{}{{\SlashFont/}\thefield{medium}}\gbrightbracket}\nobreak}% + {\allowbreak\printtext{\gbleftbracket}\nobreak N\printtext{{\SlashFont/}OL\gbrightbracket}\nobreak}% }% - {\allowbreak\printtext{[}\nobreak N\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% -}{\allowbreak\printtext{[}\nobreak N\printtext{]}\nobreak}% + {\allowbreak\printtext{\gbleftbracket}\nobreak N\printtext{\iffieldundef{medium}{}{{\SlashFont/}\thefield{medium}}\gbrightbracket}\nobreak}% +}{\allowbreak\printtext{\gbleftbracket}\nobreak N\printtext{\gbrightbracket}\nobreak}% } % @@ -1748,11 +1774,11 @@ \iftoggle{bbx:gbmedium}% {\iftoggle{bbx:url}% {\iffieldundef{url}%当存在url时,增加一个OL标识符 - {\allowbreak\printtext{[}\nobreak S\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% - {\allowbreak\printtext{[}\nobreak S\printtext{\texttt{/}OL]}\nobreak}% + {\allowbreak\printtext{\gbleftbracket}\nobreak S\printtext{\iffieldundef{medium}{}{{\SlashFont/}\thefield{medium}}\gbrightbracket}\nobreak}% + {\allowbreak\printtext{\gbleftbracket}\nobreak S\printtext{{\SlashFont/}OL\gbrightbracket}\nobreak}% }% - {\allowbreak\printtext{[}\nobreak S\printtext{\iffieldundef{medium}{}{\texttt{/}\thefield{medium}}]}\nobreak}% -}{\allowbreak\printtext{[}\nobreak S\printtext{]}\nobreak}% + {\allowbreak\printtext{\gbleftbracket}\nobreak S\printtext{\iffieldundef{medium}{}{{\SlashFont/}\thefield{medium}}\gbrightbracket}\nobreak}% +}{\allowbreak\printtext{\gbleftbracket}\nobreak S\printtext{\gbrightbracket}\nobreak}% } % @@ -1776,6 +1802,7 @@ {title}{#1}%\nopunct\unspace \DeclareFieldFormat{url}{\url{#1}} %%url相关输出,url域修改如本行,源来自biblatex.def \def\UrlFont{\rmfamily}%设置url字体为roman字体%\ttfamily +\def\SlashFont{\ttfamily}%设置斜杠的字体,比如:[J/OL]中的斜杠;\rmfamily %\urlstyle{rm} %使用这句也一样 \setcounter{biburlnumpenalty}{100} %让url可以在数字后断行 \setcounter{biburlucpenalty}{100} %让url可以在大写字母后断行 @@ -2283,7 +2310,7 @@ % \DeclareFieldFormat{urldate}{#1} \renewbibmacro*{urldate}{% - \addthinspace\printtext{[}\printurldate\printtext{]}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 + \addthinspace\printtext{\gbleftbracket}\printurldate\printtext{\gbrightbracket}}%能用高层命令+选项尽量用命令(比如这里的\printurldate),而不用\blx@edtfdate这种更底层的命令 % % 专利的公告日期、或报纸的日期的输出宏 @@ -2305,10 +2332,10 @@ }% {}%更新或修改日期通常有day信息 {\iffieldundef{year}{% - \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{(}\printeventdate\printtext{)}}}% - {\printtext{(}\printenddate\printtext{)}}% + \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{\gbleftparen}\printeventdate\printtext{\gbrightparen}}}% + {\printtext{\gbleftparen}\printenddate\printtext{\gbrightparen}}% }{\iffieldequalstr{year}{}{%因为year存在,但为空 - }{\printtext{(}\blx@gbdate{}{}\printtext{)}}% + }{\printtext{\gbleftparen}\blx@gbdate{}{}\printtext{\gbrightparen}}% }% }}% @@ -2396,14 +2423,15 @@ {\testCJKfirst{userd}% \ifboolexpr{% test {\iflistundef{location}} and test {\iflistundef{institution}}% -}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress}\space :\space\str@nopublisher]}% -{\printtext{[S.l.\space :\space s.n.\adddot]}}% +}{\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str@noaddress}\space :\space\str@nopublisher\gbrightbracket}% + {\printtext{\gbleftbracket S.l.\space :\space s.n.\adddot\gbrightbracket}}% }{% -\iflistundef{location}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress]}}{\printtext{[S.l.\adddot]}}}% +\iflistundef{location}{\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str@noaddress\gbrightbracket}} + {\printtext{\gbleftbracket S.l.\adddot\gbrightbracket}}}% {\printlist{location}}% \publocpunct% \iflistundef{institution}{% -\iftoggle{ifCJKforgbt}{\printtext{[\str@nopublisher]}}{\printtext{\mkbibbrackets{s.n.}}}}% +\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str@nopublisher\gbrightbracket}}{\printtext{\mkbibbrackets{s.n.}}}}% {\printlist{institution}}}% \setunit{\addcomma\addspace}% %\usebibmacro{date}% @@ -2430,14 +2458,17 @@ test {\iflistundef{location}} and test {\iflistundef{institution}}% \iftoggle{bbx:gbpub}% {\testCJKfirst{userd}% \ifboolexpr{ test {\iflistundef{location}} and test {\iflistundef{publisher}} }% - {\iffieldequalstr{entrysubtype}{standard}{}{\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress}\space :\space\str@nopublisher]}{\printtext{[S.l.\space :\space s.n.\adddot]}}}}% + {\iffieldequalstr{entrysubtype}{standard}{} + {\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str@noaddress}\space :\space\str@nopublisher\gbrightbracket}% + {\printtext{\gbleftbracket S.l.\space :\space s.n.\adddot\gbrightbracket}}}}% {\iflistundef{location}{%\adddot \iffieldequalstr{entrysubtype}{standard}{}%%从gbt7714-2015标准第19页看到,标准存在出版项时输出,没有时完全省略。 - {\iftoggle{ifCJKforgbt}{\printtext{[\str@noaddress]}\addcolon\addspace}{\printtext{[S.l.\adddot]}\publocpunct}}}% \bibstring{noaddress} + {\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str@noaddress\gbrightbracket}\addcolon\addspace} + {\printtext{\gbleftbracket S.l.\adddot\gbrightbracket}\publocpunct}}}% \bibstring{noaddress} {\printlist{location}\publocpunct}%%\addcolon\addspace% \iflistundef{publisher}{% \iffieldequalstr{entrysubtype}{standard}{}% - {\iftoggle{ifCJKforgbt}{\printtext{[\str@nopublisher]}\setunit{\adddot\addspace}\setunit*{\addcomma\addspace}}% + {\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% @@ -2513,7 +2544,7 @@ incollection,proceedings,inproceedings]{number}{% % % 对version的版本信息做出修改 % -\DeclareFieldFormat{version}{%源来自biblatex.DEF +\DeclareFieldFormat{version}{\bibtitlefont%源来自biblatex.DEF \testCJKfirst{userd}% \ifinteger{#1}% {\iftoggle{ifCJKforgbt}{\printtext{#1\str@edition}}% @@ -2543,10 +2574,11 @@ incollection,proceedings,inproceedings]{number}{% % 调整期刊名的格式 % % v1.0k,20180425,增加了字体控制命令,hzz +% v1.1j,20220527,修复期刊名不存在时多余的标点 \renewbibmacro*{journal+issuetitle}{\bibpubfont%源来自standard.bbx \usebibmacro{journal}% %\setunit*{\addspace}% - \setunit*{\addcomma\addspace}%修改为增加一个逗号 + \iffieldundef{journaltitle}{}{\setunit*{\addcomma\addspace}}%修改为增加一个逗号 \iffieldundef{series} {} {\newunit @@ -2554,9 +2586,9 @@ incollection,proceedings,inproceedings]{number}{% \setunit{\addspace}}% %\usebibmacro{volume+number+eid}% %\setunit{\addspace}% - \usebibmacro{issue+date}% + \printtext{\usebibmacro{issue+date}}%使用printtext配合后面的\setunit*来实现后面的逗号的自动处理 %\setunit{\addcolon\space}% - \iffieldundef{volume}{}{\setunit{\addcomma\space}}% + \iffieldundef{volume}{}{\setunit*{\addcomma\space}}% %换成逗号和空格 \usebibmacro{issue}% \usebibmacro{volume+number+eid}%把卷期放到年份后面 @@ -2858,8 +2890,9 @@ incollection,proceedings,inproceedings]{number}{% % 20190212,v1.0q,增加中英文区分,by hzz % % 原理方法:使用bibmacro{in:}改变了以前在driver中直接输出//的方式,同时也简化了标点控制。 +% 需要注意\bibstring命令会把首字母大写的。 \renewbibmacro*{in:}{% - \iftoggle{bbx:gbpunctin}{\printtext{\allowbreak\texttt{//}\allowbreak}}%\addthinspace + \iftoggle{bbx:gbpunctin}{\printtext{\allowbreak{\SlashFont//}\allowbreak}}%\addthinspace {\setunit{\adddot\addspace}% \iffieldequalstr{userd}{chinese}% {\printtext{\bibstring{incn}}}% diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015mx.cbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015mx.cbx index 7eacc808ddf..1beb8d05ca6 100644 --- a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015mx.cbx +++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015mx.cbx @@ -30,6 +30,9 @@ sortcites, } +\newrobustcmd{\mkbibleftborder}{\gbleftbracket} +\newrobustcmd{\mkbibrightborder}{\gbrightbracket} + %修改\mkbibsuperscript宏在最后加上一个空白使得xeCJK不会自动在引用标签后面加上中英文之间的空白 %hzz,v1.0w,2021-0401 \renewrobustcmd{\mkbibsuperscript}[1]{% @@ -56,12 +59,12 @@ % 方法:\DeclareCiteCommand{\cite}[\mkbibparens]{precode}{loopcode}{sepcode}{postcode} % v1.0p版后将cite的处理方式修改为类似pagescite,而不再使用biblatex的标准方式 \DeclareCiteCommand{\cite}[\mkbibsuperscript]%利用mkbibsuperbracket添加方括号 - {[\usebibmacro{cite:init}% + {\mkbibleftborder\usebibmacro{cite:init}% \usebibmacro{prenote}} {\usebibmacro{citeindex}% \usebibmacro{cite:comp}} {} - {\usebibmacro{cite:dump}]% + {\usebibmacro{cite:dump}\mkbibrightborder% \printfield{postnote}} % v1.0p 以前用的方式 %\DeclareCiteCommand{\cite}[\mkbibsuperbracket]%利用mkbibsuperbracket添加方括号 @@ -85,13 +88,13 @@ % 重定义parencite命令,以满足标签带页码的国标要求 % \DeclareCiteCommand{\parencite}%[\mkbibbrackets] - {[\usebibmacro{cite:init}%] + {\mkbibleftborder\usebibmacro{cite:init}%] \usebibmacro{prenote}}% {\usebibmacro{citeindex}% \usebibmacro{cite:comp}} {} {%[ - \usebibmacro{cite:dump}]% + \usebibmacro{cite:dump}\mkbibrightborder% \mkbibsuperscript{\printfield{postnote}}} % @@ -105,26 +108,26 @@ {\printfield{postnote}}} % 2.新增\pagescite引用命令 \DeclareCiteCommand{\pagescite}[\mkbibsuperscript]%\mkbibbrackets,仍然用上标 - {[\usebibmacro{cite:init}%]直接添加方括号 + {\mkbibleftborder\usebibmacro{cite:init}%]直接添加方括号 \usebibmacro{prenote}% } {\usebibmacro{citeindex}% \usebibmacro{cite:comp}} {} - {\usebibmacro{cite:dump}]% + {\usebibmacro{cite:dump}\mkbibrightborder% \usebibmacro{postpages}} % % 定义yearpagescite,为与ay样式兼容,等同于\pagescite % \DeclareCiteCommand{\yearpagescite}[\mkbibsuperscript]%\mkbibbrackets,仍然用上标 - {[\usebibmacro{cite:init}%]直接添加方括号 + {\mkbibleftborder\usebibmacro{cite:init}%]直接添加方括号 \usebibmacro{prenote}% } {\usebibmacro{citeindex}% \usebibmacro{cite:comp}} {} - {\usebibmacro{cite:dump}]% + {\usebibmacro{cite:dump}\mkbibrightborder% \usebibmacro{postpages}} % @@ -132,13 +135,13 @@ % % 原理方法:等同于\pagescite,但不要页码 \DeclareCiteCommand{\yearcite}[\mkbibsuperscript]%\mkbibbrackets,仍然用上标 - {[\usebibmacro{cite:init}%]直接添加方括号 + {\mkbibleftborder\usebibmacro{cite:init}%]直接添加方括号 \usebibmacro{prenote}% } {\usebibmacro{citeindex}% \usebibmacro{cite:comp}} {} - {\usebibmacro{cite:dump}]} + {\usebibmacro{cite:dump}\mkbibrightborder} % % 定义\authornumcite命令,输出作者信息,然后在后面带上顺序编码 @@ -180,12 +183,12 @@ \DeclareCiteCommand{\citep}[\mkbibsuperscript]%利用mkbibsuperbracket添加方括号 - {[\usebibmacro{cite:init}% + {\mkbibleftborder\usebibmacro{cite:init}% \usebibmacro{prenote}} {\usebibmacro{citeindex}% \usebibmacro{cite:comp}} {} - {\usebibmacro{cite:dump}]% + {\usebibmacro{cite:dump}\mkbibrightborder% \printfield{postnote}} \newrobustcmd*{\citetns}% @@ -375,12 +378,11 @@ \iffieldundef{postnote}% {}% {\thefield{postnote}}}% - (\usebibmacro{prenote}}%) + \gbleftparen\usebibmacro{prenote}}%) {\usebibmacro{citeindex}% \usebibmacro{cite}} {} - {%( - )\mkbibsuperscript{\usebibmacro{postnote}}%\usebibmacro{postnote} + {\gbrightparen\mkbibsuperscript{\usebibmacro{postnote}}%\usebibmacro{postnote} } \DeclareCiteCommand{\parencite}[\mkbibparens] @@ -413,7 +415,7 @@ \savefield{labelyear}{\cbx@lastyear}}} {\printnames{labelname}% %\setunit{\printdelim{nameyeardelim}}% - (\usebibmacro{cite:labeldate+extradate})% + \gbleftparen\usebibmacro{cite:labeldate+extradate}\gbrightparen% \savefield{namehash}{\cbx@lasthash}% \savefield{labelyear}{\cbx@lastyear}}}} {\usebibmacro{cite:shorthand}% @@ -460,12 +462,11 @@ \iffieldundef{postnote}% {}% {\thefield{postnote}}}% - (\usebibmacro{prenote}}%) + \gbleftparen\usebibmacro{prenote}}% {\usebibmacro{citeindex}% \usebibmacro{cite}} {} - {%( - )\mkbibsuperscript{\usebibmacro{postnote}}%\usebibmacro{postnote} + {\gbrightparen\mkbibsuperscript{\usebibmacro{postnote}}%\usebibmacro{postnote} } diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-CCNU.bbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-CCNU.bbx index 0515a3b152c..bd1edb0f05c 100644 --- a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-CCNU.bbx +++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-CCNU.bbx @@ -192,17 +192,15 @@ % v1.0k,20180425,增加了字体控制命令,hzz \renewbibmacro*{journal+issuetitle}{\bibpubfont%源来自standard.bbx \usebibmacro{journal}% - \setunit*{\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\gbpunctcommalanen}}%修改为增加一个逗号 + \iffieldundef{journaltitle}{}{\setunit*{\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\gbpunctcommalanen}}}%修改为增加一个逗号 \iffieldundef{series} {} {\newunit \printfield{series}% \setunit{\addspace}}% \usebibmacro{issue+date}% - %\setunit{\addcolon\space}% \iffieldundef{volume}{}{\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\gbpunctcommalanen}}% %换成逗号和空格 - \usebibmacro{issue}% \usebibmacro{volume+number+eid}%把卷期放到年份后面 %\newunit } diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-NWAFU.bbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-NWAFU.bbx index 6d49208e424..e1aba484943 100644 --- a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-NWAFU.bbx +++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-NWAFU.bbx @@ -71,6 +71,54 @@ \DeclareDelimFormat[bib,biblist]{nameyeardelim}{\addperiod\space} \DeclareFieldFormat{postnote}{#1} +\def\gbcaselocalset{% + \renewrobustcmd*{\bibinitperiod}{}% + \renewcommand*{\revsdnamepunct}{}% + %\renewrobustcmd*{\bibinitdelim}{}% +} + + +\renewbibmacro*{name:family-given}[4]{% + \gbcaselocalset% + \ifuseprefix + {\usebibmacro{name:delim}{#3#1}% + \usebibmacro{name:hook}{#3#1}% + \mkbibcompletenamefamilygiven{% + \ifdefvoid{#3} + {} + {\ifcapital + {\mkbibnameprefix{\MakeCapital{#3}}\isdot} + {\mkbibnameprefix{#3}\isdot}% + \ifprefchar{}{\bibnamedelimc}}% + \mkbibnamefamily{#1}\isdot + \ifdefvoid{#4} + {} + {\bibnamedelimd\mkbibnamesuffix{#4}\isdot}% + \ifdefvoid{#2} + {} + {\revsdnamepunct\bibnamedelimd\mkbibnamegiven{#2}\isdot}}} + {\usebibmacro{name:delim}{#1}% + \usebibmacro{name:hook}{#1}% + \mkbibcompletenamefamilygiven{% + \mkbibnamefamily{#1}\isdot + \ifdefvoid{#4} + {} + {\bibnamedelimd\mkbibnamesuffix{#4}\isdot}% + \ifboolexpe{% + test {\ifdefvoid{#2}} + and + test {\ifdefvoid{#3}}} + {} + {\revsdnamepunct}% + \ifdefvoid{#2} + {} + {\bibnamedelimd\mkbibnamegiven{#2}\isdot}% + \ifdefvoid{#3} + {} + {\bibnamedelimd\mkbibnameprefix{#3}\isdot}}}} + + + %================================================== %调整部分域的输出格式 |