如何在 MacTeX 中使用中文 LaTeX 模版?

MacTeX 的中文支持的設置比較複雜,如何設置以使用中文 LaTeX 模版??如自動化學報模版。

註:目前已經把所需要的宏包加入 MacTeX 環境中了。


謝 @李阿玲 邀。

0

在 LaTeX 中使用中文,不嚴謹地說,主要需要解決編碼和字體調用的問題。

國內 LaTeX 圈子流行過 GBK 編碼和 UTF-8 編碼。前者是國標,是過去的主流,但是問題多多。現在推薦使用後者。

字體調用方面,原來的 CCT(新版)、CJK 還有現在的 xeCJK、LuaTeX-ja 和李阿玲的 pTeX-ng 在 TeX Live(MacTeX)底下都能正常工作。只不過,Mac 默認的字體和 Windows 默認的字體有一些不同,在這方面需要做一些調整。

國內期刊的模板大多數是 CCT 和 CJK 方式,其他一些模板可能比較先進,使用 xeCJK 方式。LuaTeX-ja 國內用的少,使用方法和 xeCJK 比較類似;pTeX-ng 尚在開發中。所以這裡只介紹 使用 CCT、CJK 或 xeCJK 三種中文支持方式在 TeX Live 里如何進行調整。

1 xeCJK

xeCJK 通過 setCJKmainfont 等命令(luatexja-fontspec 則是 setmainjfont)來調用操作系統內的字體,並設置為文檔字體。在 Windows 底下編寫的中文模板,慣常使用 Windows 自帶的中易系列字體,比如

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

這種情況下,可以打開模板文件(.tex、.sty 或 .cls),找到字體設置部分,將其內容改為 Mac 的字體設置即可。比如可以參考配置:

setCJKmainfont[BoldFont=STZhongsong, ItalicFont=STKaiti]{STSong}
setCJKsansfont[BoldFont=STHeiti]{STXihei}
setCJKmonofont{STFangsong}

具體的含義可參考:

為 MacTeX 配置中文支持

使用 xeCJK 的模板,應該都保存為 UTF-8 編碼,所以不需要進行編碼調整。

(部分模板使用 GBK 編碼,在文檔頭會有 XeTeXinputencoding "CP936" 的 XeTeX 原語。此時最好將文件另存為 UTF-8 編碼,並刪除這些原語。)

2 CJK

在不適用 zhmetrics 技術的時候,CJK 需要 Type 1 字體。將中易字體拆分成許多 sub-fonts 並轉換為 Type 1 字體是個費時費力的工作。CTeX 套裝打包了已經配置好的 CJK 字體,它的 song、hei、kai、fs、li 和 you 等六套字體,流傳甚廣。國內使用 CJK 的模板,大都使用了這幾套字體。

不過,CJK 宏包本身並不含有這些字體,所以在使用 TeX Live 的時候,直接編譯這些模板會報錯。

我們看一段最簡單的使用 CJK 宏包做中文支持的例子。

documentclass{article}
usepackage{CJKutf8}
egin{document}
egin{CJK*}{UTF8}{song}
中文。
clearpage
end{CJK*}
end{document}

對於 Windows 系統的 TeX Live 用戶而言,最簡單的辦法是使用 zhmetrics 技術。為此我們只需要在導言區添加一行命令即可,代碼變為:

documentclass{article}
usepackage{CJKutf8}
AtBeginDvi{input{zhwinfonts}}
egin{document}
egin{CJK*}{UTF8}{song}
中文。
clearpage
end{CJK*}
end{document}

此時,使用 pdfLaTeX 或 LaTeX - DVIPDFMx 編譯文檔,即可得到正確的結果。

對於 Mac/Linux 系統的 TeX Live(MacTeX)用戶而言,簡單地載入 zhwinfonts.tex 是不會奏效的。zhwinfonts.tex 是為 Windows 系統配置的文件,在 Mac/Linux 系統中缺少這些字體。我自己買了方正系列字體在 Mac 上使用,所以寫了一個 zhfzfonts.tex 來調用這些字體。

需要做的事情:

  1. 安裝下列字體(涉及到版權,這裡就不提供了)
  • 方正書宋 GBK:FZSSK.TTF
  • 方正楷體 GBK:FZKTK.TTF
  • 方正黑體 GBK:FZHTK.TTF
  • 方正仿宋 GBK:FZFSK.TTF
  • 華文隸體:STLITI.ttf(Mac 自帶)
  • 華文琥珀:STHUPO.TTF(Mac 自帶)
  • 下載 zhfzfonts.tex
  • 將 zhfzfonts.tex 保存在 TEXMFLOCAL/tex/generic/zhmetrics/ 目錄下
  • 使用 texhash 刷新文件名資料庫(可能需要 root 許可權)
  • 調整代碼
  • documentclass{article}
    usepackage{CJKutf8}
    AtBeginDvi{input{zhfzfonts}}
    egin{document}
    egin{CJK*}{UTF8}{song}
    中文。
    clearpage
    end{CJK*}
    end{document}

    這裡 TEXMFLOCAL 指的是 TeX Live 供用戶使用的 TDS 根目錄,在 MacTeX 里是 /usr/local/texlive/texmf-local。

    因此對於題主提到的自動化學報來說,做好上述 1--4 步之後,只需要在導言區的末尾添加

    usepackage{ifpdf}
    AtBeginDvi{input{zhfzfonts}}

    即可。(這裡載入 ifpdf 宏包是模板的 bug)

    CJK 支持 GBK,也支持 UTF-8。請注意將文檔編碼保存為與 CJK 環境相同的編碼格式。

    3 CCT

    以系統工程理論與實踐為代表的一些國內期刊,使用 CCT 模板。前年為此寫過一篇博客,專門討論此類模板。參見:

    國內期刊 CCT 模板編譯經驗

    CCT 只支持 GBK 編碼。

    4 ctex 宏包/文檔類

    ctex 宏包/文檔類在使用 XeLaTeX 編譯的時候,使用 xeCJK 作為中文支持方式;在使用 LaTeX/pdfLaTeX 的時候使用 CJK 作為中文支持方式。因此,使用 ctex 宏包/文檔類的模板,在 TeX Live 系統下的配置方式需要根據所選的編譯方式做調整。

    使用 XeLaTeX 的時候,需要給 ctex 加上 nofonts 選項(將來的 2.0 版本則是 fontset = none),然後再用 setCJKmainfont 配置字體。

    使用 LaTeX/pdfLaTeX 的時候,則可以使用 zhfzfonts.tex 來映射字體。

    使用 ctex 宏包/文檔類的時候,需要根據所選的編譯方式和宏包/文檔類選項來確定源文件的編碼格式。

    • 使用 XeLaTeX 的時候,不論選項為何,源文件都需要保存為 UTF-8 編碼。
    • 使用 LaTeX/pdfLaTeX 的時候,則需要根據宏包/文檔類選項來確定源文件的編碼格式。

    文章已存檔至:在 MacTeX 中使用中文模板


    ShareLaTeX, the Online LaTeX Editor


    推薦閱讀:

    如何使用BibTeX引用中文參考文獻?
    對於勉強過六級的人如何提高讀英文文獻以及寫英文論文的能力?
    史學論文寫作規範?
    文科論文比理科論文更容易寫?
    如何寫出一篇優秀的碩士畢業論文?

    TAG:LaTeX | 論文寫作 | LaTeX排版與設計 |