標籤:

如何在Latex中輸入中文

Keywords: 中文字體設置; LaTex; xelatex; Chinese character; 楷體; 宋體; 仿宋; 隸書; 黑體; 幼圓; 行楷;

說明:這是我第一次在知乎中寫東西,內容是從我的 wordpress 中直接拷貝來的。主要目的是感受下知乎

ctex簡單介紹:

  • ctex 宏包提供有3個 options (nofonts, adobefonts, and winfonts respectively), 默認使用的是winfonts 選項。
  • 如果使用 nofonts 選項, 則需要通過 CJK package 中文方案將 OS (in my case, Ubuntu) 自帶的中文字體設置成中文默認字體。
  • 若使用 adobefonts 選項, 則需要操作系統中安裝有 Adobe 公司的四個 OpenType 字體: Adobe宋體、 Adobe黑體、 Adobe仿宋、 Adobe楷體。你若不肯定 adobefonts 是安裝,可以查看 fontset directory of the local path of ctex (in my case),

/usr/share/texlive/texmf-dist/tex/latex/ctex/fontset/ctex-xecjk-adobefonts.dev

  • 這裡側重講 winfonts 的使用。 一般的, OS 中安裝有中文 Windows OS 自帶的四種 TureType 字體:宋體、黑體、仿宋體、楷體。而隸書和幼圓字體是被 disabled or deactivated。需要激活時直接在 ctex-xecjk-winfonts.def 中 uncomment 他們,

%setCJKfamilyfont{zhli}{LiSu}

%setCJKfamilyfont{zhyou}{YouYuan}

%
ewcommand*{lishu}{CJKfamily}{zhli}

%
ewcommand*{youyuan}{CJKfamily}{zhyou}

  • 但是這是基於一個前提的,就是你系統中安裝有這些字體。請在terminal 中輸入

fc-lish :lang-zh-cn

或者

fc-lish :lang=zh-cn | grep Sim

來查看是否有隸書、楷體、仿宋、宋體、黑體、幼圓 6個默認字體。

測試:

xelatex example.tex

編譯一下example.tex,

documentclass{ctexart}
egin{document}
您好,LaTeX!

ctex 宏包提供了三個字體選項: nofonts、adobefonts 和 winfonts,默認使用的是 winfonts。如果在 tex 源文件中沒有使用其他選項修改字體配置, 則需要操作系統中安裝有中文 Windows 操作系統自帶的四種 TrueType 字體: 宋體(SimSun)、黑體(SimHei)、仿宋體(FangSong)、楷體(KaiTi)。 其餘字體比如隸書(LiShu)、新宋體(NSimSun)、幼圓(YouYuan)、行楷(STXingkai)可以自行安裝。

如果使用 adobefonts 選項,則需要操作系統中安裝有 Adobe 公司的四款 OpenType 字體:Adobe 宋體、Adobe 黑體、Adobe 仿宋、Adobe 楷體。

此處我們打算使用 nofonts 選項,然後通過 CJK 中文方案將 ubuntu自帶的中文字體設置成中文的默認字體。

end{document}

如果得到 error, "font-not-found", 進入下面的設置部分。

設置:

讓系統可以使用 texlive 的字體,請

cd /etc/fonts/conf.d

sudo ln -s /usr/share/texlive/texmf-dist/tex/latex/ctex/fontset/ctex-xecjk-winfonts 09-texlive.conf

然後將下載的字體(鏈接 or my google drive if possible)解壓後,拷貝到新建 winfonts 目錄下,然後修改許可權和刷新字體庫

cd /usr/share/fonts

sudo mkdir winfonts && cd winfonts

sudo chmod 644 *

sudo mkfontscale

sudo mkfontdir

sudo fc-cache -fsv

打開 ctex-xecjk-winfonts.def 文件 (在路徑 /usr/share/texlive/texmf-dist/tex/latex/ctex /fontset/ 下)

vim /usr/share/texlive/texmf-dist/tex/latex/ctex/fontset/ctex-xecjk-winfonts.def

內容如下:

% ctex-xecjk-winfonts.def: Windows 的 xeCJK 字體設置,默認為六種中易字體
% vim:ft=tex

setCJKmainfont[BoldFont={SimHei},ItalicFont={SIMKAI.TTF}]
{SimSun}
setCJKsansfont{SimHei}
setCJKmonofont{SIMFANG.TTF}

setCJKfamilyfont{zhsong}{SimSun}
setCJKfamilyfont{zhhei}{SimHei}
setCJKfamilyfont{zhkai}{[SIMKAI.TTF]}
setCJKfamilyfont{zhfs}{[SIMFANG.TTF]}
%setCJKfamilyfont{zhli}{LiSu}
%setCJKfamilyfont{zhyou}{YouYuan}


ewcommand*{songti}{CJKfamily{zhsong}} % 宋體

ewcommand*{heiti}{CJKfamily{zhhei}} % 黑體

ewcommand*{kaishu}{CJKfamily{zhkai}} % 楷書

ewcommand*{fangsong}{CJKfamily{zhfs}} % 仿宋
%
ewcommand*{lishu}{CJKfamily{zhli}} % 隸書
%
ewcommand*{youyuan}{CJKfamily{zhyou}} % 幼圓

endinput

如上所述, 先 uncomment 你想要的字體。最後一步,將此文件中的字體名匹配成你電腦有的文字名, 用

fc-list :lang=zh-cn | grep Sim

來查看字體名,輸入大致如下:

$PATH: LiSu, 隸書: stylex=Regular
$PATH: KaiTi, 楷體: stylex=Regular, Normal
$PATH: FangSong, 仿宋: stylex=Regular, Normal
$PATH: SimSun, 宋體: stylex=Regular
$PATH: SimHei, 黑體: stylex=Regular, Normal
$PATH: YouYuan, 幼圓: stylex=Regular

所以, in my case, 修改 SIMKAI.TTF 為 KaiTi; 修改SIMFANG.TTF 為 FangSong; 如果需要行楷字體,也可以增加相應的命令行:

% ctex-xecjk-winfonts.def: Windows 的 xeCJK 字體設置,默認為六種中易字體
% vim:ft=tex

setCJKmainfont[BoldFont={SimHei},ItalicFont={KaiTi}]
{SimSun}
setCJKsansfont{SimHei}
setCJKmonofont{FangSong}

setCJKfamilyfont{zhsong}{SimSun}
setCJKfamilyfont{zhhei}{SimHei}
setCJKfamilyfont{zhkai}{KaiTi}
setCJKfamilyfont{zhfs}{FangSong}
setCJKfamilyfont{zhli}{LiSu}
setCJKfamilyfont{zhyou}{YouYuan}
setCJKfamilyfont{zhxkai}{STXingkai}


ewcommand*{songti}{CJKfamily{zhsong}} % 宋體

ewcommand*{heiti}{CJKfamily{zhhei}} % 黑體

ewcommand*{kaishu}{CJKfamily{zhkai}} % 楷書

ewcommand*{fangsong}{CJKfamily{zhfs}} % 仿宋

ewcommand*{lishu}{CJKfamily{zhli}} % 隸書

ewcommand*{youyuan}{CJKfamily{zhyou}} % 幼圓

ewcommand*{xingkai}{CJKfamily{zhxkai}} % 華文行楷
endinput

重新執行編譯後

xelatex example.tex

,應該可以看到通過的pdf文件。

推薦閱讀:

TAG:LaTeX | Ubuntu | macOS |