格式化左侧没有空格的图表列表

格式化左侧没有空格的图表列表

基本上我想要的是这个:

图片目录

图片 1:somecaptiontextxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxx..............................................34

Abbildung 1 是图形的名称。它相当于图 1、图 2 等。Abbildungsverzeichnis 表示图形列表。我没有将其翻译成英文,因为底部的图片全是德文,显示了我的图形列表的实际状态。

但是我使用的代码:

\usepackage[titles]{tocloft}

\newlength{\mylen}

\renewcommand{\cftfigpresnum}{\figurename\enspace} 
\renewcommand{\cftfigaftersnum}{:}
\settowidth{\mylen}{\cftfigpresnum\cftfigaftersnum}
\addtolength{\cftfignumwidth}{\mylen}

产生了这个:

在此处输入图片描述

提前致谢。

答案1

一种可能的解决方案是使用tocloft

\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[titles]{tocloft}
\usepackage{graphicx}

\newlength\mylen
\cftsetindents{figure}{0em}{0em}

\let\orignumberline\numberline
\let\origlistoffigures\listoffigures

\renewcommand\listoffigures{%
  \renewcommand\numberline[1]{%
    \settowidth\mylen{\figurename\enspace:##1\enspace}%
    \orignumberline{\figurename\enspace##1:\enspace\hspace{-\mylen}}\hspace{\mylen}%
  }%
  \origlistoffigures
  \let\numberline\orignumberline
}

\begin{document}

\listoffigures
\clearpage

\section{Test}

\begin{figure}
\centering
\includegraphics[height=3cm]{example-image-a}
\caption{this is just a caption for a test figure, we add some more text here so the caption will span several lines}
\end{figure}

\end{document} 

在此处输入图片描述

如果你愿意改变titletoc而不是tocloft,而是这样做:

\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{titletoc}
\usepackage{graphicx}

\titlecontents{figure}
  [0em]
  {}
  {\figurename\enspace\thecontentslabel:\enspace}
  {}
  {\titlerule*[1pc]{.}\contentspage}

\begin{document}

\listoffigures

\begin{figure}
\centering
\includegraphics[height=3cm]{example-image-a}
\caption{this is just a caption for a test figure, we add some more text here so the caption will span several lines}
\end{figure}

\end{document} 

生成的 LoF 的图像:

在此处输入图片描述

答案2

你必须调整方式tocloft通过修改设置的边距长度来构造 LoF 条目。下面是对\l@figurefrom的重新定义tocloft,以便为您提供必要的输出:

\makeatletter
\renewcommand*{\l@figure}[2]{%
  \ifnum \c@lofdepth >\z@
    \vskip \cftbeforefigskip
    {%\leftskip \cftfigindent\relax
     \rightskip\z@%\rightskip \@tocrmarg
     \parfillskip -\rightskip
     \parindent\z@%\parindent \cftfigindent\relax
    \@afterindenttrue
     \interlinepenalty\@M
     \leavevmode
     \@tempdima \cftfignumwidth\relax
     \let\@cftbsnum \cftfigpresnum
     \let\@cftasnum \cftfigaftersnum
     \let\@cftasnumb \cftfigaftersnumb
     \null\nobreak%\advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
     {\cftfigfont #1}\nobreak
     \cftfigfillnum{#2}}%
   \fi
  }
\makeatother

注释掉的部分已经修改。

在此处输入图片描述

\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{graphicx}

\usepackage[titles]{tocloft}

\makeatletter
\renewcommand*{\l@figure}[2]{%
  \ifnum \c@lofdepth >\z@
    \vskip \cftbeforefigskip
    {%\leftskip \cftfigindent\relax
     \rightskip\z@%\rightskip \@tocrmarg
     \parfillskip -\rightskip
     \parindent\z@%\parindent \cftfigindent\relax
    \@afterindenttrue
     \interlinepenalty\@M
     \leavevmode
     \@tempdima \cftfignumwidth\relax
     \let\@cftbsnum \cftfigpresnum
     \let\@cftasnum \cftfigaftersnum
     \let\@cftasnumb \cftfigaftersnumb
     \null\nobreak%\advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
     {\cftfigfont #1}\nobreak
     \cftfigfillnum{#2}}%
   \fi
  }
\makeatother

\newlength{\mylen}

\renewcommand{\cftfigpresnum}{\figurename\enspace} 
\renewcommand{\cftfigaftersnum}{:\enspace}
\settowidth{\mylen}{\cftfigpresnum\cftfigaftersnum}
\addtolength{\cftfignumwidth}{\mylen}

\begin{document}

\listoffigures

\begin{figure}
  \centering
  \includegraphics[height=3cm]{example-image-a}
  \caption{this is just a caption for a test figure, we add some more text here so the caption will span several lines}
\end{figure}

\end{document}

保留该\rightskip \@tocrmarg选项将获得以下输出:

在此处输入图片描述

您还可以使用etoolbox如果需要,请重新定义\l@figure。这样不会更干净。

相关内容