![图片占页面的一半以上](https://linux22.com/image/280241/%E5%9B%BE%E7%89%87%E5%8D%A0%E9%A1%B5%E9%9D%A2%E7%9A%84%E4%B8%80%E5%8D%8A%E4%BB%A5%E4%B8%8A.png)
我想要一张覆盖页面一半的图片。文本应该位于页面的其余区域。请参阅所附图片,千言万语胜过千言万语……有人能帮我吗?
更新:我只想要一页这种样式,上一页和下一页是“正常”的,这意味着没有图片,全文本。文本应该从上一页流出,继续流到这个“特殊”页面,然后继续流到下一页。
我能找到的所有解决方案都基于这样的条件:如果更改页面布局,则显式或隐式分页符会完成。由于我希望文本从上一页流出,因此这些解决方案都不可用。
更新2:由于插入图片不是问题,问题可以简化为:如何让文本在不同布局(不同文本宽度)的页面之间流动?(也许“flowfram”包可以提供帮助。但我认为不可能在文档中间的单个页面上的“主”文档和流框架之间混合文本流(?))
答案1
这里有两件事
- 您只想在一个页面上使用它。您可以使用
minipage
- 您希望它用于所有页面。您可以使用
background
包。
仅限一页
\documentclass[a4paper]{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{kantlipsum}
\usepackage[a4paper,left=1in,right = 1in,top = 1in,bottom=1in]{geometry}
%\pagestyle{empty}
\begin{document}
\noindent
\begin{minipage}[t]{.5\linewidth}
\kant[1-3]
\end{minipage}
\begin{tikzpicture}[remember picture,overlay]
\node[anchor =north east, inner sep=0pt,outer sep=0pt] at (current page.north east) {\includegraphics[width=0.45\paperwidth,height=\paperheight]{example-image-a}};
\end{tikzpicture}
\end{document}
对于所有页面
这使用background
包和相同的图像用于所有页面。您可以根据需要选择不同的图像,但我会把它留给您。有关详细信息,请参阅background
文档(texdoc background
从命令行/提示符或访问www.texdoc.net)
\documentclass[a4paper]{article}
\usepackage{background}
\usetikzlibrary{calc}
\backgroundsetup{%
scale=1,
angle=0,
opacity=1, %% adjust
contents={
\begin{tikzpicture}[remember picture,overlay]
\node[anchor =north east, inner sep=0pt,outer sep=0pt] at (current page.north east) {\includegraphics[width=0.45\paperwidth,height=\paperheight]{example-image-a}};
\end{tikzpicture}
}
}
\usepackage{kantlipsum}
\usepackage[a4paper,left=1in,right = 0.5\paperwidth,top = 1in,bottom=1in]{geometry}
%\pagestyle{empty}
\begin{document}
\kant[1-100]
\end{document}
这至少需要 2-3 次编译才能稳定。
答案2
这更像是一个非答案而不是答案,但无论如何......
我认为,除非对流入该页面的文本做出一些额外的限制,否则你想要的结果是不可能的。
想象一下,在包含图片的那一页之前的最后一页以一个段落结尾,而这个段落不适合这一页,因此 TeX 决定在某个适当的行处将其拆分。然后该段落的宽度应该在段落中间改变,因为它的前半部分(在一页中)是“全宽”,但后半部分将出现在包含图片的页面上,因此它应该是“半宽”。
所以你的问题与这个问题,关于在段落中间更改段落宽度。那里的答案得出结论,这不是 TeX 可以做的事情。也许 LuaTeX 可以,但即使那样也很难。
问题在于段落的高度取决于其宽度,因此 TeX 必须“在脑海中排版”(实际上是在一个框中)具有给定宽度的整个段落,以了解其高度并因此知道它是否适合页面,然后在适当的行处断开,但是它无法“撤消”已经完成的排版(理论上可以取消框,但并不容易,请参阅前面提到的问题)。
您可以通过以下简单的方法看到这种效果(虽然不起作用,但很接近)。
以下代码使用\afterpage
等待当前页面已满,然后插入命令来绘制图片并减少\hsize
下一页的 。它还会\afterpage
在下一页插入另一个命令,以恢复已更改的\hsize
:
\documentclass[a4paper]{article}
\usepackage{tikz}
\usepackage{afterpage}
\usetikzlibrary{calc}
\usepackage{kantlipsum}
\usepackage[a4paper,left=1in,right = 1in,top = 1in,bottom=1in]{geometry}
%\pagestyle{empty}
\begin{document}
\kant[1-3]
\kant[1-3]
% I want the picture in the next page:
\afterpage{\clearpage%
\global\hsize=.5\linewidth%
\afterpage{\clearpage\global\hsize=2\hsize}%
\begin{tikzpicture}[remember picture,overlay]
\node[anchor =north east, inner sep=0pt,outer sep=0pt]
at (current page.north east)
{\includegraphics[width=0.45\paperwidth, height=\paperheight]
{example-image-a}};
\end{tikzpicture}%
}
\kant[1-3]
\kant[1-3]
\kant[1-3]
\kant[1-3]
\kant[1-3]
\end{document}
请注意宽度是如何改变的,但不是在“当前段落”完成之前:
--
--
答案3
目前我使用的是手工方法。首先,我排版文档时不包含图片,然后对完全窄的段落使用 \hsize,对部分无箭头的段落使用 \hangindent 和 \hangafter 的组合。在这种情况下,我必须手动指定哪个段落缩进多少行。
对于图片,我使用了包“textpos”( \begin{textblock*} ),它将图片独立地放在页面内容上(就像页面的“背景”一样)。
因此,这种方法不适用于自动排版,我必须将其作为文档准备的最后一步。但至少我能够为印刷店制作出漂亮的 CMYK 书籍 PDF,这是我的主要目标 :-)
谢谢你的回复。