我想从 \def 的一个参数中检索第一个和第二个元素

我想从 \def 的一个参数中检索第一个和第二个元素

在此处输入图片描述

\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}

相关内容