From c56b93f86ac9c40c9edaceb99404ef79dd4107b7 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 11 Dec 2017 22:21:38 +0000 Subject: tikz-timing (11dec17) git-svn-id: svn://tug.org/texlive/trunk@46035 c570f23f-e606-0410-a88d-b1316a301751 --- .../source/latex/tikz-timing/tikz-timing.dtx | 1674 +++++++++++--------- 1 file changed, 958 insertions(+), 716 deletions(-) (limited to 'Master/texmf-dist/source/latex/tikz-timing/tikz-timing.dtx') diff --git a/Master/texmf-dist/source/latex/tikz-timing/tikz-timing.dtx b/Master/texmf-dist/source/latex/tikz-timing/tikz-timing.dtx index d73b5211fea..add0b335868 100644 --- a/Master/texmf-dist/source/latex/tikz-timing/tikz-timing.dtx +++ b/Master/texmf-dist/source/latex/tikz-timing/tikz-timing.dtx @@ -1,85 +1,45 @@ -% \iffalse -%<*copyright> -% -% Copyright (C) 2009 by Martin Scharrer -% ----------------------------------------------------------------- -% -% 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 $ -% +% \iffalse meta-comment +%<=*COPYRIGHT> +%% Copyright (C) 2009-2012 by Martin Scharrer +%% ---------------------------------------------------------------------- +%% 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 -% -\RequirePackage{svn-prov}[2009/05/03] -%\ProvidesPackageSVN -%\ProvidesPackageSVN[tikz-timing-examplecode] -%\ProvidesPackageSVN[ydoc] -%\ProvidesPackageSVN[tikz-timing-arrows] -%\ProvidesPackageSVN[tikz-timing-either] -%\ProvidesPackageSVN[tikz-timing-overlays] -%\ProvidesPackageSVN[tikz-timing-clockarrows] -%\ProvidesPackageSVN[tikz-timing-columntype] -%\ProvidesPackageSVN[tikz-timing-nicetabs] -%\ProvidesPackageSVN[tikz-timing-counters] -%\ProvidesPackageSVN[tikz-timing-advnodes] -%\ProvidesPackageSVN[tikz-timing-interval] -%\ProvidesPackageSVN[tikz-timing-beamer] -%\ProvidesPackageSVN[tikz-timing-ifsym] -%<*driver> -\ProvidesFileSVN -% - {$Id: tikz-timing.dtx 2038 2011-01-09 20:44:26Z martin $} - [v0.7d -% Digital Timing Diagrams using TikZ] -% Macros to produce examples for the tikz-timing package] -% Documentation Macros for tikz-timing package] -% TikZ-Timing Library for -% timing arrows] -% uncertain transitions] -% timing overlays] -% timing clock arrows] -% timing cell types] -% nice timing tables] -% counter values] -% advanced nodes] -% alternative Z transitions] -% beamer overlay support] -% ifsym compatible macros] -%<*driver> - DTX-File of 'tikz-timing' package.] -% -%\GetFileInfoSVN*% -%\RequirePackage{tikz-timing}[\filedate]% -%<*package|driver> -\DefineFileInfoSVN[tikztiming] -% -%\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 % %<*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 }, % 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[]{} -% 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[]~'at'~()~{[]}';' -% 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' \\ % % \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[]{extracode}[] -% 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*[] % 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[] -% 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[]{} -% 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[]{} -% 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[]{}{} -% 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[] -% 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[]{background}[] -% 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{} % \DescribeMacro\setwscale{} -% 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{}[]{} -% 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 @@ % % \fi % +% % \chapter{Implementation} -% \section{Package Header} +% +% \subsection{Package Header} % \iffalse -%<*package> +%<*tikz-timing.sty> % \fi % \begin{macrocode} +% +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{tikz-timing}[% +% +% +%<*DRIVER> + 2099/01/01 develop +% + 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\\{% @@ -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 -% +% % \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} +% +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{tikz-timing-either}[% +% +% +%<*DRIVER> + 2099/01/01 develop +% + 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 -% +% \iffalse +% % \fi % -% \subsection{Clock Arrows} +% \subsubsection{Clock Arrows} % \iffalse -%<*lib-clockarrows> -% \fi +%<*tikz-timing-clockarrows.sty> +% \fi +% \begin{macrocode} +% +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{tikz-timing-clockarrows}[% +% +% +%<*DRIVER> + 2099/01/01 develop +% + 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 -% +% % \fi % -% \subsection{Arrows} +% \subsubsection{Arrows} % \iffalse -%<*lib-arrows> +%<*tikz-timing-arrows.sty> % \fi +% \begin{macrocode} +% +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{tikz-timing-arrows}[% +% +% +%<*DRIVER> + 2099/01/01 develop +% + 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 -% +% % \fi % -% \subsection{Overlays} +% \subsubsection{Overlays} % \iffalse -%<*lib-overlays> +%<*tikz-timing-overlays.sty> % \fi +% \begin{macrocode} +% +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{tikz-timing-overlays}[% +% +% +%<*DRIVER> + 2099/01/01 develop +% + 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 -% +% % \fi % -% \subsection{Column Type} +% \subsubsection{Column Type} % \iffalse -%<*lib-columntype> +%<*tikz-timing-columntype.sty> % \fi +% \begin{macrocode} +% +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{tikz-timing-columntype}[% +% +% +%<*DRIVER> + 2099/01/01 develop +% + 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 -% +% % \fi % -% \subsection{Nice Timing Tables} +% \subsubsection{Nice Timing Tables} % \iffalse -%<*lib-nicetabs> +%<*tikz-timing-nicetabs.sty> % \fi +% \begin{macrocode} +% +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{tikz-timing-nicetabs}[% +% +% +%<*DRIVER> + 2099/01/01 develop +% + 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 -% +% % \fi % -% \subsection{Counters} +% \subsubsection{Counters} % \iffalse -%<*lib-counters> +%<*tikz-timing-counters.sty> % \fi +% \begin{macrocode} +% +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{tikz-timing-counters}[% +% +% +%<*DRIVER> + 2099/01/01 develop +% + 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 -% +% % \fi % -% \subsection{Advanced Nodes} +% \subsubsection{Advanced Nodes} % \iffalse -%<*lib-advnodes> +%<*tikz-timing-advnodes.sty> % \fi % \begin{macrocode} +% +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{tikz-timing-advnodes}[% +% +% +%<*DRIVER> + 2099/01/01 develop +% + 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 -% +% % \fi % -% \subsection{Intervals} +% \subsubsection{Intervals} % \iffalse -%<*lib-interval> +%<*tikz-timing-interval.sty> % \fi % \begin{macrocode} - +% +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{tikz-timing-interval}[% +% +% +%<*DRIVER> + 2099/01/01 develop +% + 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 -% +% % \fi % -% \subsection{Beamer Overlay Support} +% \subsubsection{Beamer Overlay Support} % \iffalse -%<*lib-beamer> +%<*tikz-timing-beamer.sty> % \fi +% \begin{macrocode} +% +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{tikz-timing-beamer}[% +% +% +%<*DRIVER> + 2099/01/01 develop +% + 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 -% +% % \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} +% +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{tikz-timing-ifsym}[% +% +% +%<*DRIVER> + 2099/01/01 develop +% + 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 -% +% % \fi % +% % \Finale -\endinput -% \iffalse -% vim: foldmarker=%<*,%