Cómo editar mensajes perdidos en el diagrama de protocolo msc

Cómo editar mensajes perdidos en el diagrama de protocolo msc

Estoy usando la versión de desarrollo del mscpaquete para dibujar un diagrama de secuencia de mensajes de protocolo. Tengo el siguiente diagrama.

ingrese la descripción de la imagen aquí

Quiero que los mensajes perdidos lleguen al siguiente nivel (no al mismo nivel, en línea recta) y necesito aumentar su longitud. Así quiero que sea:

ingrese la descripción de la imagen aquí

Aquí está el guión 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}

Respuesta1

Nota para otros usuarios: este código está escrito para la versión de desarrollo de msc, disponible enhttp://satoss.uni.lu/software/mscpackage/. No funcionará con la versión mscque está en CTAN.


La longitud de esa flecha está definida por la coordenada relativa ++(\msc@dist,0)en una macro llamada \msc@lost@final. Puedes usar \patchcmdfrom etoolboxpara parchear esa macro, reemplazando la coordenada con, por ejemplo ++(2.5*\msc@dist,-10pt), .

Para que la línea comience en el mismo nivel, muévase \nextleveldespués de \lost[..., como en el ejemplo de código siguiente.

Como en una de tus otras preguntas, eliminé el entorno matemático ( \[ .. \]) porque realmente no tiene sentido usarlo, y eliminé \resizeboxporque no veo que lo necesites.

salida 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}

información relacionada