형식 지정이 사용되는 경우 이중 인덱스

형식 지정이 사용되는 경우 이중 인덱스

일부 항목(주요 항목)이 굵게 표시된 색인이 있는 문서가 있습니다.

저는 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}

대신 의 기본 설정은 texindy1페이지 항목의 중복을 방지하는 것으로 보이지만 기본적으로 굵은 글씨 대신 굵은 글씨가 아닌 항목을 표시하도록 설정되어 있습니다. 이는 모듈에 지정된 병합 규칙 때문입니다 latex-loc-fmts.xdy.

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

읽을 줄을 다시 정렬하면

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

그러면 색인을 인쇄할 때 굵은 글씨가 기본값보다 높은 우선순위를 갖습니다. 내 컴퓨터에서는 에 대한 기본 검색 경로가 xindy구성되어 있습니다.

  1. 파일 을 찾아서 latex-loc-fmts.xdy로컬 디렉터리에 복사하세요.
  2. (define-attributes...위에 나열된 대체 항목과 일치하도록 행을 바꾸도록 편집하세요.
  3. pdflatexTeX 파일에서 실행
  4. 달리다texindy Persone.idx
  5. 재방송pdflatex

그러면 원하는 결과가 나올 것입니다. 검색 경로가 다르게 구성된 경우 환경 변수 설정을 가지고 놀아야 할 수도 있습니다 XINDY_SEARCHPATH.

관련 정보