Как написать скобки на стрелках схемы в тикзе

Я хочу написать уравнения на стрелках моей tikz биграммы. Например, этот код:

\begin{figure}
    \centering
    \begin{sequencediagram}
        \newinst{c}{client}
        \newinst[6]{s}{server}

        \mess[1]{c}{X=f(y)}{s}

        \stepcounter{seqlevel}
        \mess[1]{c}{C}{s}

    \end{sequencediagram}
    \caption{Client-Server messaging}
\end{figure}


    \end{sequencediagram}
    \caption{Client-Server messaging}
\end{figure}

Выдает много ошибок:

> auth.tex(31): Error: Package tikz Error: A node must have a (possibly
> empty) label text. auth.tex(31): Error: Use of \@next doesn't match
> its definition. auth.tex(31): Error: Package tikz Error: A node must
> have a (possibly empty) label text. , +, coordinate, pic, or node
> expected.(31): Error: Package tikz Error: (, +, coordinate, pic, or
> node expected. , +, coordinate, pic, or node expected.(31): Error:
> Package pgf Error: No shape named  is known. , +, coordinate, pic, or
> node expected.(31): Error: Package pgf Error: No shape named  is
> known. , +, coordinate, pic, or node expected.(31): Error: Package
> tikz Error: Giving up on this path. Did you forget a semicolon?. , +,
> coordinate, pic, or node expected.(36): Error: Extra }, or forgotten
> \endgroup. , +, coordinate, pic, or node expected.(36): Error: Missing
> } inserted. , +, coordinate, pic, or node expected.(36): Error: Extra
> }, or forgotten \endgroup. , +, coordinate, pic, or node
> expected.(36): Error: Missing } inserted. , +, coordinate, pic, or
> node expected.(36): Error: LaTeX Error: \begin{tikzpicture} on input
> line 27 ended by \end{sequencediagram}. , +, coordinate, pic, or node
> expected.(38): Error: Extra }, or forgotten \endgroup.

Но когда сообщение в стрелке не содержит скобок, я не получаю этих ошибок. Не могли бы вы мне помочь?


person user2192774    schedule 07.04.2016    source источник


Ответы (1)


Я не смог решить с вашей диаграммой последовательности, возможно потому, что под линуксом она работает как-то по-другому, но я использовал TikZ. Чтобы обойти эту проблему, нужно разместить соответствующий узел с математической формулой или символом в соответствующих координатах. Может быть, этого достаточно, другого решения я не нашел до сих пор:

\documentclass[]{amsart}
\usepackage[ngerman, english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}
  \begin{tikzpicture}
  \coordinate (a) at (0,0);
  \coordinate (b) at (0,5);
  \coordinate (c) at (6,0);
  \coordinate (d) at (6,5);
  \draw (a) -- (b)node[pos=1.1,scale=1]{Drain} (c) -- (d)node[pos=1.1,scale=1]{Source};
  \draw[-stealth] ($(a)!.8!(b)$) -- node[above,scale=0.5,midway]{Initiate}($(c)!.8!(d)$);
  \begin{scope}[execute at begin node=$, execute at end node=$]    
  \node at (4.5,4.5) {\frac{e^{jn \pi\ }  + e^{-jn \pi\ }}{-jn \pi\ }} ;
  \node at (2.2,3.5) {\int_{-a}^bf(x)g(x)dx=f(b)g(b)} ;
  \node at (3,2) { f(x) = \pi \{ x^4 + 7x^3 + 2x^2 \} } ;
  \end{scope}    
  \draw[stealth-] ($(a)!0.65!(b)$) -- node[below,scale=0.5,midway]{OK} ($(c)!0.65!(d)$);
  \draw[-stealth] ($(a)!.5!(b)$) -- node[above,scale=0.5,midway]{Request}($(c)!.5!(d)$);
  \draw[stealth-] ($(a)!0.35!(b)$) -- node[below,scale=0.5,midway]{Data} ($(c)!0.35!(d)$);
  \draw[stealth-] ($(a)!0.3!(b)$) -- node[below,scale=0.5,midway]{Data} ($(c)!0.3!(d)$);
  \draw[stealth-] ($(a)!0.25!(b)$) -- node[below,scale=0.5,midway]{Data} ($(c)!0.25!(d)$);
  \draw[-stealth] ($(a)!.1!(b)$) -- node[above,scale=0.5,midway]{Close}($(c)!.1!(d)$);
  \end{tikzpicture}
\end{document}

что приводит к этой картинке (все знаки, диаграммы и т. д. произвольны, только для демонстрации):

Математические символы в tikz

person Coliban    schedule 14.04.2016