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}

ここに画像の説明を入力してください

場合によっては、後続の引用でも著者の完全なリストを取得できると便利です。それは可能ですか? 理想的な解決策は、後続のすべての引用を最初の引用として扱うスイッチです。これにより、「スイッチ」の後の 2 番目の引用のみが省略されます。

この質問の動機は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}

関連情報