Linux下的TeXlive 2015 中文問題,texlive2015
據說可實現Linux下TeXlive中英混排的方法:
1. 本方法來自http://seisman.info/mini-template-for-xeCJK.html
xeCJK + xeLaTeX,這大概是目前為止最優的中文解決方案。
\documentclass{article}\usepackage{xeCJK}
xeCJK將預設使用TeXLive內建的Fandole字型。要能夠編譯通過,需要將TeXLive內建的中文字型安裝到系統中,最簡單的辦法是在~/.fonts目錄下建一個軟連結:
ln -s /opt/texlive/2014/texmf-dist/fonts/opentype/public/fandol ~/.fonts/
然後使用xelatex命令編譯foo.tex即可。
2.本方法來自http://www.cnblogs.com/lienhua34/p/3675027.html。相比方法1,這大概是較舊的TeXlive實現中英文混排的的方式(?)。
在一份文檔foo.tex中:
\documentclass{ctexart}\begin{document}你好,\LaTeX!\end{document}
如果直接編譯會出現錯誤:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! fontspec error: "font-not-found"!! The font "SimSun" cannot be found.!! See the fontspec documentation for further information.!! For immediate help type H <return>.!...............................................l.5{SimSun}?
這 是 因 為 ctex 宏 包 默 認 使 用 的 是 windows 系 統 的 字 體, 而 在Linux下 沒 有 windows 系 統 的 字 體或者字型名字已經不是SimSun, 所 以 這 裡 報 了 找 不 到 宋 體(SimSun)的錯誤。
ctex 宏包提供了三個字型選項:nofonts、adobefonts 和 winfonts,預設使用的是 winfonts。
如果在 tex 源檔案中沒有使用其他選項修改字型配置,則需要作業系統中安裝有中文 Windows 作業系統內建的四種 TrueType 字型:宋體(simsun)、黑體(simhei)、仿宋體(simfang)、楷體(simkai)。如果使用 adobefonts 選項,則需要作業系統中安裝有 Adobe 公司的四款 OpenType 字型:Adobe 宋體、Adobe 黑體、Adobe 仿宋、Adobe 楷體。
eg如下:
思路一:讓cTeX使用 nofonts 選項,然後通過 CJK 中文方案將系統內建的中文字型設定成中文的預設字型。
第一步:通過命令 fc-list :lang-zh 查看 ubuntu 系統內建的中文字型
$ fc-list :lang-zh | sort AR PL UKai CN:style=Book AR PL UKai HK:style=Book AR PL UKai TW MBE:style=Book AR PL UKai TW:style=Book AR PL UMing CN:style=Light AR PL UMing HK:style=Light AR PL UMing TW MBE:style=Light AR PL UMing TW:style=Light ... 文泉驛等寬微米黑,文泉驛等寬微米黑,WenQuanYi Micro Hei Mono:style=Regular 文泉驛等寬正黑,文泉驛等寬正黑,WenQuanYi Zen Hei Mono:style=Regular 文泉驛點陣正黑,文泉驛點陣正黑,WenQuanYi Zen Hei Sharp:style=Regular 文泉驛微米黑,文泉驛微米黑,WenQuanYi Micro Hei:style=Regular 文泉驛正黑,文泉驛正黑,WenQuanYi Zen Hei:style=Regular
第二步:在文檔開頭即可使用如下字型設定:
\documentclass[nofonts]{ctexart} \setCJKmainfont[ItalicFont={AR PL UKai CN}]{AR PL UMing CN} %設定中文預設字型 \setCJKsansfont{WenQuanYi Zen Hei} %設定文泉驛正黑字型作為中文無襯線字型 \setCJKmonofont{WenQuanYi Zen Hei Mono} %設定文泉驛等寬正黑字型作為中文打字機字型 \begin{document} 你好,\LaTeX! \end{document}
然後即可使用xeLateX編譯。
通過 setCJKmainfont 等命令我們可以使用 texlive 處理中文字元了,但是要在每個中文文檔都寫這麼一段命令,確實是個煩人的事情。
於是有了思路二。
思路二:通過將上述設定字型的這段命令寫入到自訂的宏包檔案 mylinuxfonts.sty 中,然後在文檔中以命令 \usepackage{mylinuxfonts} 使用這個自訂宏包即可。
建立mylinuxfonts.sty,內容參考如下:
\ProvidesPackage{mylinuxfonts} \setCJKmainfont[ItalicFont={AR PL UKai CN}]{AR PL UMing CN} %設定中文預設字型 \setCJKsansfont{WenQuanYi Zen Hei} %設定中文無襯線字型為文泉驛正黑 \setCJKmonofont{WenQuanYi Zen Hei Mono} %設定中文打字機(等寬)字型為文泉驛正黑 \endinput
然後在文檔中使用如下:
\documentclass[nofonts]{ctexart}\usepackage{mylinuxfonts}\begin{document}你好,\LaTeX!\end{document}
texlive 提供一個變數 TEXMFHOME(預設為~/texmf),給用 戶 存 放 自 己 獨 立 安 裝 的 宏 包、 字 體 等。 宏 包 文 件 需 要 放 置 到 目 錄TEXMFHOME/tex/latex 或 者 它 的 子 目 錄 下。 我 們 將 mylinuxfonts.sty放到目錄~/texmf/tex/latex 下,然後編譯 foo.tex 檔案即可。texlive 另外提供了一個變數 TEXMFLOCAL(預設為 /usr/local/texlive/texmf-local),給系統管理員用來安裝供整個系統使用的額外的宏包或者字型。宏包檔案需要放到目錄 TEXMFLOCAL/tex/latex 或者它的子目錄下。我們將 mylinuxfonts.sty 檔案放到這個目錄下:
sudo cp mylinuxfonts.sty /usr/local/texlive/texmf-local/tex/latex/local
TEXMFLOCAL 目錄需要一個保持更新的檔案名稱資料庫,否則新增的檔案就無法找到。我們通過命令 mktexlsr 來更新它。
原作者提供的最佳化配置:
現在我們的 texlive 已經支援中文了,但我們還可以再最佳化一下我們的ctex 配置。
上面提到,ctex 預設是使用的字型配置選項是 winfonts,那麼我們每個要使用 ctex 宏包的 tex 文檔中都要設定 nofonts 選項。
ctex 宏包提供了一個設定檔 ctexopts.cfg,該檔案中的代碼會在 ctex宏包的開頭(選項定義後面)執行。我們可以使用此檔案設定 ctex 宏包的預設選項。
lienhua34:text$ cd /usr/local/texlive/2015/texmf-dist/tex/latex/ctex/cfg
lienhua34:cfg$ sudo cp ctexopts.cfg.template ctexopts.cfglienhua34:cfg$ sudo vi ctexopts.cfg
然後輸入一下內容
% ctexopts.cfg: set default options\ExecuteOptions{nofonts}\endinput
儲存,然後運行 mktexlsr 命令。ok,此時 ctex 宏包預設的字型選項便改為nofonts 了。