如何在 xparser 中添加参数?

如何在 xparser 中添加参数?

我有这个代码(基于 Andrew 的回答如何在定义的 TikZ 命令中使用旋转?)。

\documentclass{amsart}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{xparse}
\NewDocumentCommand\Triangle{ O{} r()}{% Syntax: [draw options] (lefthand endpoint
  \draw[#1] (#2) node{$\bullet$} -- ++(1,1.5) node{$\bullet$};
  \draw[#1] (#2) -- ++(2,0) node{$\bullet$};
  \draw[#1] ($(#2)+(1,1.5)$) -- ++(1,-1.5);
}
\begin{document}
  \begin{center}
    \begin{tikzpicture}
        \Triangle[rotate=30](0,0);
        \Triangle[rotate=-10](2.5,0);
        \Triangle(5,0);
    \end{tikzpicture}
  \end{center}
\end{document}

现在我想添加另外三个参数作为名称来替换顶点处的项目符号。我尝试按照多个博客以及 xparse 文档中的说明进行操作,但无法使其工作。我相信一旦你知道了正确的方法就很简单。有人可以给我演示一下吗?

答案1

扩展我的评论:您可以执行以下操作:

\documentclass{amsart}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{xparse}
\NewDocumentCommand\Triangle{ O{} mmm r()}{
  % Syntax: [draw options]{node1}{node2}{node3}(lefthand endpoint)
  \draw[#1] (#5) node{$#2$} -- ++(1,1.5) node{$#3$};
  \draw[#1] (#5) -- ++(2,0) node{$#4$};
  \draw[#1] ($(#5)+(1,1.5)$) -- ++(1,-1.5);
}
\begin{document}
  \begin{center}
    \begin{tikzpicture}
        \Triangle[rotate=30]{A}{B}{C}(0,0);
        \Triangle[rotate=-10]{D}{E}{F}(2.5,0);
        \Triangle{G}{H}{I}(5,0);
    \end{tikzpicture}
  \end{center}
\end{document}

生产:

在此处输入图片描述

的参数\Triangle指定为O{} mmm r()。按顺序,这些意味着:

  • O{}表示这#1是一个可选参数,以 给出[#1],默认值为“无”。这用于为\drawvia提供一个可选参数\draw[#1]
  • mmm表示#2#3#4强制参数(也可以指定为m m m等)
  • r()表示这#5是必需/强制的参数,必须以以下形式给出(#5)

相关内容