summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/timing-diagrams
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-08-21 22:11:46 +0000
committerKarl Berry <karl@freefriends.org>2013-08-21 22:11:46 +0000
commit0242d8487d77244b7c27ab708bc73bedc35b7eaf (patch)
tree75fbf55fd98a4a5ce1e6fc7b93e9824cfd0efc44 /Master/texmf-dist/tex/latex/timing-diagrams
parente30b17ab0c40c8e58037477a101916be167fa216 (diff)
timing-diagrams (21aug13)
git-svn-id: svn://tug.org/texlive/trunk@31491 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/timing-diagrams')
-rw-r--r--Master/texmf-dist/tex/latex/timing-diagrams/timing-diagrams.sty243
1 files changed, 243 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/timing-diagrams/timing-diagrams.sty b/Master/texmf-dist/tex/latex/timing-diagrams/timing-diagrams.sty
new file mode 100644
index 00000000000..680b735e257
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/timing-diagrams/timing-diagrams.sty
@@ -0,0 +1,243 @@
+%% timing-diagrams.sty
+%% Copyright 2013 Matthieu Moy <Matthieu.Moy@imag.fr>
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is M. Matthieu Moy.
+%
+% This work consists of the files timing-diagrams.sty and the example file
+% diagrams-examples.tex.
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{timing-diagrams}[2013/08/21 Draw timing diagrams in TikZ]
+
+\RequirePackage{tikz}
+\RequirePackage{ifthen}
+
+\usetikzlibrary{shadows}
+\usetikzlibrary{shapes.callouts}
+\usetikzlibrary{decorations.pathreplacing}
+% Work around a bug in some versions of PGF
+% http://tex.stackexchange.com/questions/31921/callout-and-beamer
+\usetikzlibrary{decorations.text}
+
+% Style (override to customize ...)
+\tikzstyle{tboxshadow}=[
+ drop shadow={shadow xshift=1.5pt,shadow yshift=-1.5pt}
+]
+\tikzstyle{tbox}=[
+ top color=green!7,
+ bottom color=green!80!black!25,
+ fill=green!80!black!25,
+ shading=axis,
+ shading angle=30,
+ draw=black,
+ drop shadow={shadow xshift=1.5pt,shadow yshift=-1.5pt}
+]
+\tikzstyle{tcallout}=[
+top color=yellow!7,bottom color=yellow!40!orange!80!black!25,shading=axis,
+% Cause display bug :-(
+% shading angle=45,
+ellipse callout, draw, drop shadow={shadow xshift=1pt,shadow yshift=-1pt}]
+
+\tikzstyle{tarrow}=[->,line width=.05cm,draw=red!90!blue!60!black]
+\newcommand{\boxheight}{.4}
+
+\newcommand{\tsetcurrent}[2]{
+ \path #2 coordinate (current#1);
+ \path #2 ++(0,\boxheight) coordinate (current#1U);
+ \path #2 ++(0,-\boxheight) coordinate (current#1L);
+}
+
+\newcommand{\tsetcurrentabs}[2]{
+ % correct absissa, wrong ordinate
+ \coordinate (next#1) at (#2, 0);
+ \tsetcurrent{#1}{(start#1 -| next#1)};
+}
+
+\newcommand{\tremember}[2]{
+ \coordinate (remember#2_#1) at (current#1);
+}
+\newcommand{\trecall}[2]{
+ \tsetcurrent{#1}{(remember#2_#1)};
+}
+
+\newcommand{\tline}[2]{
+ \coordinate (start#1) at (0,#2);
+ \tsetcurrent{#1}{(start#1)};
+}
+
+\newcommand{\ttimeline}[2]{
+ \path (current#1) ++(#2, 0) coordinate (tend#1);
+ \draw[->,thick] (current#1)++(-.1,0) -- (tend#1);
+}
+
+\newcommand{\tcaption}[2]{
+ \draw (start#1) ++(-.1,0) node[anchor=east] {#2};
+}
+
+\newcommand{\tadvance}[3]{
+ \path (current#1) +(#2,0) coordinate (next#1);
+ #3
+ \tsetcurrent{#1}{(next#1)};
+}
+
+\newcommand{\tbox}[3]{
+ \tadvance{#1}{#2}{
+ \path (current#1) +(0,\boxheight) coordinate (topleft#1);
+ \path (next#1) +(0,-\boxheight) coordinate (bottomright#1);
+ \draw[tbox] (topleft#1) rectangle (bottomright#1);
+ \draw (barycentric cs:current#1=.5,next#1=.5) node[anchor=center] {#3};
+ }
+}
+
+\newcommand{\tsmallbox}[3]{
+ \tskip{#1}{.05};
+ \tbox{#1}{#2-.1}{#3};
+ \tskip{#1}{.05};
+}
+
+\newcommand{\tskiptext}[3]{
+ \tadvance{#1}{#2}{
+ \path (current#1) +(0,.2) coordinate (topleft#1);
+ \path (next#1) +(0,.2) coordinate (topright#1);
+ \draw (topleft#1) edge[<->] node[auto] {#3} (topright#1);
+ }
+}
+
+\newcommand{\tskiptextL}[3]{
+ \tadvance{#1}{#2}{
+ \path (current#1) +(0,-.2) coordinate (bottomleft#1);
+ \path (next#1) +(0,-.2) coordinate (bottomright#1);
+ \draw (bottomleft#1) edge[<->] node[midway,below] {#3} (bottomright#1);
+ }
+}
+
+\newcommand{\tskiptextCONF}[4]{
+ \tadvance{#1}{#2}{
+ \path (current#1) +(0,-.2) coordinate (bottomleft#1);
+ \path (next#1) +(0,-.2) coordinate (bottomright#1);
+ \draw (bottomleft#1) edge[<->] node[#3] {#4} (bottomright#1);
+ }
+}
+
+\newcommand{\tskiptextinbox}[3]{
+ \tadvance{#1}{#2}{
+ \path (current#1) +(0,-.2) coordinate (topleft#1);
+ \path (next#1) +(0,-.2) coordinate (topright#1);
+ \draw (topleft#1) edge[<->] node[auto] {#3} (topright#1);
+ }
+}
+
+\newcommand{\tskiparrowU}[3]{
+ \tadvance{#1}{#2}{
+ \path (current#1) +(0,\boxheight) coordinate (topleft#1);
+ \path (next#1) +(0,\boxheight) coordinate (topright#1);
+ \draw (topleft#1) edge[bend left,->] node[above] {#3} (topright#1);
+ }
+}
+
+\newcommand{\tskiparrowL}[3]{
+ \tadvance{#1}{#2}{
+ \path (current#1) +(0,-\boxheight) coordinate (topleft#1);
+ \path (next#1) +(0,-\boxheight) coordinate (topright#1);
+ \draw (topleft#1) edge[bend right,->] node[below] {#3} (topright#1);
+ }
+}
+
+\newcommand{\tskip}[2]{
+ \tadvance{#1}{#2}{}
+}
+
+\newcommand{\tevent}[1]{
+ \draw[thick,->] (current#1) -- ++(0,.5);
+}
+
+\newcommand{\teventA}[2]{
+ \draw[thick,->] (current#1) -- ++(#2+90:.5);
+}
+
+\newcommand{\ttick}[1]{
+ \draw[tbox,thick] (current#1) ++(0,\boxheight) rectangle ++(.01,-2*\boxheight);
+}
+
+\newcommand{\tstrongtick}[1]{
+ \draw[tboxshadow,fill=black] (current#1) +(-.04,\boxheight) rectangle +(.04,-\boxheight);
+}
+
+\newcommand{\tlighttick}[1]{
+ \draw (current#1) ++(0,\boxheight) rectangle ++(.01,-2*\boxheight);
+}
+
+\newcommand{\tlonglighttick}[1]{
+ \draw (current#1) ++(0,1.2*\boxheight) rectangle ++(.01,-2.4*\boxheight);
+}
+
+\newcommand{\tcatchup}[2]{
+ \coordinate (next#1) at (current#2|-current#1);
+ \tsetcurrent{#1}{(next#1)};
+}
+
+\newcommand{\ttextU}[2]{
+ \draw (current#1) ++(0,\boxheight) node[anchor=south] {#2};
+}
+
+\newcommand{\ttextL}[2]{
+ \draw (current#1) ++(0,-\boxheight) node[anchor=north] {#2};
+}
+
+\newcommand{\ttextM}[2]{
+ \draw (current#1) node {#2};
+}
+
+\newcommand{\tcalloutU}[3][(0,1)]{
+ \draw (current#2) ++#1
+ node[anchor=south,callout absolute pointer={(current#2)++(0,\boxheight)}, tcallout] {#3};
+}
+
+\newcommand{\ttextarrowU}[3][++(0, .5)]{
+ \path (current#2) ++(0,\boxheight) ++(0,.015) coordinate (tmpcurrentU);
+ \draw[black] (current#2) ++(0,\boxheight) #1
+ node[anchor=south,inner sep=.1](tmptext) {#3};
+ \draw[->] (tmptext) -- (tmpcurrentU);
+}
+
+\newcommand{\tstartbrace}[1]{
+ \coordinate (startbrace#1) at (current#1);
+}
+
+\newcommand{\tendbrace}[2]{
+ \coordinate (endbrace#1) at (current#1);
+ \draw[decoration={brace,amplitude=1.5mm},decorate] (endbrace#1) -- node[below]{#2} (startbrace#1);
+}
+
+\newcommand{\tcalloutL}[3][(0,-1)]{
+ \draw (current#2) ++#1
+ node[anchor=north,callout absolute pointer={(current#2)++(0,-\boxheight)}, tcallout] {#3};
+}
+
+\newcommand{\tarrowLU}[3]{
+ \tarrowCoord{(current#1U)}{(current#2L)}{#3}
+}
+\newcommand{\tarrowUL}[3]{
+ \tarrowCoord{(current#1L)}{(current#2U)}{#3}
+}
+
+\newcommand{\tarrowCoord}[3]{
+ \coordinate (tmp1) at #1;
+ \coordinate (tmp2) at #2;
+ \coordinate (tmpmid1) at (barycentric cs:tmp1=.2,tmp2=.8);
+ \coordinate (tmpmid2) at (barycentric cs:tmp1=.8,tmp2=.2);
+ \coordinate (tmpmid) at (barycentric cs:tmp1=.5,tmp2=.5);
+ \draw[tarrow] (tmp1) .. controls (tmp1 |- tmpmid1) and (tmpmid2 -| tmp2) .. (tmp2);
+ \ifthenelse{\equal{#3}{}}{}{
+ \draw (tmpmid) node[shape=circle,fill=white,draw=black] {#3};
+ }
+}