有寫過 LaTeX 的人應該知道 Pandoc 這個強大的文件格式轉換工具,開源跨平台,可以將不同的文件格式互相轉換,十分強大。個人不喜歡用微軟的 Word,經常被自動樣式、段落階層搞的毛一堆,現在寫文件都用 LaTeX 或 Markdown,不過有的時候學校比較食古不化,不接受 PDF 需要交 Word,這時就能用這工具快速轉換來節省時間。

基本指令

如果只是簡單的 LaTeX 轉 Word 可以不用加參數。

1
pandoc main.tex -o main.docx

想套用模板的話加入 -–reference-doc 指定模板,某些期刊會提供 Word 模板下載。

1
pandoc main.tex --reference-doc=pg4-sample-word-template.docx -o main.docx

有引用的話需要加入 --bibliography 指定 Bibtex 檔案,注意要在內文中有引用文獻才會顯示引用的文獻。

1
pandoc main.tex --bibliography=References.bib -o main.tex

可以用 --csl 指定引用文獻格式,在這裡可以下載各種格式的 csl。

1
pandoc main.tex --csl=ieee.csl --bibliography=References.bib -o main.tex

預設的文獻格式:

Default reference style

IEEE 風格的引用文獻會在內文中標注引用文獻編號。

IEEE style reference

進階用法

如果想要標註圖片、表格的話可以指定 filter 使用 pandoc-crossref 處理,有些複雜的地方需要指定 LaTeX 引擎。

1
pandoc main.tex --csl=ieee.csl --bibliography=References.bib --reference-doc=pg4-sample-word-template.docx --filter=pandoc-crossref --pdf-engine=xelatex -o main.docx

pandoc-crossref 建議在 Linux/Unix 環境安裝,我用 Arch Linux 安裝有點麻煩,一直提示缺庫,裝了相應的 Haskell 套件依舊說缺庫,後面滾了系統才好。

效果就是可以在內文標注的地方加入超連結,點一下就能跳轉到對應的圖片/表格。

Reference of figure

常見問題

外部 TeX 檔案無法引入

如果你引入的 tex 檔和你要轉換的 tex 同屬一個層級目錄,那 Pandoc 會無法識別,必須要像下面的目錄結構,把你要引入的 tex 檔放入子目錄。

1
2
3
├── main.tex
└── somefolder
    └── somefile.tex

然後在 main.tex 中這樣寫。

1
2
3
4
5
6
7
8
9
\documentclass{article}
\begin{document}

\section*{Test}

    This is main tex file.
    \input{somefolder/somefile}

\end{document}

somefile.tex

1
2
3
\section{Sub tex}

This is the sub tex file.

再執行轉換指令。

1
pandoc main.tex -t docx -o main.docx

效果如下。

LaTeX including test

總結

雖然 Pandoc 可以互相轉換不同格式的文件,但是這些轉換都不能保證百分百不跑版,最多保持文字內容還在,其他複雜的內容可能會轉換失敗跑版,需要手動修改。尤其是碰到表格、圖片、文獻引用、tikz,測試過發現表格跑版最嚴重,圖片會過大超出版面;數學公式則會沒有編號,標註也會失效。

References