如何在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文件。
推薦閱讀: