以下程序创建两个索引。
第一个索引的文本在 \index{} 中明确给出。
第二个索引的文本来自命令 xxone、xxtwo 和 xxthird。 索引中元素的顺序基于命令名称而不是命令值 如何确保命令值被使用?
\documentclass[a4paper,12pt,english]{report}
\usepackage{lipsum}
\usepackage{imakeidx}
\makeindex[title=Demo,columns=1]
\makeindex[name=test,title=Examples,columns=1]
\newcommand{\xxone} {Example 1}
\newcommand{\xxtwo} {Example 2}
\newcommand{\xxthree} {Example 3}
\begin{document}
\index{Example 1}
\index{Example 2}
\index{Example 3}
\index[test]{\xxone{}}
\index[test]{\xxtwo{}}
\index[test]{\xxthree{}}
\lipsum[1]
\printindex
\printindex[test]
\end{document}
我使用这篇文章找到了解决方案:https://tex.stackexchange.com/questions/399435/imakeidx-order-if-own-command-is-used-to-specify-index-entry
\documentclass[a4paper,12pt,english]{report}
\usepackage{lipsum}
\usepackage{imakeidx}
\newcommand{\nindex}[2][]{\index[test]{#2}}
\makeindex[title=Demo,columns=1]
\makeindex[name=test,title=Examples,columns=1]
\newcommand{\xxone} {Example 1}
\newcommand{\xxtwo} {Example 2}
\newcommand{\xxthree} {Example 3}
\begin{document}
\index{Example 1}
\index{Example 2}
\index{Example 3}
\nindex[test]{\xxone{}}
\nindex[test]{\xxtwo{}}
\nindex[test]{\xxthree{}}
\lipsum[1]
\printindex
\printindex[test]
\end{document}