我试图通过检查 TikZ 语言的源代码来了解其某个方面。我感兴趣的代码位于文件中<tex installation directory>/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex
。
为了调试目的,我想导出一些由代码创建的 Tex 框。鉴于这个问题,我在代码中散布了一些\shipout
命令。我在框内添加了辅助文本以帮助调试。但是,附加文本不会显示在页面上。
考虑以下简化的示例。将其写\shipout\hbox{Hello, world!}
为宏中的第一行\tikz@finish
。这是在页面上渲染图片的宏,因此始终会调用它。现在创建一个新文件,其中包含以下简单的直线 TikZ 图片:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\tikz \draw (0,0) --(1,0);
\end{document}
生成的 PDF 文件在任何地方都不包含短语“Hello, world!”!
答案1
TikZ 将字体重置为其\nullfont
环境内部。它还重新定义\selectfont
为选择。因此,如果您想在环境和朋友\nullfont
内部输出一个框,则需要恢复字体。tikzpicture
该环境pgfinterruptpicture
可以作为盒子内容的包装器来恢复字体:
\documentclass{article}
\usepackage{tikz}
\usepackage{etoolbox}
\makeatletter
\pretocmd\tikz@finish{%
\shipout\hbox{%
\begin{pgfinterruptpicture}%
Hello, world!%
\end{pgfinterruptpicture}%
}%
}
\makeatother
\begin{document}
\tikz \draw (0,0) --(1,0);
\end{document}
第一页: