![\oplus 和 \bigoplus 用垂直线或水平线代替十字线](https://linux22.com/image/442535/%5Coplus%20%E5%92%8C%20%5Cbigoplus%20%E7%94%A8%E5%9E%82%E7%9B%B4%E7%BA%BF%E6%88%96%E6%B0%B4%E5%B9%B3%E7%BA%BF%E4%BB%A3%E6%9B%BF%E5%8D%81%E5%AD%97%E7%BA%BF.png)
我遇到了这个很棒的论文,线性代数的类型化:一种面向双产品的方法由 Hugo Daniel Macedo 和 José N. Oliveira 编写,他们使用下面突出显示的这个漂亮的符号来表示 juunc 和 split 组合器。有人碰巧知道执行此操作的命令或程序包吗?
谢谢你!
编辑:遗憾的是,ABC 编写的代码似乎对我来说不起作用(我正在使用 XeLaTeX,这可能是问题所在?)
答案1
对此有三种可能的策略。我不推荐本文作者的做法(我担心他们的代码不是值得效仿的模型),即\usepackage{MnSymbol}
,因为这会改变全部符号与被认为与 Minion 相伴的形状。
一种策略是使用 的缩放版本\ominus
。另一种策略是使用picture
模式。我将描述如何正确导入符号。
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\newcommand{\bigominus}{\DOTSB\bigominusop\slimits@}
\newcommand{\bigovert}{\DOTSB\bigovertop\slimits@}
\makeatother
\DeclareFontFamily{U}{MnSymbolF}{}
\DeclareFontShape{U}{MnSymbolF}{m}{n}{
<-6> s*[1.3] MnSymbolF5
<6-7> s*[1.3] MnSymbolF6
<7-8> s*[1.3] MnSymbolF7
<8-9> s*[1.3] MnSymbolF8
<9-10> s*[1.3] MnSymbolF9
<10-12> s*[1.3] MnSymbolF10
<12-> s*[1.3] MnSymbolF12}{}
\DeclareFontShape{U}{MnSymbolF}{b}{n}{
<-6> s*[1.3] MnSymbolF-Bold5
<6-7> s*[1.3] MnSymbolF-Bold6
<7-8> s*[1.3] MnSymbolF-Bold7
<8-9> s*[1.3] MnSymbolF-Bold8
<9-10> s*[1.3] MnSymbolF-Bold9
<10-12> s*[1.3] MnSymbolF-Bold10
<12-> s*[1.3] MnSymbolF-Bold12}{}
\DeclareSymbolFont{MNsymbols}{U}{MnSymbolF}{m}{n}
\SetSymbolFont{MNsymbols}{bold}{U}{MnSymbolF}{b}{n}
\DeclareMathSymbol{\tbigominusop}{\mathop}{MNsymbols}{"36}
\DeclareMathSymbol{\dbigominusop}{\mathop}{MNsymbols}{"37}
\DeclareMathSymbol{\tbigovertop}{\mathop}{MNsymbols}{"38}
\DeclareMathSymbol{\dbigovertop}{\mathop}{MNsymbols}{"39}
\newcommand{\bigominusop}{%
\mathop{\mathchoice{\dbigominusop}{\tbigominusop}{\tbigominusop}{\tbigominusop}}%
}
\newcommand{\bigovertop}{%
\mathop{\mathchoice{\dbigovertop}{\tbigovertop}{\tbigovertop}{\tbigovertop}}%
}
\makeatletter
\newcommand{\cvdots}{%
\vcenter{%
\baselineskip 4\p@
\lineskiplimit \z@
\kern 1\p@
\hbox{.}\hbox{.}\hbox{.}
\kern 1\p@
}%
}
\makeatother
\begin{document}
\[
\sum\bigoplus\bigovert\bigominus
\textstyle
\sum\bigoplus\bigovert\bigominus
\]
\begin{align*}
\left[\begin{array}{c|c|c} A_1 & \dots & A_p \end{array}\right]
&=\bigovert_{1\le j\le p} A_j = \sum_{j=1}^p A_j\cdot \pi_j
\\
\left[\begin{array}{@{\quad}c@{\quad}}
A_1 \\ \hline \cvdots \\ \hline A_m
\end{array}\right]
&=\bigominus_{1\le j\le m} A_j = \sum_{j=1}^m i_j\cdot A_j
\end{align*}
\end{document}
我担心猜测导入符号的代码需要一些工作经验。
答案2
评论太长了。这是一个可能的解决方案。
\documentclass{article}
\usepackage{amsmath}
\usepackage{scalerel}
\usepackage{stackengine}
\DeclareMathOperator*{\HoriC}{\scalerel*{\stackinset{c}{}{c}{}{\rotatebox{90}{$\vert$}}{\text{\textbigcircle}}}{\ensuremath{\sum}}}
\DeclareMathOperator*{\VertC}{\scalerel*{\stackinset{c}{}{c}{}{$\vert$}{\text{\textbigcircle}}}{\ensuremath{\sum}}}
\begin{document}
\[ \HoriC_{1\le i\le p}A_i \qquad A_{\HoriC_{1\le j\le p}A_j}\]
\[ \VertC_{1\le i\le p}A_i \qquad A_{\VertC_{1\le j\le p}A_j}\]
\end{document}