\allowbreak 在 \index 中不起作用

\allowbreak 在 \index 中不起作用

我想将其包含\allowbreak在一个\index条目中,但我无法让它工作。.idx文件中\allowbreak的 被更改为,这会破坏生成的索引。\penalty \z@

我该如何解决这个问题?

答案1

您可能正在\index调用另一个命令的参数;这是一个模拟:

\documentclass{article}
\usepackage{makeidx}
\makeindex

\begin{document}

a\index{abcdef@abc\allowbreak def}

% now do the call in the argument of a command
\textbf{g\index{ghijkl@ghi\allowbreak jkl}}

% now use the proper input
\textbf{m\index{mnopqr@mno\protect\allowbreak pqr}}

\printindex

\end{document}

这将生成以下.idx文件

\indexentry{abcdef@abc\allowbreak def}{1}
\indexentry{ghijkl@ghi\penalty \z@ jkl}{1}
\indexentry{mnopqr@mno\allowbreak pqr}{1}

\allowbreak如果你有类似的东西,\penalty \z@就会发生同样的问题

\newcommand{\indexword}[1]{#1\index{#1}}

并做

\indexword{abc\allowbreak def}

在这种情况下,使用\protect\allowbreak也可以。但是,使用 对其进行排序\allowbreak可能会产生错误的结果。

相关内容