TikZ 源代码中输出的框不显示文本

TikZ 源代码中输出的框不显示文本

我试图通过检查 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}

第一页:

结果,第 1 页

相关内容