使用 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 和 Ahn,2006)//(Herrmann 等人,2006)//(Yoon 等人,2006)//(Herrmann、Öfele 、Schneider、Herdtweck 和Hoffmann,2006)//(Yoon、Ryu、Kim 和Ahn,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 和 Ahn,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}

相關內容