% Para este documento, usar XeLaTeX ou LuaLaTeX
%
\makeatletter
\@ifclassloaded{book}{}{
  %\documentclass[12pt,a4paper,twoside,openright]{book}
  \documentclass[12pt,a4paper,oneside]{book}
  %  \newif\iftwosidedocument
  %  \twosidedocumenttrue
}
\makeatother

\sloppy % prefer underfull than overfull

\usepackage{iftex} % detectar motor TeX usado

% testing TeX engine
%\ifPDFTeX
%  \PackageError{\jobname}{Precisa de XeLaTeX ou LuaLaTeX}{Use XeLaTeX ou LuaLaTeX}
%\fi

\ifXeTeX
\else\ifLuaTeX
\else
  \PackageError{\jobname}{Precisa de XeLaTeX ou LuaLaTeX}{Use XeLaTeX ou LuaLaTeX}
\fi\fi

\usepackage[english,brazil]{babel} % brazil como padrão

%% Font selection
\usepackage{fontspec} % iffont carrega ele
%\defaultfontfeatures{Ligatures=TeX}

\usepackage{fontsetup} % New Computer Modern, Book weight

%\usepackage[olddefault]{fontsetup} % New Computer Modern, regular weight

% iffont not works on LuaLaTeX. Need patch it.
% On XeLaTeX need patch too for external font
\usepackage{iffont} % On new xelatex/lualatex, it works (no patch needed)

%\makeatletter
%  \renewcommand{\@iffont@firstfont}{MS Mincho}
%\makeatother
  
%\ifXeTeX
%  \ifx \IfFontExistsTF\undefined
%    \let\IfFontExistsTF\iffontexists
%  \fi
%\else\ifLuaTeX
%  \ifx \IfFontExistsTF\undefined
%    \PackageError{\jobname}{fontspec is old}{Install updated fontspec package}
%  \fi
%\fi\fi

%\ifLuaTeX 

%%% patch on iffont
%%  \ifx \IfFontExistsTF\undefined
%%    %\PackageError{\jobname}{fontspec antigo}{Atualize para versão mais nova ou use XeLaTeX}
%%    \PackageError{\jobname}{'fontspec' antigo}{Atualize para versão mais nova}
%%  \fi
%%  % \usepackage{etoolbox} % iffont ja carregou
%%  \let\iffontexists\IfFontExistsTF
%%  \makeatletter
%%    \renewcommand{\@iffont@checkfont}[1]{
%%      \IfFontExistsTF{#1}{
%%        \nottoggle{@iffont@fontfound}{%
%%          \renewcommand{\@iffont@firstfont}{#1}
%%          \toggletrue{@iffont@fontfound}
%%        }{}
%%      }{\stepcounter{@iffont@fontsnotfound} }
%%    }
%%  \makeatother
%\fi  
  
%\ifXeTeX % need file name for font outside tex tree
%  \settofirstfound{\jafont}{NotoSerifCJK-Regular.ttc, msmincho.ttf, takaomincho.ttf, ipaexm.ttf, ipam.ttf}
%  \settofirstfound{\jagothic}{NotoSansCJK-Bold.ttc, msgothic.ttf, takaogothic.ttf, ipaexg.ttf, ipag.ttf}
%\else % LuaLa\teX (will use font name for all)  

%  \settofirstfound{\jafont}{Noto Serif CJK JP, MS Mincho, TakaoMincho, IPAexMincho, IPAMincho, Hiragino Mincho Pro}
%  \settofirstfound{\jagothic}{Noto Sans CJK JP, MS Gothic, TakaoGothic, IPAexGothic, IPAGothic, Hiragino Maru Gothic Pro}
%\fi

% DEBUG XeLaTeX
%\renewcommand\jafont{NotoSerifCJK-Regular.ttc}
%\renewcommand\jagothic{NotoSansCJK-Bold.ttc}

%  % versao 2016 nao tem \IfFontExistsTF no fontspec
%  \ifx \IfFontExistsTF\undefined
%    \PackageError{\jobname}{fontspec antigo}{Atualize para versão mais nova}
%  \fi
%
%  \IfFontExistsTF{Noto Serif CJK JP}{\newcommand{\jafont}{Noto Serif CJK JP}}%
%  {\IfFontExistsTF{MS Mincho}{\newcommand{\jafont}{MS Mincho}}%
%  {\IfFontExistsTF{TakaoMincho}{\newcommand{\jafont}{TakaoMincho}}%
%  {\IfFontExistsTF{IPAexMincho}{\newcommand{\jafont}{IPAexMincho}}%
%  {\IfFontExistsTF{IPAMincho}{\newcommand{\jafont}{IPAMincho}}%
%  {\IfFontExistsTF{Hiragino Mincho Pro}{\newcommand{\jafont}{Hiragino Mincho Pro}}%
%  {\newcommand{\jafont}{MS Mincho}}}}}}}
%  
%  \IfFontExistsTF{Noto Sans CJK JP}{\newcommand{\jafont}{Noto Sans CJK JP}}%
%  {\IfFontExistsTF{MS Gothic}{\newcommand{\jafont}{MS Gothic}}%
%  {\IfFontExistsTF{TakaoGothic}{\newcommand{\jafont}{TakaoGothic}}%
%  {\IfFontExistsTF{IPAexGothic}{\newcommand{\jafont}{IPAexGothic}}%
%  {\IfFontExistsTF{IPAGothic}{\newcommand{\jafont}{IPAGothic}}%
%  {\IfFontExistsTF{Hiragino Maru Gothic Pro}{\newcommand{\jafont}{Hiragino Maru Gothic Pro}}%
%  {\newcommand{\jafont}{MS Gothic}}}}}}}  

% versao antiga (2016) do fontspec ainda nao tem \IfFontExistsTF
% precisa atualizar o fontspec

%\IfFontExistsTF{\jafont}{}{\PackageError{\jobname}{Fonte japonês Mincho (\jafont) não encontrada.}{Instale um dos seguintes: Noto Serif CJK JP, MS Mincho, TakaoMincho, IPAexMincho, IPAMincho, Hiragino Mincho Pro}}
%\IfFontExistsTF{\jagothic}{}{\PackageError{\jobname}{Fonte japonês Gothic não encontrada.}{Instale um dos seguintes: Noto Sans CJK JP, MS Gothic, TakaoGothic, IPAexGothic, IPAGothic, Hiragino Maru Gothic Pro}}

\def\jafontlist{Noto Serif CJK JP, MS Mincho, TakaoMincho, IPAexMincho, IPAMincho, Hiragino Mincho Pro,[lmroman12-regular]} % último da list não é japonês
\def\jagothicfontlist{Noto Sans CJK JP, MS Gothic, TakaoGothic, IPAexGothic, IPAGothic, Hiragino Maru Gothic Pro}

\settofirstfound{\jafont}{\jafontlist}
%\makeatletter
%  \renewcommand{\@iffont@firstfont}{\jafont}
%\makeatother
\settofirstfound{\jagothic}{\jagothicfontlist}
  
%\IfFontExistsTF{\jafont}{}{\PackageError{\jobname}{Fonte japonês Mincho (\jafont) não encontrada.}{Instale um dos seguintes: \jafontlist}}
%\IfFontExistsTF{\jagothic}{}{\PackageError{\jobname}{Fonte japonês Gothic (\jagothic) não encontrada.}{Instale um dos seguintes: \jagothicfontlist}}

% usando comando \ifdefstring e % \ifdefstrequal do etoolbox que iffont já carregou  
% \ifdefstring compara expansão de comando com o string
\ifdefstring\jafont{[lmroman12-regular]}{\PackageError{\jobname}{Fonte japonês Mincho não encontrada.}{Instale um dos seguintes: \jafontlist}}{}
% \ifdefstrequal compara expansão de dois comandos como string
\ifdefstrequal\jagothic\jafont{\PackageWarning{\jobname}{Fonte japonês Gothic não encontrada.}{Instale um dos seguintes: \jagothicfontlist}}{}

\newfontfamily{\jafamily}[BoldFont=\jagothic]{\jafont}
\newcommand{\textja}[1]{{\jafamily #1}}

% amsmath deve ser carregado antes do unicode-math,
% se precisar de alguns comandos de amsmath que nao esta
% em unicode-math como o \DeclareMathOperator

% \usepackage{amssymb} % para \circlearrowleft que nao tem no unicode-math
\usepackage{amsmath}
% \usepackage{amsbsy} % bold symbol: amsmath carrega

% \boldsymbol e ambiente boldmath não funciona no unicode-math
% Mapeando o symbf como \boldsymbol
\makeatletter
\AtBeginDocument{%
  \@ifpackageloaded{unicode-math}{%
      \let\boldsymbol\symbf
  }{\let\symbf\boldsymbol}%
}{}
\makeatother
% \usepackage{xunicode} % textcomp equiv. Old and not works on lualatex (March, 2018). Now, fontspec features are sufficient for this
\usepackage{unicode-math} % amssymb,amsmath equiv.
\ifLuaTeX
  \usepackage{lualatex-math}
\fi

% Other packages
\usepackage[table]{xcolor} % colors, with table support
\usepackage{tikz} % graphics

% margins
\usepackage[margin=2cm]{geometry}

\usepackage[hyphens]{url} % will break url across line on hyphens
%\makeatletter
%  \g@addto@macro{\UrlBreaks}{\UrlOrds}
%\makeatother
% \usepackage{xurl}

\usepackage{hyperref} % link
\hypersetup{
  unicode=true,
  breaklinks=true,
  bookmarks=true
}
\usepackage{bookmark} % to add bookmark manually

% \providecommand{\url}[1]{\texttt{#1}}

\usepackage{lipsum}

\usepackage[stretch=10]{microtype} % microtipografia: funciona no PDFLaTeX e LuaLaTeX (parcialmente em XeLaTeX)
% atrapalha a copiar texto do PDF

\usepackage{setspace}

\onehalfspacing

% \usepackage{fancyhdr}

%\usepackage{bm} % fórmula matematica em negrito.

\usepackage{enumerate} % controle de enumeração
% \usepackage{hhline} % linhas duplas na tabela
\usepackage{dcolumn} % alinhar decimais
\usepackage{tabularx} % igualar colunas
\usepackage{longtable}
% \toprule, midrule, cmidrule{}, bottomrule
\usepackage{booktabs}
% xtabular (tabela longa cnfigurável)
\usepackage{xtab}
% implementação moderna de tabela (tblr que funciona tanto no modo texto como no modo matemático)
\usepackage{tabularray}
\UseTblrLibrary{booktabs,siunitx,caption}
 
\usepackage{makeidx}
\makeindex

\usepackage[nottoc]{tocbibind} % bibliogrphy and index on tableofcontents


\usepackage{amsthm}

\usepackage{multicol} % multiple column on document

\usepackage{makeidx} % pacote para produzir
% indice remissvo (glossário)
\makeindex % ativando o indice remissivo (glossário)

 % To solve probblem of \MakeUppercase that not works for accent char
 % and change to uppercase, the formula, ref, cite, etc too.
\usepackage[overload]{textcase}
\usepackage{listings} % format source code
\usepackage{showexpl} % ele carrega listings
% acento nao sobrevive no arquivo temporario de showexpl
% Use diretamente do arquivo externo, ou use XeLaTeX/LuaLaTeX

\usepackage{verbatim} % For verbatim
\usepackage{fancyvrb} % for VerbatimOut

\usepackage{keyval} % key=value in command parameter
%
% \usepackage{algorithmicx}
\usepackage{algpseudocode} %  arquivo de estilo de algorithmicx

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% pacotes usados nos exemplos correspondentes
%----------------------------------------------
%\usepackage{tikz} % pacote gráfico
\usetikzlibrary{babel} % para compatiblidade com o pacote babel, requerido por agumas bibliotecas como o cd.
\usetikzlibrary{calc} % calc eh para efetuar calculos matematicos ou expressoes em coordenadas
\usetikzlibrary{through} % circulo passando por ponto, por exemplo.
\usetikzlibrary{patterns} % preenchimentos
\usetikzlibrary{intersections} % interseccao entre caminhos
\usetikzlibrary{matrix} % matriz no tikz
\usetikzlibrary{cd} % diagrama comutativa
%
\usepackage{lettrine} % Para paragrafo no estilo biblia
\usepackage{caption} % configurar o titulo da figura e tabela
\usepackage{subcaption} % subfigura ou subtabela
\usepackage{wrapfig} % texto contornando a figura ou tabela
\usepackage{wrapstuff} % similar a wrapfig

\usepackage{overpic} % sobrepor elemento na imagem externa

\usepackage{pdflscape} % rotaciona uma página
\usepackage{pict2e} % para incrementar ambiente picture
\usepackage[mathlines]{lineno} % enumerar linhas de documento
\usepackage{blindtext} % gera parágrafos de textos sem sentido, para testes
\usepackage{fancybox} % caixas enfeitadas
\usepackage{framed} % moldura no texto

\usepackage{xfp} % usado por postit quando ativa o tikz como renderizador
\usepackage{postit} % caixa de texto estilo recado de adesivo colado. Carregue o xfp para usar o tikz como renderizador tikz

%\usepackage{exsheets} % para lista de exercicios e provas
% saida do xsim é formatado manualmente sem usar este pacote
%\usepackage{xsim} % sucessor de exsheets (gera exercicios e respostas) 
\usepackage{tasks} % para lista de exercicios e provas
\usepackage{answers} % respostas
\usepackage{siunitx} % para unidade internacional.
\usepackage[shortlabels,inline]{enumitem} % para controle de listas e listas compactas (shortlabels é para o modo de emuração do pacote emumerate
\usepackage{tabto} % para tabular itens da lista compacta.
% o pacote tasks ja carregou o ulem. Carregar de novo causa erro
% Agora tasks não carrega mais (carregar explicitamente)
\usepackage[normalem]{ulem} % sublinhar,tachar, etc no texto

\usepackage{soul} % para destacar
\setulcolor{green} % cor para sublinhar
\setstcolor{red} % cor para cancelar
\sethlcolor{yellow} % cor para destaque

\usepackage{cancel} % cancelar elemento
\usepackage{annotate-equations} % add note on equations
% para cortar seta longa (negação da seta longa)
%\usepackage{centernot} % cortar símbolo no centro
% fancyhdr and titlesec defines headrule and footrule,
% Use option pagestyles on titlesec package and
% load fancyhdr after titlesec
\usepackage[pagestyles]{titlesec} % para exemplo de titlesec
%\let\headrule\undefined
%\let\footrule\undefined
\usepackage{fancyhdr}
% para criar contorno
\usepackage{contour}
% texto sombreado
\usepackage{shadowtext}
% texto em degrade (gradiente linear)
\usepackage{gradient-text}
%
% texto circulado: de 2022
\usepackage{circledtext}
%
% Para evaluar expressões matemáticas
\usepackage{xfp} % estilo sin(pi)
\usepackage{numerica} % estilo \sin(\pi)
\usepackage{numerica-tables} % para tabelar

% numerica loads mathtools
% correct underbrace/overbrace problem in mathtools with fontsetup (with default option)
% https://github.com/latex3/unicode-math/issues/582
\makeatletter
\AtBeginDocument{%
  \@ifpackageloaded{mathtools}{
    \@ifpackageloaded{unicode-math}{
      \let\underbrace\LaTeXunderbrace
      \let\overbrace\LaTeXoverbrace
    }{}
  }{}
}
\makeatother


\usepackage{yfonts} % fonte Baroque para iniciais

%\usepackage{array} % precisa para acro usar longtable
%\usepackage{acro} % cria lista de siglas, e similares


% TODO's
%\usepackage{todonotes} % carega xkeyval, tikz, etc

%% caixa colorida usada para exemplo de certificado.
% \usepacakge{tcolorbox}

%  Adiciona a opção 'H' e também permite criar float personalizado.
%\usepackage{float} 
%\newfloat{algorithm}{tbp}{loa}[chapter]
% \floatname{algorithm}{Algorítimo}

% bug no titlesec 2.10.1 remove enumeracao da secao (corrigido em 2.10.2 de 21/03/2016).
% O Usuario de ubuntu 16.04 devem atualizar o titlesec
% https://tex.stackexchange.com/questions/299969/titlesec-loss-of-section-numbering-with-the-new-update-2016-03-15/300259
%
% Atualize o titlesec no ubuntu 16.04
% sudo wget http://mirrors.ctan.org/macros/latex/contrib/titlesec/titlesec.sty -O /usr/share/texlive/texmf-dist/tex/latex/titlesec/titlesec.sty

%========================================================
% rodap\'e deve estar em espa\c{c}amento simples,
% independente do espa\c{c}amento no corpo de documento
% Devera ser feito com linespread{} \@currsize
% pois comandos do setspace nao funciona como desejado
%========================================================
% foi copiado do book e alterado
\makeatletter % ativa uso de ``@'' no nome
\renewcommand\@makefntext[1]{%
    \parindent 1em%
    % inicio da altera\c{c}\~ao    
    \linespread{1} \@currsize \noindent
    % \hb@xt@1.8em{\hss\@makefnmark}#1}
    \hb@xt@0.45em{\hss\@makefnmark}#1}
% fim da altera\c{c}\~ao
\makeatother % desativa o uso de ``@'' no nome

\let\orilstlistingname\lstlistingname
\renewcommand{\lstlistingname}{Exemplo}
\renewcommand{\lstlistlistingname}{Lista de \lstlistingname s}
% setup  listings
\lstset{
%  language=[LaTeX]TeX,
  numbers=none,
  backgroundcolor=\color{yellow!30},
  breaklines=true,
  breakautoindent=true,
  % breakatwhitespace=true,    % quebra linha somente no espaço
  belowcaptionskip=1\baselineskip, % espaço após o título
  % aboveskip=2ex,
  %keepspaces=true, % to keep indentation
  columns=fullflexible, % para poder copiar codigo do PDF (fixed, flexible, fullflexible)
  basicstyle=\ttfamily, % using monospaced font, prevent that hiphen are replaced by minus (solving insure on copy/paste code from pdf)  
  frame=lines, %none, single, line % do codigo  
}

% aplicando patch no codigo de showexpl para que o parametro abovecaptionskip funcione tambem no LTXexample

\makeatletter
\renewcommand\SX@KillAboveCaptionskip{%
  \ifx\lst@caption\@empty\else
    \lst@IfSubstring t\lst@captionpos
      {\vskip-\abovecaptionskip}{}%
  \fi
  \ifx\lst@belowcaption\undefined \else %adicionado
    \belowcaptionskip=\lst@belowcaption\relax % adicionado
  \fi %adicionado
}
\makeatother

% setup showexpl
\lstset{explpreset={
  pos=b,
  belowcaptionskip=0.5\baselineskip, % espaço após o título
%  language=[LaTeX]TeX,
  %basicstyle=\ttfamily\small,
  %identifierstyle=\color{black},
  %keywordstyle=\color{blue},
  %commentstyle=\color{red},
  %extendedchars=true,
  % extendedchars=false
  %showspaces=false,
  %showstringspaces=false,
%  numbers=none,
  %numberstyle=\tiny,
%  breaklines=true,
  %backgroundcolor=\color{lightgray},
%  breakautoindent=true,
  %captionpos=b,
  %xleftmargin=0pt,
  % captionpos=t.
  % aboveskip=2ex,
  % columns=fullflexible, 
%  columns=flexible, % para poder copiar codigo do PDF
  % para editor (sem ele, terq espaço indesejado)
  % from http://latex.org/forum/viewtopic.php?t=5636
  % hsep=2ex,  
%  frame=lines, %none, single, line % do codigo
  %rframe={single} % do resultado
  }
}

% para arquivo de BibTeX no listings
% https://tex.stackexchange.com/questions/85998/include-bibtex-contents-in-a-listings-block 
\lstdefinelanguage{BibTeX}
  {keywords={%
      @article,@book,@collectedbook,@conference,@electronic,@ieeetranbstctl,%
      @inbook,@incollectedbook,@incollection,@injournal,@inproceedings,%
      @manual,@mastersthesis,@misc,@patent,@periodical,@phdthesis,@preamble,%
      @proceedings,@standard,@string,@techreport,@unpublished%
      % author, editor, publisher, year, url, urldate
      },
   comment=[l][\itshape]{@comment},
   sensitive=false,
  }

\lstdefinestyle{lstexample}
{
%  language=[LaTeX]TeX,
%  keywordstyle=\bfseries,
%  identifierstyle=\itshape,
  backgroundcolor=\color{white},
  numbers=none,
  breaklines=true,
  breakautoindent=true,
%  belowcaptionskip=1\baselineskip, % espaço após o título
%  aboveskip=2ex,
  %keepspaces=true, % to keep indentation
  columns=fullflexible, % para poder copiar codigo do PDF
  frame=lines, %none, single, line % do codigo
  basicstyle=\ttfamily, % using monospaced font, prevent that hiphen are replaced by minus (solving insure on copy/paste code from pdf)  
%  explpreset={
%    attachfile=false,true
%    codefile=temporaryfilename,
%    explpreset=? defualti values is?
%    graphic=alternativegraphicsfileforoutput,
%    hsep=,
%    justification=\raggedright,% \raggedleft, \raggedright, \centering
%    overhang=,
%    pos=, % e t, b, l, r, and i
%    preset={},
%    rangeaccept=false, % true/false
%    rframe=,
%    varwidth=,
%    hsep,
%    wide,
%    width=
%  }
}

% LTXexample's parameter
%    attachfile=false,trure
%    codefile=temporaryfilename,
%    explpreset=? defualti values is?
%    graphic=alternativegraphicsfileforoutput,
%    hsep=,
%    justification=\raggedright,% \raggedleft, \raggedright, \centering
%    overhang=,
%    pos=, % e t, b, l, r, and i
%    preset={},
%    rangeaccept=false, % true/false
%    rframe=,
%    varwidth=,
%    hsep,
%    wide,
%    width=
%  }

% showexpl's LTXexample environment like ltxlisting
% is implemented (it use showexpl's preset (thus, need showexpl package}

\makeatletter 

% Para usar no exemplo de babel
\newenvironment{abstract}%
{\par\begin{center}\textbf{\small\abstractname}\vspace{-0.5em}\end{center}%
\begin{quotation}}%
{\end{quotation}}

%\newenvironment{abstract}{%
%  \if@twocolumn
%    \section*{\abstractname}%
%  \else
%    \small
%    \begin{center}%
%      {\bfseries \abstractname\vspace{-.5em}\vspace{\z@}}%
%    \end{center}%
%    \quotation
%  \fi}
%{\if@twocolumn\else\endquotation\fi}

\let\orititle\title      
\let\oriauthor\author
\let\oridate\date
\newcommand{\makearticletitle}{%
  \begin{center}%
%    T\'{\i}tulo: 
    {\LARGE \@title \par}%
    \vspace*{1.5em}%
    {\large\center \@author }%
    \ifx\@date\@empty%
    \else%
      \par%
      \vspace*{1em}%
      {\large \@date}%
    \fi%
  \end{center}%
  \vspace*{1.5em}%
  \global\let\@author\@empty
  \global\let\@date\@empty
  \global\let\@title\@empty
  \global\let\title\relax
  \global\let\author\relax
  \global\let\date\relax
}

%\def\@maketitle{%
%  \newpage
%  \null
%  \vskip 2em%
%  \begin{center}%
%  \let \footnote \thanks
%    {\LARGE \@title \par}%
%    \vskip 1.5em%
%    {\large
%      \lineskip .5em%
%      \begin{tabular}[t]{c}%
%        \@author
%      \end{tabular}\par}%
%    \vskip 1em%
%    {\large \@date}%
%  \end{center}%
%  \par
%  \vskip 1.5em}
%\fi

\makeatother

%% ambientes de teoremas usado no exemplo
%% Definindo teormas e similares. Contador unico, vinculado a capítulos.
%\newtheorem{theorem}{Teorema}[chapter] % contador vinculado a capitulos
%\newtheorem{corollary}[theorem]{Corolário}
%\newtheorem{lemma}[theorem]{Lema}
%\newtheorem{proposition}[theorem]{Proposição}
%\newtheorem{axiom}[theorem]{Axioma}
%\theoremstyle{definition}
%\newtheorem{definition}[theorem]{Definição}
%\newtheorem{example}[theorem]{Exemplo}
%\newtheorem{exercise}{Exercício}[chapter] % contador próprio, vinculado a capitulo
%\theoremstyle{remark}
%\newtheorem{remark}[theorem]{Observação}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%% return to ams like mathcal instead of unicode-math ones
%\let\mathcal\relax % remove the definition by unicode-math
%\DeclareMathAlphabet{\mathcal}{OMS}{cmsy}{m}{n}
%% return to ams like mathbb instead of unicode-math ones
%\let\mathbb\relax % remove the definition by unicode-math
%\DeclareMathAlphabet{\mathbb}{U}{msb}{m}{n}

\let\orimathcal\mathcal
\let\orimathbb\mathbb
\DeclareMathAlphabet{\amsmathcal}{OMS}{cmsy}{m}{n}
\DeclareMathAlphabet{\amsmathbb}{U}{msb}{m}{n}

%\global\let\plainlabel\label
%\global\let\plainref\ref

% Fake bold in way to \mathversion{bold} works
% on XeLaTeX/LuaLaTeX with unicode-math.
% It loose several math symbols.
% \setmathfont[version=bold,FakeBold=3.5]{Latin Modern Math}
% De
% https://tex.stackexchange.com/questions/64839/how-to-change-listing-caption

% save some values for lstlinting
\newcounter{lstorichapter}
\newcounter{lstorisection}
%\let\orilabel\label
%\let\oriref\ref
\newcommand{\emptyaddcontentsline}[3]{}
\let\oriaddcontentsline\addcontentsline

\newcounter{orilstlisting}

%\let\oriref\ref % without link
%\makeatletter
%\let\refstar\@refstar % without link
%\makeatother

% Example of untf8 verbatim write
%\newenvironment{writefile}[1]
% {\deactivateeightbit\VerbatimOut{#1.out}}
% {\endVerbatimOut}
%\makeatletter
%\newcommand{\deactivateeightbit}{%
%  \count@=127
%  \loop
%    \catcode\count@=12
%    \ifnum\count@<255
%    \advance\count@\@ne
%  \repeat
%}
%\makeatother

% from https://tex.stackexchange.com/questions/192941/showexpl-not-showing-caption-of-a-lstlisting-within to create vertical space
%\def\xstrut{\protect\rule[-2ex]{0pt}{2ex}}
%----------------------------------------------------------------

% showexpl's LTXexample preset
%\newcommand*\SX@@preset{%
%\renewcommand\documentclass[2][]{\SX@eat@version}%
%\renewcommand\usepackage[2][]{\SX@eat@version}%
%\renewenvironment{document}{}{}%
%\renewenvironment{figure}[1][]{\def\@captype{figure}}{}%
%\renewenvironment{table}[1][]{\def\@captype{table}}{}%
%\renewcommand\cite[1][]{}%
%\let\tableofcontens\relax \let\listoffigures\relax
%\let\listoftables\relax \let\printindex\relax
%\let\listfiles\relax \let\nofiles\relax
%\let\index\@gobble \let\label\@gobble
%\let\bibliography\@gobble
%\let\pagestyle\@gobble \let\thispagestyle\@gobble
%%%\let\immediate\relax \let\write\@gobbletwo
%%%\let\closeout\@gobble \let\@@input\@gobble
%\renewcommand\marginpar[2][]{}%
%\renewcommand\footnote[2][]{}%
%\let\@footnotetext\@gobble
%%%\abovedisplayskip=\z@
%%%\abovedisplayshortskip=\z@
%}
\makeatletter
\providecommand\SX@eat@version[1][]{}

\def\ltxlistingpresetfromshowexpl{%
\renewcommand\documentclass[2][]{\SX@eat@version}%
\renewcommand\usepackage[2][]{\SX@eat@version}%
\renewenvironment{document}{}{}%
\renewenvironment{figure}[1][]{\def\@captype{figure}}{}%
\renewenvironment{table}[1][]{\def\@captype{table}}{}%
\renewcommand\cite[1][]{}%
\let\tableofcontens\relax \let\listoffigures\relax
\let\listoftables\relax \let\printindex\relax
\let\listfiles\relax \let\nofiles\relax
\let\index\@gobble 
% \let\label\@gobble
\let\bibliography\@gobble
\let\pagestyle\@gobble \let\thispagestyle\@gobble
%%\let\immediate\relax \let\write\@gobbletwo
%%\let\closeout\@gobble \let\@@input\@gobble
\renewcommand\marginpar[2][]{}%
%\renewcommand\footnote[2][]{}%
%\let\@footnotetext\@gobble
%%\abovedisplayskip=\z@
%%\abovedisplayshortskip=\z@
} % showexpl default preset

\makeatother

% ltxlisting preset
\newcommand{\ltxlistingpreset}{
 \ltxlistingpresetfromshowexpl
 %
 \setcounter{lstorichapter}{\value{chapter}}%
 \setcounter{chapter}{0}%
 \setcounter{lstorisection}{\value{section}}%
 \setcounter{section}{0}%
 \let\oriaddcontentsline\addcontentsline%
 \let\addcontentsline\emptyaddcontentsline%
 \let\orimathcal\mathcal%
 \let\orimathbb\mathbb%
 \let\mathcal\amsmathcal%
 \let\mathbb\amsmathbb%
 \let\orimaketitle\maketitle
 \let\maketitle\makearticletitle
 \let\title\orititle      
 \let\author\oriauthor
 \let\date\oridate
 \let\orithempfootnote\thempfootnote
 \renewcommand{\thempfootnote}{\arabic{mpfootnote}}
 \setcounter{orilstlisting}{\value{lstlisting}}
}

\newcommand{\ltxlistingposset}{
 \setcounter{chapter}{\value{lstorichapter}}%
 \setcounter{section}{\value{lstorisection}}%
 \let\addcontentsline\oriaddcontentsline%
 \let\mathcal\orimathcal%
 \let\mathbb\orimathbb%
 \let\maketitle\orimaketitle
 \let\thempfootnote\orithempfootnote
 \setcounter{lstlisting}{\value{orilstlisting}}
}

\makeatletter
% from
% https://tex.stackexchange.com/questions/9035/how-to-pass-an-optional-argument-to-an-environment-with-verbatim-content
%
% \expandafter trick from
% https://tex.stackexchange.com/questions/196655/how-to-pass-figure-position-to-keyval-macro
\newenvironment{ltxlisting}{%
    \catcode`\^^M=\active
    \@ifnextchar[% se tem argumento opcional
        {\catcode`\^^M=5 \lxt@listing@start}
        {\catcode`\^^M=5 \lxt@listing@start[]}
}{\ltx@listing@end}

% Use of keyval from
% http://www.tex.ac.uk/FAQ-keyval.html
%
% Trick to ignore unkonown keys from
% https://tex.stackexchange.com/questions/314944/ignore-undefined-key-in-argument-its-defined-in-the-macro-before-its-used

\define@key{ltxlisting}{preset}{#1} % executte preset
% como eh dificil expandir segundo argumento antes do comando, define um comando auxiliar. Depois usar \expanafter para expandir argumento antes
\newcommand{\ltx@listing@setkeys}[1]{\setkeys{ltxlisting}{#1}}

%\def\lxt@listing@start[#1]{%
%  \begingroup
%    \ltxlistingpreset
%    % own preset
%    \let\KV@errx@ORI\KV@errx   % Save original error handling
%    \let\KV@errx\@gobble       % Ignore unknown keys
%      \setkeys{ltxlisting}{#1}
%    \let\KV@errx\KV@errx@ORI   % Restore original error handling      
%    %    
%    \def\ltx@listing@args{language={[LaTeX]TeX},#1}
%    \VerbatimEnvironment
%    % \deactivateeightbit
%    \begin{VerbatimOut}{\jobname.tmp}%
%}
%
%\def\ltx@listing@end{%
% \end{VerbatimOut}
% \begin{singlespacing}%
% \expandafter\lstinputlisting\expandafter[\ltx@listing@args]{\jobname.tmp}
% %\noindent
% \begin{framed} % frmae the output
% \noindent
% \begin{minipage}{\linewidth} % box the output
% \input{\jobname.tmp}
% \end{minipage}
% \end{framed}
% \end{singlespacing}%
% \ltxlistingposset
%\endgroup
%}

\def\lxt@listing@start[#1]{%
  %\begingroup
    \def\ltx@listing@args{language={[LaTeX]TeX},#1}
    \VerbatimEnvironment
    % \deactivateeightbit
    \begin{VerbatimOut}{\jobname.tmp}%
}

\def\ltx@listing@end{%
 \end{VerbatimOut}    %    
 \begin{singlespacing}
 \expandafter\lstinputlisting\expandafter[\ltx@listing@args]{\jobname.tmp}
 \end{singlespacing}
% \begingroup
% \begin{singlespacing}%
%   \ltxlistingpreset
%    % own preset
%   \let\KV@errx@ORI\KV@errx   % Save original error handling
%   \let\KV@errx\@gobble       % Ignore unknown keys
%     \expandafter\ltx@listing@setkeys\expandafter{\ltx@listing@args}
%   \let\KV@errx\KV@errx@ORI   % Restore original error handling      
% %\noindent
% \begin{framed} % frmae the output
% \noindent
% \begin{minipage}{\linewidth} % box the output
% \input{\jobname.tmp}
% \end{minipage}
% \end{framed}
% \end{singlespacing}%
% \ltxlistingposset
%\endgroup
%
\begin{ltxlistingout}[\ltx@listing@args]
\input{\jobname.tmp}
\end{ltxlistingout}
}

\newenvironment{ltxlistingout}[1][]
{ \begingroup
  \begin{singlespacing}%
  \ltxlistingpreset
  % own preset
  % disable keyval unknow 'key' error message for keyval
  \let\KV@errx@ORI\KV@errx   % Save original error handling
  \let\KV@errx\@gobble       % Ignore unknown keys
  % If xkeyval loaded, disable its one too
  \@ifpackageloaded{xkeyval}{%
    \let\XKV@err@ORI\XKV@err
    \let\XKV@err\@gobble
  }{}   
    \expandafter\ltx@listing@setkeys\expandafter{#1}  
%    \expandafter\ltx@listing@setkeys\expandafter{\ltx@listing@args}
  \let\KV@errx\KV@errx@ORI   % Restore original error handling for keyval
  \@ifpackageloaded{xkeyval}{\let\XKV@err\XKV@err@ORI}{}   % Restore original error handling for xkeyval
  %\noindent
  \begin{framed} % frame the output
  \noindent
  \begin{minipage}{\linewidth} % box the output
}{\end{minipage}
  \end{framed}
  \end{singlespacing}%
  \ltxlistingposset
  \endgroup
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%% ajuste de cabecalhos %%%%%%%%%%
% redefine a saida do capitulo e da secao
% \pagestyle{fancy} redefine eles,
%  entao deve colocar no final do ps@fancy 
% para ter efeito. Usando \addto do babel
%%%%%% inicio da redefinicao do cabecalho %%%%%%
% Ajustando o chaptermark e sectionmark
\makeatletter
  %\addto\ps@fancy{%
    \renewcommand{\chaptermark}[1]{%
      \markboth{\if@mainmatter\thechapter. \fi #1}%
        {\if@mainmatter\thechapter. \fi #1}}
    \renewcommand{\sectionmark}[1]{%
      \markright{\if@mainmatter\thesection. \fi #1}}
  %}
\makeatother

\setlength{\headheight}{15pt} % enlarge heade height

% linha horizontal entre cabecalho e corpo do documento
\renewcommand{\headrulewidth}{0.5pt}
% sem linha horizontal entre corpo de texo e rodape
\renewcommand{\footrulewidth}{0pt}

% redefinindo o estilo da pagina "fancy"
% Redefinido o estilo fancy
\fancypagestyle{fancy}{%
  \fancyhf{} % limpa o cabecalho
  % redefine o cabcalho. \nouppercase foi usado para eliminar conversao para maiusculo do sumario/bibliografia
  \fancyhead[LE,RO]{\bfseries\thepage}
  \fancyhead[LO]{\bfseries\nouppercase\rightmark}
  \fancyhead[RE]{\bfseries\nouppercase\leftmark}
} % \fancypagestyle{fancy}{%

% redefine o "plain" (usado na primeira pagina do capitulo).
\fancypagestyle{plain}{%
   \fancyhead{} % get rid of headers
   \fancyhead[LE,RO]{\bfseries\thepage} % colocar enumeracao
   % \renewcommand{\headrulewidth}{0.5pt} % com linha horizontal
}

% Ajustando a primeira página do capitulo
\makeatletter
  %\let\ps@plain@original\ps@plain % copia do original, se necessário
  \AddToHook{cmd/ps@fancy/after}{\let\ps@plain\ps@fancyplain}
  \AddToHook{cmd/ps@empty/after}{\let\ps@plain\ps@empty}
\makeatother
%%%%%% fim da redefinicao do cabecalho %%%%%%  

% Providenciando logos
%%%%%%%%%%%%%%%%%%%%%%
\makeatletter

\AtBeginDocument{%
% From
% https://wiki.lyx.org/LyX/Logotype
%\providecommand{\LyX}{L\kern-.1667em\lower.25em\hbox{Y}\kern-.125emX\@}

\ifx\LyX\undefined
\def\@@LyX{L\kern-.1667em\lower.25em\hbox{Y}\kern-.125emX\@}%
%
\@ifpackageloaded{hyperref}
{\DeclareRobustCommand{\LyX}{%
  \texorpdfstring{\@@LyX}{LyX}}}%
{\DeclareRobustCommand{\LyX}{\@@LyX}}
\fi

% From
% https://tex.stackexchange.com/questions/18089/are-there-any-command-for-producing-the-bibtex-logo
%\ifx\BibTeX\undefined
%  \def\BibTeX{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em%
%     T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}%
%\fi

\ifx\BibTeX\undefined
  \def\@@BibTeX{B\kern-.05em{\sc i\kern-.025em b}\kern-.08em\TeX}%
%
\@ifpackageloaded{hyperref}
{
\DeclareRobustCommand{\BibTeX}{%
  \texorpdfstring{\@@BibTeX}{BibTeX}}}%
{\DeclareRobustCommand{\BibTeX}{\@@BibTeX}}    
\fi

% rotatebox trick from hologo (note that reflexbox fail inside section title)
%\ifx\XeTeX\undefined
%\@ifpackageloaded{hyperref}
%{
%\DeclareRobustCommand{\XeTeX}{%
%  \texorpdfstring{X\kern-.1667em\lower.7ex\hbox{\rotateboxbox[origin=c]{180}{E}}\kern-.125em\TeX}{XeTeX}}}%
%{\DeclareRobustCommand{\XeTeX}{%
%  X\kern-.1667em\lower.7ex\hbox{\rotateboxbox[origin=c]{180}{E}}\kern-.125em\TeX}}
%\fi

\ifx\XeLaTeX\undefined
\def\@@XeLaTeX{X\kern-.1667em\lower.7ex\hbox{\rotatebox[origin=c]{180}{E}}\kern-.125em\LaTeX}
%  
\@ifpackageloaded{hyperref}
{
\DeclareRobustCommand{\XeLaTeX}{%
  \texorpdfstring{\@@XeLaTeX}{XeLaTeX}}}%
{\DeclareRobustCommand{\XeLaTeX}{\@@XeLaTeX}}
\fi

% \LaTeX and \LaTeXe from latex.ltx
%\DeclareRobustCommand{\LaTeX}{L\kern-.36em%
%        {\sbox\z@ T%
%         \vbox to\ht\z@{\hbox{\check@mathfonts
%                              \fontsize\sf@size\z@
%                              \math@fontsfalse\selectfont
%                              A}%
%                        \vss}%
%        }%
%        \kern-.15em%
%        \TeX}
%\DeclareRobustCommand{\LaTeXe}{\mbox{\m@th
%  \if b\expandafter\@car\f@series\@nil\boldmath\fi
%  \LaTeX\kern.15em2$_{\textstyle\varepsilon}$}}

} %\AtBeginDocument

% fim do logo
\makeatother

% do amssymb, mas nao tem no unicode-math.
% usado no exemplo de diagrama comutativa
% " eh mapeado no babel. use ^^^^
% \providecommand{\circlearrowleft}{\symbol{^^^^27f2}}

% \providecommand{\circlearrowleft}{\symbol{10226}}

%\providecommand{\circlearrowleft}{\char{^^^^27f2}}
% Nao tem o comando \UnicodeMathSymbol?
%\makeatletter
% \let\UnicodeMathSymbol\um@mathsymbol@noparse
% \UnicodeMathSymbol{^^^^027F2}{\circlearrowleft}{\mathrel}{left circle arrow}%
% \DeclareUnicodeCharacter{27F2}{\circlearrowleft} % do inputenc (utf8)
% \def\circlearrowleft{\mathrel{\char^^^^27f2}}
%\makeatother

\providecommand{\circlearrowleft}{\acwopencirclearrow} % from unicode-math

\providecommand{\circlearrowleft}{\acwgapcirclearrow} % from unicode-math
% unicode version of \acwgapcirclearrow not appear on version 2017 of latin Modern (Cambria Math of Microsoft has this symbol).
% Need to tested on newer version of Latin Modern

% Defining from from amssymb
%\ifx\circlearrowleft\undefined
%  % From AMS (amssymb)
%  \DeclareSymbolFont{AMSa}{U}{msa}{m}{n} % from amsfonts
%  \DeclareMathSymbol{\circlearrowright}{\mathrel}{AMSa}{"08}
%  \DeclareMathSymbol{\circlearrowleft}{\mathrel}{AMSa}{"09}
%\fi

% \square do amssymb não tem no unicode-math
% providenciando como \openbox do amsthm

%\ifx\square\undefined
%  \let\square\openbox
%\fi
\providecommand{\square}{\openbox}

% lmusrrache/rmustache não tem no Latin Modern Math
% unicode math redefine no comeco do documento.
% Portanto, deve redefinir no comeco do documento (não no preambulo)
% usando \AtBeginDocument
\DeclareSymbolFont{largesymbolsoriginal}{OMX}{cmex}{m}{n}  
\AtBeginDocument{
%  \let\lmoustache\lmoustacheoriginal 
%  \let\rmoustache\rmoustacheoriginal
\DeclareMathDelimiter{\lmoustache}{\mathopen}{largesymbolsoriginal}{"7A}{largesymbolsoriginal}{"40}
\DeclareMathDelimiter{\rmoustache}{\mathclose}{largesymbolsoriginal}{"7B}{largesymbolsoriginal}{"41}
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% providenciando simbolos reservados para index, no indice remissivo
%
%\newcommand{\abssymbforindex}{|} % use \vert
%\index{delimitador!modulo@\abssymbforindex}
%\newcommand{\normsymbforindex}{\textbackslash |} % use \Vert
%\index{delimitador!norma@\normsymbforindex}

%\newcommand{\parenopensymbforindex}{$($}
%\index{delimitador!parenteaberta@$($}
%\newcommand{\parenclosesymbforindex}{$)$}
%\index{delimitador!parentefechada@$)$}
%\newcommand{\braceopensymbforindex}{$[$}
%\index{delimitador!colcheteaberta@[}
%\index{delimitador!colchetefechada@]}
%\newcommand{\curlyopensymbforindex}{\textbackslash\{}
\newcommand{\curlyopensymbforindex}{\{}
%\index{delimitador!chaveaberta@\curlyopensymbforindex}
%\newcommand{\curlyclosesymbforindex}{\textbackslash\}}
\newcommand{\curlyclosesymbforindex}{\}}
%\index{delimitador!chavefechada@\curlyclosesymbforindex}
\newcommand{\arrobasymbforindex}{$@$}
\newcommand{\exclsymbforindex}{$!$}

% Legenda a ser colocada embaixo da tabela/figura, conforme ABNT
% \providecommand{\legend}[1]{\par \medskip #1 \smallskip}
\providecommand{\legend}[1]{\par \medskip #1}

%%%%%%%%%%%%%%%%%%%%%
% provide some files
%-------------------
% \usepackage{filecontents} % nao precisa do pacote, se for usado no preamble e nao precisar reescrever quando arquivo ja existe
\begin{filecontents}{latex-via-exemplos-tabela.txt}
% Pontos da parabola (para usar com o tikz)
% % ou # marca a linha de comentario
-2	4
-1.5	2.25
-1.0	1
-0.5	0.25
0	0
0.5	0.25
1	1
1.5	2.25
2	4
\end{filecontents}

%\begin{filecontents}{latex-via-exemplos-lista-nomes.csv}
%"Nome","Trabalho","Observacao"
%"Nome 1","Trabalho 1",
%"Nome 2","Trabalho 2",
%\end{filecontents}

% Informações
%%%%%%%%%%%%%
\title{\LaTeXe{} Via Exemplos}
\author{Sadao Massago\thanks{DFQM-UFSCar -- Campus de Sorocaba, SP
(\url{http://dfqm.sorocaba.ufscar.br/})} }
% Versão preliminar: janeiro a abril de 2018
% Primeira versão publica (0.5): abril de 2018.
% Primeira atualizacao (0.5.1): junho de 2018.
% Segunda atualização, adicionando o ABNT (0.5.2): junho de 2018.
% Terceira atualização (0.5.3): junho de 2018.
% Quarta atualização (0.5.4): agosto de 2019
% Quinta atualização (0.5.6): dezembro de 2019 
% Sexta atualização (0.5.7): julho de 2021 
% Setima atualização (0.5.8): 17 de maio de 2022
% Oitava atualização (0.5.9): 01 de maio de 2023
% Nona atualização (0.5.9): 01 de maio de 2023}
% Decima atualização (0.5.10): 08 de dezembro de 2024
% Decima primeira atualização (0.5.11): 08 de dezembro de 2024
% Decima segunda atualização: 19 de dezembro de 2024
% Decima terceira atualização: 29 de dezembro de 2024
% Decima quarta atualização: 31 de dezembro de 2024
% Decima quinta atualização: \date{06 de janeiro de 2025}
% Decima sexta atualização: \date{08 de agosto de 2025}
% Decima setima atualização: \date{12 de setembro de 2025}
% Decima oitava atualização: \date{03 de outubro de 2025}
% Decima nona atualização: \date{12 de outubro de 2025}
% Vigésima atualização: \date{18 de outubro de 2025}
% Vigésima primeira atualização: \date{01 de novembro de 2025}
% Vigésima segunda atualização:
%  \date{15 de dezembro de 2025}
% Vigésima terceira atualização:
  \date{07 de março de 2026}  

%%%%%%%%%%%%%%%%%%%%%%%
% Documet start here
%----------------------
% INICIO DO DOCUMENTO
%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

\maketitle
\pagestyle{empty}
%\thispagestyle{empty}

Copyright \textcopyright 2018--2025 por Sadao Massago. 
Todos os direitos reservados.
Este documento é software livre; podendo ser redistribuído e/ou modificado de acordo com os termos da Licença Pública do Projeto LaTeX (LPPL); versão 1.3c da Licença, ou (se for sua opção) qualquer versão posterior. 
Veja \url{http://www.latex-project.org/lppl.txt}.

\

A versão atual deste documento está disponível em \\
\url{https://ctan.org/pkg/latex-via-exemplos}

%%{CTAN://info/latex-via-exemplos}

\clearpage\thispagestyle{empty}\cleardoublepage
\frontmatter
\pagestyle{empty}
\chapter*{}
``\emph{Ninguém é tão pobre que nada possa dar e ninguém é tão rico que não precise receber}''
(Alvaro Granha Loregian)

\clearpage\thispagestyle{empty}\cleardoublepage
\frontmatter

\phantomsection
\pdfbookmark[chapter]{\contentsname}{toc}
\tableofcontents

%\pagestyle{fancy}

\clearpage\thispagestyle{empty}\cleardoublepage
\pagestyle{fancy}
\phantomsection
%\pdfbookmark[chapter]{Lista de \lstlistingname s}{lstlisting}
\addcontentsline{toc}{chapter}{Lista de \lstlistingname s}
\lstlistoflistings

\clearpage\thispagestyle{empty}\cleardoublepage
\markboth{Prefácio}{Prefácio}
% adiciona bookmark no PDF
\phantomsection
%\pdfbookmark[chapter]{Prefácio}{prefacio}
%\pdfbookmark[0]{Prefácio}
\addcontentsline{toc}{chapter}{Prefácio}
\chapter*{Prefácio}
O \LaTeXe{} é um sistema de processamento de documentos implementados sobre o \TeX.

O objetivo deste documento é apresentar o \LaTeXe{} de forma gradativa, usando os exemplos.
Assim, o documento contém muitos exemplos e suas saídas, o que aumentou consideravelmente as páginas.

Este documento está dividido em 19 capítulos mais os apêndices.

Do Capítulo~1 até Capítulo~14 utilizam somente os pacotes da \texttt{base} e de \texttt{required} na qual qualquer sistema \LaTeX{} devem conter.
Do capítulo 15 a 18 utilizam os pacotes que não são da \texttt{base} e de \texttt{required} para incrementar a funcionalidade.
Nos apêndices, serão tratados alguns recursos extras que podem ser interessantes, mas que julgar que não sejam de interesse de todos.

Capítulo~1 é uma breve introdução sobre o sistema.

Capítulo~2 trata do primeiro documento em \LaTeXe, incluindo introdução à escrita de textos.

Capítulo~3 introduz sobre fórmulas matemáticas.

Capítulo~4 trata sobre estrutura de textos.

Capítulo~5 é uma continuação do Capítulo~3, tratando sobre fórmulas matemáticas.

Capítulo~6 trata sobre definições de comandos e ambientes.

Capítulo~7 discute sobre divisão lógica de documentos, conhecido como ``seccionamentos''.

Capítulo~8 trata de definições e uso dos ambientes do tipo teoremas.

Capítulo~9 discute sobre a criação de figuras e tabelas flutuantes, tabelas longas e inclusão de imagem externa.

Capítulo~10 trata sobre ajuste das fontes e espaçamentos.

Capítulo~11 trata sobre referências bibliográficas e índice remissivos. \BibTeX{} também será introduzido neste capítulo.

Capítulo~12 trata sobre medidas e contadores.

Capítulo~13 e 14 exploram várias possibilidades dentro dos pacotes de \texttt{base} e \texttt{required} que não foram discutidos nos capítulos anteriores.

Capítulo~15 discute o uso de pacotes fora do \texttt{base} e \texttt{required} para ajuste de documentos.
A partir deste capítulo, serão apresentados pacotes fora do \texttt{base} e \texttt{required}. 
Isto significa que os pacotes indicados podem precisar de instalação a parte em alguns sistemas.

Capítulo~16 discute o pacote \texttt{xcolor} especial para cores, e \texttt{tikz} espacial para criar ilustrações.

Capítulo~17 ilustra a criação de \texttt{poster} e \texttt{slides} de apresentação.

Capítulo~18 apresenta o uso de \XeLaTeX{} e Lua\LaTeX, considerado como a próxima geração de \LaTeX.

Capítulo~19 apresenta a formatação no padrão de Associação Brasileira de Normas Técnicas (ABNT)\index{ABNT}.

Apêndice~A é sobre símbolos básicos do \LaTeX.

Apêndice~B é sobre como escrever um pacote (arquivo de estilos).

Apêndice~C trata de editor \LyX{} que permite elaborar documentos de forma mais visual como os editores para escritórios, em vez de editar diretamente o código fonte em \LaTeX.

Apêndice~D trata da mala direta, criação do caderno de resumos, folhetos, etc que são interessantes para organizadores de eventos.

Apêndice~E trata de pacotes úteis para elaborar provas e lista de exercícios.

Apêndice~F trata de pacotes interessantes para desenvolver projetos tal como escrever um livro ou similar.

Apêndice~G descreve alguns aplicativos livres interessantes que auxilia os usuários de \LaTeX.
\

% Sorocaba, abril de 2018.
% Sorocaba, junho de 2018.
% Sorocaba, agosto de 2019.
% Sorocaba, dezembro de 2019.
% Sorocaba, julho de 2021.
% Sorocaba, maio de 2022.
% Sorocaba, outubro de 2023.
% Sorocaba, dezembro de 2024.
% Sorocaba, janeiro de 2025.
% Sorocaba, agosto de 2025.
% Sorocaba, setembro de 2025.
% Sorocaba, outubro de 2025.
% Sorocaba, novembro de 2025.
% Sorocaba, dezembro de 2025.
Sorocaba, março de 2026.

\

Sadao Massago \verb+<sadao@ufscar.br>+

%\pagestyle{headings}

\clearpage\thispagestyle{empty}\cleardoublepage
\mainmatter
\pagestyle{fancy}
\chapter{Introdução}

\LaTeX{} é um sistema de diagramação de documentos profissional largamente utilizados, desenvolvido sobre o \TeX{}.
Para quem entende inglês, os livros impressos recomendados são \cite{book:lamport:1994} e \cite{book:goossens:2004}. 
Outros textos recomendados que podem ser lidos gratuitamente são \cite{book:oetiker:2025}, \cite{misc:indiantug:2000} e \cite{book:wikibook:latex}.
Note que a tradução em português brasileiro do \cite{book:oetiker:2025} costuma estar desatualizado em relação à versão original.
Então prefira a versão em inglês.

\section{Uma breve história}
O \TeX{} \cite{book:knuth:1986} e a fonte padrão \texttt{Computer Modern}, foram desenvolvidos pelo \emph{Donald Kunuth}\index{Donald Kunuth} em 1977 a 1985.
Dos sistemas implementados sobre o \TeX, o mas usado é o \LaTeX{} \cite{book:lamport:1986} desenvolvido pela equipe de \emph{Leslie Lamport}\index{Leslie Lamport}, concluido em 1985.
A versão mais utilizada do \LaTeX{} foi concluído em 1994 que é o \LaTeXe{} \cite{book:lamport:1994}.
Em 2004, o \TeX{} começou a suportar oficialmente o \texttt{utf-8}, facilitando a elaboração de documentos multi-idiomas.
Em 2007, o Xe\TeX{} que suporta o uso de fontes do sistema implementado inicialmente no \texttt{Mac OSX} foi portado para \texttt{linux} e \texttt{Windows}.
Em 2008, o recurso de sincronização do documento fonte com o \texttt{PDF} tornou fácil e \texttt{PDF} foi substituindo a saída DVI do \TeX{} na diagramação.
Em 2010 foi lançado a primeira versão estável do Lua\TeX{}, considerado como o sucessor do PDF\TeX{}. 
O Lua\TeX{}, além de poder usar as fontes do sistema como o Xe\TeX, também pode estender a funcionalidade com a linguagem \texttt{script} \texttt{Lua}.
% A partir de 2010, pdflatex converte eps automaticamente para pdf usando pacote epstopdf (é possivel desativar explicitamente). O bibtexu suporta uft-8 na referência bibliográfica.
Em 2018, o \LaTeX{} passou a adotar a codificação \texttt{utf8} como padrão, eliminado a necessidade de especificar explicitamente.
% \verb+\usepackage[utf8]{inputenc}+ no preãmbulo do documento. 

% historia de distribuiçãoo de TeXLive com mudança a cada release está inclusso em
% https://www.tug.org/texlive/doc/texlive-en/texlive-en.html
\section{Como usar \LaTeX{}}
O \TeX{}\index{TeX} é um sistema de compilação de documentos e o \LaTeX{}\index{LaTeX} é um conjunto de macros (instruções) para automatizar e facilitar a diagramação de documentos.

O documento é preparado como arquivo texto num editor de texto, compilado pelo \LaTeX{}, visualizado e corrigido e compilado novamente, até obter o resultado desejado.
O arquivo fonte do documento costuma ser editado no editor próprio para \LaTeX{} tais como \texttt{TeXMaker}\index{TeXMaker} (\url{http://www.xm1math.net/texmaker/}) e \texttt{TeXStudio}\index{TeXStudio} (\url{https://www.texstudio.org/}), ambos disponível livremente em várias plataformas. 
Além de recursos para facilitar a escrever documentos, eles contam com botões de compilação e visualização, assim como sincronismo de \texttt{PDF} com o código fonte.
Para quem quer a funcionalidade mais próxima dos aplicativos de escritórios que permite visualizar como vai ficar enquanto escreve e quer elaborar o documento usando botões e menus em vez de digitar comandos, poderá optar pelo \LyX{}\index{LyX} (\url{https://www.lyx.org/}) que também é livre e suporta várias plataformas.
Para evitar erros de escrita, é recomendável que ative o corretor ortográfico com idioma desejado, o que depende de cada editor.
Para compilar, deverá instalar alguma distribuição de \TeX{}. 
Em geral, o mais recomendado é o \texttt{TeXLive}\index{TeXLive} para \texttt{Linux}, \texttt{MacTeX}\index{MacTeX} para \texttt{Mac OS} e \texttt{MikTeX}\index{MikTeX} para \texttt{Windows}, todos são livres.

Evite usar o espaço no nome de arquivos para \LaTeX, pois o sincronismo do código fonte com o \texttt{PDF} (posicionar \texttt{PDF} na posição correspondente à linha de código fonte e vice-versa) pode tornar parcial.

\clearpage\thispagestyle{empty}\cleardoublepage
\chapter{Iniciando um Documento}
Neste capítulo, vamos tratar do básico de como começar um documento \LaTeX.

\section{Primeiro documento}
Um documento em \LaTeX{} inicia-se com o comando \verb+\documentclass+\index{documentclass} que especifica qual tipo de documentos será diagramado.
Em seguida, será especificado os pacotes (conjunto de instruções) adicionais a serem carregados e também será realizada algumas configurações. Esta parte do documento é chamado de \texttt{preamble}\index{preamble} (preâmbulo) do documento.
Depois inicia o conteúdo do documento com \verb+\begin{document}+, escreve o corpo do documento e finaliza o documento com \verb+\end{document}+.

O código minimal do documento e sua saída em \texttt{pdf} (que está dentro da moldura) seria como do Exemplo~\ref{ex02:minimal}.

\begin{ltxlisting}[caption={ex02-minimal.tex},label=ex02:minimal]
\documentclass{article}
\begin{document}
Alô pessoal.
\end{document}
\end{ltxlisting}

Para gerar o arquivo \texttt{PDF}, deverá processar com o \LaTeX.
Salve o arquivo 
%com extensão \texttt{tex} 
e clique no botão de \texttt{Compilar} no caso de \texttt{TeXMaker} e botão \texttt{LaTeX} no caso de \texttt{TexStudio} (na versão mais nova, é um triângulo verde). 

Para documento ser mais funcional, precisará adicionar algumas especificações no documento, como o tamanho de letra, idioma, etc.
Assim, ficaria commo no Exemplo~\ref{ex02:inicial}.

% \begin{spacing}{1}
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex01-01.tex},label=ex:01-01]
\begin{ltxlisting}[caption={ex02-inicial.tex},label=ex02:inicial]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}

\begin{document}
Este é primeiro parágrafo.
Continuando o primeiro parágrafo.

Este é o segundo parágrafo.

Espaço extra      são eliminados.
\end{document}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

O comando do \LaTeX{} inicia com o caractere especial ``\verb+\+''\index{\textbackslash@\verb+\+}. 
O primeiro comando \verb+\documentclass+\index{documentclass@\verb+\documentclass+} tem como parâmetros delimitados pelos colchetes e outro com chaves.
O que é delimitado pelo chaves é o parâmetro obrigatório\index{parâmetro!obrigatório} (aqui, é o \texttt{article}). 
Os parâmetros colocados entre colchetes, separados pela vírgula são os opcionais\index{parâmetro!opcional}. 
Neste exemplo, são \texttt{12pt} e \texttt{a4paper}. 
Opcionais significa que pode ou não colocar tais opções.
O parâmetro obrigatório (colocado entre chaves) do comando \verb+\documentclass+ é o tipo de documentos. 
Aqui foi escolhido o \texttt{article}\index{article} (artigo) que tem como objetivo, colocar maior quantidade de informações no espaço limitado. 
Outro tipo de documento bastante usados é o \texttt{book}\index{book} (livro).
Os parâmetros opcionais usados foram \texttt{12pt}\index{12pt} que é o tamanho de letra\index{tamanho!letra} em 12pt e \texttt{a4paper}\index{a4paper} que é o tamanho do papel\index{tamanho!papel} em padrão \texttt{A4}.

Depois segue com sequência de comandos \verb+\usepackage+\index{usepackage@\verb+\usepackage+}.
O \verb+\usepackage+ carrega o pacote\index{pacote} (conjunto de instruções) que configura o documento ou disponibiliza os comandos específicos.
O \LaTeX{} dispõe uma grande quantidade de pacotes, uma para casa situação.
No Exemplo~\ref{ex02:inicial}, foram carregados os pacotes \texttt{fontenc} e \texttt{babel}, todos eles com um parâmetro.
O primeiro pacote \texttt{fontenc}\index{fontenc} é usado para especificar a codificação das fontes de letras. 
A opção \texttt{T1} indica que a fonte está em \texttt{T1} que dispõe de letras de 8-bits (acentuadas). 
Esta opção é útil para definir a regra de hifenização local do documento no \texttt{preamble} e efetuar busca de texto com letras acentuadas no \texttt{PDF} final. Além disso, isto evita de ter caracteres trocadas indevidamente como o `<' e `>' por `\textexclamdown' e `\textquestiondown'.

% A seguir, o pacote \texttt{inputenc}\index{inputenc} especifica a codificação do documento fonte (o que está editando). 
% Atualmente, o \texttt{utf8} é o recomendado, mas antigamente usava o \texttt{latin1} para português brasileiro. 
% Note que \texttt{inputenc} foi colocado depois da \texttt{fontenc}.
% Assim, a faixa de coberta dos caracteres é maior, não limitando somente a faixa de \texttt{T1}.

O segundo e último pacote deste exemplo é o \texttt{babel} com a opção \texttt{brazil}. 
O pacote \texttt{babel}\index{babel} seleciona a regra de hifenização e nomes dos elementos (como figura, capítulo, etc) para idioma especificada. 
A opção \texttt{brazil} ou \texttt{brazilian} escolhe o português brasileiro (não confundir com a opção \texttt{portugese} que escolherá português de Portugal).

Antigamente (anté 2018), usava-se ainda o pacote \verb+inputenc+ para configurar a codificação de entrada do documento, o que não é mais necessário, exceto para reviver os documentos antigos.

Depois encontra o \verb+\begin{document}+.
O comando \verb+\begin+\index{begin@\verb+\begin+} inicia um ambiente. 
Um ambiente\index{ambiente} é uma configuração que será aplicado nos trechos entre \verb+\begin{<ambiente>}+ e \verb+\end{<ambiente>}+\index{end@\verb+\end+}.
O \verb+\begin{document}+ e \verb+\end{document}+
determina o ambiente de documento na qual seus conteúdos serão colocados no arquivo \texttt{PDF}.

A quebra de linha não efetua quebra de linha na saída. 
Para que tenha um novo parágrafo\index{parágrafo} de fato, deverá pular uma linha.

Note que, se tiver mais de um espaço, o \LaTeX{} interpretará como um único espaço.

%Para gerar o arquivo \texttt{PDF}, deverá processar com o \LaTeX.
%Salve o arquivo com extensão \texttt{tex} e clique no botão de \texttt{Compilar} no caso de \texttt{TeXMaker} e botão \texttt{LaTeX} no caso de \texttt{TexStudio} (na versão mais nova, é um triângulo verde). 

\section{Mensagem de erro e correção}

Quando ocorre erro de compilação, o \texttt{TeXMaker} mostrará em vermelho na parte de baixo e indicará a linha onde ocorreu o erro. 
Maioria dos editores para \LaTeX{} posicionará automaticamente na linha do primeiro erro quando compila. 
Para demais erros, ao clicar nas mensagens de erros em vermelho, posicionará automaticamente na linha correspondente a tais erros.
Para melhorar a precisão da localização de erros, quebre o parágrafo em várias linhas (lembre-se que quebra de linha não afeta o documento final).

Assim, deve corrigir os erros e compilar de novo, até sumir com todos os erros.

Quando compila o documento, o \texttt{TeXMaker} posicionará na página do \texttt{PDF}, correspondente aonde fica o cursor no editor de texto. Para localizar qual código gerou uma determinada parte de \texttt{PDF}, clique no botão direito sobre parte do \texttt{PDF} e escolha ``clique para ir para a linha''.

\section{Caracteres especiais}
Existem vários caracteres especiais reservados para os comandos e similares do \LaTeX. Por exemplo, ``\verb+\+'' é usado para iniciar um comando, chaves é usado para indicar os parâmetros, etc. 
Para inserir estes caracteres especiais\index{caracteres especiais} no documento, deverá usar os comandos especiais de \LaTeX.

%A seguir, alguns deles. 
No código fonte do Exemplo~\ref{ex02:caracteres}, foi colocado somente os trechos que ficam no corpo do documento.
Para que o arquivo compile, deverá colocar entre \verb+\begin{document}+ e \verb+\end{document}+ do arquivo válido como do Exemplo~\ref{ex02:inicial}. 

%\begin{singlespacing}
% \begin{LTXexample}[pos=b,caption={ex01-02.tex},label=ex:01-02]
\begin{ltxlisting}[caption={ex02-caracteres.tex},label=ex02:caracteres]
% esta é comentário
Alguns caracteres especiais:
\textbackslash, \$, \#, \%, \&, \_, \{, \}

Alguns acentos no modo TeX (atualmente, não é mais necessário):
\'a, \`a, \^e, \'\i, \~a, \"u

``Abrindo e fechando aspas''

Logo do \LaTeX{} e do \TeX.
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

O Exemplo~\ref{ex02:caracteres}
% é uma parte do arquivo de exemplo \texttt{ex01-02.tex} que 
mostra alguns comandos para produzir caracteres especiais.

Note que as letras com a acentuação direta\index{acentuacao@{acentuação}!direta} pelo teclado é suportado.
% , desde que \verb+\usepackage[utf8]{inputenc}+ ou equivalentes sejam colocados no \texttt{preamble} do documento. 
No exemplo acima, foi mostrado a acentuação do modo \TeX{}\index{acentuacao@{acentuação}!modo \TeX} que pode ser usados em alguns casos especiais. %, tais como dentro do arquivo de referências bibliográficas, ou arquivos de pacotes.
Note que \verb+\'+ acentua a letra seguinte, mas ``i'' tem pingo e ``í'' (com acento) não tem pingo. \verb+\i+ é o comando para produzir ``i'' sem pingo\index{i sem pingo}.
No derivado de e-TeX como o TeX atual, costuma automatizar a retirada de pingo quando acentua, eliminando a necessidade do uso de i sem pingo.
Note também que o acento agudo no modo \TeX{} é produzido por apóstrofos e não pelo acento agudo.

Apóstrofos\index{apóstrofos} é aberto por um acento agudo e fechado pelo apóstrofos.
Aspas\index{aspas} é aberto pelos dois acentos agudos e fechado pelos dois apóstrofos (fiquem atentos de que fechamento de aspas é dois apóstrofos e não é aspas).

No \LaTeX, quando encontra ``\%''\index{comentario@{comentário}}\index{\%}, o restante desta linha será considerado como comentário\index{comentário} e é ignorado completamente.

Comentário é importante para inserir observações sobre o código, ou desativar um trecho do código.
Em geral, quem quer remover um trecho do código de \LaTeX{} no documento, simplesmente comenta o trecho, pois se algum dia quiser ativar, é só remover o ``\%'' do comentário.

Para comentar/descomentar um trecho maior no \texttt{TeXMaker}, selecione o trecho e use o \texttt{Editar->Comentar} e \texttt{Editar->Descomentar}.

Quando editar um documento, existem palavras que devem aparecer grudados (não pode ficar primeira parte no final de linha e outra no começo da linha) como no caso de enumeração de páginas, exemplos, teoremas, etc. 
Neste caso, usa-se o til (\verb+~+\index{\verb+~+}) em vez do espaço\index{espaço!não quebrável}. 
Por exemplo, no caso de ``\verb+página~1+'', não acontece de ``\texttt{página}'' ficar no final de uma linha e ``\verb+1+'' ficar no começo da próxima linha. Outros casos é colocar entre artigos e pronomes, como em \verb+O~Teorema de Pitágoras+ para evitar que o artigo fique no final de uma linha e restante na próxima linha.

Por último, quando insere comandos e precisa ter espaço depois dele, coloque um par de chaves\index{espaço!depois do comando}. Por exemplo, ``\verb+\LaTeX produz+'' ficaria como ``\LaTeX produz'' (grudados) enquanto que ``\verb+\LaTeX{} produz+'' ficará como ``\LaTeX{} produz'' (com espaço correto). Também lembre-se que no comando de \LaTeX, maiúsculo e minusculo são distinguidas.
Portanto, ``\verb+Latex+'' ou ``\verb+\latex+'' resultarão em erros em vez de produzir logotipo de \LaTeX.

\clearpage\thispagestyle{empty}\cleardoublepage
\chapter{Introdução às Fórmulas Matemáticas}
Neste capítulo, veremos um pouco sobre as fórmulas matemáticas.

\section{Fórmula \texttt{textstyle} e \texttt{displaystyle}}

Uma fórmula matemática (ou modo matemático) \texttt{textstyle}\index{textstyle} (ou \texttt{inlinestyle}\index{inlinestyle}) é uma fórmula no meio do texto. 
Por exemplo, denotaremos uma sequência por $\{x_n\}$ e seu limite por $\lim_n\to\infty x_n$ é modo \texttt{textstyle}, pois fórmulas estão no meio do texto.
Agora as fórmulas matemáticas que ocupam linha separada de texto como em
\[
x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}
\]
é denominado de fórmula matemática no modo \texttt{displaystyle}\index{displaystyle}.

A fórmula no modo \texttt{textstyle} devem ficar delimitados entre ``\$''\index{\$} ou ``\textbackslash(''\index{\textbackslash parenteaberta@{\textbackslash$($}} e  ``\textbackslash)''\index{\textbackslash parentefechada@{\textbackslash$)$}}, ou ainda poderá usar o ambiente \texttt{math}\index{math}.
O mais usado é delimitar com ``\$''.

A fórmula no modo \texttt{displaystyle} devem ficar delimitados entre ``\$\$''\index{\$\$} (dois dólares) ou ``\textbackslash[''\index{\textbackslash[} e  ``\textbackslash]''\index{\textbackslash]}, ou ainda poderá usar o ambiente \texttt{displaymath}\index{displaymath}. 
E recomendado que delimite com \textbackslash['' e  ``\textbackslash]'',
pois delimitar com ``\$\$'' (dois dólares) dificultará a depuração (achar erros).

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex02-01.tex},label=ex:02-01]
\begin{ltxlisting}[caption={ex03-formulas.tex},label=ex03:formulas]
Solução da equação $ax^2+bx+x=0$ é dado pela fórmula
\[
x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}
\]

Elemento da matriz $A$ costuma ser denotado por $a_{ij}$
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}


No modo matemático, ``\verb+^+''\index{\^{}@\verb+^+} é usado para indicar a potência\index{modo matematico@{modo matemático}!potencia@{potência}} e %``\_''
``\verb+_+''\index{\_@\verb+_+} indica o índice\index{modo matematico@{modo matemático}!indice@{índice}}.
Outros comandos utilizados foram, \verb+\frac+\index{frac@\verb+\frac+} que produz frações\index{modo matematico@{modo matemático}!fracao@{fração}}, onde primeiro parâmetro é numerador e segundo, o denominador. 
O comando \verb+\sqrt+\index{sqrt@\verb+\sqrt+} produz raiz\index{raiz} do argumento. 
O comando \verb+\pm+\index{modo matematico@{modo matemático}!operador!\verb+\pm+, $\pm$} é o símbolo $\pm$. 
Na matemática, muitos símbolos são usados e o \LaTeX{} dispõe de comandos para cada uma desses símbolos. 
Em geral, o editor para \LaTeX{} dispõe de painel de inserção dos símbolos matemáticos para ajudar na elaboração do documento. 
No caso de \texttt{TeXMaker}, tem um botão no painel lateral esquerdo que permitem ativar tais painéis, organizados em grupos.
As letras gregas\index{letra!grega} no \LaTeX{} são produzidas pelo comando com nome em inglês. 
Se nome começar em maiúsculo, será letra grega maiúscula.

Note que, quando os parâmetros de um comando for mais de um (mais de uma letra, por exemplo), deverá colocar entre chaves, como foram feitos para \verb+\frac+ e \verb+sqrt+.

Isto vale também para expoentes e índices, como foi feito no elemento da matriz (com índices de duas letras).

O comando \verb+\sqrt+\index{sqrt@\verb+\sqrt+} aceita o parâmetro opcional (delimitado pelos colchetes) para poder produzir raiz $n$-ésima. 
O \verb+$\sqrt[n]{x}$+ produz $\sqrt[n]{x}$. 
O Exemplo~\ref{ex03:simbolos} ilustra algumas letras gregas e símbolos. 
Note que uma tabela completa de símbolos do \LaTeX{} \cite{book:pakin:2017} está disponível gratuitamente.

%\begin{singlespacing}
% \begin{LTXexample}[pos=b,caption={ex02-01.tex, parte b},label=ex:02-01:b]
\begin{ltxlisting}[caption={ex03-simbolos.tex},label=ex03:simbolos]
Algumas letras gregas minúsculas: $\alpha, \beta, \gamma, \lambda, \pi$.

Algumas letras gregas Maiúsculas: $\Gamma, \Delta, \Lambda, \Pi, \Omega$.

Alguns símbolos: 
$\le, \ge, \neq, \in, \notin, \exists, \nexists, \to, \infty, \forall, \therefore$.
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

\section{Modo \texttt{displaystyle} no meio do texto}
As fórmulas no meio do texto (\texttt{textstyle}) são produzidos de forma que economize a sua altura. 
Por isso, elementos que normalmente ficariam empilhados, ficariam como índice e expoente. 
Por exemplo, $\displaystyle \lim_{n\to\infty}x_n$ no modo \texttt{textstyle}  ficaria como $\lim_{n\to\infty}x_n$. 
Para que uma fórmula fique como \texttt{displaystyle} no meio do texto\index{modo matematico@{modo matemático}!displaystyle!meio do texto}, coloque \verb+\displaystyle+ no começo das fórmulas. O Exemplo~\ref{ex03:displaystyle} ilustra o caso.

%\begin{singlespacing}
\begin{ltxlisting}[pos=b,caption={ex03-displaystyle.tex},label=ex03:displaystyle]
Temos que $\lim_{n\to\infty}x_n=0$ %textstyle
e  $\displaystyle \lim_{n\to\infty}x_n=0$ %displaystyle

Outros casos $\sum_{i=0}^n i = 0+1+\cdots+n$
e $\displaystyle \sum_{i=0}^n i = 0+1+\cdots+n$.

Forçando a colocar encima/embaixo
\[ \int\limits_I f = \int^b_af(x)dx \]
Forçar a não colocar encima/embaixo
\[ \sum\nolimits_{k=0}^n x_k = 1 \]
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Para forçar a colocar elementos embaixo em vez de como índice quando usa o ``\verb+_+'', usa-se o comando \verb+\limits+, como no Exemplo~\ref{ex03:displaystyle}.
% Observação: No LuaLaTeX 0.8 (2018-02-17), \limits acima não funcionou bem. O valor de baixo fica um pouco mais para direita.
% Idem para \mathop{}. No XeLaTeX, fica igual a do PDFLaTeX.
% Na versao 2018, ja estava resolvido tal problema

Note que, para colocar no modo \texttt{textstyle} nas fórmulas \texttt{displaystyle}, existe o comando \verb+\textstyle+\index{modo matematico@{modo matemático}!textstyle} que é usado de forma similar a \verb+\displaystyle+. 
Nesta família de comandos, também existe o comando \verb+\scriptstyle+\index{modo matematico@{modo matemático}!scriptstyle} que tenta  reduzir o tamanho das fórmulas.

\section{Equação enumerada e referências cruzadas}

Uma equação enumerada é produzido pelo ambiente \texttt{equation}\index{equation}. 
Quando algum comando do \LaTeX{} enumera automaticamente (equações, seções, capítulos, figuras, tabelas, itens de istas enumeradas, teoremas, etc), sua enumeração pode ser guardada e usada no outro lugar, recurso conhecido como referência cruzada\index{referência cruzada}. 
Para tanto, coloca-se o comando \verb+\label{nome do rótulo}+\index{label@\verb+\label+} que produz um rótulo\index{rótulo} que armazena a enumeração e \verb+\ref{nome do rótulo}+\index{ref@\verb+\ref+} aonde quer colocar esta enumeração.
O Exeplo~\ref{ex03:ref} ilustra o uso da referência cruzada.

%\begin{singlespacing}
%% truque do https://www.latex4technics.com/?note=30gq
%% para referencia funcionar no LTXexample
%\let\orilabel\label
%\setcounter{lstorichapter}{\value{chapter}}
%\begin{LTXexample}[pos=b,caption={ex02-02.tex},label=ex:02-02,preset={\let\label\orilabel,\setcounter{chapter}{1}}]
\begin{ltxlisting}[caption={ex03-ref.tex},label=ex03:ref]
\begin{equation}\label{eq:pitagoras}
a^2=b^2+c^2
\end{equation}
Pela Equação~\ref{eq:pitagoras} da página~\pageref{eq:pitagoras}\ldots
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}
%\setcounter{chapter}{\value{lstorichapter}}

Como já foi mencionado, o ambiente \texttt{equation} produz enumeração automática na equação. 
Assim, poderá criar um rótulo para referenciar o número desta equação com o comando \verb+\label+. 
O nome do rótulo escolhido para esta equação foi \texttt{eq:pitagoras}. 
Tome cuidado para não usar espaços, letras acentuadas ou símbolos especiais, o que dificulta a depuração ou causa erros. 
No Exemplo~\ref{ex03:ref}, ``:'' foi usado em vez do espaço para separar palavras. 
Note que foi colocado o prefixo ``eq'' para rótulo da equação. 
Como pode ter teoremas, equações, figuras, etc que podem sugerir o mesmo nome, é costume usar algum prefixo para cada categoria, o que facilitará a lembrar o elemento que é associado ao rótulo.
Para referenciar (usar o número) da equação, foi usado o comando \verb+\ref+ e para referenciar a página, foi usado o comando \verb+\pageref+\index{pageref@\verb+\pageref+}. 
Note que os editores especializados para \LaTeX, costuma ter recursos de listar os rótulos existentes para referências, o que facilita a editoração e prevenir erros.
Também note o uso de ``\verb+~+''\index{\~{}@\verb+~+} em vez do espaço para usar referências, o que evita que nome ``Equação'' fique no final de uma linha e numeração no começo da próxima linha.

Quando usa a referência cruzada, as enumerações sempre estarão coerentes e se usar o pacote \texttt{hyperref}, terão link automáticos no documento PDF.

Uma observação importante é o fato do \LaTeX{} utilizar arquivo auxiliar para armazenar rótulos. Assim, quando usa as referências cruzadas, precisam compilar o documento duas vezes para ter a enumeração ou link correta. 

\clearpage\thispagestyle{empty}\cleardoublepage
\chapter{Estrutura de Texto}\label{chap:estrutura:texto}
Neste capítulo, vamos ver sobre a formatação de textos.

\section{Alinhamentos}
O alinhamento do texto padrão no \LaTeX{} é justificado\index{alinhamento!justificado}, isto é, alinhado tanto a direita como a esquerda.
Para alinhar somente a esquerda\index{alinhamento!esquerda} ou a direita\index{alinhamento!direita}, usa-se o ambiente \texttt{flushleft}\index{flushleft} e \texttt{flushright}\index{flushright}. 
Para centralizar\index{alinhamento!centralizado}, usa-se o ambiente \texttt{center}\index{center}.
O Exemplo~\ref{ex04:alinhamento} ilustra os alinhamentos de texto.

%\begin{singlespacing}
% \begin{LTXexample}[pos=b,caption={ex01-04.tex},label=ex:01-04]
\begin{ltxlisting}[caption={ex04-alinhamento.tex},label=ex04:alinhamento]
Parágrafo normal.
\begin{center}
Parágrafo centralizado.
\end{center}
\begin{flushright}
Parágrafo alinhado a direita.
\end{flushright}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Quando quer alinhar dentro do ambiente (o que tem \verb+\begin+ e \verb+\end+, poderá colocar como comando \verb+\center+\index{center@\verb+\center+}, \verb+\flushleft+\index{flushleft@\verb+\flushleft+} e \verb+\flushright+\index{flushright@\verb+\flushright+}, respectivamente que o alinhamento se aplicará até obter o final do ambiente em questão.

Para ter trecho justificado em ambos os lados dentro do ambiente com alinhamento a esquerda, direita ou centralizada, costuma colocar dentro do ambiente \texttt{minipage} que veremos na Seção~\ref{sec:minipage}.

Não é o alinhamento, mas para incluir linhas em branco\index{linhas em branco}, deverá colocar ``\verb+\+'' intercalado com linhas em branco.
Para indicar uma nova linha\index{nova linha} (finalizar uma linha sem esperar atingir final de linha), coloca se ``\verb+\\+''\index{\textbackslash\textbackslash} ou \verb+\newline+\index{newline@\verb+\newline+}. 
Para inserir quebra de linhas\index{quebra de linha}, mas que justifique, deverá usar o \verb+\linebreak+\index{linebreak@\verb+\linebreak+}, o que é ilustrado no Exemplo~\ref{ex04:nova:linha}

%\begin{singlespacing}
\begin{ltxlisting}[caption={ex04-nova-linha.tex},label=ex04:nova:linha]
Esta é a primeira linha \\
e esta e a segunda linha

\

Esta é a primeira linha \linebreak
e esta é a segunda linha.
\end{ltxlisting}
%\end{singlespacing}

Note o uso de ``\verb+\+''\index{\textbackslash@\verb+\+} para inserir linha em branco.

\section{Notas de rodapé e ênfase de texto}

Nota de rodapé\index{nota de rodapé} é colocado pelo comando \verb+\footnote{<texto>}+\index{footnote} que colocará marca de rodapé no local e \verb+<texto>+ na parte inferior da página atual.

Ele é usado para colocar alguma observação, mas não quer que conste como conteúdo do documento. 
Por exemplo, explicação dos termos que aparece, podem ser colocados como rodapé. Veja o Exemplo~\ref{ex04:rodape}

% showexpl usa \parbox e não o minipage.
% Assim, nao há como colocar footnote embaixo dele.
% Usando lstlisting e minipage para ter mesmo effeito de showexpl
%\begin{singlespacing}
%\begin{lstlisting}[caption={ex06-08.tex},label=ex:06-08]
\begin{ltxlisting}[caption={ex04-rodape.tex},label=ex04:rodape]
No meio do texto, podemos colocar a nota de rodapé\footnote{nota que fica na parte inferior da página} para explicações adicionais tais como significado da palavra, ou fonte que foi usada.
\end{ltxlisting}
% \end{singlespacing}

%\noindent
%\begin{framed}
%\begin{singlespacing}
%\begin{minipage}{\linewidth}
%\renewcommand{\thempfootnote}{\arabic{mpfootnote}}
%No meio do texto, podemos colocar a nota de rodapé\footnote{nota que fica na parte inferior da página} para explicações adicionais tais como significado da palavra, ou fonte que foi usada.
%\end{minipage}
%\end{singlespacing}
%\end{framed}

Para enfatizar o texto\index{enfase@{ênfase} de texto} dentro do contexto como os termos a ser definidos, usa-se o comando \verb+\emph{texto}+\index{emph@\verb+\emph+} ou o ambiente \texttt{em}\index{em}. 
Este comando (ou ambiente) alterna entre fontes romano reto e itálico para que o trecho seja enfatizado.
%Outra ênfase comum as palavras é usar o negrito que faz destacar no meio do texto. O negrito é produzido pelo comando \verb+\textbf{texto}+ ou pelo ambiente \texttt{bfseries}.
Note que os ambientes \texttt{em} tem a versão de comandos \verb+\em+\index{em@\verb+\em+} que pode ser usados dentro do outro ambiente (como os comandos de alinhamento).
Caso não esteja dentro do ambiente, poderá delimitar simplesmente pelos chaves e colocar o comando no começo dele. Isto está ilustrado no Exemplo~\ref{ex04:enfase}.

%\begin{singlespacing}
% \begin{LTXexample}[pos=b,caption={ex03-01.tex},label=ex:03-01]
\begin{ltxlisting}[caption={ex04-enfase.tex},label=ex04:enfase]
\emph{Enfatizado} ou 
\begin{em}enfatizado\end{em}
ou 
\begin{center}
\em Centralizado e enfatizado.
\end{center}
ou
{\em Enfatizado.}
Texto normal.
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

%Para as diversas necessidades, é possível controlar as fontes, o que será estudado no Capítulo~\ref{chap:fontes}.

\section{Listas}

O texto pode ter várias estruturas básicas, tais como listas, cotações, etc.

Uma das mais utilizadas é listas. 
%Veremos alguns deles.

%Vamos começar pelas listas.

Existem três tipos básicos de listas\index{lista} que são especificadas pelos ambientes \texttt{enumerate}\index{enumerate} (lista enumerada\index{lista!enumerada}), \texttt{itemize}\index{itemize} (lista de itens\index{lista!itemizada}) e \texttt{description}\index{dscription} (lista de descrições\index{lista!descrição}).
Dentro de cada ambiente, cada item\index{lista!item} é iniciado com o comando \verb+\item+\index{item@\verb+\item+}.
O Exemplo~\ref{ex04:listas} ilustra algumas destas listas.

%\begin{singlespacing}
% \begin{LTXexample}[pos=b,caption={ex06-01.tex},label=ex:06-01]
\begin{ltxlisting}[caption={ex04-listas.tex},label=ex04:listas]
\begin{enumerate}
  \item Este é o primeiro item da lista enumerada.
  \item Agora, segundo item da lista enumerada
\end{enumerate}
\begin{itemize}
  \item Este é o primeiro item da lista de itens.
  \item Agora, segundo item da lista de itens.
\end{itemize}
\begin{itemize}
  \item Item com marcador padrão.
  \item [$\ast$] Item com marcador personalizado.
\end{itemize}
\begin{description}
  \item [enumerada] Cada item recebe uma enumeração.
  \item [itenizada] Em vez de enumeração, recebe um marcador.
  \item [descrição] Descrição das palavras.
\end{description}
\end{ltxlisting}
%\end{singlespacing}

As listas podem conter outras listas como itens\index{sub listas}. 
Veja Exemplo~\ref{ex04:sublistas}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex06-01.tex, parte b},label=ex:06-01:b]
\begin{ltxlisting}[caption={ex04-sublistas.tex},label=ex04:sublistas]
\begin{enumerate}
  \item Este é o primeiro item da lista enumerada.
  \item Segundo item é lista de itens.
    \begin{itemize}
      \item Este é o primeiro item da lista de itens.
      \item Agora, segundo item da lista de itens.
    \end{itemize}
  \item Este é o terceiro item da lista enumerada.
\end{enumerate}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Para trabalhar com listas enumeradas, é aconselhável carregar o pacote \texttt{enumerate}\index{enumerate} que permite controlar as enumerações\index{lista!enumerada!controle}.
Para isso, acrescente o comando \verb+\usepackage{enumerate}+ no \texttt{preamble} do documento.

No \texttt{enumerate}, passa-se um parâmetro opcional que seria o modelo de enumeração do primeiro item. 
Neste modelo, ``1'', ``i'', `` I'', ``a'' e ``A'' serão considerados contadores e eles são incrementados a cada item.
Se aparecer estas letras que não sejam contadores, delimite pelos chaves.
Veja o Exemplo~\ref{ex04:enumerate}.

%\begin{singlespacing}
% \begin{LTXexample}[pos=b,caption={ex06-01.tex, parte c},label=ex:06-01:c]
\begin{lstlisting}[caption={ex04-enumerate.tex},label=ex04:enumerate]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amssymb}
\usepackage{enumerate}
\begin{document}
\begin{enumerate}[Propr{i}ed{a}de 1)]
  \item $x + (y + z) = (x + y) + z$ (associativa)
  \item $x + y = y + x$ (comutativa)
\end{enumerate}
\end{document}
\end{lstlisting}
%\end{singlespacing}

% Precisa acertar a margem esquerda (conflito dos pacotes, ou
% por estar dentro do ambiente?
%\begin{singlespacing}
\begin{ltxlistingout}
\begin{enumerate}[label={Propriedade \arabic*)},leftmargin=8em]%listparindent={\widthof{\labelitemi}}]
  \item $x + (y + z) = (x + y) + z$ (associativa)
  \item $x + y = y + x$ (comutativa)
\end{enumerate}
\end{ltxlistingout}
%\end{singlespacing}
 
Se precisar de ambientes extras de listas diferentes do padrão, podemos definir usando o ambiente \texttt{list}\index{list}, o que não vamos entrar em detalhes.

\section{Tabelas}

Uma tabela\index{tabela} no modo texto é produzido pelo ambiente \texttt{tabular}\index{tabular} e a tabela no modo matemático é produzido pelo ambiente \texttt{array}\index{array}, que apresentam o mesmo sintaxe e a mesma funcionalidade.

O argumento obrigatório destes ambientes é o ``alinhamento'' das colunas que devem ser especificados com ``l'' (left), ``c'' (center), ``r'' (right) ou ``p\{largura\}'' (texto justificado com largura fixa). 
Para traçar uma linha vertical entre colunas ou no bordo, usa-se o ``\verb+|+''\index{"@vertical@\vert}, junto as especificações de alinhamento.
Os elementos da tabela é indicado, separado pelo ``\&''\index{\&}, sendo que a mudança de linhas é feito pelo ``\verb+\\+''\index{\textbackslash\textbackslash} que é \verb+\newline+. 
Para traçar uma linha horizontal, usa-se o comando ``\verb+\hline+''\index{hline@\verb+\hline+}.

O Exemplo~\ref{ex04:tabular} é um exemplo de tabelas no modo texto.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex06-02.tex},label=ex:06-02]
\begin{ltxlisting}[caption={ex04-tabular.tex},label=ex04:tabular]
  \begin{tabular}{||l|c|r||} % linhas verticais duplas na borda e simples entre colunas
   \hline % uma linha horizontal no comeco da tabela
       & 2 & 3 \\ \hline % uma linha horizontal apos esta linha
   abc & 3 & 4 \\
   3   & 4 & $\frac{1+\sqrt{2}}{5}$ \\ \hline % uma linha horizontal pra finalizar
  \end{tabular}
  
  Tabela com uma coluna de largura fixa.

  \begin{tabular}{|p{3.5cm}|l|} \hline
   cenouras  (500g)          & R\$0,50  \\ \hline
   cogumelos (vidro de 500g) & R\$5,00  \\ \hline
   batata    (1Kg)           & R\$1,20  \\ \hline \hline
   total                     & R\$7,20  \\ \hline
\end{tabular}

Tabela de largura fixa

% largura da tabela é 0.5 de \columnwidth (largura da linha)
\begin{tabular*}{0.5\columnwidth}{@{\extracolsep{\fill}}|l|c|r|}
   \hline
       & 2 & 3 \\ \hline
   abc & 3 & 4 \\
   3   & 4 & $\frac{1+\sqrt{2}}{5}$ \\ \hline
  \end{tabular*}
  
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Para mesclar células\index{tabela!mesclar células} (juntar mais de uma célula como sendo uma única célula), usa-se o comando \texttt{multicolumn}\index{multicolumn} que tem como primeiro argumento, o número de células a serem juntados, o segundo especifica o alinhamento da coluna e terceiro, o que vai colocar nesta célula. 
Note que as formatações de colunas do \texttt{multicolumn} deve ser especificado um por um, independente de estar especificado ou não no começo da tabela.

No Exemplo~\ref{ex04:multicolumn} com o ambiente \texttt{array} (para ambiente matemático), foi usado o \texttt{multicolumn} para juntar duas primeiras colunas da primeira linha, centrando os dados e traçando linha vertical antes e depois da célula.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex06-02.tex, parte b},label=ex:06-02:b]
\begin{ltxlisting}[caption={ex04-multicolumn.tex},label=ex04:multicolumn]
\[
  \begin{array}{||l|c|r||} \hline
   \multicolumn{2}{||c|}{2} & 3 \\ \hline
   2^3 & 3 & 4 \\
   3 & 4 & \frac{1+\sqrt{2}}{5} \\ \hline  
  \end{array}
\]
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Para traçar linhas horizontais apenas em algumas células, usa-se o comando \texttt{\textbackslash cline\{i-j\}}\index{cline@\verb+\cline+} onde ``\texttt{i}'' e ``\texttt{j}'' são colunas iniciais e finais onde a linha é traçada. Veja o Exemplo~\ref{ex04:cline}.

%\begin{singlespacing}
% \begin{LTXexample}[pos=b,caption={ex06-02.tex, parte c},label=ex:06-02:c]
\begin{ltxlisting}[caption={ex04-cline.tex},label=ex04:cline]
\begin{tabular}{||l|lr||} \hline
\textbf{Produto}  & \multicolumn{2}{|c||}{\textbf{Preços}} \\\hline
   cenouras   & R\$1.00 & (por Kg) \\ \cline{2-3}  
              & R\$0.20 & (por unidade) \\ \hline
   cogumelos  & R\$4.00 & \multicolumn{1}{|r||}{(por vidro)} \\ \cline{1-1} \cline{3-3}
   pêssego    &   & \multicolumn{1}{|r||}{(por Kg)} \\ \hline
 \end{tabular}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

No Exemplo~\ref{ex04:cline}, o comando \texttt{multicolumn} foi usado somente para formatar a coluna (colocar linha vertical) e não para juntar células.

Para alinhar os decimais, usamos o pacote \texttt{dcolumn}\index{dcolum}
que define um novo especificador de colunas na tabela, especificado por \texttt{D\{<decimal em TeX>\}\{<decimal em PDF>\}\{<casas decimais>\}}.
 
\texttt{<decimal em TeX>} é a especificação de pontos decimais usado no arquivo TeX (como escreve no TeX), 
\texttt{<decimal em PDF>} é o decimal utilizado para documento de saída PDF, e o \texttt{<casas decimais>} é o número de casas decimais a serem considerados (casas decimais excedentes serão truncados).
Caso a especificação do número de casas decimais for negativo, qualquer número de casas decimais é aceito sem ser truncados (alinhando nos pontos decimais).
 
Como especificar três parâmetros toda vez que precise alinhar os pontos decimais é trabalhoso, é sugerido que defina um especificador no \texttt{preamble}, usando o comando \texttt{newcolumntype}\index{newcolumntype@\verb+newcolumntype+} como abaixo:

\begin{singlespacing}
\begin{lstlisting}[language={[LaTeX]TeX}]
\usepackage{dcolumn}
\newcolumntype{d}[1]{D{.}{\cdot}{#1}}
\newcolumntype{.}{D{.}{.}{-1}}
\newcolumntype{,}{D{,}{,}{2}}
\end{lstlisting}
\end{singlespacing}

Ele define especificador de colunas ``d{<num>}'' que é interpretado como \texttt{D\{.\}\{\cdot\}\{<num>\}} e, ``.'' e ``,'' que serão interpretados como sendo \texttt{D\{.\}\{.\}\{-1\}} e \texttt{D\{,\}\{,\}\{2\}} respectivamente.

Note que podemos modificar os comandos anteriores para que ``.'' seja convertida para ``,'' ou vice versa.
Veja o Exemplo~\ref{ex04:dcolumn}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex06-02.tex, parte d},label=ex:06-02:d]
\begin{ltxlisting}[caption={ex04-dcolumn.tex},label=ex04:dcolumn]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amssymb}
\usepackage{dcolumn}
\newcolumntype{d}[1]{D{.}{\cdot}{#1}}
\newcolumntype{.}{D{.}{.}{-1}}
\newcolumntype{,}{D{,}{,}{2}}
\begin{document}
\begin{tabular}{|d{-1}|d{2}|.|,|}
\hline
1.2   & 1.2   &1.2    &1,2    \\
1.23  & 1.23  &12.5   &300,2  \\
1121.2& 1121.2&861.20 &674,29 \\
184   & 184   &10     &69     \\
.4    & .4    &       &,4     \\
      &       &.4     & \\ \hline
      
\end{tabular}
\end{document}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Para ter as colunas igualadas automaticamente, usamos o pacote \texttt{tabularx}\index{tabularx} que define o ambiente \texttt{tabularx} onde primeiro argumento é largura da tabela e segundo é especificação de colunas, mas apresenta um especificador de coluna especial ``X''. 
Todas as colunas especificadas por ``X'' terá mesma largura 
(largura destas colunas depende da largura da tabela).
Veja o Exemplo~\ref{ex04:tabularx}.

%\begin{singlespacing}
% \begin{LTXexample}[pos=b,caption={ex06-02.tex, parte e},label=ex:06-02:e]
\begin{ltxlisting}[caption={ex04-tabularx.tex},label=ex04:tabularx]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amssymb}
\usepackage{tabularx}
\begin{document}
\begin{tabularx}{\linewidth}{|c|X|c|X|}
\hline
\multicolumn{2}{|c|}{\texttt{multicolumn} } &
\scshape Terceira & \scshape Quarta \\ \hline
 primeira & a largura desta coluna depende da largura da 
tabela. &
 terceira & Quarta coluna funciona da forma similar a segunda e terá a mesma largura da segunda \\ \hline
\end{tabularx}
\end{document}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

No Exemplo~\ref{ex04:tabularx}, foi usado o comando \verb+\linewidth+\index{linewidth@\verb+\linewidth+} que é a medida da largura da linha atual.
Este comando aparece frequentemente quando queremos ajustar largura de um elemento para largura da linha atual. 
Mais sobre medidas, veja a Seção~\ref{sec:medidas:unidade} e Seção~\ref{sec:medidas} do Capítulo~\ref{chap:medidas:contadores}. 

O comando \verb+\footnote{texto}+ que coloca o ``texto'' no rodapé do documento funciona também dentro do \texttt{tabularx}.

Para ajustes de tabelas de forma mais profissional, pode precisar do \texttt{booktabs}\index{booktabs} (não é da categoria \texttt{base/required}) e se precisar traçar linhas duplas ou similares na tabela, podemos usar o pacote \texttt{hhline}\index{hhline}. Também existe o pacote para tabela colorida \texttt{colortbl}\index{colortbl}  (não é da categoria \texttt{base/required}). Não entraremos em detalhes destes pacotes, mas vale observar que \texttt{hhline} não funciona no \texttt{tabularx}.


\section{Ambiente de tabulação}

Ambiente de tabulação\index{tabulação}\index{tabulação} é bastante útil para escrever conteúdos alinhados em diversos pontos, tal como no caso de algoritmos.
O ambiente é especificado pelo \texttt{tabbing}\index{tabbing}.

Para marcar a posição de tabulação, usa-se o comando \verb+\=+.
Quando uma linha for usado somente para marcar posição, coloca-se o comando \verb+\kill+\index{kill@\verb+\kill+} no final dele, para que o mesmo não seja impresso.

Para formatar conteúdos tabulados, é comum que queira tabular várias linhas sucessivas. 
O comando \verb"\+"\index{+@\verb'\+'} translada a margem esquerda por 
uma tabulação e \verb"\-"\index{-@\verb+\-+} retira uma tabulação da margem esquerda.
Com isso, podemos diagramar textos tabulados como no caso do algoritmo do Exemplo~\ref{ex04:tabbing}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex06-03.tex},label=ex:06-03]
\begin{ltxlisting}[caption={ex04-tabbing.tex},label=ex04:tabbing]
\begin{tabbing}
mm\=mm\=mm\=mm\=mm\= \kill % apenas para marcar tabulação
\{ Solução real da equação $ax^2+bx+c=0$ pela fórmula de Baskara \} \\
  $\Delta = b^2-4ac$ \\
  se d < 0 então \+ \\ % aplicar uma tabulação em todas linhas de abaixo
     escreva ``não há solução real'' \\
     pare \- \\ % retirar uma tabulação de todas linhas de abaixo
  senão \+ \\
     $x_1 = \frac{-b-\sqrt{\Delta}}{2a}$ \\ 
     $x_2 = \frac{-b+\sqrt{\Delta}}{2a}$ \- \\ 
  fim se
\end{tabbing}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Se por algum motivo, pretende usar a acentuação no modo \TeX{} dentro do ambiente \texttt{tabbing}, note que existe três acentos no modo \TeX{} que não podem ser usados dentro do \texttt{tabbing} que são \verb+\'+, \verb+\`+ e \verb"\=".
Estes comandos são reservados para controle de tabulação. 
Assim, estes três comandos devem ser substituídos pelos comandos \verb+\a'+\index{a'@\verb+\a'+}, \verb+\a`+\index{a`@\verb+\a`+} e \verb"\a="\index{a=@\verb+\a=+} respectivamente (eles só funcionam dentro do \texttt{tabbing}).

Existem vários outros comandos que podem ser explorados no ambiente \texttt{tabbing}, mas não vamos entrar em detalhes.
Uma observação é que no caso de algoritmos ou código fonte de programas, existem pacotes específicos que implementam ambientes bem mais fáceis e versáteis do que \texttt{tabbing}.

% citados, \texttt{quotation}, \texttt{verse} e \texttt{verbatim}
\section{Textos de citações, versos e \texttt{verbatim}}

O ambiente \texttt{quote}\index{quote} é usado para escrever citações\index{citações} (trecho de outra fonte), exemplos e frases importantes.
O Exemplo~\ref{ex04:quote} foi extraído do ``The Not (So) Short Introduction to \LaTeX2e'' \cite{book:oetiker:2025}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex06-04.tex},label=ex:06-04]
\begin{ltxlisting}[caption={ex04-quote.tex},label=ex04:quote]
``Uma regra da tipografia sobre
o comprimento de uma linha é:
\begin{quote}
Em média, nenhuma linha deve
ser maior que 66 caracteres.
\end{quote}
Este é o motivo pelo qual as
páginas do \LaTeX{} possuem as
bordas tão grandes e também o
motivo pelo qual os jornais usam
impressão em colunas''.
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

No ambiente \texttt{quote} usado para colocar citações (trecho tirado da outra fonte), o texto inteiro ficará com margens maiores a esquerda e a direita, o que tornaria visível quando colocar texto maior.

Quando o texto da citação é formado por vários parágrafos, pode querer que os parágrafos sejam indentados (tabulados para a direita).
Neste caso, use o ambiente \texttt{quotation}\index{quotation} em vez de 
\texttt{quote}.
O Exemplo~\ref{ex04:quotation} também usa o trecho do \cite{book:oetiker:2025} que explica os ambientes similares a \texttt{quote}, ficou com parágrafo indentado:

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex06-04.tex, parte b},label=ex:06-04:b]
\begin{ltxlisting}[caption={ex04-quotation.tex},label=ex04:quotation]
Veja que a cópia do trecho do ``The Not (So) Short Introduction to \LaTeX2e'' que explica os ambientes similares a \texttt{quote}, ficou com parágrafo indentado:
\begin{quotation}
``Existem dois ambientes similares: os ambientes quotation e verse.
Como ambiente \texttt{quotation} faz a indentação dos parágrafos, 
ele é usado para citações longas que se estendem por vários parágrafos. 
O ambiente \texttt{verse} é usado em poemas onde as quebras de linhas são importantes. 
As linhas são separadas por \verb+\\+ e por uma linha em branco no fim de cada verso''.
\end{quotation}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

No caso de versos\index{verso}, a linha que for quebrado pela falta de espaços, mas que constitui a mesma linha de cima, deve estar tabulado para direita.
O ambiente \texttt{verse}\index{verse} encarrega deste serviço.

O Exemplo~\ref{ex04:verse} é um exemplo do ``Humpty Dumpty'' do \cite{book:oetiker:2025}, colocado na caixa com largura insuficiente.
Para criar caixas mais estreitas, foi usado o ambiente \texttt{minipage} que será tratado na Seção~\ref{sec:minipage} do Capítulo~\ref{chap:estrutura:texto}.


%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex06-04.tex, parte c},label=ex:06-04:c]
\begin{ltxlisting}[caption={ex04-verse},label=ex04:verse]
\begin{flushleft}
\begin{minipage}{0.5\linewidth}
\begin{verse}
Humpty Dumpty sat on a wall:\\
Humpty Dumpty had a great fall.\\
All the King's horses and all
the King's men\\
Couldn't put Humpty together
again.
\end{verse}
\end{minipage}
\end{flushleft}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Para inserir o código fonte de programas\index{código fonte!programma} ou similar, usa-se o ambiente \texttt{verbatim}\index{verbatim} que coloca o texto de jeito que está (cópia \texttt{verbatim}). Este ambiente possui também a versão ``*'' \texttt{verbatim*}\index{verbatim*}.
Sem o ``*'', coloca o espaço e com o ``*'', coloca o caractere ``\verb*+ +'' no lugar de espaço.
Veja a diferença entre o código colocado pelo \texttt{verbatim} e \texttt{verbatim*} do Exemplo~\ref{ex04:verbatim}.
 
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex06-04.tex, parte d},label=ex:06-04:d]
\begin{ltxlisting}[caption={ex04-verbatim.tex},label=ex04:verbatim]
\begin{verbatim}
\begin{quote}
texto citado, texto importante ou exemplos.
\end{quote}
\end{verbatim}

\begin{verbatim*}
\begin{quote}
texto citado, texto importante ou exemplos.
\end{quote}
\end{verbatim*}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

O ambiente \texttt{verbatim} é usado para colocar conteúdos que devem ser lidos letra por letra, como no cado do código fonte de programas ou trecho de documentos muito importantes.

Para nome das variáveis do programa, nome de arquivos, etc que são curtos, mas também precisam ser lidos letra por letra, existe a versão comando que é \verb+\verb+\index{verb@\verb+\verb+}.
No \verb+\verb+, o primeiro caractere é o delimitador do argumento que deve ser usado também para indicar o final do argumento. Este delimitador pode ser escolhido (só não pode ser ``*''), mas fique atento que o final do argumento deve usar mesmo caractere. 
A versão com ``*''\index{verb*@\verb+\verb*+} exibe o espaço como``\verb+ +''.
Veja o Exemplo~\ref{ex04:verb}.

%\begin{singlespacing}
% \begin{LTXexample}[pos=b,caption={ex06-04.tex, parte e},label=ex:06-04:e]
\begin{ltxlisting}[caption={ex04-verb.tex},label=ex04:verb]
O comando \verb+\%+ produz ``\%''.

Nome de arquivos com espaço tal como \verb*|meu arquivo.tex|
não é recomendado para \LaTeX, pois dificulta a sincronização de PDF com o código fonte.
Use ``\verb+-+'' no lugar de espaço, como em \verb*|meu-arquivo.tex|.
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Para textos longos no ambiente \texttt{verbatim} deve carregar o pacote \texttt{verbatim}\index{verbatim} no ``preamble''.
Este pacote efetua algumas melhorias no ambiente \texttt{verbatim} e também implementa o comando \verb|\ver­batiminput|\index{verbatiminput@\verb+\verbatiminput+} que insere o arquivo externo diretamente no ambiente \texttt{verbatim}.

Note que, para inserir trecho dos códigos fontes de programas, existem pacotes apropriados que é mais prático do que usar o ambiente \texttt{verbatim}.

% \texttt{minipage}
\section{Caixa \texttt{minipage}}\label{sec:minipage}
O ambiente \texttt{minipage}\index{minipage} cria uma ``caixa'' que não é exatamente uma estruturação de textos, mas é usado frequentemente quando não encontra ambiente pronto para estruturação desejada.

Por exemplo, podemos colocar um bloco de texto justificado no lado direito da página, como no Exemplo~\ref{ex04:minipage}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex06-04.tex, parte f},label=ex:06-04:f]
\begin{ltxlisting}[caption={ex04-minipage.tex},label=ex04:minipage]
\begin{flushright}
\begin{minipage}{0.5\linewidth}
Este texto ficará justificado, mas como fica dentro de \texttt{minipage},
podemos colocar no lado direito. 
Para tanto, basta colocar \texttt{minipage} dentro do \texttt{flushright}. 
Claro que podemos colocar equações, figuras e outros elementos sem problemas. 
Por exemplo, o a equaçao do Teorema de Pitágoras foi posto a seguuir:
\[ a^2=b^2+c^2 \]
\end{minipage}
\end{flushright}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

O argumento obrigatório para o ambiente \texttt{minipage} é a largura da ``caixa''. 
No Exemplo~\ref{ex04:minipage}, foi usado \verb+0.5\linewidth+ que é metade da largura da linha.

Este ambiente é importante para colocar um parágrafo de texto dentro dos comandos que não aceitam os parágrafos. 
Por exemplo, \verb+\fbox{}+\index{fbox@\verb+\fbox+} coloca moldura no elemento, mas não aceita o parágrafo de texto. 
Então, como colocar moldura no texto com várias linhas, ou nas figuras?
É simples: colocar tudo no \texttt{minipage} e colocar dentro do \texttt{fbox}, como no Exemplo~\ref{ex04:minipage:fbox}.

%\let\orifootnote\footnote
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex06-04.tex, parte g},label=ex:06-04:g,preset=\let\footnote\orifootnote]
\begin{ltxlisting}[caption={ex04-minipage-fbox.tex},label=ex04:minipage:fbox,preset={\renewcommand{\thempfootnote}{\alph{mpfootnote}}}]
\fbox{
\begin{minipage}{0.75\linewidth} % 3/4 da largura de linha
Usando o \texttt{minipage}, podemos colocar moldura no texto com parágrafo como este.

O \texttt{fbox} não acusa erros por ter parágrafo, pois o que está dentro de \texttt{minipage} é apenas um ``objeto''. 

Este truque funciona também para outros comandos que impede de colocar parágrafos, mudar linhas, etc.

Note que as notas de rodapé\footnote{rodapé é colocado pelo comando \texttt{\textbackslash footnote\{texto\} } } 
colocado dentro do minipage ficará na parte de baixo do \texttt{minipage} e não da página. 
O padrão dentro do \texttt{minipage} é enumerar eles como letra e não com números.
\end{minipage}
} % fbox
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Para elementos com poucas linhas de código, a versão comando \verb+\parbox+\index{parbox@\verb+\parbox+} é mais prático de ser usado.
Mas \verb+\parbox+ é mais simplificado do que \texttt{minipage}, podendo perder alguns recursos. 
Por exemplo, alguns comandos e ambientes tais como \verb+\verb+ e \texttt{verbatim} não funcionam dentro do \verb+\parbox+.
Assim, prefira usar o \texttt{minipage} sobre \verb+\parbox+.
Veja o Exemplo~\ref{ex04:parbox}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex06-07.tex},label=ex:06-07]
\begin{ltxlisting}[caption={ex04-parbox.tex},label=ex04:parbox]
Texto normal
\fbox{\parbox{3cm}{texto em várias linhas. \\ Com moldura.}}
Texto continua.
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

O primeiro parâmetro do \verb+\parbox+ é a largura, como no caso de \texttt{minipage}.
Tanto no \texttt{minipage} como o \texttt{parbox}, \verb+\linewidth+\index{linewidth@\verb+\linewidth+} dentro dele é a largura da caixa passada como parâmetro.

%linewidth: \the\linewidth
%
%\parbox{0.5\linewidth}{linewidth: \the\linewidth}
%
%\begin{minipage}{0.5\linewidth}
%linewidth: \the\linewidth
%\end{minipage}

\section{Colunas múltiplas de texto}
Dependendo do documento, usa-se mais de uma coluna. 
Isto é o caso de alguns artigos que podem usar duas colunas, ou \texttt{poster} que costuma usar três colunas ou mais. 
Mesmo no documento de uma coluna, o índice remissivo costuma ficar em duas colunas. 
Apesar da maioria das classes de documentos tem implementado a opção de documento em duas colunas (opção \texttt{twocolumn}\index{twocolumn}) e comandos para alternar entre uma e duas colunas (comandos \verb+\onecolumn+\index{onecolumn@\verb+\onecolumn+}
e \verb+\twocolumn+\index{twocolumn@\verb+\twocolumn+}), a forma mais prático é usar o pacote \texttt{multicol}\index{multicol} que implementa o ambiente \texttt{muticols}\index{multicols} que permite criar qualquer número de colunas.
O padrão é não traçar linhas separando colunas, mas isto pode ser alterado, como no Exemplo~\ref{ex04:multicols}.
Aqui foi usado o \verb+\setlength+ para alterar a medida da espessura de linha que separa as colunas.
Medidas serão tratadas em Seção~\ref{sec:medidas:unidade} e Seção~\ref{sec:medidas} do Capítulo \ref{chap:medidas:contadores}.
O Exemplo~\ref{ex04:multicols} ilustra o uso de múltiplas colunas.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex10-02.tex},label=ex:10-02]
\begin{ltxlisting}[caption={ex04-multicols.tex},label=ex04:multicols]
\documentclass[a4paper,12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}
\usepackage{color}
\usepackage{color}
\usepackage{multicol} % permite usar multiplas linhas
% espessura da linha que separa as colunas (0pt para desabilitar)
\setlength{\columnseprule}{1pt} 
\begin{document}
Este parágrafo está como uma única coluna, padrão para maioria das classes de documentos.
\begin{multicols}{2} % inicia duas colunas
Este parágrafo está em duas colunas.
O ambiente \texttt{multicols} balanceia os conteúdos em colunas para que todas colunas tenham mesmo tamanho.
Se preferir que passe para próxima coluna somente quando a coluna ficar cheia, use a versão ``*'' que não balanceia seus conteúdos.

Se quer finalizar a coluna manualmente, poderá usar o \verb+\columnbreak+ que finaliza a coluna atual e passa para próxima coluna.
\end{multicols} % finaliza o mode de duas colunas
Agora está no modo de uma única coluna novamente.
\end{document}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

%A cor da linha de divisão também pode ser configurada, o que não discutiremos aqui.
%% cor da linha que separa as colunas
%\def\columnseprulecolor{\color{blue}}

%
%
%Tratar do uso do pacote \texttt{multicols}

\clearpage\thispagestyle{empty}\cleardoublepage
\chapter{Aprofundando nas Fórmulas Matemáticas}
Neste capítulo, vamos aprofundar mais nas fórmulas matemáticas.
Para suporte à matemática, os pacotes \texttt{amssymb}\index{amssymb} e \texttt{amsmath}\index{amsmath} são usados. 
Portanto, coloque o comando \verb+\usepackage{amssymb,amsmath}+ no \texttt{preamble} do documento.

\section{Usando algumas fontes matemáticas}
Na matemática, além dos símbolos especiais e letras gregas, também usam alfabetos romanos de formatos diferentes. 
Por exemplo, para o conjunto dos números, costuma usar ``negrito do quadro negro'' (por exemplo, letra de traço duplo do AMS). 
Tais fontes são selecionados pelos comandos apropriados. 
Aqui veremos alguns dos mais usados.

O conjunto dos números como real, racional, etc, usam a letra maiúscula em ``negrito do quadro negro''. Para tanto, poderemos usar o comando \verb+\mathbb+\index{modo matematico@{modo matemático}!alfabeto!\verb+\mathbb{ABCdef123}+, $\mathbb{ABCdef123}$}.

Para Conjunto de funções contínuas, costuma usar a letra ``C'' maiúscula na forma caligráfica. 
A fonte caligráfica é indicado pelo comando \verb+\mathcal+\index{modo matematico@{modo matemático}!alfabeto!\verb+\mathcal{ABC}+, $\mathcal{ABC}$}.

Para algumas áreas de matemática, ainda usam a versão enfeitada de caracteres oferecido pelo comando \verb+\mathfrak+\index{modo matematico@{modo matemático}!alfabeto!\verb+\mathfrak{ABC}+, $\mathfrak{ABC}$}.

Para nome das funções, devemos usar a letra romana reta. 
O \LaTeX{} dispõe de comandos prontos para maioria das funções comumente usadas, mas as vezes precisamos escrever o nome da função que não está pronto, como o \verb+sen+ que representa a função seno em português. 
Como \LaTeX{} implementa nome das funções em inglês, o nome disponível para \texttt{seno} é \texttt{sin} produzido pelo comando \verb+\sin+. 
Também notemos que no Brasil costuma usar \texttt{tg} para \texttt{tangente} e não o \texttt{tan}.

Para estes e outros casos, podemos especificar os nomes das funções que \LaTeX{} não dispõe, colocando dentro do comando \verb+\mathrm+\index{modo matematico@{modo matemático}!alfabeto!\verb+\mathrm{ABCdef123}+, $\mathrm{ABCdef123}$} que usa a fonte romana reta.
Veja o Exemplo~\ref{ex05:mat:fontes:basico}.

%\let\mathcal\amsmathcal
%\let\mathbb\amsmathbb
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex04-03.tex},label=ex:04-03]
\begin{ltxlisting}[caption={ex05-mat-fontes-basico.tex},label=ex05:mat:fontes:basico]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}
\usepackage{amssymb,amsmath}
\begin{document}
Exemplo do uso de letra caligráfica e de ``negrito do quadro negro''.
\[ f \in \mathcal{C}(\mathbb{R},\mathbb{R}) \]

Exemplo da letra romana maiúscula enfeitada $\mathfrak{R}$.

Exemplo do nome das funções
\[ \forall \theta \in \mathbb{R}, \cos^2\theta + \mathrm{sen}^2\theta = 1
\]

Outro exemplo: $\mathrm{tg}\theta = \frac{\mathrm{sen}\theta}{\cos\theta}$.

\[
\mathop{\mathrm{arg\,min}}_x f(x) = \{x : f(x) = \min_{x'} f(x')\}
\]
\end{document}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}
%\let\mathcal\orimathcal
%\let\mathbb\orimathbb
Se precisar deixar algum trecho da fórmula em negrito, poderá usar o comando \verb+\bm+ do pacote \texttt{bm}\index{bm}.

Note que no \texttt{argmin}, o $x$ será colocado embaixo e não como índice. Para que o que foi colocado como índice fique embaixo, usa-se o comando \verb+\mathop+\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\mathop+}.
O comando \verb+\,+ usado no meio de \texttt{argmin} é um comando de espaçamento usado na fórmula que insere pequeno espaço. Mais sobre espaçamentos no modo matemático, veja a Seção~\ref{sec:medidas:unidade} e Seção~\ref{sec:medidas} do Caítulo~\ref{chap:medidas:contadores}.
 
Em geral, costuma definir comandos para nome das funções no \texttt{preamble} do documento para facilitar a digitação. 
A definição de comandos e ambientes serão estudados na Seção~\ref{sec:comandos} do Capítulo~\ref{chap:novo:comando}.

Os comandos para nome das funções pré-definidas estão na Seção~\ref{sec:fonte:matematica} do Capítulo~\ref{chap:fontes}.
%A seguir, alguns nome das funções pré-definidos.
%\verb+\arccos+, \verb+\cos+, \verb+\csc+, \verb+\exp+, \verb+\ker+, \verb+\limsup+, \verb+\min+, \verb+\sinh+, \verb+\arcsin+, \verb+\cosh+, \verb+\deg+, \verb+\gcd+, \verb+\lg+, \verb+\ln+, \verb+\Pr+, \verb+\sup+, \verb+\arctan+, \verb+\cot+, \verb+\det+, \verb+\hom+, \verb+\lim+, \verb+\log+, \verb+\sec+, \verb+\tan+, \verb+\arg+, \verb+\coth+, \verb+\dim+, \verb+\inf+, \verb+\liminf+, \verb+\max+, \verb+\sin+, \verb+\tanh+.

\section{Texto, função por partes e matrizes}
Para inserir texto nas fórmulas, usa-se o comando \verb+\text+\index{modo matematico@{modo matemático}!costrucao@{construção}!\verb+\text+} do pacote \texttt{amsmath}. 
Evite de usar o \verb+\mbox+\index{mbox@\verb+\mbox+} para este propósito.

Para ilustrar, vamos usar o ambiente \texttt{cases}\index{modo matematico@{modo matemático}!ams!cases} usado para definir funções por partes, no Exemplo~\ref{ex05:mat:text}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex04-03.tex, parte b},label=ex:04-03:b]
\begin{ltxlisting}[caption={ex05-mat-text.tex},label=ex05:mat:text]
\[
|x| = \begin{cases}
x, & \text{ se } x \geq 0 \\
-x, & \text{ caso contrário}\\
\end{cases}
\]
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

O caractere ``\&''\index{\&} indica o ponto de alinhamento e \verb+\\+\index{\textbackslash\textbackslash} indica a mudança de linha.

O pacote \texttt{amsmath} dispõe de ambiente para produzir matrizes\index{modo matematico@{modo matemático}!matriz}. 
O ambiente \texttt{matrix}\index{modo matematico@{modo matemático}!ams!matrix} produz matriz sem o delimitador, \texttt{pmatrix}\index{modo matematico@{modo matemático}!ams!pmatrix} é delimitado pelos parenteses\index{matriz!delimitador!parenteses}, \texttt{bmatrix}\index{modo matematico@{modo matemático}!ams!bmatrix} é delimitado pelos colchetes\index{modo matematico@{modo matemático}!ams!matriz delimitado por cochetes},\texttt{Bmatrix}\index{modo matematico@{modo matemático}!ams!Bmatrix} é delimitado pelas chaves\index{modo matematico@{modo matemático}!ams!matriz delimitado por chaves}, \texttt{vmatrix}\index{modo matematico@{modo matemático}!ams!vmatrix} é delimitado pelas retas verticais\index{modo matematico@{modo matemático}!ams!matriz valor absoluto} e \texttt{Vmatrix}\index{modo matematico@{modo matemático}!ams!Vmatrix}  é delimitado pelas retas verticais duplas\index{modo matematico@{modo matemático}!ams!matriz norma}.
Eles estão ilustradas no Exemplo~\ref{ex05:matriz}.
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex04-04.tex},label=ex:04-04]
\begin{ltxlisting}[caption={ex05-matriz.tex},label=ex05:matriz]
\[
  \begin{pmatrix}
   1 & 2 & 3 \\
   2 & 3 & 4 \\
   3 & 4 & 5  
  \end{pmatrix}, 
  \begin{bmatrix}
   1 & 2 & 3 \\
   2 & 3 & 4 \\
   3 & 4 & 5  
  \end{bmatrix}, 
  \begin{vmatrix}
   1 & 2 & 3 \\
   2 & 3 & 4 \\
   3 & 4 & 5  
  \end{vmatrix},
  \begin{Vmatrix}
   1 & 2 & 3 \\
   2 & 3 & 4 \\
   3 & 4 & 5  
  \end{Vmatrix}
\]
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

\section[Delimitadores, chaves e integrais]{Delimitadores auto ajustáveis, chaves embaixo e integrais}

Existem delimitadores auto ajustáveis que aumenta conforme o seu conteúdo aumenta de altura.
Para usar ele, use \verb+\left+\index{modo matematico@{modo matemático}!delimitador!\verb+\left+} antes do delimitador esquerdo (tais como %
``(''\index{modo matematico@{modo matemático}!delimitador!$($}, %
 ``[''\index{modo matematico@{modo matemático}!delimitador!$[$}, %
 ``\verb\+\{+''\index{modo matematico@{modo matemático}!delimitador!chaveaberta@{\textbackslash\curlyopensymbforindex,$\curlyopensymbforindex$}},%
 ``|''\index{modo matematico@{modo matemático}!delimitador!$\backslash\vert$,$\vert$}, %
 ``\verb+\|+''\index{modo matematico@{modo matemático}!delimitador!$\backslash\Vert$,$\Vert$}, %
 ``\verb+\langle+''\index{modo matematico@{modo matemático}!delimitador!\verb+\langle+,$\langle$}, %
 ``\verb+\lfloor+''\index{modo matematico@{modo matemático}!delimitador!\verb+\lfloor+,$\lfloor$}, %
 ``\verb+\lceil+''\index{modo matematico@{modo matemático}!delimitador!\verb+\lceil+,$\lceil$})%
 e use \verb+\left+\index{modo matematico@{modo matemático}!delimitador!\verb+\right+} antes do delimitador direito (tais como %
``)''\index{modo matematico@{modo matemático}!delimitador!$)$}, %
 ``]''\index{modo matematico@{modo matemático}!delimitador!$]$}, %
 ``\verb\+\}+''\index{modo matematico@{modo matemático}!delimitador!chavefechada@{\textbackslash\curlyclosesymbforindex,$\curlyclosesymbforindex$}},%
 ``|''\index{modo matematico@{modo matemático}!delimitador!$\backslash\vert$,$\vert$}, %
 ``\verb+\|+''\index{modo matematico@{modo matemático}!delimitador!$\backslash\Vert$,$\Vert$}, %
 ``\verb+\rangle+''\index{modo matematico@{modo matemático}!delimitador!\verb+\rangle+,$\rangle$}, %
 ``\verb+\rfloor+''\index{modo matematico@{modo matemático}!delimitador!\verb+\rfloor+,$\rfloor$}, %
 ``\verb+\rceil+''\index{modo matematico@{modo matemático}!delimitador!\verb+\rceil+,$\rceil$}).
 Para colocar delimitador somente em um dos lados, ``.''\index{modo matematico@{modo matemático}!delimitador!\verb+\left.+}\index{modo matematico@{modo matemático}!delimitador!\verb+\right.+} é usado para indicar delimitador vazio (quando tem somente em um dos lados, outro lado seria ``.'').
Cuidado para não usar \verb+||+ para barra vertical dupla.
Veja o Exemplo~\ref{ex05:delimitador}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex02-01.tex, parte c},label=ex:02-01:c]
\begin{ltxlisting}[caption={ex05-delimitador.tex},label=ex05:delimitador]
\[ \left\|\frac{\frac{1}{x}}{\sqrt[3]{x^2+1}} \right\| \]
\[\left\{x \in [0,1) : \frac{x+1}{x-1} < 0 \right\} \]
\[ 2\left[1+\frac{\left(1+\frac{1}{5}\right)^2}{2} \right]+5 \] 
\[ \left. \frac{x^2}{x+1}\right|_{x=1} = \frac{1}{2} \]
\[ \left\langle f, g \right\rangle = \int_b^a f(x)g(x)dx \]
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Para casos em que delimitadores auto ajustáveis não funcionam como esperado, poderá indicar o tamanho manualmente, colocando a especificação do tamanho antes do delimitador. O especificador do delimitador grande na ordem crescente são: \verb+\big+\index{modo matematico@{modo matemático}!delimitador!\verb+\big+}, \verb+\Big+\index{modo matematico@{modo matemático}!delimitador!\verb+\Big+}, \verb+\bigg+\index{modo matematico@{modo matemático}!delimitador!\verb+\bigg+} e \verb+\Bigg+\index{modo matematico@{modo matemático}!delimitador!\verb+\Bigg+}.
Veja Exemplo~\ref{ex05:delimitador:grande}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex02-01.tex, parte d},label=ex:02-01:d]
\begin{ltxlisting}[caption={ex05-delimitador-grande.tex},label=ex05:delimitador:grande]
\[ \bigg( \Big(x + (y - z) \Big) + w \bigg) \]

\[ \lambda \bigg( f(x+0) + \cdots f(x_n) \]
\[ + \sum_{i=0}^n x_i \bigg) \]
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

A ``chave'' sobre (ou abaixo) da fórmula é colocado pelo 
\verb|\overbrace|\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\overbrace{abc}^{n}+, $\overbrace{abc}^{n}$}%
 e \verb|\underbrace|\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\underbrace{abc}_{n}+, $\overbrace{abc}_{n}$}%
.
Veja Exemplo~\ref{ex05:bracos}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex02-01.tex, parte e},label=ex:02-01:e]
\begin{ltxlisting}[caption={ex05-bracos.tex},label=ex05:bracos]
\[ \overbrace{1+1+\cdots+1}^{n-\text{vezes }} = n \]
\[ \underbrace{k+k+\cdots+k}_{n-\text{vezes}} = nk \]
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Alguns casos de integrais múltiplas estão ilustrados no Exemplo~\ref{ex05:integrais}.%
\index{modo matematico@{modo matemático}!integral!\verb+\int+, $\int$}%
\index{modo matematico@{modo matemático}!integral!\verb+\iint+, $\iint$}%
\index{modo matematico@{modo matemático}!integral!\verb+\iiint+, $\iiint$}%
\index{modo matematico@{modo matemático}!integral!\verb+\idotsint+, $\idotsint$}%
\index{modo matematico@{modo matemático}!integral!\verb+\oint+, $\oint$}%

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex04-04.tex},label=ex:04-05]
\begin{ltxlisting}[caption={ex05-integrais.tex},label=ex05:integrais]
Integrais múltiplas
\[
\int_a^b f(x)\,dx\; \iint_R f(x.y)\,dxdy \; \iiint_B f(x,y,z)\,dxdydz \]
\[\idotsint f(x_1,\ldots,x_n)\,dx_1\cdots dx_n \]

Integral de linha $\oint f(x)\,dx$.
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

\index{modo matematico@{modo matemático}!integral!\verb+\int+, $\int$}%
Note que \verb+cdots+\index{modo matematico@{modo matemático}!pontuacao@{pontuação}!\verb+\cdots+, $\cdots$} produz três pontos no meio, enquanto que \verb+\ldots+\index{modo matematico@{modo matemático}!pontuacao@{pontuação}!\verb+\ldots+, $\ldots$} produz três pontos embaixo.
Os comandos \verb+\,+ e \verb+\;+ inserem espaços extras na fórmula. 
Veja a Seção~\ref{sec:medidas} para detalhes.

pequenos espaços 
\section{Quebrando fórmulas em várias linhas}
Para quebrar uma equação enumeração em mais de uma linha, podemos usar o ambiente \verb+split+\index{modo matematico@{modo matemático}!costrucao@{construção}!split}. ou o \verb|aligned|\index{modo matematico@{modo matemático}!costrucao@{construção}!aligned}.

Para criar alinhamento na equação quebrada, coloca-se o \& no ponto de alinhamento,
%Para quebrar apenas uma parte da equação em mais de uma linha, use o ambiente  \verb|aligned|\index{modo matematico@{modo matemático}!costrucao@{construção}!aligned} em vez de \verb|split| e insere o \& nos pontos de alinhamento,
como no Exemplo~\ref{ex05:split}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex04-04.tex, parte b},label=ex:04-04:b]
\begin{ltxlisting}[caption={ex05-split.tex},label=ex05:split]
\[
\begin{split}
2x+y=3 \\
x-y=1+a
\end{split}
\]

\begin{equation}
\text{sistema 1:} \left\{
\begin{split}
2x+y&=3 \\
x-y&=1+a
\end{split}
\right.
\end{equation}

\begin{equation}
\text{sistema 2:}\left\{
\begin{aligned}
2x+y&=3 \\
x-y&=1+a
\end{aligned}
\right.
\end{equation}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Podemos tentar usar o ambiente \texttt{cases} para definir sistema de equações como no Exemplo~\ref{ex05:cases:aligned},
mas isto não efetua o alinhamento (na posição de igualdade). 
Não podemos usar o  \&, pois o alinhamento seria efetuado de forma próprio para colocar condição da expressão e não a equação.
Assim, é aconselhável usar o \verb+split+ ou \verb+aligned+ dentro das fórmulas (usar \verb+equation+ caso queira enumeração) em vez de \texttt{cases}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex04-04.tex, parte c},label=ex:04-04:c]
\begin{ltxlisting}[caption={ex05-cases-aligned.tex},label=ex05:cases:aligned]
\begin{equation}
  \begin{cases}
      2x+y=1 \\
      x-y=1+a 
  \end{cases}
\end{equation}
\begin{equation}  
  \begin{cases}
      2x+y&=1 \\
      x-y&=1+a 
  \end{cases}  
\end{equation}
\begin{equation}
  \left\{ \begin{aligned}
      2x+y&=1 \\
      x-y&=1+a 
  \end{aligned} \right.
\end{equation}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Existem diversos ambientes estilo \texttt{equations}. 
Vamos ver alguns deles:

O ambiente \texttt{gather}\index{modo matematico@{modo matemático}!costrucao@{construção}!gather} produz várias equações, todas centralizadas.
Para inibir enumeração em algumas delas, coloque o \verb|\nonumber|\index{modo matematico@{modo matemático}!costrucao@{construção}!\verb+\nonumber+} na equação que deseja remover a enumeração (antes da quebra de linhas). Veja o Exemplo~\ref{ex05:gather}

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex04-04.tex, parte d},label=ex:04-04:d]
\begin{ltxlisting}[caption={ex05-gather.tex},label=ex05:gather]
\begin{gather}
x+y+z=1 \\
x-y+z=2 \\
x+y=0
\end{gather}
\begin{gather}
x+y+z=1 \\
x-y+z=2 \nonumber \\
x+y=0
\end{gather}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Para equações em várias linhas, com pontos de alinhamento, 
usa-se o \texttt{align}\index{modo matematico@{modo matemático}!costrucao@{construção}!align} que pode inibir enumeração de algumas equações como em \texttt{gather}.

Quando escreve uma expressão grande quebrado em várias linhas,
as vezes é legal tabular cada linha para direita.
Este efeito pode ser obtido pelo \verb|multline|\index{modo matematico@{modo matemático}!costrucao@{construção}!multiline}, como do Exemplo~\ref{ex05:multiline}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex04-04.tex, parte e},label=ex:04-04:e]
\begin{ltxlisting}[caption={ex05-multiline.tex},label=ex05:multiline]
\begin{align}
x+y+z&=1 \\
x-y+z&=2 \nonumber \\
x+y&=0
\end{align}
\begin{multline}
Ax+Ay+Az=
  a_{11}x_1+\cdots +a_{1n}x_n+\cdots +\cdots +a_{n1}x_1+\cdots a_{nn}x_n    \\
  a_{11}y_1+\cdots +a_{1n}y_n+\cdots +\cdots +a_{n1}y_1+\cdots a_{nn}y_n    \\
  a_{11}z_1+\cdots +a_{1n}z_n+\cdots +\cdots +a_{n1}z_1+\cdots a_{nn}z_n    
\end{multline}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Para mais ambientes deste estilo, consulte o manual de AMS\LaTeX. \cite[Cap. 8]{book:goossens:2004} explica bem os ambientes e comandos matemáticos do AMS (que está sendo discutido parcialmente neste capítulo).

Note que, todos os ambientes do estilo \texttt{equation} 
(\texttt{equation}, \texttt{gather}, \texttt{align}, \texttt{multline}, etc)
apresentam a versão com *\index{equation*}\index{gather*}\index{align*}\index{multiline*} na qual remove toda enumeração (versão * equivale 
a colocar \verb|\nonumber| em todas equações).
Veja Exemmplo~\ref{ex05:align:star}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex04-04.tex, parte f},label=ex:04-04:f]
\begin{ltxlisting}[caption={ex05-align-star.tex},label=ex05:align:star]
\begin{align*}
x+y+z&=1 \\
x-y+z&=2 \\
x+y&=0
\end{align*}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Para equações de várias linhas, uma linha independente de texto pode ser inserido pelo comando \verb+\intertext+\index{modo matematico@{modo matemático}!costrucao@{construção}!\verb+\intertext+}.

Veja Exemmplo~\ref{ex05:intertext}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex04-04.tex, parte f},label=ex:04-04:f]
\begin{ltxlisting}[caption={ex05-intertext.tex},label=ex05:intertext]
\begin{align*}
f(x)&=2x+y+3x 
\intertext{juntando o $x$ e usando $y=2x$, temos}
&=5x+y \\
 & = 7x
\end{align*}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}
Note que não precisa colocar \verb+\\+ antes e depois do \verb+\intertext+. 
 
\section{Nome sobre setas e delimitador empilhados}

Para colocar nome nas setas\index{setas!com nome}, usa-se o \verb+\stackrel+\index{modo matematico@{modo matemático}!costrucao@{construção}!\verb+\stackrel+}.

Para colocar limitante de soma, produto, etc em duas linhas\index{limitante!duas linhas}, usa-se o \verb+\substack+\index{modo matematico@{modo matemático}!costrucao@{construção}!\verb+\substack+}.

 
Para colocar embaixo, poderá usar o \verb+\underset+\index{modo matematico@{modo matemático}!costrucao@{construção}!\verb+\underset+}.

Simplesmente empilhar um sobre outro, usa-se o \verb+\atop+\index{modo matematico@{modo matemático}!costrucao@{construção}!\verb+\atop+}.

Veja Exemplo~\ref{ex05:stackrel}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex04-05.tex, parte b},label=ex:04-05:b]
\begin{ltxlisting}[caption={ex05-stackrel.tex},label=ex05:stackrel]
\[ X \stackrel{f}{\to} Y\]
\[ f : \underset{x}{X}  \underset{\mapsto}{\to} \underset{f(x)}{Y} \]
\[ L_i(x)=\prod_{\substack{j=0 \\ i\ne j}} \frac{x-x_j}{x_i-x_j} \]
\[ X \atop Y \]
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Binomial de Newton pode ser produzido por \verb+binom+\index{modo matematico@{modo matemático}!costrucao@{construção}!\verb+\binom+} como no Exemplo~\ref{ex05:binom}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex04-05.tex, parte c},label=ex:04-05:c]
\begin{ltxlisting}[caption={ex05-binom.tex, parte c},label=ex05:binom]
Regra de Pascal:
\[ \binom{n}{k} = \binom{n-1}{k} + \binom{n-1}{k-1} \]
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

\section{Subequações}
 
Podemos usar subequações\index{subequação} no \LaTeX{} como no Exemplo~\ref{ex05:subequacao}.

%\setcounter{lstorichapter}{\value{chapter}}
%%\let\orilabel\label
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex04-05.tex, parde d},label=ex:04-05:d,preset={\let\label\orilabel,\setcounter{chapter}{1}}]
\begin{ltxlisting}[caption={ex05-subequacao.tex},label=ex05:subequacao]
\begin{subequations}
\begin{equation}\label{eq:regiao:a}
  x^2+y^2 \le 1
\end{equation}    
\begin{equation}\label{eq:regiao:b}
  y \ge 0
\end{equation}
\end{subequations}
As equações \ref{eq:regiao:a} e  \ref{eq:regiao:b} determinam a parte superior do disco.
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}
%\setcounter{chapter}{\value{lstorichapter}}

\section{Acentuação no modo matemático}

Na matemática, usa a acentuação\index{modo matematico@{modo matemático}!acentuacao@{acentuação}} para produzir nomes relacionados ao original  tais como $\hat f$ e $\bar f$ relacionados a $f$.
Tais acentuações difere do modo texto.
Alguns desses acentuações comumente encontrados na matemática são: acento circunflexo, til, ponto, seta e barra.
Além das acentuações, tem também o caso de colorar expoentes como em $f'$ e $f^\ast$ que são relacionados com $f$. 
O \LaTeX{} permite produzir estes e outros acentos e símbolos usados como expoentes especiais na matemática.

\begin{tabular}{cc}
comando & exemplo \\
\verb+\hat+ & $\hat{a}$ \\
\verb+\tilde+ & $\tilde{a}$ \\
\verb+\dot+ & $\dot{a}$ \\
\verb+\ddot+ & $\ddot{a}$ \\
\verb+\dddot+ & $\dddot{a}$ \\
\verb+\ddddot+ & $\ddddot{a}$ \\
\verb+\bar+ & $\bar{a}$ \\
\verb+\vec+ & $\vec{a}$ \\
\verb+\grave+ & $\grave{a}$ \\
\verb+\acute+ & $\acute{a}$ \\
\verb+\breve+ & $\breve{a}$ \\
\verb+\check+ & $\check{a}$ \\
\verb+\overset{\circ}{}+ & $\overset{\circ}{a}$ \\
\end{tabular}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\hat{a}+, $\hat{a}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\tilde{a}+, $\tilde{a}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\dot{a}+, $\dot{a}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\ddot{a}+, $\ddot{a}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\dddot{a}+, $\dddot{a}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\ddddot{a}+, $\ddddot{a}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\bar{a}+, $\bar{a}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\vec{a}+, $\vec{a}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\grave{a}+, $\grave{a}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\acute{a}+, $\acute{a}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\breve{a}+, $\breve{a}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\check{a}+, $\check{a}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\overset{\circ}{a}+, $\overset{\circ}{a}$}%

Alguns deles, como barra, requer alongamento quando tiver mais de um símbolo (ou símbolo grande). 
Neste caso, deverá usar versão ajustáveis:

\begin{tabular}{cc}
comando & exemplo \\
\verb+\widehat+ & $\widehat{abc}$ \\
\verb+\widetilde+ & $\widetilde{abc}$ \\
\verb+\overline+ & $\overline{ab}$ \\
\verb+\overrightarrow+ & $\overrightarrow{AB}$ \\
\verb+\overleftarrow+ & $\overleftarrow{ab}$ \\
\verb+\overleftrightarrow+ & $\overleftrightarrow{AB}$ \\
\end{tabular}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\widehat{abc}+, $\widehat{abc}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\widetilde{abc}+, $\widetilde{abc}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\overline{abc}+, $\overline{abc}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\overrightarrow{abc}+, $\overrightarrow{abc}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\overleftarrow{abc}+, $\overleftarrow{abc}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\overleftrightarrow{abc}+, $\overleftrightarrow{abc}$}%

As vezes, precisamos colocar embaixo, como sublinhar.

\begin{tabular}{cc}
comando & exemplo \\
\verb+\underbar+ & $\underbar{abc}$ \\
\verb+\underline+ & $\underline{abc}$ \\
\verb+\underrightarrow+ & $\underrightarrow{AB}$ \\
\verb+\underleftarrow+ & $\underleftarrow{ab}$ \\
\verb+\underleftrightarrow+ & $\underleftrightarrow{AB}$ \\
\end{tabular}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\underbar{abc}+, $\underbar{abc}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\underline{abc}+, $\underline{abc}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\underrightarrow{abc}+, $\underrightarrow{abc}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\underleftarrow{abc}+, $\underleftarrow{abc}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\underleftrightarrow{abc}+, $\underleftrightarrow{abc}$}%

Colocar a direita (ou como expoente)

\begin{tabular}{cc}
comando & exemplo \\
\verb+'+ & $f'$ \\
\verb+^\prime+ & $f^\prime$ \\
\verb+^\backprime+ & $f^\backprime$ \\
\verb+^\ast+ & $f^\ast$ \\
\verb+^\circ+ & $20^\circ$ \\
\verb+^llcorner+ & $x^\llcorner$ \\
\verb+^ulcorner+ & $x^\ulcorner$ \\
\verb+^\perp+ & $\vec{v}^\perp$ \\
\end{tabular}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!$f'$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+f^\prime+, $f^\prime$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+f^\backprime+, $f^\backprime$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+f^\ast+, $f^\ast$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+f^\circ+, $f^\circ$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+f^\llcorner+, $f^\llcorner$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+f^\ulcorner+, $f^\ulcorner$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+f^\perp+, $f^\perp$}%

Não confundir apóstrofos (usado na derivada $f'$ de $f$, por exemplo), com o acento agudo.
Note que i e j sem o ponto é produzido por \verb+\imath+\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\imath+, $\imath$} e \verb+\jmath+\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\jmath+, $\jmath$}, respectivamente como em $\hat\imath$ e $\hat\jmath$.

Veja o Exemplo~\ref{ex05:acentos}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex06-06.tex},label=ex:06-06]
\begin{ltxlisting}[caption={ex05-acentos.tex},label=ex05:acentos]
\[ \hat{f}, \tilde{f}, \dot{x}, \dddot{x}, \bar{y},  \overset{\circ}{X}, \vec{v} \]
\[ \widehat{ABC}, \overrightarrow{AB}, \]
\[ f', f^\ast, 20^\circ, \vec{v}^\perp \]
\[ \vec\imath \times \vec\jmath=\vec k\]
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Na matemática, colocar ``$/$'' sobre o símbolo significa a negação do símbolo.
Apesar de vários símbolos de negação comumente usados estão definidos, pode precisar produzir a negação de alguns símbolos específicos. 
Para produzir tal negação\index{modo matematico@{modo matemático}!negacao@{negação}}, usa-se o comando \verb+\not+\index{modo matematico@{modo matemático}!simbolo@{símbolo}!\verb+\not+}.

Por exemplo, \verb+\not\subset+ produz $\not\subset$.

Veja o Exemplo~\ref{ex05:negacao}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex06-06.tex},label=ex:06-06]
\begin{ltxlisting}[caption={ex05-negacao.tex},label=ex05:negacao]
Alguns comandos de negação já existentes.
\[\nexists X : X \in X \]
\[\forall X, X \notin X \]
\[ X \neq \{X\} \]
Produzindo com comando \verb+\not+.
\[ X \not\subset Y \implies X \cap Y \neq X\]
\[X : X \not\ni x \]
\[r \not\perp s \]
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}


\clearpage\thispagestyle{empty}\cleardoublepage
\chapter{Definindo Comandos e Ambientes}\label{chap:novo:comando}
Vamos ver o básico da definição de comandos e ambientes

\section{Definindo comandos}\label{sec:comandos}
Quando tem o comando longo a ser digitado, poderá definir um comando\index{definir comandos} que funciona como um atalho. 
Por exemplo, \verb+\mathbb{R}+ toda vez que queremos escrever o conjunto dos números reais é cansativo. 
Definir comando para \verb+\mathbb{R}+ permite também, trocar facilmente pelo outro comando de fontes no lugar de \verb+\mathbb+.
%tais como  \verb+\mathds{R}+ do pacote \texttt{dsfont}, se desejar no futuro.

Para definir um comando, usa-se o \verb+\newcommand+\index{newcommand@\verb+\newcommand+}.
Por exemplo, \verb+\newcommand{\Rset}{\mathbb{R}}+ define o comando \verb+\Rset+ que será substituído pelo \verb+\mathbb{R}+ quando é compilado.
Se quer que \verb+\Rset+ funcione tanto dentro como fora das fórmulas, poderá usar o \verb+\ensuremath+\index{ensuremath@\verb+\ensuremath+} como em \verb+\newcommand{\Rset}{\ensuremath{\mathbb{R}}}+.
Note que aqui foi evitado de definir como sendo \verb+\real+, pois o comando \verb+\natural+ já está definido no \LaTeX.

O nome do comando não deve ter números. 
Por exemplo, \verb+\newcommand{\R2}{$\mathbb{R}^2$}+ resulta em erros, pois o nome do comando \verb+\R2+ contém o número.

Analogamente ao caso de \verb+\Rset+, \verb+\newcommand{\sen}{\mathrm{sen}}+ define o comando para função seno.
Em geral, para definir nome da função, usa-se o \verb+\DeclaremathOperator+\index{DeclareMathOperator@\verb+\DeclareMathOperator+} do pacote \texttt{amsmath} tal como \verb+\DeclaremathOperator{\sen}{sen}+ 
em vez do \verb+\newcommand+.
Ele coloca automaticamente o \verb+\mathrm+ no segundo argumento.

O comando \verb+\newcommand{\argmin}{\mathop{\mathrm{arg\,min}}}+ define o comando \verb+\argmin+ para função \texttt{arg min}, mas por ter \verb+\mathop+\index{mathop@\verb+\mathop+}, o limitante será colocado embaixo em vez de ser colocado como índice. Note o uso de ``\verb+\,+'' para inserir pequeno espaço entre \texttt{arg} e \texttt{min}.
Para facilitar, o pacote \texttt{amsmath} define a versão com ``*'' de \verb+\DeclaremathOperator+\index{DeclareMathOperator*@\verb+\DeclareMathOperator*+} que coloca o nome da função dentro do \verb+\mathrm+ e \verb+\mathop+.

Quando já existe o comando, poderá redefinir usando o \verb+\renewcommand+\index{renewcommand@\verb+\renewcommand+}. 

Se não sabe se existe o comando, poderá usar o \verb+\providecommand+\index{providecommand@\verb+\providecommand+} que define o comando caso não existir.

Estas definições de comandos costumam ficar no \texttt{preamble} do documento. Veja o Exemplo~\ref{ex06:newcommand}.
 
%\let\mathcal\amsmathcal
%\let\mathbb\amsmathbb
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex04-01.tex},label=ex:04-01]
\begin{ltxlisting}[caption={ex06-newcommand.tex},label=ex06:newcommand]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amssymb}
\newcommand{\Rset}{\ensuremath{\mathbb{R}}}
%\DeclareMathOperator{\sen}{sen} % modo amsmath
\newcommand{\sen}{\mathrm{sen}} % modo normal (sem amsmath)
%\DeclareMathOperator*{\argmin}{argmin} % modo amsmath
\newcommand{\argmin}{\mathop{\mathrm{arg\,min}}} % modo sem amsmath
\begin{document}
\[ \forall \theta \in \Rset, \cos^2\theta + \sen^2\theta = 1 \]
\[ \argmin_x f(x) = \left\{x: f(x) = \min_{x'} f(x') \right\} \]
\end{document}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}
%\let\mathcal\orimathcal
%\let\mathbb\orimathbb

Os comandos podem ter até 9 parâmetros.
Os comandos com parâmetros\index{comandos!com parâmetros}, é criado pelo comando \verb+\newcommand{\nome-do-comando}[n]{definição}+ onde \texttt{n} é o número de parâmetros.
No corpo da definição do comando, \verb+#1+, \verb+#2+,\verb+#3+, \ldots especificam os parâmetros na posição  $1$, $2$, $3$, etc.

Quando usa os parâmetros, o primeiro deles pode ser opcional\index{comandos!parâmetro opcional}.
Neste caso, usa-se a sintaxe
\verb+\newcommand{\nome-do-comando}[n][v]{definição}+
onde ``\texttt{v}'' é o valor padrão quando o parâmetro for omitido.
O Exemplo~\ref{ex06:parametro:opcional} ilustra o caso.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex04-01.tex, parte b},label=ex:04-01:b]
\begin{ltxlisting}[caption={ex06-parametro-opcional.tex},label=ex06:parametro:opcional]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amssymb}
\newcommand{\conj}[1]{\overline{#1}} % com um parametro
\newcommand{\norma}[2][]{\left\|#2\right\|_{#1}} % com parametro opcional
\newcommand{\seq}[2][n]{\left\{#2_0,\ldots,\,#2_{#1}\right\}} % parametro opcional pré definido
\begin{document}
\[ \conj{z}\cdot z = \norma{z}^2 \neq \norma[\infty]{z}^2 \]
A sequência $\seq{x}$ para $n=5$ é $\seq[5]{x}$.

$\conj{\conj{z}w}=z\conj{w}$
\end{document}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}
 
O comando \verb+\let+\index{let@\verb+\let+} cria uma copia do comando existente.
Por exemplo, \verb+\let\comandocopia\comandooriginal+ cria um comando \verb+\comandocopia+ que é uma cópia do \verb+\comandooriginal+.
Assim, podemos redefinir o \verb+\comandooriginal+ e se precisar do original, é só chamar o \verb+\comandocopia+.
Também poderá restaurar o comando original usando o \verb+\let+.
Por exemplo,

\begin{lstlisting}[language={[LaTeX]TeX}]
 \let\tanoriginal\tan
 \renewcommand{\tan}{\mathrm{tg}}
\end{lstlisting}
 
redefine o comando \verb+\tan+, mas se precisar do \verb+\tan+ original, eh só chamar o \verb+\tanoriginal+.
Para restaurar o original, é só usar o \verb+\let+ novamente com em \verb+\let\tan\tanoriginal+.

\section{Criando ambientes}
Para trecho maior de dados, o ambiente\index{ambiente} (o que tem \verb+\begin+ e \verb+\end+) é mais adequado que os comandos.
Para criar ambientes, usa-se o comando \verb+\newenvironment+\index{newenvironment@\verb+\newenvironment+} na qual o primeiro parâmetro é 
nome do ambiente, segundo é o que vai fazer antes e terceiro é o que vai fazer depois.
Quando tem o parâmetro\index{ambiente!parâmetro} (que pode ter até nove), coloca o número de parâmetro como parâmetro opcional de \verb+\newenvironment+, entre primeiro e segundo parâmetro.
Assim como o comando, o ambiente também pode ter o primeiro parâmetro como opcional\index{ambiente!parâmetro opcional}.
Neste caso, passa o seu valor padrão após número de parâmetro como sendo parâmetro opcional ao \verb+\newenvironment+.

No Exemplo~\ref{ex06:ambiente}, o ambiente \texttt{dem} foi definido somente como a ilustração.
Em geral, usa o ambiente \texttt{proof}\index{proof} do pacote \texttt{amsthm} para demonstrações.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex04-02.tex},label=ex:04-02]
\begin{ltxlisting}[caption={ex06-ambiente.tex},label=ex06:ambiente]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amssymb}
\newenvironment{myenv}{\begin{center}\em} {\end{center}}
% com um parâmetro
\newenvironment{mypar}[1]{\par\noindent \hrulefill\fbox{ #1 }\hrulefill \\ } {\par\noindent\hrulefill \\}
% um parâmetro opcional pré definido
\newenvironment{dem}[1][Demonstração]{\textbf{#1:}\ }  {\hfill\rule{1ex}{1ex}\par}
\begin{document}
\begin{myenv}
Texto enfatizado e centralizado.
\end{myenv}
\begin{mypar}{Teste}
Parágrafo com título simples.
\end{mypar}
\begin{dem}
\ldots
\end{dem}
\begin{dem}[Prova]
\ldots
\end{dem}
\end{document}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Como não podemos colocar linhas em branco no meio da definição de comandos ou ambientes para indicar o parágrafo, usa-se o comando \verb+\par+\index{par@\verb+\par+} para esta finalidade.
O comando \verb+\noindent+\index{noindent@\verb+\noindent+} desabilita temporariamente a indentação (tabulação para direita) da primeira linha do parágrafo atual.

Note que, também pode definir os comandos no modo \TeX{} em vez do modo \LaTeX.
Para isso, basta usar o \verb+\def+ que é importante quando um comando define o outro. 
O \verb+\def+ que não vamos discutir aqui, deve ser usado com cuidado, pois ele não verifica se o comando exite ou não, redefinindo caso existir.

\section{Quebrando o código em várias linhas}

Em geral, a definição de comando ou ambiente deve ficar em uma única linha, mas quando isto é longo, precisamos dividir em mais de uma linha\index{comando!múltiplas linhas}\index{ambiente!múltiplas linhas} para boa organização. 
Neste caso, existe trechos que não podem ser quebrados, mas isto requer um conhecimento extra.
Para contornar isto, note que o \LaTeX{} considera que a próxima linha é uma continuação da linha atual quando encontrar ``\%'' grudado na última letra ativa (que não seja comentário).
Assim, quando quebrar a definição de comandos ou ambiente em mais de uma linha, coloque o ``\%'' grudado na última letra. 
Fique atento de não colocar espaço entre a última letra e ``\%''.
Veja o Exemplo~\ref{ex06:comando:multilinhas}.

\begin{singlespacing}
%\begin{lstlisting}[caption={ex04-02.tex, parte b},label=ex:04-02:b]
\begin{lstlisting}[caption={ex06-comando-multlinhas.tex},label=ex06:comando:multilinhas]
\newcommand{\norma}[2][]{%
  \left\|#2\right\|_{#1}%
}
\newenvironment{mypar}[1]%
  {\par\noindent \hrulefill\fbox{ #1 }\hrulefill \\}% o que faz antes
  {\par\noindent\hrulefill \\}% o que faz depois
\end{ltxlisting}
%\end{lstlisting}
\end{singlespacing}

\clearpage\thispagestyle{empty}\cleardoublepage
\chapter{Divisão Lógica de Documentos}
Neste capítulo, vamos estudar a divisão lógica de documentos.

\section{Capítulos, seções e similares}
Nos livros e relatórios, os conteúdos são organizados em capítulos\index{capítulo}, indicado por \verb+\chapter+\index{chapter@\verb+\chapter+}.
Os capítulos podem ser divididos em seções\index{seção} indicado pelo comando \verb+\section+\index{section@\verb+\section+}, se assim desejar. 
Neste caso, evite ter capítulos com seções e outro sem seções, para ter uniformidades.

Se a seção ficar grandes, podem ser subdivididos em subseções\index{subseção} com o comando \verb+subsection+\index{subsection@\verb+\subsection+}, mas tome cuidado para que todas seções tenham subseções.

Existem ainda, \verb+\subsubsection+\index{subsubsection@\verb+\subsubsection+} (subsubseções), \verb+\paragraph+\index{paragraph@\verb+\paragraph+} (parágrafos\index{parágrafo}) e \verb+\subparagraph+\index{subparagrapg@\verb+\subparagraph+} (subparágrafos\index{subparágrafo}) que são menos usados.

No caso de artigos, o conteúdo costuma ser divido em seções e caso desejar, seções podem ser subdivididos em subseções (evitando que tenha seção com subseção e outro sem subseção).

O capítulo inicia-se com o comando \verb+\chapter{Título}+ e seções com o comando \verb+\section{Título}+.

Estes comandos aceitam a opção de especificar os ``títulos curtos''\index{título curto} que são usados no sumário e cabeçalho, o que podem ser passados como parâmetro opcional colocado antes do título.
Neste formato, usado quando título é longo, tem a forma \verb+\chapter[Título Curto]{Título}+ e \verb+\section[Título Curto]{Título}+

%\setcounter{lstorichapter}{\value{chapter}}
%\setcounter{lstorisection}{\value{section}}
%\setcounter{chapter}{0}
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex05-01.tex},label=ex:05-01,preset={\setcounter{chapter}{0},\let\addcontentsline\emptyaddcontentsline}]
\begin{ltxlisting}[caption={ex07-capitulo.tex},label=ex07:capitulo]
\chapter[Titulo Curto]{Título Longo do Capítulo}
Apresentação bem rápida do capítulo.
\section[Título curto]{Título longo da seção}
Texto da seção
\section{Título da outra seção}
Texto da outra seção
\ldots
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}
%\setcounter{chapter}{\value{lstorichapter}}
%\setcounter{section}{\value{lstorisection}}
%% \addtocounter{chapter}{-1}
%\let\addcontentsline\oriaddcontentsline

Quando há os capítulos e/ou seções, o sumário\index{sumário} podem ser produzidos automaticamente pelo comando \verb+\tableofcontents+\index{tableofcontents@\verb+\tableofcontents+}.
Para que o sumário apareça devidamente no documento final, precisa compilar o documento duas vezes, pois o \LaTeX{} usa o arquivo auxiliar para isso.

Para comandos do tipo capítulos (\verb+\chapter+, \verb+\section+, etc), existem as versões com ``*''\index{chapter*@\verb+\chapter*+}\index{section*@\verb+\section*+} que não serão enumeradas e não serão colocadas no sumário, apesar de ter a mesma formatação.
Por exemplo, \verb+\chapter*{Resumo}+ não será enumerado, nem vai no sumário.

No caso de artigos, o resumo tem formatação diferente do  restante das seções.
Assim, existe o ambiente especial \texttt{abstract}\index{abstract} para o resumo, o que não é mesmo que \verb+\section*+.

Note a diferença e similaridade do Exemplo~\ref{ex07:capitulo:star} que usa a versão ``*'', com o Exemplo~\ref{ex07:capitulo} que usa a versão normal.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex05-01.tex, parte b},label=ex:05-01:b]
\begin{ltxlisting}[caption={ex07-capitulo-star.tex},label=ex07:capitulo:star]
\chapter*{Resumo}
Resumo aqui.
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

\section{Capa, conteúdo frontal e principal}

O Exemplo~\ref{ex07:matter} ilustra a estrutura básica de um documentos tipo livro na qual não vamos colocar a saída aqui, por ocupar várias páginas.

\begin{singlespacing}
%\begin{lstlisting}[caption={ex05-01.tex, parte c},label=ex:05-01:c]
\begin{lstlisting}[caption={ex07-matter.tex},label=ex07:matter]
\documentclass[12pt,a4paper,oneside]{book}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amssymb}
\pagestyle{empty}
\begin{document}
% capa
\frontmatter
\chapter*{Resumo}\thispagestyle{empty}
Resumo aqui.
\pagestyle{headings}
\tableofcontents % Sumário
\chapter{Prefácio}
Apresentação do trabalho.
\mainmatter
\chapter{Título do Capítulo Aqui}
Apresentação bem rápida do capítulo.
\section{Títuo da seção aqui}
Texto da seção
\ldots
\appendix % se existir apêndice
\chapter{Título do Apêndice 1} % se existir 
Texto do apêndice 1
\ldots
\backmatter % opcional
% referencia biliografica
% indice remissivo, se existir
\end{document}
\end{lstlisting}
\end{singlespacing}

O comando \verb+\pagestyle{empty}+\index{patestyle@\verb+\pagestyle+!empty} antes do \verb+\begin{document}+ remove as enumerações das páginas para que parte inicial do livro fiquem sem a enumeração.

A capa simples nos livros e relatórios podem ser produzidos pelo comando \verb+\maketitle+\index{maketitle@\verb+\maketitle+}, desde que seja fornecido algumas informações tais como título, autor e data pelos comandos \verb+\title+\index{title@\verb+\title+}, \verb+\author+\index{author@\verb+\author+} e \verb+\date+\index{date@\verb+\date+}, colocados antes do \verb+\maketitle+.
Veja Exemplo~\ref{ex07:maketitle}.

\begin{singlespacing}
\begin{lstlisting}[caption={ex07-maketitle.tex},label=ex07:maketitle]
\documentclass[12pt,a4paper,oneside]{book}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amssymb}
\title{Exemplo}
\author{Sadao Massago}
\date{Fevereiro de 2018}
\begin{document}
\maketitle
\frontmatter
\ldots
\end{document}
\end{lstlisting}
\end{singlespacing}

Note que, quando não for especificado a data (não tiver chamda do comando \verb+\date+), será assumido como sendo \verb+\today+\index{today@\verb+\today+} que é data de compilação do documento. Se não quer que apareça data, deve colocar \verb+\date{}+.

Para criar títulos personalizados nos livros e relatórios, use o ambiente \texttt{titlepage}\index{titlepage}.
Vale lembrar que nos livros e relatórios, a capa não será contada como páginas, mas todas as outras páginas, mesmo totalmente em branco (existe no caso de livros impressos), serão contadas.

O comando \verb+\frontmatter+\index{frontmatter@\verb+\frontmatter+} disponível somente para livros, indica que será matéria pré textual, %\index{pré textual}, %frontal\index{matéria!frontal},
 tendo as páginas enumeradas em romano minúsculo e sem a contagem de capítulos (mesmo para versão sem ``*'').

O comando \verb+\thispagestyle{empty}+\index{thispagestyle@\verb+\thispagestyle+!empty} no \verb+\chapter*{Resumo}+ remove a enumeração da página atual (primeira página do ``Resumo'') e não vai constar no sumário. 
Note que capítulos usa o estilo de página \texttt{plain}\index{estilo da página!plain} que enumera embaixo da página, mesmo que o estilo de página esteja em \texttt{empty}. 
Assim, colocar \verb+\thispagestyle{empty}+ é necessário para remover paginação desta primeira página do ``capítulo''.

Antes do sumário\index{sumário} colocado pelo comando \verb+\tableofcontents+\index{tableofcontents@\verb+\tableofcontents+}, foi colocado \verb+\pagestyle{headings}+\index{pagestyle@\verb+\pagestyle+!headings} para que volte a colocar páginas e cabeçalho superior. 
Note que, no livro, o que vem antes do sumário não devem ser paginados e não devem constar no sumário, mas o que vem depois do sumário, costuma ser paginados. 
Por ser \texttt{frontmatter}, a paginação será em romano minusculo.

Depois do prefácio, tem o comando \verb+\mainmatter+\index{mainmatter@\verb+\mainmatter+} (conteúdo textual) que também é disponível somente para livros. 
Este comando reinicia a paginação (começa a contar de 1 novamente) e usa a enumeração em arábico. 
Também faz começar a contar capítulos.

O comando \verb+\appendix+\index{appendix@\verb+\appendix+} indica que, o que segue são apêndices\index{apêndice} que complementa o documento. 
Ele é disponível para livros, relatórios e artigos.
No caso de livros e relatórios, o comando \verb+\chapter+ começará a produzir título para apêndices em vez de capítulos (escreverá Apêndice A, Apêndice B, etc em vez de Capítulo 1, Capítulo 2, etc). 
No caso de artigos, o comando \verb+\section+ que produzirá os apêndices.
 
O comando \verb+\backmatter+\index{backmatter@\verb+\backmatter+} também é disponível somente para livros. 
O \verb+\backmatter+ faz com que \verb+\chapter+ funcione igual a \verb+\chapter*+ (versão ``*''). 
Como não é costume colocar \verb+\chapter+ no \texttt{backmatter}, o comando pode ser omitido.

Em geral, a parte final do documento é a referência bibliográfica. 
Se existir o índice remissivo, deverá ser colocado depois da referência bibliográfica.

Note que o relatório é um documento e não é um livro. 
Assim, todas páginas exceto a capa, devem estar enumeradas em arábico e em sequencias. 
Assim, não há divisão de \texttt{frontmatter} e \texttt{mainmatter}, não existindo comandos correspondentes.

A configuração do documento no artigo é ilustrado no Exemplo~\ref{ex07:article}. % que também omitiremos a sua saída final.

%\setcounter{lstorichapter}{\value{chapter}}
%\setcounter{lstorisection}{\value{section}}
%% \let\orilabel\label
\let\orithesection\thesection
\renewcommand{\thesection}{\arabic{section}}
\newcommand{\articleappendix}{\setcounter{section}{0}\def\thesection{\Alph{section}}}
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex05-01.tex, parte e},label=ex:05-01:e,preset={\setcounter{chapter}{1},\setcounter{section}{0},\let\addcontentsline\emptyaddcontentsline,\let\title\orititle,\let\author\oriauthor,\let\date\oridate,\let\maketitle\makearticletitle,\let\appendix\articleappendix}]
\begin{ltxlisting}[caption={ex07-article.tex},label=ex07:article,preset={\let\maketitle\makearticletitle\let\appendix\articleappendix}]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[english,brazil]{babel}
\usepackage{amsmath,amssymb}
\title{Exemplo}
\author{Sadao Massago}
\date{Fevereiro de 2018}
\begin{document}
\maketitle
\begin{abstract}
Resumo aqui.
\end{abstract}
% \tableofcontents % so se for artigo longo
\section{Título da seção 1}
Texto da seção 1
\section{Título da seção 2}
Texto da seção 2
\ldots
\appendix % se tiver apêndice
\section{Título do Apêndice 1}
Texto do apêndice 1
\ldots
% referência biliográfica
\end{document}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}
%%\let\ref\oriref
%\setcounter{chapter}{\value{lstorichapter}}
%\setcounter{section}{\value{lstorisection}}
%% \addtocounter{chapter}{-1}
\let\thesection\orithesection
%\let\addcontentsline\oriaddcontentsline


%\begin{singlespacing}
%\begin{lstlisting}[caption={ex05-01.tex, parte e},label=ex:05-01:e]
%\documentclass[12pt,a4paper]{article}
%\usepackage[T1]{fontenc}
%\usepackage{amsmath,amssymb}
%\title{Exemplo}
%\author{Sadao Massago}
%\date{Fevereiro, 2018}
%\begin{document}
%\maketitle
%\begin{abstract}
%Resumo aqui.
%\end{abstract}
%% \tableofcontents % se for artigo longo
%\section{Título da Seção 1}
%Texto da seção 1
%\section{Título da Seção 2}
%Texto da seção 2
%\ldots
%\appendix % se tiver apêndice
%\section{Título do apêndice 1}
%Texto do apêndice 1
%\ldots
%% referência biliográfica
%\end{document}
%\end{lstlisting}
%\end{singlespacing}

O \verb+\maketitle+\index{maketitle@\verb+\maketitle+} produz título do artigo com informações usando título, autor e data fornecidos como nas capas dos livros e relatórios.

Note que não costumamos usar o índice remissivo para artigos, apesar de ter comandos disponíveis para isso.

\section{Limpando o verso das páginas}
Embora a tendência atual é elaborar os livros e relatórios eletrônicos para serem lidos diretamente, pode ser que queira criar uma versão impressa.

No caso do livro impresso, costuma ser diagramado para impressão em dois lados (opção da classe de documento \texttt{twoside}\index{twoside}) em vez de impressão somente em um lado (opção da classe \texttt{oneside}\index{oneside}).
Também podemos usar \texttt{openright}\index{openright} que começa o capítulo somente no lado direito (\texttt{openany}\index{openany} começa o capítulo tanto no lado esquerdo como no lado direito).
Na classe \texttt{book}, se não tiver a opção ``oneside'', será interpretado como ``twoside''.

Nestes casos, o verso do sumário, resumo, etc, assim como versos de finais dos capítulos, se existir, ficarão em branco em vez de ter enumeração de páginas ou cabeçalhos.
Para que isso aconteça, é só inserir o código
\begin{verbatim}
\clearpage\thispagestyle{empty}\cleardoublepage
\end{verbatim}
antes de cada capítulo ou comandos que produzem os capítulos ou similares, tais como sumário, referências bibliográficas e índice remissivo. 
Também é necessário antes do \verb+\mainmatter+. 
Veja o Exemplo~\ref{ex07:clearpage} na qual a saída foi omitida.

\begin{singlespacing}
\begin{lstlisting}[caption={ex07-clearpage.tex},label=ex07:clearpage]
\documentclass[12pt,a4paper,openright]{book}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amssymb}
\pagestyle{empty}
\begin{document}
% capa
\frontmatter
\chapter*{Resumo}\thispagestyle{empty}
Resumo aqui.
\cleardoublepage
\pagestyle{headings}
\tableofcontents % Sumário
\clearpage\thispagestyle{empty}\cleardoublepage
\chapter{Prefácio}
Apresentação do trabalho.
\clearpage\thispagestyle{empty}\cleardoublepage
\mainmatter
\chapter{Título do Capítulo 1}
Texto do primeiro capítulo.
\clearpage\thispagestyle{empty}\cleardoublepage
\chapter{Título do Capítulo 2}
Texto do segundo capítulo.
\ldots
\clearpage\thispagestyle{empty}\cleardoublepage
\appendix % se existir apêndice
\chapter{Título do Apêndice 1} % se existir 
Texto do apêndice 1
\ldots
\backmatter % opcional: sem efeito visual
\clearpage\thispagestyle{empty}\cleardoublepage
% referencia biliografica
\clearpage\thispagestyle{empty}\cleardoublepage
% indice remissivo, se existir
\end{document}
\end{lstlisting}
\end{singlespacing}

O comando \verb+\clearpage+\index{clearpage@\verb+\clearpage+} finaliza a página. 
Por exemplo, se tiver algo pendente como figuras a serem colocadas, será feito.
Com \verb+\thispagestyle{empty}+\index{thispagestyle@\verb+\thispagestyle+!empty}, desabilita o estilo da página atual e com \verb+\cleardoublepage+\index{cleardoublepage@\verb+\cleardoublepage+}, inserir página em branco, se necessário. 

\section{Efetuando pequenos ajustes}
O primeiro parágrafo da seção ou capítulo não será indentado (empurrado para direita).
A indentação é feito para distinguir um parágrafo do outro, mas como não tem parágrafo anterior, não há necessidades de indentação.
No entanto, algumas pessoas podem querer indentar o primeiro parágrafo.
Se for o caso, basta usar o pacote \texttt{indentfirst}\index{indentfirst} no \texttt{preamble} do documento.

Por outro lado, se quer remover indentação de algum parágrafo como no caso do texto que segue uma fórmula matemática no modo \texttt{displaystyle}, como continuação da fórmula, basta usar o comando \verb+\noindent+\index{noindent@\verb+\noindent+}. 
%Também pode inserir a indentação, usando o comando \verb+\indent+, exceto nos lugares proibidos como o primeiro parágrafo.

Também pode querer que uma página fique um pouco maior para acomodar o conteúdo atual.
Neste caso, use o comando \verb+\enlargethispage+\index{enlargethispage@\verb+\enlargethispage+}. 
Por exemplo, \verb+\enlargethispage{\baselineskip}+ aumenta a página atual por uma linha.
Este tipo de ajustes requer cuidados para não comprometer a qualidade da diagramação.

Se quer que algum comando seja executado após o término da página atual, use o pacote \texttt{afterpage}\index{afterpage} que implementa o comando de mesmo nome.
Por exemplo, \verb+\afterpage{\clearpage}+ colocará todas figuras e tabelas pendentes na próxima página.

\clearpage\thispagestyle{empty}\cleardoublepage
\chapter{Teoremas e Similares}
Os ambientes para teoremas e similares podem ser criados de forma apropriada%, facilmente no
 \LaTeX.

\section{Criando ambiente para teoremas}

Para definir o ambiente para escrever teoremas\index{teoremas} e similares, 
costuma usar o pacote \texttt{amsthm}\index{amsthm} que melhora a usabilidade do \verb+\newtheorem+\index{newtheorem@\verb+\newtheorem+} usados para este propósito.

O comando \verb+\newtheorem{theorem}{Teorema}[chapter]+ cria um ambiente chamado \texttt{theorem} que usa como título ``Teorema'' com contador vinculado a capítulo (\texttt{chapter}).
Se for artigo, troque o \texttt{chapter} pelo \texttt{section} como em
\verb+\newtheorem{theorem}{Teorema}[section]+.

Se \verb+[chapter]+ ou \verb+[section]+ for omitida, a contagem será feita sequencialemente em todo documento.

Para definir outros ambiente similares aos teoremas, tais como axioma, lema, corolário e proposição, poderá usar o comando tal como \verb+\newtheorem{proposition}[theorem]{Proposição}+ onde \texttt{theorem} no parâmetro opcional na segunda posição indica que será contado junto com o teorema. 
Asim ficará Teorema~1.1, Proposição~1.2, etc. 
O modelo para proposição serve para demais ambientes similares aos teoremas.

Para ambientes como definição, exemplos e exercícios, devemos usar o estilo definição, obtido pelo comando \verb+\theoremstyle{definition}+\index{theoremstyle@\verb+\theoremstyle+!definition}.

A seguir, usa-se o \verb+\newtheorem+ novamente como \verb+\newtheorem{definition}[theorem]{Definição}+ e \verb+\newtheorem{example}[theorem]{Exemplo}+.

Para observações e notas, deve mudar para estilo \texttt{remark} com o comando \verb+\theoremstyle{remark}+\index{theoremstyle@\verb+\theoremstyle+!remark}.

Note que \texttt{amsthm} providencia o ambiente para demonstrações, denominado de \texttt{proof}\index{proof}.
Veja o Exemplo~\ref{ex08:teorema}.
%\setcounter{lstorichapter}{\value{chapter}}
%\setcounter{lstorisection}{\value{section}}
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex06-05.tex},label=ex:06-05,preset={\setcounter{chapter}{0},\let\addcontentsline\emptyaddcontentsline}]

%\makeatletter
% % exercise env from xsim
% \let\originalexercise\exercise
% \let\originalendexercise\endexercise
% \let\c@exerciseoriginal\c@exercise
% % undefine env
% \let\exercise\@undefined
% \let\endexercise\@undefined
% \let\c@exercise\@undefined
%\makeatother
\begin{ltxlisting}[caption={ex08-teorema.tex},label=ex08:teorema]
\documentclass[12pt,a4paper]{book}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}
\usepackage{amssymb,amsmath}
\usepackage{amsthm} % para configurar o teorema
% Definindo teormas e similares. Contador unico, vinculado a capítulos.
\newtheorem{theorem}{Teorema}[chapter] % contador vinculado a capitulos
\newtheorem{corollary}[theorem]{Corolário}
\newtheorem{lemma}[theorem]{Lema}
\newtheorem{proposition}[theorem]{Proposição}
\newtheorem{axiom}[theorem]{Axioma}
\theoremstyle{definition}
\newtheorem{definition}[theorem]{Definição}
\newtheorem{example}[theorem]{Exemplo}
\newtheorem{exercise}{Exercício}[chapter] % contador próprio, vinculado a capitulo
\theoremstyle{remark}
\newtheorem{remark}[theorem]{Observação}
\begin{document}
\chapter{Triângulo Equilátero}
\begin{definition}
  Um triângulo é dito \emph{triângulo equilátero} quando todos os lados forem congruentes.
\end{definition}
\begin{theorem}
  Todo triângulo equilátero se, e somente se, todos ângulos forem congruentes.
\end{theorem}
\begin{proof}
\ldots
\end{proof}
\begin{remark}
Um triângulo cuja todos ângulos são congruentes é dito \emph{equiângulo}.
\end{remark}
\end{document}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}
\theoremstyle{plain}
%\setcounter{chapter}{\value{lstorichapter}}
%\setcounter{section}{\value{lstorisection}}
%\let\addcontentsline\oriaddcontentsline
%\makeatletter
% % restore exercise env of xsim
% \let\exercise\originalexercise
% \let\endexercise\originalendexercise
% \let\c@exercise\c@exerciseoriginal
%\makeatother

\section{Parâmetros opcionais}

Note que os ambientes tipo teoremas permite colocar o título como parâmetro opcional do ambiente.
Isto também vale para o ambiente \texttt{proof} quando existem textos entre o enunciado do teorema e a sua prova.
O comando \verb+\proofname+\index{proofname@\verb+\proofname+} armazena o ``nome'' do ambiente \texttt{proof} que o valor atual é ``\texttt{\proofname}''.
Quando a demonstração é finalizada pela equação no modo \texttt{displaystyle}, a marca do final de demonstração fica na linha de baixo.
Para corrigir isso, existe o comando \verb+\qedhere+\index{qedhere@\verb+\qedhere+} que indica onde a marca de final de demonstração deve ser colocada.
Veja o Exemplo~\ref{ex08:teorema:parametro}.

% Para mudar a marca do final de demonstração, redefina o comando \qedsymbol
%\renewcommand{\qedsymbol}{cqd.}


% showexpl juntamente com teoremas e referencias, causa erro na segunda compilacao.
% Nao sei porque, pois na equacao com referencias,
% ou teoremas sem referencias funcionam bem.
% Usando lstlisting e minipage para ter mesmo effeito de showexpl

%\setcounter{lstorichapter}{\value{chapter}}
%%\setcounter{lstorisection}{\value{section}}
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex06-05.tex, parte b},label=ex:06-05:b,preset={\let\label\orilabel,\setcounter{chapter}{0}}]
%\begin{definition}
%Um triângulo é dito \emph{triângulo retângulo} quando tem um ângulo reto. O lado oposto ao ângulo reto é denominado de \emph{hipotenusa} e outros dois lados são denominados de \emph{catetos}.
%\end{definition}
%\begin{theorem}[Pitágoras]\label{thm:pitagoras}
%  Sejam $\Delta ABC$, um triângulo retângulo onde $a$ é hipotenusa. Então
%  \[ a^2=b^2+c^2 \] 
%\end{theorem}
%\begin{remark}
%A reciproca do Teorema~\ref{thm:pitagoras} também é verdadeira.
%\end{remark}
%\begin{proof}[\proofname{} do Teorema~\ref{thm:pitagoras}]
%\ldots
%Assim, temos que
%\[ a^2 + b^2 = c^2 \qedhere \]
%\end{proof}
%\end{LTXexample}
%\end{singlespacing}
%\setcounter{chapter}{\value{lstorichapter}}
%%\setcounter{section}{\value{lstorisection}}

%\setcounter{lstorichapter}{\value{chapter}}
%\setcounter{lstorisection}{\value{section}}
%\let\orilabel\label
%\begin{singlespacing}
%% \begin{lstlisting}[caption={ex06-05.tex, parte b},label=ex:06-05:b]
%\begin{LTXexample}[pos=b,caption={ex06-05.tex, parte b},label=ex:06-05:b,preset={\let\label\orilabel,\setcounter{chapter}{1}}]
\begin{ltxlisting}[caption={ex08-teorema-parametro.tex},label=ex08:teorema:parametro,preset={\setcounter{chapter}{1}}]
\begin{definition}
Um triângulo é dito \emph{triângulo retângulo} quando tem um ângulo reto. O lado oposto ao ângulo reto é denominado de \emph{hipotenusa} e outros dois lados são denominados de \emph{catetos}.
\end{definition}
\begin{theorem}[Pitágoras]\label{thm:pitagoras}
  Sejam $\Delta ABC$, um triângulo retângulo onde $a$ é hipotenusa. Então
  \[ a^2=b^2+c^2 \] 
\end{theorem}
\begin{remark}
A reciproca do Teorema~\ref{thm:pitagoras} também é verdadeira.
\end{remark}
\begin{proof}[\proofname{} do Teorema~\ref{thm:pitagoras}]
\ldots
Assim, temos que
\[ a^2 + b^2 = c^2 \qedhere \]
\end{proof}
\end{ltxlisting}
%\end{LTXexample}
%%\end{lstlisting}
%\end{singlespacing}
%\setcounter{chapter}{\value{lstorichapter}}
%\setcounter{section}{\value{lstorisection}}

%\noindent
%\setcounter{lstorichapter}{\value{chapter}}
%\setcounter{lstorisection}{\value{section}}
%\fbox{\begin{minipage}{\linewidth}
%\begin{singlespacing}
%\setcounter{chapter}{1}
%\begin{definition}
%Um triângulo é dito \emph{triângulo retângulo} quando tem um ângulo reto. O lado oposto ao ângulo reto é denominado de \emph{hipotenusa} e outros dois lados são denominados de \emph{catetos}.
%\end{definition}
%\begin{theorem}[Pitágoras]\label{thm:pitagoras}
%  Sejam $\Delta ABC$, um triângulo retângulo onde $a$ é hipotenusa. Então
%  \[ a^2=b^2+c^2 \] 
%\end{theorem}
%\begin{remark}
%A reciproca do Teorema~\ref{thm:pitagoras} também é verdadeira.
%\end{remark}
%\begin{proof}[\proofname{} do Teorema~\ref{thm:pitagoras}]
%\ldots
%Assim, temos que
%\[ a^2 + b^2 = c^2 \qedhere \]
%\end{proof}
%\end{singlespacing}
%\end{minipage}} 
%\setcounter{chapter}{\value{lstorichapter}}
%\setcounter{section}{\value{lstorisection}}
 
\clearpage\thispagestyle{empty}\cleardoublepage
\chapter[Figuras, Tabelas e Imagens Externas]{Figuras e Tabelas Flutuantes, Tabelas Longas e Imagem Externa}
%Tratar também de caixas gráficas.
Neste capítulo, trataremos de ilustrações e tabelas.

\section{Figuras flutuantes}

Elemento flutuante\index{elemento!flutuante} é aquele que não precisa ser colocado obrigatoriamente na posição ``digitada'', mas que será colocado na melhor posição possível em termos de apresentabilidade.

A figura flutuante\index{figura!flutuante} é especificada pelo ambiente \texttt{figure}\index{figure} e a tabela flutuante é especificada pelo ambiente \texttt{table}\index{table}, respectivamente.
Veja o Exemplo~\ref{ex09:figura}.

%%\setcounter{lstorichapter}{\value{chapter}}
%% \setcounter{lstorisection}{\value{section}}
%\begin{singlespacing}
%%\begin{LTXexample}[pos=b,caption={ex08-01.tex},label=ex:08-01,preset={\setcounter{chapter}{0},\let\addcontentsline\emptyaddcontentsline}]
%\begin{LTXexample}[pos=b,caption={ex08-01.tex},label=ex:08-01]
\begin{ltxlisting}[caption={ex09-figura.tex},label=ex09:figura]
\begin{figure}[hbp]
\center

    \

    Aqui se coloca a primeira figura

    \

 \caption[Primeira figura]{Primeira figura como elemento flutuante}
 \label{fig:simp}
\end{figure}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}
%%\setcounter{chapter}{\value{lstorichapter}}
%%\setcounter{section}{\value{lstorisection}}
%%\let\addcontentsline\oriaddcontentsline

O Exemplo~\ref{ex09:figura} ilustra o uso do ambiente flutuante \texttt{figure}. 
O parâmetro opcional é uma sequência de caracteres, especificando a ordem que tentará colocar a figura.

\begin{description}
  \item[h]\index{float!h} Onde foi digitado
  \item[b]\index{float!b} na parte inferior da página
  \item[t]\index{float!t} na parte superior da página
  \item[p]\index{float!p} página separada.
  \item[!]\index{float!exclamation@\exclsymbforindex} ignorar a restrição de espaçamento.
\end{description}

  No ambiente flutuante, o \LaTeX{} tentará as posições seguindo a lista de especificação dos parâmetros e inserirá na primeira posição que satisfizer a exigência.
  Caso nenhuma posição for conveniente, criará uma página separada especialmente para ele.

 Durante a tentativa de inserção, existem restrições estéticas tal como considerar inadequado quando sobra muito pouco espaço para o texto. 
Restrições como estes podem ser ignorados quando utilizar a opção ``!''

O comando \verb+\caption+\index{caption@\verb+\caption+} produz enumeração e título da figura, podendo estar no começo ou no final do ambiente \texttt{figure}. 
Ele aceita o nome curto como argumento opcional para ser usado na lista de figuras, caso título da figura for longo.

Note que, o rótulo colocado pelo \verb+\label+\index{label@\verb+\label+} deverá ficar dentro ou depois de \verb+\caption+ que é responsável pela enumeração das figuras.

Para colocar moldura, poderá usar o \verb+\fbox+\index{fbox@\verb+\fbox+}, mas ele não pode ter parágrafo como argumento. 
Neste caso, podemos usar a combinação com \texttt{minipage} como no Exemplo~\ref{ex09:figura:fbox}.

%%\setcounter{lstorichapter}{\value{chapter}}
%% \setcounter{lstorisection}{\value{section}}
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex08-01.tex, parte b},label=ex:08-01:b]
\begin{ltxlisting}[caption={ex09-figura-fbox.tex},label=ex09:figura:fbox]
\begin{figure}[hbp!]
  \center
 \fbox{\begin{minipage}{0.5\linewidth}
  \center
  Aqui insere a segunda figura
  \caption{Segunda figura} \label{fig:frame}
 \end{minipage}
 } % fbox
\end{figure}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}
%%\setcounter{chapter}{\value{lstorichapter}}
%%\setcounter{section}{\value{lstorisection}}

%Caso em que precise inserir duas ou mais imagens numa mesma figura,  use o pacote \texttt{subfigure}.
 
\section{Tabelas flutuantes}

A tabela flutuante\index{tabela!flutuante} é criado da forma similar, usando o ambiente \texttt{table}\index{table}. 
Os argumentos opcionais para controlar a posição de inserção é mesmo da figura. 
Veja o Exemplo~\ref{ex09:tabela:flutuante} que ilustra a tabela flutuante, contendo texto como elemento.

%%\setcounter{lstorichapter}{\value{chapter}}
%% \setcounter{lstorisection}{\value{section}}
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex08-01.tex, parte c},label=ex:08-01:c]
\begin{ltxlisting}[caption={ex09-tabela-flutuante.tex},label=ex09:tabela:flutuante]
\begin{table}[hbp]
\center

    \

    Aqui se coloca a primeira tabela

    \

 \caption{Primeira tabela}
 \label{tab:simp}
\end{table}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}
%%\setcounter{chapter}{\value{lstorichapter}}
%%\setcounter{section}{\value{lstorisection}}

Normalmente, o conteúdo da tabela é criado pelo ambiente apropriado como \texttt{tabular} ou similar.
Alguns casos, podem ser criados como arquivo separado e inserido como no caso de figuras.

Note que, podemos criar moldura, incluindo o título da tabela através de \texttt{fbox} combinado com o \texttt{minipage}, como feito na figura.

No caso do Exemplo~\ref{ex09:tabela:tabular} ilustra o uso de \texttt{tabular} dentro do ambiente \texttt{table} para criar tabela flutuante.

%% \setcounter{lstorichapter}{\value{chapter}}
%% \setcounter{lstorisection}{\value{section}}
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex08-01.tex, parte d},label=ex:08-01:d]
\begin{ltxlisting}[caption={ex09-tabela-tabular.tex},label=ex09:tabela:tabular]
\begin{table}[hbp]
 \center
 \begin{tabular}{|p{3.5cm}|l|} \hline
   cenouras  (500g)          & R\$0,50  \\ \hline
   cogumelos (vidro de 500g) & R\$5,00  \\ \hline
   batata    (1Kg)           & R\$1,20  \\ \hline \hline
   total                     & R\$7,20  \\ \hline
 \end{tabular}
 \caption{Usando tabular} \label{tab:tab}
\end{table}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}
%%\setcounter{chapter}{\value{lstorichapter}}
%%\setcounter{section}{\value{lstorisection}}

Note que, o comando \verb+\supressfloats+\index{supressfloats@\verb+\supressfloats+} podem ser usados para impedir que mais \texttt{floats} sejam inseridas na página específica, mas os ``floats'' com opção ``!'' não respeitam este comando.

Para que ``floats'' não processados (que ainda não foram colocados) sejam postos antes de mudar a página, basta usar
\verb+\clearpage+ ou \verb+\cleardoublepage+ usado para limpar configurações de páginas (chamado pelo \verb+\chapter+, por exemplo).

Note que, lista de figuras\index{lista de figuras} e de tabelas\index{lista de tabelas} são geradas pelos comandos \verb+\listoffigures+\index{listoffigures@\verb+\listoffigures+} e \verb+\listoftables+\index{listoftables@\verb+\listoftables+} que costumam ser colocados depois do \verb+\tableofcontents+\index{tableofcontents@\verb+\tableofcontents+} (sumário\index{sumário}).
 
\section{Tabelas longas}
 
O ambiente tabular é ideal para tabelas pequenas. 
Mas as vezes precisamos de tabelas grandes que podem ocupar mais de uma página. 
Para isso, existe o ambiente \texttt{longtable}\index{longtable} implementado no pacote do mesmo nome.
A tabela longa\index{tabela longa} é contado junto com as tabelas flutuantes e não devem ser colocados dentro do ambiente \texttt{table}. 
Ele também possui o comando \verb+\caption*+\index{caption*@\verb+\caption*+} (a versão ``*'' do \verb+\caption+) que coloca o título, mas não acrescenta na lista de tabelas.
Os parâmetros básicos são mesmo do ambiente \texttt{tabular}.

Veja o Exemplo~\ref{ex09:longtable}. Para que este exemplo funcione, deverá ter \verb+\usepackage{longtable}+ no \texttt{preamble} do documento.

%% \setcounter{lstorichapter}{\value{chapter}}
%% \setcounter{lstorisection}{\value{section}}
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex08-02.tex},label=ex:08-02]
\begin{ltxlisting}[caption={ex09-longtable.tex},label=ex09:longtable]
 \begin{longtable}{|c|r|}
 \caption{Tabela Longa} \label{ltab:teste}
 \\ % é necessário pular linha após definições preliminares: caption, label, etc.
 \hline
 \textbf{centrada} & \textbf{para direita} \\ \hline \hline
 coluna 1 & coluna 2 \\ \hline
 coluna 1 & coluna 2 \\ \hline
 $\vdots$ & $\vdots$ \\ \hline
 coluna 1 & coluna 2 \\ \hline
 \end{longtable}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}
%%\setcounter{chapter}{\value{lstorichapter}}
%%\setcounter{section}{\value{lstorisection}}

Note que, ao iniciar o ambiente, coloca as configurações tais como títulos, o que fazer antes de mudar a página, etc.
Depois pula a linha com ``\verb+\\+'' e resto segue normalmente. 
Como \texttt{longtable} usa o arquivo auxiliar para armazenar sua largura, pode precisar compilar duas vezes para ter o resultado desejado (assim como acontece com referências cruzadas).

Para efetuar as configurações tais como o que fazer quando muda a página, etc, veja o manual correspondente.

\section{Imagem externa}
As figuras podem ser elaboradas usando o próprio \LaTeX, mas muitas vezes criamos usando um programa externo.
As imagens externas\index{imagem externa} para serem inseridas no documento \LaTeX, deverá estar no formato \texttt{pdf}, \texttt{jpg/jpeg} ou \texttt{png}. 
O formato \texttt{pdf} costuma ser usado para ilustrações científicos por ser pequeno e é de alta qualidade (exceto quando convertido de algum formato \texttt{bitmap}).
Se o programa permite gerar \texttt{pdf}, prefira usar este formato. 
O formato \texttt{jpg/jpeg} é apropriado para fotos, mas não suporta transparências.
O formato \texttt{png} é similar a \texttt{jpg/jpeg}, mas suporta transparências.

O comando para incluir gráficos externos é \verb+\includegraphics+\index{includegraphics@\verb+\includegraphics+} implementado no pacote \texttt{graphicx}\index{graphicx} (não confundir com o pacote antigo \texttt{graphics} que tem menos recursos).
Para exemplo desta seção, assumimos que tenha \verb+\usepackage{graphicx}+ no \texttt{preamble} do documento.
Veja Exemplo~\ref{ex09:imagem}.

% \setcounter{lstorichapter}{\value{chapter}}
% \setcounter{lstorisection}{\value{section}}
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex09-01.tex},label=ex:09-01]
\begin{ltxlisting}[caption={ex09-imagem.tex},label=ex09:imagem]
\begin{figure}[hbp]
 \center
\includegraphics[width=0.5\linewidth]{latex-via-exemplos-fig}
\caption{Imagem PDF}
\end{figure}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}
%\setcounter{chapter}{\value{lstorichapter}}
%\setcounter{section}{\value{lstorisection}}

Note que não foi colocado a extensão (\texttt{.pdf}) no nome do arquivo.
Em geral omitimos a extensão do arquivo para poder trocar de formatos, se desejar.

No parâmetro opcional, foi colocado \verb+width=0.5\linewidth+ para especificar que largura é metade da largura da linha atual.
Os parâmetros opcionais\index{includegraphics@\verb+\includegraphics+!parâmetro opcional} controlam o tamanho e rotação das imagens.

\begin{description}
  \item[width] largura da imagem
  \item[height] altura da imagem
  \item[totalheight] altura total (quando é rotacionado,\texttt{height} só mede da linha de base para cima).
  \item[scale] ampliação
  \item[angle] rotação em graus
  \item[origin] centro de rotação especificado pela combinação de ``l'' (left), ``r'' (right), ``t'' (top), ``b'' (botton) e ``c'' (center).
  \item[keepaspectratio] manter proporção quando \texttt{height} e \texttt{width} for especificado simultaneamente (usado sem o valor).
\end{description}

No caso de incluir o arquivo \texttt{PDF} com mais de uma página\index{imagem PDF!múltiplas páginas}, poderá usar a opção \texttt{page} para indicar a página a ser incluída.

O Exemplo~\ref{ex09:imagem:rotacao} ilustra a rotação por $30^\circ$ em torno do centro.
 
% \setcounter{lstorichapter}{\value{chapter}}
% \setcounter{lstorisection}{\value{section}}
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex09-01.tex, parte b},label=ex:09-01:b]
\begin{ltxlisting}[caption={ex09-imagem-rotacao.tex},label=ex09:imagem:rotacao]
\begin{figure}[hbp]
 \center
\includegraphics[width=0.5\linewidth,angle=30,origin=c]{latex-via-exemplos-fig}
\caption{Imagem PDF}
\end{figure}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}
%\setcounter{chapter}{\value{lstorichapter}}
%\setcounter{section}{\value{lstorisection}}
 
As vezes queremos colocar figuras lado a lado para comparação ou para economia de espaços. Para tanto, podemos usar o \texttt{minipage}, como no Exemplo~\ref{ex09:imagem:lado}.

% \setcounter{lstorichapter}{\value{chapter}}
% \setcounter{lstorisection}{\value{section}}
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex09-01.tex, parte c},label=ex:09-01:c]
\begin{ltxlisting}[caption={ex09-imagem-ĺado.tex},label=ex09:imagem:lado]
\begin{figure}[hbp]
\center
\begin{minipage}{0.4\linewidth}
\center
\includegraphics[width=0.3\linewidth]{latex-via-exemplos-fig}
\caption{lado esquerdo} \label{fig:lado1}
\end{minipage}
\begin{minipage}{0.4\linewidth}
\center
\includegraphics[width=0.3\linewidth,angle=30,origin=c]{latex-via-exemplos-fig}
\caption{lado direito} \label{fig:lado2}
\end{minipage}
\end{figure}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}
%\setcounter{chapter}{\value{lstorichapter}}
%\setcounter{section}{\value{lstorisection}}

\section{Desenhando sobre a imagem externa}
As vezes queremos desenhar sobre a imagem externa importada no documento, como no caso de acrescentar fórmulas ou mais alguns detalhes.
Para isso, podemos usar o ambiente gráfico \texttt{picture}\index{picture}.

No Exemplo~\ref{ex09:imagem:sobreposicao} ilustra a sobreposição para colocar fórmula sobre a imagem externa.

Note que a imagem foi inserida dentro do ambiente \texttt{picture}.

Observe como e onde foi usado o \verb|\unitlength|\index{unitlength@\verb+\unitlength+} para permitir o ajuste de escala (mudando o valor de \verb|\unitlength|) sem perder a posição de sobreposição já ajustada.

% \setcounter{lstorichapter}{\value{chapter}}
% \setcounter{lstorisection}{\value{section}}
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex09-04.tex},label=ex:09-04]
\begin{ltxlisting}[caption={ex09-imagem-sobreposicao.tex},label=ex09:imagem:sobreposicao]
\begin{figure}[htbp!]
\center
%
\unitlength=0.45\linewidth % unidade
\begin{picture}(1.0,1.0) % caixa reservada
\put(0,0){\includegraphics[width=\unitlength]{latex-via-exemplos-fig}}
% grade para localizar coordenadas
% \multiput(0,0)(0.1,0){11}{\line(0,1){1}}
% \multiput(0,0)(0,0.1){11}{\line(1,0){1}}
\put(0.35,0.45){\LARGE $e^{\pi i}+1=0$}
\end{picture}
\caption{Técnica de sobreposicao\label{fig:sobreposicao}}
\end{figure}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}
%\setcounter{chapter}{\value{lstorichapter}}
%\setcounter{section}{\value{lstorisection}}

Para quem precisa efetuar sobreposição com frequẽncia, existe o pacote \texttt{overpic} descrito na Seção~\ref{sec:image:overpic} da página~\pageref{sec:image:overpic}.

O ambiente \texttt{picture} é um ambiente gráfico padrão do \LaTeX{} que permite criar ilustrações.
Note que, para criar ilustrações, existem vários pacotes gráficos apropriados, mas se quiser usar o ambiente \texttt{picture},
lembre-se de colocar o \verb+\usepackage{pict2e}+\index{pict2e} no \texttt{preamble} do documento para eliminar limitações de alguns comandos gráficos deste ambiente.

O Exemplo~\ref{ex09:picture} ilustra os comandos básicos do ambiente \texttt{picture} com o uso do pacote \texttt{pict2e}.

% \setcounter{lstorichapter}{\value{chapter}}
% \setcounter{lstorisection}{\value{section}}
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex09-04.tex, parte b},label=ex:09-04:b]
\begin{ltxlisting}[caption={ex09-picture.tex},label=ex09:picture]
\begin{figure}[hbtp!]
\center
\unitlength=1cm % medida da  unidade
% \linethickness{1mm} % tome cuidado que e comando, nao a medida
\begin{picture}(5,4)(0,0) 
% put coloca o objeto grafico na posição indicada
% line (segmento) e vector (vetor)
% Recebe vetor diretor e comprimento do segmento/vetor
\put(4,3.5){\line(0,1){0.5}} % segmento
\put(5,3){\vector(1,1){0.5}} % vetor
\put(2,2){\circle{1}} % circulo  com centro e raio. 
\put(1,1){\circle*{1.5}} % circle* é circulo solido
\put(3,2){\oval(3,2)} % oval
\put(3.5,2){\makebox(0,0)[cc]{$A=\pi r^2$}} % Caixa de texto (com formulas)
\put(3,0) { \polyline(0,0)(1,0)(1,1)} % linhas poligonais
\put(5,0) { \polygon(0,0)(1,0)(1,1)} % poligonos
\put(6.5,0) { \polygon*(0,0)(1,0)(1,1)} % poligonos preenchidos
\thicklines % linha mais grossa
\put(4,1){\qbezier(0.0,0.0)(1.3,0.0)(2.0,2.8)} % curva bezier quadratica
\thinlines %linha normal (mais fina)
\put(6,1){\cbezier(0.0,0.0)(1.0,0.0)(1.0,1.0)(2.0,3.0)} 
% curva bezier cubica
\end{picture}

\caption{Ilustração no formato \TeX{}.\label{fig:tex}}
\end{figure}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}
%\setcounter{chapter}{\value{lstorichapter}}
%\setcounter{section}{\value{lstorisection}}

\section{Caixas gráficas}
O pacote \texttt{graphicx} dispões de vários comandos relacionados com a mudança de tamanho e rotações.
Eles são chamados de caixas gráficas.
Os argumentos não devem conter quebra de parágrafos. Assim, se precisar, deverá usar juntamente com o \texttt{minipage} (ou \verb+\parbox+). 

Para escalar, usa-se o \verb+\scalebox+\index{scalebox@\verb+\scalebox+}. Para indicar o tamanho fixo, usa-se o \verb+\resizebox+\index{resizebox@\verb+\resizebox+}.
Veja o Exemplo~\ref{ex09:scale}.

% \setcounter{lstorichapter}{\value{chapter}}
% \setcounter{lstorisection}{\value{section}}
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex09-02.tex},label=ex:09-02]
\begin{ltxlisting}[caption={ex09-scale.tex},label=ex09:scale]
Tamanho normal.

\scalebox{2.5}{Ampliado por 2.5 vezes}

\scalebox{2}[3]{Ampliado por 2x3 vezes} % 2 no horizontal e 3 em vertical (deforma)

\resizebox{10cm}{!}{Com 10 cm de comprimento}

\resizebox{!}{0.5cm}{Com 0.5 cm de altura}

\resizebox{5cm}{0.75cm}{Com 5cm$\times$0.7cm} % deforma
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}
%\setcounter{chapter}{\value{lstorichapter}}
%\setcounter{section}{\value{lstorisection}}

O ``!'' no \verb+\resizebox+ especifica que é calculado automaticamente com outra medida.

A rotação e feito pelo comando \verb+\rotatebox+\index{rotatebox@\verb+\rotatebox+}, onde parâmetro opcional \texttt{origin}\index{rotatebox@\verb+\rotatebox+!origin} permite configurar o centro de rotação, combinando ``l'' (left), ``r'' (right), ``t'' (top), ``b'' (botton) e ``c'' (center).
Veja o Exemplo~\ref{ex09:rotate}.
  
% \setcounter{lstorichapter}{\value{chapter}}
% \setcounter{lstorisection}{\value{section}}
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex09-02.tex, parte b},label=ex:09-02:b]
\begin{ltxlisting}[caption={ex09-rotate.tex},label=ex09:rotate]
\rotatebox{30}{Rotacionado} por $30^\circ$.

\rotatebox[origin=rb]{-30}{Rotacionado} por $-30^\circ$ em torno de lado direito inferior.

\rotatebox[origin=c]{45}{Rotacionado} por $45^\circ$ em torno de centro.

\reflectbox{Refletido} está refletido. Mesmo que o \scalebox{-1}[1]{Refletido}.

\raisebox{\depth}{\scalebox{1}[-1]{Refletido}} está refletido verticalmente.

\rotatebox[origin=c]{30}{\scalebox{1.5}{Ampliada e rotacionada}}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}
%\setcounter{chapter}{\value{lstorichapter}}
%\setcounter{section}{\value{lstorisection}}

O \verb+\reflectbox+\index{reflectbox@\verb+\reflectbox+} reflete horizontalmente.
Para refletir verticalmente, use o \verb+\scalebox+, mas precisa ajustar a sua altura. 
%Aqui foi usado o \verb+\raisebox+\index{raisebox@\verb+\raisebox+}, o que não vamos entrar em detalhes.

Uma caixa é um bloco e além de ser manipulados no tamanho e posição, também pode ser usado mais de uma vez.
Por exemplo, se quer colocar um certo elemento em mais de um lugar, ou colocar mais tarde, poderá criar uma caixa e armazenar dentro dele.
Neste texto, não vamos entrar em detalhes sobre caixas (veja o básico sobre caixas na Seção~\ref{sec:caixas} do Capítulo~\ref{chap:ajustes}), mas várias referências discutem sobre isso.

\clearpage\thispagestyle{empty}\cleardoublepage
\chapter{Ajuste das Fontes}\label{chap:fontes}
Neste capítulo, veremos o controle das fontes no \LaTeX.

\section{Seleção da família de fontes}
Num documento, usa-se vários tipos de fontes. 
Por exemplo, o corpo do documento nos livros e artigos costuma ser em romano\index{fonte!romano} (o que tem enfeite nas pontas, denominado de serifa\index{serifa}).
Os títulos dos artigos e livros podem ficar com fontes \texttt{sans serif}\index{sans serif} (sem serifa\index{fonte!sem serifa}). 
O corpo de slide de apresentação ou poster costuma usar \texttt{sans serif} também.
O código de programa, nome do arquivo, etc que deve ser lido no pé da letra costuma estar como \texttt{typewriter}\index{typewriter} (mono espaçado\index{fonte!nomo espaçado}).

Assim, nos documentos científicos, costumam usar três famílias de fontes básicos que são romano (com serifa\index{com serifa}), \texttt{sans serif} (sem serifa) e \texttt{typewriter} (mono espaçado) na qual devem estar em harmonia. 
O \LaTeX{} usa a fonte Computer Modern\index{fonte!Computer Modern} por padrão na qual tem essas três fontes estão coerentes entre si.
Note que podem trocar para outras fontes, se desejar, mas estas três fontes devem estar em harmonia.

A família das fontes são selecionadas pelo comando \verb+\textrm+\index{textrm@\verb+\textrm+} ou ambiente \texttt{rmfamily}\index{rmfamily} para romano, o que é padrão para artigos e livros, pelo comando \verb+\textsf+\index{textsf@\verb+\textsf+} ou ambiente \texttt{sffamily}\index{sffamily} para \texttt{sans serif}, e pelo comando \verb+\texttt+\index{texttt@\verb+\texttt+} ou ambiente \texttt{ttfamily}\index{ttfamily} para \texttt{typewriter}.

Quando aplica a mudança da fonte dentro de um ambiente, o ambiente de ajuste de fontes pode ser usado como comandos. Se não estiver dentro do ambiente e quer usar a versão comando do ambiente, poderá delimitar a sua atuação, colocandoo entre chaves.
Veja Exemplo~\ref{ex10:family}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex03-01.tex, parte b},label=ex:03-01:b]
\begin{ltxlisting}[caption={ex10-family.tex},label=ex10:family]
\textsf{Fontes sem serifa}

\begin{sffamily}
Texto na fonte sem serifa.
\end{sffamily}

\textsf{Fontes mono espaçado}

\begin{ttfamily}
Texto na fonte mono espaçado.
\end{ttfamily}

\begin{center}
\sffamily
texto centralizado e em sans serif.
\end{center}

{\ttfamily Texto em nomo espaçado}

Texto normal.
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}


\section{Seleção de formas e peso das fontes}

No \LaTeX, usa-se o comando para trocar forma de fontes, tais como negrito, itálico, etc. 
Usar comando adequado no \LaTeX{} é importante para automatizar o processo, não somente para formatação de textos.
O texto enfatizado\index{fonte!enfatizado} é produzido pelo comando \verb+\emph+\index{emph@\verb+\emph+} ou pelo ambiente \texttt{em}\index{em}.
O comando \verb+\emph+ altera entre fonte reto e itálico para destacar palavras tal como termo que está sendo definido.

O texto em negrito\index{fonte!negrito}, por sua vez, é produzido pelo comando \verb+textbf+\index{textbf@\verb+\textbf+} ou pelo ambiente \texttt{bfseries}\index{bfseries} para dar ênfase maior que destaca no meio do texto.
Fonte não negrito\index{fonte!não negrito} que é padrão pode ser especificado pelo comando \verb+\textmd+\index{textmd@\verb+\textmd+} ou ambiente \texttt{mdseries}\index{mdseries}. 

Ainda existem outras formas tal como o comando \verb+\textsc+\index{textsc@\verb+\textsc+} e ambiente \texttt{scshape}\index{scshape} para \texttt{small caps}\index{fonte!samll caps}, também conhecido como ``versaletes''\index{versaletes}, comandos \verb+\textit+\index{textit@\verb+\textit+} e ambiente \texttt{itshape}\index{itshape} para itálicos\index{fonte!itálico}. Também existe o comando \verb+\textsl+\index{textsl@\verb+\textsl+} e ambiente \texttt{slshape}\index{slshape} que requer cuidado no uso.

O formato normal\index{fonte!formato normal} padrão é \verb+\textup+\index{textup@\verb+\textup+} ou ambiente \texttt{upshape}\index{upshape}.
Veja Exemplo~\ref{ex10:series}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex03-01.tex, parte c},label=ex:03-01:c]
\begin{ltxlisting}[caption={ex10-series.tex},label=ex10:series]
\textbf{Texto em negrito}

\begin{bfseries}
Negrito como ambiente
\end{bfseries}

\begin{em}
Parágrafo enfatizado. \emph{Texto enfatizado dentro dele}
\end{em}

\textsc{Small Caps}

\begin{center}
\bfseries
Negrito e centralizado.
\textmd{Normal}
\end{center}

{\scshape Small Caps dentro dos chaves}

Texto normal
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Note que os comandos antigos\index{fonte!comandos antigos} \verb+\rm+, \verb+\tt+, \verb+\bf+, \verb+\sf+, \verb+\it+ e \verb+\sc+ para ajuste de fontes não devem ser usados, pois não podem ser combinados (por exemplo, não é possível produzir itálico negrito), além de ter de problemas de ajustes de espaçamentos (como a necessidade de correção de itálico).

%Para restaurar a fonte padrão\index{fonte!restaurar padrão}, basta usar o ambiente \texttt{normalfont}\index{normalfont} (que tem versão comando dele também).

\section{Tamanho das fontes}

Tamanho das fontes\index{fonte!tamanho} são especificados também pelos comandos e o \LaTeX{} efetua ajuste automático em relação ao tamanho padrão.

O tamanho de menor para maior são definidos pelo ambientes

\texttt{tiny}: {\tiny tiny\index{tiny}}

\texttt{scriptsize}: {\scriptsize scriptsize\index{scriptsize}}

\texttt{footnotesize}: {\footnotesize footnotesize}

\texttt{normalsize}: {\normalsize normalsize\index{normalsize}}

\texttt{large}: {\large large\index{large}}

\texttt{Large}: {\Large Large\index{Large}}

\texttt{LARGE}: {\LARGE LARGE\index{LARGE}}

\texttt{huge}: {\huge huge\index{huge}}

\texttt{Huge}: {\Huge Huge\index{Huge}}

Lembrando que existem comandos correspondentes a cada um dos ambientes, similar a outros ambientes de fontes.
Veja Exemplo~\ref{ex10:size}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex03-01.tex, parte d},label=ex:03-01:d]
\begin{ltxlisting}[caption={ex10-size.tex},label=ex10:size]
\begin{Large}
Letra grande (2 escalas acima)
\end{Large}

\begin{em}
\small Parágrafo enfatizado com letra pequena (uma escala abaixo)
\end{em}

{\footnotesize Fonte 2 escalas abaixo}

Texto normal
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

A fonte com todos atributos padrão é especificado no \LaTeX{} pelo comando \verb+\textnormal+\index{textnormal@\verb+\textnormal+} ou pelo ambiente \texttt{normalfont}\index{normalfont}, o que permite restaurar a fonte padrão\index{fonte!restaurar padrão}.
%, basta usar o ambiente \texttt{normalfont}\index{normalfont} (que tem versão comando dele também).


\section{Ajuste de fontes no modo matemático}\label{sec:fonte:matematica}
No \LaTeX, as especificações das fontes no texto e na fórmula matemática usam os comandos diferentes.
A especificação da fonte no modo matemático corresponde ao 
\verb|\text??{}| são \verb|\math??{}|:
\verb|\mathrm{}|\index{mathrm@\verb+\mathrm+}, \verb|\mathsf{}|\index{mathsf@\verb+\mathsf+}, \verb|\mathtt{}|\index{mathtt@\verb+\mathtt+}, \verb|\mathbf{}|\index{mathbf@\verb+\mathbf+}, \verb|\mathit{}|\index{mathit@\verb+\mathit+}, \verb|\mathnormal{}|\index{mathnormal@\verb+\mathnormal+}, \verb|\mathcal{}|\index{mathcal@\verb+\mathcal+}.

O comando \verb|\mathcal{}|\index{mathcal@\verb+\mathcal+} que não tem correspondente no modo texto, usa a fonte caligráfica, mas somente em letras maiúsculas.

Os comandos acima não funcionam para símbolos e eles não podem ser combinados.
Por exemplo, \verb|\mathbf{\matrm{A}}| é mesmo que \verb|\mathrm{A}|. 

Assim, \verb+\mathbf+ não é apropriado para escrever fórmulas em negrito. Portanto, use \verb+\boldsymbol+\index{boldsymbol@\verb+\boldsymbol+} do pacote \texttt{amsmath} para converter parte da fórmula em negrito. Note que, nem todo símbolo torna negrito com \verb+\boldsymbol+. Neste caso, use o comando \verb+\pmb+\index{pmb\verb+\pmb+} que emula o negrito, escrevendo três vezes com pequeno deslocamento.
%Note que, quando usa em conjunto com o \texttt{amsmath}, pode precisar colocar chaves duplas para prevenir erros em \verb+\bm+ 
Veja Exemplo~\ref{ex10:fontes:mat}.

O pacote \texttt{amssymb} dispõe de mais dois fontes bastante usados na matemática que são \verb+\mathfrak+\index{mathfrak@\verb+\mathfrak+} e \verb+\mathbb+\index{mathbb@\verb+\mathbb+}.
Em geral, usa-se os pacotes \texttt{amsmath} e \texttt{amssymb} quando produz textos matemáticos.
Então acrescente \verb+\usepackage{amssymb,amsmath}+
no \texttt{preamble} do documento como no Exemplo~\ref{ex10:fontes:mat}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex03-02.tex, parte b},label=ex:03-02:b]
\begin{ltxlisting}[caption={ex10-fontes-mat.tex},label=ex10:fontes:mat]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}
\usepackage{amssymb,amsmath}
%\usepackage{bm}
\begin{document}
\[ \forall x \in \mathbb{R},\mathrm{sen}^2(x)+\cos^2(x)=1 \]
{\bfseries Para $\pmb{i=0}$}: Por definição, $0!=1$.
\end{document}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Note que nomes (ou abreviações) das funções devem estar em fonte romano reto. 
Assim, $\mathrm{sen}$ foi produzido, usando \texttt{mathrm}.

Para não precisar especificar \verb|\mathrm{}|, existem comandos para nomes\index{comandos!nome das funções} de maioria das funções matemáticas mais conhecidas.

Nome das funções pré-definidas:

$\arccos$\index{arccos@\verb+\arccos+}, $\arcsin$\index{arcsin@\verb+\arcsin+}, $\arctan$\index{arctan@\verb+\arctan+}, $\arg$\index{arg@\verb+\arg+}, $\bmod$\index{bmod@\verb+\bmod+}, $\cos$\index{cos@\verb+\cos+}, $\cosh$\index{cosh@\verb+\cosh+}, $\cot$\index{cot@\verb+\cot+}, $\coth$\index{coth@\verb+\coth+}, $\csc$\index{csc@\verb+\csc+}, $\deg$\index{deg@\verb+\deg+}, $\det$\index{det@\verb+\det+}, $\dim$\index{dim@\verb+\dim+}, $\exp$\index{exp@\verb+\exp+}, $\gcd$\index{gcd@\verb+\gcd+}, $\hom$\index{hom@\verb+\hom+}, $\inf$\index{inf@\verb+\inf+}, $\ker$\index{ker@\verb+\ker+}, $\lg$\index{lg@\verb+\lg+}, $\lim$\index{lim@\verb+\lim+}, $\liminf$\index{liminf@\verb+\liminf+}, $\limsup$\index{limsup@\verb+\limsup+}, $\ln$\index{ln@\verb+\ln+}, $\log$\index{log@\verb+\log+}, $\max$\index{max@\verb+\max+}, $\min$\index{min@\verb+\min+}, $\sec$\index{sec@\verb+\sec+}, $\sin$\index{sin@\verb+\sin+}, $\sinh$\index{sinh@\verb+\sinh+}, $\sup$\index{sup@\verb+\sup+}, $\tan$\index{tan@\verb+\tan+}, $\tanh$\index{tanh@\verb+\tanh+}, $\Pr$\index{Pr@\verb+\Pr+}.

Note que o \emph{seno} em inglês é \emph{sine}, abreviado para \texttt{sin} que não coincide com o termo usado no Brasil que é \texttt{sen}.
Neste caso, costuma definir o comando para não ficar digitando \texttt{mathrm} toda hora.
De forma análoga, quando o comando produz nome não usual, como no caso de tangente que é $\tan$ no \LaTeX, mas costuma usar $\mathrm{tg}$ no Brasil, podem ser redefinidos.
A definição e redefinição de comandos estão na Seção~\ref{sec:comandos} do Capitulo~\ref{chap:novo:comando}. 

Mesmo com o texto em negrito, a equação não ficará em negrito. Para que todas as equações de um trecho fiquem em negrito, usa-se o ambiente \texttt{boldmath}\index{boldmath}. Se quer que somente alguns símbolos (ou um trecho) fique em negrito, usa-se o comando \verb+\boldsymbol+\index{boldsymbol@\verb+\boldsymbol+} do pacote \texttt{amsbsy}\index{amsbsy} que é carregaado pelo \texttt{amsmath}. Note que \verb+\mathbf+ produz alfabeto em negrito na fórmula, mas não os símbolos. Uma observação importante é que o comando \verb+\boldsymbol+ e o ambiente \verb+\boldmath+ não funcionam para \texttt{unicode-math} do Xe\LaTeX/Lua\LaTeX, sendo necessário substituir por \verb+\symbf+\index{symbf@\verb+\symbf+}. Para quem usa ou pretende usar \XeLaTeX{} e/ou Lua\LaTeX, uma solução é colora o código

\begin{singlespacing}
\begin{lstlisting}
\makeatletter
\AtBeginDocument{%
  \@ifpackageloaded{unicode-math}{%
      \let\boldsymbol\symbf
  }{\let\symbf\boldsymbol}%
}{}
\makeatother
\end{lstlisting}
\end{singlespacing}

no preâmbulo para que \verb+\boldsymbol+ e \verb+\symbf+ fiquem ativos com ou sem \texttt{unicode-math}

Veja o Exemplo~\ref{ex10:negrito}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex06-06.tex},label=ex:06-06]
\begin{ltxlisting}[caption={ex10-negrito.tex},label=ex10:negrito]
\documentclass{article}
\usepackage{amsbsy} % para símbolo em negrito
\begin{document}
Normal
\[ a^2=b^2+c^2 \]
Alguns símbolos em negrito
\[ \boldsymbol{a}^2=b^2+c^2 \]
Um trecho em negrito
\[\boldsymbol{a^2=b^2+c^2}\]
\end{document}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}


\clearpage\thispagestyle{empty}\cleardoublepage
\chapter{Referências Bibliográficas e Índice Remissivo}
Veremos como produzir índice remissivo e referências bibliográficas no \LaTeX.

\section{Referências bibliográficas}
Uma referências bibliográficas\index{referência bibliográfica} é uma lista de referências externas usadas no trabalho, comumente apresentado no final do documento.
Esta lista é definido pelo ambiente \texttt{thebibliography}\index{thebibliography} cuja argumento é o elemento com maior largura, para ajustar alinhamento de seus itens. 
Cada item da referência é especificado pelo comando \verb+\bibitem+\index{bibitem@\verb+\bibitem+} cujo argumento obrigatório é uma chave e argumento opcional é o rótulo a ser impresso no item (se for omitido, será usado números). 
Depois segue os dados da referência bibliográfica como devem ser impressas.
Em geral, esta lista será colocado no final do documento (se existir o índice remissivo, será antes do índice remissivo). 
No Exemplo~\ref{ex11:bib}, o argumento \texttt{OPHS25} do \texttt{thebibliography} será usado para medir o espaço deixado à esquerda dos itens.
Além disso, cada item tem o rótulo (argumento opcional) a ser impresso como nome. 
Depois vem a chave que será usado no documento para citar o item especifico.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex07-01.tex},label=ex:07-01,preset={\let\addcontentsline\emptyaddcontentsline}]
\begin{lstlisting}[caption={ex11-bib.tex},label=ex11:bib]
\begin{thebibliography}{OPHS25}
\bibitem[GMS04]{Goossens:2004}
 Michel Goossens and Frank Mittelbach
 \emph{The {\LaTeX} companion (second edition)}, Adilson--Wesley, 2004.
\bibitem[Tea00]{IndianTUG:2000}
 Tutorial Team, \emph{Online tutorials on {\LaTeX}},
 Indian {\TeX} User Group, 2000. 
\bibitem[LL94]{Lamport:1994} 
 Leslie Lamport,
 \emph{\LaTeX: A Document Preparation System (2nd Edition)},  Addison-Wesley Professional, 1994. 
 \bibitem[OPHS25]{oetiker:2025}
 Tobias Oetiker et. al.,
 \emph{The Not So Short Introduction to \emph{\LaTeXe}}, URL: https://ctan.org/pkg/lshort-english,
2018.
\end{thebibliography}
\end{lstlisting}
%\end{LTXexample}
%\end{singlespacing}

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex07-01.tex},label=ex:07-01,preset={\let\addcontentsline\emptyaddcontentsline}]
\begin{ltxlistingout}
\begin{thebibliography}{OPHS15}
\bibitem[GMS04]{Goossens:2004:temp}
 Michel Goossens and Frank Mittelbach
 \emph{The {\LaTeX} companion (second edition)}, Adilson--Wesley, 2004.
\bibitem[Tea00]{IndianTUG:2000:temp}
 Tutorial Team, \emph{Online tutorials on {\LaTeX}},
 Indian {\TeX} User Group, 2000. 
\bibitem[LL94]{Lamport:1994:temp} 
 Leslie Lamport,
 \emph{\LaTeX: A Document Preparation System (2nd Edition)},  Addison-Wesley Professional, 1994. 
 \bibitem[OPHS25]{oetiker:2025:temp}
 Tobias Oetiker et. al.,
 \emph{The Not So Short Introduction to \emph{\LaTeXe}}, URL: https://ctan.org/pkg/lshort-english,
2018.
\end{thebibliography}
\end{ltxlistingout}
%\end{LTXexample}
%\end{singlespacing}

No texto, uma citação da referência bibliográfica é inserida pelo comando \verb+cite{chave}+\index{cite@\verb+\cite+} onde \texttt{chave} é a chave colocado no \verb+\bibitem+.

Se for citar mais de um item, coloque as chaves separadas pela virgula. Também poderá colocar informações adicionais como parâmetro opcional do \verb+\cite+.
Veja Exemplo~\ref{ex11:cite}.
 
\begin{singlespacing}
%\begin{lstlisting}[pos=b,caption={ex07-01.tex, parte b},label=ex:07-01:b]
\begin{lstlisting}[caption={ex11-cite.tex},label=ex11:cite]
Exemplo de referência bibliográfica (veja~\cite{Lamport:1994} e \cite{oetiker:2025}).

Para exemplos usando o BibTeX, poderá consultar
\cite{IndianTUG:2000, Goossens:2004}.

Para recursos avançados de BibTeX, veja o 
\cite[Cap.~13]{Goossens:2004}.
\end{lstlisting}
\end{singlespacing}

%\noindent
%\fbox{\begin{minipage}{\linewidth}
%\begin{singlespacing}
\begin{ltxlistingout}
%Exemplo de referência bibliográfica (veja~\cite{Lamport:1994} e \cite{oetiker:2025}).
Exemplo de referência bibliográfica (veja~[LL94] e [OPHS25]).

%Para exemplos usando o BibTeX, poderá consultar \cite{IndianTUG:00, Goossens:2004}.
Para exemplos usando o BibTeX, poderá consultar [Tea00, GMS04].

%Para recursos avançados de BibTeX, veja o \cite[Cap.~13]{Goossens:2004}.
Para recursos avançados de BibTeX, veja o 
[GMS04, Cap.~13].
\end{ltxlistingout}
%\end{singlespacing}
%\end{minipage}}

\section{Usando o \BibTeX}

Checar qual das referências foram usadas e formatar uniformemente de acordo com as exigências do editor é uma tarefa difícil.
Para automatizar este serviço, podemos usar o \BibTeX{}\index{BibTeX}  que é uma ferramenta especialmente desenvolvida para manipular referências bibliográficas.
Os editores costumam deixar um arquivo de estilo próprio para \BibTeX{} e usando ele, o \BibTeX{} formatará automaticamente as referências bibliográficas de acordo.
Outra coisa importante que o \BibTeX{} faz é checar quais dos itens foram usados e imprimir somente as referências citadas no texto.

Para usar o \BibTeX, prepara o arquivo de referência bibliográfica\index{arquivo!referência bibliográfica} separado, com extensão \texttt{.bib}, que contém informações das referências.
Em geral, costumamos usar os aplicativos gráficos tal como aplicativo gratuito e multi plataforma \texttt{jabref}\index{jabref} (\url{http://www.jabref.org/}) para editar o arquivo de \BibTeX, mas também pode ser editado manualmente.

Aqui, vamos ver como preparar manualmente o arquivo \texttt{.bib}.
Veja o Exemplo~\ref{ex11:bibtex:bib} para ver como deve ficar o arquivo \texttt{.bib}.
\begin{singlespacing}
%\begin{lstlisting}[language=BibTeX,pos=b,caption={ex07-02.bib},label=ex:07-02:bib]
\begin{lstlisting}[language=BibTeX,caption={ex11-bibtex.bib},label=ex11:bibtex:bib]
@comment{No estilo antigo de BibTeX que não tem suporte ao campo 'url' (endereço de internet), coloque o endereço da internet no campo 'note'}

@string{AW="Adilson--Wesley"}
@string{TUG="{\TeX} User Group"}

@book{Lamport:1994,
author={Leslie Lamport},
title={{\LaTeX}, A Document Preparation System (2nd Edition)},
publisher=AW,
address ={Reading, MA},
year=1994
}

@book{Goossens:2004,
author={Michel Goossens and Frank Mittelbach},
title={The {\LaTeX} companion (second edition)},
publisher=AW,
address ={Reading, MA},
year=2004
}

@book{oetiker:2025,
author={Tobians Oetiker and Hubert Partl and Irene Hyna and Elisabeth Schlegl},
title={The Not So Short Introduction to {\LaTeXe{}}},
publisher=CTAN,
url={https://ctan.org/pkg/lshort-english},
year=2025
}

@book{IndianTUG:2000,
author={Tutorial{ }Team},
title={Online Tutorials on {\LaTeX}},
publisher="Indian " # TUG,
url = {http://www.tug.org/tutorials/tugindia/},
year=2000
}

@article{Mertz:2009,
author={Andrew Mertz and William Slough},
title={A TikZ tutorial: Generating graphics in the
spirit of {\TeX}},
journal=TUGboat,
url={http://www.tug.org/TUGboat/tb30-2/tb95mertz.pdf}
volume=30,
number=2,
year=2009
}
\end{lstlisting}
\end{singlespacing}

O comando de \BibTeX{} inicia com ``@''\index{BibTeX!arroba@\arrobasymbforindex} seguido de nome e seus  dados entre chaves.
Os dados são listas separados pela virgula na forma forma ``chave=dado'', onde dado pode ser delimitado por aspas ou chaves.

\texttt{@commaent}\index{BibTeX!arrobacomment@{\arrobasymbforindex comment}}
é para acrescentar comentários. A parte do \verb+@comment{}+ será ignorado.
 
\texttt{@string}\index{BibTeX!arrobastring@{\arrobasymbforindex string}} permite definir abreviaturas.
No começo do arquivo, foi definido as abreviaturas \texttt{AW} para ``Adilson--Wesley'' e \texttt{TUG} para ``\{\TeX\} User Group'' para facilitar a digitação de dados.
Note que, comandos de \TeX{} devem ficar delimitados pelas chaves extras no arquivo de \BibTeX{} para evitar alterações. Da mesma forma, abreviaturas que devem manter maiúsculas também devem ficar entre chaves.

Depois encontra o \texttt{@book}\index{BibTeX!arrobabook@{\arrobasymbforindex book}} que especifica que é dado de um livro.
Entre chaves, estão os dados do livro tais como título, autor, etc, onde cada campo é separado da outra pela virgula e dados do campo são delimitados pelos chaves ou aspas.
Note que o primeiro elemento de \texttt{@book} é uma chave a ser usado dentro do documento pelo comando \verb+\cite+ e é único que não é da forma \texttt{campo = dado do campo}.
Tanto aspas como chaves podem ser usados para delimitar dados do campo, mas se dado for uma única palavra como o ano, não precisa do delimitador.

Relembrando que os comandos de \TeX{} devem ficar delimitados por chaves, o que indica ao \BibTeX{} para não alterar esta parte (como converter entre maiúsculo e minúsculo).
Note o uso da abreviatura \texttt{AW} em alguns pontos do documento (sem colocar delimitadores).
Esta abreviatura foi definido no começo do arquivo e será substituído automaticamente pelo seu valor ``Adilson--Wesley'' pelo \BibTeX.

No \texttt{publisher="Indian " \# TUG}, ``\#''\index{BibTeX!\#} faz a concatenação de dois strings \verb*+Indian + e o string\texttt{TUG} que é \verb+{\TeX} User Group+.

Quando tem vários autores, separe os nomes com ``and'' que o \BibTeX{} vai entender.
Quando nome ou sobrenome é uma palavra composta, coloque \verb+{ }+ (espaço entre chaves) em vez de espaço, como em \verb+author="Paulo da Silva Gonçalves{ }Junior"+. Outra forma é usar o formato ``sobrenome, nome'' como em \verb+author="Gonçalves Junior, Paulo da Silva"+.
No exemplo, ``Tutorial Team'' no campo do autor foi escrito desta forma.
Parte do campo que não pode ser retocado (alterar entre maiúsculo e minúsculo, abreviar, etc) como no caso de comando de \LaTeX, coloque entre chaves extras. No caso do sobrenome dos autores, é recomendável não colocar entre chaves, pois a conversão automática entre maiúsculo e minúsculo será desativada.

% Quando é um nome estrangeiro na qual a ordenação não ocorre de forma devida, poderá usar o campo `` key'' para indicar a palavra usada para ordenação.

Tendo o arquivo \texttt{.bib} pronto, efetuamos as citações como no caso anterior.

Agora, no final do arquivo, onde colocamos o ambiente \texttt{thebibliography}, substituímos por

\begin{singlespacing}
\begin{lstlisting}
\bibliographystyle{[estilo bib]}
\bibliography{ex11-bibtex}
\end{lstlisting}
\end{singlespacing}

onde \texttt{[estilo bib]} é o estilo usado para formatar as referências bibliográficas tais como \texttt{plain}, \texttt{alpha}, etc. e \texttt{ex11-bibtex} é o nome do arquivo de \BibTeX{} (extensão \verb+bib+) sem extensão. Quando tiver mais de um arquivo, separe os nomes pela vírgula.

Agora execute o \LaTeX, \BibTeX{} e \LaTeX{} novamente. 
Em geral, os editores especializados para \LaTeX{} tem os botões ou menus para rodar o \BibTeX, além dos botões de compilar (executar o \LaTeX).

Ao executar \BibTeX, será gerado a saída das referências bibliográficas somente com itens citados. 
Por exemplo, para as citações do Exemplo~\ref{ex11:cite}, o artigo com chave \texttt{Mertz:2009} será ignorado por não estar citados.

Para mudar a formatação das referências, é só alterar o estilo em \verb+\bibliographystyle+\index{bibliographystyle@\verb+\bibliographystyle+} e executar o \BibTeX{} e \LaTeX{} novamente.
Os estilos básicos são: \texttt{plain}\index{BibTeX!plain} (rótulo numérico), \texttt{unsrt}\index{BibTeX!unsrt} (similar a \texttt{plain}, mas sem ordenar -- na ordem que foi citado), \texttt{alpha}\index{BibTeX!alpha} (rótulo pelo sobrenome e ano), \texttt{abbrv}\index{BibTeX!abbrv} (similar a \texttt{plain}, mas mais compacto), \texttt{amsplain}\index{BibTeX!amsplain} (estilo \texttt{plain} do AMS), \texttt{amsalpha}\index{BibTeX!amsalpha} (estilo \texttt{alpha} do AMS).

Além desses, existem vários outros estilos, dependendo da instalação de cada sistema \TeX{} em uso.

Se o editor dispõe de arquivos de estilo para \BibTeX{} (com extensão \texttt{bst}\index{arquivo!bst}), deixe este arquivo junto com arquivo \texttt{tex} e no \verb+\bibliographystyle+, passe o nome deste arquivo \texttt{.bst} sem a extensão. 
Se arquivo é \texttt{meuart.bst}, o estilo é \texttt{meuart}.

%Uma observação importante é que o \BibTeX{} não suporta  adequadamente a acentuação direta ainda. 
% Assim, deverá acentuar no modo \TeX. 
%Lembre-se que a acentuação no modo \TeX{} precisa estar entre chaves para \BibTeX{} não tentar processar esta parte.   

O \BibTeX{} atual suporta a acentuação direta sem problemas (o que não era suportada até algum tempo atrás), mas não há suporte aos caracteres além do equivalente ao \texttt{latin1}. Para solucionar este problema, costuma usar o Bib\LaTeX.

Quando o editor exige um padrão diferente do disponível e não fornece o arquivo de estilo para \BibTeX, podemos contornar o problema da seguinte forma.
Primeiro termine o artigo ou livro com citações necessárias e usando um estilo mais próximo do exigido.
Depois rode o \LaTeX{} e \BibTeX. O \BibTeX{} gerará um arquivo com extensão \texttt{bbl}\index{arquivo!bbl}, com o mesmo nome do arquivo \texttt{tex}. Este arquivo \texttt{.bbl} contém o ambiente \texttt{thebibliography} com itens de bibliografia já formatada. Copie ele para documento original onde está o 
\begin{verbatim}
\bibliographystyle{[estilo bib]}
\bibliography{[arquivo bib]}
\end{verbatim}
e efetue alterações manualmente.

Não esqueça de comentar o
\begin{verbatim}
\bibliographystyle{[estilo bib]}
\bibliography{[arquivo bib]}
\end{verbatim}

Para especificar dados no arquivo de \BibTeX, além da categoria \texttt{@book} (livro), existem muitas especificações de documentos tais como \texttt{@article}\index{BibTeX!arrobaarticle@{\arrobasymbforindex article}} (artigo), \texttt{@manual}\index{BibTeX!arrobamanual@{\arrobasymbforindex manual}} (documentação técnica), \texttt{@phdthesis}\index{BibTeX!arrobaphdthesis@{\arrobasymbforindex phdthesis}} (tese de doutorado), etc, uma para cada categoria. 
Se não enquadrar em nenhuma das categorias disponíveis, use o \texttt{@misc}\index{BibTeX!arrobamisc@{\arrobasymbforindex misc}} (diversos).

A lista destas categorias e seus campos estão resumidos na tabela a seguir.

\noindent
\begin{longtable}{|p{0.2\linewidth}|l|p{0.2\linewidth}|p{0.35\linewidth}|}
%\\ 
\hline
\textbf{tipo} & \textbf{bibtex} & \textbf{necessário} & \textbf{opcional}\\ \hline
artigos & @article & auther, title, journal year & volume, number, pages, month, note\\  \hline
tese (doutorado) & @phdthesis & author, title, school, year & type, address, month, note\\  \hline
dissertação (mestrado) & @mastersthesis & author, title, school, year & type, address, month, note\\  \hline
anais de conferência & @proceedings & title, year & editor, volume, number, series, address, month, organization, publisher, note\\  \hline
artigo no anais de conferêcnia & @inproceedings & author, title, booktitle, year & editor, volume, number, series, pages, address, month, organization, publisher, note\\  \hline
mesmo que inproceedings & @conference & author, title, booktitle, year & editor, volume, number, series, pages, address, month, organization, publisher, note\\  \hline
livro & @book & author ou editor, title, publisher, year & volume, number, series, address, edition, month, note\\  \hline
quase livro (notas e simlares) & @booklet & title & author, howpublished, address, month, year, note\\  \hline
parte de um livro & @inbook & author ou editor, title, chapter ou pages, publisher, year & volume, number, series, type, address, edition, month, year\\  \hline
parte de uma coleção & @incollection & author, title, booktitle, publisher, year & editor, volume, number, series, type, chapter, pages, address, edition, month, note\\  \hline
manual & @manual & title & author, organization, address, edition, month, year, note\\  \hline
relatório técnico & @techreport & author, title, institution, year & type, number, address, month, note\\  \hline
não pblicado & @unpublished & author, title, note & month, year\\  \hline
outros & @misc & nenhuma & author, title, howpublished, month, year, note\\ \hline
\end{longtable}

O texto sem estar com especificação que inicia com ``@'' será ignorado pelo \BibTeX{} e funciona como comentário\index{BibTeX!comentário}.
Mas existe o especificador \texttt{@comment}\index{BibTeX!arrobacomment@{\arrobasymbforindex comment}} especial para inserir comentários\index{BibTeX!comentário} para fins de organização.

Como existem muitas categorias e cada categoria tem campos diferentes a ser preenchidos, editar o arquivo de \BibTeX{} manualmente não é muito simples.
Assim, costumamos usar os aplicativos próprios para isso. 
Como foi dito antes, um desses aplicativos é o \texttt{jabref}\index{jabref} (\url{http://www.jabref.org/}) que funciona em quase toda plataforma e é gratuito. 

\section{Índice remissivo}

Para criar o índice remissivo, usa-se o pacote \texttt{makeidx}\index{makeidx} e o comando \verb+\makeindex+\index{makeindex@\verb+\makeindex+} no \texttt{preamble} do documento para ativar o seu uso.

Para acrescentar itens no índice remissivo\index{indice@{indice} remissivo}, usa-se o comando \verb+\index{}+\index{index@\verb+\index+}, mas lembre-se de não colocar espaços entre palavra referida e o comando.
Para colocar índice remissivo com sub-entrada\index{indice@{índice} remissivo!sub-entrada}, usa-se o ``!'' para separar entrada e sub-entrada, mas evite espaços nos lados de ``!'' (qualquer espaço extra pode causar confusões na organização do índice remissivo).

As vezes, é necessário usar uma ``chave'' para classificar os itens\index{indice@{índice} remissivo!com chave}.

Isto ocorre quando usamos símbolos matemáticos, aspas, ou outros caracteres especiais, formatação de caracteres, etc.
Sem a ``chave'' de classificação, \texttt{makeindex} pode classificar usando o que está escrito, o que nem sempre corresponde a posição correta. 
Para resolver este problema, usa-se o \verb+\index{chave@item}+.
Por exemplo
\begin{singlespacing}
\begin{lstlisting}
Ps ítens em negrito\index{item em negrito@\textbf{ítem em negrito}},
itens com aspas\index{item com aspas@``ítem com aspas''} e símbolos \index{simbolos@{símbolos}}, etc podem ser colocados com ordenação correta.
\end{lstlisting}
\end{singlespacing}
inserem entradas em negrito e item com aspas classificado corretamente.
Lembre também que as letras acentuadas costumam vir na posição diferente das não acentuadas.
Neste caso também poderá usar a chave para colocar na posição correta.
Veja o Exemplo~\ref{ex11:index}.

\begin{singlespacing}
%\begin{lstlisting}[pos=b,caption={ex05-02.tex},label=ex:05-02]
\begin{lstlisting}[caption={ex11-index.tex},label=ex11:index]
Podemos usar índice remissivo\index{índice remissivo} com sub-entrada\index{índice remissivo!sub-entrada}.
Também podemos usar ``chave'' para classificar os itens, como itens em negrito\index{item em negrito@\textbf{item em negrito}}, itens com aspas\index{item com aspas@``item com aspas''} e símbolos como $\alpha$\index{alfa@$\alpha$}.
Também podemos usar item e enumeração em negrito\index{item e enumeração em negrito@\textbf{item e enumeração em negrito}|textbf}
\printindex % colocar indice remissivo (glossário) aqui.
\end{lstlisting}
\end{singlespacing}

No corpo do documento, terá nenhuma diferença visual em ter o \verb+\index{}+ e logo, a sua saída foi omitida.
  
Podemos especificar sub-entrada com chaves como em

\begin{singlespacing}
\begin{lstlisting}
itens em negrito com sub-entrada\index{item@\textbf{item}!\textbf{em negrito}!\textbf{com sub-entrada}}. 
\end{lstlisting}
\end{singlespacing}

Observe a ordem que usa o ``@'' e ``!'' na especificação de itens com chave e subentrada.

Para indicar a ocorrência num trecho\index{indice remissivo!trecho}, usa-se o \verb+\index{item|(+ para iniciar e \verb+\index{item|)+ para finalizar.

Quando um item referê-se ao outro, usa-se 
o \verb+\index{ítem|see{referência}}+ com em
\begin{lstlisting}
grossário\index{grossário|see{índice remissivo}}.
\end{lstlisting}

Para mudar a fonte usada na enumeração da página, coloque a especificação após ``|'' ou ``|('' dependendo de ser página ou trecho como em
\begin{lstlisting}
Índice com paginação em negrito\index{item e enumeração em negrito@\textbf{ítem e enumeração em negrito}|textbf}.
\end{lstlisting}

Para colocar o índice remissivo gerado, 
usa-se o comando \verb+\printindex+\index{printindex@\verb+\printindex+}.

Finalmente, para produzir o índice remissivo, deverá executar \LaTeX, \verb+makeindex+\index{makeindex} e \LaTeX{} novamente. 
Os editores especializados para \LaTeX{} costuma vir com botão ou menu para chamar o \texttt{makeindex}.

Note que, por padrão, o processador \texttt{makeindex} aceita somente até 3 níveis de sub-entrada.
Caso queira mais níveis, poderá optar por usar \texttt{xindy}\index{xindy} em vez de \texttt{makeindex} com configuração adequada.
O \texttt{xindy} suporta indexação internacional, além de diversas configurações, entre eles, aumentar o nível de sub-entradas via arquivo de configuração.
Note que o desenvolvimento do \texttt{xindy} está parado. Assim, para índice remissivo internacional, é recomendado usar o \texttt{xindex}\index{xindex} ou \texttt{upmendex}\index{upmendex} em vez de \texttt{xindy}.

No entanto, dependendo do editor, pode não vir com botão para executar o \texttt{xindex} ou similar, o que requer configuração manual do editor.

O índice remissivo do Exemplo~\ref{ex11:index} ficaria como segue

%\begin{singlespacing}
%\fbox{\begin{minipage}{\linewidth}
\begin{ltxlistingout}
\chapter*{Índice Remissivo}
\noindent índice remissivo, 1

\hspace{2em} sub-entrada, 1
   
  \medskip

\noindent $\alpha$, 1

  \medskip

\noindent ``item com aspas'', 1

\noindent \textbf{item em negrito}, 1

\noindent \textbf{item e enumeração em negrito}, \textbf{1}
\end{ltxlistingout}
%\end{minipage}}
%\end{singlespacing}

Note que @, !, | e \verb+"+ tem significados na entrada de índice remissivo. 
Para colocar estes caracteres na entrada de índice remissivo, coloque \verb+"+ antes dele.
Por exemplo, \verb+\index{"@author}+ insere ``@author'' na entrada de índice remissivo.

\clearpage\thispagestyle{empty}\cleardoublepage
\chapter{Medidas e Contadores}\label{chap:medidas:contadores}
Neste capítulo, veremos medidas e contadores.

\section{Unidade de medidas e espaçamentos}\label{sec:medidas:unidade}

As vezes o espaçamento ajustado automaticamente não está bom e queremos fazer pequenos ajustes.

Para aumentar espaçamento entre parágrafos em um determinado ponto, como entre texto e equações altas, poderá usar o \verb+\smallskip+\index{amallskip@\verb+\smallskip+}, \verb+\medskip+\index{medskip@\verb+\medskip+} e \verb+\bigskip+\index{bigskip@\verb+\bigskip+} para ter espaçamentos maior que o padrão.
Note que, se quer ter espaçamento maior entre texto e equações em todo o documento, deverá efetuar ajustes de parâmetros \verb+\abovedisplayskip+\index{abovedisplayskip@\verb+\abovedisplayskip+} e \verb+\belowdisplayskip+\index{belowdisplayskip@\verb+\belowdisplayskip+}.

Para espaço horizontal e vertical, usa-se o \verb+\hspace{medida}+\index{hspace@\verb+\hspace+} e \verb+\vspace{medida}+\index{vspace@\verb+\vspace+} respectivamente.
Caso estiver inserindo o espaço vertical no começo das páginas, ou espaço horizontal no começo das linhas, use a versão com ``*'' \verb+\hspace*{medida}+\index{hspace*@\verb+\hspace*+} e \verb+\vspace*{medida}+\index{vspace*@\verb+\vspace*+}.

Medidas comumente usados são:

\begin{description}
\item[pt] (point - unidade gráfica) = $\frac{1}{72.27}$in (polegada) ou $0.351$mm
\item[mm] (milimetro) = $2.845$pt
\item[pc] (pica) = $12$pt ou $4.218$mm
\item[cm] (centímetro) = $2.371$pc
\item[in] (polegada) = $25.4$mm ou $72.27$pt ou $6.022$pc
\item[ex] altura da letra ``x'' minusculo da fonte corrente 
\item[em] largura da letra ``M'' maiúsculo da fonte corrente
\item[mu] (math unit) = $\frac{1}{18}$em
\item[\texttt{\textbackslash stretch\{peso\}}] espaço esticável com peso especificado.
\end{description}

Existem ainda várias ouras medidas menos usadas que foram omitidos aqui.

O \verb+\stretch{peso}+\index{stretch@\verb+\stretch+} produz medida que preenche o espaço.
Existem alguns comandos deste tipo que são úteis: \verb+\hfill+\index{hfill@\verb+\hfill+} (equivale a \verb+\hspace{stretch{1}}+),
\verb+\vfill+\index{vfill@\verb+\vfill+} (equivale a \verb+\vspace{stretch{1}}+),
\verb+\hrulefill+\index{hrulefill@\verb+\hrulefill+} (similar a \verb+\hfill+, mas preenche com linha),
\verb+\dotfill+\index{dotfill@\verb+\dotfill+} (similar a \verb+\hfill+, mas preenche com pontos).

Ainda existem comandos para inserir pequenos espaços, que são 
\verb|\quad|\index{quad@\verb+\quad+} (insere espaço de $1$em = $18$mu),
\verb|\qquad|\index{qquad@\verb+\qquad+} (insere espaço de $2$\texttt{quad}=$2$em),
\verb|\enspace|\index{enspace@\verb+\enspace+} ou \verb|\enskip|\index{enskip@\verb+\enskip+} (insere espaço de $\frac{1}{2}$\texttt{quad}).
Estes comandos costumam ser usados para inserir pequenos espaçamentos para melhora a aparência das fórmulas matemáticas.
No modo matemático, ainda existem comandos de inserção de espaços menores que são
\begin{description}
\item[\textbackslash,]\index{,@\verb+\,+} ($\frac{3}{18}$\texttt{quad} = $3$mu),
\item[\textbackslash:]\index{:@\verb+\:+} ($\frac{4}{18}$\texttt{quad} = $4$mu),
\item[\textbackslash;]\index{;@\verb+\;+} ($\frac{5}{18}$\texttt{quad} = $5$mu), 
\item[\textbackslash!]\index{"!@{\textbackslash\exclsymbforindex}} ($\frac{-3}{18}$\texttt{quad} = $-3$mu).
\end{description}

Veja Exemplo~\ref{ex12:espacos}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex03-03.tex},label=ex:03-03]
\begin{ltxlisting}[caption={ex12-espacos.tex},label=ex12:espacos]
palavra a esquerda \hfill palavra a direita.

palavra a esquerda \hrulefill palavra a direita.

palavra a esquerda \dotfill palavra a direita.

primeiro\hfill segundo\hrulefill\hrulefill terceiro\dotfill\dotfill\dotfill quarto

\bigskip

$x \in \mathrm{I\!R}, \enspace x>0$.
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Nota: O \verb+\mathbf{R}+ construído acima é apenas como ilustração. 
Deverá usar a fonte apropriada tal como \verb+\mathbb+ do AMS.

Outra coisa que as vezes usamos para alinhamento dos elementos de fórmulas é o comando \verb+\phantom+\index{phantom@\verb+\phantom+} que, em vez de produzir elementos da fórmula, reserva o espaço usado por ele.
Por exemplo, $\Gamma_{ij}^{\phantom{ij}k}$ e $\Gamma_{ij}^k$. foram produzidos respectivamente por \verb+$\Gamma_{ij}^{\phantom{ij}k}$+ e \verb+$\Gamma_{ij}^k$+.
 

\section[Medidas]{Medidas prédefinidas ou definidos pelo usuário}\label{sec:medidas}
Existem algumas medidas pré-definidas como comandos, relacionadas à configuração das páginas e similares que costuma ser usados com certa frequência. 
Aqui, vamos citar algumas delas.
%Para referenciar, coloque ``\textbackslash'' antes dele, para ficar como comandos
\begin{description}
\item[\textbackslash textwidth]\index{textwidth@\verb+\textwidht+} Largura de texto atual.
\item[\textbackslash linewidth]\index{linewidth@\verb+\linewidth+} Largura da linha atual. Por exemplo, dentro da lista, será menor que o \verb+\textwidth+. 
\item[\textbackslash columnwidth]\index{columnwidth@\verb+\columnwidth+} Largura da coluna. Se for em uma coluna, coincide com \verb+\textwidth+.
\item[\textbackslash columnsep]\index{columnsep@\verb+\columnsep+} Distância entre colunas no modo multi colunas.
\item[\textbackslash columnseprule]\index{columnseprle@\verb+\columnseprule+} Largura da linha que separa colunas no modo multi colunas (\verb+0pt+ para desabilitar).
\item[\textbackslash textheight]\index{textheight@\verb+\textheight+} Altura do texto atual.
\item[\textbackslash parindent]\index{parindent@\verb+\parindent+} Indentação (quanto deixa no lado esquerdo) do parágrafo.
\item[\textbackslash parskip]\index{parskip@\verb+\parskip+} Quanto deixa de espaço antes do parágrafo.
\item[\textbackslash paperwidth]\index{paperwidth@\verb+\paperwidth+} Largura do papel.
\item[\textbackslash paperheight]\index{paperheight@\verb+\paperheight+} Altura do papel.
\item[\textbackslash unitlength]\index{unitlength@\verb+\unitlength+} Medida de unidade usado no ambiente \texttt{picture}.
\end{description}

Dentro do \texttt{minipage}, \verb+\textwidth+, \verb+\linewidth+ e \verb+\columnwidth+ assumem a largura do \texttt{minipage}, mas no \verb+\parbox+, somente \verb+\linewidth+ assumirá a largura da caixa.

Para imprimir estas medidas, coloque o comando \verb+\the+\index{the@\verb+\the+} antes do comando de medidas.
Por exemplo, para imprimir o valor de \verb+\textwidth+, use \verb+\the\textwidth+.

Para definir uma nova medida, usa-se o comando \verb+\newlength{\minhamedida}+\index{newlength@\verb+\newlength+}. 
Este comando criará a medida \verb+\minhamedida+. 
Para definir ou altera o valor da medida, use \verb+\setlength{\minhamedida}{medida}+\index{setlength@\verb+\setlength+} onde \texttt{medida} é a medida da \verb+\minhamedida+.

O valor da medida pode ser configurado a partir de \texttt{box} (caixa) existente (como texto, fórmulas, etc).
Uma caixa (de elemento) tem altura (\texttt{height}), largura (\texttt{width}) e a distância da parte inferior até a linha base (\texttt{depth}). 

\verb+\settoheight{\minhamedida}{<conteúdo>}+\index{settoheight@\verb+\settoheigth+}, \verb+\settowidth{\minhamedida}{<conteúdo>}+\index{settowidth@\verb+\settowidth+} e \verb+\settodepth{\minhamedida}{<conteúdo>}+\index{settodepth@\verb+\settodepth+} configuram o valor da \verb+\minhamedida+ para essas medidas correspondentes ao seu parâmetro.

Note que, pela facilidade, as vezes usamos o modo \TeX{} para configurar as medidas como em
\verb+\minhamedida=3.0cm+
ou até mesmo, omitir ``\verb+=+'' e escrever como 
\verb+\minhamedida 3.0cm+

 Para facilitar os cálculos das medidas, normalmente usa-se o pacote \texttt{calc}.
 
 O pacote \texttt{calc}, além de permitir calcular medidas com facilidade, ainda acrescentam alguns novos comandos tais como
\verb+\settototalheight{\algumamedida}{<conteúdo>}+\index{settototalheight@\verb+\settototalheight+} que configura \verb+\algumamedida+ para \texttt{width+depth} e
\verb+\widthof{<conteúdo>}+\index{widthof@\verb+\widthof+}, \verb+\heightof{<conteúdo>}+\index{heightof@\verb+\heightof+}, \verb+\depthof{<conteúdo>}+\index{depthof@\verb+\depthof+} e \verb+\totalheightof{<conteúdo>}+\index{totalheightof@\verb+\totalheightof+} 
que retornam \texttt{width}, \texttt{height}, \texttt{depth}, e \texttt{width+depth}, respectivamente.

Note que o calculo efetuado pelo pacote \texttt{calc} pode não funcionar em alguns parâmetros como medida de largura do \verb+\parbox+ e de \texttt{minipage}. Neste caso, coloque a expressão dentro do \verb+\dimexpr()+\index{dimexpr@\verb+\dimexpr+}. Note que expressão deve ficar dentro de parenteses e não chaves.

Por exemplo,
\begin{singlespacing}
\begin{lstlisting}
\parbox{\dimexpr(\linewidth-1cm)}{texto}
\end{lstlisting}
\end{singlespacing}
efetuará calculo da largura da caixa como sendo \texttt{1cm} menor do que a largura da linha.

\section{Contadores}

\LaTeX{} usa diversos contadores para efetuar enumeração automática, tais como páginas, equações enumeradas, capítulos e seções, figuras, etc.

Estes contadores podem ser controladas, tanto na contagem como na sua aparência.

Em geral, o costume é nomear contador com mesmo nome do ambiente e o que precede \verb+\the+ será usado para imprimir o seu valor.
Por exemplo, a impressão de enumeração da página usa o \verb+\thepage+\index{thepage@\verb+\thepage+} e enumeração do capítulo usa \verb+\thechapter+\index{thechapter@\verb+\thechapter+} e assim por diante.

Os principais contadores pré definidos no \LaTeX{} são:
\texttt{part}, \texttt{chapter},
\texttt{section}, \texttt{subsection}, \texttt{subsubsection},
\texttt{paragraph}, \texttt{subparagraph},
\texttt{page}, \texttt{figure}, \texttt{table},
\texttt{footnote}, \texttt{mpfootnote} (rodapé dentro do minipage) e
\texttt{equation}.

Então, alterando o \verb"\the<contador>"\index{thecontador@\verb+\the<contador>+}, alterará como será impresso estes contadores.

Por exemplo, \verb+\renewcommand{\thepage}{\roman{page}}+ alterará a enumeração das páginas para i, ii, iii, etc.

O estilo de enumeração \verb+\roman+ acima, podem ser
\begin{description}
\item[\textbackslash\texttt{arabic}]\index{arabic@\verb+\arabic+} que é 1, 2, 3 ...
\item[\textbackslash\texttt{alph}]\index{alph@\verb+\alph+} que é a, b, c ... 
\item[\textbackslash\texttt{Alph}]\index{Alph@\verb+\Alph+} que é A, B, C ... 
\item[\textbackslash\texttt{roman}]\index{roman@\verb+\roman+} que é i, ii, iii ...
\item[\textbackslash\texttt{Roman}]\index{Roman@\verb+\Roman+} que é I, II, III ...
\item[\textbackslash\texttt{fnsymbol}]\index{fnsymbol@\verb+\fnsymbol+} que é sequencia de símbolos (pode ser usado no rodapé, se for pouco).
\end{description}
Veja Exemplo~\ref{ex12:contadores}.
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex10-04.tex},label=ex:10-04]
\begin{ltxlisting}[caption={ex12-contadores.tex},label=ex12:contadores,preset={\setcounter{section}{\value{lstorisection}}}]
A página atual é \thepage. 

Seção atual em romano minúsculo é \roman{section}.
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

As vezes, precisamos ajustar valores iniciais dos contadores, tais como das páginas, listas enumeradas, etc.
Para isso, usamos os comandos \verb+\setcounter+\index{setcounter@\verb+\setcounter+}, \verb+\stepcounter+\index{stepcounter@\verb+\stepcounter+} e \verb+\addtocounter+\index{addtocounter@\verb+\addtocounter+}.
Para decrementar, use o valor negativo no parâmetro de \verb+\addtocounter+\index{addtocounter@\verb+\addtocounter+}.

No caso de listas enumeradas, os contadores são
\texttt{enumi}\index{enumi}, \texttt{enumii}\index{enumii} (sub lista),
\texttt{enumiii}\index{enumiii} (subsub lista), \texttt{enumiv}\index{enumiv} (subsubsub lista).

Para que estes contadores sejam impressos na fonte reta, mesmo no ambiente em itálico (enunciado do teorema, por exemplo), acrescente

\begin{singlespacing}
\begin{lstlisting}
\renewcommand{\labelenumi}{\textup{\theenumi.}}
\renewcommand{\labelenumii}{\textup{(\theenumii)}}
\renewcommand{\labelenumiii}{\textup{\theenumiii.}}
\renewcommand{\labelenumiv}{\textup{\theenumiv.}}
\end{lstlisting}
\end{singlespacing}

no \texttt{preamble} do documento.

Ajuste adequadamente como ficará o rótulo (\texttt{label}) de cada ítem (no exemplo anterior, no nível 2, ficará entre parenteses e outros níveis será seguido pelo ponto).


Além disso, o contador novo pode ser criado por \verb+\newcounter+\index{newcounter@\verb+\newcounter+}, útil para ser usado no ambiente/comando novo a ser criado.

Aqui, vamos criar um contador para testá-los.
Veja o Exemplo~\ref{ex12:newcounter}.

%%\let\ref\plainref
%\let\orilabel\label
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex10-04.tex, parte b},label=ex:10-04:b,preset=\let\label\orilabel]
\begin{ltxlisting}[caption={ex12-newcounter.tex},label=ex12:newcounter]
\newcounter{teste} % cria e inicializa com o valor zero.
\setcounter{teste}{1} % novo valor

O contador é \theteste.

O contador em \texttt{Alph} é \Alph{teste}.

Adicionando 1 e usando.
\refstepcounter{teste}\label{count:teste}.
Novo valor é \theteste. 

Adicionando por 1 de novo \addtocounter{teste}{1}
Novo valor é \theteste. 
O valor atribuído no rótulo \texttt{count:teste} após o \texttt{refstepcounter} é \ref{count:teste}.

Agora, a lista enumerada começando de $3$
\begin{enumerate}\setcounter{enumi}{2}
\item Um item.
\item Outro item.
\end{enumerate}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}
%%\let\ref\oriref

Para que o \verb+\label{}+ pegue o valor atual do contador, use o \verb+\refstepcounter+\index{refstepcounter@\verb+\refstepcounter+} que incrementa o contador por um e atualiza o valor para \verb+\label+.

Para pegar o valor de um contador (para ser usado como argumento para \verb+\setcounter+, por exemplo), use o comando \verb+\value+\index{value@\verb+\value+}.

Muitas vezes, um contador está vinculado no outro e quando outro for incrementado, ele será reinicializado. 
Além disso, contadores vinculados aos outros imprimem dois valores (contador do outro mais dele).

Este vínculo pode ser criado pelo comando
\verb+\counterwithin{<contador>}{<pai>}+\index{counterwithin@\verb+\counterwithin+}. 
Quando o \verb+<pai>+ for incrementado, o \verb+<contador>+ é reinicializado. 
Por exemplo, para que a enumeração da equação seja da forma \texttt{<no. do capítulo>.<no da equação>}, basta colocar \verb+\counterwithin{equation}{chapter}+ no \texttt{preamble} do documento.
Observando que, para \LaTeX{} versão anterior a  2018/04/01, requer o pacote \texttt{chngcntr}.

Para eliminar um vínculo, usa-se o comando \verb+\counterwithout+\index{counterwithout@\verb+\counterwithout+}. Outra forma é usar o comando \verb+\@removefromreset+\index{arrobaremovefromreset@\arrobasymbforindex\verb+removefromreset+}. Por exemplo, para remover o vínculo do contador da equação com o contador da seção, coloque o código

\begin{singlespacing}
\begin{lstlisting}
\counterwithout{equation}{section}
%\makeatletter
%  \@removefromreset{equation}{section}
%\makeatother
\end{lstlisting}
\end{singlespacing}
no \texttt{preamble} do documento.

Mais sobre manipulações dos contadores, veja o \cite[Capítulo 3, Seção 3]{book:wikibook:latex}.

%\url{https://en.wikibooks.org/wiki/LaTeX/Counters}.


%\chapter{Teste}
%
%\LTXinputExample{test-code}
%% Value for pos
%% t,b,l,r,o, and i
%%for top, bottom, left, right, outer, and inner.
%\begin{LTXexample}[pos=b,caption={Caption of LTXexample},label=ex:start]
%\documentclass{article}
%\usepackage{lipsum}
%
%\begin{document}
%% comentário
%maçã
%\lipsum[1-2]
%\end{document}
%\end{LTXexample}
%
%% truque do https://www.latex4technics.com/?note=30gq
%% para referencia fucnionar no LTXexample
% \let\orilabel\label
%\begin{LTXexample}[frame=none,preset=\let\label\orilabel]
%  \begin{enumerate}
%  \item No need to manually number items here!
%  \item\label{second} Number two added automatically
%  \item Third item
%  \end{enumerate}
%  And here is a reference to item number \ref{second}
%\end{LTXexample}

\clearpage\thispagestyle{empty}\cleardoublepage
\chapter{Mais Alguns Cuidados e Ajustes}\label{chap:ajustes}
Neste capítulo, veremos mais alguns ajustes e incrementos no documentos.

\section{Comandos frágeis}
Existem comandos denominados frágeis por poder causar problemas quando é passado como parâmetros de alguns comandos ou ambientes. 
Por exemplo, o argumento do \verb+\chapter+ e \verb+\section+ costumam ser usado no sumário também. 
Se colocar comando que tem contadores ou o \verb+\footnote+, causará problemas, pois incrementará contadores duas vezes, ou tentará colocar rodapé também no sumário.

Assim, quando colocar comandos no argumento da função que usam o seu parâmetro em mais de um lugar, requer cuidados.
Além dos comandos de seccionamento (\texttt{chapter}, \texttt{section}, etc), \texttt{caption}, \texttt{thanks}, comandos que produz saída do cabeçalho como \verb+\markboth+, etc, também usam o seu argumento em mais de um lugar.

Os comandos que causam problemas quando é passado para argumento destes comandos são chamados de comandos frágeis\index{comandos frágil} e deve ser precedido de \verb+\protect+\index{protect@\verb+\protect+} para prevenir problemas.

Alguns comandos frágeis são: comandos com argumento opcional, ambientes, fórmula no modo \texttt{displaystyle}, fórmula no modo \texttt{textstyle} delimidado por \verb+\(+ e \verb+\)+ (no entanto, delimitado por ``\$'' não é frágil), \verb+\phantom+, ``\verb+\\+'', \verb+\item+ e \verb+\footnote+.

Veja Exemmplo~\ref{ex13:fragil}.

%\setcounter{lstorichapter}{\value{chapter}}
%\setcounter{lstorisection}{\value{section}}
%% \let\orilabel\label
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex06-08.tex, parte b},label=ex:06-08:b,preset={\setcounter{chapter}{1},\setcounter{section}{0},\let\addcontentsline\emptyaddcontentsline}]
\begin{ltxlisting}[caption={ex13-fragil.tex},label=ex13:fragil,preset={\setcounter{chapter}{1}}]
\section{Sublinhando texto\protect\footnote{Forma antiga de enfatizar o texto}} % footnote é frágil: usar \protect
\ldots
\section{Sobre a famosa fórmula $a^2=b^2+c^2$} % delimitado por "$" não é frágil
\ldots
\begin{figure}[hbp!]
\center
 Figura aqui.
 \caption{$\Gamma_{ij}^{\protect\phantom{ij}2}$} % \phantom é frágil
\end{figure}
\ldots
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}
%%\let\ref\oriref
%\setcounter{chapter}{\value{lstorichapter}}
%\setcounter{section}{\value{lstorisection}}
%% \addtocounter{chapter}{-1}
%\let\addcontentsline\oriaddcontentsline

\section{Babel e nomes}

O pacote de internacionalização \texttt{babel}\index{babel}
oferece regra de hifenização\index{hifenização} e nomes dos elementos tais como \texttt{capítulo}, \texttt{figura}, \texttt{tabela}, \texttt{sumário}, etc em vários idiomas\index{idioma}.
Para carregar mais de um idioma, coloque os idiomas separado pela vírgula no parâmetro do \texttt{babel}. 
O idioma do último será considerado padrão e outros são opcionais que podem ser ativados quando quiser. Mas, se preferir, poderá usar ``\verb+main=<idioma>+'' na lista de parâmetros para indicar o idioma padrão.

Seleção de idiomas pode ser alterado por \verb+\selectlanguage{<idioma>}+\index{selectlanguage@\verb+\selectlanguage+}.
Para demarcar somente um trecho como outro idioma, usa-se o ambiente \texttt{otherlanguage}\index{otherlanguage}.
Para trecho bem curto, poderá usar  também o comando \verb+\foreignlanguage+\index{foreignlanguage@\verb+\foreignlanguage+}.
Veja Exemplo~\ref{ex13:babel}.

%\setcounter{lstorichapter}{\value{chapter}}
%\setcounter{lstorisection}{\value{section}}
%% \let\orilabel\label
%\let\orithesection\thesection
%\renewcommand{\thesection}{\arabic{section}}
%%\newcommand{\articleappendix}{\setcounter{section}{0}\def\thesection{\Alph{section}}}
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex10-03.tex},label=ex:10-03,preset={\setcounter{chapter}{1},\setcounter{section}{0},\let\addcontentsline\emptyaddcontentsline,\let\title\orititle,\let\author\oriauthor,\let\date\oridate,\let\maketitle\makearticletitle}]
\let\thesectionoriginal\thesection
\begin{ltxlisting}[caption={ex13-babel.tex},label=ex13:babel,preset={\def\thesection{\arabic{section}}}]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amssymb}
\usepackage[english,brazil]{babel}
% Dados para títulos
\title{Exemplo}
\author{Sadao Massago} % caso de mais de um autor, separe com o comando \and
\date{Fevereiro, 2018}
\begin{document}
\maketitle
\begin{abstract}
Resumo aqui.
\end{abstract}
\begin{otherlanguage}{english}
\begin{abstract}
Abstract here.
\end{abstract}
\end{otherlanguage}
% \tableofcontents % so se for artigo longo
\section{Mudando o idioma de um trecho}
O trecho curto pode ser no outro idioma como em ``\foreignlanguage{english}{This is english}''.
Para trechos maiores, use o ambiente \texttt{otherlanguage} como em
\begin{quote}
\begin{otherlanguage}{english}
This environment switches all language-related definitions, like the language specific names for figures, tables etc. to the other language.
\end{otherlanguage}
\end{quote}
\ldots
% referência biliográfica
\end{document}
\end{ltxlisting}
\let\thesection\thesectionoriginal
%\end{LTXexample}
%\end{singlespacing}
%%\let\ref\oriref
%\setcounter{chapter}{\value{lstorichapter}}
%\setcounter{section}{\value{lstorisection}}
%% \addtocounter{chapter}{-1}
%\let\thesection\orithesection
%\let\addcontentsline\oriaddcontentsline

Para escrever o nome tais como ``Capítulo'', ``Figura'', ``Sumário'', etc, tem os comandos que produz estes nomes.
Redefinindo apropriadamente estes comandos, podemos alterar a sua saída.

Alguns nomes pré definidos são:
\verb+\abstractname+\index{abstractname@\verb+\abstractname+} (somente \texttt{article} e \texttt{report}), \verb+\appendixname+\index{appendixname@\verb+\appendixname+},
\verb+\bibname+\index{bibname@\verb+\bibname+} (somente \texttt{book} e \texttt{report}),
\verb+\chaptername+\index{chaptername@\verb+\chaptername+} (somente \texttt{book} e \texttt{report}),
\verb+\contentsname+\index{contentsname@\verb+\contentsname+},
\verb+\figurename+\index{figurename@\verb+\figurename+}, \verb+\indexname+\index{indexname@\verb+\indexname+},
\verb+\listfigurename+\index{listfigurename@\verb+\listfigurenname+},
\verb+\listtablename+\index{listtablename@\verb+\listtablename+},
\verb+\partname+\index{partname@\verb+\partname+},
\verb+\refname+\index{refname@\verb+\refname+} (somente \texttt{article}),
\verb+\tablename+\index{tablename@\verb+\tablename+}.

Note que o nome para referência bibliográfica no livro e relatório são \verb+\bibname+\index{bibname@\verb+\bibname+} enquanto que no artigo, é \verb+\refname+\index{refname@\verb+\refname+}.

Alguns pacotes definem o nome usado para seus pacotes. 
Por exemplo, \texttt{amsthm} que define o ambiente \texttt{proof}, define também \verb+\proofname+\index{proofname@\verb+\proofname+}.

Para alterar ou definir novos nomes quando usa o babel, requer usar o recurso do babel, pois nomes pré definidos, quando usa o babel, são redefinidos dinamicamente quando altera os idiomas.

Assim, deverá definir/redefinir os nomes dentro do comando \verb+\captions<idioma>+\index{caption<idioma>@\verb+\captionn<idioma>+} onde \texttt{<idioma>} é o nome do idioma. 
Mas, se redefinir o \texttt{captions}, perderá as definições anteriores feitas pelo \texttt{babel}. 
Logo, utiliza o comando \verb+\addto+\index{addto@\verb+\addto+} do \texttt{babel} que acrescenta porções de código no final do comando especificado.

Por exemplo,

\begin{singlespacing}
\begin{lstlisting}
\addto\captionsbrazil{%
  \renewcommand\refname{Referências Bibliográficas}%
}
\end{lstlisting}
\end{singlespacing}

no \texttt{preamble} altera o nome da referência bibliográfica no caso de artigos quando usa o idioma \texttt{brazil}.

Note que, no caso de português brasileiro, tanto pode usar o \texttt{brazil}\index{brazil} como o \texttt{brazilian}\index{brazilian}. 
Assim, se estiver implementando um pacote na qual não sabe qual opção o usuário final vai usar, precisará redefinir em ambos idiomas.
Neste caso, define um comando auxiliar e coloca em cada um dos idiomas.

\begin{singlespacing}
\begin{lstlisting}
\providecommand{\theoremname}{Theorem} % Providenciando novo nome com valor padrão
\necommand{\braziliannames}{%
  \renewcommand\refname{Referências Bibliográficas}%
  \renewcommand{\theoremname}{Teorema}%  
}
\newcommand{\englishnames}{%
  \renewcommand{\theoremname}{Theorem}%
}

\addto\captionsbrazil{\braziliannames}
\addto\captionsbrazilian{\braziliannames}

\addto\captionsenglish{\englishnames}
\addto\captionsamerican{\englishnames}

\newtheorem{theorem}{\theoremname}[section]
\end{lstlisting}
\end{singlespacing}
%
no \texttt{preamble} após carregar o pacote \texttt{babel}
habilita suporte para português brasileiro e inglês.
Note que no \verb+\newtheorem+, está usando o comando \verb+\theoremname+ que será redefinido automaticamente quando o idioma muda.
Veja o exemplo~\ref{ex13:babel:caption}.

%\setcounter{lstorichapter}{\value{chapter}}
%\setcounter{lstorisection}{\value{section}}
%% \let\orilabel\label
%\let\orithesection\thesection
%\renewcommand{\thesection}{\arabic{section}}
%%\newcommand{\articleappendix}{\setcounter{section}{0}\def\thesection{\Alph{section}}}
\begin{singlespacing}
%\begin{lstlisting}[caption={ex10-03.tex, parte b},label=ex:10-03:b,preset={\setcounter{chapter}{1},\setcounter{section}{0},\let\addcontentsline\emptyaddcontentsline,\let\title\orititle,\let\author\oriauthor,\let\date\oridate,\let\maketitle\makearticletitle}]
\begin{lstlisting}[caption={ex13-babel-caption.tex},label=ex13:babel:caption]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amssymb}
\usepackage{amsthm}
\usepackage[english,brazil]{babel}
\providecommand{\theoremname}{Theorem} % Providenciando novo nome com valor padrão
\newcommand{\braziliannames}{%
  \renewcommand\refname{Referências Bibliográficas}%
  \renewcommand{\theoremname}{Teorema}%  
}
\newcommand{\englishnames}{%
  \renewcommand{\theoremname}{Theorem}%
}

\addto\captionsbrazil{\braziliannames}
\addto\captionsbrazilian{\braziliannames}

\addto\captionsenglish{\englishnames}
\addto\captionsamerican{\englishnames}

\newtheorem{theorem}{\theoremname}[section]

\title{Exemplo}
\author{Sadao Massago}
\date{Fevereiro, 2018}
\begin{document}
\maketitle
\begin{abstract}
Resumo aqui.
\end{abstract}
% \tableofcontents % so se for artigo longo
\section{Teoremas multi lingue}
\begin{otherlanguage}{english}
\begin{theorem}
\ldots
\end{theorem}
\end{otherlanguage}
\begin{theorem}
\ldots
\end{theorem}
\begin{thebibliography}{99}
\bibitem[GMS04]{Goossens:2004}
 Michel Goossens and Frank Mittelbach
 \emph{The {\LaTeX} companion (second edition)}, Adilson--Wesley, 2004.
\end{thebibliography}
\end{document}
\end{lstlisting}
\end{singlespacing}
%%\let\ref\oriref
%\setcounter{chapter}{\value{lstorichapter}}
%\setcounter{section}{\value{lstorisection}}
%% \addtocounter{chapter}{-1}
%\let\thesection\orithesection
%\let\addcontentsline\oriaddcontentsline
%
%
%\let\title\orititle
%\let\author\oriauthor
%\let\date\oridate
%\title{Exemplo}
%\author{Sadao Massago}
%\date{Fevereiro, 2018}
%\let\maketitle\makearticletitle
%%
%\noindent
%\let\orithesection\thesection
%\setcounter{lstorisection}{\value{section}}
%\def\thesection{\arabic{section}}
%\setcounter{section}{0}
%\let\addcontentsline\emptyaddcontentsline
%%
%\fbox{\begin{minipage}{\linewidth}

\let\orithesection\thesection
\begin{ltxlistingout}[preset={\title{Exemplo}\author{Sadao Massago}\date{Fevereiro, 2018}}\renewcommand{\thesection}{\arabic{section}}]
\maketitle
\begin{abstract}
Resumo aqui.
\end{abstract}
% \tableofcontents % so se for artigo longo
\section{Teoremas multi lingue}

\textbf{Theorem \arabic{section}.1.} \ldots

\textbf{Teorema \arabic{section}.2.} \ldots

\section*{Referências Bibliográficas}
\begin{list}{--}{%
    %\setlength{\topsep}{2pt}%
    %\setlength{\itemsep}{0pt}%
    %\setlength{\parsep}{0pt}%
    %\setlength{\parskip}{0pt}%
    %\setlength{\labelwidth}{8pt}%
    \setlength{\leftmargin}{2em}%
    \setlength{\itemindent}{0.5em}%
    %\setlength{\labelsep}{2pt}%
  }%
  \item[[GMS04]] Michel Goossens and Frank Mittelbach
 \emph{The {\LaTeX} companion (second edition)}, Adilson--Wesley, 2004.  
\end{list}
\end{ltxlistingout}
\let\thesection\orithesection
%
%\end{minipage}}
%\setcounter{section}{\value{lstorisection}}
%\let\thesection\orithesection
%\let\addcontentsline\oriaddcontentsline

Note que, se usar a opção de idiomas como opção de documentos (no \verb+\documentclass+, o pacote \texttt{babel} reconhece este idioma e vai usar, mesmo que não tenha passado opções no \texttt{babel}.


\section[Espaçamento entre linhas]{Sobre espaçamentos entre linhas e ``estouro de linhas''}

O espaçamento entre linhas é definido pelo comando \verb+\linespread+\index{linespread@\verb+\linespread+} onde \verb+\linespread{1.3}+ é o espaçamento um e meio e \verb+\linespread{1.6}+ é o espaçamento duplo, o que atuará a partir do próximo parágrafo.

Note que o \LaTeX{} deixa ``estourar'' as linhas (\texttt{Overfull} \verb+\hbox+\index{Overfull hbox@Overfull \verb+\hbox+}) quando não consegue acomodar devidamente o conteúdo nas linhas.
Para que ele use o espaçamento grande entre elementos (\texttt{Underfull} \verb+\hbox+\index{Underfull hbox@Underfull \verb+\hbox+}) em vez de ``estourar linhas'', coloque \verb+\sloppy+\index{sloppy@\verb+\sloppy+} (para voltar, use \verb+\fussy+\index{fussy@\verb+\fussy+}).
Note que, independente de linha estar ``estourando'' ou ``espaçando demais'', deverá checar cada um deles para ver se não está prejudicado visualmente e se for o caso, resolver o problema.
 
\section{Sobre hifenização}

O pacote \texttt{babel} carrega a regra de hifenização para o idioma selecionada, mas as vezes encontramos as exceções na qual a regra do \texttt{babel} não funciona devidamente.
Neste caso, poderá indicar na palavra de texto, a posição que pode ser hifenizada por ''\verb+\-+''\index{-@\verb+\-+} como em \verb+re\-fe\-rên-\cia+.

Este comando é ignorado quando não há necessidade de hifenização. 
Quando precisar, será hifenizada somente nestes locais.

Em geral, quando encontra uma palavra hifenizada indevidamente, poderemos querer acrescentar regra de hifenização para tal palavra em vez de indicar localmente.
Para tanto, coloque o comando \verb+\hyphenation+\index{hyphenation@\verb+\hyphenation+} onde seu argumento é a lista de palavras separados pelo espaço, onde cada palavra contém ``-'' na posição de hifenização.
Note que, para colocar regra de hifenização das letras acentuadas pelo comando \verb+\hyphenation+, requer \verb+\usepackage[T1]{fontenc}+ ou similar para ativar fontes que suportam acentuações.

o seguinte trecho de código colocado depois do carregamento do pacote \texttt{babel} no \texttt{preamble}, acrescenta hifenizações das palavras correspondentes.

\begin{singlespacing}
\begin{lstlisting}
% regra de hifenização das palavras não acentuadas:
% não requer \usepackage[T1]{fontenc}
\hyphenation{li-vro tes-te cha-ve bi-blio-te-ca}
% regra de hifenização das palavras acentuadas:
% requer \usepackage[T1]{fontenc}
\hyphenation{co-men-tá-rio re-fe-rên-cia}
\end{lstlisting}
\end{singlespacing}

Para que ele não hifenize, é só colocar dentro de uma caixa, o que pode ser feito pelo comando \verb+\mbox+\index{mbox@\verb+\mbox+}.
O código do tipo \verb+\mbox{não hifenizar}+ não pode ser quebrado em linhas, mesmo na posição de espaços. 
Este recurso permite proibir hifenização das palavras localmente.

Para que não use a hifenização no documento inteiro, costuma aumentar o valor da penalidade de hifenização no \texttt{preamble} do documento, como em
\begin{singlespacing}
\begin{lstlisting}
\hyphenpenalty=10000
\exhyphenpenalty=10000
\end{lstlisting}
\end{singlespacing}


\section{Trocando fontes}

Fonte padrão do \LaTeX{} é \texttt{Computer Modern} desenhado especialmente para ele, mas existem outras fontes incluídos no \TeX{} que podem ser usados.

Em geral, selecionar fontes manualmente requer cuidados e conhecimento sobre tipografia para não combinar fontes incompatíveis. 
Portanto, recorremos aos pacotes desenvolvidos pelas especialistas no assunto.

Vamos ver como usar a fonte \texttt{Times}\index{Times} que é uma das fontes populares.
Para selecionar a fonte \texttt{times}, usa o pacote \texttt{mathptmx}\index{mathptmx}. 
Basta colocar \verb+\usepackage{mathptmx}+ no \texttt{preamble} para que fontes fiquem como \texttt{Times}.

Para o Palatino, use o pacote \texttt{mathpazo}\index{mathpazo} com o comando \verb+\usepackage{mathpazo}+.

Ainda existem várias outras fontes que vem em qualquer distribuição \TeX, assim como fontes adicionais do \TeX{} mais completo.

\section{Trocando marcador da lista itemizada}

A marca de itens\index{lista!marca de itens} da lista \texttt{itemize} também pode ser redefinidas.
Por exemplo, o código
\begin{singlespacing}
\begin{lstlisting}
\renewcommand{\labelitemi}{$\bullet$}
\renewcommand{\labelitemii}{$\cdot$}
\renewcommand{\labelitemiii}{$\diamond$}
\renewcommand{\labelitemiv}{$\ast$}
\end{lstlisting}
\end{singlespacing}
ajustado adequadamente no \texttt{preamble} faz isso.

\section{Cores no \LaTeX{}}

O pacote \texttt{color}\index{color} (carregado automaticamente pelo pacote \texttt{graphicx}) oferece recursos básicos para trabalhar com cores no \LaTeX. 
Aqui, vamos supor que o \verb+\usepackage{graphicx}+ já está no \texttt{preamble}.
Para poder referenciar cores pelos nomes, coloque \verb+\usepackage[usenames]{color}+\index{color!usenames} no \texttt{preamble} também.
 
Os comandos de cores usam o parâmetro opcional para indicar o modelo. 
Se for omitido, será assumido o que foi especificado na hora de carregar o pacote \texttt{color}.
Como estamos supondo que vai usar a opção \texttt{usenames} na opção do pacote \texttt{color}, se o modelo for omitido nos comandos de cores, será assumido como \texttt{named}\index{color!named} (por nomes). 
 
A cor é especificado pelo comando \verb+\color[modelo]{cor}+\index{color@\verb+\color+}, mas lembre-se de proteger o trecho pelas chaves para que a cor retorne ao padrão fora dele. 
Para a cor do fundo (das páginas), usa-se o comando \verb|\pagecolor[modelo]{cor}|\index{pagecolor@\verb+\pagecolor+}. 
  No caso do trecho de textos, podemos usar os comandos
\verb|\textcolor[modelo]{cor}{texto}|\index{textcolor@\verb+\textcolor+} (texto com cor especificado), \verb|\colorbox[modelo]{cor}{texto}|\index{colorbox@\verb+\colorbox+} (caixa de texto com cor do fundo especificado) e \verb|\fcolorbox[modelo]{fcor}{bcolor}{texto}|\index{fcolorbox@\verb+\fcolorbox+} (caixa de texto com cor \texttt{bcolor} e cor do contorno \texttt{fcolor}) são usados.
Veja o Exemplo~\ref{ex13:color}.
 
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex09-03.tex},label=ex:09-03]
\begin{ltxlisting}[caption={ex13-color.tex},label=ex13:color]
Cor normal. {\color{red} Somente neste trecho muda de cor.} Aqui é cor normal.

Combinando:
\textcolor{white}{\colorbox{black}{texto colorido na caixa colorida}}
\end{ltxlisting}
%\end{singlespacing}
O comando \verb+\normalcolor+ retorna para cor padrão (dentro do trecho com cores personalizados), o que pode ser útil em alguns casos.

Segue uma tabela de cores básicos. 

\begin{table}[htbp]
\caption{cores aceitos em todos \texttt{drivers} no pacote \texttt{color}}
 \ \\
 \begin{tabular}{|c|c|c|c|c|c|c|c|}
  \hline
  black & \colorbox{black}{\hspace*{1cm}} & white &  \colorbox{white}{\hspace*{1cm}} &
  red & \colorbox{red}{\hspace*{1cm}} & green & \colorbox{green}{\hspace*{1cm}}  \\ \hline
  blue & \colorbox{blue}{\hspace*{1cm}} & cyan &  \colorbox{cyan}{\hspace*{1cm}} &
  magenta & \colorbox{magenta}{\hspace*{1cm}} & yellow & \colorbox{yellow}{\hspace*{1cm}}  \\ \hline
 \end{tabular}
\end{table}

 Para mais opções de cores, poderá usar opções \texttt{dvipsnames,usenames} na opção do pacote \texttt{color}, mas memorizar muitas cores não é produtivo.
Assim, costuma usar o pacote mais avançado de cores como o \texttt{xcolor} (veja a Seção~\ref{sec:xcolor} do Capítulo~\ref{chap:xcolor:tikz}) que permite misturar cores.
  
\section{Uso de caixas}\label{sec:caixas}
Para criar comando um pouco complexo, é importante ter noção sobre as caixas.
No \LaTeX, os elementos são colocados nas caixas e serão distribuídas nas páginas.
Estas caixas não são quebráveis.
Por exemplo, \verb+\mbox+\index{mbox@\verb+\mbox+} cria uma caixa e coloca o seu argumento.
Como a caixa não pode ser quebrada, se colocar uma palavra dentro do \verb+\mbox+, ele não será hifenizada, apesar disso não ser a forma elegante de proibir a hifenização de uma palavra.
Antigamente, também usava o \verb+\mbox+ para inserir texto no meio das fórmulas, o que é feito atualmente pelo comando \verb+\text+ do pacote \texttt{amsmath}.

A versão completa do \verb+\mbox+ é o \verb+\makebox+\index{makebox@\verb+\makebox+} que aceitam parâmetros opcionais. 
Por exemplo, um \texttt{strut}\index{strut} (espaço reservado verticalmente) pode ser criado rapidamente com o \verb+\makebox+ com auxílio de \verb+\strut+\index{strut@\verb+\strut+} (\verb+\strut+ reserva altura de uma linha).

Outras caixas que é usado com certa frequência é o \verb+\fbox+\index{fbox@\verb+\fbox+} que coloca moldura e \verb+\parbox+\index{parbox@\verb+\parbox+} que é uma versão simples de \texttt{minipage}.

No caso de \verb+\fbox+, as medidas \verb+\fboxsep+\index{fboxsep@\verb+\fboxsep+} e 
\verb+\fboxrule+\index{fboxrule@\verb+\fboxrule+} controlam o espaço entre conteúdo e moldura, assim como a espessura de linha da moldura.

Uma versão completa com \verb+\fbox+ é o \verb+\framebox+\index{framebox@\verb+\framebox+} que pode controlar a largura e o posicionamento.
Usando em combinação com o comando \verb+\strut+ que insere espaço vertical, poderá criar um retângulo com \verb+\framebox+.

O \verb+\parbox+ permite colocar textos com parágrafos e similares, o que é proibido nas maioria das caixas. Assim, colocando os elementos dentro do \verb+\parbox+, poderá usar textos com parágrafos e similares dentro da caixa comum. Note que, alguns casos mais complexos, requer o uso do  \texttt{minipage} em vez do \verb+\parbox+.

Veja o Exemplo~\ref{ex13:caixa:fbox}.

\begin{ltxlisting}[caption={ex13-caixa-fbox.tex}, label=ex13:caixa:fbox]
Exemplo de um \texttt{strut}\mbox{\strut}, continuação.

Texto com espaço\makebox[2em]{\strut}, continuação.

\fbox{Texto com moldura}

\setlength{\fboxsep}{10pt}
\setlength{\fboxrule}{5pt}
\fbox{Texto com moldura personalizada}

\setlength{\fboxsep}{0pt}
\setlength{\fboxrule}{1pt}
\framebox[5em]{\strut} % um retângulo

\fbox{% moldura no texto com mais de uma linha
\parbox{\textwidth}{%
Linha 1\\
Linha 2
}}
\end{ltxlisting}

Além de permitir manipulações (mudar de tamanho, posição, rotação, etc),
o uso de caixas permite utilizar o elemento várias vezes.
Por exemplo, poderá replicar várias vezes um elemento, ou efetuar medidas antes de posicionar os elementos.
Para salvar uma caixa, usa-se o comando \verb+\sbox+\index{sbox@\verb+\sbox+} ou \verb+\savebox+.
Uma caixa salva pode ser usado usado pelo \verb+\usebox+.
Para salvar uma caixa, inicialmente cria uma variável para armazenar usando o \verb+\newsavebox+\index{newsavebox@\verb+\newsavebox+}.
Depois salva a caixa usando \verb+\savebox+\index{savebox@\verb+\savebox+}.
Uma caixa salva pode ser referenciado quantas vezes queira, pelo comando \verb+\usebox+\index{usebox@\verb+\usebox+}. Para alterar a altura onde caixa  será colocada, poderá usar o comando \verb+\raisebox+\index{raisebox@\verb+\raisebox+}.
Veja o Exemplo~\ref{ex13:caixas}.
\begin{ltxlisting}[caption={ex13-caixas.tex}, label=ex13:caixas]
\newsavebox{\mybox} % cria a variavel para caixa
\savebox{\mybox}{Teste} % armazena conteudo
\usebox{\mybox}
\usebox{\mybox}
\raisebox{-2ex}{\usebox{\mybox}}

Outra linha
\end{ltxlisting}

Diferente do parâmetro do comando, os atributos (cor, por exemplo) do elemento dentro da caixa salva não podem ser alterados.
Assim, quando precisar usar mesmo elemento mais de uma vez com atributos diferentes (como no caso do texto sombreado), precisará criar um comando em vez de salvar e reusar as caixas.

Note que uma barra pode ser criado pelo comando
\verb+\rule+\index{rule@\verb+\rule+}, embora ele não seja uma caixa.
Veja o Exemplo~\ref{ex13:rule}.

\begin{ltxlisting}[caption={ex13-rule.tex}, label=ex13:rule]
\rule{0.5\textwidth}{1pt}

Texto
\rule[0.1\textwidth]{1pt}{0.1\textheight}
continuação
\end{ltxlisting}

\clearpage\thispagestyle{empty}\cleardoublepage
\chapter{Algumas Dicas Para Criar Comandos e Ambientes}

\section[Comandos com ``@'' e ``*'']{Acessando os comandos com ``@'', criando comandos versão ``*'' e parâmetro do tipo \texttt{chave=valor}}

As vezes precisamos usar os comandos ou ambientes que contém ``@'' no seu nome. 
O caso típico é redefinir comandos existentes tais como \verb+\maketitle+, estilo de cabeçalho das páginas, etc.
Note que os comandos e ambientes que usam ``@'' no seu nome são comandos sensíveis e devem ser usados com cuidado.
Para acessar estes comandos e ambientes, coloque \verb+\makeatletter+\index{makeatletter@\verb+\makeatletter+} antes de usar e \makeatother+\index{makeatother@\verb+\makeatlther+} depois.

Por exemplo, ajustar o espaçamento de linhas como sendo espaçamento simples, para o texto de rodapé, mesmo que esteja usando espaçamento um e meio ou dupla no corpo do documento, pode ser feito, acrescentando a seguinte código no \texttt{preamble} do documento.

%========================================================
% rodap\'e deve estar em espa\c{c}amento simples,
% independente do espa\c{c}amento no corpo de documento
% Devera ser feito com linespread{} \@currsize
% pois comandos do setspace nao funciona
%========================================================
% foi copiado do book e alterado

\begin{singlespacing}
\begin{lstlisting} 
\makeatletter % ativa uso de ``@'' no nome
\renewcommand\@makefntext[1]{%
    \parindent 1em%
    % inicio da altera\c{c}\~ao    
    \linespread{1} \@currsize \noindent
    % \hb@xt@1.8em{\hss\@makefnmark}#1}
    \hb@xt@0.45em{\hss\@makefnmark}#1}
% fim da altera\c{c}\~ao
\makeatother % desativa o uso de ``@'' no nome
\end{lstlisting}
\end{singlespacing}

Outro exemplo e o caso de usar linhas pontilhadas no sumário.

\begin{singlespacing}
\begin{lstlisting}
\makeatletter
\renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.3em}}
\makeatother
\end{lstlisting}
\end{singlespacing}

no \texttt{preamble} do artigo habilita o uso de linhas pontilhadas no sumário\index{sumário!linhas pontilhadas}, para seções.
Para habilitar o pontilhado no capítulo do sumário é mais complexo.
Veja o código do \url{https://tex.stackexchange.com/questions/62438/how-to-add-leaders-to-table-of-contents-without-tocloft}.

\begin{singlespacing}
\begin{lstlisting}
\renewcommand*\l@chapter[2]{%
  \ifnum \c@tocdepth >\m@ne
    \addpenalty{-\@highpenalty}%
    \vskip 1.0em \@plus\p@
    \setlength\@tempdima{1.5em}%
    \begingroup
      \parindent \z@ \rightskip \@pnumwidth
      \parfillskip -\@pnumwidth
      \leavevmode \bfseries
      \advance\leftskip\@tempdima
      \hskip -\leftskip
      #1\nobreak
      \xleaders\hbox{$\m@th
        \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
        mu$}\hfill%
      \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
      \penalty\@highpenalty
    \endgroup
  \fi}
\end{lstlisting}
\end{singlespacing}
  
Note que, no \LaTeX, existem vários comandos e ambientes que tem versão normal e versão ``*'' na qual a versão ``*'' é uma variação da versão normal.
Para criar os comandos versão ``*'', usa-se o comando \verb+\@ifstar+\index{ifstar@\verb+\+\arrobasymbforindex\verb+ifstar+} que determina se está ou não usando a versão ``*'', mas seu uso requer cuidados.

O código
%
\begin{singlespacing}
\begin{lstlisting}
\makeatletter
\def\myemph{\@ifstar\@myemph\@@myemph} % selecionando os comandos
\newcommand{\@myemph}[1]{\underline{#1}} % versao ``*''
\newcommand{\@@myemph}[1]{\emph{#1}} % versao normal
\makeatother
\end{lstlisting}
\end{singlespacing}
%
define a versão normal e versão ``*'' do \verb+\myemph+.
Note que na primeira linha foi usado o \verb+\def+ em vez de \verb+\newcommand+, o que é necessário quando o comando tem parâmetros. 
Com o \verb+\@ifstar+, seleciona o comando de acordo com a existência do ``*''.
Note que o primeiro é versão com ``*'' e o segundo é a versão sem ``*''.

Depois define os comandos com ``*'' e comandos sem ``*'' que foi usado anteriormente. 
Note o uso de ``@'' no nome destes comandos para proteger do uso indevido deles.

Assim, podemos usar a versão normal que enfatiza e versão ``*'' que sublinha.
Veja o Exemplo~\ref{ex14:star}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex04-06.tex},label=ex:04-06]
\begin{ltxlisting}[caption={ex14-star.tex},label=ex14:star]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}
\makeatletter
\def\myemph{\@ifstar\@myemph\@@myemph} % selecionando os comandos
\newcommand{\@myemph}[1]{\underline{#1}} % versao ``*''
\newcommand{\@@myemph}[1]{\emph{#1}} % versao normal
\makeatother
\begin{document}
Enfatizando palavras com \myemph{Teste} e \myemph*{Teste}.
\end{document}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Note que no caso de ambientes, a versão com ``*'' pode ser definido diretamente, sem a necessidade do artifício dos comandos como em
\begin{singlespacing}
\begin{lstlisting}
\newenvironment{mypar}[1]% 1 argumento eh titulo
  {\par \center ---------------< #1 >--------------- \\ }% título e linha
  {\par \center ---------------< fim >--------------- \\}
  
\newenvironment{mypar*}[1]% 1 argumento que eh titulo
  {\par \center ---------------< #1 >--------------- \\ }% título e linha
  {\par \center ------------------------------------- \\}
\makeatother
\end{lstlisting}
\end{singlespacing}


Outra coisa que pode querer é criar comandos e ambientes que recebem os parâmetros na forma \texttt{chave=valor}\index{parâmetros!chave=valor}.

Para isso, usa-se o pacote \texttt{keyval}.
para implementar o parâmetro do tipo \texttt{chave=valor}. Inicialmente, precisa criar uma regra do que vai fazer quando tiver uma determinada chave no parâmetro, usando o comando \verb+\define@key+\index{definekey@\verb+\define+\arrobasymbforindex\verb+key+}.

O primeiro parâmetro é o grupo que o parâmetro pertence.
Em geral, coloca o nome do comando ou ambiente para evitar conflitos.
Segundo parâmetro é o nome da chave e terceiro é o que vai fazer. 
O \verb+#1+ será o valor da chave.

Em geral, se tiver o nome da chave sem o valor, dará erro.
Se quer aceitar a chave sem o valor, poderá passar o valor padrão como parâmetro opcional.

O parâmetro será evaluado pelo comando \verb+\setkeys+\index{setkeys@\verb+\setkeys+} onde primeiro parâmetro é o grupo que o parâmetro pertence.

Note que, se o parâmetro for definido pelo comando, precisará expandir antes, ou seja, retardar o \verb+\setkeys+. 
Para isso, usa-se o comando \verb+\expandafter+\index{expandafter@\verb+\expandafter+}, mas retardar o comando para expandir o segundo argumento, em vez do primeiro não é simples.
Neste caso, define um comando auxiliar com um único argumento que chama o \verb+\setkeys+ com nome do grupo prefixado e aplicar \verb+\expandafter+ neste comando.
Veja o Exemplo~\ref{ex14:keyval}.

\begin{ltxlisting}[caption={ex14-keyval}, label=ex14:keyval]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}
\usepackage{keyval}
\makeatletter
% O que vai fazer se encontrar "foo" no parametro do grupo "my".
\define@key{my}{foo}{foo vale #1\par} % se receber foo sem o seu valor, dara erro
\define@key{my}{bar}[99]{bar vale #1\par} % com valor padrao "99" se valor nao for repassado.
\makeatother

% Definindo o comando auxiliar com um argumento
\def\mysetkeys#1{\setkeys{my}{#1}}
% Comando associado ao argumento
\def\mykeyvalue{foo=5}
\begin{document}
Testando o parâmetro chave=valor.

\setkeys{my}{foo=3,bar}

O argumento que esta ``armazenado'' no comando.

\mykeyvalue

% expandindo o argumento primeiro para poder evaluar
\expandafter\mysetkeys\expandafter{\mykeyvalue}
\end{document}
\end{ltxlisting}

Agora, veja o Exemplo~\ref{ex14:keyval:env} para exemplo de implementação do ambiente.
Nele, foi usado o \verb+\newif+\index{newif@\verb+\newif+} que cria um condicional.
O comando \verb+\newif\if<nome>+ cria o condicional \verb+\if<nome>+ que torna verdadeiro ou falso quando chamar \verb+if<nome>true+ ou \verb+if<nome>false+ respectivamente.

\begin{ltxlisting}[caption={ex14-keyval-env}, label=ex14:keyval:env]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}
\usepackage{keyval}
\makeatletter
\newif\ifmyparkeyvaltitle % testar se tem titulo
% O titulo será associado ao comando para poder ser usado posteriormente.
\define@key{myparkeyval}{title}{
\hrulefill\fbox{#1}\hrulefill\myparkeyvaltitletrue
\def\myparkeyvaltitle{#1}}

\newenvironment{myparkeyval}[1][]{
\myparkeyvaltitlefalse
\par\noindent
\setkeys{myparkeyval}{#1}
\ifmyparkeyvaltitle
\else
  \hrule
\fi
\par}{
\par\noindent
\ifmyparkeyvaltitle
  \hrulefill\fbox{fim do \myparkeyvaltitle}\hrulefill
\else
  \hrule
\fi
\par}
\makeatother

\begin{document}
\begin{myparkeyval}
Sem titulo.
\end{myparkeyval}

\begin{myparkeyval}[title=Titulo]
Com titulo.
\end{myparkeyval}
\end{document}
\end{ltxlisting}

\section[Ambiente com parâmetro na finalização e aplicação do comando]{Ambiente com parâmetro na finalização e aplicação do comando no corpo}

No caso de ambiente precisar usar o argumento na finalização, precisará associar a algum comando.
Isto porque, o comando \verb+\newenvironment{ambiente}+ criará o par de comandos \verb+\ambiente+ (chamado pelo \verb+\begin{ambiente}+) e \verb+\endambiente+ (chamado pelo \verb+\end{ambiente}+) que funcionará em sincronismo. 
Os parâmetros do ambiente são passado para o comando de inicialização, mas não para a finalização.

Veja o Exemplo~\ref{ex14:parametro:finalizacao} que usa o segundo parâmetro na finalização.

\begin{ltxlisting}[caption={ex14-parametro-finilizacao.tex}, label=ex14:parametro:finalizacao]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}
\newenvironment{mypartwo}[2]{
\par\noindent\hrulefill%
\ifx #1\empty
\else % se nao for vazio, coloca com fbox
  \fbox{#1}
\fi
\hrulefill\par
\def\mypartwoargtwo{#2}}{% agora eh finalizacao do ambiente
\par\noindent\hrulefill%
\ifx \mypartwoargtwo\empty
\else
  \fbox{\mypartwoargtwo}
\fi%
\hrulefill\par}
\begin{document}
\begin{mypartwo}{Inicio}{Fim}
Testando
\end{mypartwo}
\end{document}
\end{ltxlisting}


Note que no exemplo acima, foi usado o comando \verb+\ifx+\index{ifx@\verb+\ifx+} para verificar se o argumento correspondente é vazio ou não.
O comando \verb+\else+\index{else@\verb+\else+} é \texttt{senão} e \verb+\fi+\index{fi@\verb+\fi+} é \texttt{fim se}.


As vezes, queremos um ambiente que aplica um comando no corpo do ambiente.
No entanto, a chave aberta/fechada para indicar o parâmetro deve aparecer em par tanto na inicialização, com na finalização, não podendo delimitar o corpo do ambiente.

Para casos como este, podemos usar um comando em vez da chave para inicializar/finalizar o agrupamento. Para inicializar o agrupamento, usa-se o comando \verb+\bgroup+ e para finalizar, usa-se o comando \verb+\egroup+.

Como um exemplo, vamos supor que queremos um ambiente que sublinhe todo texto, aplicando o \verb+\emph+ em todo corpo do ambiente (já existe tal ambiente que é \verb+em+, mas aqui foi construído como um exemplo).
Exemplo~\ref{ex14:comando:corpo:ambiente}.

\begin{ltxlisting}[caption={ex14-comando-no-corpo-do-ambiente.tex}, label=ex14:comando:corpo:ambiente]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}

\newenvironment{myulbox}{\emph\bgroup}{\egroup}

\begin{document}
\begin{myulbox}
Testando o ambiente.
\end{myulbox}
\end{document}
\end{ltxlisting}

O uso de \verb+\bgroup+/\verb+\egroup+ falham para vários comandos tais como \verb+\underline+ e \verb+\fbox+. Nestes casos, poderá usar o comando \verb+\collect@body+\index{collectbody@{\verb+\collect+\arrobasymbforindex\verb+body+}} do pacote \texttt{amsmath}.
Exemplo~\ref{ex14:comando:corpo:ambiente:amsmath} ilustra o uso do recurso de \texttt{amsmath} (observe que \verb+\collect@body+ vem antes do comando).

\begin{ltxlisting}[caption={ex14-comando-no-corpo-do-ambiente-amsmath.tex}, label=ex14:comando:corpo:ambiente:amsmath]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}
\usepackage{amsmath}
\makeatletter
  \newenvironment{myfbox}{\collect@body\fbox}{}
\makeatother
\begin{document}
\begin{myfbox}
Testando o ambiente.
\end{myfbox}
\end{document}
\end{ltxlisting}

Note que \verb+\collect@body+ não pode ser usado para ambientes que recebem quebra de linhas ou parágrafos e também não funciona para aplicar comandos com mais de um parâmetro. Para tais casos, poderá recorrer ao pacote fora do \texttt{base}/\texttt{required} como o \texttt{environ}\index{environ} na qual \verb+\BODY+ corresponde ao conteúdo do ambiente (Exemplo~\ref{ex14:comando:corpo:ambiente:environ}).

% Exemplo do uso:
% \usepackage{environ}
% \NewEnviron{myulbox}{\underline{\BODY}} {}
\begin{lstlisting}[caption={ex14-comando-no-corpo-do-ambiente-environ.tex}, label=ex14:comando:corpo:ambiente:environ]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}
\usepackage{environ}
\newcommand{\myframebox}[1]{\fbox{\parbox[\columnwidth]{#1}}}
\NewEnviron{myfbox}{\myframebox{\BODY}} {}
\begin{document}
\begin{myfbox}
Testando o ambiente.
\end{myfbox}
\end{document}
\end{lstlisting}


\section{Comandos definidos dentro do outro comando}

As vezes, queremos modificar um comando dentro do outro.
Por exemplo, comand \verb+\chapter+ e \verb+\section+ 
modificam os comandos para exibir informações no cabeçalho.
Outro caso é os comandos que definem as informações da capa 
como \verb+\title+ e \verb+\author+ na qual define comandos
internos para armazenar informações para uso posterior.
O Exemplo~\ref{ex14:comando:aninhado} ilustra o uso de definição do comando dentro do comando para armazenar o parâmetro no comando interno para o uso posterior. 

\begin{ltxlisting}[caption={ex14-comando-aninhado.tex}, label=ex14:comando:aninhado]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}
\makeatletter
  \newcommand{\@my@title}{}
  \newcommand{\mytitle}[1]{\renewcommand{\@my@title}{#1}}
  \newcommand{\myprinttitle}{\@my@title}
\makeatother
\begin{document}
\mytitle{Teste}
O título armazenado é \myprinttitle
\end{document}
\end{ltxlisting}

Como a cada chamada, o comando redefine o comando interno,
o comando interno deve existir antes.

Para redefinir um comando já existente, é interessante tirar uma cópia dele antes de redefinir, o que permitiria usar ou restaurar o comando original, caso necessário. Para copiar um comando, usa-se o \verb+\let+\index{let@\verb+\let+}.
O Exemplo~\ref{ex14:comando:let} ilustra o uso de \verb+\let+.

\let\thesectionoriginaldolivro\thesection
\renewcommand{\thesection}{\arabic{section} }
\begin{ltxlisting}[caption={ex14-comando-let.tex}, label=ex14:comando:let]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}
\newcommand{\mythesection}{\roman{section}: }
\let\thesectionoriginal\thesection
\begin{document}
\let\thesection\mythesection
\section{Enumeração nova}
\let\thesection\thesectionoriginal
\section{Enumeração normal}
\end{document}
\end{ltxlisting}
\let\thesection\thesectionoriginaldolivro

Para desativar um comando, em geral associao ao comando \verb+\relax+ usando \verb+\let+.

Para definir comando com parâmetro dentro da definição de comandos, o parâmetro do comando aninhado (de dentro) deve ter dois ``\#'' em vez de uma para distinguir com o parâmetro do comando externo.
Veja o Exemplo~\ref{ex14:comando:aninhado:com:parametro}.

\begin{ltxlisting}[caption={ex14-comando-aninhado-com-parametro.tex}, label=ex14:comando:aninhado:com:parametro]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}
\newcommand{\mytitledtext}[1]{##1}
\newcommand{\mytitlefortext}[1]{%
  \renewcommand{\mytitledtext}[1]{\textbf{#1:} ##1}%
}
\mytitlefortext{Nota}
\begin{document}
\mytitledtext{Teste de aninhamento}
\end{document}
\end{ltxlisting}

Muitas vezes, usamos o comando de definição do \TeX{} em vez do \LaTeX,
o que é mais rápido de escrever (ou para diferenciar).
%As vezes,  também usamos a versão \TeX{} para definir  o comando definido dentro do \verb+newcommand+ para diferenciar.

Os comandos \TeX{} correspondentes ao \verb+\newcommand+
do \LaTeX{} são: \verb+\def+\index{def@\verb+\def+}, \verb+edef+, \verb+gdef+ e \verb+xdef+.

Observe que \verb+\def+ redefine o comando 
caso já existir, o que requer cuidados para não alterar 
o comando importante já existente.
A diferença com o \verb+newcommand+ é a indicação dos números de parâmetros.

Para definir comando com parâmetros, acrescenta-se o \verb+#1#2+,\ldots, \verb+#<n>+, onde \verb+<n>+ é o número do parâmetro (no máximo $9$). 
O Exemplo~\ref{ex14:comando:def} ilustra o uso de definição do comando dentro do comando para armazenar o parâmetro no comando interno para o uso posterior. 
\begin{ltxlisting}[caption={ex14-comando-def.tex}, label=ex14:comando:def]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}
\makeatletter
  \def\mytitle#1{\gdef\@my@title{#1}}
  \newcommand{\myprinttitle}{\@my@title}
  \mytitle{}
\makeatother
\begin{document}
\mytitle{Teste}
O título armazenado é \myprinttitle
\end{document}
\end{ltxlisting}

Note que foi usado \verb+\gdef+\index{gdef@\verb+\gdef+} que é atalho para \verb+\global\def+, em vez de \verb+\def+ para que a definição fique disponível globalmente, dai em diante. No caso de usar o \verb+\def+, a definição só vale para dentro do ambiente que contém (caso definir comando usando \verb+\def+ dentro de algum ambiente -- entre \verb+\begin+ e \verb+\end+ -- fora dele o comando não estará disponível. No caso de \verb+\gdef+, comando definido continua disponível fora do ambiente).

Existe o comando \verb+edef+\index{edef@\verb+\edef+} que expande os argumentos na hora de definir.
Por exemplo, \verb+\def\pagina{thepage}+ define comando que imprime a página na qual o comando \verb+\pagina+ foi chamado, enquanto que \verb+\edef\pagina{thepage}+ define comando que imprime a página na qual o comando \verb+\pagina+ foi definido. Note que, \verb+xdef+\index{xdef@\verb+\xdef+} é um atalho para \verb+\global\edef+ que mantém a definição dos comandos globalmente.
No caso da definição de dentro ter parâmetro, a indicação de parâmetro também leva dois ``\#''.
Outro caso é acrescentar algo no comando já existente, como em\verb+\def\foo{\foo{} mais algo}+ que causa erros pela recursão infinita e \verb+\edef\foo{\foo{} mais algo}+ que funciona devidamente. Note que, para adicionar algo no comando ou ambiente existente, deverá usar o \verb+\AddToHook+ ou similar para funcionar devidamente. %LaTeX 01/10/2020

\section{Adicionando os código nos comandos e ambientes existêntes}
As vezes, queremos efetuar alteração no ambiente ou comandos existentes, adicionando comandos a mais. Isto costumava ser feito pelo comando \verb+\addto+ do pacote \texttt{babel} ou similar, mas atualmente, usa-se o comando \verb+\AddToHook+.
%\verb+appto+ e similares do pacote \texttt{etoolbox}, mas a partir da versão do \LateX{} 01/10/2020, tal recurso tornou parte da base de \LateX, com o comando \verb+\AddToHook+.
%Assim, vamos deixar \verb+\addto+ do \textt{babel} e comandos do \texttt{etoolbox} de lado e veremos o caso de uso de \verb+\AddToHook+ que não requer pacotes adicionais.

Para exemplificar, considere o caso de definir o comando \verb+\foo+ e efetua a modificação posterior com o \verb+\AddToHook+\index{AddToHook@\verb+\AddToHook+}.

\begin{singlespacing}
\begin{lstlisting}
\def\foo{um comando}
\AddToHook{cmd/foo/before}% Adicionando no começo do comando
{Este é }
\AddToHook{cmd/foo/after}% Adicionando no final do comando
{ de teste}
\end{lstlisting}
\end{singlespacing}
% 

A definição original do comando \verb+\foo+ é imprimir ``um comando''.
O primeiro \verb+\AddToHook+ acrescenta ``Este é '' antes dele, modificando para imprimir ``Este é um comando'' e o segundo \verb+\AddToHook+ adiciona `` de teste'' no final, para imprimir ``Este é um comando de teste''.
No parâmetro de \verb+\AddToHook+, inicia com \verb+cmd+, indicando que é um comando e seguido do separador do campo \verb+/+ e o nome do comando. Depois coloca-se o separador novamente e coloca a posição que pode ser no início (\verb+before+) ou no final (\verb+after+). Se o último campo for omitido, será assumido \verb+\after+

Para o caso de alterar o ambiente, especifica \verb+\env+ em vez de \verb+cmd+ e se a alteração for no inicialização do ambiente, coloca-se \verb+before+ no último campo e se a alteração for na finalização, coloca-se \verb+after+ no último campo do parâmetro.

\begin{singlespacing}
\begin{lstlisting}
\newenvironment{myenv}{\begin{center}}{\end{center}}
\AddToHook{env/myenv/before}% Adicionando no começo da inicializaçao do ambiente
{\begin{bfseries}}
\AddToHook{env/myenv/after}% Adicionando no final da finalização do ambiente
{\end{bfseries}}
\end{lstlisting}
\end{singlespacing}
% 

Caso o primeiro campo for omitido, será assumido como \verb+cmd+.

Note que, o comando de inicialização e finalização do ambiente \verb+myenv+ são \verb+beginmyenv+ e \verb+endmyenv+ respectivamente. Assim, podemos adicionar códigos diretamente nestes comandos em vez do ambiente. Desta forma, para inserir comando no começo do documento\index{AddToHookbegindocument@\verb+AddToHook{begindocument}+} (que tem o atalho \verb+\AtBeginDocument+\index{AtBeginDocument@\verb+\AtBeginDocument+}) pode ser como no exemplo
\begin{singlespacing}
\begin{lstlisting}
\makeatletter   
\AddToHook{begindocument}% Adicionando no começo do documento
{ \@ifpackageloaded{graphicx}{
    \def\logo{\includegraphics[height=3ex]{logo-ufscar}}
  }{\def\logo{UFSCar }}
}
\makeatother
\end{lstlisting}
\end{singlespacing}

que checará se o pacote \texttt{graphicx} foi carregado através do comando \verb+\@ifpackageloaded+\index{arrobaifpackageloaded@\verb+\@ifpackageloaded+}
e caso positivo, define o comando \verb+\logo+ para inserir imagem de logotipo. Caso não for carregado, define o comando para apenas inserir o texto.
Checar pacotes carregados para decidir o que fazer é uma técnica utilizada pelos desenvolvedores de pacotes. 

Dependendo da necessidade, os desenvolvedores podem inserir código em \texttt{enddocument} (final do documento) e \texttt{shipout} (gerar página) também, para ajustar parâmetros, se necessário.  

Para acessar o parâmetro do comando ou ambiente, use \verb+\AddToHookWithArguments+\index{AddToHookWithArguments@\verb+\AddToHookWithArguments+}
 em vez de \verb+\AddToHook+.

Para mais detalhes, veja o \cite{book:mittelbach:2025}.

% \AddToHook {begindocument}

%\AtBeginDocument but for the enddocument hook.

%Para criar comandos e ambientes de forma mais eficiente, foi criado um novo mecanismo que não serão tratados neste texto. 
%Por exemplo, \verb+\NeDocumentCommand+ e \verb+\NewDocumentEnvironment+ permite especificar e lidar precisamente com os parâmetros obrigratórios e opcionais, incluindo do tipo \texttt{chave=valor} (veja \url{https://ctan.org/pkg/usrguide}).

\section{Usando \textbackslash NewDocumentCommand e \textbackslash NewDocumentEnvironment}\index{NewDocumentCommand@\verb+\NewDocumentCommand+}\index{NewDocumentEnvironment@\verb+\NewDocumentEnvironment+}

Para melhor controle e uso dos parâmetros, foram desenvolvidos o \verb+\NewDocumentCommand{}+ para substituir o \verb+\newcommand{}+ e \verb+\NewDocumentEnvironment{}+ para substituir o \verb+\newenvironment{}+.
Com o uso destes comandos, poderá criar comandos e ambientes efetuando especificação mais precisa dos seus parâmetros.
 A versão de \TeX{} anterior ao ano de 2022, pode precisar usar o pacote \texttt{xparse} para este recurso.
 
O novo comando podem ser definidos pelo
\begin{lstlisting}
\NewDocumentCommand{<comando>}{<especificação>}{<corpo>}
\end{lstlisting}
Também existem \verb+\RenewDcoumentCommand{}+\index{RenewDocumentCommand@\verb+\RenewDocumentCommand+} (recria, caso existir --- erro, se não existir), \verb+\ProvideDocumentCommand+\index{ProvideDocumentCommand@\verb+\ProvideDocumentCommand+} (cria somente quando não existir --- ignora, se existir), \verb+\DeclareDocumentCommand+\index{DeclareDocumentCommand@\verb+\DeclareDocumentCommand+} (cria independente de existir ou não), 

A ``\texttt{<especificação>}'' é uma lista que especifica como será cada parâmetro que podem ser

\begin{description}
\item[m] Parâmetro obrigatório
\item[o] Parâmetro opcional
\item[O\{<valor>\}] Parametro opcional. Se omitido, será assumido como '<valor>'
\item[r<>] Paramétro obrigatório delimitado pelo '<' e '>' em vez de chaves. Poderá usar outro pares de caracteres em vez de '<' e '>' como em \verb+r()+
\item[R<>\{<valor>\}] Paramétro obrigatório similar a \verb+r<>+, mas assume o valor '<valor>' caso omitido (após indicar erro devidamente).
\item[d<>] Paramétro opcional delimitado pelo '<' e '>' em vez de chaves. Poderá usar outro pares de caracteres em vez de '<' e '>' como em \verb+d()+
\item[D<>\{<valor>\}] Paramétro opcional similar a \verb+d<>+, mas assume o valor '<valor>' caso for omitido.
\item[s] Para verificar a existência de '*'. Normalmente será o primeiro parâmetro quando presente. É usado para implementar a versão com e sem '*'.
\item[v] Parâmetro tipo verbatim, delimitado pelo primeiro caractere do parâmetro. Usar com cuidado.
\end{description}
Ainda existem ``t'', ``e'' e ``E' que não será explicado neste texto.

Para testar os parâmetros que foram passados, tem os comandos 
\verb+\IfValueT{<par>}{<cmd>}+\index{IfValueT@\verb+\IfValueT+} (executa o comando \verb+<cmd>+ se o parâmetro \verb+<par>+ for passado), \verb+\IfValueF{<par>}{<cmd>}+\index{IfValueF@\verb+\IfValueF+} (executa o comando \verb+\<cmd>+ se o parâmetro \verb+<par>+ não for passado) e \verb+\IfValueTF{<par>}{<cmd1>}{<cmd2>}+\index{IfValueTF@\verb+\IfValueTF+} (executa o comando \verb+<cmd1>+ se for passado o parâmetro \verb+<par>+ e o comando \verb+<cmd2>+, se o parâmetro não for passado).
Para facilitar, existe o comando para checar se os parâmetro não foram passados, que são \verb+\IfNoValueT+\index{IfNoValueT@\verb+\IfNoValueT+}, \verb+\IfNoValueF+\index{IfNoValueF@\verb+\IfNoValueF+} e \verb+\IfNoValueTF+\index{IfNoValueTF@\verb+\IfNoValueTF+} que funciona de forma similar. 
Mesmo que o parâmetro for passado, pode ser parâmetro vazio ou formado somente pelos espaços. Para testar, usa se os comandos \verb+\IfBlankT+\index{IfBlankT@\verb+\IfBlankT+}, \verb+\IfBlankF+\index{IfBlankF@\verb+\IfBlankF+} e \verb+\IfBlankTF+\index{IfBlankTF@\verb+\IfBlankTF+}. Note que o espaço do tipo \verb+\space+ não é considerado ``blank''.

Para verificar a existência de ``*'' (parâmtro do tipo ``s''), existe o comando \verb+\IfBooleanT+\index{IfBooleanT@\verb+\IfBooleanT+}, \verb+\IfBooleanF+\index{IfBooleanF@\verb+\IfBooleanF+} e \verb+\IfBooleanTF+\index{IfBooleanTF@\verb+\IfBooleanTF+}.
Veja o Exemplo~\ref{ex14:newdocumentcommand}.

\begin{ltxlisting}[title={ex14-newdocumentcommand.tex}, label={ex14:newdocumentcommand}]
\documentclass[12pt,oneside,a4paper]{article}
% Comando sem parâmetro
\NewDocumentCommand\conjuntoR{}{\mathbb{R}}
% m é parâmetro obrigatório
\NewDocumentCommand{\formulaBhaskara}{mmm}
{\ensuremath{
\frac{-#2\pm\sqrt{#2^2-4#1#3}}{2#1}
}}

% O{valor padrão}
% o -> sem valor padrão (poderá testar se foi passado o valor com \IfNoValueTF{parametro}{se não foi passado}{se foi passado}
\NewDocumentCommand{\derivadaParcial}{ O{f}o}
{
 \ensuremath{\frac{\partial #1}{\partial}\IfValueT{#2}{(#2)}
 }
}
\verb+\ensuremath{}+ coloca entre ``\$'' caso ainda não estiver, para tornar fórmula mesmo no modo texto.

% star, nostar version
% s is used to detect star
% from https://www.texdev.net/2010/05/23/from-newcommand-to-newdocumentcommand/
\NewDocumentCommand\WithStarArg{sm}{%
  \IfBooleanTF#1 % se tem ``*''
    {Comando versão *, com parâmetro #2}
    {Comando versão sem *, com parâmetro #2}%
}
% Comando que usa o parâmetro, já no próprio parâmetro
\DeclareDocumentCommand\meuTitulo{O{#2} +m}
{Tíulo curto: #1; Título: #2}

\begin{document}
Testnado os comandos

$\conjuntoR$

\formulaBhaskara{a}{b}{c}

\derivadaParcial % sem argumentos

\derivadaParcial[g][2,3] % com argumentos

\WithStarArg{Teste}

\WithStarArg *{Teste 2}

\meuTitulo{Teste do comando}

\meuTitulo[Teste]{Teste do comando}
\end{document}
\end{ltxlisting}

Para refinar a especificação dos parâmetros, existem os modificadores que especificam algumas alterações no argumento. Ele é colocado antes do especificador de parâmetro.
\begin{itemize}
\item[+] O argumento não pode conter parâgrafos.
\item[!] Não pode ter espaço antes do argumento.
\item[=] Parâmetro é uma lista de elementos do tipo 'chave=valor'. \verb+={chave}+ coloca o parâmetro como sendo o valor da chave \verb+chave+.
\end{itemize}

Por exemplo,
\begin{lstlisting}
\NewDocumentCommand\derivadaParcial{}{+O{f} +o}
\end{lstlisting}

impede que os seus parâmetros contenham parâgrafos.

Para usar o parâmetro como lista do tipo \texttt{chave=valor}, deverá implementar o processador de chaves.
Inicialmente, especifica o que fazer para cada chave encontrada através do \verb+\DeclareKeys+\index{DeclareKeys@\verb+\DeclareKeys+} e depois chama o processador \verb+\SetKeys+\index{SetKeys@\verb+\SetKeys+} dentro do comando.

O primeiro parâmetro opcional do \verb+\DeclareKeys+ é ``família'' que deve ser único e deve coincidir com a ``família'' especificado no \verb+\SetKeys+.
Para configurar o valor inicial (\verb+.initial:n+) e/ou valor padrão quando aparece somente o nome da chave no parâmetro (\verb+.default:n+), deverá colocar o \verb+\Declarekeys{}+ entre 
\verb+\ExplSyntaxOn+ e \verb+\ExplSyntaxOff+, caso for no preamble.

Veja o Exemplo~\ref{ex14:keyvalparameter}
\begin{ltxlisting}[title={ex14-keyvalparameter.tex}, label={ex14:keyvalparameter}]
\documentclass[12pt,oneside,a4paper]{article}
\makeatletter
\newif\if@temSinalizador@
\@temSinalizador@false % valor inicial
% O que fazer para cada chave
%\ExplSyntaxOn
\DeclareKeys[meuComando]{
  % valor padrão, para caso não for fornecido  
  % nome      .initial:n = {}, % antes da chamada de SetKeys{} (vazio já é padrão)
  %nome      .default:n = {}, % se tiver somente nome da chave, assume este valor
  % parametro .default:n = {},
  % armazenar o valor no comando (caso encontrar)
  nome .store = \meuComando@nome,
  parametro .store = \meuComando@parametro,
  % caso encontrar, liga (não altera, caso contrário)  
  sinalizador .if = @temSinalizador@,
  mensagem .code={Mensagem: ``#1''} % executar o código, caso encontrar a chave. '#1" é o valor associado a chave
}
%\ExplSyntaxOff
% Comando que usa chave=valor declarado anteriormente
\NewDocumentCommand\meuComandoChaveValor{m o}
{ % valor padrão para casos omissos 
  %\def\meuComando@nome{}
  %\def\meuComando@parametro{}
  %\@temSinalizador@false
  % \begingroup/\endgroup protege o bloco para restaurar valor alterado
  % senão, na proxima chamada,terá valor da chamada anterior, caso não tiver chave
  \begingroup % protege
    \IfValueT{#2}{%
      \SetKeys[meuComando]{#2}
    }
    % Executando, usando os valores
    #1: Nome: \meuComando@nome, paramêtro: \meuComando@parametro; sinalizador: {\if@temSinalizador@ Ligado\else Desligado\fi}
  \endgroup
}
\makeatother

\begin{document}
Testnado o comando

\meuComandoChaveValor{teste}

\meuComandoChaveValor{teste 2}[nome={Testando}, sinalizador, mensagem={Somente um teste}]

\meuComandoChaveValor{teste 3}%[nome={Testando}, parametro={Testando}]
\end{document}
\end{ltxlisting}

% https://tex.stackexchange.com/questions/711867/initial-default-and-user-defined-keys
O \verb+\begingroup+/\verb+\endgroup+ no corpo do comando é para proteger os valores do comando, pois não há mecanismo de resetar os valores. Os valores alterados após \verb+\begingroup+ pelo comando \verb+\SetKeys{}+ volta ao valor original após \verb+\endgroup+.

Para copiar comandos, costuma usar o \verb+\let+, mas ele nem sempre funciona quando o comando tiver parâmetros. Para resolver este problema, no conjunto de \verb+\NewDocumentCommand+, foi implementado os copiadores.
\verb+\NewCommandCopy{<dest>}{<orig>}+\index{NewCommandCopy@\verb+\NewCommandCopy+} (copiar \verb+<orig>+ para o destino \verb+<dest>+, caso destino ainda não existir), \verb+\RenewCommandCopy+\index{RenewCommandCopy@\verb+\RenewCommandCopy+} (copiar se destino existir) e \verb+\DeclareCommandCopy+\index{DeclareCommandCopy@\verb+\DeclareCommandCopy+} (copiar independente do destino existir).

Os parâmetros podem ser processados antes de serem usados no corpo do comando, pelo comando denominado de processador de parâmetros.
O Processador é acrescentado antes do parâmetro correspondente com \verb+>{<processador>}+. Neste texto, será visto dois dos processadores pré-definidos que são \verb+\SplitArgument{<num>}{<separador>}+\index{SplitArgument@\verb+\SplitArgument+} e \verb+\SplitList{<separador>}+\index{SplitList@\verb+\SplitList+}

O processador \verb+SplitArgument{<num>}{<separador>}+ toma \verb|<num>+1| primeiros elementos da ``lista'' separada pelo \verb+<separador>+ e converte em sequencia de argumentos. Caso, tenha menos do que \verb|<num>+1| elementos na lista, será completada pelo '-NoValue-'. Caso tiver mais, dará erro.

O \SplitList{<separador>}+ converte o parâmetro ``lista'' numa lista real.
Para processar a lista, o comando \verb+\ProcessList{#1}{<comando>}+\index{ProcessList@\verb+\ProcessList+} pode ser usado, onde \verb+<comando>+ é o comando de um argumento.

Veja o Exemplo~\ref{ex14:parameter-processor}.

\begin{ltxlisting}[title={ex14-parameter-processor.tex}, label={ex14:parameter-processor}]
\documentclass[12pt,oneside,a4paper]{article}
% Exemlo de processar lista em CSV
\NewDocumentCommand\imprimirItem{m}{O item é '#1'\par}
% \SplitList{} converte CSV em lista
% \ProcessList aplica a função a cada elemento da lista
\NewDocumentCommand\imprimirLista {>{\SplitList{;}} m}
{Lista:\par \ProcessList{#1}{\imprimirItem}}
% Converter lista em parâmetro
\NewDocumentCommand\imprimirTresParametros{mmm}{Os 3 parâmetros são: '#1'; '#2'; '#3'\par}
\NewDocumentCommand\imprimirListaComoArgumento {>{\SplitArgument{2}{,}} r()} %num = numargs-1 = 2 para 3 argumentos
% r() especifica que vai usar () em vez de chaves
{\imprimirTresParametros#1} % não colocar chaves em '#1'
\begin{document}

\imprimirLista{abc;def;123;456}

% No seguinte comando, o delimitador do parametro foi definido como sendo parenteses em vez de chaves.
\imprimirListaComoArgumento(123,abc,def) % correto

\imprimirListaComoArgumento(1,2) %este é aceito

%\imprimirListaComoArgumento(a,b,c,d,e) % este, dará erro por ter elementos demais
\end{document}
\end{ltxlisting}

Caso tiver mais de um processador de parâmetro indicado, será aplicado da direita para a esquerda.

Note que o processador deve ser comando com um argumento. Se for de mais de um argumento, deverá ter os parâmetros preenchidos, exceto o último.

Para os ambientes, usa-se o \verb+\NewDocumentEnvironment+\index{NewDocumentEnvironment@\verb+\NewDocumentEnvironment+}, \verb+\RenewDocumentEnvironment+\index{RenewDocumentEnvironment@\verb+\RenewDocumentEnvironment+}, \verb+\ProvideDocumentEnvironment+ e \verb+\DeclareDocumentEnvironment+\index{DeclareDocumentEnvironment@\verb+\DeclareDocumentEnvironment+} cuja especificação dos parâmetros é mesmo que o caso dos comandos.
No entanto, ambientes permite uma especificação adicional 'b' que é o corpo do ambiente. Com isso, poderá usar o corpo do ambiente várias vezes, ou passar para o comando ou outro ambiente, sem complicações.
Veja o Exemplo~\ref{ex14-documentenvironment}.

\begin{ltxlisting}[title={ex14-documentenvironment.tex}, label={ex14-documentenvironment}]
\documentclass[12pt,oneside,a4paper]{article}
\NewDocumentEnvironment{saidaDupla} {O{\itshape} +b}
{\noindent\fbox{\parbox{0.99\textwidth}{#2}}\par#1#2} {}
\begin{document}
\begin{saidaDupla}[\itshape]
Bom dia!
\end{saidaDupla}
\end{document}
\end{ltxlisting}

Mais sobre este assunto, veja o \cite{book:latex:group:2025}.

\clearpage\thispagestyle{empty}\cleardoublepage
\chapter{Usando Pacotes Fora do \texttt{base} e \texttt{required}}

Até agora, só estudamos os pacotes disponíveis em qualquer distribuição \TeX, usando somente os pacotes do conjunto denominado de \texttt{base}\index{base} e \texttt{required}\index{required}.
No entanto, maioria das distribuições \LaTeX{} instala uma grande quantidade de pacotes adicionais para incrementar a sua funcionalidade.
Assim, neste capítulo, vamos aventurar em alguns destes pacotes adicionais para facilitar o nosso trabalho.

\section[Configuração das páginas]{Ajustando a configuração das páginas e similares}

Para ajustar as margens, tamanho de papeis, espaçamento entre cabeçalho e texto, etc, usamos o pacote \texttt{geometry}\index{geometry}.
As configurações podem ser feitas, passando no parâmetro opcional do pacote, a lista dos itens na forma \texttt{chave=valor}, separado pela virgula.
Também pode usar o comando \verb+\geometry+\index{geometry@\verb+\geometry+} após carregar o pacote.

Para ajustar margem superior (\texttt{tmargin}\index{geometry!tmargin}), margem inferior (\texttt{bmargin}\index{geometry!bmargin}), margem esquerda (\texttt{lmargin}\index{geometry!lmargin}, será de dentro se for frente/verso), margem direita (\texttt{rmargin}\index{geometry!rmargin}, será de fora se for frente/verso), basta colocar algo como
\begin{singlespacing}
\begin{lstlisting}
\usepackage[tmargin=2cm,bmargin=2cm,lmargin=2cm,rmargin=2cm]{geometry}
\end{lstlisting}
\end{singlespacing}
ou
\begin{singlespacing}
\begin{lstlisting}
\usepackage{geometry}
\geometry{tmargin=2cm,bmargin=2cm,lmargin=2cm,rmargin=2cm}
\end{lstlisting}
\end{singlespacing}
%
no \texttt{preamble} do documento.

Para ajuste de espaçamento entre linhas, usamos o pacote \texttt{setspace}\index{setspace} que tem  os comandos \verb+\singlespacing+\index{singlespacing@\verb+\singlespacing+} (espaçamento simples), \verb+\onehalfspacing+\index{onehalfspacing@\verb+\onehalfspacing+} (espaçamento um e meio) e \verb+\doublespacing+\index{doublespacing@\verb+\doublespacing+} (espaçamento duplo), além do ambiente \texttt{spacing}\index{spacing} que permite qualquer espaçamento dentro dele.

Para que o documento fique em espaçamento um e meio, coloque

\begin{singlespacing}
\begin{lstlisting}
\usepackage{setspace}
\onehalfspacing
\end{lstlisting}
\end{singlespacing}
%
no \texttt{preamble} do documento.

Usuário da classe \texttt{memoir}\index{memoir} devem colocar \verb+\DisemulatePackage{setspace}+\index{DisemulatePackagesetspace@\verb+\DisemulatePackage{setspace}+} antes de carregar o \texttt{setspace}.

Para desabilitar a hifenização em todo documento ou ativar hifenização na fonte mono espaçado (\verb+\ttfamily+), poderá usar o pacote \texttt{hyphenat}\index{hyphenat}.
\begin{singlespacing}
\begin{lstlisting}
\usepackage[none]{hypenat}
\end{lstlisting}
\end{singlespacing}
no \texttt{preamble} desabilita hifenização em todo documento.
Se não quer usar o pacote e quer desativar a hifenização, coloque
\begin{singlespacing}
\begin{lstlisting}
\hyphenpenalty=10000
\exhyphenpenalty=10000
\end{lstlisting}
\end{singlespacing}
no \texttt{preamble} do documento.

Para melhorar o ajuste de espaços, poderemos usar o pacote \texttt{microtype}\index{microtype} que usa o recurso de micro tipografia. 
Um desses ajustes é reduzir ou ampliar levemente o tamanho da fonte para melhorar o espaçamento.
Por exemplo, podemos colocar
\begin{singlespacing}
\begin{lstlisting}
\usepackage[stretch=10]{microtype}
\end{lstlisting}
\end{singlespacing}
no \texttt{preamble}.

Cabeçalho no estilo de página \texttt{headings}\index{headings} coloca o título do capítulo e seção no cabeçalho em maiúsculo. 
Para tanto, usa-se o comando \verb+\MakeUppercase+\index{MakeUppercase@\verb+\MakeUppercase+} que não funciona para letras acentuadas diretamente (funciona para acentuação no modo \TeX). 
Além disso, ele tenta converter inclusive as fórmulas, o que pode causar problemas.
O pacote \texttt{textcase}\index{textcase} permite sobrescrever o \verb+\MakeUppercase+ para evitar tais problemas, além de mais alguns recursos adicionais.
Coloque
\begin{singlespacing}
\begin{lstlisting}
\usepackage[overload]{textcase}
\end{lstlisting}
\end{singlespacing}
%
no \texttt{preamble}.

Normalmente, a referência bibliográfica e índice remissivo não costumam ficar no sumário.
Para que eles constem no sumário, use o pacote \texttt{tocbibind}\index{tocbibind}. 
Usando a opção adicional, pode impedir que o sumário, lista de figuras e de tabelas fiquem fora do sumário.
\begin{singlespacing}
\begin{lstlisting}
\usepackage[nottoc,notlof,notlot]{tocbibind}
\end{lstlisting}
\end{singlespacing}
%
no \texttt{preamble} efetua esta tarefa.

Note que no \LaTeX, o texto é justificado por padrão, mas não existe comando para justificar um trecho dentro do outro alinhamento. 
Uma saída é usar o \texttt{minipage}, mas \texttt{minipage} não permite quebrar entre páginas.
Para resolver este problema, existe o pacote \texttt{ragged2e}\index{ragged2e} que providencia o ambiente \texttt{justify}\index{justify} (e comando \verb+\justify+\index{justify@\verb+\justify+}) que pode ser usado como outros comandos de alinhamento de texto no parágrafo.

\section{Estilo europeu}
Em Alguns países da Europa, um parágrafo é separado pela outra com o espaçamento maior entre linhas em vez de indentação. 
Remover a indentação é feito, ajustando o valor de \verb+\parindent+\index{parindent@\verb+\parindent+} para zero, mas ajustar o espaçamento antes do parágrafo por \verb+\parskip+\index{parskip@\verb+\parskip+} e acertar alguns detalhes requer conhecimento extra.
Para facilitar, existe o pacote \texttt{parskip}\index{parskip} que, ao ser usado, ajustam de forma apropriada.
Se não quer usar o pacote, coloque
\begin{singlespacing}
\begin{lstlisting}
\setlength{\parindent}{0pt}
\setlength{\parskip}{1ex plus 0.5ex minus 0.2ex}
\end{lstlisting}
\end{singlespacing}
%
no \texttt{preamble}, mas isto não ajustará tudo que o pacote faz.

Para produzir o estilo literário francês\index{estilo literário!francês} na qual a primeira letra do parágrafo ocupa mais de uma linha, tem o pacote \texttt{lettrine}\index{lettrine}.
O uso comum nos livros de literatura é usar o \texttt{lettrine} no primeiro parágrafo do capítulo e manter o restante como normal.
Veja o Exemplo~\ref{ex15:lettrine} na qual é assumido que tem o \verb+\usepackage{lettrine}+ no \texttt{preamble} do documento.
%\setcounter{lstorichapter}{\value{chapter}}
%\setcounter{lstorisection}{\value{section}}
%\setcounter{chapter}{0} %\setcounter{section}{0}
%\let\addcontentsline\emptyaddcontentsline
%\begin{singlespacing}
%\begin{lstlisting}[pos=b,caption={ex11-03.tex},label=ex:11-03]
\begin{ltxlisting}[caption={ex15-lettrine.tex},label=ex15:lettrine]
\chapter{Um Capítulo}
\lettrine{E}{xiste} um pacote chamado \texttt{letrine} que oferece o estilo literário francês (estilo bíblico) na qual a primeira letra do parágrafo ocupa varias linhas. 
Alguns livros literários usa este estilo somente para o parágrafo do primeiro capítulo, mantendo outros parágrafos como sendo normal. O primeiro parâmetro é a letra (primeira letra) que ocupará várias linhas, e o segundo parâmetro é a continuação dele até finalizar a palavra, que será escrito em maiúsculo. O comando ainda aceita parâmetros opcionais para ajustar quantas linhas vai ocupar, etc.
\end{ltxlisting}
%\end{singlespacing}
%\setcounter{chapter}{\value{lstorichapter}}
%\setcounter{section}{\value{lstorisection}}
%\let\addcontentsline\oriaddcontentsline

%\setcounter{lstorichapter}{\value{chapter}}
%\setcounter{lstorisection}{\value{section}}
%\setcounter{chapter}{0} 
%%\setcounter{section}{0}
%%\let\addcontentsline\emptyaddcontensline
%%\newcommand{\emptyaddcontentsline}[3]{}
%% \let\oriaddcontentsline\addcontentsline
%\let\addcontentsline\emptyaddcontentsline
%\begin{singlespacing}
%%\fbox{
%\begin{framed}\noindent
%\begin{minipage}{\linewidth}
%\chapter{Um Capítulo}
%\lettrine{E}{xiste} um pacote chamado \texttt{letrine} que oferece o estilo literário francês (estilo bíblico) na qual a primeira letra do parágrafo ocupa varias linhas. 
%Alguns livros literários usam este estilo somente para o parágrafo do primeiro capítulo, mantendo outros parágrafos como sendo normal. O primeiro parâmetro é a letra (primeira letra) que ocupará várias linhas, e o segundo parâmetro é a continuação dele até finalizar a palavra, que será escrito em maiúsculo.
%O comando ainda aceita parâmetros opcionais para ajustar quantas linhas vai ocupar, etc.
%\end{minipage}
%\end{framed}
%%}
%\end{singlespacing}
%\setcounter{chapter}{\value{lstorichapter}}
%\setcounter{section}{\value{lstorisection}}
%\let\addcontentsline\oriaddcontentsline

Note que, em muitos casos do usos de \texttt{lettrine}, costuma usar a fonte enfeitada (fonte para iniciais) na primeira letra como no exemplo~\ref{lettrine:b} que supõe o uso do pacote \texttt{yfonts} com codificação \texttt{T1}, colocando o código

\begin{singlespacing}
\begin{lstlisting}
\usepackage[T1]{fontenc}
\usepackage{yfonts}
\end{lstlisting}
\end{singlespacing}

no \texttt{preamble}.

\begin{ltxlisting}[caption={ex15-lettrine-b.tex},label=ex15:lettrine:b]
\chapter{Um Capítulo}
\lettrine[lines=3]{\initfamily\small E}{xiste} um pacote chamado \texttt{letrine} que oferece o estilo literário francês (estilo bíblico) na qual a primeira letra do parágrafo ocupa varias linhas. 
Alguns livros literários usa este estilo somente para o parágrafo do primeiro capítulo, mantendo outros parágrafos como sendo normal. O primeiro parâmetro é a letra (primeira letra) que ocupará várias linhas, e o segundo parâmetro é a continuação dele até finalizar a palavra, que será escrito em maiúsculo. O comando ainda aceita parâmetros opcionais para ajustar quantas linhas vai ocupar, etc.
\end{ltxlisting}

Para mais fontes para iniciais, veja o \url{https://tug.org/FontCatalogue/}.

\section[Cabeçalho e títulos]{Ajustando o cabeçalho, títulos de capítulos e de figuras}

Ajustar o cabeçalho diretamente não é simples.
Assim, costumamos usar o pacote \texttt{fancyhdr}\index{fancyhdr} que permite personalizar o cabeçalho das páginas.
Veja o Exemplo~\ref{ex15:fancyhdr} usado para produzir estilo de cabeçalho deste documento.

\begin{singlespacing}
\begin{lstlisting}[caption={ex15-fancyhdr.tex},label=ex15:fancyhdr]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}

\usepackage{calc} % para calculo de medidas
\usepackage{fancyhdr} % personalizar o cabeçalho

%%%%%% inicio da redefinicao do cabecalho %%%%%%
% Ajustando o chaptermark e sectionmark
\makeatletter
  %\addto\ps@fancy{%
    \renewcommand{\chaptermark}[1]{%
      \markboth{\if@mainmatter\thechapter. \fi #1}%
        {\if@mainmatter\thechapter. \fi #1}}
    \renewcommand{\sectionmark}[1]{%
      \markright{\if@mainmatter\thesection. \fi #1}}
  %}
\makeatother

\setlength{\headheight}{15pt} % enlarge heade height

% linha horizontal entre cabecalho e corpo do documento
\renewcommand{\headrulewidth}{0.5pt}
% sem linha horizontal entre corpo de texo e rodape
\renewcommand{\footrulewidth}{0pt}

% redefinindo o estilo da pagina "fancy"
% Redefinido o estilo fancy
\fancypagestyle{fancy}{%
  \fancyhf{} % limpa o cabecalho
  % redefine o cabcalho. \nouppercase foi usado para eliminar conversao para maiusculo do sumario/bibliografia
  \fancyhead[LE,RO]{\bfseries\thepage}
  \fancyhead[LO]{\bfseries\nouppercase\rightmark}
  \fancyhead[RE]{\bfseries\nouppercase\leftmark}
} % \fancypagestyle{fancy}{%

% redefine o "plain" (usado na primeira pagina do capitulo).
\fancypagestyle{plain}{%
   \fancyhead{} % get rid of headers
   \fancyhead[LE,RO]{\bfseries\thepage} % colocar enumeracao
   % \renewcommand{\headrulewidth}{0.5pt} % com linha horizontal
}

% Ajustando a primeira página do capitulo
\makeatletter
  %\let\ps@plain@original\ps@plain % copia do original, se necessário
  \AddToHook{cmd/ps@fancy/after}{\let\ps@plain\ps@fancyplain}
  \AddToHook{cmd/ps@empty/after}{\let\ps@plain\ps@empty}
\makeatother
%%%%%% fim da redefinicao do cabecalho %%%%%%

% iniciar com estilo empty
\pagestyle{empty}
\begin{document}
...
\pagestyle{fancy} % inicia o cabeçalho personalizado
...
\end{document}
\end{lstlisting}
\end{singlespacing}

Note que o comando \verb+\fancypagestyle+\index{fancypagestyle@\verb+\fancypagestyle+} permite definir/redefinir estilo de páginas.
%, exceto o \texttt{fancy}\index{fancy} que é configurado diretamente, o que requer cuidados. 
%Se usar erroneamente o \verb+\fancypagestyle{fancy}+, o \LaTeX{} pode parar no meio da compilação quando encontrar o \verb+\pagestyle{fancy}+.
% Isso já foi corrigido

O comando \verb+\AddToHook{}{}+\index{AddToHook} foi usado para adicionar o código no comando já existente.
No \LaTeX, \verb+\ps@estilo+ é o comando correspondente ao estilo de páginas ``\verb+estilo+''.

Para documento em um lado, poderá usar a configuração um pouco mais simples. O Exemplo~\ref{fancyhdr:oneside} efetua configuração similar ao Exemplo~\ref{ex15:fancyhdr} para caso de impressão em apenas um lado, mas coloca o nome do capítulo no cabeçalho da página, em vez da seção.

\begin{singlespacing}
\begin{lstlisting}[caption={ex15-fancyhdr-oneside.tex},label=ex15:fancyhdr:oneside]
% ajustando o \chaptermark{} e desabilitando o \sectionmark{}
\makeatletter
  \renewcommand{\chaptermark}[1]{% suppress string 'Chapter'
    \markboth
      {\if@mainmatter\thechapter. \fi #1}{\if@mainmatter\thechapter. \fi #1}}
  \renewcommand{\sectionmark}[1]{}%
  %  \markright{\if@mainmatter\thesection. \fi ##1}}
\makeatother

% aumenta o espaco do cabecalho superior
\setlength{\headheight}{15pt}
% linha horizontal entre cabecalho e corpo do documento
\renewcommand{\headrulewidth}{0.5pt}
% sem linha horizontal entre corpo de texo e rodape
\renewcommand{\footrulewidth}{0pt}

% Redefinido o estilo fancy
\fancypagestyle{fancy}{%  
  \fancyhf{}% limpando as configuracoes
  % redefinindo o cabecalho superior
  % \nouppercase foi usado para eliminar conversao 
  % para maiusculo do sumario/bibliografia
  \fancyhead[R]{\bfseries\thepage}
  \fancyhead[L]{\bfseries\nouppercase\leftmark}
} % fim do \fancypagestyle{fancy}

% estilo plain (usado na primeira pagina do captulo).
\fancypagestyle{fancyplain}{
  % limpando as configuracoes
  \fancyhf{}
  \renewcommand{\headrulewidth}{0.5pt} % com linha horizontal
  \fancyhead[R]{\bfseries\thepage}% colocar enumeracao
} % fim do \fancypagestyle{fancyplain}{

% mais ajustes
\makeatletter
  % \let\ps@plain@original\ps@plain, cópias do original, se necessário
  \AddToHook{cmd/ps@fancy/after}
{\let\ps@plain\ps@fancyplain}
  \AddToHook{cmd/ps@empty/after}
{\let\ps@plain\ps@empty}
\makeatother    
\end{lstlisting}
\end{singlespacing}

Para configurar o formato de título do capítulo e seções, usamos o pacote \texttt{titlesec}\index{titlesec}.
Note que, para ajuste somente de capítulos, existe o pacote \texttt{fncychap}\index{fncychap} que permite escolher um modelo entre alguns prontos através da opção do pacote (\texttt{Sonny}\index{fncychap!Sonny}, \texttt{Lenny}\index{fncychap!Lenny}, \texttt{Glenn}\index{fncychap!Glenn}, \texttt{Conny}\index{fncychap!Conny}, \texttt{Rejne}\index{fncychap!Rejne}, \texttt{Bjarne}\index{fncychap!Bjarne}, \texttt{Bjornstrup}\index{fncychap!Bjornstrup}) e ajustar as fontes com comandos tais como \verb+\ChNumVar+\index{fncychap!ChNumVar@\verb+\ChNumVar+} e \verb+\ChTitleVar+\index{fncychap!ChTitleVar@\verb+\ChTitleVar+}. Mas o pacote \texttt{fncychap} não consegue refazer o estilo como no  \texttt{titlesec}.

Assim, para configuração mais refinada dos títulos de capítulos e seções, costumam usar o \texttt{titlesec}\index{titlesec}. 
Este pacote, além de configuração refinada de títulos, também pode ser usado para configurar o cabeçalho das páginas (apesar de, para o cabeçãlho, o recomendado é o pacote \texttt{fancyhdr}).
Veja o Exemplo~\ref{ex15:titlesec}.

%\begin{singlespacing}
%\begin{lstlisting}[caption={ex15-titlesec.tex},label=ex15:titlesec]
\begin{ltxlisting}[caption={ex15-titlesec.tex},label=ex15:titlesec]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}

\usepackage{calc} % para cálculo de medidas

\usepackage[pagestyles]{titlesec} % para formatar título do capítulo e seção

% formatando o titulo do capítulo
\titleformat{\chapter}[display] % modo display
{\bfseries\Large} % fonte usado no título do capítulo
{\filleft\MakeUppercase{\chaptertitlename} \Huge\thechapter} % Como colocar o nome do capítulo
{4ex} % espaco entre nome do capítulo e titulo do capítulo
{\titlerule\vspace{2ex}\filright} % o que colocar antes do titulo do capitulo
[\vspace{2ex}\titlerule] % depois do titulo do capítulo

% \titlespacing*{\chapter}{0pt}{20pt}{16pt} % espacamento do titulo de capitulos
      
% Exemplo ajustado da documentação
% formatando o título da seção
\newcommand{\sectiontitlename}{Seção}

\titleformat{\section}[frame]% colocar moldura
{\normalfont}% fonte normal
{\filright\footnotesize
\enspace \MakeUppercase{\sectiontitlename}\enspace \thesection\enspace}% Como colocar o nome/enumeracao da seção
{8pt}% espaço antes do titulo da seção
{\Large\bfseries\filcenter}% antes do titulo da seção (ajustando fontes)

% \titlespacing{\section}{0pt}{*2}{*2}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% definindo o estilo do cabeçalho usando titlesec
% para configuração mais sofisticada, use fancyhdr
    
\newpagestyle{main}{ % Novo estilo de pagina
  \headrule
  \sethead[\thechapter. \scshape\chaptertitle][][]{}{}{\thechapter. \slshape\chaptertitle}
  \setfoot[][\thepage][]{}{\thepage}{}
}
    
\pagestyle{empty}
\begin{document}
\pagestyle{main} % inicia o cabeçalho personalizado
\chapter{Um Capítulo}
Um capítulo novo.
\section{Usando \texttt{titlesec}}
\ldots       
\end{document}
\end{ltxlisting}
%\end{lstlisting}
%\end{singlespacing}

%{ % start group for titlesec
%\titleformat{\chapter}[display]{\bfseries\Large}
%{\filleft\MakeUppercase{\chaptertitlename} \Huge\thechapter}{4ex}{\titlerule\vspace{2ex}\filright}[\vspace{2ex}\titlerule]
%
%\newcommand{\sectiontitlename}{Seção}
%\titleformat{\section}[frame]{\normalfont}{\filright\footnotesize\enspace \MakeUppercase{\sectiontitlename}\enspace \thesection\enspace}{8pt}{\Large\bfseries\filcenter}
%
%\setcounter{lstorichapter}{\value{chapter}}
%\setcounter{lstorisection}{\value{section}}
%\setcounter{chapter}{0}\setcounter{section}{0}
%\let\addcontentsline\emptyaddcontentsline
%\fbox{\begin{minipage}{\linewidth}
%\chapter{Um Capítulo}
%Um capítulo novo.
%\section{Usando \texttt{titlesec}}
%\ldots       
%\end{minipage}}
%} % end group for titlesec
%
%\setcounter{chapter}{\value{lstorichapter}}
%\setcounter{section}{\value{lstorisection}}
%\let\addcontentsline\oriaddcontentsline

Note que a primeira página do capítulo será sempre do estilo \texttt{plain}. 
Então, se quer que a primeira página do capítulo seja diferente do \texttt{plain} padrão, deverá redefinir ele.

Para configurações mais complicadas de títulos de capítulos e seções, use a opção \texttt{explicit}\index{titlesec!explicit} na qual os textos de títulos só serão colocados se for referenciado diretamente. 

Para usar o \texttt{titlesec} e \texttt{fancyhdr} ao mesmo tempo, deverá carregar o \texttt{titlesec} com opção \texttt{pagestyles} e antes do \texttt{fancyhdr}.

%precisará ajustar o carretamento, pois eles definem os comandos \verb+headrule+ e \verb+\footrule+, causando erro no carregamento do segundo pacote.
%Se quer definir títulos de capítulos e seções com \texttt{titlesec} e cabeçalho da página com \texttt{fancyhdr}, carregue da seguinte forma.
%\begin{singlespacing}
%\begin{lstlisting}
%\usepackage[pagestyles]{titlesec}
%\let\headrule\undefined % remover o comando \headrule
%\let\footrule\undefined % remover o comando \footrule
%\usepackage{fancyhdr}
%\end{lstlisting}
%\end{singlespacing}
%Não troque as ordens destes dois pacotes, pois os comandos \verb+\headrule+ e \verb+\footrule+ destes pacotes são incompatíveis.

Para configurar a saída de títulos dos elementos flutuantes como figuras e tabelas que são produzidos pelo comando \verb+\caption+\index{caption@\verb+\caption+}, costuma usar o pacote \texttt{caption}\index{caption} que implementa o comando \verb+\captionsetup+\index{captionsetup@\verb+\captionsetup+} para configurar o formato de títulos das figuras e tabelas. Este pacote também implementa a versão ``*'' do \verb+\caption+\index{caption*@\verb+\caption*+} que não será contabilizado (só coloca o título).

No Exemplo~\ref{ex15:caption}, está configurado o nome da figura no ambiente \texttt{figure} como sendo \texttt{Imagem}. A fonte do nome será em negrito, título em itálico, formato do nome é modo simples e nome com título será separado pelo ponto.

%\setcounter{lstorichapter}{\value{chapter}}
%\setcounter{chapter}{0}
\begin{singlespacing}
%\begin{lstlisting}[caption={ex11-03.tex, parte c},label=ex:11-03:c]
\begin{lstlisting}[caption={ex15-caption.tex},label=ex15:caption]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}

\usepackage{caption} % para formatar titulo do float (figura e tabela)

\captionsetup[figure]{name=Imagem,labelfont={bf}, textfont=it, labelformat=simple, labelsep=period}    
\pagestyle{empty}
\begin{document}

\begin{figure}[hbp!]
\center
Figura aqui.
\caption{Novo título}\label{fig:titulo:novo}
\end{figure}

\clearcaptionsetup{figure}

\begin{figure}[hbp!]
\center
Figura aqui.
\caption{Título normal}\label{fig:titulo:normal}
\end{figure}
\end{document}
\end{lstlisting}
\end{singlespacing}
%\setcounter{chapter}{\value{lstorichapter}}

%\fbox{\begin{minipage}{\linewidth}
\begin{ltxlistingout}
\begin{center}
Figura aqui.

{\textbf{Imagem 1.} \textit{Novo título}}
\end{center}
\begin{center}
Figura aqui.

{Figura 2: Título normal}
\end{center}
\end{ltxlistingout}
%\end{minipage}}

%\begin{figure}
%\caption{teste}
%\end{figure}


Para limpar as configurações, usa o comando \verb+\clearcaptionsetup{figure}+\index{clearcaptionsetup@\verb+\clearcaptionsetup+}, onde \texttt{figure} pode ser \texttt{table}, se for da tabela.

Para criar configurações complexas que é difícil de ser ajustado com comandos acima, poderá usar o comando \verb+\DeclareCaptionFormat+\index{DeclareCaptionFormat@\verb+\DeclareCaptionFormat+}.

Por exemplo, se quer que o nome da figura fique em maiúsculo negrito, separado por dois pontos e titulo em itálico, basta criar o estilo novo com 
\begin{singlespacing}
\begin{lstlisting}
\DeclareCaptionFormat{meuestilo}{{\MakeUppercase\bfseries #1}#2\textit{#3}\par}
\end{lstlisting}
\end{singlespacing}
e usar como 
\verb+\captionsetup[figure]{format=meuestilo, labelsep=colon}+.

%geometry, OK
%setspace, OK
%hyphenat, OK
%microtype, OK.
%textcase, OK
%tocbibind, OK
%fancyhdr, OK
%fncychap, OK
%%Options: Sonny, Lenny, Glenn, Conny, Rejne, Bjarne, Bjornstrup
%% \usepackage[Sonny]{fncychap}
%titlesec, OK
%caption, OK

%\begin{verbatim}
%\usepackage{caption}
%\captionsetup[figure]{name=New Table Name,labelfont=it,textfont={bf,it},
%labelformat=simple, labelsep=colon}
%
%Label Format	Result
%labelformat = empty	No label is shown - i.e. no number or letter
%labelformat = simple	Shows number or letter in caption
%labelformat = parens	Shows number or letter in caption in parentheses - i.e. (1), (A)
%
%The labelsep option can be set to:
%Label Separator
%labelsep = none
%labelsep = colon
%labelsep = period
%labelsep = space
%labelsep = quad
%labelsep = newline
%
%\clearcaptionsetup{figure}
%\DeclareCaptionFormat{plain}{#1#2#3\par}
%
%\DeclareCaptionFormat{plain}{{\MakeUppercase #1}#2#3\par}
%
%\end{verbatim}

\section{Ajustando o sumário}

Para ajustar o estilo de sumário e similares, costuma usar o pacote \texttt{tocloft}\index{tocloft}. Este pacote também permite criar lista de objetos similares a de sumários (por exemplo, lista de algorítimos).
Uma das coisas que ocorre com certa frequência é ter livro sem as seções e com a ausência de linhas pontilhadas no capítulo do sumário, o que dificulta a localização da página correspondente. Neste caso, é só acrescentar a linha pontilhada no capítulo, como no Exemplo~\ref{ex15:tocloft}.
\begin{singlespacing}
\begin{lstlisting}[caption={ex15-tocloft.tex},label=ex15:tocloft]
\documentclass[a4paper,12pt,oneside]{book}
\usepackage[brazilian]{babel}
\usepackage{tocloft}
\setcounter{tocdepth}{1} % até nivel 1 (seção)
% Fontes do sumário
%\renewcommand{\cfttoctitlefont}{\hfill\Large}
%\renewcommand{\cftaftertoctitle}{\hfill}
% linhas pontilhadas para capítulo no sumário.
\renewcommand{\cftchapdotsep}{\cftdotsep}
\begin{document}
\tableofcontents % sumário
\chapter{Primeiro}
\section{Seção}
\chapter{Outro capítulo}
\section{Outra seção}
\end{document}
\end{lstlisting}
\end{singlespacing}
 na qual o sumário ficará algo como segue
 
%\begin{singlespacing}
\begin{ltxlistingout}
{\noindent\huge\bfseries Sumário}
\vspace{12ex}

{\bfseries\noindent {1}\hspace{1em}Primeiro\dotfill{2}}

{1.1}\hspace{1em}Seção\dotfill{2}

\medskip

{\bfseries\noindent {2}\hspace{1em}Outro Capítulo\dotfill{3}}

{2.1}\hspace{1em}Outra seção\dotfill{3}
\end{ltxlistingout}
%\end{singlespacingout}

\section{Links}

Quando usa o pacote \texttt{hyperref}\index{hyperref}, sumário, índice remissivo, as referências cruzadas e citações ganham link automaticamente. 
Além disso, poderá configurar informações gerais do documento PDF gerado, tais como titulo, autor, palavras-chave, etc relacionado com o documento PDF.

A configuração do PDF pode ser feito por algo como segue.
\begin{singlespacing}
\begin{lstlisting}
...
\usepackage{hyperref}

% configurando o PDF
\hypersetup{
  bookmarks=true, % show bookmarks bar?
  unicode=true, % non-Latin characters in Acrobat’s bookmarks
  breaklinks=true, %break long url across lines
%  pdftoolbar=true, % show Acrobat’s toolbar?
%  pdfmenubar=true, % show Acrobat’s menu?
%  pdffitwindow=false, % window fit to page when opened
%  pdfstartview={FitH}, % fits the width of the page to the window
  pdftitle={Pacote hyperref}, % title
  pdfauthor={Sadao Massago}, % author
  pdfsubject={Uso do pacote hyperref}, % subject of the document
%  pdfcreator={Creator}, % creator of the document
%  pdfproducer={Producer}, % producer of the document
%  pdfkeywords={keyword1, key2, key3}, % list of keywords
%  pdfnewwindow=true, % links in new PDF window
%  colorlinks=false, % false: boxed links; true: colored links
%  linkcolor=red, % color of internal links (change box color with linkbordercolor)
%  citecolor=green, % color of links to bibliography
%  filecolor=magenta, % color of file links
%  urlcolor=cyan % color of external links
}
...
\end{lstlisting}
\end{singlespacing}

Note que, apenas carregar o \texttt{hyperref} já é suficiente para maioria dos casos, mas em geral, se estiver usando pacotes que ajustam os comandos de referências cruzadas ou citações, o pacote \texttt{hyperref} deve vir depois deles para não perder os links.

Além do link automático, poderá inserir links para sites, etc, usando o comando \verb+\url+\index{url@\verb+\url+}.
\begin{singlespacing}
\begin{lstlisting}
Veja  \url{https://en.wikibooks.org/wiki/LaTeX/Hyperlinks} por exemplo.
\end{lstlisting}
\end{singlespacing}
Atualmente, o \texttt{url} (endereço de internet) é importante para ser colocado nas referências bibliográficas, caso exista.
O estilo moderno para \BibTeX{} costuma usar o campo \texttt{url}\index{BibTeX!url} na qual o seu valor pode ser ser colocado no arquivo de \BibTeX{}, como em
\begin{singlespacing}
\begin{lstlisting}
...
url = {https://en.wikibooks.org/wiki/LaTeX/},
urldate = {2018-06-11},
...
\end{lstlisting}
\end{singlespacing}
onde \texttt{urldate}\index{BibTeX!urldate} é a data da última consulta.

Para estilos um pouco antigo que não tem o campo \texttt{urldate}, poderá colocar a data de último acesso no campo \texttt{note}\index{BibTeX!note} como em
\begin{singlespacing}
\begin{lstlisting}
...
url = {https://en.wikibooks.org/wiki/LaTeX/},
note = {(Visited on 2018-06-11)},
...
\end{lstlisting}
\end{singlespacing}

No caso de estar usando o estilo antigo na qual ignora o campo \texttt{url}, poderá colocar o endereço no campo \texttt{note}, usando o comando \verb+\url+.
%A data de acesso em geral será colocado junto a \texttt{note}, ou junto ao ano.
\begin{singlespacing}
\begin{lstlisting}
...
note = "URL: \url{https://en.wikibooks.org/wiki/LaTeX/} (Visitado em 2018-06-11)",
...
\end{lstlisting}
\end{singlespacing}
mas cuidado para não colocar em \texttt{note} e \texttt{url} ao mesmo tempo, para evitar duplicações nos estilos que suportam \texttt{url}.

Para quem deseja um estilo clássico com suporte a \texttt{url}, o pacote \texttt{urlbst}\index{urlbst} dispõe de \texttt{alphaurl}\index{BibTeX!alphaurl}, \texttt{plainurl}\index{BibTeX!alphaurl}, \texttt{abbrvurl}\index{BibTeX!abbrvurl} e \texttt{unsrturl}\index{BibTeX!unsrturl} correspondentes a \texttt{alpha}, \texttt{plain}, \texttt{abbrv} e \texttt{unsrt} respectivamente. Note que, para estes estilos, a data de último acesso é no campo \texttt{lastchecked}\index{BibTeX!lastchecked} e não no \texttt{urldate}. Para que funcione tanto nestes estilos quanto no estilo mais moderno, poderá colocar ambos os campos.

Obviamente, o arquivo \texttt{tex} correspondente ao estilo bibliográfico com \texttt{URL} deve usar o pacote \texttt{hyperref} ou o \texttt{url}.

Quando quer acrescentar o link com texto onde clicar é diferente do endereço do link, poderá usar o \verb+\href+ como em

\begin{singlespacing}
\begin{lstlisting}
\href{https://en.wikibooks.org/wiki/LaTeX/}{wikibooks, \LaTeX{}}
\end{lstlisting}
\end{singlespacing}

Também poderá criar os links manualmente, dentro do documento.
Para isso, define a chegada do link com o comando \verb+\hypertarget+\index{hypertarget@\verb+\hypertarget+} e cria link para ele, com o comando \verb+\hyperlink+\index{hyperlink@\verb+\hyperlink+}.
Veja o \url{https://en.wikibooks.org/wiki/LaTeX/Hyperlinks} para detalhes.

Quando usa as fórmulas nos títulos, aparece ``lixo'' no indicador (\texttt{bookmarks}) do \texttt{PDF}.
Isto porque, no indicador, só o texto é aceito. 
Para evitar isso, existe o comando \verb+\texorpdfstring+\index{textorpdfstring@\verb+\textorpdfstring+} que coloca conteúdo de \LaTeX{} ou texto, dependendo de estar no documento ou no \texttt{bookmarks}.

Por exemplo,
\begin{singlespacing}
\begin{lstlisting}
\section{\texorpdfstring{$E=mc^2$}{E = mc ** 2}}
\end{lstlisting}
\end{singlespacing}

Usará $E=mc^2$ para o documento, mas \texttt{E = mc ** 2} para o indicador (\texttt{bookmarks}).

Alguns comandos pode não funcionar no \texttt{bookmarks} do PDF, como o caso de \verb+\MakeUppercase+.
O pacote \texttt{hyperref} dispõe de comando \verb+\pdfstringdefDisableCommands+\index{pdfstringdefDisableCommands@\verb+\pdfstringdefDisableCommands+}
para redefinir estes comandos dentro do \texttt{bookmarks}.
Por exemplo, para desativar o \verb+\MakeUppercase+ ou redefinir \verb+\\+ dentro do \texttt{bookmarks} do PDF, coloque
\begin{singlespacing}
\begin{lstlisting}
\pdfstringdefDisableCommands{%
  \let\MakeUppercase\relax%desativando
  \def\\{ }% em vez da nova linha, será espaço
  \def\and{ e }
}
\end{lstlisting}
\end{singlespacing}
no \texttt{preamble} do documento.

Quando adiciona um item manualmente no sumário através do comando \verb+\addcontentsline+\index{addcontentsline@\verb+\addcontentsline+}, o link do sumário pode não posicionar na página correta.
Para o funcionamento correto (posicionamento correto) do link no sumário requer que o \verb+\addcontentsline+ deve ser chamado logo em seguida da mudança de capítulo ou seção.
Caso não esteja, é só colocar \verb+\phantomsection+\index{phantomsection@\verb+\phantomsection+} oferecido pelo pacote \texttt{hyperref} antes do \verb+\addcontentsline+. 

Note que ``\verb+"|+'' na entrada do índice remissivo para inserir o símbolo ``\verb+|+'' não funciona em conjunto com o pacote \texttt{hyperref}.
A forma de contornar isso é definir um comando para ``\verb+|+'' e usar na entrada do índice remissivo.

%
%hyperref,
%
%\verb+\section{\texorpdfstring{$E=mc^2$}{E = mc ** 2}}+ para bookmark do PDF (hyperref)? Uso do comando \verb+\url{}+ no arquivo de BibTeX.

\section{Controle das listas e listas \texttt{inline}}

O pacote \texttt{enumerate} permite controlar as enumerações das listas.
Mas as vezes queremos efetuar controle mais refinado ou controlar o rótulo de listas não enumeradas também.
O pacote \texttt{enumitem}\index{enumitem} permite formatar a lista de forma similar ao pacote \texttt{enumerate}, mas com recursos adicionais.

Existe também os casos que queremos as listas que coloquem vários itens na mesma linha, denominado de listas \texttt{inline}\index{lista!inline}. 
Existem vários pacotes que permitem criar listas \texttt{inline}, mas esta tarefa também pode ser feita pelo pacote \texttt{enumitem}.

A opção \texttt{shortlabels}\index{enumitem!shortlabels} no pacote \texttt{enumitem} ativa o modo de compatibilidade com o pacote \texttt{enumerate}, permitindo formatar enumeração da lista \texttt{enumerate} via modelos.
A opção \texttt{inline}\index{enumitem!inline} criará a versão ``*'' dos ambientes de lista que são listas \texttt{inline} (não muda de linha entre os itens).
Para alinhar os itens das listas versão ``*'', poderá usar o pacote \texttt{tabto}\index{tabto}.

Veja o Exemplo~\ref{ex:d:enumitem} que usa os pacotes \texttt{enumitem} e \texttt{tabto}.

\begin{ltxlisting}[caption={ex-d-enumitem.tex},label=ex:d:enumitem]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc} % codificação da fonte em 8-bits
\usepackage[brazil]{babel} % em português brasileiro
\usepackage{amssymb} %para comando \square
\usepackage[inline,shortlabels]{enumitem}
\usepackage{tabto}
\usepackage{xcolor} % para mudar de cor
\begin{document}
% Em vez de indentar, cria espaço extra entre parágrafos
\parindent=0em % indentação nula
\parskip=\baselineskip % um linha entre parágrafos

% No parâmetro opcional, aceita a formatação de enumeração como do pacote enumerate (ativado pela opção shortlabels)
% Também poderá configurar as fontes
% As opções são separados pela vírgula
\begin{enumerate}[1),font=\color{blue}]
\item Item 1
\item Item 2
\item Item 3
\end{enumerate}

% Nas listas como o enumerate e itemize, poderá configurar o \label que rotula os itens. Neste exemplo, será colocado um circulo na enumeração.
% O "*" no label será substituido pelo enumi, enumii, etc dependendo do seu nível.
\begin{enumerate}[label={\large\protect\textcircled{\normalsize\arabic*}}]
\item Item 1
\item Item 2
\item Item 3
\end{enumerate}

%A versão ``*'' produz lista inline que não efetua mudança de linhas quando muda o item.
\begin{enumerate*}[a)]
\item Item 1
\item Item 2
\item Item 3
\item Item 4
\item Item 5
\item Item 6
\item Item 7
\item Item 8
\item Item 9
\item Item 10
\end{enumerate*}

% Para alinhas os ítens, use em conjunto com tabto.
% Quantas "colunas" vai ter na tabulação (que será usada na lista versão "*")
\NumTabs{5}
% Na lista versão *, poderá indicar o que colocar entre itens consecutivos com itemjoin
% No caso, o \tab será usado para alinhar itens em colunas.
\begin{enumerate*}[1.,itemjoin={\tab}]
\item Item 1
\item Item 2
\item Item 3
\item Item 4
\item Item 5
\item Item 6
\item Item 7
\item Item 8
\item Item 9
\item Item 10
\end{enumerate*}

%\NumTabs{4} % poderá mudar o número de colunas, se desejar
% Ítens longas podem ocupar dois ou mais "colunas" automaticamente
\begin{itemize*}[label=$\square$, itemjoin={\tab}]
\item Item 1
\item Item 2
\item Item 3
\item Item 4
\item Item 5
\item Item 6 e longa, com espaço maior
\item Item 7
\item Item 8
\end{itemize*}
\end{document}
\end{ltxlisting}


\section{Trocando as fontes -- parte 2}

\LaTeX{} dispõe de diversas fontes gratuitas para diagramar o documento.
Em geral, para versão impressa, costuma usar o \texttt{Latin Modern}\index{Latin Modern} que é uma extensão do \texttt{Computer Modern}\index{Computer Modern} para derivados de latim que tem letras acentuadas. 
Outra opção é \texttt{MLModern}\index{MLModern} que é fonte compatível com \texttt{Computer Modern} e \texttt{Latin Modern}, mas um pouco mais grossa, adequado para livros eletrônicos.
%Note que o \texttt{Computer Modern} tradicional e \texttt{Latin Modern} são adequados para textos impressos no papel, e o \texttt{MLModern} é adequado para texto a ser lido na tela.
Para usar o \texttt{MLModern}, carregue o pacote \texttt{mlmodern} e para usar a fonte \texttt{Latin Modern}, carregue o pacote \texttt{lmodern} no \texttt{preamble} do documento, como em

\begin{singlespacing}
\begin{lstlisting}
\usepackage{mlmodern} % MLModern, com espessura Book.
% \usepackage{lmodern} % Latin Modern, com espessura igual a Computer Modern tradicional.
\end{lstlisting}
\end{singlespacing}
%

Além de variantes do tradicional \texttt{Computer Modern}, diversas combinações de fontes podem ser escolhidas usando pacotes correspondentes. Aqui, veremos algumas entre muitas outras.

%ML Modern\index{} (Compatível com computer modern, na espessura Book), mais grossa que tradicional, ideal para livros eletrônicos pela legibilidade na tela.
%\begin{singlespacing}
%\begin{lstlisting}
%\usepackage{mlmodern} % ML Modern (compatível com computer modern, mas com espessura Book)
%\end{lstlisting}
%\end{singlespacing}


%Concrete (texto e fórmula)
%\begin{singlespacing}
%\begin{lstlisting}
%\usepackage{lmodern} % para complementar
%\usepackage{ccfonts} % Concrete (serifa grossa?)
%\end{lstlisting}
%\end{singlespacing}

Fonte \texttt{Times} pode ser escolhido com
\begin{singlespacing}
\begin{lstlisting}
\usepackage{newtxtext,newtxmath}
\end{lstlisting}
\end{singlespacing}

A fonte \texttt{Palatino} com
\begin{singlespacing}
\begin{lstlisting}
\usepackage{newpxtext,newpxmath}
\end{lstlisting}
\end{singlespacing}

A fonte matemático em \texttt{sans serif}, compatível com o computer modern, ideal para \texttt{poster} e \texttt{slides}.
\begin{singlespacing}
\begin{lstlisting}
\usepackage{lmodern} % computer modern com extensão para derivados ee latin
\usepackage{sansmathfonts} %fonte compatível com computer modern sans para fórumulas matemáticas
\renewcommand{\familydefault}{\sfdefault}% sans serif como padrão
\end{lstlisting}
\end{singlespacing}

Outra opção para \texttt{poster} e \texttt{slides} (texto e fórmulas em \texttt{sans serif}). Por ser espessura ``Book'', é mas legível do que uso de \texttt{lmodern}+\texttt{sansmathfonts}.
\begin{singlespacing}
\begin{lstlisting}
\usepackage[sfdefault]{notomath} % sffamily as \notosans
\end{lstlisting}
\end{singlespacing}

Note que, o conjunto de fontes Noto ainda não tem fontes matemáticos serifados para matemática (2024). Se não precisar de fórmulas matemáticas, poderá usar o pacote \texttt{noto} para usar fontes \texttt{noto}.

Se quer usar a fonte \texttt{sans serif} na fórmula matemática (para uso em \texttt{slides} e \texttt{poster}), poderá carregar o pacote \texttt{sfmath}\index{sfmath} ou similar para forçar a usar a fonte \texttt{sans serif} pra fórmulas, mas nem todas fontes tem símbolos necessários em \texttt{sans serif}. Por isso, \texttt{sfmath} permite usar fontes diferentes do texto na fórmula, através de opções.

%A fonte \texttt{iwona} ideal para \texttt{poster} e \texttt{slides}.
%\begin{singlespacing}
%\begin{lstlisting}
%\usepackage{lmodern} % para complementar
%\usepackage[math]{iwona} % sans serif com transição grosso fino
%\end{lstlisting}
%\end{singlespacing}

Fonte \texttt{Schoolbook L} pode ser escolhdo por
\begin{singlespacing}
\begin{lstlisting}
\usepackage{mlmodern} % para complementar
\usepackage{fouriernc} % schoobook L: Serifa grossa?
\end{lstlisting}
\end{singlespacing}

A fonte \texttt{stix} (estilo compatível com \texttt{Times New Roman})
\begin{singlespacing}
\begin{lstlisting}
\usepackage{newtxtext} % para complementar
\usepackage{stix} % compativel com New Times Roman
\end{lstlisting}
\end{singlespacing}
A versão nova da fonte \texttt{stix} pode ser carregado pelo pacote 
\texttt{stix2} .

Note que, para complementar a fonte com a outra, como do \texttt{amssymb}, deve carregar o complemento antes do pacote de fonte desejado. 
Quando vários pacotes de fontes são carregados e tiver conflitos, o que vale é do pacote carregado por último.

Também existem pacotes de fontes que acrescentam comandos para fontes adicionais. 
Por exemplo, o pacote \texttt{dsfont}\index{dsfont} adiciona o comando \verb+\mathds+ para usar a fonte ``negrito de quadro negro'' alternativo dentro das fórmulas.
Da forma análoga, o pacote \texttt{calligra}\index{calligra} acrescenta o comando \verb+\textcalligra+\index{textcalligra@\verb+\textcalligra+} para textos na fonte caligráfica.

Para ver as fontes livres do \LaTeX{} e os pacotes correspondentes, veja o site \url{http://www.tug.dk/FontCatalogue/}.

\section{Texto somente com contorno, sombreado e degradê}
No caso de cartazes e folhetos, as vezes usamos texto somente com contorno para títulos na qual usa-se a letra grande.
Uma forma fácil de fazer isso é usar o pacote \texttt{contour}\index{contour}
que permite criar um contorno no elemento. 
Veja o Exemplo~\ref{ex15:contour}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex11-06.tex},label=ex:11-06]
\begin{ltxlisting}[caption={ex15-contour.tex},label=ex15:contour]
\documentclass[12pt,a4paper]{article}
\usepackage[brazil]{babel}
\usepackage{contour}
%\contourlength{0.5pt} % controle da espessura do contorno
\begin{document}
{\Huge \contour{red}{\color{white}\scshape Atenção:}}
\end{document}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Para sombrear o texto, costuma usar o pacote \texttt{shadowtext}.
Veja o Exemplo~\ref{ex15:shadow}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex11-06.tex},label=ex:11-06]
\begin{ltxlisting}[caption={ex15-shadow.tex},label=ex15:shadow]
\documentclass[12pt,a4paper]{article}
\usepackage[brazil]{babel}
\usepackage{shadowtext}
\shadowcolor{blue!40!white}
%\shadowoffset{2pt} % deslocamento da sombra
\begin{document}
{\Huge \shadowtext{\sffamily Atenção}}
\end{document}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Para produzir o texto em degradê\index{degradê!texto}, existe o pacote novo chamado \texttt{gradient-text}\index{gradient-text} (\url{https://www.ctan.org/pkg/gradient-text})% de 2022 
que implementa a aplicação do gradiente linear no texto. Caso ele não for instalável pelo gerenciador de pacotes e não souber instalar manualmente, basta abaixar o arquivo \texttt{gradient-text.sty} e deixar junto com o documento \TeX.

O \texttt{gradient-text} suporta somente o modelo de cor em RGB. Para usar outros modelos de cores como pelo nome, poderá criar um novo comando com auxilio do \verb+\convertcolorspec+\index{convertcolorspec@\verb+\convertcolorspec+} do pacote \texttt{xcolor}. Note que, para que letras acentuadas sejam aceitas, requer \XeLaTeX/Lua\LaTeX.
Veja o Exemplo~\ref{ex15:gradient-text}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex11-06.tex},label=ex:11-06]
%
% truque de uar expandafter com varios argumentos, de https://tex.stackexchange.com/questions/133753/how-do-i-have-to-invoke-expandafter-for-a-macro-with-multiple-arguments
\begin{ltxlisting}[caption={ex15-gradient.tex},label=ex15:gradient-text]
\documentclass[12pt,a4paper]{article}
\usepackage[brazil]{babel}
\usepackage{xcolor}
\usepackage{gradient-text}
% comando que aceita cor pelo nome
\makeatletter
\newcommand{\inverted@gradientRGB}[3]{\gradientRGB{#3}{#1}{#2}}
\newcommand{\gradienttext}[4][named]{%
  \convertcolorspec{#1}{#3}{RGB}{\gradienttext@startcolor}%
  \convertcolorspec{#1}{#4}{RGB}{\gradienttext@endcolor}%
  \edef\gradienttext@colors{{\gradienttext@startcolor}{\gradienttext@endcolor}}
  \expandafter\inverted@gradientRGB\gradienttext@colors{#2}
}
\makeatother
\begin{document}
Com cor em RGB: {\Huge \gradientRGB{Texto em degradê}{0,255,0}{0,0,255}}

Com comando criado: {\Huge \gradienttext{Texto em degradê}{orange!50!red}{yellow}}
\end{document}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

\section{Circulando o texto}
O \LaTeX{} %pacote \texttt{textcomp}
 implementa  o comando \verb+\textcircled+\index{textcircled@\verb+\textcircled+} para  números/letras com círculos.
  O comando básico é \verb+\textcircled+\index{textcircled@\verb+\textcircled+} que coloca circulo no seu argumento.
Veja o Exemplo~\ref{ex15:textcircled}.

% exemplo baseado em
% https://www.latex4technics.com/?note=6806YG
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex11-06.tex},label=ex:11-06]
\begin{ltxlisting}[caption={ex15-textcircled.tex},label=ex15:textcircled]
\documentclass[12pt,a4paper]{article}
\usepackage{enumitem}
\begin{document}
\textcircled{\small{2}}\quad\textcircled{\small{A}}
\begin{enumerate}
[label=\large\protect\textcircled{\small\arabic*}]
\item First item
\item Second item
\item Third item
\end{enumerate}
\end{document}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Para controle mais sofisticado, existe um pacote novo \texttt{circledtext}\index{circledtext} (\url{https://www.ctan.org/pkg/circledtext}).% de 2022.
Caso ele não for instalável pelo gerenciador de pacotes e não souber instalar manualmente, basta abaixar o arquivo \texttt{textcircled.sty} e deixar junto com o documento \TeX.

Veja o Exemplo~\ref{ex15:circledtext}.

% exemplo baseado no seu manuaal
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex11-06.tex},label=ex:11-06]
\begin{ltxlisting}[caption={ex15-circledtext.tex},label=ex15:circledtext]
\circledtextset{width=1em}
\documentclass[12pt,a4paper]{article}
\usepackage{circledtext} % tem o comando \circledtext
\circledtextset{resize=real}
\usepackage{enumitem}
\begin{document}
\circledtextset{width=1em}
\circledtext{8}\quad
\circledtext{888}\quad
\circledtext*{8}\quad
\circledtext*{888}

Algumas alterações da configuração

\circledtext[boxtype=O]{12}\quad
\circledtext[boxtype=oo ]{88}\quad
\circledtext[boxtype=Oo ]{88}\quad
\circledtext[boxtype=OO ]{88}\quad
\circledtext*[boxtype=oo ]{88}\quad
\circledtext*[boxtype=Oo ]{88}\quad
\circledtext*[boxtype=OO ]{88}\quad

%\circledtext[yscale=0.5]{15}
\circledtext[width=3em,height=1em]{abc}

\begin{enumerate}
[label=\protect\circledtext{\arabic*}]
\item First item
\item Second item
\item Third item
\end{enumerate}
\end{document}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

%Existe também, a opção de usar o \texttt{pifont}\index{pifont} ou o pacote \texttt{circledsteps}

% \usepackage{chngcntr} % não e necessário a partir de  2018/04/01
% para usar counterwithin
\section{Escrevendo medidas internacionais}

Para escrever medidas, requer alguns cuidados tais como usar letra romana reta (por ser abreviatura da palavra), ter pequeno espaço entre valor e medida, entre outros.
Por exemplo, $\qty{10}{\kilo\gram}$ e não $10kg$, $\qty{5}{\litre}$ e não $5l$ e assim por diante.

Para facilitar a escrever unidades de medidas corretamente no documento, o \texttt{siunitx}\index{siunitx} providencia comandos para escrever na unidade internacional.
Normalmente \texttt(siunitx) usará formatação usando a fonte do modo matemático, mas pode converter para usar a fonte do modo texto com o comando \verb+\sisetup{unit-mode=text}+.

Para produzir o número rapidamente, tem o comando \verb+\num+\index{num@\verb+\num+}.
O comando \verb+\ang+\index{ang@\verb+\ang+} gera ângulos rapidamente.
Para exemplos a seguir, será assumido que foi carregado o pacote \texttt{siunitx} no \texttt{preamble}
Veja o Exemplo~\ref{ex15:num}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex11-09.tex},label=ex:11-09]
\begin{ltxlisting}[caption={ex15-num.tex},label=ex15:num]
Números

\num{12345.67890} \\ % espacando de 3 em 3 casas
\num{12345,67890} \\ % ``,'' também pode ser usado para decimal
// +- é substituido por $\pm$
\complexnum{1 +- 2i}       \\ % i é número complexo
\num{.3e45}       \\ % notacao cientifica
\numproduct{1.654 x 2.34 x 3.430} % ``x'' vira $\times$

% valor monetaria costuma ser arredondado em duas decimais
% DE (Alemão) usa virgula para decimais também
R\$\num[locale=DE,round-precision=2,round-mode=places]{27.3671}
e
R\$\num[locale=DE,round-precision=2,round-mode=places]{15}

Ângulos

\ang{10}    \\ % grau
\ang{5.3}  \\ % grau com decimal
\ang{-1,5}   \\ % ``,"" também pode ser usado como decimal
\ang{1;2;3} \\ % grau, minuto e segundo
\ang{;;1}   \\ % so o segundo
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

O comando \verb+\unit+\index{unit@\verb+\unit+} produz unidade de medida de acordo com o seu parâmetro (o comando da versão 2 equivalente \verb+\si+\index{si@\verb+\si+} também continua funcionando). 
A configuração de saída pode ser efetuado pelo parâmetro opcional.
O \verb+\unit+, assim como \verb+\num+ e \verb+\ang+, funciona tanto no modo texto como no modo matemático.

Em geral, coloca-se pequeno espaço entre valor e medida.
O comando \verb+\qty+\index{qty@\verb+\qty+} automatiza isso. O comando da versão 2 equivalente é \verb+\SI+\index{SI@\verb+\SI+} que pode ser usado quando \verb+\qty+ não está disponível como no caso de usar junto com o pacote \texttt{physics}, ou quer colocar símbolo antes do valor.

Ele tem a forma
\verb+\qty[opção]{valor}[simbolo anterior]{unidade}+
Veja o Exemplo~\ref{ex15:si}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex11-09.tex, parte b},label=ex:11-09:b]
\begin{ltxlisting}[caption={ex15-si.tex},label=ex15:si]
Entrada literal (Neste modo, não há opção de formatação).

\unit{kg.m/s^2} \\
\unit{g_{polymer}~mol_{cat}.s^{-1}}

Entrada pelo macro (permite configurar a formatação usando opção do comando ou do parâmetro do pacote).

\unit{\kilo\gram\per\square\second} \\
\unit{\gram_{polymer}\mol_{cat}\per\second}

Mais exemplos\\
\unit{\kilo\gram\metre\per\square\second} \\
\unit{\gram\per\cubic\centi\metre}        \\
\unit{\square\volt\cubic\lumen\per\farad} \\
\unit{\metre\squared\per\gray\cubic\lux}  \\
\unit{\henry\second}

Medidas com valor

\qty{1.23}{J.mol^{-1}.K^{-1}}  \\ % modo textual
\qty{.23e7}{\candela}          \\ % como macros
\qty[locale = DE]{1.345}{\coulomb\per\mole} % Alemanha usa virgula como decimal também

Medida não numérico

\qty[parse-numbers = false]{x}{\metre\per\second}

é mesmo que

$x\,\unit{\metre\per\second}$

% Comando da versão 2 permite colocar elemento antes do número.
% Para este exemplo, está arredondando para duas casas decimais.
\SI[per-mode=symbol,locale=DE,round-precision=2,round-mode=places,round-integer-to-decimal]{1.987}[R\$]{\per\kilogram} \\ % com simbolo R$ antes

Colocar medida após valor usando \verb+\unit+ e 
colocar valor já com medida usando \verb+\qty+ 
pode apresentar diferença no espaçamento. \\
\unit{10\celsius} \\ % valor concatenado com medida
\qty{10}{\celsius} % valor e medida usando macro
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Alguma das medidas padrão são: 
\verb+\ampere+\index{si!ampere@\verb+\ampere+}, \verb+\candela+\index{si!candela@\verb+\candela+}, \verb+\kelvin+\index{si!kelvin@\verb+\kelvin+}, \verb+\kilogram+\index{si!kilogram@\verb+\kilogram+}, \verb+metre+\index{si!metre@\verb+\metre+} ou \verb+meter+\index{si!meter@\verb+\meter+},
\verb+\mole+\index{si!mole@\verb+\mole+}, \verb+\second+\index{si!second@\verb+\second+}, \verb+\litre+\index{si!litre@\verb+\litre+}, \verb+\celsius+\index{si!celsius@\verb+\celsius+}, \verb+\percent+\index{si!percent@\verb+\percent+}, etc que são muitas. 
Para saber mais, consulte o manual do pacote.

Para conversão de medidas, 
\verb+\giga+\index{si!giga@\verb+\giga+}, \verb+\mega+\index{si!mega@\verb+\mega+}, \verb+\kilo+\index{si!kilo@\verb+\kilo+}, \verb+\hecto+\index{si!hecto@\verb+\hecto+}, \verb+\deca+\index{si!deca@\verb+\deca+}, \verb+\deci+\index{si!deci@\verb+\deci+}, \verb+\centi+\index{si!centi@\verb+\centi+}, \verb+\milli+\index{si!milli@\verb+\milli+}, \verb+\micro+\index{si!micro@\verb+\micro+}, \verb+\nano+\index{si!nano@\verb+\nano+}, etc. são disponíveis.

Exemplo: \verb+\qty{20}{\kilo\gram}+ e mesmo que \verb+\qty{20}{\kilogram}+.

Para operar, tem o \texttt{per, square}, etc.

\verb+\qty{30}{\kilo\meter\per\square\second}+
é mesmo que 
\verb+\qty{30}{\kilo\meter/\second^2}+
no modo padrão, mas o segundo não consegue controlar a formatação por usar forma literal em ``/'' e ``\verb+^2+''.

A configuração geral de formatação pode ser feito pela opção do pacote ou pelo comando \verb+\sisetup+\index{sisetup@\verb+\sisetup+}, mas também pode especificar localmente como no Exemplo~\ref{ex15:sisetup}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex11-09.tex, parte c},label=ex:11-09:c]
\begin{ltxlisting}[caption={ex15-sisetup.tex},label=ex15:sisetup]
\qty[mode=text]{30}{\kilo\meter\per\square\second}

\qty[per-mode=power]{30}{\kilo\meter\per\square\second}

\qty[per-mode=symbol]{30}{\kilo\meter\per\square\second}

\qty[per-mode=fraction]{30}{\kilo\meter\per\square\second}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

A nova versão, apesar de continuar com os comandos da versão 2, separa o comando para números complexos e com o produto, como pode ver no exemplo de \verb+\num+ (Exemplo~\ref{ex15:num}). Se o documento já está escrita usando os comando da versão 2 (sem esta separação), poderá carregar no modo de versão 2, com o comando \verb+\usepackage{siunitx}[=v2]+.

\section{Calculando o valor de uma função}
Para efetuar cálculo de funções matemáticas no \LaTeX, como no caso de tabelar funções nos pontos dados, podemos usar o pacote \texttt{xfp}\index{xfp} ou \texttt{numerica}\index{numerica}. O pacote \texttt{xfp} evalua a expressão matemática normalmente, enquanto que \texttt{numerica} evalua a expressão escrita na forma \TeX, permitindo que mesma expressão pode ser usado tanto para evaluar, como para exibir. Se usar a opção ``comma'' no carregamento de \texttt{numerica}, o ponto decimal da saída será virgula em vez de ponto.
% Além de \texttt{numerica} ter mais recursos,
O \texttt{numerica-tables}\index{numerica-tables} permite tabelar funções rapidamente.

Veja o Exemplo~\ref{ex15:xfp-e-numerica}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex11-08.tex},label=ex:11-08]
\begin{ltxlisting}[caption={ex15-xfp-e-numerica.tex},label=ex15:xfp-e-numerica]
%Supõe carregada seguintes pacotes: xfp, numerica e numerica-tables
Expressão a ser evaluada: $\sin(\frac{\pi}{4})$

Valor pelo \texttt{xfp} é $\fpeval{sin(pi/4)}$

Valor pelo \texttt{numerica} (com configuração padrão) é $\eval{\sin(\frac{\pi}{4})}$,

Tabelando função com \texttt{numerica-tables}

\tabulate[rvar=x,rstep={\frac{\pi}{10}},rows={10+1}]
{\sin x}[x=0]

A partir da versão de 2024, o \texttt{numerica-tables} suporta transpor a tabela.

\tabulate[rvar=x,rstep={\frac{\pi}{7}},rows={7+1},transpose]{\sin x}[x=0]

\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

% A nova versão (2024) de numerica-tables suporta transpor a tabela
%Forma transposta: Ele precisa que outros pacotes relacionados também sejam atualizadas.
%\tabulate[rvar=x,rstep={\frac{\pi}{10}},rows={10+1},transpose]{\sin x}[x=0]

Note que, o pacote \texttt{numerica} requerido pelo \texttt{numerica-tables} carrega o pacote \texttt{mathtools} na qual pode apresentar problemas nos comandos \verb+\underbrace{}+ e \verb+\overbrace{}+ quando diagramado com certas fontes. Para resolver tal problema, quando utiliza o pacote \texttt{mathtools} diretamente ou indiretamente, como no caso de \texttt{numerica}, coloque o código (dica de \url{https://github.com/latex3/unicode-math/issues/582})

\begin{singlespacing}
\begin{lstlisting}
\makeatletter
\AtBeginDocument{%
  \@ifpackageloaded{mathtools}{
    \@ifpackageloaded{unicode-math}{
      \let\underbrace\LaTeXunderbrace
      \let\overbrace\LaTeXoverbrace
    }{}
  }{}
}
\makeatother
\end{lstlisting}
\end{singlespacing}

no preâmbulo para corrigir.


\section{Controle das figuras e similares}

As vezes queremos que o elemento flutuante (figuras e tabelas) sejam inseridas exatamente no lugar onde foi colocado. 
Para isso, existe o pacote \texttt{float}\index{float} que fornece a opção extra ``H''\index{float!H} nas figuras e tabelas na qual impede de auto posicionar (manter no lugar). 
Para usar, é só carregar o pacote no \texttt{preamble} e usar o ``H'' como opção de posicionamento das figuras e tabelas que querem que fiquem no lugar.
Outro recurso do pacote \texttt{float} é alterar algumas configurações do elemento flutuante (como colocar moldura nas figuras), e criar um novo elemento flutuante.
Veja o Exemplo~\ref{ex15:float}

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex11-06.tex},label=ex:11-06]
\begin{ltxlisting}[caption={ex15-float.tex},label=ex15:float]
\begin{figure}[H] % No lugar
\centering
\begin{tikzpicture}
\draw (0,0) -- (1,0) -- (0.5, 0.5) -- cycle;
\end{tikzpicture}
\caption{Figura no lugar onde foi inserido}
\end{figure}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Para colocar subfiguras ou subtabelas, use o pacote \texttt{subcaption}\index{subcaption}.
Tendo \verb+\usepackage{subcaption}+ no \texttt{preamble}, podemos produzir subfiguras e subtabelas facilmente. 
Veja o Exemplo~\ref{ex15:subcaption}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex11-06.tex, parte b},label=ex:11-06:b]
\begin{ltxlisting}[caption={ex15-subcaption.tex},label=ex15:subcaption]
\begin{figure}[hbp!]
    \centering
    \begin{subfigure}[t]{0.45\linewidth}
        \centering
        Sub figura aqui.
        \caption{sub título 1}
    \end{subfigure}%
    ~
    \begin{subfigure}[t]{0.45\linewidth}
        \centering
        Segunda sub figura aqui.
        \caption{sub título 2}
    \end{subfigure}
    \caption{Uso de sub figura}
\end{figure}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Se a classe/pacote conflitar com \texttt{subcaption}, poderá optar pelo pacote \texttt{subfig}\index{subfig}.

Para que o texto contorne as figuras ou tabelas, poderá usar o pacote \texttt{wrapfig}\index{wrapfig} ou \texttt{floatflt}\index{floatflt}. 
O Exemplo~\ref{ex15:wrapfig} ilustra o uso de \texttt{wrapfig}.
 
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex11-06.tex, parte c},label=ex:11-06:c]
\begin{ltxlisting}[caption={ex15-wrapfig.tex},label=ex15:wrapfig]
\begin{wrapfigure}{l}{0.3\linewidth}
\centering
\begin{tikzpicture}
\draw (0,0) rectangle (3,1);
\end{tikzpicture}
\caption{Figura com texto contornando}
\end{wrapfigure}
A figura deve ser colocado dentro do ambiente wrapfigure. No exemplo, ``l'' significa left (esquerda) que posiciona a figura a esquerda (e texto a direita). Se colocar o ``r'' (right), a figura ficará a direita. O próximo parâmetro é a largura reservada para figura que foi 30\% da largura da linha. 
Note que são contadas junto as outras figuras.
Se pretende colocar tabela com texto em torno dele, use o ambiente \texttt{wraptable}, também do pacote \texttt{wrapfig}.
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Outra opção é usar o pacote \texttt{wapstuff}\index{wrapstuff} (Exemplo~\ref{ex15:wrapstuff}).

\begin{ltxlisting}[caption={ex15-wrapstuff.tex},label=ex15:wrapstuff]
\begin{wrapstuff}[c,top=2,type=table,width=\dimeval{\linewidth/3}]
\colorlet{shadecolor}{gray!30} % cor do fundo
\begin{shaded*}
\caption{Tabela com \texttt{wrapstuff}}
\begin{tabular}{lr}
primeira linha & 1 \\
segunda linha & 2
\end{tabular}
\end{shaded*}
\end{wrapstuff}
\lipsum[1]
\end{ltxlisting}

Para saber sobre os parámetros do \texttt{wrapstuff}, veja o manual.

Quando tem figura ou tabela muito larga, precisará rotacionar a página.
Isto pode ser feito pelo pacote \texttt{pdflscape}\index{pdflscape}.

Para que uma página fique rotacionada, coloque dentro do ambiente \texttt{landscape}\index{landscape}.
Note que, para rotacionar tabelas longas que pode ocupar mais de uma página, deverá usar o pacote \texttt{rotating}\index{rotating}.
Veja o Exemplo~\ref{ex15:pdflscape}.

\begin{singlespacing}
%\begin{lstlisting}[caption={ex11-06.tex, parte d},label=ex:11-06:d]
\begin{lstlisting}[caption={ex15-pdflscape.tex},label=ex15:pdflscape]
\begin{landscape}
\center
\begin{figure}[H]
\center
\begin{tikzpicture}
\draw[fill=gray!20] (0,0) -- (\linewidth,0) -- (\linewidth,5) -- (0, 5) -- cycle;
\end{tikzpicture}
\caption{Figura larga rotacionada}
\end{figure}
\end{landscape}
\end{lstlisting}
\end{singlespacing}
%
%\noindent
%\fbox{\begin{minipage}{\linewidth}
\begin{ltxlistingout}
\center
\rotatebox{-90}{\begin{minipage}{0.5\linewidth}
\center
\begin{tikzpicture}
\draw[fill=gray!20] (0,0) -- (\linewidth,0) -- (\linewidth,5) -- (0, 5) -- cycle;
\end{tikzpicture}
{Figura: Figura larga rotacionada}
\end{minipage}}
\end{ltxlistingout}
%\end{minipage}}
 
Para inserir figuras externas como parte de texto como o logotipo, poderá usar o pacote \texttt{inlinegraphicx}\index{inlinegraphicx} que disponibilizará o comando \verb+\inlinegraphics+ que tem a mesma sintaxe do \verb+\includegrahics+, mas que ajusta a altura e posição à linha de texto. Se quer alterar a escala, poderá usar a opção \texttt{scale} como em \verb+\includegrahics+ que faz ajuste relativa à altura da linha de texto.
   
% 
%float, OK
%wrapfig (ou floatflt), OK
%subfigure, OK.
%
%
%rotating (sideways,sidewaysfigure,sidewaystable) ou lscape/pdflscape? OK

%% overpic está no capítulo 16
%Para quem precisa sobrepor eementos sobre a image com frequência, o pacote \texttt{overpic}\index{overpic} baseado no ambiente \texttt{picture} implementa o ambiente \texttt{Overpic} que permite efetuar com facilidade. No Exemplo~\ref{ex15:overpic}, é assumido que tem o comando 
%
%\begin{lstlisting}
%\usepackage[percent]{overpic}
%\end{lstlisting}
%
%no preãmbulo (\texttt{percent} é para coordenada ficar em porcentagem relativa a laargura e altura da imagem).
%
%\begin{ltxlisting}[caption={ex15-overpic.tex},label=ex15:overpic]
%\begin{figure}[htbp!]
%\center
%\begin{Overpic}{ % com 'O' maiúsculo
%\includegraphics[width=0.45\textwidth]{latex-via-exemplos-fig}
%}
%\put(35,45){\LARGE $e^{\pi i}+1=0$}
%\end{Overpic}
%\caption{Sobreposição usando \texttt{overpic}\label{fig:sobreposicao:overpic}}
%\end{figure}
%\end{ltxlisting}


\section{Criando ambientes tipo figuras e tabelas}

O pacote \texttt{float}\index{float} permite criar elemento flutuante do tipo figuras e tabelas.
O novo elemento flutuante é crido pelo comando \verb+\newfloat+\index{newfloat@\verb+\newfloat+}.
O código
\begin{singlespacing}
%\begin{lstlisting}[caption={ex11-06.tex, parte d},label=ex:11-06:d]
\begin{lstlisting}
\newfloat{algorithm}{tbp}{loa}%[section]
\floatname{algorithm}{Algorítmo}
\end{lstlisting}
\end{singlespacing}
cria o ambiente \texttt{algorithm} que auto posiciona e aceita \verb+\caption+ dentro dele para enumerar e colocar o título. Veja o exemplo~\ref{ex15:newfloat}.

\begin{singlespacing}
%\begin{lstlisting}[caption={ex11-06.tex, parte d},label=ex:11-06:d]
\begin{lstlisting}[caption={ex15-newfloat.tex},label=ex15:newfloat]
\begin{algorithm}
\caption{Primeiro algorítimo}
Algorítimo aqui.
\end{algorithm}
\end{lstlisting}
\end{singlespacing}
%
\begin{ltxlistingout}
\begin{center}Algorítmo 1: Primeiro algorítimo\end{center}
Algorítimo aqui.
\end{ltxlistingout}

A lista do novo elemento flutuante é criado pelo comando \verb+\listof+. Para listar algorítmos criados acima, usa-se o comando \verb+\listof{algorithm}{Lista de algorítmos}+

Note que o elemento flutuante não pode dividir em páginas, sendo recomendado para figuras ou elementos menores. No caso do exemplo, o algorítimo pode ser maior, sendo recomendado dividir em páginas, como ocorre com a tabela longa. Para criar o ambiente do estilo \texttt{longtable} (tabela longa) na qual pode quebrar entre páginas, mas ficam enumeradas como os elementos flutuantes, usa-se o pacote \texttt{caption}\index{caption} que permite controlar títulos dos elementos flutuantes e similares.
O código
%
\begin{singlespacing}
%\begin{lstlisting}[caption={ex11-06.tex, parte d},label=ex:11-06:d]
\begin{lstlisting}
% definindo o tipo algorítimo
\DeclareCaptionType{algorithmtype}[Algorítimo][Lista de algorítimos]
% ambiente algorítmo configura o caption para tipo algorítimo
\newenvironment{algorithm}{\captionsetup{type=algorithmtype}}{}
%{\captionsetup{type=algorithmtype,justification=centering}}{}
% atalho para lista de algoritmos
\newcommand\listofalgorithms\listofalgorithmtypes
% contador subordinado a capítulo
\counterwithin{algorithmtype}{chapter}
\end{lstlisting}
\end{singlespacing}
%
Cria o ambiente \texttt{algorithm} similar a \texttt{longtable}.

\section{Melhorando as tabelas}

O pacote \texttt{booktabs}\index{booktabs} oferece comandos para traçar linhas horizontais com espaçamento ajustado adequadamente. Use \verb+\toprule+\index{toprule@\verb+\toprule+} para linha acima da tabela,
\verb+\midrule+\index{midrule@\verb+\midrule+} e \verb+\cmidrule+\index{cmidrule@\verb+\cmidrule+} para linhas dentro da tabela e 
\verb+\bottomrule+\index{bottomrule@\verb+\bottomrule+} para linha abaixo da tabela. No caso de \texttt{ABNT}, encima e embaixo da tabela é fechada, mas não no lado esquerdo e direito. 

Veja a Tablea~\ref{ex15:booktabs}).

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex11-06.tex, parte c},label=ex:11-06:c]
\begin{ltxlisting}[caption={ex15-booktabs.tex},label=ex15:booktabs]
\begin{table}[hbp!]
\begin{center}
\caption{Tabela com \texttt{booktabs}}\label{tab:booktabs}
\begin{tabular}{ll} 
\toprule
   produto & preço \\
\midrule
   cenouras  (500g)          & R\$0,50  \\
   cogumelos (vidro de 500g) & R\$5,00  \\
   batata    (1Kg)           & R\$1,20  \\ \midrule % \hline
   total & R\$6,70 \\
   \bottomrule
\end{tabular}
\end{center}
\end{table}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

%O comando \verb+\legend+ é da classe \texttt{abntex2}, mas se quiser usar sem a classe \texttt{abntex2}, basta colocar o comando
%\begin{verbatim}
%\providecommand{\legend}[1]{\par \medskip #1 \smallskip}
%\end{verbatim}
%ou similar no preâmbulo do documento para definir o comando.
%
%Para tabelas longas simples, poderá usar o pacote \texttt{longtable}, mas para tabelas longas mais sofisticadas como exigido pelo \texttt{ABNT}, costuma usar o pacote \texttt{xtab}\index{xtab} que implementa o ambiente \texttt{xtabular}\index{xtabular}
%
%A Tabela~\ref{ex15:xtab} é tabela que ocupa várias páginas.
%Note que o termo   ``continua'' (caso ocupar duas ou mais páginas), ``continuação'' (caso ocupar três páginas) e ``conclusão'' (caso ocupar duas ou mais páginas) no cabeçalho da tabela, conforme ABNT.
%A Tabela~\ref{ex15:xtab} foi criado pelo ambiente \texttt{xtabular} do pacote \texttt{xtab} que requer duas compilações seguidas para ajustar corretamente.
%Veja a Tablea~\ref{ex15:xtab}.
%
%%\begin{singlespacing}
%%\begin{LTXexample}[pos=b,caption={ex11-06.tex, parte c},label=ex:11-06:c]
%\begin{ltxlisting}[caption={ex15-xtab.tex},label=ex15:xtab]
%\begin{center}
%\topcaption{Inflação (IPCA) e juro de poupança de 2022}\label{tab:inflacao}
%\tablefirsthead{ % cabeçalho da primeira página
%  % \PWSTlastpage é criado pelo \newcount e não pelo \newcounter (não tem prefixo 'c@')
%  \ifnum\PWSTlastpage > 1 % Se a tabela ocupar mais de uma página
%    \multicolumn{3}{r}{(continua)}\\ 
%  \fi
%  \toprule
%    & \multicolumn{2}{c}{Índice} \\  \cmidrule{2-3}
%  \textbf{Mês} & \textbf{Inflação} & \textbf{Poupança}\\ \midrule}
%\tablehead{% cabeçalho das páginas do meio  
%  \multicolumn{3}{r}{(continuação)}\\ \toprule
%    & \multicolumn{2}{c}{Índice} \\  \cmidrule{2-3}
%  \textbf{Mês} & \textbf{Inflação} & \textbf{Poupança} \\ \midrule}
%\tablelasthead{ % cabeçalho da última página
%  \multicolumn{3}{r}{(conclusão)}\\ \toprule
%    & \multicolumn{2}{c}{Índice} \\  \cmidrule{2-3}
%  \textbf{Mês} & \textbf{Inflação} & \textbf{Poupança} \\ \midrule}
%\begin{xtabular}{lrc}
%Janeiro   &  0,54 & 0,5608 \\ 
%Fevereiro &  1,01 & 0,5000 \\
%Março     &  1,62 & 0,5976 \\
%Abril     &  1,06 & 0,5558 \\
%Maio      &  0,47 & 0,6671 \\
%Junho     &  0,67 & 0,6491 \\
%Julho     & -0,68 & 0,6639 \\
%Agosto    & -0,36 & 0,7421 \\
%Setembro  & -0,29 & 0,6814 \\
%Outubro   &  0,59 & 0,6501 \\
%Novembro  &  0,41 & 0,6515 \\
%Dezembro  &  0,62 & 0,7082 \\
%\midrule
%Acumulado do ano & 5,79 & 7,8997 \\
%\bottomrule
%\end{xtabular}
%
%\legend{Fonte: \url{https://blog.nubank.com.br/ipca-2022/}, 
%  \url{https://brasilindicadores.com.br/poupanca/}
%}
%\end{center}
%\end{ltxlisting}
%%\end{LTXexample}
%%\end{singlespacing}
%
% NOTA: para ABNT
% O \texttt{xtabular} não tem opção padrão para repetir titulo da tabela entre páginas, o que é exigido pelo IBGE. Deverá usar o \texttt{longtblr} do pacote \texttt{tabularray}
%

Para colorir linhas e ou células da tabela de forma simples, poderá carregar o pacote \texttt{xcolor} com opção \texttt{table} colocando o código
\begin{singlespacing}
\begin{lstlisting}
\usepackage[table]{xcolor}
\end{lstlisting}
\end{singlespacing}

Se for usar pacote que carrega o \texttt{xcolor} automaticamente, coloque antes do pacote correspondente.
Se estiver usando a classe \texttt{beamer}, coloque a opção \texttt{xcolor=table} no \texttt{beamer} como em
\begin{singlespacing}
\begin{lstlisting}
\documentclass[xcolor=table]{beamer}
\end{lstlisting}
\end{singlespacing}

Com a opção \texttt{table} no \texttt{xcolor}, o pacote \texttt{colortbl}\index{colortbl} será carregado com ajustes necessários.
Note que pacotes tais como \texttt{tikz} e \texttt{pdfpages} carregam o \texttt{xcolor}. Logo, deve colocar \verb+\usepackage[table]{xcolor}+ antes de tais pacotes para evitar erros. Outra forma de evitar erros é colocar
\verb+\PassOptionsToPackage{table}{xcolor}+%\index{PassOptionsToPackage@\verb+\PassOptionsToPackage+}
 logo em seguida do \verb+\documentclass{}+ para que, qualquer pacote que venha a carregar o \texttt{xcolor} passe opção \texttt{table} para ele. Neste caso, \verb+\usepackage{xcolor}+ pode ser colocado sem preocupação.
 
Como exemplo,vamos colorir as linhas ímpares de cinza clara para para facilitar o acompanhamento das linhas.
Veja a Tablea~\ref{ex15:xcolor:table}

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex11-06.tex, parte c},label=ex:11-06:c]
\begin{ltxlisting}[caption={ex15-xcolor-table.tex},label=ex15:xcolor:table]
\begin{table}[hbp!]
\begin{center}
\caption{Colorindo as linhas}\label{tab:xcolor}
\rowcolors{2}{white}{gray!15}
\begin{tabular}{ll} 
\toprule
   produto & preço \\
\midrule
   cenouras  (500g)          & R\$0,50  \\
   cogumelos (vidro de 500g) & R\$5,00  \\
   batata    (1Kg)           & R\$1,20  \\
   beterraba (1Kg)           & R\$1,50  \\
   alface    (1 maço)        & R\$0,50  \\
\midrule % \hline
   \rowcolor{blue!15}
   total & R\$8,70 \\
\bottomrule
\end{tabular}
\end{center}
\end{table}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Para configuração de cores mais sofisticada, veja o manual do pacote \texttt{colortbl}\index{colortbl}.

Para implementação mais moderna da tabela, poderá usar o ambiente \texttt{tblr}\index{tblr} do pacote \texttt{tabularray}\index{tabularray} que permite incorporar recursos do \texttt{tabularx} como do \texttt{colortbl}, entre outros. Veja o Exemplo~\ref{ex15:table:tblr}. Note que \texttt{tblr} funciona também dentro da fórmula, isto é, pode ser usado como \texttt{array}. Para usar pacotes adicionais como \texttt{booktabs}, \texttt{diagbox}, etc., usa-se o comando \verb+\UseTblrLibrary+ para que seja configurado devidamente.

Colocando no \texttt{preamble}

\begin{singlespacing}
\begin{lstlisting}
\usepackage{xcolor}
\usepackage{tabularray}
\UseTblrLibrary{booktabs}
\end{lstlisting}
\end{singlespacing}

poderá usar o código como do Exemplo~\ref{ex15:table:tblr}.

\begin{ltxlisting}[caption={ex15-table-tblr.tex},label=ex15:table:tblr]
\begin{table}[hbp!]
\begin{center}
\caption{Tabela com \texttt{tabularray}}\label{tab:tabulaary}
\begin{tblr}{ %configurações
colspec = {rX}, % alinhamentos/espaçamentos das colunas: l->left, r-> right, c->center, X->automatic
row{odd} = {gray!15}, % cor da linha impar
%row{even} = {white}, % cor da linha par
row{1} = {font=\bfseries\sffamily}, % primeira linha
row{2-Z} = {font=\sffamily}, % linha 2 até a última linha
row{Z} = {fg=blue}, % última linha
}
% conteúdo da tabela
  produto & preço \\
\midrule
  cenouras  (500g)          & R\$0,50 \\
  cogumelos (vidro de 500g) & R\$5,00 \\
  batata    (1Kg)           & R\$1,20 \\
  beterraba (1Kg)           & R\$1,50 \\
  alface    (1 maço)        & R\$0,50 \\
\bottomrule
  total & R\$8,70 \\   
\end{tblr}
\end{center}
\end{table}
\end{ltxlisting}

O \texttt{tablarray} implementa também a funcionalidade da tabela longa correspondente que pode ser usado pelo ambiente \texttt{longtblr}, que é mesmo que \texttt{tblr} com a primeira opção opcional como \texttt{long}, % tblr com a opção \texttt{long} não ficará mesmo que longtblr 
mas não consegue configurar perfeitamente para Associação Brasileira das Normas Técnicas (\texttt{ABNT})\index{ABNT} somente com comandos padrão, por não conseguir saber se a tabela cabe ou não em uma única página (2024) (Para ajustar como \texttt{ABNT}, use o pacote \texttt{tabularray-abnt} explicado na Seção~\ref{sec:abnt:tabela} do Capítulo~\ref{cap:abnt}, na página~\pageref{sec:abnt:tabela}).
Como um exemplo de ajuste de tablas, segue uma configuração parecido com a \texttt{ABNT} no caso de tabela ocupar mais de uma página.

\begin{singlespacing}
\begin{lstlisting}
\usepackage{url} % para endereço web, se hyperref não está carregado.
\usepackage{xcolor} % para colorir tabelas
\usepackage{tabularray} % tabularray
\UseTblrLibrary{booktabs} % adiciona booktabs
% configurando
\DefTblrTemplate{firsthead-text}{default}{\par~\hfill(continua)} % primeira página
\DefTblrTemplate{lasthead-text}{default}{\par~\hfill(conclusão)} %última página
\DefTblrTemplate{conthead-text}{default}{\par~\hfill(continuação)} % páginas do meio
% desativando os rodapés
\DefTblrTemplate{firstfoot,middlefoot}{default}{}
% redefinindo o título da primeira página
\DefTblrTemplate{caption}{default}{
  \UseTblrTemplate{caption-tag}{default}
  \UseTblrTemplate{caption-sep}{default}
  \UseTblrTemplate{caption-text}{default}
  \UseTblrTemplate{firsthead-text}{default} % acrescentar o firsthead-text
}
 % redefinindo o título das páginas do meio
\DefTblrTemplate{capcont}{default}{
  \UseTblrTemplate{caption-tag}{default}
  \UseTblrTemplate{caption-sep}{default}
  \UseTblrTemplate{caption-text}{default}
  \UseTblrTemplate{conthead-text}{default}
}
% redefinindo o título da última página
\DefTblrTemplate{lasthead}{default}{
  \UseTblrTemplate{caption-tag}{default}
  \UseTblrTemplate{caption-sep}{default}
  \UseTblrTemplate{caption-text}{default}
  \UseTblrTemplate{lasthead-text}{default} % acrescentar o lasthead-text
}
% último rodapé para inserir fonte
\DefTblrTemplate{lastfoot-text}{default}{} % inicialmente vazio
\DefTblrTemplate{lastfoot}{default}{ % rodapé da última página
  \UseTblrTemplate{lastfoot-text}{default} % colocar somente o lastfoot-text
}
% tamanho das fontes
\SetTblrStyle{firsthead-text,lasthead-text,conthead-text}{\footnotesize}
\SetTblrStyle{caption,lasthead,capcont}{\normalsize}
\SetTblrStyle{lastfoot}{\footnotesize}
\end{lstlisting}
\end{singlespacing}

no \texttt{preamble} para que a tabela do Exemplo~\ref{ex15:table:longtblr} fique similar ao \texttt{ABNT}. Note que \verb+\legend+ é um comando de \texttt{memoir} usado pelo \texttt{ABNTeX2}. Se não estiver usando o \texttt{ABNTeX2} ou \texttt{memoir}, deverá substituir com outra, ou  providenciar algo como
\begin{lstlisting}
\providecommand{\legend}[1]{\par \medskip #1 \smallskip}
\end{lstlisting}
no \texttt{preamble}.

\begin{singlespacing}
\begin{lstlisting}[caption={ex15-table-longtblr.tex},label=ex15:table:longtblr]
\DefTblrTemplate{lastfoot-text}{default}{\legend{Fonte: \url{https://blog.nubank.com.br/ipca-2022/}\par\hspace{3em}\url{https://brasilindicadores.com.br/poupanca/}
}
}
\begin{longtblr}
[%
  caption = {Inflação (IPCA) e juro de poupança de 2022}, % titulo
  label={tab:inflacao}, % rotulo para referências cruzadas
]
{
  %theme=default, % default é tema padrão
  colspec = {XXX}, % colunas de largura automatica
  rowhead = 1, % primeira linha será repetida em todas páginas
  row{1} = {font=\bfseries}, % linha de título
  row{even} = {gray!15}, % página par em cinza
  row{Z} = {font=\bfseries}, % última linha  
}
\toprule
Mês & Inflação & Poupança \\
\midrule
Janeiro   &  0,54 & 0,5608 \\ 
Fevereiro &  1,01 & 0,5000 \\
Março     &  1,62 & 0,5976 \\
Abril     &  1,06 & 0,5558 \\
Maio      &  0,47 & 0,6671 \\
Junho     &  0,67 & 0,6491 \\
Julho     & -0,68 & 0,6639 \\
Agosto    & -0,36 & 0,7421 \\
Setembro  & -0,29 & 0,6814 \\
Outubro   &  0,59 & 0,6501 \\
Novembro  &  0,41 & 0,6515 \\
Dezembro  &  0,62 & 0,7082 \\
\bottomrule
Acumulado do ano & 5,79 & 7,8997 \\
\end{longtblr}
\end{lstlisting}
\end{singlespacing}

% onde \verb+\legend+ é o comando da classe \texttt{abntex2}.

Observe que, nos argumentos dos comandos de configuração, o espaço serão eliminados, exceto quando estiver dentro do outro comando. Isto melhor a precisão dos cálculos necessários. Assim, usa-se o comando \verb+\space+ (ou o espaço não quebrável ``\verb+~+'', caso não precise quebrar em linhas).
O pacote \texttt{tabularray} também disponibiliza o ambiente \texttt{talltblr}\index{talltblr} que pode ser usado dentro do ambiente \texttt{table}, mas que aceitam os mesmos parâmetros do \texttt{longtblr}, permitindo, por exemplo, colocar rodapé da tabela, entre outros.

Com o uso de \texttt{siunitx}, poderá lidar com tabelas que tem números flutuantes\index{tabelas!com números}, como no Exemplo~\ref{ex15:siunitx:table}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex11-06.tex, parte c},label=ex:11-06:c]
\begin{ltxlisting}[caption={ex15-siunitx-table.tex},label=ex15:siunitx:table]
% não funciona?
%
\begin{table}[hbp!]
\begin{center}
\caption{Tabela com \texttt{siunitx}}\label{tab:siunitx}
\medskip
\begin{tblr}
{
  colspec = { X X[r, si={locale=DE}] },
  row{1} = {font=\bfseries}, % linha de título
  row{even} = {gray!15}, % página par em cinza
  row{Z} = {font=\bfseries,white}, % última linha  
}
\toprule
   produto & \text{preço} \\
\midrule
   cenouras  (\qty{500}{\gram})          & R\$0.50 \\
   cogumelos (vidro de \qty{500}{\gram}) & R\$5.00 \\
   batata    (\qty{1}{\kilogram})        & R\$1.20 \\
\midrule
   total & R\$6.70 \\
\bottomrule
\end{tblr}
\end{center}
\end{table}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

No caso do ambiente \texttt{tabular}, use a especificação da coluna ``S''. O exemplo anterior usa o pacote \texttt{tabularray}, com o comando adicional \verb+\UseTblrLibrary{booktabs,siunitx}+ para configurar o uso de \texttt{booktabs} e \texttt{siunitx}.

Nas colunas que usam o \texttt{siunitx}, deverá tomar cuidado quando tem o caractere ``e'' que é uado para notação científica dos números (na qual tenta interpretar como número). Tais colunas no ambiente \texttt{tabular}, basta colocar entre chaves para prevenir que seja interpretado como número, mas no ambiente \texttt{tblr} e \texttt{longtblr} do \texttt{tabularray}, deverá ficar dentro do comando \verb+\text+, o que requer cuidados.

Note que, com o uso de localidade ``DE'' (Alemão) na coluna de \texttt{siunitx}, os decimais serão convertidos automaticamente para virgula em vez do ponto.
Se quer alinhar devidamente nos decimais, deverá usar mais opções para ``si'', como no Exemplo~\ref{ex15:siunitx:long:table}, cuja saída foi omitida. Casos como estes que requer vários parâmetros, poderá configurar com \verb+\sisetup+\index{sisetup@\verb+\sisetup+} antes da tabela, lembrando que o efeito do \verb+\sisetup+ continuará até que seja reconfigurado novamente.

\begin{singlespacing}
\begin{lstlisting}[caption={ex15-siunitx-long-table.tex},label=ex15:siunitx:long:table]
\sisetup{
  locale=DE, % Alemão: virgula como decimal
  table-format=4.2, % 4 digitos, 2 digitos decimais
  table-number-alignment=center % alinhar no decimal
}  
\begin{longtblr}
[%
  caption = {Tabela longa}, % titulo
  label={tab:longa}, % rotulo para referências cruzadas
]
{ 
  colspec = {XX[r,si]}, % X é largura automatica. Segundo X tem como parâmetro opcional r (direita) e si (número usando pacote siunitx)
  rowhead = 1, % primeira linha será repatida em todas páginas
  row{1} = {font=\bfseries}, % linha de título
  row{even} = {gray!50}, % linhas par em cinza
  row{Z} = {font=\bfseries,white}, % última linha  
}
\toprule
 texto & \text{número} \\ \midrule
 linha 1 & 1.1 \\ % \midrule
 linha 2 & 2.2 \\ % \midrule
 linha 3 & 3.3 \\ % \midrule
 linha 4 & 4.4 \\ % \midrule
 linha 5 & 5.5 \\ % \midrule
 linha 6 & 6.6 \\ % \midrule
 linha 7 & 7.7 \\ % \midrule
 linha 8 & 8.8 \\ % \midrule
 linha 9 & 9.9 \\ % \midrule
 linha 10 & 10.10 \\ % \midrule
 linha 11 & 11.11 \\
 \bottomrule
 \end{longtblr}
\end{lstlisting}
\end{singlespacing}

\section{Moldura, enumeração das linhas e marca d'água}
Para enfeitar o documento, como colocar moldura nos elementos, usamos os pacotes adicionais, exceto molduras simples fornecidos pelo \verb+\fbox+\index{fbox@\verb+\fbox+}.

O pacote \texttt{fancybox}\index{fancybox} oferece caixas com molduras extras tais como \verb+\shadowbox+\index{shadowbox@\verb+\shadowbox+} (com sombra), \verb+doublebox+\index{doublebox@\verb+\doublebox+} (moldura dupla) e \verb+\ovalbox+\index{ovalbox@\verb+\ovalbox+} (moldura com quinas arredondadas).

Note que \verb+\shadowbox+ não permite controlar a cor da sombra. 
Se quer caixas mais sofisticadas, poderá usar o pacote \texttt{tcolorbox}\index{tcolorbox}.
No caso de querer construir uma caixa personalizada, também podemos usar o pacote gráfico tal como o \texttt{tikz}.
Veja o Exemplo~\ref{ex15:fancybox}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex11-08.tex},label=ex:11-08]
\begin{ltxlisting}[caption={ex15-fancybox.tex},label=ex15:fancybox]
\shadowbox{Caixa com sombra}

\doublebox{Caixa com moldura dupla}

\ovalbox{Caixa com quina arredondada}

\Ovalbox{Outra caixa com quina arredondada}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Lembre-se que, se o conteúdo tiver parágrafo, deverá usar em conjunto com o \texttt{minipage}.
Também permite colocar conteúdo ou moldura na página com comandos tais como \verb+\fancyput+\index{fancyput@\verb+\fancyput+}, \verb+\thisfancyput+\index{thisfancyput@\verb+\thisfancyput+}, \verb+\fancypage+\index{fancypage@\verb+\fancypage+} e \verb+\thisfancypage+\index{thisfancypage@\verb+\thisfancypage+}.

Por exemplo, o código
\begin{singlespacing}
\begin{lstlisting}
\thisfancypage{%
\setlength{\fboxsep}{8pt}%
\setlength{\shadowsize}{8pt}%
\shadowbox}{}
\end{lstlisting}
\end{singlespacing}
acrescenta moldura com sombra na página atual.

Para colocar moldura nos conteúdos longos que podem ocupar mais de uma página, podemos usar o pacote \texttt{framed}\index{framed}.
Para colocar cor de fundo, deverá definir a cor do fundo \texttt{shadecolor}\index{shadowcolor}. 
Para isso, é recomendado usar o pacote \texttt{xcolor} visto na Seção~\ref{sec:xcolor} do Capítulo~\ref{chap:xcolor:tikz} (não é o pacote \texttt{color}) que tem facilidade de manipulação das cores.
Assim, para executar o código do Exemplo~\ref{ex15:framed}, deverá carregar tanto o pacote \texttt{framed} como o \texttt{xcolor}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex11-08.tex, parte b},label=ex:11-08:b]
\begin{ltxlisting}[caption={ex15-framed.tex},label=ex15:framed]
\begin{framed}
O texto com moldura pode ser produzido facilmente com o pacote \texttt{framed}.
\end{framed}

\colorlet{shadecolor}{black!15} % cor do fundo usando xcolor
\begin{shaded*}
O texto com fundo pode ser produzido facilmente com o pacote \texttt{framed}.
\end{shaded*}

\begin{leftbar}
O ambiente \texttt{leftbar} coloca traço no lado esquerdo do texto.
\end{leftbar}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

O comando \verb+\colorlet+\index{colorlet@\verb+\colorlet+} do pacote \texttt{xcolor} permite definir cor a partir das cores existentes.
\verb+black!15+ é 15\% de preto. Veja a Seção~\ref{sec:xcolor} do Capítulo~\ref{chap:xcolor:tikz} para mais detalhes sobre recursos de \texttt{xcolor}.

Note que, diferente das caixas padrões do \LaTeX{} ou do pacote \texttt{graphicx}, os ambientes do \texttt{framed} podem quebrar em linhas e em páginas.

Para criar caixa de texto similar ao recado fixado, usa-se o pacote \texttt{postit}\index{postit}, como no Exemplo~\ref{ex15:postit}.

\begin{ltxlisting}[caption={ex15-postit.tex},label=ex15:postit]
\begin{PostItNote}
\lipsum[1][1-2]
\end{PostItNote}
%tikz rendering, with lipsum paragraph
\begin{PostItNote}[Render=tikz]
\lipsum[1][1-2]
\end{PostItNote}
%tikzv2 rendering, with lipsum paragraph
\begin{PostItNote}[Render=tikzv2]
\lipsum[1][1-2]
\end{PostItNote}
\end{ltxlisting}

O pacote \texttt{postit} requer \texttt{xfp} que deve ser carregado no preãmbulo.

Para indicar as correções a serem efetuadas, é útil ter linhas enumeradas.
Para enumerar as linhas do documento, usa-se o pacote \texttt{lineno}\index{lineno}.

Para que as fórmulas também sejam enumeradas, use
\begin{singlespacing}
\begin{lstlisting}
\usepackage[mathlines]{lineno}
\end{lstlisting}
\end{singlespacing}
%
no \texttt{preamble}.
Os comandos \verb+\linenumbers+\index{linenumbers@\verb+\linenumbers+} e \verb+\nolinenumbers+\index{nolinenumbers@\verb+\nolinenumbers+} são usados para ativar/desativar as enumerações.
Se pretende enumerar todo documento, coloque \verb+\linenumbers+ no \texttt{preamble}.
Para enumerar a cada ``<n>'' linhas, use \verb+\modulolinenumbers[<n>]+\index{modulolinenumbers@\verb+\modulolinenumbers+}.
Veja o Exemplo~\ref{ex15:lineno}.

%\begin{singlespacing}
%\setlength{\linenumbersep}{0pt} % default is 10pt
%\begin{internallinenumbers}
%\begin{lstlisting}[caption={ex12-06.tex},label=ex:12-06]
\begin{lstlisting}[caption={ex15-lineno.tex},label=ex15:lineno]
\linenumbers % ativa a enumeracao das linhas
\modulolinenumbers[3] % enumerar de 3 em 3

\lipsum[1] % preencher

\nolinenumbers % desativa a enumeração das linhas
\lipsum[1] % 1 paragrafos

% enumerando so um trecho.
\resetlinenumber % reset the line number
\modulolinenumbers[1] % enumerar todas
\begin{linenumbers}
   \lipsum[2] % 2 paragrafos
\end{linenumbers}
\end{lstlisting}
%\end{lstlisting}
%%\end{internallinenumbers}
%\end{singlespacing}
%
\begin{singlespacing}
\noindent
\fbox{\parbox{\dimexpr(\linewidth-0.8em)}{\hspace*{1em}
\begin{minipage}{\dimexpr(\linewidth-1.8em)}
%\setlength{\linenumbersep}{-5pt} % default is 10pt
\linenumbers % ativa a enumeracao das linhas
\modulolinenumbers[3] % enumerar de 3 em 3
\begin{internallinenumbers}
\lipsum[1] % preencher
\end{internallinenumbers}
\nolinenumbers % desativa a enumeração das linhas
\lipsum[1] % 1 paragrafos

% enumerando so um trecho.
\resetlinenumber % resset the line number
\modulolinenumbers[1] % enumerar todas
\begin{internallinenumbers}
%\begin{linenumbers}
        \lipsum[2] % 3 paragrafos
%\end{linenumbers}
\end{internallinenumbers}
\end{minipage}}}
%\setlength{\linenumbersep}{10pt} % set to default
\end{singlespacing}
% O comando \dimexpr foi usado para efetuar calculo de dimensão dentro do parâmetro de minipage. Sem ele, não efetuará calculo de medidas.

No Exemplo~\ref{ex15:lineno} foi usado o comando \verb+\lipsum+\index{lipsum@\verb+\lipsum+} que gera textos aleatórios em grego para preencher as páginas para testes. 
Logo, precisa carregar o pacote \texttt{lipsum}\index{lipsum} no \texttt{preamble} para que o exemplo funcione.
Para caso que queira preencher com texto contendo fórmulas, existe o pacote \texttt{blindtext}\index{blindtext}.

Existem vários pacotes que permitem colocar conteúdos em todas as páginas, como no caso de marca d'água. 
Entre eles, vamos ver o caso do uso de \texttt{background}\index{background}, \texttt{draftwatermark}\index{draftwatermark} e
\texttt{eso-pic}\index{eso-pic}.
% \texttt{xwatermark}\index{xwatermark}.

O código
%
\begin{singlespacing}
\begin{lstlisting}
\documentclass{article}
\usepackage{background}
\usepackage{tikz} % necessário carregar para usar background
\usepackage{xcolor}
\usepackage{graphicx}
\usepackage{lipsum}
\backgroundsetup{color=red,opacity=0.2,contents={\sffamily\bfseries RASCUNHO}}
\begin{document}
\lipsum
\end{document}
\end{lstlisting}
\end{singlespacing}

Coloca a marca d'àgua ``RASCUNHO'' em todas páginas, usando o pacote \texttt{background}\index{background}.
Note que, se quer colocar a imagem externa, basta usar o \verb+\includegraphics+ em vez de texto.
Para desativar/modificar a marca d'água no meio do documento, basta chamar o \verb+\backgroundsetup+ novamente.

O mesmo efeito pode ser obtido pelo pacote \texttt{draftwatermark}\index{draftwatermark} como segue.

\begin{singlespacing}
\begin{lstlisting}
\documentclass{article}
\usepackage{draftwatermark}
\usepackage{tikz}
\usepackage{xcolor}
\usepackage{graphicx}
\usepackage{lipsum}
\DraftwatermarkOptions{color=red,text={\tikz{\node[opacity=0.2]{\sffamily\bfseries RASCUNHO}}}} % versão 2.x (nova)
% \SetWatermarkText{\sffamily\bfseries\Huge RASCUNHO} % versão antiga
\begin{document}
\lipsum
\end{document}
\end{lstlisting}
\end{singlespacing}

A funcionalidade é similar ao \texttt{background}, mas não consegue controlar a opacidade da imagem do fundo. Uma forma de contornar isso é usar o \verb+\tikz+ como no exemplo anterior.

% xwatermark não está tendo manutenção, não funcionado no sitema novo.
%No caso do \texttt{xwatermark}\index{xwatermark}, tem opção de colocar a marca d'àgua na frente, em vez do lado de trás. O código
%%
%\begin{singlespacing}
%\begin{lstlisting}
%\documentclass{article}
%\usepackage{xwatermark}
%\usepackage{xcolor}
%\usepackage{graphicx}
%% versão ``*'' coloca na na frente da figura
%\newwatermark*[allpages,color=red!50,angle=45,scale=3,xpos=0,ypos=0]{RASCUNHO}
%\begin{document}
%\lipsum[1-2]
%\begin{figure}[!ht]
%\centering
%\includegraphics[width=0.3\linewidth]{minha-figura}
%\end{figure}
%\lipsum[1-2]
%\end{document}
%\end{lstlisting}
%\end{singlespacing}
%
%Coloca RASCUNO em todas as  páginas. Usando a versão ``*'', poderá colocar na frente da figura ``minha-figura''.

Outro pacote é o \texttt{eso-pic}\index{eso-pic}. Apesar de ser mais difícil de usar por basear no ambiente \texttt{picture}, era um pacote popular e pacotes/documentos mais antigos podem fazer uso dele.

Por exemplo, o código
%
\begin{singlespacing}
\begin{lstlisting}
\documentclass{article}
\usepackage{graphicx}
\usepackage{eso-pic}
\usepackage{xcolor}
\usepackage{lipsum}
% marca d'agua
% Versão sem * é para toda página. Versão * é somente na página corrente
\AddToShipoutPictureBG{%
  %\AtPageLowerLeft{% Este é padrão
  \unitlength=\paperwidth
    \put(0.3,0.5){\rotatebox{45}{%
      \scalebox{3}{\Huge\sffamily\bfseries\color{black!25}Rascunho}}%
    }
  %}%\AtPageLowerLeft
}%\AddToShipoutPictureBG
\begin{document}
\lipsum[1-4]
\end{document}
\end{lstlisting}
\end{singlespacing}
%
após carregar o pacote \texttt{eso-pic}, colocará a palavra ``Rascunho'' rotacionado por $45^\circ$ em todas as páginas como marca d'água.
O comando \verb+\AddToShipoutPictureBG+ criará um ambiente \texttt{picture}. Logo, podemos colocar os comandos aceitos no ambiente \texttt{picture} dentro dele.

Para limpar o fundo, usa-se o \verb+\ClearShipoutPictureBG+\index{ClearShipoutPictureBG@\verb+\ClearShipoutPictureBG+}.

Os comandos do \texttt{eso-pic} tem a versão ``BG'' para atrás da página como marca d'agua e versão ``FG'' para colocar na frente da página. Por exemplo, \verb+\AddToShipoutPictureFG+\index{AddToShipoutPictureFG@\verb+\AddToShipoutPictureFG+} coloca na frente em vez de trás da página.

Caso pretende colocar marca d'água sem o pacote, poderá usar o recurso de \verb+\AddToHook+ do \LaTeX{} %LaTeX 01/10/2020 2020
em vez de usar o pacote, como no exemplo a seguir.

\begin{singlespacing}
\begin{lstlisting}
\documentclass{article}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{tikz}
\usepackage{lipsum}
% marca d'água personalidada.
% neste comando, poderá receber parametro opcional para repassar para \node
\newcommand{\tikzwatermark}[1][draw=red, text=red]{
  \begin{tikzpicture}[overlay, remember picture]
    \node[rotate=45, scale=5, #1] at (current page) {\bfseries\sffamily RASCUNHO};
  \end{tikzpicture}
}
% comando para colocar marca d'água: poderá desativar/alterar com o uso de \newcommand
\newcommand{\putwatermark}{
  \tikzwatermark[opacity=0.33, fill=yellow, draw=red, text=red]   
}
% shipout é chamado quando gera páginas
% Adiciona no shipout
%\AddToHook{shipout/foreground}{ % na frente
\AddToHook{shipout/background}{ % atrás
  \putwatermark
}
\begin{document}
\lipsum[1-4]
\end{document}
\end{lstlisting}
\end{singlespacing}

O \texttt{shipout}\index{shipout} é chamado quando criar cada página. Note que no exemplo, foi criado comando auxiliar \verb+\putwatermark+ para colocar marca d'água em vez de colocar marca d'água diretamente, o que permite redefinir dentro do documento para desativar/modificar o mesmo.

\section{Algorítmo e código fonte}

Para algoritmos, poderá usar o pacote \texttt{algorithmicx}\index{algorithmicx} que destaca entre pacotes com mesma finalidade, por poder configurar a forma como será exibido. Para usar, carrege o pacote \texttt{algpseudocode}\index{algpseudocode} que carregará o pacote \texttt{algoritmicx} e define estilo para pseudo código.
%
%Para que algoritmos sejam tratados como elemento flutuante, poderá criar o ambiente usando o pacote \texttt{float}\index{float}, colocando o código similar a que segue, no preambulo.
%
%\begin{singlespacing}
%\begin{lstlisting}
%\usepackage{float}
%% criando algoritmo flutuante
%\newfloat{algorithm}{tbp}{loa}[section]
%\floatname{algorithm}{Algorítmmo}
%\end{lstlisting}
%\end{singlespacing}
%%
%Assim, o ambiente criado \texttt{algorithmm} ficam auto posicionadas e enumeradas. Para listar os algorítmmos, use o comando \verb+\listof{algorithm}{Lista de algorítimos}+.
%Nte que, colocar como elemento flutuante não é recomendável para código mais longo.
%
%Para código maais longo, use o pacote \texttt{caption}
%para colocar titulo e enumeração com \textt{captionof}.
%
Veja o Exemplo~\ref{ex15:alg}
%\begin{singlespacing}
\begin{ltxlisting}[caption={ex15-alg.tex},label=ex15:alg]
  \begin{algorithmic}[1] % iniciar enumeração das linhas
     \Procedure{DotProd}{$u,v$} \Comment{Produto interno de u e v}
       \State $p\gets 0$ \Comment{Inicializa como 0}
       \For{$i\gets 1,\ldots, n$}
         \State $p \gets p + u_i*v_i$
       \EndFor
       \State \textbf{return} $p$\Comment{retorna o valor}
     \EndProcedure
   \end{algorithmic}
\end{ltxlisting}
%\end{singlespacing}
%
%\begin{ltxlistingout}
%  \begin{center}Algorítmo 1.1: produto interno\end{center}
%  \begin{algorithmic}[1] % iniciar enumeração das linhas
%     \Procedure{DotProd}{$u,v$} \Comment{Produto interno de u e v}
%       \State $p\gets 0$ \Comment{Inicializa como 0}
%       \For{$i\gets 1,\ldots, n$}
%         \State $p \gets p + u_i*v_i$
%       \EndFor
%       \State \textbf{return} $p$\Comment{retorna o valor}
%     \EndProcedure
%   \end{algorithmic}
%\end{ltxlistingout}
%
Como o pacote usa a palavra-chave em inglês, pode querer traduzir para português. Para isso, use o comando \verb+\algrenewcommand+\index{algrenewcommand@\verb+\algrenewcommand+} para redefinir palavra-chaves no preambulo do documento.

Por exemplo, o código
%
\begin{singlespacing}
\begin{lstlisting}
\usepackage{algpseudocode}
% traduzindo a palavras-chave
\algrenewcommand\algorithmicprocedure{\textbf{procedimento}}
\algrenewcommand\algorithmicfor{\textbf{para}}
\algrenewcommand\algorithmicdo{\textbf{faça}}
\algrenewcommand\algorithmicend{\textbf{fim}}
\end{lstlisting}
\end{singlespacing}
%
traduzirá a palavra-chaves do algoritmo anterior para português brasileiro. Ajustando o ``return'' para ``retorne'', terá a saída
\begin{singlespacing}
\algrenewcommand\algorithmicprocedure{\textbf{procedimento}}
\algrenewcommand\algorithmicfor{\textbf{para}}
\algrenewcommand\algorithmicdo{\textbf{faça}}
\algrenewcommand\algorithmicend{\textbf{fim}}
\begin{ltxlistingout}
  \begin{algorithmic}[1] % iniciar enumeração das linhas
     \Procedure{DotProd}{$u,v$} \Comment{Produto interno de u e v}
       \State $p\gets 0$ \Comment{Inicializa como 0}
       \For{$i\gets 1,\ldots, n$}
         \State $p \gets p + u_i*v_i$
       \EndFor
       \State \textbf{retorne} $p$\Comment{retorna o valor}
     \EndProcedure
   \end{algorithmic}
\end{ltxlistingout}
\end{singlespacing} 

Para traçar linhas verticais para blocos indentados, poderá usar o pacote \texttt{algpseudocodex}\index{algpseudocodex} que é compatível com o \texttt{algpseudocode}.

O Pacote \texttt{algorithmicx} vem com padrão, mais dois estilos que são para linguagem Pascal e C, mas para colocar código fonte de um programa, costuma usar o pacote \texttt{listings}\index{listings} que implementa o ambiente \texttt{lstlisting}\index{lstlisting} na qual formata o código de acordo com a linguagem de programação escolhida.

Ele já vem com configurações para diversas linguagens de programação,  tais como \texttt{Ada}, \texttt{Algol}, \texttt{Assember}, \texttt{awk}, \texttt{bash}, \texttt{Basic}, \texttt{C\#}, \texttt{C++}, \texttt{C}, \texttt{Cobol}, \texttt{Delphi}, \texttt{Fortran}, \texttt{Gnuplot}, \texttt{HTML}, \texttt{Java}, \texttt{Lisp}, \texttt{Logo}, \texttt{Lua}, \texttt{Make}, \texttt{Mathematica}, \texttt{Matlab}, \texttt{Metapost}, \texttt{Modula-2}, \texttt{Objective C}, \texttt{Octave}, \texttt{Pascal}, \texttt{Perl}, \texttt{PHP}, \texttt{Prolog}, \texttt{Python}, \texttt{GNU R}, \texttt{Ruby}, \texttt{SAS}, \texttt{Scilab}, \texttt{sh}, \texttt{SQL}, \texttt{TeX}, \texttt{XML}, entre vários outros.
Se a linguagem pretendida não estiver na lista, poderá definir uma nova linguagem de programação.
 
Para o seu uso, costuma efetuar configurações iniciais no \texttt{preamble} com o comando \verb+\lstset+\index{lstset@\verb+\lstset+} e no ambiente de \texttt{lstlisting}, efetuar mais alguns ajustes se necessário.
Veja o Exemplo~\ref{ex15:listings}

% Para listar o proprio lstlisting
\lstnewenvironment{lstlistinginside} {} {}

\begin{singlespacing}
\refstepcounter{lstlisting}\label{ex15:listings}
\addcontentsline{lol}{section}{\thelstlisting ex15-listings.tex}
\begin{center}\lstlistingname~\thelstlisting: ex15-listings.tex
\end{center}
% \vspace*{-1.5\baselineskip}
\vspace*{-0.5\baselineskip}
%\begin{lstlistinginside}[belowcaptionskip=1\baselineskip]
\begin{lstlistinginside}
\begin{lstlisting}[language=Python,caption={Bhaskara}]
import math

# obter solução de ax^2 + bx +c = 0
def bhaskara(a, b, c):
  delta = b*b - 4*a*c;
  if delta < 0:
    return [];
  elif delta == 0:
    return [-b/(2*a)]
  else:
    return [(-b-math.sqrt(delta))/(2*a),(-b+math.sqrt(delta))/(2*a)]
\end{lstlisting}
\end{lstlistinginside}
\end{singlespacing}
%
\noindent
\begin{singlespacing}
\begin{framed}
\begin{lstlisting}[language=Python,caption={Bhaskara},keepspaces=true,keywordstyle=\color{blue}]
import math

# obter solução de ax^2 + bx +c = 0
def bhaskara(a, b, c):
  delta = b*b - 4*a*c;
  if delta < 0:
    return [];
  elif delta == 0:
    return [-b/(2*a)]
  else:
    return [(-b-math.sqrt(delta))/(2*a),(-b+math.sqrt(delta))/(2*a)]
\end{lstlisting}
\end{framed}
\end{singlespacing}

%
%%\let\oricaption\caption
%\begin{singlespacing}
%\begin{center}
%\refstepcounter{lstlisting}
%\addcontentsline{lol}{section}{\thelstlisting: ex15-listings.tex}
%\lstlistingname~\thelstlisting: ex15-listings.tex\label{ex15:listings}
%\end{center}
%\vspace*{-1.2em}
%\noindent\hrulefill \\
%\vspace*{-0.2em}
%\colorbox{yellow!50}{teste}
%%\vspace*{-2.5em}
%\colorlet{shadecolor}{yellow!50}
%\begin{shaded}
%\begin{verbatim}
%\begin{lstlisting}[language=Pascal,caption={Alô pessoal}]
%program teste;
%{ Programa de teste }
%begin
%  writeln('Alo, pessoal!');
%end.
%\end{lstlisting}
%\end{verbatim}
%\end{shaded}
%\vspace{-1.2em}
%\noindent\hrulefill\end{singlespacing}
%
%\noindent
%
%\let\addcontentsline\emptyaddcontentsline
%\setcounter{orilstlisting}{\value{lstlisting}}
%\setcounter{lstlisting}{0}
%%\setcounter{lstorichapter}{\value{chapter}}
%\setcounter{lstorichapter}{\value{chapter}}
%\setcounter{chapter}{1}
%\let\currentlstlistingname\lstlistingname
%\let\lstlistingname\orilstlistingname
%% \fbox com lstlisting esta dando erro
%% usando framed
%\begin{framed}
%%\begin{minipage}{\linewidth-\parindent}%\hspace*{-\parindent}
%\begin{lstlisting}[language=Pascal,caption={Alô pessoal},style=lstexample]
%program teste;
%{ Programa de teste }
%begin
%  writeln('Alo, pessoal!');
%end.
%\end{lstlisting}
%%\end{minipage}%
%\end{framed}
%\setcounter{chapter}{\value{lstorichapter}}
%\setcounter{lstlisting}{\value{orilstlisting}}
%\let\lstlistingname\currentlstlistingname
%\let\addcontentsline\oriaddcontentsline

A formatação de saída depende da configuração do \texttt{lstlisting}. 
A saída do Exemplo~\ref{ex15:listings} foi obtida pela configuração
\begin{singlespacing}
\begin{lstlisting}
\lstset{
  numbers=none,
  breaklines=true,
  breakautoindent=true,
  columns=fullflexible, % para poder copiar código do PDF
  keepspaces=true, % to keep indentation
  basicstyle=\ttfamily, % using monospaced font, prevent that hiphen are replaced by minus (solving insure on copy/paste code from pdf)  
  keywordstyle=\color{blue}  
  frame=lines, %none, single, line
}
\end{lstlisting}
\end{singlespacing}

% Para mais opções, ver
% https://en.wikibooks.org/wiki/LaTeX/Source_Code_Listings
Note o uso de \texttt{columns=fullflexible} para que o código fonte copiado do PDF não fique bagunçado, e \verb+basicstyle=\ttfamily+ para que o hifen não ser trocado pelo sinal de menos, o que ajuda o leitor que cópia o código do documento para editor de texto.
O \texttt{keepspaces=true} é para não eliminar espaços, pois o alinhamento é essencial para programa em \texttt{Python}

Para o arquivo externo, podemos usar o comando \verb+\lstinputlisting+\index{lstinputlisting@\verb+\lstinputlisting+} que carrega o código diretamente do arquivo fonte.
%\lstinputlisting{test-code}

Note que \texttt{listings} não tem suporte nativo a \texttt{utf8}.
Portanto, quando usa os caracteres acentuadas, deverá tomar cuidados.
Para o \verb+\lstinputlisting+ funcione no \texttt{utf8}, basta carregar o pacote \texttt{listingsutf8}\index{listingsutf8}, mas para o código colocado diretamente no ambiente \texttt{lstlisting}, deverá criar tabela de caracteres unicode correspondente.
Para não ter tal trabalho, poderá executar no \XeLaTeX{} ou Lua\LaTeX{} em que tem total suporte a unicode.

Quando queremos colocar o trecho do código de \LaTeX{} juntamente com a sua saída, o pacote \texttt{showexpl}\index{showexpl} é prático. 
Ele usa o pacote \texttt{listings} para listar o código fonte.
A configuração inicial é feito com \verb+\lstset{explpreset={...}}+ no \texttt{preamble}. Os parâmetros em \texttt{explpreset} serão aplicados somente no ambiente \texttt{LTXexample}, enquanto que os parâmetros fora dele são aplicados tanto para \texttt{lstlisting} como \texttt{LTXexample}.
  
O ambiente \texttt{LTXexample}\index{LTXexample} aceita os parâmetros do \texttt{lstlisting} e também o \texttt{pos} e \texttt{preset} que especificam a posição onde colocar a saída, e a configuração inicial antes de executar o código.
Veja o Exemplo~\ref{ex15:showexpl}.

\begin{singlespacing}
%\begin{lstlisting}[caption={ex11-10, parte b}, label=ex:11-10:b]
\begin{lstlisting}[caption={ex15-showexpl.tex}, label=ex15:showexpl]
\begin{LTXexample}[pos=b,caption={\LaTeX}]
% comentario
Teorema de Pitágoras afirma que
\[ a^2 = b^2+c^2 \]
\end{ltxlisting}
\end{lstlisting}
\end{singlespacing}
%
%
%\let\mathbb\amsmathbb
%\let\addcontentsline\emptyaddcontentsline
\setcounter{orilstlisting}{\value{lstlisting}}
\setcounter{lstlisting}{0}
%%\setcounter{lstorichapter}{\value{chapter}}
%\setcounter{lstorichapter}{\value{chapter}}
%\setcounter{chapter}{1}
\let\currentlstlistingname\lstlistingname
\let\lstlistingname\orilstlistingname
% \fbox com lstlisting esta dando erro
% usando framed
\begin{ltxlistingout}
%\begin{minipage}{\linewidth-\parindent}%\hspace*{-\parindent}
\begin{LTXexample}[pos=r,caption={\LaTeX},style=lstexample,belowcaptionskip=-\z@]
% comentario
Teorema de Pitágoras afirma que
\[ a^2 = b^2+c^2 \]
\end{LTXexample}
%%\end{minipage}%
\end{ltxlistingout}
%\setcounter{chapter}{\value{lstorichapter}}
\setcounter{lstlisting}{\value{orilstlisting}}
\let\lstlistingname\currentlstlistingname
%\let\addcontentsline\oriaddcontentsline
%\let\mathbb\orimathbb

O valor de ``\texttt{pos}'' que determina onde ficará a saída do resultado do código em relação ao do código fonte, podem ser
``t'', ``b'', ``l'', ``r'' ,``o'' ou ``i'', que são 
abreviaturas de ``top'' (encima), ``bottom'' (embaixo), ``left'' (esquerda), ``right'' (direita), ``outer'' (lado de fora) e ``inner'' (lado de dentro).

Na saída do Exemplo~\ref{ex15:showexpl}, pode notar a falta de espaço vertical após o título, o que faz título esconder atrás do código e da sua saída. 
Teoricamente, o parâmetro opcional \texttt{belowcaptionskip} do ambiente \texttt{lstlisting} deveria ajustar tal espaçamento, mas devido a forma como \texttt{showexpl} foi implementado, isto não acontece por não chamar o \verb+\lst@Init+ encarregado disso.
Para corrigir, a atualização de valor pode ser inserido dentro do
\verb+\SX@KillAboveCaptionskip+ que é chamado antes de criar o titulo no \texttt{LTXexample}.
Para isso, coloque o código

\begin{singlespacing}
\begin{lstlisting}
\makeatletter
\renewcommand\SX@KillAboveCaptionskip{%
  \ifx\lst@caption\@empty\else
    \lst@IfSubstring t\lst@captionpos
      {\vskip-\abovecaptionskip}{}%
  \fi
  \ifx\lst@belowcaption\undefined \else %adicionado
    \belowcaptionskip=\lst@belowcaption\relax % adicionado
  \fi %adicionado
}
\makeatother
\end{lstlisting}
\end{singlespacing}
no \texttt{preamble} do documento.
Note que a configuração inicial do ambiente \texttt{LTXexample} não será alterado, mas agora podemos ajustar o espaçamento entre o título e o corpo com o parâmetro \texttt{belowcaptionskip} como em \texttt{lstlisting}.

%Uma forma de contornar isso e usar um \texttt{strut} (caixa de largura nula usado para reservar altura) no nome do título, reservando altura adicional. 
%O parâmetro \texttt{belowcaptionskip} será armazenado em \verb+\lst@belowcaption+.
%Então crie um comando tal como \verb+\lstcaptionstrut+
%pelo comando
%\begin{lstlisting}
%\newcommand{\lstcaptionstrut}{\rule[-\lst@belowcaption]{0pt}{0pt}}
%\end{lstlisting} 
%adicionado no preamble do documento.
%Depois, no final do parâmetro \texttt{caption}, adicione este comando.

Note que o \verb+\usepackage+ e similar estão desabilitados dentro do ambiente \texttt{LTXexample} e se o código precisar, deverá estar carregado no \texttt{preamble} do documento principal.
Agora outro exemplo, supondo que \texttt{amssymb} está carregado no documento principal (para usar \verb+\mathbb+).
Veja o Exemplo~\ref{ex15:showexpl:completo}.

\begin{singlespacing}
%\begin{lstlisting}[caption={ex11-10, parte c}, label=ex:11-10:c]
\begin{lstlisting}[caption={ex15-showexpl-completo}, label=ex15:showexpl:completo]
\begin{LTXexample}[pos=b,caption={\LaTeX{} completo},belowcaptionskip=\baselineskip]
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}
\usepackage{amssymb,amsmath}
\newcommand{\sen}{\mathrm{sen}}
\begin{document}
% comentario
\[ \forall \theta \in \mathbb{R}, \cos^2\theta + \sen^2\theta = 1 \]
\end{document}
\end{LTXexample}
\end{lstlisting}
\end{singlespacing}
%
%
%\let\mathbb\amsmathbb
%\let\addcontentsline\emptyaddcontentsline
\setcounter{orilstlisting}{\value{lstlisting}}
\setcounter{lstlisting}{1}
%\setcounter{lstorichapter}{\value{chapter}}
%\setcounter{lstorichapter}{\value{chapter}}
%\setcounter{chapter}{1}
\let\currentlstlistingname\lstlistingname
\let\lstlistingname\orilstlistingname
% \fbox com lstlisting esta dando erro
% usando framed
\begin{ltxlistingout}
%\begin{minipage}{\linewidth-\parindent}%\hspace*{-\parindent}
\begin{LTXexample}[pos=b,caption={\LaTeX{} completo},belowcaptionskip=\baselineskip,style=lstexample,  frame=none]
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}
\usepackage{amssymb,amsmath}
\newcommand{\sen}{\mathrm{sen}}
\begin{document}
% comentario
\[ \forall \theta \in \mathbb{R}, \cos^2\theta + \sen^2\theta = 1 \]
\end{document}
\end{LTXexample}
%\end{minipage}%
\end{ltxlistingout}
%\setcounter{chapter}{\value{lstorichapter}}
\setcounter{lstlisting}{\value{orilstlisting}}
\let\lstlistingname\currentlstlistingname
%\let\addcontentsline\oriaddcontentsline
%\let\mathbb\orimathbb


%
%fancybox, OK
%framed, OK
%lineno, OK
%eso-pic, OK
%
%listings, OK
%showexl, OK
\section{Ênfase modo antigo e cancelamento}Além da ênfase em itálico, também poderá usar o sublinhado como era feito na maquina de escrever.

O pacote \texttt{ulem}\index{ulem} implementa várias formas de ``sublinhar'' o texto.
Para que os comandos \verb+emph+ e \verb+\em+, assim como o ambiente \texttt{em} não sejam trocados pelo comando de sublinhar texto, use a opção \texttt{normalem}.
Assim, coloque \verb+\usepackage[normalem]{ulem}+ no \texttt{preamble} para poder usar diversos efeitos de ``sublinhar'' o texto.

Veja o Exemplo~\ref{ex15:ulem}.

\begin{ltxlisting}[caption={ex15-ulem.tex},label=ex15:ulem]
Sublinhando: \uline{importante} \\
Sublinhando com linha dupla: \uuline{urgente} \\
Com onda: \uwave{barco} \\
Cancelando o texto: \sout{errado} \\
Removendo: \xout{removido} \\
Linha tracejada: \dashuline{tracejada} \\
Linha pontilhada: \dotuline{pontilhada}
\end{ltxlisting}

Para destacar texto, costuma usar o pacote \texttt{soul}\index{soul} como no exemplo~\ref{ex15:soul}, na qual a cor de destaque foi configurado com os comandos

\begin{singlespace}
\begin{lstlisting}
\usepackage{soul} % para destacar
\usepackage{xcolor} % para configurar cores
\setulcolor{green} % cor para sublinhar
\setstcolor{red} % cor para cancelar
\sethlcolor{yellow} % cor para destaque
\end{lstlisting}

\end{singlespace}

\begin{ltxlisting}[caption={ex15-soul.tex},label=ex15:soul]
Espaçado: \so{espaçado} \\
Small Caps: \caps{Small Caps} \\
Sublinhado: \ul{sublinhado} \\
Cancelando o texto: \st{errado} \\
Destacando: \hl{destacando} 
\end{ltxlisting}

Para caso de cancelar parte das equações, veja o exemplo da Seção~ \ref{sec:cancel:annotate:equations} (página~\pageref{sec:cancel:annotate:equations}).

\section{Mais sobre referências bibliográficas}

Na citação original do \LaTeX, usa-se o mesmo padrão tanto para caso de fazer parte do texto (citação textual) ou não fazer parte do texto (citação dentro de parenteses). 
Para fazer esta distinção e controlar melhor a forma de citação, foi desenvolvido o pacote chamado \texttt{natbib}\index{natbib}.

O pacote \texttt{natbib} possui comandos \verb+\citet+\index{natbib!\verb+\citet+}, usado para citações textuais e \verb+citep+\index{natbib!\verb+\citep+} para citações entre parenteses (ele já coloca parenteses automaticamente).

Além disso, o \texttt{natbib} permite configurar a formatação de citações.
Veja o Exemplo~\ref{ex15:natbib} com Exemplo~\ref{ex11:bibtex:bib}.

\begin{singlespacing}
%\begin{lstlisting}[pos=b,caption={ex12-08},label=ex:12-08]
\begin{lstlisting}[caption={ex15-natbib.tex},label=ex15:natbib]
\documentclass{article}
\usepackage[brazil]{babel}
\usepackage{natbib}
\begin{document}
Para que a citação faça parte do texto (estilo textual), usa-se o comando \verb+\citet+ como em ``Por exemplo, \citet{IndianTUG:2000, Goossens:2004} explicam como usar o BibTeX''.

Para que ele não faça parte do texto, usa-se o \verb+\citep+ Como em ``\ldots recursos avançados de BibTeX \citep[Cap.~13]{Goossens:2004}''.
\bibliographystyle{apalike} % escolha um estilo
\bibliography{ex11-bibtex} % arquivo de referências
\end{document}
\end{lstlisting}
\end{singlespacing}

%\begin{framed}
%\begin{singlespacing}
\begin{ltxlistingout}
%\begin{minipage}{\linewidth-\parindent}%\hspace*{-\parindent}
Para que a citação faça parte do texto (estilo textual), usa-se o comando \verb+\citet+ como em ``Por exemplo, Tutorial Team (2000); Goossens and Mittelbach (2004) explicam como usar o BibTeX''.

Para que ele não faça parte do texto, usa-se o \verb+\citep+ Como em ``\ldots recursos avançados de BibTeX (Goossens and Mittelbach, 2004, Cap. 13)''.
%\end{minipage}%
\section*{Referências}
\noindent Goossens, M., Mittelbach, F. (2004).
{\em The {\LaTeX{}} Companion (second edition)}.\\
\hspace*{1em} Adilson--Wesley, Reading, MA.

\noindent Tutorial Team (2000).
{\em Online Tutorials on {\LaTeX{}}}.
Indian {\TeX{}} User Group. \\
\hspace*{1em} {\url{http://www.tug.org/tutorials/tugindia/}}.
\end{ltxlistingout}
%\end{singlespacing}
%\end{framed}

O comando \verb+\cite+ tradicional também estará disponível, funcionando como \verb+\citet+ no caso do estilo \texttt{autor-ano} e como \verb+\citep+ no caso do estilo numérico.

Usando a opção do pacote ou comandos apropriados, podermos configurar o estilo de citações.

Note que nos estilos antigos, os campos tais como ``\texttt{url}'' e ``\texttt{doi}''\index{bibtex!doi} não serão usados (logo, não aparecem nas referências).
Para que \texttt{URL} apareça na referência desses estilos antigos, colocavam no campo ``\texttt{note}''.

Para estilos mais modernos como do \texttt{natbib}, o \texttt{URL} deve ser colocado no campo ``\texttt{url}''\index{bibtex!url} e a data do último acesso em ``\texttt{urldate}''\index{bibtex!urldate}.
No estilo antigo em que \texttt{urldate} é ignorado, coloque o último acesso em ``\texttt{note}''.
% pode ser usado para outra finalidade tal como colocar a data de último acesso.

Estilo padrão do \texttt{natbib} são \texttt{plainnat}\index{natbib!plainnat}, \texttt{abbrvnat}\index{natbib!abbrvnat}, \texttt{unsrtnat}\index{natbib!unsrtnat}.
Também suporta vários \texttt{bst} de outros pacotes
do estilo \texttt{autor-ano} tais como \texttt{apalike}\index{natbib!apalike}, \texttt{newapa}\index{natbib!newapa}, (\texttt{chicago}\index{natbib!chicago}, \texttt{named}\index{natbib!named}, etc do \texttt{chicago}), 
(\texttt{agsm}\index{natbib!agsm}, \texttt{dcu}\index{natbib!dcu}, \texttt{kluwer}\index{natbib!kluwer}, etc do \texttt{harvard}), 
(\texttt{astron}\index{natbib!astron}, \texttt{apa}\index{natbib!apa}, \texttt{humanbio}\index{natbib!humanbio}, etc do \texttt{astron}),
(\texttt{authordate<n>}\index{natbib!authordate<n>} e \texttt{aaai-named}\index{natbib!aaai-named} do \texttt{authordate<n>}).

Note que \texttt{bst} não compatíveis com \texttt{autor-ano}, como o estilo padrão do \BibTeX{} será considerado como numérico.

Para criar seu próprio arquivo de estilo \texttt{bst}, comece gerando um modelo com \texttt{makebst}\index{makebst} do pacote \texttt{custom-bib}\index{custom-bib}.

%%%%%%%%%% biblatex

O Bib\LaTeX{}\index{biblatex} suporta o arquivo \texttt{bib} em \texttt{utf8} e permite que tenha citações dos livros em caracteres fora do \texttt{latin} e também suporta a localização da referência bibliográfica.

Outro ponto positivo para desenvolvedores é ter maior facilidade de elaborar arquivo de estilos.

O Bib\LaTeX{} não é compatível com a maioria dos pacotes específicos para \BibTeX.
Também terá problemas com o pacote \texttt{titlesec} quando usar as opções \texttt{refsection}, \texttt{refsegment} ou \texttt{citereset} no Bib\LaTeX.

Note que, caso não tenha estilo de referência bibliográfica desejado, o truque de copiar o conteúdo do arquivo \texttt{bbl} (extensão \texttt{bbl}) e ajustar, o que não funciona no Bib\LaTeX, pois ele não usa o ambiente \texttt{thebibliography}. 
Isto vale mesmo que use \BibTeX{} como \texttt{backend}.
Como nem toda revista dispõe de estilos para Bib\LaTeX{} (mesmo tendo estilo para \BibTeX), fique atento nesta parte para decidir se vai usar o \BibTeX{} direto, ou usar o Bib\LaTeX.

Quando carrega o pacote \texttt{biblatex}, efetua algumas configurações.

\begin{singlespacing}
\begin{lstlisting}
\usepackage[
%  backend=biber, % padrão
%  bibencoding=utf8, % padrão
%  natbib=true, % natbib compatible mode (citep, citet, etc)
  style=authoryear,
]{biblatex}
\end{lstlisting}
\end{singlespacing}

Carrega o \texttt{biblatex} configurado para usar \texttt{biber}\index{biber} como processador de referências bibliográficas. 
Se usar o \texttt{bibtex} em vez do \texttt{biber}, perderá os recursos estendidos tais como suporte a \texttt{utf8} e localização (ajustar ao idioma de cada referéncia) da referência bibliográfica.
%No código anterior, também foi indicado que o arquivo \texttt{bib} está em \texttt{utf8}, podendo conter caracteres unicode (fora do \texttt{latin}, por exemplo).
A opção \texttt{natbib} está comentado, mas se ativar, terá disponibilidade para usar comandos \verb+\citet+ e \verb+\citep+ similar a do \texttt{natbib}.
Finalmente, o estilo escolhido é \texttt{authoryear}.

Para indicar os arquivos \texttt{bib}, usa-se o comando \verb+\addbibresource{<arquivo bib>}+\index{addbibresource@\verb+\addbibresource+} que costuma estar no \texttt{preamble}, onde \texttt{<arquivo bib>} é nome do arquivo \texttt{bib} que deve incluir necessariamente a extensão (como o \verb+.bib+). 
Caso quer indicar vários arquivos \texttt{bib}, deverá colocar um \verb+\addbibresource+ para cada arquivo \texttt{bib}.

O Bib\LaTeX{} suporta o campo \texttt{url} e logo, o endereço da internet devem ser colocados no campo \texttt{url} em vez do campo \texttt{note} que é para o estilo antigo do \BibTeX.
 
Após efetuar citações normalmente no documento, coloca-se o comando
\verb+\printbibliography+\index{printbibliography@\verb+\printbibliography+}
no lugar onde quer que apareça a referência bibliográfica.
Veja o Exemplo~\ref{ex15:biblatex} com Exemplo~\ref{ex11:bibtex:bib}..

\begin{singlespacing}
%\begin{lstlisting}[pos=b,caption={ex12-08},label=ex:12-08]
\begin{lstlisting}[caption={ex15-biblatex.tex},label=ex15:biblatex]
\documentclass{article}
\usepackage[brazil]{babel}
\usepackage[
%  backend=biber,
%  bibencoding=utf8,
%  natbib=true, % natbib compatible mode (citep, citet, etc)
  style=authoryear, % estilo da citação no texto
% bibstyle=authortitle, % estilo da listagem pode ser diferente da citação no texto
]{biblatex}
\addbibresource{ex11-bibtex.bib} % não esquecer o .bib
\begin{document}
Para que a citação faça parte do texto (estilo textual), usa-se o comando \verb+\textcite{}+ como em ``Por exemplo, \textcite{IndianTUG:2000, Goossens:2004} explicam como usar o BibTeX''.

Para que ele não faça parte do texto, usa-se o \verb+\parencite{}+, como em ``\ldots recursos avançados de BibTeX \parencite[Cap.~13]{Goossens:2004}''.

O endereço da intenet devem ser colocados no campo \texttt{url} e data do último acesso em \texttt{urldate}, seguindo o formato \texttt{ano-mês-dia}, onde ano é com 4 digitos.

\printbibliography
\end{document}
\end{lstlisting}
\end{singlespacing}

%\begin{framed}
%\begin{singlespacing}
\begin{ltxlistingout}
%\begin{minipage}{\linewidth-\parindent}%\hspace*{-\parindent}
Para que a citação faça parte do texto (estilo textual), usa-se o comando \verb+\textcite{}+ como em ``Por exemplo, Tutorial Team (2000) e Goossens e Mittelbach (2004) explicam como usar o BibTeX''.

Para que ele não faça parte do texto, usa-se o \verb+\parencite{}+, como em ``\ldots recursos avançados de BibTeX (Goossens and Mittelbach 2004, Cap. 13)''.

O endereço da intenet devem ser colocados no campo \texttt{url} e data do último acesso em \texttt{urldate}, seguindo o formato \texttt{ano-mês-dia}, onde ano é com 4 digitos.

%\end{minipage}%
\section*{Referências}
\noindent Goossens, Michel e Frank Mittelbach (2004).
{\em The {\LaTeX{}} Companion (second edition)}.\\
\hspace*{1em} Reading, MA: Adilson--Wesley, 

\noindent Tutorial Team (2000).
{\em Online Tutorials on {\LaTeX}}.
{\url{http://www.tug.org/tutorials/tugindia/}}.
\hspace*{1em} Indian {\TeX} User Group. \\
\end{ltxlistingout}
%\end{singlespacing}
%\end{framed}

Quando usa o Bib\LaTeX, a citação textual (que faz parte do texto) será especificado pelo comando \verb+\textcite+\index{biblatex!textcite@\verb+\textcite+} que corresponde ao \verb+\citet+ do \texttt{natbib}.
O comando \verb+\parencite+\index{biblatex!parencite@\verb+\parencite+} produz citação que não faz parte do texto (corresponde ao \verb+\citep+ do \texttt{natbib}).
O comando \verb+\cite+ coloca como normal, sem parenteses, mas o detalhe dependerá do estilo.
O \verb+\autocite{}+ dependerão do estilo escolhido também.

Se quer que a referência bibliográfica conste no sumário, coloque
\begin{singlespacing}
\begin{lstlisting}
\phantomsection % se estiver usando o hyperref
\printbibliography[heading=bibintoc]
\end{lstlisting}
\end{singlespacing}
onde \verb+\phantomsection+\index{phantomsection@\verb+\phantomsection+} é necessário somente quando usa o pacote \texttt{hyperref} para que o link do sumário para a referência bibliográfica aponte para a página correta.

O estilo padrão do Bib\LaTeX{} são \texttt{numeric}\index{biblatex!numeric}, \texttt{alphabetic}\index{biblatex!alphabetic}, \texttt{authoryear}\index{biblatex!authoryear}, \texttt{authortitle}\index{biblatex!authortitle}, \texttt{verbose}\index{biblatex!verbose}, \texttt{reading}\index{biblatex!reading} e \texttt{draft}\index{biblatex!draft}, mas existem muitos outros disponíveis em \url{http://mirror.ctan.org/macros/latex/exptl/biblatex-contrib}.

No estilo de Bib\LaTeX, foi adicionado o campo \texttt{urldate} para indicar a data de consulta do documento eletrônico, além do campo \texttt{url} para indicar a localização de documentos eletrônicos.

Para quem pretende criar o estilo novo, note que no Bib\LaTeX{} deve implementar tanto o estilo de referências (como será impresso na referências) com  o estilo de citações (como aparece dentro do texto).

%natbib,
%biblatex

\section{Siglas e glossários}
A lista de síglas\index{lista de!siglas}, símbolos\index{lista de!simbolos} e glossários\index{glossários} podem ser criados pelo pacote \texttt{acro}\index{acro} como no Exemplo~\ref{ex15:acro}, cuja saída será omitida.

\begin{singlespacing}
\begin{lstlisting}[caption={ex15-acro.tex},label=ex15:acro]
\documentclass[12pt]{article}

% Não precisa executar o comando externo, mas precisa compilar duas vezes.
% A lista será automaticamente ordenada.

\usepackage[brazilian]{babel}
%\usepackage{array,longtable} % para usar longtable na lista
\usepackage{tabularray} % para usar tabularray na lista
\usepackage{acro} % lista de abreviaturas e siglas
% configurando
\acsetup{
    %first-style = long-short, % modo "long (short)" (default)
    %list/display = used, % somente usados (default) pode ser all ou used
    % list/template=description, % lista de descrição (é default?)
    pages/display = none % página impressa: first (default?), all ou none
}

% abreviaturas e siglas
\DeclareAcronym{ibge}{
    short = {IBGE},
    long  = {Instituto Brasileiro de Geografia e Estatística},
    tag = {abrev},
}
\DeclareAcronym{abnt}{
    short = {ABNT},
    long  = {Associação Brasileira de Normas Técnicas},
    tag = {abrev},
}
% Símbolos (explicação dos símbolos)
\DeclareAcronym{pi}{ 
    short = {$\pi$}, 
    long  = {Razão entre circunferência e diâmetro},
    tag = {simb},
    first-style = short,
}
% glossários (explicação do termo)
% Exemlificando o uso de plural não canônica também
\DeclareAcronym{primo}{
    short = {primo},
    short-plural-form  = {primos}, % quando é só acrescentar 's' no final, não é necessário
    long  = {é o número inteiro cuja único divisor é $\pm 1$, ele ou oposto dele mesmo},
    long-plural-form  = {são números inteiros cuja único divisor é $\pm 1$, ele ou oposto dele mesmo},
    % list  = {Como será exibido na lista}
    tag = {glos},
    first-style = short, % como será na primeira ocorrência
}
% se tiver a forma plural, poderá usar o \Acp e \acp para acessar.
%%%%%%%%%%%%%%%%%%%%%
% inicio do documento
%%%%%%%%%%%%%%%%%%%%%
\begin{document}
% siglas
\printacronyms[name={Lista de abreviaturas e siglas}, include=abrev, heading=section*] % só o abrev
\acsetup{pages/display = first} % com página da primeira ocorrencia
% Símbolos
\printacronyms[name={Lista de símbolos}, template=tabularray, include=simb] % só o simb, formato tabelas
\tableofcontents
\section{Siglas e grossários}
% Usar \Ac para inicio do parágrafo (primeira letra em maiusuclo) e \ac para meio do texto (todo em minusculo)
\Ac{abnt} adota a tabela no estilo \ac{ibge}.

Definimos o \ac{pi} como sendo ...

% \Acp e \acp acessa a forma plural.
Seja $p$, $q$, números \acp{primo}. Então ...

% \printacronyms[name={Abreviaturas, siglas, símbolos e significados},display=all,  heading=section*] % todas

\acsetup{pages/display = none} % sem pagina das ocorrencias
\printacronyms[name={Glossários}, include=glos,heading=section] % só o glos
\end{document}
\end{lstlisting}
\end{singlespacing}

A ordenação no \texttt{acro} é pela ordem alfabética dos rótulos (nomes) dos acronomos que é o primeiro argumento de \verb+\DeclareAcronym+. No exemplo anterior, a diferenciação entre siglas, símbolos e glossários foi feito pelo valor do \texttt{tag}, mas como permite \texttt{tag} genérico, pode cometer erros de digitação. Assim as vezes, é preferível usar o pacote com maior rigidez como o \texttt{glossaries}\index{glossaries}. O pacote \texttt{glossaries} também permite processar a ordenação pelo comando externo \texttt{makeglossaries} para ter maior controle. O Exemplo~\ref{ex15:glossaries} ilustra o uso (saída será omitida).

\begin{singlespacing}
\begin{lstlisting}[caption={ex15-glossaries.tex},label=ex15:glossaries]
\documentclass[a4paper,12pt]{article}

\usepackage[brazil]{babel}
\usepackage{hyperref}

%\usepackage{xtab} % tabela longa configurável

\usepackage{acro} % necessário para opção acronym

%% Para evitar conflito com xtab: https://golatex.de/viewtopic.php?t=13108
\makeatletter
  \@namedef{ver@supertabular.sty}{}
\makeatother

\usepackage[nonumberlist=true,style=index,acronym]{glossaries} % Caso usar o comando externo, sdrá o makeindex
%\usepackage[xindy={language=portuguese},nonumberlist=true,style=index,acronym]{glossaries} % Caso usar comando externo, será o xindy (recomendado)
% Ativando o uso de glossários
%\makeglossaries % com comando externo (para compilar, execute o makeglossaries)
\makenoidxglossaries % com TeX (não precisa executar o comando makeglossaries)

% comando para criar nova categoria
% \newglossary[<log-ext>]{<name>}{<in-ext>}{<out-ext>}{<title>}[<counter>] 
\newglossary[slg]{symbols}{syi}{syg}{Lista de Símbolos} % criando categoria symbols

%%%%%%%%%%%%%%%%%%%%%%%%
% Entradas de glossários
%%%%%%%%%%%%%%%%%%%%%%%%

% abreviaturas e siglas
\newglossaryentry{ibge}{
  name={IBGE},
  description={Instituto Brasileiro de Geografia e Estatística},
  type=acronym,
}

\newglossaryentry{abnt}{
  name={ABNT},
  %see=IBGE,
  description={Associação Brasileira de Normas Técnicas},
  type=acronym
}

% Símbolos (explicação dos símbolos)
\newglossaryentry{pi}
{
  name={\ensuremath{\pi}},
  sort={pi},
  description={Razão entre circunferência e diâmetro},
  type=symbols
}

% glossário (explicação do termo)
\newglossaryentry{primo}{
  name={primo},
  plural={primos}, % acessados pelo Glspl e glspl
  description={é o número inteiro cuja único divisor é $\pm 1$, ele ou oposto dele mesmo},
}
              
%\glsaddall % adicionar todas entradas (padrão é somente usados)

\begin{document}
% siglas: com TeX
\printnoidxglossary[type=acronym,title={Lista de abreviaturas e siglas},sort=use]
% siglas: com makeglossaries
%\printglossary[type=acronym,title={Lista de abreviaturas e siglas},sort=use]
% Símbolos: com TeX
\printnoidxglossary[type=symbols,title={Lista de símbolos},sort=use]
% simbolos: com makeglossaries
%\printglossary[type=symbols,title={Lista de símbolos},sort=use]
% sumário
\tableofcontents
\section{Siglas e glossários}
% Usar \Gls para inicio do parágrafo (primeira letra em maiusuclo) e \gls para meio do texto (todo em minusculo)
\Gls{abnt} adota a tabela no estilo \gls{ibge}.

Definimos o \gls{pi} como sendo ...

%Glspl e glspl ~sao formato em plutal.
Sejam $p$ e $q$, um número \glspl{primo}. Então ...

%\phantomsection
%\addcontentsline{toc}{section}{\glossaryname}
%\printnoidxglossaries % com TeX: todos glossários
\printnoidxglossary % com TeX: somente o principal
%
%\printglossaries % com makeglossaries: todos glossarios
%\printglossary % com makeglossaries: somente o principal
\end{document}
\end{lstlisting}
\end{singlespacing}

Caso desejar usar o comando externo, use o \verb+\makeglossaries+ e \verb+\printglossary+ no documento e chame o comando \texttt{makeglossaries <nome do arquivo>} onde \texttt{<nome do arquivo>} é nome do arquivo sem a extensão \texttt{.tex}. Este comando efetua a chamada de \texttt{makeindex} ou \texttt{xindy} com parâmetro adequado para efetuar ordenação.

\clearpage\thispagestyle{empty}\cleardoublepage
\chapter{Gráfico e Diagramas}\label{chap:xcolor:tikz}
Os recursos do ambiente \texttt{picture} do \LaTeX{} é bastante limitado, mesmo que use o pacote \texttt{pict2e}.
Assim, costumamos usar os pacotes fora do \texttt{base} e \texttt{required} como o \texttt{tikz}.
Neste capítulo, vamos estudar alguns pacotes relacionados aos gráficos, que não são da \texttt{base} e \texttt{required}.

\section{Misturando cores}\label{sec:xcolor}
O pacote de cores mais recomendados é o \texttt{xcolor}\index{xcolor} que estende a funcionalidade do pacote \texttt{color}.
Uma das extensões mais importantes do \texttt{xcolor} é a capacidade de especificar a quantidade de cores e permitir misturar cores.

Para misturar cores\index{misturar cores}, use o ``!'' seguido de percentual.
Por exemplo, \verb|\color{blue!30}|
 é 30\% de azul. %: \colorbox{blue!30}{\hspace*{1cm}}

No caso de \verb|\color{red!30!yellow}|
 é 30\% de vermelho e restante (70\%) de amarelo.
 % : \colorbox{red!30!yellow}{\hspace*{1cm}}

Em \verb|\color{blue!20!black!30!green}|
 é 30\% da mistua de azul com preto e restante (70\%) de verde. Como a mistura de azul com preto é \verb+blue!20!black+, 20\% do total de 30\% que é 6\% é azul e o restante que é 80\% do total de 30\% que é 24\% é preto.
%: \colorbox{blue!20!black!50!green}{\hspace*{1cm}}

Para definir nova cor a partir do existente, use o comando
\verb|\colorlet|\index{colorlet@\verb+\colorlet+}.

Por exemplo, % Ex.: \colorlet{mygreen}{green!80!yellow}
   \verb|\colorlet{mygreen}{green!80!yellow}| define \texttt{mygreen} como sendo a mistura de 80\% de verde e 10\% de amarelo. %, produzindo \colorbox{mygreen}{\hspace*{1cm}}
Veja o Exemplo~\ref{ex16:xcolor}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex11-07.tex},label=ex:11-07]
\begin{ltxlisting}[caption={ex16-xcolor.tex},label=ex16:xcolor]
Texto pode ser colorido como em \textcolor{red}{vermelho} ou {\color{green} verde}. Pode ter fundo colorido \colorbox{yellow!30}{\color{blue} teste}.

Alguns exemplos da mistura de cores
\colorbox{blue!30}{\hspace*{1cm}}% 30% de azul
% 30% de vermelho e restante (70%) de amarelo
\colorbox{red!30!yellow}{\hspace*{1cm}}
%30% da mistura de azul com preto (20% deste que é 6% do total é azul e restante 80% que é 14% do total é preto) e restante (70%) de verde
\colorbox{blue!20!black!30!green}{\hspace*{1cm}}

% Defindo uma nova cor a partir do existente
\colorlet{mygreen}{green!80!yellow}
\colorbox{mygreen}{\hspace*{1cm}}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

A seguir, cores básicos do pacote \texttt{xcolor}.


\begin{table}[htbp]
\caption{cores aceitos em todos \protect\texttt{drivers} no pacote xcolor}
 \ \\
 \begin{tabular}{|c|c|c|c|c|c|c|c|}
  \hline
   black & \colorbox{black}{\hspace*{1cm}} 
 & blue & \colorbox{blue}{\hspace*{1cm}}
 & brown & \colorbox{brown}{\hspace*{1cm}}
 & cyan &  \colorbox{cyan}{\hspace*{1cm}} \\ \hline
   darkgray &  \colorbox{darkgray}{\hspace*{1cm}}
 & gray &  \colorbox{gray}{\hspace*{1cm}}
 & green & \colorbox{green}{\hspace*{1cm}}
 & lightgray &  \colorbox{lightgray}{\hspace*{1cm}} \\ \hline
  lime & \colorbox{lime}{\hspace*{1cm}}
 & magenta & \colorbox{magenta}{\hspace*{1cm}}
 & olive & \colorbox{olive}{\hspace*{1cm}}
 & orange &  \colorbox{orange}{\hspace*{1cm}}  \\ \hline
   pink &  \colorbox{pink}{\hspace*{1cm}}
 & purple &  \colorbox{purple}{\hspace*{1cm}}
 & red & \colorbox{red}{\hspace*{1cm}}
 & teal & \colorbox{teal}{\hspace*{1cm}}  \\ \hline
   violet & \colorbox{violet}{\hspace*{1cm}}
 & white &  \colorbox{white}{\hspace*{1cm}}
 & yellow & \colorbox{yellow}{\hspace*{1cm}}  \\ \hline
 \end{tabular}
\end{table}

Dependendo da especificação do \texttt{driver}, terão muito mais cores, mas é mais prático trabalhar com cores básicos e suas misturas do que lidar com grande quantidade de nomes para cores.

\section{Criando ilustrações gráficas}

Para criar ilustrações gráficas, um dos mais indicados é o pacote \texttt{tikz}\index{tikz} \cite{book:tikz:tantau}.

O pacote \texttt{tikz} possui muitos módulos (as extensões) que podem ser carregados pelo comando \verb+\usetikzlibrary+\index{usetikzlibrary@\verb+\usetikzlibrary+}.

Nos exemplos a seguir, será assumido que tem o código do Exemplo~\ref{ex16:tikz:preamble} no \texttt{preamble}.

\begin{singlespacing}
%\begin{lstlisting}[caption={ex12-02.tex}, label=ex:12-02]
\begin{lstlisting}[caption={ex16-tikz-preamble.tex}, label=ex16:tikz:preamble]
\usepackage{tikz} % pacote gráfico
\usetikzlibrary{babel} % para compatiblidade com o pacote babel, requerido por algumas bibliotecas como o cd.

\usetikzlibrary{calc} % calc é para efetuar cálculos matemáticos ou expressões em coordenadas

\usetikzlibrary{through} % circulo passando por ponto, por exemplo.
 
\usetikzlibrary{patterns} % preenchimentos

\usetikzlibrary{intersections} % intersecção entre caminhos

\usetikzlibrary{matrix} % matriz no tikz

\usetikzlibrary{cd} % diagrama comutativa
\end{lstlisting}
\end{singlespacing}

Os comandos gráficos do \texttt{tikz} sempre termina com ponto e vírgula. 
Ao compilar o código sem ter terminado com ponto e virgula no trecho de \texttt{tikz}, pode travar o \LaTeX{}. 
No caso de estar usando o \LyX{} que não salva antes de compilar, é importante que salve manualmente antes de compilar.
Note que o ``instant preview inset'' do \LyX{} não trava.
Veja o Exemplo~\ref{ex16:tikz:basico} para começar.
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex12-02.tex, parte b}, label=ex:12-02:b]
\begin{ltxlisting}[caption={ex16-tikz:basico.tex}, label=ex16:tikz:basico]
Poderá desenhar no modo \texttt{inline} como em \tikz \draw[fill] circle (2pt);
ou \tikz{\draw (0,0) -- (1.5,0);}  e também como figura independente

\begin{tikzpicture}
\draw[rounded corners=8pt] (0,0) -- (0,2) -- (2,2) -- (2,0) -- cycle; 
\end{tikzpicture}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

O comando \verb+\draw+\index{tikz!draw@\verb+\draw+} desenha o elemento. 
A forma como vai desenhar pode ser configurado com o parâmetro opcional. 
``\verb+--+'' indica que vai ligar os pontos a esquerda com da direita através de uma linha.
Cores podem ser passado no parâmetro opcional do \verb+\draw+.
Veja o Exemplo~\ref{ex16:tikz:draw}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex12-02.tex, parte c}, label=ex:12-02:c]
\begin{ltxlisting}[caption={ex16-tikz-draw.tex}, label=ex16:tikz:draw]
\begin{center}
\begin{tikzpicture}
\draw (-1,-0.5) -- (1,0.5); % segmentos
\draw (0,1) -- (1,1) -- (1,2) -- (0,2); % Linhas poligonais
\draw (2,0) -- (3,0) -- (3,1) -- (2,1) -- cycle; % Linhas poligonais fechadas (cycle conecta ao ponto iniciaal, fechando a curva)
\draw[rounded corners=8pt] (-1,-1) -- (1,-1) -- (1,-2) -- (-1,-2); % Quinas arredondadas
\draw[red] (2,-1) |- (3,-2);% Conectando com linha vertical-horizontal
\draw[blue] (2,-1) -| (3,-2); % Conectando com linha horizontal-vertical
% ++(V) desloca o ponto anterior pelo (V), isto é, novo ponto é ponto anterior + (V). 
\draw (4,0) -- ++(1,1) -- ++(1,-1) -- cycle;
\end{tikzpicture}
\end{center} 
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Quando tem mais de um parâmetro opcional, coloque separado pela vírgula.
Veja Exemplo~\ref{ex16:tikz:parametro}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex12-02.tex, parte d}, label=ex:12-02:d]
\begin{ltxlisting}[caption={ex16-tikz-parametro.tex}, label=ex16:tikz:parametro]
\begin{center}
\begin{tikzpicture}
% Epessuras: very thin, thin, thick, very thick
\draw[thick] (0,0) -- (1,1);
% Estilo: dashed, dotted
\draw[dotted] (0,0) -- (1,-1);
% Setas ->, <-, <->, etc
\draw[->] (0,0) -- (1,0);
% Combinadas
\draw[color=blue,thick,->] (0,0) -- (-1,0);
\end{tikzpicture}
\end{center}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Podemos definir e usar coordenadas, assim como efetuar alguns cálculos com coordenadas.
Veja o Exemplo~\ref{ex16:tikz:coordenadas}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex12-02.tex, parte e}, label=ex:12-02:e]
\begin{ltxlisting}[caption={ex16-tikz-coordenadas.tex}, label=ex16:tikz:coordenadas]
\begin{center}
\begin{tikzpicture}
\coordinate (A) at (0,0);
\coordinate (B) at (1,0);
\coordinate (C) at (1,1);

\draw (A) -- (B) -- (C) -- cycle;
% interpolação linear das coordenadas
% $(A)!t!(C)$ sera interpretado como sendo (1-t)*(A)+t*(C)
\draw[dotted] (A) -- ($(B)!0.5!(C)$);
% Interpolação linear com rotação
% rotacionado por angulo de 15 em torno de (B)
\coordinate (D) at ($(B)!1!15:(C)$);
% projeção ortogonal
% $(A)!(B)!(C)$ sera pé do perpendicular abaixado de (B)
% sobre a reta determinada pelos pontos (A) e (C)
\coordinate (H) at ($(A)!(B)!(C)$);
\draw (A) -- (B) -- (C) -- cycle;
\draw[blue] (B) -- (H);
% Para operar com coordenadas (múltplo ou a combinação linear), deverá colocar entre '$'
\draw[dashed] (A) -- ($-2*(D)$);

% Coordenada com rótulos (ja desenha o rótulo quando define)
\coordinate[label=left:$X$] (X) at (3,0);
\coordinate[label=right:$Y$] (Y) at (4,1);
\draw (X) -- (Y); % ligando direto
\draw[dotted] (X) |- (Y); % ligando com vertical/horizontal
\draw[dashed] (X) -| (Y); % ligando com horizontal/vertical
% Coordenada polar.
% As coordenada polar é dado por (angulo:raio).
% O ângulo é em graus.
\coordinate (u) at (45:1); % (angulo:raio)
\coordinate (v) at (90:2);
% combinação linear das coordenadas
% Note que devem ficar delimitados pelo $
\draw[->] (A) -- ($1.5*(u)+0.5*(v)$);

\coordinate (Z) at ({sqrt(2)/2},{-sqrt(2)/2}); % para aplicar cálculo em cada coordenada, coloque entre chaves
\draw[green] (Z) circle(1pt);

\end{tikzpicture}
\end{center} 
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Retângulos, círculos, elipses e arcos também podem ser desenhados.
Veja o Exemplo~\ref{ex16:tikz:circle}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex12-02.tex, parte g}, label=ex:12-02:g]
\begin{ltxlisting}[caption={ex16-tikz-circle.tex}, label=ex16:tikz:circle]
\begin{center}
\begin{tikzpicture}
% retangulo com dois vertices opostos
\draw (0,-3) rectangle (3,-4);
\draw[rounded corners=5pt] (4,-3) rectangle (7,-4);

  \draw[red] (-1.5,0) circle (0.5);   % circlo

  \coordinate [label=left:$A$] (A) at (0,0); 
  \coordinate [label=right:$B$] (B) at (1.25,0.25); 
  \draw (A) -- (B);
   % Circulo passando por (B), com centro em (A)
  \node [draw,circle through=(B),label=above:$c$] at (A) {};

  \coordinate (X) at (3,0);
  \def\localRadius{2}
  \def\localAngle{45}

  % fazendo circulo na ponta inicial e rotulando como $X$
  \draw (X) circle (2pt) node[anchor=south west] {$X$};

  % faz o arco e os circulos na ponta final. Rotulando o ponto final como $Y$
  \draw (X) arc (0:\localAngle:\localRadius) circle (2pt) node[anchor=south] {$Y$};

% Elipse: Atento pelo uso de "and" quando indica os raios da elipse
  \draw (5,0) ellipse (0.5 and 1.0);
\end{tikzpicture}
\end{center}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Para desenhar vários elementos, poderá usar o laço como no Exemplo~\ref{ex16:tikz:foreach}.

\begin{ltxlisting}[caption={ex16-tikz-foreach.tex}, label=ex16:tikz:foreach]
\begin{center}
\begin{tikzpicture}
% repetindo sobre elementos da lista
\foreach \x in {1,3,4,5}{\draw[blue] (\x,2) circle(2pt);}
% repetindo no intervalo
\foreach \x in {1,...,10}{\draw[red] (\x,1) circle(2pt);}
% repetindo no intervalo com passos (indicar dois primeiros e o último)
\foreach \x in {1,3,...,10} \draw[green] (\x,0) circle(2pt);
% contador com iteração em letras
% count=\xi define contador de ítens como \xi
% quando tem mais de um comando, colocar entre chaves
% noode é usado para definir nó e colocar elementos na posição
\foreach \x [count = \xi] in {a,...,c,A,B,...,D}
{
\draw[orange] (\xi,-1) -- (\xi+0.5,-1);
\draw (\xi+0.25,-1.5) node{\x};
}
% iteração na lista de pares
% Parâmetro fill e draw indica a cor de contorno e de prenchimento 
% node desenha um nó (elemento)
% draw no node faz contorno e fill preenche. O anchor é onde é a coordenada indicada, visto do centro do nó.
\foreach \x/\y [count = \i] in {0/0, 1/0, 2/0, 0/1, 1/1, 2/1}
{
\draw[fill=yellow,draw=blue] (\x,{\y-4}) node[anchor=south west,draw,fill]{\i};
}
\end{tikzpicture}
\end{center}
\end{ltxlisting}

Podemos obter intersecções. 
%Para pintar dentro, podemos usar o comando \verb+\fill+\index{fill@\verb+\fill+} (ou \verb+\draw+ com opção)
Veja o Exemplo~\ref{ex16:tikz:intersection}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex12-02.tex, parte f}, label=ex:12-02:f]
\begin{ltxlisting}[caption={ex16-tikz-intersection.tex}, label=ex16:tikz:intersection]
\begin{center}
\begin{tikzpicture}
  % desenhando e definindo coordenadas
  \draw (0,0) coordinate (A) -- (2,3) coordinate (B)
        (0,2) coordinate (C) -- (3,1) coordinate (D);
  \fill[red] (intersection of A--B and C--D) circle (2pt);
  
 % Outra forma de obter intersecção.
 \draw (4,0) coordinate (E) -- (6,3) coordinate (F)
        (4,2) coordinate (G) -- (7,1) coordinate (H);
  \fill[blue] (intersection cs:
       first line={(E) -- (F)},
       second line={(G) -- (H)}) circle (2pt);
% intersecção de 2 circulos ('name path' foi usado para nomear)
\draw[name path=circloa] (1.5,-1.5) circle(1);
\draw[name path=circlob] (2.5,-1.5) circle(1);
% ligando pontos de intersecção
\draw[blue, very thick, name intersections = {of = circloa and circlob}] (intersection-1) -- (intersection-2);
% intersecção com múltiplos pontoos
\draw[name path=elipse1] (0,-4) ellipse(2 and 1);
\draw[name path=elipse2] (0,-4) ellipse(1 and 2);
% total=\k define '\k' localmente (só para o comando atual) como número de pontos. Para tornar '\k' global, acrescente '\pgfextra{\global\let\k\k}'
% 'name' permite mudar o nome do ponto da intersecção na qual o padrão é 'intersection'
\path[name intersections={of=elipse1 and elipse2, name=P, total=\k}]\pgfextra{\global\let\k\k};
% colocar circulos vermelho sobre pontos de intersecção
\foreach \i in {1,2,...,\k}{\fill[red] (P-\i) circle(2pt);}       
% Se precisar, poderá ordenar seguindo o caminho 'caminho', pelo 'sort by=caminho'
\end{tikzpicture}
\end{center} 
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Também podemos desenhar o gráfico das funções e curvas parametrizadas.
Veja o Exemplo~\ref{ex16:tikz:grafico}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex12-02.tex, parte h}, label=ex:12-02:h]
\begin{ltxlisting}[caption={ex16-tikz-grafico.tex}, label=ex16:tikz:grafico]
\begin{center}
\begin{tikzpicture}%[domain=-3.2:3.2]
%\draw[dotted] (-3.2,-1.2) grid (3.2,1.2);
\draw[->] (-3.5,0) -- (6.8,0) node[right] {$x$}; 
\draw[->] (0,-5.2) -- (0,2.2) node[above] {$y$};

% 'smooth' é para suavizar a curva pela interpolação

% O ângulo padrão será em graus. Para usar em radianos, acrescente " r" (espaço seguido de 'r') no parâmetro da função trigonométrica
\draw[smooth,color=blue,domain=-pi-0.3:pi+0.3] plot (\x,{sin(\x r)}) node[below] {$f(x)=\mathrm{sen}(x)$}; 

% Curvas em coordenada polar. O ângulo padrão será em graus. A função deg() converte radiano para grau (é mesmo que colocar sufixo " r")
\draw[smooth,color=red,domain=0:2*pi] plot ({deg(\x)}:\x) node[above] {$\rho(\theta) =\theta$}; 

% curvas paramétricas.
% poderá especificar o nome da variável em vez de usar o padrão que é "\x"
\draw[smooth,color=green,domain=-1.8:1.8,variable=\t] plot ({cosh(\t)},{sinh(\t)}) node[above]{$\text{ramo de }x^2-y^2=1$};
\end{tikzpicture}
\end{center}
\end{ltxlisting} 
%\end{LTXexample}
%\end{singlespacing}

%Também podemos desenhar gráficos da função tabelada. 
O Exemplo~\ref{ex16:tikz:funcao:tabelada}, está usando a função tabelada no arquivo de texto externo. 
Ele também faz o uso do laço \verb+\foreach+\index{tikz!foreach@\verb+\foreach+} para marcar valores sobre eixos.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex12-02.tex, parte i}, label=ex:12-02:i]
\begin{ltxlisting}[caption={ex16-tikz-funcao-tabelada.tex}, label=ex16:tikz:funcao:tabelada]
\begin{center}
\begin{tikzpicture}
  % eixos
  \draw[->] (-2.5,0) -- (2.5,0) node[right] {$x$};
  \draw[->] (0,-0.5) -- (0,4.5) node[above] {$y$};

  % grid
  \draw[dotted] (-1,0) |- (0,1) -|(1,0);
  \draw[dotted] (-2,0) |- (2,4) -- (2,0);
  
  % efetuando laço nos parâmetros para marcar escala
  \foreach \x in {-2,-1,1,2}   % sobre eixo x
    \node at (\x, 0) [below] {\x};
  \foreach \y in {1,4}   % sobre eixo y
    \node at (0,\y) [anchor=south west] {\y};

  % gráfico da função tabelada no arquivo externo.
  % Note que tikz não reconhece notação científica
  % no arquivo de entrada.
  \draw[color=blue] plot[smooth] file {latex-via-exemplos-tabela.txt} node [right] {$y=x^2$};
\end{tikzpicture} 
\end{center}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

O parâmetro \texttt{smooth} no \texttt{plot}\index{tikz!plot} é para suavizar a curva através de interpolação.

Para plotar mais confortavelmente a função tabelada, por exemplo, do arquivo \texttt{csv} que pode ser exportado facilmente pela planilha eleltrônica, poderá usar o pacote \texttt{pgfplots}\index{pgfplots} que não será tratado neste texto.

Intersecção envolvendo a curva gerado pelo plot é dado no Exemplo~\ref{ex16:tikz:intersection-plot}.

\begin{ltxlisting}[caption={ex16-tikz-intersection-plot.tex}, label=ex16:tikz:intersection-plot]
\begin{center}
\begin{tikzpicture}[scale=1.5] % podemos mudar a escala
\draw[domain=-0.3:{2*pi+0.3}, name path=plotseno] plot[samples=100, smooth] (\x,{sin(\x r)});
\draw[name path=eixox] (-0.3, 0) -- ($({2 * pi+0.3},0)$);
% total=\k define '\k' como local. Para tornar '\k' global, acrescente '\pgfextra{\global\let\k\k}'
\path[name intersections={of=plotseno and eixox, name=P, sort by=eixox, total=\k}]\pgfextra{\global\let\k\k};
\foreach \i in {1,2,...,\k}{\fill[red] (P-\i) circle(2pt);}
\end{tikzpicture}
\end{center}
\end{ltxlisting}

Também podemos pintar, preencher com padrão e sombrear (pintar em degradê).
Veja Exemplo~\ref{ex16:tikz:pintar}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex12-02.tex, parte j}, label=ex:12-02:j]
\begin{ltxlisting}[caption={ex16-tikz-pintar.tex}, label=ex16:tikz:pintar]
\begin{center}
\begin{tikzpicture}[scale=1.5] % podemos mudar a escala
% '\fill' (pinta) e '\filldraw' (pinta e desenha o contorno) podem ser usados para pintar. Outra forma é passar o parâmetro 'fill' para o comando '\draw'.
\filldraw[fill=red!25,draw=blue] (0,1.5) rectangle (1.5,2.5);
\fill[color=red] plot[domain=pi:3*pi] (\x,{2.5+sin(\x r)}) -- cycle;
% '\pattern' preenche com padrão de preenchimento.
% Parâmetro 'draw' é para desenhar o contorno
\pattern[pattern=north east lines, draw=blue] (3,0) circle (1);
% usando a transparência
% ++(coordenada) é a coordenada anterior somado com este
\draw[fill=blue] (5,0) rectangle ++(1,1);
\draw[opacity=0.5,fill=red] (5,0) circle (0.7);
% nó (texto ou similar na posição)
\node[fill=yellow,draw=blue,anchor=south west, circle, double] at (7,0) {1};

% sombra é feito pelo comando '\shade' e sombra com contorno com '\shadedraw' (igual a '\shade' com parametro 'draw')
% 'sombra' pode ser degrade e aceita o sintaxe do pacote 'xcolor' (cor!percentual)
% Na função, \x^2 nao funciona. Deve ser (\x)^2.
\shade[domain=-1:1,top color=blue!25,bottom color=red!25,draw=red] plot (\x
,{-2+(\x)^2});
\shade[top color=blue!25,bottom color=red!25,draw=red] plot[domain=2:4] (\x
,{-2+1.5*(\x - 3)^2}) -- plot[domain=4:2] (\x
,{-2.5+(\x - 3)^2}) -- cycle;
\shade[inner color=white,outer color=blue] (5,-2) circle (0.5);

% fazendo tudo com '\draw'
\draw[red,pattern=north east lines,pattern color=red!25] (1,-3) circle (0.3);
\draw[fill=blue!25,draw=blue] (2,-3) circle (0.3);
\draw[shade, left color=blue!25, right color=red!25,draw=blue] (3,-3) -- (3.5,-3) -- (3,-4) -- cycle;
\draw (3.25,-3.5) node{$x$};
\draw[fill=yellow,draw=blue] (4,-3) node[anchor=south west,draw,fill]{1};
\end{tikzpicture}
\end{center}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Para traçar grades, existe o comando \texttt{grid}\index{tikz!grid}. O Exemplo~\ref{ex16:tikz:grid} ilustra o seu uso para produzir papel milimetrado, cuja saída será omitida.
%
\begin{singlespacing}
\begin{lstlisting}[caption={ex16-tikz-grid.tex}, label=ex16:tikz:grid]
\documentclass[a4paper]{article} 
% A4: 21cmx29.7cm
\usepackage[a4paper,lmargin=0.75cm,textheight=28.05cm,textwidth=19.55cm,tmargin=0.75cm]{geometry}
\usepackage{tikz}
\pagestyle{empty}% sem enumeração da página
\begin{document}
\begin{center}
\begin{tikzpicture}
\draw [black!20, very thin, step=0.1cm] (0,0) grid (19.5,28);
\draw [black!20, step=0.5cm] (0,0) grid (19.5,28);
\draw [black!20, step=1.0cm, thick] (0,0) grid (19.5,28);
\end{tikzpicture}
\end{center}
\end{document}
\end{lstlisting}
\end{singlespacing}

O Exemplo~\ref{ex16:tikz:curve} ilustra o uso de curvas.

\begin{ltxlisting}[caption={ex16-tikz-curve.tex}, label=ex16:tikz:curve]
\begin{center}
\begin{tikzpicture}[scale=1.5] % podemos mudar a escala
% smooth liga suavemente
\draw plot[smooth] coordinates {(0,0) (1,1) (2,0) (3,-1) (4,0) (5,1)};
% smooth cyle fecha suavemente. 'tension' controla as tnsões nos pontos
\draw plot[smooth cycle,tension=1] coordinates{(6,1) (6,0) (7,0) (7,1)};
% indicando o ângulo de saida e de chegada para cada aresta (padrão é em ralação ao eixo OX)
% Para ser relação ao segmento, use a opção 'relative'
\draw [red] (0,-2) circle(1pt) to[out=30,in=135, relative] (1,-3)  circle(1pt) to[out={-90},in=-45] (0,-4)  circle(1pt);
%Para saida e chegada como ângulos suplementares e, é como relativo, poderá usar o 'bend left/right', útil para diagramas 
\coordinate (A) at (2,-2);
\coordinate (B) at (3,-3);
\draw[color=red] (A) circle(1pt) to [bend left=45] (B) circle(1pt);
\draw[dotted] (A) -- (B);
% Curva de bezier pode ser produzido usando pontos de controle.
\draw (4,-3) .. controls (4.5,-2) .. (5,-3); % com um ponto de controle
\draw[dotted] (4,-3) --  (4.5, -2) circle(1pt) -- (5,-3); %mostrando  o controole
\draw (6,-3) .. controls (6.5,-2) and (7,-2) .. (7.5,-3); % com dois pontos de controle
\draw[dotted] (6,-3) -- (6.5,-2) circle(1pt) -- (7,-2) circle(1pt)  -- (7.5,-3); %mostrando o controole
\end{tikzpicture}
\end{center}
\end{ltxlisting}

Para definir parâmetro opcional para toda figura, passe no parametro opcional do \texttt{tikzpicture}, mas se quer configurar somente um trecho da figura, existe o ambiente \texttt{scope}\index{tikz!scope}. Veja o Exemplo~\ref{ex16:tikz:scope}.

\begin{ltxlisting}[caption={ex16-tikz-scope.tex}, label=ex16:tikz:scope]
\begin{center}
\begin{tikzpicture}[color=blue] % cor padrão é 'blue'
\draw[->] (-1,0) -- (5,0);
\draw[->] (0,-0.5) -- (0,4);
% conteúdo é rotacionado por 45 graus
% cor padrão é 'green'
\begin{scope}[rotate=45, color=green]
  \draw (0,0) rectangle ++(2,1);
  \draw (1,0.5) circle ({sqrt(1+0.5^2)});
\end{scope}
\node[draw=black,color=red] at (3,3) {$x$};
\end{tikzpicture}
\end{center} 
\end{ltxlisting}

%Para efetuar recorte, existe o comando \verb+\clip+\index{tikz!clip@\verb+\clip+} cuja parâmetro é o caminho do contorno do recorte.
%
%Veja o exemplo do uso de clip (Exemplo~\ref{ex16:tikz:clip:esfeta}).
%
%\begin{ltxlisting}[caption={ex16-tikz-clip-esfera.tex}, label=ex16:tikz:clip:esfera]
%\begin{center}
%\begin{tikzpicture}
%  \clip (0,0) circle (1);
%  \shade[inner color=white, outer color=blue] (-0.5,0.5) circle(1.71);
%\end{tikzpicture}
%\end{center} 
%\end{ltxlisting}
%
%Se apenas uma parte da figura será cortada, use clip dentro do ambiente \texttt{scope}.
%
%Veja o Exemplo~\ref{ex16:tikz:clip}.
%
%\begin{ltxlisting}[caption={ex16-tikz-clip.tex}, label=ex16:tikz:clip]
%\begin{center}
%\begin{tikzpicture}
%\draw[->] (-1,0) -- (5,0);
%\draw[->] (0,-0.5) -- (0,4);
%\begin{scope}[even odd rule]
%  \clip (0,0) circle (1) circle(2);
%  \draw[fill=red] (-1,-1) rectangle ++(3,3);
%\end{scope}
%\node[draw=black,color=red] at (3,3) {$x$};
%\end{tikzpicture}
%\end{center} 
%\end{ltxlisting}
%
%A opção \texttt{even odd rule} no \texttt{scope} é para considerar região fora do primeiro circulo e dentro do segundo circulo no clip (como `clip' não aceita o parâmetro opcional, send necessário passar no `scope'). Note que os elementos fora do \texttt{scope} não foram recortados.

%A região a ser considerada para pintar, preencher, sombrear ou recortar, é o lado esquerdo do caminho. No circulo, o lado esquerdo é o lado de dentro dele. Invertendo a direção do primeiro com a opção \texttt{even odd rule}, seria a região fora do primeiro ćirculo e dentro do sengundo círculo. Diferente do \verb+\fill+, \verb+\shade+, etc., o \verb+\clip+ não aceita parâmetro opcional, sendo necessário passar para o \texttt{scope}. 
%

Recorte na região é feito pelo comando \verb+\clip+\index{tikz!clip@\verb+\clip+}. Para cortar apenas uma parte da figura, coloque no ambiente \texttt{scope}, como no Exemplo~\ref{ex16:tikz:clip}.

%\begin{singlespacing}
\begin{ltxlisting}[caption={ex16-tikz-clip.tex}, label=ex16:tikz:clip]
\begin{center}
\begin{tikzpicture}
% scope delimita a parte que vai aplicar certa configuração (no caso, delimitar o \clip)
\begin{scope}
  \clip (-2,0) circle (1); % recortar no circulo
   % valor a ser calculado deve ficar entre chaves (veja no \shade a seguir)
  \shade[inner color=white, outer color=blue] ({-2+0.2},0.2) circle({1+sqrt(0.08)}); % regangulo preenchido
\end{scope}
\begin{scope}
  \clip (1,0) circle (1); % recortar no circulo
  \draw[pattern=north east lines] (1,0) rectangle ++(3,2); % regangulo preenchido
\end{scope}
% desenha o contorno
\draw (1,0) circle (1);
\draw (1,0) rectangle ++(3,2);
\end{tikzpicture}
\end{center}
\end{ltxlisting}
%\end{singlespacing}

Regiões usado no \texttt{fill}, \texttt{pattern}, \texttt{shade} e \texttt{clip} poderão ter mais de uma curva, ou curva que auto interceptam.
Por padrão, a região a ser considerada será pela regra 'non-zero rule'.
Nesta regra, para determinar se $P$ está no lado de dentro, traça-se o raio saindo de $P$ em alguma direção e para cada cruzamento, atribui '+1' se a orientação do raio com a direção da curva for positiva e '-1' caso for negativa.
Se a soma destes números forem zero, estará no lado de fora. Se for não nulo, estará no lado de dentro da região.

Nos círculos e elipses, a orientação é positiva (rotação anti-horária). No caso do retângulo, depende dos vértices. Assim, para obter a região anelar delimitados pelos dois circulos, não vai funcionar por ter 2 ciruclos na mesma direção.
Para contornar este problema, poderá alterar a regra de detecção da região para 'even odd rule' que considera o $P$ como ponto exterior quando o raio partindo de $P$ em alguma direção interceptar o caminho número par de vezes (e interior, se interceptar número impar de vezes).
Para isso, basta passar a opção 'even odd rule' no parâmetro opcional. No caso do \verb+\clip+ que não aceita o parametro opcional, deverá passar para o parâmetro do \texttt{scope} (ou do \texttt{tikzpicture}).
Veja o Exemplo~\ref{ex16:tikz:region}.

\begin{ltxlisting}[caption={ex16-tikz-region.tex}, label=ex16:tikz:region]
\begin{center}
\begin{tikzpicture}
% região com dois contornos
\fill[color=green] (1,0)--(3,0) -- (2,1) -- cycle
      (0, -0.5) -- (2,1.5) -- (4, -0.5) -- cycle;
% 'even odd rule' permite pegar região entre dois circulos      
\draw[fill=yellow, draw=blue, even odd rule] (6,0) circle(0.5) (6,0) circle(1);
\begin{scope}
  \clip (1,-2) circle (0.5) (0,-3) rectangle ++(2,2); % recortar no fora circulo e dentro do retangulo
  \draw[pattern=north east lines] (0,-3) rectangle ++(3,2); % regangulo preenchido
\end{scope}

\begin{scope}[even odd rule]
  % \clip  (3,-3) rectangle ++(3,2) (3,-2) circle(0.5) (4,-2) circle(0.5);
  \clip  (4,-3) circle(0.5) (5.5,-3) circle(0.5) (4.75,-3) circle(1.5);
  \draw[pattern=bricks] (3,-5) rectangle ++(3.5,4); % regangulo preenchido
\end{scope}
\end{tikzpicture}
\end{center}
\end{ltxlisting}
%\end{singlespacing}
%

Na matriz do \texttt{tikz}, podemos desenhar sobre ele.
Veja Exemplo~\ref{ex16:tikz:matriz}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex12-02.tex, parte k}, label=ex:12-02:k]
\begin{ltxlisting}[caption={ex16-tikz-matriz.tex}, label=ex16:tikz:matriz]
\begin{center}
\begin{tikzpicture} 
\matrix (A) [matrix of math nodes,left delimiter=[,right delimiter={]} ] 
{ 1 & 2 & -1 & 5 \\
0 & |[draw=red,circle]|3 & 2  & 1 \\
0 & -2 & \phantom{-}2  & -4 \\
}; 
% separando a matriz da parte aumentada
\draw[thick,dashed,blue] (A-1-3.north east) -- (A-3-3.south east);
% limitando a parte escalonada
\draw[thick,dotted,blue] (A-2-1.north west) -- (A-2-1.north east) -- (A-3-1.south east);
% onde vai colocar a seta para pivô
\coordinate (P) at ($(A-2-1)!-2!(A-2-2)$);
\coordinate (Q) at ($(A-2-1)!-1.3!(A-2-2)$);
% colocando a seta na linha de pivô
\draw[->] (P) -- (Q);
\node at ($(P)!-1.2!(Q)$) {pivô};
\end{tikzpicture}
\end{center}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Caso precisar de recursos mais avançados para matriz, poderá usar o pacote \texttt{nicematrix}\index{nicematrix}, baseado em \texttt{tikz}.


O diagrama comutativo é uma espécie de tabela com comando \verb+\ar+\index{ar@\verb+\ar+} para desenhar setas. 
\verb+\ar+ é seta e o primeiro parâmetro opcional dele é para que lado vai a seta (pode ser combinado). ``r'' (direita), ``l'' (esquerda), ``d'' (para baixo), ``u'' (para cima). 
Também pode usar o ``\texttt{to=<destino>}'' para indicar a célula diretamente. 
O rótulo, caso exista, deve ser delimitado entre aspas.

%No Exemplo~\ref{ex16:tikz:diagrama}, precisará também do pacote \texttt{amssymb} para o comando \verb+\circlearrowleft+\index{circlearrowleft@\verb+\circlearrowleft+}, mesmo com \texttt{unicode-math} no \XeLaTeX/Lua\LaTeX{} (Se estiver usando \XeLaTeX/Lua\LaTeX, carregue antes do \texttt{unicode-math}).
%No \texttt{unicode-math}, este símbolo é \verb+\acwgapcirclearrow+\index{acwgapcirclearrow@\verb+\acwgapcirclearrow+}, mas na versão até 2017, ele não aparece. Isto porque, a fonte padrão ``Latin Modern Math'' ainda não tem este símbolo.

No Exemplo~\ref{ex16:tikz:diagrama}, foi usado o comando \verb+\circlearrowleft+\index{circlearrowleft@\verb+\circlearrowleft+} do pacote \texttt{amssymb}.
Se estiver usando o \texttt{unicode-math} no \XeLaTeX/Lua\LaTeX{}, poderá definir como sendo \verb+\acwopencirclearrow+\index{acwopencirclearrow@\verb+\acwopencirclearrow+}.
Para isso, coloque o comando
\verb+\providecommand{\circlearrowleft}{\acwopencirclearrow}+
no \texttt{preamble} do documento.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex12-02.tex, parte l}, label=ex:12-02:l]
\begin{ltxlisting}[caption={ex16-tikz-diagrama.tex}, label=ex16:tikz:diagrama]
\begin{center}
\begin{tikzcd}
A \ar[r, "\phi"] \ar[d, red] \ar[to=2-2, phantom, "\circlearrowleft" description] & B \ar[d, "\psi" red] \\
C \ar[r, red, "\varphi" red, "\eta" {swap, blue}] & D
\end{tikzcd}
% setas curvas
\begin{tikzcd}
A \ar[r, "\phi"] \ar[rr, "f", bend left, red] & B \ar[r, "\psi", Rightarrow] & C \ar[loop right]
\end{tikzcd}
% cruzando: necessário para diagrama 3D
\begin{tikzcd}
A \arrow[dr] & B \arrow[dl, crossing over] \\
C & D
\end{tikzcd}
\end{center} 
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

O comando \verb+\ar+ (ou \verb+\arrow+) traça a seta de acordo com o seu parâmetro. O primeiro argumento é para onde vai (d = para baixo, r=para direita, l=para esquerda, u=para cima). Também pode indicar origem e/ou destino pelo índices ou rótulos, usando \verb+from+ e/ou ``\verb+to+'').

As bibliotecas para \texttt{tikz} é extensa, cobrindo vários tipos de desenhos e diagramas.
Se precisar de algo desse tipo, consulte o material para ver se já tem uma biblioteca pronta.
Por exemplo, usando a biblioteca \texttt{angle}, poderá marcar facilmente os ângulos pelo uso de \texttt{pic}, ou usar a biblioteca \texttt{decorations} para colocar elementos ao longo do caminho, inclusive um texto.

Além de bibliotecas do \texttt{tikz} (módulos de \texttt{tikz} carregados por \verb+\usetikzlibrary+), existem vários pacotes independentes que adicionam funcionalidades no \texttt{tikz} tais como \texttt{tikz-euclid}\index{tikz-euclid} para ser usado na elaboração de desenhos geométricos, \texttt{pgfplots}\index{pgfplots} para desenhar gráficos de funções ou de dados em \texttt{2D} ou em \texttt{3D}, etc. que não vamos discutir aqui.


%pgfplot? Nao veremos

\section{Mais um pouco sobre sobreposição\label{sec:image:overpic}}

Para escrever/desenhar sobre a figura externa pronta, com frequência, existe o pacote \texttt{overpic}\index{overpic} que abre o ambiente \texttt{picture} e ajusta o \verb+\unitlength+ ao mesmo tempo. O padrão é usar o valor de \verb+\unitlength+ como 1\% da maior escala da imagem. 
O pacote implementa o ambiente \texttt{overpic} que aceita somente o nome da imagem externa e \texttt{Overpic} com `O' maiúsculo que permite colocar elemento qualquer no lugar da iamgem externa.

O Exemplo~\ref{ex16:imagem:sobreposicao} produzirá mesmo efeito do Exemplo~\ref{ex09:imagem:sobreposicao}.

% \setcounter{lstorichapter}{\value{chapter}}
% \setcounter{lstorisection}{\value{section}}
\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex09-04.tex},label=ex:09-04]
\begin{lstlisting}[caption={ex16-imagem-sobreposicao.tex},label=ex16:imagem:sobreposicao]
\begin{figure}[htbp!]
\center
% opção grid pode ser usado para produzir grade sobre a figura, facilitando encontrar a posição correta sobre a imagem
% Overpic com 'O' maiúsculo premite colocar qualquer elemento, em vez de ser somente imagem externa
%\begin{Overpic}[grid,tics=10]%{\inludegraphics[width=0.45\linewidth]{latex-via-exemplos-fig}}
%  \put(35,45){\LARGE $e^{\pi i}+1=0$}
% \end{Overpic}
\begin{overpic}[width=0.45\linewidth]{latex-via-exemplos-fig}
  \put(35,45){\LARGE $e^{\pi i}+1=0$}
\end{overpic}
\caption{Usando overpic\label{fig:overpic}}
\end{figure}
\end{lstlisting}
%\end{LTXexample}
\end{singlespacing}
%\setcounter{chapter}{\value{lstorichapter}}
%\setcounter{section}{\value{lstorisection}}

Para sobrepor elementos mais complexos sobre a imagem, é melhor usar o ambiente \texttt{tikzpicture} do pacote \texttt{tikz} (do que ambiente \texttt{picture}), como no Exemplo~\ref{ex16:imagem:sobreposicao:tikz}.

\begin{ltxlisting}[caption={ex16-imagem-sobreposicao-tikz.tex},label=ex16:imagem:sobreposicao:tikz]
\begin{figure}[htbp!]
\center
\def\picunit{0.45\textwidth} % unidade nesta figura
\begin{tikzpicture}[x=\picunit, y=\picunit]
  \node[anchor=south west,inner sep=0] (image) at (0,0)
   {\includegraphics[width=\picunit]{latex-via-exemplos-fig}};
  % grid (grade) serve para localizar a posição correta sobre a imagem
  %\draw[step=0.1] (0,0) grid (1,1);
  \node[anchor=south west,inner sep=0] at (0.35,0.45) {\LARGE $e^{\pi i}+1=0$};
\end{tikzpicture}
\end{figure}
\end{ltxlisting}

\clearpage\thispagestyle{empty}\cleardoublepage
\chapter{Produzindo \texttt{Poster} e \texttt{Slides}}

\section{\texttt{Poster}}

Para quem quer produzir o \texttt{poster} (cartaz) diretamente no \LaTeX, a maneira mais prática é diagramar com um quarto (metade de largura e altura) do tamanho desejado, usando letra 12pt. 
Após finalizar, amplie o poster para produzir no tamanho real. 
Com tal procedimento, os caracteres serão ampliados para equivalentes a 24pt. 
Use a fonte \texttt{Sans Serif} para poster.
Caso de precisar usar a fonte romana, aumente o tamanho de caracteres em torno de 20\% a mais.

Por exemplo, para poster final de 100x120cm, dimensione para 50x60cm, para dimensão final de A0, dimensione para A2, etc.

Para criar ``layout'' de divisão em colunas e similares, use o ambiente \texttt{multicols} (do pacote \texttt{multicol}) e \texttt{minipage}. 
O enfeite das ``caixas de texto'' podem ser feitos usando caixas como o \verb+\fbox+.

No Exemplo~\ref{ex17:poster}, foi usado o pacote \texttt{lipsum} para preencher o espaço com texto para ver como fica a aparência do poster. 

% \LTXinputExample{latex-via-exemplos-poster}
\begin{singlespacing}
% \lstinputlisting[caption={ex11-12.tex},label=ex:11-12]{latex-via-exemplos-poster}
\lstinputlisting[caption={ex17-poster.tex},label=ex17:poster]{latex-via-exemplos-poster}
\end{singlespacing}
%
\begin{framed}
\center
\includegraphics[width=0.7\linewidth]{latex-via-exemplos-poster}
\end{framed}

Se quer usar \LaTeX{} para produzir material publicitário como posters, jormais, revistas e livros ilustrados com a qualidade profissional, o pacote \texttt{flowfram}\index{flowfram} é o pacote adequado.
 Além da sua qualidade final, a facilidade e a versatilidade costumam ser superiores aos pacotes similares. Veja a Seção~\ref{sec:flowfram} para exemplo.
 
% Para criar \texttt{layout} complexos para o uso do pacote \texttt{flowfram} que inclui caixas não retangulares, poderá usar o programa livre e multi plataforma \texttt{flowframtk}\index{flowframtk} disponível no site
%\url{http://www.dickimaw-books.com/latex/admin/html/flowfram.shtml}

Para quem estiver acostumado a usar o pacote \texttt{beamer} (pacote para produzir slides de apresentação), o pacote \texttt{beamerposter}\index{beamerposter} é interessante para produzir poster com cara de apresentação em \texttt{beamer}.
 
Em vez de usar o \LaTeX, poderá usar aplicativos gráficos para criar poster ou similares.
Para posters científicos, ideal é usar o aplicativo que tenha suporte ao \LaTeX{} como no caso do editor gráfico \texttt{inkscape}\index{inkscape} e editor para publicações \texttt{scribus}\index{scribus}, ambos livres e multi plataforma.

Para aumentar o poster diagramado com fontes 12pt, como do Exemplo~\ref{ex17:poster}, podemos usar o aplicativo livre e multi plataforma \texttt{jPDFTweak}\index{jPDFTweak} que é um aplicativo para pós produção de documentos PDF, disponível em \url{http://jpdftweak.sourceforge.net/}.

Entre várias funções importantes deste aplicativo, existe a função de redimensionamento para ampliar o poster.

No \texttt{jPDFTweak}:

\begin{enumerate}
\item indique o arquivo de entrada em ``input''.
\item indique o arquivo de saída em ``output''.
\item em [page size], cheque o ``[v] scale pages'' e selecione o tamanho da página como ``Page size'' = ``escala dobro do original''.
\item clique no [run]
\end{enumerate}

\textbf{Observação:} Para dobrar a escala no papel \texttt{ISO}, 
escolha dois números para baixo. 
Por exemplo, se o original estiver em \texttt{A2 landscape}, escolha \texttt{A0 landscape}. 
Caso a medida do papel estiver em centímetros, dobre o valor e em seguida, multiplique por $72/2.54$ para converter em \texttt{postscript point} que \texttt{jPDFTweak} usa na largura e na altura do papel. 
Por exemplo, se o original estiver com $\SI{45}{\cm}\times\SI{60}{\cm}$, 
vamos colocar $90\times 72/2.54=2551.18$ e $120\times 72/2.54=3401.57$
para largura e altura respectivamente.

Note que, para imprimir na gráfica, basta levar o arquivo e dizer o tamanho do poster que costuma ampliar na hora de imprimir (ou seja, não é necessário levar arquivo redimensionado).
A largura mais utilizada para poster na gráfica é de até 1 metro, mas depende da gráfica, o que vale consultar antes de finalizar o poster.
Outro ponto a ser considerado no orçamento é o fato do poster com elemento colorido ser mais caro do que poster totalmente em preto e branco.

\section{\texttt{Slides}}

Para criar apresentações, costuma usar a classe \texttt{beamer}\index{beamer}.

Algumas opções da classe \texttt{beamer} são tamanho da fonte (normalmente usa 12pt, embora suporta o tamanho maior),
\texttt{handout} (para impressão. Ignora o \texttt{overlay}), \texttt{notes} (incluir notas) e \texttt{notesonly} (somente notas).

A classe \texttt{beamer} usa uma área reduzida com letra normal que será ampliado quando projetar na tela.
Assim, costuma usar a fonte de tamanho 12pt.

Nesta classe, cada tela de slide será delimitada pelo ambiente \texttt{frame}\index{frame}. 
Tem a versão comando do \texttt{frame}\index{frame@\verb+\frame+} também, para ser usado quando tem poucos comandos contidos nele, como no caso de título e sumário.

O tema (modelo) de slides é escolhido pelo comando
\verb+\usetheme+\index{usetheme@\verb+\usetheme+}.
Tema que vem como padrão são:
\texttt{AnnArbor, Antibes, Bergen, Berkeley, Berlin, Copenhagen,
Darmstadt, Dresden, Frankfurt, Goettingen, Hannover,
Ilmenau, JuanLesPins, Luebeck, Madrid, Malmoe,
Marburg, Montpellier, PaloAlto, Pittsburgh, Rochester,
Singapore, Szeged, Warsaw, boxes, default
e CambridgeUS}.

Para cada tema, ainda podemos escolher o tema de cores, ou combinação de cores a serem usados, escolhidos pelo comando \verb+\usecolortheme+\index{usecolortheme@\verb+\usecolortheme+}. 
Tema de cores padrão que vem são: 
\texttt{default, albatross, beaver, beetle, crane, dolphin, dove, fly, lily, orchid, rose, seagull, seahorse, whale e wolverine}.

Para ver como ficará a combinação do tema e tema de cores, poderá consultar o 
\url{https://hartwork.org/beamer-theme-matrix/}.

É pouco usado, mas ainda podemos alterar as combinações das fontes com o comando \verb+\usefonttheme+\index{usefonttheme@\verb+\usefonttheme+}. 
Tema de fontes padrão são: 
\texttt{default, serif, professionalfonts, structurebold,
 structureitalicserif, structuresmallcapsserif}.
Muitas vezes, usa-se o comando \verb+\setbeamerfont+\index{setbeamerfont@\verb+\setbeamerfont+} para configurar fontes de seus elementos em vez de escolher um tema para fontes (combinação de fontes).

A classe \texttt{beamer} carrega o pacote \texttt{hyperref} por padrão.
Então podemos configurar alguns aspectos sobre informações do \texttt{PDF} com o \verb+\hypersetup+, mas isto não é obrigatório.

Para criar slide de títulos ou quando estiver usando tema que usa títulos, autores, etc, precisará informar o titulo, autor, instituição e data, respectivamente pelos comandos \verb+\title+, \verb+\author+, \verb+\institute+ e \verb+\date+.
Quando tiver mais de um autor, separe com \verb+\and+. 
O comando \verb+\inst+ dentro do \verb+\author+ e \verb+\institute+ faz a ligação de autor com o instituto correspondente.

Os elementos do slide pode ser alterado pelo comando \verb+\setbeamertemplate+\index{setbeamertemplate@\verb+\setbeamertemplate+}.
Se desejar criar degrade no fundo do slide, costuma usar o recurso do pacote \texttt{tikz}.
Note que \texttt{xcolor} é carregado pelo \texttt{beamer} por padrão.
O comando \verb+\setbeamertemplate+ também pode ser usado para desativar os botões de navegação.

Os comandos \verb+\maketitle+ e \verb+\tableofcontents+ funcionam normalmente. 
Note que o sumário é construído a partir de \texttt{section} e não pelo \texttt{frame}.
Assim, para ter o sumário, deverá colocar \verb+\section+ entre os \texttt{frame}'s no local desejado.

Cada \texttt{slide} (tela) é criado pelo ambiente \texttt{frame}\index{frame} ou comando \verb+\frame+\index{frame@\verb+\frame+}.
O ambiente \texttt{frame} aceita o comando \verb+\frametitle+\index{frametitle@\verb+\frametitle+} para colocar títulos.

O comando \verb+\note+\index{note@\verb+\note+} serve para inserir notas adicionais que não são colocados no \texttt{slide}, mas podem ser gerados e impressos com a opção \texttt{notes} ou \texttt{notesonly} na opção da classe, para auxiliar na apresentação.

O \texttt{beamer} também permite gerar \texttt{pdf} para aplicativos de apresentação ``dual screen'' (tela dupla), exibindo o slide no projetor e notas na tela do notebook.

Para tanto, coloque o comando

\begin{lstlisting}
\setbeameroption{show notes on second screen=right} 
\end{lstlisting}

no começo do documento para que a nota seja colocada a direita do slide no \texttt{PDF}.
Este \texttt{pdf} pode ser aberto no aplicativo como o \hyperlink{tools:pympress}{\texttt{pympress}} para a exibição correta.

%Note que existe a versão ambiente de \texttt{note}\index{note} para anotações maiores, mas ele só funciona fora do \texttt{frame} (a versão comando funciona tanto dentro como fora do \texttt{frame}).
% Não está funcionando na versão 2016. Testar na versão mais recente.

As notas adicionadas fora do \texttt{frame} será assumido que do \texttt{frame} anterior.

O Exemplo~\ref{ex17:slides} ilustra um slide e uma das telas do slide gerado pelo código listado. 
Nele, foi usado o pacote \texttt{lipsum} para preencher alguns slides.

\begin{singlespacing}
%\lstinputlisting[caption={ex12-01.tex},label=ex:12-01]{latex-via-exemplos-slides}
\lstinputlisting[caption={ex17-slides.tex},label=ex17:slides]{latex-via-exemplos-slides}
\end{singlespacing}
%
\begin{framed}
\center
\includegraphics[page=4, width=0.7\linewidth]{latex-via-exemplos-slides}
\end{framed}

Note que, nos itens de listas, aceitam o parâmetro opcional de ``\texttt{overlay}''\index{overlay} delimitado por ``<'' e ``>''. 
Com o uso de \texttt{overlay}, o \texttt{slide} será apresentado por etapas. 
Em cada etapa do \texttt{overlay}, será mostrado uma parte do \texttt{slide}. 
O mais usado é ir mostrando cada vez mais elemento na medida que etapa avança (andar no \texttt{slide}).

A especificação do \texttt{overlay} são:
\begin{description}
\item[<n>] indica que será mostrado somente na etapa n.
\item[<m-n>] é mostrado somente nas etapas m até n.
\item[<n->] é mostrado nas etapas n em diate.
\item[<-n>] é mostrado até as etapas n.
\end{description}

Os comandos de formatação de textos do tipo \verb+\textsf{}+, \verb+\textbf{}+, \verb+\emph+, etc, também aceitam a opção de \texttt{overlay}.
Também foi acrescido o comando \verb+\alert+ neste conjunto para deixar o texto em vermelho.

Para criar \texttt{overlay} nas partes desejadas que não é necessariamente itens da lista ou formatação de texto,
existe o comando \verb+\only+\index{only@\verb+\only+} que mostra o conteúdo somente no \texttt{overlay} indicado.

Também tem o ambiente chamado de \texttt{block}\index{block} que produz ``bloco'' com ou sem títulos e aceita ``overlay''.

No \texttt{frame}, alguns parâmetros opcionais podem ser usados.
Alguns dos mais importantes são
\begin{description}
\item[fragile] Necessário quando usa o ambiente \texttt{verbatim} ou similar.
\item[allowframebreaks] Ativa a quebra automática de  \texttt{frame}'s quando o conteúdo não cabe no \texttt{frame} atual.
\item[plain] Limpa as configurações (cabeçalhos e rodapés) do \texttt{frame} para caber mais conteúdos. Útil para figuras e tabelas grandes.
\item[shrink] Reduz o tamanho do conteúdo para caber no \texttt{frame} atual, se necessário. Isto pode reduzir o tamanho da letra e por isso, deve ser usado com muita cautela. Use em conjunto com \texttt{plain} para ampliar a área de \texttt{slide}.
\end{description}

%Note que \BibTeX{} não funciona no \texttt{beamer}.
%Assim, deverá criar manualmente a referência bibliográfica com o ambiente \texttt{thebibliography}.

Dependendo do estilo usado, o slide em texttt{beamer} pode precisar ser compilado duas vezes para acertar detalhes.

\clearpage\thispagestyle{empty}\cleardoublepage
\chapter{Usando \XeLaTeX{} e Lua\LaTeX{}}
Neste capítulo será tratado sobre \XeLaTeX{} e Lua\LaTeX{}, considerado as próximas gerações de \LaTeX.

\section{Lua\LaTeX{} e \XeLaTeX}

O Lua\LaTeX{}\index{LuaLaTeX@{Lua(La)\TeX}} foi designado para ser o sucessor do PDF\LaTeX{} e por isso, deve ser o \LaTeX{} padrão no futuro, mas pode ser um pouco mais lento do que o \XeLaTeX\index{XelaTeX@{Xe(La)\TeX}}.
%Até o momento (2018), o \XeLaTeX{}\index{XelaTeX@{Xe(La)\TeX}} é considerado mais estável do que Lua\LaTeX.
Lua(La)\TeX{} permite estender a funcionalidade do (La)\TeX{} usando a linguagem script \texttt{Lua} (\texttt{Lua} foi desenvolvido no PUC-Rio, aqui no Brasil).

Já existem pacotes especiais para Lua\LaTeX{} como o módulo de diagramação automática de grafos no \texttt{pgf/tikz}.
O suporte ao recurso de microtipografia (efetuar pequenos ajustes no tamanho das letras e espaçamento para que o texto acomode melhor) pelo pacote \texttt{microtype} também funciona melhor com Lua\LaTeX{} do que em \XeLaTeX.

A maioria dos documentos de \LaTeX{} devem funcionar sem modificações no \XeLaTeX/Lua\LaTeX, mas para usar as fontes adicionais em ``Open Type'', ou as fontes do sistema, devem usar a forma própria de selecionar as fontes. 
%No caso em que a fonte selecionada contiver símbolos matemáticos suficientes, costuma usar o \texttt{unicode-math}\index{unicode-math} em vez dos \texttt{amssymb} e \texttt{amsmath}.
%Caso precisar de alguns símbolos de \texttt{amssymb} ou comandos de \texttt{amsmath}, carregue antes do \texttt{unicode-math}.

%PDFLaTeX e XeLaTeX/LuaLaTeX usa esquema diferente para seleção de fontes e podem usar esquema diferente também para a seleção de idiomas.

A forma de ajustar a codificação de documento fonte no \LaTeX, \XeLaTeX{} e Lua\LaTeX{} diferem, mas como \XeLaTeX{} e Lua\LaTeX{} usam \texttt{uft8} como padrão (e atualmente \LaTeX{} também), não vamos preocupar com isso.
%Só no \LaTeX{} que precisará especificar, usando o pacote \texttt{inputenc}.

Embora \texttt{babel} funcione no \XeLaTeX/Lua\LaTeX{} também, no Exemplo~\ref{ex18:lualatex} foi usado o \texttt{polyglossia}\index{polyglossia} feito especialmente para \XeLaTeX/Lua\LaTeX. 
%Ainda (2018) é cedo para saber se \texttt{babel} ou \texttt{polyglossia} vai ficar como pacote recomendável para \XeLaTeX/Lua\LaTeX.

Embora maioria dos pacotes de fontes do \LaTeX{} funcione no \XeLaTeX/Lua\LaTeX, no Exemplo~\ref{ex18:lualatex}, foi usado o método próprio deles que permite selecionar fontes adicionais, inclusive as fontes do sistema.

Se a fonte usada contiver símbolos matemáticos, use \texttt{unicode-math} em vez do \texttt{amssymb}/\texttt{amsmath}.
Se precisar dos símbolos ou comandos de \texttt{amssymb} e \texttt{amsmath}, carregue eles antes do \texttt{unicode-math}.

% O coamdo \DeclareMathOperator do amsmath nao esta no unicode-math.

Note que os pacotes e comandos do \LaTeX{} padrão, exceto o \texttt{inputenc} costumam funcionar no \XeLaTeX{} e Lua\LaTeX, mas não o contrário.
Assim, para que o documento possa ser compilado tanto em PDF\LaTeX{} como em \XeLaTeX/Lua\LaTeX, poderá usar o pacote \texttt{iftex}\index{iftex} para detectar a engenharia do \TeX{} em uso.


% O xunicode está obsoleto devido a funcionalidade incorpolado no fontsppec.
% No LuaLaTeX, ate pode dar erros caso usar este pacote.

%\setcounter{lstorichapter}{\value{chapter}}
%\setcounter{lstorisection}{\value{section}}
% \let\orilabel\label
\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex06-08.tex, parte b},label=ex:06-08:b,preset={\setcounter{chapter}{1},\setcounter{section}{0},\let\addcontentsline\emptyaddcontentsline}]
%\begin{lstlisting}[caption={ex12-04.tex},label=ex:12-04]
\begin{lstlisting}[caption={ex18-lualatex.tex},label=ex18:lualatex]
\documentclass[a4paper,12pt]{article}

\usepackage{iftex} % Para detectar engenharia de TeX

\ifPDFTeX % Se (PDF)LaTeX
  \usepackage[T1]{fontenc} % codificação da fonte em 8-bits
  \usepackage[english,brazil]{babel} % em portugues brasileiro (ingles como secundario)
    
  \usepackage{lmodern} % latin Modern (Computer Modern com extensao latin)
  
  % \usepackage{noto} % fonte Noto patrocinado pelo Goggle
  % \usepackage[italic]{mathastext} % A fonte Noto serifado nao possui fontes matematicos ainda
  
  \usepackage{textcomp}
  \usepackage{amssymb,amsmath}
  
\else % Se XeLaTeX/LuaLaTeX
  \usepackage{polyglossia}
  \setdefaultlanguage{brazil}
  \setotherlanguage{english} % secundario
  
  % Estas fontes são padrões e não precisavam especificar. Foram colocados somente para ilustrar
  % No caso de XeLaTeX, se a fontes correspondentes não estiver isntalados no sistema operacional, pode não funcionar. Comente. 
  \setmainfont{Latin Modern Roman}
  \setsansfont{Latin Modern Sans}
  \setmonofont{Latin Modern Mono}
  % Se precisar do amssymb,amsmath, deverão carregar antes do unicode-math
  % \usepackage{amssymb,amsmath}
  
  \usepackage{unicode-math} % amsmath, amssymb equiv.
  \ifLuaTeX % Somente LuaLaTeX
    \usepackage{lualatex-math} % alguns fix do amsmath/mathtools equiv. para LuaLaTeX.
  \fi
  \setmathfont{Latin Modern Math} % Padrão e não precisava. Foi colocado somente para ilustração
  
  % Fonte Noto Serif não tem fontes matemáticos ainda
  %\setmainfont[Ligatures=TeX]{NotoSerif}
  %\setsansfont{NotoSans}
  %\setmonofont{NotoMono}
  % Asana math (Palatino like)
  % \setmathfont{Asana-Math}
  % STIX (Times like font)
  %\setmainfont[Ligatures=TeX]{STIX}
  %\setmathfont{STIX Math}
  %% XITS (Times like font)
  %\setmainfont[Ligatures=TeX]{XITS}
  %\setmathfont{XITS Math}
\fi

% Mais alguns pacotes
\usepackage[margin=2.5cm]{geometry}
\usepackage{hyperref}
\hypersetup{
  bookmarks=true
}
\usepackage[stretch=10]{microtype} % microtipografia: funciona no PDFLaTeX e LuaLaTeX (parcialmente em XeLaTeX)

\begin{document}
O Lua\LaTeX{} foi designado para ser o sucessor do PDF\LaTeX{} e por isso, deve ser o \LaTeX{} padrão no futuro. Por outro lado, XeLaTeX e mais rápido.% e estável (2018).

\ldots

Se $F'(x)=f(x)$ for contínua, 
\[
\int_a^bf(x)dx = F(b) - F(a)
\]
\end{document}
\end{lstlisting}
\end{singlespacing}
%\let\ref\oriref
%\setcounter{chapter}{\value{lstorichapter}}
%\setcounter{section}{\value{lstorisection}}
%% \addtocounter{chapter}{-1}
%\let\addcontentsline\oriaddcontentsline

%\begin{singlespacing}
%\begin{framed}
\begin{ltxlistingout}
O Lua\LaTeX{} foi designado para ser o sucessor do PDF\LaTeX{} e por isso, deve ser o \LaTeX{} padrão no futuro. Por outro lado, Xe\LaTeX{} e mais rápido.% e estável (2018).

\ldots

Se $F'(x)=f(x)$ for contínua, 
\[
\int_a^bf(x)dx = F(b) - F(a)
%\vspace*{-1.5\baselineskip}
\]
\end{ltxlistingout}
%\end{framed}
%\end{singlespacing}

O usuário de \texttt{MS Windows} devem ficar atentos pelo fato de que a fonte ``Latin Modern Math'' usada no Exemplo~\ref{ex18:lualatex} não vem instalado por padrão no Mik\TeX{} Básico.
Como \XeLaTeX/Lua\LaTeX{} acessa as fontes diretamente sem usar os pacotes, pode precisar a instalação manual do pacote \texttt{lm-math} usando o gerenciador do Mik\TeX.

Existem algumas fontes \texttt{Open Type} com suporte a matemática que podem ser usados no \XeLaTeX/Lua\LaTeX.
O site 

\noindent
\url{https://www.overleaf.com/help/193-what-otf-slash-ttf-fonts-are-supported-via-fontspec} lista algumas delas (com suporte aos símbolos matemáticos).

\begin{itemize}
\item \texttt{Cambria Math} (Microsoft, somente Windows).
\item \texttt{Latin Modern Math} (Bogusław Jackowski, Janusz M. Nowacki). Padrão do \XeLaTeX/Lua\LaTeX.
\item \texttt{TeX Gyre Pagella Math} (Bogusław Jackowski, Janusz M. Nowacki).
\item \texttt{TeX Gyre Termes Math}.
\item \texttt{Asana Math} (Apostolos Syropolous), Estilo \texttt{Palatino}.
\item \texttt{Neo Euler} (Khaled Hosny).
\item \texttt{STIX} (STI Pub).
\item \texttt{XITS Math} (Khaled Hosny).
\end{itemize}
% Outros: TeX Gyre Bonum Math, TeX Gyre Schola Math, 

Note que a fonte \verb+\mathcal+ e \verb+\mathbb+ do \texttt{unicode-math} é diferente do \texttt{amssymb}.
O \verb+\mathbb+ é mais próximo do \verb+\mathds+ do \texttt{dsfont} e \verb+\mathcal+ é mais parecido com do pacote \texttt{eucal} do que de \texttt{amssymb}.

Quem quer usar a versão do \texttt{amssymb}, poderá colocar
\begin{singlespacing}
\begin{lstlisting}
\let\mathcal\relax % remove the definition by unicode-math
\DeclareMathAlphabet{\mathcal}{OMS}{cmsy}{m}{n}
\let\mathbb\relax % remove the definition by unicode-math
\DeclareMathAlphabet{\mathbb}{U}{msb}{m}{n}
\end{lstlisting}
\end{singlespacing}
no \texttt{preamble}, após carregar o \texttt{unicode-math}.

Note que, nem todos os símbolos do \texttt{unicode-math} costumam estar presentes na fonte utilizada.
Quando a fonte utilizada não apresentar os símbolos correspondentes aos comandos de \texttt{unicode-math}, o símbolo simplesmente não aparece, sem emitir mensagens de erro, o que requer cuidados.
Neste caso, deverá complementar com outras fontes, ou procurar símbolos alternativos.
Por exemplo, carregar o pacote \texttt{amssymb} antes do \texttt{unicode-math} complementa com os símbolos de \texttt{AMS}.

\begin{remark}
Além das melhores suportes das fontes, existem vários pacotes específicos para \XeLaTeX{} e Lua\LaTeX, como no caso de \texttt{luavlna}\index{luavlna} (para Lua\LaTeX) e \texttt{xevlna}\index{xevlna} (para \XeLaTeX) que impedem que as palavras de uma só letra ou similar, fiquem no final das linhas, o que ajudam na finalização do livro, em conjunto com o \texttt{microtype}.
\end{remark}

\section[Fontes no \XeLaTeX/Lua\LaTeX]{Mais sobre básicos das fontes no \XeLaTeX/Lua\LaTeX}

No \XeLaTeX/Lua\LaTeX, poderá redigir em qualquer idioma desde que esteja utilizando as fontes que suportam tais idiomas.
Assim, quando redige o documento multilingue, basta definir qual fontes será usado em qual trecho.
Para facilitar a especificação de fontes em cada trecho de textos, costuma definir família de fontes usando \verb+\newfontfamily+\index{newfontfamily@\verb+\newfontfamily+} do pacote \texttt{fontspec}\index{fontspec}. 
Ele define comandos para usar a fonte especificada com as configurações também especificadas, que funcionam como outros comandos de seleção de famílias de fontes pré definidos tais como \verb+\rmfamily+, \verb+\sffamily+, etc.

Por exemplo,
\begin{singlespacing}
\begin{lstlisting}
\newfontfamily{\notorm}{Noto Serif}
\newcommand{\textnotorm[1]{{\notorm #1}}
\newfontfamily{\notosf}{Noto Sans}
\newcommand{\textnotosf[1]{{\notosf #1}}
\end{lstlisting}
\end{singlespacing}
%
definem comandos \verb+\notorm+ e \verb+\notosf+ para usar fontes \texttt{Noto Serif} e \texttt{Noto Sans}.
O \verb+\newcommand+ foi usado para criar a versão \verb+\textxx+ que são \verb+\textnotorm+ e \verb+\textnotosf+ respectivamente.
Note o uso de chave dupla para que a configuração da fonte não ``vaze'' para fora.

Para usar fontes não definidos anteriormente, poderá usar o comando \verb+\fontspec+\index{fontspec@\verb+\fontspec+} para selecionar a fonte especificada.

Apesar de poder configurar a especificação da fonte com o parâmetro opcional dos comandos de seleção das fontes e definições de família de fontes,
isto também pode ser efetuado separadamente pelo comando \verb+\defaultfontfeatures+\index{defaultfontfeatures@\verb+\defaultfontfeatures+} para especificar recursos das fontes. 
O parâmetro opcional será usado para indicar o nome da fonte que está especificando.
Por exemplo,
\begin{singlespacing}
\begin{lstlisting}
\defaultfontfeatures[Noto Serif]{Ligatures=TeX}
\end{lstlisting} 
\end{singlespacing}
Especifica que no \texttt{Noto Serif}, será usado a ligadura no modo \TeX.
Além de indicar nome das fontes, poderá indicar pelo comando de família das fontes como em
\begin{singlespacing}
\begin{lstlisting}
\defaultfontfeatures[\rmfamily,\sffamily]{Ligatures=TeX}
\end{lstlisting} 
\end{singlespacing}
especifica que na fonte \texttt{romana} e \texttt{sans serif}, será usado a ligadura padrão do \TeX. 

Para limpar a especificação das fontes, basta usar como
\begin{singlespacing}
\begin{lstlisting}
\defaultfontfeatures[\rmfamily,\sffamily]{}
\end{lstlisting} 
\end{singlespacing}
%
O comando \verb+\defaultfontfeatures+ tem a versão ``+'' \verb|\defaultfontfeatures|+\index{defaultfontfeatures+@\verb'\defaultfontfeatures+'}  que acrescenta a especificação em vez de substituir.
O comando \verb+\addfontfeature+\index{addfontfeature@\verb+\addfontfeature+} pode ser usado para ajustar localmente a especificação. 
Coloque entre chaves para especificação adicional seja aplicado somente no trecho.

Quando lida com várias fontes no \XeLaTeX/Lua\LaTeX, as vezes é importante checar se a fonte existe.
\verb+\IfFontExistsTF+\index{IfFontExistsTF@\verb+\IfFontExistsTF+} do pacote \texttt{fontspec} checa se a fonte do primeiro parâmetro existe. 
Caso existir, executará o segundo parâmetro e caso não existir, executa o terceiro parâmetro.
O comando a seguir configura a fonte principal para \texttt{Noto Serif} caso ela existir.
\begin{singlespacing}
\begin{lstlisting}
\IfFontExistsTF{Noto Serif}{\setmainjfont{Noto Serif}}{%
  \PackageWarning{\jobname.tex}{Noto Serif not found. Using default fonts}
\end{lstlisting} 
\end{singlespacing}
% O comando \IfFontExistisTF nao esta disponivel no fontspec de 2016.

Ir testando várias fontes com este comando até achar uma disponível na lista é trabalhoso. 
Assim, para procurar fontes na lista, costuma usar o pacote \texttt{iffont}\index{iffont}. 
Ele implementa o comando \verb+\settofirstfound{\nomefonte}{<fontes>}+\index{settofirstfound@\verb+\settofirstfound+} onde \texttt{<fontes>} é lista de nome das fontes, separado pela vírgula.
Ele associa ao comando \verb+\nomefonte+, o nome da primeira fonte encontrada na lista, o que pode ser usado para selecionar ou definir família de fontes.
Caso nenhuma fonte existir, retorna o valor de \verb+\@iffont@firstfont+ que está como a última fonte encontrada anteriormente (se ainda não existe a fonte encontrada, será a fonte \texttt{Fira Sans}). % março de 2018
Em geral, coloca-se o nome de uma fonte existente no final da lista para evitar de cair no \verb+\@iffont@firstfont+  que nem sempre é desejável.

% No xelatex/lualatex recente, funciona corretamente
%No entanto, \texttt{iffont} não funciona devidamente no \XeLaTeX/Lua\LaTeX{} recente.
%% só funciona no \XeLaTeX{} (testados nas versões 2016 e março de 2018). 
%Para que as funções do \texttt{iffont} funcione devidamente,
%%no Lua\LaTeX, 
%reescreva o comando \verb+\@iffont@checkfont+ usando o \verb+\IfFontExistisTF+ do pacote \texttt{fontspec} como em
%\begin{singlespacing}
%\begin{lstlisting}
%...
%\usepackage{iftex}
%...
%\usepackage{iffont}
%% patch
%% \usepackage{etoolbox} % iffont ja carregou
%\let\iffontexists\IfFontExistsTF
%\makeatletter
%  \renewcommand{\@iffont@checkfont}[1]{
%    \IfFontExistsTF{#1}{
%      \nottoggle{@iffont@fontfound}{%
%        \renewcommand{\@iffont@firstfont}{#1}
%        \toggletrue{@iffont@fontfound}
%      }{}
%    }{\stepcounter{@iffont@fontsnotfound} }
%  }
%\makeatother
%\end{lstlisting}
%\end{singlespacing}
%
%Com este ajuste, os comandos de \texttt{iffont} vão funcionar devidamente.%no Lua\LaTeX{} também.

Por exemplo, o código
\begin{singlespacing}
\begin{lstlisting}
\settofirstfound{\mainfont}{Noto Serif, Latin Modern Serif}
\setmainfont{\mainfont}
\end{lstlisting}
\end{singlespacing}
%
configura para usar o ``Noto Serif'' como fonte padrão caso existir. Caso ele não for encontrado, usa-se a fonte ``Latin Modern Serif'' que deve estar presente na instalação padrão do \TeX. No caso de \XeLaTeX, se a fonte ``Latin Modern Serif'' não estiver instalado no sistema operacional, não vai encontrar. Assim, poderá colocar ``[lmroman12-regular]'' ou similar no lugar.

Se o que quer é saber se a fonte existe, o \texttt{iffont} também implementa os comandos \verb+\iffontsexist+\index{iffontsexist@\verb+\iffontsexist+} e \verb+\iffontexists+\index{iffontexists@\verb+\iffontexists+} na qual executa o segundo parâmetro quando fonte existe e terceiro parâmetro quando a fonte não existe.
A diferença é que no \verb+\iffontsexist+, o parâmetro é uma lista de nome das fontes separado pela vírgula (e executa o segundo parâmetro se todas as fontes da lista existirem) e no \verb+\iffontexists+, o parâmetro é nome de uma única fonte (igual a \verb+\IfFontExistsTF+ do \texttt{fontspec}).
Por exemplo,
\begin{singlespacing}
\begin{lstlisting}
\iffontexists{Noto Serif}{\setmainjfont{Noto Serif}}{%
  \PackageWarning{\jobname.tex}{Noto Serif not found. Using default font}
\end{lstlisting}
\end{singlespacing}
Configura para \texttt{Noto Serif} só quando ele for acessível. 

%Lembrando novamente que os comandos do pacote \texttt{iffont} não funcionam devidamente no Lua\LaTeX{} (testados nas versões 2016 e março de 2018).
%Se estiver usando o Lua\LaTeX, use \verb+\IfFontExistsTF+ em vez das funções do pacote \texttt{iffont}.

As fontes \texttt{Open Type} que podem ser usados pelo \XeLaTeX{} e Lua\LaTeX{} podem estar no diretório do documento, diretório de \TeX{} ou instalado no sistema operacional.
No Lua\LaTeX, estas fontes podem ser acessadas pelo nome das fontes, mas no \XeLaTeX, somente as fontes instaladas no sistema operacional podem ser acessados pelo nome. Fontes encontradas em outras localidades tais como junto ao documento \TeX{} ou no diretório de \TeX{} devem ser indicados pelo nome do arquivo, incluindo a sua extensão (ou alguma especificação adequada). % será que a versão nova não resolveu este problema? Sim 2024, ainda continua
Assim, se os comandos do pacote \texttt{fontspec} ou de \texttt{iffont} não conseguirem encontrar as fontes pelo nome no \XeLaTeX, tente usar o nome do arquivo da fonte.

No caso de querer usar as fontes da \texttt{MicroSoft} no \texttt{MS Windows}, % compilando com LuaLaTeX, 
coloque

\begin{singlespacing}
\begin{lstlisting}
    \setmainfont[Ligatures=TeX]{Cambria}
    \setsansfont{Calibri}
    \setmonofont{Consolas}
    \setmathfont{Cambria Math}
\end{lstlisting}
\end{singlespacing}

no \texttt{preamble}.%, lembrando que no caso de \XeLaTeX, fontes que não está no sistema (como fontes que estão no diretório de \TeX) requer passar o nome do arquivo das fontes em vez dos nomes das fontes.

Uma das dificuldades de usar fontes não padrão é saber as combinações adequadas (entre romano, sem serifa, mono espaçado, etc), o que requer o conhecimento de tipografia e diagramação. Para resolver este problema em \XeLaTeX{} e Lua\LaTeX{}, foi desenvolvido o pacote \texttt{fontsetup}\index{fontsetup}.
O padrão deste pacote é usar a fonte \texttt{New Computer Modern} na espessura \texttt{Book} adequado para livros eletrônicos e similares, mas existem muitas opções deste pacote que configura para outras combinações das fontes pré estabelecidas. Por exemplo, a opção \texttt{stixtwo} carrega a fonte \texttt{STIX 2} que é do tipo times. Veja o documento do pacote \texttt{fontsetup} para mais detalhes. 
Para usar fonte de espessura \texttt{Book} compatível com Computer Modern no PDF\LaTeX{} em vez de \XeLaTeX/Lua\LaTeX, carregue o pacote \texttt{mlmodern} para usar a fonte {MLModern}\index{fonte!MLModern}.%\index{fonte MLModern}.

O Exemplo~\ref{ex18:fontsetup} é um exemplo usando a fonte compatível com ``Computer Modern'', mas com espessura \texttt{Book}. % apropriado para livros eletrônicos e similares. 
Para PDF\LaTeX, usa a fonte \texttt{MLModern}\index{fonte!MLModern} e para \XeLaTeX/Lua\LaTeX, usa-se a fonte \texttt{New Computer Modern}\index{fonte!New Computer Modern}.
A opção para tornar espessura compatível com o \texttt{Computer Modern} tradicional (para impressão em papel) está comentada.

\begin{singlespacing}
\begin{lstlisting}[caption={ex18-fontsetup.tex},label=ex18:fontsetup]
\usepackage{iftex} % Para detectar o motor de TeX utilizado
% Fontes, de acordo com o motor do TeX
\ifPDFTeX % PDFLaTeX
  \usepackage[T1]{fontenc} % codificação da fonte em 8-bits
  \usepackage{mlmodern} % fontes MLModern que é mais escura que Computer Modern tradicional (espessura de letra de Book)
  %\usepackage{lmodern} % fontes Latin Modern: espessura tradicional do Computer Modern
\else % XeLaTeX/LuaLaTeX
  \usepackage{fontsetup} % New Computer Modern com espessura da letra de Book
  % \usepackage[olddefault]{fontsetup} % espessura tradicional do Computer Modern
\fi
\end{lstlisting}
\end{singlespacing}

Para \texttt{poster} e \texttt{slides}, é recomendado que use a fonte \texttt{sans serif}. Para escolher o \texttt{New Computer Modern} no estilo \texttt{sans serif} pelo pacote \texttt{fontsetup}, use a opção \texttt{sansdefault}. Para PDF\LaTeX, carregue o pacote \texttt{sansmathfonts}.

\section{Usando em conjunto com  Bib\LaTeX}
O documento em vários idiomas pode precisar também de referências bibliográficas em vários idiomas.
O Bib\LaTeX{} permite internacionalizar a referência bibliográfica (mesmo sem usar \XeLaTeX/Lua\LaTeX).

Para especificar o idioma da referência bibliográfica no arquivo \texttt{bib} para Bib\LaTeX, coloca-se o idioma no campo \texttt{langid}\index{biblatex!langid} de cada item.
O ``\verb+*_romanized+''\index{biblatex!romanized} é a escrita em alfabeto romano caso o campo  esteja em carácter que não seja alfabeto romano. 
Ele será usado para a ordenação e similar.
O campo ``\verb+*_translated_<idioma>+''\index{biblatex!translated} é a tradução para o \verb+<idioma>+ se as referências forem formatados para \verb+<idioma>+.
Veja o Exemplo~\ref{ex18:biblatex:bib}.

\begin{singlespacing}
%{\jafamily
% \begin{lstlisting}[caption={ex12-05.bib},label=ex12-05:bib]
\begin{lstlisting}[caption={ex18-biblatex.bib},label=ex18:biblatex:bib,escapeinside={[*}{*]}]
@book{wikibooks:latex,
  LANGID = {english},
  author={wikibooks},
  title={{\LaTeX}},
  publisher={wikibooks},
  url = {https://en.wikibooks.org/wiki/LaTeX},
  date = {2018},
  urldate={2018-03-05}
}

@Book{Kawasaki,
  LANGID = {japanese},
  TITLE  = {[*\textja{バラと折り紙と数学と}*]},
  TITLE_romanised = {bara to origami to sugaku to},
  TITLE_translated_english = {Roses, Origami \& Math},
  AUTHOR           = {[*\textja{川崎敏和}*]},
  AUTHOR_romanised = {Kawasaki, Toshikazu},
  PUBLISHER                    = {[*\textja{森北出版株式会社}*], Japan},
  PUBLISHER_translated_english = {Morikita Syuppan Co. Ltd, Japan},
  year={1998},
  ISBN = {4-627-01671-9}  
}
\end{lstlisting}
%} % \jafamily
\end{singlespacing}

O comando de configuração para Bib\LaTeX{} é algo como
\begin{singlespacing}
\begin{lstlisting}
\usepackage[
%  backend=biber, % padrão
  language=auto,
%  autolang=other, % for <otherlanguage> environment from babel and polygrossia
%  autolang=langname, % only for polygrossia <language> env.
  % bibencoding=utf8, % padrão
  style=authoryear,
]{biblatex}
\addbibresource{ex18-biblatex.bib} % arquivo bib
\end{lstlisting}
\end{singlespacing}

A opção \verb+language=auto+ indica que é para selecionar automaticamente o idioma (pelo campo \texttt{LANGID}).
Obviamente, onde quer que apareça a referência bibliográfica, coloca-se o 
\begin{singlespacing}
\begin{lstlisting}
\phantomsection % se estiver usando hyperref
\printbibliography[heading=bibintoc]
\end{lstlisting}
\end{singlespacing}

Note que, até agora, não usamos nada que não funcione no \LaTeX{} normal.
Mas como a referência bibliográfica contém caracteres em japonês, precisará definir o uso de japonês em algum trecho.
Isto será facilitado se estiver usando \XeLaTeX{} ou Lua\LaTeX{} em vez do PDF\LaTeX.
Assim, vamos supor que está usando o \XeLaTeX/Lua\LaTeX{} para prosseguir com a explicação.
Para definir comandos para texto em japonês, coloque o comando 
%\begin{singlespacing}
%\begin{lstlisting}
%\usepackage[Ligatures=TeX]{fontspec}
%\usepackage{iffont}
%% patch
%\let\iffontexists\IfFontExistsTF
%\makeatletter
%  \renewcommand{\@iffont@checkfont}[1]{
%    \IfFontExistsTF{#1}{
%      \nottoggle{@iffont@fontfound}{%
%        \renewcommand{\@iffont@firstfont}{#1}
%        \toggletrue{@iffont@fontfound}
%      }{}
%    }{\stepcounter{@iffont@fontsnotfound} }
%  }
%\makeatother
%
%\settofirstfound{\mainjfont}{Noto Serif CJK JP, MS Mincho, TakaoMincho, IPAexMincho, Hiragino Mincho Pro}
%\settofirstfound{\gothicjfont}{Noto Sans CJK JP, MS Gothic, TakaoGothic, IPAexGothic, Hiragino Maru Gothic Pro}
%% If Gothic not found, use Mincho instead.
%\IfFontExistsTF{\gothicjfont}{}{\let\gothicjfont\mainjfont}
%% If Mincho not found, error.
%\IfFontExistsTF{\mainjfont}{\newfontfamily{\jafamily}[BoldFont=\gothicjfont]{\mainjfont}}{%
%\PackageError{\jobname}{Japanese Mincho font not found}{Install apropriate ones}
%}%
%\newcommand{\textja}[1]{{\jafamily #1}}
%\end{lstlisting}
%\end{singlespacing}
%Lembre-se que, para o pacote \texttt{iffont} funcionar no Lua\LaTeX, precisará ajustar o comando \verb+\@iffont@checkfont+ após carregar o \texttt{iffont}.

\begin{singlespacing}
\begin{lstlisting}
\usepackage[Ligatures=TeX]{fontspec}
\usepackage{iffont}

\def\jafontlist{Noto Serif CJK JP, MS Mincho, TakaoMincho, IPAexMincho, IPAMincho, Hiragino Mincho Pro,[lmroman12-regular]} % último da list anão é japonês
\def\jagothicfontlist{Noto Sans CJK JP, MS Gothic, TakaoGothic, IPAexGothic, IPAGothic, Hiragino Maru Gothic Pro}

\settofirstfound{\jafont}{\jafontlist}
\settofirstfound{\jagothic}{\jagothicfontlist}

% Se cair no último, fonte japonês não encontrado.
\ifdefstring{\jafont}{[lmroman12-regular]}{\PackageWarning{\jobname}{Fonte japonês Mincho não encontrada.}{Instale um dos seguintes: \jafontlist}\newcommand{\textja}[2][]{#1}}
{%
  \ifdefstrequal{\jagothic}{\jafont}{\PackageWarning{\jobname}{Fonte japonês Gothic não encontrada.}{Instale um dos seguintes: \jagothicfontlist}}{}
  \newfontfamily{\jafamily}[BoldFont=\jagothic]{\jafont}
  \newcommand{\textja}[2][]{{\jafamily #2}}
}{}
\end{lstlisting}
\end{singlespacing}

O comando \verb+\jafamily+ será definido quando encontrar alguma fonte da lista.
Também será definido o comando \verb+\textja+ para trecho pequeno.
%Note que \verb+\settofirstfound+ do \texttt{iffont} não funciona no Lua\LaTeX{} (testado na versão 2016 e março de 2018).
%Então, se quer usar o Lua\LaTeX, deverá udar a sequencia de \verb+\IfFontExistsTF+ em vez de \verb+\settofirstfound+.

Agora, basta usar o comando para trocar de fontes padrão para a fonte japonês onde aparece o texto em japonês.
Veja o Exemplo~\ref{ex18:biblatex:tex}.
\begin{singlespacing}
%{\jafamily
%\begin{lstlisting}[caption={ex12-05.tex}, label=ex:12-05]
\begin{lstlisting}[caption={ex18-biblatex.tex}, label=ex18:biblatex:tex,escapeinside={[*}{*]}]
Figura contendo texto em japonês.
\begin{figure}[hbtp!]
\center
\begin{tikzpicture}
  \draw (0,0) circle(2) (0,1) node{\textja{[*\textja{集合}*]}};
  \draw (0,-0.5) circle(1) (0,-0.5) node{\textja{[*\textja{部分集合}*]}};
\end{tikzpicture}
\caption{Figura com texto em japonês}
\end{figure}

Sobre uso básico do \texttt{biblatex}, veja o \cite{wikibooks:latex}.
Agora, citando o livro em japonês \textja{\cite{Kawasaki}}.
\end{lstlisting}
%} % \jafamily
\end{singlespacing}
% 
%Terá saída
%\begin{singlespacing}
%\begin{framed}
\begin{ltxlistingout}
Figura contendo texto em japonês.
\begin{center}
\center
\begin{tikzpicture}
  \draw (0,0) circle(2) (0,1) node{\textja{集合}};
  \draw (0,-0.5) circle(1) (0,-0.5) node{\textja{部分集合}};
\end{tikzpicture}

{Figuraq 1: Figura com texto em japonês}
\end{center}

Sobre uso básico do \texttt{biblatex}, veja o \texttt{wikibooks} 2018.
Agora, citando o livro em japonês \textja{川崎敏和} 1998.
\end{ltxlistingout}
%\end{framed}
%\end{singlespacing}

Como a referência bibliográfica contém texto em japonês, colocamos o comando de seleção de fonte japonês.
\begin{singlespacing}
\begin{lstlisting}
\phantomsection % se estiver usando hyperref
{\jafamily \printbibliography[heading=bibintoc]}
\end{lstlisting}
\end{singlespacing}

e a saída será

%\let\addcontentsline\emptyaddcontentsline
%\begin{framed}
\begin{ltxlistingout}
{\jafamily
\begin{thebibliography}{99}
%\section*{Referências Bibliográficas}
\bibitem{wikibooks:latex}\texttt{wikibooks (2018)}. \emph{\LaTeX}. wikibooks. URL: \url{https://en.wikibooks.org/wiki/LaTeX} (acesso em 15/03/2018).
\bibitem{kawasaki}川崎敏和 (1998). バラと折り紙と数学と. 森北出版株式会社, Japan. ISBN: 4-627-01671-9.
\end{thebibliography}
} % \jafamily
\end{ltxlistingout}
%\end{framed}
%\let\addcontentsline\oriaddcontentsline
Note que, no exemplo acima, a fonte de todo trecho da referência bibliográfica foi trocada.
Assim, se tiver letras acentuadas na referências bibliográficas que não existem nas fontes japonesas escolhidas, terá problemas.
% ou que conflitam com letras japonesas, começará aparecer coisas indesejáveis.
Para contornar o problema, ou acentuar no modo \TeX, ou especificar o uso de japonês dentro do arquivo \texttt{bib} a cada trecho, em vez de aplicar no \verb+\printbibliography+.

No caso de escrever o documento em japonês ou similar, deverá carregar o pacote apropriado que configurará para ambiente do idioma correspondente, ajustando os parâmetros para particularidade daquele país.
Além disso, com o uso do tal pacote, a troca de fontes para japonês e vice versa será automática, sem a necessidade de estar especificando a família de fontes a ser usadas a cada trecho.

Como observação final sobre \XeLaTeX/Lua\LaTeX,
os comandos protegidos dos pacotes de \XeLaTeX/Lua\LaTeX{} costumam usar ``\verb+_+'' e ``\verb+:+'', em vez de ``@'' (ou ests caracteres em conjunto com ``@'').
Isto foi introduzido no \LaTeX{} pelo equipe de desenvolvimento \LaTeX{} 3 e aparecem nos pacotes mais recentes.
Assim, para acessar estes comandos e ambientes protegidos no \texttt{preamble}, deverá colocar entre \verb+\ExplSyntaxOn+\index{ExplSyntaxOn@\verb+\ExplSyntaxOn+} e \verb+\ExplSyntaxOff+\index{ExplSyntaxOff@\verb+\ExplSyntaxOff+}.



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%




%pacote iffont
%
%Algumas observações sobre unicode-math.
%
%Diferenca de amssymb/amsmath com unicode-math:
%mathbb, mathcal, \verb+\int\limits+

%\verb+\removenolimits+ e \verb+\addnolimits+
%nao permite usar versao com limits e nolimits ao mesmo tempo.

%\verb+\ExplSyntaxOn+
%e \verb+\ExplSyntaxOff+

%item \verb+\newfontfamily+ do fontspec

\clearpage\thispagestyle{empty}\cleardoublepage
\chapter{Diagramando na Norma ABNT}\label{cap:abnt}
Neste capítulo, vamos estudar duas classes de documentos e suporte para a referência bibliográfica, para diagramar de acordo com a exigência de Associação Brasileira das Normas Técnicas (ABNT\index{ABNT}).

\section{Documentos em ABNT}

A classe padrão para diagramar os documentos como trabalho de conclusão de cursos, monografias em geral, teses e dissertações em \texttt{ABNT} é a classe \texttt{abntex2}\index{abntex2} que foi implementado sobre a classe \texttt{memoir}, herdando diversas funcionalidades. Para saber estas funcionalidades adicionais, consulte o manual do \texttt{memoir}.

Para usar a classe \texttt{abntex2}\index{abntex2@ABNTeX2} (\cite{book:abntex2:araujo}), inicie com a linha como em
\begin{lstlisting}
\documentclass[12pt,a4paper,openright,oneside,english,brazil]{abntex2}
\end{lstlisting} 
onde \verb+12pt+ é usado para ajustar o tamanho das letras, \verb+a4paper+ para papel \texttt{A4} e \verb+oneside+ para criar impressão de somente um lado para versão eletrônica. Se quer gear a versão impressa em frente/verso no papel, coloque \verb+twoside+ e \verb+openright+ para ficar como frente/verso seguindo a recomendação do ABNT (recomendação não é obrigatoriedade).
Por último, \verb+english+ e \verb+brazil+ foi colocado para ser repassado no pacote \texttt{babel}, pois \texttt{ABNT} requer que tenha resumo na língua estrangeira (por exemplo, em inglês) além do resumo em português.

A classe \texttt{abntex2} implementa diversos comandos para produzir elementos de acordo com a exigência ou recomendações do ABNT. 
Alguns desses comandos possuem equivalência para comandos da classe \texttt{memoir} e estão mapeados para poder usar tanto os comandos do \texttt{memoir} como da própria classe \texttt{abntex2} (por exemplo, \verb+\autor+ e \verb+\author+, \verb+\titulo+ e \verb+\title+, \verb+\data+ e \verb+\date+, etc), enquanto que existem comandos que equivalente do \texttt{memoir} produz estilo diferente do exigido ou recomendado pelo ABNT (por exemplo, \verb+\imprimecapa+ e \verb+\maketitle+, \verb+\apendices+ e \verb+\appendix+).
Assim, requer cuidados. Via das dúvidas, opte pelo comando em postuguêns, implementado na classe \texttt{abntex2}.

% Uma observação importante é usar sempre o \texttt{uft8} na classe \texttt{ABNT}, o que é necessário especificar com \verb+\usepackage[utf8]{inputenc}+ no caso de não estar usando o \XeLaTeX/Lua\LaTeX.

A classe \texttt{abntex2} faz a chamada de \verb+\frontmatter+ (ou \verb+\pretextual+) no início do documento. 
Assim, não é necessário colocar este comando no começo do documento.

O Exemplo~\ref{ex19:abntex2} ilustra o uso desta classe (com referẽncias em Bib\LaTeX{}), com alguns comentários importantes.
A sua saída será omitida aqui.

\begin{singlespacing}
\lstinputlisting[caption={ex19-abntex2.tex},label=ex19:abntex2]{latex-via-exemplos-abntex2}
\end{singlespacing}

\noindent onde o arquivo de referência bibliográfica usado \hypertarget{target:modelo-biblatex}{\texttt{modelo-biblatex.bib}} é como segue.

\begin{singlespacing}
\begin{lstlisting}
@book{book:abntex2:araujo,
author={Lauro César Araujo},
title={A classe abntex2: Documentos técnicos e científicos brasileiros compatíveis com as normas ABNT},
url={https://ctan.org/pkg/abntex2/},
lastchecked={2018-06-11},
urldate={2018-06-11},
year=2016
}
@comment{note="URL: {\url{https://ctan.org/pkg/abntex2/}}",}

@manual{NBR10520:2002,
  Org-Short = {ABNT},
  Organization={Associação Brasileira de Normas Técnicas},
  Title = {{ABNT NBR} 10520:2002},
  subtitle={Informação e documentação -- Citações
em documentos -- Apresentação},
  address={Rio de Janeiro},
  pages=7,
  year=2022,
}
\end{lstlisting}
\end{singlespacing}

Note que a folha de aprovação provisória costuma estar presente no documento (é será substituída pela folha definitiva quando for aprovado).
Para criar uma folha de aprovação provisória adequada, sugerido no manual do \texttt{abntex2} \cite{book:abntex2:araujo} é
\begin{singlespacing}
\begin{lstlisting}
\begin{folhadeaprovacao}
% provisória
\begin{center}
{\ABNTEXchapterfont\large\imprimirautor}
\vspace*{\fill}\vspace*{\fill}
\begin{center}
\ABNTEXchapterfont\bfseries\Large\imprimirtitulo
\end{center}
\vspace*{\fill}
\hspace{.45\textwidth}
\begin{minipage}{.5\textwidth}
\imprimirpreambulo
\end{minipage}%
\vspace*{\fill}
\end{center}
Trabalho aprovado. \imprimirlocal, 24 de novembro de 2012:
\assinatura{\textbf{\imprimirorientador} \\ Orientador}
\assinatura{\textbf{Professor} \\ Convidado 1}
\assinatura{\textbf{Professor} \\ Convidado 2}
\assinatura{\textbf{Professor} \\ Convidado 3}
\assinatura{\textbf{Professor} \\ Convidado 4}
\begin{center}
\vspace*{0.5cm}
{\large\imprimirlocal}
\par
{\large\imprimirdata}
\vspace*{1cm}
\end{center}
% quando tiver a folha de aprovação devidamente assinada
% \includepdf{folhadeaprovacaofinal.pdf} 
\end{folhadeaprovacao}
\end{lstlisting}
\end{singlespacing}

Após ter a folha de aprovação devidamente assinadas, digitalize e converta no formato \texttt{PDF}.
Em seguida, inclua diretamente no documento como uma página (e não como um desenho) usando o comando \verb+\includepdf+\index{includepdf@\verb+\includepdf+} do pacote \texttt{pdfpages}\index{pdfpages}.

A classe \texttt{abntex2} aceita a opção \texttt{article} para diagramar artigos, mas na maioria dos casos, não é exigido que artigos sigam a norma ABNT, podendo ou não, requerer suas referências em ABNT.
  
\section{Documento ABNT usando \texttt{ABNTexto}}
A classe \texttt{ABNTexto}\index{ABNTexto} (\cite{book:abntexto:abreu}) que está na fase de desenvolvimento é uma alternativa leve para \texttt{ABNTeX2}, para diagramar em \texttt{ABNT}. Enquanto que \texttt{ABNTeX2} usa a classe \texttt{memoir} e diversos pacotes para maior flexibilidade, \texttt{ABNTexto} usa a classe \texttt{article} e muitos poucos pacotes, tornando mais leve.
Caso não tenha a última versão instalada e queira usar sem instalar, abaixe o arquivo \texttt{abntexto.cls} do \texttt{CTAN} (\url{https://ctan.org/}) e mantenha junto ao arquivo \texttt{.tex}.
%Sobre os comandos, veja a documentação disponível em \cite{book:abntexto:abreu}.

% No entanto, como ele ainda está na fase de desenvolvimento (2024), pode apresentar algumas inconveniências.

Um exemplo de \texttt{ABNTexto} com uso de Bib\LaTeX{} é como no Exemplo~\ref{ex19:abntexto}, cuja a saída é omitida.

\begin{singlespacing}
\lstinputlisting[caption={ex19-abntexto.tex},label=ex19:abntexto]{latex-via-exemplos-abntexto}
\end{singlespacing}

\noindent onde o arquivo de referẽncia bibliográfica usado é mesmo do Exemplo~\ref{ex19:abntex2} que é \hyperlink{target:modelo-biblatex}{\texttt{modelo-biblatex.bib}}.

O \texttt{ABNTeX2} é mais completo, mas por basear na classe \texttt{memoir} e carregar diversos pacotes, torna mais pesado.
Por outro lado, \texttt{abntexto} é baseado na classe \texttt{article} e depende de poucos pacotes, o que torna leve, apesar de ter menos recursos.
Outra observação é que \texttt{ABNTeX2} implementa comandos e ambientes em português, enquanto que \texttt{abntexto} implementa comandos e ambientes em inglês.

\section{Usando o estilo ABNT no \BibTeX}

Note que, o recomendado é usar o Bib\LaTeX{} em vez de \BibTeX{} para o caso do estilo ABNT, pois a versão em \BibTeX{} não implementa atualizaçao recente do ABNT e não tem plano para que isto seja feita. Mas será apresentado aqui para quem pretende usar com o  \BibTeX{} mesmo assim. 

Quando as referências bibliográficas devem seguir a norma ABNT, e pretende usar o Bib\TeX, use o pacote \texttt{abntex2cite}\index{abntex2cite} que pode ser usado separadamente da classe \texttt{abntex2}.
É importante lembrar que este pacote requer que o pacote \texttt{hyperref} seja carregado antes dele. 
Caso contrário, pode produzir erros, mas não costuma ser avisado de que \texttt{hyperref} precisa ser carregado antes.

A citação entre parentes deve ser feito com o comando \verb+\cite+, enquanto que a citação como parte de texto deve ser feito com o comando \verb+\citeonline+. As citações de citações (citações indiretas) são feitas pelos comandos \verb+\apud+ ou \verb+\apudonline+ para colocar entre parenteses ou fazer parte do texto, respectivamente.

Note que o pacote \texttt{abntex2cite} requer a codificação do documento em \texttt{utf8}, o que é padrão no sistema \TeX{} atual.

Veja o Exemplo~\ref{ex19:abntex2cite}.

\begin{singlespacing}
\begin{lstlisting}[caption={ex19-abntex2cite.tex},label={ex19:abntex2cite}]
\documentclass[12pt,a4paper,english,brazil]{article}
\usepackage{iftex} % Para detectar o motor de TeX utilizado
\ifPDFTeX% Fontes, de acordo com o motor do TeX
  \usepackage[T1]{fontenc} % codificação da fonte em 8-bits
  \usepackage{mlmodern} % fontes MLModern
  %\usepackage{lmodern} % fontes Latin Modern
  %\usepackage[utf8]{inputenc} % acentuação direta em UTF-8 % não é mais necessário
\else
  \usepackage{fontsetup}% New Computer Modern
  %\usepackage{fontspec} % pacote para configurar fontes
  %\defaultfontfeatures{Ligatures=TeX}
  % seleção de fontes, se desejar
  % ...
\fi
% pacotes matemáticas de acordo com o motor TeX
\ifPDFTeX
  \usepackage{amsmath,amssymb} % para matematica
\else
   % para matematica
  \usepackage{unicode-math}
  \ifLuaTeX
    \usepackage{lualatex-math}
  \fi
\fi
\usepackage{babel} % idiomas da opção da classe será usado aqui
\usepackage{hyperref}% abntex2cite requer hyoerref carregado antes dele
% Opção "alf" é para alfabetico. "num" para numérico.
\usepackage[alf]{abntex2cite} % Para citação no formato ABNT
\pdfstringdefDisableCommands{% desabilitando comandos proibidos no bookmarks
  \let\MakeUppercase\relax%
  \def\\{ }%
}
\begin{document}
Este modelo foi baseado no documento de \texttt{abntex2} \cite{book:abntex2:araujo}.

Para citações textuais, deverá usar o comando \verb+\citeonline+ como descrito em \citeonline{book:abnt2cite:araujo}.
Para citações de citações, usar o comando \verb+\apud+ ou \verb+\apudonline+.

Também poderá usar o \texttt{biblatex}. Veja o \citeonline{book:biblatex-abnt:marques} para detalhes.

% Especificacao de formatacao (\bibliographystyle) não será necessário, pois o pacote anbtex2cite já fez isso.
\bibliography{ex19-abntex2cite}
\end{document}
\end{lstlisting}
\end{singlespacing}

%No arquivo \texttt{bib}, usar a acentuação no modo \TeX{}.
Para os documentos disponíveis na internet, complete os campos \texttt{url} (endereço eletrônico) e \texttt{urlaccessdate} (data de última consulta).
Os campos \texttt{isbn} (identificador de livros) 
e \texttt{issn} (identificador de periódicos) também estão disponíveis.

Também observe que no ABNT, foram acrescentados categorias adicionais e por conta disso, o estilo \texttt{abnt} adicionou essas categorias que podem ser ignorados nos outros estilos de formatação. 
Veja \cite{book:abnt2cite:araujo} para detalhes.

O arquivo \texttt{ex19-abntex2cite.bib} é como segue

\begin{singlespacing}
\begin{lstlisting}[language={BibTeX}]
@book{book:abntex2:araujo,
author={Lauro C\'esar Araujo},
title={A classe abntex2: Documentos t\'ecnicos e cient{\'\i}ficos brasileiros compat{\'\i}veis com as normas {ABNT}},
url={https://ctan.org/pkg/abntex2/},
urlaccessdate={2018-06-11},
year=2016
}
@book{book:abnt2cite:araujo,
author={Lauro C\'esar Araujo},
title={O pacote abntex2cite: Estilos bibliogr\'aficos compat{\'\i}veis com a {ABNT} {NBR} 6023},
url={https://ctan.org/pkg/abntex2/},
urlaccessdate={2018-06-11},
year=2016
}
@book{book:biblatex-abnt:marques,
author={Daniel Ballester Marques},
title={biblatex-abnt 3.3},
url={https://ctan.org/pkg/biblatex-abnt/},
urlaccessdate={2018-06-11},
year=2018
}
\end{lstlisting}
\end{singlespacing}

No exemplo, foi usado a acentuação pelo comando \TeX{} para a compatibilidade com o sistema \TeX{} antigo (anterior a 2018).


A saída do Exemplo~\ref{ex19:abntex2cite} e algo como segue.

%\newlength{\labelseporiginal}
%\setlength{\labelseporiginal}{\labelsep}
\begin{ltxlistingout}
Este modelo foi baseado no documento de \texttt{abntex2} (ARAÚJO, 2018a).

Para citações textuais, deverá usar o comando \verb+\citeonline+ como descrito em Araújo (2016b).
Para citações de citações, usar o comando \verb+\apud+ ou \verb+\apudonline+.

Também poderá usar o \texttt{biblatex}. Veja o Marques (2018) para detalhes.

\section*{Referências}

\noindent
{ARAUJO, L.~C. \emph{A classe abntex2: Documentos t\'ecnicos e cient{\'\i}ficos
  brasileiros compat{\'\i}veis com as normas ABNT}. [s.n.], 2016.
  Dispon{\'\i}vel em: <\url{https://ctan.org/pkg/abntex2/}>. Acesso em:
  2018-06-11.}

\medskip
\noindent
{ARAUJO, L.~C. \emph{O pacote abntex2cite: Estilos bibliogr\'aficos
  compat{\'\i}veis com a ABNT NBR 6023}. [s.n.], 2016. Dispon{\'\i}vel em:
  <\url{https://ctan.org/pkg/abntex2/}>. Acesso em: 2018-06-11.}

\medskip
\noindent
{MARQUES, D.~B. \emph{biblatex-abnt 3.3}. [s.n.], 2018. Dispon{\'\i}vel em:
  <\url{https://ctan.org/pkg/biblatex-abnt/}>. Acesso em: 2018-06-11.}
\end{ltxlistingout}
%\setlength{\labelsep}{\labelseporiginal}

\section{Usando o estilo ABNT no Bib\LaTeX} 

Para elaborar a referência bibliográfica no estilo ABNT, é recomendado usar o Bib\LaTeX{} (\cite{book:biblatex-abnt:marques}).

Para isso, coloque a opção \texttt{style=abnt}\index{biblatex!abnt} na opção de chamada do pacote \texttt{biblatex}.

A data de último acesso ao material disponível na internet será colocado no campo \texttt{urldate} do arquivo \texttt{.bib} no formato \texttt{ano-mes-dia} onde ano será com $4$ dígitos. 
Note que \texttt{urlaccessdate} usado pelo \BibTeX{} também funciona no Bib\LaTeX, mas \texttt{urldate} podem ser usados em vários estilos e não somente no estilo \texttt{abnt}.
Caso queira usar tanto o \BibTeX, assim como Bib\LaTeX, poderá especificar ambos os campos (e usar a acentuação no modo \TeX, caso queira usar o sistema \TeX{} anterior a 2018).

No estilo ABNT de \BibTeX{} do pacote \texttt{abntex2cite}, usa o \verb+\citeonline+ para citações textuais, mas no estilo ABNT de Bib\LaTeX, usa o comando \verb+\textcite+\index{textcite@\verb+\textcite+} já existentes no Bib\LaTeX.
Se no documento estiver usando o comando \verb+\citeonline+, basta criar um atalho no \texttt{preamble} do documento com 
\verb+\let\citeonline\textcite+.
Por outro lado, se quiser usar o \verb+\textcite+ com \texttt{abntex2cite}, prevendo a futura transição para BiB\LaTeX, 
basta colocar \verb+\let\textcite\citeonline+ no \texttt{preamble} do documento.

Novamente, use a codificação em \texttt{utf8}. Note que o Bib\LaTeX{} aceita a acentuação direta no arquivo de \BibTeX. 
O uso de \texttt{hyperref} é opcional, mas recomendável.

Como referências bibliográficas no estilo ABNT do Bib\LaTeX{} está projetado para poder ser usado fora da classe \texttt{abntex2}, a formatação do título da referência bibliográfica não costuma aparecer de acordo com o \texttt{ABNT} mesmo na classe \texttt{abntex2} devido a algumas questões técnicas.
Isto pode ser acertado sem problemas com alguns códigos no \texttt{preâmbulo} como segue (supondo que está usando ``brazil'' na opção do pacote \texttt{babel}).

% Consertando o titulo que biblatex redefiniu
% Para biblatex: consertando para Referências ficar em maiusculo no sumário
% combinação de
% https://github.com/abntex/abntex2/issues/200
% e
% https://groups.google.com/forum/#!topic/abntex2/E9Bv9YhrjLk

\begin{singlespacing}
\begin{lstlisting}[language={TeX}]
% BibLaTeX com estilo abnt
\usepackage[style=abnt]{biblatex} 
\addbibresource{ex19-biblatex-abnt.bib}  % arquivo bib
% Consertando o titulo que biblatex redefiniu
\DefineBibliographyStrings{brazil}{bibliography={Referências}}
% Consertando para Referências ficar em maiusculo no sumário
\defbibheading{bibliography}[\bibname]{%
    \chapter*{#1}
    \bibmark
    \ifnobibintoc\else
      \phantomsection
      \addcontentsline{toc}{chapter}{\uppercase{#1}}
    \fi
    \prebibhook
}
\end{lstlisting}
\end{singlespacing} 

O Exemplo~\ref{ex19:biblatex-abnt} ilustra como ficará o documento.

\begin{singlespacing}
\begin{lstlisting}[caption={ex19-biblatex-abnt.tex},label={ex19:biblatex-abnt}]
\documentclass[12pt,a4paper,english,brazil]{abntex2}
\usepackage{iftex}% Para detectar o motor de TeX utilizado
% Fontes, de acordo com o motor do TeX
\ifPDFTeX
  \usepackage[T1]{fontenc} % codificação da fonte em 8-bits
  \usepackage{mlmodern} % fontes MLModern
  %\usepackage{lmodern} % fontes Latin Modern
  % \usepackage[utf8]{inputenc} % acentuação direta em UTF-8 % não é mais necessário
\else
  \usepackage{fontsetup} % fontes New Computer Modern
  %\usepackage{fontspec} % pacote para configurar fontes
  %\defaultfontfeatures{Ligatures=TeX}
  % comandos de seleção das fontes, se desejar
  % ...
\fi
% pacotes matemáticas de acordo com o motor TeX
\ifPDFTeX
  \usepackage{amsmath,amssymb} % para matematica
\else
  \usepackage{unicode-math}
  \ifLuaTeX
    \usepackage{lualatex-math}
  \fi
\fi
% babel ou poligrossia é carregado automaticamente pelo abntex2
\usepackage{hyperref} % recomendável
\pdfstringdefDisableCommands{%desativar alguns comandos no bookmark
  \let\MakeUppercase\relax%
  \def\\{ }%
}
\usepackage[
  backend=biber, % aceita acentuação direta no arquivo bib (recomendável).
  style=abnt, % Sistema alfabético
  %style=abnt-numeric, % Sistema numérico
  %style=abnt-ibid, % Notas de referência
  % language=brazil, % padrão 
  % bibencoding=utf8, % padrão
]{biblatex}
% \citeonline como \textcite
\let\citeonline\textcite
\let\apudonline\textapud
\addbibresource{ex19-biblatex-abnt.bib}  % arquivo bib
% Consertando o titulo que biblatex redefiniu
\DefineBibliographyStrings{brazilian}{bibliography={Referências}}
% Para biblatex: consertando para Referências ficar em maiusculo no sumário
\defbibheading{bibliography}[\bibname]{%
    \chapter*{#1}
    \bibmark
    \ifnobibintoc\else
      \phantomsection
      \addcontentsline{toc}{chapter}{\uppercase{#1}}
    \fi
    \prebibhook
}
% Iniciando o docuemnto
\begin{document}
Este modelo foi baseado no documento de \texttt{abntex2} \cite{book:abntex2:araujo}.

Para citações textuais, deverá usar o comando \verb+\textcite+ como descrito em \textcite{book:biblatex-abnt:marques}.

% Para mais de uma citação por vez, use a versão plural \verb+\cites+ e \verb+\textcites+ (não é necessário).

Para citações de citações, usar o comando \verb+\apud+ ou \verb+\textapud+.

Existem vários outros comandos neste estilo. Veja o 
\textcite{book:biblatex-abnt:marques} para mais detalhes.

Também poderá usar o BibTeX em vez do BibLaTeX. Veja o \textcite{book:abnt2cite:araujo} para detalhes.
%
\phantomsection
% para que link do hyperref funcione corretamente para referencias bibliograficas no sumario e no bookmark. Parece não ser necessário na classe abntex2
\printbibliography%[heading=bibintoc]
% [heading=bibintoc] é para acrescentar a referências no sumário (caso tenha). Não é necessário para classe abntex2
\end{document}
\end{lstlisting}
\end{singlespacing}
  
O arquivo \texttt{ex19-biblatex-abnt.bib} fica como segue.

\begin{singlespacing}
\begin{lstlisting}[language={BibTeX}]
@book{book:abntex2:araujo,
author={Lauro César Araujo},
title={A classe abntex2: Documentos técnicos e científicos brasileiros compatíveis com as normas {ABNT}},
url={https://ctan.org/pkg/abntex2/},
urldate={2018-06-12},
year=2016
}
@book{book:abnt2cite:araujo,
author={Lauro César Araujo},
title={O pacote abntex2cite: Estilos bibliográficos compatíveis com a {ABNT} {NBR} 6023},
url={https://ctan.org/pkg/abntex2/},
urldate={2018-06-12},
year=2016
}
@book{book:biblatex-abnt:marques,
author={Daniel Ballester Marques},
title={biblatex-abnt 3.3},
url={https://ctan.org/pkg/biblatex-abnt/},
urldate={2018-06-12},
year=2018
}
\end{lstlisting}
\end{singlespacing}

A saída do Exemplo~\ref{ex19:biblatex-abnt} e algo como segue.

%\newlength{\labelseporiginal}
%\setlength{\labelseporiginal}{\labelsep}
\begin{ltxlistingout}
Este modelo foi baseado no documento de \texttt{abntex2} (Araújo, 2016a).

Para citações textuais, deverá usar o comando \verb+\textcite+ como descrito em Marques (2018).

% Para mais de uma citação por vez, use a versão plural \verb+\cites+ e \verb+\textcites+ (não é necessário).

Para citações de citações, usar o comando \verb+\apud+ ou \verb+\textapud+.

Existem vários outros comandos neste estilo. Veja o 
Marques (2018) para mais detalhes.

Também poderá usar o BibTeX em vez do BibLaTeX. Veja o Araújo (2016b) para detalhes.
\end{ltxlistingout}

\begin{ltxlistingout}
%\setlength{\labelsep}{0pt}
\section*{\center Referências}

\noindent
{ARAUJO, Lauro César. \textbf{A classe abntex2: Documentos técnicos e científicos brasileiros compatíveis com as normas ABNT}. [S. L.: s.n.], 2018.
  Disponível em: \url{https://ctan.org/pkg/abntex2/}. Acesso em:
  12 jun. 2018.}

\medskip
\noindent
{ARAUJO, Lauro César. \textbf{O pacote abntex2cite: Estilos bibliográficos compatíveis com a ABNT NBR 6023}. [S. L.: s.n.], 2016. Disponível em:
  \url{https://ctan.org/pkg/abntex2/}. Acesso em: 12 jun. 2018.}

\medskip
\noindent
{MARQUES, Daniel Ballester. \textbf{biblatex-abnt 3.3}. [S. L.: s.n.], 2018. Disponível em:
  \url{https://ctan.org/pkg/biblatex-abnt/}. Acesso em: 12 jun. 2018.}
\end{ltxlistingout}
%\setlength{\labelsep}{\labelseporiginal}
  
  Para mais detalhes sobre comandos do estilo ABNT para Bib\LaTeX, veja \cite{book:biblatex-abnt:marques}.
  
\begin{remark}
O novo estilo bibliográfico de Bib\LaTeX{} para ABNT (conformidade com a nova regra ABNT, NBR 10520:2023) está em desenvolvimento no site \url{https://github.com/abntex/biblatex-abnt}, mas a versão beta foi postado no \href{https://ctan.org/}{CTAN} somente em outubro de 2024. Por este motivo, o estilo da referência bibliográfica distribuída junto com \TeX{} um pouco antigo, pode não estar de acordo com a norma atualizada.
Se for o caso e deseja utilizar a versão nova, deverá abaixar e instalar manualmente seguindo a instrução do site.
Caso não conseguir instalar, poderá extrair todos os arquivos do pacote e colocar junto com o arquivo \texttt{tex}.
Para verificar se está com o novo estilo, veja se \texttt{URL} (endereço da internet) da referência bibliográfica ficará sem estar entre ``\verb+<+'' e ``\verb+>+'' (versão antiga ficará entre estes dois símbolos).
\end{remark}
  
\section{Tabelas em ABNT}\label{sec:abnt:tabela}

Tanto o \texttt{ABNTeX2}, como o \texttt{ABNTexto}, implementa sua forma de criar tabelas curtas em \texttt{ABNT}, mas ainda não tem a funcionalidade para tabelas longas (2024). 
As tabelas no \texttt{ABNT} devem obedecer as normas do Instituto Brasileiro de Geográfica e Estatística (IBGE)\index{IBGE}. Para ter conformidade com o estilo de IBGE (que \texttt{ABNT} adota), poderá usar o pacote \texttt{tabularray}, mas requer ajustes.
Um pacote que efetua tal ajuste é o \texttt{tabularray-abnt}\index{tabularray-abnt} que implementa o estilo \texttt{abnt} para tabelas e \texttt{quadro} para quadros (tabela para apresentação de conteúdo textual em vez de dados numérico). O pacote também implementa o ``wrapper'' \texttt{abnttblr} , \texttt{tallabnttblr} e \texttt{longabnttblr} que aplica o tema \texttt{abnt} sobre \texttt{tblr} , \texttt{talltblr} e \texttt{longtblr}, com a possibilidade de alterar a fonte usada pelo comando \verb+\SetAbntTblrFont+. Como este pacote é muito recente (2025), o sistema TeX pode não vir com ele. Se for o caso, abaixe o arquivo \texttt{tabularray-abnt.sty} do ctan (\url{https://ctan.org/pkg/tabularray-abnt}) e instale manualmente ou deixe junto como o arquivo \texttt{.tex}. Para usar, coloque a opção \verb+\theme=abnt+ ou \verb+theme=quadro+ no parâmetro opcional de \texttt{talltblr} (ou \texttt{tblr} com opção \texttt{tall}) ou \texttt{longtblr} (ou \texttt{tblr} com opção \texttt{long}), ou use a versão \texttt{abnt} correspondente.


% Para isso, coloque o código a seguir, após carregar o pacote \texttt{tabularray}.
%
%\begin{singlespacing}
%\begin{lstlisting}
%% texto adicional no cabeçalho
%\DefTblrTemplate{firsthead-text}{default}{\par~\hfill(continua)} % primeira página
%\DefTblrTemplate{lasthead-text}{default}{\par~\hfill(conclusão)} % última página
%\DefTblrTemplate{conthead-text}{default}{\par~\hfill(continuação)} % páginas do meio (default é em ingles, sem \par)
%% primeiro cabeçalho
%\makeatletter
%  \DefTblrTemplate{caption}{default}{
%    \UseTblrTemplate{caption-tag}{default}
%    \UseTblrTemplate{caption-sep}{default}
%    \UseTblrTemplate{caption-text}{default}
%    % like \ifdefined, but with csname
%    \ifcsname tblr@abnt@spanpages@\roman{table}\endcsname % if span pages
%      \UseTblrTemplate{firsthead-text}{default} % acrescentar o firsthead-text
%    \fi
%  }
%\makeatother
%%%
%% redefinindo o título do último cabeçalho
%\DefTblrTemplate{lasthead}{default}{\normalsize
%  \UseTblrTemplate{caption-tag}{default}
%  \UseTblrTemplate{caption-sep}{default}
%  \UseTblrTemplate{caption-text}{default}
%  \UseTblrTemplate{lasthead-text}{default} % acrescenttar o lasthead-text
%}
%\DefTblrTemplate{capcont}{default}{ % redefinindo, para \par funcionar (senão, será ignorado)
%  \UseTblrTemplate{caption-tag}{default}
%  \UseTblrTemplate{caption-sep}{default}
%  \UseTblrTemplate{caption-text}{default}
%  \UseTblrTemplate{conthead-text}{default}
%}
%% desativando rodapé inicial e do meio
%\DefTblrTemplate{firstfoot,middlefoot}{default}{}
%%
%% último rodapé para inserir fonte e nota
%\DefTblrTemplate{lastfoot}{default}{ % rodapé da última página
%  \UseTblrTemplate{lastfoot-text}{default} % colocar o lastfoot-text
%  \UseTblrTemplate{lastfoot-text-note}{default} % colocar o lastfoot-text-note
%}
%% texto do último rodapé
%\DefTblrTemplate{lastfoot-text}{default}{} % inicialmente vazio
%\DefTblrTemplate{lastfoot-text-note}{default}{} % inicialmente vazio
%% tamanho das fontes
%\SetTblrStyle{firsthead-text,lasthead-text,conthead-text}{\footnotesize}
%\SetTblrStyle{caption,lasthead,capcont}{\normalsize}
%\SetTblrStyle{lastfoot}{\footnotesize}
%
%\makeatletter
%% comando para legenda
%
%% https://www.reddit.com/r/LaTeX/comments/116wtwp/how_get_the_next_line_with_indentation/
%% \hangindent=2em\hangafter=1
%% indentar a rpóxima linha por \hangindent não funciona no tblr?
%\newlength{\Tblr@Format@Source@text@width}%
%\newsavebox\Tblr@Format@Source@label@box%  
%\providecommand{\Tblr@Format@Source}[2][Fonte]{\par \medskip%
%  \setlength{\Tblr@Format@Source@text@width}{\textwidth}%
%  % if argument is empty, nothings for #1
%  \def\tempa{}\def\tempb{#1}%
%  \ifx\tempa\tempb 
%  \else%
%    \sbox{\Tblr@Format@Source@label@box}{#1: }%
%    \addtolength{\Tblr@Format@Source@text@width}{-\wd\Tblr@Format@Source@label@box}% subtract label width
%    \usebox\Tblr@Format@Source@label@box% write label
%  \fi%
%  \parbox[t]{\Tblr@Format@Source@text@width}{\linespread{1}\@currsize
%  #2% dentro de tabular par aalinhamento e com espaçamento simples
%  }%
%  \smallskip
%} %
%% Fonte no último rodapé
%\newcommand\SetTblrSource[2][Fonte]{%
%  % https://texfaq.org/FAQ-empty
%  \def\tempa{}%
%  \def\tempb{#1}%
%  \ifx\tempa\tempb% if argument is empty
%    \DefTblrTemplate{lastfoot-text}{default}{}%
%  \else
%    \DefTblrTemplate{lastfoot-text}{default}{\Tblr@Format@Source[#1]{#2}}%
%  \fi
%}
%% Nota no último rodapé
%\newcommand\SetTblrNote[2][Nota]{%
%  % https://texfaq.org/FAQ-empty
%  \def\tempa{}%
%  \def\tempb{#1}%
%  \ifx\tempa\tempb% if argument is empty
%    \DefTblrTemplate{lastfoot-text-append}{default}{}%
%  \else
%    \par\DefTblrTemplate{lastfoot-text-note}{default}{\Tblr@Format@Source[#1]{#2}}%
%  \fi
%}
%       
%% To save span page status
%%\makeatletter
%  \newif\iftblr@abnt@mark@spanpages% if span pages, put corresponding command to aux file
%  \tblr@abnt@mark@spanpagesfalse % initially false
%  % tblr with long optional option  
%  \AddToHook{env/tblr/before}
%  {  
%    \tblr@abnt@mark@spanpagestrue
%  }
%  \AddToHook{env/tblr/after}
%  {  
%    \tblr@abnt@mark@spanpagesfalse
%    \DefTblrTemplate{lastfoot-text}{default}{}   
%    \DefTblrTemplate{lastfoot-text-note}{default}{}            
%  }
%  % longtblr
%  \AddToHook{env/longtblr/before}
%  {  
%    \tblr@abnt@mark@spanpagestrue
%  }
%  \AddToHook{env/longtblr/after}
%  {  
%    \tblr@abnt@mark@spanpagesfalse
%    \DefTblrTemplate{lastfoot-text}{default}{}          
%    \DefTblrTemplate{lastfoot-text-note}{default}{}  
%  }
%  % talltblr
%  \AddToHook{env/talltblr/before}
%  {  
%    \tblr@abnt@mark@spanpagestrue
%  }  
%  \AddToHook{env/talltblr/after}
%  {  
%    \tblr@abnt@mark@spanpagesfalse
%    \DefTblrTemplate{lastfoot-text}{default}{}   
%    \DefTblrTemplate{lastfoot-text-note}{default}{}            
%  }  
%  % if change pages, mark as span pages on aux file
%  \AddToHook{shipout/after}
%  {
%    \iftblr@abnt@mark@spanpages
%      % from https://tex.stackexchange.com/questions/115932/on-the-basics-of-writing-to-reading-from-auxiliary-files-aux-toc-etc
%      \immediate\write\@auxout{\gdef\string\tblr@abnt@spanpages@\roman{table}{true}}
%    \fi
%    %\tblr@abnt@mark@spanpagesfalse
%    % https://tex.stackexchange.com/questions/566884/setting-a-newif-to-false-ignored-on-first-check-in-custom-itemize-environment
%    % to the associated commands act globally
%    \global\let\iftblr@abnt@mark@spanpages\iffalse    
%  }
%\makeatother 
%\end{lstlisting}
%\end{singlespacing}
%
%O código ficou um pouco longo, mas isto configura tanto o \texttt{talltblr} como o \texttt{longtblr} (e \texttt{tblr} com opção \texttt{long} ou \texttt{tall}) e funciona tanto na tabela de uma página como no caso de ocupar mais de uma página.
%
%Para usar no \texttt{abntexto}, ainda precisa acrescentar o código.
%
%\begin{singlespacing}
%\begin{lstlisting}
%\ExplSyntaxOn
%  \DefTblrTemplate{caption-lot}{default}
%  {
%    \tl_if_empty:NTF \lTblrEntryTl
%      { \tl_set_eq:NN \l__tblr_caption_short_tl \lTblrCaptionTl }
%      { \tl_set_eq:NN \l__tblr_caption_short_tl \lTblrEntryTl }
%    %\addcontentsline { lot } { table }
%    %  { \protect\numberline { \thetable } { \l__tblr_caption_short_tl } }
%    %adicionando na lista pelo comando de abntexto
%    \addtoext{lot}{lofi}{\protect\lotlabelbox{\thetable} {\l__tblr_caption_short_tl}}%          
%  }   
%\ExplSyntaxOff
%\end{lstlisting}
%\end{singlespacing}

Agora, supondo que o \texttt{tabularray} (e \texttt{tabularray-abnt}) com ajuste ao uso de \texttt{booktabs} por \verb+\UseTblrLibrary{booktabs}+, assim como os pacotes \texttt{url} (ou \texttt{hyperref}) e \texttt{xcolor} estejam carregados. Então poderá diagramar as tabelas normalmente com o \texttt{tallabnttblr} e \texttt{longabnttblr}, passando a fonte e nota adicional com o parâmetro \texttt{remark},
%no com auxilio do comando \verb+\SetTblrSource+ e \verb+\SetTblrNote+ para tabela flutuante que foi definido no \texttt{preamble}, 
como no Exemplo~\ref{ex19:abnt-table}, cuja a saída foi omitida.

%\begin{singlespacing}
%\begin{lstlisting}[caption={ex19-abnt-table.tex},label={ex19:abnt-table}]
%A Tabela Tabela~\ref{tab:abnt:flutuante} é o que auto posiciona. Para tabela flutuante, poderá usar \texttt{tabular} ou similar normalmente, mas neste exemplo, foi usado o \texttt{talltblr} que aceita mesmos parâmetros de \texttt{longtblr} como o rodapé, etc, mas que pode ser colocado dentro do ambiente \texttt{table}.
%
%\begin{table}[hbp!]
%\centering
%\SetTblrSource{Elaboração do autor} % Usando comando definido no preamble premabulo
%\begin{talltblr}
%[
%  caption={Um título},
%  label={tab:abnt:flutuante},
%]
%{
%  colspec = {XX}, % colunas de largura automatica
%  row{even} = {gray!15}, % linha par em cinza
%}
%\toprule %\hline
%   produto & preço \\
%\midrule %\hline
%   cenouras  (500g)          & R\$0,50  \\
%   cogumelos (vidro de 500g) & R\$5,00  \\
%   batata    (1Kg)           & R\$1,20  \\ \midrule % \hline
%   total & R\$6,70 \\
%\bottomrule %\hline
%\end{talltblr}
%\end{table}
%
%A Tabela~\ref{tab:abnt:longa} foi criado pelo ambiente \texttt{longtblr} (que é mesmo que \texttt{tblr} com opção ``long'' no primeiro parâmetro do argumento), que requer duas compilações seguidas para ajustar corretamente devido a configuração no preambulo.
%
%\begin{center}
%% Configurando a legenda pelo comando definido no preambulo
%\SetTblrSource{\url{https://blog.nubank.com.br/ipca-2022/}\\
%\url{https://brasilindicadores.com.br/poupanca/}}
%\SetTblrNote{Pode colocar apenas uma nota que é opcional}
%\begin{longtblr}
%[%
%  caption = {Inflação (IPCA) e juro de poupança de 2022}, % titulo
%  label={tab:abnt:longa}, % rotulo para referências cruzadas
%]
%{
%  colspec = {XXX}, % colunas de largura automatica
%  rowhead = 1, % primeira linha será repatida em todas páginas
%  row{1} = {font=\bfseries}, % linha de título
%  row{even} = {gray!50}, % linha par em cinza
%  row{Z} = {font=\bfseries,white}, % última linha  
%}
%\toprule
%Mês & Inglação & Poupança \\
%\midrule
%Janeiro   &  0,54 & 0,5608 \\ 
%Fevereiro &  1,01 & 0,5000 \\
%Março     &  1,62 & 0,5976 \\
%Abril     &  1,06 & 0,5558 \\
%Maio      &  0,47 & 0,6671 \\
%Junho     &  0,67 & 0,6491 \\
%Julho     & -0,68 & 0,6639 \\
%Agosto    & -0,36 & 0,7421 \\
%Setembro  & -0,29 & 0,6814 \\
%Outubro   &  0,59 & 0,6501 \\
%Novembro  &  0,41 & 0,6515 \\
%Dezembro  &  0,62 & 0,7082 \\
%\bottomrule
%Acumulado do ano & 5,79 & 7,8997 \\
%\begin{tblr}
%\end{lstlisting}
%\end{singlespacing}

\begin{singlespacing}
\begin{lstlisting}[caption={ex19-abnt-table.tex},label={ex19:abnt-table}]
A Tabela Tabela~\ref{tab:abnt:flutuante} é o que auto posiciona. Para tabela flutuante, poderá usar \texttt{tabular} ou similar normalmente, mas neste exemplo, foi usado o \texttt{talltblr} que aceita mesmos parâmetros de \texttt{longtblr} como o rodapé, etc, mas que pode ser colocado dentro do ambiente \texttt{table}.

\begin{table}[hbp!]
\centering
\begin{talltblr}
[
  theme=abnt, % Formatar como ABNT
  caption={Um título},
  label={tab:abnt:flutuante},
  reamrk{Fonte}={Elaboração do autor}, % Usando comando definido no preamble premabulo
]
{
  colspec = {XX}, % colunas de largura automatica
  row{even} = {gray!15}, % linha par em cinza
}
\toprule %\hline
   produto & preço \\
\midrule %\hline
   cenouras  (500g)          & R\$0,50  \\
   cogumelos (vidro de 500g) & R\$5,00  \\
   batata    (1Kg)           & R\$1,20  \\ \midrule % \hline
   total & R\$6,70 \\
\bottomrule %\hline
\end{talltblr}
\end{table}

A Tabela~\ref{tab:abnt:longa} foi criado pelo ambiente \texttt{longtblr} (que é mesmo que \texttt{tblr} com opção ``long'' no primeiro parâmetro do argumento), que requer duas compilações seguidas para ajustar corretamente devido a configuração no preambulo.

\begin{center}
\begin{longtblr}
[%
  theme=abnt, % Formatar como ABNT
  caption = {Inflação (IPCA) e juro de poupança de 2022}, % titulo
  label={tab:abnt:longa}, % rotulo para referências cruzadas
  reamrk{Fonte}={\url{https://blog.nubank.com.br/ipca-2022/}\\
\url{https://brasilindicadores.com.br/poupanca/}},
  remark{Nota}={Pode colocar uma nota que é opcional},
]
{
  colspec = {XXX}, % colunas de largura automatica
  rowhead = 1, % primeira linha será repetida em todas as páginas
  row{1} = {font=\bfseries}, % linha de título
  row{even} = {gray!50}, % linha par em cinza
  row{Z} = {font=\bfseries,white}, % última linha  
}
\toprule
Mês & Inglação & Poupança \\
\midrule
Janeiro   &  0,54 & 0,5608 \\ 
Fevereiro &  1,01 & 0,5000 \\
Março     &  1,62 & 0,5976 \\
Abril     &  1,06 & 0,5558 \\
Maio      &  0,47 & 0,6671 \\
Junho     &  0,67 & 0,6491 \\
Julho     & -0,68 & 0,6639 \\
Agosto    & -0,36 & 0,7421 \\
Setembro  & -0,29 & 0,6814 \\
Outubro   &  0,59 & 0,6501 \\
Novembro  &  0,41 & 0,6515 \\
Dezembro  &  0,62 & 0,7082 \\
\bottomrule
Acumulado do ano & 5,79 & 7,8997 \\
\begin{longtblr}
\end{lstlisting}
\end{singlespacing}

Se preferir, poderá reduzir as fontes do corpo da tabela para \verb+\footnotesize+, o que é exigido em algumas instituições que usam a norma \texttt{ABNT}. Para tal, poderá colocar a tabela entre \verb+\begin{footnotesize}+ e \verb+\end{footnotesize}+.
Para que isto seja feita automaticamente, use o comando \verb+\SetAbntTblrFont{\footnotesize}+ que altera as fonte no ambiente \texttt{abnttblr}, \texttt{tallabnttblr} e \texttt{longabnttblr}. Em seguida, troque \texttt{tblr}, \texttt{talltblr} e \texttt{longtblr} para correspondente \texttt{abnt}.

%Se preferir, poderá criar um ambiente para que isto seja feito automaticamente.

%\begin{remark}
%O ambiente \texttt{xtabular} do pacote \texttt{xtab} apresenta o comando para saber se tabela cabe ou não em uma única página (por exemplo, poderá testar se ocupa mais de uma página por \verb+\ifnum\PWSTlastpage > 1+), mas não há configuração padrão para repetir o nome da tabela na página seguinte (o que é feito na tabelas de IBGE).
%\end{remark}

No \texttt{ABNT}, tabelas com descrições qualitativas (textos em vez de números) é denominado de ``quadros''\index{quadro}. As classes \texttt{ABNTeX2} e \texttt{ABNTexto} não implementa o ``quadro'' ainda (2024).
O pacote \texttt{tabularray-abnt} implementa o tema \texttt{quadro} para esta finalidade.

Note que na tabela (tabela de apresentação de dados numéricos), não deve ter fechamento lateral, devendo ser fechado na parte superior e inferior, mas não deve haver linhas horizontais no corpo da tabela. Também deve ter linha de titulo das colunas no começo da tabela, separada de corpo da tabela pela linha horizontal. No caso de tabelas longas que ocupam mais de uma página, estas linhas de títulos devem ser repetidos em todas páginas.

No quadro (tabela de apresentação de dados não numéricos), deve ter fechamento e grades divisório.

%Se pretende usar, precisará providenciar o ambiente de quadros, lista de quadros, etc.
%Para ambiente flutuante, poderá efetuar com o pacote \texttt{float}\index{float}. Para o caso de quadro longa, poderá implementar sobre a tabela longa, mas no caso de usar o \texttt{tabularray}, poderá implementar como tema em vez do ambiente, acrescentando um pouco mais de códigos no \texttt{preamble} anterior.
%
%O código a seguir, assume que está usando a classe \texttt{abntex2} que é baseado \texttt{memoir}, usando o seu recurso em vez do pacote \texttt{float}. O código deve ser acrescentado no código do \texttt{preamble} para tabelas apresentada anteriormente.
%
%\begin{singlespacing}
%\begin{lstlisting}
%% quadros (requer classe derivado de memoir como o abntex2)
%%----------------------------------------------------------
%% Nomes
%\newcommand{\quadroname}{Quadro}
%\newcommand{\listquadroname}{Lista de quadros}
%\addto\captionsbrazil{% portugues-brasil
%  \renewcommand{\quadroname}{Quadro}
%  \renewcommand{\listquadroname}{Lista de quadros}
%}
%\addto\captionsenglish{% ingles
%  \renewcommand{\quadroname}{Text table}
%  \renewcommand{\listquadroname}{List of text table}
%}
%
%% usando comandos do memoir
%%\newfloat[chapter]{quadro}{loq}{\quadroname}
%%\counterwithout{quadro}{chapter}
%\newfloat{quadro}{loq}{\quadroname}
%\newlistof{listadequadros}{loq}{\listquadroname}  
%%\newlistentry[chapter]{quadro}{loq}{0}
%\newlistentry{quadro}{loq}{0}
%
%\cftsetindents{quadro}{0em}{2.3em}
%\renewcommand{\cftquadroname}{\quadroname\space}
%\renewcommand*{\cftquadroaftersnum}{\hfill\textendash\hfill}	
%
%% gravando na lista separada de tabelas
%\ExplSyntaxOn
%\DefTblrTemplate{caption-lot}{quadro}%
%{%
%  \addtocounter{table}{-1}% não contar como tabela
%  \stepcounter{quadro}% contar como quadro
%  \tl_if_empty:NTF \lTblrEntryTl
%    {\tl_set_eq:NN \l__tblr_caption_short_tl \lTblrCaptionTl}
%    {\tl_set_eq:NN \l__tblr_caption_short_tl \lTblrEntryTl}
%  %\addcontentsline{lot}{table}%
%  %  {\protect\numberline{\thetable}{\l__tblr_caption_short_tl}}
%  \addcontentsline{loq}{quadro}%
%    {\protect\numberline{\thequadro}{\l__tblr_caption_short_tl}}
%}
%\ExplSyntaxOff
%
%% Atenção! Não deve haver espaço extra entre chaves e nomes!
%\DefTblrTemplate{caption-tag}{quadro}{\quadroname\hspace{0.25em}\thequadro}
%
%% Definindo o tema
%% Atenção! Não deve haver espaço extra entre chaves e nomes no \SetTblrTemplate
%\NewTblrTheme{quadro}{%
%  \SetTblrTemplate{caption-tag}{quadro}%
%  \SetTblrTemplate{caption-lot}{quadro}%
%}
%\end{lstlisting}
%\end{singlespacing}
%  
%Com isso, poderá usar a tabela e quadros, como no Exemplo~\ref{ex19:abnt-quadro}. A distinção entre tabela e quadro será feito pelo \verb+theme=quadro,+ na primeira opção do parâmetro opcional de \texttt{longtblr} ou \texttt{talltblr}. 

O tema ``quadro'' configurará para quadro no modo \texttt{ABNT}, como no Exemplo~\ref{ex19:abnt-quadro}. A distinção entre tabela e quadro será feito pelo \verb+theme=quadro,+ na primeira opção do parâmetro opcional de \texttt{longtblr} ou \texttt{talltblr} (ou da versão \texttt{abnt} correspondente). 

\begin{singlespacing}
\begin{lstlisting}[caption={ex19-abnt-quadro.tex},label={ex19:abnt-quadro}]
Sem a opção do tema ``quadro'', será produzido a tabela. Note que na tabela não pode fechar os laterais (Exemplo~\ref{tab:talltblr:simples}).

\begin{table}[hbp!]
\begin{tallabnttblr}
[
  caption={Tabela curta simples},
  label={tab:talltblr:simples},
  remark{Fonte}={Elaboração do autor},
]
{
  colspec = {XX},
}
\toprule
nome & valor \\
a & 1 \\ \midrule
c & 2 \\ \bottomrule
\end{tallabnttblr}
\end{table}

O quadro é produzido pelo tema \texttt{quadro} como no Exemplo~\ref{quadro:longo}. Note que, quadro deve fechar todos os lados e fazer divisório.

\begin{longtblr}
[
  theme=quadro, % um quadro
  caption={Um quadro longo simples},
  label={quadro:longo},
  remark{Fonte}={Elaboração do autor},
  remark{Nota}={Usando o tema quadro para produzir quadro},
]
{
  colspec = {XX},
  vlines,hlines, % fazer grade
}
linha 1 & texto 1 \\
linha 2 & texto 2 \\
linha 3 & texto 3 \\
linha 4 & texto 4 \\
linha 5 & texto 5 \\
%\pagebreak % quebrando página para teste
linha 6 & texto 6 \\
linha 7 & texto 7 \\
linha 8 & texto 8 \\
linha 9 & texto 9 \\
linha 10 & texto 10 \\
\end{longtblr}

Quadro flutuante será produzido pelo ambiente \texttt{quadro}, como no Quadro~\ref{quadro:flutuante}.

\begin{quadro}[hbp!]
\begin{talltblr}
[
  theme=quadro, % um quadro
  caption={Quadro flutuante simples},
  label={quadro:flutuante},
  remark{Fonte}={Elaboração do autor},
]
{
  colspec = {XX},
  vlines,hlines, % grades
}
Nome 1 & Sobrenome 1 \\
Nome 2 & Sobrenome 2 \\
\end{talltblr}
\end{quadro}
\end{lstlisting}
\end{singlespacing}
  
A diferença entre \texttt{tblr}/\texttt{talltblr}/\texttt{longtblr} com 
\texttt{abnttblr}/\texttt{tallabnttblr}/\texttt{longabnttblr} e que nas versões \texttt{abnt} pode configurar a fonte da tabela com \verb+\SetAbntTblrFont+, além de já aplicar o tema \texttt{abnt} por padrão.
 
 No \texttt{ABNTeX2}, a tabela ou quadro curto produzido pelo \verb+\IBGEtab+\index{IBGEtab@\verb+\IBGEtab+} com o ambiente \texttt{table} ou \texttt{quadro} estará em sincronismo com os produzidos pelo tema \texttt{abnt} ou \texttt{quadro} nos ambientes de \texttt{tabularray} ou \texttt{tabualrray-abnt}. 
 
 No caso da classe \texttt{ABNTexto}, o ambiente \texttt{quadro} não é providenciado. Então use o ambiente \texttt{table} para o caso de querer usar o quadro curto flutuante, em vez do ambiente quadro. Dentro do ambiente \texttt{table}, use a legenda com a entrada \texttt{quadro} que estará em sincronismo com o tema \texttt{quadro} do \texttt{tblr} e similar.
  
%A lista de quadros para configuração anterior, será produzida com o comando \verb+\listadequadros+. Para não constar no sumário, use a versão ``*''.

A lista de quadros poderá ser produzido pelo comando \verb+\listadequadros+. No caso de \texttt{ABNTeX2} ou derivados da classe \texttt{memoir}, use a versão ``*'' para não constar no sumário.
No caso de \texttt{abntexto}, terá o comando \verb+makeloq+ para lista de quadros, que funcionará de forma similar a \verb+\makelot+.

%Para a classe \texttt{abntexto}, a definição de novo ambiente estilo tabelas é feito pelo \verb+\definelegendplace+. Para este caso, também não vamos usar o pacote \texttt{float} para compatibilizar com ambientes já existentes. Acrescente o código seguinte no \texttt{preamble} já com configuração de tabelas anteriores, observando que o tema criado é \texttt{texttab} em vez de \texttt{quadro} para uniformidade do idioma.
%
%\begin{singlespacing}
%\begin{lstlisting}
%% quadro (texttab -- text table)
%\newcommand{\texttabname}{Quadro}
%\newcommand{\listtexttabname}{Lista de quadros}
%\addto\captionsbrazil{% portugues-brasil
%  \renewcommand{\texttabname}{Quadro}
%  \renewcommand{\listtexttabname}{Lista de quadros}
%}
%\addto\captionsenglish{% ingles
%  \renewcommand{\texttabname}{Text table}
%  \renewcommand{\listtexttabname}{List of text table}
%}
%
%% ABNTexto
%\ExplSyntaxOn
%  \definelegendplace{texttab}{Quadro}{quad.\,}{lott} % nova entrada de legenda 
%
%  \DefTblrTemplate {caption-lot}{texttab}
%  {
%    \addtocounter{table}{-1}% não contar como table
%    % contador criado pelo \definelegendplace{texttab} não é \c@textab, mas counttexttab que requer incrementar pelo comando de TeX.
%    \global\advance\counttexttab by 1% contar como texttab
%    \tl_if_empty:NTF \lTblrEntryTl
%      {\tl_set_eq:NN \l__tblr_caption_short_tl \lTblrCaptionTl}
%      {\tl_set_eq:NN \l__tblr_caption_short_tl \lTblrEntryTl}
%    %adicionando no sumário pelo comando de abntexto
%    \addtoext{lott}{lotti}{\protect\lottlabelbox{\the\counttexttab} {\l__tblr_caption_short_tl}}%
%  }
%\ExplSyntaxOff
%
%% Atenção! Não deve haver espaço entre chaves e parametros
%\DefTblrTemplate{caption-tag}{texttab}{\texttabname\hspace{0.25em}\the\counttexttab}
%
%% Atenção! Não deve haver espaço entre chaves e parametros, no \SetTblrTemplate
%\NewTblrTheme{texttab}{
%  \SetTblrTemplate{caption-lot}{texttab}
%  \SetTblrTemplate{caption-tag}{texttab}
%}
%\end{lstlisting}
%\end{singlespacing}
%
%Para produzir quadros, basta usar o tema \texttt{texttab} que foi criada, como no Exemplo~\ref{ex19:abnt-quadro-abntexto}.
%
%\begin{singlespacing}
%\begin{lstlisting}[caption={ex19-abnt-quadro-abntexto.tex},label={ex19:abnt-quadro-abntexto}]
%Sem a opção do tema, será produzido a tabela. Note que na tabela não pode fechar os laterais (Exemplo~\ref{tab:talltblr:simples}).
%
%\SetTblrSource{Elaboração do autor}
%\begin{table}[hbp!]
%\begin{talltblr}
%[
%  caption={Tabela curta simples},
%  label={tab:talltblr:simples},
%]
%{
%  colspec = {XX},
%}
%\toprule
%nome & valor \\
%a & 1 \\ \midrule
%c & 2 \\ \bottomrule
%\end{talltblr}
%\end{table}
%
%O quadro é produzido pelo tema \texttt{texttab} como no Exemplo~\ref{quadro:longo}. Note que, quadro deve fechar todos os lados e fazer divisório.
%
%\SetTblrSource{Elaboração do autor}
%\SetTblrNote{Usando o tema quadro para produzir quadro}
%\begin{longtblr}
%[
%  theme=texttab,
%  caption={Um quadro longo simples},
%  label={quadro:longo},
%]
%{
%  colspec = {XX},
%  vlines,hlines, % fazer grade
%}
%linha 1 & texto 1 \\
%linha 2 & texto 2 \\
%linha 3 & texto 3 \\
%linha 4 & texto 4 \\
%linha 5 & texto 5 \\
%\pagebreak % quebrando página para teste
%linha 6 & texto 6 \\
%linha 7 & texto 7 \\
%linha 8 & texto 8 \\
%linha 9 & texto 9 \\
%linha 10 & texto 10 \\
%\end{longtblr}
%
%Quadro flutuante poderá ser produzido pelo ambiente \texttt{table} com \texttt{talltblr} dentro, como no Quadro~\ref{quadro:flutuante}.
%
%\begin{table}[hbp!]
%\SetTblrSource{Elaboração do autor}
%\begin{talltblr}
%[
%  theme=texttab,
%  caption={Quadro flutuante simples},
%  label={quadro:flutuante},
%]
%{
%  colspec = {XX},
%  vlines,hlines, % grades
%}
%Nome 1 & Sobrenome 1 \\
%Nome 2 & Sobrenome 2 \\
%\end{talltblr}
%\end{table}
%
%Contagem está sincronizado com o \verb+\legend+ como no Quadro~\ref{quadro:curto}.
%
%\legend{texttab}{Teste do quadro curto não flutuante}
%\src{Elaboração do autor}
%\label{quadro:curto}
%\place{Quadro curto não flutuante aqui.}
%
%\end{lstlisting}
%\end{singlespacing}
%
%Para criar lista de quadros, use o comando
%\begin{singlespacing}
%\begin{lstlisting}
%\notoc\nonum\chapter{Lista de quadros}
%\makelott+
%\end{lstlisting}
%\end{singlespacing}

No caso de \texttt{ABNTexto}, se tiver pouco espaço entre ``FIGURA ??'' com o nome das figuras na lista de figuras, ou similares, poderá aumentar com os comandos

\begin{singlespacing}
\begin{lstlisting}
\renewcommand{\loflabelwidth}{7.5em} % da lista de figuras
\renewcommand{\lotlabelwidth}{7.5em} % da lista de tabelas
\renewcommand{\loqlabelwidth}{8em} % da lista de quadros
\end{lstlisting}
\end{singlespacing}

%Para criar o quadro no documento genérico, use o pacote \texttt{float} como segue, o que deve ser colocado junto com definição de tabelas \texttt{ABNT}.
%
%\begin{singlespacing}
%\begin{lstlisting}
%% quadros
%\newcommand{\quadroname}{Quadro}
%\newcommand{\listofquadrosname}{Lista de quadros}
%
%\newcommand{\listadeqadros}{\listof{quadro}{\listofquadrosname}}
%
%\newfloat{quadro}{tbp}{loq}%[chapter]
%%\counterwithout{quadro}{chapter} desvincular no capítulo
%
%%% We need to use \hspace and \enskip, but not ~ or \space,
%%% since we want a correct hangindent caption paragraph.
%
%%Atenção! Não pode haver espaço entre chaves e parametros
%\DefTblrTemplate {caption-tag} {quadro} {\quadroname\hspace{0.25em}\thequadro}
%
%%Atenção! Não pode haver espaço entre chaves e parametros
%\NewTblrTheme{quadro}{
%  \SetTblrTemplate{caption-tag}{quadro}
%  \SetTblrTemplate{caption-lot}{quadro}
%}
%
%\ExplSyntaxOn
%\DefTblrTemplate { caption-lot } { quadro }
%{
%  \addtocounter{table}{-1}
%  \stepcounter{quadro}
%  \tl_if_empty:NTF \lTblrEntryTl
%    { \tl_set_eq:NN \l__tblr_caption_short_tl \lTblrCaptionTl }
%    { \tl_set_eq:NN \l__tblr_caption_short_tl \lTblrEntryTl }
%  \addcontentsline { loq } { table }
%    { \protect\numberline { \thequadro } { \l__tblr_caption_short_tl } }
%}
%\ExplSyntaxOff
%\end{lstlisting}
%\end{singlespacing}


%%%%%%%%%%%%%% APÊNDICE %%%%%%%%%%

\clearpage\thispagestyle{empty}\cleardoublepage
\appendix
\chapter{Símbolos Básicos de \LaTeX\protect\index{simbolos basicos@{símbolos básicos}}}
Aqui, veremos os símbolos básicos de \LaTeX{} que não requer o uso de pacotes adicionais. 

Em geral, os editores atuais para \LaTeX{} costumam apresentar painel de inserção de símbolos, o que torna desnecessário ter lista de símbolos em mão.
Atualmente, muitos sistemas disponíveis na internet tais como alguns \texttt{blog}'s, \texttt{wiki}'s e sistema de ensino/aprendizagem \texttt{moodle} costumam ativar a fórmula \LaTeX{} através de \texttt{mimetex}, \texttt{mathjax}, \texttt{KaTeX}, ou similar.
Alguns destes permitem somente os comandos e símbolos básicos sem os pacotes para deixar mais leve, enquanto que outros ativam os pacotes do \texttt{AMS} por padrão para incrementar a sua funcionalidade.

Aqui será apresentado somente os símbolos básicos que poderão ser usados em qualquer sistema na qual o suporte da fórmula \LaTeX{} esteja ativa. Para usar o sistema na qual os pacotes do \texttt{AMS} está ativa, é aconselhável procurar os símbolos e construções adicionais no outro material.

Existem pacotes específicos para cada área, adicionando símbolos e funcionalidades adicionais. Assim, é importante estudar pacotes relacionados à área desejada.
Por exemplo, na área de matemática, costuma usar os pacotes do AMS (\texttt{amsmath}, \texttt{amssymb}, \texttt{amsthm}).

Para procurar símbolos incomuns, existe uma lista completa de símbolos do \LaTeX{} \cite{book:pakin:2017} disponível gratuitamente.

\section{Caracteres especiais e acentuação no modo \TeX\protect\index{acentuacao@{acentuação}!modo TeX}}
Alguns caracteres são reservados no \LaTeX{} e requer o uso de comandos para inserir no documento. Além dos caracteres reservados, alguns caracteres extras (não \texttt{ASCII}) também podem ser produzidos.
Dependendo do caso, ainda precisa da acentuação pelo comando (acentuação no modo \TeX) como no caso de usa o \BibTeX{} no sistema \TeX{} antigo (anterior a 2018) na qual não consegue lidar com os caracteres acentuados.

O Exemplo~\ref{ex-a:especiais-acentuacao}%
\index{caracter especial!\textbackslash chaveaberta@\curlyopensymbforindex}%
\index{caracter especial!\textbackslash chavefechada@\curlyclosesymbforindex}%
%\index{\{}\index{\}}
\index{modo texto!simbolo@{símbolo}!\textbackslash chaveaberta@\curlyopensymbforindex}\index{modo matematico@{modo matemático}!basico@{básico}!\textbackslash chaveaberta@\curlyopensymbforindex}%
\index{modo texto!simbolo@{símbolo}!\textbackslash chavefechada@\curlyclosesymbforindex}\index{modo matematico@{modo matemático}!basico@{básico}!\textbackslash chavefechada@\curlyclosesymbforindex}%
%\index{\{}\index{\}}%
\index{modo texto!simbolo@{símbolo}!\verb+\$+, \$}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\$+, $\$$}%
\index{modo texto!simbolo@{símbolo}!\verb+\%+, \%}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\%+, $\%$}%
\index{modo texto!simbolo@{símbolo}!\verb+_+, \_{}}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+_+, $\_{}$}%
\index{modo texto!simbolo@{símbolo}!\verb+\&+, \&}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\&+, $\&$}%
\index{modo texto!simbolo@{símbolo}!\verb+\#+, \#}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\#+, $\#$}%
\index{modo texto!simbolo@{símbolo}!\verb+\copyright+, \copyright}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\copyright+, $\copyright$}%
\index{modo texto!simbolo@{símbolo}!\verb+\dag+, \dag}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\dag+, $\dag$}%
\index{modo texto!simbolo@{símbolo}!\verb+\ddag+, \ddag}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\ddag+, $\ddag$}%
\index{modo texto!simbolo@{símbolo}!\verb+\dots+, \dots}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\dots+, $\dots$}%
\index{modo texto!simbolo@{símbolo}!\verb+\P+, \P}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\P+, $\P$}%
\index{modo texto!simbolo@{símbolo}!\verb+\pounds+, \pounds}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\pounds+, $\pounds$}%
\index{modo texto!simbolo@{símbolo}!\verb+\S+, \S}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\S+, $\S$}%
%
\index{modo texto!caracter especial!\verb+\aa+, \aa}\index{modo texto!caracter especial!\verb+\AA+, \AA}%
\index{modo texto!caracter especial!\verb+\ae+, \ae}\index{modo texto!caracter especial!\verb+\AE+, \AE}%
\index{modo texto!caracter especial!\verb+\ij+, \ij}\index{modo texto!caracter especial!\verb+\IJ+, \IJ}%
\index{modo texto!caracter especial!\verb+\l+, \l}\index{modo texto!caracter especial!\verb+\L+, \L}%
\index{modo texto!caracter especial!\verb+\o+, \o}\index{modo texto!caracter especial!\verb+\O+, \O}%
\index{modo texto!caracter especial!\verb+\oe+, \oe}\index{modo texto!caracter especial!\verb+\OE+, \OE}%
\index{modo texto!caracter especial!\verb+\ss+, \ss}\index{modo texto!caracter especial!\verb+\SS+, \SS}%
%
\index{modo texto!acentuacao@{acentuação}}%
\index{modo texto!letra circulada, \verb+\textcircled{a}+, \textcircled{a}}%
\index{modo texto!acentuacao@{acentuação}!i sem pingo,\verb+\i+,\i}%
\index{modo texto!acentuacao@{acentuação}!j sem pingo,\verb+\j+,\j}%
\index{modo texto!apostrofos@{apóstrofos}}%
\index{modo texto!aspas}%
\index{modo texto!acentuacao@{acentuação}!\verb+\\verb+\"{a}+, +, \"{a}}%
\index{modo texto!acentuacao@{acentuação}!\verb+\'{a}+, \'{a}}%
\index{modo texto!acentuacao@{acentuação}!\verb+\.{a}+, \.{a}}%
\index{modo texto!acentuacao@{acentuação}!\verb+\={a}+, \={a}}%
\index{modo texto!acentuacao@{acentuação}!\verb+\^{a}+, \^{a}}%
\index{modo texto!acentuacao@{acentuação}!\verb+\`{a}+, \`{a}}%
\index{modo texto!acentuacao@{acentuação}!\verb+\~{a}+, \~{a}}%
\index{modo texto!acentuacao@{acentuação}!\verb+\b{a}+, \b{a}}%
\index{modo texto!acentuacao@{acentuação}!\verb+\c{c}+, \c{c}}%
\index{modo texto!acentuacao@{acentuação}!\verb+\d{a}+, \d{a}}%
\index{modo texto!acentuacao@{acentuação}!\verb+\H{a}+, \H{a}}%
\index{modo texto!acentuacao@{acentuação}!\verb+\r{a}+, \r{a}}%
\index{modo texto!acentuacao@{acentuação}!\verb+\t{a}+, \t{a}}%
\index{modo texto!acentuacao@{acentuação}!\verb+\u{a}+, \u{a}}%
\index{modo texto!acentuacao@{acentuação}!\verb+\v{a}+, \v{a}}%
 lista estes comandos que devem funcionar para qualquer configuração.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex02-01.tex},label=ex:02-01]
\begin{ltxlisting}[caption={ex-a-especiais-acentuacao.tex},label=ex-a:especiais-acentuacao]
Caracteres especiais (modo texto e matemático)

\{  \}  \$  \%  \_  \&  \#

\copyright \dag \ddag \dots \P \pounds \S
 
% O backslash ('\') também é caractere especial, mas usa o comando diferente para o modo texto (\textbackslash) e modo matemático (\backslash).

Caracteres não \texttt{ASCII} (modo texto)

\aa  \AA  \ae \AE

\ij \IJ

\l \L  \o \O

\oe  \OE  \ss  \SS

Acentuação no modo texto

\"{A}\"{a}
\'{A}\'{a}
\.{A}\.{a}
\={A}\={a}
\^{A}\^{a}
\`{A}\`{a}

\~{A}\~{a}
\b{A}\b{a}
\c{C}\c{c}
\d{A}\d{a}
\H{A}\H{a}
\r{A}\r{a}
\t{A}\t{a}
\u{A}\u{a}
\v{A}\v{a}

Circulando a letra

\textcircled{A}\textcircled{a}

i e j sem pingo

\i  \j

Apóstrofos e aspas

` (ou ^^ ) e '

`` (ou ^^ ^^ ) e ''

Pontos para abreviaturas, colocar espaço forçado \verb*+\ + depois dele
para distinguir do ponto final como em ``i.\ é.\ ''.

O ponto sem espaço depois dele é inserido com \verb+\@.+ como em ``p\@.v\@.i\@.''.

\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Note que, para abrir apóstrofo\index{modo texto!apostrofo@{apóstrofo}} (ou aspas\index{modo texto!aspas}), usa-se um (ou dois) acentos agudos e para fechar, usa-se um (ou dois) apóstrofos. Na falta de acento crase no teclado, poderá substituir cada um dos acentos crase por dois acentos circunflexos seguidos de um espaço.

Os comandos \verb+\i+ e \verb+\j+ produz i e j sem pingo para ser acentuados. Por exemplo, ``sa\'{\i}da''. 
No LaTeX atual, devem produzir corretamente mesmo sem usar \verb+\i+ como em ``sa\'{i}da''.

\section{Símbolos no modo texto\protect\index{simbolos@{símbolos}!modo texto}}
Alguns comandos dos símbolos funcionam tanto no modo matemático, como no modo texto, mas maioria dos comandos funcionam somente no modo texto ou no modo matemático.

O Exemplo~\ref{ex-a:simbolos-texto}%
\index{modo texto!simbolo@{símbolo}!\textbackslash chaveaberta@\curlyopensymbforindex}\index{modo matematico@{modo matemático}!basico@{básico}!\textbackslash chaveaberta@{$\curlyopensymbforindex$}}%
\index{modo texto!simbolo@{símbolo}!\textbackslash chavefechada@\curlyclosesymbforindex}\index{modo matematico@{modo matemático}!basico@{básico}!\textbackslash chavefechada@{$\curlyclosesymbforindex$}}%
%\index{\{}\index{\}}%
\index{modo texto!simbolo@{símbolo}!\verb+\$+, \$}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\$+, $\$$}%
\index{modo texto!simbolo@{símbolo}!\verb+\%+, \%}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\%+, $\%$}%
\index{modo texto!simbolo@{símbolo}!\verb+_+, \_{}}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+_+, $\_{}$}%
\index{modo texto!simbolo@{símbolo}!\verb+\&+, \&}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\&+, $\&$}%
\index{modo texto!simbolo@{símbolo}!\verb+\#+, \#}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\#+, $\#$}%
\index{modo texto!simbolo@{símbolo}!\verb+\copyright+, \copyright}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\copyright+, $\copyright$}%
\index{modo texto!simbolo@{símbolo}!\verb+\dag+, \dag}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\dag+, $\dag$}%
\index{modo texto!simbolo@{símbolo}!\verb+\ddag+, \ddag}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\ddag+, $\ddag$}%
\index{modo texto!simbolo@{símbolo}!\verb+\dots+, \dots}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\dots+, $\dots$}%
\index{modo texto!simbolo@{símbolo}!\verb+\P+, \P}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\P+, $\P$}%
\index{modo texto!simbolo@{símbolo}!\verb+\pounds+, \pounds}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\pounds+, $\pounds$}%
\index{modo texto!simbolo@{símbolo}!\verb+\S+, \S}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\S+, $\S$}%
%
\index{modo texto!simbolo@{símbolo}!\verb+\textasciicircum+, \textasciicircum}%
\index{modo texto!simbolo@{símbolo}!\verb+\textasciitilde+, \textasciitilde}%
\index{modo texto!simbolo@{símbolo}!\verb+\textasteriskcentered+, \textasteriskcentered}%
\index{modo texto!simbolo@{símbolo}!\verb+\textbackslash+, \textbackslash}%
\index{modo texto!simbolo@{símbolo}!\verb+\textbar+, \textbar}%
\index{modo texto!simbolo@{símbolo}!\verb+\textbardbl+, \textbardbl}%
\index{modo texto!simbolo@{símbolo}!\verb+\textbullet+, \textbullet}%
\index{modo texto!simbolo@{símbolo}!\verb+\textemdash+, \textemdash}%
\index{modo texto!simbolo@{símbolo}!\verb+\textendash+, \textendash}%
\index{modo texto!simbolo@{símbolo}!\verb+\textexclamdown+, \textexclamdown}%
\index{modo texto!simbolo@{símbolo}!\verb+\textquestiondown+, \textquestiondown}%
\index{modo texto!simbolo@{símbolo}!\verb+\textordfeminine+, \textordfeminine}%
\index{modo texto!simbolo@{símbolo}!\verb+\textordmasculine+, \textordmasculine}%
\index{modo texto!simbolo@{símbolo}!\verb+\textperiodcentered+, \textperiodcentered}%
%\index{\textquotedblleft}\index{\verb+\textquotedbright+, \textquotedblright}%
%\index{\textquoteleft}\index{\verb+\textquoteright+, \textquoteright}%
\index{modo texto!simbolo@{símbolo}!\verb+\textregistered+, \textregistered}%
\index{modo texto!simbolo@{símbolo}!\verb+\texttrademark+, \texttrademark}%
\index{modo texto!simbolo@{símbolo}!\verb+\textvisiblespace+, \textvisiblespace}%
 lista comandos que funcionam no modo texto (incluindo os que funcionam tanto no modo texto como no modo matemático).

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex02-01.tex},label=ex:02-01]
\begin{ltxlisting}[caption={ex-a-simbolos-texto.tex},label=ex-a:simbolos-texto]
Comandos que funcionam tanto no modo texto como no modo matemático.

\{  \}  \$  \%  \_  \&  \#

\copyright  \dag  \ddag  \dots

\P  \pounds  \S

Comando que funcionam somente no modo texto.

%\textasciicircum % mesmo que \^{}
%\textasciitilde % mesmo que \~{}
\textasteriskcentered
\textbackslash
\textbar
\textbardbl
%\textbraceleft % use \{
%\textbraceright % use \}
\textbullet
%\textcopyright % use \copyright
%\textdagger % use \dag
%\textdaggerdbl % use \ddag
%\textdollar % use \$
%\textellipsis % use \dots

---
--
%\textemdash{} % mesmo que ---
%\textendash % mesmo que --

!`?`
%\textexclamdown % mesmo que !`
%\textquestiondown % mesmo que ?`

%\textgreater % use >
%\textless % use <

\textordfeminine
\textordmasculine
%\textparagraph % use \P
\textperiodcentered

%\textquotedblleft %use ``
%\textquotedblright % use ''
%\textquoteleft % use `
%\textquoteright % use '

\textregistered
%\textsection % use \S
%\textsterling % use \pounds
\texttrademark
%\textunderscore % use \_
\textvisiblespace
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Pontos de exclamação e interrogação invertidos são obtidos, colocando acento crase após eles. Na falta do acento crase no teclado, existem os comandos \verb+\textexclamdown+ e \verb+\textquestiondown+ para produzir eles.

Existem muitos outros símbolos que podem ser acessados no modo texto com o uso do pacote \texttt{textcomp}\index{textcomp} que faz parte da base do sistema \TeX.

\section{Símbolos matemáticos\protect\index{simbolos@{símbolos}!matematicos@{matemáticos}}}

Mo modo matemático, algumas construções básicas\index{modo matematico@{modo matemático}!construcao basica@{construção básica}} estão disponíveis, como ilustrado no Exemplo~\ref{ex-a:math-construcao}%
\index{modo matematico@{modo matemático}!construcao basica@{construção básica}!\verb+^+}%
\index{modo matematico@{modo matemático}!construcao basica@{construção básica}!expoente}%
\index{modo matematico@{modo matemático}!construcao basica@{construção básica}!\verb+_+}%
\index{modo matematico@{modo matemático}!construcao basica@{construção básica}!indice@{índice}}%
\index{modo matematico@{modo matemático}!construcao basica@{construção básica}!'@{$'$}}%
\index{derivada}\index{modo matematico@{modo matemático}!construcao basica@{construção básica}!frac@{\verb+\frac+}}%
\index{modo matematico@{modo matemático}!construcao basica@{construção básica}!fracao@{fração}}%
\index{modo matematico@{modo matemático}!construcao basica@{construção básica}!sqrt@{\verb+\sqrt+}}%
\index{modo matematico@{modo matemático}!construcao basica@{construção básica}!raiz}%
\index{modo matematico@{modo matemático}!construcao basica@{construção básica}!stackrel@{\verb+\stackrel+}}%
\index{modo matematico@{modo matemático}!construcao basica@{construção básica}!atop@{\verb+\atop+}}%
.
Para construções mais complexas, deve considerar o uso do pacote \texttt{amsmath} de \texttt{AMS} que faz parte da base do sistema \TeX.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex02-01.tex},label=ex:02-01]
\begin{ltxlisting}[caption={ex-a-construcao.tex},label=ex-a:math-construcao]
Algumas construções básicas
$
x^{n} % expoente
x_{i+1} % índice
x_i^{n+1} % índice e expoente
f' % derivada de f
\frac{m}{n} % fração
\sqrt{2} % raiz quadrada
\sqrt[n]{x} % raiz n-ésima
\stackrel{f}{\to} % colocando nome encima
{X \atop Y} % empilhando
{\displaystyle\mathop{X}_i^j} % índice encima/embaixo
$
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

O comando \verb+\mathop+\index{modo matematico@{modo matemático}!construcao basica@{construção básica}!mathop@{\verb+\mathop+}}
 permite colocar elementos embaixo/encima em vez de índice/expoente no modo \texttt{display}. 
Para usar temporariamente o modo \texttt{display} dentro do modo \texttt{inline}, basta usar o comando \verb+\displaystyle+\index{displaystyle@{\verb+\displaystyle+}}. 

Existem caracteres que podem ser usados diretamente na qual o \LaTeX{} substitui diretamente com o símbolo adequado. Estes símbolos, juntamente com os símbolos que funcionam também no modo texto (apresentado também no Exemplo~\ref{ex-a:simbolos-texto}) estão no Exemplo~\ref{ex-a:math-basic}%
\index{modo texto!simbolo@{símbolo}!\textbackslash chaveaberta@\curlyopensymbforindex}\index{modo matematico@{modo matemático}!basico@{básico}!\textbackslash chaveaberta@{$\curlyopensymbforindex$}}%
\index{modo texto!simbolo@{símbolo}!\textbackslash chavefechada@\curlyclosesymbforindex}\index{modo matematico@{modo matemático}!basico@{básico}!\textbackslash chavefechada@{$\curlyclosesymbforindex$}}%
%\index{\{}\index{\}}%
\index{modo texto!simbolo@{símbolo}!\verb+\$+, \$}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\$+, $\$$}%
\index{modo texto!simbolo@{símbolo}!\verb+\%+, \%}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\%+, $\%$}%
\index{modo texto!simbolo@{símbolo}!\verb+_+, \_{}}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+_+, $\_{}$}%
\index{modo texto!simbolo@{símbolo}!\verb+\&+, \&}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\&+, $\&$}%
\index{modo texto!simbolo@{símbolo}!\verb+\#+, \#}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\#+, $\#$}%
\index{modo texto!simbolo@{símbolo}!\verb+\copyright+, \copyright}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\copyright+, $\copyright$}%
\index{modo texto!simbolo@{símbolo}!\verb+\dag+, \dag}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\dag+, $\dag$}%
\index{modo texto!simbolo@{símbolo}!\verb+\ddag+, \ddag}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\ddag+, $\ddag$}%
\index{modo texto!simbolo@{símbolo}!\verb+\dots+, \dots}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\dots+, $\dots$}%
\index{modo texto!simbolo@{símbolo}!\verb+\P+, \P}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\P+, $\P$}%
\index{modo texto!simbolo@{símbolo}!\verb+\pounds+, \pounds}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\pounds+, $\pounds$}%
\index{modo texto!simbolo@{símbolo}!\verb+\S+, \S}\index{modo matematico@{modo matemático}!basico@{básico}!\verb+\S+, $\S$}%
%
\index{modo matematico@{modo matemático}!basico@{básico}!$+$}%
\index{modo matematico@{modo matemático}!basico@{básico}!$-$}%
\index{modo matematico@{modo matemático}!basico@{básico}!$/$}%
\index{modo matematico@{modo matemático}!basico@{básico}!$<$}%
\index{modo matematico@{modo matemático}!basico@{básico}!$>$}%
\index{modo matematico@{modo matemático}!basico@{básico}!$=$}%
\index{modo matematico@{modo matemático}!basico@{básico}!$,$}%
\index{modo matematico@{modo matemático}!basico@{básico}!$.$}%
\index{modo matematico@{modo matemático}!basico@{básico}!$;$}%
\index{modo matematico@{modo matemático}!basico@{básico}!\exclsymbforindex}%
.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex02-01.tex},label=ex:02-01]
\begin{ltxlisting}[caption={ex-a-simbolos-basicos.tex},label=ex-a:math-basic]
Comandos que funcionam tanto no modo texto como no modo matemático.

$\{  \}  \$  \%  \_  \&  \#$
~
$\copyright  \dag  \ddag  \dots$
~
$\P  \pounds  \S$

Símbolos que podem ser usados diretamente

$+  -  :  /  <  >  =  ,  .  ;  !$
$:$ é para relação (para pontuação, use $\colon$)
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

As letras gregas\index{letras gregas} maiúsculas estão disponíveis somente uma parte dela, como pode ser observado no Exemplo~\ref{ex-a:math-greek}%
\index{modo matematico@{modo matemático}!grega!\verb+\alpha+, $\alpha$}%
\index{modo matematico@{modo matemático}!grega!\verb+\beta+, $\beta$}%
\index{modo matematico@{modo matemático}!grega!\verb+\gamma+, $\gamma$}%
\index{modo matematico@{modo matemático}!grega!\verb+\delta+, $\delta$}%
\index{modo matematico@{modo matemático}!grega!\verb+\epsilon+, $\epsilon$}%
\index{modo matematico@{modo matemático}!grega!\verb+\varepsilon+, $\varepsilon$}%
\index{modo matematico@{modo matemático}!grega!\verb+\zeta+, $\zeta$}%
\index{modo matematico@{modo matemático}!grega!\verb+\eta+, $\eta$}%
\index{modo matematico@{modo matemático}!grega!\verb+\theta+, $\theta$}%
\index{modo matematico@{modo matemático}!grega!\verb+\vartheta+, $\vartheta$}%
\index{modo matematico@{modo matemático}!grega!\verb+\iota+, $\iota$}%
\index{modo matematico@{modo matemático}!grega!\verb+\kappa+, $\kappa$}%
\index{modo matematico@{modo matemático}!grega!\verb+\lambda+, $\lambda$}%
\index{modo matematico@{modo matemático}!grega!\verb+\mu+, $\mu$}%
\index{modo matematico@{modo matemático}!grega!\verb+\nu+, $\nu$}%
\index{modo matematico@{modo matemático}!grega!\verb+\xi+, $\xi$}%
\index{modo matematico@{modo matemático}!grega!$o$}%
\index{modo matematico@{modo matemático}!grega!\verb+\pi+, $\pi$}%
\index{modo matematico@{modo matemático}!grega!\verb+\varphi+, $\varpi$}%
\index{modo matematico@{modo matemático}!grega!\verb+\rho+, $\rho$}%
\index{modo matematico@{modo matemático}!grega!\verb+\varrho+, $\varrho$}%
\index{modo matematico@{modo matemático}!grega!\verb+\sigma+, $\sigma$}%
\index{modo matematico@{modo matemático}!grega!\verb+\varsigma+, $\varsigma$}%
\index{modo matematico@{modo matemático}!grega!\verb+\tau+, $\tau$}%
\index{modo matematico@{modo matemático}!grega!\verb+\upsilon+, $\upsilon$}%
\index{modo matematico@{modo matemático}!grega!\verb+\phi+, $\phi$}%
\index{modo matematico@{modo matemático}!grega!\verb+\varphi+, $\varphi$}%
\index{modo matematico@{modo matemático}!grega!\verb+\chi+, $\chi$}%
\index{modo matematico@{modo matemático}!grega!\verb+\psi+, $\psi$}%
\index{modo matematico@{modo matemático}!grega!\verb+\omega+, $\omega$}%
%
\index{modo matematico@{modo matemático}!grega maiuscula@{grega maiúscula}!\verb+\Gamma+, $\Gamma$}%
\index{modo matematico@{modo matemático}!grega maiuscula@{grega maiúscula}!\verb+\Delta+, $\Delta$}%
\index{modo matematico@{modo matemático}!grega maiuscula@{grega maiúscula}!\verb+\Theta+, $\Theta$}%
\index{modo matematico@{modo matemático}!grega maiuscula@{grega maiúscula}!\verb+\Lambda+, $\Lambda$}%
\index{modo matematico@{modo matemático}!grega maiuscula@{grega maiúscula}!\verb+\Xi+, $\Xi$}%
\index{modo matematico@{modo matemático}!grega maiuscula@{grega maiúscula}!\verb+\Pi+, $\Pi$}%
\index{modo matematico@{modo matemático}!grega maiuscula@{grega maiúscula}!\verb+\Sigma+, $\Sigma$}%
\index{modo matematico@{modo matemático}!grega maiuscula@{grega maiúscula}!\verb+\Upsilon+, $\Upsilon$}%
\index{modo matematico@{modo matemático}!grega maiuscula@{grega maiúscula}!\verb+\Phi+, $\Phi$}%
\index{modo matematico@{modo matemático}!grega maiuscula@{grega maiúscula}!\verb+\Psi+, $\Psi$}%
\index{modo matematico@{modo matemático}!grega maiuscula@{grega maiúscula}!\verb+\Omega+, $\Omega$}
 %
 que lista estes comandos.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex02-01.tex},label=ex:02-01]
\begin{ltxlisting}[caption={ex-a-grega.tex},label=ex-a:math-greek]
Letra grega minúscula
$\alpha  \beta  \gamma  \delta  \epsilon  \varepsilon$
~
$\zeta  \eta  \theta  \vartheta  \iota  \kappa  \lambda$
~
$\mu  \nu  \xi  o  \pi  \varpi  \rho  \varrho  \sigma \varsigma$
~
$\tau  \upsilon  \phi  \varphi  \chi  \psi  \omega$

Note que \texttt{omikron} não tem comando correspondente por ser mesmo símbolo que o ``o'' minúsculo.

Letra grega maiúscula (muitos deles são mesmos da letra romana maiúscula, não tendo comandos correspondentes)

$\Gamma  \Delta  \Theta  \Lambda  \Xi  \Pi$
~
$\Sigma  \Upsilon  \Phi  \Psi  \Omega$
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Agora, veja os operadores binários\index{operador binário} e relações binária\index{relação binária} no Exemplo~\ref{ex-a:math-binary}.%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\amalg+, $\amalg$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\ast+, $\ast$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\bigcirc+, $\bigcirc$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\bigtriangledown+, $\bigtriangledown$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\bigtriangleup+, $\bigtriangleup$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\bullet+, $\bullet$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\cap+, $\cap$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\cdot+, $\cdot$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\circ+, $\circ$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\cup+, $\cup$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\dagger+, $\dagger$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\diamond+, $\diamond$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\div+, $\div$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\mp+, $\mp$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\odot+, $\odot$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\ominus+, $\ominus$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\oplus+, $\oplus$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\oslash+, $\oslash$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\otimes+, $\otimes$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\pm+, $\pm$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\setminus+, $\setminus$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\sqcap+, $\sqcap$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\sqcup+, $\sqcup$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\times+, $\times$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\triangleleft+, $\triangleleft$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\triangleright+, $\triangleright$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\uplus+, $\uplus$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\vee+, $\vee$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\wedge+, $\wedge$}%
\index{modo matematico@{modo matemático}!binario@{binário}!\verb+\wr+, $\wr$}%
%
\index{modo matematico@{modo matemático}!binario ajustavel@{binário ajustável}!\verb+\bigcap+, $\bigcap$}%
\index{modo matematico@{modo matemático}!binario ajustavel@{binário ajustável}!\verb+\bigotimes+, $\bigotimes$}%
\index{modo matematico@{modo matemático}!binario ajustavel@{binário ajustável}!\verb+\bigwedge+, $\bigwedge$}%
\index{modo matematico@{modo matemático}!binario ajustavel@{binário ajustável}!\verb+\bigcup+, $\bigcup$}%
\index{modo matematico@{modo matemático}!binario ajustavel@{binário ajustável}!\verb+\bigsqcup+, $\bigsqcup$}%
\index{modo matematico@{modo matemático}!binario ajustavel@{binário ajustável}!\verb+\coprod+, $\coprod$}%
\index{modo matematico@{modo matemático}!binario ajustavel@{binário ajustável}!\verb+\bigodot+, $\bigodot$}%
\index{modo matematico@{modo matemático}!binario ajustavel@{binário ajustável}!\verb+\biguplus+, $\biguplus$}%
\index{modo matematico@{modo matemático}!binario ajustavel@{binário ajustável}!\verb+\int+, $\int$}%
\index{modo matematico@{modo matemático}!binario ajustavel@{binário ajustável}!\verb+\bigoplus+, $\bigoplus$}%
\index{modo matematico@{modo matemático}!binario ajustavel@{binário ajustável}!\verb+\bigvee+, $\bigvee$}%
\index{modo matematico@{modo matemático}!binario ajustavel@{binário ajustável}!\verb+\oint+, $\oint$}%
\index{modo matematico@{modo matemático}!binario ajustavel@{binário ajustável}!\verb+\sum+, $\sum$}%
\index{modo matematico@{modo matemático}!binario ajustavel@{binário ajustável}!\verb+\prod+, $\prod$}%
%
\index{modo matematico@{modo matemático}!relacao@{relação}!\verb+\approx+, $\approx$}%
\index{modo matematico@{modo matemático}!relacao@{relação}!\verb+\asymp+, $\asymp$}%
\index{modo matematico@{modo matemático}!relacao@{relação}!\verb+\bowtie+, $\bowtie$}%
\index{modo matematico@{modo matemático}!relacao@{relação}!\verb+\cong+, $\cong$}%
\index{modo matematico@{modo matemático}!relacao@{relação}!\verb+\doteq+, $\doteq$}%
\index{modo matematico@{modo matemático}!relacao@{relação}!\verb+\equiv+, $\equiv$}%
\index{modo matematico@{modo matemático}!relacao@{relação}!\verb+\frown+, $\frown$}%
\index{modo matematico@{modo matemático}!relacao@{relação}!\verb+\mid+, $\mid$}%
\index{modo matematico@{modo matemático}!relacao@{relação}!\verb+\models+, $\models$}%
\index{modo matematico@{modo matemático}!relacao@{relação}!\verb+\parallel+, $\parallel$}%
\index{modo matematico@{modo matemático}!relacao@{relação}!\verb+\perp+, $\perp$}%
\index{modo matematico@{modo matemático}!relacao@{relação}!\verb+\prec+, $\prec$}%
\index{modo matematico@{modo matemático}!relacao@{relação}!\verb+\preceq+, $\preceq$}%
\index{modo matematico@{modo matemático}!relacao@{relação}!\verb+\propto+, $\propto$}%
\index{modo matematico@{modo matemático}!relacao@{relação}!\verb+\sim+, $\sim$}%
\index{modo matematico@{modo matemático}!relacao@{relação}!\verb+\simeq+, $\simeq$}%
\index{modo matematico@{modo matemático}!relacao@{relação}!\verb+\smile+, $\smile$}%
\index{modo matematico@{modo matemático}!relacao@{relação}!\verb+\succ+, $\succ$}%
\index{modo matematico@{modo matemático}!relacao@{relação}!\verb+\succeq+, $\succeq$}
 %
 que requer comandos.
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex02-01.tex},label=ex:02-01]
\begin{ltxlisting}[caption={ex-a-simbolo-binario.tex},label=ex-a:math-binary]
Operadores binários

$\amalg  \ast  \bigcirc  \bigtriangledown  \bigtriangleup$
~
$\bullet  \cap  \cdot  \circ  \cup  \dagger  \ddagger  \diamond$
~
$\div  \mp  \odot  \ominus  \oplus  \oslash  \otimes  \pm$
~
$\setminus  \sqcap  \sqcup  \star  \times  \triangleleft  \triangleright$
~
$\uplus  \vee  \wedge  \wr$

Nota: Para indicar o grau, costuma usar o \verb+\circ+ como em $90^\circ$.

Operadores de tamanhos variáveis.

$\bigcap  \bigotimes  \bigwedge  \bigcup  \bigsqcup  \coprod$
~
$\bigodot  \biguplus  \int  \bigoplus  \bigvee  \oint$
~
$\sum  \prod$
Exemplo: $\sum_{i=1}^n\frac{1}{i}$ e  
$\prod_{i=1}^n i = i!$

Relação binária

$\approx  \asymp  \bowtie  \cong  \dashv  \doteq$
~
$\equiv  \frown  \mid  \models  \parallel  \perp$
~
$\prec  \preceq  \propto  \sim  \simeq  \smile  \succ  \succeq$
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

A diferença entre \verb+\mid+ e \verb+|+ é que o primeiro é um operador binário (como em $a\mid b$ que é $a$ divide $b$), enquanto que o segundo não é (como em $|a|$ que é valor absoluto de $a$)

Setas\index{seta} estão ilustradas no Exemplo~\ref{ex-a:math-arrow}.%
\index{modo matematico@{modo matemático}!seta!\verb+\Downarrow+, $\Downarrow$}%
\index{modo matematico@{modo matemático}!seta!\verb+\downarrow+, $\downarrow$}%
\index{modo matematico@{modo matemático}!seta!\verb+\hookleftarrow+, $\hookleftarrow$}%
\index{modo matematico@{modo matemático}!seta!\verb+\hookrightarrow+, $\hookrightarrow$}%
\index{modo matematico@{modo matemático}!seta!\verb+\leftarrow+, $\leftarrow$}%
\index{modo matematico@{modo matemático}!seta!\verb+\Leftarrow+, $\Leftarrow$}%
\index{modo matematico@{modo matemático}!seta!\verb+\Leftrightarrow+, $\Leftrightarrow$}%
\index{modo matematico@{modo matemático}!seta!\verb+\leftrightarrow+, $\leftrightarrow$}%
\index{modo matematico@{modo matemático}!seta!\verb+\longleftarrow+, $\longleftarrow$}%
\index{modo matematico@{modo matemático}!seta!\verb+\Longleftarrow+, $\Longleftarrow$}%
\index{modo matematico@{modo matemático}!seta!\verb+\longleftrightarrow+, $\longleftrightarrow$}%
\index{modo matematico@{modo matemático}!seta!\verb+\Longleftrightarrow+, $\Longleftrightarrow$}%
\index{modo matematico@{modo matemático}!seta!\verb+\longmapsto+, $\longmapsto$}%
\index{modo matematico@{modo matemático}!seta!\verb+\Longrightarrow+, $\Longrightarrow$}%
\index{modo matematico@{modo matemático}!seta!\verb+\longrightarrow+, $\longrightarrow$}%
\index{modo matematico@{modo matemático}!seta!\verb+\mapsto+, $\mapsto$}%
\index{modo matematico@{modo matemático}!seta!\verb+\nearrow+, $\nearrow$}%
\index{modo matematico@{modo matemático}!seta!\verb+\nwarrow+, $\nwarrow$}%
\index{modo matematico@{modo matemático}!seta!\verb+\Rightarrow+, $\Rightarrow$}%
\index{modo matematico@{modo matemático}!seta!\verb+\rightarrow+, $\rightarrow$}%
\index{modo matematico@{modo matemático}!seta!\verb+\searrow+, $\searrow$}%
\index{modo matematico@{modo matemático}!seta!\verb+\swarrow+, $\swarrow$}%
\index{modo matematico@{modo matemático}!seta!\verb+\uparrow+, $\uparrow$}%
\index{modo matematico@{modo matemático}!seta!\verb+\Uparrow+, $\Uparrow$}%
\index{modo matematico@{modo matemático}!seta!\verb+\updownarrow+, $\updownarrow$}%
\index{modo matematico@{modo matemático}!seta!\verb+\Updownarrow+, $\Updownarrow$}%
%
\index{modo matematico@{modo matemático}!seta!\verb+\leftharpoondown+, $\leftharpoondown$}%
\index{modo matematico@{modo matemático}!seta!\verb+\leftharpoonup+, $\leftharpoonup$}%
\index{modo matematico@{modo matemático}!seta!\verb+\rightharpoondown+, $\rightharpoondown$}%
\index{modo matematico@{modo matemático}!seta!\verb+\rightharpoonup+, $\rightharpoonup$}%
\index{modo matematico@{modo matemático}!seta!\verb+\rightleftharpoons+, $\rightleftharpoons$}%
%
\index{modo matematico@{modo matemático}!se, e somente se!\verb+\iff+, $\iff$}%
\index{modo matematico@{modo matemático}!implica!\verb+\implies+, $\implies$}%
%
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex02-01.tex},label=ex:02-01]
\begin{ltxlisting}[caption={ex-a-setas.tex},label=ex-a:math-arrow]
Setas

$\Downarrow  \downarrow  \hookleftarrow  \hookrightarrow$
~
$\leftarrow  \Leftarrow  \Leftrightarrow  \leftrightarrow$
~
$\longleftarrow  \Longleftarrow  \longleftrightarrow  \Longleftrightarrow$
~
$\longmapsto  \Longrightarrow  \longrightarrow  \mapsto$
~
$\nearrow  \nwarrow  \Rightarrow  \rightarrow  \searrow  \swarrow$
~
$\uparrow  \Uparrow  \updownarrow  \Updownarrow$

A seta dupla \verb+\Longleftrightarrow+ costuma ser usado para ``se, e somente se'', mas com pequeno ajuste no espaçamento. Para simplicidade, existe o comando \verb+\iff+ que produz $\iff$.
No pacote \texttt{amsmath}, define também o \verb+\implies+ para ``implica'' que tem mesmo símbolo que \verb+\Longrightarrow+, mas com espaçamento já ajustado devidamente. 

Arpões

$\leftharpoondown  \leftharpoonup  \rightharpoondown  \rightharpoonup$
~
$\rightleftharpoons$
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Para produzir negação do símbolo longo como de ``não implica'', poderá usar o \verb+\centernot+ do pacote \texttt{centernot}\index{modo matematico@{modo matemático}!centernot@{\verb+\centernot+}}%
 (que não é da \texttt{base} nem do \texttt{required}) em vez do \verb+\not+\index{modo matematico@{modo matemático}!not@{\verb+\not+}}, como em \verb+\centernot\implies+ em vez de \verb+\not\implies+.

\section{Nome das funções e delimitadores no modo matemático}\label{apendice:funcao:e:delimitador}

Os nomes das funções\index{função matemática!nome da} devem estar em \verb+\mathrm+ e tem vários comandos já definidos.
No caso de precisar definir um novo (como nome em português), use
algo como \verb+\newcommand{\sen}{\mathrm{sen}}+ no preâmbulo.
Se estiver usando o pacote AMS, poderá substituir por \verb+\DeclaremathOperator{\sen}{sen}+ no preâmbulo.
No caso de definir nomes do estilo limite na qual o índice fica embaixo no modo display, use em conjunto com \verb+\mathop+, como em \verb+\newcommand{\argmin}{\mathop{\mathrm{arg\,min}}}+.
Note o uso de \verb+\,+ para inserir espaço entre duas palavras. Com o pacote do AMS, poderá escrever como \verb+\DeclaremathOperator*{\argmin}{arg\,min}+ (usando a versão ``*'' do \verb+\DeclaremathOperator+).

Veja o Exemplo~\ref{ex-a:math-func-names} para nome das funções pré-definidos.%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\arccos+, $\arccos$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\arcsin+, $\arcsin$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\arctan+, $\arctan$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\arg+, $\arg$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\bmod+, $\bmod$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\cos+, $\cos$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\cosh+, $\cosh$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\cot+, $\cot$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\coth+, $\coth$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+csc+, $\csc$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\deg+, $\deg$}%
%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\det+, $\det$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\dim+, $\dim$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\exp+, $\exp$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\gcd+, $\gcd$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\hom+, $\hom$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\inf+, $\inf$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\ker+, $\ker$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\lg+, $\lg$}%
%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\lim+, $\lim$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\liminf+, $\liminf$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\limsup+, $\limsup$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\ln+, $\ln$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\log+, $\log$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\max+, $\max$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\min+, $\min$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\Pr+, $\Pr$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\sec+, $\sec$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\sin+, $\sin$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\sinh+, $\sinh$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\sup+, $\sup$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\tan+, $\tan$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\tanh+, $\tanh$}%
\index{modo matematico@{modo matemático}!funcao@{função}!\verb+\pmod+, $\pmod{n}$}%

\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex02-01.tex},label=ex:02-01]
\begin{lstlisting}[caption={ex-a-nome-funcao.tex},label=ex-a:math-func-names]
$\arccos  \arcsin  \arctan  \arg  \bmod  \cos  \cosh  \cot  \coth  \csc  \deg$
~
$\det  \dim  \exp  \gcd  \hom  \inf  \ker  \lg$
~
$\lim  \liminf  \limsup  \ln  \log  \max  \min  \Pr  \sec  \sin  \sinh  \sup  \tan  \tanh$

Para indicar a congruência módulo $n$, podemo suar o comando \verb+\pmod+ como em $a \equiv b \pmod{n}$.
\end{lstlisting}
%\end{LTXexample}
\end{singlespacing}
% Uso separarado é porque \bmod sem estar entre chaves dentro deste ambiente puxa o próximo e sobrepõe.
\begin{ltxlistingout}
$\arccos  \arcsin  \arctan  \arg  {\bmod}  \cos  \cosh  \cot  \coth  \csc  \deg$
~
$\det  \dim  \exp  \gcd  \hom  \inf  \ker  \lg$
~
$\lim  \liminf  \limsup  \ln  \log  \max  \min  \Pr  \sec  \sin  \sinh  \sup  \tan  \tanh$

Para indicar a congruência módulo $n$, podemo suar o comando \verb+\pmod+ como em $a \equiv b \pmod{n}$.
\end{ltxlistingout}

Para delimitadores\index{delimitador}, veja o Exemplo~\ref{ex-a:math-delimiters}.
Em geral, o tamanho dos delimitadores serão ajustados automaticamente quando usar em conjunto com \verb+\left+\index{modo matematico@{modo matemático}!delimitador!left@\verb+\left.+} e \verb+\right+\index{modo matematico@{modo matemático}!delimitador!right@\verb+\right.+}.

O comando \verb+\left+ indica que o delimitador é do lado esquerdo e \verb+\right+ indica que o delimitador é do lado direito. Além disso, poderá usar delimitador diferente para esquerda e a direita como em

\begin{lstlisting}
\left(\frac {x^2}{2}\right|_0^2=\frac{2^2}{2} - \frac{0^2}{2}=2
\end{lstlisting}

\noindent que produz $\left(\frac {x^2}{2}\right|_0^2=\frac{2^2}{2} - \frac{0^2}{2}=2$.
Quando usa o delimitador em apenas um dos lados, use "." para indicar que não há delimitador no outro lado, como em 

\begin{lstlisting}
\left\{x+y=1 \atop x-y=0\right.
\end{lstlisting}

\noindent que produz $\left\{x+y=1 \atop x-y=0\right.$.

Para colocar delimitador ajustável no meio, poderá usar \verb+\middle+ na variante do e-\TeX como no caso do \TeX{} atual. 
Por exemplo, 

\begin{lstlisting}
\left\langle\phi\middle|\psi\right\rangle
\end{lstlisting}
insere delimitador 
% $\left\langle\phi\middle|\psi\right\rangle$ insere delimitador ajustável \verb+|+ no meio.%
\index{modo matematico@{modo matemático}!delimitador!\verb+\downarrow+,$\downarrow$}%
\index{modo matematico@{modo matemático}!delimitador!\verb+\langle+,$\langle$}%
\index{modo matematico@{modo matemático}!delimitador!\verb+\lceil+,$\lceil$}%
\index{modo matematico@{modo matemático}!delimitador!\verb+\lfloor+,$\lfloor$}%
\index{modo matematico@{modo matemático}!delimitador!$($}%
\index{modo matematico@{modo matemático}!delimitador!\verb+\Downarrow+,$\Downarrow$}%
\index{modo matematico@{modo matemático}!delimitador!\verb+\rangle+,$\rangle$}%
\index{modo matematico@{modo matemático}!delimitador!\verb+\rceil+,$\rceil$}%
\index{modo matematico@{modo matemático}!delimitador!\verb+\rfloor+,$\rfloor$}%
\index{modo matematico@{modo matemático}!delimitador!$)$}%
\index{modo matematico@{modo matemático}!delimitador!\verb+\backslash+,$\backslash$}%
\index{modo matematico@{modo matemático}!delimitador!$[$}%
\index{modo matematico@{modo matemático}!delimitador!$\vert$}%
\index{modo matematico@{modo matemático}!delimitador!\verb+\uparrow+,$\uparrow$}%
\index{modo matematico@{modo matemático}!delimitador!\verb+\updownarrow+,$\updownarrow$}%
\index{modo matematico@{modo matemático}!delimitador!chaveaberta@{\textbackslash\curlyopensymbforindex,$\curlyopensymbforindex$}}%
\index{modo matematico@{modo matemático}!delimitador!$]$}%
\index{modo matematico@{modo matemático}!delimitador!$\backslash\Vert$,$\Vert$}%
\index{modo matematico@{modo matemático}!delimitador!\verb+\Uparrow+,$\Uparrow$}%
\index{modo matematico@{modo matemático}!delimitador!\verb+\Updownarrow+,$\Updownarrow$}%
\index{modo matematico@{modo matemático}!delimitador!chavefechada@{\textbackslash\curlyclosesymbforindex,$\curlyclosesymbforindex$}}%
%
\index{modo matematico@{modo matemático}!delimitador!lmoustache@{\verb+\lmoustache+,$\left\lmoustache\phantom{x}\right.$}}%
\index{modo matematico@{modo matemático}!delimitador!rmoustache@{\verb+\rmoustache+,$\left.\phantom{x}\right\rmoustache$}}%
\index{modo matematico@{modo matemático}!delimitador!lgroup@{\verb+\lgroup+,$\left\lgroup\right.$}}%
\index{modo matematico@{modo matemático}!delimitador!rgroup@{\verb+\rgroup+,$\left.\phantom{x}\right\rgroup$}}%

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex02-01.tex},label=ex:02-01]
\begin{ltxlisting}[caption={ex-a-delimitadores.tex},label=ex-a:math-delimiters]
Delimitador que pode ser usado independente ou como delimitador auto ajustável (com \verb+\left+ e \verb+\right+).

$\downarrow  \langle  \lceil  \lfloor  (  /$
~
$\Downarrow  \rangle  \rceil  \rfloor  )  \backslash$
~
$[  |  \uparrow  \updownarrow  \{  ]  \|  \Uparrow  \Updownarrow  \}$
 
Símbolos de tamanhos variáveis grandes que só podem ser usados em conjunto com \verb+\left+ e \verb+\right+.

$\left\lmoustache\right.  \left.\right\rmoustache$% não tem no Latin Moden Math
$\left\lgroup\right.  \left.\right\rgroup$

\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Os comandos \verb+\vert+ e \verb+\Vert+ são mesmos que \verb+|+ e \verb+\|+, mas podem ser usados onde \verb+|+ causa problemas como na entrada de índices remissivos.


Quando tiver quebra de linha no meio da equação (que pode ser efetuado pelos ambientes do pacote \texttt{amsmath}), os delimitadores auto ajustáveis falham. Outro caso é ter um delimitador dentro do outro de mesmo tamanho. Neste caso, poderá ajustar o tamanho manualmente pelos comandos tipo ``big'' em vez de ``left/right''. O especificador do delimitador grande na ordem crescente são: \verb+\big+\index{modo matematico@{modo matemático}!delimitador!\verb+\big+}, \verb+\Big+\index{modo matematico@{modo matemático}!delimitador!\verb+\Big+}, \verb+\bigg+\index{modo matematico@{modo matemático}!delimitador!\verb+\bigg+} e \verb+\Bigg+\index{modo matematico@{modo matemático}!delimitador!\verb+\Bigg+}.
Veja o Exemplo~\ref{ex-a:math-big-delimiters}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex02-01.tex},label=ex:02-01]
\begin{ltxlisting}[caption={ex-a-big-delimitadores.tex},label=ex-a:math-big-delimiters]
Exemplo de ajuste manual do tamanho doas delimitadores.

\[
  \Bigg(x+\bigg(y+\Big(z+\big(w+v\big)\Big)\bigg)\Bigg)
\]
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

%Símbolos de tamanhos variáveis grandes (requer\verb+\left+ e \verb+\right+) que não é suportado pelo \texttt{unicode-math} (logo, no \XeLaTeX{} e Lua\LaTeX).
%$
%\left\arrowvert\right.
%\left\Arrowvert\right.
%\left\bracevert\right.
%$

\section{Outros símbolos\protect\index{símbolos!diversos}}

Símbolos que costuma ser usados como caracteres estão listados no Exemplo~\ref{ex-a:math-letter-like}.%
\index{modo matematico@{modo matemático}!diverso!\verb+\bot+, $\bot$}%
\index{modo matematico@{modo matemático}!diverso!\verb+\ell+, $\ell$}%
\index{modo matematico@{modo matemático}!diverso!\verb+\exists+, $\exists$}%
\index{modo matematico@{modo matemático}!diverso!\verb+\forall+, $\forall$}%
\index{modo matematico@{modo matemático}!diverso!\verb+\Im+, $\Im$}%
\index{modo matematico@{modo matemático}!diverso!\verb+\imath+, $\imath$}%
\index{modo matematico@{modo matemático}!diverso!\verb+\in+, $\in$}%
\index{modo matematico@{modo matemático}!diverso!\verb+\jmath+, $\jmath$}%
\index{modo matematico@{modo matemático}!diverso!\verb+\ni+, $\ni$}%
\index{modo matematico@{modo matemático}!diverso!\verb+\partial+, $\partial$}%
\index{modo matematico@{modo matemático}!diverso!\verb+\Re+, $\Re$}%
\index{modo matematico@{modo matemático}!diverso!\verb+\top+, $\top$}%
\index{modo matematico@{modo matemático}!diverso!\verb+\wp+, $\wp$}%
\index{modo matematico@{modo matemático}!diverso!not@\verb+\not+}%

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex02-01.tex},label=ex:02-01]
\begin{ltxlisting}[caption={ex-a-tipo-letra.tex},label=ex-a:math-letter-like]
$\bot  \ell  \exists  \forall  \hbar  \Im  \imath  \in  \jmath$
~
$\ni  \partial  \Re  \top  \wp$

Para produzir símbolo de negação, poderá usar \verb+\not+ antes do símbolo, como em $\not\in$ ou $\not\exists$.
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

O Exemplo~\ref{ex-a:math-misc} ilustra mais alguns símbolos adicionais.%
\index{modo matematico@{modo matemático}!diverso!\verb+\aleph+, $\aleph$}%
\index{modo matematico@{modo matemático}!diverso!\verb+\emptyset+, $\emptyset$}%
\index{modo matematico@{modo matemático}!diverso!\verb+\angle+, $\angle$}%
\index{modo matematico@{modo matemático}!diverso!\verb+\backslash+, $\backslash$}%
\index{modo matematico@{modo matemático}!diverso!\verb+\infty+, $\infty$}%
\index{modo matematico@{modo matemático}!diverso!\verb+\nabla+, $\nabla$}%
\index{modo matematico@{modo matemático}!diverso!\verb+neg\+, $\neg$}%
\index{modo matematico@{modo matemático}!diverso!\verb+\prime+, $\prime$}%
\index{modo matematico@{modo matemático}!diverso!\verb+\surd+, $\surd$}%
\index{modo matematico@{modo matemático}!diverso!\verb+\triangle+, $\triangle$}%
%
\index{modo matematico@{modo matemático}!diverso!\verb+\flat+, $\flat$}%
\index{modo matematico@{modo matemático}!diverso!\verb+\natural+, $\natural$}%
\index{modo matematico@{modo matemático}!diverso!\verb+\sharp+, $\sharp$}%

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex02-01.tex},label=ex:02-01]
\begin{ltxlisting}[caption={ex-a-simbolos-diversos.tex},label=ex-a:math-misc]
Símbolos diversos

$\aleph  \emptyset  \angle  \backslash  \infty  \nabla  \neg  \prime  \surd  \triangle$

Símbolos musicais

$\flat  \natural  \sharp$
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Alguns autores preferem usar o \verb+\varnothing+\index{\varnothing} do \texttt{amssymb} em vez do \verb+\emptset+ para representar o conjunto vazio.

\section{Acentuação no modo matemático\protect\index{modo matematico@{modo matemático}!acentuacao@{acentuação}}}
Nas fórmulas, costuma usar vários tipos de acentuações para produzir símbolos novos que é relacionado com outros já existentes (não acentuado). Veja o Exemplo~\ref{ex-a:math-punct}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\acute{a}+, $\acute{a}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\bar{a}+, $\bar{a}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\breve{a}+, $\breve{a}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\check{a}+, $\check{a}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\ddot{a}+, $\ddot{a}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\dot{a}+, $\dot{a}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\grave{a}+, $\grave{a}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\hat{a}+, $\hat{a}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\mathring{a}+, $\mathring{a}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\tilde{a}+, $\tilde{a}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\vec{a}+, $\vec{a}$}%
%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\imath+, $\imath$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\jmath+, $\jmath$}%
%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\widetilde{abc}+, $\widetilde{abc}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\widehat{abc}+, $\widehat{abc}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\overleftarrow{abc}+, $\overleftarrow{abc}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\overline{abc}+, $\overline{abc}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\underline{abc}+, $\underline{abc}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\overbrace{abc}^{n}+, $\overbrace{abc}^{n}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\overrightarrow{abc}+, $\overrightarrow{abc}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\underbrace{abc}_{n}+, $\underbrace{abc}_{n}$}%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\sqrt{abc}+, $\sqrt{abc}$}%
%
\index{modo matematico@{modo matemático}!acentuacao@{acentuação}!\verb+\sqrt[n]{abc}+, $\sqrt[n]{abc}$}%
%
\index{modo matematico@{modo matemático}!pontuacao@{pontuação}!\verb+\cdotp+, $\cdotp$}%
\index{modo matematico@{modo matemático}!pontuacao@{pontuação}!\verb+\cdots+, $\cdots$}%
\index{modo matematico@{modo matemático}!pontuacao@{pontuação}!\verb+\colon+, $\colon$}%
\index{modo matematico@{modo matemático}!pontuacao@{pontuação}!\verb+\ldotp+, $\ldotp$}%
\index{modo matematico@{modo matemático}!pontuacao@{pontuação}!\verb+\ddots+, $\ddots$}%
\index{modo matematico@{modo matemático}!pontuacao@{pontuação}!\verb+\ldots+, $\ldots$}%
\index{modo matematico@{modo matemático}!pontuacao@{pontuação}!\verb+\vdots+, $\vdots$}%
%
para acentuação no modo matemático.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex02-01.tex},label=ex:02-01]
\begin{ltxlisting}[caption={ex-a-acentuacao.tex},label=ex-a:math-punct]
Acentuação no modo matemático

$\acute{a}  \bar{a}  \breve{a}  \check{a}  \ddot{a}  \dot{a}$
~
$\grave{a}  \hat{a}  \mathring{a}  \tilde{a}  \vec{a}$

Para i e j sem pontos, existem os comandos \verb+\imath+ e \verb+\jmath+ que podem ser usado como em $\hat{\imath}$ e $\hat{\jmath}$.

Acentos matemáticos extensíveis.

$\widetilde{abc}  \widehat{abc}  \overleftarrow{abc}$
~
$\overline{abc}  \underline{abc}  \overbrace{abc}^{n}$
~
$\underbrace{abc}_{n}  \overrightarrow{abc}  \sqrt{abc} \sqrt[n]{abc}$

Pontuação no modo matemático
$\cdotp  \cdots  \colon  \ldotp  \ddots  \ldots  \vdots$

Note que vários símbolos de pontuação são usados como relações no modo matemático.
Assim, quando precisar usar como pontuação, existem comandos para tal (a diferença entre relação e pontuação está no espaçamento. Por exemplo, $a:b$ é uma relação de proporção, enquanto que $a\colon b$ é uma pontuação.
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Note que, diferente do \verb+\bar+, o comando \verb+\overline+ adjacentes ficam grudados, como em $\overline{A}\overline{B}$. 
Para evitar isso, siga a instrução do \cite{book:pakin:2017} para definir um comando apropriado denominado de \verb+\closure+ que não grudam. 
Para isso, basta colocar o seguinte código no \texttt{preâmbulo}.

\begin{singlespacing}
\begin{lstlisting}
\newcommand{\closure}[2][3]{%
{}\mkern#1mu\overline{\mkern-#1mu#2}}
\end{lstlisting}
\end{singlespacing}

Alguns alfabetos matemáticos\index{alfabeto!matemático} disponíveis por padrão estão listado no Exemplo~\ref{ex-a:math-alphabet}.%
\index{modo matematico@{modo matemático}!alfabeto!\verb+\mathrm{ABCdef123}+, $\mathrm{ABCdef123}$}%
\index{modo matematico@{modo matemático}!alfabeto!\verb+\mathit{ABCdef123}+, $\mathit{ABCdef123}$}%
\index{modo matematico@{modo matemático}!alfabeto!\verb+\mathbf{ABCdef123}+, $\mathbf{ABCdef123}$}%
\index{modo matematico@{modo matemático}!alfabeto!\verb+\mathnormal{ABCdef123}+, $\mathnormal{ABCdef123}$}%
\index{modo matematico@{modo matemático}!alfabeto!\verb+\mathcal{ABC}+, $\mathcal{ABC}$}%
%
\index{modo matematico@{modo matemático}!caracter de extensao@{caracter de extensão}!\verb+\relbar+, $\relbar$}%
\index{modo matematico@{modo matemático}!caracter de extensao@{caracter de extensão}!\verb+\Relbar+, $\Relbar$}%

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex02-01.tex},label=ex:02-01]
\begin{ltxlisting}[caption={ex-a-alfabeto.tex},label=ex-a:math-alphabet]
Alfabetos matemáticos

$\mathrm{ABCdef123}  \mathit{ABCdef123}  \mathbf{ABCdef123}$
~
$\mathnormal{ABCdef123}  \mathcal{ABC}$
% \mathcal é somente para romana maiúscula

Caractere de extensão.
Diferença com $-=$ (relação) é somente o espaçamento.
Quais são os caso de uso?

$\relbar\Relbar$
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}
O alfabeto \verb+\mathbb+ requer o pacote do \texttt{AMS}. 
No sistema de \texttt{blog} e \texttt{moodle} ou similar sem a suporte ao pacote adicional, use o \verb+\mathbf+ em vez de \verb+\mathbb+.

\chapter{Desenvolvendo Pacotes e Classes}
Aqui veremos como escrever seu próprio pacote, também chamado de arquivos de estilos.

Lembrando que, o arquivo de estilos, classes e similares não precisam ser instalados para ser usado.
O \LaTeX{} dá preferência aos arquivos locais (o que está junto com arquivo \texttt{.tex}). Assim, se quer testar um estilo ou classe mais nova que está instalado, basta manter o arquivo novo junto ao arquivo \texttt{.tex}, o que costuma fazer para desenvolver arquivos de estilos e/ou de classes.

\section{Criando pacotes}
Pacote é conjunto de configurações de documentos e definições de comandos ou similares para ser aplicado no documento desejado. 
Pacote também é chamado de arquivo de estilos e tem a extensão \texttt{sty}\index{arquivos!sty}.

Um pacote começa com o cabeçalho.
O comando \verb+\NeedsTeXFormat{LaTeX2e}+\index{NeedsTeXFormat@\verb+\NeedsTeXFormat+} colocado no começo do pacote indica que ele precisa do \LaTeXe.
Em seguida, costuma colocar o comando
%\verb+\ProvidesFile{<nome do pacote>}[<mensagem>]+\index{ProvidesFile@\verb+\ProvidesFile+}.
\verb+\ProvidesPackage{<nome do pacote>}[<data> <mensagem>]+\index{ProvidesPackage@\verb+\ProvidesPackage+}.
onde \texttt{<nome do arquivo>} é nome do arquivo, incluindo a extensão e o argumento opcional \texttt{<data> <mensagem>} é a data no formato \texttt{ano-mês-dia} (ou \texttt{ano/mês/dia}) seguido da mensagem a ser emitido quando carrega o pacote. Na data, o ano deve ser de $4$ digitos.
As informações adicionais tais como versões, mensagens de advertência ou erros, etc pode ser emitido pelo comando \verb+\typeout{<mensagem>}+\index{typeout@\verb+\typeout+} a qualquer momento.

Quando o pacote é uma classe de documento baseado num documento já existente, poderá carregar a classe de documento pelo comando \verb+\LoadClass+ e efetuar ajustes necessários.

Note que não precisa colocar \verb+\makeatletter+\index{makeatletter@\verb+\makeatletter+} e \verb+\makeatother+\index{makeatother@\verb+\makeatother+} (nem deve) no arquivo de estilo para acessar comandos que usam ``@'', pois já está com o uso de ``@'' ativado por padrão.
No caso de \XeLaTeX/Lua\LaTeX{} que usam pacotes mais modernos, usam ``\verb+_+'' e ``:'' no nome dos comandos protegidos. 
Para usar estes comandos no \texttt{pramble}, deverá colocar entre \verb+\ExplSyntaxOn+\index{ExplSyntaxOn@\verb+\ExplSyntaxOn+} e \verb+\ExplSyntaxOff+\index{ExplSyntaxOff@\verb+\ExplSyntaxOff+}. 
Também não é necessário no arquivo de estilos.

Era recomendado que use a acentuação no modo \TeX, pois não saberemos a codificação que o usuário final vai escolher no seu documento. Mas atualmente, o recomendado é usar a codificação em \texttt{utf-8}, o que costuma ser padrão para editor dedicado para \LaTeX.

Dentro do arquivo de estilos, o comando para carregar os pacotes é \verb+\RequirePackage+\index{RequirePackage@\verb+\RequirePackage+} em vez de \verb+\usepackage+.
Para testar se o pacote existe, cheque se tem o arquivo correspondente com o \verb+\IfFileExists+\index{IfFileExists@\verb+\IfFileExists+}. 
Não esqueça da extensão do arquivo no nome. 
Se arquivo do primeiro parâmetro existir, executará o segundo parâmetro.
Caso não existir, executará o terceiro parâmetro.

Também é bom checar se não está executando no modo de compatibilidade (modo antigo). 
Para isso, usa-se o comando \verb+\if@compatibility+\index{ifcompatibility@{\verb+\if+\arrobasymbforindex\verb+compatibility+}} que é da forma
\begin{singlespacing}
\begin{lstlisting}
\if@compatibility 
<comando 1>
\else
<comando 2>
\fi
\end{lstlisting}
\end{singlespacing}
A mensagem de erro é emitido por

\verb+\PackageError{<nome do pacote>}{<mensagem curta>}{<mensagem longa>}+\index{PackageError@\verb+\PackageError+}.

Se for só a advertência, usa-se o comando
\verb+\PackageWarning{<nome do pacote>}{<mensagem>}+\index{PackageWarning@\verb+\PackageWarning+}.

Para saber se foi carregado a classe de documento compatível, usa-se o comando \verb+\@ifclassloaded{}+\index{ifclassloaded@{\textbackslash\arrobasymbforindex\verb+ifclassloaded+}}
 que tem a forma \verb+\@ifclassloaded{<classe>}{<cmd1>}{<cmd2>}+.
Quando \texttt{<class>} for usado, executa o \texttt{<cmd1>} e caso não for a \texttt{<classe>}, executa o \texttt{<cmd2>}.
Com isso, podemos elaborar o cabeçalho do arquivo de estilo. 
O Exemplo~\ref{ex:b:estilo:sty} é uma listagem do exemplo de arquivos de estilos.
\begin{singlespacing}
%\begin{lstlisting}[caption={ex12-07.sty}, label=ex:12-07:sty]
\begin{lstlisting}[caption={ex-b-estilo.sty}, label=ex:b:estilo:sty]
% ex-b-estylo.sty

\NeedsTeXFormat{LaTeX2e} % requer LaTeX 2e
% \NeedsTeXFormat{LaTeX2e}[2020/10/01] % requer LaTeX 2e 2020-10-01 ou mais recente
\ProvidesPackage{ex-b-estilo}[2021/07/14 v0.5 ex-b-estilo style (require book, amsbook, or report as document class)]

% Para controle de versão
% Versões anteriores, caso existam em paralelo
% \DeclareRelease{}{<data>}{<nome do arquivo com extensão>}

\DeclareCurrentRelease{}{2025-08-08} % Versão atual: Esta é versão de 2025-08-08

\typeout{ex-b-estilo style 0.6 <August/2025>.}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Para evitar a tentativa de usar no modo de
% compatibilidade com LaTeX antigo (documentstyle)
%---------------------------------------
\if@compatibility % modo de compatibilidade com LaTeX antigo?
  \PackageError{ex-b-estilo}{Not support older compatible mode (documentstyle)}
     {Use documentclass instead of documentstyle}
  \endinput
\else
  % OK
\fi

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% requer book, amsbook, ou report como classe de
% documento (enumeracao do teorema eh vinculado
% ao chapter)
%---------------------------------------
\@ifclassloaded{book}% Using book?
  {}% YES (OK)
  {\@ifclassloaded{amsbook}% No, but are using AMS book?
    {}% YES (OK)
    {\@ifclassloaded{report}% No, but are using report?
      {}% YES (OK)
      { % No! Then can'not apply this package
        \PackageError{ex-b-estilo}{Require book, amsbook, or report as document class}
           {Use the required document class}
        %\endinput
      }
    }
   }

%%%%%%%%
% opcoes
%-------------------------------
% Aqui, opcoes ativa o if para efetuar configuracoes posteriormente

% \RequirePackage{ifthen} % da base/required

\newif\if@ex@b@estilo@usedsfont

% se usedsfont for usado como opcao
\DeclareOption{usedsfont}{\@ex@b@estilo@usedsfonttrue}{\@ex@b@estilo@usedsfontfalse}
  
%% Fallback (opcoes nao declaradas)
\DeclareOption*{
  \PackageWarning{ex-b-estilo}{Unknown option '\CurrentOption'}
}

% Apos declarar todas opcoes, colocar este comando
\ProcessOptions\relax



%%%%%%%%%%%%%%%%%%%%%%
% Pacotes necessarios

% Da base/required
\RequirePackage{amsthm, amssymb,amsmath}

% \RequirePackage[brazil]{babel}

% pacotes nao obrigatorios do LaTeX
% \RequirePackage{geometry} % carregar sempre

%\IfFileExists{dsfont.sty}% carregar, se existir
%{\RequirePackage{dsfont}}{}%

% testando se tem o pacote instalado e providenciando o
% comando, caso pacote nao exista.
\IfFileExists{hyperref.sty}%
{\RequirePackage{hyperref}}%
{\PackageWarning{ex-b-estilo}{hyperref.sty not found. Using draft mode.}%
 \providecommand\url[1]{\texttt{##1}}%
}
  
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% definicao dos macros para ambiente de teoremas
% teoremas, lemas, proposi\c{c}\~oes, etc

\theoremstyle{plain}

\newtheorem{theorem}{Teorema}[chapter]
\newtheorem{axiom}[theorem]{Axioma}
\newtheorem{corollary}[theorem]{Corol\'ario}
\newtheorem{lemma}[theorem]{lema}
\newtheorem{proposition}[theorem]{Proposi\c{c}\~ao}
\newtheorem{conjecture}[theorem]{Conjectura}

% defini\c c\~ao de defini\c c\~oes, exemplos, etc.
\theoremstyle{definition}
\newtheorem{definition}[theorem]{Defini\c{c}\~ao}

\theoremstyle{remark}
\newtheorem{remark}[theorem]{Obserca\c{c}\~ao}

\newtheorem{note}[theorem]{Nota}
\newtheorem{example}[theorem]{Exemplo}
%
\newtheorem{question}[theorem]{Pergunta}

% alterando as penalidades (para corte de linhas em...)
\hyphenpenalty=5000 % hifeniza\c{c}\~{a}o
\exhyphenpenalty=500 % palavras com hifem
\binoppenalty=3000 % operador binario (+, - , etc)
\relpenalty=2000 % operador relacional ( = \cong \ne, ...)
\clubpenalty=1000 % ???
\brokenpenalty=1000 % ???

\sloppy % prefere underfull do que overfull

% conjunto numerico (evitando o real, complexo, etc,

\newcommand{\Rset}{\mathbb{R}}
\newcommand{\Cset}{\mathbb{C}}
\newcommand{\Zset}{\mathbb{Z}}
\newcommand{\Iset}{\mathbb{I}}
\newcommand{\Qset}{\mathbb{Q}}
\newcommand{\Nset}{\mathbb{N}}

% Funcoes em portugues (nome da funcao deve ser em romano)
\DeclareMathOperator{\sen}{sen}
\DeclareMathOperator{\arcsen}{arcsen}
\DeclareMathOperator{\senh}{senh}
\DeclareMathOperator{\arcsenh}{arcsenh}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Reconfigurando de acordo com a opcao

% Usar dsfont
\if@ex@b@estilo@usedsfont% se usedsfont for usado como opcao
  \IfFileExists{dsfont.sty}%
  {%
    \RequirePackage{dsfont}
    \renewcommand{\Rset}{\mathds{R}}
    \renewcommand{\Cset}{\mathds{C}}
    \renewcommand{\Zset}{\mathds{Z}}
    \renewcommand{\Iset}{\mathds{I}}
    \renewcommand{\Qset}{\mathds{Q}}
    \renewcommand{\Nset}{\mathds{N}}  
  }{%
  \PackageError{ex-b-estilo}{dsfont.sty not found.}%
    {Install dsfont package.}%
  }
\fi% \if@ex@b@estilo@usedsfont

% fim: ex-b-estilo.sty
\end{lstlisting}
\end{singlespacing}

Quando o arquivo de estilo usa opções, coloca o que vai fazer quando uma determinada opção for especificada, com o comando
\verb+\DeclareOption{<opção>}{<comando>}+\index{DeclareOption@\verb+\DeclareOption+}.
Lembre-se que não é permitido carregar o pacote dentro da declaração de opções, mas poderemos testar se o pacote existe.
Para evitar tais desconfortos e deixar o código mais fácil de ser analisados, costuma colocar a declarações de opções no começo e nele, colocar ativação do ``if'' previamente criado. O corpo da opção ficará mais adiante.
Para criar ``if'' novo, % usa-se o pacote \texttt{ifthen}\index{ifthen} e
utiliza o \verb+\newif+\index{newif@\verb+\newif+} seguido de \verb+\if<nome>+  onde \verb+<nome>+ é um nome desejado. O ``flag'' associado pode ser ativado ou desativado com o comando \verb+\<nome>true+ e \verb+\<nome>false+ respectivamente.
O código
\begin{verbatim}
\if<nome>
comando 1
\else
comando 2
\fi
\end{verbatim}

Executará \texttt{comando 1} se ``flag'' associado a \verb+<nome>+ estiver ligado e \texttt{comando 2} caso contrário. Quando não tiver o \texttt{comando 2}, \verb+\else+ pode ser omitido como em
\begin{verbatim}
\if<nome>
comando 1
\fi
\end{verbatim}
Um dos problemas é que o ``if'' criado desta forma não funciona devidamente quando aninhado (colocar um ``if'' dentro do outro).
Isto pode ser contornado pelo pacote \texttt{ifthen}\index{ifthen} (da base) para manipular condições de forma mais confortável do que criar ``if''.

Também podemos passar opções para classe que será carregado posteriormente, pelo comando \verb+\PassOptionsToClass+\index{PassOptionsToClass@\verb+\PassOptionsToClass+} ou para o pacote a ser carregado posteriormente, com o comando \verb+\PassOptionsToPackage+\index{PassOptionsToPackage@\verb+\PassOptionsToPackage+}.

No caso de querer que alguma opção seja aplicada como padrão, poderá usar o comando \verb+\ExecuteOptions+.

Quando tem a declaração de opções, deve colocar \verb+\ProcessOptions+\index{ProcessOptions@\verb+\ProcessOptions+} após terminar todos \verb+\DeclareOption+ e \verb+\ExecuteOptions+ para que opções sejam processados.
% Em geral, costuma colocar o \verb+\ProcessOptions+ no final do arquivo.

O Exemplo~\ref{ex:b:estilo:tex} é um exemplo do uso do pacote do Exemplo~\ref{ex:b:estilo:sty}.

\begin{singlespacing}
%\begin{lstlisting}[caption={ex12-07.tex}, label=ex:12-07]
\begin{lstlisting}[caption={ex-b-estilo.tex}, label=ex:b:estilo:tex]
\documentclass[a4paper,12pt]{book}
\usepackage[T1]{fontenc} % codificação da fonte em 8-bits
\usepackage[brazil]{babel} % em portugues brasileiro

\usepackage{ex-b-estilo} % arquivo de estilo definido pelo usuário.

% \usepackage[usedsfont]{ex-b-estilo} % com opcao (se usar este, conjuntos numéricos ficam como dsfont, caso dsfont estiver instalado)
\begin{document}
\chapter{Teste}

\begin{definition}\label{def:triangulo:retangulo}
Um triângulo é dito retângulo se tiver um ângulo reto.
\end{definition}

\begin{theorem}[Pitágoras]\label{thm:pitagoras}
Dado um triângulo retângulo $ABC$ com ângulo reto em $A$, temos que 
\begin{equation}\label{eq:pitagoras}
a^2=b^2+c^2
\end{equation}
\end{theorem}

\begin{proof}
Demonstração aqui.
\end{proof}

Usando a definição do $\sen$ e $cos$ juntamente com o Teorema~\ref{thm:pitagoras}, temos que

\begin{proposition}
\[
\forall t \in \Rset, \sen^2 t + \cos^2 t = 1
\]
\end{proposition}
\end{document}
\end{lstlisting}
\end{singlespacing}

%\let\mathbb\amsmathbb
%\setcounter{lstorichapter}{\value{chapter}}
%\setcounter{lstorisection}{\value{section}}
%\setcounter{chapter}{0}
%\let\addcontentsline\emptyaddcontentsline
%\let\orithispagestyle\thispagestyle
%\makeatletter
%\let\thispagestyle\@gobble
%\makeatother
%\begin{singlespacing}
%\begin{framed}
\let\oriappendixname\appendixname
\let\orithechapter\thechapter
\renewcommand{\appendixname}{\chaptername}
\renewcommand{\thechapter}{\arabic{chapter}}
\begin{ltxlistingout}
\chapter{Teste}

\begin{definition}%\label{def:triangulo:retangulo}
Um triângulo é dito retângulo se tiver um ângulo reto.
\end{definition}

\begin{theorem}[Pitágoras]%\label{thm:pitagoras}
Dado um triângulo retângulo $ABC$ com ângulo reto em $A$, temos que 
\begin{equation}%\label{eq:pitagoras}
a^2=b^2+c^2
\end{equation}
\end{theorem}

\begin{proof}
Demonstração aqui.
\end{proof}

Usando a definição do $\mathrm{sen}$ e $\cos$ juntamente com o Teorema~1.2%\ref{thm:pitagoras}
, temos que

\begin{proposition}
\[
\forall t \in \mathbb{R}, \mathrm{sen}^2 t + \cos^2 t = 1
\]
\end{proposition}
\end{ltxlistingout}
\let\appendixname\oriappendixname
\let\thechapter\orithechapter
%\end{framed}
%\end{singlespacing}
%\setcounter{chapter}{\value{lstorichapter}}
%\setcounter{section}{\value{lstorisection}}
%\let\mathbb\orimathbb
%% \addtocounter{chapter}{-1}
%\let\thispagestyle\orithispagestyle
%\let\addcontentsline\oriaddcontentsline

\section{Criando classes}
Em geral, a classe é criado de mesma forma que um arquivo de estilo.
Em muitos casos, a classe criada consiste na reconfiguração da classe existente. Quando pretende aplicar o ajuste sobre diversas classes base, é conselhável criar um arquivo de estilo. Quando o ajuste é aplicado numa classe específica, é aconselhável criar uma classe sobre tal classe base.

Os comandos
\verb+\ProvidesPackage{<nome do pacote>}[<mensagem>]+ será substituído por
\verb+\ProvidesClass{<nome da classe>}[<mensagem>]+\index{ProvidesClass@\verb+\ProvidesClass+}.

Quando tem o parâmetro opcional, a ``<mensagem>'' deve iniciar com data no formato \texttt{ano-mes-dia} (ou \texttt{ano/mes/dia} onde ano é de 4 digitos.

A classe base é lido pelo comando \verb+\LoadClass{}+ após declaração das opções, passando as opções não processadas para classe base. Isto pode ser feito com o código do tipo
\begin{verbatim}
% Demais opções
\DeclareOption*{%
  \PassOptionsToClass{\CurrentOption}{book}% repassar para book
}
\ProcessOptions\relax
% carrega a classe base
\LoadClass{book}
\end{verbatim}

O \verb+\PassOptionsToClass+\index{PassOptionsToClass@\verb+\PassOptionsToClass+} é comando para agendar os parâmetros para a classe a ser lido posteriormente. Note que existe o comando \verb+\PassOptionsToPackage+\index{PassOptionsToPackage@\verb+\PassOptionsToPackage+} para pacotes, com mesma finalidade.

O Exemplo~\ref{ex:b:classe:cls} é uma listagem do exemplo de arquivos de classe.
\begin{singlespacing}
%\begin{lstlisting}[caption={ex12-07.cls}, label=ex:12-07:cls]
\begin{lstlisting}[caption={ex-b-classe.cls}, label=ex:b:classe:cls]
\NeedsTeXFormat{LaTeX2e}
% \NeedsTeXFormat{LaTeX2e}[2020/10/01] % requer LaTeX 2e 2020-10-01 ou mais recente

\ProvidesClass{ex-b-classe}[2021/07/14 v0.5 ex-b-classe class file (implemented over book class)]

\typeout{ex-b-classe 0.5 <July/2021>.}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Para evitar a tentativa de usar no modo de
% compatibilidade com LaTeX antigo (documentstyle)
%---------------------------------------
\if@compatibility % modo de compatibilidade com LaTeX antigo?
  \ClassError{ex-b-classe}{Not support older compatible mode (documentstyle)}
     {Use documentclass instead of documentstyle}
  \endinput
\else
  % OK
\fi

%%%%%%%%
% opções
%-------------------------------
% Aqui, algumas opçoes ativa o if para efetuar configurações posteriormente

\RequirePackage{ifthen} % da base/required
\RequirePackage[english,brazilian]{babel} % da base/required (ultima é idioma principal)

\newboolean{ex@b@classe@usedsfont}

% se usedsfont for usado como opcao
\DeclareOption{usedsfont}{\setboolean{ex@b@classe@usedsfont}{true}}{\setboolean{ex@b@classe@usedsfont}{false}}

\DeclareOption{english}{ % idioma principal como english
\main@language{english}
% \selectlanguage{english}
}

\DeclareOption{brazilian}{ % idioma principal como brazilian
\main@language{brazilian}
% \selectlanguage{brazilian}
}

\DeclareOption{brazil}{ % idioma principal como brazilian
\main@language{brazilian}
% \selectlanguage{brazilian}
}

%% Fallback (opcoes nao declaradas)
\DeclareOption*{
  \PassOptionsToClass{\CurrentOption}{book}%
}
% Após declarar todas opções, colocar este comando
\ProcessOptions\relax

% lendo a classe base
\LoadClass{book}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Pacotes necessários (além de ifthen)

% Da base/required
\RequirePackage{amsthm, amssymb,amsmath}

% \RequirePackage[brazil]{babel}

% pacotes nao obrigatorios do LaTeX
% \RequirePackage{geometry} % carregar sempre

%\IfFileExists{dsfont.sty}% carregar, se existir
%{\RequirePackage{dsfont}}{}%

% testando se tem o pacote instalado e providenciando o
% comando, caso pacote nao exista.
\IfFileExists{hyperref.sty}%
{\RequirePackage{hyperref}}%
{\ClassWarning{ex-b-estilo}{hyperref.sty not found. Using draft mode.}%
 \providecommand\url[1]{\texttt{##1}}%
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Ambiente tipo teorema com Multi idiomas
% (ingles, portugues brasileiro)
% \addto do pacote babel adiciona comandos no final do macro existente.

\addto\extrasenglish{
  \engnames
}

\addto\extrasbrazilian{
  \brnames
}

\addto\extrasbrazil{
  \brnames
}
 
\newcommand\engnames{ % english names
  \def\axiomname{Axiom}
  \def\theoremname{Theorem}
  \def\corollaryname{Corollary}
  \def\lemmaname{Lemma}
  \def\propositionname{Proposition}
  \def\conjecturename{Conjecture}

  \def\definitionname{Definition}
  \def\notename{Note}
  \def\examplename{Example}
  \def\questionname{Question}
  \def\remarkname{Remark}
  \def\proofname{Proof}

  %  %%%% data abreviada: mes/dia/ano
  %  \def\todayabrev{%
  %    \ifnum \month < 10 0\fi%
  %    \number\month/
  %    \ifnum \day < 10 0\fi%
  %    \number\day/
  %    \number\year}

  \def\seename{see}
} % engnames


\newcommand\brnames{ % Brazilian names
  \def\axiomname{Axioma}
  \def\theoremname{Teorema}
  \def\corollaryname{Corol\'{a}rio}
  \def\lemmaname{Lema}
  \def\propositionname{Proposi\c{c}\~{a}o}
  \def\conjecturename{Conjectura}
  %
  \def\definitionname{Defini\c{c}\~{a}o}
  \def\notename{Nota}
  \def\examplename{Exemplo}
  \def\questionname{Exerc\'{\i}cio}
  \def\remarkname{Observa\c{c}\~{a}o}
  \def\proofname{Demonstra\c{c}\~{a}o}

  %%% data abreviada: dia/mes/ano
  %  \def\todayabrev{\ifnum \day < 10 0\fi%
  %    \number\day/\ifnum \month < 10 0\fi%
  %    \number\month/\number\year}

  \def\seename{veja}

  %  \typeout{brnames chamado}
} % brnames

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% definicao dos macros para ambiente de teoremas
% teoremas, lemas, proposicoes, etc

\theoremstyle{plain}

\newtheorem{theorem}{\theoremname}[chapter]
\newtheorem{axiom}[theorem]{\axiomname}
\newtheorem{corollary}[theorem]{\corollaryname}
\newtheorem{lemma}[theorem]{\lemmaname}
\newtheorem{proposition}[theorem]{\propositionname}
\newtheorem{conjecture}[theorem]{\conjecturename}

% definicao de definicoes, exemplos, etc.
\theoremstyle{definition}
\newtheorem{definition}[theorem]{\definitionname}

\theoremstyle{remark}
\newtheorem{remark}[theorem]{\remarkname}

\newtheorem{note}[theorem]{\notename}
\newtheorem{example}[theorem]{\examplename}
%
\newtheorem{question}[theorem]{\questionname}

% alterando as penalidades (para corte de linhas em...)
\hyphenpenalty=5000 % hifeniza\c{c}\~{a}o
\exhyphenpenalty=500 % palavras com hifem
\binoppenalty=3000 % operador binario (+, - , etc)
\relpenalty=2000 % operador relacional ( = \cong \ne, ...)
\clubpenalty=1000 % ???
\brokenpenalty=1000 % ???

% redefinição de sloppy
\def\sloppy{\tolerance=9999 \hfuzz=.5pt \vfuzz=.5pt}
\sloppy % prefere underfull do que overfull

% conjunto numerico
%------------------

\newcommand{\Rset}{\mathbb{R}}
\newcommand{\Cset}{\mathbb{C}}
\newcommand{\Zset}{\mathbb{Z}}
\newcommand{\Iset}{\mathbb{I}}
\newcommand{\Qset}{\mathbb{Q}}
\newcommand{\Nset}{\mathbb{N}}

% Funcoes em portugues (nome da funcao deve ser em romano)
\DeclareMathOperator{\sen}{sen}
\DeclareMathOperator{\arcsen}{arcsen}
\DeclareMathOperator{\senh}{senh}
\DeclareMathOperator{\arcsenh}{arcsenh}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Reconfigurando de acordo com a opção

% Usar dsfont
\ifthenelse{\boolean{ex@b@classe@usedsfont}}{% se usedsfont for usado como opcao
  \IfFileExists{dsfont.sty}%
  {%
    \RequirePackage{dsfont}
    \renewcommand{\Rset}{\mathds{R}}
    \renewcommand{\Cset}{\mathds{C}}
    \renewcommand{\Zset}{\mathds{Z}}
    \renewcommand{\Iset}{\mathds{I}}
    \renewcommand{\Qset}{\mathds{Q}}
    \renewcommand{\Nset}{\mathds{N}}  
  }{%
  \ClassError{ex-b-classe}{dsfont.sty not found.}%
    {Install dsfont package.}%
  }
}{%else
}% \ifthenelse{\boolean{ex@b@classe@usedsfont}}

% fim: ex-b-classe.cls
\end{lstlisting}
\end{singlespacing}
Note que alguns comandos de mensagem foi trocado da versão \verb+Package+ para a versão \verb+Class+ a fim de emitir mensagem correta.

O Exemplo~\ref{ex:b:classe:tex} é um exemplo do uso do pacote do Exemplo~\ref{ex:b:classe:cls}.

\begin{singlespacing}
\begin{lstlisting}[caption={ex-b-classe.tex}, label=ex:b:classe:tex]
% Usando a classe definida pelo usuário
\documentclass[a4paper,12pt]{ex-b-classe}
%\documentclass[a4paper,12pt,english]{ex-b-classe} %idioma inglês
% \documentclass[a4paper,12pt,usedsfont]{ex-b-classe} % com dsfont
\usepackage[T1]{fontenc} % codificação da fonte em 8-bits

\begin{document}
\chapter{Teste}

\begin{definition}\label{def:triangulo:retangulo}
Um triângulo é dito retângulo se tiver um ângulo reto.
\end{definition}

\begin{theorem}[Pitágoras]\label{thm:pitagoras}
Dado um triângulo retângulo $ABC$ com ângulo reto em $A$, temos que 
\begin{equation}\label{eq:pitagoras}
a^2=b^2+c^2
\end{equation}
\end{theorem}

\begin{proof}
Demonstração aqui.
\end{proof}

Usando a definição do $\sen$ e $cos$ juntamente com o Teorema~\ref{thm:pitagoras}, temos que

\begin{proposition}
\[
\forall t \in \Rset, \sen^2 t + \cos^2 t = 1
\]
\end{proposition}
\end{document}
\end{lstlisting}
\end{singlespacing}

A saída foi omitida por ser mesmo do Exemplo~\ref{ex:b:estilo:tex}.

\section{Preenchendo o documento para teste}
Para testar estilo de formatação, as vezes queremos preencher rapidamente o espaço.

Para isso existe o pacote \texttt{lipsum}\index{lipsum} que permite gerar parágrafos de texto em grego sem sentido.

O comando \verb+\lipsum+\index{lipsum@\verb+\lipsum+} gera em torno de uma página de texto.
O comando \verb+\lipsum[<n>]+ gera $n$-ésimo parágrafo de texto.
O comando \verb+\lipsum[<a>-<b>]+ gera o $a$-ésimo até $b$-ésimo parágrafo de texto.
Veja o Exemplo~\ref{ex:b:lipsum}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex11-11.tex},label=ex:11-11]
\begin{ltxlisting}[caption={ex-b-lipsum.tex},label=ex:b:lipsum]
% \lipsum % em torno de uma página
\lipsum[5] % quinto parágrafo
% \lipsum[2-3] % de parágrao 2 até parágrafo 3
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

Note que \texttt{lipsum} gera somente parágrafos de textos.
Para testar fórmulas e listas também, poderá usar o pacote \texttt{blindtext}\index{blindtext} que tem o comando de mesmo nome que gera um texto.

O comando \verb+\blindtext[<n>]+\index{blindtext@\verb+\blindtext+} gera o texto $n$ vezes.
O comando \verb+\Blindtext+\index{Blindtext@\verb+\Blindtext+} gera um parágrafo.
O parâmetro opcional pode ser usado para repetir $n$ vezes.

Tem o comando \verb+\blindmathtrue+\index{blindmathtrue@\verb+\blindmathtrue+} que ativa as fórmulas no texto gerado, mas ele só funciona em inglês (idioma selecionado pelo babel). 
Assim, se não estiver em inglês, use o comando \verb+\blindmathpaper+\index{blindmathpaper@\verb+\blindmathpaper+} que gera parágrafos de textos e fórmulas.
Veja o Exemplo~\ref{ex:b:blindtext}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex11-11.tex, parte b},label=ex:11-11:b]
\begin{ltxlisting}[caption={ex-b-blindtext.tex},label=ex:b:blindtext]
% \blindmathtrue % funciona somente em ingles
% \blindtext % texto
% \Blindtext % Gera vários parágrafos
\Blindtext[1] % um parágrafo de textos
%\blinditemize % lista de itens
%\blindenumerate % lista de enumeração
%\blinddescription % lista de descrição
%\blindmathpaper % texto e fórmulas.
%\blinddocument % documento com seção, subseção, listas, etc. Não inclui fórmulas
% \Blinddocument % documento longo, com texto com seção, subseção, listas, etc. Este inclui fórmulas
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

\section{Observação}
Para o desenvolvimento dos pacotes e classes, o \LaTeX{} atual dispõe de uma camada de programação sofisticada de \LaTeX{} 3, além de permitir usar os caracteres ``:'' e ``\verb+_+'' no nome dos comandos e ambientes. Neste documento, não será tratado sobre tais interfaces, mas se precisar acessar no preâmbulo do documento, os comandos protegidos dos pacotes modernos que usam tais caracteres no nome, deverá colocar entre \verb+\ExplSyntaxOn+\index{ExplSyntaxOn@\verb+\ExplSyntaxOn+} e \verb+\ExplSyntaxOff+\index{ExplSyntaxOff@\verb+\ExplSyntaxOff+}.

\clearpage\thispagestyle{empty}\cleardoublepage
\chapter{Usando o Editor \LyX}
Neste apêndice, será explicado o básico sobre o editor \LyX\index{LyX@\LyX}.
\LyX{} é um editor do similar a \texttt{WYSIWYG} (o que você vê é o que você obtém) e poderá editar o documento de forma similar ao aplicativo de escritório, mas processando o documento final com o \LaTeX.

\section{Visualização do documento final}

Para compilar/ver o documento, poderá usar o formatos comumente suportados
pelo \LaTeX{}.
O botão de ``visualizar'' (botão de olho, que fica no lado esquerdo) é usado para visualizar o documento em PDF.

Para exportar em PDF ou similar, basta acessar o menu arquivo->exportar.
Lembre-se que o \LyX{} permite exportar/importar arquivos fonte em
\LaTeX, além de vários outros formatos na qual existem conversores
gratuítos do/para \LaTeX. 

Se estiver usando o pacote que precisa ser compilado para \texttt{dvi} como o pacote gráfico \texttt{pstrick} e o \texttt{psfrag}, poderá escolher outro formato de visualização em ``visualizar outros formatos'' (botão que fica mais a direita, com olho dentro do quadrado).

O uso do pacote \texttt{hyperref} é recomendado para que o \LaTeX{} crie links automáticos e \texttt{bookmarks} (indicadores). 
Os usuários de Windows, deve considerar em evitar o uso do Adobe Reader na fase de elaboração, por ser pesado e apresentar dificuldade de interagir com os editores de \LaTeX. 
Uma boa opção é o freeware \texttt{SumatraPDF}\index{SumatraPDF} (\url{https://www.sumatrapdfreader.org/}).

Depois de tudo pronto, ``file->export'' permite criar arquivo final no formato desejado.

Note que a maioria dos editores de \LaTeX{} salva o documento antes de compilar, mas o \LyX{} não faz isso. 
É necessário salvar manualmente sempre que convém.

\textbf{Dicas:}
\begin{itemize}
\item Para facilitar a navegação do documento em elaboração, é bom ativar o ``Exibir->Painel de estrutura de tópicos''. 
\item Se usar o código \LaTeX{} inserido no documento com frequência, como o do pacote \texttt{tikz}, seria bom ativar a pré-visualização na ``Ferramentas->Preferências'' e em ``Aparências \& Comportamento'', ítem ``Exibição'', na ``Pré-visualização Instantânea'', escolher ``sem matemática'', e colocar pré-visualização no bloco que contém a caixa de \LaTeX{} que julgar conveniente, com ``Inserir->Pré-visualização''.
Se quer que toda fórmula matemática tenha pré-visualização automática, poderá escolher ``ligado'' em vez de ``sem matemática''.
No entanto, as equações no modo ``Instant Preview'' ficará com a mesma cor do texto, tornando mais difícil de efetuar identificação rápida, o que não é recomendável.
\item Para ver como ficaria o código \LaTeX{} em edição, poderá ativar o ``View->View source''. 
\item Se o texto todo ficar sublinhado em vermelho, ou não sublinha a palavra errada, mesmo que o idioma em ``Documento->Configurações: idioma'' esteja correta, pode ser que o corretor ortográfico não está selecionado corretamente. 
Vá em ``Ferramentas->Preferências'' e em ``Configurações de Idiomas'', item ``Verificador Ortográfico'', escolha um verificador em ``verificador ortográfico''. 
Também certifique de que botão de ``verificar ortografia continuamente'' (Botão ABC sublinhado em vermelho) está ativa.
\end{itemize}


\section{Antes de usar o \LyX}

%O \LyX{} tem as ferramentas visuais e edição visual do documento,
%mas precisará conhecer a estrutura e o funcionamento do \LaTeX{}
%para usar corretamente. Também é aconselhável que tenha um pouco de
%conhecimento sobre como escrever fórmulas matemáticas no LaTeX. Para
%tanto, consulte o manual de LaTeX na medida do necessário.

O tutorial e guias do usuário do \LyX{} pode ser acessado pela ``Ajuda->Tutorial'' e ``Ajuda->Guia dde Usuário'' respectivamente.

Também é importante notar que copiar/colar padrão funciona somente entre trechos de documentos do \LyX. 
Caso de colar trecho de código do outro aplicativo como navegador de internet ou editor de texto para o campo de comando \LaTeX{} (botão \TeX{} ou <ctrl>L), use o colar especial (editar->colar especial->texto simples) ou ctrl+shift+v, para não perder a quebra de linhas.

No lado esquerdo da barra de ferramentas, poderá escolher o tipo de texto (parágrafo). 
Alguns dos mais importantes são:

\begin{description}
\item[Standard] texto normal.

\item[Itemize] lista não enumerada.

\item[Enumerate] lista enumerada.

\item[Chapter] Título do capítulo

\item[Section] Título da seção.

\item[Subsection] Título da subseção.

\item[Lyx-code] O texto como foi escrito, inclusive quebra de linhas
(para colocar algoritmo, código fonte do programa, etc).
\end{description}
Esta lista aumenta, dependendo do módulo que for ativado.
Por exemplo, se ativar o módulo do ambiente de teoremas nas configualções do documento, terão entradas adicionais para teoremas, definições, provas, etc.

Uma das formas de colocar comentário no documento é através da nota inserido por ``insert->note'' (ou botão amarelo no painel de ferramentas) que é adequado para notas mais longas por poder ``fechar'' a ``caixa de notas''.

As ``caixas'' como de notas, \TeX{}, Figure, etc tem um botão junto a ``caixa'' e clicando nele, poderá abrir ou fechar, para facilitar a editoração. % Experimente na ``caixa'' de nota acima (no \LyX{}).
O fato de caixa estar fechada ou aberta não influencia no processamento do documento final.

Como notas não serão impressas, também serve para desativar temporariamente o trecho do documento, selecionando e clicando em ``insert->note'' (ou no botão amarelo).
Para desfazer a caixa de notas ou similares, use o ``disolve->inset'' acessível pelo botão direito sobre caixa de notas ou similares.

%Observemos que a versão com {*} como ``chapter{*} ``, ``section{*}``, etc não serão enumeradas e não vão para o sumário.

%Quando insere uma imagem externa, ele é colocado como referências
%(link). Isto quer dizer que a figura fica fora do documento (não dentro
%do arquivo como nos aplicativos Office). Isto quer dizer que as imagens
%não devem ser apagadas e quando copiar o documento \LyX{}, deverá
%copiar imagens juntas. No documento final em PDF, estas imagens serão
%convertidas e inseridas dentro do documento PDF.

Apesar de \LyX{} efetuar conversão automática de imagens, quando pretende exportar o código para \LaTeX, é bom deixar convertido para pdf/jpg/png (para PDF\LaTeX{} usado atualmente) ou eps (para \LaTeX{} antigo) a fim de evitar problema de compatibilidade de imagem com o código fonte em (PDF)\LaTeX{}.

\section{Acertando a configuração do documento}

No ``Documento->Configurações'', escolha a classe de documento, margens e tamanho
das fontes, assim como idioma do documento.
Certifique de que o idióma está de acordo com o idioma usado no texto do documento para que as palavras corretas não sejam sublinhadas (o que indica o erro ortográfico).

Quando compila um documento, o \LyX{} costuma colocar uma opção de
usar o pacote \texttt{amsmath}, mas no caso de inserir o comando de \TeX{}
diretamente, pode não ser detectado a necessidade de \texttt{amsmath}.

Para resolver este caso, entre em ``Document->settings'' e no ``math Package'', tire o check do ``use amsmath package automatically'' e cheque em ``use ams package''.
O problema similar pode acontecer quanto inclui figuras, usar cores, etc dentro da caixa de \LaTeX, sem estar usando fora dela. 
Neste caso, carregue os pacotes necessários, colocando o comando \LaTeX{} \verb+\usepackage+ no \texttt{preamble} (Document->Settings, [LaTeX Preamble]).

Configuração do documento como estilo, margens, etc podem ser alterado
pelo ``Document->Settings'' em qualquer momento.

Quando colar trecho de um documento para outro, pode ficar com a especificação da linguagem diferente e começar a ser sublinhado. 
Neste caso, selecione este trecho e no ``text style'' (botão com letras ``abc''), escolha o ``reset'' na opção de [linguagem].

\section{Inserindo o comando de \LaTeX}

Para colocar pacotes adicionais, definições, configurações adicionas,
etc que ainda não está disponível no \LyX{} (ou que não tem paciência
de descobrir como fazer), deverá ser colocado no campo de ``preamble''
em ``Document->settings, [LaTeX Preamble]'', usando o comando
de \LaTeX. 
% Não é mais necessário, por usar utf-8 no sistema atual: No preamble, deverá usar acentuação no modo \TeX{} para evitar problemas de portabilidade.

Quando precisar colocar um comando extra de \LaTeX{} no documento, clique no botão ``\TeX'' ou pressione <ctrl>L na qual insere uma caixa de comando \LaTeX, podendo colocar qualquer comando válido de \LaTeX. 
Caso finalizar com o comando \LaTeX, coloque um espaço (ou par de chaves) no final do campo de comandos de \LaTeX{} para evitar problemas.

O comando \LaTeX{} pode ficar divididos. 
Por exemplo, uma caixa pode conter \verb+\begin{ambiente}+ e outra caixa pode conter \verb+\end{ambiente}+, para colocar trecho do código no ambiente desejado.

Note que o campo de fórmulas também aceitam diretamente os comandos
de \LaTeX{}.

%\textbf{Para letras acentuadas fora do corpo do documento}

% Não deve ter mais este problema com o uso de utf-8
%O campo exibido na janela separada como no caso do preamble (Document->Settings, [LaTeX preamble]), entrada de índice remissivo (insert->index entry), etc usam a exibição nativa do sistema.
%Assim poderá apresentar problemas na exibição ou compilação quando muda de sistema operacional.
%Para evitar problemas de portabilidade, use a acentuação pelo comandos
%\TeX{} nestes casos.
%Caixa de código \LaTeX{} (inserido com botão \TeX{}) não apresenta este tipo de problemas.


\section{Formatando textos}

Para alterar o tipo de fontes do texto, selecione o trecho e clique
no botão ``\emph{abc}''.
Nele tem a opção de escolher a família, forma e peso.


%\textbf{Family:} roman (serifado) é usado para o corpo do documento;
%sans serif (sem serifa) pode ser usado para títulos; typewriter (maquina
%de escrever) é usado para trecho que deve ser lido no pé da letra
%(código fonte do programa, nome de arquivos, etc).
%
%\textbf{Series:} medium (normal) e bold (negrito). Tecla de atalho
%para negrito é <control>b.
%
%\textbf{Shape:} upright (reto) usado para corpo do documento; italic
%(itálico) usado para destacar palavra a ser definido ou corpo do enunciado
%do teorema, etc; slanted (inclinado, mas não é itálico) que deve ser
%evitado o seu uso quando está usando o itálico; small caps (caixa
%alta) útil para títulos.
%
%\textbf{size:} Ele esta na ordem crescente, onde normal é o tamanho
%normal do documento.
%
%\textbf{misc:} emph (enfatizar) usado para enfatizar palavra dentro
%do texto, alterando entre fontes itálico e reto (botão de ``E''
%na barra de ferramenta - tecla de atalho é <ctrl>e); underbar (sublinhada);
%noun é maiúsculo.

O \texttt{emph} fica na opção \texttt{misc} e \texttt{language} permite escolher idioma neste trecho.
Note que \texttt{<cntrol>+B} é atalho para negrito e \texttt{<cntrl>+E} é atalho para enfatizar.

% 
%
%\textbf{language:} linguagem em que o texto está escrito. A hifenização,
%corretor ortográfico, etc é efetuado com a linguagem especificada. 

A opção ``reset'' de cada item restaura o item correspondente como padrão do
documento.

%O botão ``A com seta redonda'' aplicará a última configuração.

Para saber o que cada botão faz, posicione o mouse sobre o botão e deixe
parado para aparecer o texto informativo.

Para criar um novo parágrafo ou linhas:

<ENTER> cria um novo parágrafo

<control>+<ENTER> quebra de linha (sem parágrafo que é \verb+\\+ de \LaTeX)

<control>+<space> espaço forçado (\verb+~+ de \LaTeX).

Note que, para inserir linhas vazias extras, deve alterar (quebras de linhas
ou parágrafo) com o espaço forçado.

%\texttt{~}
%
%\texttt{~}
%
%\texttt{~}
%
%\texttt{~}
%
%Notas de rodapé\footnote{Notas de rodapé já ficará com espaço simples como exigido, por estar
%redefinido no arquivo de estilo. Também foi eleminado indentação para
%caber mais, apesar de não ser a exigência} pode ser inserido pelo ``insert->footnote''. 
\section{Lista, sublista e similares}
O texto como padrão, lista enumerada ou itemizada, pode ser escolhido pelo seleto superior esquerdo da barra e ferramentoas, ou pelos botões na barra de ferramenta.
Para cira sublista, ou seja, um ítem seja sublista, clique no botão de aumentar profundidade. Para desfazer ou finalizar sublista, clique no botão diminuir produndidade.
% (para saber o que o botão faz, deixe o ponteiro do mouse parado sobre o botão para que exiba um texto cuto).

Se o módulo de demonstação estiver ativa na comfiguração do documento, aparecrá teoremas, definições, etc. na seleção do tipo de texto (que fica na parte superior esquerdo da barra de feramenta), mas se quer ter uma definição seguida da outroa, ou teoremas seguida da outra, precisaraá usar o menu que aparece quando clica com o botão direito do mouse. Com ele, poderá inserir definição (ou similar) encima/embaixo da definição atual. Isto também permite adicionar nome no teorema e similar com ``texto adicional do teorema''.

\section{Matemática}% \label{sec:matematica}}

Fórmulas matemáticas dentro do texto denominado de \texttt{inlinestyle}
(textstyle) pode ser inserido, clicando no ícone de somatório $\sum$ na barra de ferramentas, ou com o menu ``insert->math->inline formula'' ou
com a tecla \texttt{<control>+M}. Note que \texttt{<ctrl>+M} dentro da fórmula matemática torna localmente como modo texto (aplicará \verb+\text{}+ do \texttt{amsmath}).

Para inserir símbolos e fórmulas, podemos usar o painel matemático
ativado embaixo, quado o cursor está dentro da caixa de fórmulas.
Para criar fórmulas de maneira rápida, é recomendado memorizar alguns comandos básicos de \LaTeX{} que podem ser digitados (em vez de clicar no
mouse). 

%Alguns deles são
%
%\texttt{x\textasciicircum{}2<seta para direia>\_i} $x_{i}^{2}$
%
%\texttt{\textbackslash{}int\_a<seta para direita>\textasciicircum{}b}
%$\int_{a}^{b}$
%
%\texttt{\textbackslash{}frac a<seta para baixo>b} $\frac{a}{b}$
%
%\texttt{\textbackslash{}alpha} $\alpha$
%
%\texttt{\textbackslash{}beta} $\beta$
%
%\texttt{\textbackslash{}pi} $\pi$
%
%\texttt{\textbackslash{}sum\_i=1<seta para direita>\textasciicircum{}n}
%$\sum_{i=1}^{n}$
%
%\texttt{\textbackslash{}infty} $\infty$
%
%\texttt{\textbackslash{}partial} $\partial$
%
%\texttt{\textbackslash{}ge} $\ge$
%
%\texttt{\textbackslash{}le} $\le$
%
%\texttt{\textbackslash{}ne} $\ne$
%
%\texttt{\textbackslash{}cos x} $\cos x$
%
%\texttt{\textbackslash{}sin x} $\sin x$
%
%\texttt{\textbackslash{}ln x} $\ln x$
%
%\texttt{\textbackslash{}sup x} $\sup x$
%
%\texttt{\textbackslash{}lim x} $\lim x$
%
%\textbackslash{}sqrt x $\sqrt{x}$
%
%\textbackslash{}root n <seta para direita> x $\sqrt[n]{x}$. 
%

Note que o \LyX{} tem dificuldade em lidar com o parâmetro opcional
no modo matemático, dificultando o uso da forma \verb+\sqrt[n]{x}+.
Para contornar, foi definido o comando \verb+\root+ no \LyX{} que não é definido por padrão no \LaTeX{}.

Para descobrir nomes de comandos \LaTeX{} que estão no ``Painel Matemático'', posicione o mouse sobre os símbolos no ``Math Panel'' (mostrado quando o cursor está na fórmula) que exibirá o nome do comando.

Uma fórmula numa linha independente denominado de ``displaystyle''
pode ser criado com \texttt{<Control>+<Shift>+M} ou pelo menu ``insert->math->Display formula''.

Para sair rapidamente de uma fórmula, pressione o ``ESC'' que posicionará o cursor logo após a fórmula em edição.

%A posição dos limites no ``inlinestyle'' não ficam embaixo/encima
%para economizar altura da fórmula, como em $\sum_{n=1}^{\infty}\frac{1}{n}=\infty$.
%Se quer que estas e outras exibições no ``inlinestyle'' fiquem igual
%ao do ``displaystyle'', poderá usar o comando do \LaTeX{} \textbackslash{}displaystyle.
%Digite \textbackslash{}displaystyle seguido de espaço. Na ``caixinha''
%criada, a fórmula digitado ficará no modo ``displaystyle'' como
%em ${\displaystyle \sum_{n=1}^{\infty}\frac{1}{n}=\infty}$ mesmo
%no meio do texto.

Para converter tipo de fórmulas já digitadas, clique o botão direito
sobre a fórmula e escolha o novo tipo de fórmula. 
Também pode posicionar o cursor na fórmula e use o ``edit->math->change formula type''.

A função por partes pode ser criado com ``cases'', inserido com
botão direito do mouse sobre a fórmula, ou pelo menu ``insert->math->cases''.

Nas fórmulas multi linhas, \texttt{<control>+ENTER} abre uma nova linha.

%$|x|=\begin{cases}
%x & ,x\ge0\\
%-x & ,x<0
%\end{cases}$

%Para inserir texto no meio da fórmula, use o comando \textbackslash{}text
%
%\begin{eqnarray*}
%f(x) & = & \begin{cases}
%x^{2}, & \text{ se }x>0\\
%-x^{2}, & \text{ se }x\le0
%\end{cases}
%\end{eqnarray*}
%
%Poderá inserir parentes ou similares usando o comando \textbackslash{}left
%e \textbackslash{}right em vez do painel.
%
%Por exemplo, ''\textbackslash{}left. x\textasciicircum{}2 \textbackslash{}right
%{]}`` produz $\left.x^{2}\right]$. As vezes, isto torna mais rápido
%do que usar o painel de inserção de delimitadores.

As fórmulas que ocupam uma linha independente tais como ``Display fórmula'' (fórmula no modo ``displaystyle''), ``AMS align environment'',
etc podem ser enumerados automaticamente.

Para ativar/desativar enumeração na equação com linha independente, clique no botão direito do mouse sobre a fórmula, ou use o menu ``edit->math->toggle numbering''.

Para referenciar equações ou elementos enumerados,
% como
%
%\begin{equation}
%a^{2}=b^{2}+c^{2}\label{eq:pitagoras}
%\end{equation}
use o botão de etiqueta para inserir rótulo e referência cruzada (que
fica no lado da etiqueta) para inserir referências.% \ref{eq:pitagoras}.

\section{Observação adicional}
%Para vvisualizar o documento, basta clicar no botão de olho do lado esquerdo do painel de ferramentas e para expostar pdf ou similar, poderá efetuar com o menu arquivos->exportar.
%Caso qqueira compilar com LaTeX diferente do padrão (por exemplo, com LuaLaTeX no documento normal), tem botão de olho dentro de quadrado, um poco mais diretia (visualizar outro fomato) que permit como compilar.

Em geral, o estilo ABNTeX2 não costuma vir instalado no LyX.

Para instalar, siga as instruções do site oficial
\url{https://github.com/abntex/abntex2/wiki/LyX}.

\clearpage\thispagestyle{empty}\cleardoublepage
\chapter{Para Organizadores do Evento}

Aqui, veremos alguns pacotes úteis para organizadores de eventos. 
Um deles é o pacote para mala direta no \LaTeX, útil para emitir certificados. Outro é para criar caderno de trabalhos apresentados.

\section{Certificado com mala direta no \LaTeX}
Certificados de congressos científicos pode conter fórmulas nos títulos, o que complica a mala direta nos aplicativos de escritórios.
Assim, costumamos efetuar a mala direta no \LaTeX.

A mala direta pode ser efetuada pelo \texttt{datatool}\index{datatool} que lê os dados de um arquivo \texttt{CSV}. 
Após carregar o \texttt{datatool}, comece configurando o separador de colunas e delimitador de campos.
\begin{singlespacing}
\begin{lstlisting}
\DTLsetseparator{,} % Separador de campos
\DTLsetdelimiter{"} % delimitador de celulas
\end{lstlisting}
\end{singlespacing}

Para acessar o arquivo \texttt{CSV}, usa-se o comando
\verb+\DTLloaddb{lista}{ex-c-lista-nomes.csv}+\index{DTLloaddb@\verb+\DTLloaddb+} para associar o arquivo \texttt{ex-c-lista-nomes.csv} no atalho \texttt{lista}. 
Assim, ao referenciar \texttt{lista}, estará referenciando o arquivo \texttt{ex-c-lista-nomes.csv}

A primeira linha do arquivo \texttt{ex-c-lista-nomes.csv} é assumido que é título, isto é, contém nome das colunas.
Caso não tenha linha de título, poderá providenciar como em

\verb+\DTLloaddb[noheader,keys={Nome,Trabalho}]{lista}{lista.csv}+. 

Neste caso, está indicando que não há linha de título no arquivo e está nomeando a primeira e segunda coluna do arquivo de dados como \texttt{Nome} e \texttt{Trabalho}.

Agora podemos efetuar um laço de repetição que é algo como
\begin{singlespacing}
\begin{lstlisting}
\DTLforeach{lista}{%
\personname=Nome,\worktitle=Trabalho}{%
...
} % \DTLforeach
\end{lstlisting}
\end{singlespacing}

O primeiro parâmetro do comando \verb+\DTLforeach+\index{DTLforeach@\verb+\DTLforeach+} é o atalho para arquivo \texttt{CSV} que foi criado pelo comando \verb+\DTLloaddb+.
O segundo parâmetro é a lista de associação de comandos com valor do campo.
\verb+\personname=Nome+ e \verb+\worktitle=Trabalho+ associa o campo (dado da coluna) \texttt{Nome} para o comando \verb+\personname+ e o campo \texttt{Trabalho} para o comando \verb+\worktitle+.
O terceiro parâmetro são comandos a serem executados.
O arquivo de entrada e como do Exemplo~\ref{ex:d:certificado:csv}

\begin{singlespacing}
\begin{lstlisting}[caption={ex-d-lista-nomes.csv},label=ex:d:certificado:csv]
"Nome","Trabalho","Observacao"
"Nome 1","Trabalho 1",
"Nome 2","Trabalho 2",
"Nome 3","Trabalho 3",
...
\end{lstlisting}
%\begin{center}
%\lstlistingname~\refstepcounter{lstlisting}\thelstlisting: lista-nomes.csv\label{ex:c:certificado:csv}
%\end{center}
%\begin{framed}
%\begin{verbatim}
%"Nome","Trabalho","Observacao"
%"Nome 1","Trabalho 1",
%"Nome 2","Trabalho 2",
%...
%\end{verbatim}
%\end{framed}
\end{singlespacing}

Agora, o certificado pode ter enfeites como molduras, logotipos, etc.

Ele será diagramado para papel \texttt{A5}, para ser impresso no papel \texttt{A4}, ampliando-o. Fonte também será alterado para \texttt{bookman} que é uma serifa grossa, ideal para letras maiores como este.
Veja o Exemplo~\ref{ex:d:certificado}.

\begin{singlespacing}
\lstinputlisting[caption={ex-d-certificado.tex},label=ex:d:certificado]{latex-via-exemplos-certificado}
\end{singlespacing}
%
Um dos certificados gerados é como segue.
\begin{framed}
\center
\includegraphics[page=1, width=0.7\linewidth]{latex-via-exemplos-certificado}
\end{framed}

% Note que, o que deixou o código complexo foi o sombreamento.

\section{Gerando crachá pela mala direta}
Crachá pode ser gerado pelo aplicativo de escritórios, mas aproveitando a mala direta visto na seção de certificados, poderá gerar crachás usando o pacote \texttt{ticket}\index{ticket} que gera cartão de visitas e similares. Este pacote dispõe de dois comandos: \verb+\ticketdefault{}+\index{ticketdefault@\verb+\ticketdefault{}+} que determina o que será colocado em todas crachás (por exemplo, nome do evento, logotipo, etc) e o comando \verb+\ticket+\index{ticket@\verb+\ticket+} que determina como crachá será gerada. Como cada crachá é gerado pelo ambiente picture, coloca os conteúdos pelo comando \verb+\put+ na posição desejada.
Veja o Exemplo~\ref{ex:d:cracha}.

\begin{singlespacing}
\lstinputlisting[caption={ex-d-cracha.tex},label=ex:d:cracha]{latex-via-exemplos-cracha}
\end{singlespacing}
%
Parte de cráchás gerados é como segue.
\begin{framed}
\center
% Para recortar, use opção trim={left bottom right top},clip
\includegraphics[page=1, width=0.7\linewidth, trim={{0.15\linewidth} {\linewidth} {0.15\linewidth} {0.05\linewidth}}, clip]{latex-via-exemplos-cracha}
\end{framed}

\section{Caderno de resumos}
Quando recebe vários artigos e quer ``encadernar'', poderá usar a classe \texttt{combine}\index{combine} em vez de gerar \texttt{PDF} de cada um e grudar.
A classe \texttt{combine} agrupa os artigos automaticamente em um único documento, gerando um ``caderno'' de artigos.

Para usar o \texttt{combine}, todos documentos que serão incluídos nele devem estar usando a mesma classe que podem ser \texttt{memoir}, \texttt{book}, \texttt{report}, \texttt{letter} ou \texttt{article}. 
As classes não suportadas oficialmente como o \texttt{amsart} pode precisar de ajustes manuais para funcionar adequadamente.

%Para \texttt{combine}, o papel está fixado. 
%Assim, deverá usar o pacote \texttt{geometry} para efetuar ajustes de papel, se necessário.

% Não é mais necessário
%A classe \texttt{combine} requer mais recursos que o documento normal.
%Assim, para aumentar a memória reservada para isso, coloque
%\begin{singlespacing}
%\begin{lstlisting}
%\usepackage{etex} % to use etex extensions 
%\reserveinserts{28} % using etex extensions
%\end{lstlisting} 
%\end{singlespacing}
%no preâmbulo, caso ocorrer o erro do tipo ``No room for ...''.
%Se ainda ocorrer erro, aumente o valor de $28$ para $50$, por exemplo.

Note que \verb+\maketitle+ ou \texttt{titlepage} é necessário. 
Se não existir, causa erros.

Para gerar sumário de artigos incluídos, carregue o pacote \texttt{combinet}\index{combinet}.
Para usar recursos do \texttt{natbib}, carregue o pacote \texttt{combnat}\index{combinat} no lugar de \texttt{natbib}.
 
O modo padrão é ignorar os pacotes carregados pelos artigos. 
Assim, todos pacotes necessários devem estar carregados no arquivo mestre (arquivo do \texttt{combine} que vai incluir artigos).
É importante observar que na distribuição do \TeX{} recente (2023), precisa efetuar correção segundo
%\begin{singlespacing}
%\begin{lstlisting}
%\makeatletter
%  \let\document\c@ladocument\begingroup
%\makeatother
%\end{lstlisting} 
%\end{singlespacing}
%no preâmbulo conforme indicado em 
%\url{https://tex.stackexchange.com/questions/591145/extra-endgroup-error-when-using-the-combine-document-class}. Note que, colocar
\url{https://tex.stackexchange.com/questions/591145/extra-endgroup-error-when-using-the-combine-document-class} que é colocar o código

\begin{singlespacing}
\begin{lstlisting}
\makeatletter
  \let\document\c@ladocument\begingroup
\makeatother
\end{lstlisting} 
\end{singlespacing}
no preâmbulo do documento, após carregar todos pacotes desejados (após todos \verb+\usepackage{}+).
%  não funciona devidamente, pois quando tenta carregar o pacote que depende do PDF como o \texttt{hyperref} ou pacotes gráficos no modo pdf, gera erros.
%Assim, localize e copie o arquivo \texttt{combine.cls} para onde esta o teu documento tex e efetue a alteração conforme indicado, ou seja, localize a definição de \verb+\c@ladocument+ e comente o primeiro \verb+\endgroup+ que está logo no começo do comando, na linha 232 a distribuição do \TeX{} atual (2023). Com isso, o início da definição deste comando ficará como
%\begin{singlespacing}
%\begin{lstlisting}
%\newcommand{\c@ladocument}{%
%  %\endgroup
%  \let\mainjobname\jobname            %% added
%  \def\c@lmainauxfile{\jobname.aux}   %% added 
%\end{lstlisting} 
%\end{singlespacing}
%Onde \verb+\endgroup+ do começo do comando ficou comentada.
Para gerar o sumário com o pacote \texttt{combinet} que vem junto com a classe combine, deverá ajustar o uso de \verb+\contentsline+ que agora tem $4$ parâmetros. Para isso, deve incluir o código
\begin{singlespacing}
\begin{lstlisting}
\makeatletter
  \renewcommand{\c@laaddcontentsline}[3]{%
    \c@laaddtocontents{#1}{\protect\contentsline{#2}{#3}{\thecolpage}{}}
}
\makeatother
\end{lstlisting} 
\end{singlespacing}

após \verb+\begin{document}+. Note que o combine desativa a inserção de código em \verb+\begin{document}+ e pacotes como \texttt{geometry}, \texttt{babel}, \texttt{hyperref}, etc não efetuam aplicação de ajustes automáticos.
Assim, deve aplicar os comandos adequados logo após o \verb+\begin{document}+.

Vamos supor que artigos a serem incluídos são \texttt{conferencia1.tex}, \texttt{conferencia2.tex}, etc e têm a forma como no Exemplo~\ref{ex:d:conferencia}.

\begin{singlespacing}
\begin{lstlisting}[caption={ex-d-conferencia1.tex},label=ex:d:conferencia]
\documentclass[10pt,a4paper]{article}
% Este arquivo será processado automaticamente por um programa.
% Por favor não altere nada no preamble (até \begin{document} ).
%\usepackage[english,brazil]{babel}
\usepackage[english]{babel}
\usepackage{amsmath}
\usepackage{amssymb} % Ele carrega amsfonts também
\usepackage{enumerate}
% Por favor não inclua outros "packages".
\begin{document}
\title{Título da Conferência 1}
\author{Autor da conferência 1}
\maketitle

Texto da conferência 1
% Incluir bibliografia é opcional. Se decidir incli-lá, use o formato abaixo

%\begin{thebibliography}{99}
%\bibitem{key1} Lamport, L. \emph{LaTeX: A Document Preparation System}, Addison-Wesley, \textbf{1986}.
%\end{thebibliography}
\end{document}
\end{lstlisting}
\end{singlespacing}

Então o caderno, pode ser criado como no Exemplo~\ref{ex:d:caderno}.

\begin{singlespacing}
\begin{lstlisting}[caption={ex-d-caderno.tex},label=ex:d:caderno]
\documentclass[12pt,colclass=book]{combine}
% combine fixa o papel para a4paper
% combine suportam: memoir, book, report, and article

% Para criar o sumário automaticamente
\usepackage{combinet}

% Todos pacotes usados nos artigos a ser importados

\usepackage{amsmath}
\usepackage{amssymb} % it's include amsfonts too
\usepackage{enumerate}
%\usepackage[english,brazil]{babel}
\usepackage[english]{babel}

% packages usados somente no corpo de anais do congresso 
\usepackage{graphicx}
% geometry pode ser usado, mas não consegue alterar o layout antes do \begin{dcocument}
\usepackage{geometry}

\usepackage{hyperref}%requer truque para funcionar no combine

% ATENÇÃO: aplicar este código de bug fix somente depois de incluir todos pacotes desejados.
% correção indicado em
% from https://tex.stackexchange.com/questions/655984/unable-to-combine-multiple-documents-into-a-single-latex-document
\makeatletter
  \let\document\c@ladocument\begingroup%
\makeatother

\sloppy % prefere underfull
% \fussy % prefere overfull

% Mudar o nme do sumário
%\addto\captionsbrazil{\renewcommand{\contentsname}{Sumário\\ (Contents)}}
\addto\captionsenglish{\renewcommand{\contentsname}{Sumário\\ (Contents)}}

% No combine, chamada de \maketitle é obrigatório.
% Assim, quando faz a capa manualmente, deverá desabilitar isto
\makeatletter\c@lmtitlempty\makeatother

\begin{document}
% início da configuração
% seleção de idiomas do babel não aplica automaticamente.no combine 
%\selectlanguage{brazil}
\selectlanguage{english}
% bugfix para combinet: adicona 4o. parâmetro na chamada de \contentsline
% este código deve ficar depois do \begin{document}
\makeatletter% adjustando o comando de escrita do toc
  \renewcommand{\c@laaddcontentsline}[3]{%
    \ifx\@currentHref\@empty
      \c@laaddtocontents{#1}{\protect\contentsline{#2}{#3}{\thecolpage}{}}
    \else % para uso de hyperref
      \phantomsection
      \c@laaddtocontents{#1}{\protect\contentsline{#2}{#3}{\thecolpage}{\@currentHref}}
    \fi
}
% hyperref (preparation)
\IfPackageLoadedTF{hyperref}{% require latex nov/2021
%\AfterBeginDocument{%
    \Hy@AtBeginDocumentHook{}%
    \let\Hy@AtBeginDocumentHook\@undefined
%  }%
}{}
\makeatother
% layout da página usando geometry (não consegue alterar o papel)
\newgeometry{margin=1.5cm}
% fim da configuração

% capa
\begin{titlepage}
\begin{center}
  \thispagestyle{empty}
  \begin{flushleft}
    \noindent
    \unitlength=0.04\textwidth
    \begin{picture}(0,0)(2,33)
      % \includegraphics[width=1.16\textwidth]{fundo}
    \end{picture}
  \end{flushleft}
  {\Large TÍTULO DO CONGRESSO} \\
  HOMENAGEM, ETC.
 
  \vfill
  {\huge Resumos de apresentações \\
  (Abstract of presentations)}
  \vfill
  DATA
  \vfill
  LOCAL
  \vfill
\end{center}
\end{titlepage}

% contra capa
\clearpage
\thispagestyle{empty}
\noindent
{\bfseries Comitê Científico (Scientific Comittee)} \\
Membro 1 (Instituição 1) \\
Membro 2 (Instituição 2)

\

\noindent
{\bfseries Comissão Organizadora (Organizing Comittee)} \\
Membro 1 (Instituição 1) \\
Membro 2 (Instituição 2)

\

 \begin{flushright}
   \begin{minipage}{0.9\textwidth}
   Realização (Hosted by): \\
   INSTITUIÇÕES
   \end{minipage}
 \end{flushright}

\clearpage
\newpage

% Table of contents
% \pagestyle{combine}
\pagestyle{plain}
\tableofcontents
\clearpage

% Importa artigos de conferências
% Usar o comando \import em vez de \input ou \include
\begin{papers}
\import{conferencia1}
\import{conferencia2}
 ...
\end{papers}
\end{document}
\end{lstlisting}
\end{singlespacing}

Note que combine fixa o papel em \texttt{a4paper} e \verb+\newgeometry+ não suporta alteraçao do tamanho de páginas por estar após preâmbulo.

% foi diagramado no papel \texttt{A5} para poder efetuar \texttt{booklet}\index{booklet} (colocar duas páginas em uma, reordenar para grampear no meio) no papel \texttt{A4}. 
%O processo de \texttt{booklet} costuma ser feito no aplicativo como o \texttt{jPDFTWeak} (\url{http://jpdftweak.sourceforge.net/}).

%caderno de resumos 

\section{Folhetos}
Poderá gerar os folhetos do tamanho A4 dobrado em três, usando a claasse \texttt{leaflet}\index{leaflet} que pode ser usado como se fosse a classe \texttt{article}. O folheto é obtido, imprimindo frente/verso virando ao longo da borda maior e dobrando em três.

No Exemplo~\ref{ex17:folder}, foi usado o pacote \texttt{lipsum} para preencher o espaço com texto para ver como fica a aparência do folheto. Note que foi ativado a paginação para ver o fluxo.

% \LTXinputExample{latex-via-exemplos-poster}
\begin{singlespacing}
% \lstinputlisting[caption={ex11-12.tex},label=ex:11-12]{latex-via-exemplos-poster}
\lstinputlisting[caption={ex17-folder.tex},label=ex17:folder]{latex-via-exemplos-folder}
\end{singlespacing}
%
\begin{framed}
\center
\includegraphics[page=1,width=0.7\linewidth]{latex-via-exemplos-folder}
\end{framed}
\begin{framed}
\center
\includegraphics[page=2,width=0.7\linewidth]{latex-via-exemplos-folder}
\end{framed}

\section{Poster soisticado, revistas e brochuras}\label{sec:flowfram}

Para elaborar poster sofisticado, revistas ou brochuras que requrem disposição de elementos de forma específica, poderá usar o pacote \texttt{flowfram}\index{flowfram} que permite definir uma espécie de ``caixa de textoo'' nas páginas e diagramar dentro dele. Estas ``caixas'' são chamadas de \emph{frame}.

O pacote fornece três tipos de frames.
O primeiro delas é o frame estático (``static frame'') que tem o contúdo fixo que pode ser colocado em todas páginas, ou nas páginas indicadas. Por exemplo, o logo, o nome do trabalho e/ou da instituição, etc. podem ser colocados em todas páginas com o frame estático.
O segundo frame é o frame dinâmico (``dynamic frame'') que é similar ao frame estático. A diferença é que no frame estático, o conteúdo é armazenado dentro da caixa \TeX, enquanto que o frame dinâmico, será armazenado dentro do macro (comando), permitindo que o conteúdo possa refletir o contexto de cada página. Por exemplo, se usar o comando \verb+\thepage+ dentro do conteúdo do frame dinâmico, poderá exibir a página atual. Isto permite, por exemplo, criar um cabeçalho personalizado.

Tendo os elementos ``fixos'' pelo frame estático ou dinâmico, agora precisrá acrescentar o conteúdo em si. Os conteúdos do documento são colocados dentro do frame denominado de \emph{flow frame}, que é uma ``caixa'' disposto igualmente em todas páginas ou nas páginas indicadas.

O Exemplo~\ref{} é um exemplo simples do uso do pacote \texttt{flowfram}, mas que diferencia a primeira página do restante.
% \LTXinputExample{latex-via-exemplos-poster}
\begin{singlespacing}
% \lstinputlisting[caption={ex11-12.tex},label=ex:11-12]{latex-via-exemplos-poster}
\lstinputlisting[caption={ex17-flowfram.tex},label=ex17:flowfram]{latex-via-exemplos-flowfram}
\end{singlespacing}
%
\begin{framed}
\center
\includegraphics[page=1,width=0.7\linewidth]{latex-via-exemplos-flowfram}
\end{framed}
\begin{framed}
\center
\includegraphics[page=2,width=0.7\linewidth]{latex-via-exemplos-flowfram}
\end{framed}

 Para criar \texttt{layout} complexos para o uso do pacote \texttt{flowfram} que inclui caixas não retangulares, ou disposição complexas, poderá usar o programa livre e multi plataforma \texttt{flowframtk}\index{flowframtk} disponível no site
\url{http://www.dickimaw-books.com/latex/admin/html/flowfram.shtml}

%Para configuração omplexa como ``caixa'' não quadrada, ou disposição complexa, entre outros, recomenda-se o uso do aplicativo gráfico \hyperlink{flowfram}{\texttt{flowframtk}}.

\clearpage\thispagestyle{empty}\cleardoublepage
\chapter{Para Professores}

Agora será apresentado alguns pacotes úteis aos professores.

\section{Cancelando ou anotando equações}\label{sec:cancel:annotate:equations}

Para cancelar parte das equações, use o pacote \texttt{cancel}\index{cancel}. 

Veja o Exemplo~\ref{ex:e:cancel} para ver o uso.

\begin{ltxlisting}[caption={ex-e-cancel.tex},label=ex:e:cancel]
\renewcommand{\CancelColor}{\color{red}} %cor de cancelamento pode ser alterado
\[x+\cancel{2y} = z \]
\[x+\bcancel{2y} = z \]
\[x+\xcancel{2y} = z \]
\[x+\cancelto{0}{2y} = z \]
\end{ltxlisting}


Para efetuar anotações sobe equações, usa-se o pacote \texttt{annotate-equations}\index{annotate-equations}. Veja o Exemplo~\ref{ex:e:annotate-equations} para o uso.

\begin{ltxlisting}[caption={ex-e-annotate-equations.tex},label=ex:e:annotate-equations]
\begin{equation*}
\eqnmark[blue]{node1}{\int}
\eqnmarkbox[red]{node2}{f(x)}
\tikzmarknode{node3}{dx}
\end{equation*}
\annotate[yshift=1em]{}{node1}{Símbolo de integral}
\annotate[yshift=-0.5em]{below,left}{node2}{função}
\annotate[yshift=-0.5em]{below,right}{node3}{diferencial, indicando a variável de integração}
\end{ltxlisting}

Observe que, para o posicionamento correto de anotação, requer duas compilações seguidas.

\section{Lista de exercícios e provas}

Nas provas ou listas de exercícios, os itens podem ser curtas.
Neste caso, é aconselhável que coloque mais de um item por linha, mas mantendo o alinhamento.

Existem vários pacotes para elaboração de lista de exercícios e provas.
Aqui será apresentado uma delas.
%O pacote \texttt{exsheets}\index{exsheets} implementa o ambiente \texttt{question}\index{question} para produzir questionário enumerado 
O pacote \texttt{xsim}\index{xsim} é sucessor de \texttt{exsheets}\index{exsheets}.
Este pacote implementa o ambiente \texttt{exercise}\index{exercise} para produzir exercícios enumerados (e o ambiente \texttt{solution} para escrever soluções)
e o pacote \texttt{tasks}\index{tasks} permite colocar vários itens enumeradas e alinhadas em uma única linha (como é feito pela combinação dos pacotes \texttt{enumitem} e \texttt{tabto}).

%Veja o Exemplo~\ref{ex:e:exsheets}.
%
%\begin{singlespacing}
%%\begin{LTXexample}[pos=b,caption={ex12-10.tex},label=ex:12-10]
%\begin{lstlisting}[caption={ex-e-exsheets.tex},label=ex:e:exsheets]
%\documentclass[12pt,a4paper]{article}
%\usepackage[T1]{fontenc}
%%\usepackage[utf8]{inputenc} % não é mais necessarioo
%\usepackage[brazil]{babel}
%\usepackage{tasks} % cria lista curta
%\usepackage{exsheets} % cria questoes
%\SetupExSheets[question]{type=exam} % configurando
%
%\begin{document}
%% O ambiente question produz questões.
%
%\begin{question}
%  Qual item não é metal?
%   % itens da questão será produzido pelo ambiente tasks
%  \begin{tasks}(4) % 4 itens por linha
%    \task ferro
%    \task carbono
%    \task cobre 
%    \task mercúrio
%  \end{tasks}
%\end{question}
%
%% Alterando a enumeração de tasks
%\settasks{
%  counter-format=(tsk[r]), % entre parenteses, em romano minusculo
%  label-width=4ex % largura reservada para rótulo
%}
%
%\begin{question}
%  O que é mamífero?
%  \begin{tasks}(2) % 2 itens por linha
%    \task Animais que botam ovos.
%    \task Animais que amamentam.
%    \task Animais que voam.
%    \task Animais com 4 patas.
%  \end{tasks}
%\end{question}
%\end{document}
%\end{lstlisting}
%%\end{LTXexample}
%\end{singlespacing}
%%
%\begin{ltxlistingout}
%\begin{question}
%  Qual item não é metal?
%
%%  \begin{tasks}(4) % 4 itens por linha coloca ultimo item na linha seguinte
%% Isto acontece somente dentro do minipage e com o uso do geometry   
%  \bigskip  
%~~ a) ferro \hfill
%b) carbono \hfill
%c) cobre \hfill
%d) mercúrio \hfill ~
%\end{question}
%
%% Alterando a enumeração de tasks
%\settasks{
%  counter-format=(tsk[r]), % entre parenteses, em romano minusculo
%  label-width=4ex % largura reservada para rótulo
%}
%
%\begin{question}
%  O que é mamífero?
%  \begin{tasks}(2) % 2 itens por linha
%    \task Animais que botam ovos.
%    \task Animais que amamentam.
%    \task Animais que voam.
%    \task Animais com 4 patas.
%  \end{tasks}
%\end{question}
%\end{ltxlistingout}

Veja o Exemplo~\ref{ex:e:xsim}.

\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex12-10.tex},label=ex:12-10]
\begin{lstlisting}[caption={ex-e-exsheets.tex},label=ex:e:xsim]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}
\usepackage{tasks} % cria lista curta
\usepackage{xsim} % cria exercicios (e respostas)
% traduzindo
\DeclareExerciseTranslation{brazil}{exercise}{Exercício}
\DeclareExerciseTranslation{brazil}{exercises}{Exercícios}
% necessário se for colocar soluções também
\DeclareExerciseTranslation{brazil}{solution}{Solução}
\DeclareExerciseTranslation{brazil}{solutions}{Soluções}

\begin{document}
% O ambiente exercise produz questões.

\begin{exercise}
  Qual item não é metal?
   % itens da questão será produzido pelo ambiente tasks
  \begin{tasks}(4) % 4 itens por linha
    \task ferro
    \task carbono
    \task cobre 
    \task mercúrio
  \end{tasks}
\end{exercise}

% Alterando a enumeração de tasks
\settasks{
  label=(\alph*), % entre parenteses, em romano minusculo
  label-width=4ex % largura reservada para rótulo
}

\begin{exercise}
  O que é mamífero?
  \begin{tasks}(2) % 2 itens por linha
    \task Animais que botam ovos.
    \task Animais que amamentam.
    \task Animais que voam.
    \task Animais com 4 patas.
  \end{tasks}
\end{exercise}
\end{document}

\end{document}
\end{lstlisting}
%\end{LTXexample}
\end{singlespacing}
%
\begin{ltxlistingout}
\subsection*{Exercício 1}
  Qual item não é metal?

%  \begin{tasks}(4) % 4 itens por linha coloca ultimo item na linha seguinte
% Isto acontece somente dentro do minipage e com o uso do geometry   
  \bigskip  
~~ a) ferro \hfill
b) carbono \hfill
c) cobre \hfill
d) mercúrio \hfill ~

% Alterando a enumeração de tasks
\settasks{
  label=(\alph*), % entre parenteses, em romano minusculo
  label-width=4ex % largura reservada para rótulo
}

\subsection*{Exercício 2}
  O que é mamífero?
  \begin{tasks}(2) % 2 itens por linha
    \task Animais que botam ovos.
    \task Animais que amamentam.
    \task Animais que voam.
    \task Animais com 4 patas.
  \end{tasks}
\end{ltxlistingout}

\section{Com e sem respostas}
As vezes, queremos gerar versões com resposta e outro sem, ou que resposta fique no final do documento, mas que seja diagramado junto as questões.
Neste caso, podemos usar o pacote \texttt{answers}\index{answers} (existem vários pacotes para tal propósito).
Note que o pacote \texttt{xsim} pode fazer mesma tarefa, mas o pacote \texttt{answers} pode ser combinados com ambientes diversos, como com o ambiente gerado pelo \verb+\newtheorem+.
Veja o Exemplo~\ref{ex:e:answers}.

%%\setcounter{lstorichapter}{\value{chapter}}
%\setcounter{lstorisection}{\value{section}}
%%\setcounter{chapter}{0}
%\setcounter{section}{0}
\let\orithesection\thesection
\renewcommand{\thesection}{\arabic{section}}
%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex12-11.tex},label=ex:12-11,preset=\let\addcontentsline\emptyaddcontentsline]
\begin{ltxlisting}[caption={ex-e-answers.tex},label=ex:e:answers]
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}

\usepackage{answers} % resposta no arquivo separado
%\usepackage[nosolutionfiles]{answers} % resposta no lugar

\usepackage{amsthm}

% "sol" é ambiente a ser usado. "Solution" não deve ser modificada. A resposta sera gravada no arquivo referenciado internamente por "ans"
\Newassociation{sol}{Solution}{ans}
% \renewcommand{\solutionextension}{ans}

\newtheorem{ex}{Exercicío}[section] % ambiente de exercicios

\begin{document}
% inicia a gravacao da resposta no arquivo "ans" cuja nome externo e \jobname-ans (\jobname e nome do arquivo atual)
\Opensolutionfile{ans}[\jobname-ans]

\section{Problemas}

\begin{ex}
Primeiro exercício.
\begin{sol}
Solução do primeiro exercício.
\end{sol}
\end{ex}

\begin{ex}
Segundo exercício.
\begin{sol}
Solução do segundo exercício.
\end{sol}
\end{ex}
\Closesolutionfile{ans} % finaliza a gravação das respostas

\section{Soluções}
\Readsolutionfile{ans} % colocar solucoes do "ans" aqui.
\end{document}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}
%%\setcounter{chapter}{\value{lstorichapter}}
%\setcounter{section}{\value{lstorisection}}
\let\thesection\orithesection
%\let\addcontentsline\oriaddcontentsline

%shortlst não, por causa da licenca.

%\usepackage{tasks}.
%\usepackage{exsheets} usar o sucessor xsim
%\usepackage{answers} % put answer in the separated file
%%\usepackage[nosolutionfiles]{answers} % put answer in the place

\clearpage\thispagestyle{empty}\cleardoublepage
\chapter{Para Projetos}

Aqui será tratado de pacotes úteis ao desenvolvimento de documentos grandes como no caso de livros.

\section{Pacote \texttt{standalone}}
Quando cria muitas ilustrações e diagramas, as vezes deixamos estas ilustrações como arquivo separado para compilar e ajustar mais rapidamente.
Por exemplo, cada ilustração em \texttt{tikz} pode estar em um único arquivo para que o documento principal inclua eles.
Neste caso, não podemos usar \verb+\input+, nem \verb+\include+ pois a ilustração tem a sua própria classe de documento.
Neste caso, podemos usar a classe \texttt{standalone}\index{standalone}.
Cada ilustração de \texttt{tikz} usará a classe \texttt{standalone} em vez do \texttt{article} ou similar.
Assim, podemos compilar e ajustar a ilustração quando bem entender.
No documento principal, use o pacote \texttt{standalone}\index{standalone} e demais pacotes que arquivos inclusos podem precisar.
Para incluir a ilustração feito pela classe \texttt{standalone}, basta usar \verb+\input+\index{input@\verb+\input+} ou similar.

A figura diagramado com a classe \texttt{standalone} é como do Exemplo~\ref{ex:f:standalone:fig}.

%\begin{singlespacing}
%\begin{LTXexample}[pos=b,caption={ex12-12-fig.tex},label=ex:12-12:fig]
\begin{ltxlisting}[caption={ex-f-standalone-fig.tex},label=ex:f:standalone:fig]
\documentclass[12pt,a4paper]{standalone}
\usepackage{tikz}
\usetikzlibrary{patterns}
\begin{document}
\begin{tikzpicture}
\draw[pattern=north east lines] (-1,-1) rectangle(1,1) (0,0) circle(1);
\end{tikzpicture}
\end{document}
\end{ltxlisting}
%\end{LTXexample}
%\end{singlespacing}

O documento que usa a figura, usa o pacote \texttt{standalone} e usa o \verb+\input+ para incluir o arquivo de figura, como no Exemplo~\ref{ex:f:standalone}.

\begin{singlespacing}
\begin{lstlisting}[caption={ex-f-standalone.tex},label=ex:f:standalone]
\documentclass[12pt,a4paper]{article}

\usepackage{standalone} % para incluir arquivos diagramado com standalone

\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}

\usepackage{amsmath}
\usepackage{amssymb}

% pacotes usados pelo arquivo a ser incluido
\usepackage{tikz}
\usetikzlibrary{patterns}

\begin{document}
Para incluir o arquivo diagramado com classe \texttt{standalone}, basta usar o \verb+\input+.

\begin{figure}[hbp!]
\center
\input{ex-f-standalone-fig}
\caption{Inclusão de figuras}
\end{figure}

\end{document}
\end{lstlisting}
\end{singlespacing}
%
%\begin{framed}
\begin{ltxlistingout}
Para incluir o arquivo diagramado com classe \texttt{standalone}, basta usar o \verb+\input+.
\begin{center}
\begin{tikzpicture}
\draw[pattern=north east lines] (-1,-1) rectangle(1,1);
\draw[fill=white] (0,0) circle(1);
\end{tikzpicture}

{Figura 1: Inclusão de figuras}
\end{center}
\end{ltxlistingout}
%\end{framed}

\section{Dividindo o documento em vários arquivos}
Para dividir o documento em vários arquivos, poderá usar o \verb+\include+, mas ele não é eficiente, pois os pedaços de documentos não podem ser compilados separadamente.
O pacote \texttt{subfiles}\index{subfiles} resolve este problema.
O uso de \texttt{subfiles} é similar ao do \texttt{standalone}, mas em vez de ignorar o \texttt{preamble} dos arquivos inclusos, os arquivos a serem incluídos usam o \texttt{preamble} do documento principal. 
Assim, como o \texttt{standalone}, o documento principal deve conter todos os pacotes e definições que suas partes vão precisar, mas não há necessidade de colocar tais pacotes e definições no arquivo de partes.
A estrutura do documento principal com \texttt{subfiles} é algo como do Exemplo~\ref{ex:f:subfiles:principal}.
\begin{singlespacing}
\begin{lstlisting}[caption={ex-f-subfiles-principal.tex},label=ex:f:subfiles:principal]
\documentclass[12pt,a4paper,oneside]{book}
\usepackage{subfiles} % para incluir partes do documento

\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}
\usepackage{amssymb,amsmath}
\usepackage{tikz}
\usetikzlibrary{patterns}
...
\begin{document}
...
\subfiles{ex-f-subfiles-prefacio}
\subfiles{ex-f-subfiles-capitulo1}
\subfiles{ex-f-subfiles-capitulo2}
\subfiles{ex-f-subfiles-capitulo3}
...
\end{document}
\end{lstlisting}
\end{singlespacing}
Exceto pelo uso do pacote \texttt{subfiles} e o comando \verb+\subfiles+\index{subfiles@\verb+\subfiles+} em vez do \verb+\include+, tem nada de especial.
Cada pedaço do documento tem a forma como do Exemplo~\ref{ex:f:subfiles:capitulo1}.
\begin{singlespacing}
\begin{lstlisting}[caption={ex-f-subfiles-capitulo1.tex},label=ex:f:subfiles:capitulo1]
\documentclass[ex-f-subfiles-principal]{subfiles}
\begin{document}
...
\end{document}
\end{lstlisting}
\end{singlespacing}

Note que a classe de documento é \texttt{subfiles}\index{subfiles} e sua opção é o nome do arquivo principal.
Como o \texttt{preamble} será obtido do documento principal, não há \texttt{preambles} e já começa a escrever o documento no ambiente \texttt{document} normalmente.

Com isso, podemos compilar partes do documento, assim como todo o documento.

%standalone e subfiles

\section{`'Todo'' (tarefas)}
Para inserir ``todo'' (tarefas a fazer) no documento La\TeX, existe alguns pacotes. Aqui, veremos somente o \texttt{todonotes}\index{todonotes}. O comando básico deste pacote é o \verb+\todo{}+\index{todo@\verb+\todo+} que insere anotação de tarefas na área lateral do documento, correspondente a posição desejada. O comando \verb+\todo+ aceita opções adicionais. Por exemplo, \verb+\todo[inline]{}+ adiciona nota de tarefa dentro do documento, em destaque, em vez da área lateral. Para criar lista de tarefas, usa-se o comando \verb+\listoftodos+.
Veja o Exemplo~\ref{ex:f:todonotes}.

\begin{singlespacing}
\lstinputlisting[caption={ex-f-todonotes.tex},label=ex:f:todonotes]{latex-via-exemplos-todonotes}
\end{singlespacing}
%
Documento com as notas de tarefas é como segue.
\begin{framed}
\center
% Para recortar, use opção trim={left bottom right top},clip
\includegraphics[page=1, width=0.7\linewidth, trim={{0.2\linewidth} {\linewidth} {0.1\linewidth} {0.20\linewidth}}, clip]{latex-via-exemplos-todonotes}
\end{framed}


% \clearpage
\clearpage\thispagestyle{empty}\cleardoublepage
%\phantomsection
%\addcontentsline{toc}{chapter}{Alguns Comentários Finais}
\chapter{Alguns Aplicativos Auxiliares para Usuário de \LaTeX}
Para melhor aproveitamento do \LaTeX, costumam usar diversos aplicativos auxiliares para melhorar o seu uso. Aqui, listaremos alguns desses aplicativos populares gratuitos.

\section{Editor para \LaTeX\index{editor para \LaTeX}}

\subsection*{TeXMaker/TeXStudio\index{editor para \LaTeX!TeXMaker/TeXStudio}}

site: \url{https://www.xm1math.net/texmaker/}

site: \url{https://www.texstudio.org/}

O \texttt{TeXMaker} é um editor de código fonte do \LaTeX{} multiplataforma leve e eficiente. 
Ele apresenta painel de inserção de símbolos matemáticos e visualizador de PDF integrado. Apesar de não vir com o menu para chamar \texttt{biber} usado no Bib\LaTeX, pode ajustar a chamada de \BibTeX{} ou acrescentar no menu personalizado (menu ``usuário'').

O \texttt{TeXStudio}, por sua vez, é um ``fork'' do \texttt{TeXMaker}, incorporando mais recursos. Isto torna um pouco mais pesado, mas apresenta a capacidade de compilar um trecho do código no tempo real, mostrando na janela de edição.
Para isso, basta selecionar um trecho, e no menu aberto pelo botão direito, escolher ``Preview selection/parentheses''.


\subsection*{LyX\index{editor para \LaTeX!\LyX}}

site: \url{https://www.lyx.org/}

site: \url{https://sourceforge.net/projects/lyxwininstaller/}

O \LyX{} é um editor com aparência similar a aplicativos Office (MS Office/Libre Office), mas que compila o documento em \LaTeX. Ele também importa/exporta documentos \LaTeX.

O instalador de \LyX{} para \texttt{MS Windows} pode encarregar de instalar o \texttt{MikTeX} básico, caso tenha conexão com a internet, mas também pode deixar o \texttt{MikTeX} pré-instalado. Ele também instala automaticamente os pacotes adicionais necessários.

No menu de ajuda, encontrará o tutorial e guia de usuário.
O \LyX{} foi desenvolvido para os usuários de \LaTeX. Como o usuário de \LaTeX{} ganha desempenho significativo em relação ao usuário comum, é altamente recomendado que estude o \LaTeX.
Pra ativar o verificador ortográfico no tempo real, entre em ``tools->preferences'', e em
``[language settings]->[spell checker]'', selecione ``enchant'' ou similar para ``spell check engine'' e cheque o ``[ ]spell check continuouslly''.

\begin{remark}
O \texttt{Windows} costuma não vir com visualizador de \texttt{PDF} instalados. Apesar de editores para \LaTeX{} costuma vir com visualizador de \texttt{PDF} integrados, é bom ter um visualizador dedicado (por exemplo, \LyX{} não vem com visualizador de \texttt{pdf} dedicado). Uma das opções é instalar o \texttt{Sumatr PDF} (\url{https://www.sumatrapdfreader.org/}) que é muito leve. Ele não tem recursos de preenchimento de formulários ou acrescentar notas como o \texttt{Adobe Reader} (\url{https://get.adobe.com/br/reader/}), mas atende a maioria das necessidades.
\end{remark}

\subsection*{TeXWorks\index{TeXWorks} e Gummi\index{Gummi}}

\url{https://www.tug.org/texworks/}

\url{https://alexandervdm.github.io/gummi/} (somente linux)

O \texttt{TeXWorks} é um editor multiplataforma, leve e simples para \LaTeX. Apesar de ser desenvolvido para facilitar o uso pelos inciantes, não inclui o painel de inserção de símbolos matemáticos e navegação na estrutura dos docuumentos.

O \texttt{Gummi} é um editor leve para linux, com capacidade de compilação instantânea. Além de mostrar o documento compilado enquanto digita, ele usa o diretório temporário para compilar, mantendo a pasta do documento livre de arquivos intermediários que o \TeX{} costuma criar durante a compilação.
Ele é indicado para documentos menores sem muita complexidade por não conseguir desativar a compilação instantânea, assim como ausẽncia do painel de inserção de símbolos matemáticos e navegação na estrutura de documentos.

\section{Editor gráfico\index{editor gráfico}}
Editores gráficos ajudam a elaboração de ilustrações e similares.

\subsection*{InkScape\index{editor gráfico!InkScape}}

site: \url{http://www.inkscape.org/}

\texttt{InkScape} é um editor gráfico vetorial para criar ilustrações no estilo do \texttt{Corel Draw} (comercial) ou \texttt{Adobe Illustrator} (comercial). 
Ele é bem mais leve e fácil de ser usado do que os seus concorrentes.
Pode ser usado para criar uma ilustração nova, ou retocar o arquivo \texttt{pdf} já existente.

A versão atual permite instalar plugin para inserir fórmulas \LaTeX{} diretamente na figura. 
Note que nem todo efeito pode ser salva no \texttt{eps} e também no \texttt{pdf}.
Por isso, é necessário checar o \texttt{eps} ou \texttt{pdf} quando criando.

O manual pode ser acessado pelo menu de ajuda, sem precisar ficar procurando na internet.

Quando salva como \texttt{PDF}, selecione ``usar tamanho do objeto exportado'' na opção ``tamanho da saída de página''.
Também ajuste o ``resolução para renderização (dpi)'' para mínimo de 300 em ''[v] Efeitos de filtro de renderização''.
Se quer deixar o tamanho do papel já ajustado para tamanho da figura, selecione toda figura (<ctrl>A) e entre em "file->document propries".
No "custom size", clique em [fit page to selection].

Para inserir fórmulas diretamente na figura, instale o \texttt{textext} (\url{https://textext.github.io/textext/}).
%Veja o site \url{http://pav.iki.fi/software/textext/index.html} para detalhes.
%No caso de MS Windows, o instalador deste plugin abaixará seus dependentes, mas se quer instalar offline (sem a conexão da rede), "necessary library files from pyGTK" mencionado pelo site, deve estar na mesma pasta do instalador de textext.
%Para que \texttt{textext} funcione no MS Windows, é necessário que \texttt{ghost script} e \texttt{pstoedit} estejam funcionando corretamente, além do \texttt{MikTeX} (ou outro TeX com pdflatex).
%A fórmula é inserido ou editada pelo "effects->tex text".
%Não confundir com "effects->render->latex formula" na qual não permite reedição (apenas insere).
%No caso de inserir fórmulas, há diferença em inserir direto na figura ou pelo pacote \texttt{psfrag} na figura \texttt{eps}. 
%A fórmula inserida diretamente na figura terá tamanho diferente do texto, conforme ajusta o tamanho da figura.
%No caso de usar o \texttt{psfrag}, a fórmula é inserida durante a compilação do documento, sempre mantendo tamanho de letras coerente com o texto, independente do ajuste de tamanho da figura. Para usar \texttt{psfrag}, não esqueça de tirar o check do "convert texts to path" na hora de salvar como \texttt{eps}.

Na versão atual, existe a opção de separar o texto para ser processado diretamente no \LaTeX. 
Para isso, basta escolher ``Omitir texto no \texttt{PDF} e criar um arquivo \LaTeX'' na opção de ``Orietnação do teto''.
Assim, ele criará um arquivo \texttt{tex} para cada \texttt{pdf}. No documento do \LaTeX, insere o arquivo \texttt{tex} com o comando \verb+\input+. Com esta opção, o comando \LaTeX{} pode ser usado diretamente na figura que será processado quando gera o documento no \LaTeX.

\subsection*{Dia\index{editor gráfico!Dia}}

site: \url{http://projects.gnome.org/dia/}

Editor de diagramas, similar ao comercial \texttt{Microsoft Visio}.
Diagramas costumam usar peças prontas, assim como curvas que se quebram no meio, o que é recomendável usar um editor próprio. O \texttt{Dia} é feito especialmente para editar diagramas, mas não há atualização recente.

Se for o caso de criar ilustrações, use o \texttt{InkScape}.

\subsection*{GIMP\index{editor gráfico!GIMP}}

site: \url{http://www.gimp.org/}

É o editor de imagem como o \texttt{Adobe Photoshop} (comercial) ou \texttt{Corel Photo Paint} (comercial). O ``GIMP Help'' é uma espécie de manual que precisa ser abaixado/instalado a parte devido ao seu tamanho.
Ainda não há versão traduzida para português deste manual.

Se for apenas fazer pequeno retoque e converter formato da imagem (para \texttt{jpg} e \texttt{png}, por exemplo), poderá usar o aplicativo mais leve.

\subsection*{LaTeX Draw\index{editor gráfico!LaTeX Draw}}

site: \url{http://latexdraw.sourceforge.net/}

Editor escrito em java, especializado para pacote \texttt{pstricks} do \LaTeX.
Ele permite abrir muitas figuras com \texttt{pstrick}, editado manualmente ou gerado pelo outro programa. 
Como vários programas tais como \texttt{gnuplot}, \texttt{geogebra}, \texttt{inkscape}, etc podem salvar no formato \LaTeX{} com \texttt{pstrick}, poderá usar este editor para retoques.
Note que o ajuste de tamanho da figura deve ser feito no editor e não no documento, para ter espessura da linha inalterada, mas se entender um pouco do \texttt{pstrick}, 
poderá editar o código da figura exportada para deixar escalável dentro do documento (sem alterar a espessura).
Como \texttt{pstrick} é um pacote desenvolvido para \texttt{dvi/ps}, precisará usar o pacote adicional \texttt{pstool} (não é \texttt{pstools}), \texttt{pst-pdf} ou similar, quanto pretende compilar diretamente para \texttt{PDF} através do PDF\LaTeX, \XeLaTeX{} ou Lua\LaTeX.
Uma maneira clássica de gerar \texttt{PDF} sem tais pacotes é usar o LaTeX=>dvips=>ps2pdf.

\subsection*{FlowFramTk\index{editor gráfico!FlowFramTk}}

site: \url{http://www.dickimaw-books.com/apps/flowframtk/}

O \hypertarget{flowframtk}{\texttt{FlowFramTk}}, anteriormente conhecido como \texttt{jpgf Draw} é escrito em java e exporta figura no formato \LaTeX{} usando o pacote \texttt{pgf} (usado pelo pacote beamer).
O pacote \texttt{pgf} tem uma grande vantagem de poder ser compilado tanto para \texttt{dvi} como para \texttt{pdf} (por isso que o beamer normalmente compilado pelo pdflatex pode ser compilado com latex quando não usa o recurso específico do PDF). \texttt{FlowFramTk} armazena a figura no formato próprio e permite exportar como \texttt{pgf}, mas parece que não tem recurso de importação.
%Como não sei ajustar a escala da figura criado pelo pacote \texttt{pgf}, não sei se permite alterar a escala dentro do documento sem comprometer a espessura das linhas.

Um dos recursos adicionais interessantes do \texttt{FlowFramTk} é a capacidade de gerar modelo de poster e material publicitário usando o pacote consolidado \texttt{flowfram}. O pacote \texttt{flowfram} permite criar caixas de texto com rótulo e diagramar dentro dele de forma simples (parece ser um dos mais simples desta categoria).
No entanto, criar layout complexo é um pouco trabalhoso.
O \texttt{FlowFramTk} permite desenhar o layout para usar com \texttt{flowfram}, o que simplifica o trabalho.

\subsection*{TikZit\index{editor gráfico!TikZit}}

site: \url{https://tikzit.github.io/}

Editor gráfico que exporta para o formato \texttt{tikz} (parte do pacote \texttt{pgf}).
Ele permite criar facilmente os diagramas em \texttt{tikz} através da interface gráfica.


\section{Gráfico científico\index{gráfico científico}}

\subsection*{Asymptote\index{gráfico científico!Asymptote}}

site: % \url{https://sourceforge.net/projects/asymptote/}
\url{https://asymptote.sourceforge.io/}


O \texttt{Asymptote} é uma linguagem/interpretador gráfico 2D/3D inspirado em \texttt{MetaPost} que permite produzir gráficos em \texttt{Post Script}, \texttt{PDF} e \texttt{SVG}.

\subsection*{Geogebra\index{gráfico científico!Geogebra}}

site: \url{http://www.geogebra.org/}

Ele é um aplicativo de geometria dinâmica, mas permite incorporar gráficos de funções. Além de exportar para ser colocado na página web, permite exportar para \texttt{eps/pdf/pstrick/tikz}. 
%Como o texto da figura em \texttt{eps} ficará desenhado, não é possível usar o \texttt{psfrag}.
Para retocar texto/fórmulas, exporte no formato \LaTeX{} como \texttt{pstrick} ou \texttt{tikz}. 

\subsection*{gnuplot\index{gráfico científico!gnuplot}}

site: \url{http://www.gnuplot.info/}

Este aplicativo permite gerar gráfico de boa qualidade a partir do dado armazenado no arquivo texto, mas pode gerar gráfico a partir das expressões também. 
Poderá escolher diversos formatos de exportação, dependendo do objetivo.
Como ele é um interpretador, precisará aprender alguns comandos básicos para gerar gráfico de boa qualidade.

\subsection*{Maxima\index{gráfico científico!Maxima}}

site: \url{http://maxima.sourceforge.net/}

Álgebra computacional como \texttt{Maple} (comercial) e \texttt{Mathematica} (comercial), implementando a linguagem \texttt{MacSyma}.
Costuma ser usado com a interface gráfica \texttt{WxMaxima} (\url{http://wxmaxima-developers.github.io/wxmaxima/}) que permite efetuar diversas tarefas sem saber a linguagem, inclusive gerar gráficos 2D e 3D das funções.
%Ele ainda não suporta traçar as curvas de níveis ou superfícies de nível.

\textbf{Observação:} No caso de \texttt{MS Windows}, o instalador do \texttt{Maxima} instala o \texttt{WxMaxima} por padrão.
%Para o tutorial em português, veja a seção de maxima.

\subsection*{GNU R\index{gráfico científico!GNU R}}

site: \url{http://www.r-project.org/}

\texttt{GNU R} é um aplicativo popular especial para estatística e implementa a linguagem \texttt{R}, bem parecido com a linguagem \texttt{S}.
Ele produz ótimos gráficos, mas requer conhecimento de um pouco da linguagem \texttt{R}.
Uma das interfaces gráficas recomendados é o \texttt{RKWard} e \texttt{R Studio}, mas para quem quer usar com o menu como no \texttt{MiniTab} (comercial), poderá instalar o \texttt{Deducer} (não testado).

site do RKWard: \url{https://rkward.kde.org/}

site do R Studio: \url{http://www.rstudio.org/}

site do Deducer: \url{http://www.deducer.org/}

\subsection*{GNU Octave e outros clones do MatLab\index{gráfico científico!GNU Octave}}

gnu octave: \url{https://octave.org/}

scilab: \url{http://www.scilab.org/}

% freemat: \url{http://freemat.sourceforge.net/}

Para quem entende um pouco da linguagem \texttt{MatLab}, o \texttt{GNU Octave} e \texttt{SciLab} podem ser usados para gerar gráficos matemáticos no formato vetorial.
O \texttt{GNU Octave} é mais popular.
% O emergente \texttt{FreeMat} é simples de instalar e usar, mas ainda perde dos concorrentes em termos de recursos e não é atualizado por longo período de tempo.

\subsection*{LabPlot e outras imitações do Microcal Origin\index{gráfico científico!LabPlot}}

LabPlot: \url{https://labplot.org/}

SciDAVis: \url{https://github.com/SciDAVis/scidavis} % \url{http://scidavis.sourceforge.net/}

RLPlot: \url{http://rlplot.sourceforge.net/}

O \texttt{LabPlot} é um aplicativo multi plataforma de código aberto para visualização (criar gráficos) e análise de dados.

O \texttt{SciDAVis} é programa multiplataforma para análise de dados e criação de gráficos como o popular \texttt{Microcal Origin} (comercial).
O gráfico é de boa qualidade e permite exportar em diversos formatos, incluindo o formato vetorial \texttt{eps}.
Como \texttt{SciDaVis} não é atualizado algum tempo (2025), \texttt{LabPlot} que continua tendo suporte é mais recomendado.

O \texttt{RLPlot} é bem mais simples, mas tem recurso de adicionar texto e linhas poligonais no gráfico gerado.

%Existe também o QtiPlot (gratuito para linux) que é uma espécie de clone do Microcal Origin que permite até importar o arquivo do Microcal Origin 7.5, mas a versão para MS Windows é comercial (ou a versão demo limitada).
%O FitYK (gratuito para linux) é desenvolvimento especialmente para ajuste de curvas, mas versão para MS Windows é comercial.
%

\textbf{Observaçao:} O aplicativo gratuito e multiplataforma \texttt{FitYK} (\url{http://fityk.nieto.pl/}) é desenvolvido especialmente para o ajuste de curvas que é interessante, apesar de não ser clone de \texttt{Microcal Origin}.


\subsection*{LibreCAD\index{gráfico científico!LibreCAD}}

site: \url{http://librecad.org/}

LibreCAD é un CAD 2D de código aberto e é multiplataforma.

\subsection*{Outros}
Nem sempre os aplicativos matemáticos tem a habilidade de exportar gráficos vetoriais, como no caso de \texttt{MathMod} (sucessor do \texttt{k3dsurf}).
Isto ocorre devido a dificuldade ou impossibilidade de criar gráfico vetorial de alguns tipos específicos de imagens matematicos obtidos. 
Neste caso, exporte a figura com resolução de 600DPI quando tem os traços bem definidos (desenho técnico) ou 300DPI no caso de traços estar menos definidos (como imagem no estilo de fotos), o que é recomendado para impressão.
Se for ampliar dentro do documento, a escala da ampliação deve ser considerada, exportando para ter o mínimo de DPI após ampliação.

\begin{itemize}
\item \texttt{MathMod}\index{gráfico científico!MathMod} (sucessor do \texttt{k3DSurf} para linux/win): Plotador de superfícies tanto a paramétrica como a implícita, usando interface gráfica amigável. 

Site: \url{http://sourceforge.net/projects/mathmod/}

\item \texttt{Fractint}\index{gráfico científico!FractInt} (multi plataforma): Um dos mais poderosos softwares para plotar fractais. Por ser baseado em \texttt{DOS}, a interface gráfica não é amigável na versão estável. A versão de teste contém a implementação para \texttt{Windows}.

Site: \url{http://www.fractint.org/}

\item \texttt{Graphvis}\index{gráfico científico!Graphvis} (multiplataforma). Especial para produzir grafos, usando a linguagen \texttt{dot}.

Site: \url{https://www.graphviz.org/}
    
\end{itemize}
    
\section{Alguns convertores\index{convertor}}    
    
\subsection*{Image Magick\index{convertor!Image Magick}}

site: \url{http://www.imagemagick.org/}

Se instalou o \LyX, já deve ter instalado.
Este convertor é para usuário mais avançado, útil para conversão em lotes.
Ele converte praticamente de qualquer formato.
O comando é \texttt{convert}, mas usuário de \texttt{MS Windows} deve tomar cuidado 
pois a ferramenta do \texttt{MS Windows} para converter sistema de arquivo \texttt{FAT} para \texttt{NTFS} também se chama \texttt{convert}.
Assim, deverá assegurar de que está chamando \texttt{convert} do \texttt{Image Magick}, como chamar especificando o caminho.

No \texttt{Linux}, a opção de conversão para \texttt{EPS,PDF} pode vir desativados por padrão, o que requer ativação manual.

Exemplo:

\texttt{convert img.jpg img.pdf}

converterá no formato \texttt{pdf} e

\texttt{convert img.jpg eps2:img.eps}

Criará \texttt{eps} compactado.

% (se não colocar o \texttt{eps2}, gerará \texttt{eps} grande por usar \texttt{PS} de nível 1.

\subsection*{sam2p\index{convertor!sam2p}}

site: \url{https://github.com/pts/sam2p/releases}

Converte imagem bitmap para \texttt{eps} ou \texttt{pdf}.
Atualmente o \texttt{InkScape} pode ser usado para converter para \texttt{EPS/PDF},
mas pode ser útil para usuários avançados.

\texttt{sam2p figura.jpg figura.pdf}

converterá para \texttt{pdf}.

%Usando a opção correta no comando, poderá gerar arquivos pequenos.
%Note que ele é único convertor conhecido até o momento que permite
%criar eps com compressão usando o postscript de nivel 1.
%Descompacte os arquivos abaixados e copie para local desejado.
%No caso de MS Windows, é recomendável que coloque a pasta de sam2p no caminho 
%(variavel PATH do sistema) para facilitar a execussão. 
%Outra opção é colocar na pasta do MikTeX (c:\textbackslash arquivos de programas\textbackslash miktex 2.7\textbackslash miktex\textbackslash bin) que já deve estar no PATH.
%%A versão com GUI não era usável em 2008, mas pode checar o site dele de vez em quando para verificar se saiu a versão usável.
%
%Exemplo
%
%sam2p -c:pdf figura.jpg figura.pdf
%
%converte para pdf e
%
%sam2p -c:jpeg figura.jpg figura.eps
%
%converte jpeg para eps, mantendo compressão jpeg.

%\subsection*{jpeg2ps}
%
%site: \url{http://gnuwin32.sourceforge.net/packages/jpeg2ps.htm}
%
%Convertor clássico de jpeg para eps de nível 2 ou 3 (com compressão).
%Eu aconselho usar o Imagemagick ou sam2p.

\subsection*{TeX4ht\index{convertor!TeX4ht}, LaTeXML\index{convertor!LaTeXML} e lwarp\index{convertor!lwarp}}

site: \url{https://ctan.org/pkg/tex4ht}, \url{https://math.nist.gov/~BMiller/LaTeXML/}, \url{https://ctan.org/pkg/lwarp}.

\texttt{TeX4ht} é um convertor de \TeX/\LaTeX para \texttt{HTML/XHTML}, similar a \texttt{Hevea}, \texttt{TTH}, e \texttt{LaTeX2HTML}, que roda em diversas plataformas.
Note que todos $4$ programas clássicos são de multiplataformas e cada um tem vantagens e desvantagens. 
\texttt{Hevea} e \texttt{TTH}, não apresenta suporte decente às fórmulas matemáticas. 
O \texttt{Tex4ht} é implementado como pacote para \TeX{} e o \texttt{LaTeX2HTML} é convetor escrito em \texttt{perl}. Ambos conseguem converter eficientemente os documentos com equações, permitindo usar a imagem (\texttt{GIF}, \texttt{PNG} ou \texttt{JPEG}) ou \texttt{MathML} para representar equações.
Além disso, \texttt{TeX4ht} e \texttt{LaTeX2HTML} são de código aberto. 
Por estas e outras razões, eles são os mais usados.
O \texttt{HTML} gerado por \texttt{Tex4ht} é mais parecido com o documento original e não consegue dividir documentos em pedaços (o que é interessante para \texttt{HTML} grande, para acelerar o acesso na internet).
O \texttt{LaTeX2HTML} produz documentos de acordo com a filosofia do \texttt{HTML} e consequentemente, não produz documento ``fiel'' ao original. 
Ele particiona documentos grandes em pedaços menores e cria recurso de navegação, mas isto pode ser desativado, se desejar.
O \texttt{HTML} gerado por \texttt{LaTeX2HTML} acomoda bem em maioria dos navegadores, o que tornou a escolha preferida dos desenvolvedores da \texttt{Web}, enquanto que \texttt{TeX4ht} tornou a preferência para converter documentos \LaTeX{} em outros formatos.
Note que o \texttt{Tex4ht} já vem com muitas distribuições \LaTeX, incluindo o \texttt{MikTeX} para \texttt{MS Windows}.
Além disso, ele permite converter para formato do \texttt{Libre Office}, sendo que \texttt{TeXMaker} e \LyX{} usam ele para gerar arquivo de \texttt{Libre Office}.
%No caso de Windows, o comando htlatex.bat converte usando imagem na equação e htmlatex.bat usa MathML para fórmula. O oolatex.bat converte para formato de Libre Office.

Um problema do \texttt{TeX4ht} é usar o formato intermediário em \texttt{DVI}, o que dificulta o uso de imagens em \texttt{pdf/jpg/png} por precisar ser convertidos em \texttt{eps}.
A solução para isso é usar conversores modernos tais como \texttt{LaTeXML} e \texttt{lwarp} que apresentam filosofia similar ao \texttt{TeX4ht}, de produzir documentos parecidos com a saída do \LaTeX.
O \texttt{LaTeXML} é implementado em \texttt{perl} e usa o \texttt{PDF} e \texttt{XML} como o arquivo intermediário, eliminando o problema do \texttt{TeX4ht}. Ele gera tanto o \texttt{HTML} quanto o \texttt{epub} com boa qualidade, permitindo usar \texttt{MathML} para equações. A conversão é feito pelo comando \texttt{latexmlc}.

O \texttt{lwarp} é conjunto de pacotes de \LaTeX{} que converte \LaTeX{} para \texttt{HTML5}.
As equações e figuras ficarão no formato \texttt{SVG} por padrão, mas pode usar \texttt{MathJaX} para equações. Ele não suporta \texttt{MathML} para equações ainda (2024). O \texttt{script} auxiliar \texttt{lwarpmk} é usado na conversão automática das equações e imagens para \texttt{SVG}.

Note que muitos editores de escritório como \texttt{MS Office} e \texttt{LIbre Office} permite importar arquivos \texttt{HTML}.

%\textbf{Observação:} Acentuação dentro do ambiente tabular (\a{'}, \a{~}, etc) não será reconhecido no \texttt{TeX4ht}. Neste caso, use a acentuação direta.

%\begin{enumerate}[{Observação}~1]
%\item É possível usar a imagem no formato JPEG ou PNG em vez de GIF. Por exemplo, o comando
%
%\verb+htlatex foo "html,png"+
%
%gera o codigo HTML a partir do arquivo foo.tex, com imagem PNG. 
%O segundo parâmetro que é colocado entre aspas, é passado como opção do pacote \texttt{tex4ht.sty} que é lido automaticamente. 
%Outros arquivos de lotes trabalham de forma análoga. 
%Para saber sobre opções no tex4ht.sty, veja o manual .
%
%\item Durante a conversão, mesmo especificando o modo de MathML, algumas fórumulas podem ser convertidos na imagem, pois nem toda fórmula do LaTeX apresenta correspondênte no MathML.

%\item A interface gráfica encontra-se em \url{http://www.mayer.dial.pipex.com/tex.htm}. 
%Ele pedia o  htrun.exe para todar o TeX4ht do MikTex, que não existia, mas não sei se isso já foi resolvido.

%\item Acentuação dentro do ambiente tabular (\a{'}, \a{~}, etc) não será reconhecido. Neste caso, use a acentuação direta.
%\end{enumerate}

%\subsection*{RTF2LaTeX2e}
%
%Site: h\url{ttp://sourceforge.net/projects/rtf2latex2e/}
%
%%(cópia no CTAN: https://www.ctan.org/pkg/rtf2latex2e).
%RTF2LaTeX2e é um aplicativo gratuito multiplataforma que converte RTF (Rich Text Format) exportável por MS Word para LaTeX2e e suporta equações do MS Equations. 
%Este é um dos melhores convertores livres para documento de MS Word para LaTeX quando tem equações. Para exportar do Libre Office, basta instalar o plugin writer2latex caso ainda não tenha.
%Abaixe o arquivo e descompacte numa pasta apropriada tal como
%
%\verb+c:\arquivos de programas\rtf2latex2e+
%
%Para converter documento do MS Word, salve no formato RTF usando "arguivo->salvar como". 
%Suponhe que o arquivo foi salvo como "test.rtf" na pasta ``\verb+c:\temp+''
%Agora, abra o prompt de comando (DOS prompt) e mude para pasta onde se encontra o arquivo RTF.
%
%\verb+c:\desktop>cd\temp+
%
%Execute o comando.
%
%\verb+C:\temp>"arquivos de programas\rtf2latex2e\rtf2latex2e.exe" test.rtf+
%
%e o arquivo test.tex será criado.
%Note que maioria das imagens incluidas serão manuseadas corretamente, mas algumas figuras especiais tal commo do Microsoft Draw pode ser ignorados.
%A configuração padrão é ignorar as cores, mas isto pode ser modificado, editando o arquivo ''r2l-pref'' em ``c:\textbackslash arquivos de programas\textbackslash rtf2latex\textbackslash pref''. O ``ignoreColor=true'' e o ``ignorecolor=false'' desativa/ativa o uso de cor de texto durante a conversão.
%
%\subsection*{LaTeX2RTF}
%
%site: \url{http://sourceforge.net/projects/latex2rtf/}
%
%%(cópia do CTAN: https://www.ctan.org/pkg/latex2rtf)
%
%LaTeX2RTF é um aplicatibvo gratuíto multiplataforma que converte LaTeX para RTF (Rich Text Format) importável pelo MS Word e suporta equações usando ``EQ field'' (não o Equation Object) que é reconhecido pelo MS Equations. 
%Para Libre Office, use o ooolatex incluso em TeX4ht que faz parte do MikTeX ou W32TeX. 
%Lembre-se que, apesar de muitos elementos tais como equações, tabelas, figuras etc serem convertidos para RTF, nem tudo do LaTeX apresenta equivalência no MS Word. 
%Para instalar, abaixe o arquivo e descompacte para a pasta desejada. 
%Vamos supor que ele foi colocado no
%
%\verb+c:\arquivos de programas\l2r+
%
%Note que o nome do executável é latex2tr.exe, mas e conveniente executar pelo arquivo de lote.
%Edite o l2r.bat e mude a linha
%
%\verb+C:\l2r\latex2rt -P C:\l2r\cfg %1 %2 %3 %4 %5 %6 %7 %8 %9+
%
%para
%
%\verb+"C:\arquivos de programas\l2r\latex2rt.exe"  -P "C:\arquivos de programas\l2r\cfg" %1 %2 %3 %4 %5 %6 %7 %8 %9+
%
%Agora edite o l2rsem.bat e mude a linha
%
%\verb+C:\l2r\latex2rt -S -P C:\l2r\cfg %1 %2 %3 %4 %5 %6 %7 %8 %9+
%
%para
%
%\verb+"C:\arquivos de programas\l2r\latex2rt.exe"  -S -P "C:\arquivos de programas\l2r\cfg" %1 %2 %3 %4 %5 %6 %7 %8 %9+
%
%O arquivo l2r.bat servirá para converter no RTF estilo americano (campo de dados separado pela vírgula) e l2rsem.bat (que tem -S a mais no parámetro) servirá para converter no RTF estilo alemão (campo separado pelo ponto e virgula). No caso de portugues, deverá usar o l2rsem.bat para que não ocorra problemas com equações.
%Para que conversão de imagens funcione bem, ou que equações sejam incluidas como BMP, deverá instalar o GhostView/GhostScript e ImageMagick e ajustar seus o caminhos em l2rprep.bat.
%
%Para usar, basta compilar o arquivo TeX usando LaTeX, BibTeX, etc normalmente para que arquivos auxiliares sejam criados e referencias cruzadas resolvidos. Após isto, execute o arquivo de lote desejado (seguido de nome do arquivo tex sem extensão) para efetuar conversão.o
%Abra o prompt de comando de se caso precisar converter figuras ou gerar eauações em BMP, execute o l2rprep.bat primeiro.
%
%\subsection*{WP2LaTeX}
%
%Site: \url{http://sourceforge.net/projects/wp2latex/}
%
%Word Perfect para LaTeX que suporta tabelas e equações.

\subsection*{Writer2LaTeX\index{convertor!Writer2LaTeX}}

site: \url{http://writer2latex.sourceforge.net/}

Convertor do editor de texto do \texttt{Open Office/Libre Office} para \texttt{LaTeX/XHTML+MathML}.
Ele pode ser usado como \texttt{plugin} ou pelo comando de linha.
Dependendo da instalação do \texttt{Libre Office}, já vem instalado.

\subsection*{Excel2LaTeX\index{convertor!Excel2LaTeX}}

site: \url{https://www.ctan.org/pkg/excel2latex}

\texttt{Excel2LaTeX} é um macro para \texttt{MS Excel}, para converter planilha do \texttt{MS Excel} para tabela do \LaTeX. Maioria das formatações tais como espacificação das fontes (negrito, itálico, etc), bordas, celula mescrada, etc são mantidas. Para instalar, copie o arquivo \texttt{excel2latex.xla} para pasta do \texttt{MS Office} e dê um double click sobre ele. O \texttt{MS Excel} abre o arquivo e perguntará se vai executar o "macro". Responda "sim" e a instalação estará completa.
No \texttt{MS Excel}, selecione a região desejada da tabela e clique em ``convert table to LaTeX'' (ou ``ferramentas->convert table to LaTeX''). 
O resultado pode ser copiado para ``clipboard'' ou salvo no arquivo. 
%Para versão em japonês, veja o http://plaza19.mbn.or.jp/~Butcher_Bird/Mac/Excel.html.

\subsection*{Calc2LaTeX\index{convertor!Calc2LaTeX}}

site: \url{http://calc2latex.sourceforge.net/}

Macro para \texttt{Open Calc} (do \texttt{Open Office}) para gerar tabelas de \LaTeX{} a partir da planilha.
Não há atualização recente.

\subsection*{Pandoc\index{convertor!Pandoc}}

site: \url{https://pandoc.org/}

O \texttt{Pandoc} é um convertor de formato de documentos que suportam diversos formatos, entre eles, o \LaTeX.
% Entre eles, tem a conversão de arquivos \texttt{MarkDown} para \LaTeX. 

\section{Outras ferramentas\index{ferramentas}}

\subsection*{jabref\index{ferramentas!jabref}}

site: \url{http://jabref.sourceforge.net/}

Se usar o \BibTeX, é recomendável que use este editor para editar arquivo ".bib".
Muitos usuários de \LaTeX{} deixam de usar o \BibTeX{} devido ao chatice de editar o arquivo do \BibTeX{} que usa o sintaxe diferente do \LaTeX, mas com o \texttt{jabref}, as coisas mudam.

Ele também suporta o Bib\LaTeX{} (para isso, deverá usar o modo Bib\LaTeX).
Também é aconselhável usar a codificação \texttt{utf-8} quando usa o modo Bib\LaTeX{} para evitar problemas com caracteres acentuados.


\subsection*{jpdftweak\index{ferramentas!jpdftweak}}

site: \url{http://jpdftweak.sourceforge.net/}

Esta ferramenta é importante para ajustes finais do documento \texttt{PDF}. Permite dividir ou juntar PDF, trocar ordem das páginas, alterar o tamanho de papel, ajustar o tamanho  e posição do corpo do texto, colocar várias páginas em uma, etc. O domínio do \texttt{jpdftweak} é útil para quem precisa manipular \texttt{PDF} pronta, como preparar para edição.
Para elaborar poster, poderá diagramar no papel de tamanho 1/4 (1/2 de escala em cada dimensão) com letra 12pt e ao finalizar, poderá usar o \texttt{jpdfTweak} para ampliar no tamanho normal. Com o fator de ampliação 2x, a letra ficará com 24pt, apropriado para posters. Com isso, poderá criar posters sem precisar de pacote ou truque especial.
Para quem quer um aplicativo de comando de linha para processamento em lotes, o \texttt{Multvalent} (\url{https://multivalent.sourceforge.net/}) pode ser interessante, mas ele não está sendo atualizado por muito tempo. Assim, poderá optar pelo \texttt{PSPDFUtils} (\url{https://github.com/rrthomas/psutils}) e/ou \texttt{pdfjam} (\url{https://github.com/pdfjam/pdfjam}). Para adicionar/remover senhas ou similares, o \texttt{PDFTk} (\url{https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/} -- GUI e linha de comando) e \texttt{qpdf} (\url{https://github.com/qpdf/qpdf} -- comando de linha) podem ser usados.
%Note que \texttt{Multivalent} (\url{https://multivalent.sourceforge.net/}) útil para processamento de \texttt{PDF} pelo comando de linha não é mantido por longo período de tempo.
%é um visualizador para HTML, DVI, PDF, etc e o processamento de PDF será feito pelo comando de linha em vez de GUI, o que fez perder o espaço para \texttt{jPDFTweak} que apareceu mais tarde.
Para recorte rápido do arquivo \texttt{PDF}, use o \texttt{pdfarranger/PDFSAM} comentado a seguir.

\subsection*{pdfarranger (linux, windows e mac OS)\index{ferramentas!pdfarranger}}

site: \url{https://github.com/jeromerobert/pdfarranger}

É um ``fork'' do \texttt{pdfshuffler} (\url{ttp://sourceforge.net/projects/pdfshuffler/}) que era somente para \texttt{linux}. Usado para manuseio dos arquivos em \texttt{PDF}. Usando interface amigável, poderá concatenar arquivos, eliminar páginas, reordenar páginas, rotacionar, etc. Não é potente como o \texttt{jPDFTWeak}, mas para manuseio simples, ele é prático. Caso não tiver disponível na sua plataforma, existe o aplicativo implementado em \texttt{java} \texttt{PDFSAM} (\url{http://www.pdfsam.org/}) que efetua tarefas similares.

\subsection*{xournal++ e jaurnal\index{ferramentas!xournal++/jaurnal}}
sites:

xournal++: \url{https://github.com/xournalpp/xournalpp}

jaurnal: \url{http://www.dklevine.com/general/software/tc1000/jarnal.htm}

O \texttt{xournal++} é uma reimplementação do \texttt{xournal} (\url{http://xournal.sourceforge.net/}) que é um caderno eletrônico, mas pode abrir um arquivo \texttt{PDF}, escrever sobre ele e exportar como um novo arquivo \texttt{PDF}. Este recurso é interessante para corrigir trabalhos. Se tiver uma mesa digitalizadora, poderá efetuar correção tão rápida como corrigir sobre texto impresso. Ele também é usado como losa digital para aulas \texttt{online} (Para losa digital, o \texttt{Open Board} disponível em \url{https://openboard.ch/index.en.html} também é interessante).

O \texttt{jaurnal} é similar ao \texttt{xournal}, mas é implementado em \texttt{java}. O \texttt{xournal++} é mais recomendado.

% Open Board
% https://openboard.ch/index.en.html
% tem funcionalidade similar como losa eletronica, mas parece para escrever sobre PDF.


\subsection*{\hypertarget{tools:pympress}{pympress}\index{ferramentas!pympress}}

site: \url{https://github.com/Cimbali/pympress}

O \texttt{pympress} é um visualizador de PDF multi plataforma para apresentação, que permite usar o modo de tela dupla, exibindo o slide de apresentação em uma tela (do projetor) e notas do slide correspondênte na outra (do notebook). O \texttt{beamer} permite configurar a saída para produzir PDF compatível com o \texttt{pympress}. O \texttt{pympress} permite também destacar (marcar) o texto durante a apresentação.

\subsection*{Scribus\index{ferramentas!scribus}}

site: \url{http://www.scribus.net/}

O \texttt{Scribus} é um aplicativo para elaborar revistas, jornais, posters, etc como o \texttt{Microsoft Publisher} (comercial). 
O \texttt{Scribus} permite inserir ``caixa de \LaTeX'', o que facilita o desenvolvimento de material científico. Apesar do usuário de \LaTeX{} costumam querer diagramar o poster de apresentação no \LaTeX, se precisar produzir poster, folhetos, etc com frequência, é aconselhável aprender a usar o \texttt{Scribus}.

\subsection*{Alguns serviços web\index{ferramentas!serviços Web}}

\begin{itemize}[leftmargin={\widthof{\bullet}+\labelsep}]%[label={\arabic*.},leftmargin={1em+\widthof{\labelitemi}+\labelsep}]
%\hspace{\parindent} $\bullet$ 
\item \url{http://detexify.kirelabs.org/classify.html} reconhecimento de símbolos \LaTeX{} a partir do traço manual. Para versão offline para ser instalado no computador, veja \url{https://github.com/zoeyfyi/TeX-Match}.
% $\bullet$ 
\item \url{https://huggingface.co/spaces/breezedeus/Pix2Text-Demo}
% \url{https://p2t.breezedeus.com/} 
Converte imagem em texto com fórmula \LaTeX. É serviço online baseado no aplicativo de comando de linha \texttt{pix2tex} disponível em \url{https://github.com/breezedeus/pix2text} que é de código aberto. % que permite converter texto com fórmula de \LaTeX.
% Para idiomas que não sejam inglês ou chines, use o site \url{https://huggingface.co/spaces/breezedeus/Pix2Text-Demo} (é mais lento). 
% Para caso de fórmulas escrito a mão, veja o aplicativo \url{https://github.com/vertexi/ImMathWriter}. 
 Note que existem diversos serviços online deste tipo, mas muitos não são baseados nos aplicativos de código aberto, ou nem gratuitos. Um desse serviços gratuito útil é \url{https://webdemo.myscript.com/views/math/index.html} que reconhece a fórmula escrito a mão e cria código \LaTeX{} e \texttt{MathML}.
% $\bullet$ 
\item \url{http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi} Serviço de conversão do formato de imagens.
% $\bullet$ 
\item \url{https://pt.overleaf.com/}
Serviço de web com ambiente \LaTeX. Para uso pessoal é gratuito. Alguns outros serviços similares são \url{https://www.texpage.com/}, \url{https://papeeria.com/} e \url{https://www.authorea.com/}. Em geral, o plano gratuíto destes serviços limita o tempo e/ou número de compilação, ou similar. Portanto, o ideal é ter o \TeX{} instalado no seu próprio computador.
%
% overleaf like: LaTeX and markdown (use dropbox and like)
% https://papeeria.com/
%
%$\bullet$ 
\item \url{https://www.hipdf.com/}, \url{https://www.sejda.com/pdf-editor}, \url{https://www.pdfescape.com/}
Alguns dos diversos serviços gratuitos para editar PDF online.
\end{itemize}

Note que o central de repositório do (La)\TeX{} é o CTAN. Portanto, se estiver procurando algo, pode dar olhada primeiro no CTAN (\url{https://www.ctan.org/}). 

%\url{https://www.tablesgenerator.com}
%Gerador de \texttt{layout} das tabelas em \LaTeX.
% Parcialment gratuito? o que quer dizer "Seus 10 primieros clientes gratuitos"?

\section{Algumas alternativas a \LaTeX}
O \LaTeX{} é versátil e potente, porém a parte de programação (como desenvolvimento de pacotes e ajuste mais avançada de configurações) não é muito fácil por precisar programar em \TeX{}, o que apresenta a forma difernte das linguagens de programação usual. Apesar de Lua\TeX{} permitir programar na linguagem Lua, ele ainda não é adotado como \TeX{} padrão (2025).
Também existe caso na qual pretende elaborar documento mais rapidamente sem muita sofisticação, como efetuar anotações e similares.
Nestes casos, poderá procurar por outras alternativas, para ser usado em paralelo, ou até mesmo substituir o \LaTeX.

\subsection*{MarkDown\index{MarkDown}}

O \texttt{MarkDown} (\url{https://en.wikipedia.org/wiki/Markdown}) é um dos formatos de arquivo texto que pode ser lido diretamente, mas que também pode ser convertidos em \texttt{HTML}, \texttt{pdf}, ou similar de forma rápida e simples. Este formato é popular no arquivo ``readme'' usado para descrição do programa ou similar, blogs, anotações, etc (o \texttt{Pandoc} suporta fórmulas matemáticas no modo \TeX).
Se não quer usar aplicativos do comando de linha como o \texttt{pandoc}, poderá usar o \texttt{GhostWriter} (\url{https://ghostwriter.kde.org/}) que é um editor de \texttt{MarkDown}, capaz de visualizar o resultado automaticamente em paralelo, assim como efetuar conversão pelo menu.

\subsection*{typst\index{typst}}
O \texttt{typst} é um sistema de diagramação científico em desenvolvimento com sintaxe inspirado em \texttt{MarkDown} e tem a compilação rápida. A parte de programação usa a linguagem \texttt{script} própria. 
O serviço \texttt{online} está em \url{https://typst.app/}, enquanto que o compilador em si para instalação local, está em \url{https://github.com/typst/typst}. Se quiser um editor dedicado, o \url{https://github.com/Bzero/typstwriter} é uma das opções gratuítas.

\subsection*{SILE\index{SILE}}
O SILE (\url{https://sile-typesetter.org/}) é um sistema de diagramação de documento científico em desenvolvimento, com sintaxe inspirado em \LaTeX. Para a parte de programação, usa nativamente a linguagem Lua.
O compilador está em \url{https://github.com/sile.typesetter/sile/}.

\subsection*{groff\index{groff}}
O groff (\url{https://www.gnu.org/software/groff/}) é um sistema clássico, largamente utilizado para elaboração de documentos do projeto \texttt{GNU}.

\subsection*{ConTeXt\index{ConTeXt}}
O ConTeXt (\url{https://en.m.wikipedia.org/wiki/ConTeXt}) é um sistema baseado em \TeX{} (como no caso de \LaTeX). Enquanto que o \LaTeX{} tenta esconder as configurações de documentos (do usuário final) para que seja apropriado para submissão de arqtigos e simlares, ou a elaboração de documentos sem a necessidade do conhecimento técnico de diagramação, o ConTeXt facilita o acesso de tais recursos para os usuários, o que facilita a elaboração de documentos genéricos.

% \clearpage
\clearpage\thispagestyle{empty}\cleardoublepage
\phantomsection
\addcontentsline{toc}{chapter}{Alguns Comentários Finais}
\chapter*{Alguns Comentários Finais}

Neste texto está direcionado ao usuário de \LaTeX, mas não para os desenvolvedores.
Assim, não foi incluído detalhes sobre caixas e similares.
Para quem pretende criar comandos e ambientes complexos ou desenvolver pacotes, o conhecimento sobre caixas é importante. 
Para este assunto, recomendo a leitura de outro material tais como \cite{book:oetiker:2025} e \cite{book:wikibook:latex}.
Também não foi tratado a camada de programação \LaTeX 3 que tem forma diferente de desenvolver os pacotes em relação a \LaTeX{} tradicional, na qual está presente nos pacotes modernos.
O interessado em aprender a desenvolver pacotes, deve consultar documentos tais como \url{https://ctan.org/pkg/usrguide}, \url{https://ctan.org/pkg/clsguide} e \url{https://www.alanshawn.com/latex3-tutorial/}, entre outros (O site \url{https://www.latex-project.org/help/documentation/} lista vários documentos deste tipo).

Neste texto, foram apresentados alguns dos pacotes e classes mais utilizados, mas vários pacotes e classes populares foram omitidos.

Por exemplo, quem trabalha com fórmulas complexas, é recomendável que considere o uso do pacote \texttt{mathtools}\index{mathtools} que resolve algumas deficiências do pacote \texttt{amsmath}.
Para criar ficha catalográfica, poderá colocar o número total de páginas usando o comando \verb+\PreviousTotalPages+\index{PreviousTotalPages@\verb+\PreviousTotalPages+}, mas dependendo do caso, precisará do pacote como o \texttt{pageslts}\index{pageslts}.
%\texttt{lastpage}\index{lastpage} ou similar.
% \@abspage@last, \thetotalpages, \PreviousTotalPages já são do kernel do LaTeX. 

Para inserir uma ou mais páginas diretamente no documento em vez de inserir como figuras, usa-se o pacote \texttt{pdfpages}\index{pdfpages}.
Quem trabalha com tabelas, pode precisar do pacote \texttt{multirow}\index{multirow} para mesclar linhas, \texttt{diagbox}\index{diagbox} para dividir células em diagonal, etc., que não foram citados neste documento.
%  tais como \texttt{booktab}\index{booktab}, \texttt{tabulararray}\index{tabulararray}, etc
%Para elaborar livros: koma script, memoir, tufte-latex, bookest, willowtreebook, octavo, ElegantBook (templates), ycbook, nostarch, simplivre (multilingue), beaulivre (multilingue, colorido)
Ainda existem pacotes específicos para xadrez (xskak), diagrama química (chemfig), música (abc, musixtex), etc, além dos pacotes destinados para cada tipo de ajustes de documentos.

%A lista dos pacotes interessantes são longas.

Dentre as classes omitidas aqui, as classes da família \texttt{koma script}\index{koma script} e a classe \texttt{memoir}\index{memoir} são um dos mais importantes.
Estas classes implementam várias funcionalidades adicionais em relação as classes básicas.

Como existem pacotes específicos para cada assunto, é impossível conhecer todos eles. 
Mas, pelo menos podemos tentar conhecer alguns dos pacotes e classes populares existentes para área de atuação de cada um de nós.

%A quantidade de pacotes no \LaTeX{} é muito extensa.
%Assim, se precisar efetuar alguns ajustes refinados ou precisar de comandos ou ambientes complexos, vale a pena pesquisar se tem pacotes específicos para o que está pretendendo.

%Além dos pacotes, também existem várias classes de documentos adicionais.

% \clearpage
\clearpage\thispagestyle{empty}\cleardoublepage
\backmatter
% Referências Bibliográficas
%\nocite{*} 
\phantomsection
\bibliography{latex-via-exemplos}
% \bibliographystyle{amsalpha}
\bibliographystyle{alphaurl}

\clearpage\thispagestyle{empty}\cleardoublepage
\phantomsection
\begin{singlespacing}
\printindex
\end{singlespacing}


\end{document}
