天天看點

ubuntu16.04配置Latex+中文字型Latex安裝Latex中使用中文的兩種方法: ctex類或CJKutf8包

Ubuntu16.04配置Latex+中文字型

  • Latex安裝
    • 先前安裝版本的解除安裝
      • apt-get安裝包的深度解除安裝
      • 通過安裝器“install-tl”安裝的texlive解除安裝
    • 通過安裝器的安裝方法
  • Latex中使用中文的兩種方法: ctex類或CJKutf8包
    • Ctex類
      • 配置Ctex
        • 字型配置:源檔案中配置
        • 字型配置:建立字型配置檔案,源檔案調用
        • 配置預設字型配置選項
      • 安裝中文字型
    • CJKutf8包

Latex安裝

先前曾通過apt-get的方式裝過texlive包(sudo apt-get install texlive-full)。此次通過查閱texlive的官網,重新選擇了官方建議的安裝方式,具體是下載下傳并使用官方提供的一個安裝器 install-tl,内含安裝的主腳本和相關配置檔案。在安裝之前我要先解除安裝此前安裝的texlive包,那這裡先記錄一下解除安裝。

先前安裝版本的解除安裝

apt-get安裝包的深度解除安裝

在解除安裝之前用"tex --version"檢視了目前安裝的texlive版本是2015年的版本;用“which tex”檢視了安裝的路徑,路徑是“/usr/bin”,進一步檢視發現與“tex”一同安裝在這個路徑的工具包很多,足足有幾十個,處理bib、dvi、postscript、pdf的都安裝在這個路徑中,個人不是很喜歡在這樣一個主目錄下安裝很多很雜的工具包。那麼現在開始解除安裝。

sudo apt --purge remove texlive-full
           

這個指令執行完後發現“tex”竟然還在,然後通過“Tab”對“tex”名稱的補全查到很多相關的包,然後執行:

sudo apt --purge remove textlive*
           

這樣删除所有“texlive”的包,再繼續執行:

sudo apt autoremove
           

這樣删除因依賴而安裝的包,此時“tex”已經被完全删除,接下來可以參照部落格對軟體包進行清理:

# apt的底層包是dpkg,此時dpkg的清單中有“rc”狀态的軟體包,可以執行如下指令做最後清理:
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
           

輔助連結:awk是一種資料和文本處理的指令語言, xargs是給指令傳遞參數的過濾器。

通過安裝器“install-tl”安裝的texlive解除安裝

執行删除指令:

sudo rm -rf /usr/local/texlive/2018
sudo rm -rf ~/.texlive2018
           

通過安裝器的安裝方法

  • 安裝之前的下載下傳

    下載下傳方式連結

    下載下傳器的連結

  • 運作安裝器(Running the installer)

    第一步,解壓:

tar xzvf /path-to-installer/install-tl-unx.tar.gz
           

第二步,運作安裝腳本:

sudo ./install-tl.sh
           

有一個提示,一般情況輸入“i”就可以,等待安裝完成。

  • 安裝後設定PATH

    linux系統PATH設定有專門的文檔說明,這裡我用的方法是在使用者根目錄下的“.bashrc”中添加,然後更新PATH。

    在“.bashrc”中添加以下語句:

注意x86_64-linux要根據自己的路徑名字來改,然後執行“source ~/.bashrc”,更新使用者環境變量。更新完成後可以測試能否輸出“tex”版本,指令是“tex --version”,如果有版本輸出,說明安裝成功。

  • 測試(Testing)

    用自己擅長的編輯器建立一個“test.tex”檔案,輸入以下内容:

\documentclass{article}
\begin{document}
Hello \LaTeX!
\end{document}
           

儲存。

在“test.tex”路徑中輸入tex的編譯指令:

xelatex test.tex
           

将輸出包含以下内容的pdf。

ubuntu16.04配置Latex+中文字型Latex安裝Latex中使用中文的兩種方法: ctex類或CJKutf8包

至此,texlive套裝安裝完成并測試成功。還有一種先下載下傳源檔案再安裝的方法,參照部落格

Latex中使用中文的兩種方法: ctex類或CJKutf8包

既試用Linux也試用Windows

參考部落格1

參考部落格2

Ctex類

配置Ctex

ctex 宏包提供了三個字型選項:nofonts、adobefonts 和 winfonts,預設使用的是 winfonts。如果在 tex 源檔案中沒有使用其他選項修改字型配置,則需要作業系統中安裝有中文 Windows 作業系統自帶的四種 TrueType 字型:宋體(simsun)、黑體(simhei)、仿宋體(simfang)、楷體(simkai);如果使用adobefonts選項,則需要作業系統中安裝有 Adobe 公司的四款 OpenType 字型:Adobe 宋體、Adobe 黑體、Adobe 仿宋、Adobe 楷體。

此處我們打算使用 nofonts 選項(也可以将nofonts設定為預設選項),然後通過CJK中文方案将ubuntu自帶的中文字型設定成中文的預設字型。

字型配置:源檔案中配置

我們先通過指令 fc-list :lang-zh 檢視 ubuntu 系統自帶的中文字型,為下一步通過CJK中文方案将ubuntu自帶的中文字型設定成中文的預設字型做準備:

fc-list :lang=zh
           

在得到的字型中選擇一種或幾種字型用作latex中中文的字型,我的選擇如下:

\setCJKmainfont[ItalicFont={AR PL UKai CN}]{AR PL UMing CN}  %設定中文預設字型,宋體
\setCJKsansfont{AR PL UKai CN} %設定中文無襯線字型,楷體
\setCJKmonofont{Noto Sans Mono CJK SC} %設定中文打字機(等寬)字型,這個字型不好看。。

           

如果不喜歡自己系統中自帶的中文字型可以參考下面手動安裝自己喜歡的字型。

那麼建立一個簡單的tex檔案“test.tex”如下:

\documentclass[nofonts]{ctexart}
\setCJKmainfont[ItalicFont={AR PL UKai CN}]{AR PL UMing CN}  %設定中文預設字型,宋體
\setCJKsansfont{AR PL UKai CN} %設定中文無襯線字型,楷體
\setCJKmonofont{Noto Sans Mono CJK SC} %設定中文打字機(等寬)字型,這個字型不好看。。
\begin{document}
你好!\Latex
\end{document}
           

字型配置:建立字型配置檔案,源檔案調用

建立“myubuntufonts.sty”檔案(檔案名自己定),内容如下:

% mylinuxfonts.sty
\ProvidePackage{myubuntufonts}
\setCJKmainfont[ItalicFont={AR PL UKai CN}]{AR PL UMing CN}  %設定中文預設字型,宋體
\setCJKsansfont{AR PL UKai CN} %設定中文無襯線字型,楷體
\setCJKmonofont{Noto Sans Mono CJK SC} %設定中文打字機(等寬)字型,這個字型不好看。。
\endinput
           

儲存這個檔案。現在要将myubuntufonts.sty放的位置告知texlive。texlive 提供一個變量 TEXMFHOME(需要給這個環境變量設定值,也就是絕對路徑,我是在“~/.bashrc”中添加了“export TEXMFHOME=~/.texmf-var/fonts”,然後執行“source ~/.bashrc”更新環境變量),給使用者存放自己獨立安裝的宏包、字型等。宏封包件需要放置到目錄TEXMFHOME/tex/latex或者它的子目錄 下。我是将myubuntufonts.sty放到目錄“~/.texmf-var/fonts”下,然後重新編譯如下“test.tex”檔案。

\documentclass[nofonts]{ctexart}
\usepackage{myubuntufonts}
\begin{document}
你好!\Latex
\end{document}
           

這裡建立的“myubuntufonts”宏包隻限對目前使用者可見,如果要設定全局可見的宏包,請繼續參照部落格

配置預設字型配置選項

參照部落格

在我的ubuntu下也沒有安裝 windows 系統的字型。而 ctex預設是使用的字型配置選項是winfonts,那麼我們每個要使用 ctex宏包的tex文檔中都要設定nofonts 選項。

ctex 宏包提供了一個配置檔案 ctexopts.cfg,該檔案中的代碼會在ctex宏包的開頭(選項定義後面)執行。我們可以使用此檔案設定 ctex 宏包的預設選項。我的ubuntu16.04使用“install-tl”安裝器安裝的配置檔案的位址是“/usr/local/texlive/2018/texmf-dist/tex/latex/ctex/config”,讀者可以自行查找。

cd /usr/local/texlive/2018/texmf-dist/tex/latexctex/config
sudo cp ctexopts.cfg.template ctexopts.cfg #備份
sudo vi ctexopts.cfg
           

在配置檔案最後輸入以下内容

% ctexopts.cfg: set default options
\ExecuteOptions{nofonts}
\endinput
           

儲存,然後運作“texhash”(teTeX、TeXLive、fpTex用texhash;web2c用mktexlsr,參考部落格)指令。此時ctex宏包預設的字型選項便改為nofonts了。

安裝中文字型

檢視已經安裝好的中文字型

fc-list :http://www.cnblogs.com/top5/archive/2009/11/05/1596919.html">參考部落格:

  • 在/usr/share/fonts/下建立檔案夾,如“winFonts”目錄,把從windows下拷貝過來的字型都放在這個目錄裡,這裡就是把雅黑字型Yahei.ttf 放進來:
sudo mkdir -p /usr/share/fonts/winFonts
sudo cp Yahei.ttf /usr/share/fonts/winFonts/
           
  • 改變字型檔案權限:
sudo chmod 644 /usr/share/fonts/winFonts/Yahei.ttf 
           

注:改成755也沒問題的,但起碼要444;這裡修改雅黑字型檔案的權限為644,即目前使用者讀寫,目前組使用者隻讀,其他使用者隻讀。

  • 安裝字型
cd /usr/share/fonts/winFonts/
sudo mkfontscale #建立雅黑字型的fonts.scale檔案,它用來控制字型旋轉縮放
sudo mkfontdir #建立雅黑字型的fonts.dir檔案,它用來控制字型粗斜體産生
sudo fc-cache -fv #建立字型緩存資訊,也就是讓系統認識認識雅黑
           
  • 删除字型,直接删除“yehei”檔案夾,然後執行“sudo fc-cache -fv”。
  • 批量安裝字型。

    在主目錄下建立一個字型Fonts檔案夾,将需要安裝的字型拷貝過來。

    sudo mkdir -p /usr/share/fonts/Fonts

    sudo cp *.ttf /usr/share/fonts/winFonts/

    然後,修改權限,全部安裝:

sudo chmod 644 /usr/share/fonts/winFonts/*
cd /usr/share/fonts/winFonts/
sudo mkfontscale
sudo mkfontdir
sudo fc-cache -fv
           

CJKutf8包

如果不能使用ctex類(ctexart),比如要使用beamer,那麼此時可以使用CJKutf8包來解決中文輸入的問題,方法如下:

\documentclass[10pt, mathserif]{beamer} % font and size
...
\usepackage{CJKutf8}    % encode for Chinese
\begin{document}
...
\begin{CJK}{UTF8}{gbsn} % all Chinese should be enclosed between the commands
...
\end{CJK}
\end{document}
           

注意“\begin{CJK}{UTF8}{gbsn}”中的“gbsn”不是上文中系統字型,是CJKutf8包中自帶的字型,具體包含哪些可以從自己的安裝目錄中查,我查到的CJKutf8字型的路徑是“/usr/local/texlive/2018/texmf-dist/tex/latex/cjk/texinput/UTF8”,如下[我的CJK中文字型]:

ubuntu16.04配置Latex+中文字型Latex安裝Latex中使用中文的兩種方法: ctex類或CJKutf8包

那就是可以使用的字型有“bkai bsmi gbsn gkai mj”,我的這裡面有一個字型不能用“song”,細心的你會發現這個字型少一個檔案,我起初看别人的代碼都用的這個字型,一直生成不了PDF檔案,搞了我幾天,剛剛才發現這個問題,換了字型,可能的原因是在這個最新版本中“c70song.fdx”檔案缺失了。至于有沒有方法自己做CJKutf8字型,我還沒有探究,先用這這些字型,TTM心累了,哈哈哈。