我在用着次软件包中我的主要字体。但是,它改变了等宽字体的粗细。算法的环境。我希望等宽字体显示,就像我没有使用次包。我怎样才能实现这一点?
\documentclass{article}
\usepackage{algpseudocode,algorithm}
\usepackage{times}
\makeatletter
\algrenewcommand\ALG@beginalgorithmic{\ttfamily}
\makeatother
\begin{document}
\begin{algorithm}
\caption{Euclid’s algorithm}\label{euclid}
\begin{algorithmic}[3]
\Procedure{Euclid}{$a,b$}\Comment{The g.c.d. of $a$ and $b$}
\State $r \gets a \bmod b$
\While{$r \not= 0$}\Comment{We have the answer if $r$ is 0}
\State $a \gets b$
\State $b \gets r$
\State $r \gets a \bmod b$
\EndWhile\label{euclidendwhile}
\State \textbf{return} $b$\Comment{The gcd is $b$}
\EndProcedure
\end{algorithmic}
\end{algorithm}
\end{document}
答案1
你应该绝不这样做\usepackage{times}
,特别是如果您的文档包含数学公式:您会得到 Times 用于文本和 Computer Modern 用于数学的可怕混合,并且这两种字体不协调,因为字母的形状差异太大。
你可以使用mathptmx
。如果你不想使用 Courier 作为等宽字体(我同意你的观点),你可以恢复标准的 Computer Modern Mono(这样的混合还不错)。
别忘了(如果漏掉了,\frenchspacing
请检查后面的空格)。第 3 行末尾的 0 应该是。g.c.d.
$0$
\documentclass{article}
\usepackage{algpseudocode,algorithm}
\usepackage{mathptmx}
\renewcommand{\ttdefault}{cmtt} % Computer Modern Mono
\makeatletter
\algrenewcommand\ALG@beginalgorithmic{\ttfamily\frenchspacing}
\makeatother
\begin{document}
\begin{algorithm}
\caption{Euclid's algorithm}\label{euclid}
\begin{algorithmic}[3]
\Procedure{Euclid}{$a,b$}\Comment{The g.c.d. of $a$ and $b$}
\State $r \gets a \bmod b$
\While{$r \not= 0$}\Comment{We have the answer if $r$ is 0}
\State $a \gets b$
\State $b \gets r$
\State $r \gets a \bmod b$
\EndWhile\label{euclidendwhile}
\State \textbf{return} $b$\Comment{The gcd is $b$}
\EndProcedure
\end{algorithmic}
\end{algorithm}
\end{document}
比较times
而不是mathptmx
然而,现在你应该这样做\usepackage{newtxtext,newtxmath}
而不是\usepackage{mathptmx}
。无论如何我都会保留这\ttdefault
条线。
答案2
问题是,该times
软件包不仅会更改主字体,还会更改无衬线字体(更改为 Helvetica)和打字机字体(更改为 Courier)。除了使用\usepackage{times}
,您还可以直接编写:
\renewcommand{\rmdefault}{ptm}
代替\usepackage{times}
只将罗马字体更改为 Times(但请注意,这确实不是改变数学排版)。