图表列表中图表来源的缩进

图表列表中图表来源的缩进

我改编了这个文章类别答案与回忆录类一起使用。我现在唯一的问题是源文本的第一行缩进过多。我想让图形源文本与图形标题文本齐平。

这是我的 MWE

%\documentclass{article}
\documentclass[oneside]{memoir}
\usepackage{graphicx}

\usepackage{hyperref}
\usepackage[noabbrev]{cleveref}
%\usepackage{tocloft}
%\setcounter{lofdepth}{2}
\makeatletter
\newcommand{\figsourcefont}{\footnotesize}
\newcommand{\figsource}[1]{%
  \addtocontents{lof}{%
    {\leftskip=\cftfigureindent
    \advance\leftskip \cftfigurenumwidth
    \rightskip=\@tocrmarg
     \figsourcefont#1\protect\par}%
  }%
 }
\makeatother


\begin{document}

\listoffigures

\clearpage
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. Duis sagittis ipsum.

\begin{figure}
\centering
\includegraphics[scale=.5]{example-image}
\caption{This is a picture}
\figsource{This is a short source}
\end{figure}

\begin{figure}[!htb]
\centering
\includegraphics[scale=.5]{example-image}
\caption{This is an image}
\figsource{This is a really really really really really really really really really long source of over a line long to show the indent after one line}
\label{image1}
\end{figure}

\end{document}

答案1

通过玩但我知道它并不是那么困难:

等待解释(来自其他人:P):

解决方案:

\makeatletter
\newcommand{\figsourcefont}{\footnotesize}
\newcommand{\figsource}[1]{%
  \addtocontents{lof}{%
    {\leftskip=\cftfigurenumwidth
    \advance \leftskip \cftfigureindent
    \rightskip=\@tocrmarg
     \figsourcefont\noindent#1\protect\par}%
  }%
 }
\makeatother

结果:

在此处输入图片描述

根据 John Kormylo 的评论进行编辑。(也包含真正的解释。在那里找到它) 在编辑之前,我在推进(因此减少)缩进时减去了它,但它恰好是零,而且我的代码幸运地运行正常。

老错误的解释 解释是我们必须使用 noindent 使所有行的缩进量相同,并且我们需要的长度是 figurenumwidth 减去该部分的 figureindent,因为我们必须从行首 figurenumwidth 向右移动,然后通过处理缩进量向左移动。

相关内容