diff options
Diffstat (limited to 'macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-jmw.bbx')
-rw-r--r-- | macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-jmw.bbx | 821 |
1 files changed, 821 insertions, 0 deletions
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-jmw.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-jmw.bbx new file mode 100644 index 0000000000..cba4e06459 --- /dev/null +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-jmw.bbx @@ -0,0 +1,821 @@ +%% +%% --------------------------------------------------------------- +%% css.bbx --- A citation style of journal of management world in china +%% modified from gb7714-2015 +%% Maintained by huzhenzhen +%% E-mail: hzzmail@163.com +%% Released under the LaTeX Project Public License v1.3c or later +%% history +%% 2019/03/28 v1.0 +%% 2022/02/22 v1.0a +%% --------------------------------------------------------------- +%% +%%用法:类似于标准的样式在biblatex加载时设置样式 +%%文献表正常处理,标注命令主要用cite和textcite +\ProvidesFile{chinese-jmw.bbx}[2023/04/24 v1.0a a biblatex bibliography style for JMW] + + +%================================================== +%加载gb样式 +%================================================== +\RequireBibliographyStyle{gb7714-2015} + + +% +% 增加一个控制标点是英文还是中文的选项 +% 20220222,v1.0a,hzz +\DeclareBibliographyOption{gbpunctcn}[true]{%biblatex低版本 + \ifstrequal{#1}{false}{\execgbpuncten}{}} + +\newbibmacro*{bbx:ifmergeddate}{\@secondoftwo} + +\newbibmacro*{date+extradate}{} + +% merge date with date label +\def\bbx@opt@mergedate@true{% + \renewbibmacro*{date+extradate}{% + \iffieldundef{labelyear} + {} + {\printtext{% + \iflabeldateisdate + {\printdateextra} + {\printlabeldateextra}}}}% + \renewbibmacro*{bbx:ifmergeddate}{\iflabeldateisdate}% +% \renewbibmacro*{issue+date}{% +% \ifboolexpr{test {\usebibmacro{bbx:ifmergeddate}} +% and +% test {\iffieldundef{issue}}} +% {} +% {\printtext[parens]{% +% \printfield{issue}% +% \setunit*{\addspace}% +% \usebibmacro{bbx:ifmergeddate} +% {} +% {\printdate}}}% +% \newunit} +} + + +\renewbibmacro*{author}{% + \ifboolexpr{ + test \ifuseauthor + and + not test {\ifnameundef{author}} + } + {\printnames{author}% + \iffieldundef{authortype} + {\setunit{\printdelim{nameyeardelim}}} + {\setunit{\printdelim{authortypedelim}}}% + \iffieldundef{authortype} + {} + {\usebibmacro{authorstrg}% + \setunit{\printdelim{nameyeardelim}}}}% + {\global\undef\bbx@lasthash + \usebibmacro{labeltitle}% + \setunit*{\printdelim{nonameyeardelim}}}% +\iffieldequalstr{userd}{chinese}{}{\usebibmacro{date+extradate}\clearfield{year}}% +} + + +%================================================== +%选项设置 +%================================================== +\ExecuteBibliographyOptions{ + gbnamefmt=familyahead, + gbbiblabel=parens, + gbtype=false, + gbpub=false, + doi=false, + url=false, + gbfieldtype=true, + dateabbrev=false, + maxbibnames=99, + mergedate=true, + %datezeros=false, + } + +%================================================== +%定义一些标点为中文全角标点 +%================================================== +\def\gbpunctdot{。}% +\def\gbpunctmark{、}% +\def\gbpunctcomma{,}% +\def\gbpunctcommalanen{,}%\addcomma\addspace +\def\gbpunctcolon{:}% +\def\gbpunctcolonlanen{\addcolon\addspace}% +\def\gbpunctsemicolon{;}% +\def\gbpunctttl{《}% +\def\gbpunctttr{》} +\def\gbpunctprl{(}% +\def\gbpunctprr{)} + + +\def\execgbpuncten{% +\def\gbpunctdot{\adddot}% +\def\gbpunctmark{\addcomma\addspace}% +\def\gbpunctcomma{\addcomma\addspace}% +\def\gbpunctcommalanen{\addcomma\addspace}% +\def\gbpunctcolon{\addcolon\addspace}% +\def\gbpunctcolonlanen{\addcolon\addspace}% +\def\gbpunctsemicolon{\addsemicolon\addspace}% +\def\gbpunctttl{《}% +\def\gbpunctttr{》}% +} + +\DefineBibliographyExtras{english}{\renewcommand*{\bibrangedash}{$\sim$}}%将页码间隔符替换会英文的短横线 + +%================================================== +%为标注和文献表中标点格式,重设and本地化字符串 +%================================================== +\DefineBibliographyStrings{english}{ + and = { and},%and后面的空格在finalnamedelim已经加过了,所以这里去掉20191009 + andcn = {\gbpunctmark\unspace},%\gbpunctmark + %andotherscn={等}, + mathesiscn={硕士学位论文}, + phdthesiscn={博士学位论文}, + bytranslator= {trans\adddot\ \lbx@sfromlang\ by}, +} + + + + +%================================================== +%设置一些标点格式为中文的标点 +%================================================== +%\DeclareFieldFormat{titlecase}{\iffieldequalstr{userd}{chinese}{#1}{\capitalisewords{#1}}} +%\DeclareFieldFormat*{booktitle}{\gbpunctttl#1\gbpunctttr} +\DeclareFieldFormat*{title}{% +\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{\textit{#1}\isdot}} +\DeclareFieldFormat[book]{title}{% +\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{\textbf{\textit{#1}}\isdot}} +\DeclareFieldFormat[archive]{title}{% +\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{#1\isdot}} +\DeclareFieldFormat[article,incollection,inbook,inproceedings,misc]{title}{% +\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{\mkbibquote{#1}\isdot}} +\DeclareFieldFormat*{journaltitle}{% +\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{\textbf{\textit{#1}}}}% +\DeclareFieldFormat{booktitle}{% +\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{\textbf{\textit{#1}}}} +\renewcommand*{\revsdnamepunct}{% +\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\gbpunctcommalanen}} +\DeclareDelimFormat{multinamedelim}{% +\iffieldequalstr{userd}{chinese}{\gbpunctmark}{\gbpunctcommalanen}} +\DeclareDelimFormat{finalnamedelim}{% + %\ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}% + %\addspace% + \edef\userfieldabcde{userd}% + \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% + \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% + \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% + \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% + \ifcase\value{gbcitelocalcase}% + \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andincitecn}}{}% + \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andkr}}{}% + \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andjp}}{}% + \iffieldequalstr{\userfieldabcde}{english}{\space\bibstring{andincite}\space}{}% + \iffieldequalstr{\userfieldabcde}{french}{\bibstring{and}}{}% + \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{and}}{}% +%\space% + \or% + \bibstring{andincitecn}\space% + \or% + \bibstring{andincite}\space% + \fi} +\DeclareDelimFormat[bib,biblist]{finalnamedelim}{% +% \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}% + \edef\userfieldabcde{userd}% + \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}% + \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}% + \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}% + \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}% + \ifcase\value{gbbiblocalcase}% + \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andcn}}{}% + \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andkr}}{}% + \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andjp}}{}% + \iffieldequalstr{\userfieldabcde}{english}{\bibstring{and}}{}% + \iffieldequalstr{\userfieldabcde}{french}{\bibstring{and}}{}% + \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{and}}{}% +\space% + \or% +\bibstring{andcn}\space% + \or% + \bibstring{and}\space% + \fi} +\DeclareDelimFormat{nameyeardelim}{% +\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\gbpunctcommalanen}} +\DeclareDelimFormat[bib,biblist]{nameyeardelim}{% +\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\gbpunctcommalanen}} +\DeclareDelimFormat{bibpagespunct}{% +\iffieldequalstr{userd}{chinese}{\unspace\gbpunctcomma}{\unspace\gbpunctcommalanen}} +\DeclareFieldFormat{pages}{%%前面引导页码的pp.等字符 +\iffieldequalstr{userd}{chinese}{% +\printtext{\bibstring{serialcn} #1\addthinspace 页}}% +{\mkpageprefix[bookpagination]{#1}}} + +% +% 调整页码前的标点和去掉期刊文章等页码后面的标点 +% +\renewbibmacro*{note+pages}{%源来自standard.bbx +% \iffieldundef{postnote}{\iffieldundef{pages}{}{% +% \setunit{\bibpagespunct}% +% \printfield{pages}}}{}% +} + + +% +% 调整页码的格式,即chapter+pages格式 +% +\renewbibmacro*{chapter+pages}{% +\iffieldundef{postnote}{\iffieldundef{pages}{}{% + \setunit{\bibpagespunct}% + \printfield{pages}}}{}% +} + + +\renewcommand*{\newunitpunct}{% +\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\gbpunctcommalanen}% +} +\renewcommand*{\finentrypunct}{% +\printdelim{finalpunct}} +%调整标注的注释中的条目结尾标点 +\DeclareDelimFormat{finalpunct}{\iffieldequalstr{userd}{chinese}{\gbpunctdot}{\adddot}} +\DeclareDelimFormat[fullinnercite]{finalpunct}{} + +%出版项中:出版社地址后面的标点 +\renewcommand{\publocpunct}{% +\iffieldequalstr{userd}{chinese}{\gbpunctcolon}{\addcolon\addspace}% +} +%调整出版社与年份之间的标点 +\renewcommand{\pubdatadelim}{% +\iffieldequalstr{userd}{chinese}% + {\iffieldundef{year}{}{\setunit*{\gbpunctcomma}}}{\setunit*{\addcomma\space}}} +\renewcommand{\locnopubdelim}{% +\iffieldequalstr{userd}{chinese} + {\iffieldundef{year}{}{\setunit*{\gbpunctcomma}}}{\setunit*{\addcomma\space}}} + +%编者与编者类型之间的标点 +\DeclareDelimFormat{editortypedelim}{\iffieldequalstr{userd}{chinese}{}{\addcomma\space}} + +%子标题前的标点 +\renewcommand*{\subtitlepunct}{% +\iffieldequalstr{userd}{chinese}{}{\addcolon\addspace}} + +%================================================== +%调整部分域的输出格式 +%================================================== + +%重新调整输出编者的类型 +\renewbibmacro*{editor+others}{% + \ifboolexpr{ + test \ifuseeditor + and + not test {\ifnameundef{editor}} + } + {\printnames{editor}% + \setunit{\printdelim{editortypedelim}}% + \usebibmacro{editor+othersstrg}% + \clearname{editor}}% + {}% + } + +\renewbibmacro*{editor+othersstrg}{% + \iffieldundef{editortype} + {\ifboolexpr{ + test {\ifnumgreater{\value{editor}}{1}} + or + test {\ifandothers{editor}} + } + {\def\abx@tempa{editors}} + {\def\abx@tempa{editor}}} + {\ifboolexpr{ + test {\ifnumgreater{\value{editor}}{1}} + or + test {\ifandothers{editor}} + } + {\edef\abx@tempa{\thefield{editortype}s}} + {\edef\abx@tempa{\thefield{editortype}}}}% + \let\abx@tempb=\empty + \ifnamesequal{editor}{translator} + {\appto\abx@tempa{tr}% + \appto\abx@tempb{\clearname{translator}}} + {}% + \ifnamesequal{editor}{commentator} + {\appto\abx@tempa{co}% + \appto\abx@tempb{\clearname{commentator}}} + {\ifnamesequal{editor}{annotator} + {\appto\abx@tempa{an}% + \appto\abx@tempb{\clearname{annotator}}} + {}}% + \ifnamesequal{editor}{introduction} + {\appto\abx@tempa{in}% + \appto\abx@tempb{\clearname{introduction}}} + {\ifnamesequal{editor}{foreword} + {\appto\abx@tempa{fo}% + \appto\abx@tempb{\clearname{foreword}}} + {\ifnamesequal{editor}{afterword} + {\appto\abx@tempa{af}% + \appto\abx@tempb{\clearname{afterword}}} + {}}}% + \ifbibxstring{\abx@tempa} + {\printtext[editortype]{% + \iffieldequalstr{userd}{chinese}{\bibstring{\abx@tempa cn}}{\bibstring{\abx@tempa}}% + }\abx@tempb} + {\usebibmacro{editorstrg}}} + +%去掉译前的标点 +\renewbibmacro*{name:andothers}{\bibauthorfont% + \ifboolexpr{test {\ifnumequal{\value{listcount}}{\value{liststop}}} + and test \ifmorenames} + {\ifnumgreater{\value{liststop}}{1}%注意这里试图去区分姓名总数大于1的情况,当姓名总数大于1时,最后一个姓名后面先加入一个\finalandcomma + {}{}%\finalandcomma,目前国标没有这样的区分要求,如果有需要也是可以这么去做的。 + \printdelim{andothersdelim}\printdelim{strandothersdelim}}% + {}% +} + + + +%增加年字 +\renewbibmacro*{date}{% + \iffieldequalstr{userd}{chinese}{% + \ifboolexpr{test {\ifentrytype{article}} or test {\ifentrytype{inproceedings}} + or test {\ifentrytype{archive}} or test {\ifentrytype{online}}} + {\printtext{\blx@gbdatecn{}{}}}% + {\printdate\iffieldundef{year}{}{年}}% + }{\ifentrytype{archive}{\printtext{\blx@gbdateen{}{}}}{\printdate}}% +} + +\newrobustcmd*{\blx@gbdatecn}[3][]{% + \dateeraprintpre{#2#3year}% + \iffieldundef{#2#3year}{}{\blx@imc@forcezerosy{\thefield{#2#3year}年}}\ifblank{#1}{}{\printfield{#1}}% + \iffieldundef{#2#3month}{}{{\thefield{#2#3month}}月}% + \iffieldundef{#2#3day}{}{{\thefield{#2#3day}}日}} + +\newrobustcmd*{\blx@gbdateen}[3][]{% +\mkbibdateen{#2#3year}{#2#3month}{#2#3day}% +} + +\newrobustcmd*{\mkbibdateen}[3]{% + \iffieldundef{#2} + {} + {\mkbibmonth{\thefield{#2}}% + \iffieldundef{#1}{}{\space}}% + \iffieldundef{#3} + {} + {{\thefield{#3}}% + \iffieldundef{#2}{}{\addcomma\space}}% + \iffieldbibstring{#1} + {\bibstring{\thefield{#1}}} + {\dateeraprintpre{#1}\stripzeros{\thefield{#1}}}} + + +\renewbibmacro*{newsdate}{%% +\iffieldequalstr{userd}{chinese} + {\printtext{\blx@gbdatecn{}{}}}% + {\printtext{\blx@gbdate{}{}}}%% +} + + +% +\renewbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式 +\iffieldequalstr{userd}{chinese} + {% + \printtext{\blx@gbdatecn{}{}}% + }% + {\ifboolexpr{% + test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}% + }% + {}%更新或修改日期通常有day信息 + {\iffieldundef{year}{% + \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{\gbleftparen}\printeventdate\printtext{\gbrightparen}}}% + {\printtext{\gbleftparen}\printenddate\printtext{\gbrightparen}}% + }{\iffieldequalstr{year}{}{%因为year存在,但为空 + }{\printtext{\gbleftparen}\blx@gbdate{}{}\printtext{\gbrightparen}}% + }}% +}}% + + +\renewbibmacro*{url+urldate}{% + \newunit\usebibmacro{url}\newunit% + \printtext{\blx@gbdatecn{}{url}}% +} + + +\DeclareFieldFormat{type}% +{\iffieldequalstr{userd}{chinese}% + {\ifbibxstring{#1cn}{\bibxstring{#1cn}}{#1}}% + {\ifbibstring{#1}{\bibstring{#1}}{#1}}% +} + + +\renewbibmacro*{in:}{% +\iftoggle{bbx:gbpunctin}{\gbpunctcomma}%\addthinspace + {\setunit{\adddot\addspace}% + \iffieldequalstr{userd}{chinese}% + {\gbpunctcomma}% + {\printtext{\bibstring{in}}}% + }}%\newunit\newblock\intitlepunct + + +% +% 修改number和volume的格式 +% +\newcounter{numberwithoutzero} +\DeclareFieldFormat[newspaper,article,periodical]{number}% +{\iffieldequalstr{userd}{chinese}{% + \iffieldequalstr{entrysubtype}{news}{% + \iffieldint{number}% + {\printtext{\gbpunctcomma\bibstring{serialcn} #1 版}}% + {\printtext{\gbpunctcomma #1}}% + }% + {\iffieldint{number}{\setcounter{numberwithoutzero}{#1}% + \printtext{\bibstring{serialcn}\addthinspace\arabic{numberwithoutzero} 期}}% + {\printtext{\bibstring{serialcn}\addthinspace #1 期}}% + }}% + {\newunit\setcounter{numberwithoutzero}{#1}\printtext{\bibstring{number}}\arabic{numberwithoutzero}}% +} + +\DeclareFieldFormat[book,inbook,incollection,misc]{number}% +{\iffieldequalstr{userd}{chinese}{\iffieldint{number}% + {% + \bibstring{serialcn}#1\bibstring{numbercn}% + }{#1}% + }% + {\bibstring{number}~#1}% +} + +\DeclareFieldFormat[article,periodical,newspaper]{volume}% +{\iffieldequalstr{userd}{chinese}{% + \iffieldint{volume}% + {\bibstring{serialcn}#1\bibstring{volumecn}}% + {#1}% + }% + {\bibstring{volume}~#1}% +} + +\DeclareFieldFormat[book,inbook,incollection]{volume}% +{\iffieldequalstr{userd}{chinese}{\iffieldint{volume}% + {\iffieldequalstr{entrysubtype}{classic}{\bibstring{volumecn}#1}% + {\bibstring{serialcn}#1\bibstring{volumecn}}% + }{#1}% + }% + {\bibstring{volume}~#1}% +} + +\DeclareListFormat[article,newspaper]{location}{% +\iffieldequalstr{userd}{chinese}{\gbpunctprl#1\gbpunctprr}{#1}% +} + +\DeclareListFormat[article]{series}{% +\iffieldequalstr{userd}{chinese}{\gbpunctprl#1\gbpunctprr}{#1}% +} + +% +% 调整期刊名的格式 +% +% v1.0k,20180425,增加了字体控制命令,hzz +% v1.1j,20220527,修复期刊名不存在时多余的标点 +\renewbibmacro*{journal+issuetitle}{% + \bibpubfont% + \usebibmacro{journal}\newunit% + \iflistundef{location}{}{\printlist{location}}% + \iffieldundef{series}% + {}% + {\printfield{series}}% + \iffieldundef{volume}% + {\usebibmacro{issue+date}% + \usebibmacro{volume+number+eid}}% + {\usebibmacro{volume+number+eid}% + \iffieldundef{year}{}{\newunit}% + \usebibmacro{issue+date}}% +} + + +%去掉期刊名后的标点 +\renewbibmacro*{journal}{% + \ifboolexpr{ + test {\iffieldundef{journaltitle}} + and + test {\iffieldundef{journalsubtitle}} + } + {} + {\printtext[journaltitle]{% + \printfield[titlecase]{journaltitle}% + \printfield[titlecase]{journalsubtitle}}% + }% + \iffieldundef{journaltitleaddon} + {} + {\printfield{journaltitleaddon}}} + + + + +% +% 调整期刊卷和期的格式 +% +\renewbibmacro*{volume+number+eid}{%源来自standard.bbx +\iffieldequalstr{userd}{chinese}% + {\iffieldundef{volume}{}{\printfield{volume}}% + \iffieldundef{number}{}{\printfield{number}}}%区别于顺序编码制 + {\newunit\printfield{volume}% + \printfield{number}% + \setunit{\addcomma\space}% + \printfield{eid}}% +} + + +% +% 期刊的标题做修改 +% +\renewbibmacro*{title+issuetitle}{%源来自standard.BBX + \usebibmacro{periodical}% + \iffieldequalstr{userd}{chinese}{\setunit*{\gbpunctcomma}}{\setunit*{\adddot\addspace}}% + \iffieldundef{series}% + {}% + {\newunit% + \printfield{series}% + \setunit{\addspace}}% + \usebibmacro{periodical+issue}%将issue调整到上面来,并修改 + \usebibmacro{issue+date}% + \usebibmacro{issue}% + \usebibmacro{volume+number+eid} +} + + + + +% +% 重设title的输出 +% +% 20180425,v1.0k,为标题增加字体控制命令,Hu Zhenzhen +% 原理方法:将文献类型标识符输出出去,原输出来自biblatex.def文件 +% 利用toggle做标识符是否输出的判断 +\renewbibmacro*{title}{% + \ifboolexpr{% + test{\iffieldundef{title}}% + and + test{\iffieldundef{subtitle}}% + }% + {}% + {\setunit*{\iffieldequalstr{userd}{chinese}{\gbpunctcolon}{\gbpunctcommalanen}}% + \ifboolexpr{not test {\iffieldundef{origyear}} and test{\iffieldequalstr{entrysubtype}{classic}}}% + {\printorigdate}{}% + \printtext[title]{\bibtitlefont%增加字体控制命令%增加了标点: + \printfield[titlecase]{title}% + \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题 + {}{\setunit{\subtitlepunct}% + \printfield[titlecase]{subtitle}}% + \iffieldundef{titleaddon}{}%判断一下titleaddon,否则直接加可能多一个空格 + {\setunit{\subtitlepunct}\printfield{titleaddon}}}% + \ifboolexpr{test{\ifentrytype{book}} and (not test{\iffieldundef{volume}})}%判断一下book类有没有volume + {\printfield{volume}}{}%% + }% +} + + +%===================================================================== +%设置驱动格式 +%===================================================================== + +\DeclareDelimFormat{authotitledelim} +{% +\iffieldequalstr{userd}{chinese}{\gbpunctcolon}{\addperiod\space}% +} + +\renewbibmacro*{maintitle+booktitle}{% + \iffieldundef{maintitle} + {} + {\usebibmacro{maintitle}% + \newunit\newblock + \iffieldundef{volume} + {} + {\printfield{volume}% + \printfield{part}% + \setunit{\addcolon\space}}}% + \usebibmacro{booktitle}% +} + + +\newbibmacro*{inbook:volume+number}{% + \iffieldundef{volume}{}{\printfield{volume}}% + \iffieldundef{number}{}{\printfield{number}}% +} + + +\renewbibmacro*{thesis:institution+location+date}{\bibpubfont%当没有institution时不处理。 +{\printlist{location}%%加了一个编组避免\usebibmacro{date}把month和day信息去掉 + \iflistundef{institution} + {\setunit*{\addcomma\space}} + {\setunit*{\publocpunct}}% + \printlist{institution}% + \iftoggle{bbx:gbfieldtype}{% + \printfield{type}% + \setunit*{\addspace}}{}% + \pubdatadelim% + \usebibmacro{date}% + %\newunit + }} + + +% +% 增加inbook:parent用于辅助crossref传统功能的实现 +% 用在{crosscite}宏中 +% 20210216,v1.0w,hzz +\newbibmacro*{inbook:parent}{% +\usebibmacro{bybookauthor}% +\ifnameundef{bookauthor}{% + \ifnameundef{editor}{}{\printdelim{authotitledelim}}% + }{\printdelim{authotitledelim}}% +{\iffieldundef{series}{}{\usebibmacro{series+number}\setunit{\addcolon\addspace}}}%为处理一些存在series的情况而增加 + \usebibmacro{maintitle+booktitle}% + \usebibmacro{inbook:volume+number}% + \newunit\newblock% + {\printfield{edition}}% + \newunit + \newunit\newblock + \usebibmacro{publisher+location+date}% +} + + +\DeclareBibliographyDriver{book}{%源来自standard.bbx文件 +\usebibmacro{bibindex}% +\usebibmacro{begentry}% +\usebibmacro{author/editor+others/translator+others}% +\ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 +\usebibmacro{maintitle+title}% +\iftoggle{bbx:gbstrict}{}{% +\newunit +\printlist{language}% +\newunit\newblock% +\usebibmacro{byauthor}% +\newunit\newblock}% +\usebibmacro{byeditor+others}% +\newunit% +{\printfield{edition}}% +\newunit\newblock%% +\iftoggle{bbx:gbstrict}{}{% +\iffieldundef{maintitle}% +{\printfield{volume}% +\printfield{part}}% +{}% +\newunit% +\printfield{volumes}% +\newunit\newblock% +\usebibmacro{series+number}}% +\newunit\newblock% +%\printfield{note}% +%\newunit\newblock% +\usebibmacro{publisher+location+date}% +%\newunit\newblock %这里标点去掉 +\usebibmacro{chapter+pages}% +% \iffieldundef{url}{}{%当没有网址时也不输出 +% \usebibmacro{modifydate}}%带括号的修改或更新日期, +\usebibmacro{doi+eprint+url}%从下面移动到上面来,因为gbt2015的url需直接放在页码后面。 + \newunit\newblock% + \printfield{pagetotal}% + \newunit\newblock% + \iftoggle{bbx:isbn} + {\printfield{isbn}} + {}% + \newunit\newblock + %\usebibmacro{doi+eprint+url}% + %\newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% + \usebibmacro{annotation}\usebibmacro{finentry}} + + +\DeclareBibliographyDriver{thesis}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author/editor+others/translator+others}% +\ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 + \usebibmacro{title}% + \iftoggle{bbx:gbstrict}{}{% + \newunit% + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}}% + \newunit\newblock + \usebibmacro{byeditor+others}%增加的译者信息 + \newunit\newblock + {\printfield{number}}% + \newunit\newblock + \printfield{version}% + \newunit + \printfield{note}% + \newunit\newblock + \usebibmacro{thesis:institution+location+date}% + %\newunit\newblock + \usebibmacro{chapter+pages}% + \iffieldundef{url}{}{%当没有网址时也不输出修改或更新日期 + \usebibmacro{modifydate}}%修改或更新日期为带括号的时间 + \usebibmacro{doi+eprint+url}% + \newunit + \printfield{pagetotal}% + \newunit\newblock + \iftoggle{bbx:isbn} + {\printfield{isrn}} + {}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% + \usebibmacro{annotation}\usebibmacro{finentry}} + + +\DeclareBibliographyDriver{manual}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author/editor+others/translator+others}% +\ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 + \usebibmacro{title}% + \iftoggle{bbx:gbstrict}{}{% + \newunit% + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}}% + \newunit\newblock + \usebibmacro{byeditor+others}%增加的译者信息 + \newunit\newblock + \iftoggle{bbx:gbfieldtype}{% + \printfield{type}% + \setunit*{\addspace}}{}% + {\printfield{number}}% + \newunit\newblock + \printfield{version}% + \newunit + \printfield{note}% + \newunit\newblock + \usebibmacro{institution+location+date}% + %\newunit\newblock + \usebibmacro{chapter+pages}% + \iffieldundef{url}{}{%当没有网址时也不输出修改或更新日期 + \usebibmacro{modifydate}}%修改或更新日期为带括号的时间 + \usebibmacro{doi+eprint+url}% + \newunit + \printfield{pagetotal}% + \newunit\newblock + \iftoggle{bbx:isbn} + {\printfield{isrn}} + {}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% + \usebibmacro{annotation}\usebibmacro{finentry}} + + +\DeclareBibliographyDriver{misc}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author/editor+others/translator+others}% +\ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点 + \usebibmacro{title}% +\iftoggle{bbx:gbstrict}{}{% + \newunit + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{byeditor+others}}% + \newunit\newblock + \printfield{howpublished}% + \newunit\newblock + \printfield{type}% + \newunit + \printfield{version}% + \newunit + \printfield{note}% + \newunit\newblock + \usebibmacro{institution+location+date}% + \newunit% + \printfield{number}% + %\usebibmacro{organization+location+date}% + %\newunit\newblock + \usebibmacro{doi+eprint+url}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% + \usebibmacro{annotation}\usebibmacro{finentry}} |