使用 TikZ 绝对坐标

使用 TikZ 绝对坐标

我想知道是否可以对所有文档使用绝对坐标?请参阅我的示例

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\filldraw[red]
(30pt, 9pt) -- (130pt, 9pt);
\end{tikzpicture}

\begin{tikzpicture}
\filldraw[blue]
(3pt, 9pt) -- (130pt, 9pt);
\end{tikzpicture}

\end{document} 

在此处输入图片描述

为什么红线和蓝线的左 x 坐标相同?我想将第二条线移至左侧 27pt 处!

答案1

要自动使所有tikzpictures 对齐到原点,您可以设置\tikzset{every picture/.append style={trim left=0}}。这会将左边距设置为x原点的位置。请注意,如果您使用负坐标,您将遇到麻烦,因为这些坐标会突出图像。在这种情况下,您必须设置trim left为足够大的负值以包含所有点。

\documentclass{article}
\usepackage{tikz}
\begin{document}
\tikzset{every picture/.append style={trim left=0}}
\begin{tikzpicture}
\filldraw[red]
(30pt, 9pt) -- (130pt, 9pt);
\end{tikzpicture}

\begin{tikzpicture}
\filldraw[blue]
(3pt, 9pt) -- (130pt, 9pt);
\end{tikzpicture}

\end{document} 

答案2

在普通 TeX 中,有一个\phantom通常用于留出与其参数所需的相同空间量。您可以通过\path (0pt,0pt)为两张图片添加一个来执行类似操作。这可确保左侧从相同的x-coordinate 开始:

在此处输入图片描述

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
    \path (0pt,0pt);
    \draw[red] (30pt, 9pt) -- (130pt, 9pt);
\end{tikzpicture}

\begin{tikzpicture}
    \path (0pt,0pt);
    \draw[blue] (3pt, 9pt) -- (130pt, 9pt);
\end{tikzpicture}
\end{document} 

答案3

答案是percusse。每个都tikzpicture在自己的框中排版。框尽可能小,以便排版其中的所有内容。例如,由tikzpicture左下角位置为 (1,1) 和右上角位置为 (2,2) 的正方形组成的 仍将具有 1cm 的宽度和 1cm 的高度。

您的 s 中的坐标tikzpicture完全相对于其自己的s。这解释了为什么您无法将一个 s 中的坐标与另一个 s 中的tikzpicture坐标关联起来(除非您使用)。tikzpicturetikzpictureremember pictures

答案4

添加带有节点的原点

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
    \node(O) at (0,0){};
    \coordinate(O) at (0,0);
    \filldraw[red]
    (30pt, 9pt) -- (130pt, 9pt);
\end{tikzpicture}

\begin{tikzpicture}
    \node(O) at (0,0){};
    \filldraw[blue]
    (3pt, 9pt) -- (130pt, 9pt);
    \end{tikzpicture}

\end{document}

相关内容