情况:我有一份文档,主要由多页纯文本组成。我想在最接近给定行的分页符处包含一张整页图像。重要的是,图像必须插入到预先存在的分页符处(即,插入图像之前的页面上没有多余的尾随空白)。
换句话说,我想要从如下文档开始:
然后,我希望能够在红色标记处的文本中插入某种命令,使图像插入到最近的分页符处,从而得到如下结果:
包含图像的页面不应包含其他内容(即没有页眉/页脚/等),并且应调整图像大小以使其填满整个页面(图像已经具有正确的纵横比)。
这是我到目前为止尝试过的方法。在所有这些情况下,my_image.*
都是一张与我的文档具有相同纵横比的图像(在本例中,ebook
是 2:3,所以我的图像大多是 800x1200 像素)。
第一的,简单的方法:
\documentclass[ebook]{memoir}
\usepackage{pdfpages} % to include the image-pdf
\usepackage{blindtext}
\begin{document}
\blindtext[10] % some plain text
\includepdf{my_image.pdf} % the image I want to be positioned somewhere around here
\blindtext[10] % some more plain text
\end{document}
这显然会失败,因为它会将图像精确地插入到我要求的位置,而这个位置可能不是分页符。当然,我可以手动调整图像的位置,\includepdf
使其紧接着分页符之前的最后一段末尾,但这很不愉快,而且也不是一个实用的解决方案,因为我需要处理相当多的此类图像(位于文档的各个位置)。
第二,尝试使用浮点数的方法:
\documentclass[ebook]{memoir}
\usepackage{pdfpages} % to include the image-pdf
\usepackage{blindtext}
\begin{document}
\blindtext[10] % some plain text
\begin{figure}
\includepdf{my_image.pdf} % the image I want to be positioned somewhere around here
\end{figure}
\blindtext[10] % some more plain text
\end{document}
这样做的最终结果是使其成为my_image.pdf
其中一个页面的“背景”,而不是放置my_image.pdf
在单独的页面上。
然后我尝试添加\pagebreak
之前\begin{figure}
、之前\includepdf{my_image.pdf}
、之前\end{figure}
和之后\end{figure}
;这些都没有任何用处。
第三,我尝试使用一些代码这个 tex.SE 答案,并调整垂直边距(基于查看包的输出layout
):
\documentclass[ebook,oneside]{memoir}
\usepackage{blindtext}
\usepackage{graphicx}
% \adjustimg and \centerimg from <https://tex.stackexchange.com/a/39148/31395>
\newcommand{\adjustimg}{% Horizontal adjustment of image
\ifodd\value{page}\hspace*{\dimexpr\evensidemargin-\oddsidemargin}\else\hspace*{-\dimexpr\evensidemargin-\oddsidemargin}\fi%
}
\newcommand{\centerimg}[2][width=\textwidth]{% Center an image
\makebox[\textwidth]{\adjustimg\includegraphics[#1]{#2}}%
}
\begin{document}
\blindtext[10]
\begin{figure}
\vspace{-\voffset} \vspace{-1in} \vspace{-\headsep} \vspace{-\topmargin} \vspace{-\headheight}
\centerimg[width=\paperwidth,height=\paperheight]{my_image.jpg}
\end{figure}
\blindtext[10]
\end{document}
这似乎完成了工作,但后来我将其放回到带有页眉和页脚的原始文档中。将以下页眉/页脚代码添加到序言中:
\makepagestyle{nstyle}
\makeevenhead {nstyle}{HEADER TEST LEFT}{MID}{RIGHT}
\makeoddhead {nstyle}{HEADER TEST LEFT}{MID}{RIGHT}
\makeevenfoot {nstyle}{FOOTER TEST LEFT}{MID}{RIGHT}
\makeoddfoot {nstyle}{FOOTER TEST LEFT}{MID}{RIGHT}
\pagestyle{nstyle}
这给了我一个奇怪的结果:页眉被隐藏了(大概是在图像后面?),但页脚显示在图像上方。我不明白为什么会发生这种情况,但无论如何,这对我来说都是一个大问题。整个设置(包括一系列的等等\vspace
)都非常不雅观,所以我认为这肯定不是解决问题的好方法。
因此,在这一点上,我有点不知道该如何解决这个问题。 (不过,我对乳胶完全是个新手,所以如果有一个简单的解决方案,我只是不知道,我不会感到惊讶。)
注意:我不确定这是否重要,但我正在使用它xetex
来编译(我需要外国脚本支持)。
编辑:在我看来,解决这个问题的最佳方法是在环境\includegraphics
内部使用figure
(即第三我尝试过上述方法)。 我面临的问题是:
我不知道如何从最终所在的页面上删除页眉/页脚
figure
。或者,我不知道如何让图像显示在页脚“上方”(在 z 方向上)。我没有一个干净/优雅的方法让图形占据整个页面。如果没有一个干净/优雅的方法,那就这样吧,尽管我确实希望有比用一系列 5 来解决
\vspace
问题更好的方法。
(注意:我认为上面带有树的图片的示例可能会产生误导 - 我实际使用的图像没有透明或白色背景,因此周围没有空白非常重要。通常我会使用来处理这个问题pdfpages
,但我还没有找到让 pdf 页面正确浮动的方法。)
答案1
我立即想到的是使用\afterpage
。这将导致在提及它之后一页出现展示位置:
\documentclass{article}
\usepackage{graphicx,lipsum,afterpage}% http://ctan.org/pkg/{graphicx,lipsum,afterpage}
\begin{document}
\lipsum[1-20]
\afterpage{
\thispagestyle{empty}\addtocounter{page}{-1}%
\noindent\includegraphics[width=\textwidth,height=\textheight]{example-image-a}%
}
\lipsum[21-40]
\end{document}
上图显示了第 3 页和第 4 页(顶部),图像插入在第 3 页顶部的三分之二处。\afterpage
然后插入一个没有页眉/页脚的页面 ( \thispagestyle{empty}
),图像被拉伸到width=\textwidth,height=\textheight
后续页面上的文本块 ( )。添加\addtocounter{page}{-1}
步骤使页面计数器后退,这样页面看起来就像是独立于文档流插入的(可能不是您完全想要的,但类似于\includepdf
来自pdfpages
)。
据我所知,这种用法(afterpage
) 应该不会出现其他未处理浮点数的问题,因为它不与浮点数放置算法交互。
当然,图像也可以填满整个页面。答案只是为了展示这种可能性。
答案2
这是你的意思吗?我不确定(它只是使用浮点数)。图形将出现在标题后面,我用红色大写字母 R 表示。更新,当我按照注释所示操作时,我的浮点数正如我所料,出现在标题后面的页面上。
感谢 barbare beeton 提供的关于如何删除浮动页面上的页码的提示。我使用了(我认为)那里建议的变体。
\documentclass{article}
\usepackage{graphicx}
\usepackage{color}
\usepackage{lipsum}
\usepackage{mwe}
\usepackage{afterpage}
\let\svthepage\thepage
\newcommand\rubric[1]{%
\textcolor{red}{R}%
\def\thepage{\svthepage\thispagestyle{empty}}%
\begin{figure}[p]%
\includegraphics{#1}%
\end{figure}%
\afterpage{\global\def\thepage{\svthepage\let\thepage\svthepage}}%
}
\begin{document}
\lipsum[1-20]
\rubric{example-image-a}
\lipsum[21-40]
\end{document}