Ocorrências duplas de nomes no índice com biblatex

Ocorrências duplas de nomes no índice com biblatex

Eu uso biblatexcom indexingopção; além disso, dentro do texto tenho alguns nomes para indexar, com o \index{}comando usual. Como tenho os mesmos autores na bibliografia e no texto, no Índice encontro duas ocorrências de mesmo nome, a primeira vinda do texto, a segunda da bibliografia, por exemplo:

Homero, 27, 45, 79
Homero, 107

Mas é errado e confuso. Como posso unificar as ocorrências de nomes?

Um exemplo 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}

onde você notará a dupla ocorrência de Strawson. Em example.idxeu li

\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}

Responder1

Por motivos que realmente não entendo, a indexação feita por biblatexemite um comando do formulário

\index{Strawson, Peter@Strawson, Peter}

como você pode ver examinando o .idxarquivo

\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}

Você pode contornar esse comportamento definindo

\newcommand{\nindex}[1]{\index{#1@#1}}

e usando \nindex{Strawson, Peter}no texto. Após a alteração, aqui está o .idxarquivo que recebo:

\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}

e aqui está o índice, com uma única entrada:

insira a descrição da imagem aqui

Talvez haja uma solução alternativa também biblatex, mas não sei.

Responder2

O resultado que você está vendo foi diagnosticado corretamente por egreg. Mas pode haver uma solução alternativa mais simples. Na verdade, não se trata de \indexname, como especulei erroneamente, mas do tratamento dos prefixos "van" "von" "de la" etc.

Se biblatexestiver "usando prefixos" (o que significa que sempre imprimirá Ludwig van Beethoven como Van Beethoven, Ludwig, com maiúscula), então ele coloca uma entrada de "impressão" e uma de "classificação" no índice, separadas por @. Ele faz isso para que possa termakeindex organizarusando "van Beethoven, Ludwig", masimprimir"Van Beethoven, Ludwig". Este último requer a adição de um comando LaTeX ( \MakeCapital {van}) no arquivo, o que causaria dificuldades de classificação se fosse incluído abertamente na entrada do índice.

Solução Simples Você pode evitar isso definindo a opção useprefixes=falseao carregar arquivos biblatex. Isso pode resolver o seu problema, a menos que você precise de "useprefixes", ou seja, você tem entradas como "van Beethoven" que deseja imprimir "Van Beethoven" e classificadas em V. Na maioria dos casos nas convenções de classificação em inglês, pelo menos esta será uma boa solução e provavelmente o que você deseja.

Solução não tão simples Alternativamente, se você quiser manter a opção "useprefixes", o código a seguir tenta garantir que a nomenclatura adicional ( van Beethoven, Ludwig@\MakeCapital{van} Beethoven Ludwig)apenasé usado quando o nome na verdadetemum prefixo e, portanto, resolve o problema no seu caso (mas você precisaria usar a abordagem do egreg se estivesse lidando com um nome que tivesse um prefixo, ou seja, você teria que garantir que suas entradas de índice para nomes com um prefixo assumissem o formato 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

Responder3

Eu uso outra solução: definir comandos de citação falsos que não imprimem nada, mas adicionam o autor da referência “citada” ao índice.

O problema, como já foi apontado, é que o biblatex é capaz de transformar os nomes dos autores de várias maneiras antes de adicioná-los ao índice; o problema @ mencionado na pergunta é apenas um deles. Por exemplo, tive um problema chato com caracteres especiais, como acentos: para indexar o nome “Châtelet, Émilie du”, o biblatex na verdade chamaria \indexentry, Ch\IeC {\^a}telet, \IeC {\'E}milie due uma chamada manual para \index{Châtelet, Émilie du}criaria, portanto, uma entrada duplicada. Então, sempre que eu queria adicionar uma entrada ao índice manualmente, eu tinha que verificar o .idxarquivo para ver o que o biblatex havia feito e depois copiá-lo, como sugeriram Barbara Beeton e Paul Stanley. Funcionou, mas além de ser bastante ilegível, achei que não era muito robusto para o meu (grande) documento, pois qualquer alteração nos componentes internos do biblatex ou nas minhas opções (em relação aos prefixos, por exemplo) poderia quebrar todas as minhas entradas manuais.

Agora, se eu definir:

\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}}
  {}
  {}

então posso ligar \idxauthor{strawson:1966}para adicionar uma entrada de índice manual para Strawson, que depende dos componentes internos do biblatex para emitir exatamente o mesmo comando de indexação que a, \cite{strawson:1966}mas não faz mais nada (e em particular não imprime Strawson (1966) ou qualquer outra coisa).

informação relacionada