% Apêndice do modelo: guia de tabelas e quadros. Apague-o no seu trabalho
% (e a pasta apendices/exemplos).

% Mostra o código de example/snippets/#1.tex e o resultado (o mesmo arquivo, incluído).
% Para que o resultado fique junto do código (e não flutue para outra página), aqui os
% ambientes figure, table, quadro, grafico e codigo são redefinidos localmente como blocos
% fixos (não flutuantes); \caption, \label e \autoref continuam funcionando.
% Em um trabalho real use os floats normais ([htbp]), como mostram os códigos exibidos.
\makeatletter
\newcommand{\ufv@semfloat}[1]{%
  \renewenvironment{#1}[1][]{\par\medskip\begin{minipage}{\linewidth}\def\@captype{#1}}%
    {\end{minipage}\par\medskip}}
\newcommand{\ufv@modofixo}{\ufv@semfloat{table}\ufv@semfloat{figure}\ufv@semfloat{quadro}%
  \ufv@semfloat{grafico}\ufv@semfloat{codigo}}
\newcommand{\codexemplo}[1]{%
  \par\medskip\noindent\textit{Código:}\par\nopagebreak\smallskip
  \lstinputlisting[style=exemplo, language={[LaTeX]TeX}]{example/snippets/#1.tex}%
  \par\medskip
  \noindent\begin{minipage}{\linewidth}\textit{Resultado:}\par\nopagebreak\smallskip
  \begingroup\ufv@modofixo\input{example/snippets/#1}\endgroup
  \end{minipage}\par}
% variante para tabelas longas (longtable precisa quebrar página): mostra só as primeiras
% linhas do código (#2 = última linha exibida) e não coloca o resultado em bloco
\newcommand{\codexemplolongo}[2]{%
  \par\medskip\noindent\textit{Código (primeiras linhas; as demais seguem o mesmo padrão):}\par\nopagebreak\smallskip
  \lstinputlisting[style=exemplo, language={[LaTeX]TeX}, lastline=#2]{example/snippets/#1.tex}%
  \par\medskip\noindent\textit{Resultado:}\par\nopagebreak\smallskip
  \input{example/snippets/#1}}
\makeatother

\chapter{Guia de tabelas e quadros}\label{ap:tabelas}

\emph{Observação}: nos exemplos deste apêndice, o código aparece primeiro e o resultado
logo abaixo, no mesmo lugar. Para isso, aqui os ambientes \texttt{table}, \texttt{figure},
\texttt{quadro}, \texttt{grafico} e \texttt{codigo} são exibidos como blocos fixos (sem
flutuar). Em um trabalho real, use-os normalmente, com \texttt{[htbp]}: o \LaTeX\ posiciona
o objeto perto do ponto em que ele é citado, e a referência no texto, feita com
\texttt{\textbackslash autoref\{rótulo\}}, continua correta mesmo que o objeto vá para outra
página, pois não depende da posição.

\section{Tabela ou quadro?}

Qualquer conteúdo organizado em linhas e colunas \emph{parece} uma tabela, mas as normas
distinguem os dois (NBR 14724; normas de apresentação tabular do \ac{ibge}). Classificar
tudo como tabela é um erro formal comum: as listas ficam erradas (itens textuais na
``Lista de tabelas'', por exemplo) e a apresentação foge do padrão. Isso não impede a
compilação nem a leitura, mas é o tipo de ajuste que a biblioteca ou a banca pode
exigir antes da versão final. Use o \autoref{qua:tabquadro} para decidir.

\begin{quadro}[htbp]
\begin{ilustracao}{\caption{Diferenças entre tabela e quadro}\label{qua:tabquadro}}{\fonte{Elaborado pelo próprio autor com base no manual da UFV}}
  \renewcommand{\arraystretch}{1.25}
  \small
  \begin{tabularx}{\textwidth}{|>{\raggedright\arraybackslash}p{2.8cm}|X|X|}
    \hline
    & \textbf{Tabela} & \textbf{Quadro} \\
    \hline
    Conteúdo & Dados numéricos; o número é a informação central (medidas, contagens, percentuais) & Informação textual ou mista: definições, requisitos, comparações, cronogramas, tecnologias \\
    \hline
    Bordas & Abertas nos lados: sem linhas verticais; linhas horizontais no topo, sob o cabeçalho e na base & Fechadas: linhas em todos os lados e entre as linhas e colunas \\
    \hline
    Ambientes & \texttt{table} com \texttt{tabela} (título à esquerda; equivale ao \texttt{\textbackslash IBGEtab}) & \texttt{quadro} com \texttt{ilustracao} (título centralizado) \\
    \hline
    Numeração e lista & ``Tabela N''; Lista de tabelas & ``Quadro N''; Lista de quadros \\
    \hline
    Rodapé & Abaixo, à esquerda: \texttt{\textbackslash fonte}, \texttt{\textbackslash legenda} e \texttt{\textbackslash nota} & O mesmo \\
    \hline
  \end{tabularx}
\end{ilustracao}
\end{quadro}

Regra prática: se você pode somar, comparar ou calcular com o conteúdo das células,
é tabela; se as células contêm frases, é quadro. Toda tabela e todo quadro devem ser
citados no texto (\texttt{\textbackslash autoref\{rótulo\}}) e ficar o mais perto possível
da citação.

\section{Título, fonte, legenda e nota}

Toda ilustração e toda tabela têm quatro elementos, nesta ordem (NBR 14724; manual UFV 4.9):
\begin{description}
  \item[Título] identifica o objeto, vem \emph{acima}, com a palavra designativa, o número,
        um travessão e o texto (``Figura 3 -- Arquitetura do sistema''); é o
        \texttt{\textbackslash caption}.
  \item[Fonte] indica de onde vem a informação e é \emph{obrigatória}, mesmo para obra do
        próprio autor (``Elaborado pelo próprio autor''); é o \texttt{\textbackslash fonte\{...\}}
        ou o atalho \texttt{\textbackslash elaboracaopropria}.
  \item[Legenda] explica símbolos, siglas, cores ou partes da ilustração (por exemplo,
        ``As células sombreadas indicam o período de execução''); é o \texttt{\textbackslash legenda\{...\}}
        e só é usada quando há algo a explicar.
  \item[Nota] traz observações e informações complementares (data da coleta, ressalvas,
        método); é o \texttt{\textbackslash nota\{...\}}.
\end{description}
Fonte, legenda e nota formam o \emph{rodapé}: ficam abaixo, em linhas seguidas, em espaço
simples, tamanho 10 e alinhadas à esquerda do objeto. A diferença para a tabela é só
o alinhamento do título: centralizado nas ilustrações e à esquerda nas tabelas (padrão do
\ac{ibge}).

\section{Os ambientes \texttt{ilustracao} e \texttt{tabela}}

Os dois ambientes têm a mesma sintaxe, parecida com a do \texttt{\textbackslash IBGEtab} do abn\TeX2:
título, conteúdo e rodapé, nessa ordem. Eles medem o conteúdo e montam título e rodapé na
largura dele:
\begin{lstlisting}[style=exemplo, language={[LaTeX]TeX}]
\begin{figure}[htbp]   % ou quadro, grafico, codigo
\begin{ilustracao}{\caption{Título}\label{fig:x}}{\fonte{...}\legenda{...}\nota{...}}
  \includegraphics[width=.8\linewidth]{figura}     % ou tikzpicture, tabularx, lstlisting
\end{ilustracao}
\end{figure}

\begin{table}[htbp]
\begin{tabela}{\caption{Título}\label{tab:x}}{\elaboracaopropria\nota{...}}
  \begin{tabular}{...} ... \end{tabular}
\end{tabela}
\end{table}
\end{lstlisting}
O \texttt{tabela} também reduz o conteúdo ao tamanho 10, como o \texttt{\textbackslash IBGEtab}
(para outro tamanho, redefina \texttt{\textbackslash IBGEtabfontsize}). O \texttt{\textbackslash IBGEtab}
do abn\TeX2 continua funcionando, mas não tem o espaçamento simples entre fonte e nota
nem aceita \texttt{\textbackslash legenda}.

\section{Tabela bem formatada}

Uma tabela no padrão \ac{ibge} usa o ambiente \texttt{tabela} dentro do \texttt{table}:
o título e o rodapé (fonte, legenda e notas) assumem a largura da tabela. As linhas
horizontais vêm do pacote \texttt{booktabs}
(\texttt{\textbackslash toprule}, \texttt{\textbackslash midrule},
\texttt{\textbackslash bottomrule}) e o alinhamento decimal da coluna \texttt{S} do
\texttt{siunitx}, configurada neste modelo para a vírgula decimal e o ponto
como separador de milhar. Entre as chaves \texttt{\{...\}}, os cabeçalhos das colunas
\texttt{S} protegem o texto da formatação numérica.

\codexemplo{tabela-simples}

Os principais ajustes:
\begin{itemize}
  \item \textbf{Alinhamento}: \sloppy texto à esquerda (\texttt{l}), números pela vírgula decimal
        (\texttt{S\allowbreak[table-format=3.1]}, em que o formato indica o máximo de dígitos antes e
        depois da vírgula), colunas centralizadas (\texttt{c}) só para códigos e marcas.
  \item \textbf{Unidades}: coloque a unidade no cabeçalho (``Tempo (ms)''), não em cada célula.
  \item \textbf{Largura}: se a tabela passa das margens, reduza a fonte com
        \texttt{\textbackslash small} ou \texttt{\textbackslash footnotesize} antes do
        \texttt{tabular} (o tamanho deve ser uniforme em todas as tabelas),
        diminua o espaço entre colunas com \texttt{\textbackslash setlength\{\textbackslash tabcolsep\}\{3pt\}}
        ou use \texttt{tabularx} com colunas \texttt{X}, que se ajustam à largura do texto.
        \texttt{\textbackslash resizebox\{\textbackslash textwidth\}\{!\}\{...\}} resolve, mas
        encolhe a letra de modo irregular: deixe como último recurso.
  \item \textbf{Altura das linhas}: \texttt{\textbackslash renewcommand\{\textbackslash arraystretch\}\{1.2\}}
        dá mais respiro às linhas (use dentro do ambiente, para não afetar o documento todo).
  \item \textbf{Células mescladas}: \texttt{\textbackslash multicolumn\allowbreak\{n\}\allowbreak\{c\}\allowbreak\{texto\}}
        (colunas) e \texttt{\textbackslash multirow\allowbreak\{n\}\allowbreak\{*\}\allowbreak\{texto\}} (linhas, pacote
        \texttt{multirow}); \texttt{\textbackslash cmidrule(lr)\{a-b\}} traça filetes parciais.
  \item \textbf{Sinais convencionais} (\ac{ibge}): hífen (--) para zero absoluto; três pontos
        (\ldots) para dado não disponível; \texttt{x} para dado omitido (consulte
        \cite{ibge1993} para a lista completa). Não deixe células vazias sem explicação.
  \item \textbf{Notas}: \texttt{\textbackslash nota\{...\}} explica a tabela como um todo;
        para notas de células específicas, use letras sobrescritas
        (\texttt{\textbackslash textsuperscript\{a\}}) e explique-as no rodapé.
  \item \textbf{Posição}: \texttt{[htbp]} deixa o \LaTeX\ escolher; não force posições
        (\texttt{[H]}), pois isso gera grandes espaços em branco.
\end{itemize}

\subsection{Células mescladas e cabeçalhos agrupados}

No exemplo a seguir comparam-se discos rígidos (\ac{hdd}) e unidades de estado sólido
(\ac{ssd}), com o cabeçalho ``Tempo (ms)'' agrupando as três colunas de medidas.

\codexemplo{tabela-mesclada}

\subsection{Tabela longa (mais de uma página)}

Uma tabela que não cabe em uma página usa o ambiente \texttt{tabelalonga}, descrito na
\autoref{sec:longos} junto com o \texttt{quadrolongo}.

\section{Quadro bem formatado}

O quadro tem bordas fechadas, e as células quase sempre contêm texto. O ambiente
\texttt{tabularx} com colunas \texttt{X} distribui o texto na largura da página, e as
colunas \texttt{p\{largura\}} com
\texttt{>\{\textbackslash raggedright\textbackslash arraybackslash\}} evitam o
espaçamento irregular de palavras em colunas estreitas. Aumentar o
\texttt{\textbackslash arraystretch} para 1,2 ou 1,3 melhora muito a leitura.

No exemplo, o relatório é exportável em \ac{csv} (e em \ac{pdf}), e a prioridade de cada
requisito fica numa coluna estreita e centralizada.

\codexemplo{quadro-requisitos}

Os cabeçalhos de um quadro com texto à esquerda podem ser centralizados com um
\texttt{\textbackslash multicolumn} de uma só coluna, como no \autoref{qua:guia-tecnologias}.
Para reduzir a letra de um quadro denso, use \texttt{\textbackslash small} dentro do
ambiente. Siglas continuam valendo (\texttt{\textbackslash ac\{...\}}) dentro de quadros.

O quadro seguinte justifica as tecnologias escolhidas, entre elas um \ac{sgbd} com suporte
a \ac{json}. \emph{Observação}: dentro de \texttt{tabularx}, \texttt{longtable} e
\texttt{\textbackslash IBGEtab} o conteúdo das células pode ser composto mais de uma vez,
o que confunde a expansão de siglas; faça a primeira ocorrência de cada sigla no texto
corrido e use a sigla pura nas células.

\codexemplo{quadro-tecnologias}

\section{Quadros e tabelas longos}\label{sec:longos}

Um quadro ou uma tabela cujo conteúdo pode passar de uma página (um inventário de códigos,
uma lista de requisitos, dados de consulta) não cabe nos floats: o conteúdo do
\texttt{ilustracao} e do \texttt{tabela} fica numa caixa, que não quebra entre páginas, e o
resultado estoura a página ou o \LaTeX\ reclama de um float grande demais (\emph{Float too
large}). Dividir o conteúdo em vários quadros não resolve, porque qualquer parte pode
crescer. Para esses casos há os ambientes \texttt{quadrolongo} e \texttt{tabelalonga}:
\begin{itemize}
  \item são usados \textbf{fora} de float, direto no texto, e não flutuam: começam onde
        estão no código e continuam nas páginas seguintes;
  \item repetem o cabeçalho (as linhas antes de \texttt{\textbackslash cabecalhofim}) no
        alto de cada página;
  \item o título e o rodapé seguem a mesma regra do \texttt{ilustracao} e do
        \texttt{tabela}: o título é o \texttt{\textbackslash caption}, com o título curto
        opcional (\texttt{\textbackslash caption[curto]\{longo\}}) e o
        \texttt{\textbackslash label} logo depois; o rodapé tem a fonte, obrigatória, e, se
        preciso, a legenda e a nota (\texttt{\textbackslash fonte},
        \texttt{\textbackslash legenda}, \texttt{\textbackslash nota},
        \texttt{\textbackslash elaboracaopropria}) e sai só no fim da última página;
  \item a aparência é a mesma: no \texttt{quadrolongo}, título centralizado, como no
        \texttt{ilustracao}; no \texttt{tabelalonga}, título à esquerda e conteúdo em
        tamanho 10, como no \texttt{tabela};
  \item a numeração e as listas também: o \texttt{quadrolongo} é um ``Quadro N'' da Lista
        de quadros, o \texttt{tabelalonga} uma ``Tabela N'' da Lista de tabelas, na mesma
        sequência dos quadros e das tabelas comuns, e o
        \texttt{\textbackslash autoref\{rótulo\}} funciona do mesmo jeito.
\end{itemize}
Se o conteúdo cabe numa página, prefira os floats (\texttt{quadro} com
\texttt{ilustracao}, \texttt{table} com \texttt{tabela}), que o \LaTeX\ posiciona melhor.

\subsection{Pacotes}

A classe não carrega pacotes de tabela; os ambientes longos precisam
de \texttt{xltabular} no preâmbulo (ele carrega \texttt{longtable} e \texttt{tabularx}).
Sem ele, o uso do ambiente dá um erro que diz o que acrescentar. \texttt{colortbl} só é
preciso se o documento usar \texttt{\textbackslash rowcolor} ou
\texttt{\textbackslash cellcolor}, e \texttt{pdflscape} para páginas em paisagem:
\begin{lstlisting}[style=exemplo, language={[LaTeX]TeX}]
\usepackage{xltabular}   % carrega longtable e tabularx
\usepackage{xcolor}      % \definecolor (HTML, RGB...)
\usepackage{colortbl}    % só se usar \rowcolor ou \cellcolor
\usepackage{pdflscape}   % só se usar páginas em paisagem
\end{lstlisting}

\subsection{Sintaxe}

Os dois primeiros argumentos são os mesmos do \texttt{ilustracao} e do
\texttt{tabela} (título e rodapé); o terceiro é a especificação das colunas, como no
\texttt{tabularx}. Depois vêm as linhas do cabeçalho, o \texttt{\textbackslash cabecalhofim}
e as linhas do corpo:
\begin{lstlisting}[style=exemplo, language={[LaTeX]TeX}]
\begin{quadrolongo}{\caption[Curto]{Título}\label{qua:x}}{\fonte{...}}{|l|X|c|}
  \hline
  \textbf{Coluna 1} & \textbf{Coluna 2} & \textbf{Coluna 3} \\  % cabeçalho, repetido
  \hline
\cabecalhofim                                                      % fim do cabeçalho
  ... & ... & ... \\ \hline                                        % corpo
\end{quadrolongo}
\end{lstlisting}
O ambiente ocupa sempre a largura do texto: use ao menos uma coluna \texttt{X} (que se ajusta
à largura) ou, numa tabela só de números, comece a especificação com
\texttt{@\{\textbackslash extracolsep\{\textbackslash fill\}\}}, que distribui as colunas na
largura. O quadro abaixo, um inventário de códigos de um \ac{tcc}, pode cair entre duas
páginas; as faixas coloridas agrupam os códigos por categoria.

\codexemplolongo{quadro-longo}{11}

\subsection{Continuação}

Como pedem as normas de apresentação tabular do \ac{ibge}, quando o
quadro ou a tabela passa de uma página, sai ``continua'' no pé de cada página que não é a
última, ``continuação'' acima do cabeçalho repetido e ``conclusão'' no fim da última página,
todos à direita; o que cabe numa página não leva nenhuma marca. Para saber onde a tabela
termina, o \LaTeX\ precisa de duas compilações (o \texttt{latexmk} já faz isso). Os textos
estão em \texttt{\textbackslash continuaname}, \texttt{\textbackslash continuacaoname} e
\texttt{\textbackslash conclusaoname} (troque com \texttt{\textbackslash renewcommand}), e as
marcas podem ser desligadas com
\texttt{\textbackslash ufvmarcascontinuacao\{nao\}} (nos dois ambientes) ou só num deles,
com \texttt{\textbackslash ufvmarcascontinuacao[quadros]\{nao\}} ou
\texttt{[tabelas]}. Elas vêm ligadas nos dois; nos quadros, siga a orientação do
orientador.

\subsection{Linhas de grupo}

Uma linha que agrupa as seguintes (um subtítulo que ocupa
todas as colunas com \texttt{\textbackslash multicolumn}, com ou sem fundo colorido por
\texttt{\textbackslash rowcolor}, como no \autoref{qua:guia-longo}) não pode ficar sozinha no pé da
página, separada das linhas a que se refere. A regra geral vale para qualquer tabela que
quebra entre páginas: \textbf{para que uma linha de subtítulo ou de grupo não fique sozinha
no pé da página, termine-a com \texttt{\textbackslash\textbackslash*}}, que proíbe a quebra
de página logo depois dela. Não ponha \texttt{\textbackslash hline} logo depois da linha
de grupo: no \texttt{longtable} o filete permite a quebra de página (é desenhado no pé de uma
página e repetido no alto da seguinte); a faixa colorida ou o filete da linha seguinte já
separam o grupo. A forma dessas linhas (negrito, cor de fundo, filetes) é escolha
de cada documento; a classe não define cores.

\subsection{Paisagem}

Um quadro largo pode ir para páginas em paisagem: coloque o ambiente
dentro de um único \texttt{landscape} (pacote \texttt{pdflscape}), e ele continua nas
páginas giradas seguintes. Por exemplo, o inventário de códigos de um \ac{tcc} no apêndice:
\begin{lstlisting}[style=exemplo, language={[LaTeX]TeX}]
% preâmbulo
\usepackage{xltabular}   % carrega longtable e tabularx
\usepackage{xcolor}
\usepackage{colortbl}    % só se usar \rowcolor
\usepackage{pdflscape}
\definecolor{fundocategoria}{HTML}{A6C4DC}   % cor escolhida pelo documento

% Apêndice B
\begin{landscape}
\begin{quadrolongo}{\caption[Códigos do projeto]{Códigos do projeto, por categoria,
    com a função e a seção em que são usados}\label{qua:inventario}}%
  {\elaboracaopropria}{@{}l>{\raggedright\arraybackslash}Xc@{}}
\textbf{Arquivo} & \textbf{Função} & \textbf{Seção} \\
\cabecalhofim
\rowcolor{fundocategoria}\multicolumn{3}{@{\hspace{3pt}}l}{\textbf{Centrais}} \\*
\texttt{07\_treinamento.py} & Treinamento de uma configuração com a SMP
  & \ref{sec:treinamento} \\
\texttt{08\_inferencia.py} & Inferência bloco a bloco em janela deslizante
  & \ref{sec:posproc} \\
\rowcolor{fundocategoria}
  \multicolumn{3}{@{\hspace{3pt}}l}{\textbf{Dados e execução}} \\*
\texttt{config.yaml} & Parâmetros de todas as etapas & \ref{sec:metodos} \\
\end{quadrolongo}
\end{landscape}
\end{lstlisting}

\subsection{Tabela longa}

O \texttt{tabelalonga} funciona do mesmo modo, com título à
esquerda e conteúdo em tamanho 10. A tabela abaixo tem 60 linhas para mostrar a quebra de
página, a repetição do cabeçalho e as marcas de continuação; o rodapé (fonte, legenda e
nota) aparece só no fim.

\codexemplolongo{tabela-longa}{9}

\section{Cabeçalho e rodapé das ilustrações}

Para figuras, diagramas, gráficos, quadros e códigos, o manual (seção 4.9, conforme a
NBR 14724/2025) recomenda \textbf{centralizar o cabeçalho} (tipo, número e título) e
\textbf{alinhar à esquerda o rodapé} (fonte, legenda e notas), respeitando as margens da
ilustração. É o que o ambiente \texttt{ilustracao} faz, inclusive quando a figura é mais
estreita que o texto: título e rodapé passam a ter a largura da figura. \texttt{\textbackslash fonte},
\texttt{\textbackslash legenda} e \texttt{\textbackslash nota} saem em linhas seguidas, sem
linha em branco entre elas.

\codexemplo{figura-ilustracao}

\section{Lista de conferência}

\begin{itemize}
  \item o conteúdo é numérico (tabela) ou textual (quadro)?
  \item o título está acima, com ``Tabela N'' ou ``Quadro N'', e a fonte (e, se houver, a
        legenda e a nota) abaixo, à esquerda e em espaço simples?
  \item a ilustração é citada e comentada no texto?
  \item a tabela não tem linhas verticais e o quadro tem as bordas fechadas?
  \item números estão alinhados pela vírgula e as unidades estão no cabeçalho?
  \item o tamanho de letra e o espaçamento são uniformes entre as ilustrações?
  \item as listas de tabelas e de quadros estão no pré-textual?
\end{itemize}
