以参数作为标签的 TikZ 图表的新命令

以参数作为标签的 TikZ 图表的新命令

我正在尝试制作一个宏来打印带有“变量”标签的 TikZ 图表。MWE:

\documentclass{standalone}
\usepackage{tikz}
\newcommand[3]{\myDiagram}{
  \begin{tikzpicture}
    \node[label={270:$1$}] (1) at (270:1) {};
    \node[label={30:$2$}] (2) at (30:1) {};
    \node[label={150:$3$}] (3) at (150:1) {};
    \draw
    (1) edge node[label={#1}] {} (2)
    (1) edge node[label={#2}] {} (3)
    (2) edge node[label={#3}] {} (3)
    ;
  \end{tikzpicture}
}
\begin{document}
\myDiagram{$1$}{$2$}{$3$}
\end{document}

预期行为:用参数替换标签的图表。即我的 MWE 的输出应与此相同:

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \node[label={270:$1$}] (1) at (270:1) {};
  \node[label={30:$2$}] (2) at (30:1) {};
  \node[label={150:$3$}] (3) at (150:1) {};
  \draw
  (1) edge node[label={$1$}] {} (2)
  (1) edge node[label={$2$}] {} (3)
  (2) edge node[label={$3$}] {} (3)
  ;
\end{tikzpicture}
\end{document}

实际行为:我不断收到Missing \endcsname inserted.

我尝试过的方法: 变奏这个问题的答案(我找不到更多类似的问题)。

请解释一下我这里做错了什么以及如何解决。提前致谢。

答案1

我建议采用以下方式:

在此处输入图片描述

\documentclass[tikz]{standalone}
\begin{document}
\newcommand*{\myDiagram}[3]{%
\path
(-90:1) node (1) {$1$}
(30:1)  node (2) {$2$} 
(150:1) node (3) {$3$}
;
\draw[nodes={red,midway,scale=.6}] (1)
--(2) node[below right] {#1}
--(3) node[above] {#2}
--(1) node[below left] {#3}
;
}%  

\begin{tikzpicture}
\myDiagram{$1$}{$3$}{$2$} 
\end{tikzpicture}
\end{document}

您还可以pic为此任务定义一个。

关于 OP 代码中的错误OP 命令错误:\newcommand{\myDiagram}[3]而不是\newcommand[3]{\myDiagram}

答案2

此行为是 的结果ID-10t error。正如 @Black Mild 在其答案的评论中指出的那样,我传递了\newcommand[3]{\myDiagram}而不是 \newcommand{\myDiagram}[3]

相关内容