我查看了这里最近的问题,惊讶地发现人们用 LaTeX 绘制图表,而 SmartDraw、OpenOffice 或其他程序也可以。使用 LaTeX 绘制图表有什么好处吗(至少对于像分层架构这样的普通图表)?
答案1
LaTeX 图表可以直接插入到您的 LaTeX 文档中,但您需要从其他程序中导出它们,每次更改图表时都需要重复此操作。在 LaTeX 中绘制图表的一大好处是,您可以使用与文档其余部分相同的字体,并确保文本正确缩放。此外,您还可以使用 (La)TeX 排版系统的所有优势,例如出色的数学支持。如果您从 OpenOffice 或类似工具导入图表,字体可能会有所不同,并且无法正确缩放,尽管这些工具也可以处理数学,但结果可能看起来不同。
另一个好处是你可以用 LaTeX 编写/编程你的图表。特别是 TikZ 和 PSTricks 允许循环和条件。可以直接给出坐标,这对技术图表来说是一个很大的好处。例如,我的博士论文中有几个具有可编程步长 的 ADC 图,实际上我编码了一种文档的通用形式,该文档被复制了几次,然后只调整了内部变量以获得不同数量和不同步长 的曲线。绘图工具无法做到这一点,而且会花费更多的时间。另一个例子是我的tikz-timing
时序图包。在那里你只需说明逻辑级别,图表就会自动绘制。在我编写这个包之前,我被告知使用 MS Visio 手动绘制它,在我看来这很麻烦,特别是如果你以后需要更改图表。
在某些情况下,使用绘图程序绘制图表可能会更快,特别是如果您是 LaTeX 新手,但通常 LaTeX 图表看起来更好,并且比手动绘制的图表更一致。
答案2
实施马丁的回答我想说,现在有很多特定的绘图软件包是有帮助的,因为:
- 其中一些涵盖特定主题;例如
pgfplots
允许绘制图表,circuitikz
电路,tikz-cd
交换图,sa-tikz
交换架构,bohr
玻尔模型; - 其他工具则提供了一些功能,使用户的绘图阶段更加简单;例如,为了画树,人们可以使用
forest
,tikz-qtree
,qtree
,xytree
要不就TikZ/PGF
并绘制一个人可以站立的图表fast-diagram
,flowchart
和smartdiagram
。
这两个列表只是我知道的例子:还有更多,还有属于 PSTricks 家族的列表。
有这样的选择非常有帮助:如果一个人需要做某件事,很可能他可以找到现成的包。这样可以减少寻找一些预先存在的图纸和所有相关内容所需的时间(是否有一些特定的规则/惯例需要遵守?这样的例子是否有效?)。事实上,特定的包是按照特定的规则/惯例开发的(如果有的话),而且由于有很多例子,所以很容易上手。作为起点,可以考虑看看这里的一些标签:tikz-pgf,普斯特里克,技术制图和图表。
还要注意的是,采用 TikZ,可以在 Beamer 演示文稿中轻松制作动画;一个实际的例子是sa-tikz
:您可以在http://cfiandra.github.com/Sa-TikZ/。
为了更清楚地说明这个概念,下面是一个例子smartdiagram
只需改变一个命令就可以使同一个图表动画化或不动画化:
Beamer-TikZ 交互确实有助于节省时间,因为很多时候来自标准文档的 TikZpicture 只需要很少的处理就可以制作成动画。
上图的代码:
\documentclass{beamer}
\usepackage{lmodern,smartdiagram}
\smartdiagramset{set color list={
green!40!lime!80!black,
cyan!80!blue,
orange!50!red,
},
sequence item border color=gray!30!black,
}
\begin{document}
\begin{frame}[fragile]
\footnotesize{\verb!\smartdiagram[sequence diagram]{Select Style,Edit,Use}!}
\begin{center}
\smartdiagram[sequence diagram]{Select Style,Edit,Use}
\end{center}
\begin{center}
\smartdiagramanimated[sequence diagram]{Select Style,Edit,Use}
\end{center}
\footnotesize{\verb!\smartdiagramanimated[sequence diagram]{Select Style,Edit,Use}!}
\end{frame}
\end{document}
答案3
使用 LaTeX 绘图的主要优点是一致性、控制、开发和维护。下面我假设您使用 TikZ。
- 图片中的字体将与正在运行的文本的字体相同。(一致性)
- 图片中的常规字体大小与正文的字体大小相同。(一致性)
- TikZ 提供了两种方法来缩放图片。其中一种方法仅缩放图形中实体之间的距离,但不影响字体大小和线宽。(一致性)
- 您可以使用样式来控制图片中实体的外观。例如,您可以使用特殊的线条类型来突出某些元素。这样做的好处是您拥有一个易于理解的 API,并且易于使用。您只需实现一次样式,然后多次重复使用它。(控制,一致性,发展)
- 您可以开发/优化样式。例如,如果您还没有考虑某些线条元素的确切样式,则可以从粗略的样式开始并开始使用该样式。稍后,您可以优化样式,这将产生全局效果。(控制,维护,发展)
- 如果您决定要更改某种类型的线元素的外观,则只需更改该线类型的样式定义,这将产生全局效果。(维护)
- 你可以逐步绘制图片。例如,当使用投影机您可以创建一个分步绘制复杂图表的演示文稿。您可以使用投影机的增量演示工具并注释应该在哪张幻灯片上绘制哪些内容。(控制)
- 您可以使用标签来引用绘图中的位置。这使您的绘图更容易维护。例如,如果您决定移动绘图中的带标签的节点,您只需更改节点的位置,对节点标签的所有引用仍将正常工作。(维护)
- TikZ 提供相对和增量坐标,让您可以定义相对于其他点的点。根据这些坐标定义图片可以更轻松地维护图片。例如,如果您想将使用相对/增量坐标绘制的形状移动到其他位置,您所要做的就是更改一个坐标(其他坐标相对于的坐标)。(维护)
- TikZ 将图片中某些元素的外观和内容/结构分开。例如,树是带有子元素的节点。每个子元素是带有子元素的叶子或节点。您可以根据节点和子元素定义树的结构。树的外观由样式控制。使用此类技术进行绘图可以减少错误并提高绘图的一致性。(发展,维护)
答案4
我不知道OpenOffice
\& Co 的具体图形功能,但使用LaTeX
它来制作图表可以让你真正地“编程”图表。我真的喜欢使用 MS Excel 来收集一些事实,然后使用一些基本的 Excel 函数来创建 TeX/TikZ 代码。我怀疑 OpenOffice 是否具有此功能。
例如http://uweziegenhagen.de/?p=2488我在这里创建了学习材料,只需一个单词 ( ) 就可以在显示答案和不显示答案版本之间切换draft
。
这种模板就是我喜欢 LaTeX 的原因!