将乳胶tikz代码转换为yed图形
tikz2graphml的Python项目详细描述
tikz2graphml:p2文件转换
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
窗口
- Python3 Installation
- Pip Installation
- 从Windows打开命令行
- 使用此命令
pip install tikz2graphml
tikz2graphml
图形用户界面
支持的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表示的图形输出
图形文件的生成(设计)
转换过程
- 读取输入(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接口,它可以接收输入文件和缩放参数,并输出相应的图形文件。