2011年12月31日 星期六

Beamer 套件做分欄內容

最近要做投影片,為了要比較兩個圖,想要將圖片並排。試了好久,終於知道 LyX 中的, Beamer 套件是如何做到分欄內容的。
假設我希望排版出的投影片如下圖,兩張圖要分開成兩欄。

簡單的說,方式是:

文字類別選單
  1. 在 LyX 中,從左上角的選單中選擇文字類型。先選擇「Columns」(注意右圖中的界面,被翻譯成中文了,實際上應該是英文的 Columns)。也可以置入「ColumnsCenterAligned」「ColumnsTopAligned」。 
  2. 再選擇「Column」,告訴 LyX 這是第一欄,底下放入內容.
  3. 再選擇「Column」,這行之後就屬於第二欄的內容。
  4. Tab 鍵讓 Column 以下內容全部屬於 Columns 階層!(此步最重要!)
這部份真的不太容易用寫得寫明白,就用影片說明吧!希望有志之士看懂之後,都能做出美美的投影片。

PS. Windows 下若無法播放 .ogv 的影片,請安裝解碼程式 http://www.xiph.org/dshow/ 

2011年12月17日 星期六

在 Windows 上建構 LaTeX + LyX 的環境

這是以前做的一個小投影片,目的在鼓勵學弟學妹們接觸 LaTeX,放在這裡參考參考。

2011年12月11日 星期日

文章中的標點符號

最近看到一份文件,是關於文章中使用標點符號應該注意的事項。


"中英文標點、符號、打字、排版、編校須知"。
(自己存檔備用區).

看完之後,我就驚覺在 LaTeX 排版中,我似乎都沒有注意到這些事情。仔細研究了一下,發現原來只要是屬於「排版」問題的話,LaTeX 都自動處理掉了(例如: 冒號, 句點後方空 2 格; 逗號後方空 1 格)其他無法自動處理的,都是使用者輸入文件的時候要注意的。

因此,自己整理了一個小結論,放在此做個紀錄。
 

2011年12月10日 星期六

LyX 快速輸入矩陣

今天查到在 LyX 中快速輸入矩陣的方法,用打字的太慢,直接示範吧!

LyX 中文文章 文繞圖的設定方法

在用 LyX 邊文件的時候,難免會放到圖片,但有的圖片很小,就不想要讓圖片佔了滿滿的一行。這時候就可以用文繞圖的方法放圖片。在英文中很容易就做出這樣的效果,但是在中文環境,我就是一直沒試成功。

直到前一陣子,終於找到問題所在,就在這裡記錄一下了。

在 Insert > Float > Figure Wrap Float 之後,裡面就可以放圖、放標題。這裡要注意的是,圖片的大小以及 Wrap 的大小都要設定。例如 Wrap 希望佔整個 Column 的 30%, 而圖片佔了整個 Column 25%,這樣圖片在文章中就會有個約 5% 的空白邊界不會跟文字卡在一起。

放完 Figure Wrap Float 之後,還要用指令列加入一個 \mbox{} 的命令,這樣才能夠讓中文字正確的文繞圖。根據查到的資料,這個命令是真有在 LaTeX-CJK 的環境下才需要,如果文章全部都是英文的話,那就不用加這個命令了。

以下用圖片範例說明。底下是 \mbox{} 放的不夠,所以有一段落的中文字又蓋到圖片上了。
LyX  中錯誤的寫法

錯誤的排版結果


正確的寫法
LyX  內正確的寫法

正確的排版結果

LyX Beamer套件中改變數學式字型的方法

我一直不太喜歡 Beamer 套件中的預設數學字型,因為這會使得數學式的字型與書本上的字型不同。如下:
最近終於發現改變的方法。只要在 beamer 套件的 option 處加上一些設定即可。例如加上 professionalfont 的選項,即可使數學式字體變得更美觀。
結果如下。數學式的字體不再是 Sans Serif 的字體了!
附帶一提,這個 beamer 主題是 CambridgeUS ,使用方法在 preamble 區寫:
\usetheme{CambridgeUS}
即可。

2011年12月5日 星期一

KOMA-Script 文件設定邊界

在一個 LaTeX 的文件中,可以定義 Document Class,在 LyX 中很容易選定想要的文件。選單中選擇 Document >> Settings... ,會跳出一個視窗,在右方的 Document Class 下拉式選單中可選擇許多類型的文件, 如圖1。由該圖可以看出所選的文件類型為 KOMA-Script 格式的報告 (report)。
圖1 - Setting... 視窗
KOMA-Script 是我很常用的一種類型,主要是因為他的排版格式比原始的 LaTeX 的 repot 來的漂亮。不過我一開始選擇這個格式的原因,是因為它的預設邊界比較小。


雖然邊界可以從 圖1 左方的 Page Margins 去改,但是改了邊界,其他相關排版設定是不會跟著變動,所以就很容易發生文字跟 footnote 重疊,或是頁碼的位置很奇怪等問題。因此我通常是用 Class options 的選項去改的。
根據 KOMA-Script 的說明文件,可以知道KOMA格式排版的方式,不是直接定死邊界多少,而是依照一個「算法」去算出邊界的。

一個頁面會有上邊界下邊界左邊界右邊界,以及天區(head area) 及地區(foot area)。天區與主文字框 (textblock)會有一段距離,地區與主文字框也會有一段距離。安排這些區域之間距離的關係就稱為 page layout.
在單面文件中,會定義「左邊界=右邊界,上邊界:下邊界=1:2」。在雙頁的文件中,內邊界(靠書背那邊,也就是裝訂的那邊)為外邊界的一半。是的!內邊界比外邊界來的窄,因為當書攤開成兩頁的時候,整個看起來左、中、右三個空白區域就會等寬了。
但考慮到書裝訂或膠裝的時候,一定會蓋掉一部分空間,因此這個「裝訂邊」是要另外扣除, 不屬於 page layout 討論的範圍。這個在頁面設定叫做 binding correction (BCOR)。
也就是說,內邊界所保留的空間,都是屬於「看得到」的區域,而裝訂邊則是看不到的。

KOMA-Script 依照下列的比例來決定一頁中各區域之間的間隔或尺寸:
單頁雙頁
(1) 主文字框寬:主文字框高=頁寬:頁高
(2) 上邊界:下邊界=1:2
(3) 左邊界:右邊界=1:1內邊界:外邊界=1:2
(4) 頁寬=紙寬 - BCOR
(5) 上邊界+下邊界=頁高 - 主文字框高
(6) 左邊界+右邊界=頁寬 - 主文字框寬內邊界/2 + 外邊界=頁寬 - 主文字框寬
(7)內邊界/2 + BCOR=gutter

要確保主文字框的比例與頁面是一致的,Koma-script 用了下列的方法調整邊界:

  1. 先用(4)訂出頁寬
  2. 將頁寬除以 d (亦即將頁面分成同寬的 d 行), 將頁高除以 d (亦即將頁面分成同高 d 個等分)
  3. 將最上面 1 列高度,當作上邊界;將最下面2列高度,當作下邊界。
  4. 若是單頁,則左右各取一行行寬當作左右邊界;若是雙頁模式,則內邊界取1行,外邊界取2行,再將 BCOR 加回內邊界。
  5. 盛下的區域,就是文字區域了。
上面提到的 d,參數名稱為 DIV。KOMA-script 預設 DIV = 9. 如下圖:
更改 DIV 設定,可以讓左右上下邊界變小,但文字框的比例依然與頁面相同。
更改方法為, 在 Class Option 中設定 DIV 及 BCOR, 例如:  DIV=10, BCOR=5mm
即可讓整體的頁面邊界變小。設定不同的 DIV 與相對應的邊界資料如下表。

結論
利用 KOMA-Script 的文件,並設定 BCOR, DIV ,可調整邊界,而且還能符合版型比例。

參考資訊:
KOMA-Script 說明檔。

2011年11月25日 星期五

長表格 Long Table 的用法

在文件內建立表格後,表格的 Settings... (在表格上按滑鼠右鍵, 選擇 More..., 再選最下方的 Settings... ) 有個頁面選項,叫做 Longtable.

開啟 Table 裡面的 Settings.
如果表格是 Floating 的方式放置的話,這個選項都是 disable 的。因為 floating 表格不允許做 long table。若要開啟這個「長表格」的功能,在插入一般表格後,開啟表格的 Settings... 即可勾選。如下圖。
long table 的選單
設計表單第一件事就是加表格標題。將某列指定為 Caption,電腦會自動將該列合併起來。一般來說都是最上面一列當做標題。但是你真的不想指定第一列的話,還是可以做成如下圖的方式,也是可以的。(但何必自找麻煩呢?)


在使用 Setting... 設定的時候,一定要注意左下方的 Current Cell 是在哪一格?因為這代表你改變的值,是對著這一格(或是該列、或是該欄)。而且當你改完某格的設定後,如果要換到別格,記得要先按 Apply,讓設定值生效。否則當你一跳到別格,再跳回來時,就會發現之前的設定都不見了。
如果你希望做的任何改變都是立即生效,記得要將 Immediate Apply 打勾。

回到 long table 設定來看,如下圖。目前游標停在 cell 2 1 (Character), 我要將這一列當做是表格跨到第2頁時要出現的標頭,我就可以將 Header, First header 打勾。
這兩個選項是有區別的。

  • Header 選項控制這行在 第2頁, 第3頁...(如果有的話) 是否要當標頭列。
  • First Header 則是控制這行在 第1頁 要不要出現。

看出差別了嗎?也就是如果 Header 勾,First header 沒勾,則標頭列只會出現在第2,3,4...跨頁的表格上,而不會出現在 第1頁 的表格最前面。

看到這裡可能有人會認為 LaTeX 真是脫褲子放屁,何必多此一舉做這麼麻煩的設定呢?實際上這個設定是有大用處的!

先看結果。如下4個圖,是長表格的4頁。
Page 1.
Page 2.

Page 3.

Page 4.
看出這表格有什麼特殊的嗎?特殊之處有2個:
  • 在 1,2,3 頁最底下,表格有畫線,又有寫(下頁續...)。
  • 在 2,3,4 頁上方有寫 (Continuously last page)。
這個標註或畫線看起來沒什麼,但只要試著用如 Microsoft Word 做看看,你就會知道在 Word 中多難做到。而且就算做出來,只要頁面一改大小 (A4變 A5),表格一定要重做。

這在 LyX 中如何做到呢?很簡單,只要在在標頭前方,以及表格最後方多做2列(如下圖)。
記得最後一列要畫「上框線」!

接著設定第2列的 Header 打勾(First Header 不要勾),按 Apply。
再設定最後一列的 Footer 打勾(Last Footer 不要勾),按 Apply。

OK.. 完成。這樣就可以做出很完美的長表格了!
多做一列 (Continuously last page)


多做一列(下頁續...),以及畫上方格線。

長表格測試檔: TestLongTable.lyx


2011年11月13日 星期日

安裝 Texlive in Ubuntu

我的桌機是 Ubuntu 的版本,要安裝 Texlive 很容易。如果不想要裝最新版的,那麼可以直接用源套件庫中的即可。可以在命令列輸入:

  • sudo apt-get install texlive*
即可幾乎將所有的 texlive 系統全裝上去。
但如果想要裝最新版的 texlive, 那麼可以從官方網站下載 install-tl.unx.tar.gz 這個檔案,解壓縮後,用 root 身份執行圖形介面版本的 install-tl,如下:

  • sudo ./install-tl --gui
接著會跳出一個視窗,讓使用者選擇要安裝的方法。如果你的硬碟夠大,完全不在意全部裝完需用約 2.5GB 的空間,這樣直接點選最後一個「創建指向系統目錄的符號連結」,改為「是」之後,即可開始安裝。


如果你很在乎空間,只想先裝可以編譯中文的格式,這樣可以在 「選擇安裝方案」中,將要裝得系統改為 basic 或是其他的 (我自己是選 scheme-medium)。
切記,接著要選「----近一步制定----」底下的「語言集合」,可以將其他不相關的語言拿掉,只安裝 CJK 與 English 即可(如下圖)

都選完之後,就可以開始進行安裝了。

安裝之後,若未來要增減的話,不用再從安裝程式裝,可以用 tlmgr 程式進行增刪。
  • LANG='' sudo tlmgr --gui
可從圖形介面進行選擇及增刪。最前面加上 LANG='' 的目的是讓這個程式以英文模式進行,因為我看到的中文介面翻譯的不好,我看不懂。如果想要用中文介面的人,就不用輸入 LANG=''
執行後的話面如下圖。

有這樣的工具程式,就很容易管理自己安裝的 texlive 的程式了。

在 UBUNTU 中安裝最新版的 LyX

使用 Ubuntu 原來內建的 LyX 很簡單,只要輸入:
  • sudo apt-get install lyx
電腦就會自動幫忙檢查是否有 Texlive, 如果沒有,會自動安裝所需的 Texlive。

如果電腦中已經有了 Texlive,也想要用最新版的 LyX 怎麼辦呢?可以先到官方網站下載原始碼,接著在自己的 Ubuntu 中編譯。(如果沒裝過 build-essential 的,還需一起安裝)
  • sudo apt-get install zlib1g-dev qt4-designer
將原始碼解壓縮到 lyx-2.0.1 資料夾中。
  • cd lyx-2.0.1
  • ./configure
  • make
若 make 之後都沒有出現任何 error 代表編譯完成了。此時再下
  • sudo make install
即可將編譯好的程式安裝到 /usr/local/bin  (預設路徑)  中。

2012-3-12 補充:
如果安裝了 zlib1g-dev, qt-designer 之後 configure 還是有問題的話,可以試著用:

  • sudo apt-get build-dep lyx

最後,要刪除預裝的 build-dep, 可以用以下的命令
  • sudo aptitude markauto $(apt-cache showsrc lyx | grep Build-Depends | perl -p -e 's/(?:[\[(].+?[\])]|Build-Depends:|,|\|)//g')
這個命令會自動搜尋前面安裝過的套件名稱,並將之移除。