如何查看 TikZ 图片翻译到的系统层(或者 \special)命令列表?

如何查看 TikZ 图片翻译到的系统层(或者 \special)命令列表?

TikZ 路径语句,例如

\path[draw] (0,0) -- (1,0);

通常不是线性渲染的。TikZ“引擎”将其分解,移动其各个部分,最后以某种顺序渲染它们,这种顺序可能与 TeX 手稿中的文本组织不太相似。

如何查看 TikZ 引擎发出的最终、确定、固定顺序的基本层和/或系统层命令序列?如果无法按路径查看此序列,那么是否可以查看整个 TikZ 图片生成的序列?

\specials我还愿意在图片翻译的列表上做出“妥协” ,而不是在基本层/系统层命令的列表上。

或者,是否可以将 应用于\showboxTikZ 图片?或者,如果我明确将 TikZ 图片包装在 TeX 框中,然后将\showbox其包装,它会列出 TikZ 图片的内部执行顺序吗?

\specials作为最后的手段,我如何查看整个 TeX 手稿翻译的列表?

答案1

这里使用 TeX 代码的常用方法似乎适用:使用\tracingall\show和。例如,如果我们采用建议的输入片段并将其制作成文档\showbox\showoutput

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\path[draw] (0,0) -- (1,0);
\end{tikzpicture}
\end{document}

我们可以插入\showoutput然后检查.log(使用 pdfTeX)以找到图像归结为

.......\pdfliteral{q }
.......\glue 0.0
.......\pdfliteral{0.0 0.0 m }
.......\pdfliteral{28.3468 0.0 l }
.......\pdfliteral{S }
.......\pdfliteral{Q }
.......\glue 0.0 plus 1.0fil minus 1.0fil
......\pdfliteral{n }
......\pdfliteral{Q }
......\glue 0.0 plus 1.0fil minus 1.0fil

IE一些保存/恢复材料,真正的“实质”是设置线宽、移动到某个点并绘制一条线。这由以下支持:在结果中\tracingall搜索例如\pgf@sys

\pgfsyssoftpath@movetotoken #1#2->\pgfsys@moveto {#1}{#2}
#1<-0.0pt
#2<-0.0pt

\pgfsys@moveto #1#2->\pgf@sys@bp {#1}\pgf@sys@bp {#2}\pgfsysprotocol@literal {m
}
#1<-0.0pt
#2<-0.0pt

\pgfsyssoftpath@linetotoken #1#2->\pgfsys@lineto {#1}{#2}
#1<-28.45274pt
#2<-0.0pt

\pgfsys@lineto #1#2->\pgf@sys@bp {#1}\pgf@sys@bp {#2}\pgfsysprotocol@literal {l
}
#1<-28.45274pt
#2<-0.0pt

我认为这一切都是相对可以预测的:阅读系统层很pgf明显它会抽象出这样的基本概念。


对于这种类型的描摹,我建议\tracingall在图片内部使用(减少行数),可能就在感兴趣的行之前。该\showoutput命令以每页为基础工作,因此\end{document}在单个单页文件之前的任何位置都可以。

相关内容