降低数学公式中的文本,无需 raisebox

降低数学公式中的文本,无需 raisebox

我有一个表示具有特定属性“属性”的同态的符号,其代码类似于

\newcommand*{\verylongrightarrow}{\relbar\joinrel\relbar\joinrel\relbar\joinrel\rightarrow}
\newcommand{\homprop}{\mathrel{\overset{\textup{property}}{\verylongrightarrow}}}

(这个想法是在箭头上方插入单词“property”。当然,“property”只是一个虚拟词,用于此目的。)

现在我用符号\twoheadrightarrow来表示同态是全射。
如果同态恰好是全射并且具有属性“property”,我想像以前一样在箭头上方添加“property”。

这或多或少是正确的,只是,当高于 时\twoheadrightarrow,我得到的文本比 稍微高一些\rightarrow

我想到的一个解决方案是使用\raisebox。然而,这更糟糕,因为(我想这就是原因)它创建了一个新的框,它“忘记”了它在范围内\overset并以正常大小打印属性的名称。

有没有更好的方法呢?

(我真的不知道我是否选择了正确标签。请随意编辑。)

答案1

\verylongrightarrow我建议您不要创建自己的宏,而是使用\xrightarrow或加载extarrows包并使用其\xlongrightarrow宏。 产生的箭头\xlongrightarrow比 产生的箭头稍长\xrightarrow

请注意,使用\xrightarrow\xlongrightarrow时,无需提前决定\relbar长箭头中应使用多少个 s。此外,使用这些宏,单词“property”中的字母“y”不会与箭头头纠缠在一起。

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath,extarrows}
\newcommand*{\verylongrightarrowa}{\relbar\joinrel\relbar\joinrel\relbar\joinrel\rightarrow}
\newcommand*{\hompropa}{\mathrel{\overset{\textup{property}}{\verylongrightarrowa}}}

\newcommand*{\verylongrightarrowb}{\xlongrightarrow{\phantom{\textup{property}}}}
\newcommand*{\hompropb}{\xlongrightarrow{\textup{property}}}

\begin{document}
\obeylines
$\verylongrightarrowa$ 
$u\hompropa v$

\medskip
$\verylongrightarrowb$     
$u\hompropb v$
\end{document}

答案2

这是默认字体特有的(使用 Minion Pro 时我没有遇到此问题)。解决方法是“粉碎” \twoheadrightarrow。不过,我建议一种变体:定义一个可扩展双头右箭头,其行为类似于\xrightarrow,箭头上方有一个参数,箭头下方有一个可选参数,均以 \scriptsize 为单位。指南第 38 节对此进行了记录Mathmode

在此基础上我定义了一个\xhomprop和a\xhomontoprop命令。你可以在以下代码中看到两种解决方案:

\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsfonts, amssymb, latexsym}
\usepackage{lmodern, mathtools}

\makeatletter
\newcommand{\xtwoheadrightarrow}[2][]{%
  \ext@arrow 0099\xtwoheadfill@{#1}{#2}%
}%
\newcommand{\xtwoheadfill@}{%
  \arrowfill@\relbar\relbar{\mathrel{\vphantom{ → }\smash{\twoheadrightarrow}}}
\newcommand*{\verylongrightarrow}{\relbar\joinrel\relbar\joinrel\relbar\joinrel → }
\newcommand{\homprop}{\mathrel{\overset{\textup{property}}{\verylongrightarrow}}}
\makeatother

\newcommand*{xhomprop}{\xrightarrow{\text{property}}}
\newcommand*{xhomontoprop}{\xtwoheadrightarrow{\text{property}}}
\newcommand*{\verylongtwoheadrightarrow}{\vphantom{ → }\smash{\relbar\joinrel\relbar\joinrel\relbar\joinrel\twoheadrightarrow}}
\newcommand{\homontoprop}{\mathrel{\overset{\textup{property}}{\verylongtwoheadrightarrow}}}

\begin{document}

\[ \begin{array}{l@{\qquad}ll}
  \homprop & \homontoprop \\
  \xrightarrow{\text{property}} & \xtwoheadrightarrow{\text{property}}
  \end{array} \]

\end{document} 

在此处输入图片描述

相关内容