我正在使用无衬线字体写一本书,我需要排版伪代码。然而,伪代码也是用无衬线字体排版的,但我需要 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}