
Я хотел бы включить \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
turned into \penalty \z@
может возникнуть, если у вас есть что-то вроде
\newcommand{\indexword}[1]{#1\index{#1}}
и делай
\indexword{abc\allowbreak def}
Использование \protect\allowbreak
также подойдет в этом случае. Однако сортировка записей индекса с помощью \allowbreak
в них, вероятно, даст неправильные результаты.