歡迎

本站利用 MathJax 顯示數學式子,請安裝 STIX Font 以確保數學式子顯示無誤,安裝方法請參閱 MathJax Font Help

2012年10月8日 星期一

MikTeX 令人混亂的更新模式

以前 MikTeX 的更新比較單純,自動安裝的套件都是放在 MikTeX 的安裝目錄中。但是自從使用 Windows 7 後,維護變得複雜了,分為兩種:一種為 Admin,另一種是給一般的使用者。主要是 Windows 7 中,MikTeX 自動安裝的套件會放在個人目錄下,必須要使用一般使用者的維護,才能更新個人目錄下的 MikTeX 套件。

在上一篇文章中,非人所遇到的問題,便是因為不熟悉這種更新模式所造成的。主要是非人用 "Package Manager (Admin)" 安裝了 xeCJK 這個套件,然後在 xelatex 時,自動安裝了 l3kernel 及 l3packages 的套件。後來非人使用 "Update (Admin)" 來更新套件,xeCJK 更新了,但 l3kernel 及 l3packages 並沒有更新。

知道這個原因後,就解決了上一篇的問題。暫時不用換成 TeXLive。

2012年10月4日 星期四

使用 xeCJK 在 MikTeX 中編譯失敗

在 Windows 下,使用 MikTeX 編輯中文文件。非人發覺使用 xelatex + xeCJK 是比較方便的,不過最近發現 xeCJK 更新了,但是相關的套件卻一直未更新,造成在編譯的過程一直失敗。不知道何時才會有更新。

看來要找個時間換成 TeXLive。

2012年9月15日 星期六

A problem with memoir class + lualatex

這是昨天碰到的問題,使用 lualatex 編譯下列的 TeX 檔

\documentclass{memoir}

\usepackage{luatexja-fontspec}
\begin{document}
Hello World!
\end{document}

會出現下列的錯誤訊息:

! LaTeX Error: Command \printglossary already defined.
               Or name \end... illegal, see p.192 of the manual.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H   for immediate help.
 ...                                              
                                                  
l.150 ...and\printglossary{\@input@{\jobname.gls}}

這是 memoir 和 luatexja-fontspec 都定義了 \printglossary 所造成的錯誤。在網路上,有看到類似的問題,解決的方法是用 \let\printglossary\relax 將 memoir 定義的 \printglossary 取消,再載入 luatexja-fontspec 即可編譯成功。所以 TeX 要改成下列的樣子:

\documentclass{memoir}
\let\printglossary\relax
\usepackage{luatexja-fontspec}
\begin{document}
Hello World!
\end{document}

雖然這樣可以解決了,但是由於更改了 memoir 的定義,不知到哪裏會出現無法預期的排版錯誤。

2012年9月4日 星期二

Windows 下的 LuaLaTeX

在 Windows 底下,使用 xelatex 應該是比較好的選擇。雖然 xelatex 和 lualatex 都能夠使用系統的字型,但是 lualatex 卻有一個先天上的缺點,只能使用字型的英文名稱,不能使用字型的中文名稱。例如,wqy-microhei.ttc 這個字型的英文名稱是「WenQuanYi Micro Hei」,而中文名稱是「文泉驛微米黑」。要在 lualatex 使用這個字型就要使用

\setmainfont{WenQuanYi Micro Hei}

而不能用

\setmainfont{文泉驛微米黑}

在 Linux 的作業系統下,很容易可以獲得字型的中、英文名稱,但在 Windows 下,比較容易得知字型的中文名稱,至於英文名稱非人還不清楚要如何得知。所以,非人在 Windows 下使用 lualatex 時,一度不曉得該如何設定中文字型。所幸,直接使用字型的檔案名稱是可以被接受的。

\setmainfont{wqy-microhei.ttc}

2012年8月30日 星期四

改用 LuaLaTeX

unicode-math 這個套件雖然不錯,但是使用 xelatex,似乎還是有一些的問題。就非人這幾天碰到的就有 \underbrace 消失不見及數學式子中 f ' 會黏在一起。前一個問題,在網路上有人提到可用 tikz 套件用畫圖的方式將括弧畫上去。而第二個問題也可以設個命令解決,但是非人有一些大檔案只想小小的修改,不想一行一行地看。所以非人就想到是否改用 lualatex 會不會好一點。事實證明了 lualatex 不會產生上述兩個問題。不過,卻產生了新的問題。積分符號在沒有給上標或下標時,會留太多的空白。看來,到目前為止,還沒有一個完美的組合。(2013.05.04 更新:忘了之前在哪邊看到的解決方法,用 \int^{}_{} 取代 \int 就可以了。)

如果是英文的文件,那麼直接改用 lualatex 編譯就可以了。如果是中文的文件,以非人的習慣會使用 xeCJK 這個套件。但是 xeCJK 是專屬於 xelatex 的,所以必須移除。要換上 luatexja-fontspec 這個套件。設定中文字型的指令也要改一下,改 \setCJKmainfont\setmainjfont。luatexja 是日本人開發的,聽說對中文的支援不是很好。如果不是很堅持中文排版的內規,其實也可以了。

另外,如果用 beamer + lualatex 製作簡報檔的話,要加上

\hypersetup{unicode=true}

才能正確地顯示中文書簽。

2012年8月28日 星期二

LaTeX package: unicode-math

在編輯 LaTeX 文件時,常常會發現想要的數學符號,不知在哪一個套件裡有定義?為什麼數學符號要分別在那麼多的套件定義?原因是當時的字型檔能放的字數是少的可憐。

現在 LaTeX 有了很大的進步,xelatex 和 lualatex 都能夠直接使用系統的 (unicode) 字型。理所當然,數學符號也可以 unicode 來編碼。所以,當我們使用 xelatex (lualatex 還沒試過) 編譯 LaTeX 文件時,可以使用 unicode-math 這個套件

在文件中加入

\usepackage{unicode-math}
\setmathfont{xits-math.otf}

想要知道那些數學符號的 TeX 指令,只需要將 unimath-symbols.ltx 編譯成 pdf 檔就可以了,指令為

lualatex unimath-symbols.ltx

另外,在 Fileformat.Info 這個網頁中列出了 unicode 編碼的數學符號。

2012年8月16日 星期四

使用 biblatex 輸入參考文獻

在以前,要在 LaTeX 的文件中加入參考文獻,主要是利用 bibtex。原因是我們在平時就可以先建立參考文獻的資料庫,要寫文章時,再利用 bibtex 將需要的參考文獻匯入即可。但是經過那麼多年後,bibtex 就顯得有些不足了。例如,現在的文獻中很多都是線上文件,但是 bibtex 的文件類型並沒有。另外,有時我們想先列出書籍的參考文獻,再列出其它文獻。所以,出現了 biblatex 的加強套件。範例如下,test.tex 的內容為

\documentclass[a4paper,12pt]{article}
\usepackage[backend=bibtex]{biblatex}
\bibliography{refs} %使用資料庫 refs.bib
\begin{document}
Hello\cite{KandR}
\printbibliography
\end{document}

refs.bib 的內容為

@book
{KandR,
 author = "Kernighan, Brian W. and Ritchie, Dennis M.",
 title = "{The C Programming Language Section Edition}",
 publisher = "Prentice-Hall, Inc.",
 year = 1988
}

接著執行下列命令:

pdflatex test.tex
bibtex test
pdflatex test.tex

然而,故事還未結束。如果參考文獻有中文之類的話,那麼 bibtex 是會有問題的。(並不會出現錯誤訊息,而是產生的文件會看不到參考文獻)

albumasar 和 philkime 開發了 biber 這個專案。biber 是 bibtex 的替代品,主要的特色就是支援 utf8 的編碼。要使用 biber,只要將上述有 bibtex 的地方,改為 biber 就可以了。

2012年8月15日 星期三

調整版面及加入 MathJax 的支援

將版面調整了一下,順便換個清爽一點的版型。另外在「新增小工具」中,發現可以增加第三方所寫的 JavaScript,於是又順便將 MathJax (CDN) 加進來,這樣就可以加入數學式子了。

例如,輸入下列的 code

\(\int x^2 \, d x = \frac{x^3}{3} + C\)

就會顯示下列的式子

\(\int x^2 \, d x = \frac{x^3}{3} + C\)

MathJax 雖然很好用,但必須安裝 STIX fonts 才能正確的顯示數學式子,可參考 MathJax Font Help

刪除所有的標籤

今天抽空將所有的標籤全都刪除了。主要是因為之前設的標籤大多沒有意義,倒不如不要標籤。