新手问题:添加圆时不想让其他物体的位置移动

新手问题:添加圆时不想让其他物体的位置移动

我是 TikZ 新手。我想创建两张幻灯片(在 Beamer 中),除了第二张幻灯片中添加了一个圆圈外,其余完全相同。我不希望添加圆圈影响页面上其他对象的位置,而这正是目前发生的情况。有什么建议吗?

\documentclass[xcolor=svgnames, professionalfonts,12pt]{beamer}
\usepackage{amsmath}
\usepackage{pgfpages}
\usepackage{tikz}
\usetikzlibrary{shapes,backgrounds,arrows}
\usepackage{graphics}

\begin{document}

\frame{
\begin{figure}

\begin{tikzpicture}[scale=1]

\draw (8,1) circle [radius=1.081];

\draw[fill] (15.5,0) circle [radius=0.05];

\draw (8,-2) circle [radius=1.08];

\end{tikzpicture}
\end{figure}
}

\frame{
\begin{figure}

\begin{tikzpicture}[scale=1]


\draw (8,1) circle [radius=1.081];

\draw[fill] (15.5,0) circle [radius=0.05];

\draw (8,-2) circle [radius=1.08];


\draw[dashed] (15.5,0) circle [radius=7.515];

\end{tikzpicture}

\end{figure}
}

\end{document}

答案1

scope另一种方法是使用选项绘制更大的圆圈overlay。从TikZ/PGF 手册

[ ] 的效果overlay是,计算当前图片的边界框时,不会考虑当前范围内的所有内容。

编辑:

如果两张幻灯片的其他内容相同,您可以使用 Beamer 覆盖规范来简化您的代码(不幸的是,Beamer 覆盖与 TikZ 覆盖不同):只需将 Beamer 覆盖规范添加<2->\draw较大圆圈的命令中(这意味着较大的圆圈将仅从第二张幻灯片开始显示)

还有一点需要注意:不需要加载该graphics包,因为 TikZ 会自动加载graphicx

\documentclass[xcolor=svgnames, professionalfonts,12pt]{beamer}
\usepackage{amsmath}
\usepackage{pgfpages}
\usepackage{tikz}
\usetikzlibrary{shapes,backgrounds,arrows}

\begin{document}

\frame{

\begin{tikzpicture}[scale=1]

\draw (8,1) circle [radius=1.081];

\draw[fill] (15.5,0) circle [radius=0.05];

\draw (8,-2) circle [radius=1.08];

\begin{scope}[overlay]
  \draw<2->[dashed] (15.5,0) circle [radius=7.515];
\end{scope}

\end{tikzpicture}
}

\end{document}

在此处输入图片描述

答案2

问题在于它tikz会自动将每张图片的边界框调整为该图片中使用的坐标。添加大圆圈时,会更改该图片的边界框。但您可以使用任何特定\draw命令作为边界框,因此您应该添加该命令以使用较小的圆圈来定义两张图片的边界框。

figure从您的代码中删除了该环境,因为我认为它不适合在beamer一般情况下使用,因为它是一个浮动环境,而您不希望材料在演示文稿中浮动。但是,正如 Gonzalo 在评论中指出的那样,在演示文稿中保留这样的浮动环境实际上是可以的,特别是如果您还使用相同的beamer代码来制作演示文稿的文章版本。它还允许您使用字幕。Beamer 在演示模式下停用浮动属性。但是,如果这不是您的意图,那么在演示文稿中真的没有必要使用浮点数。

请注意,我认为 KevinC 的答案是这种特殊情况下更合适的答案,因为它使用beamer方法,并且独立于内部的代码tikzpicture

\documentclass[xcolor=svgnames, professionalfonts,12pt]{beamer}
\usepackage{amsmath}
\usepackage{pgfpages}
\usepackage{tikz}
\usetikzlibrary{shapes,backgrounds,arrows}
\usepackage{graphics}

\begin{document}
\frame{
\begin{tikzpicture}[scale=1]

\draw[use as bounding box](8,1) circle [radius=1.081];
\draw[fill] (15.5,0) circle [radius=0.05];
\draw[] (8,-2) circle [radius=1.08];

\end{tikzpicture}
}
\frame{
\begin{tikzpicture}
\draw[use as bounding box] (8,1) circle [radius=1.081];
\draw[fill] (15.5,0) circle [radius=0.05];
\draw[] (8,-2) circle [radius=1.08];

\draw[dashed] (15.5,0) circle [radius=7.515];
\end{tikzpicture}
}
\end{document}

代码输出

相关内容