Alinhar fórmulas matemáticas

Aug 27 2020

Estou escrevendo minhas fórmulas matemáticas e restrições com o Overleaf. Este é o meu código e também mostro o resultado que obtive (veja a figura). Como você pode ver, as fórmulas não estão bem alinhadas. Gostaria de melhorar o layout alinhando todas as fórmulas e deixando-as rotuladas (com números, como mostra a figura). Seria extremamente útil se alguém pudesse me ajudar com isso!

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[super]{natbib}
\usepackage{comment}
\usepackage{graphicx}
\usepackage{float}
\usepackage{hyperref}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsfonts}
\usepackage{caption}
\usepackage{adjustbox}
\usepackage{lipsum}
\usepackage{lscape}
\usepackage{multicol}
\usepackage{longtable}
\captionsetup[figure]{font=small,labelfont=bf}
\captionsetup[table]{font=small,labelfont=bf}
\usepackage[justification=centering]{caption}
\usepackage{eurosym}
\usepackage{mhchem}
\usepackage{relsize}
\usepackage[table, dvipsnames]{xcolor}
\renewcommand*\descriptionlabel[1]{\hspace\leftmargin$#1$}
\usepackage[hidelinks]{hyperref}
\usepackage{enumitem}
\usepackage{glossaries}
\makeglossaries
\newcommand{\mathgl}[2]{
    \newglossaryentry{#1}{name={#1},description={#2}}
    \begin{description}[labelwidth=2cm]
      \item[\gls{#1}]#2
    \end{description}
}
\makeatletter
\newcommand*{\rom}[1]{\expandafter\@slowromancap\romannumeral #1@}
\makeatother
\def\changemargin#1#2{\list{}{\rightmargin#2\leftmargin#1}\item[]}
\let\endchangemargin=\endlist 

\begin{document}
\subsection{Stating the objective function} 
TextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextText

\begin{align}
\min \quad BFC \cdot \bigg(\mathlarger{\mathlarger{\sum}}_{i\in I}Fc_i \cdot u_i\bigg)
+ 
BEC \cdot \bigg(\mathlarger{\mathlarger{\sum}}_{i\in I}\mathlarger{\mathlarger{\sum}}_{j \in J}\mathlarger{\mathlarger{\sum}}_{p \in P}x_i_j_p\cdot Ec_i_j_p_y\bigg)
+
BTC \cdot \bigg(\mathlarger{\mathlarger{\sum}}_{i\in I}\mathlarger{\mathlarger{\sum}}_{j \in J}\mathlarger{\mathlarger{\sum}}_{p \in P}x_i_j_p\cdot Tc_i_j_p\bigg)
+
BWC \cdot \bigg(\mathlarger{\mathlarger{\sum}}_{i\in I}\mathlarger{\mathlarger{\sum}}_{j \in J}\mathlarger{\mathlarger{\sum}}_{p \in P}x_i_j_p\cdot Wc_i_j_p\bigg)
+
BZC \cdot \bigg(\mathlarger{\mathlarger{\sum}}_{i\in I}\mathlarger{\mathlarger{\sum}}_{j \in J}\mathlarger{\mathlarger{\sum}}_{p \in P}x_i_j_p\cdot Z_i_j_p\bigg)\cdot Zc 
\label{1}
\end{align}
 

\subsection{Stating the constraints}
The first constraint ensures that the demand of each customer is satisfied:

\begin{align}
\mathlarger{\sum}_{i\in I}x_i_j_p = D_j_p_y,  \quad && \forall j \in J,  p\in P, y \in Y\label{2}
\end{align}
\noindent The second formula makes sure that the maximum capacity of each supplier facility is not exceeded:
\begin{align}
\mathlarger{\sum}_{j\in J}\mathlarger{\sum}_{p\in P}x_i_j_p \leq u_i,  \quad && \forall i \in I \label{3}
\end{align}
\noindent Contracts with specific supplier facilities may agree on minimum allocation volumes. This is ensured by the following formula:
\begin{align}
\mathlarger{\sum}_{j\in J}\mathlarger{\sum}_{p\in P}x_i_j_p \geq V_i,  \quad && \forall i \in I \label{3}
\end{align}
\noindent Specific breweries desire to be supplied by at least two suppliers for some specific type of product code. This is ensured by the following two formulas:
\begin{align}
\mathlarger{\sum}_{i\in I}J_i_j_p \geq 2,  \quad && \forall j \in J,  p\in P \label{4}\\
x_i_j_p \geq b_i_j_p M_j_p
\end{align}
\noindentSpecific OpCos desire to be supplied by at least two suppliers for some specific type of product code. This is ensured by the following two formulas:
\begin{align}
\mathlarger{\sum}_{i\in I}F_i_o_p\geq 2,\quad && \forall o \in O,  p\in P \label{5}\\
\mathlarger{\sum}_{i\subset I}x_i_j_p \geq F_i_o_pG_o_p,\quad && \forall i \in I,  o\in O, p\in P \label{5}
\end{align}

Respostas

4 Bernard Aug 27 2020 at 16:49

Uma solução simples usa um único alignambiente e o \intertextcomando.

Simplifiquei o preâmbulo para o que é necessário para o código funcionar. Além disso, não acho que você realmente precise usar um double \mathlarger, o que faz com que o número da equação seja colocado sob a equação, mesmo ao usarmultlined

Aliás, você não precisa carregar amsfontsquando carrega amssymb– o último faz isso por você. Observe que hyperrefdeve ser carregado como o último pacote, com pouquíssimas exceções.

\documentclass{article}
\usepackage{mathtools}
\usepackage{amssymb}
\usepackage{relsize}
\usepackage[hidelinks]{hyperref}

\begin{document}
\setcounter{section}{4}
\setcounter{subsection}{5}

\subsection{Stating the objective function}
Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text 
\begin{equation}
\begin{multlined}
\min \quad BFC \cdot \bigg(\mathlarger{\sum}_{i\in I}Fc_i \cdot u_i\bigg)
+
BEC \cdot \bigg(\mathop{\mathlarger{\sum}_{i\in I}\mathlarger{\sum}_{j \in J}\mathlarger{\sum}_{p \in P}x_{i j p}}\cdot Ec_{ijpy}\bigg) +{}
\\
 BTC \cdot \bigg(\mathlarger{\sum}_{i\in I}\mathlarger{\sum}_{j \in J}\mathlarger{\sum}_{p \in P}x_{ijp}\cdot Tc_{ijp}\bigg)
+
BWC \cdot \bigg(\mathlarger{\sum}_{i\in I}\mathlarger{\sum}_{j \in J}\mathlarger{\sum}_{p \in P}x_{ijp}\cdot Wc_{ijp}\bigg)
\\
+ BZC \cdot \bigg(\mathlarger{\sum}_{i\in I}\mathlarger{\sum}_{j \in J}\mathlarger{\sum}_{p \in P}x_{ijp}\cdot Z_{ijp}\bigg)\cdot Zc
\end{multlined}
\label{1}
  \end{equation}

\subsection{Stating the constraints}
The first constraint ensures that the demand of each customer is satisfied:

\begin{align}
\mathlarger{\sum}_{i\in I}&x_{ijp} = D_{jpy}, \quad && \forall j \in J, p\in P, y \in Y\label{2} \\
\intertext{The second formula makes sure that the maximum capacity of each supplier facility is not exceeded:}
\mathlarger{\sum}_{j\in J}\mathlarger{\sum}_{p\in P} &x_{ijp} \leq u_i, \quad && \forall i \in I \label{3}
\intertext{Contracts with specific supplier facilities may agree on minimum allocation volumes. This is ensured by the following formula:}
\mathlarger{\sum}_{j\in J} \mathlarger{\sum}_{p\in P} &x_{ijp}\geq V_i, \quad && \forall i \in I \label{3} \\
\intertext{Specific breweries desire to be supplied by at least two suppliers for some specific type of product code. This is ensured by the following two formulas:}
\mathlarger{\sum}_{i\in I}&J_{ijp} \geq 2, \quad && \forall j \in J, p\in P \label{4}\\
&x_{ijp} \geq b_{ijp} M_{jp}\\
\intertext{Specific OpCos desire to be supplied by at least two suppliers for some specific type of product code. This is ensured by the following two formulas:}
\mathlarger{\sum}_{i\in I}&F_{iop} \geq 2,\quad && \forall o \in O, p\in P \label{5}\\
\mathlarger{\sum}_{i\subset I}&x_{ijp} \geq F_{iop} G_{op},\quad && \forall i \in I, o\in O, p\in P \label{5}
\end{align}

\end{document} 

5 Denis Aug 27 2020 at 15:05

Aqui está um exemplo estendido:

\documentclass[a4paper,12pt]{article}
\usepackage{mathtools}
\usepackage{lipsum}
\begin{document}
\section{Let us try}
\subsection{Stating the objective function}

%\lipsum[1]

\begin{equation}\label{1}
\begin{aligned}
\min \quad BFC  \bigg(\sum_{i\in I}Fc_i  u_i\bigg)
&+ BEC  \biggl(\sum_{i\in I} \sum_{j \in J} \sum_{p \in P} x_{ijp}  Ec_{ijp} y \biggr)    \\
&+ BTC  \biggl(\sum_{i\in I} \sum_{j \in J} \sum_{p \in P} x_{ijp}  Tc_{ijp}   \biggr)    \\
&+ BWC  \biggl(\sum_{i\in I} \sum_{j \in J} \sum_{p \in P} x_{ijp}  Wc_{ijp}   \biggr)    \\
&+ BZC  \biggl(\sum_{i\in I} \sum_{j \in J} \sum_{p \in P} x_{ijp}  Z_{ijp}    \biggr)  Zc
\end{aligned}
\end{equation}


\subsection{Stating the constraints}
The first constraint ensures that the demand of each customer is satisfied:

\begin{align}\label{2}\allowdisplaybreaks
&\sum_{i\in I} x_{ijp} = D_{jpy},  \quad && \forall j \in J,  p\in P, y \in Y\\
\intertext{The second formula makes sure that the maximum}
&\sum_{j\in J}\sum_{p\in P} x_{ijp} \leq u_i,  \quad && \forall i \in I \label{3}
\intertext{Specific breweries desire to be supplied by at least two suppliers for some specific type 
of product code. This is ensured by the following two formulas:}
&\sum_{i\in I}J_{ijp} \geq 2,  \quad && \forall j \in J,  p\in P \label{4}\\
&x_{ijp} \geq b_{ijp} M_{jp}\label{5}
\end{align}
\end{document}

e veja se o resultado combina com você. Se assim for, você pode estendê-lo facilmente.

4 egreg Aug 27 2020 at 17:10

Minha versão, sem \mathlarger, parênteses reduzidos e algumas outras dicas.

Por exemplo, BFC e os símbolos semelhantes na primeira exibição não significam um produto de três quantidades, mas uma única variável, \mathitreduzindo assim o espaçamento entre as letras. Ao contrário do que outros afirmaram, \cdoté necessário evitar que os símbolos sejam interpretados como “uma função avaliada em”.

Deve-se usar \biggl(e \biggr), não apenas \bigg. De qualquer forma, com o tamanho normal \sum, a \Bigversão parece melhor; adicione \,se o subscrito puder entrar em conflito com os parênteses.

Verifique o último i\subset I, que não parece se encaixar.

você pode considerar

\sum_{\substack{i\in I \\ j\in J \\ p\in P}}

em vez da soma tripla e da mesma forma para as somas duplas.

Evite linhas em branco antes das exibições. Não há necessidade \noindentse não houver uma linha em branco após a exibição (e se você tiver uma, \noindentestaria errado).

\documentclass{article}
\usepackage{amsmath}

\newcommand{\tvar}[1]{\mathit{#1}}

\begin{document}

\subsection{Stating the objective function} 

Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text 
Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text 
Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text 
Text Text Text 
\begin{equation}\label{1}
\begin{split}
\min \tvar{BFC} &\cdot \Bigl(\,\sum_{i\in I} Fc_i \cdot u_i\Bigr)
+ 
\tvar{BEC} \cdot \Bigl(\,\sum_{i\in I}\sum_{j \in J}\sum_{p \in P}x_{ijp} \tvar{Ec}_{ijpy}\Bigr)
\\
{}+
\tvar{BTC} &\cdot \Bigl(\,\sum_{i\in I}\sum_{j \in J}\sum_{p \in P}x_{ijp} \tvar{Tc}_{ijp}\Bigr)
+
\tvar{BWC} \cdot \Bigl(\,\sum_{i\in I}\sum_{j \in J}\sum_{p \in P}x_{ijp} \tvar{Wc}_{ijp}\Bigr)
\\
{}+
\tvar{BZC} &\cdot \Bigl(\,\sum_{i\in I}\sum_{j \in J}\sum_{p \in P}x_{ijp} Z_{ijp}\Bigr) \tvar{Zc} 
\end{split}
\end{equation}

\subsection{Stating the constraints}
The first constraint ensures that the demand of each customer is satisfied:
\begin{equation}\label{2}
\sum_{i\in I}x_{ijp} = D_{jpy},  \quad \forall j \in J,  p\in P, y \in Y
\end{equation}
The second formula makes sure that the maximum capacity of each supplier facility 
is not exceeded:
\begin{equation}\label{3}
\sum_{j\in J}\sum_{p\in P}x_{ijp} \leq u_i,  \quad  \forall i \in I
\end{equation}
Contracts with specific supplier facilities may agree on minimum allocation volumes. 
This is ensured by the following formula:
\begin{equation}\label{4}
\sum_{j\in J}\sum_{p\in P}x_{ijp} \geq V_i,  \quad \forall i \in I
\end{equation}
Specific breweries desire to be supplied by at least two suppliers for some specific 
type of product code. This is ensured by the following two formulas:
\begin{equation}\label{5}
\sum_{i\in I}J_{ijp} \geq 2,  \quad \forall j \in J,  p\in P
x_{ijp} \geq b_{ijp} M_{jp}
\end{equation}
Specific OpCos desire to be supplied by at least two suppliers for some specific 
type of product code. This is ensured by the following two formulas:
\begin{alignat}{2}
&\sum_{i\in I}F_{iop}\geq 2, &\quad& \forall o \in O,  p\in P \label{6}\\
&\sum_{i\subset I}x_{ijp} \geq F_{iop}G_{op}, && \forall i \in I,  o\in O, p\in P \label{7}
\end{alignat}

\end{document}

Aqui está a versão com\substack

3 Zarko Aug 27 2020 at 15:30

Para a primeira equação você pode usar multlineo ambiente (definido no amsmathpacote):

\documentclass{article}
\usepackage{amsmath, amssymb}
\usepackage{lipsum}

\begin{document}
\subsection{Stating the objective function}
\lipsum[11]
\begin{multline}\label{1}
\min \quad \mathrm{BFC}{\cdot}\bigg(\sum_{i\in I}Fc_i{\cdot} u_i\bigg)
+ \mathrm{BEC}{\cdot}\bigg(\sum_{i\in I}\sum_{j \in J}\sum_{p \in P}x_{ijp}{\cdot}Ec_{ijpy}\bigg)  \\
%
+ \mathrm{BTC}{\cdot}\bigg(\sum_{i\in I}\sum_{j \in J}\sum_{p \in P}x_{ijp}{\cdot}Tc_{ijp}\bigg)
+ \mathrm{BWC}{\cdot}\bigg(\sum_{i\in I}\sum_{j \in J}\sum_{p \in P}x_{ijp}{\cdot}Wc_{ijp}\bigg)   \\
%
+ \mathrm{BZC}{\cdot}\bigg(\sum_{i\in I}\sum_{j \in J}\sum_{p \in P}x_{ijp}{\cdot}Z_{ijp}\bigg){\cdot}Zc
\end{multline}
\end{document}

\subsection{Stating the constraints}
The first constraint ensures that the demand of each customer is satisfied:

\begin{align}
\mathlarger{\sum}_{i\in I}x_i_j_p = D_j_p_y,  \quad && \forall j \in J,  p\in P, y \in Y\label{2}
\end{align}
\noindent The second formula makes sure that the maximum capacity of each supplier facility is not exceeded:
\begin{align}
\mathlarger{\sum}_{j\in J}\mathlarger{\sum}_{p\in P}x_i_j_p \leq u_i,  \quad && \forall i \in I \label{3}
\end{align}
\noindent Contracts with specific supplier facilities may agree on minimum allocation volumes. This is ensured by the following formula:
\begin{align}
\mathlarger{\sum}_{j\in J}\mathlarger{\sum}_{p\in P}x_i_j_p \geq V_i,  \quad && \forall i \in I \label{3}
\end{align}
\noindent Specific breweries desire to be supplied by at least two suppliers for some specific type of product code. This is ensured by the following two formulas:
\begin{align}
\mathlarger{\sum}_{i\in I}J_i_j_p \geq 2,  \quad && \forall j \in J,  p\in P \label{4}\\
x_i_j_p \geq b_i_j_p M_j_p
\end{align}
\noindentSpecific OpCos desire to be supplied by at least two suppliers for some specific type of product code. This is ensured by the following two formulas:
\begin{align}
\mathlarger{\sum}_{i\in I}F_i_o_p\geq 2,\quad && \forall o \in O,  p\in P \label{5}\\
\mathlarger{\sum}_{i\subset I}x_i_j_p \geq F_i_o_pG_o_p,\quad && \forall i \in I,  o\in O, p\in P \label{5}
\end{align}
\end{document}

que produzem:

Alguns comentários:

  • Aumentar o tamanho de alguns símbolos na equação (no seu caso \sum) não é uma boa ideia. Seu tamanho é deliberadamente criado para equações de boa aparência, então, por favor, não destrua os esforços dos designers
  • Suponho que BFC, BTC, etc sejam abreviações, que devem ser escritas com fontes upshape, ou seja, devem ser escritas como \mathrm{BFC}, `\mathbf{BTC}˙, etc
  • Da mesma forma c_i_j_p_yé a notação errada. Deve ser ou c_{ijpy}(qual resultado é o mais provavelmente desejado) ou c_{i_{j_{p_{y}}}}(qual é menos provável)
  • Do ponto de vista matemático, o uso de \cdotpara multiplicação não é necessário. De qualquer forma, se você persistir em usá-los, poderá reduzir o espaço ao redor deles colocando-os entre chaves (como é feito no MWE acima)