有没有办法可以避免图片拖到页面末尾,就像这个例子一样?
这是我包装图片的方式:
\begin{wrapfigure}{r}{0.5\textwidth}
\vspace{-20pt}
\begin{center}
\includegraphics[width=0.4\textwidth]{./pictures/DBuserTabel.png}%{./Pictures/mainscreen1.png}
\caption{Uklip af User tablen i Databasen}
\label{fig:databaseUserTable}
\end{center}
\vspace{-20pt}
\vspace{1pt}
\end{wrapfigure}
答案1
您描述的行为是由于使用的wrapfig
环境太靠近分页符而导致的,如以下示例所示:
\documentclass{article}
\usepackage{wrapfig}
\usepackage{lipsum}
\begin{document}
\lipsum[1-4]
\begin{wrapfigure}{r}{5cm}
\centering
\rule{3cm}{7cm}
\end{wrapfigure}
\lipsum[1-6]
\end{document}
软件包wrapfig
文档明确警告了这一点:
环境应放置在不会超出分页符的位置
因此,您需要移动wrapfig
环境以确保它不会超出分页符。但是,使用R
(或L
) 而不是r
(或l
) 您的图形将浮动,因此只需在上述代码中更改r
为,如下所示R
\documentclass{article}
\usepackage{wrapfig}
\usepackage{lipsum}
\begin{document}
\lipsum[1-4]
\begin{wrapfigure}{R}{5cm}
\centering
\rule{3cm}{7cm}
\end{wrapfigure}
\lipsum[1-6]
\end{document}
现在产生:
答案2
这接受的答案提供了一种方法(使图形浮动)。如果您只需要删除下一页上的白框,只需添加负间距即可。改编 Gonzalo Medina 的示例:
\documentclass{article}
\usepackage{wrapfig}
\usepackage{lipsum}
\begin{document}
\lipsum[1-4]
\begin{wrapfigure}{r}{5cm}
\centering
\rule{3cm}{7cm}
\vspace{-110pt} % This removes the white box on the second page
\end{wrapfigure}
\lipsum[1-6]
\end{document}
或者,您可以计算第一页所占的行数wrapfigure
,并将该数字插入到第一个可选参数中wrapfigure
:
\documentclass{article}
\usepackage{wrapfig}
\usepackage{lipsum}
\begin{document}
\lipsum[1-4]
\begin{wrapfigure}[10]{r}{5cm}
% ^^ This dictates the number
% of text rows the wrapfigure
% will occupy.
\centering
\rule{3cm}{7cm}
\vspace{-110pt}
\end{wrapfigure}
\lipsum[1-6]
\end{document}
这两种方法都会产生以下输出:
答案3
如果您想要非浮动的 wrapfig 环境,但又不希望图形超出页面底部,那么有时就意味着您必须在段落开始前设置分页符。您能通过定义一个命令(在序言中)自动执行此操作,该命令将图形内容存储在保存框中,测试框的高度,然后在必要时强制分页。请参阅以下示例:
\documentclass{article}
\usepackage{wrapfig}
\usepackage{lipsum}
\newsavebox\curwrapfig
\makeatletter
\long\def\wrapfiguresafe#1#2#3{%
\sbox\curwrapfig{#3}%
\par\penalty-100%
\begingroup % preserve \dimen@
\dimen@\pagegoal \advance\dimen@-\pagetotal % space left
\advance\dimen@-\baselineskip % allow an extra line
\ifdim \ht\curwrapfig>\dimen@ % not enough space left
\break%
\fi%
\endgroup%
\begin{wrapfigure}{#1}{#2}%
\usebox\curwrapfig%
\end{wrapfigure}%
}
\makeatother
\begin{document}
\lipsum[1-4]
\wrapfiguresafe{r}{0mm}{\centering\rule{3cm}{7cm}}
\lipsum[1-6]
\end{document}
输出结果如下:
要注意的是,如果您的图形很高,这可能会导致页面很短,出现非常严重的分页符,并且/或者根据您的设置,导致 vbox 警告不足。
答案4
使用提供命令 \FloatBarrier 的包,将其放在您希望图形出现的段落之后,然后使用 l, r (而不是 L,R)将图形放在左侧或右侧,使其浮动。不要将图形弄得太大。也许我很幸运,但我还没有遇到过分页符问题。