Latex 对中文字体设置的一些解决

写在开头

动机:使用 TeX 编排文档虽不能像 Word 等所见即所得,但它可以满足你几乎任何版式要求。

手段:通过任何纯文本编辑器或者 TeX 编辑器,将你的内容按规定格式写入 .tex 文件。再根据排版引擎编译 .tex 文件,最终得到目标文档。

阻碍:直接使用 XeLaTeX 编译带中文的文件时,会出现空白,这是因为默认选择的字体不支持中文,这时可以【1】、使用如 \usepackage{fontspec},把默认字体更改成支持中文的字体;【2】、使用 CTeX 文档类、ctex 宏包或 xeCJK 宏包调用中文字体。实现如下:

英文默认字体为:Computer Modern Roman [CMR],由Donald Knuth创建,但是不支持中文,需要设置成支持中文的字体 - {来自:Egg's Blog}。既然要应用于中文环境,排版格式等要求也应符合中文习惯,仅仅改变字体是不够的。

!!!本文都是在 XeLaTeX 编译器下进行的,内容也仅限于XeLaTeX!!! 了解各种编译器的联系,请转-传送门

使用CTeX文档类\ctex宏包

CTeX 宏集会根据用户使用的编译方式,在底层选择不同的中文支持方式,(此部分内容来自CTeX宏集手册)CTeX 宏集用不同的编译方式如:pdfLaTeX,XeLaTeX,LuaLaTeX 和 upLaTeX 处理中文排版会选择不同的宏包

%在导言区使用以下代码,获得中文支持

\documentclass[utf8,a4paper,12pt] {ctexart}

%或者

\documentclass {article}

\usepackage {ctex}

设置完成后,中文默认字体为 宋体,如需改变,可以使用表格中的命令对中文字体进行设置,windowsnew 的字库中包括以下字体:

字体

命令1

命令2

宋体

\songti

\CJKfamily

黑体

\heiti

\CJKfamily

仿宋

\fangsong

\CJKfamily

楷书

\kaishu

\CJKfamily

隶书

\lishu

\CJKfamily

圆体

\youyuan

\CJKfamily

微软雅黑

\yahei

\CJKfamily

注: \CJKfamily{family}:切换CJK字体族为 〈family〉

使用如下代码:

\documentclass[12pt,a4paper,utf8]{ctexart}

\begin{document}

\noindent 中文字体(默认宋体)\\

\fangsong 中文字体(仿宋) \songti 中文字体(宋体) \lishu 中文字体(隶书) \heiti 中文字体(黑体)\\

\CJKfamily{zhkai} 中文字体(楷书) \CJKfamily{zhyou} 中文字体(幼圆) \CJKfamily{zhyahei} 中文字体(微软雅黑)\\

\end{document}

得到:

-------------- 人为分界线 ----------------

不建议使用 \textrm{},\textsf{},\texttt{} 来改变中文的字体,**中文字体的选择与西文字体是分离的**。

以下内容只是我无聊的实验而已,目前还解释不清:

\textrm{} 相当于默认字体,即中文宋体,英文罗马

\textit{} 默认中文楷书,若前面定义过下文中文字体,则为定义字体,英文斜体

\textsf{} 中文微软雅黑,英文无衬线体

\texttt{} 中文仿宋,英文等宽字体

注意 textsf 会改变中文标点符号

但常规的字体加粗如 \textbf{} 可以互用

使用xeCJK宏包

在始终的博客里,一份其实很短的 LaTeX 入门文档中提到,大多数情况下不推荐使用xeCJK宏包

知乎有相关讨论 处理中文时应该用ctex宏包还是应该用xeCJK宏包?

打个比方说的话,ctex包若是一辆车,xeCJK就是个轮子。轮子是车子的重要零件,但我还是建议你开车,把装轮胎的事交给工程师。

----- 来自知乎用户

xeCJK是一个Xelatex宏包,前面使用CTeX文档类或者ctex宏包时,若通过Xelatex编译则会自动配置xeCJK宏包来排版字体,这一步骤已经封装好,且够用。(-车子轮胎- 的大意,若想实现某些骚操作,则可查阅xeCJK的使用)

xeCJK只提供了字体和标点控制等基本CJK语言支持。在这里,对xeCJK宏包的字体设置进行简单说明,引入xeCJK宏包只要在导言区使用:

\usepackage {xeCJK}

\setCJKmainfont {font name}

% 设置正文罗马族的CJK字体,影响\rmfamily和\textrm 的字体

\setCJKsansfont {font name}

% 设置正文无衬线族的CJK字体,影响\sffamily和\textsf 的字体

\setCJKmonofont {font name}

% 设置正文等宽族的CJK字体,影响\ttfamily 和 \texttt 的字体

windows下预装的中文字体有:

Arial Unicode MS

FangSong,仿宋

KaiTi,楷体

Microsoft YaHei,微软雅黑

MingLiU,细明体

NSimSun,新宋体

PMingLiU,新细明体

SimHei,黑体

SimSun,宋体

只要将font name改为上述字体名称(英)即可

最后更新于 2021年12月7日 --- 最初发表于 2019年12月20日

原创作者:LitBro

关于作者:咕咕咕

本文链接: [https://www.cnblogs.com/LitBro/p/12074820.html]

版权声明:本文采用 BY-NC-SA协议,转载或引用请注明出处!

关于后续:学业不精,如有描述不当,还请见谅并非常感谢指出

浣熊、貉狸、小熊猫,到底谁才是真正的“干脆面君”?
天水圍年花店$300蘋果樹!街坊行50米跌蘋果驚悉假貨 欲退貨被罵