近來入手了一台 MacBook Pro,就開始使用不一樣的 TeX system。原先的 Linux 下,是使用 TeXLive,用 LuaLaTeX 來處理中文。但有次更新後,在使用上出了問題,所以就改用 XeLaTeX 處理中文。畢竟 XeTeX 當初是在 Mac 上開發出來的,問題應該會比較少。
日子過得好快,一轉眼又過了一年。混到自己都很心虚。
近來入手了一台 MacBook Pro,就開始使用不一樣的 TeX system。原先的 Linux 下,是使用 TeXLive,用 LuaLaTeX 來處理中文。但有次更新後,在使用上出了問題,所以就改用 XeLaTeX 處理中文。畢竟 XeTeX 當初是在 Mac 上開發出來的,問題應該會比較少。
日子過得好快,一轉眼又過了一年。混到自己都很心虚。
ConTeXt 也有十幾年的歷史了,由於和 LaTeX 的差異性太大,所以非人一直無法上手。上個月破斧沉舟,將 MikTeX 移除了。改安裝 ConTeXt Standalone,強迫自己在使用 Windows 時,只能使用 ConTeXt。只是非人幾乎不使用 Windows,所以學習的進度非常緩慢。目前只是將 ConTeXt Standalone 安裝成功而已。
以前 MikTeX 的更新比較單純,自動安裝的套件都是放在 MikTeX 的安裝目錄中。但是自從使用 Windows 7 後,維護變得複雜了,分為兩種:一種為 Admin,另一種是給一般的使用者。主要是 Windows 7 中,MikTeX 自動安裝的套件會放在個人目錄下,必須要使用一般使用者的維護,才能更新個人目錄下的 MikTeX 套件。
在上一篇文章中,非人所遇到的問題,便是因為不熟悉這種更新模式所造成的。主要是非人用 "Package Manager (Admin)" 安裝了 xeCJK 這個套件,然後在 xelatex 時,自動安裝了 l3kernel 及 l3packages 的套件。後來非人使用 "Update (Admin)" 來更新套件,xeCJK 更新了,但 l3kernel 及 l3packages 並沒有更新。
知道這個原因後,就解決了上一篇的問題。暫時不用換成 TeXLive。
在 Windows 下,使用 MikTeX 編輯中文文件。非人發覺使用 xelatex + xeCJK 是比較方便的,不過最近發現 xeCJK 更新了,但是相關的套件卻一直未更新,造成在編譯的過程一直失敗。不知道何時才會有更新。
看來要找個時間換成 TeXLive。
這是昨天碰到的問題,使用 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 的定義,不知到哪裏會出現無法預期的排版錯誤。
在 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}
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}才能正確地顯示中文書簽。
在編輯 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 編碼的數學符號。
在以前,要在 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 就可以了。
將版面調整了一下,順便換個清爽一點的版型。另外在「新增小工具」中,發現可以增加第三方所寫的 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
在 2010 的最後一天居然感染到一種腸胃型的病毒,整天都沒有胃口。當天晚上看了醫生之後,便早早休息了。睡個好覺,迎接新的一年的到來。果然一早起來,神清氣爽。
每次新的一年都會對未來發一些夢話,今年就不講了。只希望今年能做到「今日事今日畢」。
使用 sbcl 啟動 stumpwm 實在是太慢了,之前一直找不到解決的方法。今天突然想到這個問題,於是又上網查了一下。查到一個訊息說新的 cl-asdf 已經解決 clisp 無法啟動 stumpwm 的問題。於是乎,現在 stumpwm 啟動不需等太久了。
經過很久的一段時間思考後,終於決定將 Caps Lock 和左邊的 Control 鍵交換。在 Debian 上,還蠻容易的。只要修改 /etc/default/keyboard 這個檔案。將
XKBOPTIONS="lv3:ralt_switch"改為
XKBOPTIONS="ctrl:swapcaps,lv3:ralt_switch"重開機後,就可以了。當然可以不需要重開機,只是非人不想花時間去找相對應的指令。
剛剛改好,還不太習慣,過一陣子後應該就會習慣了。
之前提到 emacs-snapshot 有內建 org-mode。所以沒有特別再安裝 org-mode。
最近開始學習 org-mode,試著利用 emacs + org-mode 來管理個人的行程或專案。但是今天發現內建的 org-mode 將 .org 文檔轉為 .html 檔時有些問題。在轉換的設定上,將 LaTeX 的區塊轉為圖檔。轉圖是沒問題,但圖檔放到 html 檔中順序不對,全部往後順移一個。這時才特別注意到內建的版本是 6.33。而最新的版本是 6.34。
於是另外再安裝 org-mode,這個問題就解決了。補充一下,為了快速輸入 LaTeX 指令,非人另外下載了 CDLaTeX
之前那篇「無法切換到 Console」中提到的問題,在昨天換了 kernel image 之後,就沒問題了。這問題果然不是非人這種等級的人可以解決的。
也許可以解讀為是 kernel 的問題。
有 Console 可以用,還是比較方便。畢竟有時 X-win 也是會出現問題的。
幾天前,去買了一個 USB KVM Switch。本來想買手動切換的,但是手動切換的 KVM 只有 PS/2 規格的。
今天終於將線路鋪好,將 KVM 裝了上去。結果是無法切換,熱鍵全都無效。非人還以為買到的是號稱支援 Linux 但實際上卻不支援的產品。最後還是求助網路。
將型號打上,居然在第二個就看到「Problem with .... USB KVM Switch」。看來不是只有非人有問題。看了一下最佳的解決方案是將鍵盤和滑鼠的接頭對調。非人心想就試試吧,沒想到真的可以。
再看看使用手冊,裡面並沒有提到鍵盤和滑鼠必須要插在指定的孔上。也就是說每個買這家 KVM 的人都會有二分之一的機會碰到這個問題。真令人不爽。
這個問題存在有一段時間了,非人的筆電無法從 X Windows 切換到 Console。原因不明,在網路上有看到類似的情形,但他們的解法,並不適用於非人的筆電。就這樣先放著好了。
前一陣子, Debian unstable 某個套件升級後,StumpWM 就掛了,錯誤訊息看起來像是 clisp 的問題。等了一段時間沒見到有新的更新。所以這一陣子都是使用 xfce,實在是很不習慣。
今天突然想到「不一定要 clisp 才能執行 StumpWM」,也可以使用 sbcl。於是乎在 .stumpwmrc 這個檔案中加入
;debian=sbcl就又可以再使用 StumpWM 了。