我想创建包含椭圆节点的“复杂”图片。
要绘制“复杂”图片,我需要该椭圆节点的尺寸前我画了它。
不幸的是,由于节点形状是椭圆形,我无法仅通过测量其中文本的尺寸来计算其尺寸。
因此,我想:
- 创造伪造的仅带有椭圆节点的 tikz 图片。
- 设置全局变量,使其具有正确的椭圆节点尺寸伪造的图片环境。
- 放下伪造的图片(不要在任何地方以任何方式生成它)。
- 使用具有椭圆节点尺寸的全局变量创建“复杂”图片。
此外,最好能够使用计算伪造的序言中的 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
有关使用情况,请参阅这问题。