将 tikz 节点定位到顶部

将 tikz 节点定位到顶部

我在投影仪框架中有四个圆圈,

\begin{tikzpicture}[% common options for the circles:
ball/.style = {circle, draw, align=center, anchor=north, inner sep=0}]

\node<1>[ball,text width=1.5cm,fill=blue!20,draw=blue!20] (Post) at (6,2) {Post};
\node<2,3,4>[ball,text width=1.5cm,fill=purple!20,draw=purple!20] (A) at (6,2) {A};


\node<2>[ball,text width=1.5cm,fill=blue!20,draw=blue!20] (B) at (9,2) {B};
\node<1,3,4>[ball,text width=1.5cm,fill=purple!20,draw=purple!20] (B) at (9,2) {B};


\node<3>[ball,text width=1.5cm,fill=blue!20,draw=blue!20] (C) at (12,2) {C};
\node<1,2,4>[ball,text width=1.5cm,fill=purple!20,draw=purple!20] (C) at (12,2) {C};

\node<4>[ball,text width=1.5cm,fill=blue!20,draw=blue!20] (D) at (15,2) {D};
\node<1,2,3>[ball,text width=1.5cm,fill=purple!20,draw=purple!20] (D) at (15,2) {D};


\end{tikzpicture}

问题是,当我更改节点的 y 坐标时,它会相对于其他节点向上移动。但是,只要我将其更改为所有节点的相同值,它们就会全部回到中心。

我怎样才能使它们全部移至幻灯片/框架的顶部?

答案1

默认情况下,beamer框架内容垂直居中。

通过改变一个 y 坐标值,图片大小会改变,垂直位置也会改变,因为居中了。通过以同样的方式改变所有 y 值,图片大小保持不变,因此所有内容再次居中。

您可以保留至少一个不可见节点或坐标不变,以查看改变 y 值的效果。

例如,添加

\node at (9,0) {};

然后改变其他节点-所有节点都会移动。

为了完成顶部对齐,只需使用[t]框架的选项:

\begin{frame}[t]

答案2

这里有两个可能的问题。一个是特定于投影仪的,当您想要图片顶部对齐时,您应该使用它。这是和 的可选t选项。但如果您想在绘图中创建覆盖,这可能还不够。\frame\begin{frame}

第二个选项是更改图片的边界框。边界框按定义是定义图片尺寸的矩形,因为软件会使用它来将图片放入文档中。图像的行为由几个框定义。还有其他框,如剪切框(TikZ 可以使用任意剪切路径),它定义图片的可见区域。

您可以将其与儿童绘画进行比较。如果您说“您可以在这个矩形内绘画”。孩子可能不想或不能将铅笔放在这个区域。该区域外的每个笔划都保留在那里。这是边界框的行为。如果您想确保绘图不超过某个区域,您必须使用另一张纸,剪下完成的图像并将其粘贴到文档中。这就是剪辑的作用。

\useasboundingbox您可以使用图片中的某个位置来定义图像的边界框。例如:

\useasboundingbox (0,0) -- (1,1);

这将告诉 TeX,图像的大小为 $1\times 1$ 个单位。它将恰好将矩形的面积从 到(0,0)放入(1,1)这个框中。TeX 不会考虑其他所有内容。这可用于创建有趣的效果。

TikZ 手册 ( texdoc pgfmanual) 有更多示例。

另一方面,您可以通过访问节点来访问 TikZ 图片的当前边界框,current bounding box以便您可以轻松地使用以下命令删除图片:

\draw[red] (current bounding box.south east) -- (current bounding box.north west);
\draw[red] (current bounding box.south west) -- (current bounding box.noth east);

相关内容