下面你可以看到一个箭头,上面有一个加号和一个减号。如何在 latex 中实现这一点?更多可能性:顶部只有加号的箭头和顶部只有减号的箭头。我该怎么做?
答案1
\stackrel
LaTeX 提供\stackrel
在关系运算符上放置某些内容的功能:
\documentclass{article}
\begin{document}
\[
A \stackrel{+/-}\longrightarrow
B \stackrel{+}\rightarrow
C \stackrel{-}\rightarrow
D
\]
\end{document}
- 但是对于第一种情况来说,箭头太短了
+/-
。 - 加号/减号完全水平居中,但由于箭头的缘故,看起来不太好看。加号/减号应该向左移动一点。
\xrightarrow
该包amsmath
通过提供可扩展的箭头解决了以前的问题:
\xrightarrow[<below>]{<above>}
箭头的长度随下方或上方注释的宽度而增长。箭头尖端被考虑在内。
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[ A \xrightarrow{+/-} B \xrightarrow{+} C \xrightarrow{-} D \]
\end{document}
但仍有改进的空间:
- 减号和加号以水平线开始和结束,因此左右箭头的额外空间可以稍微减少一些。
\documentclass{article}
\usepackage{amsmath}
\newcommand*{\rightarrowpm}[1]{%
\xrightarrow{\!#1\!}%
}
\begin{document}
\[
A \rightarrowpm{+/-}
B \rightarrowpm{+}
C \rightarrowpm{-}
D
\]
\end{document}
如果加号和减号太大,\scriptscriptstyle
可以添加:
\documentclass{article}
\usepackage{amsmath}
\newcommand*{\rightarrowpm}[1]{%
\xrightarrow{\scriptscriptstyle\!#1\!}%
}
\begin{document}
\[
A \rightarrowpm{+/-}
B \rightarrowpm{+}
C \rightarrowpm{-}
D
\]
\end{document}
可扩展\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}
给出