也许问题不清楚。我知道如何将 tikzpicture 放在框内。我在这个中做到了问题像这样
\newsavebox{\mycandle}
\savebox{\mycandle}{%
\begin{tikzpicture}[scale=.1]
...
\end{tikzpicture}
}
但在这种情况下,我将一个盒子(\pgfpic
也许是最后一个盒子)放入一个盒子中,我想知道在\endtikzpicture
到达时是否有可能保存最后一个盒子。
我不确定,但我认为好的盒子是\pgfpic
。在文件中 pgfcorescopes.code.tex
,在宏的末尾\endpgfpicture
,我发现了\pgfsys@endpicture
,然后\pgfsys@typesetpicturebox\pgfpic
。第一个似乎取决于驱动程序,我不理解代码,对于第二个宏,\pgfsys@typesetpicturebox
定义在文件 pgfsys.code.tex 内
以下是该宏的代码:
\def\pgfsys@typesetpicturebox#1{%
\pgf@ya=\pgf@shift@baseline\relax%
\advance\pgf@ya by-\pgf@picminy\relax%
%
%
\advance\pgf@picmaxy by-\pgf@picminy\relax% maxy is now the height
\advance\pgf@picmaxx by-\pgf@picminx\relax% maxx is now the width
\setbox#1=\hbox{\hskip-\pgf@picminx\lower\pgf@picminy\box#1}%
\ht#1=\pgf@picmaxy%
\wd#1=\pgf@picmaxx%
\dp#1=0pt%
\leavevmode%
\pgf@xa=\pgf@trimleft@final\relax \ifdim\pgf@xa=0pt \else\kern\pgf@xa\fi
\raise-\pgf@ya\box#1%
\pgf@xa=\pgf@trimright@final\relax \ifdim\pgf@xa=0pt \else\kern\pgf@xa\fi
}
但我不明白有关这个宏的评论:
% Called after a picture has been typeset in box #1. This % command should insert the box into the normal TeX code. The box #1 % will still be a ``raw'' box that contains only the \special's. The % job of this command is to resize and shift this box according to the % baseline shift and the size of the box. % % This command has a default implementation.
好吧,我迷失在所有这些代码中,我不确定我想要的是否可行。也许这是一个坏主意。
答案1
如果我说
\newsavebox{\mycandle}
\savebox{\mycandle}{%
\begin{tikzpicture}[scale=.1]
\draw (0,0) -- (1,1) ;
\end{tikzpicture}}
然后来自的对数\showbox\mycandle
(具有较高的\showboxbreadth
和的值\showboxdepth
)是
> \box36=
\hbox(3.24544+0.0)x3.24544
.\pdfcolorstack 0 push {0 g 0 G}
.\hbox(3.24544+0.0)x3.24544
..\glue 0.2
..\hbox(0.0+0.0)x0.0, shifted -0.2
...\pdfliteral{q }
...\pdfliteral{0 G }
...\pdfliteral{0 g }
...\pdfliteral{0.3985 w }
...\hbox(0.0+0.0)x0.0
....\glue 0.0
....\glue 0.0
....\glue 0.0
....\glue 0.0
....\glue 0.0
....\glue 0.0
....\glue 0.0
....\glue 0.0
....\glue 0.0
....\glue 0.0
....\glue 0.0
....\glue 0.0
....\pdfliteral{q }
....\glue 0.0
....\glue 0.0
....\pdfliteral{0.0 0.0 m }
....\pdfliteral{2.83484 2.83484 l }
....\pdfliteral{S }
....\pdfliteral{Q }
....\glue 0.0 plus 1.0fil minus 1.0fil
...\pdfliteral{n }
...\pdfliteral{Q }
...\glue 0.0 plus 1.0fil minus 1.0fil
.\pdfcolorstack 0 pop
所以你不是\pdfcolorstack
最后一个框,它被合适的指令包围(在 中pdflatex
)。它们变成\special{color push gray 0}
和\special{color pop}
和latex
或xelatex
。我认为在发出这些成对的命令之前尝试获取内部框并不安全。