由 TeX User Group (TUG) 所釋出的 TeXLive 2007 (二月下旬) 已經包含了完整的 CJK 套件 (4.7.0版) 以及繁體中文 Type 1 字型 (文鼎細上海宋 bsmi)。所以,安裝後馬上就可以使用中文。之前已經安裝舊版的 teTeX,或其他方式安裝的TeX,不會因為安裝了 TeXLive2007 而廢了以前的安裝;它們和平共存,由系統偏好裡做切換。
要用 TeXShop 寫英文、中文文稿,用 LaTeXiT 製作數學公式給 Keynote、PowerPoint 等其他應用程式使用,用 LyX 寫英文、中文文稿,都需要有可用的 TeX 系統為基礎。由 TeX 用戶小組 (TUG) 所建構的 MacTeX 安裝包 (已於2007 年二月下旬釋出),會安裝完整的 TeX Live 2007。
從 CTAN 站下載 MacTeX.dmg,
可以選最近的鏡射站,以便縮短下載的時間。
此安裝包是以 Mac OS X 常見的磁碟映像檔 .dmg 以及標準的安裝包.pkg 構成。如果網頁瀏覽器沒有自動掛上磁碟映像檔,請先以鼠標雙擊所下載的 .dmg 檔。然後,只要以鼠標雙擊 .pkg 檔即可開始進行安裝,如圖。
安裝時可以有限度的選擇不想安裝的部分。不過,MacTeX 給我們的選擇不多,只有一些工具程式可以不裝;整個 TeX Live 2007 卻必須照單全收。
整個安裝過程大概要幾分鐘。
裝完後,請進行簡單的測試。
在/Applications 檔案夾裡,多了一個 TeX 子檔案夾,裝有 TeXShop (版本是 2.10 beta8), Excalibur (拼字檢查器), BibDesk (v1.3.1), LaTeXiT等應用程式。請執行TeXShop,並在新文件的視窗內,鍵入下列文字:
\documentclass[12pt]{article}
\begin{document}
This is a test.
\end{document}
然後讓 TeXShop 將之排版 (typesetting)。TeXShop 預設以 pdflatex 方式排版。如果 TeX 系統裝設成功,TeXShop 應該會產生排版的結果視窗,呈現 「This is a test.」
接下來,試試中文。在 TeXShop 裡另開個新文件,鍵入下列文字:
%!TEX encoding = UTF-8 Unicode
\documentclass[12pt]{article}
\usepackage{CJKutf8}
\begin{document}
\begin{CJK}{UTF8}{bsmi}
This is a test. 中文字測試。
\end{CJK}
\end{document}
如果 CJK 套件以及中文字型都沒有問題的話,TeXShop 也會排版出「This is a test.中文字測試。」。這裡常會遇到的問題是沒有把 TeXShop 的預設文字編碼設成UTF8。所以,為了一勞永逸,不用在每次的文稿第一行都加上「%!TEX encoding = UTF-8 Unicode」,請到TeXShop 的偏好設定裡把預設文字編碼設成 UTF8。
TeX Live 2007 已經把 XeTeX 納入,與之搭配的 fontspec套件也是。所以裝完 TeX Live 2007後可以直接使用。原先只適用於 Mac OS X 上的中文 LaTeX方案,現在已經移植到 linux 平台、MS Windows 平台的TeX (拜 TeX Live 2007 之賜)。可以直接使用作業系統裡的任意字型,不需裝設額外的字型描述檔,直接在TeXShop 裡以 unicode寫作多國語言文稿。如果要與他人交流文稿,雙方的字型名稱須一致。底下這個範例,部份參考了 oikos 裡的討論,部份參考了網友 jjgod 關於 XeTeX 的網頁:
%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode
% XeLaTeX 測試範例
% 以上是設定使用 XeLaTeX 編譯,並內設 unicode 編碼,以便 TeXShop 自動辨識
\documentclass[12pt]{article}
\usepackage{fontspec}
% XeTeX 配合 fontspec 時,字形非常容易設定
\setromanfont[Mapping=tex-text, %
Ligatures={Required,Common}, %
ItalicFont={Times Italic}, %
BoldFont={Apple LiGothic Medium}]%
{BiauKai}
% 預設字形:這裡設內文為標楷,
% 沿用 latex 的一些標點的轉換,如 en-dash 以兩個減號表示,
% 如果此字型檔裡有 ligatures 的定義,則啟動
% 斜體字以 Times Iatlic (只有英文有斜體)
% 粗體字以黑體字表現
% 此為 fontspec 套件的指令
\setmonofont[Scale=0.8]{AppleGothic Regular}
% 設定等寬字形
\XeTeXlinebreaklocale "zh"
\XeTeXlinebreakskip = 0pt plus 1pt
% 讓中文正確斷行的設定
\newfontinstance\rmfont{Times}
\newcommand{\nc}[1]{{\rmfont #1}}
% 在中文裡用英文字體顯示英文的命令
% 詳見底下的範例
\begin{document}
自此,就是內文了。可以自由的使用。
我們再來試試換預設字形的方法:只在大括號內局部之字串有效。
{
\fontspec{Hiragino Mincho Pro W6}
% \fontspec 用法和前面預設字形之 \setromanfont 一樣,只是可更自由地使用
這是用日文字形的測試。只要打正常中文即可。可能會缺字就是了。
}
再來就回到正常字形,就用正常 \LaTeX\ 的寫法使用就行了。
如果,在中、英文夾雜時,英文想用不同的字型,則可以使用開頭時定義的 nc 指令
\nc{This is Times font. The ‘field’ contains ligatures.}
應該與中文字型裡的英文字不同:
This is Chinese font. The `field' does not have ligatures.
\end{document}
過去幾年以來,Mac OS X 平台使用的 TeX 系統是依據在 Unix, linux 等平台的 teTeX (由 Thomas Esser 等維護),經由 fink、 MacPorts、 Gerben Wierda (i-installer) 等社群移植到 Mac OS X 平台。
自從 TeX Live 社群蓬勃發展後,Thomas Esser 於 2006 年 5 月宣布不再維護 teTeX,請大家改用TeXLive。Gerben Wierda 也積極把他所維護的 Mac OS X i-installer gwTeX 導入 TeXLive大家庭裡。
所以,以前已經裝了 TeX 的用戶,裝了 TeX Live 2007 之後,電腦多了一套 TeX系統,並有圖形介面協助切換。想要用以前的TeX 系統,只要到 Apple Menu : System Preferences : TeXdistribution 做切換即可。
這切換動作實際上是針對 /Library/TeX 作 symbolic link,連結到相對應的 TeX 系統。所以,各 TeX 系統裡的程式、工具、設定檔都不會打架、干擾。
這些系統的 texmf 設定檔的層次類似。以舊的 gwTeX (以前用 i-installer 所裝設的) 為例,它的設定、支援的檔案分層放在
/usr/local/teTeX/share/texmf
/usr/local/teTeX/share/texmf.tetex
/usr/local/teTeX/share/texmf.gwtex
/usr/local/teTeX/share/texmf.local
以及各人自己帳號底下的
~/Library/texmf
習慣是把自己額外安裝的套件、字型放在最後兩處:如果是多人共用的,可以放在 texmf.local;如果只是自己用,則放在自己帳號下的 texmf。
新的 TeX Live 2007 的 MacTeX,則是使用
/usr/local/texlive/2007/texmf
/usr/local/texlive/2007/texmf-config
/usr/local/texlive/2007/texmf-dist
/usr/local/texlive/texmf-local
以及各人自己帳號底下的
~/Library/texmf
在這裡唯一要注意的是:這不同系統的交集是各人自己帳號底下的 ~/Library/texmf。所以,有可能發生在舊的 gwTeX時代自己安裝的套件、字型與新的 TeX Live2007 不相容。例如,當時安裝的 CJK 套件版本較舊,以及所安裝的中文文鼎TrueType 字型名稱與 TeX Live 2007裡所用文鼎 Type 1 的相衝了 。所以,如果以前是把 CJK套件、中文字型裝在個人的 texmf 區,建議在裝 TeX Live 2007 後,把
~/Library/texmf/tex/latex/CJK/
~/Library/texmf/fonts/
先移至他處。
如果以前是把 CJK 套件、中文字型裝在 /usr/local/teTeX/share/texmf.local,那就不用擔心。
以前沒有安裝套件的用戶,就更不用擔心了。
相關的 TeX distributions 歷史緣由,可以參閱 TeXShop 作者 Richard Koch 所寫的短文。
由於 TeXLive 2007 更新字型 map 檔的方式與我之前寫的簡易安裝程式 mkfont_npc2006.command 有些差異。請使用新的 mkfont_npc2007.command,位於 install_cjk_fonts 檔案夾裡。
它會產生一個 TrueType 字型所需要的各類描述檔,只適用於 UTF-8 編碼。用法如下:
ttf file name =
font name in TeX/LaTeX to be =
font name in CJK to be (can be set to bkai) =
大概會執行幾分鐘,產生所需要的.map、.tfm、.enc、.fd、.fdx (中文直排用)。如果要 shell script 順便把這些描述檔裝設到LaTeX 系統裡,並更新 cid-x.map 等檔案,程式執行中請同意讓它做這些動作 (回答 Y),並選擇或鍵入所選的[texmf] 路徑。如果要把字型裝在個人區,則選 1;如果要裝在共用區,則選 2;如果要裝在別的地方,則直接鍵入該位置路徑。如果該區需要管理員權限才能拷貝檔案的話,會詢問索取管理員密碼。在 MacOS X 裡,由於 sudo 指令的限制,必須以系統管理員的身分 (但不必請出 root 身分) 執行這個字型簡易安裝程式,除非要裝在個人區裡。
[texmf]=~/Library/texmf
也就是在個人 home 子目錄裡的 Library 檔案夾裡的 texmf 檔案夾
[texmf]=/usr/local/texlive/texmf-local
更新 map 檔的過程也需要幾分鐘。
這個 shell script 參考了 李果正先生的 mkfont.sh 與 cyberb.sh。不同之處是我這個 shell script 以 unicode 編碼為最終目的、只考慮 TrueType 字型;而李果正先生的scripts 是以 Big5 或 GB 為使用環境、同時考慮 TrueType 與 PostScript Type 1 字型,雖然所套用的TrueType字型檔內容都是以 unicode 編碼的。由於此 shell script 並沒有使用任何與 Mac OSX 有關的特殊語法,以及使用者可以指定不同的 [texmf],其他 unix / linux 平台的使用者如果想要以 unicode 編碼做為 LaTeXCJK的使用環境的話,也可以在終端機裡執行本程式。
執行完後,即可把一開始時放入的 TrueType 字型檔拿掉。如果要繼續裝設更多的字型,只要把該字型檔放入 install_cjk_fonts 檔案夾裡,再執行mkfont_npc2007.command 即可。
理論上任何以 unicode 編碼、含中文字的 TrueType 字型檔都可以用上述的 mkfont_npc2007.command 處理後給LaTeX CJK 使用。但是,選用 LaTeX CJK 做為 LaTeX的中文方案,很重要的一個理由是與其他平台 (linux, MSWindows, ...) 的相容性;要不然,為何不用前述的XeTeX?所以,在文稿中使用了 Mac OS X特有的中文字型反而對文稿的交流會造成困擾。最好是使用下列的這些其他平台也在用的免費字型:
[texmf]/tex/latex/CJK/UTF8/
\begin{CJK}{UTF8}{song}
\begin{CJK}{UTF8}{mtibetan}.....\end{CJK}
|
before 2003 (teTeX, gwTeX) mkfont_npc2003.command 運作原則 |
2004~2006 (teTeX, gwTeX) mkfont_npc2006.command 運作原則 |
TeX Live 2007 mkfont_npc2007.command 運作原則 |
|
| (font1)??.enc | [texmf]/pdftex/enc/ |
[texmf] /fonts/enc/cjk/(font1)/ |
[texmf] /fonts/enc/CJK/(font1)/ |
| (font1)??.tfm | [texmf] /fonts/tfm/CJK/ (font_name)/ |
[texmf] /fonts/tfm/cjk/(font1)/ |
[texmf] /fonts/tfm/CJK/(font1)/ |
| (font1).map |
[texmf]/pdftex/config/ [texmf]/dvipdfm/config/ |
[texmf] /fonts/map/pdftex/cjk/ |
[texmf] /fonts/map/pdftex/CJK/ |
| (font0) | [texmf]/fonts/truetype/CJK/ |
[texmf] /fonts/truetype/cjk/ |
[texmf] /fonts/truetype/CJK/ |
| c70(font2).fd and .fdx | [texmf]/tex/latex/CJK/UTF8/ |
[texmf] /tex/latex/CJK/UTF8/ |
[texmf] /tex/latex/CJK/UTF8/ |
| 更新[texmf] /pdftex/config/pdftex.cfg | 加入一行 map +(font1).map | 不需要更動 | 不需要更動 |
| 更新[texmf] /web2c/updmap.cfg |
加入一行 Map (font1).map |
不需要自己更新,而是使用 updmap-sys --enable Map (詳見下欄) |
|
| 更新[texmf] /dvipdfm/config/dvipdfmx.cfg | 加入一行 f (font1).map | 同左 | 不需要更動 |
| 更新[texmf] /dvipdfm/config/cid-x.map |
加入一行 (font1)@Unicode@ unicode:0:(font0).ttf |
同左 |
同左,但是檔案位置在 [texmf] /fonts/map/dvipdfm/dvipdfmx/ (目前發現放在 texmf-local 無效。 如果要多人共用,必須直接更動在核心的 /usr/local/texlive/2007/texmf/ 的原有 cid-x.map) 目前安裝程式有針對此裝況做處理。 |
|
更新 ttfonts.map (似乎對 CJK 套件運作沒有影響) |
[texmf]/ttf2pk/ttfonts.map 加入一行 (font1)@Unicode@ (font0).ttf |
[texmf] /fonts/map/ttf2pk/ttfonts.map 加入一行與左欄相同之指令 |
無此必要 |
| TeX 字型資料庫更新之指令 | sudo texhash |
sudo texhash sudo updmap 兩者都要 |
sudo texhash sudo updmap-sys --enable Map (font1).map sudo fix_dvipdfm_map.py |
【註1】粗體路徑名稱表示必須遵從,正常字體則表示可以自行另加檔案夾以便分類,名稱不拘。
【註2】TeX / LaTex字型資料檔採用多層名冊方式:
以文鼎繁體中文楷書使用 unicode 編碼為例,原 truetype 字型檔名為 bkai00mp.ttf,CJK 套件作者 Werner的命名方式是:
【註3】截至 4/12/2007, updmap-sys 有個小臭蟲,會將TrueType 字型所用的 .map檔內的資料以不正確的語法抄入dvipdfm_dl14.map 與 dvipdfm_ndl14.map 內,造成 dvipdfmx 無法載入一些英文字型 (例如Times)。此臭蟲只影響 latex + dvipdfmx 工作流程,但沒有對 pdflatex 有任何影響。我用 python寫了一個修正程式 fix_dvipdfm_map.py (在 needed_files 檔案夾裡)。請在每次使用了 updmap-sys 或updmap 之後 (不管是加入了中文字型還是英文字型的 .map 檔),執行 sudo./fix_dvipdfm_map.py。本文裡介紹的 'mkfont_npc2007.command'安裝程式會自動使用此修正程式。又,如果日後此臭蟲已修正,則修正程式不會更動正確的 dvipdfm map 檔。
請先下載這個 shell script '
install_my_dvipdfmx', 解壓縮後,執行 install_my_dvipdfmx,它會將 my_dvipdfmx 放在
~/Library/TeXShop/bin/
裡 (在個人子目錄裡的 Library/)
請在 TeXShop 的 preference 設定裡,在 misc 項,在 Personal Script, Latex 欄位裡把該 script 的完整路徑填入,以及所選的執行參數
-x
,
-b
,
-u
,
-l
如
/Users/(你的名字)/Library/TeXShop/bin/my_dvipdfmx -x
在 install_my_dvipdfmx 安裝程式執行完後,會在終端機螢幕上留有路徑名,可以拷貝貼入 TeXShop 的 preference 設定裡。
執行參數的定義如下:
-x
一般執行模式;執行一次
latex
再執行
dvipdfmx
。
-b
有使用參考文獻、引用文稿內公式圖表的模式;執行一次
latex 接著執行 bibtex,再執行兩次
latex,最後再執行
dvipdfmx
。
-l
紙張橫向 (landscape) 模式;預設執行一次 (即
-x), 但是如果同時使用
-b
模式 (-bl), 則以
-b
模式編排文稿,最後並以紙張橫向輸出成 pdf 檔。
-x), 但是如果同時使用
-b
模式 (-bu), 則以
-b
模式編排文稿,最後並以美式信紙大小輸出成 pdf 檔。TexShop在編排一般 LaTeX 文稿時,會選用指定的工作流程而產生 PDF 文件,預設的是pdflatex。如果想要用 latex+dvipdfmx,則必須以 TeXShop 的 personal script 的方式進行 (在typeset 選單下選擇)。
該用 pdflatex 還是 latex+dvipdfmx? 後者在內嵌字型時,使用較新的技術 (CID),所以產生的pdf 檔案較小,而且裡面的中文是可以拷貝出來、檢索的;不過,它在第一階段由 latex 編譯時,對於較近代的圖檔格式,如 jpg, png, pdf 等格式,必須先由一個叫ebb 的小工具程式,在終端機程式裡先替這些圖檔產生 boundary box 的 .bb 檔案,來取得圖的尺寸。例如在 .pdf 圖檔所在的子目錄裡執行
ebb *.pdf
至於 pdlaftex,不會做 CID 的中文內嵌,而是用傳統的 subfont的方式,所以無法拷貝、檢索裡面的中文,不過,上述的圖檔則不需用ebb 做前置處理,直接搞定;但反而對於較傳統的 .eps 檔需要先轉檔成.pdf 或 .mps 的格式。請參考 這個網頁。
在使用插圖套件 graphicx 時,要依據工作流程,而採用底下對應的設定
\usepackage[pdftex]{graphicx}
或
\usepackage[dvipdfm]{graphicx}
第二種設定並沒有筆誤,dvipdfmx 的前身是 dvipdfm
如果想要文稿在兩種工作流程之間通吃,則可以在文稿開頭的設定區用如下的設定
% 參考自
% http://www.tex.ac.uk/cgi-bin/texfaq2html?label=ifpdf
\ifx\pdfoutput\undefined
% not running pdftex
\usepackage[dvipdfm]{graphicx}
\else
\ifx\pdfoutput\relax
% not running pdftex
\usepackage[dvipdfm]{graphicx}
\else
% running pdftex, with...
\ifnum\pdfoutput>0
% ... PDF output
\usepackage[pdftex]{graphicx}
\else
%...DVI output
\usepackage[dvipdfm]{graphicx}
\fi
\fi
\fi
同時,在文稿內放插圖時,圖檔名不要把附檔名寫出。例如,有個圖檔叫 logo.pdf,則使用
\includegraphic[...]{logo}
即可。在 latex + dvipdfmx 工作流程裡,logo.bb 檔會先被載入。