在PGF(Latex)中找出整个画面宽度的方法

Ras*_*sto 3 macros latex image tex pgf

我有一个乳胶宏,根据给定的参数使用PGF和Tikz绘制图片.绘制的图片宽度取决于这些参数.

PGF自动计算绘制的任何图片的最终宽度,因此用户无需明确设置(例如在图片环境中使用latex构建时).

但是我需要知道将要绘制的图片的宽度.因为我可以像PGF那样计算它,但是这将是相当多的工作(很多if语句......).有没有办法问PGF画出的画面宽度(我期望的某些命令)?无论是在tikzpicture环境内还是在它之后?感谢帮助.

Ant*_*sky 5

我可能会做的是将tikzpicture环境放在一个盒子里,然后找到盒子的宽度:

\setbox0=\vbox{\hbox{%
  \begin{tikzpicture}
    % ...
  \end{tizpicture}%
}}
The width of the following picture is {\the\wd0}.
\box0
Run Code Online (Sandbox Code Playgroud)

请注意,运行后\box0,该框将插入到文档中,其内容将被销毁; 因此,您需要在执行此操作之前查询框的宽度.如果要保存宽度,可以将其存储在维度寄存器中\dimen0=\wd0; 或者,您可以使用\copybox0,插入框但不破坏它(虽然这可能会泄漏内存).

另外,之前玩了一些,我发现只使用一个\vbox导致框总是页面的整个宽度(如果你考虑它,这是有道理的); 然而,仅仅\hbox因为某种原因导致拆箱失败(它似乎是一个已知的哈巴狗).然而,使用这两种作品,我使用非常类似的东西将TikZ图片渲染为精确尺寸的PDF文件.