У меня есть документ с индексом, в котором некоторые записи (основные) выделены жирным шрифтом.
Я использую makeindex.
Моя запись, 2, 4-5,10, 15
Теперь, если у меня есть одна и та же запись дважды на странице, гдеосновнойодин присутствует, индекс печатается дважды.
Например, если My Entry
текст находится на одной странице дважды, один раз обычным шрифтом, а другой — полужирным:
Bla bla\index{My Entry} bla bla \index{My Entry|textbf}
результат есть
Моя запись, 10,10
Страница печатается дважды.
Этого не происходит, если форматирование отсутствует.
Моя запись, 10
Есть ли подсказка?
Редактировать
Минимальный пример:
\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}
Производит
Моя запись, 1,1
Пока
\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}
Производит
Моя запись, 1
без дубликата 1
, так как оба находятся на одной странице
решение1
Это невозможно с бэкэндом MakeIndex по умолчанию, который используется imakeidx
. makeindex
Программа на самом деле делаетобнаружитькогда это происходит, но, кажется, ничего не делает по этому поводу. Если вы посмотрите на транскрипт компиляции из pdflatex
вашего tex
файла-примера, вы увидите
(/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).
Сообщая вам, что есть предупреждение при создании индекса. И если вы откроете транскрипт, makeindex
вы увидите
[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.
и он точно сообщает вам, что его попросили напечатать две записи индекса на одной странице с тем же ключом, но с двумя разными форматами. Неявное ожидание заключается в том, чтотыкак автор должен с этим справиться.
(Кстати, этот же вопрос задавали9 лет назад(И это был по сути ответ, данный там.)
Однако не все потеряно. Пакет imakeidx
также поддерживает использование xindy
в качестве бэкэнда для построения индекса, который имеет большую гибкость конфигурации (см. напримерКомпаньон LaTeXдля краткого обзора того, что можно сделать). Если вы просто
\usepackage[xindy]{imakeidx}
вместо этого настройки по умолчанию, texindy
похоже, предотвращают дублирование записи для страницы 1, но также по умолчанию показывают нежирную запись вместо жирной. Это связано с правилом слияния, указанным в модуле latex-loc-fmts.xdy
, которое гласит
(define-attributes (("default" "textbf" "textit" "hyperpage")))
Если вы измените порядок строк следующим образом:
(define-attributes (("textbf" "textit" "default" "hyperpage")))
то жирный шрифт будет иметь более высокий приоритет, чем по умолчанию при печати индекса. На моем компьютере путь поиска по умолчанию xindy
настроен таким образом, что вы должны иметь возможность просто
- найдите и скопируйте
latex-loc-fmts.xdy
файл в локальный каталог - Отредактируйте его, заменив строку на
(define-attributes...
соответствующую замене, указанной выше. - Запустите
pdflatex
ваш файл TeX - Бегать
texindy Persone.idx
- Повторить
pdflatex
И это должно дать вам желаемый результат. Если путь поиска настроен по-другому, вам, возможно, придется поиграться с настройкой XINDY_SEARCHPATH
переменной окружения.