Índice duplo se a formatação for usada

Índice duplo se a formatação for usada

Tenho um documento com um índice onde alguns verbetes (os principais) estão marcados em negrito.

Estou usando makeindex.

Minha entrada, 2, 4-5,10, 15

Agora, se eu tiver a mesma entrada duas vezes na página onde oprincipalum está presente, o índice é impresso duas vezes.

Por exemplo, se My Entryestiver na mesma página duas vezes, uma vez normal e uma vez formatada em negrito:

Bla bla\index{My Entry} bla bla \index{My Entry|textbf}

o resultado é

Minha entrada, 10,10

A página é impressa duas vezes.

Isso não ocorre se a formatação não estiver presente

Minha entrada, 10

Alguma dica?

Editar

Exemplo mínimo:

\documentclass[a4paper]{book}
\usepackage[]{imakeidx}
\makeindex[name=Persone,title=Persone]
\begin{document}
Bla bla\index[Persone]{My Entry} bla bla
Bla bla\index[Persone]{My Entry|textbf} bla bla
\printindex[Persone]
\end{document}

Produz

Minha entrada, 1,1

Enquanto

\documentclass[a4paper]{book}
\usepackage[]{imakeidx}
\makeindex[name=Persone,title=Persone]
\begin{document}
Bla bla\index[Persone]{My Entry} bla bla
Bla bla\index[Persone]{My Entry} bla bla
\printindex[Persone]
\end{document}

Produz

Minha entrada, 1

sem o duplo 1, pois ambos estão na mesma página

Responder1

Isso não é possível com o back-end MakeIndex padrão usado pelo imakeidx. O makeindexprograma realmente fazdetectarquando isso acontece, mas parece não fazer nada a respeito. Se você olhar a transcrição da compilação pdflatexem seu texarquivo de exemplo, verá

(/usr/share/texmf-dist/tex/latex/tools/multicol.sty))
Writing index file Persone.idx
(./testindex.aux) [1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}]
[2]This is makeindex, version 2.15 [TeX Live 2019] (kpathsea + Thai support).
Scanning input file Persone.idx....done (2 entries accepted, 0 rejected).
Sorting entries....done (2 comparisons).
Generating output file Persone.ind....done (5 lines written, 1 warning).
Output written in Persone.ind.
Transcript written in Persone.ilg.
 (./Persone.ind) [3] (./testindex.aux) )</usr/share/texmf-dist/fonts/type1/p
ublic/amsfonts/cm/cmbx10.pfb></usr/share/texmf-dist/fonts/type1/public/amsfonts
/cm/cmbx12.pfb></usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb>

Output written on testindex.pdf (3 pages, 28492 bytes).

Informando ao seu que existe um aviso ao fazer o index. E se você abrir a transcrição para makeindexver

[Tue Dec 03 03:35 PM] ArchDesktop ~/tmp/toDelete $ cat Persone.ilg 
This is makeindex, version 2.15 [TeX Live 2019] (kpathsea + Thai support).
Scanning input file Persone.idx....done (2 entries accepted, 0 rejected).
Sorting entries....done (2 comparisons).
Generating output file Persone.ind....
## Warning (input = Persone.idx, line = 2; output = Persone.ind, line = 3):
   -- Conflicting entries: multiple encaps for the same page under same key.
done (5 lines written, 1 warning).
Output written in Persone.ind.
Transcript written in Persone.ilg.

e informa exatamente que foi solicitado a imprimir duas entradas de índice na mesma página com a mesma chave, mas com duas formatações diferentes. A expectativa implícita é quevocêcomo o autor deve lidar com isso.

(Aliás, esta mesma pergunta foi feita9 anos atráse essa foi basicamente a resposta dada lá.)


Toda a esperança não está perdida, no entanto. O imakeidxpacote também suporta o uso xindycomo backend para construção do índice que tem maior flexibilidade de configuração (veja, por exemplo,O companheiro LaTeXpara um breve resumo do que pode ser feito). Se você simplesmente

\usepackage[xindy]{imakeidx}

em vez disso, as configurações padrão texindyparecem impedir a duplicação da entrada da página 1, mas também mostram a entrada sem negrito em vez da entrada em negrito. Isso se deve à regra de mesclagem especificada no latex-loc-fmts.xdymódulo, que diz

(define-attributes (("default" "textbf" "textit" "hyperpage")))

Se você reordenar a linha para ler

(define-attributes (("textbf" "textit" "default" "hyperpage")))

então, o negrito terá maior prioridade do que o padrão ao imprimir o índice. No meu computador, o caminho de pesquisa padrão xindyestá configurado de forma que você possa apenas

  1. encontre e copie o latex-loc-fmts.xdyarquivo para o seu diretório local
  2. Edite-o para substituir a linha por (define-attributes...para corresponder à substituição listada acima
  3. Execute pdflatexem seu arquivo TeX
  4. Corrertexindy Persone.idx
  5. Repetirpdflatex

E isso deve lhe dar o resultado desejado. Se o caminho de pesquisa estiver configurado de forma diferente, pode ser necessário definir a XINDY_SEARCHPATHvariável de ambiente.

informação relacionada