![我想从 \def 的一个参数中检索第一个和第二个元素](https://linux22.com/image/431512/%E6%88%91%E6%83%B3%E4%BB%8E%20%5Cdef%20%E7%9A%84%E4%B8%80%E4%B8%AA%E5%8F%82%E6%95%B0%E4%B8%AD%E6%A3%80%E7%B4%A2%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%92%8C%E7%AC%AC%E4%BA%8C%E4%B8%AA%E5%85%83%E7%B4%A0.png)
\documentclass[border=1cm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[help lines](0,0)grid(3,3);
\def\line_segment#1;
{
\draw(#1[0],#1[1])--(2,2);
}
\line_segment{1,1};
\end{tikzpicture}
\end{document}
我想在 (1,1) 和 (2,2) 之间画一条线段。我已经编写了上述代码来实现它。编译成功完成,但是从图中可以看出实际的第一个坐标不正确。
下一步我该做什么?
答案1
您尝试的方法几乎有效。您只需添加一些括号,并注意,宏名称不能包含下划线。
\documentclass[border=1cm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[help lines](0,0)grid(3,3);
\def\lineSegment#1;{
\draw({{#1}[0]},{{#1}[1]})--(2,2);
}
\lineSegment{1,1};
\end{tikzpicture}
\end{document}
当然,
\def\lineSegment#1;{
\draw(#1)--(2,2);
}
也可以使用,并且您也可以使用 pgf 键:
\documentclass[border=1cm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[line segment/.code={\draw({{#1}[0]},{{#1}[1]})--(2,2);}]
\draw[help lines](0,0)grid(3,3);
\tikzset{line segment={1,1}}
\end{tikzpicture}
\begin{tikzpicture}[line segment/.code={\draw(#1)--(2,2);}]
\draw[help lines](0,0)grid(3,3);
\tikzset{line segment={1,1}}
\end{tikzpicture}
\end{document}