如何排版带有长条的同构符号 ($\simeq$)

如何排版带有长条的同构符号 ($\simeq$)

有没有办法在 LaTeX 中排版出\simeq带有较长线条的字体,或者等效地 \stackrel{\sim}{\longrightarrow}不使用箭头?

答案1

以下构造\isomorphism类似于的数学符号\simeq,但行更长:

\documentclass{article}

\makeatletter
\newcommand*{\isomorphism}{%
  \mathrel{%
    \mathpalette\@isomorphism{}%
  }%
}
\newcommand*{\@isomorphism}[2]{%
  % Calculate the amount of moving \sim up as in \simeq
  \sbox0{$#1\simeq$}%
  \sbox2{$#1\sim$}%
  \dimen@=\ht0 %
  \advance\dimen@ by -\ht2 %
  %
  % Compose the two symbols
  \sbox0{%
    \lower1.9\dimen@\hbox{%
      $\m@th#1\relbar\isomorphism@joinrel\relbar$%
    }%
  }%
  \rlap{%
    \hbox to \wd0{%
      \hfill\raise\dimen@\hbox{$\m@th#1\sim$}\hfill
    }%
  }%
  \copy0 %
}
\newcommand*{\isomorphism@joinrel}{%
  \mathrel{%
    \mkern-3.4mu %
    \mkern-1mu %
    \nonscript\mkern1mu %
  }%
}
\makeatother

\begin{document}
\[ A \isomorphism B \simeq C = D \sim E \]
\[ A \isomorphism B^{C \isomorphism D^{E \isomorphism F}} \]
\end{document}

结果

评论:

  • 线的构造类似于\longrightarrow。其中一条线\relbar与 连接\rightarrow。连接会移除侧边距,这意味着字形的左侧和右侧可以有白色边距。LaTeX 会\joinrel添加 的负空间以3mu将关系符号移动到一起。测试文件在较小的数学样式中使用符号, 会-3mu留下一个间隙,因此使用自定义设置(对于和,对于和)\isomorphism@joinrel进行定义。-3.4mu\displaystyle\textstyle-4.4muscriptstyle\scriptscriptstyle

  • 该符号\sim水平居中,并采用相同的数学样式和大小。它的高度与 aymbol 相同\simeq

  • \simeq不幸的是,TeX 中无法提供线条的垂直位置,因此使用了一个猜测值(偏移\sim量乘以 1.9)。如果您希望线条稍微高一点,则可以减小该系数。

  • \mathpalette用于支持所有数学样式中的符号。然后内部宏\@isomorphism将数学样式(\displaystyle\textstyle\scriptstyle\scriptscriptstyle)作为第一个参数。第二个参数未使用并留空。

  • 为了提高效率(和乐趣),测量和字形组合是使用许多低级纯 TeX 宏完成的。

  • \m@th设置\mathsurround0pt。通常该值为0pt,但如果设置,则应围绕数学表达式的空格不应出现在公式或数学符号内。

答案2

我为我们的学生制作了这个,统计时需要类似的符号

\newcommand\DistTo{\xrightarrow{
   \,\smash{\raisebox{-0.65ex}{\ensuremath{\scriptstyle\sim}}}\,}}

在此处输入图片描述

答案3

结合@Ian Thompson 和@daleif 的回答中的一些想法,我认为以下内容非常好。

\newcommand{\iso}{\ \raisebox{0.5ex}{\ensuremath{\stackrel{\sim}{\rule{16pt}{0.7pt}}}\ \,}}

在此处输入图片描述

答案4

尝试这个。

\documentclass{article}
\begin{document}
\[
A \stackrel{\displaystyle\sim}{\smash{\rule[1.5pt]{2em}{0.5pt}}} B
\]
\end{document}

根据需要调整参数。您可以使用它\raisebox来提升整个符号。

\documentclass{article}
\usepackage{graphicx}
\begin{document}
\[
A \raisebox{0pt}{$\stackrel{\displaystyle\sim}{\smash{\rule[1.5pt]{2em}{0.5pt}}}$} B
\]
\end{document}

相关内容