在回忆录环境中,如果下一页上放置了太大的图形,章节标题的位置就会变得混乱

在回忆录环境中,如果下一页上放置了太大的图形,章节标题的位置就会变得混乱

使用该类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来避免这种情况,但浮动是更可取的替代方法。

相关内容