diff options
Diffstat (limited to 'macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.bbx')
-rw-r--r-- | macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.bbx | 106 |
1 files changed, 94 insertions, 12 deletions
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.bbx index fa23a27dcf..73316ea3cb 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.bbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.bbx @@ -10,7 +10,7 @@ % % 版本和时间信息 % -\def\versionofgbtstyle{2023/09/10 v1.1o} +\def\versionofgbtstyle{2024/02/10 v1.1p} \def\versionofbiblatex{\abx@version} \ProvidesFile{gb7714-2015ay.bbx}[\versionofgbtstyle biblatex bibliography style] %\RequireBiber[3]%显式指定用biber后端,当用bibtex时会报错,但其实不会影响编译,只是采用bibtex后无法达成格式需求 @@ -1133,6 +1133,10 @@ \step[fieldsource=publisher] %有时会把publisher和institution混淆,处理后使用institution \step[fieldset=institution, origfieldval] } + \map{ + \pertype{legislation} + \step[typesource=legislation, typetarget=archive] + } \map{%对应增加的一个档案类型archive确定文献类型标识符 \pertype{archive} \step[fieldset=usera, fieldvalue={A}] @@ -1149,6 +1153,10 @@ \pertype{misc} \step[fieldset=usera, fieldvalue={Z}]% } + \map{\pertype{mvbook} + \step[typesource=mvbook,typetarget=book] + \step[fieldset=usera, fieldvalue={M}]% + } \map{ \pertype{book} \pertype{inbook} @@ -2520,6 +2528,8 @@ test {\iftoggle{iftlseven}}%biblatex<=3.7 \iffieldundef{titleaddon}{}{\setunit{\subtitlepunct}\printfield{titleaddon}}%判断一下titleaddon \ifboolexpr{test{\ifentrytype{book}} and (not test{\iffieldundef{volume}})}%判断一下book类有没有volume {\setunit{\subtitlepunct}\printfield{volume}}{}% + \ifboolexpr{(test{\ifentrytype{archive}} or test{\ifentrytype{online}}) and (not test{\iffieldundef{number}})}%判断一下archive类有没有number + {\setunit{\subtitlepunct}\printfield{number}}{}% \iftoggle{bbx:gbtype}% {\iffieldundef{entrysubtype}{\printfield[gbtypeflag]{usera}}%在标题后直接给出文献标识字母,判断一下,是否是报纸和标准 {\iffieldequalstr{entrysubtype}{standard}{\printfield[gbtypeflags]{usera}}%判断是否为标准 @@ -3365,6 +3375,22 @@ incollection,proceedings,inproceedings]{number}{% \usebibmacro{date+extrayear} } + +\DeclareFieldFormat{Labelyear}{% +\ifboolexpr{% + (test{\iffieldundef{year}}% + and % + test{\iffieldundef{endyear}}% + and + test{\iffieldundef{eventyear}}) and (not test{\iffieldundef{urlyear}})% + }% + {\printtext[labelurlyear]{#1}}% + {\printtext[labelyear]{#1}}% +} + +\DeclareFieldFormat{labelurlyear}{\mkbibbrackets{#1}} +\DeclareFieldFormat{labelyear}{#1} + %\mkbibbrackets{#1}/\mkbibparens{#1}/【#1】等 % % 设置标注和文献表中作者和年份之间的分隔符 % @@ -3377,7 +3403,7 @@ incollection,proceedings,inproceedings]{number}{% \renewbibmacro*{date+extrayear}{%%重设date+extrayear格式,源来自authoryear.BBX \iffieldundef{\thefield{datelabelsource}year} {} - {\printtext{%[parens]%这里把括号去掉 + {\printtext[Labelyear]{%[parens]%这里把括号去掉 \iffieldsequal{year}{\thefield{datelabelsource}year} {\printdateextralabel}% {\printfield{labelyear}% @@ -3391,7 +3417,7 @@ incollection,proceedings,inproceedings]{number}{% \renewbibmacro*{date+extrayear}{%%重设date+extrayear格式,源来自authoryear.BBX \iffieldundef{\thefield{datelabelsource}year} {} - {\printtext{%[parens]%这里把括号去掉 + {\printtext[Labelyear]{%[parens]%这里把括号去掉 \iffieldsequal{year}{\thefield{datelabelsource}year} {\printdateextralabel}% {\printfield{labelyear}% @@ -3404,7 +3430,7 @@ incollection,proceedings,inproceedings]{number}{% \renewbibmacro*{date+extrayear}{%以前的\printdateextralabel宏变为了\printlabeldateextra \iffieldundef{labelyear} {} - {\printtext{%[parens] + {\printtext[Labelyear]{%[parens] \iffieldsequal{year}{labelyear} {\printlabeldateextra}% {\printfield{labelyear}% @@ -3441,7 +3467,7 @@ incollection,proceedings,inproceedings]{number}{% \renewbibmacro*{date+extradate}{% \iffieldundef{labelyear} {} - {\printtext{%[parens]%这里去掉括号 + {\printtext[Labelyear]{%[parens]%这里去掉括号 \iflabeldateisdate {\printdateextra} {\printlabeldateextra}}}}% @@ -3479,6 +3505,35 @@ incollection,proceedings,inproceedings]{number}{% }% } +\def\bbx@opt@mergedate@false{% + \renewbibmacro*{date+extradate}{% + \iffieldundef{labelyear} + {} + {\printtext[Labelyear]{%[parens]%这里去掉括号 + \iflabeldateisdate + {\printdateextra} + {\printlabeldateextra}}}}% +\renewbibmacro*{bbx:ifmergeddate}{\@secondoftwo}%这一句用于3.12版本 +\renewbibmacro*{date}{\printdate}%这一句用于biblatex3.11以下版本 +\renewbibmacro*{issue+date}{%去掉括号 + \printtext{%去掉了[parens] + \iffieldundef{issue} + {%\usebibmacro{date} + \iffieldundef{entrysubtype}{\usebibmacro{date}}%判断一下,是否是报纸 + {\iffieldequalstr{entrysubtype}{news}{\usebibmacro{newsdate}}%判断是否为报纸 + {\usebibmacro{date}}% + }}% + {\iftoggle{bbx:gbstrict}{}{\printfield{issue}% + \setunit*{\addspace}}% + %\usebibmacro{date} + \iffieldundef{entrysubtype}{\usebibmacro{date}}%判断一下,是否是报纸 + {\iffieldequalstr{entrysubtype}{news}{\usebibmacro{newsdate}}%判断是否为报纸 + {\usebibmacro{date}}% + }}}% + %\newunit + }% + } + \iftoggle{iftlfive}{\switchversion{3.0}{dateextra}}{}%biblatex<=3.2 \iftoggle{iftlsix}{\switchversion{3.4}{dateextra}}{}%3.3<=biblatex<=3.6 \iftoggle{iftlseven}{\switchversion{3.7}{dateextra}}{}%biblatex=3.7 @@ -3575,9 +3630,21 @@ incollection,proceedings,inproceedings]{number}{% % 原理方法:原在authoryear.BBX中\bbx@opt@mergedate@compact中定义 % 当issue存在时,才设置newunit。避免直接设置标点后,当volume不存在是需要使用\nopuct去标点进而引入不必要的空格 \renewbibmacro*{issue+date}{% + \printtext{%去掉了[parens] \iffieldundef{issue}% - {}% - {\iftoggle{bbx:gbstrict}{}{\printtext[parens]{\printfield{issue}}\newunit}}} + {%\usebibmacro{date} + \iffieldundef{entrysubtype}{}%判断一下,是否是报纸 + {\iffieldequalstr{entrysubtype}{news}{\usebibmacro{newsdate}}{}%判断是否为报纸 + }}% + {\iftoggle{bbx:gbstrict}{}{\printfield{issue}% + \setunit*{\addspace}}% + %\usebibmacro{date} + \iffieldundef{entrysubtype}{}%判断一下,是否是报纸 + {\iffieldequalstr{entrysubtype}{news}{\usebibmacro{newsdate}}{}%判断是否为报纸 + }}}% + } + + @@ -3586,9 +3653,23 @@ incollection,proceedings,inproceedings]{number}{% % \renewbibmacro*{note+pages}{%源来自standard.bbx %\printfield{note}% - \iffieldundef{pages}{}{% - \setunit{\bibpagespunct}% - \printfield{pages}}% + \iffieldundef{entrysubtype}{% + \iffieldundef{pages}{}{% + \setunit{\bibpagespunct}% + \printfield{pages}}% + }% + {% + \ifboolexpr{test{\iffieldequalstr{entrysubtype}{news}} and test{\iffieldundef{number}}}%判断一下archive类有没有number + {% + \iffieldundef{pages}{}{% + \printtext[parens]{\printfield{pages}}}% + }% + {% + \iffieldundef{pages}{}{% + \setunit{\bibpagespunct}% + \printfield{pages}}% + }% + }% %\newunit } @@ -3917,7 +3998,7 @@ test {\ifentrytype{conference}} \newunit\newblock%% \iftoggle{bbx:gbstrict}{}{% \iffieldundef{maintitle}% -{\printfield{volume}% +{%\printfield{volume}% \printfield{part}}% {}% \newunit% @@ -3980,7 +4061,8 @@ test {\ifentrytype{conference}} % \usebibmacro{byeditor+others}% % \newunit \usebibmacro{note+pages}% - \iffieldequalstr{entrysubtype}{news}{}{%当是新闻时不输出修改或更新日期 + \iffieldequalstr{entrysubtype}{news}{}%当是新闻时不输出修改或更新日期 + {% \iffieldundef{url}{}{%当没有网址时也不输出 \iftoggle{bbx:url}{%当url选项为false时,也不输出 \usebibmacro{modifydate}}{}}}%带括号的修改或更新日期, |