如何正确排版字符串的连接?

如何正确排版字符串的连接?

我正在寻找一种排版两个字符串连接的好方法。这是描述集理论中的标准符号,将 m 元组连接x到 n 元组y以获得 (m+n) 元组x^y,即一个略微凸起的小撇号或皱眉将字符的上半部分连接在一起。我目前使用简单的

x^\smallfrown y

看上去不太好。

从语义上讲,这是一个二元运算,但它不应该在左右有通常的间距,而且它应该高于减号。

以下是 Moschovakis 的描述集理论(pdf 的第 76 页)这大概就是我想要做的,但我更喜欢皱眉:

Moschovakis 的样本屏幕截图


浏览这个网站时,我发现了这个问题字符串/向量连接符号但它关心的是哪个用于操作的符号,所以它不能解决我的问题。

答案1

\mathbin定义一个根据您的规范排版的二进制数学命令( ):

在此处输入图片描述

\documentclass{article}
\usepackage{graphicx}% http://ctan.org/pkg/graphicx
\newcommand{\concatA}{%
  \mathbin{\raisebox{1ex}{\scalebox{.7}{$\frown$}}}%
}
\newcommand{\concatB}{%
  \mathbin{\rotatebox[origin=c]{90}{\scalebox{.7}{(\kern1ex)}}}
}
\begin{document}
$x\concatA y\ x\concatB y$
\end{document}​​​​​​​​​​​​​​​​​​​​​​​​​

\concatA可能是你想要的,尽管我还添加了\concatB另一个可能性。可能还有更多,所以如果你感兴趣,请参阅如何查找符号?

你可以摆弄加注\frown1ex)以及大小(缩放到.7其原始大小得益于graphicx)。

在我看来,将间距设置为 听起来很合乎逻辑,因为\mathbin它表示一个运算符作用于两个实体(操作数)。但是,您可以使用\mathord来删除二元运算符。如果需要,甚至可以使用额外的 s 来指定符号周围的间距\mkern

答案2

您可以使用 扩展 Werner 的解决方案\mathchoice

\newcommand{\concatA}{%
  \mathord{
    \mathchoice
    {\raisebox{1ex}{\scalebox{.7}{$\frown$}}}
    {\raisebox{1ex}{\scalebox{.7}{$\frown$}}}
    {\raisebox{.7ex}{\scalebox{.5}{$\frown$}}}
    {\raisebox{.7ex}{\scalebox{.5}{$\frown$}}}
  }
}

相关内容