Я пытаюсь определить среду, которая будет размещать содержимое в , 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}