当我尝试使用数学符号作为消息标题的一部分时出现以下错误:
缺少 \endcsname 插入
这是一个可以工作的最小示例:
\documentclass{article}
\usepackage{tikz}
\usepackage{pgf-umlsd}
\usepgflibrary{arrows} % for pgf-umlsd
\usepackage{verbatim}
\begin{comment}
\end{comment}
\begin{document}
\begin{figure}[!h]
\centering
\tikzset{font=\scriptsize}
\begin{sequencediagram}
\footnotesize
\newinst{p}{Prover}
\newinst[2.6]{v}{Verifier}
\mess[0]{p}{{$\epsilon$}}{v}{}; % LOCATION OF ERROR
\node[below {$\epsilon$} to, font=\centering] {$test$};
\end{sequencediagram}
\caption{\scriptsize Sequence diagram of the device authentication protocol.}
\label{fig:protocolsAuth}
\end{figure}
\end{document}
如果不使用乳胶宏而是在数学模式中使用数字、文本等,则没有问题。
答案1
的第三个参数中的标签\mess
也被重新用作节点名称的一部分。因此文本受到很大限制。以下示例\mess
通过使用 重新定义以使该参数可以安全地用于节点名称\detokenize
:
\documentclass{article}
\usepackage{tikz}
\usepackage{pgf-umlsd}
\usepgflibrary{arrows} % for pgf-umlsd
\usepackage{verbatim}
\usepackage{caption}
\captionsetup{font=scriptsize}
\renewcommand{\mess}[4][0]{
\stepcounter{seqlevel}
\path
(#2)+(0,-\theseqlevel*\unitfactor-0.7*\unitfactor) node (mess from) {};
\addtocounter{seqlevel}{#1}
\path
(#4)+(0,-\theseqlevel*\unitfactor-0.7*\unitfactor) node (mess to) {};
\draw[->,>=angle 60] (mess from) -- (mess to) node[midway, above]
{#3};
\node (\detokenize{#3} from) at (mess from) {};
\node (\detokenize{#3} to) at (mess to) {};
}
\begin{comment}
\end{comment}
\begin{document}
\begin{figure}[!h]
\centering
\tikzset{font=\scriptsize}
\begin{sequencediagram}
\footnotesize
\newinst{p}{Prover}
\newinst[2.6]{v}{Verifier}
\mess[0]{p}{$\epsilon$}{v}{};
\end{sequencediagram}
\caption{Sequence diagram of the device authentication
protocol.}
\label{fig:protocolsAuth}
\end{figure}
\end{document}
答案2
如果您不反对使用 TikZ 库calc
,这里有一种方法可以满足您的要求。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{pgf-umlsd}
\usepgflibrary{arrows} % for pgf-umlsd
\usepackage{verbatim}
\begin{comment}
\end{comment}
\begin{document}
\def\aee{\mbox{fd}}
\begin{figure}[!h]
\centering
\tikzset{font=\scriptsize}
\begin{sequencediagram}
\footnotesize
\newinst{p}{Prover}
\newinst[2.6]{v}{Verifier}
\mess[0]{p}{}{v}%{p}{{$\epsilon$}}{v}{}; % LOCATION OF ERROR
\node[anchor=south] at ($(mess from)!0.5!(mess to)$) {$\epsilon$};
\end{sequencediagram}
\caption{\scriptsize Sequence diagram of the device authentication protocol.}
\label{fig:protocolsAuth}
\end{figure}
\end{document}