summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/rmathbr
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/rmathbr
Initial commit
Diffstat (limited to 'macros/latex/contrib/rmathbr')
-rw-r--r--macros/latex/contrib/rmathbr/README16
-rw-r--r--macros/latex/contrib/rmathbr/rmathbr.dtx2162
-rw-r--r--macros/latex/contrib/rmathbr/rmathbr.ins57
-rw-r--r--macros/latex/contrib/rmathbr/rmathbr.pdfbin0 -> 244898 bytes
4 files changed, 2235 insertions, 0 deletions
diff --git a/macros/latex/contrib/rmathbr/README b/macros/latex/contrib/rmathbr/README
new file mode 100644
index 0000000000..de0780e02a
--- /dev/null
+++ b/macros/latex/contrib/rmathbr/README
@@ -0,0 +1,16 @@
+rmathbr 1.0.3
+=============
+
+Repeating of math operator at the broken line and the new line
+in inline equations (common in Cyrillic mathematical typography)
+
+Copyright (C) 2008-2016 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.
diff --git a/macros/latex/contrib/rmathbr/rmathbr.dtx b/macros/latex/contrib/rmathbr/rmathbr.dtx
new file mode 100644
index 0000000000..6bdcc488cf
--- /dev/null
+++ b/macros/latex/contrib/rmathbr/rmathbr.dtx
@@ -0,0 +1,2162 @@
+%\iffalse meta-comment
+% !Mode:: "TeX:DTX:UK"
+% !DTXversion:: "2.5a"
+%
+% Copyright (C) 2008-2016 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>
+ [2016/04/10 1.0.3 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.3 (10-April-2016)}
+% \begin{itemize}
+% \item fix issue with sub-/superscripts in \verb|\Biggl|, \verb|\biggl|,
+% \verb|\Bigl|, \verb|\bigl|
+% \end{itemize}
+% \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}{\rmathbr@mathop{\mathopen\big#1}}
+\rmathbr@ReDeclareRobustCommandI{\Bigl}{\rmathbr@mathop{\mathopen\Big#1}}
+\rmathbr@ReDeclareRobustCommandI{\biggl}{\rmathbr@mathop{\mathopen\bigg#1}}
+\rmathbr@ReDeclareRobustCommandI{\Biggl}{\rmathbr@mathop{\mathopen\Bigg#1}}
+\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
diff --git a/macros/latex/contrib/rmathbr/rmathbr.ins b/macros/latex/contrib/rmathbr/rmathbr.ins
new file mode 100644
index 0000000000..40f251e448
--- /dev/null
+++ b/macros/latex/contrib/rmathbr/rmathbr.ins
@@ -0,0 +1,57 @@
+%% Copyright (C) 2008-2016 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.
+%%
+
+\input docstrip.tex
+\keepsilent
+
+\usedir{tex/latex/rmathbr}
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2008-2016 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.
+
+\endpreamble
+
+\generate{\file{rmathbr.sty}{\from{rmathbr.dtx}{package}}}
+
+\obeyspaces
+\Msg{*************************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you have to move the following *}
+\Msg{* file into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* rmathbr.sty *}
+\Msg{* *}
+\Msg{* To produce the documentation run the file rmathbr.dtx *}
+\Msg{* through LaTeX. *}
+\Msg{* *}
+\Msg{* Happy TeXing! *}
+\Msg{* *}
+\Msg{*************************************************************}
+
+\endbatchfile
diff --git a/macros/latex/contrib/rmathbr/rmathbr.pdf b/macros/latex/contrib/rmathbr/rmathbr.pdf
new file mode 100644
index 0000000000..270819baf9
--- /dev/null
+++ b/macros/latex/contrib/rmathbr/rmathbr.pdf
Binary files differ