使用垂直对齐选项时,tufte-handout 中的 Marginfigure 图像偏离中心

使用垂直对齐选项时,tufte-handout 中的 Marginfigure 图像偏离中心

在环境中使用\includgraphics命令(在graphicx包下)时marginfigure,图像会稍微偏离中心到右侧,但仅在使用垂直对齐选项时才会出现。

\documentclass{tufte-handout}

\usepackage{graphicx}
\geometry{showframe}
  
\begin{document}

\begin{marginfigure}[-0.5in]
\includegraphics[width=\textwidth]{bb_navy.jpg}
\end{marginfigure}

\end{document}

在此处输入图片描述

如果没有垂直对齐,图像就会按预期居中。

在此处输入图片描述

答案1

tufte-handout用于在边距中插入图形和其他浮动元素 的环境应通过在\ignorespaces之后添加 来修复\noindent

https://tex.stackexchange.com/a/102026/161015

TeX 换行算法的一个基本特性是,行首的粘连(包括空格的粘连)会被丢弃。但是段落\noindent已经开始,因此后面的空格标记会产生不会被丢弃的粘连(因为它不在换行符后面)。

https://tex.stackexchange.com/a/102025/161015

每当你在带参数的宏末尾使用\noindent(或\indent) 时,最好添加\ignorespaces

是

\documentclass{tufte-handout}

\usepackage{graphicx}
\geometry{showframe}

\makeatletter

\renewenvironment{@tufte@margin@float}[2][1.2ex]%
{\FloatBarrier% process all floats before this point so the figure/table numbers stay in order.
    \begin{lrbox}{\@tufte@margin@floatbox}%
        \begin{minipage}{\marginparwidth}%  
            \@tufte@caption@font%
            \def\@captype{#2}%  
            \hbox{}\vspace*{#1}%        
            \@tufte@caption@justification%
            \@tufte@margin@par%         
            \setlength{\parindent}{0.0pc}%
            \noindent%
            \ignorespaces%  added <<<<<<<<<<<<<<<<<<<       
        }
        {%
        \end{minipage}%
    \end{lrbox}%
        \marginpar{\usebox{\@tufte@margin@floatbox}}%
}

\makeatother

\begin{document}
    
\begin{marginfigure}[-0.5in]
    \includegraphics[width=\linewidth]{example-image-a}
\end{marginfigure}

    
\begin{marginfigure}% [-0.5in]
    \includegraphics[width=\linewidth]{example-image-c}
\end{marginfigure}  
        
\end{document

答案2

您可以通过直接移动\noindent到小页面的开头来解决这个问题:

\documentclass[nobib]{tufte-handout}

\usepackage{graphicx}
\geometry{showframe}

\makeatletter
\renewenvironment{@tufte@margin@float}[2][-1.2ex]%
  {\FloatBarrier% process all floats before this point so the figure/table numbers stay in order.
  \begin{lrbox}{\@tufte@margin@floatbox}%
  \begin{minipage}{\marginparwidth}%
    \noindent% <-- MOVE HERE
    \@tufte@caption@font%
    \def\@captype{#2}%
    \hbox{}\vspace*{#1}%
    \@tufte@caption@justification%
    \@tufte@margin@par%
  }
  {\end{minipage}%
  \end{lrbox}%
  \marginpar{\usebox{\@tufte@margin@floatbox}}%
  }
\makeatother


\begin{document}

\begin{marginfigure}[-.5in]
    \includegraphics[width=\textwidth]{example}
\end{marginfigure}

\end{document}

在此处输入图片描述

相关内容