Я использую версию пакета для разработки, 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/. Он не будет работать с версией, msc
которая находится на CTAN.
Длина этой стрелки определяется относительной координатой ++(\msc@dist,0)
в макросе, называемом \msc@lost@final
. Вы можете использовать \patchcmd
from etoolbox
для исправления этого макроса, заменив координату, например, на ++(2.5*\msc@dist,-10pt)
.
Чтобы строка начиналась на том же уровне, перейдите \nextlevel
к after \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}