我正在尝试创建一个只包含图片的章节,但一直遇到麻烦。该章节是一个附录,其中只应显示一些图形,并放置在不同的部分中。我不需要章节中的文本,只需要图片。
尝试了很多方法后,我还是搞不清楚如何做对。无论我使用裸页\includegraphics
还是浮动页,Latex 似乎都会随机地将图片放在页面上,有时多一些,有时少一些。在大多数情况下,它会在新的部分之前拆分页面,但有时它会将下一节的标题挤压到最后一页。
似乎使用带有[H]
选项的浮动几乎可以实现我想要的效果,只是每个部分的第一页都留空,图片从下一页开始。而且它会在每个部分之前中断。
非常感谢您的任何建议!
答案1
根据描述,该部分之后的第一个浮动/图形肯定太大,无法与该部分一起放在页面上。这解释了为什么最终[H]
页面只包含部分标题。这[H]
意味着在这里执行 100% 浮动,如果它不适合,则将其移动到下一页(以及其后的所有内容)。因此,它的行为不像浮动,而是遵循文本的顺序。
使用真正的浮动会得到相当空的页面,原因是 LaTeX 会(很可能)生成许多浮动页面,并且默认情况下允许这些页面相当空。请参阅浮动算法的讨论这里。
现在要真正了解 TeX 的本质,请尝试进行一些跟踪:
\documentclass{article}
\tracingonline1 % show tracing on the terminal
\tracingpages1 % show what the page breaker does
\begin{document}
\section{A}
\pagebreak[1] % allow a break here for testing
\parbox{6cm}{Picture too high\rule{1pt}{.98\textheight}}
\parbox{6cm}{Picture ok\rule{1pt}{.5\textheight}}
\end{document}
如果您运行上述操作,那么您将获得以下跟踪输出:
%% goal height=550.0, max depth=5.0
% t=0.0 g=550.0 b=10000 p=0 c=100000#
% t=19.90276 plus 0.86108 g=550.0 b=10000 p=-51 c=100000#
% t=556.84485 plus 1.86108 g=550.0 b=* p=0 c=*
[1{c:/texlive/2011/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
%% goal height=550.0, max depth=5.0
% t=535.9421 g=550.0 b=10000 p=0 c=100000#
% t=811.9421 plus 1.0 g=550.0 b=* p=0 c=*
[2]
%% goal height=550.0, max depth=5.0
% t=270.0 g=550.0 b=10000 p=0 c=100000#
% t=275.0 plus 1.0fil g=550.0 b=0 p=-10000 c=-10000#
[3]
%% goal height=550.0, max depth=5.0
% t=0.0 g=550.0 b=10000 p=0 c=100000#
% t=10.0 g=550.0 b=10000 p=-10001 c=-10001#
(./tmp2.aux)
%% goal height=550.0, max depth=5.0
% t=0.0 g=550.0 b=10000 p=0 c=100000#
% t=10.0 g=550.0 b=10000 p=0 c=100000#
% t=10.0 plus 1.0fill g=550.0 b=0 p=-1073741824 c=-1073741824#
一旦理解了基础知识,阅读起来并不难:
%% goal height=550.0, max depth=5.0
% t=0.0 g=550.0 b=10000 p=0 c=100000#
LaTeX 正在尝试制作一个目标高度为 550pt 的页面。第二行表示到目前为止目标大小 ( t=...
) 为 0pt(我们位于页面顶部),目标 ( g=...
) 仍为 550(惊喜 :-),并且它已找到一个带有惩罚 ( p=..
) 的断点,如果它在那里中断,则不良程度 ( b=...
) 将为 10000,换句话说就是糟糕透顶。c=...
还给出了使用此断点的成本 ( )(我们可以在这里忽略它是如何计算的),#
末尾的 表示到目前为止这是见过的最佳断点,如果没有更好的断点,它将被使用。
现在我们将为页面上的每个断点获取这样一行,%
前面有一个单引号。
% t=19.90276 plus 0.86108 g=550.0 b=10000 p=-51 c=100000#
因此,此行是由于\pagebreak[1]
使用惩罚 -51 的命令造成的。目标点现在位于页面下方 19.9pts,即我们正朝着我们的方向。您还可以看到,t=
现在包含一个“加号”组件,根据页面上的内容,您可能还会看到“减号”出现,在这种情况下,TeX 可以稍微压缩一下。结果仍然很糟糕,但 TeX 也用#
ie 标记了该行,如果没有更好的结果,它将使用此断点。
% t=556.84485 plus 1.86108 g=550.0 b=* p=0 c=*
这条线现在显示了 的大幅增加,t=
这是我们的第一个\parbox
。现在您会看到t
超过了g
,并且由于没有减号部分,因此页面已满。结果 TeX 将 badness 和 cost 标记为*
“不可能”,现在向后查找看到的最佳断点,这就是我们之前在跟踪线中的断点。因此,框移动到下一页。
%% goal height=550.0, max depth=5.0
% t=535.9421 g=550.0 b=10000 p=0 c=100000#
% t=811.9421 plus 1.0 g=550.0 b=* p=0 c=*
[2]
我们在这里再次看到它:第一% t=
行显示第一个“图片”后的断点,如您所见,TeX 认为这仍然很丑陋(15 个点的可用空间),因此它尝试添加第二个 parbox,第二个 parbox 后的断点就是我们看到的第二行。但现在这太多了...
概括:
如果您将这些跟踪命令添加到文档中,您可以看到 TeX 试图做什么以及它如何决定一个点或另一个点。这应该可以让您知道您的图形毕竟不是太大(并且 1pt 太大就是太大)。
按照建议使用\enlargethispage
可以帮助您避免在某些情况下出现问题,并将内容挤压到页面上,即使它们不太合适。