From c56b93f86ac9c40c9edaceb99404ef79dd4107b7 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Mon, 11 Dec 2017 22:21:38 +0000
Subject: tikz-timing (11dec17)

git-svn-id: svn://tug.org/texlive/trunk@46035 c570f23f-e606-0410-a88d-b1316a301751
---
 .../source/latex/tikz-timing/tikz-timing.dtx       | 1674 +++++++++++---------
 1 file changed, 958 insertions(+), 716 deletions(-)

(limited to 'Master/texmf-dist/source/latex/tikz-timing/tikz-timing.dtx')

diff --git a/Master/texmf-dist/source/latex/tikz-timing/tikz-timing.dtx b/Master/texmf-dist/source/latex/tikz-timing/tikz-timing.dtx
index d73b5211fea..add0b335868 100644
--- a/Master/texmf-dist/source/latex/tikz-timing/tikz-timing.dtx
+++ b/Master/texmf-dist/source/latex/tikz-timing/tikz-timing.dtx
@@ -1,85 +1,45 @@
-% \iffalse
-%<*copyright>
-%
-% Copyright (C) 2009 by Martin Scharrer <martin@scharrer-online.de>
-% -----------------------------------------------------------------
-%
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3c
-% 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.3c or later is part of all distributions of LaTeX
-% version 2008/05/04 or later.
-%
-% This work has the LPPL maintenance status `maintained'.
-%
-% The Current Maintainer of this work is Martin Scharrer.
-%
-% This work consists of the files tikz-timing.dtx, tikz-timing.ins
-% and the derived file tikz-timing.sty.
-%
-% $Id: tikz-timing.dtx 2038 2011-01-09 20:44:26Z martin $
-%</copyright>
+% \iffalse meta-comment
+%<=*COPYRIGHT>
+%% Copyright (C) 2009-2012 by Martin Scharrer <martin@scharrer-online.de>
+%% ----------------------------------------------------------------------
+%% 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 Martin Scharrer.
+%%
+%% This work consists of the files tikz-timing.dtx and tikz-timing.ins
+%% and the derived filebase tikz-timing*.sty.
+%%
+%<=/COPYRIGHT>
 % \fi
 %
 % \iffalse
 %<*driver>
-\makeatletter
-%</driver>
-\RequirePackage{svn-prov}[2009/05/03]
-%<package>\ProvidesPackageSVN
-%<examplecode>\ProvidesPackageSVN[tikz-timing-examplecode]
-%<ydoc>\ProvidesPackageSVN[ydoc]
-%<lib-arrows>\ProvidesPackageSVN[tikz-timing-arrows]
-%<lib-either>\ProvidesPackageSVN[tikz-timing-either]
-%<lib-overlays>\ProvidesPackageSVN[tikz-timing-overlays]
-%<lib-clockarrows>\ProvidesPackageSVN[tikz-timing-clockarrows]
-%<lib-columntype>\ProvidesPackageSVN[tikz-timing-columntype]
-%<lib-nicetabs>\ProvidesPackageSVN[tikz-timing-nicetabs]
-%<lib-counters>\ProvidesPackageSVN[tikz-timing-counters]
-%<lib-advnodes>\ProvidesPackageSVN[tikz-timing-advnodes]
-%<lib-interval>\ProvidesPackageSVN[tikz-timing-interval]
-%<lib-beamer>\ProvidesPackageSVN[tikz-timing-beamer]
-%<lib-ifsym>\ProvidesPackageSVN[tikz-timing-ifsym]
-%<*driver>
-\ProvidesFileSVN
-%</driver>
-  {$Id: tikz-timing.dtx 2038 2011-01-09 20:44:26Z martin $}
-  [v0.7d
-%<package>   Digital Timing Diagrams using TikZ]
-%<examplecode>   Macros to produce examples for the tikz-timing package]
-%<ydoc>   Documentation Macros for tikz-timing package]
-%<lib>   TikZ-Timing Library for
-%<lib-arrows|      >   timing arrows]
-%<lib-either|      >   uncertain transitions]
-%<lib-overlays|    >   timing overlays]
-%<lib-clockarrows| >   timing clock arrows]
-%<lib-columntype|  >   timing cell types]
-%<lib-nicetabs|    >   nice timing tables]
-%<lib-counters|    >   counter values]
-%<lib-advnodes|    >   advanced nodes]
-%<lib-interval|    >   alternative Z transitions]
-%<lib-beamer|      >   beamer overlay support]
-%<lib-ifsym|       >   ifsym compatible macros]
-%<*driver>
-  DTX-File of 'tikz-timing' package.]
-%</driver>
-%<lib>\GetFileInfoSVN*%
-%<lib>\RequirePackage{tikz-timing}[\filedate]%
-%<*package|driver>
-\DefineFileInfoSVN[tikztiming]
-%</package|driver>
-%<!package>\DefineFileInfoSVN
-%<*driver>
+\ProvidesFile{tikz-timing.dtx}[%
+%<=*DATE>
+    2017/12/10
+%<=/DATE>
+%<=*VERSION>
+    v0.7e
+%<=/VERSION>
+    DTX-File of 'tikz-timing' package.]
 \newif\ifprintversion % \fi
-\ifx\printversion\@undefined
-\else
+\ifdefined\printversion
   \printversiontrue
 \fi
 
+\RequirePackage{filecontents}
+\begin{filecontents}{ydoc.cfg}
+  % Intensionally empty
+\end{filecontents}
+
 \ifprintversion
   \documentclass{ltxdoc}
   \let\chapter\section
@@ -89,11 +49,11 @@
   \documentclass[landscape,12pt]{scrreprt}
   \usepackage{ydoc}
 \fi
+\GetFileInfo{tikz-timing.dtx}
+\usepackage{tikz-timing}[\filedate]
 
 \usepackage{hyperref}
 \usepackage{atbegshi}
-\GetFileInfoSVN{tikz-timing.dtx}
-\usepackage{tikz-timing}[\tikztiming@date]
 \usetikztiminglibrary{arrows,either,overlays,clockarrows,columntype}
 \usetikztiminglibrary{nicetabs,counters,advnodes,interval,ifsym}
 \tikzset{timing/no nice tabs}
@@ -128,6 +88,7 @@
 \def\textfraction{0.05}
 \setcounter{bottomnumber}{2}
 
+\usepackage{listings}
 \lstset{basicstyle=\ttfamily}
 
 \usepackage{shortvrb}
@@ -171,20 +132,20 @@
 \let\envv\env
 \let\css\cs
 \def\lib{\texttt}
-\def\library{\section}
+\def\library#1#2{\section{#2}\label{lib:#1}}
 
 \usepackage{xspace}
 \def\ie{i.e.\xspace}
 \def\eg{e.g.\xspace}
 
 \makeatletter
-% The following code is only needed to produce package examples and therefor not 
+% The following code is only needed to produce package examples and therefor not
 % included in the style file but might be written to an additional file.
 % \iffalse
 %</driver>
 %<*examplecode>
 % \fi
-
+%
 % \begin{environment}{tikztimingexampletable}
 %    \begin{macrocode}
 \newenvironment{tikztimingexampletable}{%
@@ -233,9 +194,9 @@
     }%
     \draw [line width=\heavyrulewidth] (charnodex) +(+1,+1) -- (-1,+1);
     \draw [line width=\lightrulewidth]  (charnodex) +(+1,-1) -- (-1,-1);
-    \draw [line width=\lightrulewidth]  (charnodey) +(+1,-0.6) -- (+1,-1.4) 
+    \draw [line width=\lightrulewidth]  (charnodey) +(+1,-0.6) -- (+1,-1.4)
     (+1,-0.6) -- (+1,+0.6);
-    \draw [line width=\heavyrulewidth] (charnodey) ++(-1,-1) -- +($ (2,0) + 
+    \draw [line width=\heavyrulewidth] (charnodey) ++(-1,-1) -- +($ (2,0) +
     (charnodex) $);
     %
     \path (1.5,-2) node (charnodex) {\strut};
@@ -322,7 +283,7 @@
 % \hypersetup{%
 %   pdfauthor   = {Martin Scharrer <martin@scharrer-online.de>},
 %   pdftitle    = {The tikz-timing package, \fileversion\ from \filedate},
-%   pdfsubject  = {Documentation of LaTeX package tikz-timing which allows the 
+%   pdfsubject  = {Documentation of LaTeX package tikz-timing which allows the
 %   easy creation of timing diagrams inside tikz pictures or text.},
 %   pdfkeywords = {tikz-timing, timing diagram, LaTeX}
 % }%
@@ -371,7 +332,7 @@
 %   {\LARGE\sffamily The \raisebox{-0.66ex}{\Huge\textsf
 %   {\texttiming[z]{3d{\strut tikz}z5d{\strut timing}0.2z}}} package}\\[3ex]
 %   {\large Version \fileversion\ -- \filedate}\\[2ex]
-%   {\large Martin Scharrer \\\normalsize 
+%   {\large Martin Scharrer \\\normalsize
 %   \url{martin@scharrer-online.de}\\[.8ex]
 %   WWW: \url{http://latex.scharrer-online.de/tikz-timing}\\[.5ex]
 %   CTAN: \url{http://www.ctan.org/pkg/tikz-timing}\\[1.2ex]}
@@ -392,14 +353,14 @@
 % \addtocontents{toc}{\vspace*{-1.5em}}
 %
 % \chapter{Introduction}
-% This package uses the \pkg[pgf]{tikz} package to produce timing diagrams 
-% inside text or \envv{tikzpicture} environments.  Also a tabular-like 
-% environment is provided to produce a larger timing diagram with multiple 
+% This package uses the \pkg[pgf]{tikz} package to produce timing diagrams
+% inside text or \envv{tikzpicture} environments.  Also a tabular-like
+% environment is provided to produce a larger timing diagram with multiple
 % labeled signals and the possibility to add own drawing material.
 % Additional optional functionality is provided by libraries.
 %
-% The signal levels of the timing diagram can be given by corresponding 
-% characters/letters like "H" for \emph{Logical High} or "L" for 
+% The signal levels of the timing diagram can be given by corresponding
+% characters/letters like "H" for \emph{Logical High} or "L" for
 % \emph{Logical Low}. So e.g.\ "{HLZXD}" gives `\texttiming{HLZXD}'.
 % In order to fit (in)to normal text the diagram size (\ie its height, width and line width)
 % is defined relatively to the currently active font size. The diagram height is about the height of an
@@ -419,7 +380,7 @@
 %  `\texttt{\@tempa}'~$\rightarrow$~`\texttiming{#1}'}
 % \makeatother
 % A single timing character produces a diagram with a width identical to its height
-% (\iex{H}). Longer diagrams can be produces by either 
+% (\iex{H}). Longer diagrams can be produces by either
 % using the same character multiple times (\iex{HHH})
 % or writing the width as number in front of the character (\iex{3.2H}).
 % For (partial) compatibility with similar packages lowercase characters only produce
@@ -449,42 +410,42 @@
 % \fi
 %
 % \iffalse
-% The package is build to make it possible to define new characters from scratch 
-% or as modified copy of other characters. However, no user macros nor 
-% documentation for this are provided at the moment. Interested \LaTeX\ users 
+% The package is build to make it possible to define new characters from scratch
+% or as modified copy of other characters. However, no user macros nor
+% documentation for this are provided at the moment. Interested \LaTeX\ users
 % should look at the default definitions at the end of the source code.
 % \fi
 %
 % \iffalse
 % \section{Similar Packages}
-% There a some packages which target the same application like the package 
+% There a some packages which target the same application like the package
 % presented by this document.
 %
 % \begin{description}
-%   \itempkg{ifsym} This package (using the |electronic| option) provides a 
-%   special font which contains graphical representation of the logical levels 
-%   high and low at the corresponding letter "H" and "L".  The lower case 
-%   versions have only half the width of the uppercase ones. Also a transition 
-%   can be added using the "|" character which will (sometimes) be added 
+%   \itempkg{ifsym} This package (using the |electronic| option) provides a
+%   special font which contains graphical representation of the logical levels
+%   high and low at the corresponding letter "H" and "L".  The lower case
+%   versions have only half the width of the uppercase ones. Also a transition
+%   can be added using the "|" character which will (sometimes) be added
 %   automatically between |HL| and |LH|.
-%   The diagrams are created using the command |\textifsym|\marg{characters}, 
+%   The diagrams are created using the command |\textifsym|\marg{characters},
 %   e.g.\ \verb+\textifsym{H|L|h|l|H|L}+ results in
 %   \DeleteShortVerb{\|} `\textifsym{H|L|h|l|H|L}'.
 %   \MakeShortVerb{\|}
 %
-%   There is no support for transition slopes and no support for new 
+%   There is no support for transition slopes and no support for new
 %   user-defined logical levels.
 %
-%   \itempkg[(CTAN)]{timing} This package also provides a font for the logical 
-%   levels but supports transition slopes and larger timing diagrams.  This 
+%   \itempkg[(CTAN)]{timing} This package also provides a font for the logical
+%   levels but supports transition slopes and larger timing diagrams.  This
 %   package seems not been updated for a while.
 %
 %   \itempkgnoctan[(TikZ Example Page)]{timing}%
-%   {http://www.texample.net/tikz/examples/timing-diagram/} This package is 
-%   accidentally also called "timing.sty" and is not published on CTAN but on 
-%   the TikZ example website.  It is a small package which is meant as an 
-%   example for the graphics package \texttt{tikz} which is used to draw the 
-%   diagram.  The logical levels must be provided using macros like 
+%   {http://www.texample.net/tikz/examples/timing-diagram/} This package is
+%   accidentally also called "timing.sty" and is not published on CTAN but on
+%   the TikZ example website.  It is a small package which is meant as an
+%   example for the graphics package \texttt{tikz} which is used to draw the
+%   diagram.  The logical levels must be provided using macros like
 %   `|\bit|\marg{0 or 1}\marg{length}'.
 % \end{description}
 % \fi
@@ -496,29 +457,29 @@
 % \newenvironment{Changes}[2]{\paragraph{#1 from #2}\begin{itemize}\let\change\item}{\end{itemize}}
 %
 % \changes{v0.3}{2009/04/24}{First released version}
-% \changes{v0.4}{2009/05/03}{Added output routine which combines successive 
-% occurrences of the same character. This improves screen display quality and 
+% \changes{v0.4}{2009/05/03}{Added output routine which combines successive
+% occurrences of the same character. This improves screen display quality and
 % reduces rendering time and file size.
-% \item Removed own macros for lowercase characters. They 
-% are now handled by the uppercase macros which receive half of the width. 
+% \item Removed own macros for lowercase characters. They
+% are now handled by the uppercase macros which receive half of the width.
 % Exceptions are possible like for the `m' character.
-% \item Added parser for rows in \env{tikztimingtable}. 
-% This makes the syntax much more stable. Also replaced row counter with TikZ 
+% \item Added parser for rows in \env{tikztimingtable}.
+% This makes the syntax much more stable. Also replaced row counter with TikZ
 % coordinates which is more user-friendly.
 % \item User macros to draw grids and lines inside table.
 % \item In-line Nodes, \eg to mark positions inside the diagram.}
-% \changes{v0.4a}{2009/05/05}{Added \cs{tablerules} macro. Changed default style 
+% \changes{v0.4a}{2009/05/05}{Added \cs{tablerules} macro. Changed default style
 % of inline nodes to \texttt{coordinate}.}
-% \changes{v0.5}{2009/05/15}{Added PGF shape for timing diagrams. Added 
-% meta-characters. Changed `M' character to use PGF decorations. Added special 
-% `B' character to reduce width of next character. Changed \cs{timing} syntax to 
-% include an `at' before the coordinate. Bug fix for use with the `calc' 
+% \changes{v0.5}{2009/05/15}{Added PGF shape for timing diagrams. Added
+% meta-characters. Changed `M' character to use PGF decorations. Added special
+% `B' character to reduce width of next character. Changed \cs{timing} syntax to
+% include an `at' before the coordinate. Bug fix for use with the `calc'
 % package.}
-% \changes{v0.6}{2009/07/27}{Added ``forward'' modifier `\texttt{F}' as reverse 
+% \changes{v0.6}{2009/07/27}{Added ``forward'' modifier `\texttt{F}' as reverse
 % version of the ``backward'' modifier `\texttt{B}'.
-% \item Added support for 
+% \item Added support for
 % lower-case modifiers ``\texttt{b}', `\texttt{f}' and \texttt{n}'.
-% \item Added libaries for characters `\texttt{A}'/`\texttt{W}' for arrows and 
+% \item Added libaries for characters `\texttt{A}'/`\texttt{W}' for arrows and
 % '\texttt{E}' for uncertain low-to-high and high-to-low transitions.}
 % \changes{v0.6a}{2009/07/28}{Added library for overlay modifier `\texttt{O}'.}
 %
@@ -528,7 +489,7 @@
 %       \item[\lib{clockarrows}]  Library for clock arrows.
 %       \item[\lib{columntype}]   Library providing a timing column type for |tabular|.
 %       \item[\lib{nicetabs}]     Library to format \cs{tikztimingtable} like a |booktab| |tabular|.
-%       \item[\lib{counters}]     Library to defined counter characters which display an incrementing 
+%       \item[\lib{counters}]     Library to defined counter characters which display an incrementing
 %                             counter value every time there are used.
 %       \item[\lib{advnodes}]     Library for advanced nodes with multiple anchor points.
 %       \item[\lib{ifsym}]        Library providing the same timing symbols and characters as the |ifsym| package
@@ -536,7 +497,7 @@
 %     \end{description}
 %   \change Additional experimental libraries:
 %     \begin{description}
-%       \item[\lib{interval}]     Library to change color of "ZL", "ZH" etc. transitions to 
+%       \item[\lib{interval}]     Library to change color of "ZL", "ZH" etc. transitions to
 %                             indicate borders of an interval.
 %       \item[\lib{beamer}]       Library providing some marginal beamer overlay support.
 %     \end{description}
@@ -548,8 +509,8 @@
 %     \end{itemize}
 %   \change Meta-characters can now have arguments.
 %   \change Added more variety for in-line options: "[[ ]]", "[+ +]" and "[| |]".
-%   \change Handling of in-line options and nodes got modified. Options are now placed directly 
-%     where placed and are valid until the next ";". Please note that |[/utils/exec={..}]| now 
+%   \change Handling of in-line options and nodes got modified. Options are now placed directly
+%     where placed and are valid until the next ";". Please note that |[/utils/exec={..}]| now
 %     needs to be written as \verb+[|/utils/exec={..}|]+. Otherwise it is re-executed every time
 %     the drawing path is renewed.
 %   \change Added star version of \cs{tablegrid}.
@@ -562,7 +523,7 @@
 %   \change The \cs{timing} macro is now only defined inside |tikzpictures|.
 %           This includes |tikztimingtable|.
 %   \change Added TikZ style |timing/draw grid| for grids behind \cs{timing} macros.
-%   \change Replaced macros \cs{texttimingbefore}, \cs{texttimingafter} and \cs{texttiminggrid} with 
+%   \change Replaced macros \cs{texttimingbefore}, \cs{texttimingafter} and \cs{texttiminggrid} with
 %           TikZ settings "timing/before text", "timing/after text" and "timing/draw grid".
 %   \change Added separators "timing/outer sep" around \cs{texttiming}.
 %   \change Graphical improvements for `double line' characters like "D", "U" and "E".
@@ -573,9 +534,9 @@
 %   \change The \env{tikztimingtable} environment and associated macros got enhanced:
 %     \begin{itemize}
 %       \item The content is no longer read as macro argument and can now include paragraphs.
-%       \item Multiple |extracode| sections can be now included between rows, not only a single 
+%       \item Multiple |extracode| sections can be now included between rows, not only a single
 %             section at the very end.
-%       \item A \env{extracode} environment has been added. Both macro and environment have now 
+%       \item A \env{extracode} environment has been added. Both macro and environment have now
 %             an optional argument for TikZ settings.
 %       \item Added \cs{tableheader} macro to label both columns. The \cs{tablerules} macro got
 %             adjusted to detect the header line and draw also a middle line.
@@ -586,6 +547,7 @@
 %     \end{itemize}
 % \end{Changes}
 % \changes{v0.7d}{2011/01/09}{Fix for end macro of extracode environment to support etoolbox's environment hooks.}
+% \changes{v0.7e}{2017/12/10}{Documentation update: added usage as float with caption due to user request.}
 %
 %
 % \endgroup
@@ -715,58 +677,58 @@
 % \hbox{\emph{E.g.:} `\hbox{\texttt{\@tempa}}' $\to$ \texttiming{#1}}}
 %   \begin{supertabular}{>{\ttfamily}l>{\raggedright\arraybackslash}p{.85\textwidth}}
 % D\{\}D & Produces transition between two data values. \Example{D{}D} \\
-% D\{\meta{Text}\} & Adds \meta{text} into a data signal using a node.  
+% D\{\meta{Text}\} & Adds \meta{text} into a data signal using a node.
 % \Example{D{A}D{B}} \\
-% D\{[\meta{\scriptsize 
-% \raisebox{-1ex}{\shortstack{TikZ\\Settings}}}]\meta{Text}\} & Adds \meta{text} 
+% D\{[\meta{\scriptsize
+% \raisebox{-1ex}{\shortstack{TikZ\\Settings}}}]\meta{Text}\} & Adds \meta{text}
 % using the given node \meta{settings}. \Example{D{[blue]A}} \\
-% \meta{\small number}\meta{\small character} & Sets width of next signal to 
+% \meta{\small number}\meta{\small character} & Sets width of next signal to
 % given number.  Half of it if character is in lower case.
 % \Example{2.6H5.2l}\\
-% \meta{\small integer}\{\meta{\small characters}\} &  Repeats the given 
+% \meta{\small integer}\{\meta{\small characters}\} &  Repeats the given
 % characters \texttt{\meta{int}} times.  \Example{5{hl}}\\
 % \{ \meta{\small characters} \} &  Encloses characters in a local scope. Options inside are only
 % local to the scope. This also applies to the effect of `\texttt{;}' and similar modifiers.
 % \Example{H {[blue] LH} L}\\
 % \midrule
-% \meta{\small number}B & Su\underline{b}tracts the given number from the width 
+% \meta{\small number}B & Su\underline{b}tracts the given number from the width
 % of the next character. ``\textit{\texttt{B}ackwards}''
 % \Example{H.5BL}\\
-% \meta{\small number}F & Adds the given number to the width of the next 
+% \meta{\small number}F & Adds the given number to the width of the next
 % character.  ``\textit{\texttt{F}orwards}'' \Example{H.5FL}\\
-% N\oarg{\tiny Settings}\parg{\tiny Name}\marg{\tiny Content} & Adds node at 
+% N\oarg{\tiny Settings}\parg{\tiny Name}\marg{\tiny Content} & Adds node at
 % current position.  All three arguments are optional.  \Example{H N(a1) L}\\
 %   \midrule
-% {}[\meta{TikZ Keys}]  & Executes given TikZ settings during the drawing 
-% process. This settings will be re-executed when the internal drawing path is renewed which 
+% {}[\meta{TikZ Keys}]  & Executes given TikZ settings during the drawing
+% process. This settings will be re-executed when the internal drawing path is renewed which
 % can cause side-effects. \Example{H[blue]LH} \\
-% {}[|\meta{TikZ Keys}|]  & Executes given TikZ settings during the drawing 
+% {}[|\meta{TikZ Keys}|]  & Executes given TikZ settings during the drawing
 % process like \texttt{[ ]} but does not re-executes them.
 % {\Example{D{.} [|/utils/exec={\def\m{...}}|] D{.} D{.}}} \\
-% {}[!\meta{TikZ Keys}!]  & Executes given TikZ settings during the 
-% \emph{parsing} process. Because this makes only sense for internal settings 
-% the default path is `\texttt{/tikz/timing}', not `\texttt{/tikz}' like in all  
+% {}[!\meta{TikZ Keys}!]  & Executes given TikZ settings during the
+% \emph{parsing} process. Because this makes only sense for internal settings
+% the default path is `\texttt{/tikz/timing}', not `\texttt{/tikz}' like in all
 % other settings macros. \Example{H[!wscale=2.5!]LH} \\
-% {}[[\meta{TikZ Keys}]]  & Executes given TikZ settings first during the 
-% parsing process and again during the drawing process. This is for settings 
-% which are needed for width calculations and again for the drawing code, \eg 
+% {}[[\meta{TikZ Keys}]]  & Executes given TikZ settings first during the
+% parsing process and again during the drawing process. This is for settings
+% which are needed for width calculations and again for the drawing code, \eg
 % the slope values. \Example{H[[timing/slope=.5]]L $\slope$H} \\
 %   \midrule
 % !\{\meta{code}\}  & Places given code into the internal \envv{tikzpicture}.
 % See Example~\ref{exa:adv}. \\
-% @\{\meta{code}\}  & Executes the given code immediately during the parsing 
-% process. This can be used to change parsing parameters. To execute code during 
-% the drawing process use \verb+[|/utils/exec=+\meta{code}\verb+|]+ instead. 
+% @\{\meta{code}\}  & Executes the given code immediately during the parsing
+% process. This can be used to change parsing parameters. To execute code during
+% the drawing process use \verb+[|/utils/exec=+\meta{code}\verb+|]+ instead.
 % \Example{L @{\setwscale{2}} H} \\
-% \texttt{\$}\meta{math expression}\texttt{\$} & Takes a valid \texttt{pgfmath} 
-% expression (See \pkg{pgf} manual), evaluates it and places the result back in 
-% the input string so it can be used as width for the next character. The macros  
-% \cs{slope}=\cs{lslope}, \cs{dslope}, \cs{zslope} and \cs{wscale} can be used 
+% \texttt{\$}\meta{math expression}\texttt{\$} & Takes a valid \texttt{pgfmath}
+% expression (See \pkg{pgf} manual), evaluates it and places the result back in
+% the input string so it can be used as width for the next character. The macros
+% \cs{slope}=\cs{lslope}, \cs{dslope}, \cs{zslope} and \cs{wscale} can be used
 % to access the corresponding values.  \Example{D{} $ \dslope $ D{} D} \\
 %   \midrule
-% ;  & Renews the internal drawing path which ends the scope of all options 
+% ;  & Renews the internal drawing path which ends the scope of all options
 % given by \texttt{[\,]}. \Example{H;[blue]L;H} \\
-% ,  & Same as `\texttt{;}', but timing specific options (atm.: slopes and line 
+% ,  & Same as `\texttt{;}', but timing specific options (atm.: slopes and line
 % width) are restored for the new path. \Example{[line width=1pt]L,H;L} \\
 % \end{supertabular}
 % \endgroup
@@ -776,18 +738,18 @@
 % \section{Macro for use in Text Mode}
 % \vspace{-\bigskipamount}%
 % \DescribeMacro\texttiming[<initial~character/TikZ Settings>]{<characters>}
-% This macro places a single timing diagram line into the current text. The 
-% signals have the same height as a uppercase letter (like `X') of the current 
+% This macro places a single timing diagram line into the current text. The
+% signals have the same height as a uppercase letter (like `X') of the current
 % font, \ie they scale with the font size.
-% The macro argument must contain only valid logic characters and modifiers 
+% The macro argument must contain only valid logic characters and modifiers
 % which define the logical levels of the diagram line.
 %
-% An initial character can be given as an optional argument. No logic level will 
-% be drawn for this character. Instead it will be used to define the initial 
-% position of the signal so that the diagram line will start with a transition 
-% from the initial to the first character. However, if the optional argument 
-% holds more than a single character it is taken as TikZ settings for the 
-% diagram. The initial character can then be given using the key 
+% An initial character can be given as an optional argument. No logic level will
+% be drawn for this character. Instead it will be used to define the initial
+% position of the signal so that the diagram line will start with a transition
+% from the initial to the first character. However, if the optional argument
+% holds more than a single character it is taken as TikZ settings for the
+% diagram. The initial character can then be given using the key
 % `|timing/initchar=|\meta{char}'.
 %
 % \par\medskip\noindent
@@ -795,10 +757,10 @@
 % \textit{Examples:}\\*[\smallskipamount]\hspace*{\parindent}%
 % \begin{minipage}{\textwidth-4\parindent}
 % \small |\texttiming{HLZDZLH}|^^A
-% \phantom{\texttt{[L]}} gives `\texttiming{HLZDZLH}', with grid: 
+% \phantom{\texttt{[L]}} gives `\texttiming{HLZDZLH}', with grid:
 % `{\let\texttimingbefore\texttiminggrid\texttiming{HLZDZLH}}'.\\
 % |\texttiming[L]{HLZDZLH}| ^^A
-% gives `\texttiming[L]{HLZDZLH}', with grid: 
+% gives `\texttiming[L]{HLZDZLH}', with grid:
 % `{\let\texttimingbefore\texttiminggrid\texttiming[L]{HLZDZLH}}'.\\
 % |\texttiming[green]{HLZDZLH}| ^^A
 % gives `\texttiming[green]{HLZDZLH}'\\
@@ -809,25 +771,25 @@
 %
 % \DescribeMacro\texttimingbefore!{\hspace{2em}\textbf{Deprecated!}\hspace{8em}(\emph{defaults to}: \meta{empty})}!
 % \DescribeMacro\texttimingafter!{\hspace{2.5em}\textbf{Deprecated!}\hspace{8em}(\emph{defaults to}: \meta{empty})}!
-% This two macros are executed before and after every timing diagram line 
-% created by \cs{texttiming} macro inside the same \envv{tikzpicture} 
-% environment and can be used to add drawing macros. The argument of the 
-% \cs{texttiming} macro is already processed before any of these macros are 
+% This two macros are executed before and after every timing diagram line
+% created by \cs{texttiming} macro inside the same \envv{tikzpicture}
+% environment and can be used to add drawing macros. The argument of the
+% \cs{texttiming} macro is already processed before any of these macros are
 % expanded, therefore this macros can access the width of the diagram.
 %
-% These macros should not be used directly in newer code but instead the new 
-% TikZ styles "timing/before text" and "timing/after text". For backward 
+% These macros should not be used directly in newer code but instead the new
+% TikZ styles "timing/before text" and "timing/after text". For backward
 % compatibility these styles default to the two macros.
 %
 % {\small
-% (Deprecated) Example: |\let\texttimingbefore\texttiminggrid| adds a grid into the 
+% (Deprecated) Example: |\let\texttimingbefore\texttiminggrid| adds a grid into the
 % background of the \cs{texttiming} diagram.}
 %
 % \DescribeMacro\texttiminggrid!\hspace{2.5em}\textbf{Deprecated!}!
-% This macro should only be used inside \cs{texttimingbefore} or 
+% This macro should only be used inside \cs{texttimingbefore} or
 % \cs{texttimingafter} and draws a grid of the full size of the
 % \cs{texttiming} diagram.
-% For newer code the TikZ styles "timing/draw grid" and "timing/no grid" 
+% For newer code the TikZ styles "timing/draw grid" and "timing/no grid"
 % should be used instead, \eg
 % |\tikzset{timing/intext/.append style={timing/draw grid}}| or simply enable the grid globally
 % for all in-text and other timing diagrams with |\tikzset{timing/draw grid}|.
@@ -837,47 +799,47 @@
 % \section{Macro for use inside TikZ-Pictures}
 %
 % \DescribeMacro\timing[<TikZ Keys>]~'at'~(<TikZ Coordinate>)~{[<initial character>]<characters>}';'
-% This macro does the same as \cs{texttiming} but is designed to be used inside 
-% a \envv{tikzpicture} environment and only there. Like normal TikZ macros 
-% (\css{path}, \css{drawn}, \css{node}) it allows an optional argument with TikZ 
-% settings and an optional TikZ-coordinate.  However, a own argument parser, not 
-% the one used by TikZ, is used to detect and read these optional arguments.  
-% Therefore the order of the arguments is mandatory and must not be reversed.  
+% This macro does the same as \cs{texttiming} but is designed to be used inside
+% a \envv{tikzpicture} environment and only there. Like normal TikZ macros
+% (\css{path}, \css{drawn}, \css{node}) it allows an optional argument with TikZ
+% settings and an optional TikZ-coordinate.  However, a own argument parser, not
+% the one used by TikZ, is used to detect and read these optional arguments.
+% Therefore the order of the arguments is mandatory and must not be reversed.
 % This small limitation might be overcome in future versions of this package.
 %
-% Please note that the optional initial character may be given \emph{inside} and 
-% at the very start of the mandatory argument, not before it. This is necessary 
+% Please note that the optional initial character may be given \emph{inside} and
+% at the very start of the mandatory argument, not before it. This is necessary
 % because of several technical reasons.
 %
-% Example: |\tikz \timing [green] at (1,2) {HLZDZLH};|\phantom{\texttt{[L]}} 
+% Example: |\tikz \timing [green] at (1,2) {HLZDZLH};|\phantom{\texttt{[L]}}
 % gives `\tikz \timing [green] at (1,2) {HLZDZLH};'.
-% 
-% Example: |\tikz \timing [green] at (1,2) {[L]HLZDZLH};| gives `\tikz \timing 
+%
+% Example: |\tikz \timing [green] at (1,2) {[L]HLZDZLH};| gives `\tikz \timing
 % [green] at (1,2) {[L]HLZDZLH};'.
 %
 % \ifprintversion\else
 %   \clearpage
 % \fi
 % \subsection*{Timing Shape Anchors}\label{sec:timingshape}
-% Every timing diagram line produced by \cs{timing}, which includes the rows in 
-% \env{tikztimingtable}, is also a PGF shape (node) with several anchors. These 
+% Every timing diagram line produced by \cs{timing}, which includes the rows in
+% \env{tikztimingtable}, is also a PGF shape (node) with several anchors. These
 % are shown in Figure~\ref{fig:shape}.
-% The shape is very similar to the standard |rectangle| shape but does not 
-% provide a |text| anchor. In addition to the standard points of the compass 
-% anchors of TikZ the three logic levels |low|, |mid| and |high| can be used in 
-% combination with |start|, |mid| and |end|.  An extra |origin| anchor is 
-% located at the lower left, also called |south west| corner where the diagram 
-% originates.  The two anchors called |start| and |end| are provided to mark the 
-% start and end of the timing signal.  There are either located at the low, 
-% middle or high logic level dependent on the used first (or initial) and last 
+% The shape is very similar to the standard |rectangle| shape but does not
+% provide a |text| anchor. In addition to the standard points of the compass
+% anchors of TikZ the three logic levels |low|, |mid| and |high| can be used in
+% combination with |start|, |mid| and |end|.  An extra |origin| anchor is
+% located at the lower left, also called |south west| corner where the diagram
+% originates.  The two anchors called |start| and |end| are provided to mark the
+% start and end of the timing signal.  There are either located at the low,
+% middle or high logic level dependent on the used first (or initial) and last
 % timing character.
-% 
-% In order to use the timing node it has to be named which can be done using the 
-% `\texttt{name=\meta{name}}' option inside the optional argument. The rows of a 
-% \env{tikztimingtable} are automatically named as `|row|\meta{row number}' 
+%
+% In order to use the timing node it has to be named which can be done using the
+% `\texttt{name=\meta{name}}' option inside the optional argument. The rows of a
+% \env{tikztimingtable} are automatically named as `|row|\meta{row number}'
 % where the first row has the number 1.
 %
-% ^^AFurther details how to use a shape inside a TikZ or PGF picture can be 
+% ^^AFurther details how to use a shape inside a TikZ or PGF picture can be
 % ^^Afound in the PGF manual Section~15 and~59, respectively.
 %
 % \begin{figure}
@@ -900,8 +862,8 @@
 %     node[\placement] {\tiny\texttt{(s.\anchor)}};
 % \end{tikzpicture}%^^A
 % }
-% \caption[Timing Shape Anchors]{Timing Shape Anchors. The \texttt{start} and 
-% \texttt{end} anchors mark the start and end of the timing 
+% \caption[Timing Shape Anchors]{Timing Shape Anchors. The \texttt{start} and
+% \texttt{end} anchors mark the start and end of the timing
 % signal.}\label{fig:shape}
 % \end{figure}
 %
@@ -914,41 +876,41 @@
 %   \hspace*{-1em}\Macro\extracode~~'% Optional' \\
 %   <additional code>
 % \end{DescribeEnv}
-% This environment can be used to typeset multi-line timing diagrams.  The 
-% syntax is like the one for a \envv{tabular} environment with two columns.  The 
-% first column is for the signal name and the second one are the logic 
-% characters which would be placed inside the argument of a \cs{texttiming} or 
+% This environment can be used to typeset multi-line timing diagrams.  The
+% syntax is like the one for a \envv{tabular} environment with two columns.  The
+% first column is for the signal name and the second one are the logic
+% characters which would be placed inside the argument of a \cs{texttiming} or
 % \cs{timing} macro.
-% If the second column starts with an optional argument it is either taken as 
-% initial character if it holds only a single character or as row wide settings 
+% If the second column starts with an optional argument it is either taken as
+% initial character if it holds only a single character or as row wide settings
 % otherwise.
-% The whole table will be drawn inside a \envv{tikzpicture} environment using 
-% multiple \cs{timing} and \cs{node} macros for the timing signals and their 
-% names, respectively.  Additional \pkg{tikz} drawing code can be insert at the 
+% The whole table will be drawn inside a \envv{tikzpicture} environment using
+% multiple \cs{timing} and \cs{node} macros for the timing signals and their
+% names, respectively.  Additional \pkg{tikz} drawing code can be insert at the
 % end of the table using \cs{extracode}.
 %
 % \DescribeMacro\extracode[TikZ Keys]
 % This macro is only defined inside a \env{tikztimingtable} environment. In earlier
 % versions of this package it could only be used after the last table line (\ie after a |\\|).
-% If used there all code between it and the |\end{tikztimingtable}| will be placed inside the same 
-% \envv{tikzpicture}. This allows to add some drawing lines or a grid to the 
+% If used there all code between it and the |\end{tikztimingtable}| will be placed inside the same
+% \envv{tikzpicture}. This allows to add some drawing lines or a grid to the
 % picture. The macro does \emph{not} start a TikZ |scope| or a \TeX\ group by itself.
 % The optional \meta{settings} therefore affect all following code until the end of the picture.
 %
-% It is also possible to draw something behind the timing diagram by 
+% It is also possible to draw something behind the timing diagram by
 % using using the \env{background} environment or the PGF background layer:\\[\smallskipamount]
 % |\begin{pgfonlayer}{background}|\ldots|\end{pgfonlayer}|
 %
 % \DescribeMacro\endextracode
 % From\NewIn{v0.7} version 0.7 on it is possible to add further timing rows after an |extracode| section by using
 % \cs{endextracode}. Everything after this macro is taken as part of a new row. It is allowed to use
-% this macro direct before \cs{end}\env{tikztimingtable}. This makes it possible to use \cs{extracode} 
+% this macro direct before \cs{end}\env{tikztimingtable}. This makes it possible to use \cs{extracode}
 % anywhere inside the table, including at the very start before any rows are processed. Early
 % insertion of extra code is necessary for \eg limiting the bounding box or setting up a clipping path.
 %
 % \DescribeEnv[<extra drawing code>]{extracode}[<TikZ settings>]
-% Instead\NewIn{v0.7} of using \cs{extracode} \dots \cs{endextracode}, which is actual plain\TeX\ syntax, this 
-% \LaTeX\ style environment can be used. Like any environment it creates a \TeX\ group around its 
+% Instead\NewIn{v0.7} of using \cs{extracode} \dots \cs{endextracode}, which is actual plain\TeX\ syntax, this
+% \LaTeX\ style environment can be used. Like any environment it creates a \TeX\ group around its
 % content, but no TikZ |scope| is created to allow drawing code (\eg clipping paths) to affect the
 % rest of the table. The optional \meta{settings}, however, only affect the environment content.
 %
@@ -956,69 +918,69 @@
 % a \Macro\begin{extracode} must always be closed by \Macro\end{extracode}.
 %
 % \subsection*{Macros for \cs{extracode} Section}
-% The following macros are only defined inside a \env{tikztimingtable} after the 
+% The following macros are only defined inside a \env{tikztimingtable} after the
 % macro \cs{extracode}. They are useful for drawing additional material.
 %
 % \DescribeMacro\tablegrid*[<TikZ Keys>]
 % After \css{extracode} this macro draws a grid in the background of the table.
-% A separate grid is drawn for each row. The normal version draws all grids with 
-% the width of the widest row while the star version draws them with the width 
+% A separate grid is drawn for each row. The normal version draws all grids with
+% the width of the widest row while the star version draws them with the width
 % of the corresponding row. Because this macro draws material into the |background|
 % layer it must not be placed inside a |pgfonlayer| environment itself.
 %
 % \DescribeMacro\fulltablegrid[<TikZ Keys>]
-% After \css{extracode} this macro draws a big grid over all rows in the 
+% After \css{extracode} this macro draws a big grid over all rows in the
 % background of the table.
 %
 % \DescribeMacro\nrows
-% Returns the number of rows in the current table. Useful for use in 
+% Returns the number of rows in the current table. Useful for use in
 % \cs{horlines}.
 %
 % \DescribeMacro\rowdist
 % \DescribeMacro\coldist
-% This macros return the row and column distance.  There are useful for drawing 
-% additional material relative to the rows and columns.  This values can be set 
-% (\eg in the optional argument of the table) using the \texttt{timing/rowdist} 
-% and \texttt{timing/coldist} settings which are explained in 
+% This macros return the row and column distance.  There are useful for drawing
+% additional material relative to the rows and columns.  This values can be set
+% (\eg in the optional argument of the table) using the \texttt{timing/rowdist}
+% and \texttt{timing/coldist} settings which are explained in
 % Section~\ref{sec:styles}.
 %
 % \DescribeMacro\twidth
-% Returns the width (as multiple of the `period width') of the longest timing 
+% Returns the width (as multiple of the `period width') of the longest timing
 % diagram line in the table. Example: If the longest line would be
 % "H 2.3L z" than \cs{twidth} would be $1+2.3+0.5=3.8$.
 %
 % \DescribeMacro\horlines[<TikZ Keys>]{<list>}
-% Draws horizontal lines, optionally with the given \meta{Settings}, at the base 
-% line of the rows given by \meta{list}. The PGF macro 
-% \css{foreach}\footnote{See the \texttt{pgf} manual for more details.} is 
-% internally used so the list can include not only row numbers as integer but 
-% also fractional numbers and the "..." operator to auto-increment the 
-% numbers. Please note that all numbers in the list are multiplied by 
+% Draws horizontal lines, optionally with the given \meta{Settings}, at the base
+% line of the rows given by \meta{list}. The PGF macro
+% \css{foreach}\footnote{See the \texttt{pgf} manual for more details.} is
+% internally used so the list can include not only row numbers as integer but
+% also fractional numbers and the "..." operator to auto-increment the
+% numbers. Please note that all numbers in the list are multiplied by
 % \cs{rowdist}.
-% If the list is empty the default "1,2,...,\nrows" is used which draws lines 
+% If the list is empty the default "1,2,...,\nrows" is used which draws lines
 % for all rows.
 %
 % \DescribeMacro\vertlines[<TikZ Keys>]{<list>}
-% Like \cs{horlines} but draws vertical lines and the listed numbers a relative 
+% Like \cs{horlines} but draws vertical lines and the listed numbers a relative
 % to the basic width.
-% If the list is empty the default "0,1,...,\twidth" is used which draws lines 
+% If the list is empty the default "0,1,...,\twidth" is used which draws lines
 % after every period width.
 %
 % \DescribeMacro\tableheader[<TikZ Keys>]{<Description Title>}{<Signal Title>}
-% This macro adds a table head row on top of the table. The two mandatory 
+% This macro adds a table head row on top of the table. The two mandatory
 % arguments provide the header text for the description and signal columns.
 %
 % \DescribeMacro\tablerules[<TikZ Keys>]
-% This macro adds top and bottom rules to the table in the same (or at least 
-% very similar) way as the \texttt{booktabs} package is doing it for normal 
-% \texttt{tabular}s. The current bounding box is used to calculate the needed 
+% This macro adds top and bottom rules to the table in the same (or at least
+% very similar) way as the \texttt{booktabs} package is doing it for normal
+% \texttt{tabular}s. The current bounding box is used to calculate the needed
 % rule length, which makes this macro position dependent if further code
-% changes the bounding box. If the \cs{tableheader} macro was used beforehand it 
-% also draws a thinner horizontal line (like \texttt{booktabs} \cs{midrule}) 
+% changes the bounding box. If the \cs{tableheader} macro was used beforehand it
+% also draws a thinner horizontal line (like \texttt{booktabs} \cs{midrule})
 % between the table head and body.
 %
 % \DescribeEnv[<drawing commands>]{background}[<TikZ Keys>]
-% This environment can be used to draw material on the |background| layer and is 
+% This environment can be used to draw material on the |background| layer and is
 % an abbreviation for:\\[\medskipamount]
 % |    \begin{pgfonlayer}{background}|\\
 % |      \begin{scope}|\oarg{TikZ Keys}\\
@@ -1030,7 +992,7 @@
 % The standard "scale" setting of TikZ will not scale all parts of the table correctly,
 % \eg the line width and nodes will keep their original size. However there are scaled
 % relative to the font size. Alternatively the table can be scaled using the
-% \cs{scalebox}\marg{factor}\marg{content} macro from the \pkg{graphicx} package or 
+% \cs{scalebox}\marg{factor}\marg{content} macro from the \pkg{graphicx} package or
 % be placed inside a scaled \cs{node} inside another \env{tikzpicture} environment.
 %
 % \subsection*{Positions \& Nodes inside the Table}
@@ -1038,23 +1000,23 @@
 % \subsubsection*{Coordinates}
 % The first row starts at $y=0$ and the next rows are each
 % |-1*\rowdist| lower than the previous one.
-% The vertical unit is 1 \textsf{signal height} and the default row distance is 
-% `2' (=$2\times$\textsf{signal height}).  This means that a normal table with 
-% three rows goes from $y=+1$ (base line at 0 + 1 \textsf{signal height}) to 
-% $y=-4$ (first row:~+0, second row:~-2, third row:~-4).  This are relative to 
-% the middle of the drawn lines, \ie the bounding box is 
-% $2\times\frac{\text{\textsf{line width}}}{2}=1\times $\textsf{line width} 
+% The vertical unit is 1 \textsf{signal height} and the default row distance is
+% `2' (=$2\times$\textsf{signal height}).  This means that a normal table with
+% three rows goes from $y=+1$ (base line at 0 + 1 \textsf{signal height}) to
+% $y=-4$ (first row:~+0, second row:~-2, third row:~-4).  This are relative to
+% the middle of the drawn lines, \ie the bounding box is
+% $2\times\frac{\text{\textsf{line width}}}{2}=1\times $\textsf{line width}
 % higher.
 %
-% The timing column starts at $x=0$ and goes into the positive range while 
+% The timing column starts at $x=0$ and goes into the positive range while
 % scaled using the period width. Example: |HHHh| has a width of 3.5.
-% The label column starts at $x=-$|\coldist| and the text is right align with 
+% The label column starts at $x=-$|\coldist| and the text is right align with
 % the right border at this position.
 % See Figure~\ref{fig:distnodestable} for an illustration.
 %
 % \subsubsection*{Nodes}
-% Each timing line is a timing node (see section~\ref{sec:timingshape}) 
-% labeled (not fully correctly) as `|row|\meta{number}', where the first row has the number 1 and the last 
+% Each timing line is a timing node (see section~\ref{sec:timingshape})
+% labeled (not fully correctly) as `|row|\meta{number}', where the first row has the number 1 and the last
 % one the number provided in \cs{nrows}, but can also accessed using the alias "last row".
 % The corresponding labels are normal rectangle nodes named "label0", "label1", \dots,
 % `|label|\cs{nrows}'/"last label".
@@ -1165,10 +1127,10 @@
 %
 % \clearpage
 % \section{Macros for use inside the Character String}
-% The modifiers "@" and `\texttt{\$}' allow the user to include macros.  These 
-% macros are evaluated when the |tikz-timing| parser encounters them in the 
-% input character string, \ie before any diagram element is drawn or any single 
-% bracket "[ ]" options are processed. Therefore their values should be set 
+% The modifiers "@" and `\texttt{\$}' allow the user to include macros.  These
+% macros are evaluated when the |tikz-timing| parser encounters them in the
+% input character string, \ie before any diagram element is drawn or any single
+% bracket "[ ]" options are processed. Therefore their values should be set
 % either outside the |tikz-timing| diagram or with the "[! .. !]" or
 % "[[ .. ]]" option blocks.
 %
@@ -1176,15 +1138,15 @@
 %
 % \DescribeMacro\tikztimingsetwscale{<math expression>}
 % \DescribeMacro\setwscale{<math expression>}
-% This macro\NewIn{v0.7}, which can be called |\setwscale| for short inside modifier code, 
-% sets the |wscale| value. This value is used during the parsing process to 
-% scale the width of the characters, \eg |wscale=3.2| makes |1H| as long as 
-% |3.2H| normally would be. Slopes are not affected, but the `width' values of 
-% meta-characters are. It can also be set with the |timing/wscale| TikZ setting.  
+% This macro\NewIn{v0.7}, which can be called |\setwscale| for short inside modifier code,
+% sets the |wscale| value. This value is used during the parsing process to
+% scale the width of the characters, \eg |wscale=3.2| makes |1H| as long as
+% |3.2H| normally would be. Slopes are not affected, but the `width' values of
+% meta-characters are. It can also be set with the |timing/wscale| TikZ setting.
 % The current value can be accessed using \cs{wscale}.
 %
 % \DescribeMacro\wscale
-% Returns the current width scaling "wscale" value. 
+% Returns the current width scaling "wscale" value.
 %
 % \DescribeMacro\xunit
 % \DescribeMacro\yunit
@@ -1193,21 +1155,21 @@
 %
 % \DescribeMacro\slope
 % \DescribeMacro\lslope!\hspace{.6em}\small(alias)!
-% Returns the current logic slope, \ie the slope between |L| and |H| 
+% Returns the current logic slope, \ie the slope between |L| and |H|
 % levels.
-% Set by the |timing/lslope| or indirectly by the |timing/slope| TikZ setting.  
+% Set by the |timing/lslope| or indirectly by the |timing/slope| TikZ setting.
 % See Table~\ref{tab:styles} for more information.
 %
 % \DescribeMacro\zslope
-% Returns the current Z slope. Set by the |timing/zslope| or indirectly by the 
+% Returns the current Z slope. Set by the |timing/zslope| or indirectly by the
 % |timing/slope| TikZ setting.
 %
 % \DescribeMacro\dslope
-% Returns the current Z slope. Set by the |timing/dslope| or indirectly by the 
+% Returns the current Z slope. Set by the |timing/dslope| or indirectly by the
 % |timing/slope| TikZ setting.
 %
 % \subsection*{Examples:}
-% Changing the slope and using its value to calculate the width of a 
+% Changing the slope and using its value to calculate the width of a
 % character:\\
 % |\texttiming{ HLHLHL [[timing/slope=.5]] H $\slope$L }|\\
 % gives:
@@ -1221,56 +1183,62 @@
 %
 % \clearpage
 % \section{Meta-Characters}
-% It is possible to define recurring groups of characters and modifiers as so 
-% called meta-characters. These characters are than expanded to the group 
-% whenever they appear inside the character list. Please note that like for 
-% groups a numeric factor before such a meta-character is taken as a repetition 
-% factor not as a width. The meta-character is case sensitive and the other case 
-% is not affected by the definition, \ie the lower- and uppercase versions of 
-% one character can have complete different meanings. It is possible to redefine 
-% normal characters (only one or both cases) as meta-characters, which 
-% suppresses its normal meaning. Using the meta-character in its own definition 
+% It is possible to define recurring groups of characters and modifiers as so
+% called \emph{meta-characters}. These characters are than expanded to the group
+% whenever they appear inside the character list. Please note that like for
+% groups a numeric factor before such a meta-character is taken as a repetition
+% factor not as a width. The meta-character is case sensitive and the other case
+% is not affected by the definition, \ie the lower- and uppercase versions of
+% one character can have complete different meanings. It is possible to redefine
+% normal characters (only one or both cases) as meta-characters, which
+% suppresses its normal meaning. Using the meta-character in its own definition
 % group causes a infinite loop which will lead to an \TeX\ error.
-% 
+%
 % \DescribeMacro\tikztimingmetachar{<Meta-Character>}[<Number of arguments>]{<Character Group>}
-% This macro defines the given \meta{meta-character} to be identical to the 
-% given \meta{character group}. Alternatively this can also be done using the 
-% TikZ style `|timing/metachar=|\marg{Meta-Character}\oarg{Number of 
-% arguments}\marg{Character~Group}'. 
+% This macro defines the given \meta{meta-character} to be identical to the
+% given \meta{character group}. Alternatively this can also be done using the
+% TikZ style `|timing/metachar=|\marg{Meta-Character}\oarg{Number of
+% arguments}\marg{Character~Group}'.
 %
-% An empty group deletes the meta-character, which  might be necessary in cases 
-% when normal characters are temporary redefined as meta-characters. However, if 
+% An empty group deletes the meta-character, which  might be necessary in cases
+% when normal characters are temporary redefined as meta-characters. However, if
 % the group only contains spaces the meta-character is practically ignored.
 %
+% Because the meta-character is simply expanded to its character list, the first
+% character of this list might be combined with identical characters placed before the meta-character.
+% For example, after a meta-character "Y" got defined as "2D{A} 2D{B}" the characters "DY" will first be expanded to
+% "D2D{A} 2D{B}" and then combined to "3D{A} 2D{B}". This might not be the wanted behaviour and can be avoided by terminating the leading "D" with
+% its own braces: "D{}Y".
+%
 % \subsection*{Meta-Characters with Arguments}
 % The\NewIn{v0.7}
 % replacement text of meta-character can now include macro arguments.
-% This allows the creation of more complex and flexible meta-characters.  The 
-% optional argument \meta{Number of arguments} selects the number of macro 
-% arguments in the same way it does for \cs{newcommand}. However, the first 
-% argument |#1| is always set to the given `width' of the meta-character, \ie 
-% the number value preceding it. All further arguments are read as normal for 
-% macros from the text after the meta-character. It is recommended to enclose 
+% This allows the creation of more complex and flexible meta-characters.  The
+% optional argument \meta{Number of arguments} selects the number of macro
+% arguments in the same way it does for \cs{newcommand}. However, the first
+% argument |#1| is always set to the given `width' of the meta-character, \ie
+% the number value preceding it. All further arguments are read as normal for
+% macros from the text after the meta-character. It is recommended to enclose
 % them in braces.
 %
-% The default behaviour of meta-character without arguments is, as mentioned 
-% above, to repeat the replacement group by the preceding number (`width'). This 
+% The default behaviour of meta-character without arguments is, as mentioned
+% above, to repeat the replacement group by the preceding number (`width'). This
 % is now archived by defining them internally as `|#1|\marg{Character Group}',
-% which creates a repetition group. Users which want to include an own argument 
-% but still want to repeat the group need to define a meta-character with at 
-% least two arguments and define it as "#1{ .. #2 .. }". If the repetition is 
-% not wanted the |#1| argument can be used as a real width for one or more group 
-% internal characters: "{Y}[1]{Z #1D Z}", so "4Y" will give "Z 4D Z" 
+% which creates a repetition group. Users which want to include an own argument
+% but still want to repeat the group need to define a meta-character with at
+% least two arguments and define it as "#1{ .. #2 .. }". If the repetition is
+% not wanted the |#1| argument can be used as a real width for one or more group
+% internal characters: "{Y}[1]{Z #1D Z}", so "4Y" will give "Z 4D Z"
 % instead of "4{Z D Z}".
-% 
-% Also the modifier "@" (see Table~\ref{tab:modifiers}) together with the 
-% \cs{setwscale} macro can be used to scale the whole group dependent on the 
+%
+% Also the modifier "@" (see Table~\ref{tab:modifiers}) together with the
+% \cs{setwscale} macro can be used to scale the whole group dependent on the
 % first argument:\\
 % "{Y}[1]{ @{\setwscale{#1*\wscale}} Z 2D Z @{\setwscale{\wscale/#1}} }", so
 % "4Y" is equivalent to "4Z 8D 4Z".
 %
-% The new `\texttt{\$}' modifier can be used to calculate the width of the group 
-% characters: |{Y}[1]{$#1/3$D{A} $#1/3D${B} $#1/3$D{C}}|, so "4Y" results in 
+% The new `\texttt{\$}' modifier can be used to calculate the width of the group
+% characters: |{Y}[1]{$#1/3$D{A} $#1/3$D{B} $#1/3$D{C}}|, so "4Y" results in
 % "1.333D{A} 1.333D{B} 1.333D{C}".
 %
 %
@@ -1331,8 +1299,8 @@
 % {\tikztimingmetachar{Y}[3]{ .2D .2B #1d{\strut #2} .2D .2B #1d{\strut #3} }%
 %  \texttiming{ Z 2Y{a}{b} Z 4Y{1}{2} Z}}
 % \\[\bigskipamount]
-% Mata-chars to set the width scaling. Because the scaling also affects the 
-% meta-char width (|#1|) argument a compensation is needed to achieve absolute 
+% Mata-chars to set the width scaling. Because the scaling also affects the
+% meta-char width (|#1|) argument a compensation is needed to achieve absolute
 % values (|W|) instead of relative ones (|w|).\\
 % |\tikztimingmetachar{w}[1]{ [! wscale=#1 !] }         % relative|\\
 % |\tikztimingmetachar{W}[1]{ [! wscale=#1/\wscale !] } % absolute|\\
@@ -1343,20 +1311,47 @@
 %  \texttiming{ HL .2w HLHLH 3w LH 1W LH }}
 %
 % \clearpage
+% \section{Floating timing diagrams with captions}
+% The timing diagrams can also be typeset as floats with (or without) a caption like a |figure|.
+% This can be easily achieved by using the \pkg{caption} package as shown in the following example document.
+%
+% \par\vspace{3\baselineskip}\par
+%
+% \begin{lstlisting}[gobble=4,language={[latex]tex},frame=single]
+%   \documentclass{article}
+%   \usepackage{tikz-timing}
+%   \usepackage{caption}
+%
+%   \DeclareCaptionType{timingdiag}[Timing diagram][List of Timing Diagrams]
+%
+%   \begin{document}
+%   \listoftimingdiags
+%
+%   \begin{timingdiag}[!ht]
+%     \centering
+%     (timing code)
+%     \caption{Some timing diagram caption}
+%     \label{tim:foobar}
+%   \end{timingdiag}
+%
+%   \end{document}
+% \end{lstlisting}
+%
+%
 % \chapter{TikZ Keys for Styles, Settings and Actions}\label{sec:styles}
 % TikZ itself uses the |pgfkeys| package to define and apply drawing styles and settings.
-% The same method is also used for |tikz-timing| which 
-% places all of the keys under the ``subdirectory'' "timing" in 
-% the main ``directory'' `tikz', which is the default when \css{tikzset} is 
+% The same method is also used for |tikz-timing| which
+% places all of the keys under the ``subdirectory'' "timing" in
+% the main ``directory'' `tikz', which is the default when \css{tikzset} is
 % used.
 % This keys are simply called \emph{TikZ Keys} throughout this manual and
 % can be used in all places where \meta{TikZ Keys} is mentioned, while some only make sense at specific
 % places.
-% Three types of keys 
+% Three types of keys
 % are used by this package: styles, settings and actions.
 %
 % Styles simply define the style in which a certain element is drawn, \eg in which color or line width.
-% This styles are defined and can be redefined using 
+% This styles are defined and can be redefined using
 % \css{tikzset}|{|\meta{style name}|/.style=|\meta{value}|}|. However, while some styles
 % are initial empty, some hold internal settings and therefore user styles should only be added
 % using `|.append style=|\meta{value}'.
@@ -1367,7 +1362,7 @@
 % Action are TikZ keys which perform a drawing or other action on the current element, either directly or
 % by en-/disable an internal setting which then in turn triggers the drawing process. Therefore some
 % actions can be globally and/or locally but others only make sense if used locally on a single |tikz-timing|
-% macro or environment or even a scope inside a \env{tikztimingtable}. 
+% macro or environment or even a scope inside a \env{tikztimingtable}.
 % Action can be very similar to settings but they always execute code instead of only setting/redefining it.
 %
 % \begingroup
@@ -1455,7 +1450,7 @@
 %     timing/\meta{lc char}/background           & \s & Background style for characters `\texttt{D}' and `\texttt{U}'. \\
 %     timing/\meta{lc char}/text                 & \s & Text style for character \meta{char}.  Only defined for `\texttt{D}'. \\
 %     \midrule
-%     timing/text format=\meta{macros}           & \s & Define macros which are placed before the text of `\texttt{D\{text\}}'. The text is enclosed in braces to 
+%     timing/text format=\meta{macros}           & \s & Define macros which are placed before the text of `\texttt{D\{text\}}'. The text is enclosed in braces to
 %                                                    allow the last macro to take it as an argument. A \cs{strut} is a good choice to ensure a common baseline.\\
 %     \bottomrule
 %   \end{tabularx}
@@ -1481,33 +1476,33 @@
 %
 % \clearpage
 % \chapter{Libraries for Further Characters}
-% All default timing characters described in Table~\ref{tab:chars} are always 
-% made available by this package. Further, less-common characters are provided 
-% by libraries which are loaded with the macro 
-% \cs{usetikztiminglibrary}\marg{library}.  This is done to hold the memory 
-% usage of this package small and reduce the risk of collisions with 
+% All default timing characters described in Table~\ref{tab:chars} are always
+% made available by this package. Further, less-common characters are provided
+% by libraries which are loaded with the macro
+% \cs{usetikztiminglibrary}\marg{library}.  This is done to hold the memory
+% usage of this package small and reduce the risk of collisions with
 % user-defined (meta-)characters.
 % The full syntax for the above macro is
-% \cs{usetikztiminglibrary}\oarg{options}\marg{library,\dots}\oarg{date}, like 
-% the one for \cs{usepackage}. 
-% The date is used as a version number like for packages and is identical to the date 
+% \cs{usetikztiminglibrary}\oarg{options}\marg{library,\dots}\oarg{date}, like
+% the one for \cs{usepackage}.
+% The date is used as a version number like for packages and is identical to the date
 % of the |tikztiming| package.
 %
 % \clearpage
 % \library{arrows}{Arrows}
-% The library "arrows" enables two characters "A" and "W" which draw 
-% vertical up and down \textit{A}rro\!\textit{W}s. Such arrows are used in 
-% timing diagrams to mark special polarized events, like clock edges of another 
+% The library "arrows" enables two characters "A" and "W" which draw
+% vertical up and down \textit{A}rro\!\textit{W}s. Such arrows are used in
+% timing diagrams to mark special polarized events, like clock edges of another
 % signal.
 %
-% The width provided with these character is added as whitespace after the 
-% ``zero-width'' arrow: "A2AA" results in `\texttiming{A2AA}'. This space 
-% can be avoided by specifying the width to zero: "0A". Like the "C" and 
+% The width provided with these character is added as whitespace after the
+% ``zero-width'' arrow: "A2AA" results in `\texttiming{A2AA}'. This space
+% can be avoided by specifying the width to zero: "0A". Like the "C" and
 % "T" characters the subsequent arrow characters are not combined into one.
 %
-% The arrow tips can be changed using the TikZ styles for this characters. See 
-% section~\ref{sec:styles} for more information. The "A" and "W" character should 
-% only be used which each each other, but not together with any other characters 
+% The arrow tips can be changed using the TikZ styles for this characters. See
+% section~\ref{sec:styles} for more information. The "A" and "W" character should
+% only be used which each each other, but not together with any other characters
 % except with "S" (space).
 %
 % \begin{table}[H]
@@ -1531,16 +1526,16 @@
 %
 % \clearpage
 % \library{either}{Either High or Low}
-% The library "either" enables the "E" character which stands for 
-% `\textit{either high or low}'. This character is designed to be used with the 
-% "H" and "L" characters to display a uncertainty of a transition.  
-% Sometimes a, e.g.\ low signal can go either to high or stay at low for a 
-% certain time before it definitely goes to high. In this case both (or more) 
+% The library "either" enables the "E" character which stands for
+% `\textit{either high or low}'. This character is designed to be used with the
+% "H" and "L" characters to display a uncertainty of a transition.
+% Sometimes a, e.g.\ low signal can go either to high or stay at low for a
+% certain time before it definitely goes to high. In this case both (or more)
 % possible transitions can be drawn using this character.
-% Like the "C" and "T" characters subsequent "E" characters are not 
+% Like the "C" and "T" characters subsequent "E" characters are not
 % combined into one.
 %
-% The drawing style can be changed using the |timing/e| and 
+% The drawing style can be changed using the |timing/e| and
 % |timing/e/background| TikZ style.
 %
 % \begin{table}[H]
@@ -1578,37 +1573,37 @@
 %
 % \clearpage
 % \library{overlays}{Overlays}
-% The library "overlays" enables the "O" character which allows the 
+% The library "overlays" enables the "O" character which allows the
 % overlaying of timing characters, i.e.~different groups of timing characters
 % are drawn on top of each other. This is not to be confused with `dynamic' overlay
 % provided by the presentation class |beamer|. The |tikz-timing| library \lib{beamer} provides
 % some support for such overlays.
 %
-% The "O" character awaits a set of character 
-% enclosed by braces which are drawn as normal. The position before the "O" 
-% character is then restored and the following characters are drawn over them.  
-% Older versions of this character awaited a second set of characters in braces 
+% The "O" character awaits a set of character
+% enclosed by braces which are drawn as normal. The position before the "O"
+% character is then restored and the following characters are drawn over them.
+% Older versions of this character awaited a second set of characters in braces
 % but this braces are now optional. The exact syntax is:\\[\smallskipamount]
-% \hspace*{2em} \meta{chars before} |O|\marg{background chars} \marg{foreground 
+% \hspace*{2em} \meta{chars before} |O|\marg{background chars} \marg{foreground
 % chars} \meta{chars after}\\[\smallskipamount]
 % or, without second set of braces, but equal:\\[\smallskipamount]
-% \hspace*{2em} \meta{chars before} |O|\marg{background chars} \meta{foreground 
+% \hspace*{2em} \meta{chars before} |O|\marg{background chars} \meta{foreground
 % chars, \dots}\\[\smallskipamount]
 %
-% It is the responsibility of the user to make sure that the lines drawn by the 
-% first set reconnect to the main lines or do something else useful.  The 
-% modifier ";" can be used to restart the drawn line, e.g.\ to change to a 
-% different color. This is not done automatically to give the user the freedom 
-% if and where this should happen. It is recommended to start and end the set 
+% It is the responsibility of the user to make sure that the lines drawn by the
+% first set reconnect to the main lines or do something else useful.  The
+% modifier ";" can be used to restart the drawn line, e.g.\ to change to a
+% different color. This is not done automatically to give the user the freedom
+% if and where this should happen. It is recommended to start and end the set
 % with characters identical with the main line to avoid ugly connection points.
 %
-% Please note that the width of the first argument is ignored and does not count to the 
+% Please note that the width of the first argument is ignored and does not count to the
 % total width of the diagram line. The characters following the overlay should therefore
 % be as wide or wider as the one of the overlay, otherwise the bounding box and background grid
-% will be incorrect. 
+% will be incorrect.
 %
-% Overlays can be cascaded\NewIn{v0.7}, \ie an overlay can be included in the first argument 
-% of another overlay. 
+% Overlays can be cascaded\NewIn{v0.7}, \ie an overlay can be included in the first argument
+% of another overlay.
 %
 % \begin{table}[H]
 % \centering
@@ -1654,15 +1649,15 @@
 %
 % \clearpage
 % \library{clockarrows}{Clock Arrows}
-% The library "clockarrows"\NewIn{v0.7} is changing the "C" clock character to contain 
-% arrows which mark the rising and/or falling clock edge. By default the rising 
-% edges are marked. To simplify the implementation only the transition from a 
-% "C" to another "C" character contains the arrows but not transitions from 
+% The library "clockarrows"\NewIn{v0.7} is changing the "C" clock character to contain
+% arrows which mark the rising and/or falling clock edge. By default the rising
+% edges are marked. To simplify the implementation only the transition from a
+% "C" to another "C" character contains the arrows but not transitions from
 % or to different characters, like "HCH" or "LCL".
 %
-% The arrows can be controlled using the TikZ styles shown in 
-% Table~\ref{tab:clockarrowstyles} below. This styles can also be used as 
-% library options. The key ``directory'' "timing/c" must be dropped for 
+% The arrows can be controlled using the TikZ styles shown in
+% Table~\ref{tab:clockarrowstyles} below. This styles can also be used as
+% library options. The key ``directory'' "timing/c" must be dropped for
 % options, e.g.\\\hspace*{2em}
 % \cs{usetikztiminglibrary}|[rising arrows]{clockarrows}|.
 
@@ -1734,43 +1729,44 @@
 %        \texttt{arrow tip=stealth}       & \texttiming[timing/c/arrow tip=stealth]{10{C}} \\
 %      \bottomrule
 %    \end{tabular}
+%   \fi
 %   \end{minipage}
 % \end{table}
 %
 % \clearpage
 % \library{columntype}{Column Type}
-% The library "columntype"\NewIn{v0.7} uses the \pkg{array} package to define a new 
-% |tabular| column type for timing characters. The tabular column can then hold 
-% timing characters like the \env{tikztimingtable}. An initial option block 
-% "[...]" is taken as initial character or diagram line wide settings. The 
-% main difference between these two table types is that \env{tikztimingtable} 
-% creates a big common |tikzpicture| with one coordinate system with potential 
-% extra drawing code and the column type creates single pictures for each 
+% The library "columntype"\NewIn{v0.7} uses the \pkg{array} package to define a new
+% |tabular| column type for timing characters. The tabular column can then hold
+% timing characters like the \env{tikztimingtable}. An initial option block
+% "[...]" is taken as initial character or diagram line wide settings. The
+% main difference between these two table types is that \env{tikztimingtable}
+% creates a big common |tikzpicture| with one coordinate system with potential
+% extra drawing code and the column type creates single pictures for each
 % diagram line without common coordinate system.
 %
-% By default the letter "T" and left alignment are used for the timing column 
-% type. The TikZ style |timing/columntype=|\marg{letter}\marg{alignment} can be 
-% used to select different column letters and alignments. The \meta{alignment} 
-% represents here the \emph{real} column letter like "l", "c" or "r".  
-% Additional column code can be added using the `|>|\marg{code}' and 
+% By default the letter "T" and left alignment are used for the timing column
+% type. The TikZ style |timing/columntype=|\marg{letter}\marg{alignment} can be
+% used to select different column letters and alignments. The \meta{alignment}
+% represents here the \emph{real} column letter like "l", "c" or "r".
+% Additional column code can be added using the `|>|\marg{code}' and
 % `|<|\marg{code}' argument of the \pkg{array} package.
 % \iffalse
 % \noindent\textbf{Examples:}\\
-% \hspace*{1em}|\tikzset{timing/columntype={T}{r}}| \hspace{2em} Change to right 
+% \hspace*{1em}|\tikzset{timing/columntype={T}{r}}| \hspace{2em} Change to right
 % alignment.\\
-% \hspace*{1em}|\tikzset{timing/columntype={I}{>{code}c<{code}}| \hspace{2em} 
-% Defines letter "I" to create centered timing diagrams with some code before   
+% \hspace*{1em}|\tikzset{timing/columntype={I}{>{code}c<{code}}| \hspace{2em}
+% Defines letter "I" to create centered timing diagrams with some code before
 % and after it.
 % \fi
 %
-% More complex column types (\eg one holding |@{..}| or |!{..}| arguments, 
-% multiple columns, etc.) must be defined manually using \pkg{array}'s 
-% \cs{newcolumntype} macro.  The default definition is equal 
+% More complex column types (\eg one holding |@{..}| or |!{..}| arguments,
+% multiple columns, etc.) must be defined manually using \pkg{array}'s
+% \cs{newcolumntype} macro.  The default definition is equal
 % to\\[\smallskipamount]
 % \hspace*{2em}|\newcolumntype{T}{>{\celltiming}l<{\endcelltiming}}|.
 %
 % \smallskip
-% The default "T" definition can be suppressed by using either the library 
+% The default "T" definition can be suppressed by using either the library
 % option |notype| or a different |type| (equal to |timing/columntype|):
 % \\[\smallskipamount]
 % \hspace*{2em}|\usetikzlibrary[type={U}{l}]{columntype}|\\[\smallskipamount]
@@ -1797,26 +1793,26 @@
 %
 % \clearpage
 % \library{nicetabs}{Nice Timing Tables}
-% The library "nicetabs"\NewIn{v0.7} uses the settings of the \pkg{array} and 
-% \pkg{booktabs} packages to improve the layout of \env{tikztimingtables}. The 
-% resulting table matches a \env{tabular}|{rT}| table which uses the above 
-% packages and the |columntype| library.  The table macros \cs{tabcolsep}, 
+% The library "nicetabs"\NewIn{v0.7} uses the settings of the \pkg{array} and
+% \pkg{booktabs} packages to improve the layout of \env{tikztimingtables}. The
+% resulting table matches a \env{tabular}|{rT}| table which uses the above
+% packages and the |columntype| library.  The table macros \cs{tabcolsep},
 % \cs{arraystretch} and \cs{extrarowheight} are obeyed.
-% 
-% The original table layout is designed to produce integer coordinates between 
-% the rows to simplify the drawing of extra drawings (see \cs{extracode}). The 
-% improved layout will cause non-integer coordinates, but in-line nodes and the 
-% \cs{rowdist} and \cs{coldist} macros can be used to draw extra material 
+%
+% The original table layout is designed to produce integer coordinates between
+% the rows to simplify the drawing of extra drawings (see \cs{extracode}). The
+% improved layout will cause non-integer coordinates, but in-line nodes and the
+% \cs{rowdist} and \cs{coldist} macros can be used to draw extra material
 % relatively to the rows.
-% 
-% The TikZ styles "timing/nice tabs" (default) and "timing/no nice tabs" can 
-% be used to activate and deactivate the layout, \eg for each table. Both 
+%
+% The TikZ styles "timing/nice tabs" (default) and "timing/no nice tabs" can
+% be used to activate and deactivate the layout, \eg for each table. Both
 % settings can be given as a library option, but without the "timing/" path.
-% 
+%
 % \bigskip
 % \begin{table}[H]
-%   \caption{Timing tables using `nice' (left) and normal (right) Layout. For 
-%   comparison a \texttt{\{tabular\}\{rT\}} table is placed in grey below the 
+%   \caption{Timing tables using `nice' (left) and normal (right) Layout. For
+%   comparison a \texttt{\{tabular\}\{rT\}} table is placed in grey below the
 %   left table.}^^A
 %   \hbox{}\hfill
 %   \begin{tikzpicture}
@@ -1856,22 +1852,22 @@
 %
 % \clearpage
 % \library{counters}{Counter Character}
-% The library "counters"\NewIn{v0.7}\ExtIn{v0.7a} allows the easy definition 
-% of meta-characters which 
-% implement up-counters. These characters show the counter value using the 
-% "D{}" character and increment it by one every time they are used. A second 
-% character can be defined to (re-)set the counter to a specific value. The 
-% counter values can be decimal (base-10, default), hexadecimal (base-16) or any 
-% other base from 2 to 36. By default the lower case version of the counter 
+% The library "counters"\NewIn{v0.7}\ExtIn{v0.7a} allows the easy definition
+% of meta-characters which
+% implement up-counters. These characters show the counter value using the
+% "D{}" character and increment it by one every time they are used. A second
+% character can be defined to (re-)set the counter to a specific value. The
+% counter values can be decimal (base-10, default), hexadecimal (base-16) or any
+% other base from 2 to 36. By default the lower case version of the counter
 % character is defined to produce the same output only with half the width.
 %
 % Counter characters are defined using the TikZ key
 % `\texttt{timing/counter/new=}\linebreak[3]\ignorespaces
-% \texttt{\{char=\meta{char},\meta{settings}\}}' which can also be written as 
-% "timing/new counter". The \meta{settings} are TikZ keys themselves and are 
-% shown by Table~\ref{tab:countersettings}.  One or more "new" keys (path 
+% \texttt{\{char=\meta{char},\meta{settings}\}}' which can also be written as
+% "timing/new counter". The \meta{settings} are TikZ keys themselves and are
+% shown by Table~\ref{tab:countersettings}.  One or more "new" keys (path
 % "timing/counter" removed) can be given as library options.
-% The counter values are global like normal \LaTeX\ counters. They should be reset 
+% The counter values are global like normal \LaTeX\ counters. They should be reset
 % in every timing diagram line before they are used.
 %
 % \subsubsection*{Counter Style}
@@ -1903,13 +1899,13 @@
 %  \toprule
 %   \multicolumn{1}{l}{Key name} & Description \\
 %  \midrule
-%   char=\meta{char} & Defines the given \meta{char} to be a counter 
-%     meta-character. If it is a upper case character the lower case character 
-%     will produce the same output but with the half width, as long this is not 
+%   char=\meta{char} & Defines the given \meta{char} to be a counter
+%     meta-character. If it is a upper case character the lower case character
+%     will produce the same output but with the half width, as long this is not
 %     overwritten with the \texttt{half with char} key. \\
-%   half width char=\meta{char} & Defines the given \meta{char} to be the half 
-%     width version of the counter value. By default this is the lower case 
-%     version of the counter character given with \texttt{char}. An empty value 
+%   half width char=\meta{char} & Defines the given \meta{char} to be the half
+%     width version of the counter value. By default this is the lower case
+%     version of the counter character given with \texttt{char}. An empty value
 %     for \meta{char} deactivates the definition of a half width character.\\
 %   reset char=\meta{char}
 %    & Defines the given \meta{char} to (re-)set the counter value to the `width'
@@ -1932,7 +1928,7 @@
 %  \midrule
 %   increment=\small\meta{pgfmath expression} &
 %                              Sets the increment which is added every time the counter
-%                              character is used. This can be a formula which result is truncated 
+%                              character is used. This can be a formula which result is truncated
 %                              to a integer. The current counter value can be referenced as \cs{N}.
 %                              The increment can be negative which causes
 %                              the counter to count down. Default: 1\\
@@ -1956,7 +1952,7 @@
 %
 % \subsubsection*{Examples:}
 % \noindent
-% Counter character "Q" with base 16 (hexadecimal). "R" resets the 
+% Counter character "Q" with base 16 (hexadecimal). "R" resets the
 % counter. The counter value should be in blue text typer font.\\*\noindent
 % |\tikzset{timing/new counter={char=Q,base=16,reset char=R}}|\\*\noindent
 % |\tikzset{timing/counter/Q/text/.style={font=\ttfamily,blue}}|\\*\noindent
@@ -1989,7 +1985,7 @@
 %
 % \clearpage
 % \library{advnodes}{Advanced Nodes}
-% The library "advnodes"\NewIn{v0.7} changes the in-line nodes, \ie the "N" character, to provide multiple 
+% The library "advnodes"\NewIn{v0.7} changes the in-line nodes, \ie the "N" character, to provide multiple
 % transition dependent and independent node anchors shown in Table~\ref{tab:advanchor}.
 %
 % Most transitions provide the three logic level anchors "low", "mid" and "high" which lie
@@ -1997,9 +1993,9 @@
 % two low and/or high level anchors which are called "low2" and "high2".
 %
 % To align marker lines over multiple rows inside a \env{tikztimingtable} a set of transition
-% independent node anchors are provided: "LOW", "MID", "HIGH". This anchors lie all at the begin of the 
+% independent node anchors are provided: "LOW", "MID", "HIGH". This anchors lie all at the begin of the
 % transition at the appropriate logic levels.
-% With the normal coordinate-like in-line nodes the vertical node (center) position has to be taken into 
+% With the normal coordinate-like in-line nodes the vertical node (center) position has to be taken into
 % account, while this advanced anchors do this automatically.
 %
 % Often marker lines should start and end with a little vertical offset from the timing diagram to be more distinguishable.
@@ -2007,10 +2003,10 @@
 % The vertical distance can be set using `|timing/nodes/offset=|\meta{dim.~or number}'.
 %
 % \textbf{Please note} that the node \emph{center} of advanced nodes will be different for some transitions.
-% The "center" anchor (used by default if no node anchor is provided) will be placed at the logical center of the 
-% transition, \ie mostly in the middle of it. In order not to break existing diagrams which use nodes as references 
+% The "center" anchor (used by default if no node anchor is provided) will be placed at the logical center of the
+% transition, \ie mostly in the middle of it. In order not to break existing diagrams which use nodes as references
 % to draw additional material an TikZ styles is provided to select between the old and new node centers. This styles
-% can be used globally or locally as required. The two explicit anchors "new center" and "old center" are also 
+% can be used globally or locally as required. The two explicit anchors "new center" and "old center" are also
 % provided. For existing documents with diagrams using normal nodes it is recommended
 % to switch to simple nodes or to the old node centers globally or select such a style for each old diagram.
 %
@@ -2019,18 +2015,19 @@
 % The settings can be used as library options with the "timing/nodes/" part removed.
 %
 % \vfill\noindent
-% \begin{tabularx}{\textwidth}{lX}
+% \begin{tabularx}{\textwidth}{>{\ttfamily}lX}
 %  \toprule
-%   TikZ Setting              &  Description \\
+%   \normalfont
+%   TikZ Setting            &  Description \\
 %  \midrule
-%   |timing/nodes/advanced|   &  Selects advanced in-line nodes. (library default) \\
-%   |timing/nodes/simple|     &  Selects simple coordinate-style in-line nodes. (package default) \\
+%   timing/nodes/advanced   &  Selects advanced in-line nodes. (library default) \\
+%   timing/nodes/simple     &  Selects simple coordinate-style in-line nodes. (package default) \\
 %  \midrule
-%   |timing/nodes/new center| &  Center of in-line nodes is in the new position. (default for |advanced|) \\
-%   |timing/nodes/old center| &  Center of in-line nodes is in the old position. (always on for |simple|) \\
+%   timing/nodes/new center &  Center of in-line nodes is in the new position. (default for \texttt{advanced}) \\
+%   timing/nodes/old center &  Center of in-line nodes is in the old position. (always on for \texttt{simple}) \\
 %  \midrule
-%   |timing/nodes/offset|     &  Sets offset for |TOP| and |BOTTOM| anchors.
-%                                Can be a dimension with unit or a factor to the current |y| unit. (default: 0.25) \\
+%   timing/nodes/offset     &  Sets offset for \texttt{TOP} and \texttt{BOTTOM} anchors.
+%                                Can be a dimension with unit or a factor to the current \texttt{y} unit. (default: 0.25) \\
 %  \bottomrule
 % \end{tabularx}
 %
@@ -2072,80 +2069,80 @@
 %     new center/.style={marker,mark size=\pgflinewidth,mark=*,fill=blue,draw=blue},
 %   }^^A
 %^^A
-%   \newcommand\namark[2][]{^^A 
+%   \newcommand\namark[2][]{^^A
 %     \draw[mark=o,mark size=3\pgflinewidth,#1] plot coordinates {(#2)}
 %   }^^A
 %^^A
-%   \def\NodeAnchors#1#2{^^A 
+%   \def\NodeAnchors#1#2{^^A
 %     \Huge
-%     {\raisebox{-.5ex}{\scalebox{1}{^^A 
+%     {\raisebox{-.5ex}{\scalebox{1}{^^A
 %     \begin{tikzpicture}[timing/picture,line width=.5\pgflinewidth]
 %       \let\pgf@sh@ma@A\@undefined
 %       \timing [name=T] at (0,0) {#1 N(A) #2};
 %       \useasboundingbox (T.south west) rectangle (T.north east);
-%       ^^A 
+%       ^^A
 %       \pgf@sh@ma@A
 %       \anchorpoints
-%       \foreach \a in {LOW,MID,HIGH,old center,new center} {^^A 
-%         \namark[gray,\a]{A.\a};^^A 
-%       }^^A 
-%       \foreach \a in {low,mid,high,low2,high2} {^^A 
-%         \@ifundefined{\a}{}^^A 
-%           {\namark[semithick,\a]{A.\a};}^^A 
-%       }^^A 
-%       \namark[old center,blue]{A.old center};^^A 
-%     \end{tikzpicture}^^A 
-%     }}}^^A 
+%       \foreach \a in {LOW,MID,HIGH,old center,new center} {^^A
+%         \namark[gray,\a]{A.\a};^^A
+%       }^^A
+%       \foreach \a in {low,mid,high,low2,high2} {^^A
+%         \@ifundefined{\a}{}^^A
+%           {\namark[semithick,\a]{A.\a};}^^A
+%       }^^A
+%       \namark[old center,blue]{A.old center};^^A
+%     \end{tikzpicture}^^A
+%     }}}^^A
 %     \Huge\strut
 %   }^^A
 %^^A
-%   \def\bchars{,L,H,X,D,E}^^A 
-%   \def\achars{,L,H,X,D,D{A},E,0LE,0HE}^^A 
+%   \def\bchars{,L,H,X,D,E}^^A
+%   \def\achars{,L,H,X,D,D{A},E,0LE,0HE}^^A
 %^^A
 %   \def\DA{D{A}}^^A
-%   \def\tablecontent{^^A 
+%   \def\tablecontent{^^A
 %     \begin{tabular}{lrrrrrrrrrrrrrrrrrr}^^A
 %       \toprule
 %         \tikzpicture
 %           \useasboundingbox (-1ex,-.5ex) rectangle (1ex,.5ex);
-%           \node {^^A 
-%         \scalebox{0.4}^^A 
-%           {\rotatebox{-45}{$\frac{\mbox{\rotatebox{45}{to}}}^^A 
-%           {\mbox{\rotatebox{45}{from}}}$}}^^A 
-%         };^^A 
+%           \node {^^A
+%         \scalebox{0.4}^^A
+%           {\rotatebox{-45}{$\frac{\mbox{\rotatebox{45}{to}}}^^A
+%           {\mbox{\rotatebox{45}{from}}}$}}^^A
+%         };^^A
 %       \endtikzpicture
 %   }
 %^^A
-%   \def\atc#1{^^A 
+%   \def\atc#1{^^A
 %     \begingroup
-%       \edef\@tempa{#1}^^A 
+%       \edef\@tempa{#1}^^A
 %       \expandafter\g@addto@macro\expandafter\tablecontent
-%       \expandafter{\@tempa}^^A 
+%       \expandafter{\@tempa}^^A
 %     \endgroup
-%   }^^A 
+%   }^^A
 %^^A
-%   \foreach \b in \bchars {^^A 
-%     \atc{& \noexpand\multicolumn{1}{c}{\b}}^^A 
+%   \foreach \b in \bchars {^^A
+%     \atc{& \noexpand\multicolumn{1}{c}{\b}}^^A
 %   }^^A
 %^^A
 %   \atc{\noexpand\\ \noexpand\midrule}^^A
 %^^A
-%   \foreach \a in \achars {^^A 
+%   \foreach \a in \achars {^^A
 %     \ifx\a\DA
-%       \atc{D\noexpand\{A\noexpand\}}^^A 
+%       \atc{D\noexpand\{A\noexpand\}}^^A
 %     \else
-%       \atc{\a}^^A 
+%       \atc{\a}^^A
 %     \fi
-%     \foreach \b in \bchars {^^A 
-%       \atc{& \noexpand\NodeAnchors{\a}{\b}}^^A 
-%       ^^A \hbox to 5em{\llap{\a\b:} \NodeAnchors{\a}{\b}}^^A 
+%     \foreach \b in \bchars {^^A
+%       \atc{& \noexpand\NodeAnchors{\a}{\b}}^^A
+%       ^^A \hbox to 5em{\llap{\a\b:} \NodeAnchors{\a}{\b}}^^A
 %     }^^A
 %     \atc{\noexpand\\}^^A
 %   }^^A
 %^^A
-%   \atc{^^A 
+%   \atc{^^A
 %     \noexpand\bottomrule
-%     \noexpand\end{tabular}^^A 
+%     \noexpand\end{tabular}^^A
 %   }^^A
 %^^A
 %   \sffamily\centering
@@ -2175,7 +2172,7 @@
 % \library{ifsym}{Compatibility Macros for \texttt{ifsym} package}
 % The library "ifsym"\NewIn{v0.7} provides macros and timing styles to emulate the behaviour of the \pkg{ifsym} package
 % when loaded with the |electronic| option. The \pkg{ifsym} package was an early inspiration to this package
-% and this library allows the usage of |ifsym| style timing symbol macros and characters 
+% and this library allows the usage of |ifsym| style timing symbol macros and characters
 % (`|\textifsym|\marg{characters}' which uses `|\texttiming[timing/ifsym]|\marg{characters}')
 % which are described in Table~\ref{tab:ifsymmacros} and Table~\ref{tab:ifsym}, respectively.
 % This is useful if old |ifsym| timing diagrams should be reused. The |tikz-timing| replacements are a very close match
@@ -2184,8 +2181,8 @@
 % (the one provided by this library, not the one from the \pkg{ifsym} package) is supported but it is not guaranteed to work
 % 100\% properly. Please note that the "M" character is defined to use "X" in black.
 %
-% The library can be loaded with one of the options "provide" (default), "new", "renew" or "off", respectively. 
-% These select if the macros should be defined using \cs{providecommand}, \cs{newcommand}, \cs{renewcommand} 
+% The library can be loaded with one of the options "provide" (default), "new", "renew" or "off", respectively.
+% These select if the macros should be defined using \cs{providecommand}, \cs{newcommand}, \cs{renewcommand}
 % or not at all. This can be useful if the \pkg{ifsym} package is loaded beforehand.
 %
 %
@@ -2222,7 +2219,7 @@
 %       \bottomrule
 %     \end{tabular}
 %   }%^^A
-% 
+%
 % \ifprintversion
 %
 % \begin{table}
@@ -2266,12 +2263,12 @@
 % \textbf{This library is under development and might change in the future.}
 %
 % The library "interval"\NewIn{v0.7} allows the drawing of intervals using the "H", "L", "Z" and "X" logic levels.
-% It provides modified definitions of X and Z transitions (e.g.~"LX", "XH") where the transition edges can 
+% It provides modified definitions of X and Z transitions (e.g.~"LX", "XH") where the transition edges can
 % be coloured either way to indicate interval borders.
 %
-% The interval borders can be set using the `|timing/interval=|\marg{settings}' TikZ style. The 
+% The interval borders can be set using the `|timing/interval=|\marg{settings}' TikZ style. The
 % \meta{settings} are "lo" (left-open), "lc" (left-closed) and "ro" (right-open), "rc" (right-closed), which build the
-% following combinations: "{lo,ro}", "{lc,ro}", "{lo,rc}" and "{lc,rc}". However, every of them can also be set on its own, 
+% following combinations: "{lo,ro}", "{lc,ro}", "{lo,rc}" and "{lc,rc}". However, every of them can also be set on its own,
 % e.g.\ "timing/interval={lc}" simply sets the interval to `left-closed' without changing the right border.
 %
 % The key "timing/interval/normal" (alternative: "timing/interval={normal}") sets the transitions back to their default.
@@ -2334,9 +2331,9 @@
 % See the \pkg{beamer} manual for more informations about overlays specifications.
 %
 % \subsection*{Usage}
-% Insert an overlay specification, e.g.~|<|\meta{number}|>|, inside the timing string. It will affect the 
+% Insert an overlay specification, e.g.~|<|\meta{number}|>|, inside the timing string. It will affect the
 % rest of the timing characters of the current diagram line.
-% Unfortunate due to the global nature of overlays it also affects the rest of the table. Therefore all 
+% Unfortunate due to the global nature of overlays it also affects the rest of the table. Therefore all
 % diagram lines should end with a specification which turns overlays off, i.e. |<*>| or |<0->|. Otherwise
 % strange results can occur (e.g.~wrong/missing background graphics).
 %
@@ -2362,7 +2359,7 @@
 % \subsection*{Display Columns Stepwise}
 % Different sections (`columns') of timing diagrams in a \env{tikztimingtable} can be uncovered stepwise using the way shown below.
 % In this example the second section/column will be uncovered in the second slide. The first is always visible. Further sections/columns
-% can be uncovered in further slides. 
+% can be uncovered in further slides.
 %
 % Please note that the total width of the table is constant and e.g.~\cs{tablerules} will always cover the full width independent of overlays.
 %
@@ -2397,17 +2394,17 @@
 %
 % \clearpage
 % \chapter{Examples}
-% This section shows some examples by putting either the full source code or 
-% only the needed characters beside the graphical result. Please note that the 
-% displayed syntax is the one of \cs{timing} where the initial character is 
-% declared as optional argument (\oarg{char}) \emph{inside}/\emph{together} with 
-% the logic characters. The syntax of \cs{textttiming} is identical except the 
-% initial character is given as a normal optional argument before the characters 
+% This section shows some examples by putting either the full source code or
+% only the needed characters beside the graphical result. Please note that the
+% displayed syntax is the one of \cs{timing} where the initial character is
+% declared as optional argument (\oarg{char}) \emph{inside}/\emph{together} with
+% the logic characters. The syntax of \cs{textttiming} is identical except the
+% initial character is given as a normal optional argument before the characters
 % argument.
 % All examples except Example~\ref{exa:adv} are attached in compilable form
 % to this PDF.
 % ^^A\\[\smallskipamount]
-% ^^A\emph{Example notation example:} "[c]cccc" means either 
+% ^^A\emph{Example notation example:} "[c]cccc" means either
 % ^^A|\timing{[c]cccc};| or |\texttiming[c]{cccc}|.
 %
 % \DeleteShortVerb{\|}
@@ -2460,9 +2457,9 @@
 % \end{tikztimingexampletable}%
 % }
 % \\\scriptsize
-% \emph{Note:} Optional argument must be placed before macro argument if 
+% \emph{Note:} Optional argument must be placed before macro argument if
 % \cs{texttiming} is used.
-% 
+%
 % \end{exampletable}
 % \MakeShortVerb{\|}
 %
@@ -2570,7 +2567,7 @@
 % \noexpand\usepackage{amsmath}}
 % \begin{examplecode}
 %   \def\degr#1{\makebox[2em][r]{#1}\ensuremath{{}^{\circ}}}%
-%   
+%
 %   \begin{tikztimingtable}[%
 %       timing/dslope=0.1, timing/.style={x=2ex,y=2ex}, x=2ex,
 %       timing/rowdist=3ex,
@@ -2580,7 +2577,7 @@
 %     Clock \degr{90} &  l  2{C} N(A1) 5{C}  \\
 %     Clock \degr{180}&  C  2{C} N(A2) 4{C} c\\
 %     Clock \degr{270}&  h  3{C} N(A3) 4{C}  \\
-%     Clock \degr{0}  & [C] 2{C} N(A0) 2{C} N(A4) 3{C}c ;[dotted] 
+%     Clock \degr{0}  & [C] 2{C} N(A0) 2{C} N(A4) 3{C}c ;[dotted]
 %                       2L; 2{C} N(A5) 3{C} \\
 %     Start of T$_{\text{sw}}$ & 4S G N(start) \\
 %     Input Pulse & 2.0L 2H 3.5L ;[dotted] 2L; 5L \\
@@ -2669,7 +2666,7 @@
 %    \end{pgfonlayer}
 %   \end{tikztimingtable}%
 % \end{examplecode}
-% \caption[SR flip-flop timing diagram]{SR flip-flop timing diagram\texta.  
+% \caption[SR flip-flop timing diagram]{SR flip-flop timing diagram\texta.
 % Redrawn from image\textb\\ {\small
 % \url{http://commons.wikimedia.org/wiki/File:SR_FF_timing_diagram.png}
 % }}
@@ -2711,7 +2708,7 @@
 %     \end{scope}
 %   \end{tikztimingtable}%
 % \end{examplecode}
-% \caption[SPI Interface Timing]{SPI Interface Timing.  Redrawn from 
+% \caption[SPI Interface Timing]{SPI Interface Timing.  Redrawn from
 % image {\small
 % \url{http://en.wikipedia.org/wiki/File:SPI_timing_diagram.svg}}}
 % \end{example}
@@ -2723,12 +2720,26 @@
 %</doc>
 % \fi
 %
+%
 % \chapter{Implementation}
-% \section{Package Header}
+%
+% \subsection{Package Header}
 % \iffalse
-%<*package>
+%<*tikz-timing.sty>
 % \fi
 %    \begin{macrocode}
+%<!COPYRIGHT>
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{tikz-timing}[%
+%<!DATE>
+%<!VERSION>
+%<*DRIVER>
+    2099/01/01 develop
+%</DRIVER>
+    Digital Timing Diagrams using TikZ]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 \RequirePackage{tikz}
 
 \usetikzlibrary{calc}
@@ -2865,6 +2876,8 @@
   name/.style={inner sep=0pt,outer sep=0pt,minimum size=0pt},
   text format/.store in=\tikztiming@textformat,
   @/.style={},
+  every char/.style={},
+  every bg/.style={},
   D/.style={timing/d},
   D/text/.style={timing/d/text},
   D/background/.style={timing/d/background},
@@ -2953,7 +2966,7 @@
 %
 % \section{Text-Mode Macros}
 % \begin{macro}{\texttimingbefore}
-% This macro is executed inside the |tikzpicture| environment of \cs{texttiming} 
+% This macro is executed inside the |tikzpicture| environment of \cs{texttiming}
 % before the timing diagram is drawn.
 %    \begin{macrocode}
 \def\texttimingbefore{}
@@ -2961,7 +2974,7 @@
 % \end{macro}
 %
 % \begin{macro}{\texttimingafter}
-% This macro is executed inside the |tikzpicture| environment of \cs{texttiming} 
+% This macro is executed inside the |tikzpicture| environment of \cs{texttiming}
 % after the timing diagram is drawn.
 %    \begin{macrocode}
 \def\texttimingafter{}
@@ -2969,11 +2982,11 @@
 % \end{macro}
 %
 % \begin{macro}{\texttiminggrid}
-% Draws a background grid with the "timing/grid" setting. Should be used inside 
+% Draws a background grid with the "timing/grid" setting. Should be used inside
 % \cs{texttimingbefore}.
 %    \begin{macrocode}
 \def\texttiminggrid{%
-  \draw[xstep={\timingwidth/2.},ystep={\timingheight/2.},timing/grid] (0,0) grid 
+  \draw[xstep={\timingwidth/2.},ystep={\timingheight/2.},timing/grid] (0,0) grid
   (\timingwidth*\tikztimingwidth,\timingheight);
 }
 %    \end{macrocode}
@@ -2982,7 +2995,7 @@
 % \section{User Level Macros}
 %
 % \begin{macro}{\texttiming}[2]{Optional initial character}{Timing characters}
-% This macro now only parses it optional argument to check if it is a initial 
+% This macro now only parses it optional argument to check if it is a initial
 % character or some style settings and then calls \cs{timing} appropriately.
 %    \begin{macrocode}
 \DeclareRobustCommand*\texttiming[2][]{%
@@ -3049,9 +3062,9 @@
     \def\tikztimingwidth{0.0}%
     \setcounter{tikztimingtrans}{-1}%
     \setcounter{tikztimingtranspos}{0}%
-    \def\tikztiming@str{%
+    \tikztiming@initstr{%
       \useasboundingbox (0,0) rectangle (\tikztimingwidth,\timingheight);
-      \draw (0,0)
+      \draw [timing/every char] (0,0)
         coordinate (timing@refa)
         coordinate (timing@ref)  at (0,\timingheight/2)
         coordinate (timing@refb) at (0,\timingheight)
@@ -3098,9 +3111,9 @@
 \def\tikz@timing@[#1]{%
   \@ifnextchar{a}%
     {\tikz@timing@at{#1}}%
-    {\PackageWarning{tikz-timing}{The \string\timing\space command awaits now an 
-    `at' before the coordinate, like the \string\node\space command is doing.  
-    Please update your source code to ensure compatibility with newer 
+    {\PackageWarning{tikz-timing}{The \string\timing\space command awaits now an
+    `at' before the coordinate, like the \string\node\space command is doing.
+    Please update your source code to ensure compatibility with newer
     versions}{}{}{}%
      \@ifnextchar{+}%
       {\tikz@timing@@{#1}}%
@@ -3121,7 +3134,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\tikz@timing@@}[3]{Optional TikZ Keys}{Potential `+' or 
+% \begin{macro}{\tikz@timing@@}[3]{Optional TikZ Keys}{Potential `+' or
 % empty}{Coordinate}
 %    \begin{macrocode}
 \def\tikz@timing@@#1#2(#3){%
@@ -3130,7 +3143,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\tikz@timing@@@}[3]{Optional TikZ Keys}{Coordinate}{Timing 
+% \begin{macro}{\tikz@timing@@@}[3]{Optional TikZ Keys}{Coordinate}{Timing
 % Characters}
 %    \begin{macrocode}
 \def\tikz@timing@@@#1#2#3{%
@@ -3142,23 +3155,6 @@
         {\tikz@timing@@@init}%
         {\tikz@timing@@@init[]}%
       #3\relax
-      \ifnum\tikztiming@debug>1
-      \message{^^J\meaning\tikztiming@str^^J}%
-      \ifnum\tikztiming@debug>2
-      {%
-      \def\@protect##1{\def##1{\noexpand##1}}%
-      \@protect\useasboundingbox
-      \@protect\draw
-      \@protect\p
-      \@protect\n
-      \@protect\x
-      \@protect\y
-      \@protect\tikztiming@overlay@save
-      \edef\@tempa{\tikztiming@str}%
-      \message{^^J\meaning\@tempa^^J}%
-      }%
-      \fi
-      \fi
       \tikzset{timing/before}%
       \tikztiming@str;%
       \path let \p1 = (timing/end top), \p2 = (timing/end base),
@@ -3201,7 +3197,7 @@
   \if @\tikztiming@lastchar\relax\else
   \tikztiming@iftrans{@\tikztiming@lastchar}%
     {\tikztiming@nameaddtostr{@}{\tikztiming@lastchar}{}}%
-    {\PackageWarning{tikz-timing}{Start value for timing character 
+    {\PackageWarning{tikz-timing}{Start value for timing character
     '\tikztiming@lastchar' is not defined and will be ignored!}{}{}{}}%
   \fi
   \tikztiming@parser
@@ -3214,7 +3210,9 @@
 % \begin{macro}{\tikztiming@trans@}
 %    \begin{macrocode}
 \def\tikztiming@trans@#1#2#3#4{%
-  \csname\tikztiming@prefix #2#3#4\endcsname{#1}{#2}{#3}{#4}%
+    \unexpanded\expandafter\expandafter\expandafter{%
+        \csname\tikztiming@prefix #2#3#4\endcsname{#1}{#2}{#3}{#4}
+    }%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -3290,6 +3288,17 @@
 %    \end{macrocode}
 % \end{macro}
 %
+%    \begin{macrocode}
+\iftrue
+%    \end{macrocode}
+%
+% \begin{macro}{\tikztiming@initstr}
+%    \begin{macrocode}
+\long\def\tikztiming@initstr{%
+    \def\tikztiming@str
+}
+%    \end{macrocode}
+% \end{macro}
 %
 % \begin{macro}{\tikztiming@eaddtostr}
 %    \begin{macrocode}
@@ -3307,6 +3316,64 @@
 %    \end{macrocode}
 % \end{macro}
 %
+%    \begin{macrocode}
+\else
+%    \end{macrocode}
+%
+% \begin{macro}{\tikztiming@str}
+%    \begin{macrocode}
+\def\tikztiming@file{\jobname.ttg}
+\newwrite\tikztiming@fh
+\def\tikztiming@str{%
+    \tikztiming@addtostr{;}%
+    \immediate\closeout\tikztiming@fh
+    \begingroup
+    \makeatletter
+    \@@input\tikztiming@file\relax
+    \endgroup
+    \@ifnextchar;{\@gobble}{}%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tikztiming@initstr}
+%    \begin{macrocode}
+\long\def\tikztiming@initstr{%
+    \immediate\openout\tikztiming@fh= \tikztiming@file\relax
+    \tikztiming@addtostr
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tikztiming@eaddtostr}
+%    \begin{macrocode}
+\long\def\tikztiming@eaddtostr#1{%
+  \begingroup
+    \tikztiming@internaldefs
+    \let\par\empty
+    \immediate\write\tikztiming@fh{#1}%
+  \endgroup
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tikztiming@addtostr}
+%    \begin{macrocode}
+\long\def\tikztiming@addtostr#1{%
+  \begingroup
+    \tikztiming@internaldefs
+    \let\par\empty
+    \immediate\write\tikztiming@fh{\unexpanded{#1}}%
+  \endgroup
+}
+%    \end{macrocode}
+% \end{macro}
+%
+%    \begin{macrocode}
+\fi
+%    \end{macrocode}
+%
+%
 % \begin{macro}{\tikztiming@makeglobal}
 %    \begin{macrocode}
 \def\tikztiming@makeglobal#1{%
@@ -3349,17 +3416,17 @@
     % If both do not exist, search for aliases:
     \ifx\tikztiming@trans\relax
       \@ifundefined{tikztiming@alias@#1}%
-        {\edef\chara{#1}}%
-        {\edef\chara{#1,\csname tikztiming@alias@#1\endcsname}}%
+        {\edef\chara{{#1}}}%
+        {\edef\chara{{#1},{\csname tikztiming@alias@#1\endcsname}}}%
       \@ifundefined{tikztiming@alias@#2}%
-        {\edef\charb{#2}}%
-        {\edef\charb{#2,\csname tikztiming@alias@#2\endcsname}}%
+        {\edef\charb{{#2}}}%
+        {\edef\charb{{#2},{\csname tikztiming@alias@#2\endcsname}}}%
       \@ifundefined{tikztiming@triple@#2}%
         {\def\charc{\empty}}%
         {%
          \@ifundefined{tikztiming@alias@#3}%
-           {\edef\charc{#3,}}%
-           {\edef\charc{#3,\csname tikztiming@alias@#3\endcsname,}}%
+           {\edef\charc{{#3},}}%
+           {\edef\charc{{#3},{\csname tikztiming@alias@#3\endcsname},}}%
         }%
       \ifx\charb\empty
         \def\charb{\empty}%
@@ -3383,9 +3450,9 @@
                   \ifnum\tikztiming@debug>2
                     \expandafter\show\csname\tikztiming@pfxtr\tikztiming@trans\endcsname
                   \else
-                    \message{^^J\tikztiming@trans: 
+                    \message{^^J\tikztiming@trans:
                     \expandafter\meaning\csname\tikztiming@pfxtr\tikztiming@trans\endcsname^^J}%
-                    \message{^^J\a\b\c: 
+                    \message{^^J\a\b\c:
                     \expandafter\meaning\csname\tikztiming@prefix\a\b\c\endcsname^^J}%
                   \fi
                 \fi
@@ -3416,10 +3483,13 @@
 \def\tikztiming@nameaddtostr#1#2#3{%
   \tikztiming@iftrans{{#1}{#2}{#3}}%
    {%
+     %\edef\@tempa{\noexpand\tikztiming@trans@{\tikztiming@num}\tikztiming@trans}%
+     %\expandafter\tikztiming@addtostr
+     %\expandafter{\@tempa}%
      \edef\@tempa{\noexpand\tikztiming@trans@{\tikztiming@num}\tikztiming@trans}%
-     \expandafter\g@addto@macro
-     \expandafter\tikztiming@str
-     \expandafter{\@tempa}%
+     %\tikztiming@eaddtostr{\@percentchar\space {#1}{#2}{#3}}%
+     \tikztiming@eaddtostr{\@tempa}%
+     %\tikztiming@eaddtostr{\tikztiming@trans@{\tikztiming@num}\tikztiming@trans}%
    }%
    {\PackageWarning{tikz-timing}{No transitions '#1#2' (or '#1#2#3') defined!}}%
 }
@@ -3427,7 +3497,7 @@
 % \end{macro}
 %
 % \begin{macro}{\tikztiming@output@addcode}
-% Adds code to the output code buffer. The code will not be expanded, i.e.\ will 
+% Adds code to the output code buffer. The code will not be expanded, i.e.\ will
 % be protected from the expansion when the buffer is flushed.
 %    \begin{macrocode}
 \def\tikztiming@output@addcode#1{%
@@ -3437,7 +3507,7 @@
 % \end{macro}
 %
 % \begin{macro}{\tikztiming@output@eaddcode}
-% Adds code to the output code buffer. The code will be expanded when the buffer 
+% Adds code to the output code buffer. The code will be expanded when the buffer
 % is flushed.
 %    \begin{macrocode}
 \def\tikztiming@output@eaddcode#1{%
@@ -3447,7 +3517,7 @@
 % \end{macro}
 %
 % \begin{macro}{\tikztiming@output@Eaddcode}
-% Adds code to the output code buffer. The code will be expanded immediately and 
+% Adds code to the output code buffer. The code will be expanded immediately and
 % again when the buffer is flushed.
 %    \begin{macrocode}
 \def\tikztiming@output@Eaddcode{%
@@ -3532,15 +3602,17 @@
 % \begin{macro}{\tikztiming@output@codeflush}
 %    \begin{macrocode}
 \def\tikztiming@output@codeflush{%
-  \tikztiming@eaddtostr{\tikztiming@output@bufcode}%
-  \global\let\tikztiming@output@bufcode\empty%
+  \ifx\tikztiming@output@bufcode\empty\else
+    \tikztiming@eaddtostr{\tikztiming@output@bufcode}%
+    \global\let\tikztiming@output@bufcode\empty%
+  \fi
 }
 %    \end{macrocode}
 % \end{macro}
 %
 % \begin{macro}{\tikztiming@output@charflush}
-% A group is used to protect the current value of |num| which is the length of 
-% the new character after the flushed old character. This value will be assigned 
+% A group is used to protect the current value of |num| which is the length of
+% the new character after the flushed old character. This value will be assigned
 % to the new buffer length |bufnum|.
 %    \begin{macrocode}
 \def\tikztiming@output@charflush{%
@@ -3562,10 +3634,10 @@
 %
 % \section{Macros for Character Definitions}
 %
-% \begin{macro}{\tikztiming@nameedef}[4]{Macro name to be defined (without 
+% \begin{macro}{\tikztiming@nameedef}[4]{Macro name to be defined (without
 % prefix)}{Content of macro}
-% Defines internal tikztiming macro with name |\|\meta{prefix}\meta{name (\#2)}.  
-% The macro definition (\#3) is expanded while the internal drawing definitions 
+% Defines internal tikztiming macro with name |\|\meta{prefix}\meta{name (\#2)}.
+% The macro definition (\#3) is expanded while the internal drawing definitions
 % are active.
 %    \begin{macrocode}
 \newcommand\tikztiming@nameedef[4]{%
@@ -3581,7 +3653,7 @@
 % \end{macro}
 %
 % \begin{macro}{\tikztiming@namelet}[2]{Original Characters}{New Characters}
-% Only execute |\let| if the original macro is defined or the destination macro 
+% Only execute |\let| if the original macro is defined or the destination macro
 % is defined and would now set to undefined.
 %    \begin{macrocode}
 \newcommand\tikztiming@namelet[2]{%
@@ -3668,8 +3740,8 @@
 % \end{macro}
 %
 % \begin{macro}{\tikztiming@handletext}[1]{Text}
-% Looks ahead if the current character is the last one and sets the end-of-line 
-% marker if so. 
+% Looks ahead if the current character is the last one and sets the end-of-line
+% marker if so.
 %
 % This seems outdated because |handletext@| does not flush the output any more.
 %    \begin{macrocode}
@@ -3747,8 +3819,8 @@
 % \end{macro}
 %
 % \begin{macro}{\tikztiming@defcode{@}}
-% Simply executes given code. The |\relax| is added to have some protection 
-% against user code manipulating the parser macro. The "@" character can be both 
+% Simply executes given code. The |\relax| is added to have some protection
+% against user code manipulating the parser macro. The "@" character can be both
 % a letter (in style files) and a character (in user documents), so it is
 % defined twice.
 %    \begin{macrocode}
@@ -3767,8 +3839,8 @@
 % \end{macro}
 %
 % \begin{macro}{\tikztiming@defcode{DOLLAR}}
-% Takes the code between two dollar signs and parses it as math expression. The 
-% result is put back on the input stream. This allows the calculation of 
+% Takes the code between two dollar signs and parses it as math expression. The
+% result is put back on the input stream. This allows the calculation of
 % character width.
 %    \begin{macrocode}
 \tikztiming@defcode$#1${%
@@ -3783,7 +3855,7 @@
 %    \begin{macrocode}
 \tikztiming@defcode{,}{%
   \tikztiming@output@eaddcode{%
-    \newdraw
+    \newdraw [timing/every char]
   }%
   \tikztiming@parser
 }
@@ -3795,7 +3867,7 @@
 \tikztiming@defcode{;}{%
   \endgroup\begingroup
   \tikztiming@output@eaddcode{%
-    \newdrawns
+    \newdrawns [timing/every char]
   }%
   \tikztiming@parser
 }
@@ -3885,7 +3957,7 @@
 % \end{macro}
 %
 % \begin{macro}{\tikztiming@parseroption}[1]{Options}
-% Sets the given options immediately, so that they are in affect for the rest of 
+% Sets the given options immediately, so that they are in affect for the rest of
 % the parser run.
 %    \begin{macrocode}
 \def\tikztiming@parseroption!#1!]{%
@@ -3906,7 +3978,7 @@
 % \end{macro}
 %
 % \begin{macro}{\tikztiming@bothoption}[1]{Options}
-% Does executes and adds the options to the output code buffer. This is 
+% Does executes and adds the options to the output code buffer. This is
 % necessary for slopes if they are used in width calculations.
 %    \begin{macrocode}
 \def\tikztiming@bothoption[#1]]{%
@@ -3934,7 +4006,7 @@
 \tikztiming@defcode{\bgroup}{%
   \tikztiming@output@eaddcode{%
     [timing/pushoptions]
-    \newdraw
+    \newdraw [timing/every char]
   }%
   \tikztiming@parser
 }
@@ -3946,7 +4018,7 @@
 \tikztiming@defcode{\egroup}{%
   \tikztiming@output@eaddcode{%
     [timing/popoptions]
-    \newdraw
+    \newdraw [timing/every char]
   }%
   \tikztiming@parser
 }
@@ -4010,7 +4082,7 @@
 % \end{macro}
 %
 % \begin{macro}{\tikztiming@addnode@}[3]{Options}{Node name}{Node text}
-% The |fromchar| and |tochar| macros are to be expanded in the output routine, 
+% The |fromchar| and |tochar| macros are to be expanded in the output routine,
 % not inside this macro. They do not hold the correct values yet.
 %    \begin{macrocode}
 \def\tikztiming@addnode@#1#2#3{%
@@ -4042,7 +4114,7 @@
     \foreach \N in #2 {%
       \ifx\N\empty\else
         \tikztiming@markcmd
-        \path let \p1=(\N) in 
+        \path let \p1=(\N) in
           node [timing/debug/node] at ($ (\x1,\noexpand\@tempa) + (0,1) $) {\N};
       \fi
     }%
@@ -4095,7 +4167,7 @@
   \@ifnextchar\bgroup
     {\tikztiming@handlecode}%
     {%
-      \PackageWarning{tikz-timing}{Missing braces after '!' character. Ignoring 
+      \PackageWarning{tikz-timing}{Missing braces after '!' character. Ignoring
       this character}{}{}{}%
       \tikztiming@parser
     }%
@@ -4155,7 +4227,7 @@
 % \end{macro}
 %
 % \begin{macro}{\tikztiming@testfornum@}
-% The \cs{@let@token} set in \cs{tikztiming@parser} is used to handle "0" 
+% The \cs{@let@token} set in \cs{tikztiming@parser} is used to handle "0"
 % which can not be detected using the \cs{tikztiming@numint} value.
 %    \begin{macrocode}
 \def\tikztiming@testfornum@{%
@@ -4229,7 +4301,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\tikztiming@testfornum@@@@}[1]{Characters and other tokens to 
+% \begin{macro}{\tikztiming@testfornum@@@@}[1]{Characters and other tokens to
 % repeat}
 %    \begin{macrocode}
 \def\tikztiming@testfornum@@@@#1{%
@@ -4247,7 +4319,7 @@
 % \section{Meta-Characters}
 %
 % \begin{macro}{\tikztimingmetachar}[1]{Meta-character}
-% Checks if there is an optional argument and calls \cs{tikztiming@metachar} 
+% Checks if there is an optional argument and calls \cs{tikztiming@metachar}
 % appropriately.
 %    \begin{macrocode}
 \def\tikztimingmetachar#1{%
@@ -4258,7 +4330,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\tikztiming@metachar}[3]{Macro character}{Number of 
+% \begin{macro}{\tikztiming@metachar}[3]{Macro character}{Number of
 % Arguments}{Substituted Characters}
 %    \begin{macrocode}
 \def\tikztiming@metachar#1[#2]#3{%
@@ -4277,7 +4349,7 @@
     \fi
   \fi
   \ifnum\tikztiming@debug=-1
-    \message{^^J Defined meta-char '#1' as: 
+    \message{^^J Defined meta-char '#1' as:
       \expandafter\meaning\csname tikztiming@metachar@\meaning#1\endcsname ^^J}%
   \fi
 }
@@ -4285,7 +4357,7 @@
 % \end{macro}
 %
 % \begin{macro}{\if@tikztiming@metachar}[2]{True clause}{False clause}
-% Only works in an argument of |\@ifnextchar|. This macro sets the needed 
+% Only works in an argument of |\@ifnextchar|. This macro sets the needed
 % |\@let@token| macro.
 %    \begin{macrocode}
 \def\if@tikztiming@metachar#1#2{%
@@ -4477,7 +4549,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\tikztimingtable@row@}[3]{Cell 1}{Cell 2 or empty}{Potential 
+% \begin{macro}{\tikztimingtable@row@}[3]{Cell 1}{Cell 2 or empty}{Potential
 % further cells}
 %    \begin{macrocode}
 \long\def\tikztimingtable@row@#1&#2&#3\\{%
@@ -4810,9 +4882,9 @@
   \def\zslope{\noexpand\timingzslope}%
   \def\dslope{\noexpand\timingdslope}%
   \def\gslope{0}%
-  \def\style{timing/####3}%
-  \def\bgstyle{draw=none,timing/####3/background}%
-  \def\nstyle{timing/####4}%
+  \def\style{timing/every char,timing/####3}%
+  \def\bgstyle{draw=none,timing/every bg,timing/####3/background}%
+  \def\nstyle{timing/every char,timing/####4}%
   \def\newdraw{\tikztiming@newdraw}%
   \def\newdrawns{\tikztiming@newdraw@nosave}%
   \def\code##1{ [/utils/exec={\unexpanded{##1}}] }%
@@ -4874,7 +4946,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\tikztimingdef@}[3]{First character}{Second character or 
+% \begin{macro}{\tikztimingdef@}[3]{First character}{Second character or
 % empty}{Definition code}
 %    \begin{macrocode}
 \def\tikztimingdef@#1#2#3\relax#4{%
@@ -4923,7 +4995,7 @@
 %
 %
 % \begin{macro}{\tikztiming@chars}[1]{Comma to gobble}
-% Initial definition of character list. Will gobble the separation comma in 
+% Initial definition of character list. Will gobble the separation comma in
 % front of the first character which is added to the list.
 %    \begin{macrocode}
 \def\tikztiming@chars#1{}
@@ -4970,7 +5042,7 @@
 \@namedef{\tikztiming@prefix @@}#1#2#3#4{ coordinate (timing/start)}%
 %    \end{macrocode}
 %
-% \begin{macro}{\tikztimingchar@}[3]{Character}{Start position}{Character 
+% \begin{macro}{\tikztimingchar@}[3]{Character}{Start position}{Character
 % drawing code}
 %    \begin{macrocode}
 \def\tikztimingchar@#1#2#3{%
@@ -5040,7 +5112,7 @@
 %    \end{macrocode}
 %
 % \subsection{Character `S'}
-% This character is now implemented as modifier to avoid hassle with triple 
+% This character is now implemented as modifier to avoid hassle with triple
 % character transitions.
 %    \begin{macrocode}
 \tikztiming@defcode{S}{%
@@ -5085,15 +5157,15 @@
 }
 
 \def\tikztiming@glitch{%
-  {[timing/g] let \p1 = +(0,0) in (\x1,0) -- (\x1,\timingheight)
-   coordinate (timing@dstart) at (\x1,\timingheight/2) (\x1,\y1) 
+  {[timing/every char,timing/g] let \p1 = +(0,0) in (\x1,0) -- (\x1,\timingheight)
+   coordinate (timing@dstart) at (\x1,\timingheight/2) (\x1,\y1)
   }%
 }
 %    \end{macrocode}
 %
 % \subsection{Character `H'}
 %    \begin{macrocode}
-\tikztimingchar{H}{++(0,\height)}{-- ++(#1,0)}
+\tikztimingchar{H}{++(0,\height)}{[\style] -- ++(#1,0)}
 
 \tikztimingdef{HH}{
   -- ++(#1,0)
@@ -5105,7 +5177,7 @@
 }
 
 \tikztimingdef{ZH}{
-    \newdraw
+    \newdraw [\style]
   -- ++(\zslope,+\height/2.)
   -- ++($ (#1,0) - (\zslope,0) $)
 }
@@ -5133,7 +5205,7 @@
 % \subsection{Character `'}
 %    \begin{macrocode}
 
-\tikztimingchar{L}{++(0,0)}{-- ++(#1,0)}
+\tikztimingchar{L}{++(0,0)}{[\style] -- ++(#1,0)}
 
 \tikztimingchar{Z}{++(0,\height/2.)}{%
   \newdraw [\style]
@@ -5197,7 +5269,7 @@
   -- ++($ (#1,0) - (\zslope,0) $)
 }
 \tikztimingdef{ZL}{%
-  \newdraw
+  \newdraw [\style]
   -- ++(\zslope,-\height/2.)
   -- ++($ (#1,0) - (\zslope,0) $)
 }
@@ -5210,7 +5282,7 @@
 
 \def\tikztiming@chard#1{%
   \newdraw [\style,preaction={\bgstyle}]
-  coordinate (timing@dstart) 
+  coordinate (timing@dstart)
   -- +(\dslope/2,\height/2)
   --  ($ (timing@ref) + (#1,\height/2) $)
   -- +(\dslope/2,-\height/2)
@@ -5224,7 +5296,7 @@
   \tikztiming@oldnodecenter{%
     (-\dslope/2,-\height/2)
   }%
-  \newdraw
+  \newdraw [timing/every char]
 }
 
 \def\tikztiming@chard@#1{%
@@ -5247,7 +5319,7 @@
   \tikztiming@oldnodecenter{%
     (0,-\height/2)
   }%
-  \newdraw
+  \newdraw [timing/every char]
 }
 
 \def\tikztiming@@chard#1{%
@@ -5276,7 +5348,7 @@
   \tikztiming@oldnodecenter{%
     (-\dslope/2,-\height/2)
   }%
-  \newdraw
+  \newdraw [timing/every char]
 }
 
 \def\tikztiming@@chard@#1{%
@@ -5302,7 +5374,7 @@
   \tikztiming@oldnodecenter{%
     (0,-\height/2)
   }%
-  \newdraw
+  \newdraw [timing/every char]
 }
 
 \def\tikztiming@dchardu#1{%
@@ -5327,7 +5399,7 @@
   \tikztiming@oldnodecenter{%
     (-\dslope/2,-\height/2)
   }%
-  \newdraw
+  \newdraw [timing/every char]
 }
 
 \def\tikztiming@uchardd#1{%
@@ -5351,7 +5423,7 @@
   \tikztiming@oldnodecenter{%
       ($ (0,0) - (0,\height/2) $)
   }%
-  \newdraw
+  \newdraw [timing/every char]
 }
 
 \tikztimingdef{DD}{%
@@ -5381,7 +5453,7 @@
   \tikztiming@oldnodecenter{%
     (0,-\height/2)
   }%
-  \newdraw
+  \newdraw [timing/every char]
 }
 
 \tikztimingdef{DD@}{
@@ -5693,7 +5765,7 @@
 }
 
 \tikztimingdef{ZT}{%
-  \newdraw {[\style]
+  \newdraw [timing/every char] {[\style]
   \code{\setcounter{tikztimingtrans}{-\value{tikztimingtrans}}}
   -- ++(\zslope,\value{tikztimingtrans}*\height/2.)
   -- ++($ (#1,0) - (\zslope,0) $)
@@ -5711,7 +5783,7 @@
 \tikztimingdef{DT}{
   \code{\setcounter{tikztimingtrans}{-1}}
   \tikztiming@oldnodecenter@%
-  \newdraw {[\style]
+  \newdraw [timing/every char] {[\style]
   --  +(\dslope/2.,-\height/2)
   --   ($ (timing@ref) + (#1,-\height/2) $)
   }
@@ -5851,8 +5923,8 @@
   \tikztiming@library@#1,\relax
 }
 %    \end{macrocode}
-% Load the library as package. The \LaTeX\ core macro \cs{zap@space} is patched 
-% to a no-op to keep spaces in the option text. Otherwise the option keys may 
+% Load the library as package. The \LaTeX\ core macro \cs{zap@space} is patched
+% to a no-op to keep spaces in the option text. Otherwise the option keys may
 % not contain spaces.
 %    \begin{macrocode}
 \def\tikztiming@zap@space#1 \@empty{#1}
@@ -5873,17 +5945,28 @@
   \@ifnextchar\relax{}{\tikztiming@library@}%
 }
 %    \end{macrocode}
-%
 % \iffalse
-%</package>
+%</tikz-timing.sty>
 % \fi
 %
-% \section{Libraries}
+% \subsection{Libraries}
 %
-% \subsection{Either High or Low}
+% \subsubsection{Either High or Low}
 % \iffalse
-%<*lib-either>
+%<*tikz-timing-either.sty>
 % \fi
+%    \begin{macrocode}
+%<!COPYRIGHT>
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{tikz-timing-either}[%
+%<!DATE>
+%<!VERSION>
+%<*DRIVER>
+    2099/01/01 develop
+%</DRIVER>
+    tikz-timing library for uncertain transitions]
+%    \end{macrocode}
+%
 % Provides character "E".
 %    \begin{macrocode}
 \tikztimingchar{E}{
@@ -5894,7 +5977,7 @@
   \code{\setcounter{tikztimingtranspos}{0}}%
   \code{\setcounter{tikztimingtrans}{1}}%
   \tikztiminguse{D}{#1}%
-  \newdraw
+  \newdraw [\style]
 }
 \def\tikztiming@triple@E{}%
 
@@ -5910,7 +5993,7 @@
      ++($ -1*(#1,\height) $)%
   -- ++($  1*(#1,0) $)%
      ++(0,.5\height)%
-  \newdraw
+  \newdraw [\nstyle]
   \code{\setcounter{tikztimingtranspos}{0}}%
   \code{\setcounter{tikztimingtrans}{1}}%
 }%
@@ -5927,7 +6010,7 @@
      ++($ -1*(#1,-\height) $)%
   -- ++($  1*(#1,0) $)%
      ++(0,-.5\height)%
-  \newdraw
+  \newdraw [\nstyle]
   \code{\setcounter{tikztimingtranspos}{1}}%
   \code{\setcounter{tikztimingtrans}{-1}}%
 }%
@@ -5944,7 +6027,7 @@
      ++($ -1*(#1,-\height * \value{tikztimingtrans}) $)%
   -- ++($  1*(#1,0) $)%
      ++(0,-1*\value{tikztimingtrans}*.5*\height)%
-  \newdraw
+  \newdraw [\nstyle]
 }%
 
 \tikztimingdef{LEL}{%
@@ -5955,7 +6038,7 @@
   -- +(0,0)
     ++(#1,\height/2) coordinate (timing@ref)
     ++(\slope,-\height/2)%
-  \newdraw
+  \newdraw [\nstyle]
 }%
 
 \tikztimingdef{LEH}{%
@@ -5966,7 +6049,7 @@
   -- +(0,0)
     ++(#1,\height/2) coordinate (timing@ref)
     ++(\slope,\height/2)%
-  \newdraw
+  \newdraw [\nstyle]
 }%
 
 \tikztimingdef{HEH}{%
@@ -5977,7 +6060,7 @@
   -- +(0,0)
     ++(#1,-\height/2) coordinate (timing@ref)
     ++(\slope,\height/2)%
-  \newdraw
+  \newdraw [\nstyle]
 }%
 
 \tikztimingdef{HEL}{%
@@ -5988,7 +6071,7 @@
   -- +(0,0)
     ++(#1,-\height/2) coordinate (timing@ref)
     ++(\slope,-\height/2)%
-  \newdraw
+  \newdraw [\nstyle]
 }%
 
 \tikztimingdef{HET}{
@@ -6003,7 +6086,7 @@
     ++(#1,-\height/2) coordinate (timing@ref)
     ++(\slope,-\height/2)%
   }
-  \newdraw
+  \newdraw [\nstyle]
   \code{\setcounter{tikztimingtrans}{-1}}%
 }
 
@@ -6020,13 +6103,13 @@
       coordinate (timing@ref)
     ++(\slope,\height/2)%
   }
-  \newdraw
+  \newdraw [\nstyle]
   \code{\setcounter{tikztimingtrans}{1}}%
 }
 
 \tikztimingdef{HEE}{%
   \newdraw [\style,preaction={\bgstyle}]
-  -- +(#1,0) coordinate (timing@refb) 
+  -- +(#1,0) coordinate (timing@refb)
       \tikztiming@setref{timing@ref}{0,-\height/2}
   -- +($ (#1,-\height) + (\slope,0) $) coordinate (timing@refa)
   -- +(\slope,-\height)
@@ -6035,7 +6118,7 @@
     ++($ (#1,-\height) + (\slope,0) $)%
   \code{\setcounter{tikztimingtranspos}{1}}%
   \code{\setcounter{tikztimingtrans}{-1}}%
-  \newdraw
+  \newdraw [\nstyle]
 }%
 
 \tikztimingdef{LEE}{%
@@ -6048,7 +6131,7 @@
     ++(#1,0) \tikztiming@setref{timing@ref}{0,\height/2}
   \code{\setcounter{tikztimingtranspos}{0}}%
   \code{\setcounter{tikztimingtrans}{1}}%
-  \newdraw
+  \newdraw [\nstyle]
 }%
 
 \tikztimingdef{TEE}{%
@@ -6063,14 +6146,14 @@
         coordinate (timing@refa)
       +($ (#1,0) + (\slope/2 - \slope/2 * \value{tikztimingtrans}, \height - \height/2 * \value{tikztimingtranspos}) $)
         coordinate (timing@refb)
-     ++(#1,0) 
+     ++(#1,0)
       \tikztiming@setref{timing@ref}{0,-\height/2 * \value{tikztimingtrans}}
      ++(
           .5 * \slope  + .5 * \value{tikztimingtrans} * \slope,
          -.5 * \height - .5 * \value{tikztimingtrans} * \height
        )
   \code{\setcounter{tikztimingtrans}{-\value{tikztimingtrans}}}
-  \newdraw
+  \newdraw [\nstyle]
 }%
 
 
@@ -6083,7 +6166,7 @@
   -- ++($ -1*(#1,0) - (\slope/2 + \slope/2 * \value{tikztimingtrans},0) $)
      ++($ (#1,-\height/2 * \value{tikztimingtrans}) $) coordinate (timing@ref)
      ++(\slope,\height/2)
-  \newdraw
+  \newdraw [\nstyle]
 }
 
 \tikztimingdef{TEL}{%
@@ -6095,7 +6178,7 @@
   -- ++($ -1*(#1,0) - (\slope/2 + -\slope/2 * \value{tikztimingtrans},0) $)
      ++($ (#1,-\height/2 * \value{tikztimingtrans}) $) coordinate (timing@ref)
      ++(\slope,-\height/2)
-  \newdraw
+  \newdraw [\nstyle]
 }
 
 \tikztimingdef{TEZ}{%
@@ -6110,7 +6193,7 @@
      ++($ (#1,0) + (0,-\height/2 * \value{tikztimingtrans}) $)
        coordinate (timing@ref)
      ++(\zslope,0)
-  \newdraw
+  \newdraw [\nstyle]
 }
 
 \tikztimingdef{TED}{%
@@ -6125,7 +6208,7 @@
      ++($ (#1,0) + (0,-\height/2 * \value{tikztimingtrans}) $)
        coordinate (timing@ref)
      ++(\dslope/2,0)
-  \newdraw
+  \newdraw [\nstyle]
 }
 
 \tikztimingdef{TET}{%
@@ -6142,7 +6225,7 @@
      ++(\slope, -\height/2 * \value{tikztimingtrans})%
    }
   \code{\setcounter{tikztimingtrans}{-\value{tikztimingtrans}}}
-  \newdraw
+  \newdraw [\nstyle]
 }%
 
 \tikztimingdef{EEZ}{%
@@ -6289,7 +6372,7 @@
       ++(#1,0) coordinate (timing@refa)
         coordinate (timing@refb) at ($ (timing@refb) + (#1,0) $)
         coordinate (timing@ref)  at ($ (timing@ref)  + (#1,0) $)
-  \newdraw
+  \newdraw [\nstyle]
 }%
 
 \tikztimingdef{EET}{%
@@ -6304,7 +6387,7 @@
       ($ (timing@ref)  + (#1,\height/2 * \value{tikztimingtrans}) + (\slope,0) $)
    }
       coordinate (timing@ref) at ($ (timing@ref) + (#1,0) $)
-  \newdraw
+  \newdraw [\nstyle]
 }%
 
 \tikztimingdef{EEL}{%
@@ -6315,7 +6398,7 @@
    --   (timing@refa)
         ($ (timing@ref)  + (#1,-\height/2) + (\slope,0) $)
       coordinate (timing@ref) at ($ (timing@ref) + (#1,0) $)
-  \newdraw
+  \newdraw [\nstyle]
 }%
 
 \tikztimingdef{EEH}{%
@@ -6326,7 +6409,7 @@
    --   (timing@refa)
         ($ (timing@ref)  + (#1,+\height/2) + (\slope,0) $)
       coordinate (timing@ref) at ($ (timing@ref) + (#1,0) $)
-  \newdraw
+  \newdraw [\nstyle]
 }%
 
 
@@ -6344,7 +6427,7 @@
      +(0,\y1-\y2)
   --  (\p1)
       ($ (timing@ref) + (#1,0) $) coordinate (timing@ref)
-  \newdraw
+  \newdraw [\nstyle]
 }%
 
 \tikztimingdef{ZE@}{
@@ -6372,7 +6455,7 @@
   -- +(0,0)
     ++(#1,0) coordinate (timing@ref)
     ++(\slope, \height/2)
-  \newdraw
+  \newdraw [\nstyle]
 }
 
 \tikztimingdef{ZEL}{%
@@ -6384,7 +6467,7 @@
   -- +(0,0)
     ++(#1,0) coordinate (timing@ref)
     ++(\slope, -\height/2)
-  \newdraw
+  \newdraw [\nstyle]
 }
 
 \tikztimingdef{ZET}{%
@@ -6401,7 +6484,7 @@
      ++(\slope,-\height/2 * \value{tikztimingtrans})
   }
   \code{\setcounter{tikztimingtrans}{-\value{tikztimingtrans}}}
-  \newdraw
+  \newdraw [\nstyle]
 }
 
 \tikztimingdef{DET}{%
@@ -6419,7 +6502,7 @@
      ++(\slope,-\height/2 * \value{tikztimingtrans})
   }
   \code{\setcounter{tikztimingtrans}{-\value{tikztimingtrans}}}
-  \newdraw
+  \newdraw [\nstyle]
 }
 
 \tikztimingdef{ZEZ}{%
@@ -6432,7 +6515,7 @@
   -- +(0,0)
     ++(#1,0) coordinate (timing@ref)
     ++(\zslope, 0)
-  \newdraw
+  \newdraw [\nstyle]
 }
 
 \tikztimingdef{ZEE}{%
@@ -6475,7 +6558,7 @@
       ($ (timing@ref) + (#1,0) $)
       coordinate (timing@ref)
     ++(\dslope/2,0)
-  \newdraw
+  \newdraw [\nstyle]
 }
 
 \tikztimingdef{ZED}{%
@@ -6488,7 +6571,7 @@
   -- +(0,0)
     ++(#1,0) coordinate (timing@ref)
     ++(\dslope/2, 0)
-  \newdraw
+  \newdraw [\nstyle]
 }
 
 \tikztimingdef{DEZ}{%
@@ -6503,7 +6586,7 @@
       ($ (timing@ref) + (#1,0) $)
       coordinate (timing@ref)
     ++(\zslope, 0)
-  \newdraw
+  \newdraw [\nstyle]
 }
 
 
@@ -6511,13 +6594,13 @@
   \tikztiming@oldnodecenter@%
   \newdraw [\style,preaction={\bgstyle}]
   -- +(\dslope/2, \height/2)
-  --  ($ (timing@ref) + (#1,0) + (\slope, \height/2) $) 
+  --  ($ (timing@ref) + (#1,0) + (\slope, \height/2) $)
   --  ($ (timing@ref) + (#1,-\height/2) $)
   --  ($ (timing@save) + (\dslope/2, -\height/2) $)
   --  (timing@save)
       ($ (timing@ref) + (#1,0) $) coordinate (timing@ref)
     ++(\slope, \height/2)
-  \newdraw
+  \newdraw [\nstyle]
 }
 
 \tikztimingdef{DEL}{%
@@ -6525,12 +6608,12 @@
   \newdraw [\style,preaction={\bgstyle}]
   -- +(\dslope/2, \height/2)
   --  ($ (timing@ref) + (#1,\height/2) $)
-  --  ($ (timing@ref) + (#1,0) + (\slope, -\height/2) $) 
+  --  ($ (timing@ref) + (#1,0) + (\slope, -\height/2) $)
   --  ($ (timing@save) + (\dslope/2, -\height/2) $)
   --  (timing@save)
       ($ (timing@ref) + (#1,0) $) coordinate (timing@ref)
     ++(\slope, -\height/2)
-  \newdraw
+  \newdraw [\nstyle]
 }
 
 
@@ -6544,6 +6627,10 @@
   \tikztiming@@chard{#1}%
 }
 \tikztimingdef{DDE}{
+    ++(0,-\height/2)
+  \tikztiming@oldnodecenter{%
+    (0,+\height/2)
+  }%
   \tikztiming@@chard{#1}%
 }
 
@@ -6561,7 +6648,7 @@
    -- +(0,0)
      ++(#1,\height/2) coordinate (timing@ref)
      ++(\slope,\height/2)
-  \newdraw
+  \newdraw [\nstyle]
 }
 
 \tikztimingdef{@ET}{%
@@ -6584,7 +6671,7 @@
       ($ (timing@ref) + (#1,0) $) coordinate (timing@ref)
     ++(\slope,\height/2)
   }
-  \newdraw
+  \newdraw [\nstyle]
   \code{\setcounter{tikztimingtrans}{-\value{tikztimingtrans}}}
 }
 
@@ -6608,7 +6695,7 @@
    -- +(0,0)
      ++(#1,\height/2) coordinate (timing@ref)
      ++(\slope,-\height/2)
-  \newdraw
+  \newdraw [\nstyle]
 }
 
 \tikztimingdef{@ED}{%
@@ -6669,25 +6756,44 @@
 \def\tikztiming@nocombine@E{}%%
 %    \end{macrocode}
 %
-%  \iffalse
-%</lib-either>
+% \iffalse
+%</tikz-timing-either.sty>
 % \fi
 %
-% \subsection{Clock Arrows}
+% \subsubsection{Clock Arrows}
 % \iffalse
-%<*lib-clockarrows>
-%  \fi
+%<*tikz-timing-clockarrows.sty>
+% \fi
+%    \begin{macrocode}
+%<!COPYRIGHT>
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{tikz-timing-clockarrows}[%
+%<!DATE>
+%<!VERSION>
+%<*DRIVER>
+    2099/01/01 develop
+%</DRIVER>
+    tikz-timing library for timing clock arrows]
+%    \end{macrocode}
+%
 %    \begin{macrocode}
 \tikztiming@iftrans{CC}%
   {\let\tikztiming@trans@C@normal@C\tikztiming@trans@CC}%
-  {\PackageError{\@currname}{No 'CC' transition defined by the main tikz-timing 
+  {\PackageError{\@currname}{No 'CC' transition defined by the main tikz-timing
+  package.}{}}%
+\tikztiming@iftrans{HC}%
+  {\let\tikztiming@trans@H@normal@C\tikztiming@trans@HC}%
+  {\PackageError{\@currname}{No 'HC' transition defined by the main tikz-timing
+  package.}{}}%
+\tikztiming@iftrans{LC}%
+  {\let\tikztiming@trans@L@normal@C\tikztiming@trans@LC}%
+  {\PackageError{\@currname}{No 'LC' transition defined by the main tikz-timing
   package.}{}}%
 
 \tikztimingdef{CC}{%
   \code{\setcounter{tikztimingtrans}{-\value{tikztimingtrans}}}
   [timing/c/save]
-  \newdraw 
-  [\style,timing/c/restore,>=\noexpand\tikztiming@c@arrow@tip,timing/c/arrow@style]
+  \newdraw [\style,timing/c/restore,>=\noexpand\tikztiming@c@arrow@tip,timing/c/arrow@style]
   -- ++(\slope*\noexpand\tikztiming@c@arrow@pos,\value{tikztimingtrans}*\height*\noexpand\tikztiming@c@arrow@pos)
   ; \draw [timing/restore,timing/c/restore] (timing@save) ++(0,0) [\style]
   -- ++(\slope,\value{tikztimingtrans}*\height)
@@ -6695,21 +6801,52 @@
 }
 \let\tikztiming@trans@C@arrow@C\tikztiming@trans@CC
 
+\tikztimingdef{HC}{%
+  \code{\setcounter{tikztimingtrans}{-1}}
+  [timing/c/save]
+  \newdraw [\style,timing/c/restore,>=\noexpand\tikztiming@c@arrow@tip,timing/c/arrow@style]
+  -- ++(\slope*\noexpand\tikztiming@c@arrow@pos,\value{tikztimingtrans}*\height*\noexpand\tikztiming@c@arrow@pos)
+  ; \draw [timing/restore,timing/c/restore] (timing@save) ++(0,0) [\style]
+  -- ++(\slope,\value{tikztimingtrans}*\height)
+  -- ++($ (#1,0) - (\slope,0) $)
+}
+\let\tikztiming@trans@H@arrow@C\tikztiming@trans@HC
+
+\tikztimingdef{LC}{%
+  \code{\setcounter{tikztimingtrans}{+1}}
+  [timing/c/save]
+  \newdraw [\style,timing/c/restore,>=\noexpand\tikztiming@c@arrow@tip,timing/c/arrow@style]
+  -- ++(\slope*\noexpand\tikztiming@c@arrow@pos,\value{tikztimingtrans}*\height*\noexpand\tikztiming@c@arrow@pos)
+  ; \draw [timing/restore,timing/c/restore] (timing@save) ++(0,0) [\style]
+  -- ++(\slope,\value{tikztimingtrans}*\height)
+  -- ++($ (#1,0) - (\slope,0) $)
+}
+\let\tikztiming@trans@L@arrow@C\tikztiming@trans@LC
+
+
 \tikzset{timing/c/.cd,
   rising arrows/.code={%
-    \def\tikztiming@trans@CC{\tikztiming@trans@C@arrow@C}%
+    \let\tikztiming@trans@CC\tikztiming@trans@C@arrow@C%
+    \let\tikztiming@trans@LC\tikztiming@trans@L@arrow@C%
+    \let\tikztiming@trans@HC\tikztiming@trans@H@arrow@C%
     \def\tikztiming@clockarrow@style{\ifnum1=\c@tikztimingtrans\tikzset{->,timing/c/arrow}\fi}%
   },%
   falling arrows/.code={%
-    \def\tikztiming@trans@CC{\tikztiming@trans@C@arrow@C}%
+    \let\tikztiming@trans@CC\tikztiming@trans@C@arrow@C%
+    \let\tikztiming@trans@LC\tikztiming@trans@L@arrow@C%
+    \let\tikztiming@trans@HC\tikztiming@trans@H@arrow@C%
     \def\tikztiming@clockarrow@style{\ifnum-1=\c@tikztimingtrans\tikzset{->,timing/c/arrow}\fi}%
   },%
   dual arrows/.code={%
-    \def\tikztiming@trans@CC{\tikztiming@trans@C@arrow@C}%
+    \let\tikztiming@trans@CC\tikztiming@trans@C@arrow@C%
+    \let\tikztiming@trans@LC\tikztiming@trans@L@arrow@C%
+    \let\tikztiming@trans@HC\tikztiming@trans@H@arrow@C%
     \def\tikztiming@clockarrow@style{\tikzset{->,timing/c/arrow}}%
   },%
   no arrows/.code={%
-    \def\tikztiming@trans@CC{\tikztiming@trans@C@normal@C}%
+    \let\tikztiming@trans@CC\tikztiming@trans@C@normal@C%
+    \let\tikztiming@trans@LC\tikztiming@trans@L@normal@C%
+    \let\tikztiming@trans@HC\tikztiming@trans@H@normal@C%
     \def\tikztiming@clockarrow@style{}%
   },%
   arrow@style/.code={\tikztiming@clockarrow@style},%
@@ -6742,16 +6879,28 @@
 \ProcessPgfOptions{/tikz/timing/c}
 %    \end{macrocode}
 % \iffalse
-%</lib-clockarrows>
+%</tikz-timing-clockarrows.sty>
 % \fi
 %
-% \subsection{Arrows}
+% \subsubsection{Arrows}
 % \iffalse
-%<*lib-arrows>
+%<*tikz-timing-arrows.sty>
 % \fi
+%    \begin{macrocode}
+%<!COPYRIGHT>
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{tikz-timing-arrows}[%
+%<!DATE>
+%<!VERSION>
+%<*DRIVER>
+    2099/01/01 develop
+%</DRIVER>
+    tikz-timing library for timing arrows]
+%    \end{macrocode}
+%
 % This library is only defining the "A" and "W" basic transitions ("AA", "AW", "WA", "WW").
 % While "W" is simply a copy of "A" with a different style. Both simple draw a line from |low|
-% to |high| and than move the position to the right according to the |width| value and back to 
+% to |high| and than move the position to the right according to the |width| value and back to
 % the |low| position. The different arrow directions are done by different styles.
 %    \begin{macrocode}
 \tikzset{timing/.cd,
@@ -6763,7 +6912,7 @@
 
 \tikztimingchar{A}{++(0,0)}{%
   \newdraw [\style] -- ++(0,\height)
-  \newdraw ++(#1,-\height)
+  \newdraw [timing/every char] ++(#1,-\height)
 }
 \def\tikztiming@nocombine@A{}%
 
@@ -6771,20 +6920,32 @@
 %    \end{macrocode}
 %
 % \iffalse
-%</lib-arrows>
+%</tikz-timing-arrows.sty>
 % \fi
 %
-% \subsection{Overlays}
+% \subsubsection{Overlays}
 % \iffalse
-%<*lib-overlays>
+%<*tikz-timing-overlays.sty>
 % \fi
+%    \begin{macrocode}
+%<!COPYRIGHT>
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{tikz-timing-overlays}[%
+%<!DATE>
+%<!VERSION>
+%<*DRIVER>
+    2099/01/01 develop
+%</DRIVER>
+    tikz-timing library for timing overlays]
+%    \end{macrocode}
+%
 % \begin{macro}{\tikztiming@defcode{O}}
-% The last character before the "O" is saved and restored. Also the drawing 
-% state is saved and restored by the \cs{tikztiming@overlay@begin} and 
-% \cs{tikztiming@overlay@end} macros. The parser end macro 
-% \cs{tikztiming@parser@end} which is triggered at the end of the overlay string 
-% is redefined to avoid problems. The double \TeX\ group is necessary because 
-% the overlay string can close and reopen the inner \TeX\ 
+% The last character before the "O" is saved and restored. Also the drawing
+% state is saved and restored by the \cs{tikztiming@overlay@begin} and
+% \cs{tikztiming@overlay@end} macros. The parser end macro
+% \cs{tikztiming@parser@end} which is triggered at the end of the overlay string
+% is redefined to avoid problems. The double \TeX\ group is necessary because
+% the overlay string can close and reopen the inner \TeX\
 % group.
 %    \begin{macrocode}
 \tikztiming@defcode{O}#1{%
@@ -6821,10 +6982,10 @@
 %
 % \begin{macro}{\tikztiming@overlay@begin}
 % The drawing transition state (for "T", etc.) is saved and restored.
-% In order to be able to include an "O" inside the argument of another one the 
-% overlay save node coordinates (\cs{pfg@sh@nt@tikztiming@overlay@node}) is also 
-% saved and restored. The \cs{tikztiming@overlay@save} macro also includes an 
-% self-assignment to its old version, which implements a stack. The macros must 
+% In order to be able to include an "O" inside the argument of another one the
+% overlay save node coordinates (\cs{pfg@sh@nt@tikztiming@overlay@node}) is also
+% saved and restored. The \cs{tikztiming@overlay@save} macro also includes an
+% self-assignment to its old version, which implements a stack. The macros must
 % be global because the overlay string can reopen a new TikZ path.
 %    \begin{macrocode}
 \def\tikztiming@overlay@begin{
@@ -6862,13 +7023,25 @@
 %
 %
 % \iffalse
-%</lib-overlays>
+%</tikz-timing-overlays.sty>
 % \fi
 %
-% \subsection{Column Type}
+% \subsubsection{Column Type}
 % \iffalse
-%<*lib-columntype>
+%<*tikz-timing-columntype.sty>
 % \fi
+%    \begin{macrocode}
+%<!COPYRIGHT>
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{tikz-timing-columntype}[%
+%<!DATE>
+%<!VERSION>
+%<*DRIVER>
+    2099/01/01 develop
+%</DRIVER>
+    tikz-timing library for timing cell types]
+%    \end{macrocode}
+%
 % The \pkg{array} package is needed to define the column type.
 %    \begin{macrocode}
 \RequirePackage{array}
@@ -6877,7 +7050,7 @@
   \newcolumntype{#1}{>{\celltiming}#2<{\endcelltiming}}%
 }%
 %    \end{macrocode}
-% 
+%
 % The options |type| (calls |timing/columntype|) and |notype| are defined.
 %    \begin{macrocode}
 \RequirePackage{pgfopts}
@@ -6889,7 +7062,7 @@
 
 \ProcessPgfOptions{/tikz/timing/columntype}
 %    \end{macrocode}
-% Use default settings if no options where given. This works because all options 
+% Use default settings if no options where given. This works because all options
 % so far will change the default type.
 %    \begin{macrocode}
 \expandafter\ifx\csname opt@\@currname.\@currext\endcsname\empty
@@ -6898,11 +7071,11 @@
 %    \end{macrocode}
 %
 % \begin{macro}{\celltiming}[1]{Some ignored tokens}
-% The macro first reads everything to the |\ignorespaces| placed by the 
-% |tabular|. After placing the tokens except |\ignorespaces| back a 
-% |tikzpicture| is started. The \cs{tikztiming@endhook} is defined to call 
+% The macro first reads everything to the |\ignorespaces| placed by the
+% |tabular|. After placing the tokens except |\ignorespaces| back a
+% |tikzpicture| is started. The \cs{tikztiming@endhook} is defined to call
 % \cs{end@celltiming}.
-% After the usual init process the input is tested for an optional argument and 
+% After the usual init process the input is tested for an optional argument and
 % \cs{tikztiming@celltiming} is called accordantly.
 %    \begin{macrocode}
 \def\celltiming#1\ignorespaces{%
@@ -6919,18 +7092,18 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\tikztiming@celltiming}[1]{Optional Initial Character or 
+% \begin{macro}{\tikztiming@celltiming}[1]{Optional Initial Character or
 % Settings}
-% First the optional argument is tested to see if it is a single initial 
-% character or some settings. The \cs{tikztiming@testoptarg} macro sets the 
+% First the optional argument is tested to see if it is a single initial
+% character or some settings. The \cs{tikztiming@testoptarg} macro sets the
 % \cs{lastchar} and \cs{settings} macros to the appropriate values.
 %
 % If the \cs{lastchar} is empty it is set to the normal start value.
 %
-% Then a \pkg{pgf} scope with the potential user settings is started. The macros  
-% |\unskip| and |\\| which are used internally by the |tabular| environment are 
-% |\let| to |\relax| to work as end marker for the \cs{tikztiming@parser}.  This 
-% will not influence the table because they will revert to their original 
+% Then a \pkg{pgf} scope with the potential user settings is started. The macros
+% |\unskip| and |\\| which are used internally by the |tabular| environment are
+% |\let| to |\relax| to work as end marker for the \cs{tikztiming@parser}.  This
+% will not influence the table because they will revert to their original
 % definition at the end of the |tikzpicture| environment.
 %
 % Finally the \cs{tikztiming@parser} is called.
@@ -6952,15 +7125,15 @@
 % \end{macro}
 %
 % \begin{macro}{\end@celltiming}
-% This macro is called from the \cs{tikztiming@endhook} which is located in 
-% \cs{tikztiming@parser@end} when the end marker (|\relax| or alias) is 
-% encountered. It executes the accumulated \cs{tikztiming@str} and places the 
+% This macro is called from the \cs{tikztiming@endhook} which is located in
+% \cs{tikztiming@parser@end} when the end marker (|\relax| or alias) is
+% encountered. It executes the accumulated \cs{tikztiming@str} and places the
 % timing shape. Finally the |scope| and |tikzpicture| is closed.
 %    \begin{macrocode}
 \def\end@celltiming{%
     \tikzset{timing/before}%
     \tikztiming@str;
-    \expandafter\node 
+    \expandafter\node
     \expandafter[\tikztiming@settings,shape=tikztiming@shape,anchor=origin] at (0,0) {};
     \tikzset{timing/after}%
   \endscope
@@ -6970,13 +7143,25 @@
 % \end{macro}
 %
 % \iffalse
-%</lib-columntype>
+%</tikz-timing-columntype.sty>
 % \fi
 %
-% \subsection{Nice Timing Tables}
+% \subsubsection{Nice Timing Tables}
 % \iffalse
-%<*lib-nicetabs>
+%<*tikz-timing-nicetabs.sty>
 % \fi
+%    \begin{macrocode}
+%<!COPYRIGHT>
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{tikz-timing-nicetabs}[%
+%<!DATE>
+%<!VERSION>
+%<*DRIVER>
+    2099/01/01 develop
+%</DRIVER>
+    tikz-timing library for nice timing tables]
+%    \end{macrocode}
+%
 % The dimensions of the following packages are used.
 %    \begin{macrocode}
 \RequirePackage{array}
@@ -6991,8 +7176,8 @@
 \newcommand*\tikztiming@nicetabs@tableheader[1][]{%
   \path [timing/table/midrules] [/utils/exec=\xdef\@gtempa{\the\pgflinewidth}];
   \path [timing/table/header,#1]
-    let \p1 = (0,\belowrulesep + \aboverulesep + \@gtempa 
-            + \arraystretch\ht\strutbox + \arraystretch*\extrarowheight 
+    let \p1 = (0,\belowrulesep + \aboverulesep + \@gtempa
+            + \arraystretch\ht\strutbox + \arraystretch*\extrarowheight
             + \arraystretch\dp\strutbox)
     in
       coordinate (diagram@header) at (0,\y1)
@@ -7087,13 +7272,25 @@
 \ProcessPgfOptions{/tikz/timing/nicetabs}
 %    \end{macrocode}
 % \iffalse
-%</lib-nicetabs>
+%</tikz-timing-nicetabs.sty>
 % \fi
 %
-% \subsection{Counters}
+% \subsubsection{Counters}
 % \iffalse
-%<*lib-counters>
+%<*tikz-timing-counters.sty>
 % \fi
+%    \begin{macrocode}
+%<!COPYRIGHT>
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{tikz-timing-counters}[%
+%<!DATE>
+%<!VERSION>
+%<*DRIVER>
+    2099/01/01 develop
+%</DRIVER>
+    tikz-timing library for counter values]
+%    \end{macrocode}
+%
 %
 %    \begin{macrocode}
 \newif\if@tikztiming@counter@wraps
@@ -7170,7 +7367,7 @@
   \pgfqkeys{/tikz/timing/counter/opt}{#1}%
   \tikzset{timing/counter/opt/char/.get=\counterchar}%
   \ifx\counterchar\empty
-    \PackageError{tikz-timing-counters}{Counter character must be given using 
+    \PackageError{tikz-timing-counters}{Counter character must be given using
     the 'char' key!}{}%
     \endgroup
   \else
@@ -7230,7 +7427,7 @@
     \pgfkeys{/tikz/timing/counter/opt/text style/.get=\textstyle}%
     \pgfkeys{/tikz/timing/counter/opt/text format/.get=\textformat}%
 %    \end{macrocode}
-% Finally the \cs{tikztiming@counter@new@} macro is called with most of the 
+% Finally the \cs{tikztiming@counter@new@} macro is called with most of the
 % settings as expanded arguments.
 %    \begin{macrocode}
     \pgfkeys{/tikz/timing/counter/opt/increment/.get=\increment}%
@@ -7257,7 +7454,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\tikztiming@counter@new@}[9]{Character}{Base}{Half Width 
+% \begin{macro}{\tikztiming@counter@new@}[9]{Character}{Base}{Half Width
 % Character}{Reset Character}{Number of Digits}{Increment}{Boundary Code}{Min Value}{Reset Type}
 %    \begin{macrocode}
 \def\tikztiming@counter@new@#1#2#3#4#5#6#7#8#9{%
@@ -7323,7 +7520,7 @@
 % \end{macro}
 %
 % \begin{macro}{\tikztiming@counter@reset}[2]{Character to Reset}{Reset value}
-% The counter is set first using pgf to round the value correctly and then again 
+% The counter is set first using pgf to round the value correctly and then again
 % with \cs{setcounter} to make it global.
 %    \begin{macrocode}
 \def\tikztiming@counter@reset#1#2{%
@@ -7412,14 +7609,26 @@
 \ProcessPgfOptions{/tikz/timing/counter}
 %    \end{macrocode}
 % \iffalse
-%</lib-counters>
+%</tikz-timing-counters.sty>
 % \fi
 %
-% \subsection{Advanced Nodes}
+% \subsubsection{Advanced Nodes}
 % \iffalse
-%<*lib-advnodes>
+%<*tikz-timing-advnodes.sty>
 % \fi
 %    \begin{macrocode}
+%<!COPYRIGHT>
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{tikz-timing-advnodes}[%
+%<!DATE>
+%<!VERSION>
+%<*DRIVER>
+    2099/01/01 develop
+%</DRIVER>
+    tikz-timing library for advanced nodes]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 
 \let\tikztiming@orig@oldnodecenter\tikztiming@oldnodecenter
 
@@ -7448,8 +7657,8 @@
 
 \def\anchoralias#1#2{%
   \expandafter\def
-  \csname pgf@anchor@\shape@name @#1\expandafter\endcsname
-  \expandafter{\csname pgf@anchor@\shape@name @#2\endcsname}%
+  \csname pgf@anchor@\pgf@sm@shape@name @#1\expandafter\endcsname
+  \expandafter{\csname pgf@anchor@\pgf@sm@shape@name @#2\endcsname}%
 }
 
 \def\tikztiming@anchorpoint#1#2#3{%
@@ -7581,7 +7790,7 @@
   \anchor{low2}{\tikztiming@useanchor{low2}}%
   \anchor{high2}{\tikztiming@useanchor{high2}}%
   %
-  \expandafter\anchorborder\expandafter{\csname pgf@anchor@\shape@name @center\endcsname}%
+  \expandafter\anchorborder\expandafter{\csname pgf@anchor@\pgf@sm@shape@name @center\endcsname}%
   %
   \nodeparts{}%
 }
@@ -8018,15 +8227,26 @@
 \ProcessPgfOptions{/tikz/timing/node}
 %    \end{macrocode}
 % \iffalse
-%</lib-advnodes>
+%</tikz-timing-advnodes.sty>
 % \fi
 %
-% \subsection{Intervals}
+% \subsubsection{Intervals}
 % \iffalse
-%<*lib-interval>
+%<*tikz-timing-interval.sty>
 % \fi
 %    \begin{macrocode}
-
+%<!COPYRIGHT>
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{tikz-timing-interval}[%
+%<!DATE>
+%<!VERSION>
+%<*DRIVER>
+    2099/01/01 develop
+%</DRIVER>
+    tikz-timing library for alternative Z transitions]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 \let\tikztiming@linterval\relax
 \let\tikztiming@rinterval\relax
 
@@ -8099,13 +8319,25 @@
 
 %    \end{macrocode}
 % \iffalse
-%</lib-interval>
+%</tikz-timing-interval.sty>
 % \fi
 %
-% \subsection{Beamer Overlay Support}
+% \subsubsection{Beamer Overlay Support}
 % \iffalse
-%<*lib-beamer>
+%<*tikz-timing-beamer.sty>
 % \fi
+%    \begin{macrocode}
+%<!COPYRIGHT>
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{tikz-timing-beamer}[%
+%<!DATE>
+%<!VERSION>
+%<*DRIVER>
+    2099/01/01 develop
+%</DRIVER>
+    tikz-timing library for beamer overlay support]
+%    \end{macrocode}
+%
 % Experimental library for marginal beamer overlay support. It will change in future versions. Use at own risk!
 %    \begin{macrocode}
 
@@ -8121,13 +8353,25 @@
 }
 %    \end{macrocode}
 % \iffalse
-%</lib-beamer>
+%</tikz-timing-beamer.sty>
 % \fi
 %
-% \subsection{Compatibility with \protect\pkg{ifsym} Macros}
+% \subsubsection{Compatibility with \protect\pkg{ifsym} Macros}
 % \iffalse
-%<*lib-ifsym>
+%<*tikz-timing-ifsym.sty>
 % \fi
+%    \begin{macrocode}
+%<!COPYRIGHT>
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{tikz-timing-ifsym}[%
+%<!DATE>
+%<!VERSION>
+%<*DRIVER>
+    2099/01/01 develop
+%</DRIVER>
+    tikz-timing library for ifsym compatible macros]
+%    \end{macrocode}
+%
 %
 % Set up styles to match behaviour of \pkg{ifsym}. Slope and size is is adjusted.
 % The macros only have 60\% of the height.
@@ -8142,7 +8386,7 @@
 %    \begin{macrocode}
     timing/metachar={|}{G},
 %    \end{macrocode}
-% The "X" is used for "M" and is set to black. 
+% The "X" is used for "M" and is set to black.
 %    \begin{macrocode}
     timing/x/.style={},
 %    \end{macrocode}
@@ -8231,11 +8475,9 @@
 \let\tikztiming@ifsym@def\@undefined
 %    \end{macrocode}
 % \iffalse
-%</lib-ifsym>
+%</tikz-timing-ifsym.sty>
 % \fi
 %
+%
 % \Finale
-\endinput
-% \iffalse
-% vim: foldmarker=%<*,%</ foldmethod=marker foldenable foldtext=foldtext()
-% \fi
+% \endinput
-- 
cgit v1.2.3

