情况
我使用的是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}