4

I've just created an SVG version with TikZ and Inkscape from an old PNG version of an image on wikipedia. This is how they look like:

images compared

You might notice, that the text of the left image is much easier to read. One reason is the color, but the othr is defitely the font.

How can I make the text easier to read?

I thick making the text (all formulae) bold would be a good start. If this isn't enough, it might be necessary to change from the italic font to a normal one.

The current source is on github. Here is the source that was used for the image above:

\documentclass[varwidth=true, border=2pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes, calc, shapes, arrows} 
\usepackage{amsmath,amssymb}

\usepackage{xcolor}
\definecolor{xvectorcolor}{HTML}{77933C}

\begin{document}
\begin{tikzpicture}[]
    % Punkte
    \coordinate (A) at (0,0) {};
    \coordinate (B) at (5,0) {};
    \coordinate (C) at (2,2) {};

    % Draw the triangle
    \path[fill=blue!10, fill=blue!10]  (A) -- (B) -- (C) -- (A);
    \draw[->, ultra thick,fill=gray!10, xvectorcolor, arrows={-latex}]  (A) -- (C) node[sloped,midway,above] {$x$};
    \draw[->, ultra thick,fill=gray!10, blue!80, arrows={-latex}]  (C) -- (B) node[sloped,midway,above] {$y$};
    \draw[->, ultra thick,fill=gray!10, red!80, arrows={-latex}]  (A) -- (B) node[sloped,midway,above] {$z = x + y$};
    \coordinate  (A) -- (B) node[sloped,midway,below] {$\|z\| = \|x+y\| \leq \|x\| + \|y\|$};



\end{tikzpicture}
\end{document}
3
  • 3
    You could just add font=\boldmath to the tikzpicture options to make the math bold.
    – Jake
    Sep 16, 2012 at 17:54
  • Thanks, that was a good hint. tex.stackexchange.com/a/24040/5645 were also some good hints, but \mathsf{...} provided the best result so far. Sep 16, 2012 at 19:14
  • Computer modern is a thin font. Maybe you should try times-like font, such as package mathptmx or txfonts.
    – Siyuan Ren
    Sep 17, 2012 at 3:19

2 Answers 2

3

The idea of the following variant is that the long formula at the bottom determines the width of the triangle (line AB).

  • It uses \boldmath for the symbols (=, +, …) and a sans serif font for the variables (\mathsf wanted in comment).

  • The spacing inside the formulas can be adjusted by \medmuskip and \thickmuskip. The former controls the spacing around binary operators (+), the latter around relational symbols (=).

  • The example uses line cap=round to make the overlapping at A a little nicer.

The complete example:

\documentclass[varwidth=true, border=2pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes, calc, shapes, arrows}
\usepackage{amsmath,amssymb}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{tgheros}

\usepackage{xcolor}
\definecolor{xvectorcolor}{HTML}{77933C}

\medmuskip=.75\medmuskip
%\thickmuskip=.75\thickmuskip

\newcommand*{\sy}[1]{\textsf{% \itshape
  #1%
}}

\newsavebox\formula
\newdimen\Coff

\begin{document}

\begin{tikzpicture}[
  font=\boldmath,
  ultra thick,
]
  \node[line width=0pt,anchor=north,inner sep=0pt] (eq) {%
    \sbox\formula{$
      \|\sy z\| = \|\sy x+\sy y\| \leq \|\sy x\| + \|\sy y\|
    $}%
    \usebox\formula
    \global\Coff=.4\wd\formula
  };
  \coordinate (A) at ($(eq.north west) + (1.6pt,1ex)$);
  \coordinate (B) at ($(eq.north east) + (-1.6pt,1ex)$);
  \coordinate (C) at ($(A) + (\Coff,\Coff)$);
  \path[fill=blue!10, fill=blue!10]  (A) -- (B) -- (C) -- (A);
  \draw[->, fill=gray!10, xvectorcolor, arrows={-latex}]
    (A) -- (C) node[sloped,midway,above] {$\sy x$};
  \draw[->, fill=gray!10, blue!80, arrows={-latex}]
    (C) -- (B) node[sloped,midway,above] {$\sy y$};
  \draw[->, fill=gray!10, red!80, arrows={-latex}, line cap=round]
    (A) -- (B) node[sloped,midway,above] {$\sy z = \sy x + \sy y$};
\end{tikzpicture}

\end{document}

Result

4

Jake's suggestion of using font=\boldmath goes a long way towards what you want. But if that is not enough you can increase it further via \scalebox from the graphicx package:

enter image description here

References:

Code:

\documentclass[varwidth=true, border=2pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes, calc, shapes, arrows} 
\usepackage{amsmath,amssymb}

\usepackage{xcolor}
\definecolor{xvectorcolor}{HTML}{77933C}

\usepackage{graphicx}
\newcommand*{\Scale}[2][1.5]{\scalebox{#1}{#2}}%


\begin{document}
\begin{tikzpicture}[font=\boldmath]
    % Punkte
    \coordinate (A) at (0,0) {};
    \coordinate (B) at (5,0) {};
    \coordinate (C) at (2,2) {};

    % Draw the triangle
    \path[fill=blue!10, fill=blue!10]  (A) -- (B) -- (C) -- (A);
    \draw[->, ultra thick,fill=gray!10, xvectorcolor, arrows={-latex}]  (A) -- (C) node[sloped,midway,above] {\Scale{$x$}};
    \draw[->, ultra thick,fill=gray!10, blue!80, arrows={-latex}]  (C) -- (B) node[sloped,midway,above] {\Scale{$y$}};
    \draw[->, ultra thick,fill=gray!10, red!80, arrows={-latex}]  (A) -- (B) node[sloped,midway,above] {\Scale{$z = x + y$}};
    \coordinate  (A) -- (B) node[sloped,midway,below] {\Scale{$\|z\| = \|x+y\| \leq \|x\| + \|y\|$}};

\end{tikzpicture}
\end{document}
2
  • 1
    I guess before using scalebox, one could first try \large or \Large. Also, instead of wrapping the text in a \scalebox, one could simply say every node/.style={scale=1.5}.
    – Jake
    Sep 16, 2012 at 18:36
  • Scaling text isn't the right solution. Bigger text has to be ``thinner'' in general. <sarcasm> Then again, most people won't notice this, which may explain why w*rd is still so popular. </sarcasm>
    – user10274
    Sep 16, 2012 at 21:03

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .