Índice doble si se utiliza formato

Índice doble si se utiliza formato

Tengo un documento con un índice donde algunas entradas (las principales) están marcadas en negrita.

Estoy usando makeindex.

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

Ahora si tengo la misma entrada dos veces en la página dondeprincipaluno está presente, el índice se imprime dos veces.

Por ejemplo, si My Entryestá en la misma página dos veces, una vez en formato normal y otra en negrita:

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

el resultado es

Mi entrada, 10,10

La página se imprime dos veces.

Esto no ocurre si el formato no está presente.

Mi entrada, 10

¿Alguna pista?

Editar

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

produce

Mi entrada, 1,1

Mientras

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

produce

Mi entrada, 1

sin el doble 1ya que ambos estan en la misma pagina

Respuesta1

Esto no es posible con el backend predeterminado de MakeIndex que utiliza imakeidx. El makeindexprograma realmente lo hacedetectarcuando esto sucede, pero no parece hacer nada al respecto. Si observa la transcripción de la compilación pdflatexen su texarchivo de ejemplo, 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).

Diciéndole que hay un aviso al hacer el índice. Y si abres la transcripción makeindexverás

[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.

y te dice exactamente que se le ha pedido imprimir dos entradas de índice bajo la misma página con la misma clave pero con dos formatos diferentes. La expectativa implícita es quecomo el autor debería abordarlo.

(Por cierto, esta misma pregunta se ha hechoHace 9 añosy esa fue básicamente la respuesta dada allí.)


Sin embargo, no todas las esperanzas están perdidas. El imakeidxpaquete también admite el uso xindycomo backend para crear el índice, que tiene una mayor flexibilidad de configuración (ver, por ejemploEl compañero de látexpara obtener un breve resumen de lo que se puede hacer). Si simplemente

\usepackage[xindy]{imakeidx}

en cambio, la configuración predeterminada de texindyparece evitar la duplicación de la entrada de la página 1, pero también muestra de forma predeterminada la entrada sin negrita en lugar de la que está en negrita. Esto se debe a la regla de fusión especificada en el latex-loc-fmts.xdymódulo, que decía

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

Si reordenas la línea para leer

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

entonces la negrita tendrá mayor prioridad que la predeterminada al imprimir el índice. En mi computadora, la ruta de búsqueda predeterminada xindyestá configurada de manera que usted debería poder simplemente

  1. busque y copie el latex-loc-fmts.xdyarchivo en su directorio local
  2. Edítelo para reemplazar la línea para (define-attributes...que coincida con el reemplazo mencionado anteriormente
  3. Ejecute pdflatexen su archivo TeX
  4. Corrertexindy Persone.idx
  5. Repeticiónpdflatex

Y eso debería brindarle el resultado que desea. Si la ruta de búsqueda está configurada de manera diferente, es posible que tenga que jugar con la configuración de la XINDY_SEARCHPATHvariable de entorno.

información relacionada