3

I came across this great paper, Typing linear algebra: A biproduct-oriented approach by Hugo Daniel Macedo and José N. Oliveira, where they use this nice notation highlighted below for junc and split combinators. Does anyone happen to know of a command or package to do this?

enter image description here

Thank you!

Edit: Sadly the code ABC wrote doesn't seem to work for me (I am using XeLaTeX, which might be the issue?)

enter image description here

4
  • @ABC how do I make this symbol though? I have tried looking for a command for it, and can't find one.
    – ಠ_ಠ
    Nov 25, 2021 at 4:01
  • 1
    You can download the source from arXiv, then you'll see that they are \bigovert and \bigominus from the package MnSymbol.
    – campa
    Nov 25, 2021 at 8:35
  • Ah cool thank you! I had no idea I could do that.
    – ಠ_ಠ
    Nov 25, 2021 at 8:37

2 Answers 2

4

There are three possible strategies for this. I don't recommend what the authors of the paper do (and I'm afraid that their code is not a model to follow), namely \usepackage{MnSymbol}, because this changes all symbols to shapes that are thought to accompany Minion.

One strategy is to use a scaled version of \ominus. Another is to use picture mode. I'll describe instead how to properly import the symbols.

\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}

enter image description here

I'm afraid that guessing the code for importing the symbols requires some experience in the job.

6

Too long for a comment. Here is a possible solution.

\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}

enter image description here

4

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .