我使用以下自定义样式来创建符合我们机构要求的参考书目: 使用 biblatex 和 biber 创建具有固定缩进和作者年份标签的参考书目
它成功创建了带有标签和预期条目的书目。但是,标签如下所示:
作者年份
这对于文内引用和参考书目中的标签都是正确的。我需要的是
作者年份 [职位
\parencite
]作者(年份)[在书目中]
其余书目条目
答案1
按照
biblatex-ext
更新中的建议使用 biblatex 和 biber 创建具有固定缩进和作者年份标签的参考书目现在这容易多了。您只需重新定义 的内部引用分隔符即可bbx@introcite
。\documentclass{article} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage[british]{babel} \usepackage{csquotes} \usepackage[style=ext-authoryear, backend=biber, introcite=label, dashed=false]{biblatex} \addbibresource{biblatex-examples.bib} \setlength{\bibitemsep}{0.5\baselineskip plus 0.5\baselineskip} \setlength{\introcitewidth}{6em} \DeclareInnerCiteDelims{bbx@introcite}{\bibopenparen}{\bibcloseparen} \begin{document} \cite{sigfridsson,worman,geer,knuth:ct:a} \printbibliography \end{document}
您只需要\usebibmacro{textcite}
而不是\usebibmacro{cite}
以及 进行一些微小的修改textcite
。
唯一与另一个答案不同的部分是使用 biblatex 和 biber 创建具有固定缩进和作者年份标签的参考书目是
\newbibmacro{labelwidthbib}{%
\begingroup
\DeclareFieldFormat{bibhyperref}{##1}%
\csuse{blx@hook@cite}%
\csuse{blx@hook@citekey}%
\citetrackerfalse\pagetrackerfalse\backtrackerfalse
\global\undef\cbx@lasthash
\global\undef\cbx@lastyear
\defcounter{maxnames}{\blx@maxcitenames}%
\boolfalse{cbx:parens}%
\usebibmacro{textcite}%
\ifbool{cbx:parens}
{\bibcloseparen\global\boolfalse{cbx:parens}}
{}%
\endgroup
}
总共
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[british]{babel}
\usepackage{csquotes}
\usepackage[style=authoryear,backend=biber,dashed=false]{biblatex}
\addbibresource{biblatex-examples.bib}
\makeatletter
\setlength{\bibitemsep}{0.5\baselineskip plus 0.5\baselineskip}
\newsavebox\ay@labelbox
\newlength{\labwidthsameline}
\setlength{\labwidthsameline}{6em}
\newbibmacro{labelwidthbib}{%
\begingroup
\DeclareFieldFormat{bibhyperref}{##1}%
\csuse{blx@hook@cite}%
\csuse{blx@hook@citekey}%
\citetrackerfalse\pagetrackerfalse\backtrackerfalse
\global\undef\cbx@lasthash
\global\undef\cbx@lastyear
\defcounter{maxnames}{\blx@maxcitenames}%
\boolfalse{cbx:parens}%
\usebibmacro{textcite}%
\ifbool{cbx:parens}
{\bibcloseparen\global\boolfalse{cbx:parens}}
{}%
\endgroup
}
%-----------------------
\newbibmacro{kicklabel}{%
\sbox\ay@labelbox{\usebibmacro{labelwidthbib}}%
\global\togglefalse{blx@insert}%
\ifdim\wd\ay@labelbox>\labwidthsameline
\leavevmode\newline
\fi
}
\defbibenvironment{bibliography}%
{\list
{\usebibmacro{labelwidthbib}}%
{\setlength{\labelwidth}{\labwidthsameline}%
\setlength{\leftmargin}{\labelwidth}%
\setlength{\labelsep}{\biblabelsep}%
\addtolength{\leftmargin}{\labelsep}%
\setlength{\itemsep}{\bibitemsep}%
\setlength{\parsep}{\bibparsep}%
\renewcommand*{\makelabel}[1]{##1\hss}}}%
{\endlist}%
{\item\usebibmacro{kicklabel}}
\makeatother
\begin{document}
\cite{sigfridsson,worman,geer,knuth:ct:a,knuth:ct:b,knuth:ct:c}
\printbibliography
\end{document}