我正在尝试制作一个宏来打印带有“变量”标签的 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]
。