如何在 MSC 協定圖中編輯遺失的訊息

如何在 MSC 協定圖中編輯遺失的訊息

我正在使用該包的開發版本msc來繪製協議訊息序列圖。我有以下圖表。

在此輸入影像描述

我希望丟失的消息到達下一個級別(不是同一級別 - 直線),並且我需要增加其長度。這就是我想要的樣子:

在此輸入影像描述

這是原始腳本。

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

答案1

其他使用者請注意:此程式碼是為 的開發版本編寫的msc,可從http://satoss.uni.lu/software/mscpackage/。它不適用於mscCTAN 上的版本。


++(\msc@dist,0)此箭頭的長度由名為 的巨集中的相對座標定義\msc@lost@final。您可以使用\patchcmdfrometoolbox來修補該宏,將座標替換為例如++(2.5*\msc@dist,-10pt)

若要使該行在同一層級開始,請移至\nextlevelafter \lost[...,如下面的程式碼範例所示。

就像您的其他問題之一一樣,我刪除了數學環境 ( \[ .. \]),因為使用它實際上沒有意義,並且我刪除了 ,\resizebox因為我認為您不需要它。

程式碼的輸出

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

相關內容