我正在用类排版book
(所以,一列),我需要用排版各种波形tikz-timing
。当我将它用于两列文档时,我从来没有遇到过问题,但现在我遇到了这个问题(从较大的文档简化而来):
\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}
2012.20120611-3
尝试使用 TeX Live 2012(2011-06-11 的 Debian 版本,标记为)中的 XeLaTeX 进行编译时出现以下问题:
! 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} \
我试验后发现,此方法有效当且仅当满足以下条件:
- 我将跟踪缩短至
7{CL CH}
(任何超过 7 次重复都会失败) - 我注释掉或者删除了整个
\tikzset{}
命令。
因此看起来要么是极短的波形,要么是无样式的波形。显然,我更喜欢长而有样式的波形。
我不知道我是否刚遇到了可以通过其他方式解决的限制,或者我只是做了一些非常愚蠢的事情,或者我遇到了一个错误(在这种情况下我会很乐意删除该问题并与 TikZ 和/或 TikZ-Timing 作者讨论)。
答案1
大致来说,您必须使用/.append style
来添加/覆盖您的自定义选项,否则整个样式信息将丢失。很可能连同内部提供的一些关键选项一起丢失。
\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}
请在将来添加完整的可编译代码示例,以便人们可以直接复制/粘贴以获得可能的解决方案。
答案2
当然,就在我决定在这里发布这个问题之后,我找到了答案。典型的。答案是:“是的,你做了一件极其愚蠢的事情。”摘自 TikZ-Timing 手册:
样式只是定义绘制某个元素的样式,例如颜色或线宽。这些样式已定义,并且可以使用 重新定义
\tikzset{ style name /.style= value }
。但是,虽然有些样式最初是空的,但有些样式包含内部设置,因此用户样式只能使用“ ”添加.append style= value
。
更改\tikzset
为
\tikzset{timing/.append style={x=1ex, y=2ex, line cap=round, line join=round, line width=1.3pt}}
解决了这个问题,现在我可以排版任意长的波形了。