矢量图形(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. ...
随机推荐
- Centos7升级Git版本
centos 升级 Git 版本 问题描述 centos7 系统默认的 git 安装版本是 1.8,但是在项目构建中发现 git 版本过低,于是用源码编译的方式进行升级.同时该文章也适用于安装新的 g ...
- 实验吧之【Forms、天网管理系统】
Forms 原题链接 http://ctf5.shiyanbar.com/10/main.php Form 其实是个提示,代表html表单 F12 查看源码,发现 <input name=&qu ...
- PHP array_replace
1.函数的作用:替换数组的元素 2.函数的参数: @params array $array1 被替换的数组 @params array $array2 替换的数组 @params array $a ...
- fread优化读入
inline char nc() { static const int BS = 1 << 22; static unsigned char buf[BS],*st,*ed; if(st ...
- [BZOJ1054] 移动玩具
1054: [HAOI2008]移动玩具 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2741 Solved: 1537[Submit][Stat ...
- 关于JavaScript if...else & if 判断简写
<script type="text/javascript"> 如果你想写 if (!false){ alert('false'); } 不妨考虑写成: false | ...
- 玩转OneNET物联网平台之MQTT服务① —— OneNetMqtt全方位调试
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- PHP5底层原理之变量
PHP5底层原理之变量 变量结构 zval 结构体 PHP 所有类型的变量在底层都会以 zval 结构体的形式实现 (源码文件Zend/zend.h) 源码根目录搜索 grep -rin --colo ...
- webpack知识分享
webpack 4 webpack 四大核心概念: 入口(entry) // 打包入口 输出(output) : 打包后输出的位置配置 loader : loader 让 webpack 能够去处理 ...
- C/C++语言误区void main( )
很多人甚至市面上的一些书籍,都使用了void main( ) ,其实这是错误的.C/C++ 中从来没有定义过void main( ) .C++ 之父 Bjarne Stroustrup 在他的主页上的 ...