Al escribir, me gusta introducir una abreviatura para toda la cita. En el primer caso, escribiría "Esto es cierto como se muestra en (nbren12, et. al. 2012) (en adelante NB12)". En los usos posteriores, simplemente diría "Este hecho es cierto (NB12)". ¿Cómo puedo implementar esto automáticamente usando bibtex (o biblatex)?
Esto es similar pero no idéntico aesta pregunta.
Respuesta1
Se describe claramente en elmanualde natbib
en la página 3.
Usar comando:
\defcitealias{nbren12}{NB12}
Después de eso, además de las clásicas citas \citet{}
o \citep{}
, también puedes utilizar:
\citetalias{nbren12}
% or
\citepalias{nbren12}
Ejemplo
En example.tex
tengo:
\documentclass{article}
\usepackage{natbib}
\bibliographystyle{apalike}
\begin{document}
\defcitealias{jd14}{JD14}
In text \citet{jd14}. Or in brackets \citep[][hereafter JD14]{jd14}.
Now I cite it in text as \citetalias{jd14} and in brackets \citepalias{jd14}.
\bibliography{mybib}
\end{document}
y en mybib.bib
tengo:
@article{jd14,
author={Doe, J. and Smith, J. and Bar, F.},
title={Some title},
journal={Some journal},
year={2014},
}
y la salida es:
Y si desea que el alias aparezca, por ejemplo, en cursiva, pero no en números de página, etc., puede escribir, por ejemplo \defcitealias{jd14}{{\itshape JD14}}
.
Respuesta2
biblatex
tiene la macro estándar incorporada shorthandintro
que puede hacer esto. Luego, en el .bib
archivo, se agregará el shorthand
campo y se le dará el nombre corto de la cita, así
@article{jd14,
author = {Doe, J. and Smith, J. and Bar, F.},
title = {Some title},
journal = {Some journal},
year = {2014},
shorthand = {JD14},
}
Lo único que queda por hacer es asegurarse de que esta macro sólo se llame cuando sea apropiado. Si bien hay algunos estilos que ya usan shorthandintro
, los estilos lisos authoryear
y authortitle
no.
Bien veremos cómo se puede modificar authoryear
para que utilice la introducción abreviada. La cite
macro predeterminada para authoryear
se puede encontrar en authoryear.cbx
.
La parte principal de la cita que se utiliza si no hay ninguna taquigrafía se puede subcontratar a una nueva macro.longcite
\newbibmacro*{longcite}{%
\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
\setunit{\addspace}}
{\printnames{labelname}%
\setunit{\nameyeardelim}}%
\usebibmacro{cite:labelyear+extrayear}}
Luego, la macro de cita real se cambia para imprimir una cita larga y una introducción abreviada en la primera cita (obviamente, la introducción solo se imprime si hay una cita abreviada) y la cita abreviada o larga (normal) en las citas posteriores.
\renewbibmacro*{cite}{%
\ifciteseen
{\iffieldundef{shorthand}
{\usebibmacro{longcite}}
{\usebibmacro{cite:shorthand}}}
{\usebibmacro{longcite}
\usebibmacro{shorthandintro}}}
Para poder utilizar la \ifciteseen
prueba, tendremos que habilitar citetracker
(por ejemplo vía citetracker=true
).
Otros estilos de citas usan cite
macros diferentes y las modificaciones tendrán que ser diferentes en ese caso; además, esta modificación no funciona actualmente con \textcite
.
MWE
\documentclass[british,a4paper]{article}
\usepackage{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{csquotes}
\usepackage{filecontents}
\usepackage[backend=biber,style=authoryear,citetracker=true]{biblatex}
\begin{filecontents*}{\jobname.bib}
@article{jd14,
author = {Doe, J. and Smith, J. and Bar, F.},
title = {Some Title},
journal = {Some Journal},
year = {2014},
shorthand = {JD14},
}
@article{jd13,
author = {Doe, J. and Smith, J. and Bar, F.},
title = {No shorthand here},
journal = {Some Other Journal},
year = {2013},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\newbibmacro*{longcite}{%
\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
\setunit{\addspace}}
{\printnames{labelname}%
\setunit{\nameyeardelim}}%
\usebibmacro{cite:labelyear+extrayear}}
\renewbibmacro*{cite}{%
\ifciteseen
{\iffieldundef{shorthand}
{\usebibmacro{longcite}}
{\usebibmacro{cite:shorthand}}}
{\usebibmacro{longcite}
\usebibmacro{shorthandintro}}}
\begin{document}
\cite{jd14} again \cite{jd14} and one more time \cite{jd14}.
Just for comparison \cite{jd13}.
\printbibliography
\end{document}
Si prefiere "en adelante <key>
" a "en adelante citado como <key>
", simplemente agregue
\DefineBibliographyStrings{english}{citedas = {hereafter}}
al preámbulo.
Si le gusta la solución de Václav Pavlík con natbib
la función de alias de cita, le encantará saber que biblatex
el natbib
modo de compatibilidad (simplemente pase natbib=true
a las opciones de tiempo de carga) también ofrece estas funciones con (hasta donde yo sé) exactamente las mismas. misma sintaxis.