2016年8月14日 星期日

用 pgfplots 套件繪製數據圖

最近因為工作寫報告的緣故,需要在文件中放入許多測量數據的結果圖。我平常是使用 Gnuplot 繪出圖案後,輸出成 .eps 的檔案格式,再放入 LyX 文件中。但如果一個文件中有非常多的數據圖需要呈現的時候,要一個一個輸出 .eps 檔案也是很麻煩的。因此,我就搜尋看看能否直接在 LyX 中用數據資料繪圖?當然答案是肯定的。只是這些步驟是不是夠簡單而已。

首先我先參考 TikZ & PGF 的參考手冊,裏面的 Plots and Functions 一章提到「如果要使用科學座標軸簡單的繪製函數或圖形的話,可以使用 pgfplots 套件或 (TikZ的) datavisualization 命令」。當然我是比較懶的,不太想另外花時間研究新的 pgfplots 套件。仗著只了解一點點 TikZ 語法的基礎下,決定來研究看看 datavisualization 命令該如何使用?

使用方式很簡單,但我一下子就遇到麻煩了。因為我需要繪製的資料是類似底下這種結構 :
# Time Sensor_A B C
# 
# For demo
0 2 2 2
1 2 2 3
2 3 4 7
3 4 6 11
...


2015年11月16日 星期一

keystroke & menukeys 套件的簡易用法

最近需要在文件中加入「鍵盤按鍵」以及「路徑」的圖案,搜尋一下 texlive 的文件庫,就找到兩個套件就可以做到這樣的效果了, 在此簡單紀錄一下。

keystroke 套件

使用方法:
\usepackage{keystroke}
在文件中以 "插入 TeX Code" 的方式插入欲放置的鍵盤圖案。
例如, 在 LyX 中輸入:

排版結果 :
(註: 國中的歷史地理都忘了,密技卻記得這麼清楚... Orz)

可惜的是該套件沒辦法繪製 Apple 鍵盤的圖案。
真的有需要繪製 Apple 鍵盤的話,可以參考這個連結的解決方法。
或是用底下的套件亦可。

參考文件: http://ftp.yzu.edu.tw/CTAN/macros/latex/contrib/keystroke/key-test.pdf

menukeys 套件

這個套件主要在繪製選單列以及路徑,讓讀者一看就知道文件中指的是什麼。
使用方法:
\usepackage[os=win]{menukeys}
選項部份的 os 可以輸入 win  或 mac, 可以改變一些內容的呈現方式, 預設是 mac。

也是以 TeX Code 的方式插入內容。以下列出幾個常用且簡易的方法:
  • 選單列: 
\menu{AAA > BBB > CCC}
預設是以 > 做分隔號,也可以自訂義成其他的,設定在 options 的地方。例如:
\menu[,]{AAA,BBB,CCC}
  • 路徑名稱:
\directory{C:/Windows/drivers}
預設是以 「/」做分隔號 (因為反斜線在 LaTeX 中有其他用途了)。

  • 改變預先定義的樣式
\renewmenumacro{\directory}[/]{pathswithblackfolder}
第一個 {\directory} 代表要改變「路徑名稱」的定義,分隔號使用 「/」, 改變定義為 pathswithblackfolder. 至於有哪些預定義的名稱可用,可以參考 menukeys.pdf 這個說明文件。

範例:

 排版結果:


  • 按鍵:
\keys{Ctrl+Alt+Del}
預設是以 + 做分隔號。
按鍵的圖案,會隨著 package 的選項而變。如果是用預設的 [os=mac], 就可以繪製出 Apple 的 Command 按鍵的圖案了。



2014年3月18日 星期二

大陸的參考文獻的樣式

大陸的「中國國家標準化管理委員會」制定了一個 書後參考文獻 的標準, 稱為 GB/T 7441-2005,並建議(非強制)大陸出版的學術論文、期刊、書籍,都按照這個標準去製作 參考文獻。

我是覺得這樣的作法還不錯,至少有個標準可以處理中文文獻。

要不然許多中文文獻的資料,遇到 IEEE, APA, Chicago 等文獻格式的時候,很難 100% 符合原本為英文文獻設計的格式。而且一些書目軟體(如 EndNote)都沒辦法正常處理中文書目,還要另外製作製作中文專用的樣式檔案來處理。在人文社會學系的論文,其參考書目泰半是中文、英文都有,遇到這種情況就會變得比較麻煩。

不過台灣的學術界,不太可能去遵照大陸制定的標準,因此會看到各個科系提交的論文,會遵照不同的參考文獻樣式。

但我還是想試試在 LyX 使用 GB/T 7441-2005 格式處理中文文獻時,是否方便好用?如果好用,在不是那麼正式的文章中,就可以用這種格式。

首先,我找到有人提供符合 GB/T7714-2005 格式的參考文獻檔 (.bst):
https://github.com/Haixing-Hu/GBT7714-2005-BibTeX-Style

下載後,可以按照該文章所說的方法安裝,或是自己手動安裝 gbt7714-2005.bst 檔案。

接著可以按照 test 資料夾內的測試檔案,用 LyX 做一次,馬上就可以看到正常輸出了。
另外,我將 test.bib 檔案內的簡體中文書目,換成繁體中文書目,也是可以正常處理的!

2014年3月9日 星期日

排版象棋棋譜

前幾天看到維基百科介紹 LaTeX 可以做些什麼,突然看到一個「排版象棋棋譜」的套件,讓我覺得非常有趣!

我知道 LaTeX 可以排西洋棋棋譜,但我不知道還可以排象棋棋譜,當下就決定來試試看!

維基百科說需要用到 cchess 套件,查看了一下這個套件:
 http://www.ctan.org/tex-archive/macros/latex/contrib/cchess


結果...殘念啊..TeXLive 沒有收錄,所以 Linux 下不能輕易就使用這套件。但是 MikTeX 有收錄這個套件,所以如果是 Windows 下安裝 MikTeX 的話,就可以直接使用 cchess  這個套件。

不過看起來這個套件檔案不多,我決定自己擴充一下。方法類似於前一篇提的,這裡就直接寫在 Linux 中我做了哪些步驟。

套件庫中顯示有 5 個檔案:

$ mkdir -p ~/texmf/tex/latex/cchess
$ cp cchess.sty cchessboard.tex ~/texmf/tex/latex/cchess/
$ mkdir -p ~/texmf/fonts/tfm/cchess
$ cp cchess46.tfm ~/texmf/fonts/tfm/cchess/
$ mkdir -p ~/texmf/fonts/source/cchess
$ cp *.mf ~/texmf/fonts/source/cchess/
$ texhash ~/texmf

完成之後,重新配置一次 LyX, 關掉再重開 LyX,就安裝好了!

接著按照 cchessboard.tex 內的解說,試著自己畫一次,用 ps2pdf 的方式編譯,就可以看到排版結果了!:D
真的是太有趣了!

LyX 原始檔: cchess_board.lyx


不過 cchess 套件比較適合畫出「靜態」的棋盤,不太適合畫出下棋的「動態」流程。
因此,我發現還有另外一個 xq 套件,比較適合畫出動態的棋盤。而且 xq 套件都有收入在 TeXLive 和 MikTeX 中,直接使用就可以了。

我稍微測試了一下,覺得也很有趣!
LyX 原始檔: xq.lyx

 

我只有稍微試驗一下,有興趣的人再參考 xq 套件的範例 .tex 檔。

2014年2月19日 星期三

自行加入文件類別 & 寫 ACM SIGGRAPH 格式的論文

LyX 提供了許多 .layout 檔給使用者使用,但是 .layout 檔只是定義了 LyX 界面要如何呈現, 以及如何對應成 LaTeX  Code. 若是缺少了 Class 檔案 (.cls),就算有了 .layout 檔案也沒用,LyX 還是無法排版出正確的文章。如下圖,一堆「無法使用」的文件類別,幾乎都是 LyX 提供了 .layout 檔, 但是系統找不到 Class 檔。

「無法使用」的文件類別,幾乎都是缺少了 Class file (.cls)  造成的。

我之前一直搞不太懂該如何加入自己的 class file,以及 BibTeX 格式檔,最近終於試驗成功,在此紀錄一下步驟。

我以 ACM SIGGRAPH 格式論文為範例。ACM SIGGRAPH 是一個關於電腦圖學的組織, 如果要投稿論文時,需要以它們規範的格式提供論文。最方便的當然是用官網提供的 acmsiggraph 的 LaTeX 類別檔(.cls) 及 BibTeX 檔(.bst) 撰寫。ACM SIGGRAPH 官方網站: http://www.siggraph.org/learn/instructions-authors

從官網下載 acmsiggraph.zip 檔案後,解壓縮後可以看到有很多檔案。其中的 icons, .cls 和 .bst  是最主要的檔案,其他的都是 範例+說明。

紅框中的檔案跟樣式定義有關,其他是範例資料。

安裝 .cls 檔案 及 .bst 檔

在家目錄下,自己建立一個 texmf 的資料夾(如果已經有了,就不用再建立)。[註1]
接著用 mkdir 命令建立以下兩個目錄 [註2]:
$ mkdir -p ~/texmf/tex/latex/acmsiggraph
$ mkdir -p ~/texmf/bibtex/bst/acmsiggraph
接著將 .cls 檔案, icons 資料夾 和 .bst 分別複製到這兩個目錄下:
$ cp -r acmsiggraph.cls icons/ ~/texmf/tex/latex/acmsiggraph/
$ cp acmsiggraph.bst ~/texmf/bibtex/bst/acmsiggraph/
再執行 texhash ,在 ~/texmf 下,建立一個 ls-R 檔案(資料庫)
$ texhash ~/texmf

接下來再開啟 LyX, 重新配置一次,再重開 LyX, 就完成了!

[註1]: 這個是 Linux 預設的 user's texmf 目錄,如果是 Mac 的,則可能是 ~/Library/texmf。因此最保險的作法,應該是先用 tlmgr conf texmf TEXMFHOME 命令,看看預設值為何 (也就是 TEXMFHOME 設定值),再於預設路徑下建立目錄。如果想用別的目錄名稱,需手動加入 TEXMFHOME  變數中。可參考 網站1網站2 的說明。

[註2]: TeX 的檔案結構名稱是固定的,因此這邊的路徑名稱不能亂取。如果亂取, TeX Live 可能就會找不到該檔案了。詳細的命名規則,請參考 TDS, http://tug.org/tds 的文件。

用 LyX 寫 ACM SIGGRAPH 論文

如果上述步驟都很順利的話,那麼在 LyX 的選單 「文件→設定值→文件類別」裡面,就可以看到 ACM SIGGRAPH 的選項可用了。如下圖。
ACM SIGGRAPH 類別不再是「無法使用:」了。
選好文件類別後,第一個要注意的是「語言」的選項。由於這種投稿文件一定是「英文」的,所以要確定語言選項為「英語」, 而且語言套件的部份,可以直接選擇「無」,避免 LyX 自動載入 Babel 等套件。

接下來,可以對照官網提供的範例檔 template.tex 的內容,自行在 LyX 照著做一次看看,就可以知道在 LyX 中該如何使用了。

讓我卡住一下,不知道該如何輸入的,有以下幾個地方:
  1. 兩位以上的作者該如何並排?
    • 解決方法:  在兩位作者中,加入 TeX Code: \and
  2. 文件沒有自動把 Title 等資料排版出來。
    • 解決方法: 加入 TeX Code: \maketitle
  3. 範例檔中的 \CRcat{}{}{}{} 命令,需要輸入 4 個參數, 在 LyX 中不知道該如何輸入?
    • 從選單「插入」中,可以找到相對應的格式。如下圖。


用 LyX 做一遍,很容易就做出與官網提供的範例 PDF 一樣的結果。這樣要用 LyX 撰寫自己的 ACM SIGGRAPH 論文,就很容易了 :-) 。

附件:  我的練習檔.


2014年2月13日 星期四

LyX 使用者界面的中文翻譯經驗談

長久以來我用 LyX 都是用英文環境的界面,後來看到 LyX 官方網站提供的各語言翻譯進度,我就驚覺繁體中文版的翻譯進度好像太落後了,最「新」進度竟然是 2007 年...

有一天,想說「好吧!既然我自己都覺得 LyX 這麼好用,以後若要介紹其他人用,總不能都請他們用英文的界面吧!」我就決定來改善一下 LyX 中文界面的翻譯進度。因此從去年年底開始,我就開始研究該如何進行使用者界面的翻譯工作。

首先當然要先下載原始碼,當時最新的版本是 2.0.6,因此我就先以 2.0.6 版為主。下載程式原始碼後,找到裡面的 po 資料夾,裡面有個 zh_TW.po 這個純文字檔,這個檔案就放著所有的翻譯資料。不過翻譯之前,必須先閱讀一下 README.localization 的指引,看一下該如何進行翻譯。

一開始,我是採用 poedit 這個工具來協助我翻譯,但是翻沒幾個項目之後,我就沒力了。因為這個工具雖然方便,但很難看到翻譯項目的上下文,看不到上下文就很難猜目前這個翻譯項目,最後會出現在程式界面中的什麼地方?如果不知道翻譯的項目最後出現的位置,就很有可能會翻譯出不恰當的詞句。
後來,我改用最陽春的 vim 來編輯,感覺就好用多了。因為 vim 可以清楚的看到文件上下文,而且搜尋功能很好用,我可以很方便的尋找到其他翻譯過的類似詞彙,直接複製過來用就好。

改完 zh_TW.po 之後,若要測試翻譯結果,就必須做編譯動作後,再進行安裝。
我使用 Ubuntu 12.04,LyX 是直接從原始碼安裝的。因此,LyX 安裝的路徑為 /usr/local/  在安裝 LyX 的時候,純文字檔 zh_TW.po 會先編譯成 zh_TW.gmo 的二進位檔,再 搬移&改名 到 /usr/local/share/locale/zh_TW/LC_MESSAGES/lyx.mo

因此若不想每次改完 zh_TW.po 檔之後,還要重新用命令 make install 安裝整個 LyX 的話,可以自己手動編譯成 zh_TW.gmo, 再自行複製取代原本的 lyx.mo 檔案,就可以看到翻譯的結果了。

因此,我先將原始檔的 zh_TW.po 複製到一個新資料夾, 建立一個 Makefile, 內容如下:
all:
    msgfmt -c -v -o zh_TW.mo zh_TW.po
    sudo mv zh_TW.mo /usr/local/share/locale/zh_TW/LC_MESSAGES/lyx.mo
    lyx

我一個畫面用 vim 編輯完存檔後,另外一個畫面立刻輸入 make 指令之後,就會自動編譯、複製後,開啟 LyX。這樣就很方便立刻檢查翻譯的結果適不適當。

為 LyX 做翻譯,最大的好處就是又搞懂了許多 LyX 提供的功能,了解文件語系與界面語系的不同處,  而且也發現到了原始碼中錯誤的地方,自行微調之後,我終於覺得 LyX 用中文界面也很好用了!

以下紀錄一下我微調的項目:

  1. 我已將翻譯好的 zh_TW.po 提交給 LyX 團隊, 但我不知道它們何時會放入套件庫中。因此有興趣的人,可以直接下載我編譯好的二進位翻譯檔 lyx.mo,下載後根據您的作業系統,放入 LyX 程式的路經內。這個二進位檔應該適用所有 2.0.x 版本的 LyX。
    (建議先把舊的 lyx.mo 備份出來,如果新檔不能用,還可以把舊檔還原回去)
    下載二進位繁體中文翻譯檔 lyx.mo
    • Windows
      • C:\Program Files\LyX 2.0\Resources\locale\zh_TW\LC_MESSAGES\LyX2.0.mo
      • 需要將 lyx.mo 改名成 LyX2.0.mo
    • Mac
      • /Applications/LyX.app/Contents/Resources/locale/zh_TW/LC_MESSAGES/LyX-2.0.mo
      • 需要將 lyx.mo 改名成 LyX-2.0.mo
    • Linux 作業系統
      • 可能在:
        /usr/local/share/locale/zh_TW/LC_MESSAGES/lyx.mo
        /usr/share/locale/zh_TW/LC_MESSAGES/lyx.mo
      • 如果上述路徑找不到,可以開啟終端機視窗,輸入 locate lyx.mo,檢查看看舊版的 lyx.mo 放在哪裡?
  2. 修改 languages 檔案中,關於繁體中文的編碼。(這個是一個 bug, 從 2.0 版都是這樣, 我也已回報 LyX 團隊希望他們能修正, 從 2.0.8 版後應該都會修正了)。各作業系統該檔的路徑為:
    • Windows
      • C:\Program Files\LyX 2.0\Resources\languages
    • Mac
      • /Applications/LyX.app/Contents/Resources/languages
    • Linux 作業系統
      • 可能在:
        /usr/local/share/lyx/languages
        /usr/share/lyx/languages
  3. 用純文字編輯器開啟 languages 檔案後,搜尋 zh_CN, 您會發現如下的項目。將其中的 zh_CN 改為 zh_TW這樣使用者界面語言的選項、以及選擇「繁體中文」後,工作區顯示的文字才會是正確的。
# uses CJK package
Language chinese-traditional
 GuiName         "Chinese (traditional)"
 Encoding        utf8-cjk
 LangCode        zh_CN
End

微調後,就可以開啟 LyX 看看了!
首先先將使用者界面的語言換成「中文(正體)」,儲存,重新啟動之後,就可以看到中文界面了。如下圖。
選擇程式界面語言

CJK 字體設定的部份,也有 pop up 提示了。

模組部份的說明,也盡量翻譯成中文

最後要說,其實在翻譯「模組」這部份的時候,發現「模組」真的是好用的工具呀!之前我說我可能都不會用到,實在大錯特錯。現在要說,熟悉之後,以後會常常用到了。:-D

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 自己手動輸入程式碼。