使用 biblatex-apa 首次引用后获取完整作者列表

使用 biblatex-apa 首次引用后获取完整作者列表

APA 格式要求,第一次引用 3 到 6 位作者时使用完整作者列表,而后续引用则使用缩写作者列表。具体实现方式如下biblatex-apa

\documentclass{article}

\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=apa]{biblatex}

\addbibresource{biblatex-examples.bib}

\begin{document}

% full author list
\parencite{herrmann}

% abbreviated author list
\parencite{herrmann}

% I would like a full author list here
\parencite{herrmann}

% this should be abbreviated again
\parencite{herrmann}

\printbibliography
\end{document}

在此处输入图片描述

在某些情况下,即使在后续引用中获取完整的作者列表也很有趣。这可能吗?理想的解决方案是进行切换,使所有后续引用都被视为第一个引用,这样只有“切换”后的第二个引用才会被缩写。

这个问题的动机是关于 SO 的问题用户尝试在csl和的上下文中执行类似操作pandoc-citeproc。我希望biblatex基于的工作流程更加灵活。

答案1

biblatex-apa使用测试\ifciteseen来检查引用是否应使用长格式或短格式。可以使用 完全重置此跟踪器\citeresetbiblatex-apa还定义了一个可以使用 重置的附加特殊跟踪器(此跟踪器仅在非常特殊的情况下与/字段\citeresetapa一起使用,因此在大多数情况下忘记重置它几乎不会造成任何损害)。shortauthorshorteditor

因此如果你发布

\citereset\citeresetapa

文档中该行之后的所有第一次引用都将使用长格式,后续引用将再次使用短格式。这将对所有条目产生同样影响。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=apa]{biblatex}

\addbibresource{biblatex-examples.bib}

\begin{document}

% full author list
\parencite{herrmann}

\parencite{yoon}

% abbreviated author list
\parencite{herrmann}

\parencite{yoon}

% I would like a full author list here
\citereset\citeresetapa
\parencite{herrmann}

\parencite{yoon}

% this should be abbreviated again
\parencite{herrmann}

\parencite{yoon}

\printbibliography
\end{document}

(Herrmann、Öfele、Schneider、Herdtweck 与 Hoffmann,2006 年)//(Yoon、Ryu、Kim 与 A​​hn,2006 年)//(Herrmann 等人,2006 年)//(Yoon 等人,2006 年)//(Herrmann、Öfele、Schneider、Herdtweck 与 Hoffmann,2006 年)//(Yoon、Ryu、Kim 与 A​​hn,2006 年)//(Herrmann 等人,2006 年)//(Yoon 等人,2006 年)

加载时包选项citereset=<section level>可让您自动\citereset在 的所有标题处执行<section level>。因此会在每个 处citereset=section调用。没有类似的选项。\citereset\section\citeresetapa


如果你只想影响特定的引用,那么

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=apa]{biblatex}

\addbibresource{biblatex-examples.bib}

\makeatletter
\newcommand*{\longparencite}{%
  \AtNextCite{\AtEachCitekey{%
    \let\blx@imc@ifciteseen\@secondoftwo
    \let\ifciteseen\blx@imc@ifciteseen}}%
  \parencite}
\makeatother

\begin{document}

% full author list
\parencite{herrmann}

\parencite{yoon}

% abbreviated author list
\parencite{herrmann}

\parencite{yoon}

% I would like a full author list here
\longparencite{herrmann}

\parencite{yoon}

% this should be abbreviated again
\parencite{herrmann}

\parencite{yoon}

\printbibliography
\end{document}

可能对你更有效。

(Herrmann、Öfele、Schneider、Herdtweck 与 Hoffmann,2006 年)//(Yoon、Ryu、Kim 与 A​​hn,2006 年)//(Herrmann 等人,2006 年)//(Yoon 等人,2006 年)//(Herrmann、Öfele、Schneider、Herdtweck 与 Hoffmann,2006 年)//(Yoon 等人,2006 年)//(Herrmann 等人,2006 年)//(Yoon 等人,2006 年)

使用此定义\longparencite在本地假装以前没有见过该引用,因此我们得到了长形式。\longparencite不会影响其他引用,并且至少有了这个定义,在某些情况下\longparencite确实会计入(当然可以更改)。\ifciteseen\longparencite{herrmann}\parencite{herrmann}

相关内容