我知道如何使用包 pdfpages 来包含 pdf 页面并一直这样做,但总是存在页面居中和缩放的问题。
我现在正在尝试学习如何使用 tikzpicture 来做同样的事情,因为我想利用覆盖选项,就像
\begin{tikzpicture}[remember picture,overlay]
我发现,在单页上,效果很好。问题是我必须使用循环,因为使用数字时\includegraphics[page=??]{file2.pdf}
必须page
是单页。我不能使用一些东西,例如\includepdf[page={2-}]
,告诉它读取第 2 页到 pdf 文件的末尾。
这是一个 MWE,用于读取 tickz 中的一页,效果很好:
\documentclass[11pt]{report}
\usepackage{amsmath,mathtools}
\usepackage{graphicx}
\usepackage{pdfpages}
\usepackage{tikz}
\usepackage{pgffor}
\begin{document}
\begin{tikzpicture}[remember picture,overlay]
\node[inner sep=0pt] at (current page.center)
{\includegraphics[page=1]{file2.pdf}};
\end{tikzpicture}
\end{document}
现在,我想做同样的事情,但不仅仅是针对第 1 页,而是针对所有页面。这是我尝试的
\documentclass[11pt]{report}
\usepackage{amsmath,mathtools}
\usepackage{graphicx}
\usepackage{pdfpages}
\usepackage{tikz}
\usepackage{pgffor}
\begin{document}
\pdfximage{file2.pdf} %find how many pages
There are \the\pdflastximagepages\ pages in the file. Now
we will include them:
\begin{tikzpicture}[remember picture,overlay]
\foreach \index in {1, ... ,\the\pdflastximagepages}
{
\node[inner sep=0pt] at (current page.center)
{\includegraphics[page=\index]{file2.pdf}};
}
\end{tikzpicture}
\end{document}
但这给出了错误Paragraph ended before \pgffor@dots@stripcontext was complete.
我也尝试将循环放在外面,将 tikzpicture 放在里面
\documentclass[11pt]{report}
\usepackage{amsmath,mathtools}
\usepackage{graphicx}
\usepackage{pdfpages}
\usepackage{tikz}
\usepackage{pgffor}
\begin{document}
\pdfximage{file2.pdf}
\foreach \index in {1, ... ,\the\pdflastximagepages}
{
\begin{tikzpicture}[remember picture,overlay]
\node[inner sep=0pt] at (current page.center)
{\includegraphics[page=\index]{file2.pdf}};
\end{tikzpicture}
}
\end{document}
同样的问题。显然我迷路了,不知道自己在做什么,所以我请求专家帮助我纠正语法。
参考:
答案1
我建议使用background
包和一些小技巧。以下定义了一个新命令\installbackgrounds[]{}
。第一个参数是可选的,用于设置背景文件中的总页数。第二个强制参数指定文件。如果没有指定总数,则数字默认为1
。
\documentclass[a4paper]{report}
\usepackage{graphicx}
\usepackage{background, etoolbox, kantlipsum}
\newcounter{mypagebackground}
\setcounter{mypagebackground}{0}
\newcounter{mypagebackgroundpages}
\setcounter{mypagebackgroundpages}{0}
\newcommand*\myinstallbackground[1]{\relax}
\newcommand*\installbackgrounds[2][1]{%
\setcounter{mypagebackground}{0}%
\setcounter{mypagebackgroundpages}{#1}%
\gdef\mybackgroundfile{#2}%
}
\AddEverypageHook{\stepcounter{mypagebackground}}
\backgroundsetup{%
contents={%
\AddEverypageHook{% adapted from pp. 6-7 of background manual
\ifnumless{\value{mypagebackgroundpages}}{\value{mypagebackground}}{}{%
\begin{tikzpicture}[remember picture, overlay]
\node at (current page.center) {\includegraphics[page=\themypagebackground]{\mybackgroundfile}};
\end{tikzpicture}}%
}%
}%
}
\begin{document}
\kant[1-5]
\installbackgrounds[7]{mypages.pdf}
\kant[1-30]
\installbackgrounds{example-image-a.pdf}
\kant[1-5]
\end{document}
mypages.pdf
是一个由 7 页组成的 PDF,每页代表彩虹的一种颜色。
编辑:循环效果
这是对评论中讨论的回应。这不是答案。它旨在帮助理解发生了什么。运行此代码并比较不同的效果。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach \i in {10,20,...,100}
\node [minimum width=\i mm, minimum height=\i mm, draw=red!\i] at (current page.center) {};
\end{tikzpicture}
\clearpage
\foreach \i in {10,20,...,100}{%
\begin{tikzpicture}[remember picture, overlay]
\node [minimum width=\i mm, minimum height=\i mm, draw=blue!\i] at (current page.center) {};
\end{tikzpicture}}
Some text on this page.
\clearpage
\foreach \i in {10,20,...,100}{%
\begin{tikzpicture}
\node [minimum width=\i mm, minimum height=\i mm, draw=green!\i] at (current page.center) {};
\end{tikzpicture}}
\foreach \i in {10,20,...,100}{%
\begin{tikzpicture}
\node [minimum width=\i mm, minimum height=\i mm, draw=orange!\i] {};
\end{tikzpicture}
Some text on page \thepage.
\clearpage}
\end{document}
\clearpage
请注意,第一个橙色方块与绿色方块一起出现在页面上,因为在最后一个绿色方块(远离页面)之后没有其他方块。