是否可以仅使用 tikzpicture 环境进行测量而不实际创建图片?

是否可以仅使用 tikzpicture 环境进行测量而不实际创建图片?

我想创建包含椭圆节点的“复杂”图片。
要绘制“复杂”图片,我需要该椭圆节点的尺寸我画了它。
不幸的是,由于节点形状是椭圆形,我无法仅通过测量其中文本的尺寸来计算其尺寸。

因此,我想:

  1. 创造伪造的仅带有椭圆节点的 tikz 图片。
  2. 设置全局变量,使其具有正确的椭圆节点尺寸伪造的图片环境。
  3. 放下伪造的图片(不要在任何地方以任何方式生成它)。
  4. 使用具有椭圆节点尺寸的全局变量创建“复杂”图片。

此外,最好能够使用计算伪造的序言中的 tikz 图片。

总体思路(不可编译):

\documentclass {article}
\RequirePackage [utf8] {inputenc}
\RequirePackage {xparse}
\RequirePackage {tikz}

\usetikzlibrary {shapes}

\ExplSyntaxOn

    \dim_new:N \l_x_west
    \dim_new:N \l_x_east

    \dim_new:N \g_ellipse_width

    % Fake picture which will not be generated, just used for calculation of ellipse width.
    \begin {FAKE tikzpicture}

        \node (ellipse) [ellipse, fill = blue] { Some~text.};

        \pgfextractx {\l_x_west} {\pgfpointanchor {ellipse} {west}}
        \pgfextractx {\l_x_east} {\pgfpointanchor {ellipse} {east}}
        \dim_gset:Nn \g_ellipse_width {\l_x_east - \l_x_west}

    \end {FAKE tikzpicture}

\ExplSyntaxOff


\begin {document}

    \begin {tikzpicture}
        % Draw complex picture using the \g_ellipse_width
    \end {tikzpicture}

\end {document}

有什么方法可以实现这个目标吗?伪造的tikz 图片环境?

答案1

作为土拨鼠在评论中回答,这里是使用savebox保存图片尺寸而不绘制它的解决方案。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}

\newsavebox\sandbox

\begin{document}

    \savebox\sandbox
    {
        \tikz
        {
            \node[ellipse]{hello world};
        }
    }

    the ellipse is \the\wd\sandbox\space wide and \the\ht\sandbox\space high.
\end{document}

\tikzexternalize有关使用情况,请参阅问题。

相关内容