矢量图形(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是具有可行性的。
由于继续在网上搜索,让我找到了如下的内容:
- 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代码
矢量图形(Vector Picture, SVG, PDF)转TiKZ代码的更多相关文章
- 把上传过来的多张图片拼接转为PDF的实现代码
以下是把上传过来的多张图片拼接转为PDF的实现代码,不在本地存储上传上来的图片,下面是2中做法,推荐第一种,把pdf直接存储到DB中比较安全. 如果需要在服务器上存储客户端上传的文件时,切记存储文件时 ...
- matplotlib绘制矢量图像(svg),pdf and ps文件
机器学习的过程中处理数据,会遇到数据可视化的问题. 大部分都是利用python的matplotlib库进行数据的可视化处理. plt.show() 默认都是输出.png文件,图片只要稍微放大一点,就糊 ...
- Qt5实现文本编辑器(附图片转PDF与详细代码)
1. 功能介绍 老规矩,我们直接上截图 这是主界面 文件菜单界面 编辑菜单界面 设置菜单界面 关于菜单界面 2. 功能演示 设置字体颜色 设置字体大小 点击关于菜单 点击关于Qt菜单 会自动跳转到Qt ...
- word 转 pdf,c#代码
通过使用 C# 控制 office 软件 com 组件转 pdf 1 word 转 pdf 方案二:可以使用 netoffice 进行转换 参考文档:https://netoffice.io/docu ...
- iText实现导出pdf文件java代码实现例子
///////////////////////////////////主类////////////////////////////////////////// package com.iText; i ...
- iOS生成PDF的关键代码-备忘
//此方法只是把当前页面的内容生成PDF并保存在沙盒中. //还需要做:把当前面没有显示的内容以分页的形式生成PDF,并把PDF读取并显示出来 //关于显示可以参考:念茜的博客 iOS开发笔记——PD ...
- 【推荐】推荐一本学习ExtJS4的好书《ExtJS江湖》(含pdf电子书和源代码下载地址)
最近在网上游逛,突然发现了一本介绍ExtJS 4框架的好书,书名叫<ExtJS江湖>,作者是大漠穷秋,个人感觉非常不错,书写得很幽默,很具有可读性,在此推荐给各位. 以下是这本书的介绍: ...
- 用Graphviz画简单依赖图示例
代码: digraph module { 0 [label="global.h"]; 1 [label="bst_operator.c"]; 2 [label= ...
- HTML5: SVG (可缩放矢量图形)
ylbtech-HTML5: SVG (可缩放矢量图形) 可缩放矢量图形是基于可扩展标记语言(标准通用标记语言的子集),用于描述二维矢量图形的一种图形格式.它由万维网联盟制定,是一个开放标准. 1. ...
随机推荐
- 数据挖掘:关联规则的apriori算法在weka的源码分析
相对于机器学习,关联规则的apriori算法更偏向于数据挖掘. 1) 测试文档中调用weka的关联规则apriori算法,如下 try { File file = new File("F:\ ...
- [Luogu3420][POI2005]SKA-Piggy Banks
题目描述 Byteazar the Dragon has NNN piggy banks. Each piggy bank can either be opened with its correspo ...
- shell变量(二)
变量名的命名规范: 1.命名只能使用英文字母.数字和下划线,且不能以数字开头: 2.不能存在空格‘: 3.不能使用标点符号: 4.不能使用bash里的关键字(可使用help命令查看保留关键字) 变量的 ...
- 玩转OneNET物联网平台之MQTT服务③ —— 远程控制LED(设备自注册)
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- textView 实现完成收键盘操作
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSStr ...
- Spring事务传播属性有那么难理解吗?
学习东西要知行合一,如果只是知道理论而没实践过,那么掌握的也不会特别扎实,估计过几天就会忘记,接下来我们一起实践来学习Spring事务的传播属性. 传播属性 传播属性定义的是当一个事务方法碰到另一个事 ...
- java实现,使用opencv合成全景图,前端使用krpano展示
这周花三天做了一demo,算上之前的,怎么也有五天,上一篇是opencv介绍,以及定义native方法,通过本地图片路径传参,底层调用Opencv图像库合成,有兴趣的可以看看,这篇重点在于krpano ...
- springboot使用spring配置文件
1.如何在springboot中使用spring的配置文件,使用@Configuration和@ImportResource注解 package com.spring.task; import org ...
- 身为一个 CS专业的留学生,你还在为堆积如山的编程assignment而发愁吗?
每个人都渴望圆梦,当我们看见梦想在别人身上实现时,总在抱怨幸运之神为何不眷顾自己:其实更多的时候,梦想就在你身边的不远处,只要你迈出正确的步伐. 记得刚入大学时,意气风发.我以全班前几名的优异成绩考入 ...
- Java源码 Integer.bitCount实现过程
public static int bitCount(int i) { // HD, Figure 5-2 i = i - ((i >>> 1) & 0x55555555); ...