使用 Roboto 字体自定义定理时遇到问题

使用 Roboto 字体自定义定理时遇到问题

我在使用 Roboto 字体创建自定义 Theorem 环境时遇到了麻烦。基本上,我希望使用 theorem 标题\fontseries{medium}而不是\bfseries。在处理这个问题时,我做了两个观察:

  1. 只有定理的数字采用了这种新字体。
  2. 如果我将定理主体样式更改为\fontseries{medium},则只有使用 强调的文本\emph{}才会采用新字体。

以下是 MWE 和结果输出:

\documentclass[10pt]{article}

\usepackage[sfdefault, light]{roboto}
\usepackage{mathtools, amssymb, amsthm, bm}
\newtheoremstyle{mytheoremstyle}
    {\topsep}
    {\topsep}
    {\fontseries{medium}} % only changes emphasized text
    {}
    {\fontseries{medium}} % only changes theorem number
    {}
    {0.5em}
    {}
    \theoremstyle{mytheoremstyle}
    \newtheorem{theorem}{Theorem}
\usepackage[margin = 1in]{geometry}

\begin{document}

    \begin{theorem}
        The \emph{expected value} of a continuous random variable \(X\) with support \(\Omega\) is given by 
        \begin{align*}
            \mathbb{E}(X) \coloneqq \int_{\Omega} \mathrm{d} F(x) = \int_{\Omega} f(x) \;\mathrm{d} x,
        \end{align*}
        where \(f\) and \(F\) denote the pdf and cdf, respectively. 
    \end{theorem}

\end{document}

输出如下:

在此处输入图片描述

这里发生了什么?

答案1

light当您使用 Type 1 字体时,该包的选项会roboto重新定义中等粗细。这里您需要的是命令\robotomedium

\documentclass[10pt]{article}

\usepackage[sfdefault, light]{roboto}
\usepackage{mathtools, amssymb, amsthm, bm}
\newtheoremstyle{mytheoremstyle}
    {\topsep}
    {\topsep}
    {\robotomedium} % changed
    {}
    {\robotomedium} % changed
    {}
    {0.5em}
    {}
    \theoremstyle{mytheoremstyle}
    \newtheorem{theorem}{Theorem}
\usepackage[margin = 1in]{geometry}

\begin{document}

    \begin{theorem}
        The \emph{expected value} of a continuous random variable \(X\) with support \(\Omega\) is given by 
        \begin{align*}
            \mathbb{E}(X) \coloneqq \int_{\Omega} \mathrm{d} F(x) = \int_{\Omega} f(x) \;\mathrm{d} x,
        \end{align*}
        where \(f\) and \(F\) denote the pdf and cdf, respectively. 
    \end{theorem}

\end{document}

这也适用于roboto使用 OTF 字体的 LuaLaTeX 或 XeLaTeX。

相关内容