<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">% -*- coding: utf-8 -*-
% !TEX program = lualatex

% tabularray-abnt.sty
%----------------------------------------------------------------------
% copyright (C) January, 2025 by Sadao Massago
% autor:
%    Sadao Massago
%    e-mail: sadao@ufscar.br
%
% LicenÃ§a: LaTeX Project Public License versÃ£o 1.3c or (se for a sua escolha) qualquer versÃ£o posterior.
% https://www.latex-project.org/lppl/
%----------------------------------------------------------------------

\documentclass[12pt,a4paper,oneside]{book}

\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
  \usepackage[utf8]{inputenc} % acentuaÃ§Ã£o direta em UTF-8
\else % XeLaTeX/LuaLaTeX
  % \usepackage{fontspec} % pacote para configurar fontes
  % \defaultfontfeatures{Ligatures=TeX}
  % seleÃ§Ã£o das fontes desejadas pode ser colocados aqui
  \usepackage{fontsetup} % New Cmputer Modern com espessura da letra de Book
  % \usepackage[olddefault]{fontsetup} % espessura tradicional do Computer Modern
\fi

% pacotes matemÃ¡ticas de acordo com o motor TeX
\ifPDFTeX % PDFLaTeX
  \usepackage{amsmath,amssymb} % para matematica
\else % XeLaTeX/LuaLaTeX
  % para matemÃ¡tica: MikTeX pode precisar instlaÃ§ao manual de lm-math
  \usepackage{unicode-math}
  \ifLuaTeX
    \usepackage{lualatex-math}
  \fi
\fi

\usepackage[brazil]{babel}

% Para linhas horizontais com espaÃ§amento melhorado: \toprule, \midrule, \bottomrule, \cmidrule
\usepackage{booktabs}
\usepackage{siunitx} % medidas internacionais e numeros
% para tabela longa que quebra entre pÃ¡ginas
\usepackage{tabularray} % tabelas configurÃ¡veis
\UseTblrLibrary{booktabs,siunitx} % para compatibilidade com booktabs e siunitx
% ConfiguraÃ§Ã£o do tabularray para abnt
\usepackage{tabularray-abnt}

%% Para cores
\usepackage[table]{xcolor} % pacote extendido de color (ativando opÃ§Ã£o de carregar colortbl paa colorir tabelas, se desejar)

% Para inserir cÃ³digo de LaTeX;
\usepackage{codehigh} % https://ctan.org/pkg/codehigh
\colorlet{highbackcolor}{yellow!50}
\CodeHigh{language=latex/table,style/main=highbackcolor,style/code=highbackcolor}
% \CodeHigh{language=latex/table,style/main=yellow9,style/code=red9,style/demo=azure9}

\usepackage[
  backend=biber,
  language=auto,
  % bibencoding=utf8,
  style=abnt %authoryear,
]{biblatex}
\addbibresource{tabularray-abnt.bib} % arquivo bib

\sloppy % preferÃªncia a underfull (muito espaÃ§o entre palavras)

\usepackage{hyperref} % Para link automatico

%\SetAbntTblrFont{\footnotesize}

\title{Tabularray-abnt: tema abnt para tabularray}
\author{Sadao Massago}
\date{2025/01/16}

%%%%%%%%%%%%%%%%%%%%%
% INÃCIO DO DOCUMENTO
%%%%%%%%%%%%%%%%%%%%%
\pagestyle{empty} % inicia sem paginaÃ§Ã£o
\begin{document}

\maketitle

%%%%%%%%%%%%%%%%%%%%%
% SUMARIO E SIMILARES
%%%%%%%%%%%%%%%%%%%%%

% LISTA DE QUADROS
%\clearpage\phantomsection\pdfbookmark[chapter]{\listquadroname}{lot}
%\listadequadros % Na classe memoir (ou ABNTeX2), use a versÃ£o * para nÃ£o constar no sumÃ¡rio


% LISTA DE TABELAS
%\clearpage\phantomsection\pdfbookmark[chapter]{\listtablename}{lot}
%\listoftables %  % Na classe memoir (ou ABNTeX2), use a versÃ£o * para nÃ£o constar no sumÃ¡rio

% SUMÃRIO
\clearpage\phantomsection\pdfbookmark{\contentsname}{toc}
\tableofcontents % No ABNTeX2 ou memoir, * para nÃ£o constar ele mesmo
% para ABNTexto

%%%%%%%%%%%%%%%%%%%%
% CONTEÃšDO PRINCIPAL
%%%%%%%%%%%%%%%%%%%%
\chapter{ApresentaÃ§Ã£o}
 O arquivo de estilo \texttt{tabularray.sty} implementa o tema \texttt{abnt} e \texttt{quadro} para \texttt{tblr}, \texttt{talltblr} e \texttt{longtblr} para que eles produzam tabelas e quadros de acordo com a norma \texttt{ABNT}.

O ambiente \texttt{tblr} (com opÃ§Ã£o \texttt{tall}) e \texttt{talltblr} podem ser usados para produzir tabelas dentro do ambiente de tabelas flutuante e   
O ambiente \texttt{tblr} (com opÃ§Ã£o \texttt{long}) e \texttt{longtblr} produzem tabelas e quadros longos. Ao escolher tema \texttt{abnt} ou \texttt{quadro} para estes ambientes, poderÃ¡ configurar para produzir tabela ou quadro compatÃ­vel com a norma ABNT, com poucos ajustes.

Para a comodidade, foram implementados ambientes \texttt{abnttblr}, \texttt{tallabnttblr} e \texttt{longabnttblr} que aplicam o tema \texttt{abnt} por padrÃ£o, alÃ©m de permitir configurar a fonte usada pelo comando \verb+\SetAbntTblrFont+. Por exemplo, \verb+\SetAbntTblrFont{\footnotesize}+ configurarÃ¡ para que as fontes usadas enstas tabelas e quadros sejam no tamanho \verb+\footnotsize+.

Note que, para classe exceto o \texttt{abntexto}, serÃ¡ providenciado o ambiente \texttt{quadro} que funciona similarmente para tabelas, e para a classe \texttt{abntexto}, serÃ¡ criada a entrada de legenda ``quadro'' em vez do ambiente que funcionarÃ¡ devidamente como quadro.

\chapter{Alguns ComentÃ¡rios e Exemplos}
Note que a norma \texttt{ABNT} adota o padrÃ£o \texttt{IBGE} para tabelas.
AlÃ©m disso, separa em duas categorias.
O primeiro delas Ã© quando Ã© uma tabela para finalidade de apresentar dados numÃ©ricos, denominado de \emph{tabela}.
O segundo delas Ã© quando o conteÃºdo Ã© texto ou similar na qual nÃ£o tem pretensÃ£o de apresentar dados numÃ©ricos, denominados de \emph{quadro}.

As tabelas, nÃ£o podem ter fechamento nos laterais (esquerda e direita), alÃ©m de nÃ£o usar linhas horizontais no corpo da tabela.
Tabelas devem ter uma linha de tÃ­tulos das colunas (que descreve o que sÃ£o cada colunas), separado do corpo de tabelas pela linha horizontal. A parte de cima e de baixo deve apresentar linha horizontal para fechamento.
Por outro lado, quadro deve ser fechado nos latarias, parte de cima e de baixo e ter grade de divisÃ£o.

O \texttt{ABNTeX2} e \texttt{ABNTexto} implementam as tabelas curtas no padrÃ£o \texttt{ABNT}, mas ainda nÃ£o tem suporte as tabelas longas (2004) que ocupam mais de uma pÃ¡gina. O objetivo desta estilo Ã© dar suporte a tabela e quadros curtos e longos no padrÃ£o \texttt{ABNT} atravÃ©s do ambientes fornecidos pelo \texttt{tabularray}.

Para diagramar uma tabela curta, basta usar o ambiente \texttt{abnttblr} com opÃ§Ã£o \texttt{tall} ou o ambiente \texttt{tallabnttblr} de forma similar a \texttt{tblr} com opÃ§Ã£o \texttt{tall} ou \texttt{talltblr}. 
No ABNT, tabelas e figuras devem ser centralizados no texto.

\begin{codehigh}[boxsep=4mm]
A Tabela~\ref{abnttblr:curta} Ã© tabela que auto posiciona.
\begin{table}[hbp!]
\center
\begin{tallabnttblr}
[
  caption={Tabela curta},
  label={abnttblr:curta},
  remark{Fonte} = {ElaboraÃ§Ã£o do autor.},  
  remark{Nota} = {Testando o estilo ABNT. 
    A nota Ã© opcional no ABNT},
]
{
  rowspec={lr}, % l=left, r=right
  row{1}={\bfseries}, % primeira linha
  row{Z}={\bfseries}, % Ãºltima linha
}
\toprule
   produto &amp; preÃ§o \\
\midrule
   cenouras  (500g)          &amp; R\$0,50  \\
   cogumelos (vidro de 500g) &amp; R\$5,00  \\
   batata    (1Kg)           &amp; R\$1,20  \\
\midrule
   total &amp; R\$6,70 \\
\bottomrule   
\end{tallabnttblr}
\end{table}
\end{codehigh}

Lembrando que toda tabela deve ser referenciada no texto e deve conter a fonte (no exemplo, criado pelo \texttt{remark}). O parÃ¢metro \texttt{note} nÃ£o vai funcionar como \texttt{ABNT}.

\begin{codehigh}[boxsep=4mm]
\begin{table}[hbp!]
\begin{talltblr}
[
  theme=abnt,
  caption={Tabela curta simples},
  label={tab:talltblr:simples},
  remark{Fonte}={ElaboraÃ§Ã£o do autor},
]
{
  colspec = {XX}, % largura automatica das colunas
}
\toprule
  nome &amp; valor \\
\midrule
  Nome 1 &amp; 1 \\ 
  Nome 2 &amp; 2 \\ 
  Nome 3 &amp; 3 \\
\bottomrule
\end{talltblr}
\end{table}
\end{codehigh}

A Tabela~\ref{tab:longa} Ã© uma tabela que ocupa vÃ¡rias pÃ¡ginas.
Tal tabela pode ser criado pelo ambiente \texttt{longabnttblr}. Devido ao cÃ³digo implementado no \texttt{tabularray-abnt.sty}, precisa de duas compilaÃ§Ãµes para que o cabeÃ§alho seja ajustada devidamente.

A Tabela~\ref{tab:longa} usa o pacote \texttt{siunitx} para converter os  decimais em virgula, alÃ©m de lidar com o seu alinhamento no decimal. Nesta tabela, foi usado a coloraÃ§Ã£o de linhas em zebra (branco e cinza alternada) para facilitar o acompanhamento das linhas.

ConfiguraÃ§Ã£o foi como segue.

\begin{codehigh}[boxsep=4mm]
\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{longabnttblr}
[
  caption = {Tabela longa}, % titulo
  label={tab:longa}, % rotulo para referÃªncias cruzadas
  remark{Fonte}={ElaboraÃ§Ã£o do autor},  
]
{ 
  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!15}, % linhas par em cinza
  % row{Z} = {font=\bfseries,white}, % Ãºltima linha  
}
...
\end{longabnttblr}
\end{codehigh}

% alinhamento no decimal:
%https://tex.stackexchange.com/questions/303395/align-numbers-based-on-their-decimal-point
% configurando o siunitx
\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{longabnttblr}
[
  caption = {Tabela longa}, % titulo
  label={tab:longa}, % rotulo para referÃªncias cruzadas
  remark{Fonte}={ElaboraÃ§Ã£o do autor},  
]
{ 
  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!15}, % linhas par em cinza
  % row{Z} = {font=\bfseries,white}, % Ãºltima linha  
}
\toprule
 texto &amp; \text{nÃºmero} \\ \midrule
 linha 1 &amp; 1.1 \\ % \midrule
 linha 2 &amp; 2.2 \\ % \midrule
 linha 3 &amp; 3.3 \\ % \midrule
 linha 4 &amp; 4.4 \\ % \midrule
 linha 5 &amp; 5.5 \\ % \midrule
 linha 6 &amp; 6.6 \\ % \midrule
 linha 7 &amp; 7.7 \\ % \midrule
 linha 8 &amp; 8.8 \\ % \midrule
 linha 9 &amp; 9.9 \\ % \midrule
 linha 10 &amp; 10.10 \\ % \midrule
 %\linebreak % para teste
 linha 11 &amp; 11.11 \\
 linha 12 &amp; 12.12 \\
 linha 13 &amp; 13.13 \\
 linha 14 &amp; 14.14 \\
 linha 15 &amp; 15.15 \\    
 \bottomrule
 \end{longabnttblr}

Quadro flutuante poderÃ¡ ser produzido pelo ambiente \texttt{quadro}, exceto para classe \texttt{abntexto} (na qual deverÃ¡ usar \texttt{table}, caso queira que seja flutuante), como no Quadro~\ref{quadro:flutuante}. 
Para produzir o quadro, use o tema \texttt{quadro} fornecido pelo \texttt{tabularray-abnt.sty}, como em

\begin{codehigh}[boxsep=4mm]
\begin{quadro}[hbp!]
\begin{tallabnttblr}
[
  theme=quadro,
  caption={Quadro flutuante simples},
  label={quadro:flutuante},
  remark{Fonte}={ElaboraÃ§Ã£o do autor},  
]
{
  colspec = {XX},
  vlines,hlines, % grades, necessÃ¡rios para quadro.
}
...
\end{tallabnttblr}
\end{quadro}
\end{codehigh}

Note o uso de grade, o que Ã© necesÃ¡rio para quadros.

\begin{quadro}[hbp!]
\begin{tallabnttblr}
[
  theme=quadro,
  caption={Quadro flutuante simples},
  label={quadro:flutuante},
  remark{Fonte}={ElaboraÃ§Ã£o do autor},  
]
{
  colspec = {XX},
  vlines,hlines, % grades, necessÃ¡rios para quadro.
}
Nome 1 &amp; Sobrenome 1 \\
Nome 2 &amp; Sobrenome 2 \\
\end{tallabnttblr}
\end{quadro}

O quadro longo pode ser produzido pelo tema \texttt{quadro} fornecido pelo \texttt{tabularray-abnt.sty}, sobre \texttt{longanbttblr} como no Exemplo~\ref{quadro:longo}.

\begin{longabnttblr}
[
  theme={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}, % largura automatica das colunas
  vlines,hlines, % fazer grade
}
linha 1 &amp; texto 1 \\
linha 2 &amp; texto 2 \\
linha 3 &amp; texto 3 \\
linha 4 &amp; texto 4 \\
linha 5 &amp; texto 5 \\
%\pagebreak % quebrando pÃ¡gina para teste
linha 6 &amp; texto 6 \\
linha 7 &amp; texto 7 \\
linha 8 &amp; texto 8 \\
linha 9 &amp; texto 9 \\
linha 10 &amp; texto 10 \\
linha 11 &amp; texto 11 \\
linha 12 &amp; texto 12 \\
linha 13 &amp; texto 13 \\
linha 14 &amp; texto 14 \\
linha 15 &amp; texto 15 \\
\end{longabnttblr}

Para configurar a fonte usado em \texttt{abnttblr}, \texttt{tallabnttblr} e \texttt{longabnttblr}, usa-se o comando \verb+\SetAbntTblrFont+. Por exemplo, \verb+\SetAbntTblrFont{\footnotesize}+ configura o corpo de tabelas em \texttt{footnotesize} atÃ© que tenha nova chamada de \verb+\SetAbntTblrFont+.
Os ambientes \texttt{tallabnttblr}/\texttt{longabnttblr} Ã© mesmo que \texttt{talltblr}/\texttt{longtblr} com a opÃ§Ã£o \texttt{theme=abnt} no parÃ¢metro opcional, exceto pela possibilidade de ajuste da fonte pelo comando \verb+\SetAbntTblrFont+.

Note que \texttt{tblr}, \texttt{talltblr} e \texttt{longtblr} do \texttt{tabularray} funciona tambÃ©m no modo matemÃ¡tico. Assim, \texttt{abnttblr}, \texttt{tallabnttblr} e \texttt{longabnttblr} tambÃ©m funcionarÃ£o no modo matemÃ¡tico.

\textbf{ObservaÃ§Ã£o sobre lista de quadros}
A lista de quadros pode ser produzido pelo \verb+\listadequadros+. Note que na classe \texttt{ABNTeX2} acrescenta no sumÃ¡rio por padrÃ£o e para evitar isso, basta usar a versÃ£o ``*''. Para classe \texttt{abntexto}, terÃ¡ o comando \verb+\makeloq+ que funcionarÃ¡ da mesma forma que \verb+makelot+.

Para \texttt{tabularray}, veja o \textcite{book:tabularray:lyu}. Sobre \texttt{ABNTeX2} e \texttt{ABNText}, vejam \textcite{book:abnt2:araujo} e \textcite{book:abntexto:abreu}.

\chapter{CÃ³digo}

%\CodeHigh{lite}
\dochighinput[language=latex/latex3]{tabularray-abnt.sty}

\phantomsection
\printbibliography[heading=bibintoc]

\end{document}

%%%%%%%%%%%%%%%%%%%
% FIM DO DOCUMENTO
%%%%%%%%%%%%%%%%%%%
</pre></body></html>