
Yo uso biblatex
con indexing
opción; además, dentro del texto tengo algunos nombres para indexar, con el \index{}
comando habitual. Como tengo los mismos autores en la bibliografía y en el texto, en el Índice encuentro dos apariciones del mismo nombre, la primera proveniente del texto, la segunda de la bibliografía, por ejemplo:
Homero, 27, 45, 79
Homero, 107
Pero es incorrecto y confuso. ¿Cómo puedo unificar las apariciones de nombres?
Un ejemplo mínimo:
\documentclass{article}
\usepackage{fontspec}
\usepackage[style=philosophy-verbose,scauthors=true,classical=true,%
volumeformat=romansc,indexing]{biblatex}
\usepackage{filecontents}
\usepackage{imakeidx}
\indexsetup{othercode=\footnotesize}
\makeindex[intoc=true]
\begin{filecontents*}{\jobname.bib}
@book{strawson:1966,
author = {Peter Strawson},
title = {The Bounds of Sense},
publisher = {Routledge},
location = {London},
year = {1966},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\begin{document}
De nobis ipsis silemus\footcite{strawson:1966}: De re autem, quae agitur,
petimus, as Strawson\index{Strawson, Peter} told
\newpage
De nobis ipsis silemus: De re autem, quae agitur,
petimus, as Strawson\index{Strawson, Peter} told
\newpage
De nobis ipsis silemus\footcite{strawson:1966}: De re autem, quae agitur,
petimus, as Strawson told
\newpage
De nobis ipsis silemus
De nobis ipsis silemus: De re autem, quae agitur,
petimus, as Strawson\index{Strawson, Peter} told
\newpage
De nobis ipsis silemus\footcite{strawson:1966}: De re autem, quae agitur,
petimus, as Strawson told
\printbibliography
\printindex
\end{document}
donde notarás la doble aparición de Strawson. en example.idx
yo leo
\indexentry{Strawson, Peter}{1}
\indexentry{Strawson, Peter@Strawson, Peter}{1}
\indexentry{Strawson, Peter}{2}
\indexentry{Strawson, Peter@Strawson, Peter}{3}
\indexentry{Strawson, Peter}{4}
\indexentry{Strawson, Peter@Strawson, Peter}{5}
\indexentry{Strawson, Peter@Strawson, Peter}{5}
Respuesta1
Por razones que realmente no entiendo, la indexación realizada por biblatex
emite un comando del formulario
\index{Strawson, Peter@Strawson, Peter}
como puedes ver examinando el .idx
archivo
\indexentry{Strawson, Peter}{1}
\indexentry{Strawson, Peter@Strawson, Peter}{1}
\indexentry{Strawson, Peter}{2}
\indexentry{Strawson, Peter@Strawson, Peter}{3}
\indexentry{Strawson, Peter}{4}
\indexentry{Strawson, Peter@Strawson, Peter}{5}
\indexentry{Strawson, Peter@Strawson, Peter}{5}
Puede solucionar este comportamiento definiendo
\newcommand{\nindex}[1]{\index{#1@#1}}
y uso \nindex{Strawson, Peter}
en el texto. Después del cambio, aquí está el .idx
archivo que obtengo:
\indexentry{Strawson, Peter@Strawson, Peter}{1}
\indexentry{Strawson, Peter@Strawson, Peter}{1}
\indexentry{Strawson, Peter@Strawson, Peter}{2}
\indexentry{Strawson, Peter@Strawson, Peter}{3}
\indexentry{Strawson, Peter@Strawson, Peter}{4}
\indexentry{Strawson, Peter@Strawson, Peter}{5}
\indexentry{Strawson, Peter@Strawson, Peter}{5}
y aquí está el índice, con una sola entrada:
Quizás también haya una solución alternativa biblatex
, pero no lo sé.
Respuesta2
El resultado que estás viendo ha sido diagnosticado correctamente por egreg. Pero puede haber una solución más sencilla. En realidad, no se debe a \indexname
, como especulé erróneamente, sino al tratamiento de los prefijos "van" "von" "de la", etc.
Si biblatex
está "usando prefijos" (lo que significa que siempre imprimirá Ludwig van Beethoven como Van Beethoven, Ludwig, con mayúscula), entonces coloca una entrada de "impresión" y una de "clasificación" en el índice, separadas por @. Lo hace para poder tenermakeindex
clasificarusando "van Beethoven, Ludwig", peroimprimir"Van Beethoven, Luis". Este último requiere la adición de un comando LaTeX ( \MakeCapital {van}
) en el archivo, lo que causaría dificultades de clasificación si se incluyera abiertamente en la entrada del índice.
Solución simple
Puedes evitar esto configurando la opción useprefixes=false
al cargar biblatex
. Eso puede resolver su problema, a menos que necesite "useprefixes", es decir, tenga entradas como "van Beethoven" que desee imprimir "Van Beethoven" y ordenarlas según V. En la mayoría de los casos, en las convenciones de clasificación en inglés, al menos esta será una buena solución. , y probablemente lo que quieras.
Solución no tan simple
Alternativamente, si desea mantener la opción "useprefixes", el siguiente código intenta asegurarse de que el nombre adicional ( van Beethoven, Ludwig@\MakeCapital{van} Beethoven Ludwig
)solose usa cuando el nombre realmentetieneun prefijo y, por lo tanto, resuelve el problema en su caso (pero entonces necesitaría usar el enfoque de egreg si se trata de un nombre que sí tuviera un prefijo, es decir, tendría que asegurarse de que las entradas de índice para nombres con un prefijo tomaran la forma dado anteriormente).
\makeatletter
\renewcommand*{\mkbibindexname}[4]{%
\ifuseprefix
{\ifblank{#3}% no PREFIX
{\@firstofone #1% remove spurious braces
\ifblank{#4}{}{ #4}%
\ifblank{#2#3}{}{,}%
\ifblank{#2}{}{ #2}}%
{#3 % PREFIX
\@firstofone #1%removespuriousbraces
\ifblank{#4}{}{ #4}%
\ifblank{#2}{}{, #2}%
\actualoperator
\ifblank{#3}{}{\MakeCapital{#3} %
#1%
\ifblank{#4}{}{ #4}%
\ifblank{#2}{}{, #2}}}}
{\@firstofone #1% NOT "using prefix" remove spurious braces
\ifblank{#4}{}{ #4}%
\ifblank{#2#3}{}{,}%
\ifblank{#2}{}{ #2}%
\ifblank{#3}{}{ #3}}}
\makeatother
Respuesta3
Utilizo otra solución: definir comandos de citas falsas que no imprimen nada, pero agregan el autor de la referencia "citada" al índice.
El problema, como ya se señaló, es que biblatex puede transformar los nombres de los autores de varias maneras antes de agregarlos al índice; el problema @ mencionado en la pregunta es solo uno de ellos. Por ejemplo, tuve un problema molesto con los caracteres especiales, como los acentos: para indexar el nombre “Châtelet, Émilie du”, biblatex en realidad llamaba \indexentry
a Ch\IeC {\^a}telet, \IeC {\'E}milie du
y, por lo tanto, una llamada manual \index{Châtelet, Émilie du}
crearía una entrada duplicada. Entonces, cada vez que quería agregar una entrada al índice manualmente, tenía que verificar el .idx
archivo para ver qué había hecho biblatex y luego copiarlo, como sugirieron Barbara Beeton y Paul Stanley. Funcionó, pero además de ser bastante ilegible, sentí que no era muy sólido para mi (grande) documento, ya que cualquier cambio en las partes internas de biblatex o en mis opciones (con respecto a los prefijos, por ejemplo) podría romper todas mis entradas manuales.
Ahora, si defino:
\newbibmacro*{idxauthor}{%
\ifciteindex
{\indexnames{author}}
{}}
\DeclareCiteCommand{\idxauthor}
{}%
{\usebibmacro{idxauthor}}
{}
{}
\newbibmacro*{idxeditor}{%
\ifciteindex
{\indexnames{editor}}
{}}
\DeclareCiteCommand{\idxeditor}
{}%
{\usebibmacro{idxeditor}}
{}
{}
\newbibmacro*{idxtransl}{%
\ifciteindex
{\indexnames{translator}}
{}}
\DeclareCiteCommand{\idxtransl}
{}%
{\usebibmacro{idxtransl}}
{}
{}
luego puedo llamar \idxauthor{strawson:1966}
para agregar una entrada de índice manual para Strawson, que se basa en componentes internos de biblatex para emitir exactamente el mismo comando de indexación que \cite{strawson:1966}
pero no hace nada más (y en particular no imprime Strawson (1966) o lo que sea).