我正在用英语写一份文件。但是,我需要使用一些日语和俄语单词。原则上,它似乎有效,但是一旦我使用日语字符,我就无法使用俄语字符。请注意,对我而言,使用 pdflatex 编译文档至关重要。
这里有两个最简单的例子来说明我的问题。
这个有效:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T2A,T1]{fontenc}
\usepackage{CJK}
\begin{document}
{\fontencoding{T2A}\selectfont ф}
\begin{CJK}{UTF8}{min}
ル
\end{CJK}
\end{document}
但事实并非如此:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T2A,T1]{fontenc}
\usepackage{CJK}
\begin{document}
{\fontencoding{T2A}\selectfont ф}
\begin{CJK}{UTF8}{min}
ル
\end{CJK}
{\fontencoding{T2A}\selectfont ф}
\end{document}
我不知道为什么。在第二种情况下,我收到以下错误消息:
! Undefined control sequence.
\CJK@XX ...r `#1\endcsname {`#2}\CJK@ignorespaces
\fi
l.12 {\fontencoding{T2A}\selectfont ф
}
我找不到任何解释,如果能得到任何帮助我将非常感激。
答案1
嗯,似乎 CJK 包正在将一些定义全局化,但也许不应该。您可以inputenc
像这样重置设置:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T2A,T1]{fontenc}
\usepackage{CJK}
\begin{document}
{\fontencoding{T2A}\selectfont ф}
\begin{CJK}{UTF8}{min}
ル
\end{CJK}%
\sbox0{\input{utf8.def}}%
{\fontencoding{T2A}\selectfont ф}
\end{document}
答案2
大卫卡莱尔的解决方案虽然有效,但还不够好。
事实上,有一个包可以解决和包可能冲突CJKutf8
的问题。inputenc
CJK
以下是一个例子:
\documentclass{article}
\usepackage[T2A]{fontenc}
\usepackage{CJKutf8}
\begin{document}
\begin{CJK}{UTF8}{min}
ру́сский: абвгдеАБВГДЕ
English: abcdefABCDEF
日本語:ぁぃぅぇぉか
\clearpage\end{CJK}
\end{document}
笔记:
请始终
CJK
全局使用环境,除非您知道自己在做什么。
额外的环境\clearpage
用于解决CJK
包文档中描述的一个旧 bug。T2A
如果您只使用英语使用的基本拉丁字母,字体编码就足够了。但是,如果您需要更多重音字母,您可以手动混合T1
和T2A
字体编码。对于多语言文档,我认为使用 XeLaTeX 或 LuaLaTeX 总是更好的选择。对于 XeLaTeX,使用我们的
xeCJK
软件包来支持自动字体选择和其他功能。对于 LuaLaTeX,使用luatexja
捆绑包来支持类似的功能。