使用 babel 阻止在某个 CJK 字符后换行

使用 babel 阻止在某个 CJK 字符后换行

当我使用babel和 LuaLaTeX 设置中文时,我经常发现在 之后插入了一个换行符:“。这对我来说看起来很奇怪,我更希望换行符位于 之后和 之前

我可以调整一些babel选项或 TeX 设置来阻止这种行为吗?

下面是一个 MWE,演示了第一段中的奇怪的断点,以及我希望它如何在第二段中自动显示(无需手动插入\break)。

%! TeX Program = lualatex

\documentclass{article}

\usepackage{babel}
\babelprovide[import,main]{chinese-simplified}
\babelfont{rm}{Noto Serif CJK SC}

\begin{document}

\hsize 1.85in
魔鬼又带他上了一座最高的山,将世上的万国与万国的荣华都指给他看,对他说:“你若俯伏拜我,我就把这一切都赐给你。”

魔鬼又带他上了一座最高的山,将世上的万国与万国的荣华都指给他看,对他说:\break “你若俯伏拜我,我就把这一切都赐给你。”

\end{document}

输出

答案1

我修改了原始答案,因为有更好的选择:

\documentclass{article}

\usepackage{babel}
\babelprovide[import,main,intraspace=0 .15 0]{chinese-simplified}
\babelfont{rm}{NotoSerifCJKsc-Regular.otf}

\babelcharproperty{`“}{linebreak}{op}

这将linebreak“的属性设置为‘opening’,禁止在此字符后换行。

原始答案

也许最简单的方法是使用变换。它需要较新的版本,并且您可能需要稍微增加intraspace(默认值为0 .1 0,以 em 为单位)。以下前言对我有用:

\documentclass{article}

\usepackage{babel}
\babelprovide[import,main,intraspace=0 .15 0]{chinese-simplified}
\babelfont{rm}{NotoSerifCJKsc-Regular.otf}

\babelprehyphenation{chinese-simplified}{:“}{
  {},  % Keep :
  {insert, penalty=-100},
  {}   % Keep “
}

相关内容