1. 程式人生 > >Ubuntu 14.04/14.10 系統安裝 Latex及配置中文字型[修訂]

Ubuntu 14.04/14.10 系統安裝 Latex及配置中文字型[修訂]

Linux下的中文字型,對於Ubuntu來說有現成的。因此,只要第一步正常安裝完畢,就可以用下面的測試檔案進行測試。

	\documentclass{article}
	\usepackage{CJKutf8}
	\begin{document}
	\begin{CJK}{UTF8}{gkai}
	這是一個楷體中文測試,處理簡體字。
	\end{CJK}
	\begin{CJK}{UTF8}{gbsn}
	這是一個宋體中文測試,處理簡體字。
	\end{CJK}
	\begin{CJK}{UTF8}{bkai}
	這是一個big5編碼的楷體中文測試,處理繁體文字。
	\end{CJK}
	\begin{CJK}{UTF8}{bsmi}
	這是一個個big5編碼的明體中文測試,處理繁體文字。
	\end{CJK}
	\end{document}
將這部分程式碼貼上到文字檔案中,然後儲存將其儲存為test.tex。然後使用下面的命令生成PDF文件。
		pdflatex test.tex
		evince test.pdf
如果編譯tex文件時沒有出錯,對於宋體和楷體,應該看到希望的字型正確顯示(參考下圖的示例)。


二、準備其他中文字型包

不過,為了得到更好地支援,常常會使用Windows既有的TrueType字型或者文泉驛字型,以便擴充現有的系統字型庫。對於Linux,安裝fontforge可以方便地生成能被Latex識別的字型檔案(map、enc等檔案)。
sudo apt-get install fontforge
因為Windows的字型涉及版權問題,而且我個人覺得文泉字型更美觀,所以我選擇文泉字型生成字型地圖。

(注:原文推薦下載font.tar.bz2,但是此壓縮包很難下載,加上如果使用文泉字型該包可以不需要,因此不必糾結)。

步驟1:將包括wqy-microhei.ttc等相關檔案都複製到~/cnfont裡去,執行下面的命令生成字型地圖:

$mkdir ./cnfont
$cd ~/cnfont
$cp /usr/share/texlive/texmf-dist/fonts/sfd/ttf2pk/Unicode.sfd ./
$cp /usr/share/fonts/truetype/wqy/wqy-microhei.ttc ./
$cp /usr/share/latex-cjk-common/utils/subfonts/subfonts.pe ./
$cp /usr/share/latex-cjk-common/utils/subfonts/vertical.pe ./
$cp /usr/share/latex-cjk-common/utils/subfonts/makefdx.pl ./
$ time fontforge -script subfonts.pe wqy-micorhei.ttc hei Unicode.sfd

注:原文中步驟如下,遺漏拷貝重要檔案的步驟,此處已修正。按上述命令操作,在Ubuntu 14.10上已通過驗證。
cd ~/fonttime fontforge -script subfonts.pe simsun.ttc song Unicode.sfd
在我的電腦上,生成文泉驛的字型地圖花了2-3分鐘。

步驟2:接下來,
在~/cnfont下,建立一個makemap.sh檔案,內容如下( 沒有空格):
for i in *.tfm
do
cat >> song.map << EOF
${i%.tfm} ${i%.tfm} < ${i%.tfm}.pfb
EOF
done

然後在終端下執行:chmod +x makemap.sh讓檔案加上執行許可權,最後執行:

./makemap.sh
編寫此配置檔案的時候可能會需要查詢CJK擴充套件包的版本,可以參考附註中的步驟操作。

步驟3:將步驟1、2中生成的各種字型配置檔案拷貝到系統的指定目錄。(相關操作的詳細含義可參考)
$sudo mkdir -p /usr/share/texmf/fonts/type1/latex-cjk-cn/hei
$sudo cp *pfb /usr/share/texmf/fonts/type1/latex-cjk-cn/hei

$sudo mkdir -p /usr/share/texmf/fonts/afm/arphic/hei
$sudo cp *afm /usr/share/texmf/fonts/afm/arphic/hei/

$mkdir -p /usr/share/texmf/fonts/tfm/latex-cjk-cn/hei
$sudo cp *tfm /usr/share/texmf/fonts/tfm/latex-cjk-cn/hei/

$sudo mkdir -p /usr/share/texmf/fonts/enc/dvips/latex-cjk-cn/hei
$sudo cp *enc /usr/share/texmf/fonts/enc/dvips/latex-cjk-cn/hei/

$sudo mkdir -p /usr/share/texmf/fonts/map/dvips/latex-cjk-cn
$sudo cp hei.map /usr/share/texmf/fonts/map/dvips/latex-cjk-cn


再建立一個文字檔案,命名為“c70hei.fd”檔案:
% This is the file c70hei.fd of the CJK package
% for using Asian logographs (Chinese/Japanese/Korean)
% with LaTex2e
% 
% created by the Debian source package for
% CJK Version 4.8.3 (30-1-2015)
\def\fileversion{4.8.3}
\def\filedate{2012/09/14}
\ProvidesFile{c70hei.fd}[\filedate\space\fileversion]
% character set: UTF-8
% font encoding: Unicode

\DeclareFontFamily{C70}{hei}{\hyphenchar\font\[email protected]} 
\DeclareFontShape{C70}{hei}{m}{n}{<-> CJK * hei}{\CJKnormal}
\DeclareFontShape{C70}{hei}{bx}{n}{<-> CJKb * hei}{\CJKbold}
\endinput

將編輯完畢的c70hei.fd檔案拷貝到配置目錄。
$sudo cp c70hei.fd /usr/share/texmf/tex/latex/CJK/UTF8/

步驟5:
複製完後,執行字型地圖更新命令重新整理快取,讓配置生效:
sudo texhash
updmap-sys --enable Map hei.map

假如一切順序的話, 就測試一下我們安裝的文泉驛米黑體能否使用。

可以在$HOME目錄下編輯如下文字檔案,然後儲存為"test.tex",支援UTF-8格式:

	\begin{CJK}{UTF8}{gbsn}
	這是一個宋體中文測試,處理簡體字。
	\end{CJK}
	\documentclass{article}
	\usepackage{CJKutf8}
	\begin{document}
	\begin{CJK}{UTF8}{gkai}
	這是一個楷體中文測試,處理簡體字。
	\end{CJK}
	\begin{CJK}{UTF8}{hei}
	這是一個黑體中文測試,處理簡體字。
	\end{CJK}
	\begin{CJK}{UTF8}{bkai}
	這是一個big5編碼的楷體中文測試,處理繁體文字。
	\end{CJK}
	\begin{CJK}{UTF8}{bsmi}
	這是一個個big5編碼的明體中文測試,處理繁體文字。
	\end{CJK}
	\end{document}

執行分別生成pdf文件和用evince來檢視文件:

pdflatex test.tex
evince test.pdf


一切順利的話,在PDF中應該看到類似下圖的效果。


補充說明:

1)如何確認CJK安裝包的版本。