我怎样才能让 makeindex 忽略大写字母?

我怎样才能让 makeindex 忽略大写字母?

我创建了一个宏,可以突出显示一个单词并将其发送到索引

\newcommand{\indexthis}[1]{\textcolor{Maroon}{\textbf{#1}}\index{\MakeLowercase{#1}@{#1}}\xspace).

但是该\MakeLowercase命令似乎不起作用,因为出现在句子开头的单词被发送到文件时.idx会保留大写字母。这会影响索引的排序顺序,因为大写单词排在最前面。这是一个最简单的工作示例

\documentclass{minimal}

\usepackage{makeidx}
\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}

\newcommand{\indexthis}[1]{\textcolor{Maroon}{\textbf{#1}}\index{\MakeLowercase{#1}@{#1}}\xspace}

\makeindex
%================================================================================================
\begin{document}

\indexthis{Aardvarks} keep out of the sun \\
\indexthis{Badgers} prefer the shade \\
But \indexthis{antelopes} adore sunshine \\
And \indexthis{lions} are sun addicts \\

\printindex

\end{document}

以下是截图

截屏

问题是我们有两个 AZ 列表,一个用于以大写字母开头的单词,另一个用于以小写字母开头的单词。有人可以更改宏以在将参数#1发送到文件之前强制将其转换为小写.idx吗?或者有没有办法makeindex在排序期间忽略大写字母?谢谢。

(注:有一个主题应用于\lowercase索引条目部分解决了这个问题。但是,解决方案是一个包含两个参数的宏。我试图仅使用一个参数来突出显示和添加到索引,但我无法调整此代码)

答案1

也许

\newcommand{\indexthis}[1]{\textcolor{Maroon}{\textbf{#1}}\lowercase{\index{#1}}}

(删除 xspace,因为这里不需要它,因为宏调用以 so 结尾,}所以不会删除空格)

答案2

lion您是否还担心单数/复数用法?例如,为 有一个索引条目,而不是为 和 有单独的索引条目,lion这更为常见lions?以下是调整单数/复数/大写/小写的可能方法:

\documentclass{article}

\usepackage[dvipsnames]{xcolor}
\usepackage[style=index]{glossaries}

\makeglossaries

\renewcommand*{\glossaryname}{\indexname}
\renewcommand*{\glsnamefont}[1]{\textmd{#1}}
\renewcommand*{\glstextformat}[1]{\textcolor{Maroon}{#1}}

\newcommand*{\newterm}[2][]{%
  \newglossaryentry{#2}{name={#2},description={\nopostdesc},#1}%
}

\newterm{lion}
\newterm{aardvark}
\newterm{badger}
\newterm{antelope}

\begin{document}

\Glspl{lion} or \gls{lion}.
\Gls{lion} or \glspl{lion}.

\Glspl{aardvark} or \gls{aardvark}.
\Gls{aardvark} or \glspl{aardvark}.

\Glspl{badger} or \gls{badger}.
\Gls{badger} or \glspl{badger}.

\Glspl{antelope} or \gls{antelope}.
\Gls{antelope} or \glspl{antelope}.

\printglossaries

\end{document}

结果如下:

生成的文档的图像

makeindex现在通话

makeindex -s "test.ist" -t "test.glg" -o "test.gls" "test.glo"

其中文档名为test.tex。或者,您也可以直接执行makeglossaries test

相关内容