歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux下的TeXLive 2015 中文問題

Linux下的TeXLive 2015 中文問題

日期:2017/2/28 13:59:44   编辑:Linux教程

今日突然發現,我的xeLaTeX編譯生成的pdf中文字在TeXMaker內置viewer、evince下查看均無法顯示中文,中文字顯示為空白,英語正常;但FireFox、Chrome浏覽器打開是中文顯示正常。

據說可實現Linux下TeXlive中英混排的方法:

1. 本方法來自 http://www.linuxidc.com/Linux/2015-07/120634.htm

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.linuxidc.com/Linux/2015-07/120634.htm 。相比方法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.cfg
lienhua34:cfg$ sudo vi ctexopts.cfg

然後輸入一下內容

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

保存,然後運行 mktexlsr 命令。ok,此時 ctex 宏包默認的字體選項便改為nofonts 了。

Copyright © Linux教程網 All Rights Reserved