% -*- 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{06/01/2025} %%%%%%%%%%%%%%%%%%%%% % 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 & preço \\ \midrule cenouras (500g) & R\$0,50 \\ cogumelos (vidro de 500g) & R\$5,00 \\ batata (1Kg) & R\$1,20 \\ \midrule total & 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 & valor \\ \midrule Nome 1 & 1 \\ Nome 2 & 2 \\ Nome 3 & 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 & \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 %\linebreak % para teste linha 11 & 11.11 \\ linha 12 & 12.12 \\ linha 13 & 13.13 \\ linha 14 & 14.14 \\ linha 15 & 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 & Sobrenome 1 \\ Nome 2 & 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 & 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 \\ linha 11 & texto 11 \\ linha 12 & texto 12 \\ linha 13 & texto 13 \\ linha 14 & texto 14 \\ linha 15 & 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 %%%%%%%%%%%%%%%%%%%