我一直在尝试使用 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
这里有两个组成部分:
- 将图片原点移动到左下角。
- 更改 TikZ 使用的网格。
前者无法在页面发货前完成,因为显然只有那时才能知道页面尺寸。--eso-pic
已经加载pdfpages
-- 提供了在发货后添加 TikZ 绘图的功能。
后者可以通过 TikZ 选项x
和y
水平和垂直方向的单位步长分别实现。请注意,您可以使用负值来翻转轴。
结合两者,您将获得:
\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)
位于页面的右上角。