跳转至

使用LaTeX排版中文文档

默认情况下,pdflatex是无法识别unicode字符的,而xelatex可以识别unicode字符。所以我推荐使用xelatex编译器来编译含有中文字符(当然也包括其他unicode字符,例如日文、韩文等)的LaTeX文档。

不过,虽然xelatex可以识别unicode字符,但默认情况下任然没法编译中文文档。因为它使用的默认字体没有定义中文的字形。

例如:

unicode.tex
\documentclass{article}
\begin{document}
This is English. 这是中文。これは日本語。이것은 한국어입니다。
\end{document}

如果你直接编译会引发错误:

$ xelatex unicode.tex
This is XeTeX, Version 3.141592653-2.6-0.999995 (TeX Live 2023) 
...
Missing character: There is no 中 (U+4E2D) in font [lmroman17-regular]:mapping=tex-text;!
...

编译出来的PDF中文、日文、韩文会全都消失:

使用中文字体

解决方法很简单,换个字体不就行了。

unicode.tex
\documentclass{article}
\usepackage{fontspec}
\setmainfont{PingFang SC}
\begin{document}
This is English. 这是中文。これは日本語。이것은 한국어입니다。
\end{document}
我们引入了fontspec宏包,然后使用setmainfont命令把主字体改成了苹方字体。就可以正常渲染中文和日文啦:

看来这个字体下韩文还是不行,但我不在乎韩文,我也懒得试其他字体了。

使用中文模版

我们还可以使用ctex提供的中文模版:ctexartctexrepctexbookctexbeamer等。

我们的例子可以改成:

unicode.tex
\documentclass{ctexart}
\begin{document}
This is English. 这是中文。これは日本語。이것은 한국어입니다。
\end{document}

这样就可以使用xelatex直接编译了(注意,这个模版的页码在右上角!):

韩文还是炸裂了。

使用ctex宏包

如果你不方便更改模版(你想投稿Science,必须它提供的模版),还可以把ctex作为宏包引入:

unicode.tex
\documentclass{article}
\usepackage{ctex}
\begin{document}
This is English. 这是中文。これは日本語。이것은 한국어입니다。
\end{document}

效果和替换模版是类似的:

当然,你也可以用其他的包,例如xeCJK

unicode.tex
\documentclass{article}
\usepackage{xeCJK}
\begin{document}
This is English. 这是中文。これは日本語。이것은 한국어입니다。
\end{document}

效果也差不多:

本质上都是换了字体。


最后更新: 2024-05-29 21:23:23
创建日期: 2024-05-29 21:23:23

评论