使用 floatrow 进行水平 margincaption 对齐

使用 floatrow 进行水平 margincaption 对齐

我想从 切换sidecapfloatrow将图形标题放在边距中。使用时,sidecap文本完美地定位在边距内。当我使用 floatrow 时,会出现轻微的偏移。我做错了什么?

注意:添加marginparsep=50pt到 geometry 包会加剧此问题。似乎marginparsepfloatrow 没有正确设置距离。嗯。

在此处输入图片描述

代码:

  \documentclass[twoside]{scrartcl}
  \usepackage[a4paper,textwidth=300pt,marginparwidth=150pt,inner=1in,asymmetric]{geometry}
  \usepackage{blindtext}
  \usepackage{showframe}
  \usepackage[format=plain]{caption}
  \usepackage[english]{babel}
  \usepackage{floatrow}
  \usepackage[margincaption]{sidecap}
  \begin{document}

  \section{one}

  \blindtext[1]

  \begin{SCfigure}[][h]
  \rule{3.5in}{0.5in}
  \caption{Nulla malesuada porttitor diam. Donec felis erat, congue non, volut- pat at, tincidunt tristique, libero.}
  \label{fig}
  \end{SCfigure}

  \thisfloatsetup{%
  floatwidth=\linewidth,
  capposition=beside,
  capbesideposition={bottom,right},
  capbesidewidth=\marginparwidth,
  }
  \begin{figure}[h]
  \raggedleft
  \rule{3.5in}{0.5in}
  \caption{Nulla malesuada porttitor diam. Donec felis erat, congue non, volut- pat at, tincidunt tristique, libero.}
  \label{fig}
  \end{figure}



  \end{document}

答案1

输出

在此处输入图片描述

  • 我借用了之前回答过的一道题的策略:将边距标题与浮动行和标题对齐,其中定义了新的长度。

    \newlength{\figWidthForMarginCap}%
    \setlength{\figWidthForMarginCap}{\textwidth}%
    \addtolength{\figWidthForMarginCap}{-0.9em}%
    \addtolength{\figWidthForMarginCap}{\marginparsep}%
    
  • 然后您可以按如下方式使用它:

    \thisfloatsetup{%
    capposition=beside,
    capbesidewidth=\marginparwidth,
    capbesideposition={bottom,right},
    floatwidth=\figWidthForMarginCap
    }
    
  • 要设置标题,您可以执行以下操作

    \captionsetup{
    format=plain,
    margin=0em,
    justification=justified,
    }
    

代码

这是与您的设置兼容的完整 MWE。

\documentclass[twoside]{scrartcl}
\usepackage[a4paper,textwidth=300pt,marginparwidth=150pt,inner=1in,asymmetric]{geometry}
\usepackage{blindtext}
\usepackage{showframe}
\usepackage[format=plain]{caption}
\usepackage[english]{babel}
\usepackage{floatrow}
\usepackage[margincaption]{sidecap}

\newlength{\figWidthForMarginCap}%
\setlength{\figWidthForMarginCap}{\textwidth}%
\addtolength{\figWidthForMarginCap}{-0.9em}%
\addtolength{\figWidthForMarginCap}{\marginparsep}%

\begin{document}

\section{one}

\blindtext[1]

\begin{SCfigure}[][h]
\rule{3.5in}{0.5in}
\caption{Nulla malesuada porttitor diam. Donec felis erat, congue non, volut- pat at, tincidunt tristique, libero.}
\label{fig}
\end{SCfigure}

\thisfloatsetup{%
    capposition=beside,
    capbesidewidth=\marginparwidth,
    capbesideposition={bottom,right},
    floatwidth=\figWidthForMarginCap
  }
\begin{figure}[h]
\captionsetup{
format=plain,
margin=0em,
justification=justified,
}
\rule{3.5in}{0.5in}
\caption{Nulla malesuada porttitor diam. Donec felis erat, congue non, volut- pat at, tincidunt tristique, libero.}
\label{fig}
\end{figure}

\end{document}

相关内容