我需要按字母顺序排列子条目,而不是按照诸如、、、and
等字词排列。as
the
for
\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
标记。如果存在,那么从标记到分隔条目的逗号之间的任何内容都会放在开头,后面跟着一个空格。