更新

更新

这是我的 MWE:

\documentclass{article}
\usepackage{polyglossia}
\disablehyphenation % <-- if I remove this line the word "corrispondente" is not automatically hyphened

\setmainlanguage{italian} % <-- commenting out this line to properly use manual hyphenation

\begin{document}

\parbox{.25\textwidth}{Rimuovere approssimativamente la direzione corrispondente al genere.}

\bigskip

\parbox{.25\textwidth}{Rimuovere appros\-simativamente la direzione corrispondente al genere.}

\bigskip

\parbox{.25\textwidth}{Rimuovere appros\-simativamente la direzione corrispon\-dente al genere.}

\bigskip

\parbox{.25\textwidth}{Rimuovere appros\-simativamente la direzione corrispon-\linebreak{}dente al genere.}

\bigskip

\today % <-- if you comment out the previous line this line is not properly formatted

\end{document}

我用它编译

latexmk -lualatex ./foo.tex

在TexLive2023上更新。

第一个句子\parbox在禁用连字符的情况下正确拼写:单词“approssimativamente”没有连字符。然后在第二个句子中,\parbox我手动为该单词加了连字符。到目前为止,一切都正常。但是当我尝试对单词“corrispondente”做同样的事情时,它不起作用。我找到了两个解决方案:

  • 注释掉,\setmainlanguage{italian}\today输出不是更多的翻译和格式化的意大利风格,或
  • 创建一个假连字符,-\linebreak{}但我发现这个解决方案很糟糕。

有任何想法吗?

更新

我尝试\finalhyphendemerits=0按照 David 的建议添加。一切正常。但我的目标是使用 Beamer 类而不是文章。我做了同样的事情,但它不起作用,如本 MWE 所示:

\documentclass{beamer}

\usetheme[right]{PaloAlto}

\usepackage{polyglossia}
\disablehyphenation

\usepackage{fontspec}
\setsansfont{DejaVuSans}

\setmainlanguage{italian}

\begin{document}

\begin{frame}

    \begin{columns}
        \begin{column}{.5\textwidth}
        \end{column}
        \begin{column}{.5\textwidth}
            \begin{itemize}
                \item foo
                \begin{itemize}
                    \item {\finalhyphendemerits=0
                    Rimuovere appros\-simativamente la direzione corrispon\-dente al genere.}
                \end{itemize}
            \end{itemize}
        \end{column}
    \end{columns}

\end{frame}

\end{document}

我怀疑column环境不是一个段落并且因此\finalhyphendemerits=0不起作用。

答案1

在此处输入图片描述

默认情况下,在段落倒数第二行使用连字符会受到很大的惩罚(扣分)。因此,如果您降低空格数,则拉伸空格的成本会较低,然后 \finalhyphendemerits它会在该点选择连字符。

\documentclass{article}
\usepackage{polyglossia}
\disablehyphenation % <-- if I remove this line the word "corrispondente" is not automatically hyphened

\setmainlanguage{italian} % <-- commenting out this line to properly use manual hyphenation

\begin{document}

\parbox{.25\textwidth}{Rimuovere approssimativamente la direzione corrispondente al genere.}

\bigskip

\parbox{.25\textwidth}{Rimuovere appros\-simativamente la direzione corrispondente al genere.}

\bigskip

\parbox{.25\textwidth}{Rimuovere appros\-simativamente la direzione corrispon\-dente al genere.}

\bigskip

new

\parbox{.25\textwidth}{
\finalhyphendemerits=0
Rimuovere appros\-simativamente la direzione corrispon\-dente al genere.}

\bigskip

\parbox{.25\textwidth}{Rimuovere appros\-simativamente la direzione corrispon-\linebreak{}dente al genere.}

\bigskip

\today % <-- if you comment out the previous line this line is not properly formatted

\end{document}

答案2

问题在于\finalhyphendemerits,正如 David 所指出的那样。但我提出了一种不同的策略,即添加

\finalhyphendemerits=0

到 的定义\sloppy。段落下的\sloppy内容已经是任意糟糕的了,至少这可以让它们变得不那么糟糕。

另一方面,在列非常窄的情况下,右侧参差不齐似乎是最好的选择,而修改后\sloppy甚至可以获得更好的结果。

\documentclass{article}
\usepackage{polyglossia}
\usepackage{ragged2e} % for the second box

\setmainlanguage{italian}

\AddToHook{cmd/sloppy/before}{\finalhyphendemerits=0 }

\begin{document}

\today

\bigskip

\parbox{.25\textwidth}{%
  Rimuovere approssimativamente la direzione corrispondente al genere.%
}

\bigskip

\parbox{.25\textwidth}{%
  \RaggedRight
  Rimuovere approssimativamente la direzione corrispondente al genere.%
}

\end{document}

在此处输入图片描述

作为参考,这是在没有补丁的情况下获得的结果\sloppy

在此处输入图片描述

相关内容