非常短的箭头符号

非常短的箭头符号

有没有办法制作非常短的箭?

我有:

\documentclass{article}
\usepackage{stmaryrd}

\begin{document}
$x_{i\shortrightarrow j}$
\end{document}

箭

我想:

箭头短

感谢所有的想法和建议!

答案1

这是一个更轻量级的方法。定义了两个宏,一个用于普通样式,另一个用于脚本样式。在后一种情况下,\mathrel删除了,因为它没有效果。在前一种情况下,\mathrel与周围的空白相比,这会导致事物看起来有点小。

对于脚本来说,可选参数是所需的长度考虑了与正常尺寸的比例,即,它通常应该与正常尺寸物体所用的比例相同。

\documentclass{article}

\newcommand{\veryshortarrow}[1][3pt]{\mathrel{%
   \hbox{\rule[\dimexpr\fontdimen22\textfont2-.2pt\relax]{#1}{.4pt}}%
   \mkern-4mu\hbox{\usefont{U}{lasy}{m}{n}\symbol{41}}}}

\makeatletter

\setbox0\hbox{$\xdef\scriptratio{\strip@pt\dimexpr
    \numexpr(\sf@size*65536)/\f@size sp}$}

\newcommand{\scriptveryshortarrow}[1][3pt]{{%
    \hbox{\rule[\scriptratio\dimexpr\fontdimen22\textfont2-.2pt\relax]
               {\scriptratio\dimexpr#1\relax}{\scriptratio\dimexpr.4pt\relax}}%
   \mkern-4mu\hbox{\let\f@size\sf@size\usefont{U}{lasy}{m}{n}\symbol{41}}}}

\makeatother

\begin{document}

\[x-a\veryshortarrow b_{c\scriptveryshortarrow d-e}-f\]
\end{document}

在此处输入图片描述

\mkern-4mu是通过反复试验获得的。

通过这个稍微短一点的代码可以获得等效结果,它采用\vcenter

\documentclass{article}

\newcommand{\veryshortarrow}[1][3pt]{\mathrel{%
   \vcenter{\hbox{\rule[-.2pt]{#1}{.4pt}}}%
   \mkern-4mu\hbox{\usefont{U}{lasy}{m}{n}\symbol{41}}}}

\makeatletter

\setbox0\hbox{$\xdef\scriptratio{\strip@pt\dimexpr
    \numexpr(\sf@size*65536)/\f@size sp}$}

\newcommand{\scriptveryshortarrow}[1][3pt]{{%
    \vcenter{\hbox{\rule[\scriptratio\dimexpr-.2pt\relax]
               {\scriptratio\dimexpr#1\relax}{\scriptratio\dimexpr.4pt\relax}}}%
   \mkern-4mu\hbox{\let\f@size\sf@size\usefont{U}{lasy}{m}{n}\symbol{41}}}}

\makeatother

\begin{document}

\[x-a\veryshortarrow b_{c\scriptveryshortarrow d-e}-f\]
\end{document}

可以\scriptveryshortarrow使用\mathrel。其唯一的效果(按照其注定的脚本样式)是抑制与紧接在前或紧接在后的大符号( \sum、 、...)之间的小空格。\prod

\scriptveryshortarrow如果删除\scriptratio缩放规则厚度和用于居中的垂直偏移的两个代码(缩放宽度的代码必须保留),则可以简化代码 。


对于规则的粗细,也许更好的选择(而不是.4pt如上所述)是使用\fontdimen8扩展字体。

\documentclass{article}

\newcommand{\veryshortarrow}[1][3pt]{\mathrel{%
   \vcenter{\hbox{\rule[-.5\fontdimen8\textfont3]{#1}{\fontdimen8\textfont3}}}%
   \mkern-4mu\hbox{\usefont{U}{lasy}{m}{n}\symbol{41}}}}

\makeatletter

\setbox0\hbox{$\xdef\scriptratio{\strip@pt\dimexpr
    \numexpr(\sf@size*65536)/\f@size sp}$}

\newcommand{\scriptveryshortarrow}[1][3pt]{\mathrel{%
    \vcenter{\hbox{\rule[-.5\fontdimen8\scriptfont3]
               {\scriptratio\dimexpr#1\relax}{\fontdimen8\scriptfont3}}}%
   \mkern-4mu\hbox{\let\f@size\sf@size\usefont{U}{lasy}{m}{n}\symbol{41}}}}

\makeatother

\begin{document}

\[x-a\veryshortarrow b_{c\scriptveryshortarrow\frac xy}-f\]
\end{document}

在此处输入图片描述

答案2

如果您喜欢 中的箭头stmaryrd,您可以剪下它。

\documentclass{article}
\usepackage{stmaryrd}
\usepackage{trimclip}

\makeatletter
\DeclareRobustCommand{\shortto}{%
  \mathrel{\mathpalette\short@to\relax}%
}

\newcommand{\short@to}[2]{%
  \mkern2mu
  \clipbox{{.5\width} 0 0 0}{$\m@th#1\vphantom{+}{\shortrightarrow}$}%
  }
\makeatother

\begin{document}

$a\shortto b_{c\shortto d}$

\end{document}

在此处输入图片描述

答案3

CarLaTeX 的链接提供了答案!非常感谢!我稍微修改了一下解决方案,请参见下面的结果。

(对于我以粗鲁的方式调整间距和缩放比例而伤害到的各位,我深感抱歉)。

\documentclass{article}
\usepackage{pict2e,picture,graphicx}

\makeatletter
\DeclareRobustCommand{\Arrow}[1][]{%
\check@mathfonts
\if\relax\detokenize{#1}\relax
\settowidth{\dimen@}{$\m@th\rightarrow$}%
\else
\setlength{\dimen@}{#1}%
\fi
\sbox\z@{\usefont{U}{lasy}{m}{n}\symbol{41}}%
\begin{picture}(\dimen@,\ht\z@)
\roundcap
\put(\dimexpr\[email protected]\wd\z@,0){\usebox\z@}
\put(0,\fontdimen22\textfont2){\line(1,0){\dimen@}}
\end{picture}%
}
\makeatother
\newcommand{\veryshortrightarrow}{\hspace{.2mm}\scalebox{.8}{\Arrow[.1cm]}\hspace{.2mm}}

\begin{document}
    $x_{i\veryshortrightarrow j}$
\end{document}

在此处输入图片描述

相关内容