如何使用 \underset 修复位于其他文本下方的字形的不均匀大小?

如何使用 \underset 修复位于其他文本下方的字形的不均匀大小?

这是一个 M(不是)WE:

\documentclass{article}

\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{mathtools}
\usepackage{accents}

\theoremstyle{definition}
\newtheorem{axiom}{Axiom}
\newtheorem{definition}{Definition}

\renewcommand{\vec}[1]{\ensuremath{\mathbf{#1}}}
\newcommand{\undernum}[2]{\ensuremath{\underaccent{\mathclap{#2}}{#1}}}
\newcommand{\mvec}[2][n]{\underset{#1}{\mathbf{#2}}}

\begin{document}

\begin{definition}[Multivector notation.]
    $\mvec[0]{x} \in \mathbb{R}$, or $\mvec[0]{x}$ is a scalar, or a $0$-vector. We simply write $x$ instead of $\mvec[0]{x}$ (notice no bold). $\mvec[1]{y} \in \mathbb{R}^n$, or $\mvec[1]{y}$ is a traditional vector, or a $1$-vector. We simply write $\vec{y}$ instead of $\mvec[1]{y}$. $\mvec[n]{z} \in \mathbb{G}^n$, or $\mvec[n]{z}$ is multivector, or more specifically, an $n$-vector. 
\end{definition}

\end{document}

在此处输入图片描述

请注意,下划线字母 (n) 与下划线数字的大小不一致。我该如何解决这个问题?设置 \scriptscriptstyle 如下:\underset{\scriptscriptstyle#1},并不能解决比例差异问题,因为它只会使所有内容变小。

答案1

\mathstrut为了实现您想要的,您可以在定义中添加\mvec

\newcommand{\mvec}[2][n]{\underset{\scriptscriptstyle#1}{\mathbf{\mathstrut#2}}}

然而请注意,基线跳跃被此定义所破坏。

为了获得均匀的基线跳过,如果您确实想使用这样的定义,我建议您全局增加基线跳过,例如使用

\linespread{1.5}\selectfont

梅威瑟:

\documentclass{article}

\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{mathtools}
\usepackage{accents}

\usepackage{lipsum} % for dummy text

\theoremstyle{definition}
\newtheorem{axiom}{Axiom}
\newtheorem{definition}{Definition}

\renewcommand{\vec}[1]{\ensuremath{\mathbf{#1}}}
\newcommand{\undernum}[2]{\ensuremath{\underaccent{\mathclap{#2}}{#1}}}
\newcommand{\mvec}[2][n]{\underset{\scriptscriptstyle#1}{\mathbf{\mathstrut#2}}}

\begin{document}

\linespread{1.5}\selectfont

\begin{definition}[Multivector notation.]
    $\mvec[0]{x} \in \mathbb{R}$, or $\mvec[0]{x}$ is a scalar, or a $0$-vector. 
    We simply write $x$ instead of $\mvec[0]{x}$ (notice no bold). $\mvec[1]{y} \in \mathbb{R}^n$, 
    or $\mvec[1]{y}$ is a traditional vector, or a $1$-vector. We simply write $\vec{y}$ instead of 
    $\mvec[1]{y}$. $\mvec[n]{z} \in \mathbb{G}^n$, or $\mvec[n]{z}$ is multivector, or more 
    specifically, an $n$-vector.

    \lipsum[1]
\end{definition}

\end{document} 

输出:

在此处输入图片描述

放大:

在此处输入图片描述

答案2

使用\underset会导致行距不均匀。我建议不要使用它,而是采用较低级别的对齐方式。

\documentclass{article}

\usepackage{amsmath,amssymb,amsthm}

\theoremstyle{definition}
\newtheorem{definition}{Definition}

\renewcommand{\vec}[1]{\mathbf{#1}}
\newcommand{\mvec}[2][n]{%
  \oalign{%
    \smash[b]{$\vec{#2}$}\cr
    \noalign{\nointerlineskip\vskip\lineskip}
    \hidewidth$\scriptscriptstyle\vphantom{1}#1$\hidewidth\cr
  }%
}



\begin{document}

\begin{definition}[Multivector notation.]
$\mvec[0]{x} \in \mathbb{R}$, or $\mvec[0]{x}$ is a scalar, or a $0$-vector. We simply 
write $x$ instead of $\mvec[0]{x}$ (notice no bold). $\mvec[\,1]{y} \in \mathbb{R}^n$, or 
$\mvec[\,1]{y}$ is a traditional vector, or a $1$-vector. We simply write $\vec{y}$ instead 
of $\mvec[\,1]{y}$. $\mvec[n]{z} \in \mathbb{G}^n$, or $\mvec[n]{z}$ is multivector, or more 
specifically, an $n$-vector.
\end{definition}

However, $\mvec[1]{g}$ is hopeless, while $\mvec[\,n]{y}$ is tolerable.

\end{document}

我只留下了示例所需的代码和包。请注意,您应该\vec在 的定义中使用\mvec。使用\scriptscriptstyle和 的小间隔(使用\vphantom{1})可以使行间距比使用 获得的间距更小\underset。在,为了避免字母相互碰撞,需要手动校正,但示例还显示,诸如G不得使用。

在此处输入图片描述

我自己从来不会使用这样的符号。

相关内容