与图表列表类似的列表列表

与图表列表类似的列表列表

在网上学习后,我设法得到了以下类型的数字列表:

在此处输入图片描述 我想要的与列表完全相同的内容,但是我得到的却是: 在此处输入图片描述 我的代码是这样的:

\documentclass[12pt,a4paper]{book}

% For french
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}

% For figures
\usepackage{caption}
\usepackage{subcaption}
\addto\captionsfrench{%
\renewcommand{\listfigurename}{Liste des figures}% 
\renewcommand{\listtablename}{Liste des tables}%
}
\usepackage{tocloft}
\renewcommand{\cftfigfont}{\textsc{Figure} }
\renewcommand{\cftfigaftersnum}{~~--}
\renewcommand{\cftfignumwidth}{3em}

% Numbering
\makeatletter
\renewcommand{\thefigure}{\ifnum \c@chapter>\z@ \thechapter.\fi
\@arabic\c@figure}
\@addtoreset{figure}{chapter}
\makeatother

% Listings
\usepackage{listings}
\addto\captionsfrench{%
  \renewcommand{\lstlistlistingname}{Liste des codes}%
}

%Refs
\usepackage{hyperref}

% Begining of the document
\begin{document}

\frontmatter
\tableofcontents

\mainmatter
\chapter{Introduction}

\begin{figure}
\centering
A figure
\caption{Caption}
\label{fig:draw}
\end{figure}

\begin{lstlisting}[caption=Hello,label={hello}]
A code
\end{lstlisting}

\chapter{Conclusion}

\begin{figure}
\centering
 A figure
\caption{Other caption}
\label{fig:drawbis}
\end{figure}

\begin{lstlisting}[caption=Good bye,label={bye}]
Another code
\end{lstlisting}

\backmatter

\cleardoublepage
\phantomsection
\addcontentsline{toc}{chapter}{\listfigurename}
\listoffigures

\cleardoublepage
\phantomsection
\addcontentsline{toc}{chapter}{\lstlistlistingname}
\lstlistoflistings

\end{document}

我所需要写的只是代码的模拟:

\usepackage{tocloft}
\renewcommand{\cftfigfont}{\textsc{Figure} }
\renewcommand{\cftfigaftersnum}{~~--}
\renewcommand{\cftfignumwidth}{3em}

但对于列表来说。有什么办法吗tocloft?如果没有,该怎么做?

非常感谢。

答案1

默认情况下,tocloft无法挂接到由其他软件包制作的 ToC,但是,可以使用 来\newlistof{...}重新定义\lstoflistings-- 不幸的是,这需要了解正在使用的计数器listings(其名称为lstlisting)并且...尝试为此定义一个新的计数器 -- 这必定会失败(在我看来,\newlistof这是 的设计缺陷)tocloft

\let\c@lstlisting\relax然而,如果这个\newlistof工作完成,那么这是可能的。

使用可选参数\newlistof重置计数器来获取正确的超链接。

\documentclass[12pt,a4paper]{book}

% For french

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}

% For figures
\usepackage{caption}
\usepackage{subcaption}
\addto\captionsfrench{%
  \renewcommand{\listfigurename}{Liste des figures}% 
  \renewcommand{\listtablename}{Liste des tables}%
}
\usepackage{tocloft}
\renewcommand{\cftfigfont}{\textsc{Figure} }
\renewcommand{\cftfigaftersnum}{~~--}
\renewcommand{\cftfignumwidth}{3em}

% Numbering
\makeatletter
\renewcommand{\thefigure}{\ifnum \c@chapter>\z@ \thechapter.\fi
\@arabic\c@figure}
\@addtoreset{figure}{chapter}
\makeatother

% Listings
\usepackage{listings}

\makeatletter

 \AtBeginDocument{%
  \let\c@lstlisting\relax
  \newlistof[chapter]{lstlisting}{lol}{\lstlistlistingname}
  \renewcommand{\cftlstlistingindent}{20pt}
  \renewcommand{\cftlstlistingfont}{\textsc{Listing} }
  \renewcommand{\cftlstlistingaftersnum}{~~--}
  \renewcommand{\cftlstlistingnumwidth}{3em}
  \renewcommand{\theHlstlisting}{listings.\thelstlisting}
}
\makeatother



\addto\captionsfrench{%
  \renewcommand{\lstlistlistingname}{Liste des codes}%
}

\renewcommand{\lstlistoflistings}{%
  \listoflstlisting
}
%Refs
\usepackage{hyperref}

% Begining of the document

\begin{document}


\frontmatter
\tableofcontents
\lstlistoflistings
\listoffigures

\mainmatter


\chapter{Introduction}

\begin{figure}
\centering
A figure
\caption{Caption}
\label{fig:draw}
\end{figure}

\begin{lstlisting}[caption=Hello,label={hello}]
A code
\end{lstlisting}

\chapter{Conclusion}

\begin{figure}
\centering
 A figure
\caption{Other caption}
\label{fig:drawbis}
\end{figure}

\begin{lstlisting}[caption=Good bye,label={bye}]
Another code
\end{lstlisting}

\backmatter

\cleardoublepage
\phantomsection
\addcontentsline{toc}{chapter}{\listfigurename}
\listoffigures

\cleardoublepage
\phantomsection
\addcontentsline{toc}{chapter}{\lstlistlistingname}
\lstlistoflistings

\end{document}

在此处输入图片描述

答案2

如果这tocloft.sty不是必须的,我可以提供一个解决方案titletoc.sty。我认为界面更干净。最后还有一个解决方案,如何摆脱 LOF 中的额外垂直空间。

\documentclass[12pt,a4paper,draft,openany]{book}

% For french
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}

% For figures
\usepackage{caption}
\usepackage{subcaption}
\addto\captionsfrench{%
\renewcommand{\listfigurename}{Liste des figures}% 
\renewcommand{\listtablename}{Liste des tables}%
}

% Listings
\usepackage{listings}
\addto\captionsfrench{%
  \renewcommand{\lstlistlistingname}{Liste des codes}%
}

\usepackage{titletoc}
\contentsuse{lstlisting}{lol}

\titlecontents{figure}
  [2.6cm]
  {}
  {\contentslabel[\textsc{Figure}~\thecontentslabel~--]{2.6cm}}
  {\hspace*{0em}}
  {\titlerule*[1pc]{.}\contentspage}

\titlecontents{lstlisting}
  [2.65cm]
  {}
  {\contentslabel[\textsc{Listing}~\thecontentslabel~--]{2.65cm}}
  {\hspace*{0em}}
  {\titlerule*[1pc]{.}\contentspage}

%Refs
\usepackage{hyperref}

% Begining of the document
\begin{document}

\frontmatter
\tableofcontents

\mainmatter
\chapter{Introduction}

\begin{figure}
  \centering
  A figure
  \caption{Caption}
  \label{fig:draw}
\end{figure}

\begin{lstlisting}[caption=Hello,label={hello}]
A code
\end{lstlisting}

\chapter{Conclusion}

\begin{figure}
  \centering
  \fbox{A figure}
  \caption{Other caption}
  \label{fig:drawbis}
\end{figure}

\begin{lstlisting}[caption=Good bye,label={bye}]
Another code
\end{lstlisting}

\backmatter

\clearpage
\phantomsection
\addcontentsline{toc}{chapter}{\listfigurename}
\begingroup
  \makeatletter
  \let\addvspace\@gobble
  \listoffigures
\endgroup

\clearpage
\phantomsection
\addcontentsline{toc}{chapter}{\lstlistlistingname}
\lstlistoflistings

\end{document}

在此处输入图片描述

相关内容