在
上一篇文章中,我谈到了如何在Vim中的LaTeX上编写数学笔记。 在本文中,我将向您展示如何使用Inkscape为这些摘要创建图形,并讨论您的自制热键管理器。
一些例子
首先,让我向您展示一些数字示例。 它们是为复杂分析,微分几何,电动力学和椭圆曲线上我的学士学位而制成的。 我在授课中画了它们-当然,除了我的论文之外-我使用Inkscape,所以让我们开始吧。





什么是Inkscape?
Inkscape是可用于所有主要平台的开源矢量图形编辑器。 这是Adobe Illustrator的免费替代品,但功能可能较少。 如下图所示,它可用于设计传单和徽标,但它也是绘制几何形状的强大工具。

为什么要墨迹?
将图形添加到LaTeX文档的最常见解决方案是TikZ,PSTricks和Asymptote。 它们有一个共同点:它们都在团队中工作,也就是说,您只需编写确定如何绘制图形的代码。 例如,TikZ代码:
\begin{tikzpicture} \coordinate (A) at (1, 3); \draw[thick, ->] (0, 0) -- (A); \node[above right] at (A) {$A = (1, 2)$}; \end{tikzpicture}
显示以下图片:

这些软件包的优点是绘图与编程非常相似:您可以使用变量,执行计算,
for
循环等。此外,绘图非常适合文档,因为所有文本都直接输入到LaTeX中。 这意味着键入公式很容易,如果以后您决定更改文档的字体,则所有图片都会根据新字体自动更改。
但是,由于这些优点,您必须为缺少视觉反馈和低速而付出代价。 绘制复杂形状本质上是图形任务,而没有图形界面会非常耗时。 不能单击并拖动对象,用手绘制曲线或拖动Bezier曲线的控制点。 因此,TikZ比Inkscape复杂得多,速度也慢得多。 尽管有时我会在复杂的工程图中使用TikZ,但在大多数情况下,Inkscape的优势远远超过TikZ的优势,尤其是在您上课时间紧张的情况下。
结束了,让我们开始吧。
将Inkscape图纸嵌入LaTeX文档中
与TikZ一样,Inkscape可以使用LaTeX在图形中显示文本。 为此,编辑器将数字导出为pdf和LaTeX文件。 在第一张带有单独文本的图片中,以及在LaTeX文件中-正确放置文本所必需的代码。 例如,您正在Inkscape中处理以下图形:
黎曼定理要将此图包含在LaTeX文档中,请转到“
文件›另存为”菜单,选择“ pdf”作为扩展名,然后单击“
保存” ,将出现以下对话框:
选择“在pdf中省略文本并创建LaTeX文件”会将图形另存为pdf + LaTeX。 要将Inkscape绘图插入LaTeX文档,可以将以下代码添加到序言中:
\usepackage{import} \usepackage{xifthen} \usepackage{pdfpages} \usepackage{transparent} \newcommand{\incfig}[1]{
假设该图在
figures/riemmans-theorem.svg
,则可以使用简单的代码将其插入:
\begin{figure}[ht] \centering \incfig{riemmans-theorem} \caption{Riemmans theorem} \label{fig:riemmans-theorem} \end{figure}
编译文档后,您将看到:

如您所见,文本是使用LaTeX呈现的,看起来非常漂亮。 如果您以后决定更改字体,它将相应地更新:

这样的系统允许您在继续键入LaTeX的同时绘制Inkscape。
快速创建和插入工程图
在演讲中编写摘要时,我需要在不中断流程的情况下即时添加图形,即不要浪费时间打开Inkscape,查找正确的目录,输入LaTeX代码以手动插入图形等。 为避免这种情况,我在Vim中添加了一些键盘快捷键来管理图形。 例如,当我键入图片标题
Ctrl+F
,将发生以下情况:
- 该脚本根据LaTeX根文件的位置查找图片目录。
- 然后检查是否存在具有相同名称的图形。 如果是这样,脚本将不执行任何操作。
- 如果不是,则将模式模板复制到
/figures
目录。
- 带有图片标题的当前行由LaTeX代码替换以插入它。
- 在Inkscape中将打开一个新图形。
- 文件监视的配置方式是,每当通过按
Ctrl+S
将图片保存到svg文件时,该图片也将另存为pdf + LaTeX。 因此,不再出现我们前面讨论的烦人的pdf保存对话框。
实施方案:

当我要编辑图片时,在正常模式下
Ctrl+F
。 将打开一个选择对话框,使您可以在当前文档中搜索图案。 选择后,它将在Inkscape中打开图形。 保存后,粘贴代码将复制到剪贴板。 因此,如果删除了源,我可以重新插入它。

这些热键使您可以动态添加和打开图形。 您无需记住,对于每个文件,您都需要指定pdf + LaTeX,选择正确的目录或编写要插入的代码。 与手动添加图片相比,添加新图片的障碍要低得多。 我的图片管理脚本发布
在Github上 。
了解管理知识之后,让我们讨论如何在Inkscape中实际绘制形状。
画图
尽管Inkscape中的绘制通常比TikZ中的绘制更快,但仍比手工绘制要慢。 使用Inkscape的内置键盘快捷键可以加快该过程,但仍然不够。
因此,我决定用Python编写一个自制的快捷方式管理器,该管理器允许您在所有键盘事件到达Inkscape之前对其进行拦截。 因此,我可以完全控制每个按键的解释方式,从而提供了极大的灵活性。
绘图形状
让我们从Inkscape内置键盘快捷键开始。 例如,
r
激活矩形绘制工具,
e
绘制椭圆形等。从实现的角度来看,这意味着组合管理器将“回放”这些键盘事件,即将它们简单地传输到Inkscape。
但是,我使用
w
和
f
代替了铅笔的默认快捷键
p
和贝塞尔曲线的默认快捷键,因为如果在鼠标右键中,用左手单击它们会更方便。 本着左手组合的精神,我还匹配了
z
来取消,
Shift+z
来删除,
x
来切换捕捉,它们通常分配给难以到达的
%
。
常用样式的按键组合
样式对象是我在Inkscape中第二常见的事情。 绘制形状的样式非常简单:
- 诸如矩形和圆形的形状通常是黑色,浅灰色,白色或透明的。 与轮廓。
- 线(包括轮廓线)大多是实线,虚线或点线。 它们可以(非常)粗体或正常宽度,有时在一侧或两侧带有箭头。
这些选项的组合给出了常用样式的下表:

由于我经常使用这些样式,因此我想快速完成,但是使用Inkscape的默认快捷方式会花费太多时间。 例如,您要更改某些对象的样式,如下所示:

您必须按
Ctrl+Shift+F
打开样式面板,并通过单击来更新每个对象的样式,因为您无法使用Inkscape中的键盘快捷键来执行此操作。 这很累。 理想情况下,我想在一秒钟内执行这样的操作。

这是进入键盘快捷方式的地方,该快捷方式由两个或多个同时的击键组成。 例如,当我同时按
s
和
f
时,我的组合管理器将对当前选择应用实线轮廓和灰色填充。 当您需要粗体轮廓时,请同时按
s+f+g
,其中
g
表示粗体。
因此,每个属性都与一个键相对应:
s
表示法线轮廓,
f
表示灰色填充,
g
表示厚度,
a
表示箭头,
d
表示点,
e
表示虚线,依此类推。

该表中的某些样式仅对应一个键,例如,左上角的样式:灰色填充,没有轮廓。 这可能是一个问题,因为按下单个
f
启动Bezier曲线工具。 解决方案是按
+ f
,其中空格充当占位符。
通过这种组合,只需轻按几下即可解决先前的问题:
f
+ s
使矩形变为灰色并添加实线轮廓;
f
+ h
+ e
表示填充和粗体点
a
+ g
+ d
添加一个箭头,并将该线变成粗虚线。

添加文字
由于数学公式经常出现在绘图中,因此我想在Vim中使用
我的代码片段 。 为此,请按
t
,这将打开一个小的Vim窗口,在其中输入LaTeX代码。 退出后,将文本片段插入Inkscape中:

正如我所说,当您在文档中插入图片时,LaTeX将显示此文本。 但是有时候我想立即显示LaTeX,可以通过
Shift+T
来完成:

两种选择都有其优点和缺点。 基本上,我使用第一种方法,因为文本显示在LaTeX文档中。 这意味着字体始终匹配,并且您可以使用文档的前序中定义的宏。 但是有一个缺点:执行文本定位有时会有些困难。 由于您看不到Inkscape的最终结果,因此有时您需要从Inkscape切换到pdf查看器,然后再重新调整结果。
保存和使用稀有样式
尽管在90%的情况下基本样式就足够了,但有时您还是想使用特殊样式。 例如,要在光学元件上绘制图表,使用玻璃和光束样式很有用。 为此,您首先需要使用默认组合在Inkscape中创建样式:

要保存这些样式,请选择一个对象,然后按
Shift + s
。 然后输入新样式的名称,在本例中为“ glass”,然后按Enter确认。 现在,样式已保存,以后可以使用。
现在,当我选择一个对象时,按
s
并输入'glass',相应的样式将应用于该对象。 但是,无需输入全名,因为如果样式单独与输入的字符匹配,则会立即应用样式。 例如,如果我只有一种以'g'开头的样式,则输入此字母之一就足以应用该样式。 如果您有几种样式,则必须输入“ gl”甚至“ gla”。
在这种情况下,当您输入太多字符时崩溃很烦人:假设输入'gl'的样式是正确的,但是您键入'gla',然后
a
将被解释为另一个命令。 因此,组合管理器将等待500 ms,然后返回默认模式。 这个时间足以使人们看到样式已被应用并停止打印。

添加和保存对象
我的设置的最后一个元素是添加和保存对象,分别使用
a
和
Shift+a
键来完成。 例如,按
a
并输入'ec'会添加一条椭圆曲线:

再举一个例子:按
a
并输入'dg'会添加一个锁孔,即锁孔('dg'是键盘上'kh'的镜像)。 使用
Ctrl+-
可从给定形状中减去图形:

其他一些示例:斑点和2D,3D轴,我经常在复杂的分析和微分几何中使用它们。

代号
如果您想自己尝试,
可以在Github
上发布
用于在Vim中管理图形的
脚本和
Inkscape键盘快捷方式管理器 。 这两个脚本仅在Linux系统上工作。 第一个应该开箱即用,第二个可能需要其他配置。
结论
使用Inkscape,您可以轻松,快速地为文章,书籍和演示文稿创建插图。 它们看起来很专业,非常适合文档。 尽管这比手工绘制要慢,但是在大多数情况下,Inkscape比TikZ快。 我的键盘快捷键和用于在Vim中管理图形的脚本可进一步加快工作速度,使您可以在演讲过程中绘制图形,与讲师保持同步。