% ----------------------------------------------------------
\chapter{Ambientes do UnB\TeX}
% ----------------------------------------------------------

A classe UnB\TeX\ disponibiliza alguns ``ambientes'', ou seja, caixas de texto com formatação especial para certos tipos de elementos, que podem ser automaticamente numerados (por exemplo, \cref{thm:WYSIWYG}, \cref{exc:in}, \cref{alg:NNMPC}, etc.). Esses ambientes foram adaptados a partir do modelo de \citeonline{Castro2019}.

\section{Estilo teorema}

\begin{definition}
O WYSIWYG (ou ``What You See Is What You Get - O que você vê é o formato final'') é um tipo de editor HTML que permite editar sua página da Web em uma visualização simplificada e sem código de aparência semelhante à do layout da página real.
\end{definition}

\begin{proposition}\label{prop:WYSIWYG}
    \LaTeX\ produz equações mais bonitas que qualquer editor WYSIWYG.
\end{proposition}

\begin{lemma}
    Teste.
\end{lemma}

\begin{remark}
    \LaTeX\ produz equações mais bonitas que qualquer editor WYSIWYG.
\end{remark}

\begin{theorem}[Teorema LaTeX-WYSIWYG]\label{thm:WYSIWYG}
    Todo físico prefere usar código \LaTeX\ puro que qualquer editor WYSIWYG.
\end{theorem}

\begin{corollary}
    Teste.
\end{corollary}

\begin{proof}
    Físicos gostam de equações bonitas. Editores What-You-See-Is-What-You-Get não são apropriados para fazer equações bonitas\footnote{É certo que há editores WYSIWYG baseados em \LaTeX, mas eles não nos dão o mesmo nível de controle.}. Logo, se algum físico preferisse usar um editor WYSIWYG no lugar de \LaTeX, não seria muito inteligente. Como todo físico é inteligente, o teorema está demonstrado \textit{ad absurdum}.
\end{proof}

\begin{exercise}\label{exc:in}
    Explique como Isaac Newton usaria cada um dos pacotes seguintes, se vivesse no tempo presente:
    \begin{enumerate}[label=(\alph*)]
        \item Metapost
        \item TikZ
        \item PGFPlots
        \item PSTricks
    \end{enumerate}
\end{exercise}

\begin{example}\label{exp:ae}
    Einstein usaria um editor WYSIWYG ou \LaTeX? \\
    Einstein era físico. Portanto, usando o teorema LaTeX-WYSIWYG, concluímos que ele usaria \LaTeX.
\end{example}

\section{Algoritmo}

O \cref{alg:NNMPC} é um exemplo de pseudo-código.

\begin{algorithm}[htb]
%\linespread{1.0}\selectfont % espaçamento entre as linhas do algoritmo
\caption{Pseudocódigo de MPC baseado em redes neurais para consenso}
\label{alg:NNMPC}
\begin{algorithmic}[1] %\opção para numerar as linhas [1]
%\Procedure{Roy}{$a,b$}       \Comment{This is a test}
    \State Inicialização do sistema em $x(0), \theta(0)$
    \State $J = V(e(0),\theta(0))$
    \State $K^{ab}_0 = 0$ $\forall (a,b)$
    \State $dataset \gets [K_0,J]$
    \For{$k = 1:k_{max}$} \Comment{Laço de simulação}
        \State $(W,Y) \gets train(dataset)$
        \State $\tilde{J} = Y\sigma(Wz)$ $\forall K^{ab}_k\pm \delta_K$
        \State $K_k^{\ast} = arg \min_{K_k}(\tilde{J})$
        \State $u(k) =  \left( L(\theta(k)) \otimes K_k^{\ast} \right) x(k)$
        \State $\hat{x}(k) = x(k)$; $\hat{\theta}(k) = \theta(k)$
        \For{$t = k+1:k+h+1$} \Comment{Laço de predição}
            \State $\hat{\theta}(t) = randMarkov(\hat{\theta}(t-1),\Pi)$
             \State $p = \hat{\theta}(t)$
            \State $\hat{u}(t) = \left( L(p) \otimes K_k^{\ast} \right) \hat{x}(t)$
            \State $\hat{x}(t+1) = F_{p}(\hat{x}(t))$
            \State $x_0(t) = mean(\hat{x}(t))$
            \State $\hat{e}(t) = F_{p}(\hat{x}(t)) - \boldsymbol{1_N} f_{p0}(x(t)) $
            \State $\hat{V}_{t} = \hat{e}^T(t)P_{p}\hat{e}(t)$
            \EndFor
        \State $\hat{J} = \sum_{t = k+1}^{k+h+1} \hat{V}_{t}$
        \State $dataset \gets [K^{\ast}_k,\hat{J}]$
        \State $x(k+1) = F_{p}(x(k))$
    \EndFor
%\EndProcedure
\end{algorithmic}
\end{algorithm}

\section{Programa}

O \cref{cod:exemplo} é um exemplo de programa. Para mais exemplos, confira o \cref{apd:cdg}.

\begin{lstlisting}[caption={Exemplo de programa},label={cod:exemplo}]
/**
* MSO: ativa o servo cujo eixo eh descrito
* por drive_axis; informacoes de controle
* sao gravadas em MSO_1
*/
  MSO(drive_axis,MSO_1);
/* Atribui o valor 0.0 ao primeiro elemento do array speed */
  speed[0] := 0.0; 
/* Atribui 1 para dataInitialized */
  dataInitialized := 1;
\end{lstlisting}