minted 代码示例比 lst-listing 更“精简”

minted 代码示例比 lst-listing 更“精简”

我想改用 minted 而不是 listings,以获得更出色的语法高亮,尤其是对于 C++。但我无法让字体看起来像 listings 一样好看。不知何故,使用 minted 生成的字体更重、更紧凑。

这是一个例子(上面列出,下面铸造):

以上列出,以下铸造

这是我对它们两个的配置:

\newfontfamily\UbuntuMono{Ubuntu Mono}
\setmonofont{Ubuntu Mono}

\lstset{
  backgroundcolor=\color{dsolar_back},
  basicstyle=\UbuntuMono\footnotesize\color{dsolar_text},
  breakatwhitespace=false,
  breaklines=true, 
  captionpos=b,
  commentstyle=\color{dsolar_comm},
  extendedchars=true, 
  frame=single, 
  keepspaces=true,
  keywordstyle=\color{dsolar_keyw}, 
  language=[11]C++,              
  numbers=left,                
  numbersep=5pt,
  rulecolor=\color{lightgrey},
  showspaces=false, 
  showstringspaces=false,
  showtabs=false,
  stepnumber=2,
  stringstyle=\color{dsolar_ltrl},
  tabsize=4,
  title=\lstname
}

\usepackage[cache=false]{minted}

\setminted[c++]{
    linenos=true,
    bgcolor=dsolar_back,
    fontsize=\footnotesize,
    style=solarizedlight,
    frame=single,
    framesep=0pt,
    rulecolor=\color{lightgrey},
    stepnumber=2,
    numbersep=5pt,
    resetmargins=true
}

有人有过这样的经历吗?我遗漏了一些设置吗?谢谢你的帮助!

答案1

这些是默认行为。如果您使用的是等宽字体,则应遵循minted的间距,因为 中的宽间距listings只是为了确保即使是普通字体也能变成等宽字体。

如果要使用宽字体,可以借用microtype

在下面的代码中,上面是正常间距,下面是修改后的间距。我没有您的字体系列,因此我使用类似的字体(DejaVu Sans Mono):

\documentclass{article}
\usepackage[scaled=0.85]{DejaVuSansMono}
\usepackage{minted}
\usepackage[letterspace=100]{microtype}
\usepackage{lipsum}
\newenvironment{myminted}
{\VerbatimEnvironment
\begingroup\lsstyle
\begin{minted}{C++}}
{\end{minted}
\endgroup}

\begin{document}
\lipsum[1]
\begin{minted}{C++}
#include <cstdio>
int main() {
    printf("Hello, world!");
}
\end{minted}

\begin{myminted}
#include <cstdio>
int main() {
    printf("Hello, world!");
}
\end{myminted}
\lipsum[2]
\end{document}

在此处输入图片描述

相关内容