将 \ttfamily 与 \bfseries 结合使用(或如何在等宽字体中启用粗体)

将 \ttfamily 与 \bfseries 结合使用(或如何在等宽字体中启用粗体)

我正在使用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}

第一个“y:=2”没有呈现为粗体,但第二个呈现了粗体。

答案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}

你会得到:

结果与 ttfamilywithbold

并将其与非粗体版本(即用\ttfamily代替ttfamilywithbold)进行比较:

在此处输入图片描述

主要来源:如何在文档中的一小部分文本中使用特定字体?

相关内容