![如何正确排版字符串的连接?](https://linux22.com/image/255732/%E5%A6%82%E4%BD%95%E6%AD%A3%E7%A1%AE%E6%8E%92%E7%89%88%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E8%BF%9E%E6%8E%A5%EF%BC%9F.png)
我正在寻找一种排版两个字符串连接的好方法。这是描述集理论中的标准符号,将 m 元组连接x
到 n 元组y
以获得 (m+n) 元组x^y
,即一个略微凸起的小撇号或皱眉将字符的上半部分连接在一起。我目前使用简单的
x^\smallfrown y
看上去不太好。
从语义上讲,这是一个二元运算,但它不应该在左右有通常的间距,而且它应该高于减号。
以下是 Moschovakis 的描述集理论(pdf 的第 76 页)这大概就是我想要做的,但我更喜欢皱眉:
浏览这个网站时,我发现了这个问题字符串/向量连接符号但它关心的是哪个用于操作的符号,所以它不能解决我的问题。
答案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
另一个可能性。可能还有更多,所以如果你感兴趣,请参阅如何查找符号?。
你可以摆弄加注\frown
(1ex
)以及大小(缩放到.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$}}}
}
}