diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r-- | Master/texmf-dist/tex/latex/tikz-dimline/tikz-dimline.sty | 189 |
1 files changed, 189 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/tikz-dimline/tikz-dimline.sty b/Master/texmf-dist/tex/latex/tikz-dimline/tikz-dimline.sty new file mode 100644 index 00000000000..e8d9750cece --- /dev/null +++ b/Master/texmf-dist/tex/latex/tikz-dimline/tikz-dimline.sty @@ -0,0 +1,189 @@ +%% Dimension line for LaTeX/TikZ +%% Copyright © 2013 Sébastien Gross <seb•ɑƬ•chezwam•ɖɵʈ•org> +%% +%% This file may be distributed and/or modified +%% +%% 1. under the LaTeX Project Public License and/or +%% 2. under the WTF Public License. +%% +%% +%% This simplify the creation drawing of dimension arrows. +%% +%% +%% To install it copy the tango directory to either: +%% - $TEXHOME/tex/latex/ +%% - ~/texmf/tex/latex/ +%% - ~/Library/texmf/tex/latex +%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{tikz-dimline}[2013/03/13 v1.0 initial version] + +\RequirePackage{tikz} +\RequirePackage{pgfplots} +\RequirePackage{ifthen} + +\usetikzlibrary{calc,decorations.markings,arrows} + +\makeatletter + + + +\pgfkeys { + /dimline/.cd, + execute style/.style = {#1}, + execute macro/.style = {/dimline/execute style/.expand once=#1}, +} + + +\newdimen\dimline@arrow@linewidth + +\pgfarrowsdeclare{dimline}{dimline} +{ + \arrowsize=1\pgflinewidth + \pgfarrowsleftextend{0\arrowsize} + \pgfarrowsrightextend{5\arrowsize} +} { + \arrowsize=1\pgflinewidth + \pgfsetdash{}{0pt} % do not dash + % | + \pgfsetlinewidth{.5\arrowsize} + \pgfpathmoveto{\pgfpoint{4.75\arrowsize}{3\arrowsize}} + \pgfpathlineto{\pgfpoint{4.75\arrowsize}{-3\arrowsize}} + \pgfusepathqstroke + % > + \pgfsetlinewidth{0.01pt} + \pgfpathmoveto{\pgfpoint{4.5\arrowsize}{0pt}} + \pgfpathlineto{\pgfpoint{-3\arrowsize}{2\arrowsize}} + \pgfpathlineto{\pgfpoint{-3\arrowsize}{-2\arrowsize}} + \pgfpathclose + \pgfusepathqfillstroke +} + + +\pgfarrowsdeclare{dimline reverse}{dimline reverse} +{ + \arrowsize=1\pgflinewidth + \pgfarrowsleftextend{-5\arrowsize} + \pgfarrowsrightextend{0\arrowsize} +} { + \arrowsize=1\pgflinewidth + \pgfsetdash{}{0pt} % do not dash + % | + \pgfsetlinewidth{0.5\arrowsize} + \pgfpathmoveto{\pgfpoint{-0.25\arrowsize}{3\arrowsize}} + \pgfpathlineto{\pgfpoint{-0.25\arrowsize}{-3\arrowsize}} + \pgfusepathqstroke + % > + \pgfsetlinewidth{0.01pt} + \pgfpathmoveto{\pgfpoint{0pt}{0pt}} + \pgfpathlineto{\pgfpoint{7.5\arrowsize}{2\arrowsize}} + \pgfpathlineto{\pgfpoint{7.5\arrowsize}{-2\arrowsize}} + \pgfpathclose + \pgfusepathqfillstroke +} + + +% measure lenght +% http://tex.stackexchange.com/questions/123913 + + +\newcommand{\dimline@do@nothing}[1]{#1}% +% http://tex.stackexchange.com/questions/58283/tikz-how-to-determine-the-vector-between-two-co-ordinates + + +% #1: optional keys parameters +% #2: start point +% #3: end point +% #4: text +\newcommand{\dimline}[4][]{% + + \pgfplotsifinaxis{% + \let\dimline@internal\pgfplotsextra% + }{% + \let\dimline@internal\dimline@do@nothing% + }% + + \dimline@internal{ + \pgfkeys{ + dimline/.is family, + dimline, + color/.initial = black, + extension start length/.initial=1cm, + extension end length/.initial=1cm, + extension start angle/.initial=-90, + extension end angle/.initial=90, + line style/.initial = {}, + label style/.initial = {}, + extension style/.initial = {}, + extension start style/.initial = {}, + extension start path/.initial = {}, + extension end style/.initial = {}, + extension end path/.initial = {}, + #1, + line style/.get = \dimline@line@style, + label style/.get = \dimline@label@style, + extension style/.get = \dimline@extension@style, + extension start style/.get = \dimline@extension@start@style, + extension start path/.get = \dimline@extension@start@path, + extension end style/.get = \dimline@extension@end@style, + extension end path/.get = \dimline@extension@end@path, + } + + \begin{scope} [ + line/.style = { + color=\pgfkeysvalueof{/dimline/color}, + arrows=dimline-dimline, + /dimline/execute macro = \dimline@line@style, + }, + extension/.style = { + color=\pgfkeysvalueof{/dimline/color}!40, line width=0.01, + /dimline/execute macro = \dimline@extension@style, + }, + extension start/.style = { + extension, + /dimline/execute macro = \dimline@extension@start@style + }, + extension end/.style = { + extension, + /dimline/execute macro = \dimline@extension@end@style, + }, + label/.style = { + fill=white, align=center, sloped=true, pos=0.5, + /dimline/execute macro = \dimline@label@style + }, + ] + + \coordinate (a) at #2 {}; + \coordinate (b) at #3 {}; + + \ifthenelse{\equal{\dimline@extension@start@path}{}}{ + \coordinate (a to b) at ($(a)!\pgfkeysvalueof{/dimline/extension start length}!\pgfkeysvalueof{/dimline/extension start angle}:(b)$); + \draw [extension start] (a.center) -- (a to b); + } { + \draw [extension start] plot coordinates {\dimline@extension@start@path}; + } + + \ifthenelse{\equal{\dimline@extension@end@path}{}}{ + \coordinate (b to a) at ($(b)!\pgfkeysvalueof{/dimline/extension end length}!\pgfkeysvalueof{/dimline/extension end angle}:(a)$); + \draw [extension end] (b.center) -- (b to a); + } { + \draw [extension end] plot coordinates {\dimline@extension@end@path}; + } + + \draw[line] (a.center) -- (b.center) node[label] {#4}; + \end{scope} + } +} + + + +\@ifclassloaded{beamer}{% + \renewcommand<>{\dimline}[4][]{\only#5{\beameroriginal{\dimline}[#1]{#2}{#3}{#4}}} +} +\makeatother + + +\endinput +%% tikz-dimline.sty ends here. + |