如何在 LaTeX 中输入中文?

如何在 LaTeX 中输入中文?

有人能描述一下如何在 LaTeX 中输入中文吗?当我编译这个时:

\documentclass{article}
\begin{document}
 你好吗?
\end{document}

生成的文档什么都没显示。作为参考,我的 IME 是 Fedora 13 上的 iBus 1.3.9。

答案1

最简单的方法是(仅适用于简体中文文档):

% UTF-8 encoding
% Compile with latex+dvipdfmx, pdflatex, xelatex or lualatex
% XeLaTeX is recommanded
\documentclass[UTF8]{ctexart}
\begin{document}
文章内容。
\end{document}

或者

\documentclass{article}
\usepackage[UTF8]{ctex}
...

它是为中文排版设计的。字体大小、缩进、名称翻译、行距……一切都已设置好。

对于最新版本的ctex软件包(v2.x),XeLaTeX 经过充分测试,支持 Windows/Mac/Linux。应自动选择操作系统中预装的正确字体。


如果仅仅想排版几个汉字,可以使用CJKpdfLaTeX,也可以xeCJK使用XeLaTeX。

% Compile with xelatex
% UTF-8 encoding
\documentclass{article}
\usepackage{xeCJK}
\setCJKmainfont{SimSun}
\begin{document}
文章内容
\end{document}

或者

% UTF-8 encoding, pdflatex or latex+dvipdfmx
% Simplified Chinese fonts should be installed
\documentclass{article}
\usepackage{CJKutf8}
\AtBeginDvi{\input{zhwinfonts}}
\begin{document}
\begin{CJK*}{UTF8}{zhsong}
文章内容。
\clearpage\end{CJK*}
\end{document}

或者

% UTF-8 encoding
% bad-looking fonts (CJKfonts package)
% latex+dvips, latex+dvipdfm(x) or pdflatex
\documentclass{article}
\usepackage{CJKutf8}
\begin{document}
\begin{CJK*}{UTF8}{gbsn}
文章内容。
\clearpage\end{CJK*}
\end{document}

答案2

我在 XeLaTeX 和XeCJK软件包下使用中文,它允许将 CJK 与您自己的字体一起使用。非常方便。

首先,看一下周百祥的网站. 这应该可以帮助您入门。

tex.SE 上还有其他关于使用fontspec两种或多种字体以及如何获取完整中文字符集的重要评论,但您可以稍后再担心这些问题。

答案3

我最近在 Fedora 16 上遇到了这个问题。由于没有选择正确的中文字体,所以你什么也看不到,因为 Windows、Mac 和 Linux 上的中文字体是不同的。

在 Linux 上找到适合某种语言的字体的技巧是:

$ fc-list :lang=zh   

Fedora 16 上默认的中文字体是:

文泉驿正黑,文泉驛正黑,文泉驿正黑:style=Regular

在你的 Fedora 13 系统上它可能是:

AR PL UMing TW:style=Light
AR PL UMing CN:style=Light

(我来自台湾,所以我使用以 TW 结尾的繁体中文版本。对于简体中文,您需要“AR PL UMing CN”。)要在 Fedora 上安装中文字体等,请运行:

yum groupinstall 'Chinese Support'

将您的 LaTeX 源更改为:

\documentclass{article}
\setromanfont{AR PL UMing CN}
\begin{document}
你好吗?
\end{document}

你就会看到中文了。

上面的代码片段是为了帮助您诊断中文字体问题。对于实际工作,我赞同 xeCJK 包的建议。我的个人设置已记录这里

由于字体不同,无法在 Windows、Mac 和 Linux 上排版相同的中文、日文等 LaTeX 源,这确实很麻烦,但这并不是 XeTex 独有的。使用latex + dvipdfmxpdflatex时也同样麻烦。

答案4

仅针对我的具体用例进行说明:我想在我的 .bib 文件中(使用 biber)使用几个中文字符作为 Unicode;要像这样编译它们,我可以成功使用包{ctex}- 不幸的是,它会破坏我原本使用的文档类中的某些格式。事实证明,包{CJKutf8}对我来说没有破坏 - 但与 不同{ctex},它不能直接读取 unicode 字符 - 我们必须将它们包装在环境中,这对我来说对于 .bib 文件来说很不方便。

因此,由于我只有几个,我决定手动声明 unicode 字符,以用于{CJKutf8}“渲染”字形。假设我只想渲染上述示例中的“文章” - 因此我首先使用我的utfinfo.pl

$ echo 文章 | perl utfinfo.pl
Got 2 uchars
Char: '文' u: 25991 [0x6587] b: 230,150,135 [0xE6,0x96,0x87] n: CJK UNIFIED IDEOGRAPH 6587 [CJK Unified Ideographs]
Char: '章' u: 31456 [0x7AE0] b: 231,171,160 [0xE7,0xAB,0xA0] n: CJK UNIFIED IDEOGRAPH 7AE0 [CJK Unified Ideographs]

pdflatex test.tex知道这一点,就可以使用中的指导方针构建一个有效的 MWE(并且可以编译)[Cjk 邮件列表] CJKchar 问题

\documentclass{article}
\usepackage{CJKutf8}

% NOTE: this may require the font simsun.ttc in the same directory as this .tex file!

% [http://lists.ffii.org/pipermail/cjk/2007-November/002045.html [Cjk] Problem with CJKchar]
\newcommand{\Chi}[2]{%
  \csname CJK*\endcsname{UTF8}{zhsong}%
    \CJKchar{#1}{#2}%
  \csname endCJK*\endcsname
}

% 文: 0x6587
% \DeclareUnicodeCharacter{6587}{\begin{CJK*}{UTF8}{zhsong}文\end{CJK*}} % nope
% \DeclareUnicodeCharacter{6587}{\CJKfamily{zhsong}文} %                 % nope
% \DeclareUnicodeCharacter{6587}{\CJKchar[UTF8]{"65}{"87}}               % nope
% \DeclareUnicodeCharacter{6587}{\Unicode{"65}{"87}} %               % cant use
\DeclareUnicodeCharacter{6587}{\Chi{"65}{"87}} % YES!

% 章: 0x7AE0
\DeclareUnicodeCharacter{7AE0}{\Chi{"7A}{"E0}} %

\AtBeginDvi{\input{zhwinfonts}} % MUST have! for \usepackage{CJKutf8}

\begin{document}

% macro test:
\Chi{"65}{"87}\Chi{"7A}{"E0}    % ok

% direct unicode chars:
文章                             % ok
\end{document}

编辑:还请注意,在实际的文档中,参考书目必须至少\Chi{...在文档主体中有一个,否则参考书目部分会崩溃;将其放入\phantom不起作用,我不喜欢在文档中插入虚假字符。事实证明,除了\Chi,人们可以“手动”启动 CJKutf8 环境,如下所示:

\makeatletter
\let\CJK@ignorespaces\relax % else the below breaks..
\CJK@envStart{}{UTF8}{zhsong}
\makeatother
\printbibliography

相关内容