Предотвращение переноса слов с помощью \hyphenation не всегда работает

Предотвращение переноса слов с помощью \hyphenation не всегда работает

Я знаю, что можно предотвратить перенос слова, установив \hyphenation{ }. Однако в некоторых случаях это не работает. Вот пример, где слово является аббревиатурой "IRES".

\documentclass[12pt,a4paper]{article}

\usepackage[italian]{babel}

\hyphenation{IRES}
\begin{document}

\begin{minipage}{7.6cm}
  Un Ente non residente può svolgere un'attività commerciale in Italia
  partecipando a una società di capitali italiana o attraverso una stabile
  organizzazione. In entrambi i casi sul reddito d'impresa si applicherà
  l'IRES. La stabile organizzazione dovrà determinare il reddito d'impresa
  prodotto nel territorio dello Stato applicando le stesse regole
  applicabili alle società di capitali italiane come se si trattasse di
  un'entità separata e indipendente dall'ente estero.
\end{minipage}
\end{document}

Что приводит к

введите описание изображения здесь


с XeLaTeX

\documentclass[12pt,a4paper]{article}

\usepackage[italian]{babel}

\begin{document}


\begin{minipage}{7.6cm}

aaaaaaaaaaaaaaa bbbbbbbbbb cccccccccc
aiii  sul reddito d'impresa  applicherà
  l'IRES. La stabile organizzazione
applicabili alle società di capitali italiane come se si trattasse di
  un'entità separata e indipendente dall'ente estero.


\end{minipage}
\end{document}

введите описание изображения здесь

решение1

Для XeLaTeX необходимо избегать переноса «l'IRES» (с помощью U+2019), поскольку 'он заменяется на во время набора текста, а не при \hyphenationиспользовании.

\documentclass[12pt,a4paper]{article}
\usepackage[italian]{babel}

{\lccode`’=`’
\hyphenation{l’IRES}
}

\begin{document}

\parbox{0pt}{\hspace{0pt}l'IRES}

\end{document}

введите описание изображения здесь

Вероятно, вам также понадобится all’IRESи dell’IRES.

Если у вас возникли проблемы с вводом , то

{\lccode"2019="2019
\hyphenation{l^^^^2019IRES}
}

тоже подойдет.

решение2

Итальянские слова принимают 'участие в переносе, поэтому вам нужноl'IRES

введите описание изображения здесь

\documentclass[12pt,a4paper]{article}

\usepackage[italian]{babel}

{\lccode`'=`'
\hyphenation{l'IRES}
}

\begin{document}


\begin{minipage}{7.6cm}
  Un Ente non residente può svolgere un'attività commerciale in Italia
  partecipando a una società di capitali italiana o attraverso una stabile
  organizzazione. In entrambi i casi sul reddito d'impresa si applicherà
  l'IRES. La stabile organizzazione dovrà determinare il reddito d'impresa
  prodotto nel territorio dello Stato applicando le stesse regole
  applicabili alle società di capitali italiane come se si trattasse di
  un'entità separata e indipendente dall'ente estero.
\end{minipage}
\end{document}

Однако при использовании OT1 переносы будут некорректными, поэтому при использовании pdflatex всегда следует использовать T1.


Lualatex показывает ту же точку останова, что и xelatex в примере xelatex, и то же решение, что и выше, удаляет переносы, что приводит к

введите описание изображения здесь

Но по причинам, не задокументированным (но, вероятно, связанным с деталями реализации взаимодействия с harfbuzz), код не работает (как и все остальное, что я пробовал) при использовании xelatex.

Смотрите ответ egreg, вы можете использовать вместо 'xelatex \hyphenation.

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