我很难理解 TikZ 如何处理坐标。因此,这个问题与我之前的两个问题有关,将来还会有更多问题……
在下面的代码中,我定义了一个tikzset
带有两个参数的函数。我想将它们存储在坐标中(是的 - 在这种情况下不需要并且毫无意义,但在我尝试使用 TikZ 执行的操作中不是这样)。
生成的图片是正确的但是我收到一个错误:! Package tikz Error: Giving up on this path. Did you forget a semicolon?. l.17 \pic at (0,0) {somearrow={(1,1)}{(3,3)}}
我的代码有什么问题?请解释一下。
\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\tikzset{
pics/somearrow/.style 2 args={
code={
\coordinate (A) at (#1);
\coordinate (B) at (#2);
\node at (A) {#1};
\node at (B) {#2};
}}}
\begin{document}
\begin{tikzpicture}
\draw[help lines] (0,0) grid (4,4);
\pic at (0,0) {somearrow={(1,1)}{(3,3)}};
\end{tikzpicture}
\end{document}
答案1
你要求它将坐标放置在((0,0))
和 处,((3,3))
而不是(0,0)
和 处(3,3)
。只需省略额外的括号:
\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\tikzset{
pics/somearrow/.style 2 args={
code={
\coordinate (A) at #1;
\coordinate (B) at #2;
\node at (A) {#1};
\node at (B) {#2};
}}}
\begin{document}
\begin{tikzpicture}
\draw[help lines] (0,0) grid (4,4);
\pic at (0,0) {somearrow={(1,1)}{(3,3)}};
\end{tikzpicture}
\end{document}