我選擇學 Emacs 而不是 Vim 最大的拉力之一就是 Org-mode 了,之前看 demo 就覺得寫完文件就能立刻輸出成 HTML 或 PDF 真是帥呆了,但實際使用後才發現雖然 HTML 是沒太大問題,但想要輸出 PDF 的路可是長路漫漫…因為文件裡的中文字元只要一輸出成 PDF 就會立刻人間蒸發給你看。簡單來說就是必須要先想辦法搞懂輸出中文 TeX 文件的方式,才來搞 Org 的輸出設定。因為初學時 Emacs 本身就折騰不完了,所以之前也一直懶得去搞這個,但這學期因為要一直交報告,乾脆就趁機弄懂一下要怎麼做。
其實現在要寫中文 tex 文件,需要折騰的東西比之前輕鬆很多了,用 xelatex 只需要指定好字型就能順利輸出中文,反而比較麻煩的還是學 TeX 基礎的語法部份。
現在最新的 Org 版本號是 8.x,但目前 Emacs 即使是最新的 stable release (24.3) 內建也都是 Org 7.x,重點是 8.x 的 export 功能改了超多,跟 7.x 會衝突,至少在我的系統上,如果直接拿 Emacs 24.3 硬裝最新版的 Org,整個 export 功能都會華麗地爆炸給你看。由於我實在很懶得去鳥這種衝突問題,最後解決的辦法是…去抓開發版的 Emacs 來編譯:
1 | git clone git://git.savannah.gnu.org/emacs.git |
整個 repo 超大, 要等好一陣子。不過編譯時到底有哪些 dependancies 我也忘記了勒,請用力看 make 訊息想辦法悲 ˊ・ω・ˋ
準備環境
TexLive
如果你用 openSUSE,基本上就直接打開萌萌的YaST2 或 zypper 安裝 texlive
和 texlive-cjk
,幾乎所有需要的 dependency 就都已經裝好了,包含 xelatex。
不過由於我有時會用到多行的 table cell,所以有另外安裝 texlive-multirow
,建議可以也裝一下。
至於其他 distro 的使用者,相信找找 texlive 和其看起來與中文相關的 dependencies 應該不是什麼大問題。
字型
- 我使用了 cwTeX 的自由字型當做預設字型,還有文泉,請先安裝。
- 如果你要使用其他字體,使用
fc-list :lang=zh
指令能夠取得目前系統上安裝的所有中文字體名稱;但不保證能用,可能要自己測試一下。雖然 XeLaTeX 可以把系統中現有的字型用在文件中,但還是有些問題,像是不知為何cwTeXHeiBold
不管踹幾次,只要用了他,一編譯就會爆炸給你看。但其餘的 cwTeX 字型就不會有這個問題。
Emacs 設定
1 | (setq org-latex-classes |
LaTeX-mode
因為有時候用 org-mode 輸出了 latex 檔後,還需要再另外編輯(例如 Org-mode 的 table 功能很有限,如果需要用到 multicols
之類的東西,就得自己手動再編輯 latex 檔)
但是在 LaTeX mode 中,按 C-c C-c
雖然可以自動呼叫 latex
指令編譯,但我們需要把他改成呼叫 xelatex
:
1 | (setq tex-compile-commands '(("xelatex %r"))) |
如果你使用 AUCTeX,需要設定的變數會不一樣,他用來 compile 的指令清單是 TeX-command-list
,我只改了 LaTeX 那個欄位,如果你有其他需求可以自己造樣造句看看。差不多是像這樣:1
2
3
4
5
6
7
8(setq TeX-command-list
'(("TeX" "%(PDF)%(tex) %`%S%(PDFout)%(mode)%' %t" TeX-run-TeX nil
(plain-tex-mode ams-tex-mode texinfo-mode)
:help "Run plain TeX")
("LaTeX" "xelatex -interaction nonstopmode %t" TeX-run-TeX nil
(latex-mode doctex-mode)
:help "Run LaTeX")
......))
使用
搞好這些後,開個 org 文件就可以快樂地開始寫東西了,寫完按 C-c C-e
就可開啟 export 選單選擇輸出 LaTeX 或直接衝 PDF。這時也可以先按 # default
插入 template,裡面可以設定一些選項,例如toc
(table of contents)設定成 nil 或 t 可以指定要不要輸出目錄、tex
表示要不要支援 TeX 指令等。
Org 與 LaTeX 指令
- 在 Org 文件中很多小地方可以使用 LaTeX 指令,例如用
$算式$
就可以輕鬆愉快的用標準的 LaTeX 數學公式表示法把算式直接寫在內文中;在公式或標題上按C-c C-x C-l
可以即時預覽 LaTeX 公式輸出。 - 需要注意的一點是換行,如果段落沒辦法順利換行,建議還是習慣在文章結尾加上
\\
或者使用\newline
。 - 在 Org 文件中不用全部硬 K LaTeX 指令,他有自己的一套寫法。以下為我常用的幾個:
整份文件變成雙欄文件
只要在 Org 文件中任意處加上這行:
#+LaTeX_CLASS_OPTIONS: [a4paper,twoside,twocolumn]
Table
假設一個有六個 column 的 table,想要:
- 使用
longtable
套件讓 table 可以跨多頁(不過我發現這玩意有時會有靈異現象,沒事不要用,不過這是longtable
的問題,跟 org 無關)- 指定第三個 column 的寬度為 5cm。
- 字型大小縮小成
footnotesize
大小,超過就讓 cell 換行- 加上標題 「女僕裝最棒了」
可以這樣寫,把這行加到 table 的前一行即可:
#+ATTR_LATEX: :environment longtable :align llp{5cm}lll :font \footnotesize
#+CAPTION: 女僕裝最棒了
至於有沒有辦法橫向或垂直向合併欄位呢?很抱歉,org 的 table 語法不可能辦到所以不要浪費時間了(他們的 mailing list 之前就有人問過),唯一的方法是先輸出 tex 檔再手動修改,使用
multirow
之類的。
表格/圖片/文字置中
不要浪費時間自己打\begin{center}
之類的東西,直接輸入 <c
然後按 [TAB]
自動展開即可,這是 Org-mode 專用的的置中語法。
圖片標題/縮放
可以用 C-u C-c C-l
插入圖片。C-c C-x C-v
可以直接在 Emacs 裡顯示。
想要給圖片加上標題,只要直接在的前一行加上:
#+ATTR_LATEX: :caption \bicaption{標題}
調整輸出後的圖片大小與 float (可用:l/c/r) 則是:
#+ATTR_LATEX: :width 5cm :float c
順便講一下輸出 HTML 的圖片縮小方法。
#+ATTR_HTML: :width "100px"
更多詳細的屬性可以參考官方的 Org manual:@LaTeX{} specific attributes - The Org Manual
參考資料
- Easy Templates - The Org Manual
- LaTeX/Hyperlinks - Wikibooks, open books for an open world
- How do I specify color in RGB using \hypersetup in hyperref? - TeX - LaTeX Stack Exchange
- LaTex 處理中文(使用 XeLaTex) @ 維護純潔思想組 :: 痞客邦 PIXNET ::)
- 將使用 CJK 的範本無痛轉移到 XeTeX « Hitripod
- Mac 下的 Latex 中文解決方案: XeTeX | vgod's blog
- LaTeX 中文的另一個方式 – XeLaTeX for Chinese (Windows & Ubuntu) | Dwelling in the Dream
- XeTeX 快速上手 - electronic_blue
- XeTeX:解決 LaTeX 惱人的中文字型問題 « Hitripod
- LaTeX 中文排版(使用 XeTeX) - Linux Wiki
- XeTeX:一个新的 LaTeX 中文排版解决方案 | 何勃亮個人網站
- Org-Mode で日本語を含むファイルを PDF にエクスポートする方法 - 今日もサラダ日和ですかね
- でらうま倶楽部 : org-mode 8.0 画像入り日本語 PDF を OSX10.8 で出力するなら LuaTeX を使え!