Tikz 图表 - 宏帮助

Tikz 图表 - 宏帮助

我有一些网络图代码,当我在主体中使用它时,它可以工作。我一直在尝试定义一个宏,这样我就不必重复编写它。我已经命名了 tikz 坐标,该坐标直接定义在此宏上方。nodeFrom并且nodeTo已经定义了坐标。senderTextreceiverText以及arrowText箭头上方的注释。

% originally from http://www.texample.net/tikz/examples/tag/macros/
% draw arrow from sender to receiver
% syntax: \senderarrow[nodeFrom, senderText, arrowText, nodeTo, receiverText]
\newcommand{\senderarrow}[5]{
\draw (#1) node[left]{\begin{tabular}{r}
% \textit{active close}\\
\verb$#2$
\end{tabular}};
\draw (#4) node[right]{\begin{tabular}{l}
\verb${#5}$
\end{tabular}};
\draw[->] (#1) -- (#4) node[midway,sloped,above]{\verb${#3}$};
}
% draw arrow from receiver to sender
% syntax: \receiverarrow{nodeFrom, receiverText, arrowText, nodeTo, senderText}
\newcommand{\receiverarrow}[5]{
\draw ({#1}) node[right]{\begin{tabular}{r}
% \textit{active close}\\
\verb$#2$
\end{tabular}};
\draw (#4) node[left]{\begin{tabular}{l}
\verb${#5}$
\end{tabular}};
\draw[->] (#1) -- (#4) node[midway,sloped,above]{\verb${#3}$};
}

我直接根据这个定义尝试了:

\senderarrow{E}{pkt0 sent}{pkt0}{F}{pkt0 received, delivered, ACK0 sent}

这是错误:

Extra }, or forgotten $. <template> \unskip } \hskip \tabcolsep\endtemplate 
l.193 ...}{F}{pkt0 received, delivered, ACK0 sent}

我不太清楚为什么会发生这种情况。有人能告诉我正确的方向吗?

编辑:我最初没有编写此代码;我一直在为自己的用途更改其他人的代码。如果有其他错误或问题,请告诉我,以便我可以修复它们!

答案1

由于 OP 表示我的评论“效果很好”,我将把评论转换成答案。如果没有完整的 MWE,我无法实际运行任何代码。但我注意到 OP 开发了一个宏,其中包含几个实例\verb。本网站上的许多评论都会指出\verb不能出现在宏内。

然而,我从 OP 的使用上下文中注意到,要处理的参数似乎都不包含特殊的逐字字符,如%\#$等。因此,假设 OP 真正想要的是电传打字机样式 (tt) 字体,我建议用 替换 的实例\verb$...$\texttt{...}显然,这足以满足 OP 的需求。

相关内容