答案1
这类似于jlab 的回答但有一些变化:
- 底部箭头
\hookrightarrow
旋转(围绕其中心)180度; - 顶部箭头稍微向右移动,底部箭头向左移动,以在视觉上补偿钩子;
- 两个箭头之间的垂直空间稍微缩小了;
- 尺寸在下标/上标中正确变化并从标准文本/显示样式开始;
- 第二个参数
\mathpalette
是垂直调整,稍后请参见。
\documentclass{article}
\usepackage{amsmath}
\usepackage{graphicx}
\makeatletter
\newcommand{\hookleftrightarrows}{%
\mathrel{% we want a relation symbol
\mathpalette\hookleftrightarrows@{2}%
}%
}
\newcommand{\hookleftrightarrows@}[2]{%
\vcenter{%
\offinterlineskip\m@th
\sbox\z@{$#1\mkern#2mu$}
\ialign{##\cr
$#1\mkern1mu\hookrightarrow$\cr
\noalign{\kern-\wd\z@}
\rotatebox[origin=C]{180}{$#1\mkern1mu\hookrightarrow$}\cr
}%
}%
}
\makeatletter
\begin{document}
$A \hookleftrightarrows B$
$A_{\hookleftrightarrows}$
\end{document}
对于不同的字体,垂直调整可能需要一些调整。例如,使用相同的代码newtx
将产生
如果我\mathpalette\hookleftrightarrows@{2}
把\mathpalette\hookleftrightarrows@{4}
输出改为
答案2
上面的符号是\hookrightarrow
。您可以从第一个符号开始,旋转 180° 创建下面的符号
\rotatebox{180}{$\hookrightarrow$}
\rotatebox
是来自包的命令(像在某些包中一样,graphicx
符号也直接提供)。\lhookleftarrow
MnSymbol
你可以用类似下面的方法绘制两个符号,\scriptstyle
一个叠在另一个上面
\ialign {#\crcr%
$\scriptstyle\hookrightarrow$\crcr%
\noalign { \nointerlineskip }%
\rotatebox{180}{$\scriptstyle\hookrightarrow$}\cr}
最后将\vcenter
其置于数学轴的中心,\mathrel
以调整间距。使用整个
\newcommand*{\hookleftrightarrows}{%
\mathrel{\vcenter{\ialign {##\crcr%
$\scriptstyle\hookrightarrow$\crcr%
\noalign { \nointerlineskip }%
\rotatebox{180}{$\scriptstyle\hookrightarrow$}\cr}}}%
}
(#
其中\ialign
应该加倍,因为我们在 里面\newcommand
)。
结果:
\documentclass{article}
\usepackage{amsmath}
\usepackage{graphicx}
\newcommand*{\hookleftrightarrows}{%
\mathrel{\vcenter{\ialign {##\crcr%
$\scriptstyle\hookrightarrow$\crcr%
\noalign { \nointerlineskip }%
\rotatebox{180}{$\scriptstyle\hookrightarrow$}\cr}}}%
}
\begin{document}
$ A \hookleftrightarrows B $
\end{document}