矢量图形(Vector Picture, SVG, PDF)转TiKZ代码

在使用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是具有可行性的。

由于继续在网上搜索,让我找到了如下的内容:

于是,剩下的内容就简单啦,下载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代码

posted @ 2019-02-19 22:42  Troy_Daniel  阅读(3339)  评论(2编辑  收藏  举报