Biblatex 自定义样式:参考书目中的括号中显示年份,但文本中不显示年份

Biblatex 自定义样式:参考书目中的括号中显示年份,但文本中不显示年份

我使用以下自定义样式来创建符合我们机构要求的参考书目: 使用 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}

示例输出

相关内容