众所周知,许多语言不使用空格字符进行分词。对于此类语言,会使用特殊的非打印字符,例如 ZERO WIDTH NON JOINER 或 ZERO WIDTH SPACE 字符。
看来 XeTeX 或 XeLaTeX 仅依赖空格字符来实现换行行为。有没有办法改变这种行为?有没有可以提供帮助的软件包?比如说,能否指定 Tex 可以用来确定文本换行位置的字符?如果没有,我想知道是否可以开发这个功能?
任何指点都将不胜感激!
答案1
XeTeX 有\XeTeXlinebreaklocale
,后跟语言代码,用于设置特定于语言的换行行为,例如\XeTeXlinebreaklocale "zh"
或\XeTeXlinebreaklocale "th"
分别设置中文或泰语的换行。
一些语言有专门的 XeLaTeX 包来处理这个问题以及更多特定于语言的内容,例如 xeCJK。
答案2
对于 XeTeX,我建议我们的xeCJK
包。该包不仅处理换行,还设置字体并处理标点符号。另请参阅如何用 LaTeX 写日语?。 一个例子:
\documentclass{article}
\usepackage[BoldFont]{xeCJK} % compatible with some packages which relys on CJK
\usepackage{ruby}
\setCJKmainfont{MS Mincho} % Set a Japanese font you have
\setlength\parindent{2em}
\begin{document}
この FAQ リストは、よくある質問とその答を集め、役に立つよう
にしたものです。この FAQ リストの構造は、以前のものと比べて大幅に変更
されています。\textbf{\ruby{新}{あたら}しい構造に関しては、「この FAQ
の読み方とその構造」の項目を\ruby{参}{さん}\ruby{照}{しょう}して下さ
い。}
\end{document}
低级解决方案是使用:
\XeTeXlinebreaklocale "ja" % for Japanese
\XeTeXlinebreakskip 0pt plus 0.1pt % sets the skip
答案3
使用\XeTeXlinebreaklocale
和\XeTeXlinebreakskip
是正确的方法。具体来说,对于这篇文章,我处理的是缅甸语(缅甸语)文本。应用"my"
此语言的区域设置并将XeTeXlinebreakskip
选项设置为0pt plus 0.1pt
,这样可以处理孤立的标点符号。
答案4
与@Yasutaka 的答案类似,我使用了:
\XeTeXlinebreaklocale "my"
\XeTeXlinebreakskip = 0pt plus 2.5pt
\setmainfont[Script=Myanmar]{Padauk} %for those of you dealing specifically with a Myanmar/Burmese-related issue.
将换行符保持在 0 加 0.1 仍然给我带来了一些问题。增加到加 2 会删除除两个实例之外的所有实例,因此是 2.5pt。再次,对于那些寻求缅甸特定帮助的人,我犯了一个错误,从缅甸字体开始,而不是 Padauk。前者是 ttf 字体,Padauk 是 Open Type,这在这种情况下完全不同。