如何水平合并两个符号?

如何水平合并两个符号?

这个问题很短,希望有个简短的答案。我知道我可以用它\stackrel{top}{bot}垂直合并两个符号,一个top在顶部,一个bot在底部。有没有类似的东西用于左右合并?我问这个问题是因为我想做一个+=符号(用于代码中的添加更新步骤)。如果已经有这样的符号,那也可以。

答案1

对于这个问题,解决方案非常简单:

\mathrel{+}=

这样组合将被视为一种关系,因为=是一种关系,而 TeX 永远不会在两个关系符号之间留空格。所以

$a \mathrel{+}= b$

将被渲染为

在此处输入图片描述

你可能想要定义一个简写

\newcommand{\pluseq}{\mathrel{+}=}

并将上面的公式代入为

$a \pluseq b$

答案2

虽然 egreg 的回答对于用户的特定问题来说很棒,但如果要组合的两个符号在连接之前需要进行一些调整大小或垂直移动,则还有另一种技术可用于更一般的情况。它采用了 scalerel 包(我今天刚刚提交给 CTAN),它允许人们相对于第二个对象缩放/移动一个对象。例如,使用命令

$\scalerel{$K$}{\spadesuit}$

可以将事物连接起来,这种方式可能比仅仅将两个符号放在相邻位置更美观。以下是比较图:

在此处输入图片描述

由于该包要过几天才能分发,因此我在下面提供了样式包

\ProvidesPackage{scalerel}[2013/02/27]

\usepackage{calc}
\usepackage{tikz}
\global\newlength\thesrwidth
\global\newlength\thesrheight
\global\newlength\srblobheight
\global\newlength\srblobdepth
\global\newlength\mnxsrwidth
\newsavebox{\prebox}

\newcommand\scalerel{\@ifstar{\scalerelplain}{\scalerelplus}}

\newcommand\scalerelplain[3][99in]{%
  \sbox{\prebox}{$#2$}%
  \setbox0\hbox{$#3$}%
  \setlength\srblobheight{\ht0+\dp0}%
  \setlength\srblobdepth{\dp0}%
  \setbox0\hbox{$#2$}%
  \setlength\thesrwidth{\wd0*\ratio{\srblobheight}{\ht0+\dp0}}%
  \setlength\thesrheight{\ht0*\ratio{\srblobheight}{\ht0+\dp0}}%
  \setlength\mnxsrwidth{#1}%
  \ifdim\thesrwidth>\mnxsrwidth\setlength\thesrwidth{\mnxsrwidth}\fi%
  \raisebox{-\srblobdepth+\dp0*\ratio{\srblobheight}{\ht0+\dp0}}%
           {\resizebox{\thesrwidth}{\thesrheight}{\usebox{\prebox}}}%
}

\newcommand\scalerelplus[3][99in]{\scalerelplain[#1]{#2}{#3}#3}

\newcommand\stretchrel{\@ifstar{\stretchrelplain}{\stretchrelplus}}

\newcommand\stretchrelplain[3][10000]{%
  \sbox{\prebox}{$#2$}%
  \setbox0\hbox{$#3$}%
  \setlength\srblobheight{\ht0+\dp0}%
  \setlength\srblobdepth{\dp0}%
  \setbox0\hbox{$#2$}%
  \setlength\thesrwidth{\wd0}%
  \setlength\thesrheight{\ht0*\ratio{\srblobheight}{\ht0+\dp0}}%
  \setlength\mnxsrwidth{\thesrheight*100/#1}
  \ifdim\thesrwidth<\mnxsrwidth\setlength\thesrwidth{\mnxsrwidth}\fi%
  \raisebox{-\srblobdepth+\dp0*\ratio{\srblobheight}{\ht0+\dp0}}%
           {\resizebox{\thesrwidth}{\thesrheight}{\usebox{\prebox}}}%
}

\newcommand\stretchrelplus[3][10000]{\stretchrelplain[#1]{#2}{#3}#3}

\newcommand\scaleto[3][99in]{%
  \sbox{\prebox}{$#2$}%
  \setlength\srblobheight{#3}%
  \setlength\srblobdepth{0pt}%
  \setbox0\hbox{$#2$}%
  \setlength\thesrwidth{\wd0*\ratio{\srblobheight}{\ht0+\dp0}}%
  \setlength\thesrheight{\ht0*\ratio{\srblobheight}{\ht0+\dp0}}%
  \setlength\mnxsrwidth{#1}%
  \ifdim\thesrwidth>\mnxsrwidth\setlength\thesrwidth{\mnxsrwidth}\fi%
  \setlength\srblobdepth{\dp0*\ratio{\srblobheight}{\ht0+\dp0}}%
  \raisebox{-\srblobdepth+\dp0*\ratio{\srblobheight}{\ht0+\dp0}}%
           {\resizebox{\thesrwidth}{\thesrheight}{\usebox{\prebox}}}%
}

\newcommand\stretchto[3][10000]{%
  \sbox{\prebox}{$#2$}%
  \setlength\srblobheight{#3}%
  \setlength\srblobdepth{0pt}%
  \setbox0\hbox{$#2$}%
  \setlength\thesrwidth{\wd0}%
  \setlength\thesrheight{\ht0*\ratio{\srblobheight}{\ht0+\dp0}}%
  \setlength\mnxsrwidth{\thesrheight*100/#1}
  \ifdim\thesrwidth<\mnxsrwidth\setlength\thesrwidth{\mnxsrwidth}\fi%
  \setlength\srblobdepth{\dp0*\ratio{\srblobheight}{\ht0+\dp0}}%
  \raisebox{-\srblobdepth+\dp0*\ratio{\srblobheight}{\ht0+\dp0}}%
           {\resizebox{\thesrwidth}{\thesrheight}{\usebox{\prebox}}}%
}

\endinput

相关内容