答案1
这个问题问得好。listings
本网站上关于的许多问题的答案都告诉您,要加载fontenc
带有选项的软件包T1
(这很好),以及诸如courier
或 之类的软件包beramono
,以便能够访问粗体打字机字体。但是,诸如beramono
和之类的软件包courier
会全局更改默认的打字机字体系列,这可能不是您想要的。
如果您只想在列表中使用某种字体,您只需在basicstyle
键中选择它即可。
basicstyle = \fontfamily{desired-font}\selectfont ...
我建议您定义一个宏来轻松选择相关字体(见下文)。您仍应使用fontenc
选项加载包T1
,但不要加载beramono
或类似的东西。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{listings}
% macro to select a scaled-down version of Bera Mono (for instance)
\makeatletter
\newcommand\BeraMonottfamily{%
\def\fvm@Scale{0.85}% scales the font down
\fontfamily{fvm}\selectfont% selects the Bera Mono font
}
\makeatother
\lstset{
basicstyle=\BeraMonottfamily,
frame=single,
}
\begin{document}
\texttt{Computer Modern typewriter font, as usual}
\begin{lstlisting}[language=C,caption=listing typeset with Bera Mono]
/* Hello World program */
#include<stdio.h>
main()
{
printf("Hello World");
}
\end{lstlisting}
\end{document}
答案2
使用 Monofont 来显示列表,使用默认的 CM mono 来显示打字机文本,这其实毫无意义。将它用于所有\ttfamily
文本,看起来会更美观。印刷师的规则之一是不要混合使用多种不同的字体。DejaVu Mono 的缩放版本:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[scaled=0.9]{DejaVuSansMono}
\usepackage{listings}
\lstset{basicstyle=\ttfamily}
\begin{document}
\begin{lstlisting}[language=C]
/* Hello World program */
#include<stdio.h>
main()
{
printf("Hello World");
}
\end{lstlisting}
\end{document}