![在页面上设置页面宽度的图像,将所有文本推到其下方(无覆盖)](https://linux22.com/image/427428/%E5%9C%A8%E9%A1%B5%E9%9D%A2%E4%B8%8A%E8%AE%BE%E7%BD%AE%E9%A1%B5%E9%9D%A2%E5%AE%BD%E5%BA%A6%E7%9A%84%E5%9B%BE%E5%83%8F%EF%BC%8C%E5%B0%86%E6%89%80%E6%9C%89%E6%96%87%E6%9C%AC%E6%8E%A8%E5%88%B0%E5%85%B6%E4%B8%8B%E6%96%B9%EF%BC%88%E6%97%A0%E8%A6%86%E7%9B%96%EF%BC%89.png)
我正在用 Latex 制作一本 D&D 风格的书,使用的是 DnD latex 模板,除了插入 D&D 风格的跨页图像外,其他一切都运行良好。这些图像往往是一页的完整上半部分、一页的完整下半部分,或者页面左侧的一半或右侧的一半。文本分为两列。
经过一些尝试,我实际上可以使用以下方法在所需页面的顶部获得一个页面填充(宽)图像
\begin{tikzpicture}[remember picture, overlay]
\node[anchor=north west, inner sep=0pt] at (current page.north west) {\includegraphics[width=\paperwidth, height=.5\paperheight]{img.png}};
\end{tikzpicture}
但这种方法有两个问题。首先,它遮住了页面顶部的章节标题(使用 documentstyle book);其次,标题旁边的所有其他文本目前与图像的存在无关(显示在图像上方)。
我想要的是“推动”所有文本(如果可能的话,包括章节标题)从此页面的下半部分开始,并且只存在于其中,而上半部分是图像。我可以使用例如\vspace{}
命令来启动它,但这只会将第一列向下推到正确的起点;第二列仍然覆盖图像。我尝试了各种 vfill、minipages 等,试图从文本的角度“覆盖”页面的上半部分,但到目前为止似乎没有任何效果。
我不确定 tikzpicture 是否是处理图像的最佳方法,但这是我迄今为止发现的唯一一种可以将图像边距精确放置在我想要的位置的方法。如果有的话,我需要第二个文档元素,它只是将“块”放在页面的整个上半部分并强制文本在其周围流动。如上所述,这种特殊情况要求上半部分被阻止,但在其他情况下,我将在底部有图像,并且需要阻止该图像(将文本推送到下一页)。
如果有人有更好的方法,我将不胜感激!我尝试了 wrapfigure 和其他一些选项。我想章节标题可能会更复杂——我确信样式表从页面顶部设置了边距,如果章节标题似乎干扰了图像,我需要能够针对不同的章节动态更改它。
答案1
这将修改 跳过的空格量\chapter
。您可以将其重置为普通章节的 50pt。
我也尝试了 flowfram 解决方案,但章节标题在页面上看起来太低了,我想无论如何我都必须进行更改\@makechapterhead
...此外,flowfram 喜欢留在文本区域内,因此 TikZ 可能是覆盖边距的最简单方法。您可以使用\AddToHook
并测试页面计数器。
\documentclass{book}
\usepackage{tikz}
\usepackage{etoolbox}
\usepackage{lipsum}% MWE only
\newlength{\mychapterskip}
\makeatletter
\patchcmd{\@makechapterhead}{\vspace*{50\p@}}{\vspace*{\mychapterskip}}{}{Failed}
\makeatother
\begin{document}
\setlength{\mychapterskip}{300pt}%
\chapter{Title}
\begin{tikzpicture}[remember picture, overlay]
\node[anchor=north west, inner sep=0pt] at (current page.north west)
{\includegraphics[width=\paperwidth, height=.5\paperheight]{example-image}};
\end{tikzpicture}
\lipsum[1-2]
\end{document}