使用网格在投影仪中定位元素

使用网格在投影仪中定位元素

我正在寻找一种方法来简化在投影机中定位不同类型元素的艰苦过程。

我读此主题并使用命令获得一个漂亮的网格\setbeamertemplate{background},并且还读取了另一个线程eso-pic并使用具有以下选项的包获得了更漂亮的网格\usepackage[texcoord,grid,gridunit=mm,gridcolor=red!20,subgridcolor=green!40] {eso-pic}

然而,即使我现在通过网格坐标知道什么东西在哪里,如果我试图在两点之间画一条简单的线

\begin{tikzpicture}
    \draw[solid,red,line width= 1.5pt,-stealth] (7,-5) -- (9,-4);
\end{tikzpicture}

这条线绘制在两个与网格坐标不匹配的坐标之间。知道为什么吗?

这是 MWE。我保留了两个网格,只是为了再次检查它们是否匹配。

\documentclass{beamer}
\usepackage{tikz}                       %inline graphics
\usetikzlibrary{hobby,backgrounds,trees,snakes,shapes.callouts,positioning,pgfplots.groupplots}
\usetikzlibrary{positioning}
\usepackage[texcoord,grid,gridunit=mm,gridcolor=red!20,subgridcolor=green!40]
{eso-pic}

\setbeamertemplate{background}{\tikz[overlay]{
    \foreach \x in {0,...,15} \node at (\x ,-0.25) {\small$\x$};
    \foreach \y in {-15,...,0} \node at (12.5 ,\y) {\small$\y$};
    \foreach \x in {0,0.5,...,15} \draw (\x ,-15) -- (\x ,0);
    \foreach \y in {-15,-14.5,...,0} \draw (0,\y) -- (15,\y);}
    }


\begin{document}
\begin{frame}
%
\begin{tikzpicture}
    \draw[on grid,solid,red,line width= 1.5pt,-stealth] (0,0) -- (2,2);
\end{tikzpicture}
%        
\end{frame}
\end{document} 

干杯

答案1

坐标tikzpicture是相对于的tikzpicture。本质上,您使用的是不同的坐标系。

非覆盖的tikzpicture框的大小(大致)适合内容。它(默认情况下)放置的位置使得框的底部位于当前基线上 - 就像 或Fag与文本的当前基线对齐一样。(g当然, 有深度,也有高度,因此下降部位于基线下方。)因此, 是tikzpicture2x2,其底部将位于当前基线上。

网格tikzpicture的大小不同,因此框的大小也不同。这是overlay模式,因此对齐方式也不同。

也就是说,这里的基本问题是,两张图片的框是

  • 大小各异;
  • 相对于幻灯片以不同的方式对齐。

(2,2)此外,由于的最大值y是,因此您的网格中没有0。因此,如果箭头是相对于该网格绘制的,则它不会出现在其中。

要使用相同的坐标,您必须使用相同的坐标系。例如:

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{positioning}

\setbeamertemplate{background}{\tikz[overlay, remember picture, help lines]{
    \foreach \x in {0,...,12} \path (current page.south west) +(\x,9.25) node {\small$\x$};
    \foreach \y in {0,...,9} \path (current page.south west) +(12.5,\y) node {\small$\y$};
    \foreach \x in {0,0.5,...,12.5} \draw (current page.south west) ++(\x,0) -- +(0,9.6);
    \foreach \y in {0,0.5,...,9.5} \draw (current page.south west) ++(0,\y) -- +(12.8,0);
  }
}

\begin{document}
\begin{frame}
\begin{tikzpicture}[remember picture, overlay]
    \draw[on grid,solid,red,line width= 1.5pt,-stealth] (current page.south west) -- +(2,2);
\end{tikzpicture}
\end{frame}
\end{document}

与公共网格对齐

请注意,我从您的示例中删除了大量碎片,因为原​​始内容无法编译并且与问题无关。

相关内容