1. 在DrawIO中绘制草图,例如:
  2. 在DrawIO中到处xml文件(不要勾选勾“压缩”);
  3. 在Gemini中导入xml文件,并输入以下提示词:
角色: 你是一位精通 LaTeX TikZ 和 PGF 绘图的专家开发者。

任务: 将提供的 Draw.io (diagrams.net) XML 代码转换为高质量、专业级的 LaTeX TikZ 绘图代码。

约束与要求:

编译环境: 使用 standalone 文档类。确保代码可以无错编译。

中文支持: 必须使用 ctex 宏包,确保图表中的中文能正确显示。

代码结构(关键):

严禁使用绝对坐标(例如:\node at (10.5, 3.2))。

必须使用 positioning 库(例如:below=of node1, right=of node2)来定义节点的相对位置。

样式分离: 使用 \tikzset 或在 tikzpicture 选项中全局定义样式(例如:block/.style={...}),不要在每个节点里硬编码样式。请尽量还原 XML 中的颜色(Hex 代码)和形状。

宏库要求: 必须包含 \usetikzlibrary{shapes.geometric, arrows.meta, positioning, fit, backgrounds, calc}。

智能分组: 如果图表中有容器或背景框(例如包含多个子节点的灰色底框),请使用 fit 库 来动态包裹这些节点,而不是画一个固定大小的矩形。

连线风格: 根据流程图的布局,适当地使用直角连线(-| 或 |-)。箭头请使用 Stealth 或类似的专业箭头。

逻辑还原: 请准确保持原图的逻辑流向和层级结构,不要因为自动布局而打乱顺序。
  1. 拷贝Gemini生成的tikz代码,例如:
documentclass[tikz, border=10pt]{standalone}

% 引入中文支持
\usepackage{ctex}

% 引入必要的 TikZ 库
% shapes.geometric: 用于椭圆 (ellipse)
% arrows.meta: 用于专业的箭头 (Stealth)
% positioning: 用于相对定位 (right=of)
% fit: 用于创建包裹节点的容器
% backgrounds: 用于控制图层
% calc: 用于计算坐标
\usetikzlibrary{shapes.geometric, arrows.meta, positioning, fit, backgrounds, calc}

% 定义颜色 (提取自 XML HEX 代码)
\definecolor{colorBlueFill}{HTML}{1BA1E2}
\definecolor{colorBlueStroke}{HTML}{006EAF}
\definecolor{colorRedFill}{HTML}{A20025}
\definecolor{colorRedStroke}{HTML}{6F0000}

% 全局样式定义
\tikzset{
    % 基础椭圆样式
    baseEllipse/.style={
        ellipse,
        minimum width=120pt, % 对应 XML width="120"
        minimum height=80pt, % 对应 XML height="80"
        thick,
        align=center,
        font=\sffamily % 使用无衬线字体
    },
    % 蓝色节点样式
    blueNode/.style={
        baseEllipse,
        fill=colorBlueFill,
        draw=colorBlueStroke,
        text=white
    },
    % 红色节点样式
    redNode/.style={
        baseEllipse,
        fill=colorRedFill,
        draw=colorRedStroke,
        text=white
    },
    % 容器框样式 (对应 id="Tn08SG7qedXVa0jG-SMa-3")
    containerBox/.style={
        draw=black,
        thick,
        inner sep=20pt, % 留出内部边距
        rounded corners=0pt
    },
    % 连线样式
    arrowLine/.style={
        ->,
        >={Stealth[scale=1.2]}, % 专业的箭头样式
        draw=black,
        line width=1.5pt,
        smooth % 平滑曲线
    }
}

\begin{document}

\begin{tikzpicture}[node distance=40pt] % 定义节点之间的默认间距

    % 1. 定义节点 (使用相对定位)
    % 绘制左侧蓝色椭圆
    \node[blueNode] (node1) {};

    % 绘制右侧红色椭圆 (位于蓝色节点右侧)
    \node[redNode, right=of node1] (node2) {};

    % 2. 绘制容器 (使用 fit 库)
    % 创建一个包含 node1 和 node2 的矩形框
    % label 可以添加标签,如果需要的话
    \node[containerBox, fit=(node1) (node2)] (box) {};

    % 3. 绘制曲线箭头
    % 原图逻辑:从容器左下角附近出发,经过中间弯曲,指向容器右上角
    % 这里使用相对于 box 的锚点计算,避免绝对坐标
    \draw[arrowLine] 
        ((box.south west) + (0, 10pt)) % 起点:左下角略偏下
        .. controls ((box.south) + (0, -30pt)) and ((box.center) + (-20pt, 90pt)) .. % 控制点:模拟原图的 S 型弯曲
        ((box.north east) + (0, -1)); % 终点:右上角

\end{tikzpicture}

\end{document}

5.复制到latex中编译,如果有偏差可手动调节。所画效果图:

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部