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 自己手動輸入程式碼。
自從 1.6 版的 LyX 之後,LyX 都提供了 Modules 的選項,讓使用者可以選擇內建的模組,或是自己建立常用的模組。從 LyX 選單 Document→Settings... 裡的 Modules 可以看到所有可用的模組,如下圖。
Available 裡面列出了許多可以添加的 Module,例如,如果添加了 Braille 模組,這個模組就可以印出盲人用的點字系統。
LyX 的編輯畫面 |
排版結果 |
加入模組還算簡單,有的時候都是加完模組了,卻根本不太曉得這個功能要去哪邊「叫出來」。
這個跟設定模組時指定的樣式有關。不過大部分不外乎底下幾個地方:
實際上,LyX 內建的模組,我用到的機會幾乎等於0。
我寫這篇紀錄,主要是我發現 LyX 提供了讓使用者自己「客製化」模組的功能,因此針對自己的需求,撰寫模組設定檔,可以簡化常常需要在 Preamble 區手動貼上程式碼的困擾。但問題是,模組設定檔就不是這麼容易寫,裡面有許多設定值,光看說明文件就已經快眼花了,更不用說許多設定值看了等於沒看,一知半解,只能邊寫邊試。這次為了要在 LyX 中更方便的使用 tcolorbox 套件,終於稍微弄懂如何自製模組。以下我就以製作一個 tcolorbox 環境的模組為例子做說明。
要製作自己的模組,最方便的方式就是參考現有的模組大概如何寫,然後想辦法改成自己的。Linux 中,LyX 內建的模組會放在 LyX 程式目錄下的 layouts 目錄下。(可以在命令列輸入 lyx --version, 就會顯示 Lyx files dir。我的 LyX 程式目錄為 /usr/local/share/lyx, 因此內建的模組設定檔,就放在 /usr/local/share/lyx/layouts 裡面)目錄內所有以 .module 為結尾的檔案,就是模組設定檔了。
使用者自己的模組設定檔,則放在 $HOME/.lyx/layouts 裡面。我可以將自己撰寫好的模組設定檔放在這裡,開啟 LyX 後,選擇 Tools→Reconfigure 讓 LyX 重新搜尋所有模組並建檔。只要是自己的模組檔有更動,都需要做這個動作 LyX.
另外一種方式,可以讓模組檔隨著 .lyx 文件存在一起,就是將模組設定檔寫在 Document→Settings...→Local Layouts 裡面,如下圖。LyX 文件內包含了模組設定,就算拿到沒有模組設定的機器上開啟 LyX,顯示的 LyX 格式也是會正常的。
我先建立一個空白 LyX,接著在 Local Settings 貼入下面的程式碼:
按下 OK 後,完成設定。
在主文件中的 Insert→Custom Insets 就會多出 5 個選項。前三項分別代表插入藍色、紅色、原始的顏色框;tcblower 則是用來分隔上層與下層的命令; tcbset 則是手動放入 tcolorbox 的一些命令時用的。
當我需要一個 tcolorbox 的環境時,直接從這裡選擇,螢幕上就會跳出一個 Box 的方框,讓我可以直接在方框內輸入內容,這樣就很方便了!
排版結果:
實際上這個模組,功能可能不是很完備,因為我對模組的許多設定值都還不是很熟。有心想要用的更順手的人,可能需要再修改模組設定了。
如果想要更深入了解 LyX 的模組功能,可以參考 Help→Customization 的文件,裡面有詳盡的解釋。
下載 LyX 原始檔: tcolorbox_with_module.lyx
參考網站: http://www.oak-tree.us/2010/07/13/custom-lyx-modules/
這個跟設定模組時指定的樣式有關。不過大部分不外乎底下幾個地方:
- 選擇樣式的下拉式選單
- Insert→Custom Insets 裡 (或是 Insert→List / TOC、Insert→float 等處)
- 文字或段落樣式的設定選項
加入 Braille 模組後,可以從樣式選單選擇希望變成點字的段落。 |
加入 Braille 模組後, 從 Insert→Custom Insets 內選擇插入 Braillebox |
加入 Logical Markup 模組後,Text Style 會多出四種可以選擇 (Code, Emph, Noun, Strong) |
我寫這篇紀錄,主要是我發現 LyX 提供了讓使用者自己「客製化」模組的功能,因此針對自己的需求,撰寫模組設定檔,可以簡化常常需要在 Preamble 區手動貼上程式碼的困擾。但問題是,模組設定檔就不是這麼容易寫,裡面有許多設定值,光看說明文件就已經快眼花了,更不用說許多設定值看了等於沒看,一知半解,只能邊寫邊試。這次為了要在 LyX 中更方便的使用 tcolorbox 套件,終於稍微弄懂如何自製模組。以下我就以製作一個 tcolorbox 環境的模組為例子做說明。
要製作自己的模組,最方便的方式就是參考現有的模組大概如何寫,然後想辦法改成自己的。Linux 中,LyX 內建的模組會放在 LyX 程式目錄下的 layouts 目錄下。(可以在命令列輸入 lyx --version, 就會顯示 Lyx files dir。我的 LyX 程式目錄為 /usr/local/share/lyx, 因此內建的模組設定檔,就放在 /usr/local/share/lyx/layouts 裡面)目錄內所有以 .module 為結尾的檔案,就是模組設定檔了。
使用者自己的模組設定檔,則放在 $HOME/.lyx/layouts 裡面。我可以將自己撰寫好的模組設定檔放在這裡,開啟 LyX 後,選擇 Tools→Reconfigure 讓 LyX 重新搜尋所有模組並建檔。只要是自己的模組檔有更動,都需要做這個動作 LyX.
另外一種方式,可以讓模組檔隨著 .lyx 文件存在一起,就是將模組設定檔寫在 Document→Settings...→Local Layouts 裡面,如下圖。LyX 文件內包含了模組設定,就算拿到沒有模組設定的機器上開啟 LyX,顯示的 LyX 格式也是會正常的。
Local Layout 內可以放入自訂的模組 |
#\DeclareLyXModule[tcolorbox.sty]{tcolorbox environment} #DescriptionBegin # To insert a tcolorbox environment. # 建立 tcolorbox 環境 #DescriptionEnd # Author : Mingyi Wu # Date : 2013/12/12 Requires tcolorbox | xcolor AddToPreamble \usepackage[svgnames]{xcolor} \usepackage[skins,documentation,listingsutf8]{tcolorbox} \tcbset{listing engine=listings, listing inputencoding=utf8, drop fuzzy shadow, listing options={style=tcblatex,keywordstyle=\color{blue}}} EndPreamble # 沒有做任何設定的 tcolorbox InsetLayout Custom:Tcolorbox(default) LyXType custom Labelstring Box Decoration classic LabelFont Color collapsable Size Small EndFont MultiPar true LatexName tcolorbox LatexType Environment End # 藍色的, 上層藍,下層白 InsetLayout Custom:Tcolorbox(Blue) LyXType custom Labelstring Box(B) Decoration classic LabelFont Color collapsable Size Small EndFont MultiPar true LatexName myBlueBox LatexType Environment Preamble \newtcolorbox{myBlueBox}{colframe=Navy!50!ExampleFrame,bicolor,colback=Navy!5!ExampleBack,colbacklower=white} EndPreamble End # 紅色的盒子,單色 InsetLayout Custom:Tcolorbox(Red) LyXType custom Labelstring CrBox(R) Decoration classic LabelFont Color collapsable Size Small EndFont MultiPar true LatexName tcolorbox LatexType Environment LatexParam "[colback=red!5!white,colframe=red!75!black]" End # default tcolorbox setting InsetLayout Custom:tcbset LyXType custom Labelstring tcbset Decoration classic LabelFont Color collapsable Size Small EndFont MultiPar true LatexName tcbset LatexType command End # 插入分隔下層的指令 InsetLayout Custom:tcblower LyXType custom Labelstring tcblower Decoration classic LabelFont Color collapsable Size Small EndFont MultiPar false LatexName tcblower LatexType Command End
按下 OK 後,完成設定。
在主文件中的 Insert→Custom Insets 就會多出 5 個選項。前三項分別代表插入藍色、紅色、原始的顏色框;tcblower 則是用來分隔上層與下層的命令; tcbset 則是手動放入 tcolorbox 的一些命令時用的。
當我需要一個 tcolorbox 的環境時,直接從這裡選擇,螢幕上就會跳出一個 Box 的方框,讓我可以直接在方框內輸入內容,這樣就很方便了!
排版結果:
實際上這個模組,功能可能不是很完備,因為我對模組的許多設定值都還不是很熟。有心想要用的更順手的人,可能需要再修改模組設定了。
如果想要更深入了解 LyX 的模組功能,可以參考 Help→Customization 的文件,裡面有詳盡的解釋。
下載 LyX 原始檔: tcolorbox_with_module.lyx
參考網站: http://www.oak-tree.us/2010/07/13/custom-lyx-modules/
你好
回覆刪除冒昧請教
如何在lyx裡key出AB弧?
您好,這功能需要額外使用 fourier 套件庫。
回覆刪除先在 文件->設定值->LaTeX 前文 內輸入
\usepackage{fourier}
按下「確定」後,接著在 LyX 的數學輸入模式下輸入
\widearc{AB}
就會在 LyX 中看到 AB弧 的數學式了。
很感謝!您幫了我一個大忙了!真的很感謝!
刪除