如何查看 tikz 样式的内容?

如何查看 tikz 样式的内容?

我正在创建一个 tikz 样式,以对坐标进行一些复杂的线性变换,这些变换是根据变量计算的。为了给出一个想法,下面是样式声明现在的样子:

\tikzset{foo/.style={cm={\cosLgP,
                         \sinLgP * (-\sinEl),
                         \cosLa * \cosLg,
                         \sinLa * \cosEl - \cosLa * \sinLg * \sinEl,     
                         (0,0)}}}

...其中\cosLgP&co 是一些先前定义的宏(如果一切顺利的话,应该计算各种正弦和余弦)。

有一个错误,坐标变换似乎不正确。我该如何调试?具体来说,我该如何打印变换矩阵的(数字)内容foo,看看它最终包含什么?

谢谢!

答案1

在里面foo/.style添加/utils/exec={\show\cosLgP}(注意开头的斜杠)作为最后一项。如果这些值是 dimen 寄存器,则改用\showthe

或者,show您也可以将它们转储到宏中utils/exec,然后检查它们的值

答案2

我回答最初的问题:如何查看 tikz 样式的内容?

您可以尝试.show code处理程序(p.893,pgfmanual)来显示样式的定义,但在编译期间会中断。

在下面的文档中,我定义了新的处理程序.typeout code,将样式的定义放入.log文件中:

\documentclass[tikz]{standalone}
% handler to use \typeout instead of \show (based on code of '.show code' handler)
\pgfkeys{
  /handlers/.typeout code/.code={%
    \pgfkeysgetvalue{\pgfkeyscurrentpath/.@cmd}{\pgfkeysshower}%
    \typeout{--- \pgfkeyscurrentpath\space---}%
    \typeout{\meaning\pgfkeysshower}%
  }
}
% application to your style
\tikzset{
  foo/.style={cm={\cosLgP,
      \sinLgP * (-\sinEl),
      \cosLa * \cosLg,
      \sinLa * \cosEl - \cosLa * \sinLg * \sinEl,     
      (0,0)}},
  foo/.typeout code,
}
% application to an ".estyle":
\def\cosLgP{1} \def\sinLgP{0}
\def\cosEl{0.707} \def\sinEl{0.707}
\def\cosLa{.848} \def\sinLa{.529}
\def\cosLg{0} \def\sinLg{1}
\tikzset{
  efoo/.estyle={cm={\cosLgP,
      \sinLgP * (-\sinEl),
      \cosLa * \cosLg,
      \sinLa * \cosEl - \cosLa * \sinLg * \sinEl,     
      (0,0)}},
  efoo/.typeout code,
}
\begin{document}
\end{document}

.log文件中:

--- /tikz/foo ---
\long 宏:#1\pgfeov ->\pgfkeysalso {cm={\cosLgP,\sinLgP * (-\sinEl),\cosLa * \cosLg,\sinLa * \cosEl - \cosLa * \sinLg * \sinEl,(0,0)}}
--- /tikz/efoo ---
\长宏:#1\pgfeov ->\pgfkeysalso {cm={1, 0* (-0.707), .848* 0, .529* 0.707- .848* 1* 0.707, (0,0)}}

相关内容