pdfpages 与 TikZ 结合时如何获得合理的坐标系?

pdfpages 与 TikZ 结合时如何获得合理的坐标系?

我一直在尝试使用 LaTeX 将内容添加到 (专有) PDF 中,方法是使用pdfpages包含原始页面并使用 TikZ 在其上绘图。这是我一直在使用的代码:

\documentclass[a4paper]{article}
\usepackage{tikz,pdfpages}
\begin{document}
  \includepdf[pages=1,pagecommand={%
    \begin{tikzpicture}[overlay]
      \node[circle,fill=red] at (0,0) {0};
      \node[circle,fill=red] at (1,1) {1};
    \end{tikzpicture}%
  }]{pgfmanual.pdf}%
\end{document}

这基本上可行,但坐标系很奇怪:

失败的例子

原点和网格单位似乎都是相当随意选择的。为了更方便/直观的使用,我希望将其放在(0,0)左下角——就像普通的 TikZ 图片一样。这怎么可能呢?

答案1

current page这是一个使用以shift和选项命名的特殊节点的简单解决方案remember picture

\documentclass[a4paper]{article}
\usepackage{tikz,pdfpages}

\newcommand\superposition[1]{%
  \begin{tikzpicture}[overlay,remember picture,
    shift={(current page.south west)}]
    \node[circle,fill=red] at (0,0) {0};
    \node[circle,fill=red] at (1,1) {1};
  \end{tikzpicture}%
}
\begin{document}
  \includepdf[pages=1,pagecommand={\superposition}]{pgfmanual.pdf}%
\end{document}

答案2

这里有两个组成部分:

  1. 将图片原点移动到左下角。
  2. 更改 TikZ 使用的网格。

前者无法在页面发货前完成,因为显然只有那时才能知道页面尺寸。--eso-pic已经加载pdfpages-- 提供了在发货后添加 TikZ 绘图的功能。

后者可以通过 TikZ 选项xy水平和垂直方向的单位步长分别实现。请注意,您可以使用负值来翻转轴。

结合两者,您将获得:

\documentclass[a4paper]{article}
\usepackage{tikz,pdfpages}
\begin{document}
  \includepdf[pages=1,pagecommand={%
    \AddToShipoutPictureBG*{\put(0,0){%
      \begin{tikzpicture}[overlay,x=1cm,y=1cm]
        \node[circle,fill=red] at (0,0) {0};
        \node[circle,fill=red] at (1,1) {1};
      \end{tikzpicture}
    }}
  }]{pgfmanual.pdf}%
\end{document}

如果你喜欢相对网格,你可以使用

x=\paperwidth,y=\paperheight

而是(1,1)位于页面的右上角。

相关内容