我正在使用listings
包,并且添加了basicstyle=\ttfamily\footnotesize
。但是,当我这样做时,嵌入源代码中的关键字不再是粗体。
我认为,\ttfamily
结合起来\bfseries
是行不通的。
然后我发现了一个关于 bold-extras 的常见问题解答,我尝试添加\usepackage[bold-extras]
,但也没有用。该包有什么用?我应该忽略它并继续吗?
然后我终于发现在列表内使用粗体/斜体文本?,可能与这个重复,但很难找到。我还发现了粗体打字机字体,这让我更加困惑了。
那么,我应该怎么做才能获得可在内使用的粗体固定宽度字体listings
?
pdflatex
从 texlive-2010使用。
答案1
正如 Martin 在评论中提到的,您需要一种提供这种组合的字体。以下示例显示字体 courier 实现了这种组合,而不是 Computer Modern。
\documentclass{article}
\usepackage{listings}
\begin{document}
% Default Computer Modern font (no bold implemented)
\renewcommand{\ttdefault}{cmtt}
\begin{lstlisting}[basicstyle=\ttfamily\bfseries]
y:=2
\end{lstlisting}
% Using Courier font
\renewcommand{\ttdefault}{pcr}
\begin{lstlisting}[basicstyle=\ttfamily\bfseries]
y:=2
\end{lstlisting}
\end{document}
答案2
另一种选择是使用 Latin Modern 字体,该字体具有功能齐全的粗体打字机字体。它们还有另一个特点,因为它们可以使用较轻的版本来实现中等重量:
\usepackage[lighttt]{lmodern}
让我们比较一下几个例子:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\begin{document}
Abc {\ttfamily abc \bfseries abc}
\end{document}
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[lighttt]{lmodern}
\begin{document}
Abc {\ttfamily abc \bfseries abc}
\end{document}
当等宽字体的粗细区别至关重要时,这可能是一个选择。
listings
这将与选项一起使用
basicstyle=\ttfamily,
lmodern
加载或不加载该选项后就足够了lighttt
。
答案3
Bold-extra 不是您加载的包,而是字体集合。但由于这些是 metafont(位图)字体,我不建议使用它们。最好切换到 lmodern 字体,或者使用 luximono 或 beramono-typewriter 字体:
\documentclass[11pt]{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
%\usepackage{luximono}
%\usepackage[scaled=0.85]{beramono}
\begin{document}
abc
\ttfamily abc \bfseries abc
\end{document}
答案4
egreg 的答案加载了新的字体,似乎改变了整个文档的字体 - 不仅仅是在列表中(在我的文档中,它改变了段落中使用的字体)。
接受的答案使用pcr
-- 有些人可能觉得它不太漂亮。你可以改用lmtt
。
lmtt
下面是使用并将字体更改命令额外包装到新命令中的版本。
放入文档的序言中:
\newcommand*{\ttfamilywithbold}{\fontfamily{lmtt}\selectfont}
现在,像这样使用它:
\begin{lstlisting}[basicstyle=\ttfamilywithbold,language=python,mathescape]
b_reach`= $C$
while (b_reach $\neq$ b_reach`):
b_reach = b_reach`
b_reach`= b_reach $\cup$ b_pred_b(b_reach, $P$, $\pgraph$)
if b_reach` contains an initial state:
return 'Yes'
return 'No'
\end{lstlisting}
你会得到:
并将其与非粗体版本(即用\ttfamily
代替ttfamilywithbold
)进行比较: