![TikZ 环境中的绝对位置变化](https://linux22.com/image/273590/TikZ%20%E7%8E%AF%E5%A2%83%E4%B8%AD%E7%9A%84%E7%BB%9D%E5%AF%B9%E4%BD%8D%E7%BD%AE%E5%8F%98%E5%8C%96.png)
我正在使用修改版的 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 的绝对定位就像一个魅力!