将乳胶tikz代码转换为yed图形

tikz2graphml的Python项目详细描述


tikz2graphml:p2文件转换

CircleCI

tikz2graphml是tikz(tex)到graphml转换器,可以在yed软件中查看。它允许您选择tex文件(使用tikz代码)并在输出目录中写入相应的graphml文件。为了保持整洁,对每个tikz块分别进行分析,以生成不同的图形文件。tikz2graphml在linux和windows上工作。它可以从命令行和gui中使用。tikz2graphml使用非常简单,功能强大,支持许多tikz结构。它还允许您缩放graphml中的坐标,以便更好地显示yed中的graphml。

要求

Python Version 3.7.0

此软件需要以下python包。如果使用pip3安装tikz2graphml,则不需要手动安装这些需求。

  • 颜色==0.1.5
  • numpy==1.16.2
  • 网络x==2.3
  • matplotlib==3.0.3
  • Pylatexenc==1.4
  • antlr4-python3-runtime==4.7.2

安装

ubuntu

建议创建一个python虚拟环境,以防止打破依赖关系。

创建python虚拟环境
> sudo apt-get install python3-pip
> (sudo) pip3 install virtualenv 
> virtualenv -p python3 venv
> source venv/bin/activate           # Activate virtual environment

要停用虚拟环境,请在shell中键入deactivate

安装tikz2graphml

> sudo apt-get install python3-tk python3-pip
> (sudo) pip3 install tikz2graphml
> tikz2graphml

窗口

pip install tikz2graphml  
tikz2graphml

图形用户界面

GUI Screenshot

支持的tikz结构

我们已经处理了这些tikz结构

  • 节点
  • 形状:圆形、椭圆形、矩形、菱形
  • 大小
  • 颜色
  • 节点ID
  • 标签
  • 边缘颜色
  • 标签
  • 边缘
  • 宽度
  • 边箭头:-><-><--!--
  • 坐标
  • 极轴:(角度,R(单位:cm))
  • 笛卡尔:(x,y)
  • 整个图形的旋转
  • 处理循环构造(foreach)
  • 全局属性(应用于每个tikz构造)

示例

TIKZ代码示例

\begin{tikzpicture}
    \draw (6,6) ellipse (3cm and 6cm);
    \draw (6,6) ellipse (2.5cm and 5cm);
    \draw (6,6) ellipse (2cm and 4cm);
    \draw (6,6) ellipse (1.5cm and 3cm);
    \draw (6,6) ellipse (1cm and 2cm);
    \draw (0,12) rectangle (12,0);
    \node (a) [fill=green, shape=diamond] at (0,6) {};
    \node (b) [fill=blue] at (12,6) {};
    \node (c) [fill=red] at (6,0) {};
    \node (d) [fill=black] at (6,12) {};
    \draw (6,6) circle (6cm);
    \draw [<->] (a) -- (b);
    \draw [->] (d) -- (c);
    \draw (6,6) ellipse (6cm and 2cm);
    \draw (6,6) ellipse (6cm and 6cm);
    \draw (6,6) ellipse (6cm and 5cm);
    \draw (6,6) ellipse (6cm and 4cm);
    \draw (6,6) ellipse (6cm and 3cm);
\end{tikzpicture}

以yed表示的图形输出

Sample Output

图形文件的生成(设计)

转换过程

  • 读取输入(tex文件)
  • 检测文件中的tikz代码。如果找到多个tikz块,请将它们存储在列表中。
  • 对于上面检测到的每个tikz块,请执行以下操作
    • 检测foreach指令并Unroll它。
    • 使用this grammar和antlr4工具分析文件
    • 对于antlr语法中的每一条规则,我们添加相应的规则来检测和存储节点或边列表中的指令属性TikZAntlrListener
    • 一旦解析完成。我们称之为get_图,它首先旋转图形(如果存在rotate属性),然后将节点和边添加到pyyed图中。
    • 我们从pyyed获得xml输出(使用pyyed.graph.get_graph()),并将其写入*.graphml文件。

软件的当前状态

  • 考虑到所有可能的测试用例(包括无效和有效的测试用例),所有可能的tikz结构都得到了有效的处理。
  • 该工具已安装为pip library
  • 它可以跨平台工作(包括Linux和Windows)
  • 最初的目的是使它成为一个命令行工具。除此之外,我们还添加了一个gui接口,它可以接收输入文件和缩放参数,并输出相应的图形文件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
通过signingReport运行安卓应用程序时发生java错误   java我需要实现hashCode()和equals()方法吗?   javascript Selenium Java从Pinterest下载图像   java Tomcat(嵌入式),无需重新启动即可进行更改   java检查每个if是否有匹配的endif   的java接口。我也是。罐子   mysql java。sql。SQLException:列索引超出范围,0<1。使用准备好的语句   如何在java中修改json字符串?   javascript智能手机的独特功能   web服务java。lang.NoSuchMethodError:javax。ws。rs.core。响应$Status$Family   sockets通过浏览器/URL与ServerSocket建立Java连接   JavaSpring数据自定义存储库和接口隔离原则   swing从不同的java类访问jdialog的一个实例   java如何根据发出的事件有条件地缓冲分组的可观察/流量?   用java将电子邮件正文导出为html文件   JavaSpring获取ServletContext并将其作为Bean提供   setter不做java中应该做的事情