我正在使用该包的开发版本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
frometoolbox
来修补该宏,例如用 替换坐标++(2.5*\msc@dist,-10pt)
。
为了使该行从同一级别开始,请移至\nextlevel
之后\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}