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. \patchcmdfrom을 사용하여 해당 매크로를 패치할 수 있습니다 . etoolbox예를 들어 좌표를 .++(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}

관련 정보