我创建了一个宏,可以突出显示一个单词并将其发送到索引
\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
。