在使用LaTeX的過程中,我們需要往往需要使用一些圖片,譬如,在樣式文件中,但是如果在樣式文件中使用外部的圖片,總感覺不是那么地舒服「請原諒強迫症」。因此,想辦法將圖形內嵌入LaTeX文件。
首先,我們需要知道如下的知識:
- TiKZ是LaTeX繪圖最成功的語言(之一);
- 圖像分為位圖與矢量圖;「這一點不知道請自行百度或Google,已經有太多的講解,在此不再贅述〕
- 矢量圖形的常見格式:PDF、EPS、emf、wmf、ps、SVG、Tiff;「注意,這里說的是矢量圖形的格式,並沒有說這些格式一定是矢量圖形,事實上,其中大部分圖形均支持位圖」
因此考慮將PDF中的矢量圖形「后文中的PDF如不加說明是指存儲矢量圖形的PDF,另外將該類PDF以圖像簡稱」轉換為TiKZ代碼。由於PDF中也是有一點的存儲規則,在實際閱讀時,由PDF閱讀器進行渲染「與位圖不同,位圖基本上是拷貝,當然會加上縮放、解壓縮等操作」。因此如果可以將PDF的語言翻譯為人類可理解的語言,后面就可以通過編程來完成。按照這個思路,在網上搜索,但是沒有找到相關的內容。並且我們直接以記事本(不是Windows自帶的記事本,而是Notepad++、Notepad2、Notepad3、Sublime、Emeditor、UltraEditor、EditPlus等文本編輯器)打開,可是看到里面的內容大都不可讀,如下:
所以,暫放棄將PDF轉換為TiKZ代碼。
因此嘗試其他格式的矢量圖形。在嘗試上面的矢量圖形之后,發形SVG的圖形是明碼「原諒我濫用術語,但是我認為很貼切」,所以將此內容轉換為對應的TiKZ是具有可行性的。
由於繼續在網上搜索,讓我找到了如下的內容:
- How to export svg to tikz
- Converting an SVG image to TikZ code
- Exporting from Inkscape to LaTeX - via TikZ
於是,剩下的內容就簡單啦,下載InkScape,安裝插件inkscape2tikz或者是svg2tikz,「由於我裝了兩個,不知道是哪個起了作用,不想探究竟了」。插件安裝方法見:How do you install extensions on windows?,即將對應的*.inx
及對應文件目錄下的所有文件「通常包含*.inx
及另外的*.py
文件,其中__init__.py
是空文件,放心覆蓋。」全部復制到安裝目錄下的share/extensions
文件夾下,重啟即可。安裝成功后可在【Extensions→Export】下發現【Export to TikZ path】。
接下來的事情就簡單了,打開對應的*.svg
文件,導出為TiKZ路徑,在導出的時候可以參見下面的設置。
個人比較喜歡放到剪貼板,如果沒有勾選【Export to TikZ path】,則需要在下面的【Export to TikZ path】里填入文件名稱,需要包含路徑,不然的話,直接導出在插件所在的目錄。
PS;上文只說了有SVG及PDF等格式的文件,沒有說是如何轉換的。實際上很簡單,可以使用矢量圖形編輯軟件,如Adobe Illustrator/CorelDraw等軟件完成。通用步驟是:新建文檔,導入對應的文件「可拖拽完成」,另存為或者導出,在另存為或者導出的選項卡里選擇對應的格式即可。
PS:源代碼及試用文件見:鏈接: https://pan.baidu.com/s/1lGmB2CzczfAFP8y_J045cg 提取碼: fky4
轉載請保留作者及原網頁:矢量圖形(Vector Picture, SVG, PDF)轉TiKZ代碼