Abreviatura personalizada para cita en bibtex

Abreviatura personalizada para cita en bibtex

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 natbiben 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.textengo:

\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.bibtengo:

@article{jd14,
  author={Doe, J. and Smith, J. and Bar, F.},
  title={Some title},
  journal={Some journal},
  year={2014},
}

y la salida es:

ingrese la descripción de la imagen aquí

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

biblatextiene la macro estándar incorporada shorthandintroque puede hacer esto. Luego, en el .bibarchivo, se agregará el shorthandcampo 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 authoryeary authortitleno.

Bien veremos cómo se puede modificar authoryearpara que utilice la introducción abreviada. La citemacro predeterminada para authoryearse 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 \ifciteseenprueba, tendremos que habilitar citetracker(por ejemplo vía citetracker=true).

Otros estilos de citas usan citemacros 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}

ingrese la descripción de la imagen aquí

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 natbibla función de alias de cita, le encantará saber que biblatexel natbibmodo de compatibilidad (simplemente pase natbib=truea las opciones de tiempo de carga) también ofrece estas funciones con (hasta donde yo sé) exactamente las mismas. misma sintaxis.

información relacionada