提问于:
浏览数:
2865
可以用这样的命令修改figure目录中条目的indent为0em, numwidth的值为2.55em:
`\cftsetindents{figure}{0em}{2.55em}`
为什么用同样的方法改listing时就不行呢。
`\cftsetindents{lstlisting}{0em}{2.55em}`
那么应如何修改 目录中listings中条目的indent及numwidth呢?谢谢。
源码详见mwe_lstlisting.tex
```tex
%mwe_lstlisting.tex
\documentclass{memoir}
\usepackage{lipsum}
\usepackage{mwe}
\usepackage{listings}
\begin{document}
\frontmatter
%\tableofcontents
\cftsetindents{table}{0em}{2.55em}
\listoftables
\cftsetindents{figure}{0em}{2.55em}
\listoffigures
\cftsetindents{lstlisting}{0em}{2.55em}
\renewcommand{\lstlistlistingname}{List of Listings}
\lstlistoflistings
\addcontentsline{toc}{chapter}{List of Listings}
\clearpage
\mainmatter
\chapter{test1}
\lipsum[1-4]
\begin{table}
\centering
\caption{test1}
\begin{tabular}{l}
askdfakjs;dkjfalksed
\end{tabular}
\end{table}
\begin{figure}
\centering
\includegraphics[width=0.3\linewidth]{example-image-a}
\caption{test}
\end{figure}
\begin{lstlisting}[caption=test1]
ta;lskjdfajsejfoqijwepojiqpowijeojrqowjeo
asdfqw;efqowie
qwefoqjwero
\end{lstlisting}
\begin{lstlisting}[caption=test2]
ta;lskjdfajsejfoqijwepojiqpowijeojrqowjeo
asdfqw;efqowie
qwefoqjwero
\end{lstlisting}
\end{document}
```
1 回答
0
先给出一个代码
```tex
\documentclass{memoir}
\usepackage{lipsum}
\usepackage{mwe}
\usepackage{listings}
\renewcommand{\lstlistlistingname}{List of Listings}
\begingroup
\makeatletter
\let\newcounter\@gobble
\let\setcounter\@gobbletwo
\globaldefs\@ne
\let\c@loldepth\@ne
\newlistof{listings}{lol}{\lstlistlistingname}
\newlistentry{lstlisting}{lol}{0}
\endgroup
\begin{document}
\frontmatter
\tableofcontents
\listoftables
\listoffigures
\listings
\mainmatter
\chapter{the first chapter}
\lipsum
\begin{table}
\centering
\caption{caption of table}
\begin{tabular}{l}
this is a tabular.
\end{tabular}
\end{table}
\begin{figure}
\centering
\includegraphics[width=\linewidth]{example-image-a}
\caption{caption of figure}
\end{figure}
\begin{lstlisting}[caption={caption of listing}]
#include<stdio>
int main()
{
printf("hello world");
return 1;
}
\end{lstlisting}
\begin{lstlisting}[caption={caption of another listing}]
import numpy as np
a = np.linspace(10)
print(a)
\end{lstlisting}
\end{document}
```
更多的讨论参考 [https://github.com/CTeX-org/forum/issues/84](https://github.com/CTeX-org/forum/issues/84)
-
您已经给了我很大的帮助了,谢谢! – WoodMan 2020-01-03 10:44 回复
-
回复 undefined :如果你要做这么深的定制,工作量会很大。我的能力不足以支撑这个问题 – 啸行 2020-01-02 22:53 回复
-
这样带来了新的问题,table目录中,章与章之间会有一个空行分开;而在listing目录中,则没有空行分隔。只好在lol文件中增加了一行命令\addvspace {10pt}。如何在编译时自动加上这行 – WoodMan 2020-01-02 09:40 回复
-
这样带来了新的问题,table目录中,章与章之间会有一个空行分开;而在listing目录中,则没有空行分隔。只好在lol文件中增加了一行命令\addvspace {10pt}如何让在编译时自动加上这行 – WoodMan 2020-01-02 09:39 回复
-
谢谢,知道怎么弄了,在\edngroup 下面可以加命令: \cftsetindents{lstlisting}{0em}{2.55em}。 谢谢!非常感谢!! – WoodMan 2020-01-02 08:55 回复
-
这样设置 的话,indent 设为0了,那 numwidth 这个参数如何设为2.55em呢? – WoodMan 2020-01-02 08:34 回复
你的回答
请登录后回答
你的回答将会帮助更多人,请务必认真回答问题。