我正在嘗試定義一個環境,將內容放置在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}