# How do I typeset ‘long’ waveforms with tikz-timing?

I'm typesetting with the book class (so, one column), and I need to typeset various waveforms with tikz-timing. When I was using it for two-column documents, I never had a problem, but now I've come across this (simplified from a larger document):

\tikzset{timing/.style={x=1ex, y=2ex, line cap=round, line join=round, line width=1.3pt}}
\begin{tikztimingtable}
RAWCLK & 28{CL CH} \\
\end{tikztimingtable}


Trying to compile this with the XeLaTeX from TeX Live 2012 (Debian release from 2011-06-11, marked 2012.20120611-3) breaks:

! Package tikz Error: Giving up on this path. Did you forget a semicolon?.

See the tikz package documentation for explanation.
Type  H <return>  for immediate help.
...

l.125   RAWCLK & 28{CL CH} \\


I experimented and found that this works if and only if:

• I shorten the trace to 7{CL CH} (anything over 7 repetitions fails)
• I comment out or remove the entire \tikzset{} command.

So it looks like it's either very short waveforms or unstyled waveforms. Obviously, I'd rather have long, styled ones.

I can't figure out if I've just come across a limitation I can work around some other way, or I'm just doing something monumentally stupid, or I've come across a bug (in which case I'll happily delete the question and take it up with the TikZ and/or TikZ-Timing authors).

-

You have to use the /.append style, roughly speaking, to add/override your custom options, otherwise the whole style info is lost. Most probably together with some crucial options given internally.

\documentclass{book}
\usepackage{tikz-timing}
\begin{document}

\tikzset{timing/.append style={x=1ex, y=2ex, line cap=round, line join=round, line width=1.3pt}}

\begin{tikztimingtable}
RAWCLK & 28{CL CH} \\
\end{tikztimingtable}

\end{document}


Please add full compilable code examples in the future such that people can directly copy/paste for a possible solution.

-
Right, I spotted this just after asking the question. Good advice on posting non-fragments, of course. Thanks. – Alexios Jul 22 '12 at 11:36

And, of course, just after I decided to post the question here, I found the answer. Typical. The answer is: ‘yes, you did something monumentally stupid’. From the TikZ-Timing manual:

Styles simply define the style in which a certain element is drawn, e.g. in which color or line width. This styles are defined and can be redefined using \tikzset{ style name /.style= value }. However, while some styles are initial empty, some hold internal settings and therefore user styles should only be added using ‘.append style= value’.

Changing the \tikzset to

\tikzset{timing/.append style={x=1ex, y=2ex, line cap=round, line join=round, line width=1.3pt}}


fixed the problem, and I can typeset arbitrarily long waveforms now.

-