在 Tikz-UML 中使箭头变大

在 Tikz-UML 中使箭头变大

我正在使用 Tikz-UML 包制作一些类图,但箭头(关联、继承……)太小了,看起来很丑。有什么办法可以把它们弄大一点吗?示例:

\documentclass{article}
\usepackage{booktabs}
\usepackage[table,xcdraw]{xcolor}
\usepackage{tikz}
\usepackage{hyperref}
\usepackage{listings}
\usepackage{cmap}
\usepackage{minted}
\usepackage{import}
\usepackage{graphicx}

\usepackage{gensymb}
\usepackage{tikz-uml}

\usetikzlibrary{arrows,shadows}

\begin{document}
\begin{figure}[H]
    \centering
    %\resizebox{\textwidth}{!}{
    \begin{tikzpicture}

    \umlclass[x=0, y=0]{AlarmHandler}
    {-alarmName }
    {+initAlarm()}


    \umlclass[x=0, y=-3]{AlarmHandler1}
    {}
    {}
    \umlclass[x=0, y=-6]{AlarmHandler2}
    {}
    {}

    \umlinherit[]{AlarmHandler2}{AlarmHandler1}
    \umlinherit[]{AlarmHandler1}{AlarmHandler}

    \end{tikzpicture}
    %}
    \caption{alarms\label{fig:alarm}}
\end{figure}
\end{document}

在此处输入图片描述

这只是基本示例,问题在于当我创建更复杂的图表并缩放以适应页面宽度时。箭头很难看清。我在示例中包含了我正在使用的所有库。

答案1

我发现你可以用双箭头

\tikzstyle{tikzuml inherit style}=[color=\tikzumlDefaultDrawColor, -open triangle 45, double]

但这对我来说还不够。后来,我发现如果我使用 arrows.meta 包并将样式定义为,可以更好地控制缩放

\tikzstyle{tikzuml inherit style}=[color=\tikzumlDefaultDrawColor, {-{Stealth[inset=0pt,scale=3,fill=white,angle'=45]}}]

来源

答案2

正如我在评论中提到的那样,我暂时无法帮助您tikz-UML解决问题,因此,在有人帮助您使用此包之前,请查看纯 TikZ 解决方案是否对您而言是可以接受的:

\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{arrows.meta, chains, shapes.multipart}

\begin{document}
    \begin{tikzpicture}[
  node distance = 12mm and 0mm,
    start chain = going below,
 VMPN/.style = {rectangle split, rectangle split parts=3,
                %rectangle split empty part height=1.5ex,% default is 1ex
                draw, thick, % here is control for shape line thickness
                minimum width=32mm, inner xsep=3mm, inner ysep=1mm, 
                on chain,
                join = by arrow},
arrow/.style = {very thick,% <-- here is control for arrow's thickness
                {Triangle[open]}-}
                        ] 
\node[VMPN] {\nodepart{one}     \textbf{AlarmHandler}
             \nodepart{two}     $-$alarmName 
             \nodepart{three}   $+$initAlarm()
             };
\node[VMPN] {\nodepart{one}     \textbf{AlarmHandler1}
             \nodepart{two}     
             \nodepart{three}   
             };
\node[VMPN] {\nodepart{one}     \textbf{AlarmHandler2}
             \nodepart{two}
             \nodepart{three}
             };
    \end{tikzpicture}
\end{document}

在代码中我指出了可以更改线条粗细的位置。选中后生成的图像为:

在此处输入图片描述

附录: 库中的箭头大小arrows.meta可以独立于线粗细确定。因此,如果您想要更大的三角形,您可以将箭头样式定义为:

arrow/.style = {very thick,% <-- here is control for arrow's thickness
                {Triangle[width=2ex,length=2ex,% <-- here is control of triangle size
                          open]}-}

并得到

在此处输入图片描述

相关内容