tikz pgf:缺少 \endcsname 插入

tikz pgf:缺少 \endcsname 插入

当我尝试使用数学符号作为消息标题的一部分时出现以下错误:

缺少 \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}

相关内容