2014年7月20日 星期日

pdflatex 的使用

我用 pdflatex 好一段時間了。pdflatex 的優點是可以直接將 LaTex 檔案轉成 pdf 檔,省略傳統從 LaTex 到 dvi,再從 dvi 到 ps 或 pdf 的轉換步驟和可能遇到的麻煩

不過 pdflatex 要求所有的圖檔格式必須為 pdf。之前我曾寫過如何用 Visio 產生 eps 圖檔格式。用 Visio 產生 pdf 檔格式的方法如下。首先必須安裝 PDF printer driver,如 PDFill PDF&Image Writer 或 Bullzip PDF Printer,然後將圖檔用列印的方式印成整頁的 pdf 檔。最後用 PDFill PDF Tools 這個工具程式中的 Rotate or Crop PDF Pages 功能,將整頁的 pdf 檔裁切成吻合圖檔大小的 pdf 檔 (目的類似將 ps 檔裁切成 eps 檔)。

Matlab 或一些其他程式本來可以輸出 eps 檔案格式,現在則要花額外功夫將 eps 檔案轉換成 pdf 格式。網路上有各式各樣的工具宣稱可以達到這個目的。因為我要轉換的皆是 Matlab 輸出的 eps 格式圖檔,所以採用的方案是以 Matlab 的 m 檔寫的程式。只要下載這個壓縮檔並置於欲轉換檔案的目錄中解壓縮,然後進入 Matlab,切換工作目錄至此目錄,執行 eps2pdf xxx.eps xxx.pdf,即可將 xxx.eps 轉換成 xxx.pdf 檔存放在同一目錄中。

圖檔都轉換成 pdf 格式後,在 LaTex 檔案中要加入 graphicx 這個  package,並設定使用 pdflatex,如下面這列所寫的:

\usepackage[pdftex]{graphicx}

載入圖形檔的指令仍為 \includegraphics,但檔案名稱的附加檔名可以不要加 pdf。如:

\includegraphics*[width=2.6in]{xxx}

可以載入 xxx.pdf 圖檔。



Win 7 下的 Generic PostScript Printer Driver

Adobe 的網頁上有 Generic PostScript Printer Driver,在將圖檔轉成 ps 或 eps 檔時,是很有效的工具。可是此驅動程式無法直接在 Win 7 下安裝。

網路上有人解決了此問題。首先將這個壓縮檔下載並解壓縮。然後在 Win 7 中新增印表機(選擇新增本地印表機/使用現有的連接埠/從磁片安裝,選取剛剛下載後已解壓縮的 Generic_Adobe_PostScript)。安裝好後就多了一個Adobe Generic PostScript Driver的印表機了。

2014年3月1日 星期六

使用 align 取代 eqnarray

論文中常需要垂直對齊多列的式子。例如,在一連串方程式的推導過程中,希望每列的等號都出現在同一垂直位置,比較美觀。在 LaTex 中,傳統上是使用 eqnarray 指令來達成這樣的目的。

其實使用 align 可完全取代 eqnarray,而且效果更好。不過使用上需要先加入 amsmath 這個 package。即
\usepackage{amsmath}

2014年1月9日 星期四

C語言很容易藏bug

今天 trace 學生寫的 C 程式碼,發現學生犯了一個嚴重的錯誤。我用下面這個例子說明:

int i;
for (i = 0; i < 10, i != 3, i != 5; i++)
   printf("%d ", i);


學生的想法是印出除了 3 與 5 外所有 0 到 9 之間的整數。C 語言允許這樣寫,但結果不是學生所想的那樣子。上面程式的執行結果會是

0 1 2 3 4

原因我用下面這句英文來解釋。

The value of a multiple-statement expression is the value of the last statement in the expression.

後來學生送來更正後的版本,意思就像下面的程式碼:

int i;
for (i = 0; i < 10 && i != 3 && i != 5; i++)
   printf("%d ", i);


雖然更正了誤將逗號當 and 用的錯誤,這個版本仍然不會印出除了 3 與 5 外所有 0 到 9 之間的整數。執行結果如下:

 0 1 2

原因出在紅色字體部分是 C 語言迴圈繼續執行的條件,而非每次 iteration 中是否要執行 loop body 的條件。一旦這個條件不滿足,迴圈就結束了,而非只是 skip 此次 iteration。

2013年12月9日 星期一

Word 程式已停止運作

平常我會停留並工作的地方,包含我的教師辦公室、系主任辦公室、家中書房、以及我父親家的餐廳。為了持續工作,我已很習慣將 word 檔案存放在 Dropbox 目錄,然後移動到哪兒就用哪兒的機器繼續編輯工作。

這樣的工作方式很便利,但我也發現到一個問題。如果我在某台機器上開啟某個 word 檔案編輯,離開時未將 word 程式關閉 (但該檔案已存檔),到別台電腦繼續編輯這個檔案,之後原來這台電腦的 word 程式開啟時,就會出現 Word 程式已停止運作的錯誤訊息。

要解決這個問題,只要刪除 C:\Users\XXX\AppData\Roaming\Microsoft\Templates 目錄下的  Normal.dot 檔案即可 (其中的 XXX 是使用者登入 Windows 所用的使用者名稱)。因為這個問題我已經遇過太多次,所以記在這邊備查。其實避免這個問題的最好方式是編輯完 word 檔案後離開電腦前記得將 word 程式關閉。

2013年11月16日 星期六

教師評鑑

現在在大學裡教書的老師幾乎都要接受定期的教師評鑑。評鑑項目大概分為教學、研究、服務、輔導等幾個大項,每個大項中再細分為多個評鑑項目。為了實務上便於操作,這些項目通常有具體的評分規則,好讓整個教師評鑑得以表格化進行。這些評分規則之瑣碎,常讓填表的老師戲稱自己在積點,並為之感慨不已。

我們不妨來問一個問題:教師評鑑的目的是什麼?我認為教師評鑑制度設計上並沒有增進老師教學研究水準的正面意義。那麼退而求其次,能不能藉由評鑑的手段,警醒校園中少數教學研究服務都不顧的老師呢?很可惜的,因著鄉愿的心態,在實務面上連這點效果也達不到。最後結果只是累到絕大多數教學研究服務都正常的老師,而且逼著老師也順從社會 "務虛" 的文化,唯一好處是從此可以理直氣壯宣稱 "我們評鑑都有做喔"。就我看來,這種自欺欺人的制度如不改善,倒也可廢了。

許多國外名校也有教師的評鑑制度,為何在台灣實施的結果卻是這樣?我覺得關鍵在於實施的方式。國外實施時可以組成評審委員會,就教師的評鑑申請進行審核。在台灣,一般人的心態上會擔心審查委員不夠客觀或受人情外力影響,審查委員基於人情世故也不願當壞人,所以評鑑設計成表格化積分制,任誰都可以來審查。又因為要算分數需要有 "具體的事證",所以評鑑也就流於瑣碎化和表面化,達不到當初設立此制度所要達成的目的。

2013年6月8日 星期六

我的英文老師

基測前一天,老婆陪女兒去看考場,注意到女兒考試那間教室的課表上,班導師與英文老師的名字都是李秋菊。

三十二年前我唸國中二年級,李秋菊是我的英文老師,人長得有點福泰,剪個短髮,剛從師大英語系畢業不久,個性灑脫不拘,像個帥氣的男生。記得有一次我故意問她 tomboy 是甚麼意思(其實我早查過字典),她聽了稍微一愣,笑著說:「你是在說我嗎?」並沒有不高興的意思。我對這位頗有個性的老師一直印象深刻。

我國中畢業不久,就聽說她轉到女中去任教了。多年以後我認識現在的太太,有一次和她聊起來才發現,李老師竟也是她的高中英文老師(我太太畢業於那所女中)。

現在我女兒要考高中了,試場就是我太太的高中母校,在看考場的過程中又看到熟悉的名字。經過了那麼多年,從我的國中,另一半的高中,到女兒今天的高中之路,真有一種人生真奇妙的感覺。是該找時間回學校找找老師了。