以下 MWE 为我提供了一个列表列表,其中“图”作为列表名称。
\documentclass{scrreprt}
\usepackage{classicthesis}
\usepackage[newfloat]{minted}
\begin{document}
\listoflistings
\begin{listing}
\begin{minted}{sql}
Test
\end{minted}
\caption{My Listing}
\end{listing}
\end{document}
如果我newfloat
从 minted 中删除该选项,则“Figure”字符串会消失。但是,理想的行为是在每个条目前面包含“Listing”之类的内容。
答案1
你应该minted
先加载classicthesis
,否则你会得到一个
pdfTeX warning (ext4): destination with the same identifier
(name{figure.0.1}) has been already used, duplicate ignored
警告,带有不正确的超链接。
然后,您可以进行\l@listing
与 相同的操作\l@figure
,这newfloat
无论如何都是这样做的,但 afterclassicthesis
修改了 的标准含义\l@figure
。您可以使用钩子(通常为空)在本地更改\figurename
为“Listing”,并可能更改某些缩进参数。
\documentclass{scrreprt}
\usepackage[newfloat]{minted}
\usepackage{classicthesis}
\makeatletter
\let\l@listing\l@figure
\def\newfloat@listoflisting@hook{\let\figurename\listingname}
\makeatother
\begin{document}
\listoflistings
\begin{listing}
\begin{minted}{sql}
Test
\end{minted}
\caption{My Listing}
\end{listing}
\end{document}
似乎babel
出现了一些时间问题。这里有一个不同的解决方法,包括更改标签。
\documentclass{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[newfloat]{minted}
\usepackage{classicthesis}
\usepackage{etoolbox}
\addto\captionsngerman{%
\renewcommand{\listlistingname}{Quellcodeverzeichnis}%
\renewcommand{\listingname}{Listing}%
}
\makeatletter
\let\l@listing\l@figure
\patchcmd{\l@listing}{\cftfigpresnum}{\cftlistingpresnum}{}{}
\newcommand\cftlistingpresnum{\listingname~}
\makeatother
\begin{document}
\listoflistings
\begin{listing}
\begin{minted}{sql}
Test
\end{minted}
\caption{My Listing}
\end{listing}
\end{document}
答案2
newfloat
如果应用了相同的选项,minted 会加载-Package。newfloat
使用\listoffigure
命令获取新列表。看起来这有点问题 - 但我不知道该怪谁:我、newfloat、minted 还是 classicthesis。
为了修复列表列表,我不得不覆盖该\cftfigpresnum
命令。
\PrepareListOf{listing}{\renewcommand{\cftfigpresnum}{Listing~}}
来源: http://mirrors.ctan.org/macros/latex/contrib/caption/newfloat.pdf,第 5 页