So bearbeiten Sie verlorene Nachrichten im MSC-Protokolldiagramm

So bearbeiten Sie verlorene Nachrichten im MSC-Protokolldiagramm

Ich verwende die Entwicklungsversion des mscPakets, um ein Protokollnachrichtensequenzdiagramm zu zeichnen. Ich habe das folgende Diagramm.

Bildbeschreibung hier eingeben

Ich möchte, dass die verlorenen Nachrichten auf der nächsten Ebene ankommen (nicht auf derselben Ebene – gerade Linie) und ich muss deren Länge erhöhen. So soll es sein:

Bildbeschreibung hier eingeben

Hier ist das Originalskript.

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

Antwort1

Hinweis für andere Benutzer: Dieser Code wurde für die Entwicklungsversion von geschrieben msc, verfügbar unterhttp://satoss.uni.lu/software/mscpackage/. Es funktioniert nicht mit der Version, mscdie auf CTAN ist.


Die Länge dieses Pfeils wird durch die relative Koordinate ++(\msc@dist,0)in einem Makro namens definiert \msc@lost@final. Sie können \patchcmdfrom verwenden etoolbox, um dieses Makro zu patchen, indem Sie die Koordinate beispielsweise durch ersetzen ++(2.5*\msc@dist,-10pt).

Um die Zeile auf der gleichen Ebene beginnen zu lassen, verschieben Sie sie \nextlevelnach \lost[..., wie im Codebeispiel unten.

Wie in einer Ihrer anderen Fragen habe ich die mathematische Umgebung ( \[ .. \]) entfernt, weil es nicht wirklich sinnvoll ist, sie zu verwenden, und ich habe entfernt, \resizeboxweil ich nicht sehe, dass Sie sie benötigen.

Ausgabe des Codes

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

verwandte Informationen