Стиль 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
для проверки того, следует ли использовать цитирование в длинной или короткой форме. Этот трекер можно полностью сбросить с помощью \citereset
. biblatex-apa
также определяет дополнительный специальный трекер, который можно сбросить с помощью \citeresetapa
(этот трекер используется только в очень особых обстоятельствах с полями shortauthor
/ shorteditor
, поэтому если забыть сбросить его, в большинстве случаев использования это не принесет почти никакого вреда).
Так что если вы выпускаете
\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}
Параметр пакета времени загрузки 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}
может подойти вам лучше.
При таком определении \longparencite
локально создается видимость того, что цитата ранее не встречалась, поэтому мы получаем длинную форму. \longparencite
не влияет на другие цитаты и, по крайней мере, при таком определении \longparencite
учитывается \ifciteseen
в таких ситуациях, как \longparencite{herrmann}\parencite{herrmann}
(конечно, это можно изменить).