如题,希望修改:
『xx学位论文』与『xx大学』的顺序,MWE如下:
\documentclass{ctexart}
\begin{filecontents*}[overwrite]{references.bib}
@mastersthesis{1025254551.nh,
author = {周清源},
title = {两性离子基聚合物凝胶电解质及其宽温域水系钠离子混合电容器},
school = {华中科技大学},
year = {2024}
}
@phdthesis{1024398655.nh,
author = {陈伯超},
title = {盐模板法可控构筑纳米锑/三维多孔碳复合负极材料及其储钠/钾机制研究},
school = {天津大学},
year = {2022}
}
@phdthesis{1023843361.nh,
author = {杜祯},
title = {电场强化微滤膜污染控制及微量有机物去除的机理研究},
school = {天津大学},
year = {2021}
}
\end{filecontents*}
\usepackage{hyperref}
\usepackage[style=gb7714-2015,
gbnamefmt=lowercase,
gbmedium=false,
doi=false,
gbpunctin=false,
gbfieldtype=true,
gbalign=center]{biblatex}
\addbibresource{references.bib}
\begin{document}
good \cite{1024398655.nh,1023843361.nh,1025254551.nh} application prospects.
\printbibliography[heading=bibliography,title=参考文献]
\end{document}
要重新定义一下thesis的输出driver,比如:
\documentclass{ctexart}
\usepackage{geometry}
\usepackage[style=gb7714-2015,gbnamefmt=lowercase,
gbmedium=false,
doi=false,
gbpunctin=false,
gbfieldtype=true,
gbalign=center]{biblatex}
\makeatletter
\newbibmacro*{institution+location+type+date}{\bibpubfont%当没有institution时不处理。
{\printlist{location}%%加了一个编组避免\usebibmacro{date}把month和day信息去掉
\iflistundef{institution}
{\setunit*{\addcomma\space}}
{\setunit*{\publocpunct}}%
\printlist{institution}%
\newunit%
\iftoggle{bbx:gbfieldtype}{%
\printfield{type}%
\setunit*{\addspace}}{}%
\pubdatadelim%
\usebibmacro{date}%
}}
\DeclareBibliographyDriver{thesis}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor+others/translator+others}%
\ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%
\usebibmacro{title}%
\newunit\newblock
\usebibmacro{institution+location+type+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\iffieldundef{url}{}{%当没有网址时也不输出修改或更新日期
\usebibmacro{modifydate}}%修改或更新日期为带括号的时间
\usebibmacro{doi+eprint+url}%
\newunit
\printfield{pagetotal}%
\newunit\newblock
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{annotation}\usebibmacro{finentry}}
\makeatother
\begin{filecontents}[force]{\jobname.bib}
@phdthesis{张志祥rawtype,
author = {张志祥},
title = {间断动力系统的随机扰动及其在守恒律方程中的应用},
location = {北京},
institution = {北京大学},
year = {1998}
}
@mastersthesis{徐秀英rawtype,
author = {徐秀英},
title = {家庭教育对低年级小学生语文学习习惯的影响及对策研究},
location = {武汉},
institution = {华中师范大学},
year = {2013}
}
@mastersthesis{Aldemitarawtype,
author = {Rhodora Romero Aldemita},
title = {Genetic Engineering of rice: Agrobacterium tumefaciens-mediated transformation of rice and evaluation of a corn pollen-specific promoter using the gus A gene in transgenic rice},
location = {West Lafyatte},
publisher = {Purdue University},
year = {1998}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\cite{张志祥rawtype,徐秀英rawtype,Aldemitarawtype}
\printbibliography
\end{document}
结果为:
@u16328 谢谢胡老师的回复!
我想补充一下解决这一问题的过程,查找到
\DeclareBibliographyDriver{thesis}
,或者更进一步理清交换其他类型entry的其他fields的思路,方便后来人实现类似需求:1.在
texdoc biblatex-gb7714-2015
中提到:2.据此,可以反向在
biblatex
的基础目录文件中的standard.bbx
文件中找到(这很需要经验和对biblatex机制的了解,感恩胡老师):在此基础上进行修改
3.再次逆向检索关于
\newbibmacro*{institution+location+type+date}
的设置可否在何处找到参照和修改的依据呢,推测应该仿照标准定义中的\newbibmacro*{institution+location+date}
,不难在同一文件standard.bbx
中找到:以上,作为一点探索的记录。
但我好像没找到
biblatexgb7714-2015
是在何处“修改”/“继承”自某个定义了thesis
的.bbx
的,可否顺便请您拨冗告知😉再次谢谢您的及时回复🥳!