我有以下文件:
\documentclass[12pt,a4paper,oneside]{scrbook}
\usepackage{fontspec}
\makeatletter
\usepackage{csquotes}
\usepackage{luacode}
%\usepackage[UTF8]{ctex}
\usepackage{luatexja-fontspec}
\usepackage{polyglossia}
\setdefaultlanguage[variant=american]{english}
%\setotherlanguage{chinese}
\usepackage{xstring}
\defaultfontfeatures{Mapping=tex-text}
\newfontfamily\chinesefont[Path=/usr/share/fonts/arphicfonts/]{UMing}
\makeatother
\begin{document}
The common transliteration of 易经 is {\enquote{I Ching,}}
following the now-obsolete Wade-Giles system: modern Romanization
of almost all modern Chinese texts follows the Hanyu Pinyin standard used here.
See [huang].
\end{document}
当我尝试排版时,第二个中文字符排版不正确(我得到了一个带有 X 的框)。这不是唯一一个字符排版不正确的情况。如果我取消注释 ctex 的行,中文会正确呈现,但所有英文排版都错误。据我所知,polyglossia 不支持中文。我有一个大型文档,其中包含大量简短的中文和日文文本片段,但主要文档语言是英语(其他语言包括多音希腊语、法语、拉丁语、意大利语、俄语,呃……“voynich”)。有人告诉我 lualatex 在排版多种语言方面表现更好,但我无法让它工作。有什么建议吗?
答案1
如果你\tracinglostchars=2
在序言中添加内容(或搜索文件.log
),你会看到警告消息,
Missing character: There is no 经 (U+7ECF)
in font file:HaranoAjiMincho-Regular.otf:jfm=ujis!
这是因为尝试使用 的polyglossia
命令luatexja-fontspec
。您想设置\chinesefont
为 UMing。但是,lualatex-ja
不使用\chinesefont
,并且您没有将文本标记为 Polyglossia 的中文。因此,您从 获得默认字体luatexja-fontspec
。这是一种日文字体,因此它只包含恰好与 共享代码点的中文字符汉子。
有多种方法可以解决这个问题。如果你想使用luatexja-fontspec
,你应该使用它的命令来选择 CJK 字体、、\setmainjfont
等\newjfontfamily
。如果你不想让包覆盖默认值,也可以设置英文文本。
您的 TeX 安装还应该能够在\usr\share\fonts\
不带参数的情况下找到 子目录中的任何字体Path=
。我不建议在您的文档中放置绝对值Path=
,因为这将使您的文档无法在任何其他计算机上编译。此外, 中有多种字体uming.ttc
,您应该指定您想要的字体。
\documentclass[12pt,a4paper,oneside]{scrbook}
\tracinglostchars=2
\usepackage[match]{luatexja-fontspec}
\usepackage{polyglossia}
\setdefaultlanguage[variant=american]{english}
\usepackage{csquotes}
%\setotherlanguage{chinese}
\usepackage{xstring}
\defaultfontfeatures{ Ligatures=TeX,
Scale=MatchUppercase }
\setmainfont{Latin Modern Roman}[Scale=1.0]
\setmainjfont{AR PL UMing TW}[Renderer=HarfBuzz]
\begin{document}
The common transliteration of 易经 is {\enquote{I Ching,}}
following the now-obsolete Wade-Giles system: modern Romanization
of almost all modern Chinese texts follows the Hanyu Pinyin standard used here.
See [huang].
\end{document}
要使用ctex
而不是luatexja-fontspec
,请使用其命令来设置 CJK 字体,IE \newCJKmainfont
。它不能很好地播放csquotes
,因此您可能被迫\DeclareQuoteStyle
。
为了坚持polyglossia
使用\chinesefont
,您需要添加语言标记,例如 \textchinese{易经}
。在XeLaTeX中,你可以配置ucharclasses
自动将中文字符标记为中文。
最后,您可以使用。它不支持或babel
的所有功能,但足以插入水平书写的单词和短语。与或不同,它支持同一文档中的多种表意书写系统。ctex
luatexja
luatexja
ctex
您在评论中提到,您已经标记了许多文本polyglossia
,但不想更改它们。您可以配置babel
以支持polyglossia
用户命令,例如\textenglish
,还可以自动检测您正在输入的脚本,这样您就根本不需要标记许多语言。
\documentclass[12pt,a4paper,oneside]{scrbook}
\tracinglostchars=2
\usepackage[english]{babel}
\usepackage{fontspec}
\usepackage{csquotes}
%\setotherlanguage{chinese}
\usepackage{xstring}
\babelprovide[import=zh-hant, onchar=ids fonts]{chinese}
% Or import=zh-hans for Simplified Chinese.
\defaultfontfeatures{ Ligatures=TeX,
Scale=MatchUppercase }
\babelfont{rm}
[Ligatures=Common, Scale=1.0]{Latin Modern Roman}
\babelfont[chinese]{rm}
[Renderer=HarfBuzz]{AR PL Uming TW}
% Enable \textenglish, \begin{english}, etc.
\babeltags{english=english}
\babeltags{chinese=chinese}
\begin{document}
The common transliteration of 易经 is {\enquote{I Ching,}}
following the now-obsolete Wade-Giles system: modern Romanization
of almost all modern Chinese texts follows the Hanyu Pinyin standard used here.
See [huang].
\end{document}