我想从 p(La)TeX(Unicode 时代之前专门针对日语的 TeX 系统)转移到 Xe(La)TeX,但我遇到了问题。
在 p(La)TeX 中,日文字体仅用于非 ASCII 字符,而 ASCII 字符在 Computer Modern 或 Times 等中的排版与标准 TeX 中的排版相同。
我希望 Xe(La)TeX 也能有类似功能。换句话说,我希望 Xe(La)TeX 根据 Unicode 块使用不同的字体,例如 CJK 统一表意文字或埃塞俄比亚文字或楔形文字,请参阅列表在这里。
使用 XeLaTeX 和 fontspec 可以实现吗?还是我必须破解 XeTeX 的源代码才能实现?
(有一个非常类似的问题被问到这里,不过我还是在这里再问一遍,希望过去六个月的情况有所改变。)
答案1
只需使用xeCJK
日语。一个简单的例子:
\documentclass{article}
\usepackage{xeCJK}
\setCJKmainfont{MS Mincho} % for \rmfamily
\begin{document}
おはよう VS Good morning
\end{document}
也可以看看:
xeCJK
处理自动字体切换、换行、标点和字符间距。它最初是为中文排版设计的,但据我所知,它对日文和韩文也很好用。
另一个包是fontwrap
。它使用 Perl 脚本来切换不同 Unicode 块的字体。我个人并不喜欢它。
对于 CJK 脚本,xeCJK
是合适的。对于东亚语言以外的语言,应该使用polyglossia
带有 XeLaTeX 的软件包。polyglossia
是babel
XeLaTeX 的替代品,但字体切换不是自动的。请注意,xeCJK
与不兼容polyglossia
;它们都使用该\XeTeXinterchartoks
机制,但现在很难让它们很好地协同工作。(目前,它根本不起作用。)
答案2
为了完整起见,我想为更普遍的情况添加一个答案,不仅可以切换 CJK unicode 块,还可以切换其他块(正如问题所暗示的那样)。
您可以使用专门为此设计的软件包ucharclasses
。它还允许您切换其他脚本,如阿拉伯语、梵文或多米诺骨牌。它这样做的方式还允许您将排版从 RTL 更改为 LTR,反之亦然(如果其他脚本之一需要这样做)。
您可以在这里找到该包:http://www.ctan.org/tex-archive/macros/xetex/latex/ucharclasses