2013年12月13日 星期五

LyX 模組功能

LyX 雖然功能還滿多的,但是也只能涵蓋整個 LaTeX 的一小部份。像前一篇在練習 csvsimple 的時候,我會用到 tcolorbox 套件,需要將內容放在一個 tcolorbox 的時候,我就必須插入 TeX Code 環境,自己輸入
\begin{tcolorbox}
  ...內容...
\end{tcolorbox} 
當需要放很多這種環境時,一直複製、貼上,也是很煩人的。
研究了一下,終於大概知道該如何簡化這種煩人的動作,關鍵就在於 LyX 的模組功能(Module)。

LyX 的「模組」,就類似於 LaTeX 的 styles/packages。一份文件只能指定一種 document class, 但卻可以添加許多的樣式或套件以美化文件。在 LaTeX 中需要自己手動引用這些樣式或套件;在 LyX 中,可以自己在 LaTeX Preamble 撰寫引用命令,然後在 LyX 中插入 TeX Code 完成所需功能。

但如果在 LyX 中一直插入 TeX Code,這樣也不需要 LyX 了。因此 LyX 設計了「模組」功能,讓一些功能,能夠透過增加模組,就自動增加了某些 LaTeX 的功能,而且可以透過 LyX 的圖形介面使用 LaTeX 。加入模組後,模組會自動在 Preamble 區輸入相關設定,因此有的時候就算不知道想要使用的套件名稱,看到模組裡面有,直接增加模組,馬上就可以用了。
而且,使用者可以自己添加模組設定,加入自己常用的功能。以後如果需要某個功能時,直接加入模組,不用每次都在 LaTeX Preamble 自己手動輸入程式碼。

2013年12月6日 星期五

LaTeX 的「合併列印」--- csvsimple 套件

幾個禮拜前,我需要列印一份 Excel 的資料(這只是泛稱,不代表真的 Microsoft Office 的 Excel 檔案),但是希望格式可以工整一點,因此我想到利用 Word 的合併列印功能。但因為現在都用 LibreOffice, 所以我自然希望用 LibreOffice 裡面的「合併列印」功能,完成這個表單。試了一陣子,發現 LibreOffice 的合併列印功能實在太陽春了,似乎只能印標籤、信件等等,實在不是很好用。

後來我突然想到,不知道能否用 LaTeX 來做?搜尋一下,果然發現有好幾個套件都支援從 CSV (逗點分隔值格式) 抓取資料,稍微瀏覽一下各個套件的範例檔,我覺得 csvsimple 似乎比較好用一點,我就決定來試試看這個套件。

當然一邊看說明文件,一邊照著練習,看完說明文件也剛好做完一個小紀錄文件。

在看說明文件的時候,突然發現 csvsimple 套件的說明文件做的好精緻呀!後來查看說明文件的原始碼,才知道它另外用了 tcolorbox 的套件,所以我也如法炮製試試看。也順便發現了另外一個好用的套件 tcolorbox 。

csvsimple 套件在 LyX 中使用的時候,需要輸入很多 TeX Code,雖然我一開始很排斥看到一大堆 TeX Code 出現在文件中,但習慣之後就覺得,csvsimple 這麼多種功能變化,要做成圖形介面也是很不容易的,所以稍微辛苦,查看一下說明文件再輸入 code,也是可以接受的。

另外說明一下,LyX 原始檔使用 xeCJK 排中文(會用到 5 種 cwTeX TTF 字型),電腦內如果沒有這 5 套字體,會無法排版。可以參考前幾篇介紹 xeCJK 的部份安裝字體。改用 xeCJK, 是因為我原先用 CJK 排的時候,程式碼內只要有中文字的時候,都會出錯,讓我很沮喪。後來轉用 xeCJK 時,輕輕鬆鬆就處理完,也讓我慢慢愛上用 xeCJK 排中文文件了。

下載原始檔 test_csvsimple.zip

2013年12月4日 星期三

使用 CJK 放入含有中文字的程式碼的詭異問題

最近又需要寫個有放入程式碼的文件,程式碼中含有中文。依照之前的經驗,我只需要在 Document > Settings... > Listings 的空白處設定 extendedchars=false, 輸入的程式檔案內有中文都可以正常顯示出來。

但是最近發現,如果我放入一個 .csv 格式的檔案,中文字就會亂跑了。
嘗試著使用 listingsutf8, inputenc 等套件,加入 inputencoding=utf8  命令,都沒用。

百試不得其解下,最後只好改用 xeCJK 套件試試看。一排版...完全正常!
這真的是個詭異的問題! 研究了半天,也找不到原因所在。
我也只能暫下一個結論:「如果用 CJK 排版含有中文的程式碼有問題時,可以改用 xeCJK 試試看。」

使用 xeCJK 套件處理中文,CSV 檔案正常顯示內容。

使用 CJK 套件處理中文,CSV 檔案內容出錯。

文件檔下載