我正在处理一份英语和希伯来语文档(使用polyglossia
),并试图在希伯来语中任何可能出现连字符的地方添加连字符。根据本网站上的其他问题/答案,我试图使用hyphenat
替换所有我想要连字符的希伯来语连字符\hyp{}
,但它拒绝连字符。请参阅下面的最小示例。手动为单个单词添加连字符规则是不切实际的,因为我将有数千个单词要输入。有没有办法强制 LaTeX 在希伯来语端允许连字符\hyp{}
(或者更好的是,任意字符,例如希伯来语版本的连字符,U+05BE ־)?
\documentclass[10pt]{book}
\usepackage{polyglossia,hyphenat}
\setdefaultlanguage{english}
\setotherlanguages{hebrew}
\newfontfamily\hebrewfont[Script=Hebrew]{Arial Unicode MS}
\newcommand{\h}[1]{\RL{\texthebrew{#1}\hfil}}
\newcommand{\hangparagentry}{\hangindent-0.5em \hangafter1 \leftskip 0.8em \parindent -0.5em}
\DeclareDocumentCommand{\entry}{ m o m }{\noindent\hangparagentry{\hspace{-.5em}\textbf{#1}\hspace{0.5cm}\hfill \h{#3\IfNoValueF{#2}{ \textenglish{\scriptsize{#2}}}}}\par}
\begin{document}
\flushright
\entry{earthquake meter earthquake meter earthquake meter}{דער ע֜רד\hyp{}צי֜טערניש\hyp{}מע֜סטער, \hyp{}ס}
\end{document}
答案1
hyphenat
首先删除。如果您想要一个自由连字符,您可以定义\hyp
为 do \discretionary{-}{}{}
,但这与使用 相同\-
。
如果您想要“breakable at”连字符,只需使用连字符。
\documentclass[10pt]{book}
\usepackage{polyglossia}
\setdefaultlanguage{english}
\setotherlanguages{hebrew}
\newfontfamily\hebrewfont[Script=Hebrew]{Arial Unicode MS}
\newcommand{\h}[1]{\RL{\texthebrew{#1}\hfil}}
\newcommand{\hangparagentry}{\hangindent-0.5em \hangafter1 \leftskip 0.8em \parindent -0.5em}
\DeclareDocumentCommand{\entry}{ m o m }{%
\noindent\hangparagentry{\hspace{-.5em}\textbf{#1}\hspace{0.5cm} %\hfill
\h{\hspace{0pt}#3\IfNoValueF{#2}{ \textenglish{\scriptsize{#2}}}}}\par}
\begin{document}
\flushright
\entry{earthquake meter earthquake meter earthquake meter}{דער ע֜רד-צי֜טערניש-מע֜סטער, -ס}
\parbox{0pt}{\h{\hspace{0pt}דער ע֜רד-צי֜טערניש-מע֜סטער, -ס}}
\end{document}
最后的\parbox
只是为了表明连字符是良好的换行点。
请注意,我将\hfill
的定义改为\entry
一个简单的空格。使用\hfill
会让 TeX 认为最好不要使用连字符,这样才能得到更好的段落。