索引条目按宏文本而不是值排序

索引条目按宏文本而不是值排序

A相关问题七年前就有人在这里问过,但是我无法让这个解决方案在我的情况下发挥作用。

我在文本的不同实例中使用宏来简写常用术语,同时也自动根据这些术语构建索引。由于我的用例要求对每次使用的第一个实例进行不同于其他实例的处理,因此我使用了词汇表包。

但是,当我从它们建立索引时,它们会按宏的纯文本排序,而不是按宏的结果排序。

\documentclass{article}
\usepackage{makeidx}
  \makeindex
\usepackage{glossaries}
\newcommand{\MacroToIndex}[1]{\gls{#1}\index{\gls{#1}}}
  \newacronym{aaaa}{AAAA}{AAAA}
  \newacronym{bbbb}{ZZZZ}{ZZZZ}
  \newacronym{cccc}{CCCC}{CCCC}
\begin{document}
\MacroToIndex{aaaa}, \MacroToIndex{bbbb}, \MacroToIndex{cccc}
\printindex
\end{document}

在这种情况下,结果索引是:

AAAA,1

ZZZZ,1<- 这是 \gls{bbbb}

中国交通建设集团有限公司,1

有什么方法可以让索引正确地对它们进行排序吗?链接的线程建议使用 \expandafter,但我无法理解如何在我的情况下使用它。

答案1

不要使用\makeindexand \printindex,而是\makeglossariesand \printglossaries

在文档上运行 LaTeX 后,运行makeglossaries而不是然后makeindex重新运行 LaTeX。

\documentclass{article}
\usepackage{glossaries}

\makeglossaries

\newcommand{\MacroToIndex}[1]{\gls{#1}\index{\gls{#1}}}

\newacronym{aaaa}{AAAA}{AAAAfirst}
\newacronym{bbbb}{ZZZZ}{ZZZZfirst}
\newacronym{cccc}{CCCC}{CCCCfirst}

\begin{document}

\MacroToIndex{aaaa}, \MacroToIndex{bbbb}, \MacroToIndex{cccc}

\MacroToIndex{aaaa}, \MacroToIndex{bbbb}, \MacroToIndex{cccc}

\printglossaries

\end{document}

在此处输入图片描述

相关内容