Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

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).

share|improve this question
add comment

2 Answers

up vote 3 down vote accepted

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.

share|improve this answer
    
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
add comment

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.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.