2

I'm using Tikz-UML package to make some class diagram but arrows (association, inheritance...) are so tiny it looks ugly. Any way to make them larger? Example:

\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}

enter image description here

This is just basic example, problem is when I create more complex diagram and scale it to fit page width. Arrows are hard to see then. I included in example all libs that I'm using.

  • Welcome to TeX.SE! Please, can you provide an example of your diagrams in small, complete document, which can be compiled? – Zarko Jun 29 '16 at 4:03
  • Hello, I provided code example and picture. – Jablan Jun 29 '16 at 10:16
  • Any ideas before I move to another UML package? – Jablan Jun 29 '16 at 21:13
  • I'm sorry, but I'm not able to install UML package "on-the-fly", for manual instalation I haven't enough time, so I can not test my ideas to use TikZ syntax in tikz-UML. However, I can provide relatively easy a pure TikZ solution (for shoved picture), if you like to see this alternative. – Zarko Jun 29 '16 at 21:24
  • Yes, any idea is welcome. Btw, I use online latex editor ShareLatex, there is easy to include or install packages. And then there is Overleaf, you can try edit here overleaf.com/5591546jmdjhm. Thanks – Jablan Jun 29 '16 at 21:58
3

Well, I discovered you could double the arrow with

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

but its not enough for me. Later, I found out better control of scaling if I use arrows.meta package and define style as

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

Source

  • (+1) for searching for solution! – Zarko Jun 30 '16 at 6:07
0

As I mentioned in my comment, temporary I can't help you at tikz-UML solution, so see, if meanwhile before someone help you with this package, see, if the pure TikZ solution is acceptable to you:

\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}

In code I indicate where you can change thickness of lines. Wit selected the resulting image is:

enter image description here

Addendum: The size of arrows from arrows.meta library can be determined independently of line thickens. So, if you like to have bigger trinagle, you can define arrows style as:

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

and obtain

enter image description here

  • Thank you for answering but that is just minor improvement. If arrow is little bit scaled up that would be better. – Jablan Jun 29 '16 at 22:03
  • what you mean with scaled up? to be triangle on the end of line bigger? Its size you can control with option of Triangle[width=..., length=..., open]. I will add an example. – Zarko Jun 29 '16 at 22:09
  • Yes I just want triangle to be bigger. – Jablan Jun 29 '16 at 22:14
  • This is better, I will wait if someone knows how to do that in tikz-uml. Thanks – Jablan Jun 29 '16 at 22:31
  • Mean time try to read tikz-UML documentation ... :-) – Zarko Jun 29 '16 at 22:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.