是否有一个简单的包,我可以输入一个抽象图形然后它返回一个绘图?
A类似问题2010 年曾问过这个问题,但并没有收到任何与我的问题相关的答案。我不需要复杂的代码,只需给出图形的边列表即可获得任何图形。(当然,欢迎使用一些可选参数。)这已经在许多编程语言中实现,所以我想它也应该在 LaTeX 中可用。
答案1
至少有两种方法:
最灵活的(也是我推荐的)是使用PGF3/TikZ如果您拥有最新版本的软件包(3.0.0 及以上版本)并使用
luatex
/lualatex
进行编译,则可以使用 的自动布局功能。请参阅 PGF 手册,其中有一章专门介绍此内容。优点是您可以充分利用 TikZ 的全部功能来设置节点/边的样式,并且它将与文档的其余部分无缝融合。您可以将(几乎)任意的 TeX 代码用于标签/节点内容和 TikZ 样式。缺点可能是性能,但您可以通过使用库来缓解这个问题external
(请参阅手册)。手册中的一个例子:
\tikz [>=spaced stealth’] \graph [layered layout, components go right top aligned, nodes=draw, edges=rounded corners] { first root -> {1 -> {2, 3, 7} -> {4, 5}, 6 }, 4 -- 5; second root -> x -> {a -> {u,v}, b, c -> d -> {w,z} }; third root -> child -> grandchild -> youngster -> third root; };
使用 graphviz 生成布局,然后使用
dot2tex
。优点是您仍然可以获得与主文档相同的字体,可以使用数学,并且可以编译一次图形,而避免在每次编译文档时进行布局。有几种方法可以使用 LaTeX 包来自动化后者。请记住使用选项
dot2texi
运行以使其工作:需要调用需要安装的外部工具(取决于 python)以及。使用最新版本,您可以选择生成 TikZ 代码并为节点/边指定自定义 TikZ 样式。文档中的引文:pdflatex
-shell-escape
dot2texi
dot2tex
graphviz
Graphviz 和 dot2tex 的输出并不完美。有时需要手动调整才能获得用于出版物的正确结果。对于最终和外观调整,编辑生成的代码通常比破解 dot 源更容易。使用 tikz 输出格式时尤其如此。