martes, 3 de noviembre de 2015

Cómo añadir la página donde se cita cada referencia

En esta entrada explicaré cómo se puede hacer para que, en la bibliografía, junto a cada referencia, se diga el número de página donde ha sido citada en el documento. En primer lugar, depende de si usas o no, el paquete {hyperref}. Porque se hace distinto. Empecemos primero sin usarlo.

  • Si no usas el paquete {hyperref}
En este caso, podemos usar el paquete {backref} (con la opción ([pageref]), y ya nos aparecería el número de página.

\usepackage[pageref]{backref}


Y como ves, al final de cada cita, añade "pages" y los número de página donde aparece dicha referencia. Si estamos escribiendo en español, podemos añadir la opción [spanish], para que en vez de "pages", diga "páginas".

\usepackage[pageref,spanish]{backref}


En vez de "pages" (o "páginas"), podemos poner una pequeña frase. Por ejemplo, "Citado en páginas". Para eso, bastaría con editar la variable "\backrefpagesname", que es donde definido "pages".

\usepackage[pageref]{backref}

\renewcommand{\backrefpagesname}{Citado en páginas}


Está bien... pero no me llega a gustar del todo. Lo que realmente me gustaría es que, si una referencia es citada en una única página, que diga "página", y que si es citada en varias veces, que diga "páginas". Esto se puede hacer con el siguiente código, donde además, he añadido unos paréntesis para que cierren :

\usepackage[pageref,spanish]{backref}

\renewcommand*{\backref}[1]{}
\renewcommand*{\backrefalt}[4]{
    \ifcase #1 (No citado.)
          \or (Citado en página~#2.)
          \else (Citado en páginas #2.)
    \fi%
}

Y este sí que es un resultado que ya me gusta.

Unos últimos comentarios sobre este código: 1) Si escribes en español, sigue siendo importante la opción [spanish], para que añada "y" en vez de "and". 2) La frase "(No citado.)" se utiliza cuando una referencia no aparece en el documento. Cosa que nos pasaría si la hubiéramos añadido con \nocite{}. 3) El símbolo ~ se utiliza para que no separe en dos líneas distintas dos palabras. En este caso "página" y el número.



  • Si usas el paquete {hyperref}
Con este paquete, se crean links dentro del pdf final. Desde el índice de contenidos a las diferentes secciones. Y también desde cada referencia a la lista bibliográfica. Tienes más información sobre este paquete en esta otra entrada (click aquí).

Por lo que en este caso, resulta muy recomendable añadir otro link en cada referencia, para que nos lleve a la página donde fue mencionada. De hecho, este paquete ya incorpoera esta posibilidad, que se activa con la opción [backref=page]

\usepackage[backref=page]{hyperref}


El paquete {hyperref} no añade ninguna palabra extra. Por lo que no hay que preocuparse del idioma que estemos usando. Pero si queremos, también podemos añadir una pequeña frase, de manera parecida al caso anterior.

\usepackage[backref=page]{hyperref}

\renewcommand*{\backref}[1]{}
\renewcommand*{\backrefalt}[4]{
    \ifcase #1 (No citado.)
          \or (Citado en página~#2.)
          \else (Citado en páginas #2.)
    \fi%
}
\renewcommand*{\backrefsep}{, }
\renewcommand*{\backreftwosep}{ y~}
\renewcommand*{\backreflastsep}{ y~}


Las tres últimas líneas definen la separación, cuando hay varias páginas. Si estamos escribiendo en español, son importantes para que ponga "y" en vez de "and".

3 comentarios:

Gerardo dijo...

hola, quiero añadir esta opción a mis referencias pero sale "no citado" en todas y no estoy usando \nocite{}, uso \citet{} y \citep{}. ¿que puedo hacer?

Luis G.

dracul dijo...

Hola Luis! Yo no tengo problemas usando la opción de \usepackage[pagebackref]{hyperref} junto con cite a secas. Saludos.

Ayvlis dijo...

Hola, yo quiero citar páginas que están numeradas con números romanos. Me pueden ayudar?
Saludos