如何将 tikz-timing 与外部库一起使用

如何将 tikz-timing 与外部库一起使用

我想在我的 LaTeX 文档中生成一个 tikz-timing 信号并将其保存,使用外部库作为 pdf 文件。

以下是组合代码的示例:

\documentclass[border=5pt]{scrbook}
\usepackage{tikz-timing}
\usetikzlibrary{external}
\tikzexternalize[
  figure list=true,
  prefix=./]
\usetikztiminglibrary{nicetabs} % a bit strange with \Huge; use belowrulesep to adjust

\begin{document}
 \begin{figure}
  \begin{tikztimingtable}
   & 4L      \\ 
   & 4H      \\ 
   & 2LCH    \\ 
   & [C]CCCC \\
   & 2{2C}   \\
   \extracode
   \tablegrid[black!25,step=1]
  \end{tikztimingtable}
 \end{figure}
\end{document}

我收到的错误是:

Opening 'test.figlist' for writing.
**Writing './signal1' to 'test.figlist'.
)
Runaway argument?
 \par 
! File ended while scanning use of \tikzexternal@laTeX@collect@until@end@tikzpi
cture.
<inserted text> 

答案1

不幸的是tikztimingtable,与库不兼容external。但是\texttiming\timing宏可以工作。不兼容的原因是tikzpicture嵌套在tikztimingtable不受支持的库中的,external如第 32.2 节所述要求v2.10 TikZ/PGF 手册。发生此错误的原因是,external库无法找到 ,\end{tikzpicture}因为它位于 内\end{tikztimingtable}

避免错误的一种解决方法是禁用tikztimingtables 的外部化,如中所述tikzexternalize 仅适用于(或不适用于)标记的图形。您可以在之前在 内添加一个\tikzexternaldisable宏。但是,您只能在其他s 上获得此好处。如果您只有s,则可以完全避免使用。figuretikztimingtabletikzpicturetikztimingtableexternal

\documentclass{scrbook}
\usepackage{tikz-timing}
\usetikzlibrary{external}
\tikzexternalize[
  figure list=true,
  prefix=./]
\usetikztiminglibrary{nicetabs} % a bit strange with \Huge; use belowrulesep to adjust

\begin{document}
 \begin{figure}
  \tikzexternaldisable
  \begin{tikztimingtable}
   & 4L      \\ 
   & 4H      \\ 
   & 2LCH    \\ 
   & [C]CCCC \\
   & 2{2C}   \\
   \extracode
   \tablegrid[black!25,step=1]
  \end{tikztimingtable}
 \end{figure}
\end{document}

的替代方法externalstandalone使用类和包。使用这种方法,您必须将相关代码放在一个单独的文件中,并在其中添加完整的前言。然后,此文件可以自行编译,即独立文件,这对于较大的图片非常有用,因为在创建过程中必须经常重新编译。使用包,standalone您可以包含独立文件而无需删除前言。它还允许从独立文件自动生成 PDF 图像。请参阅手册并搜索mode

% main document
\documentclass{scrbook}
\usepackage[mode=buildnew]{standalone}
\usepackage{tikz-timing}
\usetikztiminglibrary{nicetabs} % a bit strange with \Huge; use belowrulesep to adjust

\begin{document}
 \begin{figure}
  \includestandalone{sometttable}
 \end{figure}
\end{document}
% sometttable.tex 
\documentclass{standalone}
\usepackage{tikz-timing}
\usetikztiminglibrary{nicetabs} % a bit strange with \Huge; use belowrulesep to adjust

\begin{document}
  \begin{tikztimingtable}
   & 4L      \\ 
   & 4H      \\ 
   & 2LCH    \\ 
   & [C]CCCC \\
   & 2{2C}   \\
   \extracode
   \tablegrid[black!25,step=1]
  \end{tikztimingtable}
\end{document}

相关内容