外部化的 pgf 图片未在图形环境中居中

外部化的 pgf 图片未在图形环境中居中

我尝试使用 pgf/tikz 处理外部图像,如手册第 107 节所述。我没有使用“外部”tikz 库,因为我遇到了所需的 shell 转义功能问题,而且我喜欢使用 makefile 重新生成图像的简单性。

基本上一切都正常。唯一的问题是,图像在外部化时不在图形环境中居中。相反,它们是左对齐的。

这是一个最小的例子(保存为“tikz_debug.tex”):

\documentclass{article}
\usepackage{tikz}
\pgfrealjobname{tikz_debug}
\begin{document}
One line of text so we see the figure positioning relative to the text.
\begin{figure}
  \centering
  \beginpgfgraphicnamed{test}
    \begin{tikzpicture}
      \draw (0,0) rectangle (2,2);
    \end{tikzpicture}
  \endpgfgraphicnamed
\end{figure}
\end{document}

在没有“test.pdf”的情况下直接编译时,矩形会按预期居中。如果存在“test.pdf”(使用“pdflatex --jobname=test tikz_debug”创建),矩形则会左对齐。

如果我使用手册中显示的命令包含图像(107.4)

\long\def\beginpgfgraphicnamed#1#2\endpgfgraphicnamed{\includegraphics{#1}}

然后居中就可以了。如果我改用“\usepackage{tikzexternal}”,则不会。我认为我已经将问题缩小到 tikz 将“\includegraphics”放入“\hbox”中,但我对 TeX 不够熟悉,无法理解原因,我完全预料到我会做错事。

所以我的问题是:如何使用“\beginpgfgraphicnamed”和居中图形?

答案1

当然,\hbox居中不会通过设置段落设置来实现,但是原始框不会开始一个段落,它只是垂直堆叠在前一个材料的下方(在垂直模式下)

你可以使用

\leavevmode\beginpgfgraphicnamed

哪里\leavevmode是一个确实开始一个段落的宏(所有乳胶框命令,例如\parbox\mbox或以这种方式\includegraphics使用\leavevmode,以便它们在诸如center或之类的环境中自然地工作\flushright

相关内容