eso-pic 的视觉问题

eso-pic 的视觉问题

我正在使用此代码生成一个包含三页的 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)无内容...所以实际上没有创建新的页面。

你基本上有两个选择。

  1. 继续按照你目前的方法,并发现没有发生任何奇怪的事情
  2. 不要将图像作为背景图像...而是将其作为实际页面内容!

如果您想采用第二种方法,这里有一个示例:

\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在这里的原因。

我之所以包含这些细节,是因为您没有展示您的图像,也没有展示其大小。您需要判断哪些部分是必要的,哪些部分不是,因为目前只有您知道。

相关内容