8

I have a problem with the "advnodes" library of the "tikz-timing" package. The sample code below generates following error message and points to the ".sty"-file of the advnodes-library:

Package: tikz-timing-advnodes 2011/01/09 v0.7d TikZ-Timing Library for advanced nodes
! Undefined control sequence.
<argument> ...ter {\csname pgf@anchor@\shape@name
                   @center\endcsname }\nodepa...
l.188 }

Sample code:

\documentclass{article}

\usepackage{tikz-timing}
\usetikztiminglibrary{advnodes}

\begin{document}
    \section{First Section}
    Some text.
\end{document}

Reinstall the Tikz-Timing-Package didn't help. Despite this message the document was built. But it would be great to generate a document without this error message. Does somebody knows the reason and a solution for this issue?

Thanks a lot for your help.

  • I can confirm that error. I had a working timing-diagram. After reinstalling my computer and Latex the diagram rendering ends in a Undefined Control Sequence in tikz-timing-advnodes.sty. – Paebbels Mar 21 '15 at 13:15
5
+50

Bug Hunting

Here's the error I get when compiling:

(/usr/local/texlive/2014/texmf-dist/tex/latex/tikz-timing/tikz-timing-advnodes.
sty
! Undefined control sequence.
<argument> ...ter {\csname pgf@anchor@\shape@name 
                                                  @center\endcsname }\nodepa...
l.188 }

OK. So this tells us the problem is probably in the file /usr/local/texlive/2014/texmf-dist/tex/latex/tikz-timing/tikz-timing-advnodes.sty. It also tells us that the thing which is undefined is the thing at the end of the line

<argument> ...ter {\csname pgf@anchor@\shape@name 

\csname means a control sequence i.e. something beginning with a backslash in all likelihood. So we are probably looking for \pgf@anchor@\shape@name presenting as \csname pgf@anchor@\shape@name.

Now \pgf@anchor@\shape@name 'looks wrong'. That backslash in the middle of the thing following \csname. That seems weird.

But even if it doesn't seem weird - or even if it all seems so weird this is just no more odd than the rest of it - that doesn't really matter. You still know the problem is probably with that control sequence. So you are still looking for pgf@anchor@\shape@name.

I just searched for this in the file in question. However, you could also use the information on the last line of the error

l.188 }

which tells you that TeX realises there is a problem at line 188. That is less useful here, however, because that line is the end of a long definition and all it turns out to mean is that there is a problem somewhere in that long definition. In contrast, searching for pgf@anchor@\shape@name finds not only the precise bit of that definition which is problematic, but another 2 occurrences of the same problematic control sequence.

The Bug

The problem is caused by the use of \pgfanchor@\shape@name. I am guessing that this should be \pgfanchor@shape@name. Changing the library file accordingly allows the MWE to compile. However, I don't use this library and so have not tested whether or not this breaks the library itself. (On the other hand, it is presumably already broken if it uses undefined control sequences.)

Mangling

Here is my mangled version of the library:

%% MANGLED by cfr! Do not blame the author of tikz-timing-advnodes.sty!
%%
%% Copyright for original file:
%%
%% Copyright (C) 2009-2011 by Martin Scharrer <martin@scharrer-online.de>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%%
%%    http://www.latex-project.org/lppl.txt
%%
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
%%
%% This work has the LPPL maintenance status `maintained'.
%%
%% The Current Maintainer of this work is Martin Scharrer.
%%
%% This work consists of the files tikz-timing.dtx, tikz-timing.ins
%% and the derived file tikz-timing.sty.
%%
\RequirePackage{svn-prov}[2009/05/03]
\ProvidesPackageSVN[tikz-timing-advnodes-cfr]
  {$Id: tikz-timing.dtx 2038 2011-01-09 20:44:26Z martin $}
  [v0.7d MANGLED by cfr!
   TikZ-Timing Library for
   advanced nodes]
\GetFileInfoSVN*%
\RequirePackage{tikz-timing}[\filedate]%
\DefineFileInfoSVN

\RequirePackage{tikz-timing}

\let\tikztiming@orig@oldnodecenter\tikztiming@oldnodecenter

\tikzset{timing/nodes/.cd,
  simple/.code={%
    \let\tikztiming@oldnodecenter\tikztiming@orig@oldnodecenter
    \tikzset{%
      timing/inline node/.style={shape=coordinate},
    }%
  },
  advanced/.code={%
    \let\tikztiming@oldnodecenter\@gobble
    \tikzset{%
      timing/inline node/.style={shape=tikztiming coordinate},
      timing/nodes/new center,
    }%
  },
  old center/.code={%
    \let\tikztiming@nodecenteranchor\tikztiming@old@nodecenteranchor
  },%
  new center/.code={%
    \let\tikztiming@nodecenteranchor\empty
  },%
}
\tikzset{timing/nodes/.cd,advanced,new center}

\def\anchoralias#1#2{%
  \expandafter\def
  \csname pgf@anchor@shape@name @#1\expandafter\endcsname
  \expandafter{\csname pgf@anchor@shape@name @#2\endcsname}%
}

\def\tikztiming@anchorpoint#1#2#3{%
  \pgf@xa=#2\relax
  \pgf@ya=#3\relax
  \expandafter\edef\csname#1\endcsname{%
    \pgf@x=\the\pgf@xa\relax
    \pgf@y=\the\pgf@ya\relax
  }%
  \expandafter\addtosavedmacro\csname#1\endcsname
}
\def\tikztiming@tryanchor#1#2{%
  \let\tikztiming@next\relax
  \ifnum\tikztiming@debug>2
    \message{^^J Try Anchor: '#1' '#2' ^^J }%
    \def\tikztiming@next{\message{^^J TERM ^^J}}%
  \fi
  \ifx\relax#1\empty\else
  \ifx\relax#2\empty\else
    \def\tikztiming@next{%
      \@ifundefined{tikztiming@anchors@#1@#2}%
        {%
          \edef\@tempa{%
            {\csname tikztiming@alias@#1\endcsname}%
            {\csname tikztiming@alias@#2\endcsname}%
          }%
          \expandafter\tikztiming@tryanchor@\@tempa{#1}{#2}%
        }%
        {\let\tikztiming@tryanchor\@gobbletwo
         \ifnum\tikztiming@debug>2
           \message{^^J Anchor: '#1' '#2' ^^J }%
         \fi
         \@nameuse{tikztiming@anchors@#1@#2}%
        }%
    }%
  \fi\fi
  \tikztiming@next
}
\def\tikztiming@tryanchor@#1#2#3#4{%
  \tikztiming@tryanchor{#3}{#2}%
  \tikztiming@tryanchor{#1}{#4}%
  \tikztiming@tryanchor{#1}{#2}%
  \let\tikztiming@tryanchor@\@gobblefour
  \tikztiming@tryanchor{#3}{}%
  \tikztiming@tryanchor{}{#4}%
}
\pgfdeclareshape{tikztiming coordinate}{%
  \savedmacro\anchorpoints{%
    \let\anchorpoint\tikztiming@anchorpoint
    \let\slope\@tempdima
    \let\dslope\@tempdimb
    \let\zslope\@tempdimc
    \let\height\pgf@yb
    \let\fromchar\tikztiming@node@fromchar
    \let\tochar\tikztiming@node@tochar
    %
    \ifnum\tikztiming@debug>2
      \message{^^J Node: \fromchar \tochar ^^J}%
    \fi
    %
    \edef\@tempa{{timing/\tochar}}%
    \expandafter\lowercase\expandafter
      {\expandafter\tikzset\@tempa}%
    \pgfpointxy{\timingslope}{0}%
    \slope=\pgf@x\relax
    \pgfpointxy{\timingdslope}{0}%
    \dslope=\pgf@x\relax
    \pgfpointxy{\timingzslope}{0}%
    \zslope=\pgf@x\relax
    \pgfpointxy{0}{\timingheight}%
    \height=\pgf@y\relax
    \edef\anchorpoints{%
      \noexpand\pgf@yb=\the\height\relax
      \let\noexpand\height\noexpand\pgf@yb
    }%
    %
    \tikztiming@tryanchor{\fromchar}{\tochar}%
  }
  \savedanchor\lowpoint{%
    \pgfpointanchor{timing/start base}{center}%
    \pgf@x=0pt
  }%
  \anchor{origin}{%
    \pgfpointorigin
    \anchorpoints
    \@nameuse{originoffset}
    \pgf@x=-\pgf@x
    \pgf@y=-\pgf@y
  }%
  \anchor{old center}{%
    \pgfpointorigin
    \tikztiming@old@nodecenteranchor
  }%
  \anchor{new center}{\pgfpointorigin}%
  \anchor{center}{%
    \pgfpointorigin
    \tikztiming@nodecenteranchor
  }%
  \anchor{MID}{\tikztiming@useanchor{HIGH}\advance\pgf@y by -.5\height\relax }%
  \anchor{LOW}{\tikztiming@useanchor{HIGH}\advance\pgf@y by -\height\relax   }%
  \anchor{HIGH}{\tikztiming@useanchor{HIGH}}%
  \anchor{TOP}{%
    \tikztiming@nodes@getoffset
    \tikztiming@useanchor{HIGH}
    \advance\pgf@y by  \pgf@ya\relax
  }%
  \anchor{BOTTOM}{%
    \tikztiming@nodes@getoffset
    \tikztiming@useanchor{HIGH}
    \advance\pgf@y by -\pgf@ya\relax
    \advance\pgf@y by -\height\relax
  }%
  \anchor{mid}{\tikztiming@useanchor{mid}}%
  \anchor{low}{\tikztiming@useanchor{low}}%
  \anchor{high}{\tikztiming@useanchor{high}}%
  \anchor{low2}{\tikztiming@useanchor{low2}}%
  \anchor{high2}{\tikztiming@useanchor{high2}}%
  %
  \expandafter\anchorborder\expandafter{\csname pgf@anchor@shape@name @center\endcsname}%
  %
  \nodeparts{}%
}

\def\tikztiming@nodes@getoffset{%
  \begingroup
    \pgfpointxy{0}{1}%
    \pgfmathsetresultunitscale{\pgf@y}%
    \pgfpoint{0}{\tikztiming@nodes@offset}%
    \global\pgf@ya=\pgf@y
  \endgroup
}

\tikzset{%
  timing/nodes/.cd,
  offset/.store in=\tikztiming@nodes@offset,
  offset=0.25,
}

\def\tikztiming@nodecenteranchor{}

\def\tikztiming@old@nodecenteranchor{%
    \anchorpoints
    \@ifundefined{oldcenter}%
      {\@nameuse{originoffset}%
       \pgf@x=-\pgf@x\relax
       \pgf@y=-\pgf@y\relax
      }%
      {\@nameuse{oldcenter}}%
}

\def\tikztiming@useanchor#1{%
  \anchorpoints
  \@ifundefined{#1}%
   {\PackageError{tikz-timing}%
      {No such anchor '#1' defined for this transition!}{}%
    \pgfpointorigin
   }%
   {\@nameuse{#1}}%
}

\tikzset{%
  every tikztiming coordinate node/.style={anchor=origin},
}
\def\tikztiming@anchors#1#2{%
  \@namedef{tikztiming@anchors@#1@#2}%
}
\def\tikztiming@anchorslet#1#2#3#4{%
  \expandafter\let
  \csname tikztiming@anchors@#1@#2\expandafter\endcsname
  \csname tikztiming@anchors@#3@#4\endcsname
}

\tikztiming@anchors{@}{D}{%
  \anchorpoint{originoffset}{0pt}{.5\height}%
  \anchorpoint{mid}{0pt}{0pt}%
  \anchorpoint{high}{0pt}{.5\height}%
  \anchorpoint{low}{0pt}{-.5\height}%
  \anchorpoint{HIGH}{0pt}{.5\height}%
}

\tikztiming@anchors{@}{H}{%
  \anchorpoint{originoffset}{0pt}{\height}%
  \anchorpoint{high}{0pt}{0pt}%
  \anchorpoint{HIGH}{0pt}{0pt}%
}

\tikztiming@anchors{@}{L}{%
  \anchorpoint{originoffset}{0pt}{0pt}%
  \anchorpoint{low}{0pt}{0pt}%
  \anchorpoint{HIGH}{0pt}{\height}%
}

\tikztiming@anchors{@}{T}{%
  \anchorpoint{originoffset}{0pt}{0pt}%
  \anchorpoint{low}{0pt}{0pt}%
  \anchorpoint{HIGH}{0pt}{\height}%
}

\tikztiming@anchors{@}{Z}{%
  \anchorpoint{originoffset}{0pt}{.5\height}%
  \anchorpoint{mid}{0pt}{0pt}%
  \anchorpoint{HIGH}{0pt}{.5\height}%
}

\tikztiming@anchors{D}{D}{%
  \anchorpoint{originoffset}{0pt}{0pt}%
  \anchorpoint{mid}{0pt}{0pt}%
  \anchorpoint{HIGH}{0pt}{.5\height}%
  \anchorpoint{high}{0pt}{.5\height}%
  \anchorpoint{low}{0pt}{-.5\height}%
}

\tikztiming@anchors{L}{H}{%
  \anchorpoint{originoffset}{.5\slope}{.5\height}%
  \anchorpoint{mid}{0pt}{0pt}%
  \anchorpoint{high}{.5\slope}{.5\height}%
  \anchorpoint{low}{-.5\slope}{-.5\height}%
  \anchorpoint{HIGH}{-.5\slope}{.5\height}%
}

\tikztiming@anchors{E}{H}{%
  \anchorpoint{originoffset}{-.5\slope}{-.5\height}%
  \anchorpoint{oldcenter}{-.5\slope}{-.5\height}%
  \anchorpoint{mid}{0pt}{0pt}%
  \anchorpoint{high}{.5\slope}{.5\height}%
  \anchorpoint{low}{-.5\slope}{-.5\height}%
  \anchorpoint{HIGH}{-.5\slope}{.5\height}%
}

\tikztiming@anchors{T}{T}{%
  \anchorpoint{mid}{0pt}{0pt}%
  \anchorpoint{HIGH}{-.5\slope}{.5\height}%
  \ifnum 1=\c@tikztimingtrans
    \anchorpoint{originoffset}{.5\slope}{-.5\height}%
    \anchorpoint{high}{-.5\slope}{.5\height}%
    \anchorpoint{low}{.5\slope}{-.5\height}%
  \else
    \anchorpoint{originoffset}{.5\slope}{.5\height}%
    \anchorpoint{high}{.5\slope}{.5\height}%
    \anchorpoint{low}{-.5\slope}{-.5\height}%
  \fi
}
\tikztiming@anchorslet{T}{E}{T}{T}%

\tikztiming@anchors{T}{@}{%
  \ifnum 1=\c@tikztimingtrans
    \anchorpoint{high}{0pt}{0pt}%
    \anchorpoint{HIGH}{0pt}{0pt}%
  \else
    \anchorpoint{low}{0pt}{0pt}%
    \anchorpoint{HIGH}{0pt}{\height}%
  \fi
}

\tikztiming@anchors{H}{H}{%
  \anchorpoint{originoffset}{0pt}{0pt}%
  \anchorpoint{high}{0pt}{0pt}%
  \anchorpoint{HIGH}{0pt}{0pt}%
}

\tikztiming@anchors{L}{L}{%
  \anchorpoint{originoffset}{0pt}{0pt}%
  \anchorpoint{low}{0pt}{0pt}%
  \anchorpoint{HIGH}{0pt}{\height}%
}

\tikztiming@anchors{Z}{Z}{%
  \anchorpoint{originoffset}{0pt}{0pt}%
  \anchorpoint{mid}{0pt}{0pt}%
  \anchorpoint{HIGH}{0pt}{.5\height}%
}

\tikztiming@anchors{E}{E}{%
  \anchorpoint{mid}{0pt}{0pt}%
  \ifnum 1=\c@tikztimingtrans
    \anchorpoint{originoffset}{.5\slope}{.5\height}%
    \anchorpoint{HIGH}{-.5\slope}{.5\height}%
    \anchorpoint{high}{.5\slope}{.5\height}%
    \anchorpoint{low}{-.5\slope}{-.5\height}%
  \else
    \anchorpoint{originoffset}{-.5\slope}{.5\height}%
    \anchorpoint{oldcenter}{-.5\slope}{-.5\height}%
    \anchorpoint{HIGH}{-.5\slope}{.5\height}%
    \anchorpoint{high}{-.5\slope}{.5\height}%
    \anchorpoint{low}{.5\slope}{-.5\height}%
  \fi
}

\tikztiming@anchors{H}{L}{%
  \anchorpoint{originoffset}{.5\slope}{-.5\height}%
  \anchorpoint{mid}{0pt}{0pt}%
  \anchorpoint{high}{-.5\slope}{.5\height}%
  \anchorpoint{HIGH}{-.5\slope}{.5\height}%
  \anchorpoint{low}{.5\slope}{-.5\height}%
}
\tikztiming@anchorslet{H}{E}{H}{L}%

\tikztiming@anchors{E}{L}{%
  \anchorpoint{originoffset}{-.5\slope}{.5\height}%
  \anchorpoint{oldcenter}{-.5\slope}{-.5\height}%
  \anchorpoint{mid}{0pt}{0pt}%
  \anchorpoint{high}{-.5\slope}{.5\height}%
  \anchorpoint{HIGH}{-.5\slope}{.5\height}%
  \anchorpoint{low}{.5\slope}{-.5\height}%
}

\tikztiming@anchors{E}{T}{%
  \anchorpoint{mid}{0pt}{0pt}%
  \anchorpoint{HIGH}{-.5\slope}{.5\height}%
  \ifnum 1=\c@tikztimingtrans
    \anchorpoint{originoffset}{-.5\slope}{-.5\height}%
    \anchorpoint{oldcenter}{-.5\slope}{-.5\height}%
    \anchorpoint{high}{.5\slope}{.5\height}%
    \anchorpoint{low}{-.5\slope}{-.5\height}%
  \else
    \anchorpoint{originoffset}{-.5\slope}{.5\height}%
    \anchorpoint{oldcenter}{-.5\slope}{-.5\height}%
    \anchorpoint{high}{-.5\slope}{.5\height}%
    \anchorpoint{low}{.5\slope}{-.5\height}%
  \fi
}

\tikztiming@anchors{E}{Z}{%
  \anchorpoint{mid}{0pt}{0pt}%
  \anchorpoint{oldcenter}{-\zslope}{-.5\height}%
  \anchorpoint{HIGH}{-\zslope}{.5\height}%
  \anchorpoint{high}{-\zslope}{.5\height}%
  \anchorpoint{low}{-\zslope}{-.5\height}%
}

\tikztiming@anchors{Z}{D}{%
  \anchorpoint{originoffset}{0pt}{0pt}%
  \anchorpoint{mid}{0pt}{0pt}%
  \anchorpoint{HIGH}{0pt}{.5\height}%
  \anchorpoint{high}{.5\dslope}{.5\height}%
  \anchorpoint{low}{.5\dslope}{-.5\height}%
}

\tikztiming@anchors{D}{Z}{%
  \anchorpoint{originoffset}{0pt}{0pt}%
  \anchorpoint{oldcenter}{-.5\dslope}{-.5\height}%
  \anchorpoint{mid}{0pt}{0pt}%
  \anchorpoint{HIGH}{-.5\dslope}{.5\height}%
  \anchorpoint{high}{-.5\dslope}{.5\height}%
  \anchorpoint{low}{-.5\dslope}{-.5\height}%
}

\tikztiming@anchors{D}{H}{%
  \anchorpoint{originoffset}{0pt}{0pt}%
  \anchorpoint{oldcenter}{-.5\dslope}{-.5\height}%
  \anchorpoint{mid}{0pt}{0pt}%
  \anchorpoint{HIGH}{-.5\dslope}{.5\height}%
  \anchorpoint{high}{.5\dslope}{.5\height}%
  \anchorpoint{high2}{-.5\dslope}{.5\height}%
  \anchorpoint{low}{-.5\dslope}{-.5\height}%
}

\tikztiming@anchors{D}{L}{%
  \anchorpoint{originoffset}{0pt}{0pt}%
  \anchorpoint{oldcenter}{-.5\dslope}{-.5\height}%
  \anchorpoint{mid}{0pt}{0pt}%
  \anchorpoint{HIGH}{-.5\dslope}{.5\height}%
  \anchorpoint{high}{-.5\dslope}{.5\height}%
  \anchorpoint{low2}{-.5\dslope}{-.5\height}%
  \anchorpoint{low}{.5\dslope}{-.5\height}%
}
\tikztiming@anchorslet{D}{T}{D}{L}%

\tikztiming@anchors{D@edge@}{D}{%
  \anchorpoint{originoffset}{0pt}{0pt}%
  \anchorpoint{oldcenter}{-.5\dslope}{-.5\height}%
  \anchorpoint{mid}{0pt}{0pt}%
  \anchorpoint{HIGH}{-.5\dslope}{.5\height}%
  \anchorpoint{high}{-.5\dslope}{.5\height}%
  \anchorpoint{high2}{.5\dslope}{.5\height}%
  \anchorpoint{low}{-.5\dslope}{-.5\height}%
  \anchorpoint{low2}{.5\dslope}{-.5\height}%
}
\tikztiming@anchorslet{D}{U}{D@edge@}{D}
\tikztiming@anchorslet{U}{D}{D@edge@}{D}
\tikztiming@anchorslet{D}{D@edge@}{D@edge@}{D}
\tikztiming@anchorslet{D@edge@}{D@edge@}{D@edge@}{D}
\tikztiming@anchorslet{D}{E}{D@edge@}{D}
\tikztiming@anchorslet{E}{D}{D@edge@}{D}

\tikztiming@anchorslet{L}{E}{L}{H}%
\tikztiming@anchorslet{L}{T}{L}{H}%
\tikztiming@anchorslet{H}{T}{H}{L}%
\tikztiming@anchorslet{T}{H}{H}{L}%

\tikztiming@anchors{D}{D}{%
  \anchorpoint{originoffset}{0pt}{0pt}%
  \anchorpoint{oldcenter}{0pt}{-.5\height}%
  \anchorpoint{mid}{0pt}{0pt}%
  \anchorpoint{high}{0pt}{.5\height}%
  \anchorpoint{low}{0pt}{-.5\height}%
  \anchorpoint{HIGH}{0pt}{.5\height}%
}
\tikztiming@anchorslet{D}{@}{D}{D}
\tikztiming@anchorslet{E}{@}{D}{D}
\tikztiming@anchorslet{U}{U}{D}{D}

\tikztiming@anchorslet{@}{E}{@}{D}

\tikztiming@anchors{L}{D}{%
  \anchorpoint{originoffset}{.5\dslope}{.5\height}%
  \anchorpoint{mid}{0pt}{0pt}%
  \anchorpoint{high}{.5\dslope}{.5\height}%
  \anchorpoint{low}{-.5\dslope}{-.5\height}%
  \anchorpoint{low2}{.5\dslope}{-.5\height}%
  \anchorpoint{HIGH}{-.5\dslope}{.5\height}%
}

\tikztiming@anchors{T}{D}{%
  \anchorpoint{mid}{0pt}{0pt}%
  \anchorpoint{HIGH}{-.5\dslope}{.5\height}%
  \ifnum 1=\c@tikztimingtrans
    \anchorpoint{originoffset}{.5\dslope}{-.5\height}%
    \anchorpoint{high}{-.5\dslope}{.5\height}%
    \anchorpoint{high2}{.5\dslope}{.5\height}%
    \anchorpoint{low}{.5\dslope}{-.5\height}%
  \else
    \anchorpoint{originoffset}{.5\dslope}{.5\height}%
    \anchorpoint{high}{.5\dslope}{.5\height}%
    \anchorpoint{low}{-.5\dslope}{-.5\height}%
    \anchorpoint{low2}{.5\dslope}{-.5\height}%
  \fi
}

\tikztiming@anchors{H}{D}{%
  \anchorpoint{originoffset}{.5\dslope}{-.5\height}%
  \anchorpoint{mid}{0pt}{0pt}%
  \anchorpoint{HIGH}{-.5\dslope}{.5\height}%
  \anchorpoint{high}{-.5\dslope}{.5\height}%
  \anchorpoint{high2}{.5\dslope}{.5\height}%
  \anchorpoint{low}{.5\dslope}{-.5\height}%
}

\tikztiming@anchors{Z}{E}{%
  \anchorpoint{mid}{0pt}{0pt}%
  \anchorpoint{high}{\zslope}{.5\height}%
  \anchorpoint{low}{\zslope}{-.5\height}%
  \anchorpoint{HIGH}{0pt}{.5\height}%
}

\tikztiming@anchors{Z}{H}{%
  \anchorpoint{mid}{0pt}{0pt}%
  \anchorpoint{high}{\zslope}{.5\height}%
  \anchorpoint{HIGH}{0pt}{.5\height}%
}

\tikztiming@anchors{Z}{T}{%
  \anchorpoint{mid}{0pt}{0pt}%
  \anchorpoint{HIGH}{0pt}{.5\height}%
  \ifnum1=\c@tikztimingtrans\relax
    \anchorpoint{low}{\zslope}{-.5\height}%
  \else
    \anchorpoint{high}{\zslope}{.5\height}%
  \fi
}

\tikztiming@anchors{T}{H}{%
  \ifnum1=\c@tikztimingtrans\relax
    \anchorpoint{high}{0pt}{0pt}%
    \anchorpoint{HIGH}{0pt}{0pt}%
  \else
    \anchorpoint{originoffset}{.5\slope}{.5\height}%
    \anchorpoint{low}{-.5\slope}{-.5\height}%
    \anchorpoint{mid}{0pt}{0pt}%
    \anchorpoint{high}{.5\slope}{.5\height}%
    \anchorpoint{HIGH}{-.5\slope}{.5\height}%
  \fi
}

\tikztiming@anchors{T}{L}{%
  \ifnum1=\c@tikztimingtrans\relax
    \anchorpoint{originoffset}{.5\slope}{-.5\height}%
    \anchorpoint{low}{.5\slope}{-.5\height}%
    \anchorpoint{mid}{0pt}{0pt}%
    \anchorpoint{high}{-.5\slope}{.5\height}%
    \anchorpoint{HIGH}{-.5\slope}{.5\height}%
  \else
    \anchorpoint{low}{0pt}{0pt}%
    \anchorpoint{HIGH}{0pt}{\height}%
  \fi
}

\tikztiming@anchors{T}{Z}{%
  \ifnum1=\c@tikztimingtrans\relax
    \anchorpoint{high}{0pt}{0pt}%
    \anchorpoint{mid}{\zslope}{-.5\height}%
    \anchorpoint{HIGH}{0pt}{0pt}%
  \else
    \anchorpoint{low}{0pt}{0pt}%
    \anchorpoint{mid}{\zslope}{.5\height}%
    \anchorpoint{HIGH}{0pt}{\height}%
  \fi
}

\tikztiming@anchors{Z}{L}{%
  \anchorpoint{mid}{0pt}{0pt}%
  \anchorpoint{low}{\zslope}{-.5\height}%
  \anchorpoint{HIGH}{0pt}{.5\height}%
}

\tikztiming@anchors{H}{Z}{%
  \anchorpoint{high}{0pt}{0pt}%
  \anchorpoint{mid}{\zslope}{-.5\height}%
  \anchorpoint{HIGH}{0pt}{0pt}%
}

\tikztiming@anchors{L}{Z}{%
  \anchorpoint{low}{0pt}{0pt}%
  \anchorpoint{mid}{\zslope}{.5\height}%
  \anchorpoint{HIGH}{0pt}{\height}%
}

\tikztiming@anchors{Z}{Z}{%
  \anchorpoint{mid}{0pt}{0pt}%
  \anchorpoint{HIGH}{0pt}{.5\height}%
}

\tikztiming@anchors{H}{@}{%
  \anchorpoint{high}{0pt}{0pt}%
  \anchorpoint{HIGH}{0pt}{0pt}%
}

\tikztiming@anchors{L}{@}{%
  \anchorpoint{low}{0pt}{0pt}%
  \anchorpoint{HIGH}{0pt}{\height}%
}

\tikztiming@anchors{Z}{@}{%
  \anchorpoint{mid}{0pt}{0pt}%
  \anchorpoint{HIGH}{0pt}{.5\height}%
}

\tikztiming@anchors{}{@}{%
  \anchorpoint{originoffset}{0pt}{.5\height}%
  \anchorpoint{mid}{0pt}{0pt}%
  \anchorpoint{high}{0pt}{.5\height}%
  \anchorpoint{low}{0pt}{-.5\height}%
  \anchorpoint{HIGH}{0pt}{.5\height}%
}

\RequirePackage{pgfopts}
\ProcessPgfOptions{/tikz/timing/node}
\endinput
%%
%% End of file `tikz-timing-advnodes-cfr.sty'.

The adapted MWE then compiles without complaint:

\documentclass{article}

\usepackage{tikz-timing}
\usetikztiminglibrary{advnodes-cfr}

\begin{document}
    \section{First Section}
    Some text.
\end{document}
  • How did you narrow down this bug? Just in case I have to do such things by my own. – Paebbels Mar 25 '15 at 0:50
  • @Paebbels Please see edited answer above. – cfr Mar 25 '15 at 1:25
1

As mentioned by cfr, the problem is that \shape@name is not defined, and as mentioned by Vielschreiber that is relatex to updates in TikZ. I found in another answer that "in the newer version of PGF \shape@name is now \pgf@sm@shape@name". In fact, in my system (Fedora 25, with TikZ version 1.151 2015/08/07) I am able to use tikz-timing-advnodes.sty by replacing all occurrences of \shape@name with \pgf@sm@shape@name. Here is my diff:

--- /usr/share/texlive/texmf-dist/tex/latex/tikz-timing/tikz-timing-advnodes.sty2011-01-11 00:37:47.000000000 +0000
+++ tikz-timing-advnodes.sty    2017-06-02 07:56:07.510477641 +0000
@@ -62,8 +62,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{%
@@ -182,7 +182,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{}%
 }
0

The above answer provides a workaround, but not the full solution, unfortunately. The syntax error goes away, but some funtionality is still broken, as already suspected by the poster. I have actually used "advanced nodes". Some time ago, I could use such a tikz-timing node as the endpoint of an arrow. Now, this does not work anymore; I have to use (myNode.center) explicitly, instead.

The problem started for me when I upgraded the TikZ base package from version base-2-10.zip to base-3-0-0.zip .

I also compared the current tikz-timing-7d.zip with the previous tikz-timing-2010-01-17.zip . There were a lot of changes, but none of them in the places discussed above. So it's not the fault of the tikz-timing package itself. The current version works with the old TikZ base package.

Conclusion: The update of the TikZ base package broke the tikz-timing package. They are just not compatible anymore.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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