我正在使用此代码生成一个包含三页的 pdf:
第一个带有广告图片(里面没有文字),第二个带有普通文字,第三个与第一个类似。
\documentclass[oneside,a4paper,12pt]{book}
\usepackage{layaureo}
\linespread{1.5}
\usepackage{eso-pic}
\usepackage{graphicx}
\pagestyle{plain}
\begin{document}
\AddToShipoutPicture*{%
\put(0,0){\includegraphics{back}}%
}
\phantom{}
\newpage
text
\newpage
\pagenumbering{gobble}
\AddToShipoutPicture*{%
\put(0,0){\includegraphics{back}}%
}
\phantom{}
\end{document}
如果我删除,\phantom
所有页面都会合并到一页中。
有什么技巧或自动命令可以做到同样的事情吗?
答案1
看起来你只是在第 1 页和第 3 页上放置了一张背景图片(通过\AddToShipoutPicture*
)。但这些页面上没有实际内容。\phantom
创建一个幻像空间……从而在页面上创建内容。事实上,你可以完全删除\AddToShipoutPicture*{\put(0,0){\includegraphics{42}}}
并拥有完全相同的行为(因为\AddToShipoutPicture*
创建的背景图像实际上是一个覆盖层,不是(排版页面上的任意空间)
您可以\phantom
用任何其他可以在页面上留出空间的符号替换它(例如~
或hello
),这样页面就会断开。您会感到困惑,以为\phantom
在此处做了一些特殊的事情 - 但事实并非如此。它只是在留出空间,以便排版引擎说“哦,这里有东西 - 这里有页面!”。
另一种看待这个问题的方式是无内容plus\newpage
不会创建新页面。带有无内容和\newpage
相互抵消。 (La)Tex 直到 之后出现内容时才会说“这是一页!” \newpage
。同样,当您\phantom
在第三页上删除时,引擎会看到 (1) 内容加上 (2)\newpage
加上 (3)无内容...所以实际上没有创建新的页面。
你基本上有两个选择。
- 继续按照你目前的方法,并发现没有发生任何奇怪的事情
- 不要将图像作为背景图像...而是将其作为实际页面内容!
如果您想采用第二种方法,这里有一个示例:
\documentclass[oneside,a4paper,12pt]{book}
\usepackage{layaureo}
\linespread{1.5}
\usepackage{eso-pic}
\usepackage{graphicx}
\pagestyle{plain}
\begin{document}
% Old, background image approach
%\AddToShipoutPicture*{%
%\put(0,0){\includegraphics{back}}%
%}
% New approach, where image is part of the page content
\vbox to0pt{%
\makebox[\textwidth]{%
\centering%
\includegraphics{back}%
}%
}
%\phantom{}% Not needed anymore!
\newpage
text
\newpage
%\clearpage
\pagenumbering{gobble}
% Old, background image approach
%\AddToShipoutPicture*{%
%\put(0,0){\includegraphics{back}}%
%}
% New approach, where image is part of the page content
\vbox to0pt{%
\makebox[\textwidth]{%
\centering%
\includegraphics{back}%
}%
}
%\phantom{}% Not needed anymore!
\end{document}
这里我用到了一些你可能不需要的东西。具体来说:
\vbox to0pt{}
\makebox[\textwidth]{}
\centering
让我解释一下我为什么使用它们。在查看您的示例时,我使用了一个太大而无法在同一页上排版的图像。LaTeX 不喜欢这种情况,并决定有效地将其强制向下移动到下一个可用页面(即在它之前创建一个空白页)。
back
您可能不会遇到此问题,具体取决于您的图像/PDF的大小!因此,您可以简单地使用\includegraphics
,如果这能满足您的要求,然后删除\vbox
、\makebox
和\centering
等内容。
假设你是使用足够大的图像,让我解释一下这三行各自完成的任务。
\vbox to0pt{}
强制高度基本为零,同时仍被视为内容在页面上(因此在\newpage
命令之前排版)。基本上,如果图像进入页眉/页脚区域,这会很有帮助。
\makebox[\textwidth]
欺骗引擎忽略边距。实际上,即使您想要的图像比普通文本内容更宽,它仍将被允许出现在页面上,而不会自动创建新页面。
最后,\centering
只需将图片置于中心即可。我认为\AddToShipoutPicture*{\put(0,0){...}
这也有效地将图片置于中心,这就是我将其包括\centering
在这里的原因。
我之所以包含这些细节,是因为您没有展示您的图像,也没有展示其大小。您需要判断哪些部分是必要的,哪些部分不是,因为目前只有您知道。