在使用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代码

矢量图形(Vector Picture, SVG, PDF)转TiKZ代码的更多相关文章

  1. 把上传过来的多张图片拼接转为PDF的实现代码

    以下是把上传过来的多张图片拼接转为PDF的实现代码,不在本地存储上传上来的图片,下面是2中做法,推荐第一种,把pdf直接存储到DB中比较安全. 如果需要在服务器上存储客户端上传的文件时,切记存储文件时 ...

  2. matplotlib绘制矢量图像(svg),pdf and ps文件

    机器学习的过程中处理数据,会遇到数据可视化的问题. 大部分都是利用python的matplotlib库进行数据的可视化处理. plt.show() 默认都是输出.png文件,图片只要稍微放大一点,就糊 ...

  3. Qt5实现文本编辑器(附图片转PDF与详细代码)

    1. 功能介绍 老规矩,我们直接上截图 这是主界面 文件菜单界面 编辑菜单界面 设置菜单界面 关于菜单界面 2. 功能演示 设置字体颜色 设置字体大小 点击关于菜单 点击关于Qt菜单 会自动跳转到Qt ...

  4. word 转 pdf,c#代码

    通过使用 C# 控制 office 软件 com 组件转 pdf 1 word 转 pdf 方案二:可以使用 netoffice 进行转换 参考文档:https://netoffice.io/docu ...

  5. iText实现导出pdf文件java代码实现例子

    ///////////////////////////////////主类////////////////////////////////////////// package com.iText; i ...

  6. iOS生成PDF的关键代码-备忘

    //此方法只是把当前页面的内容生成PDF并保存在沙盒中. //还需要做:把当前面没有显示的内容以分页的形式生成PDF,并把PDF读取并显示出来 //关于显示可以参考:念茜的博客 iOS开发笔记——PD ...

  7. 【推荐】推荐一本学习ExtJS4的好书《ExtJS江湖》(含pdf电子书和源代码下载地址)

    最近在网上游逛,突然发现了一本介绍ExtJS 4框架的好书,书名叫<ExtJS江湖>,作者是大漠穷秋,个人感觉非常不错,书写得很幽默,很具有可读性,在此推荐给各位. 以下是这本书的介绍: ...

  8. 用Graphviz画简单依赖图示例

    代码: digraph module { 0 [label="global.h"]; 1 [label="bst_operator.c"]; 2 [label= ...

  9. HTML5: SVG (可缩放矢量图形)

    ylbtech-HTML5: SVG (可缩放矢量图形) 可缩放矢量图形是基于可扩展标记语言(标准通用标记语言的子集),用于描述二维矢量图形的一种图形格式.它由万维网联盟制定,是一个开放标准. 1. ...

随机推荐

  1. Centos7升级Git版本

    centos 升级 Git 版本 问题描述 centos7 系统默认的 git 安装版本是 1.8,但是在项目构建中发现 git 版本过低,于是用源码编译的方式进行升级.同时该文章也适用于安装新的 g ...

  2. 实验吧之【Forms、天网管理系统】

    Forms 原题链接 http://ctf5.shiyanbar.com/10/main.php Form 其实是个提示,代表html表单 F12 查看源码,发现 <input name=&qu ...

  3. PHP array_replace

    1.函数的作用:替换数组的元素 2.函数的参数: @params array $array1  被替换的数组 @params array $array2  替换的数组 @params array $a ...

  4. fread优化读入

    inline char nc() { static const int BS = 1 << 22; static unsigned char buf[BS],*st,*ed; if(st ...

  5. [BZOJ1054] 移动玩具

    1054: [HAOI2008]移动玩具 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2741  Solved: 1537[Submit][Stat ...

  6. 关于JavaScript if...else & if 判断简写

    <script type="text/javascript"> 如果你想写 if (!false){ alert('false'); } 不妨考虑写成: false | ...

  7. 玩转OneNET物联网平台之MQTT服务① —— OneNetMqtt全方位调试

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  8. PHP5底层原理之变量

    PHP5底层原理之变量 变量结构 zval 结构体 PHP 所有类型的变量在底层都会以 zval 结构体的形式实现 (源码文件Zend/zend.h) 源码根目录搜索 grep -rin --colo ...

  9. webpack知识分享

    webpack 4 webpack 四大核心概念: 入口(entry) // 打包入口 输出(output) : 打包后输出的位置配置 loader  : loader 让 webpack 能够去处理 ...

  10. C/C++语言误区void main( )

    很多人甚至市面上的一些书籍,都使用了void main( ) ,其实这是错误的.C/C++ 中从来没有定义过void main( ) .C++ 之父 Bjarne Stroustrup 在他的主页上的 ...