\oplus 和 \bigoplus 用垂直线或水平线代替十字线

\oplus 和 \bigoplus 用垂直线或水平线代替十字线

我遇到了这个很棒的论文线性代数的类型化:一种面向双产品的方法由 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}

在此处输入图片描述

相关内容