强制 algorithm2e 使用 Times New Roman 排版

强制 algorithm2e 使用 Times New Roman 排版

我正在使用无衬线字体写一本书,我需要排版伪代码。然而,伪代码也是用无衬线字体排版的,但我需要 Times New Roman 来完成这项任务。我如何强制 LaTeX/algorithm2e 使用 Times New Roman?

答案1

我不知道您如何设置字体,但这应该是一个起点。

\documentclass{book}
\usepackage{newtxtext,newtxmath}
\usepackage{algorithm2e}
\usepackage{algpseudocode}
\usepackage{etoolbox}
\usepackage{lipsum}

\renewcommand{\familydefault}{\sfdefault}
\AtBeginEnvironment{algorithmic}{%
  \renewcommand{\familydefault}{\rmdefault}%
  \fontfamily{\familydefault}\selectfont
}

\begin{document}

\lipsum[1]

\begin{algorithm}
\centering
\begin{algorithmic}
\Function{foo}{x}
\State $x \gets 1$
\EndFunction
\end{algorithmic}
\end{algorithm}

\lipsum[2]

\end{document}

在此处输入图片描述

答案2

以下是使用该包提供的标准机制进行的一些示例调整algorithme2e

首先,设置\SetAlFnt{\rmfamily}会将大部分文本更改为罗马字体。但是,您会发现关键字、参数等内容仍使用无衬线字体。还有许多命令可以调整这些内容,请参阅文档. 命令的形式为,\Set...Sty{...}参数为命令没有反斜杠。诸如 之类的简单开关\ttfamily可以作为 传递ttfamily,但要更改多个属性,您必须定义自己的命令并传递该命令。我在下面提供了参数的示例。

示例输出

\documentclass{article}

\usepackage{algorithm2e}
\renewcommand{\familydefault}{\sfdefault}
\SetAlFnt{\rmfamily}
\SetKwSty{ttfamily}
\newcommand{\myargfont}{\rmfamily\slshape}
\SetArgSty{myargfont}

\begin{document}

Sample main text.

\begin{algorithm}
  \SetAlgoLined
  \KwData{this text}
  \KwResult{how to write algorithm with \LaTeX2e }
  initialization\;
  \While{not at end of this document}{
    read current\;
    \eIf{understand}{
      go to next section\;
      current section becomes this one\;
      }{
      go back to the beginning of current section\;
      }
    }
  \caption{How to write algorithms}
\end{algorithm}

Sample main text.

\end{document}

相关内容