Ich verwende die Entwicklungsversion des msc
Pakets, um ein Protokollnachrichtensequenzdiagramm zu zeichnen. Ich habe das folgende Diagramm.
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:
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, msc
die 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 \patchcmd
from 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 \nextlevel
nach \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, \resizebox
weil ich nicht sehe, dass Sie sie benötigen.
\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}