Как мне действительно принудительно расставить точки переноса в слове?

Как мне действительно принудительно расставить точки переноса в слове?

Я пытаюсь заставить XeLaTeX переносить немецкое слово "Sicherheitsbeauftragter". Я пробовал несколько значений для xin \tolerance=xи экземпляров \hyphenation{Si-cher-heits-be-auf-trag-ter}. Ничего не получилось. MWE:

\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage{german}
\usepackage{array}
\usepackage{ragged2e}
\hyphenation{Si-cher-heits-be-auf-trag-ter} 
\begin{document}
\begin{tabular}{>{\RaggedRight}p{7.7em}@{|}}
Sicherheitsbeauftragter\\
Technischer Leiter
\end{tabular}
\end{document}

Скриншот неработающего переноса

Я также пробовал babelвместо полиглоссии и pdfLaTeXвместо , XeLaTeX но за исключением того, как выглядит "|", разницы нет.

решение1

\hspace{0pt}непосредственно перед этим Sicherheitsbeauftragterпозволяет TeX разбить слово, поскольку TeX не переносит первое слово в абзаце. (Насколько мне известно, это упростило реализацию, и в английском языке с его множеством коротких слов это не было большой проблемой.)

Поскольку \hspaceв этом месте вставляется точка останова, этого можно избежать, выполнив \nobreakв горизонтальном режиме:

\leavevmode\nobreak\hspace{0pt}Sicherheitsbeauftragter

\hspaceИли можно использовать звездную форму :

\hspace*{0pt}Sicherheitsbeauftragter

Это можно автоматизировать (см. комментарий Герберта) в описании столбца:

\begin{tabular}{>{\RaggedRight\hspace*{0pt}}p{7.7em}@{|}}

решение2

Вы также можете предложить места для переносов, используя \-. Для меня работает следующее.

\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage{german}
\usepackage{array}
\usepackage{ragged2e}
\begin{document}
\begin{tabular}{>{\RaggedRight}p{7.7em}@{|}}
Sicherheits\-be\-auf\-tragter\\
Technischer Leiter
\end{tabular}
\end{document}

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