summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-05-02 22:39:15 +0000
committerKarl Berry <karl@freefriends.org>2019-05-02 22:39:15 +0000
commitc7ea87b7b16e55ce9460b7789a8dcbc8d84ec51f (patch)
tree6d94648d85328f41681c915dd2fac94036332f14
parentccb02dc2b6399a3898e9759b69aa5fb77f99a607 (diff)
stix2-type1 (24apr19)
git-svn-id: svn://tug.org/texlive/trunk@50941 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/optidef/README.md2
-rw-r--r--Master/texmf-dist/doc/latex/optidef/optidef.pdfbin249224 -> 249996 bytes
-rw-r--r--Master/texmf-dist/doc/latex/optidef/optidef.tex37
-rw-r--r--Master/texmf-dist/tex/latex/optidef/optidef.sty658
4 files changed, 342 insertions, 355 deletions
diff --git a/Master/texmf-dist/doc/latex/optidef/README.md b/Master/texmf-dist/doc/latex/optidef/README.md
index d11a8218148..a8d8989abe3 100644
--- a/Master/texmf-dist/doc/latex/optidef/README.md
+++ b/Master/texmf-dist/doc/latex/optidef/README.md
@@ -68,7 +68,7 @@ E-mail: J.LagoGarcia(at)tudelft.nl
Github: https://github.com/jeslago/optidef
-## Latest stable version: Optidef 3.0
+## Latest stable version: Optidef 3.1
CTAN: https://www.ctan.org/pkg/optidef
diff --git a/Master/texmf-dist/doc/latex/optidef/optidef.pdf b/Master/texmf-dist/doc/latex/optidef/optidef.pdf
index b569baa3f01..9850e8371ef 100644
--- a/Master/texmf-dist/doc/latex/optidef/optidef.pdf
+++ b/Master/texmf-dist/doc/latex/optidef/optidef.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/optidef/optidef.tex b/Master/texmf-dist/doc/latex/optidef/optidef.tex
index e0a733be228..f5b560ab6de 100644
--- a/Master/texmf-dist/doc/latex/optidef/optidef.tex
+++ b/Master/texmf-dist/doc/latex/optidef/optidef.tex
@@ -1,13 +1,13 @@
\documentclass[a4paper]{article}
\usepackage{remreset}
-\usepackage[short]{optidef}
+\usepackage{optidef}
\usepackage{listings}
\usepackage{enumitem}
\usepackage[hidelinks]{hyperref}
\lstset{basicstyle=\ttfamily,breaklines=true}
% Title Page
-\title{\textit{\textbf{Optidef}} \\ A Latex library for optimization problems\\ \textnormal{Version - 3.0}}
+\title{\textit{\textbf{Optidef}} \\ A Latex library for optimization problems\\ \textnormal{Version - 3.1}}
\author{Jesus Lago}
@@ -306,18 +306,17 @@ In several cases, people encounter the problem of having an optimization problem
\begin{lstlisting}
\begin{mini*}<b>
{w,u}{f(w)+ R(w+6x)+ H(100w-x*w/500)}{}{}
-\breakObjective{-g(w^3-x^2*200+10000*w^5)}
\addConstraint{g(w_k)+h(w_k)}{=0,}{k=0,\ldots,N-1}
\addConstraint{l(w_k)}{=5u,\quad}{k=0,\ldots,N-1}
\end{mini*}
\end{lstlisting}
-For the \verb|mini|, \verb|maxi|, \verb|argmini|, and \verb|argmaxi| environments, when the option \verb|<b>| is provided, the environment does not automatically set the numbering nor the label of the environment. To create the number/label, the command \verb|\labelOP{label}| should be used. In particular, in the equation/constraint of the optimization problem where the label/number should be located, simply add \verb|\labelOP{label}|. For example, the following code:
+
+However, when using this option \verb|<b>|, it is important to note that labeling of equations is no longer automatic. To create the number/label, the command \verb|\labelOP{label}| should be used. In particular, in the equation/constraint of the optimization problem where the label/number should be located, simply add \verb|\labelOP{label}|. For example, the following code:
\begin{lstlisting}
\begin{mini}<b>
{w,u}{f(w)+ R(w+6x)+ H(100w-x*w/500)}{}{}
-\breakObjective{-g(w^3-x^2*200+10000*w^5)}
\addConstraint{g(w_k)+h(w_k)}{=0,}{k=0,\ldots,N-1 \labelOP{eq:label}}
\addConstraint{l(w_k)}{=5u,\quad}{k=0,\ldots,N-1}
\end{mini}
@@ -327,12 +326,11 @@ For the \verb|mini|, \verb|maxi|, \verb|argmini|, and \verb|argmaxi| environment
\begin{mini}<b>
{w,u}{f(w)+ R(w+6x)+ H(100w-x*w/500)}{}{}
- \breakObjective{-g(w^3-x^2*200+10000*w^5)}
\addConstraint{g(w_k)+h(w_k)}{=0,}{k=0,\ldots,N-1 \labelOP{eq:label}}
\addConstraint{l(w_k)}{=5u,\quad}{k=0,\ldots,N-1}
\end{mini}
-In addition to automatic breaking equations, manual breaks at selected locations can also be done using the \verb|\displaybreak| command. Just add \verb|\displaybreak| between the two constraints that need to be broken, e.g.:
+The option \verb|<b>| automatically breaks the optimization problem when the problem is too large to fit in one page (e.g.\ see an example in \ref{ex:break}). However, manual breaks at selected locations are also possible using the \verb|\displaybreak| command. Just add \verb|\displaybreak| between the two constraints that need to be broken, e.g.:
\begin{lstlisting}
\begin{mini}<b>
@@ -789,11 +787,15 @@ Exactly the same syntax and definition as the previous environments, but now for
\end{maxi}
\subsection{Example 13 - Breaking optimization problem}
+\label{ex:break}
\begin{lstlisting}
\begin{mini}<b>
{w}{f(w)+ R(w+6x)}
{\label{eq:Example1}}{}
\addConstraint{g(w)}{=0}
+\addConstraint{p(w)}{=0}
+\addConstraint{q(w)}{=0}
+\addConstraint{r(w)}{=0\labelOP{testLabel}}
\addConstraint{n(w)}{= 6}
\addConstraint{L(w)+r(x)}{=Kw+p}
\addConstraint{h(x)}{=0.}
@@ -805,9 +807,9 @@ outputs:
{w}{f(w)+ R(w+6x)}
{\label{eq:Example1}}{}
\addConstraint{g(w)}{=0}
-%\addConstraint{p(w)}{=0}
-%\addConstraint{q(w)}{=0}
-%\addConstraint{r(w)}{=0}
+\addConstraint{p(w)}{=0}
+\addConstraint{q(w)}{=0}
+\addConstraint{r(w)}{=0\labelOP{testLabel}}
%\addConstraint{s(w)}{=0}
%\addConstraint{t(w)}{=0}
%\addConstraint{v(w)}{=0}
@@ -821,13 +823,14 @@ outputs:
\subsection{Example 14 - All Possible Parameters}
\begin{verbatim}
-\begin{mini!}|s|[1]<b>
-{w}{f(w)+ R(w+6x)}
-{}{w^*=}
-\addConstraint{g(w)}{=0,}{ \quad \text{(Dynamic constraint)}}
-\addConstraint{n(w)}{= 6,}{ \quad \text{(Boundary constraint)}}
-\addConstraint{L(w)+r(x)}{=Kw+p,}{ \quad \text{(Random constraint)}}
-\addConstraint{h(x)}{=0,}{ \quad \text{(Path constraint).}}
+\begin{mini!}|s|[2]<b>
+{w}{f(w)+ R(w+6x)\label{eq:ObjectiveExample3}}
+{\label{eq:Example3}}
+{w^*=}
+\addConstraint{g(w)}{=0 \label{eq:C1Example3}}
+\addConstraint{n(w)}{= 6 \label{eq:C2Example3}}
+\addConstraint{L(w)+r(x)}{=Kw+p \label{eq:C3Example3}}
+\addConstraint{h(x)}{=0.\label{eq:C4Example3}}
\end{mini!}
\end{verbatim}
diff --git a/Master/texmf-dist/tex/latex/optidef/optidef.sty b/Master/texmf-dist/tex/latex/optidef/optidef.sty
index be29075b6e5..1125e4e8a12 100644
--- a/Master/texmf-dist/tex/latex/optidef/optidef.sty
+++ b/Master/texmf-dist/tex/latex/optidef/optidef.sty
@@ -1,4 +1,4 @@
-% optidef - Version 3.0
+% optidef - Version 3.1
%
%Copyright 2018 Jesus Lago
%
@@ -7,12 +7,12 @@
%
%This work has the LPPL maintenance status 'maintained'. The Current Maintainer of this work is J. Lago .
%
-%E-mail: J.LagoGarcia@tudelft.nl
+%E-mail: j.lagogarcia@tudelft.nl
%
%This work consists of the file optidef.sty.
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{optidef}[2018/07/19 - version=3.0, Package for defining optimization problems]
+\ProvidesPackage{optidef}[2019/04/23 - version=3.1, Package for defining optimization problems]
\RequirePackage{environ}
\RequirePackage{mathtools}
@@ -32,26 +32,26 @@
\newcommand{\defaultConstraintFormat}{0}
\newcommand{\labelOP}[1]{\stepcounter{equation}\tag{\theequation}\label{#1}}
-\DeclareOption{short}{
- \renewcommand{\defaultProblemFormat}{s}
+\DeclareOption{short}{%
+ \renewcommand{\defaultProblemFormat}{s}%
}
-\DeclareOption{long}{
-\renewcommand{\defaultProblemFormat}{l}
+\DeclareOption{long}{%
+\renewcommand{\defaultProblemFormat}{l}%
}
-\DeclareOption{nocomma}{
- \renewcommand{\defaultOCPConstraint}{}
+\DeclareOption{nocomma}{%
+ \renewcommand{\defaultOCPConstraint}{}%
}
-\DeclareOption{c1}{
- \renewcommand{\defaultConstraintFormat}{1}
+\DeclareOption{c1}{%
+ \renewcommand{\defaultConstraintFormat}{1}%
}
-\DeclareOption{c2}{
- \renewcommand{\defaultConstraintFormat}{2}
+\DeclareOption{c2}{%
+ \renewcommand{\defaultConstraintFormat}{2}%
}
-\DeclareOption{c3}{
- \renewcommand{\defaultConstraintFormat}{3}
+\DeclareOption{c3}{%
+ \renewcommand{\defaultConstraintFormat}{3}%
}
\ProcessOptions\relax
@@ -91,42 +91,35 @@
%%%%%%%%%%%%%%%%%%%%%%%
% OBJECTIVE COMMAND DEFINITION
%%%%%%%%%%%%%%%%%%%%%%%
-\newcommand{\bodyobj}[4]
-{
- \ifthenelse{\isempty{#4}}
- {
+\newcommand{\bodyobj}[4]{%
+ \ifthenelse{\isempty{#4}}{%
&\underset{\displaystyle #1}{\mathrlap{\mathrm{#3}}\phantom{\mathrm{subject~to}}} \quad #2\span\span\span\span
- }
- {
+ }{%
#4~ &\underset{\displaystyle #1}{\mathrlap{\mathrm{#3}}\phantom{\mathrm{subject~to}}} \quad #2\span\span\span\span
- }
+ }%
}
%% LONG VERSION "minimize" instead of "min"
-\newcommand{\bodyobjLong}[4]
-{
- \ifthenelse{\isempty{#4}}
- {
- &\mathmakebox[\widthof{$\underset{\displaystyle #1}{\mathrm{subject~to}}$}]{\underset{\displaystyle #1}{\mathrm{#3}}} \quad #2\span\span\span\span
- }
- {
- #4~ &\mathmakebox[\widthof{$\underset{\displaystyle #1}{\mathrm{subject~to}}$}]{\underset{\displaystyle #1}{\mathrm{#3}}} \quad #2\span\span\span\span
- }
+\newcommand{\bodyobjLong}[4]{%
+ \ifthenelse{\isempty{#4}}{%
+ &\mathmakebox[\widthof{$\underset{\displaystyle #1}{\mathrm{subject~to}}$}][l]{\underset{\displaystyle #1}{\mathrm{#3}}} \quad #2\span\span\span\span
+ }{%
+ #4~&\mathmakebox[\widthof{$\underset{\displaystyle #1}{\mathrm{subject~to}}$}][l]{\underset{\displaystyle #1}{\mathrm{#3}}} \quad #2\span\span\span\span
+ }%
}
%% SHORT VERSION "min" instead of "minimize"
-\newcommand{\bodyobjShort}[4]
-{
- \ifthenelse{\isempty{#4}}
- {
+\newcommand{\bodyobjShort}[4]{%
+ \ifthenelse{\isempty{#4}}{%
&\underset{\displaystyle #1}{\mathrm{#3}} \quad #2\span\span\span\span
- }
- {
+ }{%
#4 ~ &\underset{\displaystyle #1}{\mathrm{#3}} \quad #2\span\span\span\span
- }
+ }%
}
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% DEFINITION DIFFERENT TYPE OF BODY CONSTRAINTS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -135,141 +128,137 @@
% Main command. Dynamically redefined at every new problem definition.
-\DeclareDocumentCommand{\bodyconst}{m G{}}
-{ \equalsNothing{#2}{
+\DeclareDocumentCommand{\bodyconst}{m G{}}{%
+ \equalsNothing{#2}{%
\\ &\underset{\displaystyle \phantom{\localOptimalVariable}}{\mathrm{subject~to}} \quad &&#1 #2
- }{
+ }{%
\\ &\underset{\displaystyle \phantom{\localOptimalVariable}}{\mathrm{subject~to}} \quad &#1 & #2
- }
+ }%
}
-\newcommand{\bodySubjectToDefinition}{
+\newcommand{\bodySubjectToDefinition}{%
%## If the short version of "subject to", i.e. "s.t.", should be used the command \bodySubjectTo should be modified
-\ifthenelse{\equal{\localProblemFormat}{s}}
-{%%
-\global\def\bodySubjectTo{\mathmakebox[\widthof{$\underset{\displaystyle \phantom{\localOptimalVariable}}{\mathrm{\localProblemType}}$}][c]{\mathmakebox[\widthof{$\mathrm{\localProblemType}$}][l]{\mathrm{\kern 0.1em s.t.}}}}
-}{%%
-\global\def\bodySubjectTo{\mathmakebox[\widthof{$\underset{\displaystyle \phantom{\localOptimalVariable}}{\mathrm{\,subject~to}}$}][c]{\mathmakebox[\widthof{$\mathrm{\localProblemType}$}][l]{\mathrm{subject~to}}}}
-}%%
-%
+\ifthenelse{\equal{\localProblemFormat}{s}}{%
+\global\def\bodySubjectTo{\mathmakebox[\widthof{$\underset{\displaystyle\phantom{\localOptimalVariable}}{\mathrm{\localProblemType}}$}][c]{\mathmakebox[\widthof{$\mathrm{\localProblemType}$}][l]{\mathrm{\kern 0.1em s.t.}}}}
+}{%
+\global\def\bodySubjectTo{\mathmakebox[\widthof{$\underset{\displaystyle\phantom{\localOptimalVariable}}{\mathrm{subject~to}}$}][c]{%
+% \mathmakebox[\widthof{$\mathrm{\localProblemType}$}][l]
+ {\mathrm{subject~to}}
+ }%
+ }%
+}%
}
% Standard version.
-\DeclareDocumentCommand{\bodyconstRight}{m G{} G{}}
-{%%%
+\DeclareDocumentCommand{\bodyconstRight}{m G{} G{}}{%
\bodySubjectToDefinition
%## Set the first constraint according to the format used for "subject to"
-\equalsNothing{#3}{%%
- \equalsNothing{#2}{%
- \\ & \bodySubjectTo \quad &&#1 #2
+\equalsNothing{#3}{%
+ \equalsNothing{#2}{%
+ \\ & \bodySubjectTo \quad &&#1 #2
}{%
\\ &\bodySubjectTo \quad &#1 & #2
}%
\togglefalse{previousThird}
-}{%%
+}{%
\equalsNothing{#2}{%
\\ &\bodySubjectTo \quad &&#1 #2 &&#3
}{%
\\ &\bodySubjectTo \quad &#1 & #2 &&#3
}%
\toggletrue{previousThird}
-}%%
-}%%%
+}%
+}
% Single alignment point but next to subject to
-\DeclareDocumentCommand{\bodyconstOneAlign}{m G{} G{}}
-{
+\DeclareDocumentCommand{\bodyconstOneAlign}{m G{} G{}}{%
\bodySubjectToDefinition
%## Set the first constraint according to the format used for "subject to"
- \equalsNothing{#3}{
- \\ &\bodySubjectTo\quad &&#1 #2 \togglefalse{previousThird}
- }{
+ \equalsNothing{#3}{%
+ \\ &\bodySubjectTo\quad &&#1 #2 \togglefalse{previousThird}
+ }{%
\\ &\bodySubjectTo\quad &&#1 #2 &&#3
\toggletrue{previousThird}
- }
+ }%
}
% Contraints below subject to and with a single alignment point
-\DeclareDocumentCommand{\bodyconstOneAlignBelow}{m G{} G{}}
-{
+\DeclareDocumentCommand{\bodyconstOneAlignBelow}{m G{} G{}}{%
\bodySubjectToDefinition
%## Set the first constraint according to the format used for "subject to"
- \equalsNothing{#3}{
+ \equalsNothing{#3}{%
\\ &\bodySubjectTo \span\span\span\span \\
&&&#1 #2 \togglefalse{previousThird}
- }{
+ }{%
\\ &\bodySubjectTo \span\span\span\span \\
&&&#1 #2 &&#3
\toggletrue{previousThird}
- }
+ }%
}
% Contraints below subject to but with double alignment point
-\DeclareDocumentCommand{\bodyconstBelow}{m G{} G{}}
-{
+\DeclareDocumentCommand{\bodyconstBelow}{m G{} G{}}{%
\bodySubjectToDefinition
%## Set the first constraint according to the format used for "subject to"
- \equalsNothing{#3}{
- \equalsNothing{#2}{
+ \equalsNothing{#3}{%
+ \equalsNothing{#2}{%
\\ &\bodySubjectTo\span\span\span\span \\
&&&#1 #2
- }{
+ }{%
\\ &\bodySubjectTo \span\span\span\span \\
&&#1 & #2
- }
+ }%
\togglefalse{previousThird}
- }{
- \equalsNothing{#2}{
+ }{%
+ \equalsNothing{#2}{%
\\ &\bodySubjectTo \span\span\span\span \\
&&&#1 #2 &&#3
- }{
+ }{%
\\ &\bodySubjectTo\span\span\span\span \\
&&#1 & #2 &&#3
- }
+ }%
\toggletrue{previousThird}
- }
+ }%
}
% Contraints below subject to for the case of having a reference/label for each individual equation
-\DeclareDocumentCommand{\bodyconstBelowMult}{m G{} G{}}
-{
+\DeclareDocumentCommand{\bodyconstBelowMult}{m G{} G{}}{%
\bodySubjectToDefinition
%## Set the first constraint according to the format used for "subject to"
- \equalsNothing{#3}{
- \equalsNothing{#2}{
+ \equalsNothing{#3}{%
+ \equalsNothing{#2}{%
\\ &\bodySubjectTo\span\span\span\span \nonumber \\
&&&#1 #2
- }{
+ }{%
\\ &\bodySubjectTo \span\span\span\span \nonumber \\
&&#1 & #2
- }
+ }%
\togglefalse{previousThird}
- }{
- \equalsNothing{#2}{
+ }{%
+ \equalsNothing{#2}{%
\\ &\bodySubjectTo\span\span\span\span \nonumber \\
&&&#1 #2 &&#3
- }{
+ }{%
\\ &\bodySubjectTo \span\span\span\span \nonumber \\
&&#1 & #2 &&#3
- }
+ }%
\toggletrue{previousThird}
- }
+ }%
}
% Contraints below subject to and with a single alignment point for the case of having a reference/label for each individual equation
-\DeclareDocumentCommand{\bodyconstOneAlignBelowMult}{m G{} G{}}
-{
+\DeclareDocumentCommand{\bodyconstOneAlignBelowMult}{m G{} G{}}{%
\bodySubjectToDefinition
%## Set the first constraint according to the format used for "subject to"
- \equalsNothing{#3}{
+ \equalsNothing{#3}{%
\\ &\bodySubjectTo\span\span\span\span \nonumber \\
&&&#1 #2 \togglefalse{previousThird}
- }{
+ }{%
\\ &\bodySubjectTo\span\span\span\span \nonumber \\
&&&#1 #2 && #3
\toggletrue{previousThird}
- }
+ }%
}
@@ -279,238 +268,253 @@
% Main command. Dynamically redefined at every problem definiton.
-\DeclareDocumentCommand{\addConstraint}{m G{} G{}}{
+\DeclareDocumentCommand{\addConstraint}{m G{} G{}}{%
% "If clause" selecting whether a third parameter (#3) defining extra constraint information is used
-\equalsNothing{#3}{
+\equalsNothing{#3}{%
% Second "If clause" selecting whether two or 1 elements for the constraints are used
- \equalsNothing{#2}{
- \iftoggle{bodyCon}{
+ \equalsNothing{#2}{%
+ \iftoggle{bodyCon}{%
\bodyconst{#1}
\togglefalse{bodyCon}
- }{
+ }{%
\defaultOCPConstraint\\&\quad &&#1 #2\span\span
\togglefalse{bodyCon}
- }
- }{
- \iftoggle{bodyCon}{
+ }%
+ }{%
+ \iftoggle{bodyCon}{%
\bodyconst{#1}{#2}
\togglefalse{bodyCon}
- }{
+ }{%
\defaultOCPConstraint\\&\quad &#1 & #2\span\span
\togglefalse{bodyCon}
- }
- }
+ }%
+ }%
\togglefalse{previousThird}
- }{
- \iftoggle{bodyCon}{
+ }{%
+ \iftoggle{bodyCon}{%
\bodyconst{#1}{#2}{#3}
\togglefalse{bodyCon}
- }{
- \equalsNothing{#2}{
+ }{%
+ \equalsNothing{#2}{%
\defaultOCPConstraint\\&\quad &&#1 #2 && #3
- }{
+ }{%
\defaultOCPConstraint\\&\quad &#1 & #2 && #3
- }
+ }%
\togglefalse{bodyCon}
- }
+ }%
\toggletrue{previousThird}
- }
+ }%
}
% Standard version of adding constraints
% The toggle previousThird indicates if the previous constraint had three arguments or two. According to that it adjust the required spans at the end of the previous contraint. It is needed because the line jump after a constraint it is done at the beginning of the next constraint, not after the constraint itself. That avoid the last jump of the last constraint.
% The toggle bodyCon indicate that it is the first contraint. The first contraint is different that the rest because it contains "subject to"
% The commands \equalsNothing checks if the optional arguments exists
-\DeclareDocumentCommand{\standardAddConstraint}{m G{} G{}}{
- \iftoggle{previousThird}
- {
+\DeclareDocumentCommand{\standardAddConstraint}{m G{} G{}}{%
+ \iftoggle{previousThird}{%
\renewcommand{\spanit}{}
- }{
+ }{%
\renewcommand{\spanit}{\span\span}
- }
-\iftoggle{bodyCon}{
+ }%
+\iftoggle{bodyCon}{%
\bodyconstRight{#1}{#2}{#3}
\togglefalse{bodyCon}
-}{
- \equalsNothing{#2}{
- \equalsNothing{#3}{
+}{%
+ \equalsNothing{#2}{%
+ \equalsNothing{#3}{%
\defaultOCPConstraint\spanit\\&\quad &&#1 #2
\togglefalse{previousThird}
- }{
+ }{%
\defaultOCPConstraint\spanit\\&\quad &&#1 #2 && #3
\toggletrue{previousThird}
- }
- }{
- \equalsNothing{#3}{
+ }%
+ }{%
+ \equalsNothing{#3}{%
\defaultOCPConstraint\spanit\\&\quad &#1 & #2
\togglefalse{previousThird}
- }{
+ }{%
\defaultOCPConstraint\spanit\\&\quad &#1 & #2 && #3
\toggletrue{previousThird}
- }
-}
-\togglefalse{bodyCon}
-}
+ }%
+}%
+\togglefalse{bodyCon}%
+}%
}
% Adding constraints below subject to
-\DeclareDocumentCommand{\BelowAddConstraint}{m G{} G{}}{
- \iftoggle{bodyCon}{
+\DeclareDocumentCommand{\BelowAddConstraint}{m G{} G{}}{%
+ \iftoggle{bodyCon}{%
\bodyconstBelow{#1}{#2}{#3}
\togglefalse{bodyCon}
- }{
- \equalsNothing{#2}{
- \equalsNothing{#3}{
+ }{%
+ \equalsNothing{#2}{%
+ \equalsNothing{#3}{%
\defaultOCPConstraint\spanit\\&&&#1 #2 \togglefalse{previousThird}
- }{
+ }{%
\defaultOCPConstraint\spanit\\&&&#1 #2 && #3
\toggletrue{previousThird}
- }
- }{
- \equalsNothing{#3}{
+ }%
+ }{%
+ \equalsNothing{#3}{%
\defaultOCPConstraint\spanit\\ &&#1 &#2 \togglefalse{previousThird}
- }{
+ }{%
\defaultOCPConstraint\spanit\\ &&#1 &#2 && #3
\toggletrue{previousThird}
- }
- }
- \togglefalse{bodyCon}
- }
+ }%
+ }%
+ \togglefalse{bodyCon}%
+ }%
}
% Adding constraints with a single alignment point but next to subject to
-\DeclareDocumentCommand{\oneAlignAddConstraint}{m G{} G{}}{
- \iftoggle{bodyCon}{
+\DeclareDocumentCommand{\oneAlignAddConstraint}{m G{} G{}}{%
+ \iftoggle{bodyCon}{%
\bodyconstOneAlign{#1}{#2}{#3}
\togglefalse{bodyCon}
- }{
- \equalsNothing{#3}{
+ }{%
+ \equalsNothing{#3}{%
\defaultOCPConstraint\spanit\\&\quad &&#1 #2 \togglefalse{previousThird}
- }{
+ }{%
\defaultOCPConstraint\spanit\\&\quad &&#1 #2 && #3
\toggletrue{previousThird}
- }
- \togglefalse{bodyCon}
- }
+ }%
+ \togglefalse{bodyCon}%
+ }%
}
% Adding constraints for a single alignment point and with the constraints below
-\DeclareDocumentCommand{\oneAlignBelowAddConstraint}{m G{} G{}}{
- \iftoggle{bodyCon}{
+\DeclareDocumentCommand{\oneAlignBelowAddConstraint}{m G{} G{}}{%
+ \iftoggle{bodyCon}{%
\bodyconstOneAlignBelow{#1}{#2}{#3}
\togglefalse{bodyCon}
- }{
- \equalsNothing{#3}{
+ }{%
+ \equalsNothing{#3}{%
\defaultOCPConstraint\spanit\\& &&#1 #2\togglefalse{previousThird}
- }{
+ }{%
\defaultOCPConstraint\spanit\\& &&#1 #2 && #3
\toggletrue{previousThird}
- }
- \togglefalse{bodyCon}
- }
+ }%
+ \togglefalse{bodyCon}%
+ }%
}
% Adding constraints below "subject to" for multiple references
-\DeclareDocumentCommand{\BelowAddConstraintMult}{m G{} G{}}{
- \iftoggle{bodyCon}{
+\DeclareDocumentCommand{\BelowAddConstraintMult}{m G{} G{}}{%
+ \iftoggle{bodyCon}{%
\bodyconstBelowMult{#1}{#2}{#3}
\togglefalse{bodyCon}
- }{
- \equalsNothing{#3}{
- \equalsNothing{#2}{
+ }{%
+ \equalsNothing{#3}{%
+ \equalsNothing{#2}{%
\defaultOCPConstraint\spanit\\&&&#1 #2
- }{
+ }{%
\defaultOCPConstraint\spanit\\ &&#1 &#2
- }
+ }%
\togglefalse{previousThird}
- }{
+ }{%
\equalsNothing{#2}{
\defaultOCPConstraint\spanit\\&&&#1 #2 && #3
- }{
+ }{%
\defaultOCPConstraint\spanit\\ &&#1 &#2&& #3}
\toggletrue{previousThird}
- }
- \togglefalse{bodyCon}
- }
+ }%
+ \togglefalse{bodyCon}%
+ }%
}
% Adding constraints for a single alignment point and with the constraints below for multiple references
\DeclareDocumentCommand{\oneAlignBelowAddConstraintMult}{m G{} G{}}{
- \iftoggle{bodyCon}{
+ \iftoggle{bodyCon}{%
\bodyconstOneAlignBelowMult{#1}{#2}{#3}
\togglefalse{bodyCon}
- }{
- \equalsNothing{#3}{
+ }{%
+ \equalsNothing{#3}{%
\defaultOCPConstraint\spanit\\& &&#1 #2 \togglefalse{previousThird}
- }{
+ }{%
\defaultOCPConstraint\spanit\\& &&#1 #2 && #3
\toggletrue{previousThird}
- }
+ }%
\togglefalse{bodyCon}
-}
+}%
}
%%%%%%%%%%%%%%%%%%%%
% ADDING EXTRA LINE
%%%%%%%%%%%%%%%%%%%%
-\newcommand{\breakObjective}[1]
-{
-\\&\mathmakebox[\widthInit]{\phantom{\underset{}{}}}#1\span\span\span\span
-}
+\newcommand{\breakObjective}[1]{%
+ \bodyBreakObjectiveDefinition
+\\
+\bodyBreakObjective\quad #1\span\span\span\span
+}%
+\newcommand{\bodyBreakObjectiveDefinition}{%
+ \ifthenelse{\equal{\localProblemFormat}{s}}{%
+ \global\def\bodyBreakObjective{\mathmakebox[\widthof{$\underset{\displaystyle\phantom{\localOptimalVariable}}{\mathrm{\localProblemType}}$}][c]{%
+ \mathmakebox[\widthof{$\mathrm{\localProblemType}$}][l]{}%
+ }%
+ }%
+ }%
+{%
+ \global\def\bodyBreakObjective{\mathmakebox[\widthof{$\underset{\displaystyle\phantom{\localOptimalVariable}}{\mathrm{subject~to}}$}][c]{%
+ {}%
+ }%
+ }%
+ }%
+}%
+
%%%%%%%%%%%%%%%%%%%%
% SELECTING TYPE OF FORMAT
%%%%%%%%%%%%%%%%%%%%
-\newcommand{\selectConstraint}[1]{
- \ifthenelse{\equal{#1}{1}}{
+\newcommand{\selectConstraint}[1]{%
+ \ifthenelse{\equal{#1}{1}}{%
\let\addConstraint\BelowAddConstraint
- }{
- \ifthenelse{\equal{#1}{2}}{
+ }{%
+ \ifthenelse{\equal{#1}{2}}{%
\let\addConstraint\oneAlignAddConstraint
- }{
- \ifthenelse{\equal{#1}{3}}{
+ }{%
+ \ifthenelse{\equal{#1}{3}}{%
\let\addConstraint\oneAlignBelowAddConstraint
- }{
- \let\addConstraint\standardAddConstraint}
-}
-}
-}
+ }{%
+ \let\addConstraint\standardAddConstraint
+ }%
+}%
+}%
+}%
% Selecting for multiple references
-\newcommand{\selectConstraintMult}[1]{
- \ifthenelse{\equal{#1}{1}}{
+\newcommand{\selectConstraintMult}[1]{%
+ \ifthenelse{\equal{#1}{1}}{%
\let\addConstraint\BelowAddConstraintMult
- }{
- \ifthenelse{\equal{#1}{2}}{
+ }{%
+ \ifthenelse{\equal{#1}{2}}{%
\let\addConstraint\oneAlignAddConstraint
- }{
- \ifthenelse{\equal{#1}{3}}{
+ }{%
+ \ifthenelse{\equal{#1}{3}}{%
\let\addConstraint\oneAlignBelowAddConstraintMult
- }{
- \let\addConstraint\standardAddConstraint}
-}
-}
-}
+ }{%
+ \let\addConstraint\standardAddConstraint
+}%
+}%
+}%
+}%
%%%%%%%%%%%%%%%%%%%
% SETTING DEFAULT FORMAT
%%%%%%%%%%%%%%%%%%%
% Originally, \toggletrue{bodyCon} was inside this function, however, spacing issues after environment made me remove it.
-\newcommand{\setStandardMini}{
- \let\addConstraint\standardAddConstraint
-}
+\newcommand{\setStandardMini}{\let\addConstraint\standardAddConstraint}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% COMMANDS TO DEFINE ALL REQUIRED PROPERTIES TO CHOOSE SHORT/LONG FORMAT
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newcommand{\setFormatShort}[2]{\global\def\localProblemFormat{s} \let\bodyobj\bodyobjShort \renewcommand{\localProblemType}{#1}
- \setlength{\widthInit}{\widthof{$\underset{\displaystyle #2}{\mathrm{#1}}$\quad}}
+\newcommand{\setFormatShort}[2]{\global\def\localProblemFormat{s}\let\bodyobj\bodyobjShort \renewcommand{\localProblemType}{#1}%
+ \setlength{\widthInit}{\widthof{$\underset{\displaystyle #2}{\mathrm{#1}}$\quad}}%
}
-\newcommand{\setFormatLong}[2]{\global\def\localProblemFormat{l} \let\bodyobj\bodyobjLong \renewcommand{\localProblemType}{#1}
-\setlength{\widthInit}{\widthof{$\underset{\displaystyle #2}{\mathrm{subject~to}}$ \quad}}
-}
+\newcommand{\setFormatLong}[2]{\global\def\localProblemFormat{l}\let\bodyobj\bodyobjLong \renewcommand{\localProblemType}{#1}%
+\setlength{\widthInit}{\widthof{$\underset{\displaystyle #2}{\mathrm{subject~to}}$ \quad}}%
+}%
%%%%%%%%%%%%%%%%%%%%%
%MINIMIZATION ENVIRONMENTS
@@ -521,58 +525,46 @@
% Base environment for the three possible types of referencing: 1 label, no label or multilabel
% Base environment defined using NewEnviron package because of \BODY command
\NewEnviron{BaseMini}[6]{%
-
-\selectConstraint{#1}
-\renewcommand{\localOptimalVariable}{#2}
+\selectConstraint{#1}%
+\renewcommand{\localOptimalVariable}{#2}%
\begin{equation}
#4
\begin{alignedat}{5}
\bodyobj{#2}{#3}{#6}{#5}
\BODY
\end{alignedat}
-\end{equation}
+\end{equation}%
\setStandardMini
}
\NewEnviron{BaseMiniStar}[6]{%
-\selectConstraint{#1}
-\renewcommand{\localOptimalVariable}{#2}
-\ifthenelse{\equal{#6}{b}}{
- \begingroup
- \allowdisplaybreaks
-}{}
+\selectConstraint{#1}%
+\renewcommand{\localOptimalVariable}{#2}%
+\ifthenelse{\equal{#6}{b}}{\begingroup\allowdisplaybreaks}{}%
\begin{alignat*}{5}
\bodyobj{#2}{#3}{#5}{#4}
\BODY
-\end{alignat*}
-\ifthenelse{\equal{#6}{b}}{
- \endgroup
-}{}
+\end{alignat*}%
+\ifthenelse{\equal{#6}{b}}{\endgroup}{}%
\setStandardMini
}
\NewEnviron{BaseMiniExclam}[7]{%
- \selectConstraintMult{#1}
- \renewcommand{\localOptimalVariable}{#2}
-\ifthenelse{\equal{#7}{b}}{
- \begingroup
- \allowdisplaybreaks
-}{}
+ \selectConstraintMult{#1}%
+ \renewcommand{\localOptimalVariable}{#2}%
+ \ifthenelse{\equal{#7}{b}}{\begingroup\allowdisplaybreaks}{}%
\begin{subequations}
#4
\begin{alignat}{5}
\bodyobj{#2}{#3}{#6}{#5}
\BODY
\end{alignat}
- \end{subequations}
-\ifthenelse{\equal{#7}{b}}{
- \endgroup
-}{}
- \setStandardMini
+ \end{subequations}%
+\ifthenelse{\equal{#7}{b}}{\endgroup}{}%
+\setStandardMini
}
-
% INDIVIDUAL AND SPECIFIC ENVIRONMENTS (mini, maxi, argmini*...)
% Specific environments defined with xparse package due to arguments options
@@ -580,191 +572,183 @@
% In the below definitions, \toggletrue{bodyCon} has to be added once the definition of the environment is finished. I tried to do inside the environment itself using \setStandardMini, but it produced some ugly text displacemente.
% Single reference probems
-\DeclareDocumentEnvironment{mini}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}{
-\ifthenelse{\equal{#3}{b}}
-{
- \ifthenelse{\equal{#1}{s}}
+\DeclareDocumentEnvironment{mini}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}{%
+\ifthenelse{\equal{#3}{b}}{%
+ \ifthenelse{\equal{#1}{s}}%
% Short version problem
- {\setFormatShort{min}{#2} \BaseMiniStar{#2}{#4}{#5}{#7}{min}{#3}}
+ {\setFormatShort{min}{#2}\BaseMiniStar{#2}{#4}{#5}{#7}{min}{#3}}%
% Long version problem
- {\setFormatLong{minimize}{#2} \BaseMiniStar{#2}{#4}{#5}{#7}{minimize}{#3}}
-}
-{
- \ifthenelse{\equal{#1}{s}}
+ {\setFormatLong{minimize}{#2}\BaseMiniStar{#2}{#4}{#5}{#7}{minimize}{#3}}%
+}{%
+ \ifthenelse{\equal{#1}{s}}%
% Short version problem
- {\setFormatShort{min}{#2} \BaseMini{#2}{#4}{#5}{#6}{#7}{min}}
+ {\setFormatShort{min}{#2}\BaseMini{#2}{#4}{#5}{#6}{#7}{min}}%
% Long version problem
- {\setFormatLong{minimize}{#2} \BaseMini{#2}{#4}{#5}{#6}{#7}{minimize}}
-}
+ {\setFormatLong{minimize}{#2}\BaseMini{#2}{#4}{#5}{#6}{#7}{minimize}}%
+}%
}%
{\endBaseMini\toggletrue{bodyCon}}
-\DeclareDocumentEnvironment{argmini}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}{
- \ifthenelse{\equal{#3}{b}}
- {
- \ifthenelse{\equal{#1}{s}}
+\DeclareDocumentEnvironment{argmini}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}{%
+ \ifthenelse{\equal{#3}{b}}{%
+ \ifthenelse{\equal{#1}{s}}%
% Short version problem
- {\setFormatShort{arg~min}{#2} \BaseMiniStar{#2}{#4}{#5}{#7}{arg~min}{#3}}
+ {\setFormatShort{arg~min}{#2}\BaseMiniStar{#2}{#4}{#5}{#7}{arg~min}{#3}}%
% Long version problem
- {\setFormatLong{arg~min}{#2} \BaseMiniStar{#2}{#4}{#5}{#7}{arg~min}{#3}}
- }
- {
- \ifthenelse{\equal{#1}{s}}
+ {\setFormatLong{arg~min}{#2}\BaseMiniStar{#2}{#4}{#5}{#7}{arg~min}{#3}}%
+ }{%
+ \ifthenelse{\equal{#1}{s}}%
% Short version problem
- {\setFormatShort{arg~min}{#2} \BaseMini{#2}{#4}{#5}{#6}{#7}{arg~min}}
+ {\setFormatShort{arg~min}{#2}\BaseMini{#2}{#4}{#5}{#6}{#7}{arg~min}}%
% Long version problem
- {\setFormatLong{arg~min}{#2} \BaseMini{#2}{#4}{#5}{#6}{#7}{arg~min}}
- }
+ {\setFormatLong{arg~min}{#2}\BaseMini{#2}{#4}{#5}{#6}{#7}{arg~min}}%
+ }%
}%
{\endBaseMini\toggletrue{bodyCon}}
% No reference
-\DeclareDocumentEnvironment{mini*}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}
-{\ifthenelse{\equal{#1}{s}}
+\DeclareDocumentEnvironment{mini*}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}{%
+ \ifthenelse{\equal{#1}{s}}%
% Short version problem
- {\setFormatShort{min}{#2} \BaseMiniStar{#2}{#4}{#5}{#7}{min}{#3}}
+ {\setFormatShort{min}{#2}\BaseMiniStar{#2}{#4}{#5}{#7}{min}{#3}}%
% Long version problem
- {\setFormatLong{minimize}{#2} \BaseMiniStar{#2}{#4}{#5}{#7}{minimize}{#3}}
+ {\setFormatLong{minimize}{#2}\BaseMiniStar{#2}{#4}{#5}{#7}{minimize}{#3}}%
}{\endBaseMiniStar\toggletrue{bodyCon}}
-\DeclareDocumentEnvironment{argmini*}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}
-{\ifthenelse{\equal{#1}{s}}
+\DeclareDocumentEnvironment{argmini*}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}{%
+ \ifthenelse{\equal{#1}{s}}%
% Short version problem
-{\setFormatShort{arg~min}{#2} \BaseMiniStar{#2}{#4}{#5}{#7}{arg~min}{#3}}
+{\setFormatShort{arg~min}{#2}\BaseMiniStar{#2}{#4}{#5}{#7}{arg~min}{#3}}%
% Long version problem
-{\setFormatLong{arg~min}{#2} \BaseMiniStar{#2}{#4}{#5}{#7}{arg~min}{#3}}
+{\setFormatLong{arg~min}{#2}\BaseMiniStar{#2}{#4}{#5}{#7}{arg~min}{#3}}%
}{\endBaseMiniStar\toggletrue{bodyCon}}
% Multiple reference
-\DeclareDocumentEnvironment{mini!}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}
-{\ifthenelse{\equal{#1}{s}}
+\DeclareDocumentEnvironment{mini!}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}{%
+ \ifthenelse{\equal{#1}{s}}%
% Short version problem
- {\setFormatShort{min}{#2} \BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{min}{#3}}
+ {\setFormatShort{min}{#2}\BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{min}{#3}}%
% Long version problem
- {\setFormatLong{minimize}{#2} \BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{minimize}{#3}}
+ {\setFormatLong{minimize}{#2}\BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{minimize}{#3}}%
}{\endBaseMiniExclam\toggletrue{bodyCon}}
-\DeclareDocumentEnvironment{argmini!}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}
-{\ifthenelse{\equal{#1}{s}}
+\DeclareDocumentEnvironment{argmini!}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}{%
+ \ifthenelse{\equal{#1}{s}}%
% Short version problem
-{\setFormatShort{arg~min}{#2} \BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{arg~min}{#3}}
+{\setFormatShort{arg~min}{#2}\BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{arg~min}{#3}}%
% Long version problem
-{\setFormatLong{arg~min}{#2} \BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{arg~min}{#3}}
+{\setFormatLong{arg~min}{#2}\BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{arg~min}{#3}}%
}{\endBaseMiniExclam\toggletrue{bodyCon}}
% Multiple reference
-\DeclareDocumentEnvironment{minie}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}
-{\ifthenelse{\equal{#1}{s}}
+\DeclareDocumentEnvironment{minie}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}{%
+ \ifthenelse{\equal{#1}{s}}%
% Short version problem
- {\setFormatShort{min}{#2} \BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{min}{#3}}
+ {\setFormatShort{min}{#2}\BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{min}{#3}}%
% Long version problem
- {\setFormatLong{minimize}{#2} \BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{minimize}{#3}}
+ {\setFormatLong{minimize}{#2}\BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{minimize}{#3}}%
}{\endBaseMiniExclam\toggletrue{bodyCon}}
-\DeclareDocumentEnvironment{argminie}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}
-{\ifthenelse{\equal{#1}{s}}
+\DeclareDocumentEnvironment{argminie}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}{%
+ \ifthenelse{\equal{#1}{s}}%
% Short version problem
- {\setFormatShort{arg~min}{#2} \BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{arg~min}{#3}}
+ {\setFormatShort{arg~min}{#2}\BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{arg~min}{#3}}%
% Long version problem
- {\setFormatLong{arg~min}{#2} \BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{arg~min}{#3}}
+ {\setFormatLong{arg~min}{#2}\BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{arg~min}{#3}}%
}{\endBaseMiniExclam\toggletrue{bodyCon}}
%MAXIMIZATION ENVIRONMENTS
% Single reference probems
-\DeclareDocumentEnvironment{maxi}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}{
- \ifthenelse{\equal{#3}{b}}
- {
- \ifthenelse{\equal{#1}{s}}
+\DeclareDocumentEnvironment{maxi}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}{%
+ \ifthenelse{\equal{#3}{b}}{%
+ \ifthenelse{\equal{#1}{s}}%
% Short version problem
- {\setFormatShort{max}{#2} \BaseMiniStar{#2}{#4}{#5}{#7}{max}{#3}}
+ {\setFormatShort{max}{#2}\BaseMiniStar{#2}{#4}{#5}{#7}{max}{#3}}%
% Long version problem
- {\setFormatLong{maximize}{#2} \BaseMiniStar{#2}{#4}{#5}{#7}{maximize}{#3}}
- }
- {
- \ifthenelse{\equal{#1}{s}}
+ {\setFormatLong{maximize}{#2}\BaseMiniStar{#2}{#4}{#5}{#7}{maximize}{#3}}%
+ }{%
+ \ifthenelse{\equal{#1}{s}}%
% Short version problem
- {\setFormatShort{max}{#2} \BaseMini{#2}{#4}{#5}{#6}{#7}{max}}
+ {\setFormatShort{max}{#2}\BaseMini{#2}{#4}{#5}{#6}{#7}{max}}%
% Long version problem
- {\setFormatLong{maximize}{#2} \BaseMini{#2}{#4}{#5}{#6}{#7}{maximize}}
- }
+ {\setFormatLong{maximize}{#2}\BaseMini{#2}{#4}{#5}{#6}{#7}{maximize}}%
+ }%
}%
{\endBaseMini\toggletrue{bodyCon}}
-\DeclareDocumentEnvironment{argmaxi}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}{
- \ifthenelse{\equal{#3}{b}}
- {
- \ifthenelse{\equal{#1}{s}}
+\DeclareDocumentEnvironment{argmaxi}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}{%
+ \ifthenelse{\equal{#3}{b}}{%
+ \ifthenelse{\equal{#1}{s}}%
% Short version problem
- {\setFormatShort{arg~max}{#2} \BaseMiniStar{#2}{#4}{#5}{#7}{arg~max}{#3}}
+ {\setFormatShort{arg~max}{#2}\BaseMiniStar{#2}{#4}{#5}{#7}{arg~max}{#3}}%
% Long version problem
- {\setFormatLong{arg~max}{#2} \BaseMiniStar{#2}{#4}{#5}{#7}{arg~max}{#3}}
- }
- {
- \ifthenelse{\equal{#1}{s}}
+ {\setFormatLong{arg~max}{#2}\BaseMiniStar{#2}{#4}{#5}{#7}{arg~max}{#3}}%
+ }{%
+ \ifthenelse{\equal{#1}{s}}%
% Short version problem
- {\setFormatShort{arg~max}{#2} \BaseMini{#2}{#4}{#5}{#6}{#7}{arg~max}}
+ {\setFormatShort{arg~max}{#2}\BaseMini{#2}{#4}{#5}{#6}{#7}{arg~max}}%
% Long version problem
- {\setFormatLong{arg~max}{#2} \BaseMini{#2}{#4}{#5}{#6}{#7}{arg~max}}
- }
+ {\setFormatLong{arg~max}{#2}\BaseMini{#2}{#4}{#5}{#6}{#7}{arg~max}}%
+ }%
}%
{\endBaseMini\toggletrue{bodyCon}}
% No reference
-\DeclareDocumentEnvironment{maxi*}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}
-{\ifthenelse{\equal{#1}{s}}
+\DeclareDocumentEnvironment{maxi*}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}{%
+ \ifthenelse{\equal{#1}{s}}%
% Short version problem
-{\setFormatShort{max}{#2} \BaseMiniStar{#2}{#4}{#5}{#7}{max}{#3}}
+{\setFormatShort{max}{#2}\BaseMiniStar{#2}{#4}{#5}{#7}{max}{#3}}%
% Long version problem
-{\setFormatLong{maximize}{#2} \BaseMiniStar{#2}{#4}{#5}{#7}{maximize}{#3}}
+{\setFormatLong{maximize}{#2}\BaseMiniStar{#2}{#4}{#5}{#7}{maximize}{#3}}%
}{\endBaseMiniStar\toggletrue{bodyCon}}
-\DeclareDocumentEnvironment{argmaxi*}{D||{l} O{\defaultConstraintFormat} D<>{} m m m m}
-{\ifthenelse{\equal{#1}{s}}
+\DeclareDocumentEnvironment{argmaxi*}{D||{l} O{\defaultConstraintFormat} D<>{} m m m m}{%
+ \ifthenelse{\equal{#1}{s}}%
% Short version problem
-{\setFormatShort{arg~max}{#2} \BaseMiniStar{#2}{#4}{#5}{#7}{arg~max}{#3}}
+{\setFormatShort{arg~max}{#2}\BaseMiniStar{#2}{#4}{#5}{#7}{arg~max}{#3}}%
% Long version problem
-{\setFormatLong{arg~max}{#2} \BaseMiniStar{#2}{#4}{#5}{#7}{arg~max}{#3}}
+{\setFormatLong{arg~max}{#2}\BaseMiniStar{#2}{#4}{#5}{#7}{arg~max}{#3}}%
}{\endBaseMiniStar\toggletrue{bodyCon}}
% Multiple reference
-\DeclareDocumentEnvironment{maxi!}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}
-{\ifthenelse{\equal{#1}{s}}
+\DeclareDocumentEnvironment{maxi!}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}{%
+ \ifthenelse{\equal{#1}{s}}%
% Short version problem
-{\setFormatShort{max}{#2} \BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{max}{#3}}
+{\setFormatShort{max}{#2}\BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{max}{#3}}%
% Long version problem
-{\setFormatLong{maximize}{#2} \BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{maximize}{#3}}
+{\setFormatLong{maximize}{#2}\BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{maximize}{#3}}%
}{\endBaseMiniExclam\toggletrue{bodyCon}}
-\DeclareDocumentEnvironment{argmaxi!}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}
-{\ifthenelse{\equal{#1}{s}}
+\DeclareDocumentEnvironment{argmaxi!}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}{%
+ \ifthenelse{\equal{#1}{s}}%
% Short version problem
-{\setFormatShort{arg~max}{#2} \BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{arg~max}{#3}}
+{\setFormatShort{arg~max}{#2}\BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{arg~max}{#3}}%
% Long version problem
-{\setFormatLong{arg~max}{#2} \BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{arg~max}{#3}}
+{\setFormatLong{arg~max}{#2}\BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{arg~max}{#3}}%
}{\endBaseMiniExclam\toggletrue{bodyCon}}
% Multiple reference
-\DeclareDocumentEnvironment{maxie}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}
-{\ifthenelse{\equal{#1}{s}}
+\DeclareDocumentEnvironment{maxie}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}{%
+ \ifthenelse{\equal{#1}{s}}%
% Short version problem
- {\setFormatShort{max}{#2} \BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{max}{#3}}
+ {\setFormatShort{max}{#2}\BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{max}{#3}}%
% Long version problem
- {\setFormatLong{maximize}{#2} \BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{maximize}{#3}}
+ {\setFormatLong{maximize}{#2}\BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{maximize}{#3}}%
}{\endBaseMiniExclam\toggletrue{bodyCon}}
-\DeclareDocumentEnvironment{argmaxie}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}
-{\ifthenelse{\equal{#1}{s}}
+\DeclareDocumentEnvironment{argmaxie}{D||{\defaultProblemFormat} O{\defaultConstraintFormat} D<>{} m m m m}{%
+ \ifthenelse{\equal{#1}{s}}%
% Short version problem
- {\setFormatShort{arg~max}{#2} \BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{arg~max}{#3}}
+ {\setFormatShort{arg~max}{#2}\BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{arg~max}{#3}}%
% Long version problem
- {\setFormatLong{arg~max}{#2} \BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{arg~max}{#3}}
+ {\setFormatLong{arg~max}{#2}\BaseMiniExclam{#2}{#4}{#5}{#6}{#7}{arg~max}{#3}}%
}{\endBaseMiniExclam\toggletrue{bodyCon}} \ No newline at end of file