顶部带有加号/减号的箭头

顶部带有加号/减号的箭头

下面你可以看到一个箭头,上面有一个加号和一个减号。如何在 latex 中实现这一点?更多可能性:顶部只有加号的箭头和顶部只有减号的箭头。我该怎么做?

在此处输入图片描述

答案1

\stackrel

LaTeX 提供\stackrel在关系运算符上放置某些内容的功能:

\documentclass{article}

\begin{document}
\[
  A \stackrel{+/-}\longrightarrow
  B \stackrel{+}\rightarrow
  C \stackrel{-}\rightarrow
  D
\]
\end{document}

结果 \stackrel

  • 但是对于第一种情况来说,箭头太短了+/-
  • 加号/减号完全水平居中,但由于箭头的缘故,看起来不太好看。加号/减号应该向左移动一点。

\xrightarrow

该包amsmath通过提供可扩展的箭头解决了以前的问题:

\xrightarrow[<below>]{<above>}

箭头的长度随下方或上方注释的宽度而增长。箭头尖端被考虑在内。

\documentclass{article}
\usepackage{amsmath}

\begin{document}
\[ A \xrightarrow{+/-} B \xrightarrow{+} C \xrightarrow{-} D \]
\end{document}

结果 \xrightarrow

但仍有改进的空间:

  • 减号和加号以水平线开始和结束,因此左右箭头的额外空间可以稍微减少一些。
\documentclass{article}
\usepackage{amsmath}

\newcommand*{\rightarrowpm}[1]{%
  \xrightarrow{\!#1\!}%
}

\begin{document}
\[
   A \rightarrowpm{+/-}
   B \rightarrowpm{+}
   C \rightarrowpm{-}
   D
\]
\end{document}

结果 \xrightarrow 和 !

如果加号和减号太大,\scriptscriptstyle可以添加:

\documentclass{article}
\usepackage{amsmath}

\newcommand*{\rightarrowpm}[1]{%
  \xrightarrow{\scriptscriptstyle\!#1\!}%                     
}

\begin{document}
\[
   A \rightarrowpm{+/-}
   B \rightarrowpm{+}
   C \rightarrowpm{-}
   D
\]
\end{document}

结果 \xrightarrow + \, + \scriptscriptstyle

可扩展\xrightarrow

\xrightarrow不会amsmath根据不同的数学样式自动调整大小。最后一个例子重新定义了 ,\ext@arrow使其\rightarrowpm根据当前数学样式可缩放。\scriptscriptstyle通过缩放到 90% 可实现比 更小的样式。

\documentclass{article}
\usepackage{amsmath}
\usepackage{graphicx}

\makeatletter
\newcommand*{\rightarrowpm}[1]{%
  \begingroup
    \let\ext@arrow\ext@arrow@scalable
    \xrightarrow{\scriptscriptstyle\!#1\!}%
  \endgroup
}
\newcommand*{\ext@arrow@scalable}[7]{%
  \mathrel{%
    \mathpalette{\@ext@arrow@scalable{#1}{#2}{#3}{#4}{#5}{#6}{#7}}{}%
  }%
}
\newcommand*{\@ext@arrow@scalable}[8]{%
  \mathop{%
    \setbox\z@\hbox{#5#8}%
    \setbox\tw@\vbox{%
      \m@th
      \ifx#8\scriptscriptstyle
        \let\my@hbox\hbox@scriptscriptscaled
      \else
        \let\my@hbox\hbox@math
      \fi
      \my@hbox{%
        \ifx#8\scriptstyle\scriptscriptstyle\else\scriptstyle\fi
        \mkern#3mu{#6}\mkern#4mu%
      }%
      \my@hbox{%
        \ifx#8\scriptstyle\scriptscriptstyle\else\scriptstyle\fi
        \mkern#3mu{#7}\mkern#4mu%
      }%
      \copy\z@
    }%
    \hbox to\wd\tw@{\unhbox\z@}}%
  \limits
    \@ifnotempty{#7}{%
      ^{%
        \ifx#8\scriptscriptstyle
          \expandafter\hbox@scriptscriptscaled
        \else
          \expandafter\@firstofone
        \fi
        {%
          \if0#1\else\mkern#1mu\fi
          #7%
          \if0#2\else\mkern#2mu\fi
        }%
      }%
    }%
    \@ifnotempty{#6}{%
      _{%
        \ifx#8\scriptscriptstyle
          \expandafter\hbox@scriptscriptscaled
        \else
          \expandafter\@firstofone
        \fi
        {%
          \if0#1\else\mkern#1mu\fi
          #6%
          \if0#2\else\mkern#2mu\fi
        }%
      }%
    }%
}

\newcommand*{\hbox@scriptscriptscaled}[1]{%
  \hbox{%
    \scalebox{.9}{$\scriptscriptstyle#1\m@th$}%
  }%
}
\newcommand*{\hbox@math}[1]{%
  \hbox{$#1\m@th$}%
}
\makeatother

\begin{document}
\[ A \rightarrowpm{+/-} B^{A\rightarrowpm{+/-}B^{A\rightarrowpm{+/-}B}} \]
\end{document}

结果

答案2

软件包amsmath提供了\overset将某些内容放在二进制或关系运算符上的方法:

\overset{+/-}{\longrightarrow}

在此处输入图片描述

答案3

如果您更喜欢自动调整尺寸的解决方案,请amsmath使用\xrightarrow{}

$\xrightarrow{+/-}$

如果你想要更小的 +/- 符号,你可以使用$\xrightarrow{\scriptscriptstyle +/-}$

\documentclass{standalone}
\usepackage{amsmath}
\begin{document}
$\xrightarrow{+/-}$
$\xrightarrow{\scriptscriptstyle +/-}$

$\xrightarrow{+}$
$\xrightarrow{\scriptscriptstyle +}$
\end{document}

给出

在此处输入图片描述

相关内容