我正在写一份 99% 都是英文的文件,但需要一些其他语言的单词,包括泰语、日语和中文。后两种语言我都成功了,但泰语就不行了。以下是 MNWE:
\documentclass{article}
\usepackage{CJKutf8}
\begin{document}
Japanese: \begin{CJK}{UTF8}{min}結核\end{CJK}
Chinese: \begin{CJK}{UTF8}{bsmi}結核\end{CJK}
Thai: \begin{CJK}{UTF8}{gar}ไข้เด็งกี\end{CJK} % <-- fail
\end{document}
编译失败,显示:
LaTeX Font Warning: Font shape `C70/gar/m/n' undefined
(Font) using `C70/song/m/n' instead on input line 9.
(/usr/local/texlive/2013/texmf-dist/tex/latex/cjk/texinput/UTF8/c70song.fd)
./b0rken.tex:9: Undefined control sequence.
try@size@range ...extract@rangefontinfo font@info
<-*>@nil <@nnil
l.9 Thai: \begin{CJK}{UTF8}{gar}ไข
้เด็งกี\end{CJK} % <-- ...
注释掉“失败”行可以成功编译日文和中文字符,它们应该出现在输出中。
这是使用 MacTeX 2013。我确实安装了cjk
和fonts-tlwg
包。我还有几个c90*
文件,包括c90gar.fd
和c90nrsr.fd
。
我确实需要使用普通的 pdfTeX 而不是 XeTeX。
答案1
要使用泰语字体,我们不需要加载CJK
包,而是babel
需要包。
要使用编码中的字体C90
,我们可以使用包thaicjk
的选项babel
。
\documentclass{article}
\usepackage[utf8x]{inputenc}
% English is the main language
\usepackage[thaicjk,english]{babel}
\addto\extrasthaicjk{\fontencoding{C90}\selectfont}
% Hack into CJKutf8 package for an option clash error
\makeatletter
\@namedef{[email protected]}{utf8}
\makeatother
\usepackage{CJKutf8}
\begin{document}
Japanese: \begin{CJK}{UTF8}{min}結核\end{CJK}
Chinese: \begin{CJK}{UTF8}{bsmi}結核\end{CJK}
Thai: \foreignlanguage{thaicjk}{ไข้เด็งกี}
\end{document}
或者,我们也可以在编码中使用字体LTH
。在这种情况下,我们需要使用thai
babel 的选项。请参阅babel-thai
。
\documentclass{article}
\usepackage[utf8x]{inputenc}
% English is the main language
\usepackage[thai,english]{babel}
% Hack into CJKutf8 package for an option clash error
\makeatletter
\@namedef{[email protected]}{utf8}
\makeatother
\usepackage{CJKutf8}
\begin{document}
Japanese: \begin{CJK}{UTF8}{min}結核\end{CJK}
Chinese: \begin{CJK}{UTF8}{bsmi}結核\end{CJK}
Thai: \textthai{ไข้เด็งกี}
\end{document}