生成的标准图表pgf-umlsd
仅使用基本箭头,例如:
\documentclass{article}
\usepackage{float}
\usepackage{tikz}
\usetikzlibrary{positioning, fit, calc, shapes, arrows}
\usepackage[underline=false]{pgf-umlsd}
\begin{document}
\begin{figure}[H]
\centering
\begin{sequencediagram}
\newinst{c}{Client}
\newinst[6]{s}{Server}
\mess[1]{c}{Longer label}{s}
\mess[1]{s}{label}{c}
\mess[1]{c}{label}{s}
\mess[1]{s}{Longer label}{c}
\end{sequencediagram}
\caption{Client-Server messaging}
\end{figure}
\end{document}
我想调整任何给定箭头的长度和尖端。例如,能够绘制类似以下内容的内容:
可以通过对图形应用局部改变来实现这一点吗?
答案1
是的,可以通过重新定义来实现\mess
;在下面的例子中,我使用了xparse
轻松添加第五个可选参数,让您可以控制\draw
用于箭头的命令;特别是,这允许您指定不同的箭头提示并使用键shorten
:
\documentclass{article}
\usepackage{xparse}
\usepackage{tikz}
\usetikzlibrary{positioning, fit, calc, shapes, arrows}
\usepackage[underline=false]{pgf-umlsd}
\RenewDocumentCommand{\mess}{O{0}mmmO{>=angle 60}}{%
\stepcounter{seqlevel}
\path
(#2)+(0,-\theseqlevel*\unitfactor-0.7*\unitfactor) node (mess from) {};
\addtocounter{seqlevel}{#1}
\path
(#4)+(0,-\theseqlevel*\unitfactor-0.7*\unitfactor) node (mess to) {};
\draw[->,#5] (mess from) -- (mess to) node[midway, above]
{#3};
\node (#3 from) at (mess from) {};
\node (#3 to) at (mess to) {};
}
\begin{document}
\begin{figure}
\centering
\begin{sequencediagram}
\newinst{c}{Client}
\newinst[6]{s}{Server}
\mess[1]{c}{Longer label}{s}[{-]},shorten >=20pt]
\mess[1]{s}{label}{c}[>=hooks,shorten >=10pt]
\mess[1]{c}{label}{s}
\mess[1]{s}{Longer label}{c}
\end{sequencediagram}
\caption{Client-Server messaging}
\end{figure}
\end{document}
为了生成您在问题中显示的精确的箭头,您需要例如拥有的 CVS 版本,那么您已经在库pgf
中拥有这种箭头。arrows.meta