\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}

Та же проблема с \allowbreakturned into \penalty \z@может возникнуть, если у вас есть что-то вроде

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

и делай

\indexword{abc\allowbreak def}

Использование \protect\allowbreakтакже подойдет в этом случае. Однако сортировка записей индекса с помощью \allowbreakв них, вероятно, даст неправильные результаты.

Связанный контент