如何在代码清单中使用粗体文本?我想将代码的某些部分设为粗体。
答案1
按照Mico 的回答,Computer Modern 字体系列中没有粗体等宽字体,因此您需要使用具有粗体等宽字体的字体。下面是使用listings
使关键字变粗的示例pxfonts
。以下是使用 和不使用 的结果比较\usepackage{pxfonts}
:
\documentclass[border=2pt]{standalone}
\usepackage{listings}
\usepackage{pxfonts}
\lstset{language=C,
basicstyle=\ttfamily,
keywordstyle=\bfseries,
showstringspaces=false,
morekeywords={include, printf}
}
\begin{document}
\begin{lstlisting}
/* Prints Hello World */
#include <stdio.h>
int main(void) {
printf("Hello World!");
return 0;
}
\end{lstlisting}
\end{document}
替代解决方案:
您也可以使用 courier 字体形式ttfamily 与 bfseries 或如何在固定宽度字体中启用粗体:
\documentclass[border=2pt]{standalone}
\usepackage{listings}
\lstset{language=C,
basicstyle=\ttfamily,
keywordstyle=\bfseries,
showstringspaces=false,
morekeywords={include, printf}
}
\begin{document}
\begin{lstlisting}
/* Prints Hello World */
#include <stdio.h>
int main(void) {
printf("Hello World!");
return 0;
}
\end{lstlisting}
\hrule
\renewcommand{\ttdefault}{pcr}
\begin{lstlisting}
/* Prints Hello World */
#include <stdio.h>
int main(void) {
printf("Hello World!");
return 0;
}
\end{lstlisting}
\end{document}
答案2
正如你一定已经发现的,电脑现代字体系列。(默认加载的是 Computer Modern。)要获得以粗体字体突出显示部分代码的选项,您必须切换到不同的字体系列。
一种方法是将命令添加
\usepackage[scaled=1.04]{couriers}
到文档的前言中;这样做会告诉 (La)TeX 使用导游等宽字体,而不是 Computer-Modern (CM) 字体。Courier 的普通版和粗体版看起来与 CM mono 非常不同,这大概就是您想要的。使用 Courier 的缺点是它设置得非常松散,也就是说,您不能像使用 CM mono 那样将尽可能多的单词挤进一行。一个相当不显眼的选项是使用拉丁现代字体系列,使用命令加载
\usepackage{lmodern}
。虽然此字体系列确实有粗体等宽字体,但它并不是那么粗体,因此可能无法满足您的需求。假设您愿意完全放弃 Computer/Latin Modern 字体系列,可以使用以下两个命令之一选择一些不错的字体系列选项:
\usepackage{pxfonts}
(a帕拉蒂诺字体)或\usepackage{txfonts}
(罗马时代字体)。请注意(可变间距)文本字体看起来会非常不同,但这两种字体系列的创建者赋予了它们相同的等宽文本样式。该
mathptmx
软件包为您提供了 Times New Roman 的另一种选择,不是采用粗体等宽字体,因此无法满足您的工作要求。2019 年 1 月更新:与此同时,即,自从我在 2011 年撰写此答案的原始版本以来,
txfonts
和pxfonts
字体包已被一方面newtxtext
/和另一方面/取代(如果不是完全取代) 。无论如何,如果您在路径中使用了and/or包,请考虑切换到/或/ 。没有改变的是和共享相同的等宽字体——中等(“正常”)和粗体。newtxmath
newpxtext
newpxmath
txfonts
pxfonts
newtxtext
newtxmath
newpxtext
newpxmath
newtxtext
newpxtext
以下 MWE 用于说明在这些选项中进行选择的效果:
\documentclass{article}
%% Uncomment one (and only one) of the following four \usepackage commands:
%% \usepackage[scaled=1.04]{couriers}
\usepackage{lmodern}
%%\usepackage{pxfonts} % Palatino font
%%\usepackage{txfonts} % Times font
\begin{document}
%Monospaced font:
\texttt{The quick brown fox jumps over the lazy dog.}
%Monospaced font with some boldfaced words:
\texttt{The quick brown \textbf{fox} jumps over the \textbf{lazy} dog.}
\end{document}
Courier mono 生成以下文本:
拉丁现代单色字体如下所示(请注意非粗体和粗体之间的细微差别):
pxfonts
和示例均txfonts
如下所示:
答案3
答案4
我不记得在哪里看到过以下使用 Computer Modern 粗体打字机字体的定义:
% Declare bold typewriter font with Computer Modern
\DeclareFontShape{OT1}{cmtt}{bx}{n}{<5><6><7><8><9><10><10.95><12><14.4><17.28><20.74><24.88>cmttb10}{}
然后:
\usepackage{listings}
\lstloadlanguages{Matlab}
\lstset{
basicstyle=\scriptsize\upshape\ttfamily,
keywordstyle=\color{blue}\bfseries,
% etc.
}
结果:
我不是 LaTeX 字体方面的专家,所以我不完全清楚该DeclareFontShape
命令在幕后做了什么,但我喜欢这个结果。