summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/tikz-dimline/tikz-dimline.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/tikz-dimline/tikz-dimline.sty')
-rw-r--r--Master/texmf-dist/tex/latex/tikz-dimline/tikz-dimline.sty189
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.
+