%\iffalse meta-comment
% !Mode:: "TeX:DTX:UK"
% !DTXversion:: "2.5a"
%
% Copyright (C) 2008-2015 by Denis Ryabov <dryabov@yandex.ru>
% ---------------------------------------------------------------------------
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
% The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status `maintained'.
%
% The Current Maintainer of this work is Denis Ryabov.
%
% This work consists of the files rmathbr.dtx and rmathbr.ins
% and the derived filebase rmathbr.sty.
%
% \fi
%
% \iffalse
%<*driver>
\ProvidesFile{rmathbr.dtx}
%</driver>
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{rmathbr}
%<*package>
    [2015/06/23 1.0.2 Repeating of math operator at the broken line and the new line in inline equations]
%</package>
%
%<*driver>
\documentclass[a4paper]{ltxdoc}
\usepackage[colorlinks,
            bookmarks,
            pdfstartview=FitH,
            pdfpagelayout=OneColumn,
            pdfauthor={Denis Ryabov},
            pdftitle={rmathbr : Repeating of math operator at the broken line and the new line in inline equations}]{hyperref}
\usepackage{enumitem}
\usepackage{multicol}
\usepackage{rmathbr}
\setlist{nosep}
\pagestyle{headings}
\sloppy
\clubpenalty=10000
\widowpenalty=10000

\begin{document}
  \DocInput{rmathbr.dtx}
\end{document}
%</driver>
% \fi
%
% \CheckSum{3299}
%
% \CharacterTable
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
%
%
% \providecommand*{\url}{\texttt}
% \GetFileInfo{rmathbr.dtx}
% \title{The \textsf{rmathbr} package}
% \author{Denis Ryabov \\ \url{dryabov@yandex.ru}}
% \date{\fileversion~from \filedate}
%
% \maketitle
%
% \tableofcontents
%
% \section{Introduction}
%
% Repeating of math operator at the broken line and the new line in inline
% equations is used in Cyrillic mathematical typography (Russian for example),
% but unfortunately \LaTeX{} doesn't provide such an option. There was an attempt
% to do it many years ago [see M.I.~Grinchuk ``TeX and Russian Traditions of
% Typesetting'', TUGboat 17(4) (1996) 385], but there was no ready to use package.
%
% This package extends ideas described in ``TeX and Russian Traditions of
% Typesetting'' and supports most of \LaTeX{} mathematical packages (some known
% issues are listed in ``Known issues'' section below).
%
%
% \section{Usage}
%
% Just include the package using \verb|\usepackage{rmathbr}| command.
%
% \begin{multicols}{5}
% \noindent $(a+b)^2=a^2+2ab+b^2$, $a^2-b^2=(a+b)\*(a-b)$,
% $a^3\pm b^3=(a\pm b)\*(a^2\mp ab+b^2)$, $(1-x)^{-2}=1+2x+3x^2+\ldots$,
% $\sin^2\alpha+\cos^2\alpha=1$, $\int x\sin ax\,dx=a^{-2}(\sin ax-ax\cos ax)$,
% $t_1t_2\cos\theta=\vec t_1\cdot\vec t_2$, $x=12\cdott 3\cdott 10^3$.
% \end{multicols}
%
% It's recommended to load \textsf{rmathbr} after other packages, because of \textsf{rmathbr} has
% special support of many math-related packages: amsfonts, amssymb, amstex,
% boisik, euler, eulervm, fourier, icomma, latexsym, lucbmath, lucidabr, lucmin,
% lucmtime, luctime, mathbbol, mdwmath, program, sbbm, stmaryrd, wasysym.
%
% Please, submit any found bugs to \url{https://github.com/dryabov/rmathbr/issues}.
%
% \section{Options}
%
% The \textsf{rmathbr} package supports following options:
% \begin{itemize}
% \item \verb|mathactivechars| (default): assign mathactive (12) category to
%       \verb|^| and \verb|_| characters.
% \item \verb|activechars|: assign active (13) category to \verb|^| and
%       \verb|_| characters.
% \item \verb|noactivechars|: assign default categories to \verb|^| and
%       \verb|_| characters (7 and 8, correspondingly).
% \end{itemize}
%
% In some cases it might be necessary to change default option for compatibility
% with other packages.
%
%
% \section{Macros}
%
% \DescribeMacro{\*}
%
% Macro \verb|\*| is used to mark multiplication point that is invisible and
% changed to $\times$ at break only. E.g. \verb|(a+b)\*(a-b)|.
%
% \DescribeMacro{\cdott}
%
% This command displays \verb|\cdot| ($\cdot$) that is changed to
% \verb|\times| ($\times$) at break.
%
% \DescribeMacro{\nobr}
%
% This command is used to prevent break expression on the following math
% operator. E.g. \verb|a\nobr-b|.
%
% \DescribeMacro{\SetBreakableBin}
%
% Declares breakable binary operator, e.g. \verb|\SetBreakableBin{\MyPlus}|.
%
% \DescribeMacro{\SetBreakableRel}
%
% Declares breakable relation operator, e.g. \verb|\SetBreakableRel{\MyEqual}|.
%
% \DescribeMacro{\SetBreakableInner}
%
% Declares breakable ``inner'' expression, e.g. \verb|\SetBreakableInner{\ldots}|.
%
% \DescribeMacro{\SetOpenBracket}
%
% Declares opening bracket (\textsf{rmathbr} disables break directly after brackets),
% e.g. \verb|\SetOpenBracket{\MyOpenBracket}|.
%
% \DescribeMacro{\SetMathOperator}
%
% Declares math operator (\textsf{rmathbr} disables break directly after operators),
% e.g. \verb|\SetMathOperator{\MySum}|.
%
% \DescribeMacro{\SetPunctuation}
%
% Declares punctuation command (\textsf{rmathbr} disables break directly after punctuation),
% e.g. \verb|\SetPunctuation{\MyColon}|.
%
%
% \section{Known issues}
% \begin{itemize}
%   \item 'xy' package: should be loaded after 'rmathbr' to work properly
%   \item 'breqn' package: cannot work together with 'rmathbr'
%  \end{itemize}
%
% \section{Changelog}
%
% \subsection*{1.0.2 (23-June-2015)}
% \begin{itemize}
%   \item fix issue with expanding of math operators
% \end{itemize}
% \subsection*{1.0.1 (14-June-2015)}
% \begin{itemize}
%   \item fix \verb|\cdott|-related issues (thanks to Bruno Le Floch)
%   \item fix some \verb|\SetBreakableRel| and \verb|\SetBreakableBin| declarations
%   \item fix mathematical operators with \verb|\limits| or \verb|\nolimits|
% \end{itemize}
% \subsection*{1.0 (02-June-2015)}
% \begin{itemize}
%   \item fix break after math operators (\verb|\sum|, \verb|\int|, etc.)
%   \item add documentation
% \end{itemize}
% \subsection*{0.99 (15-November-2010)}
% \begin{itemize}
%   \item don't hyphenate trailing mathsign (e.g.\ in \verb|$2+2=$|)
%   \item don't change redefined symbols (\verb|\le|, \verb|\ge|, \verb|\to|, etc.)
% \end{itemize}
% \subsection*{0.98 (31-January-2010)}
% \begin{itemize}
%   \item fix hyphenation on~\verb|:=|
%   \item correct work with 'icomma' package and option 'icomma' of 'eulervm' package
%   \item correct work with 'program' package
%   \item symbols have been added from boisik, euler, fourier, lucbmath, lucidabr,
%    lucmin, lucmtime, luctime, mathbbol, mdwmath, sbbm, stmaryrd and wasysym packages.
%   \item remove shrinking of space in math (breaked url package)
%   \item don't hyphenate after punctuation ('\verb|,|', '\verb|;|', '\verb|\colon|' etc.)
%   \item create broken commands as robust ones
%   \item some fixes of redeclaring of AMS commands
%   \item commented hyphenation on \verb|\ldots| and \verb|\cdots|, as \TeX doesn't break here
% \end{itemize}
% \subsection*{0.97 (08-October-2009)}
% \begin{itemize}
%   \item fix problem with operators like '\verb|+^\leq|'
% \end{itemize}
% \subsection*{0.96 (29-September-2009)}
% \begin{itemize}
%   \item fix problem with '\verb|-|' in AMS's \verb|\DeclareMathOperator|
%   \item fix problem with \verb|\ldots| in text mode
% \end{itemize}
% \subsection*{0.95 (28-September-2009)}
% \begin{itemize}
%   \item fix problem with sub/sup-scripts after relations
%   \item fix hyphenation on \verb|\ldots|
%   \item AMS/Lucida left brackets (\verb|\lvert|, \verb|\lVert|, \verb|\ulcorner|, \verb|\llcorner|) support
%   \item mathbbol.sty left bracket (\verb|\Lbrack|) support
%   \item huge code refactoring
% \end{itemize}
% \subsection*{0.91 (21-September-2009)}
% \begin{itemize}
%   \item fix problem with problem with space after brackets
% \end{itemize}
% \subsection*{0.90 (20-September-2009)}
% \begin{itemize}
%   \item first public release
% \end{itemize}
%
%
% \StopEventually{}
%
% \section{Code}
%
% \iffalse
%<*package>
% \fi
%
% \subsection*{Initialization}
%
%    \begin{macrocode}
\RequirePackage{ifetex}
\RequirePackage{mathstyle}
%    \end{macrocode}
%    \begin{macrocode}
\@ifpackageloaded{breqn}%
{
  \PackageError{rmathbr}{'rmathbr' package cannot be used together with 'breqn' package!}{}%
}{}
%    \end{macrocode}
%    \begin{macrocode}
\@ifpackageloaded{xy}%
{
  \PackageError{rmathbr}{'rmathbr' package should be loaded before 'xy' package!}{}%
}{}
%    \end{macrocode}
%
% \subsection*{Interface}
%
% \begin{macro}{\nobr}
% Makes next symbol nonbreakable.
%    \begin{macrocode}
\def\nobr{\penalty\relpenalty}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\SetBreakableBin}
% Makes breakable binary operation.
%    \begin{macrocode}
\def\SetBreakableBin#1{\rmathbr@setbreakable{#1}{\brokenbin}}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\SetBreakableRel}
% Makes breakable relation sign.
%    \begin{macrocode}
\def\SetBreakableRel#1{\rmathbr@setbreakable{#1}{\brokenrel}}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\SetBreakableInner}
% Makes breakable inner (like \verb|\ldots|).
%    \begin{macrocode}
\def\SetBreakableInner#1{\rmathbr@setbreakable{#1}{\brokeninner}}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\SetOpenBracket}
% Disables breaks after open bracket.
%    \begin{macrocode}
\def\SetOpenBracket#1{\rmathbr@nobrafter{#1}}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\SetMathOperator}
% Disables breaks after math operator.
%    \begin{macrocode}
\def\SetMathOperator#1{\rmathbr@setbreakable{#1}{\rmathbr@mathop}}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\SetPunctuation}
% Disables breaks after punctuation sign.
%    \begin{macrocode}
\def\SetPunctuation#1{\rmathbr@nobrafter{#1}}
%    \end{macrocode}
% \end{macro}
%
% \noindent Makes argument as breakable binary operation.
%    \begin{macrocode}
\DeclareRobustCommand{\brokenbin}[1]{\rmathbr@brokenbin{#1}}
%    \end{macrocode}
% Makes argument as breakable relation sign.
%    \begin{macrocode}
\DeclareRobustCommand{\brokenrel}[1]{\rmathbr@brokenrel{#1}}
%    \end{macrocode}
% Makes argument as breakable inner.
%    \begin{macrocode}
\DeclareRobustCommand{\brokeninner}[1]{\rmathbr@brokeninner{#1}}
%    \end{macrocode}
%
% \subsection*{Implementation}
%
% Save default penalty to \verb|\exhyphenpenalty| (as \verb|\exhyphenpenalty| will be actual penalty for math breaks).
%    \begin{macrocode}
\exhyphenpenalty=\relpenalty
%    \end{macrocode}
% Disable default breaks.
%    \begin{macrocode}
\relpenalty=13131
\binoppenalty=14141
%    \end{macrocode}
% First symbol in equation is nonbreakable.
%    \begin{macrocode}
\expandafter\everymath\expandafter{\the\everymath\nobr }
%    \end{macrocode}
% Setup sub- and superscripts.
%    \begin{macrocode}
\ifnum\catcode`\^=12%
  \begingroup%
    \catcode`\^\active
    \global\let\rmathbr@superscript@text=^%
  \endgroup%
\else%
  \let\rmathbr@superscript@text=^%
\fi
\ifnum\catcode`\_=12%
  \begingroup%
    \catcode`\_\active
    \global\let\rmathbr@subscript@text=_%
  \endgroup%
\else%
  \let\rmathbr@subscript@text=_%
\fi
%    \end{macrocode}
%
% \begin{macro}{\rmathbr@superscript}
%    \begin{macrocode}
\def\rmathbr@superscript#1{\rmathbr@superscript@text{{#1}}}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\rmathbr@subscript}
%    \begin{macrocode}
\def\rmathbr@subscript#1{\rmathbr@subscript@text{{#1}}}
%    \end{macrocode}
% \end{macro}
%
%    \begin{macrocode}
\begingroup
  \catcode`\^\active\gdef^{\rmathbr@superscript}
  \catcode`\_\active\gdef_{\rmathbr@subscript}
\endgroup
%    \end{macrocode}
% Save existing commands.
%    \begin{macrocode}
\begingroup\catcode`\_=13\catcode`\^=13\lowercase{\endgroup
\AtBeginDocument%
{%
  \ifnum\catcode`\^=13
    \let\rmathbr@superscript@text@active=^
    \DeclareRobustCommand{\rmathbrsuperscript}[1]{\rmathbr@superscript@text@active{{#1}}}
  \else
    \DeclareRobustCommand{\rmathbrsuperscript}[1]{\rmathbr@superscript@text{{#1}}}
  \fi
  \def^{\rmathbrsuperscript}
  \def\rmathbr@superscript@macro{\rmathbrsuperscript}
  \ifnum\catcode`\_=13
    \let\rmathbr@subscript@text@active=_
    \DeclareRobustCommand{\rmathbrsubscript}[1]{\rmathbr@subscript@text@active{{#1}}}
  \else
    \DeclareRobustCommand{\rmathbrsubscript}[1]{\rmathbr@subscript@text{{#1}}}
  \fi
  \def_{\rmathbrsubscript}
  \def\rmathbr@subscript@macro{\rmathbrsubscript}
}}
%    \end{macrocode}
% Process options.
%    \begin{macrocode}
\DeclareOption{mathactivechars}%
{
  \catcode`\^=12\catcode`\_=12
}
\DeclareOption{activechars}%
{
  \catcode`\^\active\catcode`\_\active
}
\DeclareOption{noactivechars}%
{
  \catcode`\^=7\catcode`\_=8
}
\ExecuteOptions{mathactivechars}%
\ProcessOptions
%    \end{macrocode}
% Basic math.
%    \begin{macrocode}
\begingroup
  \catcode`\=\active
  \ifnum\mathcode`\=<32768
    \xdef={\noexpand\brokenbin{\mathchar\number\mathcode`\=}}
  \else
    \gdef={\brokenbin{\mathchar12349}}
  \fi
\endgroup
\begingroup
  \catcode`\+\active
  \ifnum\mathcode`\+<32768
    \xdef+{\noexpand\brokenbin{\mathchar\number\mathcode`\+}}
  \else
    \gdef+{\brokenbin{\mathchar8235}}
  \fi
\endgroup
\begingroup
  \catcode`\-\active
  \ifnum\mathcode`\-<32768
    \xdef-{\noexpand\brokenbin{\mathchar\number\mathcode`\-}}
  \else
    \gdef-{\brokenbin{\mathchar8704}}
  \fi
\endgroup
\begingroup
  \catcode`\*\active
  \ifnum\mathcode`\*<32768
    \xdef*{\noexpand\brokenbin{\mathchar\number\mathcode`\*}}
  \else
    \gdef*{\brokenbin{\mathchar8707}}
  \fi
\endgroup
\begingroup
  \ifnum\mathcode`\<<32768
    \catcode`\<\active
    \xdef<{\noexpand\brokenbin{\mathchar\number\mathcode`\<}}
  \else
    \catcode`\<\active
    \gdef<{\brokenbin{\mathchar12604}}
  \fi
\endgroup
\begingroup
  \catcode`\>\active
  \ifnum\mathcode`\><32768
    \xdef>{\noexpand\brokenbin{\mathchar\number\mathcode`\>}}
  \else
    \gdef>{\brokenbin{\mathchar12606}}
  \fi
\endgroup
\begingroup
  \catcode`\(\active
  \xdef({\mathopen\delimiter\number\delcode`\(\noexpand\nobr }
\endgroup
\begingroup
  \catcode`\[\active %\]
  \xdef[{\mathopen\delimiter\number\delcode`\[\noexpand\nobr }
\endgroup
\AtBeginDocument%
{
  \mathcode`\==32768% "8000
  \mathcode`\<=32768
  \mathcode`\>=32768
  \mathcode`\+=32768
  \mathcode`\-=32768
  \mathcode`\*=32768
  \mathcode`\_=32768
  \mathcode`\^=32768
  \mathcode`\(=32768
  \mathcode`\[=32768 %\]
  \mathcode`\:=32768
  \mathcode`\,=32768
  \mathcode`\;=32768
  \let\rmathbr@orig@resetMathstrut=\resetMathstrut@
  \begingroup
    \gdef\resetMathstrut@
    {
      \mathcode`\(=16424% "4028
      \rmathbr@orig@resetMathstrut
      \mathcode`\(=32768% "8000
    }
    \gdef\newmcodes@
    {
      \mathcode`\'=39
      \mathcode`\*=42
      \mathcode`\.=24890% "613A
      \mathcode`\-=45
      \mathcode`\/=47
      \mathcode`\:=24634% "603A
      \relax
    }
  \endgroup%
}
\begingroup
  \catcode`\:\active \gdef:{\futurelet\rmathbr@let@token\rmathbr@colontest}
\endgroup
%    \end{macrocode}
%
% \begin{macro}{\rmathbr@colontest}
% Check for \verb|:=|.
%    \begin{macrocode}
\def\rmathbr@colontest%
{
  \ifx=\rmathbr@let@token
    \expandafter\rmathbr@letsign
  \else
    \expandafter\rmathbr@colon
  \fi
}%
\ifnum\mathcode`\:<32768
  \edef\rmathbr@letsign#1{\noexpand\brokenrel{\mathchar\number\mathcode`\:\mathchar\number\mathcode`\=}}
  \edef\rmathbr@colon{\noexpand\brokenrel{\mathchar\number\mathcode`\:}}
\else
  \def\rmathbr@letsign#1{\brokenrel{\mathchar12346\mathchar12349}}
  \def\rmathbr@colon{\brokenrel{\mathchar12346}}
\fi
%    \end{macrocode}
% \end{macro}
%
% Check for 'icomma' package and 'eulervm' package with 'icomma' option.
%    \begin{macrocode}
\begingroup
  \catcode`\,\active
  \@ifpackageloaded{icomma}% check for 'icomma' package
  {
    \expandafter\gdef\expandafter\sm@rtcomma\expandafter{\sm@rtcomma\nobr}
  }{
    \ifx\domathcomma\undefined% check for 'eulervm' package with 'icomma' option
      \ifnum\mathcode`\,<32768
        \xdef,{\mathpunct\mathchar\number\mathcode`\,\noexpand\nobr }
      \else
        \gdef,{\mathpunct\mathchar24891\nobr }
      \fi
    \else
      \expandafter\gdef\expandafter\domathcomma\expandafter{\domathcomma\nobr}
    \fi
  }
\endgroup
%    \end{macrocode}
%
% Check for 'program' package.
%    \begin{macrocode}
\begingroup
  \catcode`\;\active
  \@ifpackageloaded{program}%
  {
    \gdef;{\ifmmode\semicolon\;\nobr\else\@semicolon\fi}
  }{
    \ifnum\mathcode`\;<32768
      \xdef;{\mathpunct\mathchar\number\mathcode`\;\noexpand\nobr }
    \else
      \gdef;{\mathpunct\mathchar24635\nobr }
    \fi
  }
\endgroup
%    \end{macrocode}
%
% \begin{macro}{\rmathbr@ReDeclareRobustCommand}
%    \begin{macrocode}
\def\rmathbr@ReDeclareRobustCommand#1#2% Command without arguments
{
  \begingroup
    \ifx#1\undefined
    \else
      \edef\var@orig@I{rmathbr@orig@\expandafter\@gobble\string#1}
      \edef\var@Ispace{\expandafter\@gobble\string#1 }
      \expandafter\ifx\csname\var@orig@I\endcsname\relax
        \expandafter\ifx\csname\var@Ispace\endcsname\relax
          \global\expandafter\let\csname\var@orig@I\endcsname#1
        \else
          \global\expandafter\let\csname\var@orig@I\expandafter\endcsname\csname\var@Ispace\endcsname
        \fi
      \fi
      \expandafter\gdef\csname\var@Ispace\endcsname{#2}% no arguments
      \xdef#1{\noexpand\protect\expandafter\noexpand\csname\var@Ispace\endcsname}
    \fi
  \endgroup%
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\rmathbr@ReDeclareRobustCommandI}
%    \begin{macrocode}
\def\rmathbr@ReDeclareRobustCommandI#1#2% Command with one argument
{
  \begingroup
    \ifx#1\undefined
    \else
      \edef\var@orig@I{rmathbr@orig@\expandafter\@gobble\string#1}
      \edef\var@Ispace{\expandafter\@gobble\string#1 }
      \expandafter\ifx\csname\var@orig@I\endcsname\relax
        \expandafter\ifx\csname\var@Ispace\endcsname\relax
          \global\expandafter\let\csname\var@orig@I\endcsname#1
        \else
          \global\expandafter\let\csname\var@orig@I\expandafter\endcsname\csname\var@Ispace\endcsname
        \fi
      \fi
      \expandafter\gdef\csname\var@Ispace\endcsname##1{#2}% one argument
      \xdef#1{\noexpand\protect\expandafter\noexpand\csname\var@Ispace\endcsname}
    \fi
  \endgroup%
}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\rmathbr@setbrokens}
%    \begin{macrocode}
\def\rmathbr@setbrokens%
{
  \rmathbr@ReDeclareRobustCommandI{\brokenbin}{\rmathbr@brokenbin{##1}}
  \rmathbr@ReDeclareRobustCommandI{\brokenrel}{\rmathbr@brokenrel{##1}}
  \rmathbr@ReDeclareRobustCommandI{\brokeninner}{\rmathbr@brokeninner{##1}}%
}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\rmathbr@unsetbrokens}
%    \begin{macrocode}
\def\rmathbr@unsetbrokens%
{
  \def\brokenbin##1{##1}
  \def\brokenrel##1{##1}
  \def\brokeninner##1{##1}%
}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\rmathbr@brokenbin}
%    \begin{macrocode}
\def\rmathbr@brokenbin#1%
{
  \relax
  \def\rmathbr@arg{#1}
  \def\rmathbr@this{\rmathbr@brokenbin}
  \def\rmathbr@output{\rmathbr@@brokenbin}
  \futurelet\rmathbr@let@token\rmathbr@brokenop%
}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\rmathbr@brokenrel}
%    \begin{macrocode}
\def\rmathbr@brokenrel#1%
{
  \relax
  \def\rmathbr@arg{#1}
  \def\rmathbr@this{\rmathbr@brokenrel}
  \def\rmathbr@output{\rmathbr@@brokenrel}
  \futurelet\rmathbr@let@token\rmathbr@brokenop%
}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\rmathbr@brokeninner}
%    \begin{macrocode}
\def\rmathbr@brokeninner#1%
{
  \relax
  \def\rmathbr@arg{#1}
  \def\rmathbr@this{\rmathbr@brokeninner}
  \def\rmathbr@output{\rmathbr@@brokeninner}
  \futurelet\rmathbr@let@token\rmathbr@brokenop%
}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\rmathbr@mathop}
%    \begin{macrocode}
\def\rmathbr@mathop#1%
{
  \relax
  \def\rmathbr@arg{#1}
  \def\rmathbr@this{\rmathbr@mathop}
  \def\rmathbr@output{\rmathbr@@mathop}
  \futurelet\rmathbr@let@token\rmathbr@brokenop%
}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\rmathbr@@brokenbin}
%    \begin{macrocode}
\def\rmathbr@@brokenbin#1%
{
  \ifnum\lastpenalty=\relpenalty
    \mathbin{#1}
  \else
    \mathbin{#1}
    \ifx$\rmathbr@let@token
    \else
      \rmathbr@selector{#1}
    \fi
  \fi
  \rmathbr@setbrokens
  \penalty\binoppenalty %
}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\rmathbr@@brokenrel}
%    \begin{macrocode}
\def\rmathbr@@brokenrel#1%
{
  \ifnum\lastpenalty=\relpenalty
    \mathrel{#1}
  \else
    \mathrel{#1}
    \ifx$\rmathbr@let@token
    \else
      \rmathbr@selector{#1}
    \fi
  \fi
  \rmathbr@setbrokens
  \penalty\relpenalty %
}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\rmathbr@@brokeninner}
%    \begin{macrocode}
\def\rmathbr@@brokeninner#1%
{
  \ifnum\lastpenalty=\relpenalty
    \mathinner{#1}
  \else
    \mathinner{#1}
    \ifx$\rmathbr@let@token
    \else
      \rmathbr@selector{#1}
    \fi
  \fi
  \rmathbr@setbrokens
  \penalty\relpenalty %
}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\rmathbr@@mathop}
%    \begin{macrocode}
\def\rmathbr@@mathop#1%
{
  \rmathbr@setbrokens
  #1\nobr %
}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\rmathbr@selector}
%    \begin{macrocode}
\def\rmathbr@selector#1%
{
  \mathchoice
    {\discretionary{}{\hbox{$\m@th\displaystyle#1$}}{}}
    {\discretionary{}{\hbox{$\m@th\textstyle#1$}}{}}
    {\discretionary{}{\hbox{$\m@th\scriptstyle#1$}}{}}
    {\discretionary{}{\hbox{$\m@th\scriptscriptstyle#1$}}{}}%
}
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
\begingroup\catcode`\_=12\catcode`\^=12
%    \end{macrocode}
%
% \begin{macro}{\rmathbr@brokenop}
%    \begin{macrocode}
\gdef\rmathbr@brokenop%
{
  \ifmmode
    \rmathbr@unsetbrokens
    \ifx\rmathbr@subscript@macro\rmathbr@let@token
      \let\@command=\rmathbr@brokenglue
    \else\ifx_\rmathbr@let@token
      \let\@command=\rmathbr@brokenglue
    \else\ifx\rmathbr@superscript@macro\rmathbr@let@token
      \let\@command=\rmathbr@brokenglue
    \else\ifx^\rmathbr@let@token
      \let\@command=\rmathbr@brokenglue
    \else\ifx\limits\rmathbr@let@token
      \let\@command=\rmathbr@brokenskip
    \else\ifx\nolimits\rmathbr@let@token
      \let\@command=\rmathbr@brokenskip
    \else\ifx\relax\rmathbr@let@token
      \let\@command=\rmathbr@brokenskip
    \else
      \let\@command=\rmathbr@output
    \fi\fi\fi\fi\fi\fi\fi
  \else
    \let\@command=\relax
  \fi
  \expandafter\@command\expandafter{\rmathbr@arg}%
}
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
\endgroup
%    \end{macrocode}
%
% \begin{macro}{\rmathbr@brokenglue}
%    \begin{macrocode}
\def\rmathbr@brokenglue#1#2#3%
{
  \def\rmathbr@temp{#1#2{#3}}
  \expandafter\rmathbr@this\expandafter{\rmathbr@temp}%
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\rmathbr@brokenskip}
%    \begin{macrocode}
\def\rmathbr@brokenskip#1#2%
{
  \def\rmathbr@temp{#1#2}
  \expandafter\rmathbr@this\expandafter{\rmathbr@temp}%
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\rmathbr@setbreakable}
%    \begin{macrocode}
\def\rmathbr@setbreakable#1#2%
{
  \begingroup
    \ifx#1\undefined
    \else
      \edef\rmathbr@orig{rmathbr@orig@\expandafter\@gobble\string#1}
      \expandafter\ifx\csname\rmathbr@orig\endcsname\relax
        \expandafter\rmathbr@ReDeclareRobustCommand\expandafter#1\expandafter{\expandafter#2\expandafter{\csname\rmathbr@orig\endcsname}}
      \fi
    \fi
  \endgroup%
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\rmathbr@nobrafter}
%    \begin{macrocode}
\def\rmathbr@nobrafter#1%
{
  \begingroup
    \ifx#1\undefined
    \else
      \edef\rmathbr@orig{rmathbr@orig@\expandafter\@gobble\string#1}
      \expandafter\ifx\csname\rmathbr@orig\endcsname\relax
        \expandafter\rmathbr@ReDeclareRobustCommand\expandafter#1\expandafter{\csname\rmathbr@orig\endcsname\nobr}
      \fi
    \fi
  \endgroup%
}
%    \end{macrocode}
% \end{macro}
%
% \subsection*{Redeclaration of math signs}
%
% Redeclare \verb|\not|.
%    \begin{macrocode}
\rmathbr@ReDeclareRobustCommandI{\not}%
{
  \begingroup
    \edef\rmathbr@orig{rmathbr@orig@\expandafter\@gobble\string#1}
    \expandafter\ifx\csname\rmathbr@orig\endcsname\relax
      \brokenrel{\rmathbr@orig@not#1}
    \else
      \expandafter\brokenrel\expandafter{\expandafter\rmathbr@orig@not\csname\rmathbr@orig\endcsname}
    \fi
  \endgroup%
}
%    \end{macrocode}
% Open brackets.
%    \begin{macrocode}
\rmathbr@ReDeclareRobustCommandI{\bigl}{\mathopen\big#1\nobr}
\rmathbr@ReDeclareRobustCommandI{\Bigl}{\mathopen\Big#1\nobr}
\rmathbr@ReDeclareRobustCommandI{\biggl}{\mathopen\bigg#1\nobr}
\rmathbr@ReDeclareRobustCommandI{\Biggl}{\mathopen\Bigg#1\nobr}
\SetOpenBracket{\lmoustache}
\SetOpenBracket{\langle}
\SetOpenBracket{\lbrace}
\SetOpenBracket{\lceil}
\SetOpenBracket{\lfloor}
\SetOpenBracket{\lgroup}
\SetOpenBracket{\lvert}
\SetOpenBracket{\lVert}
\SetOpenBracket{\ulcorner}
\SetOpenBracket{\llcorner}
\SetOpenBracket{\Lbrack}
%    \end{macrocode}
% Math operators.
%    \begin{macrocode}
\SetMathOperator{\coprod}
\SetMathOperator{\bigvee}
\SetMathOperator{\bigwedge}
\SetMathOperator{\biguplus}
\SetMathOperator{\bigcap}
\SetMathOperator{\bigcup}
\SetMathOperator{\int}
\SetMathOperator{\prod}
\SetMathOperator{\sum}
\SetMathOperator{\bigotimes}
\SetMathOperator{\bigoplus}
\SetMathOperator{\bigodot}
\SetMathOperator{\oint}
\SetMathOperator{\bigsqcup}
\SetMathOperator{\smallint}
%    \end{macrocode}
% Punctuations.
%    \begin{macrocode}
\SetPunctuation{\ldotp}
\SetPunctuation{\cdotp}
\SetPunctuation{\colon}
\SetPunctuation{\period}
%    \end{macrocode}
%
% Binary Operations.
%    \begin{macrocode}
\SetBreakableBin{\triangleleft}
\SetBreakableBin{\triangleright}
\SetBreakableBin{\bigtriangleup}
\SetBreakableBin{\bigtriangledown}
\SetBreakableBin{\wedge} \SetBreakableBin{\land}
\SetBreakableBin{\vee}   \SetBreakableBin{\lor}
\SetBreakableBin{\cap}
\SetBreakableBin{\cup}
\SetBreakableBin{\ddagger}
\SetBreakableBin{\dagger}
\SetBreakableBin{\sqcap}
\SetBreakableBin{\sqcup}
\SetBreakableBin{\uplus}
\SetBreakableBin{\amalg}
\SetBreakableBin{\diamond}
\SetBreakableBin{\bullet}
\SetBreakableBin{\wr}
\SetBreakableBin{\div}
\SetBreakableBin{\odot}
\SetBreakableBin{\oslash}
\SetBreakableBin{\otimes}
\SetBreakableBin{\ominus}
\SetBreakableBin{\oplus}
\SetBreakableBin{\mp}
\SetBreakableBin{\pm}
\SetBreakableBin{\circ}
\SetBreakableBin{\bigcirc}
\SetBreakableBin{\setminus}
\SetBreakableBin{\ast}
\SetBreakableBin{\star}
\SetBreakableBin{\times}
\SetBreakableBin{\cdot}
%    \end{macrocode}
%
% \begin{macro}{\cdott}
% \verb|\cdott| is \verb|\cdot| that is changed to \verb|\times| at break point.
%    \begin{macrocode}
\def\rmathbr@cdott{%
  %% inplace-expanded mathchoice from mathstyle.sty
  \mathchoice{%
    \mkern\medmuskip$%
    \discretionary{\the\textfont2\char2}{\the\textfont2\char2}{\the\textfont2\char1}%
    $\displaystyle\mkern\medmuskip%
  }{%
    \mkern\medmuskip$%
    \discretionary{\the\textfont2\char2}{\the\textfont2\char2}{\the\textfont2\char1}%
    $\textstyle\mkern\medmuskip%
  }{%
    $%
    \discretionary{\the\scriptfont2\char2}{\the\scriptfont2\char2}{\the\scriptfont2\char1}%
    $\scriptstyle%
  }{%
    $%
    \discretionary{\the\scriptscriptfont2\char2}{\the\scriptscriptfont2\char2}{\the\scriptscriptfont2\char1}%
    $\scriptscriptstyle%
  }
}
\def\cdott{%
  \ensuremath
  \ifetex
    \ifinner%
      \ifnum\currentgrouptype=15\relax
        \rmathbr@cdott
      \else
        \cdot
      \fi
    \else
      \cdot
    \fi
  \else
    \rmathbr@cdott
  \fi
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\*}
%    \begin{macrocode}
\def\*{\mathbin{}%
  \mathchoice{%
      \discretionary{\hbox{$\m@th\displaystyle\times$}}{\hbox{$\m@th\displaystyle\times$}}{}%
    }{%
      \discretionary{\hbox{$\m@th\textstyle\times$}}{\hbox{$\m@th\textstyle\times$}}{}%
    }{%
      \discretionary{\hbox{$\m@th\scriptstyle\times$}}{\hbox{$\m@th\scriptstyle\times$}}{}%
    }{%
      \discretionary{\hbox{$\m@th\scriptscriptstyle\times$}}{\hbox{$\m@th\scriptscriptstyle\times$}}{}%
    }%
  \penalty\binoppenalty%
}
%    \end{macrocode}
% \end{macro}
%
% Relations.
%    \begin{macrocode}
\SetBreakableRel{\propto}
\SetBreakableRel{\sqsubseteq}
\SetBreakableRel{\sqsupseteq}
\SetBreakableRel{\parallel}
\SetBreakableRel{\mid}
\SetBreakableRel{\dashv}
\SetBreakableRel{\vdash}
\SetBreakableRel{\leq} \SetBreakableRel{\le}
\SetBreakableRel{\geq} \SetBreakableRel{\ge}
\SetBreakableRel{\succ}
\SetBreakableRel{\prec}
\SetBreakableRel{\approx}
\SetBreakableRel{\succeq}
\SetBreakableRel{\preceq}
\SetBreakableRel{\supset}
\SetBreakableRel{\subset}
\SetBreakableRel{\supseteq}
\SetBreakableRel{\subseteq}
\SetBreakableRel{\in}
\SetBreakableRel{\ni} \SetBreakableRel{\owns}
\SetBreakableRel{\gg}
\SetBreakableRel{\ll}
\SetBreakableRel{\sim}
\SetBreakableRel{\simeq}
\SetBreakableRel{\perp}
\SetBreakableRel{\equiv}
\SetBreakableRel{\asymp}
\SetBreakableRel{\smile}
\SetBreakableRel{\frown}
\SetBreakableRel{\models}
\SetBreakableRel{\cong}
\SetBreakableRel{\notin}
\SetBreakableRel{\doteq}
\SetBreakableRel{\bowtie}
\SetBreakableRel{\neq} % Works well without \SetBreakableRel
\SetBreakableRel{\ne}  % Works well without \SetBreakableRel
%    \end{macrocode}
% Arrows.
%    \begin{macrocode}
\SetBreakableRel{\nearrow}
\SetBreakableRel{\searrow}
\SetBreakableRel{\nwarrow}
\SetBreakableRel{\swarrow}
\SetBreakableRel{\Leftrightarrow}
\SetBreakableRel{\Leftarrow}
\SetBreakableRel{\Rightarrow}
\SetBreakableRel{\leftrightarrow}
\SetBreakableRel{\leftarrow}  \SetBreakableRel{\gets}
\SetBreakableRel{\rightarrow} \SetBreakableRel{\to}
\SetBreakableRel{\leftharpoonup}
\SetBreakableRel{\leftharpoondown}
\SetBreakableRel{\rightharpoonup}
\SetBreakableRel{\rightharpoondown}
\SetBreakableRel{\longleftarrow}
\SetBreakableRel{\Longleftarrow}
\SetBreakableRel{\longrightarrow}
\SetBreakableRel{\Longrightarrow}
\SetBreakableRel{\longleftrightarrow}
\SetBreakableRel{\Longleftrightarrow}
\SetBreakableRel{\mapsto}
\SetBreakableRel{\longmapsto}
\SetBreakableRel{\hookleftarrow}
\SetBreakableRel{\hookrightarrow}
\SetBreakableRel{\rightleftharpoons}
%    \end{macrocode}
% From latexsym.
%    \begin{macrocode}
\SetBreakableBin{\lhd}
\SetBreakableBin{\unlhd}
\SetBreakableBin{\rhd}
\SetBreakableBin{\unrhd}
\SetBreakableRel{\Join}
\SetBreakableRel{\leadsto}
\SetBreakableRel{\sqsubset}
\SetBreakableRel{\sqsupset}
%    \end{macrocode}
% amsfonts
%    \begin{macrocode}
\@ifpackageloaded{amsfonts}% amsfonts
{
  \SetBreakableRel{\dashrightarrow} \SetBreakableRel{\dasharrow}
  \SetBreakableRel{\dashleftarrow}
  \SetBreakableRel{\vartriangleright}
  \SetBreakableRel{\vartriangleleft}
  \SetBreakableRel{\trianglerighteq}
  \SetBreakableRel{\trianglelefteq}
  \SetBreakableRel{\rightsquigarrow} \SetBreakableRel{\leadsto}
}{}
%    \end{macrocode}
% amssymb
%    \begin{macrocode}
\@ifpackageloaded{amssymb}% amssymb
{
  \SetBreakableBin{\boxdot}
  \SetBreakableBin{\boxplus}
  \SetBreakableBin{\boxtimes}
  \SetBreakableBin{\centerdot}
  \SetBreakableBin{\boxminus}
  \SetBreakableBin{\veebar}
  \SetBreakableBin{\barwedge}
  \SetBreakableBin{\doublebarwedge}
  \SetBreakableBin{\Cup} \SetBreakableBin{\doublecup}
  \SetBreakableBin{\Cap} \SetBreakableBin{\doublecap}
  \SetBreakableBin{\curlywedge}
  \SetBreakableBin{\curlyvee}
  \SetBreakableBin{\leftthreetimes}
  \SetBreakableBin{\rightthreetimes}
  \SetBreakableBin{\dotplus}
  \SetBreakableBin{\intercal}
  \SetBreakableBin{\circledcirc}
  \SetBreakableBin{\circledast}
  \SetBreakableBin{\circleddash}
  \SetBreakableBin{\divideontimes}
  \SetBreakableBin{\lessdot}
  \SetBreakableBin{\gtrdot}
  \SetBreakableBin{\ltimes}
  \SetBreakableBin{\rtimes}
  \SetBreakableBin{\smallsetminus}
  \SetBreakableRel{\circlearrowright}
  \SetBreakableRel{\circlearrowleft}
  \SetBreakableRel{\leftrightharpoons}
  \SetBreakableRel{\Vdash}
  \SetBreakableRel{\Vvdash}
  \SetBreakableRel{\vDash}
  \SetBreakableRel{\twoheadrightarrow}
  \SetBreakableRel{\twoheadleftarrow}
  \SetBreakableRel{\leftleftarrows}
  \SetBreakableRel{\rightrightarrows}
  \SetBreakableRel{\upuparrows}
  \SetBreakableRel{\downdownarrows}
  \SetBreakableRel{\upharpoonright} \SetBreakableRel{\restriction}
  \SetBreakableRel{\downharpoonright}
  \SetBreakableRel{\upharpoonleft}
  \SetBreakableRel{\downharpoonleft}
  \SetBreakableRel{\rightarrowtail}
  \SetBreakableRel{\leftarrowtail}
  \SetBreakableRel{\leftrightarrows}
  \SetBreakableRel{\rightleftarrows}
  \SetBreakableRel{\Lsh}
  \SetBreakableRel{\Rsh}
  \SetBreakableRel{\rightsquigarrow}
  \SetBreakableRel{\leftrightsquigarrow}
  \SetBreakableRel{\looparrowleft}
  \SetBreakableRel{\looparrowright}
  \SetBreakableRel{\circeq}
  \SetBreakableRel{\succsim}
  \SetBreakableRel{\gtrsim}
  \SetBreakableRel{\gtrapprox}
  \SetBreakableRel{\multimap}
  \SetBreakableRel{\therefore}
  \SetBreakableRel{\because}
  \SetBreakableRel{\doteqdot} \SetBreakableRel{\Doteq}
  \SetBreakableRel{\triangleq}
  \SetBreakableRel{\precsim}
  \SetBreakableRel{\lesssim}
  \SetBreakableRel{\lessapprox}
  \SetBreakableRel{\eqslantless}
  \SetBreakableRel{\eqslantgtr}
  \SetBreakableRel{\curlyeqprec}
  \SetBreakableRel{\curlyeqsucc}
  \SetBreakableRel{\preccurlyeq}
  \SetBreakableRel{\leqq}
  \SetBreakableRel{\leqslant}
  \SetBreakableRel{\lessgtr}
  \SetBreakableRel{\risingdotseq}
  \SetBreakableRel{\fallingdotseq}
  \SetBreakableRel{\succcurlyeq}
  \SetBreakableRel{\geqq}
  \SetBreakableRel{\geqslant}
  \SetBreakableRel{\gtrless}
  \SetBreakableRel{\vartriangleright}
  \SetBreakableRel{\vartriangleleft}
  \SetBreakableRel{\trianglerighteq}
  \SetBreakableRel{\trianglelefteq}
  \SetBreakableRel{\between}
  \SetBreakableRel{\blacktriangleright}
  \SetBreakableRel{\blacktriangleleft}
  \SetBreakableRel{\vartriangle}
  \SetBreakableRel{\eqcirc}
  \SetBreakableRel{\lesseqgtr}
  \SetBreakableRel{\gtreqless}
  \SetBreakableRel{\lesseqqgtr}
  \SetBreakableRel{\gtreqqless}
  \SetBreakableRel{\Rrightarrow}
  \SetBreakableRel{\Lleftarrow}
  \SetBreakableRel{\varpropto}
  \SetBreakableRel{\smallsmile}
  \SetBreakableRel{\smallfrown}
  \SetBreakableRel{\Subset}
  \SetBreakableRel{\Supset}
  \SetBreakableRel{\subseteqq}
  \SetBreakableRel{\supseteqq}
  \SetBreakableRel{\bumpeq}
  \SetBreakableRel{\Bumpeq}
  \SetBreakableRel{\lll} \SetBreakableRel{\llless}
  \SetBreakableRel{\ggg} \SetBreakableRel{\gggtr}
  \SetBreakableRel{\pitchfork}
  \SetBreakableRel{\backsim}
  \SetBreakableRel{\backsimeq}
  \SetBreakableRel{\lvertneqq}
  \SetBreakableRel{\gvertneqq}
  \SetBreakableRel{\nleq}
  \SetBreakableRel{\ngeq}
  \SetBreakableRel{\nless}
  \SetBreakableRel{\ngtr}
  \SetBreakableRel{\nprec}
  \SetBreakableRel{\nsucc}
  \SetBreakableRel{\lneqq}
  \SetBreakableRel{\gneqq}
  \SetBreakableRel{\nleqslant}
  \SetBreakableRel{\ngeqslant}
  \SetBreakableRel{\lneq}
  \SetBreakableRel{\gneq}
  \SetBreakableRel{\npreceq}
  \SetBreakableRel{\nsucceq}
  \SetBreakableRel{\precnsim}
  \SetBreakableRel{\succnsim}
  \SetBreakableRel{\lnsim}
  \SetBreakableRel{\gnsim}
  \SetBreakableRel{\nleqq}
  \SetBreakableRel{\ngeqq}
  \SetBreakableRel{\precneqq}
  \SetBreakableRel{\succneqq}
  \SetBreakableRel{\precnapprox}
  \SetBreakableRel{\succnapprox}
  \SetBreakableRel{\lnapprox}
  \SetBreakableRel{\gnapprox}
  \SetBreakableRel{\nsim}
  \SetBreakableRel{\ncong}
  \SetBreakableRel{\varsubsetneq}
  \SetBreakableRel{\varsupsetneq}
  \SetBreakableRel{\nsubseteqq}
  \SetBreakableRel{\nsupseteqq}
  \SetBreakableRel{\subsetneqq}
  \SetBreakableRel{\supsetneqq}
  \SetBreakableRel{\varsubsetneqq}
  \SetBreakableRel{\varsupsetneqq}
  \SetBreakableRel{\subsetneq}
  \SetBreakableRel{\supsetneq}
  \SetBreakableRel{\nsubseteq}
  \SetBreakableRel{\nsupseteq}
  \SetBreakableRel{\nparallel}
  \SetBreakableRel{\nmid}
  \SetBreakableRel{\nshortmid}
  \SetBreakableRel{\nshortparallel}
  \SetBreakableRel{\nvdash}
  \SetBreakableRel{\nVdash}
  \SetBreakableRel{\nvDash}
  \SetBreakableRel{\nVDash}
  \SetBreakableRel{\ntrianglerighteq}
  \SetBreakableRel{\ntrianglelefteq}
  \SetBreakableRel{\ntriangleleft}
  \SetBreakableRel{\ntriangleright}
  \SetBreakableRel{\nleftarrow}
  \SetBreakableRel{\nrightarrow}
  \SetBreakableRel{\nLeftarrow}
  \SetBreakableRel{\nRightarrow}
  \SetBreakableRel{\nLeftrightarrow}
  \SetBreakableRel{\nleftrightarrow}
  \SetBreakableRel{\eqsim}
  \SetBreakableRel{\shortmid}
  \SetBreakableRel{\shortparallel}
  \SetBreakableRel{\thicksim}
  \SetBreakableRel{\thickapprox}
  \SetBreakableRel{\approxeq}
  \SetBreakableRel{\succapprox}
  \SetBreakableRel{\precapprox}
  \SetBreakableRel{\curvearrowleft}
  \SetBreakableRel{\curvearrowright}
  \SetBreakableRel{\backepsilon}
}{}
%    \end{macrocode}
% amstex
%    \begin{macrocode}
\@ifpackageloaded{amstex}% amstex
{
  \SetBreakableRel{\vartriangleright} \SetBreakableRel{\rhd}
  \SetBreakableRel{\vartriangleleft}  \SetBreakableRel{\lhd}
  \SetBreakableRel{\trianglerighteq}  \SetBreakableRel{\unrhd}
  \SetBreakableRel{\trianglelefteq}   \SetBreakableRel{\unlhd}
  \SetBreakableRel{\rightsquigarrow}  \SetBreakableRel{\leadsto}
}{}
%    \end{macrocode}
% boisik
%    \begin{macrocode}
\@ifpackageloaded{boisik}% boisik
{
  \SetMathOperator{\intup}
  \SetOpenBracket{\binampersand}
  \SetBreakableRel{\upharpoonright}
  \SetBreakableRel{\downharpoonright}
  \SetBreakableRel{\upharpoonleft}
  \SetBreakableRel{\downharpoonleft}
  \SetBreakableRel{\leftrightarrows}
  \SetBreakableRel{\rightleftarrows}
  \SetBreakableRel{\leftrightharpoons}
  \SetBreakableRel{\leftleftarrows}
  \SetBreakableRel{\rightrightarrows}
  \SetBreakableRel{\upuparrows}
  \SetBreakableRel{\downdownarrows}
  \SetBreakableRel{\twoheadrightarrow}
  \SetBreakableRel{\twoheadleftarrow}
  \SetBreakableRel{\rightarrowtail}
  \SetBreakableRel{\leftarrowtail}
  \SetBreakableRel{\rightsquigarrow}
  \SetBreakableRel{\leftrightsquigarrow}
  \SetBreakableRel{\Lsh}
  \SetBreakableRel{\Rsh}
  \SetBreakableRel{\looparrowleft}
  \SetBreakableRel{\looparrowright}
  \SetBreakableRel{\circlearrowright}
  \SetBreakableRel{\circlearrowleft}
  \SetBreakableRel{\curvearrowleft}
  \SetBreakableRel{\curvearrowright}
  \SetBreakableRel{\nleftarrow}
  \SetBreakableRel{\nrightarrow}
  \SetBreakableRel{\nleftrightarrow}
  \SetBreakableRel{\nLeftarrow}
  \SetBreakableRel{\nRightarrow}
  \SetBreakableRel{\nLeftrightarrow}
  \SetBreakableRel{\Lleftarrow}
  \SetBreakableRel{\Rrightarrow}
  \SetBreakableRel{\nLeftrightarroW}
  % \SetBreakableRel{\lhook}
  % \SetBreakableRel{\rhook}
  \SetBreakableRel{\multimap}
  \SetBreakableRel{\multimapdot}
  \SetBreakableRel{\therefore}
  \SetBreakableRel{\because}
  \SetBreakableRel{\between}
  \SetBreakableRel{\Vdash}
  \SetBreakableRel{\Vvdash}
  \SetBreakableRel{\VDash}
  \SetBreakableRel{\vDash}
  \SetBreakableRel{\smallsmile}
  \SetBreakableRel{\smallfrown}
  \SetBreakableRel{\shortmid}
  \SetBreakableRel{\shortparallel}
  \SetBreakableRel{\thickapprox}
  \SetBreakableBin{\divideontimes}
  \SetBreakableBin{\lessdot}
  \SetBreakableBin{\gtrdot}
  \SetBreakableRel{\bumpeq}
  \SetBreakableRel{\Bumpeq}
  \SetBreakableRel{\leqslant}
  \SetBreakableRel{\geqslant}
  \SetBreakableRel{\eqslantless}
  \SetBreakableRel{\eqslantgtr}
  \SetBreakableRel{\curlyeqprec}
  \SetBreakableRel{\curlyeqsucc}
  \SetBreakableRel{\preccurlyeq}
  \SetBreakableRel{\succcurlyeq}
  \SetBreakableRel{\thicksim}
  \SetBreakableRel{\backsim}
  \SetBreakableRel{\eqsim}
  \SetBreakableRel{\backsimeq}
  \SetBreakableBin{\ltimes}
  \SetBreakableBin{\rtimes}
  \SetBreakableRel{\lll} \SetBreakableRel{\llless}
  \SetBreakableRel{\ggg} \SetBreakableRel{\gggtr}
  \SetBreakableRel{\triangleq}
  \SetBreakableRel{\circeq}
  \SetBreakableRel{\eqcirc}
  \SetBreakableRel{\doteqdot} \SetBreakableRel{\Doteq}
  \SetBreakableRel{\risingdotseq}
  \SetBreakableRel{\fallingdotseq}
  \SetBreakableRel{\varpropto}
  \SetBreakableRel{\vartriangleright}
  \SetBreakableRel{\vartriangleleft}
  \SetBreakableRel{\trianglerighteq}
  \SetBreakableRel{\trianglelefteq}
  \SetBreakableRel{\blacktriangleright}
  \SetBreakableRel{\blacktriangleleft}
  \SetBreakableRel{\vartriangle}
  \SetBreakableBin{\centerdot}
  \SetBreakableBin{\boxplus}
  \SetBreakableBin{\boxminus}
  \SetBreakableBin{\boxtimes}
  \SetBreakableBin{\boxdot}
  \SetBreakableBin{\circledcirc}
  \SetBreakableBin{\circledast}
  \SetBreakableBin{\circleddash}
  \SetBreakableBin{\intercal}
  \SetBreakableRel{\prurel}
  \SetBreakableRel{\scurel}
  \SetBreakableRel{\disin}
  \SetBreakableRel{\nisd}
  \SetBreakableRel{\fatslash}
  \SetBreakableRel{\fatbslash}
  \SetBreakableRel{\nequiv}
  \SetBreakableRel{\bagmember}
  \SetBreakableRel{\lvertneqq}
  \SetBreakableRel{\gvertneqq}
  \SetBreakableRel{\nleq}
  \SetBreakableRel{\ngeq}
  \SetBreakableRel{\nless}
  \SetBreakableRel{\ngtr}
  \SetBreakableRel{\nprec}
  \SetBreakableRel{\nsucc}
  \SetBreakableRel{\lneqq}
  \SetBreakableRel{\gneqq}
  \SetBreakableRel{\nleqslant}
  \SetBreakableRel{\ngeqslant}
  \SetBreakableRel{\lneq}
  \SetBreakableRel{\gneq}
  \SetBreakableRel{\npreceq}
  \SetBreakableRel{\nsucceq}
  \SetBreakableRel{\nleqq}
  \SetBreakableRel{\ngeqq}
  \SetBreakableRel{\lnsim}
  \SetBreakableRel{\gnsim}
  \SetBreakableRel{\precnsim}
  \SetBreakableRel{\succnsim}
  \SetBreakableRel{\precneqq}
  \SetBreakableRel{\succneqq}
  \SetBreakableRel{\nsim}
  \SetBreakableRel{\ncong}
  \SetBreakableRel{\lnapprox}
  \SetBreakableRel{\gnapprox}
  \SetBreakableRel{\precnapprox}
  \SetBreakableRel{\succnapprox}
  \SetBreakableRel{\nsubset}
  \SetBreakableRel{\nsupset}
  \SetBreakableRel{\varsubsetneq}
  \SetBreakableRel{\varsupsetneq}
  \SetBreakableRel{\nsubseteqq}
  \SetBreakableRel{\nsupseteqq}
  \SetBreakableRel{\subsetneqq}
  \SetBreakableRel{\supsetneqq}
  \SetBreakableRel{\varsubsetneqq}
  \SetBreakableRel{\varsupsetneqq}
  \SetBreakableRel{\subsetneq}
  \SetBreakableRel{\supsetneq}
  \SetBreakableRel{\nsubseteq}
  \SetBreakableRel{\nsupseteq}
  \SetBreakableRel{\nparallel}
  \SetBreakableRel{\nmid}
  \SetBreakableRel{\nshortmid}
  \SetBreakableRel{\nshortparallel}
  \SetBreakableRel{\nvdash}
  \SetBreakableRel{\nVdash}
  \SetBreakableRel{\nvDash}
  \SetBreakableRel{\nVDash}
  \SetBreakableRel{\ntrianglerighteq}
  \SetBreakableRel{\ntrianglelefteq}
  \SetBreakableRel{\ntriangleleft}
  \SetBreakableRel{\ntriangleright}
  \SetBreakableRel{\precapprox}
  \SetBreakableRel{\succapprox}
  \SetBreakableRel{\precsim}
  \SetBreakableRel{\succsim}
  \SetBreakableRel{\lesssim}
  \SetBreakableRel{\gtrsim}
  \SetBreakableRel{\lessapprox}
  \SetBreakableRel{\gtrapprox}
  \SetBreakableRel{\leqq}
  \SetBreakableRel{\geqq}
  \SetBreakableRel{\lessgtr}
  \SetBreakableRel{\gtrless}
  \SetBreakableRel{\lesseqgtr}
  \SetBreakableRel{\gtreqless}
  \SetBreakableRel{\lesseqqgtr}
  \SetBreakableRel{\gtreqqless}
  \SetBreakableRel{\Subset}
  \SetBreakableRel{\Supset}
  \SetBreakableBin{\Cup} \SetBreakableBin{\doublecup}
  \SetBreakableBin{\Cap} \SetBreakableBin{\doublecap}
  \SetBreakableRel{\subseteqq}
  \SetBreakableRel{\supseteqq}
  \SetBreakableBin{\curlywedge}
  \SetBreakableBin{\curlyvee}
  \SetBreakableBin{\veebar}
  \SetBreakableBin{\barwedge}
  \SetBreakableBin{\doublebarwedge}
  \SetBreakableBin{\leftthreetimes}
  \SetBreakableBin{\rightthreetimes}
  \SetBreakableBin{\smallsetminus}
  \SetBreakableRel{\approxeq}
  \SetBreakableBin{\dotplus}
  \SetBreakableRel{\pitchfork}
  \SetBreakableBin{\oblong}
  \SetBreakableBin{\talloblong}
  \SetBreakableBin{\sslash}
  \SetBreakableBin{\bbslash}
  \SetBreakableRel{\hash}
  \SetBreakableRel{\varhash}
  \SetBreakableBin{\convolution}
  \SetBreakableBin{\coAsterisk}
  \SetBreakableRel{\veeeq}
  \SetBreakableRel{\corresponds}
  \SetBreakableRel{\arceq}
  \SetBreakableRel{\CircledEq}
  \SetBreakableRel{\eqbumped}
  \SetBreakableRel{\dotminus}
  \SetBreakableRel{\kernelcontraction}
  \SetBreakableRel{\dotsim}
  \SetBreakableRel{\simrdots}
  \SetBreakableBin{\circplus}
  \SetBreakableBin{\dottimes}
  \SetBreakableBin{\vartimes}
  \SetBreakableBin{\merge}
  \SetBreakableBin{\veeonvee}
  \SetBreakableBin{\obslash}
  \SetBreakableBin{\otop}
  \SetBreakableBin{\obot}
  \SetBreakableBin{\oleft}
  \SetBreakableBin{\oright}
  \SetBreakableBin{\obar}
  \SetBreakableBin{\otriangle}
  \SetBreakableBin{\olessthan}
  \SetBreakableBin{\ogreaterthan}
  \SetBreakableBin{\ovee}
  \SetBreakableBin{\owedge}
  \SetBreakableBin{\boxbslash}
  \SetBreakableBin{\boxtop}
  \SetBreakableBin{\boxbot}
  \SetBreakableBin{\boxleft}
  \SetBreakableBin{\boxright}
  \SetBreakableBin{\boxbar}
  \SetBreakableBin{\boxslash}
  \SetBreakableBin{\boxtriangle}
  \SetBreakableBin{\boxast}
  \SetBreakableBin{\boxcircle}
  \SetBreakableBin{\boxdivision}
  \SetBreakableBin{\boxbox}
  \SetBreakableBin{\diamondop}
  \SetBreakableBin{\diamondminus}
  \SetBreakableBin{\diamondbar}
  \SetBreakableBin{\diamondtimes}
  \SetBreakableBin{\diamondplus}
  \SetBreakableBin{\diamondtriangle}
  \SetBreakableBin{\diamondcircle}
  \SetBreakableBin{\cupleftarrow}
  \SetBreakableBin{\varcup}
  \SetBreakableBin{\varcap}
  \SetBreakableBin{\varsqcup}
  \SetBreakableBin{\varsqcap}
  \SetBreakableRel{\sqSubset}
  \SetBreakableRel{\sqSupset}
  \SetBreakableRel{\inplus}
  \SetBreakableRel{\niplus}
  \SetBreakableRel{\varisins}
  \SetBreakableRel{\varnis}
  \SetBreakableRel{\subsetplus}
  \SetBreakableRel{\supsetplus}
  \SetBreakableRel{\subsetpluseq}
  \SetBreakableRel{\supsetpluseq}
  \SetBreakableBin{\nplus}
  \SetBreakableBin{\squplus}
  \SetBreakableRel{\multimapboth}
  \SetBreakableRel{\multimapdotboth}
  \SetBreakableRel{\multimapdotbothB}
  \SetBreakableRel{\multimapdotbothA}
  \SetBreakableRel{\multimapinv}
  \SetBreakableRel{\multimapdotinv}
  \SetBreakableRel{\multimapbothvert}
  \SetBreakableRel{\multimapdotbothvert}
  \SetBreakableRel{\multimapdotbothBvert}
  \SetBreakableRel{\multimapdotbothAvert}
  \SetBreakableRel{\dfourier}
  \SetBreakableRel{\Dfourier}
  \SetBreakableRel{\ztransf}
  \SetBreakableRel{\Ztransf}
  \SetBreakableRel{\Lt}
  \SetBreakableRel{\Gt}
  \SetBreakableBin{\leftslice}
  \SetBreakableBin{\rightslice}
  \SetBreakableRel{\trianglelefteqslant}
  \SetBreakableRel{\trianglerighteqslant}
  \SetBreakableBin{\Ydown}
  \SetBreakableBin{\Yup}
  \SetBreakableBin{\Yleft}
  \SetBreakableBin{\Yright}
  \SetBreakableRel{\dashVv}
  \SetBreakableRel{\DashV}
  \SetBreakableRel{\DashV}
  \SetBreakableRel{\dashV}
  \SetBreakableBin{\lbag}
  \SetBreakableBin{\rbag}
  \SetBreakableRel{\Perp}
  \SetBreakableBin{\moo}
  \SetBreakableBin{\baro}
  \SetBreakableBin{\pluscirc}
  \SetBreakableBin{\minuso}
  \SetBreakableRel{\llcurly}
  \SetBreakableRel{\ggcurly}
  \SetBreakableRel{\strictfi}
  \SetBreakableRel{\strictif}
  \SetBreakableRel{\ac}
  \SetBreakableBin{\varintercal}
  \SetBreakableRel{\equalparallel}
  \SetBreakableBin{\plustrif}
  \SetBreakableBin{\smashtimes}
  \SetBreakableRel{\ltcir}
  \SetBreakableRel{\gtcir}
  \SetBreakableRel{\glj}
  \SetBreakableBin{\Vee}
  \SetBreakableBin{\Wedge}
  \SetBreakableBin{\fatsemi}
  \SetBreakableRel{\forkv}
  \SetBreakableRel{\topfork}
  \SetBreakableRel{\twoheaduparrow}
  \SetBreakableRel{\twoheaddownarrow}
  \SetBreakableRel{\mapsfrom}
  \SetBreakableRel{\mapsup}
  \SetBreakableRel{\mapsdown}
  \SetBreakableRel{\nVleftarrow}
  \SetBreakableRel{\nVrightarrow}
  \SetBreakableRel{\rightarrowcircle}
  \SetBreakableRel{\nwarrowcorner}
  \SetBreakableRel{\nearrowcorner}
  \SetBreakableRel{\barovernorthwestarrow}
  \SetBreakableRel{\carriagereturn}
  \SetBreakableRel{\linefeed}
  \SetBreakableRel{\leftzigzagarrow}
  \SetBreakableRel{\Nwarrow}
  \SetBreakableRel{\Nearrow}
  \SetBreakableRel{\Swarrow}
  \SetBreakableRel{\Searrow}
  \SetBreakableRel{\nHuparrow}
  \SetBreakableRel{\nHdownarrow}
  \SetBreakableRel{\updownarrowbar}
  \SetBreakableRel{\barleftarrow}
  \SetBreakableRel{\rightarrowbar}
  \SetBreakableRel{\leftsquigarrow}
  \SetBreakableRel{\rightsquigarrow}
  \SetBreakableRel{\leftrightsquigarrow}
  \SetBreakableRel{\downzigzagarrow}
  \SetBreakableRel{\rightthreearrows}
  \SetBreakableRel{\barleftarrowrightarrowbar}
  \SetBreakableRel{\leftdasharrow}
  \SetBreakableRel{\rightdasharrow}
  \SetBreakableRel{\updasharrow}
  \SetBreakableRel{\downdasharrow}
  \SetBreakableRel{\upwhitearrow}
  \SetBreakableRel{\downwhitearrow}
  \SetBreakableRel{\whitearrowupfrombar}
  \SetBreakableRel{\whitearrowuppedestal}
  \SetBreakableRel{\whitearrowuppedestalhbar}
  \SetBreakableRel{\whitearrowuppedestalvbar}
  \SetBreakableRel{\twoheadwhiteuparrow}
  \SetBreakableRel{\twoheadwhiteuparrowpedestal}
  \SetBreakableRel{\updownwhitearrow}
  \SetBreakableRel{\leftblackarrow}
  \SetBreakableRel{\rightblackarrow}
  \SetBreakableRel{\upblackarrow}
  \SetBreakableRel{\downblackarrow}
  \SetBreakableRel{\leftrightblackarrow}
  \SetBreakableRel{\updownblackarrow}
  \SetBreakableRel{\curlyveeuparrow}
  \SetBreakableRel{\curlyveedownarrow}
  \SetBreakableRel{\curlywedgeuparrow}
  \SetBreakableRel{\curlywedgedownarrow}
  \SetBreakableRel{\Mapsfrom}
  \SetBreakableRel{\Mapsto}
  \SetBreakableRel{\leftwhitearrow}
  \SetBreakableRel{\rightwhitearrow}
  \SetBreakableRel{\leftwhiteroundarrow}
  \SetBreakableRel{\rightwhiteroundarrow}
  \SetBreakableRel{\righttoleftarrow}
  \SetBreakableRel{\lefttorightarrow}
  \SetBreakableRel{\looparrowdownleft}
  \SetBreakableRel{\looparrowdownright}
  \SetBreakableRel{\uptodownarrow}
  \SetBreakableRel{\downtouparrow}
  \SetBreakableRel{\nnearrow}
  \SetBreakableRel{\ssearrow}
  \SetBreakableRel{\nnwarrow}
  \SetBreakableRel{\sswarrow}
  \SetBreakableRel{\curvearrowleft}
  \SetBreakableRel{\curvearrowright}
  \SetBreakableRel{\curvearrowleftright}
  \SetBreakableRel{\curvearrowbotleft}
  \SetBreakableRel{\curvearrowbotright}
  \SetBreakableRel{\curvearrowbotleftright}
  \SetBreakableRel{\leftrightarroweq}
  \SetBreakableRel{\eqleftrightarrow}
  \SetBreakableRel{\dlsh}
  \SetBreakableRel{\drsh}
  \SetBreakableRel{\leftarrowTriangle}
  \SetBreakableRel{\rightarrowTriangle}
  \SetBreakableRel{\leftrightarrowTriangle}
  \SetBreakableRel{\leftarrowtriangle}
  \SetBreakableRel{\rightarrowtriangle}
  \SetBreakableRel{\leftrightarrowtriangle}
}{}
%    \end{macrocode}
% euler
%    \begin{macrocode}
\@ifpackageloaded{euler}% euler
{
  \SetBreakableRel{\uparrow}
  \SetBreakableRel{\downarrow}
  \SetBreakableRel{\updownarrow}
  \SetBreakableRel{\Uparrow}
  \SetBreakableRel{\Downarrow}
  \SetBreakableRel{\Updownarrow}
  % \SetBreakableRel{\lhook}
  % \SetBreakableRel{\rhook}
}{}
%    \end{macrocode}
% fourier
%    \begin{macrocode}
\@ifpackageloaded{fourier}% fourier
{
  \SetMathOperator{\iint}
  \SetMathOperator{\iiint}
  \SetMathOperator{\oiint}
  \SetMathOperator{\oiiint}
  \SetMathOperator{\slashint}
  \SetOpenBracket{\llbracket}
  \SetBreakableRel{\leqslant}
  \SetBreakableRel{\geqslant}
  \SetBreakableRel{\parallelslant}
  \SetBreakableRel{\vDash}
  \SetBreakableRel{\blacktriangleleft}
  \SetBreakableRel{\blacktriangleright}
  \SetBreakableRel{\nleqslant}
  \SetBreakableRel{\ngeqslant}
  \SetBreakableRel{\nparallel}
  \SetBreakableRel{\nparallelslant}
  \SetBreakableRel{\nvDash}
  \SetBreakableBin{\intercal}
  \SetBreakableRel{\varsubsetneq}
  \SetBreakableRel{\notowns}
  \SetBreakableBin{\smallsetminus}
  \SetBreakableRel{\subsetneqq}
  \SetBreakableRel{\rightrightarrows}
  \SetBreakableRel{\leftleftarrows}
  \SetBreakableRel{\curvearrowleft}
  \SetBreakableRel{\curvearrowright}
  \SetBreakableRel{\Downarrow}
}{}
%    \end{macrocode}
%
% Lucida font (lucbmath,lucidabr,lucmin,lucmtime,luctime)
%
%    \begin{macrocode}

\ifnum\@ifpackageloaded{lucbmath}{1}{%
\@ifpackageloaded{lucidabr}{1}{%
\@ifpackageloaded{lucmin}{1}{%
\@ifpackageloaded{lucmtime}{1}{%
\@ifpackageloaded{luctime}{1}{0}}}}}=1\relax%
  \SetMathOperator{\surfint}
  \SetMathOperator{\midint}
  \SetMathOperator{\midoint}
  \SetMathOperator{\midsurfint}
  \SetMathOperator{\largeint}
  \SetBreakableRel{\leadsfrom}
  \SetBreakableRel{\defineequal}
  \SetBreakableRel{\notequiv}
  \SetBreakableRel{\notapprox}
  \SetBreakableRel{\notasymp}
  \SetBreakableRel{\notsubset}
  \SetBreakableRel{\notsupset}
  \SetBreakableRel{\notsim}
  \SetBreakableRel{\notsubseteq}
  \SetBreakableRel{\notsupseteq}
  \SetBreakableRel{\notsimeq}
  \SetBreakableRel{\notsqsubseteq}
  \SetBreakableRel{\notsqsupseteq}
  \SetBreakableRel{\notcong}
  \SetBreakableRel{\notni}
  \SetBreakableBin{\boxdot}
  \SetBreakableBin{\boxplus}
  \SetBreakableBin{\boxtimes}
  \SetBreakableBin{\centerdot}
  \SetBreakableRel{\circlearrowright}
  \SetBreakableRel{\circlearrowleft}
  \SetBreakableRel{\leftrightharpoons}
  \SetBreakableBin{\boxminus}
  \SetBreakableRel{\Vdash}
  \SetBreakableRel{\Vvdash}
  \SetBreakableRel{\vDash}
  \SetBreakableRel{\twoheadrightarrow}
  \SetBreakableRel{\twoheadleftarrow}
  \SetBreakableRel{\leftleftarrows}
  \SetBreakableRel{\rightrightarrows}
  \SetBreakableRel{\upuparrows}
  \SetBreakableRel{\downdownarrows}
  \SetBreakableRel{\upharpoonright}
  \SetBreakableRel{\downharpoonright}
  \SetBreakableRel{\upharpoonleft}
  \SetBreakableRel{\downharpoonleft}
  \SetBreakableRel{\rightarrowtail}
  \SetBreakableRel{\leftarrowtail}
  \SetBreakableRel{\leftrightarrows}
  \SetBreakableRel{\rightleftarrows}
  \SetBreakableRel{\Lsh}
  \SetBreakableRel{\Rsh}
  \SetBreakableRel{\rightsquigarrow}
  \SetBreakableRel{\leftsquigarrow}
  \SetBreakableRel{\leftrightsquigarrow}
  \SetBreakableRel{\looparrowleft}
  \SetBreakableRel{\looparrowright}
  \SetBreakableRel{\circeq}
  \SetBreakableRel{\succsim}
  \SetBreakableRel{\gtrsim}
  \SetBreakableRel{\gtrapprox}
  \SetBreakableRel{\multimap}
  \SetBreakableRel{\image}
  \SetBreakableRel{\original}
  \SetBreakableRel{\therefore}
  \SetBreakableRel{\because}
  \SetBreakableRel{\doteqdot}
  \SetBreakableRel{\triangleq}
  \SetBreakableRel{\precsim}
  \SetBreakableRel{\lesssim}
  \SetBreakableRel{\lessapprox}
  \SetBreakableRel{\eqslantless}
  \SetBreakableRel{\eqslantgtr}
  \SetBreakableRel{\curlyeqprec}
  \SetBreakableRel{\curlyeqsucc}
  \SetBreakableRel{\preccurlyeq}
  \SetBreakableRel{\leqq}
  \SetBreakableRel{\leqslant}
  \SetBreakableRel{\lessgtr}
  \SetBreakableRel{\risingdotseq}
  \SetBreakableRel{\fallingdotseq}
  \SetBreakableRel{\succcurlyeq}
  \SetBreakableRel{\geqq}
  \SetBreakableRel{\geqslant}
  \SetBreakableRel{\gtrless}
  \SetBreakableRel{\vartriangleright}
  \SetBreakableRel{\vartriangleleft}
  \SetBreakableRel{\trianglerighteq}
  \SetBreakableRel{\trianglelefteq}
  \SetBreakableRel{\between}
  \SetBreakableRel{\blacktriangleright}
  \SetBreakableRel{\blacktriangleleft}
  \SetBreakableRel{\vartriangle}
  \SetBreakableRel{\eqcirc}
  \SetBreakableRel{\lesseqgtr}
  \SetBreakableRel{\gtreqless}
  \SetBreakableRel{\lesseqqgtr}
  \SetBreakableRel{\gtreqqless}
  \SetBreakableRel{\Rrightarrow}
  \SetBreakableRel{\Lleftarrow}
  \SetBreakableBin{\veebar}
  \SetBreakableBin{\barwedge}
  \SetBreakableRel{\varpropto}
  \SetBreakableRel{\smallsmile}
  \SetBreakableRel{\smallfrown}
  \SetBreakableRel{\Subset}
  \SetBreakableRel{\Supset}
  \SetBreakableBin{\Cup}
  \SetBreakableBin{\Cap}
  \SetBreakableBin{\curlywedge}
  \SetBreakableBin{\curlyvee}
  \SetBreakableBin{\leftthreetimes}
  \SetBreakableBin{\rightthreetimes}
  \SetBreakableRel{\subseteqq}
  \SetBreakableRel{\supseteqq}
  \SetBreakableRel{\bumpeq}
  \SetBreakableRel{\Bumpeq}
  \SetBreakableRel{\lll}
  \SetBreakableRel{\ggg}
  \SetBreakableRel{\pitchfork}
  \SetBreakableBin{\dotplus}
  \SetBreakableRel{\backsim}
  \SetBreakableRel{\backsimeq}
  \SetBreakableBin{\intercal}
  \SetBreakableBin{\circledcirc}
  \SetBreakableBin{\circledast}
  \SetBreakableBin{\circleddash}
  \SetBreakableRel{\lvertneqq}
  \SetBreakableRel{\gvertneqq}
  \SetBreakableRel{\nleq}
  \SetBreakableRel{\ngeq}
  \SetBreakableRel{\nless}
  \SetBreakableRel{\ngtr}
  \SetBreakableRel{\nprec}
  \SetBreakableRel{\nsucc}
  \SetBreakableRel{\lneqq}
  \SetBreakableRel{\gneqq}
  \SetBreakableRel{\nleqslant}
  \SetBreakableRel{\ngeqslant}
  \SetBreakableRel{\lneq}
  \SetBreakableRel{\gneq}
  \SetBreakableRel{\npreceq}
  \SetBreakableRel{\nsucceq}
  \SetBreakableRel{\precnsim}
  \SetBreakableRel{\succnsim}
  \SetBreakableRel{\lnsim}
  \SetBreakableRel{\gnsim}
  \SetBreakableRel{\nleqq}
  \SetBreakableRel{\ngeqq}
  \SetBreakableRel{\precneqq}
  \SetBreakableRel{\succneqq}
  \SetBreakableRel{\precnapprox}
  \SetBreakableRel{\succnapprox}
  \SetBreakableRel{\lnapprox}
  \SetBreakableRel{\gnapprox}
  \SetBreakableRel{\nsim}
  \SetBreakableRel{\ncong}
  \SetBreakableRel{\diagup}
  \SetBreakableRel{\diagdown}
  \SetBreakableRel{\varsubsetneq}
  \SetBreakableRel{\varsupsetneq}
  \SetBreakableRel{\nsubseteqq}
  \SetBreakableRel{\nsupseteqq}
  \SetBreakableRel{\subsetneqq}
  \SetBreakableRel{\supsetneqq}
  \SetBreakableRel{\varsubsetneqq}
  \SetBreakableRel{\varsupsetneqq}
  \SetBreakableRel{\subsetneq}
  \SetBreakableRel{\supsetneq}
  \SetBreakableRel{\nsubseteq}
  \SetBreakableRel{\nsupseteq}
  \SetBreakableRel{\nparallel}
  \SetBreakableRel{\nmid}
  \SetBreakableRel{\nshortmid}
  \SetBreakableRel{\nshortparallel}
  \SetBreakableRel{\nvdash}
  \SetBreakableRel{\nVdash}
  \SetBreakableRel{\nvDash}
  \SetBreakableRel{\nVDash}
  \SetBreakableRel{\ntrianglerighteq}
  \SetBreakableRel{\ntrianglelefteq}
  \SetBreakableRel{\ntriangleleft}
  \SetBreakableRel{\ntriangleright}
  \SetBreakableRel{\nleftarrow}
  \SetBreakableRel{\nrightarrow}
  \SetBreakableRel{\nLeftarrow}
  \SetBreakableRel{\nRightarrow}
  \SetBreakableRel{\nLeftrightarrow}
  \SetBreakableRel{\nleftrightarrow}
  \SetBreakableBin{\divideontimes}
  \SetBreakableRel{\eqsim}
  \SetBreakableRel{\lessdot}
  \SetBreakableRel{\gtrdot}
  \SetBreakableBin{\ltimes}
  \SetBreakableBin{\rtimes}
  \SetBreakableRel{\shortmid}
  \SetBreakableRel{\shortparallel}
  \SetBreakableBin{\smallsetminus}
  \SetBreakableRel{\thicksim}
  \SetBreakableRel{\thickapprox}
  \SetBreakableRel{\approxeq}
  \SetBreakableRel{\succapprox}
  \SetBreakableRel{\precapprox}
  \SetBreakableRel{\curvearrowleft}
  \SetBreakableRel{\curvearrowright}
  \SetBreakableRel{\backepsilon}
\fi
%    \end{macrocode}
% mathbbol
%    \begin{macrocode}
\@ifpackageloaded{mathbbol}% mathbbol
{
  \SetOpenBracket{\Langle}
  \SetOpenBracket{\Lparen}
}{}
%    \end{macrocode}
% mdwmath
%    \begin{macrocode}
\@ifpackageloaded{mdwmath}% mdwmath
{
  \SetBreakableBin{\bitand}
  \begingroup
    \catcode`\&\active \xdef&{\noexpand\brokenbin{\mathchar\number\mathcode`\&}}
  \endgroup
  \AtBeginDocument{\mathcode`\&=32768 }
}{}
%    \end{macrocode}
% sbmm
%    \begin{macrocode}
\@ifpackageloaded{sbbm}% sbbm
{
  \SetOpenBracket{\Lparen}
}{}
%    \end{macrocode}
% stmaryrd
%    \begin{macrocode}
\@ifpackageloaded{stmaryrd}% stmaryrd
{
  \SetOpenBracket{\Lbag}
  \SetOpenBracket{\llparenthesis}
  \SetOpenBracket{\binampersand}
  \SetOpenBracket{\llfloor}
  \SetOpenBracket{\llceil}
  \SetOpenBracket{\llbracket}
  \SetBreakableRel{\shortleftarrow}
  \SetBreakableRel{\shortrightarrow}
  \SetBreakableRel{\shortuparrow}
  \SetBreakableRel{\shortdownarrow}
  \SetBreakableBin{\Yup}
  \SetBreakableBin{\Ydown}
  \SetBreakableBin{\Yleft}
  \SetBreakableBin{\Yright}
  \SetBreakableBin{\varcurlyvee}
  \SetBreakableBin{\varcurlywedge}
  \SetBreakableBin{\minuso}
  \SetBreakableBin{\baro}
  \SetBreakableBin{\sslash}
  \SetBreakableBin{\bbslash}
  \SetBreakableBin{\moo}
  \SetBreakableBin{\varotimes}
  \SetBreakableBin{\varoast}
  \SetBreakableBin{\varobar}
  \SetBreakableBin{\varodot}
  \SetBreakableBin{\varoslash}
  \SetBreakableBin{\varobslash}
  \SetBreakableBin{\varocircle}
  \SetBreakableBin{\varoplus}
  \SetBreakableBin{\varominus}
  \SetBreakableBin{\boxast}
  \SetBreakableBin{\boxbar}
  \SetBreakableBin{\boxdot}
  \SetBreakableBin{\boxslash}
  \SetBreakableBin{\boxbslash}
  \SetBreakableBin{\boxcircle}
  \SetBreakableBin{\boxbox}
  \SetBreakableBin{\boxempty}
  \SetBreakableBin{\merge}
  \SetBreakableBin{\vartimes}
  \SetBreakableBin{\fatsemi}
  \SetBreakableRel{\sswarrow}
  \SetBreakableRel{\ssearrow}
  \SetBreakableRel{\curlywedgeuparrow}
  \SetBreakableRel{\curlywedgedownarrow}
  \SetBreakableBin{\fatslash}
  \SetBreakableBin{\fatbslash}
  \SetBreakableBin{\lbag}
  \SetBreakableBin{\rbag}
  \SetBreakableBin{\varbigcirc}
  \SetBreakableRel{\leftrightarroweq}
  \SetBreakableRel{\curlyveedownarrow}
  \SetBreakableRel{\curlyveeuparrow}
  \SetBreakableRel{\nnwarrow}
  \SetBreakableRel{\nnearrow}
  \SetBreakableBin{\leftslice}
  \SetBreakableBin{\rightslice}
  \SetBreakableBin{\varolessthan}
  \SetBreakableBin{\varogreaterthan}
  \SetBreakableBin{\varovee}
  \SetBreakableBin{\varowedge}
  \SetBreakableBin{\talloblong}
  \SetBreakableBin{\interleave}
  \SetBreakableBin{\obar}
  \SetBreakableBin{\obslash}
  \SetBreakableBin{\olessthan}
  \SetBreakableBin{\ogreaterthan}
  \SetBreakableBin{\ovee}
  \SetBreakableBin{\owedge}
  \SetBreakableBin{\oblong}
  \SetBreakableRel{\inplus}
  \SetBreakableRel{\niplus}
  \SetBreakableBin{\nplus}
  \SetBreakableRel{\subsetplus}
  \SetBreakableRel{\supsetplus}
  \SetBreakableRel{\subsetpluseq}
  \SetBreakableRel{\supsetpluseq}
  \SetBreakableRel{\trianglelefteqslant}
  \SetBreakableRel{\trianglerighteqslant}
  \SetBreakableRel{\ntrianglelefteqslant}
  \SetBreakableRel{\ntrianglerighteqslant}
  \SetBreakableRel{\arrownot}
  \SetBreakableRel{\Arrownot}
  \SetBreakableRel{\Mapstochar}
  \SetBreakableRel{\mapsfromchar}
  \SetBreakableRel{\Mapsfromchar}
  \SetBreakableBin{\leftrightarrowtriangle}
  \SetBreakableRel{\leftarrowtriangle}
  \SetBreakableRel{\rightarrowtriangle}
  \SetBreakableRel{\longarrownot}
  \SetBreakableRel{\Longarrownot}
  \SetBreakableRel{\Mapsto}
  \SetBreakableRel{\mapsfrom}
  \SetBreakableRel{\Mapsfrom}
  \SetBreakableRel{\Longmapsto}
  \SetBreakableRel{\longmapsfrom}
  \SetBreakableRel{\Longmapsfrom}
}{}
%    \end{macrocode}
% wasysym
%    \begin{macrocode}
\@ifpackageloaded{wasysym}% wasysym
{
  \SetMathOperator{\varint}
  \SetMathOperator{\iint}
  \SetMathOperator{\iiint}
  \SetMathOperator{\varoint}
  \SetMathOperator{\oiint}
  \SetBreakableBin{\LHD}
  \SetBreakableBin{\RHD}
  \SetBreakableRel{\apprle}
  \SetBreakableRel{\apprge}
  \SetBreakableRel{\wasypropto}
  \SetBreakableRel{\invneg}
  \SetBreakableBin{\ocircle}
  \SetBreakableRel{\logof}
}{}
%    \end{macrocode}
%
% \iffalse
%</package>
% \fi
%
% \Finale
\endinput
