使边距数字比边距更宽

使边距数字比边距更宽

我正在使用 Tufte 类,我想创建一个大于边距的边距图形,使文本环绕它。有什么技巧可以做到这一点?我尝试调整@tufte@margin@floatbox以获取 minipage 宽度的第三个参数,但失败了。这是我目前得到的结果:

\newsavebox{\myfloatboxwider}
\newenvironment{myfloatwider}[3][-1.2ex]%
  {\FloatBarrier% process all floats before this point so the figure/table numbers stay in order.
  \begin{lrbox}{\myfloatboxwider}%
  \hspace*{-\marginparwidth}%
  \begin{minipage}{#3}%
    \@tufte@caption@font%
    \def\@captype{#2}%
    \hbox{}\vspace*{#1}%
    \@tufte@caption@justification%
    \@tufte@margin@par%
    \noindent%
  }
  {\end{minipage}%
  \end{lrbox}%
  \marginpar{\usebox{\myfloatboxwider}}%
  }

\newenvironment{marginfigurewider}[2][-1.2ex]%
  {\begin{myfloatwider}[#1]{figure}{#2}}
  {\end{myfloatwider}}

像这样使用

\begin{marginfigurewider}[1.2ex]{2.0\marginparwidth}%
  \includegraphics[width=\linewidth]{myimage.jpg}
  \caption{Some caption.}
  \label{fig:somefig}
\end{marginfigurewider}

但是还有两个问题我无法解决:

  1. hspace 实际上应该是#3-\marginparwidth,但我找不到进行这种计算的方法。
  2. 正文没有环绕它。我需要类似的东西吗wrapfig

更新

这或多或少实现了我想要的:

\setlength\columnsep{\marginparsep}
\begin{wrapfigure}{O}[\dimexpr \marginparwidth+\marginparsep]{2.0\marginparwidth}
  \FloatBarrier%
  \vspace{-0.7\baselineskip}
  \begin{minipage}[b]{2.0\marginparwidth}
    \includegraphics[width=\linewidth]{myimage.jpg}
    \caption{Some caption.}
    \label{fig:somefig}
  \end{minipage}
\end{wrapfigure}

还存在两个问题:

  1. 诸如此类的旁注cite会覆盖在图像上,而不是浮动在图像下方。
  2. 我无法让它作为 \newenvironment 工作。什么都没有显示,并且width=\linewidth被标记为不是数字。我可以手动使用代码,但如果它是一个环境就更好了。尝试如下:

\newenvironment{marginfigurewide}[1]%
  {\FloatBarrier%
  \setlength\columnsep{\marginparsep}%
  \begin{wrapfigure}{O}[\dimexpr \marginparwidth+\marginparsep]{2.0\marginparwidth}%
      \vspace{-0.7\baselineskip}%
      \begin{minipage}[b]{2.0\marginparwidth}
  }
  {\end{minipage}%
  \end{wrapfigure}
  }

答案1

我有一个好主意,使用 保留页边空白空间 \marginpar。但是,wrapfigure 仍会与任何预先存在的页边材料重叠。我不知道有什么方法可以延迟 wrapfigure 的开始,直到页边空白(手动除外)。

另外,我不知道为什么\wrapfigure有效,为什么\begin{wrapfigure}无效,但这可能与本地价值观和全局价值观有关。

\documentclass{tufte-book}
\usepackage{graphicx}
\usepackage{wrapfig}
\usepackage{marginfix}

\usepackage{lipsum}
\usepackage{showframe}

\newsavebox{\marginbox}

\makeatletter
\newenvironment{marginfigurewide}[1]% #1 = width
{\begin{lrbox}{\marginbox}%
  \def\@captype{figure}%
  \begin{minipage}{#1}}%
{\end{minipage}\end{lrbox}%
  %\setlength{\intextsep}{0pt}%
  \setlength{\columnsep}{\marginparsep}%
  \wrapfigure{r}[\dimexpr \marginparwidth+\marginparsep]{\wd\marginbox}
    \usebox\marginbox
  \endwrapfigure
  \marginpar{\rule{0pt}{\dimexpr \ht\marginbox+\dp\marginbox+2\intextsep}}}% reserve space in margin
\makeatother

\begin{document}

\begin{marginfigurewide}{2\marginparwidth}
  \includegraphics[width=\linewidth]{example-image}
  \caption{Some caption.}
  \label{fig:somefig}
\end{marginfigurewide}

test\sidenote{\LipsumPar{2}}

\LipsumPar{1}

\end{document}

该版本将与页面底部重叠。

\documentclass[twoside]{tufte-book}
\usepackage{graphicx}
\usepackage{wrapfig}
\usepackage{marginfix}

\usepackage{lipsum}
\usepackage{showframe}

\newsavebox{\marginbox}

\makeatletter
\newenvironment{marginfigurewide}[1]% #1 = width
{\begin{lrbox}{\marginbox}%
  \def\@captype{figure}%
  \begin{minipage}{#1}}%
{\end{minipage}\end{lrbox}%
  \setlength{\columnsep}{\marginparsep}%
  \dimen0=\dimexpr \pagegoal-\pagetotal-\ht\strutbox\relax% remaining space on page
  \dimen1=\dimexpr \ht\marginbox+\dp\marginbox+\intextsep\relax% size of figure
  \ifdim\dimen1<\dimen0% fits page
    \wrapfigure{r}[\dimexpr \marginparwidth+\marginparsep]{\wd\marginbox}
      \usebox\marginbox
    \endwrapfigure
    \marginpar{\rule{0pt}{\dimexpr \ht\marginbox+\dp\marginbox+2\intextsep}}% reserve space in margin
  \else% overlaps bottom
    \wrapfigure{r}[\dimexpr \marginparwidth+\marginparsep]{\wd\marginbox}
      \raisebox{\dimexpr \dimen0-\intextsep-\ht\marginbox}[\dimexpr \dimen0-2\intextsep][0pt]{\usebox\marginbox}%
    \endwrapfigure
    \marginpar{\rule{0pt}{\dimen0}}%
  \fi}
\makeatother

\begin{document}

\begin{marginfigurewide}{2\marginparwidth}
  \includegraphics[width=\linewidth]{example-image}
  \caption{Some caption.}
  \label{fig:somefig}
\end{marginfigurewide}

Place note here.\sidenote{\LipsumPar{2}}

%\LipsumPar{1}
\lipsum[1-2]

\begin{marginfigurewide}{2\marginparwidth}
  \includegraphics[width=\linewidth]{example-image}
  \caption{Some caption.}
  \label{fig:somefig}
\end{marginfigurewide}

Place note here.\sidenote{\LipsumPar{2}}

\lipsum[3-4]

\end{document}

相关内容