Estoy usando la versión de desarrollo del msc
paquete para dibujar un diagrama de secuencia de mensajes de protocolo. Tengo el siguiente diagrama.
Quiero que los mensajes perdidos lleguen al siguiente nivel (no al mismo nivel, en línea recta) y necesito aumentar su longitud. Así quiero que sea:
Aquí está el guión original.
\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}
Respuesta1
Nota para otros usuarios: este código está escrito para la versión de desarrollo de msc
, disponible enhttp://satoss.uni.lu/software/mscpackage/. No funcionará con la versión msc
que está en CTAN.
La longitud de esa flecha está definida por la coordenada relativa ++(\msc@dist,0)
en una macro llamada \msc@lost@final
. Puedes usar \patchcmd
from etoolbox
para parchear esa macro, reemplazando la coordenada con, por ejemplo ++(2.5*\msc@dist,-10pt)
, .
Para que la línea comience en el mismo nivel, muévase \nextlevel
después de \lost[...
, como en el ejemplo de código siguiente.
Como en una de tus otras preguntas, eliminé el entorno matemático ( \[ .. \]
) porque realmente no tiene sentido usarlo, y eliminé \resizebox
porque no veo que lo necesites.
\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}