在列表内使用粗体/斜体文本?

在列表内使用粗体/斜体文本?

如何在代码清单中使用粗体文本?我想将代码的某些部分设为粗体。

答案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 年撰写此答案的原始版本以来,txfontspxfonts字体包已被一方面newtxtext/和另一方面/取代(如果不是完全取代) 。无论如何,如果您在路径中使用了and/or包,请考虑切换到/或/ 。没有改变的是和共享相同的等宽字体——中等(“正常”)和粗体。newtxmathnewpxtextnewpxmathtxfontspxfontsnewtxtextnewtxmathnewpxtextnewpxmathnewtxtextnewpxtext

以下 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

您可以使用 lstlisting 并将 mathescape 设置为 true,然后在数学模式中使用 \textbf。

\begin{lstlisting}[mathescape=true]
    $\textbf{Hello}$
    Hello
\end{lstlisting}

示例图片

请注意,字体确实会有所改变,并且您必须对每个要加粗的单词执行此操作。但这是一种替代方法,并且它也适用于斜体和您可能想要使用的其他文本命令。

答案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命令在幕后做了什么,但我喜欢这个结果。

相关内容