Como editar mensagens perdidas no diagrama msc protocl

Como editar mensagens perdidas no diagrama msc protocl

Estou usando a versão de desenvolvimento do mscpacote para desenhar um diagrama de sequência de mensagens de protocolo. Eu tenho o seguinte diagrama.

insira a descrição da imagem aqui

Quero que as mensagens perdidas cheguem no próximo nível (não no mesmo nível - linha reta) e preciso aumentar seu comprimento. É assim que eu quero que seja:

insira a descrição da imagem aqui

Aqui está o roteiro original.

\documentclass[12pt, a4paper, oneside]{article}

\usepackage{msc} %for the diagrams
\usepackage{graphicx} 

\begin{document}

%------------------------------------------------------------------------------------
%   BEGIN DIAGRAM
%------------------------------------------------------------------------------------
\begin{figure}[ht!] 
\[
\resizebox{\columnwidth}{!}{%
   \centering
\setmsckeyword{} 
\drawframe{no} 
\hspace{-1cm}
\begin{msc}[small values, /msc/left environment distance=2cm, /msc/level height=0.6cm, /msc/label distance=0.5ex, /msc/first level height=0.75cm]{} 

\setlength{\instwidth}{2.5\mscunit} 
\setlength{\instdist}{2\mscunit} 

\declinst{A}{}{A}%
\declinst{X}{}{X}%
\declinst{B}{}{B}%

\mess {message 1} {A}{X}
\nextlevel
\lost[side=left]{}{}{X}

\nextlevel
\mess {message 2} {A}{X}
\nextlevel
\lost[side=left]{}{}{X}


\end{msc}
} %end scalebox
 \]
 \caption{Illustration}
\end{figure}
%------------------------------------------------------------------------------------
%   END DIAGRAM
%------------------------------------------------------------------------------------

\end{document}

Responder1

Nota para outros usuários: este código foi escrito para a versão de desenvolvimento do msc, disponível emhttp://satoss.uni.lu/software/mscpackage/. Não funcionará com a versão mscque está no CTAN.


O comprimento dessa seta é definido pela coordenada relativa ++(\msc@dist,0)em uma macro chamada \msc@lost@final. Você pode usar \patchcmdfrom etoolboxpara corrigir essa macro, substituindo a coordenada por, por exemplo ++(2.5*\msc@dist,-10pt).

Para fazer a linha começar no mesmo nível, vá \nextlevelpara after \lost[..., como no exemplo de código abaixo.

Como em uma de suas outras perguntas, removi o ambiente matemático ( \[ .. \]) porque realmente não faz sentido usá-lo e removi o \resizeboxporque não vejo que você precise dele.

saída de código

\documentclass[12pt, a4paper, oneside]{article}
\usepackage{msc} %for the diagrams
\usepackage{etoolbox}
\makeatletter
\patchcmd{\msc@lost@final}{++(\msc@dist,0)}{++(2.5*\msc@dist,-10pt)}{}{}
\makeatother
\begin{document}

%------------------------------------------------------------------------------------
%   BEGIN DIAGRAM
%------------------------------------------------------------------------------------
\begin{figure}[ht!] 
\centering
\setmsckeyword{} 
\drawframe{no} 
\begin{msc}[small values, /msc/left environment distance=2cm, /msc/level height=0.6cm, /msc/label distance=0.5ex, /msc/first level height=0.75cm]{} 

\setlength{\instwidth}{2.5\mscunit} 
\setlength{\instdist}{2\mscunit} 

\declinst{A}{}{A}%
\declinst{X}{}{X}%
\declinst{B}{}{B}%

\mess {message 1} {A}{X}
\lost[side=left]{}{}{X}
\nextlevel
\nextlevel
\mess {message 2} {A}{X}
\lost[side=left]{}{}{X}

\nextlevel

\end{msc}
\caption{Illustration}
\end{figure}
%------------------------------------------------------------------------------------
%   END DIAGRAM
%------------------------------------------------------------------------------------

\end{document}

informação relacionada