Как создать абсолютно позиционируемую среду, определяемую параметрами, используя 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}

Связанный контент