xetex中文配置

环境:Windows+texstudio+texlive
xetex将使用你系统的字体,也就是说你不用自己去编译字体了。

增加字体设定宏包

  1. 在texlive的命令行下
    使用 $ fc-list :lang=zh-cn 可以看到你的中文字体。
    使用 $ fc-list 可以看到你的所有字体。

  2. D:\Edit\texlive2018\texmf-dist\tex\xelatex\zhfontcfg中创建一个“zhfontcfg.sty” 文件如下(没有zhfontcfg文件夹就自己创建):

% xetex/xelatex 字体设定宏包
\ProvidesPackage{zhfontcfg}
\usepackage{fontspec,xunicode}
\defaultfontfeatures{Mapping=tex-text} %如果没有它,会有一些 tex 特殊字符无法正常使用,比如连字符。

% 中文断行
\XeTeXlinebreaklocale "zh"
\XeTeXlinebreakskip = 0pt plus 1pt minus 0.1pt

%将系统字体名映射为逻辑字体名称,主要是为了维护的方便
\newcommand\fontnamehei{Microsoft YaHei}
\newcommand\fontnamesong{SimSun}
\newcommand\fontnamekai{KaiTi}
\newcommand\fontnamemono{DejaVu Sans Mono}
\newcommand\fontnameroman{Times New Roman}

%设置文档正文字体为宋体
\setmainfont[BoldFont=\fontnamehei]{\fontnamesong}
\setsansfont[BoldFont=\fontnamehei]{\fontnamekai}
\setmonofont{\fontnamemono}


%楷体
\newfontinstance\KAI{\fontnamekai}
\newcommand{\kai}[1]{{\KAI #1}}

%黑体
\newfontinstance\HEI{\fontnamehei}
\newcommand{\hei}[1]{{\HEI #1}}

%英文
\newfontinstance\ENF{\fontnameroman}
\newcommand{\en}[1]{\,{\ENF #1}\,}
\newcommand{\EN}{\,\ENF\,}
  1. 执行texhash(或mktexlsr )更新。一切ok.用xelatex编译,你的文档将不含任何乱码,包括书签,

中文字体的使用

简单的按照这个例子做就行了:

\documentclass{article} 

\usepackage{zhfontcfg} 
\usepackage[colorlinks,linkcolor=black]{hyperref} 
%opening 
\title{latex多字体简易示例} 

\begin{document} 
\maketitle 
\section{楷体} 
\kai{楷体} 
\section{黑体} 
\hei{黑体} 
\end{document} 

推荐字体

一般使用的字体有三套。

一是在Linux下常用的文泉驿字体,但它不适合写正式的文档。

二是在网上下载Adobe的四套字体,分别是宋体、仿宋、黑体和楷体。

三是可以拷贝Window下的字体。但是这涉及到版权问题。如果确实想用,可以在 百度上搜索“方正楷体”、“方正宋体”,等等。

使用字体的方法如下:

  1. 先拷贝字体到C:\Windows\Fonts下的相应的子目录中,然后运行fc-cache更新系统的字体缓存。
  2. 在xeCJK中,设置主字体是使用\setCJKmainfont命令(因为我们的CTeX会调 用xeCJK,因此可以使用xeCJK中的命令)。
  3. 具体的字体名字可以用fc-list :zh-cn命令来查看。

CTeX和xeCJK的关系
二者都是宏包,但是,CTeX是一个上层的中文LaTeX宏包。它的下层是可选的,可 以支持xeCJK、CJK,甚至更老的CCT宏包。对于不同的下层宏包它进行不同的设 置。xeCJK完全可以脱离CTeX使用,但是这样你虽然不用担心字体,同样也不能享 受到CTeX的中文版式。

其他设置

  1. 如果你的系统中没有CTeX要求的全套六种字体,则一定要在\usepackage{ctex} 的选项中加上adobefonts
    这样一来CTeX会用相应的Adobe字体去代替它要求的六套字体。不然有时会出现 找不到字体的现象,尤其是使用特殊字体的时候,比如在verbtim环境中。

  2. 一般情况下,中文文档中是不使用斜体的。因此在CTeX调用xeCJK时,默认是不使用斜体的,所以你就算在文档中使用\textsl{},最终也不会产生任何斜体效果。
    如果你真的要用,就要修改/ctex/engine/ctex-xecjk-engine.def6中 的一行:
    \RequirePackage[BoldFont,normalindentfirst]{xeCJK}
    改为:
    \RequirePackage[BoldFont,slantfont,normalindentfirst]{xeCJK}

使用CTeX的两种方法

第一种是直接使用CTeX的文档类。

\documentclass[adobefonts]{ctexart}

第二种是使用CTeX包。

\usepackage[adobefonts]{ctex}

二者的区别是:当通过\usepackage来使用CTeX包时,产生的仍然是”CONTENTS”、”INDEX”,而不是“目录”、“索引”。

当然,如果要用其他类作为文档类,就必须使用第二种方式了,最典型就是 用beamer类做幻灯片的时候了。

这时,如果要使用中文的“目录”、“摘要”等样式,可以使用这两条命 令:

\renewcommand*\contentsname{目录}  
\renewcommand*\abstractname{摘要}

还有一个更折腾的方法。修改一下ctex/ctex.sty文件,在其中添加一 句

\input{ctex-caption.def}

这样就一直保持中文的名称了。

你可能感兴趣的:(LaTeX)