更改文档中的主字体会改变等宽字体系列的粗细

更改文档中的主字体会改变等宽字体系列的粗细

我在用着软件包中我的主要字体。但是,它改变了等宽字体的粗细。算法的环境。我希望等宽字体显示,就像我没有使用包。我怎样才能实现这一点?

\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(但请注意,这确实不是改变数学排版)。

相关内容