summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/tikz-timing/tikz-timing.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2017-12-11 22:21:38 +0000
committerKarl Berry <karl@freefriends.org>2017-12-11 22:21:38 +0000
commitc56b93f86ac9c40c9edaceb99404ef79dd4107b7 (patch)
treea4ac21b493269a1d94b56e349f85e791b459adec /Master/texmf-dist/source/latex/tikz-timing/tikz-timing.dtx
parent123db0a82e69a247801bbc3f28e0d4f6df041732 (diff)
tikz-timing (11dec17)
git-svn-id: svn://tug.org/texlive/trunk@46035 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/tikz-timing/tikz-timing.dtx')
-rw-r--r--Master/texmf-dist/source/latex/tikz-timing/tikz-timing.dtx1674
1 files changed, 958 insertions, 716 deletions
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