我想将(任意)两个符号叠放在一起。\overset
上面的符号较小。但是,我希望它们垂直居中且大小相同。该怎么做?显然,以下做法非常糟糕:
\documentclass{scrartcl}
\usepackage{amsmath}
\newcommand*{\ou}[2]{\overset{\text{\large ${#1}$}}{#2}}
\begin{document}
$a\ou{>}{<}0$ or $a\raisebox{-3pt}{\,$\ou{>}{<}$\,}0$ or $a\,{>\atop <}\,0$
\end{document}
\atop
还不错,但是 a)我怎样才能使符号(垂直)彼此更接近,以及 b)如何将其定义为负责处理运算符周围间距的命令(\,
)?
答案1
您要构建的符号已经可用,因此这只是对其他类似情况的提示。如果您想将符号彼此叠放在一起,而不是叠加符号相互重叠,要使用的工具是\ialign
,但\ooalign
不适用于后一种情况。
\documentclass{article}
\newcommand{\ou}{%
\mathrel{%
\vcenter{\offinterlineskip
\ialign{##\cr$<$\cr\noalign{\kern-1.5pt}$>$\cr}%
}%
}%
}
\begin{document}
$a \ou b$
\end{document}
我用来\mathrel
声明符号类型,\vcenter
使整个构造相对于公式轴居中并且\ialign
没有基线跳过,因此我可以使用来微调间距\noalign{\kern...}
。
可以进行改进\mathpalette
,使符号适用于所有公式样式。
答案2
首先我要说的是,该amssymb
软件包为您提供了您需要的符号\lessgtr
(还有\grtless
)。
<
如果由于某种原因您需要通过堆叠和来构建符号,则>
一种选择是使用\ooalign
一些\raiseboxes
;然后可以将整个构造作为参数传递以\mathrel
获取与关系符号相关联的适当间距。
以下代码显示了您最初的尝试(第一行)、使用(第二行)和使用(第三行)\ooalign
获得的符号之间的比较:\lessgtr
\documentclass{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amssymb}
\newcommand*{\ou}[2]{\overset{\text{\large ${#1}$}}{#2}}
\newcommand\Ou{%
\mathrel{{\ooalign{\hss\raisebox{-0.5ex}{$>$}\hss\cr\raisebox{0.5ex}{$<$}}}}
}
\begin{document}
$a\ou{>}{<}0$ or $a\raisebox{-3pt}{\,$\ou{>}{<}$\,}0$ or $a\,{>\atop <}\,0$
$a\Ou 0$
$a\lessgtr 0$
\end{document}
答案3
该stackengine
软件包为这些事物提供了现成的宏,提供了垂直放置和分离以及水平对齐的选项。
\documentclass{article}
\usepackage{stackengine}
\stackMath
\begin{document}
CENTERED STACK:
Specify gap:\def\stacktype{S}
$x\mathbin{\stackanchor[0pt]{<}{>}}y\mathbin{\stackanchor[-1pt]{<}{>}}z$
Specify baselineskip:\def\stacktype{L}
$x\mathbin{\stackanchor[6pt]{<}{>}}y\mathbin{\stackanchor[5pt]{<}{>}}z$\medskip
OVER STACK:
Specify gap:\def\stacktype{S}
$x\mathbin{\stackon[0pt]{<}{>}}y\mathbin{\stackon[-1pt]{<}{>}}z$
Specify baselineskip:\def\stacktype{L}
$x\mathbin{\stackon[6pt]{<}{>}}y\mathbin{\stackon[5pt]{<}{>}}z$\medskip
UNDER STACK:
Specify gap:\def\stacktype{S}
$x\mathbin{\stackunder[0pt]{<}{>}}y\mathbin{\stackunder[-1pt]{<}{>}}z$
Specify baselineskip:\def\stacktype{L}
$x\mathbin{\stackunder[6pt]{<}{>}}y\mathbin{\stackunder[5pt]{<}{>}}z$
\end{document}