索引子条目按连接词/短语后面的主题字母顺序排列

索引子条目按连接词/短语后面的主题字母顺序排列

我需要按字母顺序排列子条目,而不是按照诸如、、、and等字词排列。asthefor

\documentclass{article}
\usepackage{makeidx}

\makeindex
\begin{document}


This is for test\index{boundary layer}\index{boundary layer!and Toner-Tu theory of pipe ow}
\index{boundary layer!defined}
\index{boundary layer!Prandtl treatment of}
\index{boundary layer!thickness}
\index{boundary layer!Toner-Tu theory compared to Newtonian fluid}

\clearpage

\printindex
\end{document}

输出如下:

在此处输入图片描述

但是,根据我的要求,所需的输出应该是这样的:

在此处输入图片描述

答案1

您需要将要忽略的前缀放在末尾,这样它实际上就不会被考虑用于排序。然后您需要修改该条目:

\documentclass{article}
\usepackage{imakeidx}

\makeindex

\NewDocumentCommand{\prf}{m}{#1}

\NewCommandCopy{\originalsubitem}{\subitem}

\ExplSyntaxOn

\RenewDocumentCommand{\subitem}{}
 {
  \originalsubitem
  \peek_regex_replace_once:nn { ([^,]*) \c{prf}+ ([^,]*) \, } { \2\ \1, }
 }

\ExplSyntaxOff

\begin{document}

This is for test\index{boundary layer}\index{boundary layer!Toner-Tu theory of pipe ow\prf{and}}
\index{boundary layer!defined}
\index{boundary layer!Prandtl treatment of}
\index{boundary layer!thickness}
\index{boundary layer!Toner-Tu theory compared to Newtonian fluid}

\index{c}
\index{d}
\index{e}
\index{f}
\index{g}
\index{h}
\index{i}
\index{j}
\index{k}

\clearpage

\printindex
\end{document}

在这里我使用了imakeidx以使运行测试更容易。

这个想法是要求\subitem发出原始命令,然后寻找一个\prf标记。如果存在,那么从标记到分隔条目的逗号之间的任何内容都会放在开头,后面跟着一个空格。

在此处输入图片描述

相关内容