全宽图形,奇数/偶数页+边距

全宽图形,奇数/偶数页+边距

情况 我使用的是memoir双面纸。我留出了边注的位置。因此,文本块不在我的“纸张”的中心,并且奇数页和偶数页的这个非中心位置是不同的。(在背面,边注位于左侧,在正面,它们位于页面的右侧。)

目标我的所有图形都有一个标准宽度,等于我称之为的长度\widthw = \textwidth + \marginparsep + \marginparwidth(我在第 10 页和第 11 页找到了这些长度的定义这个 pdf)。现在我想调整这些图形的位置,如下面的截图所示:

  • 背面(左页):在此处输入图片描述
  • 正面(右页):在此处输入图片描述

我的审判

\newlength{\rf}

\newcommand*\definesHSpace
    {
    \checkoddpage
    \ifoddpage
        \setlength{\rf}{0mm}
    \else
        \setlength{\rf}{\marginparsep+\marginparwidth}
    \fi
    }

\newenvironment{myfigure}
    {
    \begin{figure}[h]
    \definesHSpace
    \hspace{-\rf}
    \begin{minipage}[h]{\widthw}
    }
    {
    \end{minipage}
    \end{figure}
    }


%begin document...

\begin{myfigure}
...
\end{myfigure}

问题“如果” 的效果不如预期。我会试着解释为什么我认为它失败了:假设我们在奇数页上。我写完了一段文字,而这一页上还有空间可以写 3 行文字。现在我写下“如果”\begin{my figure} ...的答案是“奇数页”,尽管 LaTeX 会将图形放在下一页(因为图像高于 3 行文字的高度)。所以图形不会像我预期的那样进行调整。

解决方案?如果有人能解决这个问题就太好了。(我知道tufte-book有一些全宽图形环境,但我不想使用那个类。)非常感谢!!!

答案1

我使用包解决了这个问题needspace。您提到所有图形都是标准宽度。如果碰巧它们也是标准高度,那么解决方案非常简单:在调用之前放置一个\needspace{长度,其中长度是图形的标准垂直空间(包括周围的空白空间)。这样,如果需要,分页符将在调用之前发生。因此,图形放置不会与图形调用不同步。}\defineHSpace\definesHSpace

但如果数字不是标准高度,\needspace仍然可以解决问题;但是,它要求您使用宏而不是环境来创建图形。解决方案包括在排版之前将图形设置在框中,并在实际开始环境之前使用来\needspace分配图形的高度+深度+2 \baselineskip(上/下间隙)figure。与以前一样,如果需要,分页符将在调用之前发生\definesHSpace。注释掉\needspace我的 MWE 中的宏以查看错误结果,这是由于第一个图形被推到第二页造成的。

此外,我为这个 MWE 注释掉了两个字幕选项。根据您希望它们在图形或边缘居中,取消注释相应的选项。如果使用了 centered-on-margin 字幕选项,则\needspace需要调整参数以考虑字幕的增加高度。

\documentclass[twoside,12pt]{memoir}
\usepackage{lipsum, calc, needspace, caption}
\newlength\widthw
\setlength{\widthw}{\textwidth+\marginparsep+\marginparwidth}

\newlength{\rf}

\newcommand*\definesHSpace
    {
    \checkoddpage
    \ifoddpage
        \setlength{\rf}{0mm}
    \else
        \setlength{\rf}{\marginparsep+\marginparwidth}
    \fi
    }

\newcommand\myfigure[2]{%
    \setbox0=\hbox{%
    \begin{minipage}[h]{\widthw}%
    #2%
%    \captionof{figure}{#1}% CENTERED ON FIGURE
    \end{minipage}%
    }%
    \needspace{\ht0+\dp0+2\baselineskip}% COMMENT THIS LINE FOR OLD RESULT
    \begin{figure}[hT]%
    \definesHSpace%
    \hspace{-\rf}%
    \box0%
%     \caption{#1}% CENTERED ON MARGIN
    \end{figure}
    }


\def\myfig{\myfigure{caption}{\rule{\widthw}{2ex}}}

\begin{document}
\lipsum[1-4]
\myfig%This breaks under OP dfn
\lipsum[3-5]
\myfig
\lipsum[6-8]
\myfig

\end{document}

在此处输入图片描述

相关内容