El estilo APA requiere que la primera cita de 3 a 6 (?) autores utilice la lista completa de autores, mientras que las citas posteriores utilicen una lista abreviada de autores. Esto se implementa mediante 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}
En algunos casos sería interesante obtener la lista completa de autores incluso en una cita posterior. ¿Es eso posible? La solución ideal sería un cambio que haría que todas las citas posteriores se trataran como primeras, de modo que sólo se abrevie la segunda cita después del "cambio".
Esta pregunta está motivada por unapregunta sobre SOdonde un usuario intenta hacer algo como esto en el contexto de csl
y pandoc-citeproc
. Tengo la esperanza de que un biblatex
flujo de trabajo basado sea más flexible.
Respuesta1
biblatex-apa
utiliza la prueba \ifciteseen
para comprobar si una cita debe utilizar la forma larga o corta. Este rastreador se puede restablecer completamente con \citereset
. biblatex-apa
también define un rastreador especial adicional que se puede restablecer \citeresetapa
(este rastreador solo se usa en circunstancias muy especiales con los campos shortauthor
/ shorteditor
, por lo que olvidarse de restablecerlo casi no causará daño en la mayoría de los casos de uso).
Así que si emites
\citereset\citeresetapa
en cualquier parte de su documento, todas las primeras citas después de esa línea utilizarán el formato largo y las citas posteriores volverán a ser cortas. Esto afecta a todas las entradas por igual.
\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}
La opción del paquete de tiempo de carga citereset=<section level>
le permite ejecutar automáticamente \citereset
todos los encabezados de <section level>
. Entonces citereset=section
llamaría \citereset
a cada uno \section
. No existe una opción análoga para \citeresetapa
.
Si solo desea afectar una cita en particular, algo como
\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}
podría funcionar mejor para ti.
Con esta definición \longparencite
localmente se pretende que la cita no se haya visto antes, por lo que obtenemos la forma larga. \longparencite
no afecta otras citas y al menos con esta definición \longparencite
cuenta \ifciteseen
en situaciones como \longparencite{herrmann}\parencite{herrmann}
(eso podría cambiarse, por supuesto).