我有两个索引:和Main Index
。PDFName Index
书籍在视觉上是正确的:
请注意,Name Index
从第 6 页开始,而Z
的条目Name Index
在第 7 页。
但是,单击(出现在第 7 页)Z
中的Name Index
,我将转到(第 6 页)Z
。Main Index
此代码改编自将 \lowercase 应用于索引条目。
代码:
\documentclass{article}
\usepackage{imakeidx}
\usepackage{hyperref}
\newcommand*\lettergroup[1]{%
\clearpage%
\section*{#1}%
\pdfbookmark[0]{#1}{#1}%
\nopagebreak%
}
% https://tex.stackexchange.com/questions/51688/applying-lowercase-to-index-entries
\newcommand*{\AddIndexEntry}[3][]{%
% #1 = indexed term, #2 = word to index this under
\par\noindent
\lowercase{\def\temp{#3}}%
Indexing: #3%
\if!#1!
\expandafter\index\expandafter{\temp!#2}%
\else
\expandafter\indexopt\expandafter{\temp!#2}{#1}
\fi
}
\newcommand{\indexopt}[2]{\index[#2]{#1}}
\makeindex[title={Main Index},columns=1,program=texindy]
\makeindex[title={Name Index},columns=1,program=texindy,name=Name]
\begin{document}
\AddIndexEntry{aardvark}{aardvark}
\AddIndexEntry{Saved by Zero}{Saved}
\AddIndexEntry{Saved by Zero}{Zero}
\AddIndexEntry[Name]{zero}{zero}
\clearpage
\addcontentsline{toc}{}{Main Index}
\printindex
\clearpage
\addcontentsline{toc}{}{Name Index}
\printindex[Name]
\end{document}
答案1
我认为,与手动放置书签相比,更好的方法是hyperref
:
\documentclass{article}
\usepackage{imakeidx}
\usepackage{hyperref}
\usepackage{bookmark}
\newcommand*\lettergroup[1]{\subsection{#1}}
% http://tex.stackexchange.com/questions/51688/applying-lowercase-to-index-entries
\newcommand*{\AddIndexEntry}[3][]{%
% #1 = indexed term, #2 = word to index this under
\par\noindent
\lowercase{\def\temp{#3}}%
Indexing: #3%
\if!#1!
\expandafter\index\expandafter{\temp!#2}%
\else
\expandafter\indexopt\expandafter{\temp!#2}{#1}
\fi
}
\newcommand{\indexopt}[2]{\index[#2]{#1}}
\makeindex[title={Main Index},columns=1,program=texindy]
\makeindex[title={Name Index},columns=1,program=texindy,name=Name]
\indexsetup{level=\section}
\begin{document}
\AddIndexEntry{aardvark}{aardvark}
\AddIndexEntry{Saved by Zero}{Saved}
\AddIndexEntry{Saved by Zero}{Zero}
\AddIndexEntry[Name]{zero}{zero}
\clearpage % we want to be sure that all index entries are output
\setcounter{secnumdepth}{0}
\printindex
\printindex[Name]
\end{document}
但关键是使用 来\subsection
表示字母组,这样它们将成为索引的子项。使用\setcounter{secnumdepth}{0}
我们禁用编号,并使用\indexsetup{level=\section}
我们告诉 LaTeX 使用\section{\indexname}
而不是\section*
,这样重要的操作hyperref
将自动执行。