使用该类memoir
,如果我有一个图形足够接近章节标题,并且足够大以至于必须将其放在下一页,那么章节标题的位置就会变得混乱。例如,我希望看到:
但得到的却是:
这是该效果的独立再现。我用一个框替换了图像,这样就不会包含任何外部文件。请注意,如果框尺寸减半,让图形、文本和章节标题都适合一页,那么章节标题最终会位于预期的位置。
\documentclass[12pt,openany]{memoir}
\usepackage{caption}
\newcommand{\imageCentered}[4]{%
\begin{center}%
\captionsetup{type=figure}%
% \includegraphics[totalheight=#4\textheight]{#1}%
\rule{350pt}{300pt} \par
\caption{#2}%
\label{#3}%
\end{center}%
}
\begin{document}
\chapterstyle{ell}
\chapter{foo}
\section{foo.}
aa'aa aaaaaaa aaaaaa aaa aa aaa aaaaaaa aa aaaaaaaaaaa aa a aaaa. aaaa aa a aaaaaa aaaaaaaaa aaaaaaaaaa, aaa aa aaaaaa aaa aa aaaaaaaaaaa aa aaaaaaaaaa aaa aaaaaa aaaa aaa aaa aaaaaa aaaa aaa aaaaaaaa aaaaaaaaaaaaa. a aaaaaaaaaaaa aaaaaaaaa aa aaaa aaaaaaaaaa aaaaa aa aa aaaa. a aaaaa aaaaaaaaaaa aa aa aaaaaa aaaa aaaaaaaa aaaaaaa aa aa, aa, aaa aa aa aaaaaaaaaaa aa aaaaaa (aaa{aaa:aaaaaa:aaaaaaaaa1}), aaaaa aaa aaaaaaaa aaaaaaaa aaa aaaaaaa aa aa', aa', aaa aa'.
\imageCentered{figures/strainFig1}{caption text}{fig:1}{0.5}
\end{document}
知道这是怎么发生的吗?如何防止?
编辑:作为参考,我没有使用 \begin{figure} ... \end{figure} 的原因是因为它在锻炼环境中不起作用(请参阅:如何在练习环境中使用图形?)。因此,一旦我知道了该问题的解决方案,我就会一劳永逸地更改所有图形命令以避免该问题。
答案1
您可以从章节标题中删除变量粘连,这可以解决眼前的问题,但正如其他人所说,如此大的图像无论如何都应该浮动或与手动强制分页符一起使用。
这会将头部装箱,可能会消除比绝对必要的更多的拉伸/收缩,但会将变化保持在最低限度。
\documentclass[12pt,openany]{memoir}
\usepackage{caption}
\makechapterstyle{ell}{%
\chapterstyle{default}
\renewcommand*{\chapnumfont}{\normalfont\HUGE\sffamily}
\renewcommand*{\chaptitlefont}{\normalfont\huge\sffamily}
\settowidth{\chapindent}{\chapnumfont 111}
\renewcommand*{\chapterheadstart}{\begingroup
\vspace*{\beforechapskip}%
\vbox{\begin{adjustwidth}{}{-\chapindent}%
\hrulefill
\smash{\rule{0.4pt}{15mm}}
\end{adjustwidth}}\endgroup}
\renewcommand*{\printchaptername}{}
\renewcommand*{\chapternamenum}{}
\renewcommand*{\printchapternum}{%
\vbox{\begin{adjustwidth}{}{-\chapindent}
\hfill
\raisebox{10mm}[0pt][0pt]{\chapnumfont \thechapter}%
\hspace*{1em}
\end{adjustwidth}}\vspace*{-3.0\onelineskip}}
\renewcommand*{\printchaptertitle}[1]{%
\vskip\onelineskip
\raggedleft {\chaptitlefont ##1}\par\nobreak}}
\newcommand{\imageCentered}[4]{%
\begin{center}%
\captionsetup{type=figure}%
% \includegraphics[totalheight=#4\textheight]{#1}%
\rule{350pt}{300pt} \par
\caption{#2}%
\label{#3}%
\end{center}%
}
\begin{document}
\chapterstyle{ell}
\chapter{foo}
\section{foo.}
aa'aa aaaaaaa aaaaaa aaa aa aaa aaaaaaa aa aaaaaaaaaaa aa a aaaa. aaaa aa a aaaaaa aaaaaaaaa aaaaaaaaaa, aaa aa aaaaaa aaa aa aaaaaaaaaaa aa aaaaaaaaaa aaa aaaaaa aaaa aaa aaa aaaaaa aaaa aaa aaaaaaaa aaaaaaaaaaaaa. a aaaaaaaaaaaa aaaaaaaaa aa aaaa aaaaaaaaaa aaaaa aa aa aaaa. a aaaaa aaaaaaaaaaa aa aa aaaaaa aaaa aaaaaaaa aaaaaaa aa aa, aa, aaa aa aa aaaaaaaaaaa aa aaaaaa (aaa{aaa:aaaaaa:aaaaaaaaa1}), aaaaa aaa aaaaaaaa aaaaaaaa aaa aaaaaaa aa aa', aa', aaa aa'.
\imageCentered{figures/strainFig1}{caption text}{fig:1}{0.5}
\end{document}
答案2
大多数文档元素之间插入的垂直空间都是可拉伸的。这也适用于ell
章节样式构造。如果其他文档元素不适合页面边界,可拉伸长度会尝试补偿(缩小或扩大)此问题。您可能已经注意到一些未满\vbox
警告,这是有问题的第一页的结果。
如果你允许你的数字漂浮,它们会移动而不会对间距造成太大影响,也许会移动到内容更灵活的另一个页面。因此,请使用\begin{figure}[t]
...\end{figure}
而不是\begin{center}
... \end{center}
。
您也可以尝试使用\raggedbottom
来避免这种情况,但浮动是更可取的替代方法。