更改 Minted 列表的格式

更改 Minted 列表的格式

我正在用我大学的模板写我的学士论文fitthesis3

它会自动设置图像列表的样式,如下所示: 图片列表

,并带有罗马页码。

我正在尝试创建一个类似的列表,更准确地说是源代码示例列表。我正在使用铸造用于源代码高亮显示并将其包装在清单能够为其设置标题和参考。

到目前为止,我已经能够更改默认标题名称和列表的默认名称,但我尚未成功更改列表的样式。

我正在使用的代码是: 我已经将源代码示例编辑为我能编译的最小版本,正如评论中所建议的那样。

\documentclass[digital, table, lof, nolot]{fithesis3}
%%<http://mirrors.ctan.org/macros/latex/contrib/fithesis/guide/mu/fi.pdf>
\usepackage[resetfonts]{cmap} %% We need to load the T2A font encoding
\usepackage[T1,T2A]{fontenc}  %% to use the Cyrillic fonts with Russian texts.
\usepackage[main=english, slovak, german, russian, czech]{babel}
\usepackage{paratype}
\def\textrussian#1{{\usefont{T2A}{PTSerif-TLF}{m}{rm}#1}}
\usepackage[utf8]{inputenc}
\thesissetup{
    date          = \the\year/\the\month/\the\day,
    university    = mu,
    faculty       = fi,
    type          = bc,
    author        = Name Surname,
    gender        = m,
    advisor       = Professor's name,
    title         = {Thesis Name},
    TeXtitle      = {Thesis Name},
    keywords      = {keywords},
    TeXkeywords   = {keywords},
}
\thesislong{abstract}{Abstract goes here.}
\thesislong{thanks}{Thanks goes here.}
\usepackage{makeidx}
\makeindex
\usepackage{paralist}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amsfonts}
\usepackage{url}
\usepackage{markdown}
\usepackage{float}
%%source code highlighting
\usepackage[chapter]{minted}
\usepackage{color}
\definecolor{codebg}{rgb}{0.95,0.95,0.95}
\setminted{tabsize=3, linenos=true, xleftmargin=21pt, bgcolor=codebg, samepage=false, breaklines=true, breakafter=., breakaftersymbolpre=}
\renewcommand{\listingscaption}{Code}
\renewcommand{\listoflistingscaption}{List of source code examples}
\begin{document}
%%list of listings hack
\pagenumbering{roman}
\setcounter{page}{11}
\listoflistings
\newpage\null\thispagestyle{empty}\newpage
\pagenumbering{arabic}
\setcounter{page}{1}
\chapter{Test chapter}
\section{Test section}
Test page with a test figure and a test source code example.
\begin{figure}[H]
  \begin{center}
    \includegraphics[width=2.15cm]{fithesis/logo/mu/fithesis-base.pdf}
  \end{center}
  \caption{The logo of the Masaryk University}
  \label{fig:mulogo1}
\end{figure}
\begin{listing}[H]
\begin{minted}{js}
// create data
var circles = [
    { x: 12,  y: 39, radius: 7, color: "green" },
    { x: 25,  y: 20, radius: 11, color: "blue" }];

// create SVG container
var svg = d3.select("body").append("svg")
    .attr("width", 50).attr("height", 50);

// create SVG elements from data
svg.selectAll("circle") // circle template
    .data(circles)       // link data
    .enter()                 // for each data
    .append("circle")    // add a circle 
    // and set it's parameters
    .attr("cx", function(d) { return d.x })
    .attr("cy", function(d) { return d.y })
    .attr("r", function(d) { return d.radius })
    .attr("fill", function(d) { return d.color });
\end{minted}
\caption{Creating SVG elements from data}
\label{src:elefromdata}
\end{listing}
\end{document}

但它生成的列表列表的格式如下所示: 房源列表

我一直在篡改下面链接的帖子中的答案,但我只能将图片列表和列表列表的外观更改为与原始列表列表非常相似,唯一的变化是列表项不再缩进。我的代码如下所示:

\usepackage[titles]{tocloft}
\newlistof{listing}{lol}{Zoznam ukážok zdrojového kódu}
\usepackage[newfloat]{minted}
\usepackage{caption}

\newenvironment{code}{\captionsetup{type=listing}}{}
\SetupFloatingEnvironment{listing}{%
  name={Kód},
  fileext=lol}

\setlength{\cftfigindent}{0pt}
\setlength{\cftlistingnumwidth}{1cm}
\setlength{\cftfignumwidth}{1cm}

\setminted{tabsize=3, linenos=true, xleftmargin=21pt, bgcolor=codebg, samepage=false, breaklines=true, breakafter=., breakaftersymbolpre=}

有什么方法可以改变它的样式,使其看起来像原始图像列表的样式吗?我需要做的更改是:

  • 禁用每个列表项的偏移量
  • 删除虚线
  • 将页码以固定大小(一个标签?)放在列表​​项名称后面
  • 强调页码

我尝试多次搜索该论坛,但没有找到任何东西(也许我不知道正确的术语?)。

我偶然发现了这个自定义来自 minted 的列表线程,它似乎解决了与我的问题非常相似的问题,但即使在它的帮助下我也无法解决我的问题。

感谢所有的帮助。

答案1

您也可以复制图表列表中的内容,以便用于列表

\let\l@listing\l@figure
\let\listoflistings\listoffigures

然后进行\listoflistings必要的修改

% use the right auxiliary file:
\patchcmd{\listoflistings}{lof}{lol}{}{}
% exchange \listfigurename three times with \listoflistingscaption
\patchcmd{\listoflistings}{\listfigurename}{\listoflistingscaption}{}{}
\patchcmd{\listoflistings}{\listfigurename}{\listoflistingscaption}{}{}
\patchcmd{\listoflistings}{\listfigurename}{\listoflistingscaption}{}{}

注意\patchcmd需要etoolbox加载包并且\l@figure/\l@listing需要@是一个字母:

\usepackage{etoolbox}
\makeatletter
\let\l@listing\l@figure
\let\listoflistings\listoffigures
\patchcmd{\listoflistings}{lof}{lol}{}{}
\patchcmd{\listoflistings}{\listfigurename}{\listoflistingscaption}{}{}
\patchcmd{\listoflistings}{\listfigurename}{\listoflistingscaption}{}{}
\patchcmd{\listoflistings}{\listfigurename}{\listoflistingscaption}{}{}
\makeatother

然后我得到

在此处输入图片描述

在此处输入图片描述

相关内容