TikZ 环境中的绝对位置变化

TikZ 环境中的绝对位置变化

我正在使用修改版的 Torino 主题在 Beamer 中制作幻灯片。使用 TikZ 绘图时,绝对定位似乎无法按预期工作。特别是,当我有两个 tikzpicture 环境并且我从后者引用前一个环境时,坐标会偏离。

\begin{frame}
  \begin{tikzpicture}[overlay, remember picture]
    \coordinate (topcorner) at (0,0);
    \coordinate (rightcorner) at (5,-2);
    \coordinate (bottomcorner) at (3,-2);
    \draw (topcorner) -- (rightcorner);
  \end{tikzpicture}%

  \begin{tikzpicture}[overlay, remember picture]
    \draw (topcorner) -- (bottomcorner);
  \end{tikzpicture}
\end{frame}

具体来说,第二个 tikzpicture 中的线绘制得比应有的低,与 tikzpicture 环境之间的段落间距相对应。第一条线绘制在 (0,0) -- (5,-2) 上,而第二条线或多或少与 (0.95,0) -- (3.95,-2) 相对应。如果环境之间没有段落或换行符,则不会发生问题。

此外,该问题不会出现在空白的 LaTeX 文档中(即上述代码似乎没有任何问题),也不会在我恢复到干净的 Torino 主题时出现。显然,我所做的某些更改似乎对 TikZ 的绝对定位有影响。但是,即使经过大量努力,我也无法创建一个最低限度的工作示例。这使得很难确定是某个包、选项、自定义命令……有问题。因此我的问题是:

哪些设置/包/选项/... 可能会影响 TikZ 中的绝对定位,使其无法按预期工作? 有什么可能的原因吗? 我似乎记得几年前遇到过同样的问题,但我不记得当时这个问题是否得到解决。

使用 MWE 编辑

解决问题后,找到 MWE 就很简单了。为了让我的幻灯片保持干净整洁,我倾向于使用一个大型辅助文件来加载所需的包,定义一些有用的命令...... 。结构如下:

我有一个文件 preamble.tex 包含

\documentclass{beamer}
\usepackage{tikz}

此外,实际文件(例如 slides.tex)有以下几行:

\include{preamble}

\begin{document}
  ... (the frame defined above)
\end{document}

但这不起作用并导致 TikZ 的绝对定位失败。

答案1

问题与辅助文件如何包含在 中有关。具体来说,应不惜一切代价避免slides.tex使用,而改用 来解决问题。 的问题在于,在此命令之前和之后添加了 ,并且在写入其他文件方面也发生了一些神奇的事情。这有一些深远的影响,其中之一就是永远不应在前言中使用 ,因为它可能会导致一些奇怪的行为(如本问题所示)。有关和之间区别的更多信息可以在此处找到:include{preamble}input{preamble}\include{..}\clearpage.aux\include{..}\input\include何时应使用 \input 和 \include?

因此,本质上:使用\input{file}而不是\include{file},TikZ 的绝对定位就像一个魅力!

相关内容