我在我的论文中使用了一些首字母缩略词,我希望它们以如下方式出现在字母索引中:
ACR,参见首字母缩略词
首字母缩略词,iii,5,48
这是我的代码:
\documentclass[11pt,a4paper]{book}
\usepackage[nottoc,notlot,notlof]{tocbibind}
\usepackage{imakeidx}
\usepackage{bookmark} % includes hyperref
\usepackage[toc,acronym]{glossaries}
\makeindex[intoc]
\makeglossaries
\newacronym{fmea}{FMEA}{Fail\-ure Mode and Ef\-fect A\-nal\-y\-sis}
\begin{document}
\frontmatter
\tableofcontents
\mainmatter
Occurrence of the acronym \acrlong{FMEA}
\index{FMEA}
\backmatter
\printglossary[type=\acronymtype,nonumberlist]
\index{failure mode and effect analysis|see{FMEA}}
\printindex
\end{document}
此代码运行完美,但我必须声明每个首字母缩略词两次(作为 newacronym 和索引“see”)。我引入此命令作为变体,它\newacronym
还会生成相应的\index
语音:
\newcommand{\newacronymidx}[3]{
\newacronym{#1}{#2}{#3}
\index{\MakeLowercase{#3}|see #2}
}
\newacronym{fmea}{FMEA}{Fail\-ure Mode and Ef\-fect A\-nal\-y\-sis}
我有三个问题:
- “ACR,参见首字母缩略词”索引条目出现在字母索引的开头,而不是其正确的按字母顺序排列的位置
- 现在我在“ACR,参见缩写”后获得了一个页码,其超链接指向第一页(卷首插图,未包含在本 MWE 中)
- 由于一些我无法理解的奇怪原因,FMEA 变成了 FEA(它没有出现在我的代码中)
在此示例中,FMEA 的定义是\newacronymidx
,其他缩写词的定义是 \newacronym 和 \index{acronym|see ACR}。唯一错误的是 FMEA。
问题 1:
我认为前两个问题与命令在源代码中的位置有关\index
(现在在序言中)。有没有办法创建一个辅助文件,使用\makeacronymidx
将带有命令的新行附加\index
到此文件,然后\include{myAuxFile}
在前面使用\printindex
?
问题2:
关于索引中的 FMEA 成为 FEA 有什么想法吗?这在 MWE 中不会发生,但我无法在此处发布完整代码...
谢谢你!
编辑:由 Nicola Talbot 在评论中解决
\newcommand{\newacronymidx}[3]{
\newacronym{#1}{#2}{#3}
\index{#3@\MakeLowercase{#3}|see {#2}}
}
答案1
评论摘要:
- 当索引术语包含格式化命令时,需要一个排序值(因为
makeindex
不会忽略 LaTeX 命令,而是将它们视为以 开头的字符串\
)。 - 封装
see
要求在参数周围加上括号:|see FMEA
变为\see FMEA{1}
,其实际上是\see{F}{M}EA1
,因此M
被丢弃 并且出现页码。
因此定义需要为:
\newcommand{\newacronymidx}[3]{%
\newacronym{#1}{#2}{#3}%
\index{#3@\MakeLowercase{#3}|see{#2}}%
}
答案2
如果这对任何人都有帮助,这里有两种索引首字母缩略词的方法,由 Nicola Talbot 进行了更正。此代码允许将排序部分指定为可选参数。
方法 1:缩写指向全文
\usepackage{etoolbox}
\newcommand{\newacronymidx}[4][]{ % rimanda acronimo a esteso
\newacronym{#2}{#3}{#4}
\ifstrempty{#1}
{ \index{#3|see{\MakeLowercase{#4}}} }
{ \index{#3|see{#1}} }
}
\newacronymidx{acr}{ACR}{Acronym}
\newacronymidx[qwerty]{abb}{ABB}{Abbreviation}
索引:
ABB,看qwerty
ACR,看首字母缩略词 首字母
缩略词, 18
qwerty, 36, 58
可能的用途是:
\newacronymidx[control limits]{ucl}{UCL}{Upper Control Limit}
索引条目:UCL,看控制限
方法 2:全文指向缩写
\usepackage{etoolbox}
\newcommand{\newacronymidx}[4][]{ % rimanda esteso ad acronimo
\newacronym{#2}{#3}{#4}
\ifstrempty{#1}
{ \index{#4@\MakeLowercase{#4}|see{#3}} }
{ \index{#1|see{#3}} }
}
\newacronymidx{acr}{ACR}{Acronym}
\newacronymidx[qwerty]{abb}{ABB}{Abbreviation}
索引:
ABB,36,58
ACR,18
缩写,看ACR
标准键盘,看ABB
可能的用途是:
\newacronymidx[Western Electric rules]{wer}{WER}{Western Electric Rules}
索引条目:西部电气规则,看世界教育学会联合会
(我不希望 Western Electric 变成小写)