前言
筆者之前為文,告訴大家如何用 IPE 製作數學示意圖,刊登在中研院計算中心週報,Vol. 22 No.11。最近在會議中,聽到大家喜歡用 OpenSource Inkscape 製作圖片,趕緊下載試用。使用後只有一個想法:哇,這 OpenSource 繪圖軟體功能這麼齊全,可以滿足大多數人繪圖的需求,趕緊寫篇文章,告訴大家趕快下載安裝以供使用。語系部分,熱心人士已經做好 Inkscape 中文介面,網路上許多人寫了很多很好的 Inkscape 教學軟體,如教師網站 Inkscape 繪圖超簡單http://120.115.24.7/dolala/992teacher/teacher/l1/l1.htm,跟著幾個簡單的操作步驟,讓從小害怕繪圖的筆者也可以畫出可愛的漫畫圖形,真是不可思議。筆者不在此贅述 Inkscape 操作方法,還是回到自己本行,看看以 Inkscape 畫好數學圖形,該如何漂漂亮亮嵌入 TeX 當中。
PSTricks, Graphicx and PSfrag — LaTeX Package
著名的 PSTricks 巨集套件,提供非常完整且功能強大的 LaTeX 繪圖指令,想要畫的示意圖都可以使用各式指令 \psline、\pscurveto、或巨集 \pstree等完成複雜的圖形,它的功能很完整,但是都得利用指令完成,無法使用滑鼠在畫布上點一點、拉一拉畫圖,而需要修正圖形時,更是一大挑戰。筆者見過使用者利用方眼紙微調 PSTricks 圖形,牽一髮而動全身地修改 LaTeX圖形,工程浩大。因此大家比較喜歡用容易操作的繪圖軟體如 IPE、XFig,用滑鼠定位畫好圖形,或以 Matlab、Mathematica 專業數學套裝軟體,做好資料分析製圖後,再用 Graphicx package 嵌入美觀的外製圖形。
如果需要在外製圖形上,放上文字標示,可以用 PSfrag 做文字取代。如在 Matlab 圖上先標示文字說明先寫”y0”,LaTeX include 該圖形時用
\usepackage{psfrag}
\begin{figure}[h]
\psfrag{vt}{$\vartheta$}
\psfrag{NP}{$N^\perp$}
\psfrag{y0}{$ F_t \equiv e^{r(T-t)} S_t$}
\includegraphics[width=5.0cm]{nomath.eps}
\end{figure}
可以將製圖時的文字“y0”取代為和 LaTeX文章一致的符號 F_t≡e^(r(T-t)) S_t
[※ \PSfrag僅能用於 Postscript 圖形, PDF及 JPEG圖檔不適用 ]
Inkscape save as PSTricks
Inkscape是一款專繪向量圖的自由軟體,具有跨平台特性,在Windows、Mac OS、Linux等作業系統上皆可安裝使用,檔案輸出也有SVG、PDF、PNG、TeX……等多種格式。將畫圖結果存為 “LaTeX附帶 PSTricks巨集(*.TeX)”,可以將全部圖形轉為一大堆 \moveto \curveto 的PSTricks指令,在 LaTeX 中 input此 TeX 檔,LaTeX就擁有漂漂亮亮的圖形,修改也直接以滑鼠拉拉點點,修改 input 的 TeX 檔就好,不再需要用方眼紙調整圖形,真是一大福音。
\usepackage{graphicx,color,pstricks }
\input{inkscape_4.TeX}
文字輸入工具
Inkscape的文字說明除了一般的文字輸入、圖形等功能,還有類似Photoshop、Illustrator等的物件、圖層的概念,及其他藝術特效等,讓繪圖更專業便利。當覺得該軟體功能不夠時,可以下載網路上提供的擴充功能。
然而除了一般的繪圖,Inkscape還可以輸入LaTeX語法。輸入的方法有兩種,一種是利用Inkscape的擴充功能--「TeX Text」,另一種則是使用 Inkscape原本內建的「文字輸入」功能。
一、擴充功能TeX Text
Inkscape的擴充功能「TeX Text」讓我們可以直接輸入LaTeX的語法,並轉換後在其畫布上輸出【圖一】:
【圖一】 TeX Text 安裝流程不在此贅述,請見筆者 TeX Tools 網站
http://www.math.sinica.edu.tw/www/tex/ 。安裝完成後,在擴充功能中即可啟用,便能在TeX Text編輯視窗中,直接輸入TeX的語法。
例如,我們輸入EXAMPLE $A_b$,輸入後按下確定,便會在畫布上出現我們想要顯示的格式(如【圖二】左邊橘框) 。
【圖二】 出現在畫布上的文字,事實上已變成九個(E、X、A、M、P、L、E、A、b)不同的物件。當我們滑鼠游標移到該物件,點一下,這九個物件就會被我們一併圈選,並出現以下畫面。當我們希望改變物件的長寬、大小等,可以拉動箭頭來做調整。
若繼續再點一次該物件,箭頭會變成下圖所示,這時我們可以藉由拉動箭頭,做旋轉或者對角傾斜的動作。
也可用左方常用工具列的選取和變形物件,圈選我們想要的範圍來做改變或移動。當我們需要排版時,這些都是相當方便的功能。TeX Text 產生的數學符號,存檔後成為圖檔,可以在繪圖中產生美觀的數學程式符號說明。
二、內建文字工具的運用
Inkscape內建的文字工具除了一般文字輸入以外,也可以輸入LaTeX語法,在轉檔時提供一個很棒的方式,”將文字轉存路徑 PDF(EPS) + LaTeX 省略PDF(EPS) 裡的文字,並建立 LaTeX檔”。將圖形轉存 PDF或EPS檔,但將文字分離出來,另建為LaTeX檔,因此幫忙將文字在圖形上作定位,圖形可以依照LaTeX文章縮放,文字說明部分,使用者可以打開直接依照需求修改 file.pdf_TeX。
使用方式請先點選左邊常用工具列中的「建立和編輯文字物件」,然後在畫布區欲輸入之處點一下,接著鍵入文字或者LaTeX語法,如【圖三】。
【圖三】 在儲存檔案時,存檔類型請選擇pdf檔,選好後按存檔。跳出以下選項視窗時,請將「PDF+LaTeX:省略PDF裡的文字,並建立LaTeX檔」及「匯出範圍為繪圖部分」這兩個選項給勾選起來【圖四】,勾選完成以後按下確定。
【圖四】 完成後即產生兩個檔案(file.pdf檔-製圖;file.pdf_TeX檔-抽取文字說明)
【圖五】三、兩個文字工具輸入數學符號編輯方式比較
現在,假設我們想在下圖左側的Beamer LaTeX檔案中,加入我們使用Inkscape所製作的圖(【圖六】右圖)。圖中 m4、m5、m6 為 TeX Text 輸出之數學符號,$m_1$、$m_2$、$m_3$為內建文字工具。存檔時選擇 PDF file,選項勾選「PDF+LaTeX:省略PDF裡的文字,並建立LaTeX檔」及「匯出範圍為繪圖部分」。
【圖六】 在文件中需要使用以下三個 package:
\usepackage{graphicx}
\usepackage{color}
\usepackage{transparent}
在要插入該圖片的地方,加入以下兩行:
\def\svgwidth{200pt}
\input {file.pdf_TeX}
Svgwidth是用來調整圖片大小,改變{}內的數值即可,input則是用來連結我們用Inkscape所生產出來的檔案(請注意路徑),編譯後即可執行結果,此例結果如【圖七】:
【圖七】 第一種使用「TeX Text」功能所出來的符號(如上圖m4、m5、m6),由於如上所述已成為物件,故在輸出時,已經融合為圖,當我們使用svgwidth來進行放大縮小的指令時,其也會跟著改變。第二種直接用內建文字輸入 (如上圖m1、m2、m3),其輸出時仍是文字及語法,故不會跟著圖片改變大小。
四、在LaTeX中進行圖片的文字替換
之前提過,當我們用前述方法存檔時,除了放入圖片的PDF檔以外,也建立了一個 「file.pdf_TeX」的TeX檔。當我們將Inkscape圖放入LaTeX文件中,其實是採取外部引用的方式,將「file.pdf_TeX」input到我們的LaTeX檔案當中,而該.pdf_TeX中則包含了我們在Inkscape裡的文字及被轉出成.pdf的圖形檔。所以,當我們要更動該圖文字等,直接在其.pdf_TeX檔更動即可,無須從LaTeX檔本文的程式碼中搜索、變更。此方法可讓LaTeX文件整體更加模組化。
例如上面例子,我們想要將m2改為f2的時候,我們可以用LaTeX的編輯器,打開打開該圖的.pdf_TeX檔,然後找出我們的目標,例如m2。
接著直接在此進行修改,例如放大並替換為f2等。
修改並儲存後,回到我們的文件重新進行編譯,結果如下:
TeX Text功能在繪畫時直接看到輸出效果,便於修正畫面,且不用擔心字形問題,並可做相當多的變化。而內建文字輸入功能則是讓更改、替換更容易,如此無須再使用前面提到psfrag更換圖形中文字的方式,作法更為簡便。
結語
非常高興介紹這功能強大的 Open Source 繪圖軟體Inkscape,目前已經被廣泛使用,網路上有相當多非常不錯的教學軟體,能讓大家輕輕鬆鬆晉升為塗鴉專家。在此為文將 LaTeX與 Inkscape使用方式詳細介紹,讓學者更勇於使用大量示意圖,圖文並茂地讓大家更容易理解學術文章,完整表達學術理論意涵。(全文完)
选自:
http://newsletter.ascc.sinica.edu.tw/news/read_news.php?nid=2564
发表评论 取消回复