跨边距和文本主体的跨度图:本地分配保存框

跨边距和文本主体的跨度图:本地分配保存框

对于twoside文档,我希望宽图像和表格能够横跨边距和文本。在我的方法中,我创建了一个命令,它接受输入并将 存储在 中save box,测量其总高度,并将 放置在minipage边距中的 中。minipage横跨边距和文本主体的宽度。

我必须使用 a 的原因savebox是,由于我将 a 放在minipage边距中,它在文本主体中占用 0 垂直空间,因此我需要测量它的高度并vspace在文本中放置 a 以将后续材料向下移动至该高度。

现在,第一次运行效果很好,但是当我再次调用命令放置另一个宽图像时,我收到错误。我明白为什么会收到此错误;我正在尝试覆盖现有的savebox。我在编写代码时认为它只会在本地保存,而不是全局保存。有什么办法可以做到这一点吗?也就是说,在本地分配它,或者也许只是在之后删除它。

在下面的 MWE 中,注释掉该行将会出现错误。

\documentclass[11pt, twoside]{article}
\usepackage{graphicx, showframe}
\newlength\marginandtext
\addtolength{\marginandtext}{\textwidth}
\addtolength{\marginandtext}{\marginparwidth}
\addtolength{\marginandtext}{\marginparsep}
\newcommand{\leftsidefullwidth}[1]{%
    \newsavebox\mybox
    \newlength\myheight
    \newlength\mydepth
    \savebox\mybox{\noindent#1}
    \settoheight\myheight{\usebox\mybox}
    \settodepth\mydepth{\usebox\mybox}
    \addtolength{\myheight}{\mydepth}
    \marginpar{\begin{minipage}{\marginandtext}
    \usebox\mybox
    \end{minipage}}
    \vspace{\myheight}
}
\begin{document}
This page is left empty for this example, since it needs to be shown on left pages.
\clearpage
\leftsidefullwidth{\includegraphics[width=\marginandtext,height=6cm]{example-image-a}}
foo
%\leftsidefullwidth{\includegraphics[width=\marginandtext,height=3cm]{example-image-b}}
foo
\end{document}

在此处输入图片描述

答案1

这里根本不需要盒子或测量,因为

\savebox\mybox{\noindent#1}

\savebox水平的构造(如\mbox)因此\noindent是无操作,并且框是其内容的大小。你事先知道这个大小,因为你有

[width=\marginandtext,height=6cm]

您应该使用普通浮点数而不是边距,因为浮点数占用主文本流中的空间,然后\makebox[\textwidth][l]{begin{minipage}{\marginandtext}}在一侧使用,[r]在另一侧使用。

相关内容