如何使用 tikz 建立由參數決定的絕對定位環境位置?

如何使用 tikz 建立由參數決定的絕對定位環境位置?

我正在嘗試定義一個環境,​​將內容放置在tikzpicture node根據環境參數定位的環境中。我對 LaTeX、TikZ 和 PGF 非常陌生,因此語法具有挑戰性。

目前我有以下內容:

\NewEnviron{absnode}[2]
{
    \tikzset{%
        XPOS/.style={xshift=#1},
        YPOS/.style={yshift=#2}
    }
    \begin{tikzpicture}
        \node[XPOS, YPOS, anchor=north west] at (current page.north west) {%
        \BODY
        };
    \end{tikzpicture}
}

然後我嘗試將它與以下內容一起使用:

\begin{absnode}{500 pt}{-10 pt}
Text inside the node positioned relative to the top left corner
\end{absnode}

這……行不通。上面的程式碼可以編譯,但節點似乎沒有定位到除了左上角(未套用移位)之外的位置。

我缺什麼?

答案1

好吧,結果是忘了[remember picture, overlay] arguments to\begin{tikzpicture}`

透過以下內容,它可以按預期工作:

\NewEnviron{absnode}[2]
{
    \tikzset{%
        XPOS/.style={xshift=#1},
        YPOS/.style={yshift=#2}
    }
    \begin{tikzpicture}[remember picture, overlay]
        \node[XPOS, YPOS, anchor=north west] at (current page.north west) {%
        \BODY
        };
    \end{tikzpicture}
}

答案2

有很多方法可以實現這個結果。記得運行兩次。

通常文字會按基線 [anchor=base west] 對齊。

\documentclass[landscape]{article}
\usepackage{tikz}
\usepackage{environ}

\NewEnviron{absnode}[2]
{\begin{tikzpicture}[remember picture, overlay]
  \path (current page.north west) ++(#1,#2) node[anchor=north west] {\BODY};
\end{tikzpicture}}

\begin{document}

\begin{absnode}{500 pt}{-10 pt}
Text inside the node positioned relative to the top left corner
\end{absnode}

\end{document}

相關內容