texlive[67743] Master/texmf-dist: abntexto (27jul23)

commits+karl at tug.org commits+karl at tug.org
Thu Jul 27 21:52:07 CEST 2023


Revision: 67743
          http://tug.org/svn/texlive?view=revision&revision=67743
Author:   karl
Date:     2023-07-27 21:52:07 +0200 (Thu, 27 Jul 2023)
Log Message:
-----------
abntexto (27jul23)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/abntexto/README
    trunk/Master/texmf-dist/doc/latex/abntexto/abntexto.tex
    trunk/Master/texmf-dist/tex/latex/abntexto/abntexto.cls

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/abntexto/abntexto.pdf

Removed Paths:
-------------
    trunk/Master/texmf-dist/doc/latex/abntexto/abntexto-manual.pdf

Modified: trunk/Master/texmf-dist/doc/latex/abntexto/README
===================================================================
--- trunk/Master/texmf-dist/doc/latex/abntexto/README	2023-07-27 19:51:15 UTC (rev 67742)
+++ trunk/Master/texmf-dist/doc/latex/abntexto/README	2023-07-27 19:52:07 UTC (rev 67743)
@@ -1,8 +1,8 @@
 Public Domain Software
-2023-01-31
-2.0.0-alpha
+2023-07-26
+3.0.0-alpha
 Elayson
 abntexto.classe at gmail.com 
 
 The abntexto is a LaTeX class for the elaboration of academic works according
-to the guidelines of the Associação Brasileira de Normas Técnicas (ABNT).
\ No newline at end of file
+to the guidelines of the Associação Brasileira de Normas Técnicas (ABNT).

Deleted: trunk/Master/texmf-dist/doc/latex/abntexto/abntexto-manual.pdf
===================================================================
(Binary files differ)

Added: trunk/Master/texmf-dist/doc/latex/abntexto/abntexto.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/abntexto/abntexto.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/abntexto/abntexto.pdf	2023-07-27 19:51:15 UTC (rev 67742)
+++ trunk/Master/texmf-dist/doc/latex/abntexto/abntexto.pdf	2023-07-27 19:52:07 UTC (rev 67743)

Property changes on: trunk/Master/texmf-dist/doc/latex/abntexto/abntexto.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/abntexto/abntexto.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/abntexto/abntexto.tex	2023-07-27 19:51:15 UTC (rev 67742)
+++ trunk/Master/texmf-dist/doc/latex/abntexto/abntexto.tex	2023-07-27 19:52:07 UTC (rev 67743)
@@ -2,117 +2,105 @@
 
 \documentclass{abntexto}
 
-\makeatletter
-
-\def\erase{}\def\enderase{}
-\long\def\rewrite#1\endrewrite{}
-\def\lightmode{\long\def\erase##1\enderase{} \def\rewrite{}\def\endrewrite{}}
-%\lightmode
-
-\erase
+\usepackage[cmyk]{xcolor}
+\usepackage[style=abnt]{biblatex} \addbibresource{abntexto.bib}
 \usepackage[brazil]{babel}
 \usepackage{fontspec}
-\enderase
-\usepackage{lipsum} \def\lip{\lipsum[1][1-2]} \def\lipp{\lipsum[1]}
-\usepackage{graphicx}
-\usepackage[cmyk]{xcolor}
-\erase
-\usepackage[style=abnt]{biblatex} \addbibresource{abntexto.bib}
-\usepackage[colorlinks,linkcolor=blue]{hyperref}
-\enderase
+\usepackage{unicode-math}
+\usepackage[colorlinks,linktoc=page]{hyperref}
+\usepackage{listings}
 
-\rewrite
-\let\href=\relax \def\textcite#1{{\bfseries#1}} \def\today{}
-\endrewrite
+\makeatletter
 
-% MARKUP
+% VERBATIM
 % ================================================
 
-\def\ttnoligs{\ttfamily\@noligs}
+\newcount\verbcount
+\newdimen\hh \hh=6pt
 
-\def\cs#1{{\ttnoligs \string#1}}
-\def\meta#1{{\ttnoligs <\/{\itshape#1\/}>}} % ⟨⟩
-\def\cc#1{{\ttnoligs \{\meta{#1}\}}}
-\def\kk#1{{\ttnoligs [\meta{#1}]}}
+\def\adef#1{\catcode`#1=13 \begingroup \lccode`\~=`#1\lowercase{\endgroup\def~}}
+\def\setverb{\def\do##1{\catcode`##1=12}\dospecials}
 
-\def\arg{\cc{arg}}
-\def\opt{\kk{opt}}
-\def\ccval#1{{\ttnoligs \{#1\}}}
-\def\kkval#1{{\ttnoligs [#1]}}
-\def\pkg#1{{\ttnoligs #1}}
+{\catcode`\^^M=13
+	\gdef\verbpercent#1^^M{{\bfseries\color{comment}\%#1}^^M}
+}
 
-% VERBATIM
-% ================================================
+\def\makeverbcount{}
 
-\def\adef#1{\catcode`#1=13 \begingroup \lccode`\~=`#1\lowercase{\endgroup\def~}}
-\def\dodef#1{\catcode`#1=12 }
-\def\codecatcodes{\let\do=\dodef \dospecials \catcode`\|=0 }
+\def\begverb{\par \begingroup\parindent=0pt\parskip=0pt
+	\setverb \catcode`\|=0
+	\adef{ }{\ }%
+	\adef{\^^I}{\ \ \ }%
+%	\everypar={\makeverbcount}%
+	\def\par##1{\endgraf\ifx##1\par\leavevmode\fi ##1}%
+	\obeylines
+	\adef{'}{\textquotesingle}%
+%	\adef{`}{\`{}}%
+	\adef{-}{-\kern0pt }%
+	\adef{\%}{\verbpercent}%
+	\startverb
+}
 
-{\catcode`\^^M=13 
-	\gdef\codepercent#1^^M{{\color{graycomment}\itshape\@percentchar#1^^M}}
+{\catcode`\^^M=13 \catcode`\|=0 \catcode`\\=12 
+	|long|gdef|startverb#1\endverb{|verbbox{#1|endgraf}|endgroup|resetplace}
 }
 
-\long\def\codeon{\begingroup \codecatcodes
-	\adef{\^^I}{\space\space\space}%
-	\adef{\^^M}{\par\leavevmode}%
-	\adef{\ }{\space}%
-	\adef{\%}{\codepercent}%
-	\startcode
+\def\verbbox#1{\place{\verbframe{#1}}}
+\def\verbframe#1{%
+	\hbox{{\color{leftbar}\vrule width1pt}\kern\hh\vbox{%
+		\hbox{\vbox{\advance\hsize-1pt \advance\hsize-\hh \verbfont #1}}%
+	}}%
 }
+\def\verbfont{\sloppy\ttfamily\small\singlesp}
 
-{\catcode`\ =13 \catcode`\^^M=13 \catcode`\|=0 \catcode`\\=12 
-	|gdef|startcode^^M#1^^M\codeoff{|codebox{#1}|par|endgroup |codereset}
+\def\verbchar#1{%
+	\ifx\savedttchar\undefined\else \catcode\savedttchar=\savedttcharc \fi
+	\chardef\savedttchar=`#1%
+	\chardef\savedttcharc=\catcode`#1%
+	\bgroup\lccode`\~=`#1%
+	\lowercase {\egroup\def~}{\leavevmode\hbox\bgroup\setverb\adef{ }{\ }%
+		\ttfamily\readverb}%
+	\bgroup\lccode`\~=`#1\lowercase{\egroup\def\readverb ##1~}{##1\egroup}%
+	\catcode`#1=13
 }
-\def\codebox#1{\def\tnba at placewidth{\hsize \advance\hsize-3cm}%
-	\vskip\aboveplace
-	\parindent=0pt 
-	\ifx\tnba at savedplace\empty\else\tnba at makelegend\fi
-	\nobreak\nointerlineskip\vskip10pt
-	{\codefont{#1}}%
-	\nobreak\nointerlineskip\vskip8pt
-	\ifx\tnba at savedsrc\empty\else\tnba at makesrc\fi
-	\vskip\belowplace
-}
-\def\codereset{%
-	\let\tnba at savedplace=\empty
-	\let\tnba at savedlegend=\empty
-	\let\tnba at savedsrc=\empty
-	\let\@currentlabel=\empty
-}
-\def\codefont{\raggedright\leftskip=6pt\singlesp\small\ttnoligs\leftframed}
-\long\def\leftframed#1{\hbox{{\color{graybar}\kern1.5cm\vrule width1pt}\vtop{#1}}}
+\verbchar{|}
 
+\AddToHook{begindocument}{\adef{<}{\begingroup \setverb\startmeta}}
+\def\startmeta#1>{\ttfamily$\langle${\rmfamily\itshape #1\/}$\rangle$\endgroup}
+
 % MISC
 % ================================================
 
-\definecolor{mono}{cmyk}{0,0,0,.73}
-\definecolor{graybar}{gray}{.75}
-\definecolor{graycomment}{gray}{.2}
+\definecolor{leftbar}{gray}{.75}
+\definecolor{comment}{gray}{.2}
 
-\erase
-\setmainfont{TeX Gyre Termes}
-\setmonofont{Inconsolatazi4-Regular}[Color=mono]
-%\newfontfamily\bgfont{Inconsolatazi4-Regular}[Color=bgfontcolor]
-\enderase
+\setmainfont{texgyretermes}[
+	UprightFont    = *-regular,
+	BoldFont       = *-bold,
+	ItalicFont     = *-italic,
+	BoldItalicFont = *-bolditalic,
+	Extension      = .otf
+]
+\setmonofont{InconsolataN-Regular.otf}
+\setmathfont{texgyretermes-math.otf}
 
-\def\tocifont{\bfseries}
-\def\sectionfont{\bfseries}
+\def\tocsectionfont#1{\bfseries#1\mdseries}
+\def\sectionfont#1{\bfseries#1}
+\def\appendixlabelwidth{6.7em}
+\def \l at section  {\addpenalty{-300}\addvspace{1em plus1pt}%
+                  \extline{0pt}{\toclabelwidth}{\tocsectionfont}}
+\def \l at appendix {\addpenalty{-300}\addvspace{1em plus1pt}%
+                  \extline{0pt}{\appendixlabelwidth}{\maintocfont}}
+\def \l at annex    {\addpenalty{-300}\addvspace{1em plus1pt}%
+                  \extline{0pt}{\annexlabelwidth}{\maintocfont}}
 
-\sizedef \large {14.4pt}{17pt}{}
-\sizedef \Large {20.74pt}{25pt}{}
-\sizedef \LARGE {25pt}{30pt}{}
+\definelegendplace{code}{Código}{cód.\,}{loc}
+\def\me{o Autor.}
 
-\definelegendplace{code}{Código}{Lista de códigos}{cód.\,#1}{loc}
-\def\me{o autor.}
-
-\clubpenalty=10000 
-\widowpenalty=10000 
-
+\clubpenalty=10000
+\widowpenalty=10000
 \let\cite=\textcite
-\def\bibfont{\singlesp}
-\erase
-\bibitemsep=18pt
-\enderase
+\def\bibfont{\bibitemsep=\baselineskip \singlesp}
 
 \makeatother
 
@@ -127,37 +115,35 @@
 	Classe para {\upshape\LaTeX}\\[2em] \normalfont\large
 	Elayson\\[1ex]
 	\href{mailto:abntexto.classe at gmail.com}{abntexto.classe at gmail.com}\\[2.5ex]
-	2023-01-31\par}
-
+	\today
+\par}
 \vskip3in
 
-{\centering\large\ttfamily 2.0.0-alpha\par}
-
+{\centering\large\ttfamily 3.0.0-alpha\par}
 \newpage
 
+\heading{Sumário}
 \maketoc
 
-\textual
-
 \section{Apresentação}
 
-O \pkg{abntexto} é uma classe do \LaTeX\ criada para facilitar a utilização das normas da Associação Brasileira de Normas Técnicas (ABNT) em trabalhos acadêmicos (monografias, dissertações, teses).
+O |abntexto| é uma classe do \LaTeX\ criada para facilitar a utilização das normas da Associação Brasileira de Normas Técnicas (ABNT) em trabalhos acadêmicos (monografias, dissertações, teses).
 
-Este \emph{não} é um manual sobre \LaTeX\ (ou \TeX, a ferramenta que o constitui) nem tampouco uma descrição detalhada sobre as normas ABNT. Para aprender sobre \LaTeX\ leia \cite{viaexemplos} ou \cite{latex2eunnoficial}, disponível também em francês. Além disso, também se pode ler \cite{texbytopic} para aprender sobre o sistema \TeX\footnote{Note que os livros referenciados não foram realmente citados e isso não é aceito na Norma, no entanto este não é um trabalho acadêmico real, mas um manual.}.
+Este \emph{não} é um manual sobre LaTeX (ou TeX, a ferramenta que o constitui) nem tampouco uma descrição detalhada sobre as normas ABNT. Para aprender sobre LaTeX leia \cite{viaexemplos} ou \cite{latex2eunnoficial}, disponível também em francês. Além disso, também se pode ler \cite{texbytopic} para aprender sobre o sistema \TeX \footnote{Note que os livros referenciados não foram realmente citados e isso não é aceito na Norma, no entanto este não é um trabalho acadêmico real, mas um manual.}.
 
-Já existe uma classe para aplicação das normas ABNT cujo nome é \pkg{abntex2}. Mas, diferente desta, o \pkg{abntexto} não depende  do \pkg{memoir}, uma classe de código-fonte e manual extensos e que implementa funções as quais, em sua maioria, não são pertinentes a um documento que use as diretrizes da ABNT.
+Já existe uma classe para aplicação das normas ABNT cujo nome é |abntex2|. Mas, diferente desta, o |abntexto| não depende  do |memoir|, uma classe de código-fonte e manual extensos e que implementa funções as quais, em sua maioria, não são pertinentes a um documento que use as diretrizes da ABNT.
 
-As normas ABNT as quais o \pkg{abntexto} se propõe a seguir são aquelas em vigor até o momento da criação deste manual.
+As normas ABNT as quais o |abntexto| se propõe a seguir são aquelas em vigor até o momento da criação deste manual.
 
-O \pkg{abntexto} ainda está em estágio \emph{alpha} e seu uso em documentos sérios não é recomendado, uma vez que \emph{bugs} são esperados.
+O |abntexto| ainda está em estágio \emph{alpha} e seu uso em documentos sérios não é recomendado, uma vez que \emph{bugs} são esperados.
 
 \section{Chamando a classe}
 
-Digite as linhas em \ref{cd:início} e use \pkg{abntexto}.
+Digite as linhas em \ref{cd:início} e use |abntexto|.
 
 \legend{code}{Início} \src\me
 \label{cd:início}
-\codeon
+\begverb
 % !TeX TS-program = lualatex
 \documentclass{abntexto}
 
@@ -164,69 +150,77 @@
 \usepackage[brazil]{babel}
 \usepackage{fontspec}
 
-\setmainfont{TeX Gyre Termes}
+\setmainfont{texgyretermes}[
+	UprightFont    = *-regular,
+	BoldFont       = *-bold,
+	ItalicFont     = *-italic,
+	BoldItalicFont = *-bolditalic,
+	Extension      = .otf
+]
 
 \begin{document}
 	Texto
 \end{document}
-\codeoff
+\endverb
 
 \section{Fonte tipográfica}
 
-O tamanho da fonte é 12\,pt de imediato e pode ser configurado com o comando\\ \cs\setfontsize\cc{id} sendo que 12\,pt é a única opção disponível. Além disso, com os seletores de tamanho \cs\normalsize\ e \cs\small\ que configuram 12\,pt e 10\,pt, nessa ordem, é possível mudar o tamanho da fonte no corpo do documento.
+O tamanho da fonte é 12\,pt de imediato e pode ser configurado com o comando |\setfontsize{<id>}| sendo que 12\,pt é a única opção disponível. Além disso, com os seletores de tamanho |\normalsize| e |\small| que configuram 12\,pt e 10\,pt, nessa ordem, é possível mudar o tamanho da fonte no corpo do documento.
 
-Mas, se você deseja outro tamanho de fonte, crie-o usando \cs\definefontsize\cc{id}\hfil\break \cc{definições} e \cs\sizedef\cs\ \unskip\meta{seletor}\cc{tamanho}\cc{entrelinha natural}. Em\hfil\break \cc{definições}, o seletor \cs\normalsize\ deve estar presente por meio de \cs\sizedef, caso contrário, a classe mostrará um erro.
+Mas, se você deseja outro tamanho de fonte, crie-o usando |\definefontsize{<id>}{<definições>}| e |\sizedef<seletor>{<tamanho>}{<entrelinha natural>}|. Em <definições>, o seletor |\normalsize| deve estar presente por meio de |\sizedef|, caso contrário, a classe mostrará um erro.
 
-O espaçamento é de um e meio e pode ser alterado para dois com \cs\spacing\ccval{2}, por exemplo. Os atalhos \cs\singlesp, \cs\onehalfsp\ e \cs\doublesp\ estão disponíveis. Note que o espaçamento simples não tem o mesmo valor que o espaçamento um, portanto, \cs\singlesp\ é diferente de \cs\spacing\ccval{1}! Os atalhos \cs\onehalfsp\ e \cs\doublesp\ tem o mesmo significado de \cs\spacing\ccval{1.5} e \cs\spacing\ccval{2}.
+O espaçamento é de um e meio e pode ser alterado para dois com |\spacing{2}|, por exemplo. Os atalhos |\singlesp|, |\onehalfsp| e |\doublesp| estão disponíveis. Note que o espaçamento simples não tem o mesmo valor que o espaçamento um, portanto, |\singlesp| é diferente de |\spacing{1}|! Os atalhos |\onehalfsp| e |\doublesp| tem o mesmo significado de |\spacing{1.5}| e |\spacing{2}|.
 
+A limitação do comando |\spacing| é que ele só pode ser usado após um seletor de tamanho, porque este redefine a entrelinha. Por exemplo, |\small\onehalfsp| é correto e |\onehalfsp\small| ineficaz.
+
 \section{\emph{Layout}}
 
-A folha é A4 por padrão e as margens esquerda e direita são de 3\,cm, 2\,cm para páginas ímpares e de 2\,cm, 3\,cm para páginas pares, respectivamente. Além disso, as margens superior e inferior têm, nessa ordem, 3\,cm, 2\,cm para todo o documento. Todas essas medidas podem ser alteradas com a macro \cs\setlayout\ que deve ser usada assim: \cs\setlayout\ccval{left=\meta{medida}, right=\meta{medida}, top=\meta{medida}, botttom=\meta{medida}}.
+A folha é A4 por padrão e as margens esquerda e direita são de 3\,cm, 2\,cm para páginas ímpares e de 2\,cm, 3\,cm para páginas pares, respectivamente. Além disso, as margens superior e inferior têm, nessa ordem, 3\,cm, 2\,cm para todo o documento. As margens foram ajustadas com o pacote |geometry|.
 
-Além das chaves anteriores também existe \cs{twoside} que é booleana, ou seja, aceita os valores \cs{true} ou \cs{false} e serve para ativar o modo de impressão em duas folhas onde as medidas das margens horizontais se invertem nas páginas pares. Ao não informar um valor para \cs{twoside} subentende-se que seja \cs{true}, portanto \cs\setlayout\ccval{twoside} equivale a \cs\setlayout\ccval{twoside=true} e esse princípio também se aplica a outras chaves booleanas.
+Existem dois comandos que configuram o \emph{layout} da página: |\pretextual| que, além de desabilitar o modo |twoside|, remove a numeração de página e é executado automaticamente logo após |\begin{document}| e o comando |\textual| que também é executado automaticamente logo antes da primeira chamada de |\section| por meio de |\trytextual|. Dessa forma, a numeração de página será posta no topo da página e as margens passarão a ser espelhadas.
 
-Existem dois comandos que configuram o \emph{layout} da página: \cs\pretextual\ que, além de desabilitar o modo \cs{twoside}, remove a numeração de página e é executado automaticamente logo após \cs{\begin\{document\}} e o comando \cs\textual\ que deve ser executado manualmente logo antes da primeira chamada de \cs\section\ para que a numeração de página seja posta no topo da página e as margens passem a ser espelhadas.
-
 \section{Sumário}
 
-Os comandos que mudam a fonte das entradas no ToC (Table of Contents, em inglês) são \cs\tocifont, \cs\tociifont, \dots, \cs\tocvfont\ (ver \ref{cd:contents}).
+Os comandos que mudam a fonte das entradas no ToC (Table of Contents) são |\tocsectionfont|, |\tocsubsectionfont|, \dots, |\tocsubparagraphfont| (ver \ref{cd:contents}).
 
 \legend{code}{Aparência do sumário} \src\me
 \label{cd:contents}
-\codeon
+\begverb
 \documentclass{abntexto}
 
-\usepackage{color}
+\usepackage{xcolor}
 
-\def \tocifont  {\color{red}\itshape\MakeUppercase}
-\def \tociifont {\color{blue}\bfseries}
+\def \tocsectionfont    #1{\color{red}\itshape\MakeUppercase{#1}}
+\def \tocsubsectionfont #1{\color{blue}\bfseries#1}
 
 \begin{document}
+	\heading{Sumário}
 	\maketoc
 
 	\section{Título}
 	\subsection{Título}
 \end{document}
-\codeoff
+\endverb
 
 \section{Secionamento}
 
-A personalização das macros de seção (\cs\section, \cs\subsection\ etc.) é análoga a personalização do sumário e deve ser feita com \cs\sectionfont, \cs\subsectionfont, etc. como exemplificado em \ref{cd:sec}.
+A personalização das macros de seção (|\section|, |\subsection| etc.) é análoga a personalização do sumário e deve ser feita com |\sectionfont|, |\subsectionfont| etc. como exemplificado em \ref{cd:sec}.
 
-Também há como alterar o espaço vertical acima e abaixo das seções usando \cs\abovesection, \cs\belowsection\ e derivados. Por exemplo, \cs\def\cs\abovesubsection\ccval{2cm} insere um espaço de 2\,cm acima de \cs\subsection.
+Também há como alterar o espaço vertical acima e abaixo das seções usando |\abovesection|, |\belowsection| e semelhantes. Por exemplo, |\def\abovesubsection{2cm}| insere um espaço de 2\,cm acima de |\subsection|.
 
 \legend{code}{Aparência das seções} \src\me
 \label{cd:sec}
-\codeon
+\begverb
 \documentclass{abntexto}
 
-\usepackage{color}
+\usepackage{xcolor}
 
-\def \sectionfont       {\color{blue}\scshape}
-\def \subsectionfont    {\color{red}\itshape}
-\def \subsubsectionfont {\color{yellow}\sffamily}
+\def \sectionfont       #1{\color{blue}\scshape#1}
+\def \subsectionfont    #1{\color{red}\itshape#1}
+\def \subsubsectionfont #1{\color{yellow}\sffamily#1}
 
 \begin{document}
+	\heading{Sumário}
 	\maketoc
 
 	\section{Texto}
@@ -233,15 +227,15 @@
 	\subsection{Texto}
 	\subsubsection{Texto}
 \end{document}
-\codeoff
+\endverb
 
 \section{Alíneas}
 
-Use o ambiente \cs{topics} para criar alíneas. Ele dispõe de dois níveis sendo que o segundo usa um travessão como marcador conforme o exemplo em \ref{cd:topics}. Naturalmente, é permitido usar \cs\label\ após um item.
+Use o ambiente |topics| para criar alíneas. Ele dispõe de dois níveis sendo que o segundo usa um travessão como marcador conforme o exemplo em \ref{cd:topics}. Naturalmente, é permitido usar |\label| após um item.
 
 \legend{code}{Alíneas} \src\me
 \label{cd:topics}
-\codeon
+\begverb
 \begin{topics}
 	\item \label{al:x} 1
 		\begin{topics}
@@ -252,17 +246,15 @@
 	\item \label{al:y} 2
 	\item 3
 \end{topics}
-\codeoff
+\endverb
 
 \section{Áreas de legenda}
 
-Use \cs\place\ para inserir áreas de legenda como mostrado em \ref{cd:place}. Mas existem condições: \cs\place\ deve vir por último e \cs\label\ precisa estar depois de \cs\legend. Além disso, existe a possibilidade de alterar o espaço vertical acima e abaixo de uma área de legenda com \cs\def\cs\aboveplace\cc{valor}\ e \cs\def\cs\belowplace\cc{valor}.
+Use |\place{<obj>}| para inserir áreas de legenda como mostrado em \ref{cd:place}. Mas existem condições: |\place| deve vir por último e |\label| precisa estar depois de |\legend{<tipo de obj>}{<legenda>}|. Além disso, existe a possibilidade de alterar o espaço vertical acima e abaixo de uma área de legenda com |\def\aboveplace{<valor>}| e |\def\belowplace{<valor>}|.
 
 \legend{code}{Áreas de legenda} \src\me
 \label{cd:place}
-\codeon
-\usepackage{graphicx}
-
+\begverb
 \begin{document}
 	\legend{figure}{Um título}
 	\src{\texttt{www.site.com.br}. Acesso em 01 jan. 2020.}
@@ -271,62 +263,51 @@
 
 	Ver \ref{fig:teste}.
 \end{document}
-\codeoff
+\endverb
 
-O leitor pode querer definir uma nova área de legenda usando, por exemplo, a instrução: \cs\definelegendplace\ccval{diagram}\ccval{Diagrama}\ccval{Lista de diagramas}\ccval{diag.\cs\,\cs#1}\ccval{lod} que vai criar o comando \cs\makelod\ para escrever no documento as entradas do arquivo auxiliar .lod.
+O leitor pode querer definir uma nova área de legenda usando, por exemplo, a instrução |\definelegendplace{diagram}{Diagrama}{diag.\,#1}{lod}| criará o comando |\makelod| para escrever no documento as entradas do arquivo auxiliar .lod.
 
-\section{Formatação de {\ttfamily\protect\textbackslash cite} e referências}
+\section{Formatação de {\ttfamily\textbackslash\lowercase{cite}} e referências}
 
-Até o momento o \pkg{abntexto} não possui macros para formatação de \cs\cite\ e referências. Utilize \cs{\usepackage[style=abnt]\{biblatex\}}.
+Até o momento o |abntexto| não possui macros para formatação de |\cite| e referências. Utilize |\usepackage[style=abnt]{biblatex}|.
 
 \section{Citações}
 
-Para inserir aspas em citações diretas use \cs\enquote\ccval{texto}\cs\cite\cc{key}. Mas, se tratando de citações diretas com mais de três linhas, alterne para \cs\Enquote\ccval{texto \cs\cite\cc{key}}.
+Para inserir aspas em citações diretas use |\enquote{texto}\cite{<key>}|. Mas, se tratando de citações diretas com mais de três linhas, alterne para |\Enquote{texto \cite{<key>}}|.
 
 \section{Apêndice e anexo}
 
-Com os comandos \cs\appendix\ e \cs\annex\ as próximas seções serão formatadas com os indicativos desejados: “Apêndice 1 --- \dots” ou “Anexo 1 --- \dots” (ver \ref{cd:appendix}).
+Com os comandos |\appendix| e |\annex| você pode inserir apêndices e anexos junto dos indicativos desejados: “Apêndice 1 --- \dots” ou “Anexo 1 --- \dots” (ver \ref{cd:appendix}).
 
 \legend{code}{Anexos e apêndices} \src\me
 \label{cd:appendix}
-\codeon
+\begverb
 \begin{document}
-	\appendix
-	\section{Lorem}
-	\section{Lipsum}
+	\appendix{Lorem}
+	\appendix{Lipsum}
 
-	\annex
-	\section{Lorem}
-	\section{Lipsum}
+	\annex{Lorem}
+	\annex{Lipsum}
 \end{document}
-\codeoff
+\endverb
 
-Pode-se alterar a largura dos rótulos das entradas de apêndice/anexo no sumário redefinindo \cs\appendixlabelwidth \,/\,\cs\annexlabelwidth.
+Pode-se alterar a largura dos rótulos das entradas de apêndice/anexo no sumário redefinindo |\appendixlabelwidth|\,/\,|\annexlabelwidth|.
 
-%\end{document} 
-
 \newpage
 
-\erase
-\corrprinton
-\printbibliography
-\corrprintoff
-\enderase
+\begcorrprint{Referências}
+	\printbibliography
+\endcorrprint
 
 \newpage
 
-\let\origsection=\section
-\appendix
+\appendix{Glossário}
 
-\section{Glossário}
+Você pode criar glossários com o pacote |glossaries|, como em \ref{cd:gloss}.
 
-%\countsection=0
-%\def\sec#1{{\def\addcontentsline##1##2##3{}\origsection{#1}}}
-%\sec{Glossário}
-
-Você pode criar glossários com o pacote \pkg{glossaries}.
-
-\codeon
+\legend{code}{Glossário} \src\me
+\label{cd:gloss}
+\begverb
 \usepackage{lipsum}
 \usepackage{glossaries}
 
@@ -339,18 +320,19 @@
 \begin{document}
 	O \gls{metalism} e o \gls{lip}.
 
-	\corrprinton
+	\begcorrprint{Glossário}
 		\printnoidxglossary
-	\corrprintoff
+	\endcorrprint
 \end{document}
-\codeoff
+\endverb
 
-\section{Lista de siglas}
+\appendix{Lista de siglas}
 
-O pacote \pkg{glossaries} também serve para criar uma lista de siglas.
+O |glossaries.sty| também serve para criar uma lista de siglas, conforme \ref{cd:acro}.
 
-\codeon
-\usepackage{lipsum}
+\legend{code}{Siglas} \src\me
+\label{cd:acro}
+\begverb
 \usepackage[acronym]{glossaries}
 
 \makenoidxglossaries
@@ -358,29 +340,29 @@
 \newacronym{ibge}{IBGE}{Instituto Brasileiro de Geografia e Estatística}
 \newacronym{html}{HTML}{Hypertext Markup Language}
 
+\def\acr#1{\gls{#1}}
+
 \begin{document}
-	1ª chamada: \gls{ibge}, \gls{html}.
+	1ª chamada: \acr{ibge}, \acr{html}.
 	
-	2ª chamada: \gls{ibge}, \gls{html}.
+	2ª chamada: \acr{ibge}, \acr{html}.
 
-	\corrprinton
+	\begcorrprint{Lista de siglas}
 		\def\acronymname{Lista de siglas}
 		\printnoidxglossary[type=acronym]
-	\corrprintoff
+	\endcorrprint
 \end{document}
-\codeoff
+\endverb
 
-\section{\emph{Feedback}}
+\appendix{\emph{Feedback}}
 Sugestões, relatos de \emph{bugs} e doações são bem-vindas.
 
-\section{Código-fonte}
-
 % MACROS PARA O CÓDIGO-FONTE
 % ================================================
 
-\makeatletter
+\appendix{Código-fonte}
 
-\definecolor{bg}{cmyk}{0,0.06,0,0}
+\definecolor{background}{cmyk}{0,0.08,0,0}
 \definecolor{comment}{cmyk}{0.9,0,0,0.1}
 \definecolor{letter}{cmyk}{0,0,0,.8}
 
@@ -387,63 +369,36 @@
 \parskip=0pt plus.2ex minus.1ex
 
 \countsection=0
-\def\addcontentsline#1#2#3{}
+\def\addtoext#1#2#3{}
 \def\sectionfont{\itshape}
-\def\sec#1\par{\origsection{#1}}
+\def\sec#1\par{\section{#1}}
+\def\verbfont{\raggedright\ttfamily\small\sloppy}
+\def\codesep{2mm}
+\def\leftsep{5mm}
 
-{\catcode`\^^M=13 
-	\gdef\codepercent#1^^M{{\bfseries\color{comment}\@percentchar#1^^M}}
-}
+\lstnewenvironment{code}{\lstset{
+	frame=single,
+	framerule=0pt,
+	framesep=\codesep,
+	xleftmargin=\dimexpr\codesep+\leftsep,
+	xrightmargin=\codesep,
+	framexleftmargin=\leftsep,
+	firstnumber=last,
+	numbers=left,
+	numbersep=6pt,
+	numberstyle=\fontsize{8pt}{9pt}\selectfont,
+	basicstyle=\verbfont,
+	commentstyle=\color{blue}\bfseries,
+	comment=[l]{\%},
+	columns=fullflexible,
+	tabsize=3,
+	backgroundcolor=\color{background},
+	literate=
+		{\ }{ }1 {\^^M\%}{}2
+}}{}
 
-\def\codecatcodes{\let\do=\dodef \dospecials}
-
-\long\def\bcode{\par\begingroup \codecatcodes
-	\adef{\^^I}{\space\space\space}%
-	\adef{\^^M}{\par\leavevmode}%
-	\adef{\ }{\space}%
-	\adef{\%}{\codepercent}%
-	\startcode
+{\catcode`\!=14 \catcode`\%=9
+	\input abntexto.cls
 }
-{\catcode`\%=13 \catcode`\ =13 \catcode`\^^M=13 \catcode`\|=0 \catcode`\\=12 
-	|long|gdef|startcode #1^^M% |ecode{|codefont{#1}|par|endgroup}
-}
 
-\def\codefont{\raggedright\fontsize{9pt}{10pt}\selectfont\ttnoligs\addfontfeature{Color=letter}\bgbox}
-
-\newdimen\tmpdim
-\newdimen\coloronwd \coloronwd=\hsize
-\newdimen\hh \hh=3pt \def\hhkern{\kern\hh}
-\newdimen\vv \vv=4pt \def\vvkern{\kern\vv}
-
-\splitmaxdepth=4pt
-
-\def\coloron#1{\leavevmode \setbox0=\vbox{\vvkern \hsize=\coloronwd \advance\hsize-2\hh
-		\hbox{\hhkern\vbox{#1}\hhkern}\vvkern}%
-	\coloronA \box0
-}
-\def\coloronA{\rlap{\color{bg}\vrule width\wd0 height\ht0 depth\dp0}}
-
-\def\splitcoloron{\tmpdim=\pagegoal \advance\tmpdim by-2\vv
-	\setbox4=\vsplit2 to\tmpdim
-	\coloron{\unvbox4}\par
-	\coloron{\unvbox2}%
-}
-\long\def\bgbox#1{\par \vskip\medskipamount
-	\setbox0=\vbox{\vvkern \hsize=\coloronwd \advance\hsize-2\hh
-		\hbox{\hhkern\vbox{#1}\hhkern}\vvkern}%
-	\ifdim \ht0>\pagegoal
-		\setbox2=\vbox{\advance\hsize-2\hh #1}%
-		\splitcoloron
-	\else
-		\coloron{#1}%
-	\fi
-	\par \vskip\smallskipamount
-}
-
-\def\srccatcodes{\catcode`\!=14 \catcode`\%=9 \catcode`\|=0 }
-
-\begingroup \raggedbottom \parskip=0pt \srccatcodes 
-\input abntexto.cls%
-\par\endgroup 
-
 \end{document}

Modified: trunk/Master/texmf-dist/tex/latex/abntexto/abntexto.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/abntexto/abntexto.cls	2023-07-27 19:51:15 UTC (rev 67742)
+++ trunk/Master/texmf-dist/tex/latex/abntexto/abntexto.cls	2023-07-27 19:52:07 UTC (rev 67743)
@@ -1,6 +1,6 @@
 %! Public Domain Software
-%! 2023-01-31
-%! 2.0.0-alpha
+%! 2023-07-26
+%! 3.0.0-alpha
 %! Elayson
 %! abntexto.classe at gmail.com
 
@@ -21,42 +21,31 @@
 
 % \sec RECOMENDAÇÕES
 
-% Macros internas não podem ser modificadas ou usadas diretamente. Isso é porque essas macros podem ser redefinidas ou até renomeadas em futuras versões desta classe. Por macros internas entende-se aquelas com o prefixo do pacote em questão, neste caso, \cs{tnba@}. Se você precisa de algum comando interno, defina outro sem anexar o prefixo.
+% Macros internas não podem ser modificadas ou usadas diretamente. Isso é porque essas macros podem ser redefinidas ou até renomeadas em futuras versões desta classe. Por macros internas entende-se aquelas com o prefixo do pacote em questão, neste caso, |tnba@|. Se você precisa de algum comando interno, defina outro sem anexar o prefixo.
 
 % \sec PRÉ-CONFIGURAÇÕES
 
-% Identificação do formato \TeX\ e da classe. Apenas o pacote \pkg{keyval} é carregado no \pkg{abntexto}.
+% Identificação do formato \TeX\ e da classe, carregando a classe |article| e os únicos pacotes do |abntexto|.
 
-% |bcode !------------------------------------------------
+% \begin{code} !------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
 
-\ProvidesClass{abntexto}[2023-01-31 2.0.0-alpha Preparation of works in ABNT standards]
+\ProvidesClass{abntexto}[2023-07-26 3.0.0-alpha Preparation of works in ABNT standards]
 
-\RequirePackage{keyval}
-% |ecode !------------------------------------------------
+\LoadClass{article}
+\RequirePackage{geometry}
+\RequirePackage{graphicx}
+% \end{code}   !------------------------------------------------
 
-% Definição de um sistema \emph{chave=valor} pessoal e de macros auxiliares.
+% Um atalho para |\ClassError|.
 
-% |bcode !------------------------------------------------
-\def\tnba at key{\define at key{tnba@\tnba at keyfamily}}
-\def\tnba at setkeys#1{\setkeys{tnba@#1}}
-
-\def\tnba at addto#1#2{\expandafter\def\expandafter#1\expandafter{#1#2}}
-
-\newif \iftnba at inbody
-\AddToHook{begindocument}{\tnba at inbodytrue}
-% |ecode !------------------------------------------------
-
-% Alertas, mensagens, \emph{debug}.
-
-% |bcode !------------------------------------------------
-\def\tnba at warning{\ClassWarningNoLine{abntexto}}
+% \begin{code} !------------------------------------------------
 \def\tnba at error#1{\ClassError{abntexto}{#1}{}}
-% |ecode !------------------------------------------------
+% \end{code}   !------------------------------------------------
 
-% Condicionais para identificação da extensão \TeX. 
+% Condicionais para identificação da extensão TeX. 
 
-% |bcode !------------------------------------------------
+% \begin{code} !------------------------------------------------
 \newif \iftnba at PDFTEX
 \newif \iftnba at XETEX
 \newif \iftnba at LUATEX
@@ -65,23 +54,23 @@
 	\tnba at PDFTEXtrue \else
 	\tnba at XETEXtrue  \fi \else
 	\tnba at LUATEXtrue     \fi
-% |ecode !------------------------------------------------
+% \end{code}   !------------------------------------------------
 
 % \sec FONTE TIPOGRÁFICA
 
-% Apenas o tamanho 12\,pt está definido. Defina outros usando \cs\definefontsize\cc{id}\hfil\break \cc{definições}.
+% Apenas o tamanho 12\,pt está definido. Defina outros usando |\definefontsize{<id>}{<definições>}|.
 
-% |bcode !------------------------------------------------
+% \begin{code} !------------------------------------------------
 \def\definefontsize#1#2{\@namedef{tnba at fontsize@#1}{#2}}
-
 \def\setfontsize#1{\ifcsname tnba at fontsize@#1\endcsname
 	\def\tnba at setfontsizehook{\csname tnba at fontsize@#1\endcsname}\else
-	\let\normalsize=\relax \tnba at error{Tamanho de fonte ''#1'' desconhecido}\relax \fi
+	\tnba at error{Tamanho de fonte "#1" desconhecido. Defina um novo usando \noexpand\definefontsize}\fi
 }
 
+\@onlypreamble \definefontsize
 \@onlypreamble \setfontsize
 
-\def\sizedef#1#2#3#4{\DeclareRobustCommand#1{\fontsize{#2}{#3}\selectfont#4}}
+\def\sizedef#1#2#3#4{\DeclareRobustCommand#1{\fontsize{#2}{#3}\selectfont#4\relax}}
 
 \def\spacing#1{\def\currspacing{#1}%
 	\@tempdima=\f at size pt \baselineskip=#1\@tempdima \ignorespaces
@@ -88,7 +77,6 @@
 }
 
 \def\currspacing{1.5}
-\def\normalsize{}
 \def\tnba at setfontsizehook{}
 
 \AddToHook{begindocument}{%
@@ -100,69 +88,38 @@
 \def\singlesp{\baselineskip=\normalbaselineskip}
 \def\onehalfsp{\spacing{1.5}}
 \def\doublesp{\spacing{2}}
-% |ecode !------------------------------------------------
+% \end{code}   !------------------------------------------------
 
 % \sec \emph{LAYOUT}
 
-% Se você precisa de configurações de página mais avançadas use o pacote \pkg{geometry}, mas não use \cs\setlayout\ e \cs\geometry\ simultaneamente.
+% O estilo de página |\pretextual| omite a numeração de página e desliga o modo |twoside| porque os elementos pré-textuais que compreendem as folhas da capa à do sumário, devem constar no anverso da página, ou seja, na “frente” da folha.
 
-% |bcode !------------------------------------------------
-\iftnba at LUATEX
-	\protected\edef\pdfhorigin {\pdfvariable horigin}
-	\protected\edef\pdfvorigin {\pdfvariable vorigin}
-	\let\pdfpagewidth=\pagewidth
-	\let\pdfpageheight=\pageheight
-\fi
+% A instrução |\textual| põe a numeração de página no topo direito nas páginas ímpares e no topo esquerdo em paginas pares. Além disso, |twoside| vai espelhar as margens horizontais.
 
-\def \tnba at keyfamily {setlayout}
-
-\tnba at key{paper}        {\csname tnba at papersize@#1\endcsname}
-\tnba at key{width}        {\def\tnba at W{#1}}
-\tnba at key{height}       {\def\tnba at H{#1}}
-\tnba at key{left}         {\def\tnba at L{#1}}
-\tnba at key{right}        {\def\tnba at R{#1}}
-\tnba at key{top}          {\def\tnba at T{#1}}
-\tnba at key{bottom}       {\def\tnba at B{#1}}
-\tnba at key{twoside}[true]{\csname @twoside#1\endcsname}
-
-\def \setlayout #1{\tnba at setkeys{setlayout}{#1}%
-	\paperwidth=\tnba at W    \paperheight=\tnba at H
-	\oddsidemargin=\tnba at L \evensidemargin=\tnba at R
-	\textwidth=\paperwidth \textheight=\paperheight
-	\topmargin=\tnba at T
-	\headheight=12pt 
-	\headsep=1cm 
-	\advance\topmargin-\headheight \advance\topmargin-\headsep
-	\advance\textwidth-\tnba at L     \advance\textwidth-\tnba at R
-	\advance\textheight-\tnba at T    \advance\textheight-\tnba at B
-	\tnba at setlayoutA
-}
-
-\def \tnba at setlayoutA {%
-	\iftnba at XETEX
-		\advance\oddsidemargin-1in \advance\evensidemargin-1in \advance\topmargin-1in 
-		\pdfpagewidth=\paperwidth  \pdfpageheight=\paperheight
-	\else
-		\pdfhorigin=0pt            \pdfvorigin=0pt 
-		\pdfpagewidth=\paperwidth  \pdfpageheight=\paperheight
-	\fi
-}
-
-\def\definepapersize#1#2#3{\@namedef{tnba at papersize@#1}{\def\tnba at W{#2}\def\tnba at H{#3}}}
-% |ecode !------------------------------------------------
-
-% O estilo de página \cs\pretextual\ omite a numeração de página e desliga o modo \cs{twoside} porque os elementos pré-textuais que compreendem as folhas da capa à do sumário, devem constar no anverso da página, ou seja, na “frente” da folha.
-
-% A instrução \cs\textual\ põe a numeração de página no topo direito nas páginas ímpares e no topo esquerdo em paginas pares. Além disso, \cs{twoside} vai espelhar as margens horizontais.
-
-% |bcode !------------------------------------------------
-\def\pretextual{\setlayout{twoside=false}%
+% \begin{code} !------------------------------------------------
+\def\pretextual{%
+	\newgeometry{
+		twoside=false,
+		left   = 3cm,
+		top    = 3cm,
+		right  = 2cm,
+		bottom = 2cm
+	}%
+	\spacing{1.5}%
 	\let\@oddhead=\empty
 	\let\@evenhead=\empty
 	\let\@oddfoot=\empty
 	\let\@evenfoot=\empty
 }
-\def\textual{\setlayout{twoside=true}%
+\def\textual{%
+	\newgeometry{
+		twoside=true,
+		left   = 3cm,
+		top    = 3cm,
+		right  = 2cm,
+		bottom = 2cm
+	}%
+	\spacing{1.5}%
 	\def\@oddhead{\hfil\small\thepage}%
 	\def\@evenhead{\small\thepage\hfil}%
 	\def\@oddfoot{}%
@@ -169,63 +126,61 @@
 	\def\@evenfoot{}%
 	\parindent=1.5cm 
 }
-% |ecode !------------------------------------------------
+% \end{code}   !------------------------------------------------
 
 % \sec SUMÁRIO
 
-% Aqui, a macro \cs\extline\ foi baseada em \cs\@dottedtocline, do kernel do \LaTeX. Ela não é uma instrução privada, ou seja, com prefixo interno, porque existe a chance de o leitor querer redefiní-la.
+% Aqui, a macro |\extline| foi baseada em |\@dottedtocline|, do kernel do LaTeX. Ela não é uma instrução privada, ou seja, com prefixo interno, porque existe a chance de o leitor querer redefiní-la.
 
-% |bcode !------------------------------------------------
-\newdimen\extlabelwidth
+% \begin{code} !------------------------------------------------
 
-\def\thepage{\the\c at page}
-
 \def\extpagenumwidth{1.55em}
 \def\extrightmargin{2.55em}
 
-\def\extline#1#2#3#4#5{\vskip0pt plus.2pt
-	\extlabelwidth=#2
+\def\extline#1#2#3#4#5{%
 	\begingroup
-		\parindent=#1 \leftskip=#1
-		\rightskip=\extrightmargin \parfillskip=-\rightskip
-		\leavevmode #3{}\advance\leftskip\extlabelwidth \hskip-\leftskip #3{#4}\nobreak\extleaders\nobreak
+		\parindent=0pt \leftskip=#1
+		\rightskip=\extrightmargin\relax \parfillskip=-\rightskip
+		#3{\advance\leftskip#2\relax \hskip-#2\relax #4}%
+		\nobreak\extleaders\nobreak
 		\hbox to\extpagenumwidth{\hfil #5\kern-1pt\kern1pt}\nbpar
 	\endgroup
 }
 \def\extleaders{\leaders\hbox{$\mathsurround=0pt \mkern4.5mu\hbox{.}\mkern4.5mu$}\hfill}
 
-\def \l at toci #1#2{\addpenalty{351}\addvspace{1em plus1pt}%
-	\extlabelwidth=\toclabelwidth
-	\begingroup
-		\parindent=0pt \rightskip=\extrightmargin \parfillskip=-\rightskip
-\leavevmode \tocifont{}\advance\leftskip\extlabelwidth
-		\hskip-\leftskip \tocifont{#1}\nobreak\hfil\nobreak
-		\hbox to\extpagenumwidth{\hfil #2\kern-1pt\kern1pt}\par
-	\endgroup
-}
+\def \l at part          {\addpenalty{-300}\addvspace{2.25em plus1pt}%
+                       \extline{0pt}{\toclabelwidth}{\def\extleaders{\hfil}\tocpartfont}}
+\def \l at chapter       {\addpenalty{-300}\addvspace{1em plus1pt}%
+                       \extline{0pt}{\toclabelwidth}{\def\extleaders{\hfil}\tocchapterfont}}
+\def \l at section       {\addpenalty{-300}\addvspace{1em plus1pt}%
+                       \extline{0pt}{\toclabelwidth}{\def\extleaders{\hfil}\tocsectionfont}}
+\def \l at subsection    {\vskip0pt plus.2pt
+                       \extline{0pt}{\toclabelwidth}{\tocsubsectionfont}}
+\def \l at subsubsection {\vskip0pt plus.2pt
+                       \extline{0pt}{\toclabelwidth}{\tocsubsubsectionfont}}
+\def \l at paragraph     {\vskip0pt plus.2pt
+                       \extline{0pt}{\toclabelwidth}{\tocparagraphfont}}
+\def \l at subparagraph  {\vskip0pt plus.2pt
+                       \extline{0pt}{\toclabelwidth}{\tocsubparagraphfont}}
 
-\def \l at tocii  {\extline{0pt}{\toclabelwidth}{\tociifont}}
-\def \l at tociii {\extline{0pt}{\toclabelwidth}{\tociiifont}}
-\def \l at tociv  {\extline{0pt}{\toclabelwidth}{\tocivfont}}
-\def \l at tocv   {\extline{0pt}{\toclabelwidth}{\tocvfont}}
-% |ecode !------------------------------------------------
+\def\toclabelbox#1{\hbox to\toclabelwidth{#1\hss}}
+% \end{code}   !------------------------------------------------
 
 % \sec SECIONAMENTO
 
-% O comando \cs\hangfrom\ foi retirado do kernel. Ele vai ser útil na formatação das seções.
+% O comando |\hangfrom| é oriundo do kernel. Ele vai ser útil na formatação das seções.
 
-% \cs\hreftocline\ habilita hyperlinks no sumário se o \pkg{hyperref} estiver carregado.
-
-% |bcode !------------------------------------------------
+% \begin{code} !------------------------------------------------
 \let\hangfrom=\@hangfrom
 \def\nbpar{{\interlinepenalty=10000\par}}
-\def\advcount#1{\advance#1by1 }
-\def\addtotoc{\hreftocline\currsecname \addcontentsline{toc}}
-% |ecode !------------------------------------------------
+\def\trytextual{\textual \let\textual=\relax}
+% \end{code}   !------------------------------------------------
 
-% |bcode !------------------------------------------------
+% \begin{code} !------------------------------------------------
 \newcount\countseclevel
 
+\newcount\countpart
+\newcount\countchapter
 \newcount\countsection
 \newcount\countsubsection
 \newcount\countsubsubsection
@@ -232,138 +187,223 @@
 \newcount\countparagraph
 \newcount\countsubparagraph
 
+\def\thepart{\@Roman\countpart}
+\def\thechapter{\the\countchapter}
 \def\thesection{\the\countsection}
 \def\thesubsection{\thesection .\the\countsubsection}
 \def\thesubsubsection{\thesubsection .\the\countsubsubsection}
 \def\theparagraph{\thesubsubsection .\the\countparagraph}
 \def\thesubparagraph{\theparagraph .\the\countsubparagraph}
-% |ecode !------------------------------------------------
+% \end{code}   !------------------------------------------------
 
 % Nesta parte estão definidos os comandos secionais. Nenhum destes comandos são internos, caso o leitor queira redefiní-los.
 
-% |bcode !------------------------------------------------
-\def\recountseci   {\countsubsection=0 \recountsecii}
-\def\recountsecii  {\countsubsubsection=0 \recountseciii}
-\def\recountseciii {\countparagraph=0 \recountseciv}
-\def\recountseciv  {\countsubparagraph=0 }
+% \begin{code} !------------------------------------------------
+\def\recountchapter       {\countsection=0 \recountsection}
+\def\recountsection       {\countsubsection=0 \recountsubsection}
+\def\recountsubsection    {\countsubsubsection=0 \recountsubsubsection}
+\def\recountsubsubsection {\countparagraph=0 \recountparagraph}
+\def\recountparagraph     {\countsubparagraph=0 }
 
-\def\noindentfirst{\global\everypar={\global\everypar={}\setbox7=\lastbox}}
-\def\tryindentfirst{}
-
-\def\startsection#1{\advcount\countsection \recountseci
+\def\printpart#1{%
+	\begingroup
+		\centering\huge\bfseries Parte \thepart
+		\vskip20pt
+		\Huge\bfseries #1\nbpar
+	\endgroup 
+}
+\def\printchapter#1{%
+	\begingroup
+		\raggedright\huge\bfseries Capítulo \thechapter
+		\vskip20pt
+		\Huge\bfseries #1\nbpar
+	\endgroup 
+}
+\def\printsection#1{{%
 	\hangfrom{\sectionfont\thesection\quad}%
-	{\sectionfont{#1}\nbpar}%
-	\tryindentfirst
-}
-\def\startsubsection#1{\advcount\countsubsection \recountsecii
+	\sectionfont{#1}\nbpar
+}}
+\def\printsubsection#1{{%
 	\hangfrom{\subsectionfont\thesubsection\quad}%
-	{\subsectionfont{#1}\nbpar}%
-	\tryindentfirst
-}
-\def\startsubsubsection#1{\advcount\countsubsubsection \recountseciii
+	\subsectionfont{#1}\nbpar
+}}
+\def\printsubsubsection#1{{%
 	\hangfrom{\subsubsectionfont\thesubsubsection\quad}%
-	{\subsubsectionfont{#1}\nbpar}%
-	\tryindentfirst
-}
-\def\startparagraph#1{\advcount\countparagraph \recountseciv
+	\subsubsectionfont{#1}\nbpar
+}}
+\def\printparagraph#1{{%
 	\hangfrom{\paragraphfont\theparagraph\quad}%
-	{\paragraphfont{#1}\nbpar}%
-	\tryindentfirst
-}
-\def\startsubparagraph#1{\advcount\countsubparagraph
+	\paragraphfont{#1}\nbpar
+}}
+\def\printsubparagraph#1{{%
 	\hangfrom{\subparagraphfont\thesubparagraph\quad}%
-	{\subparagraphfont{#1}\nbpar}%
-	\tryindentfirst
-}
-% |ecode !------------------------------------------------
+	\subparagraphfont{#1}\nbpar
+}}
+% \end{code}   !------------------------------------------------
 
-% A instrução \cs\setcurrlabel\ ensina a forma como \cs\label's devem ser referenciados. Esse comando pode ser útil em outros contextos.
+% A instrução |\setlabel| ensina a forma como |\label|'s devem ser referenciados. O comando |\setlabel| será útil em outros contextos.
 
-% |bcode !------------------------------------------------
-\def\setcurrlabel#1{\def\@currentlabel{#1}}
+% \begin{code} !------------------------------------------------
+\def\partlevel          {-1}
+\def\chapterlevel       {0}
+\def\sectionlevel       {1}
+\def\subsectionlevel    {2}
+\def\subsubsectionlevel {3}
+\def\paragraphlevel     {4}
+\def\subparagraphlevel  {5}
 
-\def\cfsection       {\setcurrlabel{secão\,\thesection}}
-\def\cfsubsection    {\setcurrlabel{subseção\,\thesubsection}}
-\def\cfsubsubsection {\setcurrlabel{subseçao\,\thesubsubsection}}
-\def\cfparagraph     {\setcurrlabel{subseçao\,\theparagraph}}
-\def\cfsubparagraph  {\setcurrlabel{subseçao\,\thesubparagraph}}
+\def\setlabel#1{\def\@currentlabel{#1}}
 
-\def\identifysection       {\def\currsecname{section}\countseclevel=1 \cfsection}
-\def\identifysubsection    {\def\currsecname{subsection}\countseclevel=2 \cfsubsection}
-\def\identifysubsubsection {\def\currsecname{subsubsection}\countseclevel=3 \cfsubsubsection}
-\def\identifyparagraph     {\def\currsecname{paragraph}\countseclevel=4 \cfparagraph}
-\def\identifysubparagraph  {\def\currsecname{subparagraph}\countseclevel=5 \cfsubparagraph}
+\def\cfpart          {parte\,\thepart}
+\def\cfchapter       {capítulo\,\thechapter}
+\def\cfsection       {secão\,\thesection}
+\def\cfsubsection    {subseção\,\thesubsection}
+\def\cfsubsubsection {subseçao\,\thesubsubsection}
+\def\cfparagraph     {subseçao\,\theparagraph}
+\def\cfsubparagraph  {subseçao\,\thesubparagraph}
 
-\def\section#1{\par \addpenalty{351}\addvspace\abovesection
-	\identifysection
-	\startsection{#1}%
+\def\part#1{\cleardoublepage\trytextual \leavevmode\vfil
+	\global\advance\countpart by1
+	\countseclevel=\partlevel\relax \setlabel\cfpart
+	\addtoext{toc}{part}{\protect\toclabelbox{\thepart}#1}%
+	\printpart{#1}%
+	\markpart{#1}%
+	\newpage
+}
+\def\chapter#1{\cleardoublepage\trytextual \leavevmode\vskip\abovechapter\relax
+	\global\advance\countchapter by1 {\globaldefs=1 \recountchapter}%
+	\countseclevel=\chapterlevel\relax \setlabel\cfchapter
+	\addtoext{toc}{chapter}{\protect\toclabelbox{\thechapter}#1}%
+	\printchapter{#1}%
+	\markchapter{#1}%
+	\par\nobreak \vskip\belowchapter\relax
+}
+\def\section#1{\trytextual \addpenalty{-300}\addvspace\abovesection
+	\global\advance\countsection by1 {\globaldefs=1 \recountsection}%
+	\countseclevel=\sectionlevel\relax \setlabel\cfsection
+	\addtoext{toc}{section}{\protect\toclabelbox{\thesection}#1}%
+	\printsection{#1}%
 	\marksection{#1}%
-	\addtotoc{toci}{\protect\toclabelbox{\thesection}#1}%
-	\par\nobreak \vskip\belowsection
+	\par\nobreak \vskip\belowsection\relax % Esse \par é necessário.
 }
-\def\subsection#1{\par \addpenalty{351}\addvspace\abovesubsection
-	\identifysubsection
-	\startsubsection{#1}%
+\def\subsection#1{\addpenalty{-300}\addvspace\abovesubsection
+	\global\advance\countsubsection by1 {\globaldefs=1 \recountsubsection}%
+	\countseclevel=\subsectionlevel\relax \setlabel\cfsubsection
+	\addtoext{toc}{subsection}{\protect\toclabelbox{\thesubsection}#1}%
+	\printsubsection{#1}%
 	\marksubsection{#1}%
-	\addtotoc{tocii}{\protect\toclabelbox{\thesubsection}#1}%
-	\par\nobreak \vskip\belowsubsection
+	\par\nobreak \vskip\belowsubsection\relax
 }
-\def\subsubsection#1{\par \addpenalty{351}\addvspace\abovesubsubsection
-	\identifysubsubsection
-	\startsubsubsection{#1}%
-	\marksubsubsection{#1}%
-	\addtotoc{tociii}{\protect\toclabelbox{\thesubsubsection}#1}%
-	\par\nobreak \vskip\belowsubsubsection
+\def\subsubsection#1{\addpenalty{-300}\addvspace\abovesubsubsection
+	\global\advance\countsubsubsection by1 {\globaldefs=1 \recountsubsubsection}%
+	\countseclevel=\subsubsectionlevel\relax \setlabel\cfsubsubsection
+	\addtoext{toc}{subsubsection}{\protect\toclabelbox{\thesubsubsection}#1}%
+	\printsubsubsection{#1}%
+	\par\nobreak \vskip\belowsubsubsection\relax
 }
-\def\paragraph#1{\par \addpenalty{351}\addvspace\aboveparagraph
-	\identifyparagraph
-	\startparagraph{#1}%
-	\markparagraph{#1}%
-	\addtotoc{tociv}{\protect\toclabelbox{\theparagraph}#1}%
-	\par\nobreak \vskip\belowparagraph
+\def\paragraph#1{\addpenalty{-300}\addvspace\aboveparagraph
+	\global\advance\countparagraph by1 {\globaldefs=1 \recountparagraph}%
+	\countseclevel=\paragraphlevel\relax \setlabel\cfparagraph
+	\addtoext{toc}{paragraph}{\protect\toclabelbox{\theparagraph}#1}%
+	\printparagraph{#1}%
+	\par\nobreak \vskip\belowparagraph\relax
 }
-\def\subparagraph#1{\par \addpenalty{351}\addvspace\abovesubparagraph
-	\identifysubparagraph
-	\startsubparagraph{#1}%
-	\marksubparagraph{#1}%
-	\addtotoc{tocv}{\protect\toclabelbox{\thesubparagraph}#1}%
-	\par\nobreak \vskip\belowsubparagraph
+\def\subparagraph#1{\addpenalty{-300}\addvspace\abovesubparagraph
+	\global\advance\countsubparagraph by1 {\globaldefs=1 \recountsubparagraph}%
+	\countseclevel=\subparagraphlevel\relax \setlabel\cfsubparagraph
+	\addtoext{toc}{subparagraph}{\protect\toclabelbox{\thesubparagraph}#1}%
+	\printsubparagraph{#1}%
+	\par\nobreak \vskip\belowsubparagraph\relax
 }
-% |ecode !------------------------------------------------
+% \end{code}   !------------------------------------------------
 
-% O \cs\@starttoc\ pode ser usado não apenas para criar sumários, mas, também, listas em geral, como listas de figuras, tabelas etc. as quais são armazenadas em arquivos de extensão predefinida, a saber, .toc, .lof, .lot entre outros. Portanto, \cs\makeext\ parece ter mais valor semântico.
+% O |\@starttoc| pode ser usado não apenas para criar sumários, mas também listas em geral, como listas de figuras, tabelas etc. as quais são armazenadas em arquivos de extensão predefinida, a saber, |.toc|, |.lof|, |.lot| entre outros. Portanto, |\makeext| parece ter mais valor semântico.
 
-% |bcode !------------------------------------------------
-\def\toclabelbox#1{\hbox to\extlabelwidth{#1\hfil}}
+% \begin{code} !------------------------------------------------
+
+\def\begcorrprint#1{\begingroup
+	\addtoext{toc}{section}{#1}%
+	\def\section##1##2{\heading{##2}}%
+}
+\def\endcorrprint{\par\endgroup}
+
+\def\usechapters{%
+	\def\l at section{\extline{0pt}{\toclabelwidth}{\tocsectionfont}}%
+	\def\thesection{\thechapter.\the\countsection}%
+	\def\mainseclevel{\chapterlevel}%
+	\def\maintocfont{\tocchapterfont}%
+	\def\begcorrprint##1{\begingroup
+		\addtoext{toc}{chapter}{##1}%
+		\def\section####1####2{\heading{####2}}%
+	}%
+}
+\def\useparts{\usechapters
+	\def \l at chapter {\addpenalty{-300}\addvspace{1em plus1pt}%
+	                 \extline{0pt}{\toclabelwidth}{\tocchapterfont}}%
+}
+
 \def\makeext#1{\@starttoc{#1}}
-\def\tocname{Sumário}
 
+\AddToHook{begindocument}{%
+	\pdfstringdefDisableCommands{\def\toclabelbox#1{#1 }}%
+}
+
+\def\markpart#1{}
+\def\markchapter#1{}
 \def\marksection#1{\markboth
 	{\MakeUppercase{\thesection\quad #1}}%
 	{}%
 }
 \def\marksubsection#1{\markright{\MakeUppercase{\thesubsection\quad #1}}}
+% \end{code}   !------------------------------------------------
 
-\def\hreftocline#1{\Hy at MakeCurrentHrefAuto{#1}%
-	\Hy at raisedlink{\hyper at anchorstart{\@currentHref}\hyper at anchorend}%
+% Os comandos a seguir são usados pelo |hyperref.sty| na criação de \emph{bookmarks} em PDFs.
+
+% \begin{code} !------------------------------------------------
+\def\toclevel at part          {\partlevel}
+\def\toclevel at chapter       {\chapterlevel}
+\def\toclevel at section       {\sectionlevel}
+\def\toclevel at subsection    {\subsectionlevel}
+\def\toclevel at subsubsection {\subsubsectionlevel}
+\def\toclevel at paragraph     {\paragraphlevel}
+\def\toclevel at subparagraph  {\subparagraphlevel}
+
+\def\mainseclevel{\sectionlevel}
+\def\toclevel at appendix {\mainseclevel}
+\def\toclevel at annex    {\mainseclevel}
+% \end{code}   !------------------------------------------------
+
+% A definição de |\addtoext| depende de o |hyperref.sty| estar presente ou não.
+
+% \begin{code} !------------------------------------------------
+\def\addtoext#1#2#3{\noindent % Esse \noindent é necessário.
+	\setcounter{section at level}{\countseclevel}%
+	\NR at gettitle{#3}%
+	\Hy at MakeCurrentHrefAuto{section*}%
+	\setlength{\Hy at SectionHShift}{0pt}%
+	\Hy at SectionAnchorHref{\@currentHref}%
+	\addcontentsline{#1}{#2}{#3}%
 }
 
-\AddToHook{begindocument}{%
-	\@ifpackageloaded{hyperref}{}{\let\hreftocline=\@gobble}%
+\AddToHook{begindocument/before}{%
+	\@ifpackageloaded{hyperref}{}{%
+		\def\addtoext#1#2#3{\addcontentsline{#1}{#2}{#3}}%
+		\let\pdfstringdefDisableCommands=\@gobble
+	}%
 }
-% |ecode !------------------------------------------------
+% \end{code}   !------------------------------------------------
 
-% A macro \cs\heading\ serve para produzir títulos não contados, como “Sumário”, “Lista de figuras”, “Apêndice” etc.
+% A macro |\heading| serve para produzir títulos não contados, como “Sumário”, “Lista de figuras”, “Apêndice” etc.
 
-% |bcode !------------------------------------------------
-\def\heading#1{\par {\centering \sectionfont{#1}\par}%
-	\nobreak \vskip\belowsection
+% \begin{code} !------------------------------------------------
+\def\heading#1{{\centering \sectionfont{#1}\par}%
+	\vskip\belowsection\relax
 }
-% |ecode !------------------------------------------------
+% \end{code}   !------------------------------------------------
 
-% Após a chamada da instrução \cs\appendix, \cs\section\ vai ser alterado para produzir títulos centralizados com o prefixo “Apêndice”. O mesmo vale para \cs\annex.
+% Aqui estão definidos |\appendix| e |\annex|.
 
-% |bcode !------------------------------------------------
+% \begin{code} !------------------------------------------------
 \newcount\countappendix
 \newcount\countannex
 
@@ -370,211 +410,299 @@
 \def\theappendix{\@Alph\countappendix}
 \def\theannex{\@Alph\countannex}
 
-\def\appendixlabelwidth{6.6em}
-\def\annexlabelwidth{6.2em}
+\def\appendixlabelbox#1{\hbox to\appendixlabelwidth{Apêndice~#1~---~\hss}}
+\def\annexlabelbox#1{\hbox to\annexlabelwidth{Anexo~#1~---~\hss}}
 
-\def\appendixlabelbox#1{\hbox to\appendixlabelwidth{Apêndice~#1~---~\hfil}}
-\def\annexlabelbox#1{\hbox to\annexlabelwidth{Anexo~#1~---~\hfil}}
+\AddToHook{begindocument}{\pdfstringdefDisableCommands{%
+	\def\appendixlabelbox#1{Apêndice #1 }%
+	\def\annexlabelbox#1{Anexo #1 }%
+}}
 
-\def\l at appendix{\l at toci}
-\def\l at annex{\l at toci}
+\def \l at appendix {\addpenalty{-300}\addvspace{1em plus1pt}%
+                  \extline{0pt}{\appendixlabelwidth}{\def\extleaders{\hfil}\maintocfont}}
+\def \l at annex    {\addpenalty{-300}\addvspace{1em plus1pt}%
+                  \extline{0pt}{\annexlabelwidth}{\def\extleaders{\hfil}\maintocfont}}
 
-\def\appendix{\def\section##1{\newpage \global\advcount\countappendix
-	{\centering \sectionfont{Apêndice~\theappendix~---~##1}\par}%
-	\addcontentsline{toc}{appendix}{\protect\appendixlabelbox{\theappendix}##1}%
-	\nobreak \vskip\belowsection
-}}
-\def\annex{\def\section##1{\newpage \global\advcount\countannex
-	{\centering \sectionfont{Anexo~\theannex~---~##1}\par}%
-	\addcontentsline{toc}{annex}{\protect\annexlabelbox{\theannex}##1}%
-	\nobreak \vskip\belowsection
-}}
-% |ecode !------------------------------------------------
+\def\appendix#1{\newpage \global\advance\countappendix by1
+	\addtoext{toc}{appendix}{\protect\appendixlabelbox{\theappendix}#1}%
+	\heading{Apêndice~\theappendix~---~#1}%
+}
+\def\annex#1{\newpage \global\advance\countannex by1
+	\addtoext{toc}{annex}{\protect\annexlabelbox{\theannex}#1}%
+	\heading{Anexo~\theannex~---~#1}%
+}
+% \end{code}   !------------------------------------------------
 
+% Quando |\usechapters| está ativo, o LaTeX, por algum motivo, exige a criação do contador |\c at chapter|.
+
+% \begin{code} !------------------------------------------------
+\newcount\c at chapter
+% \end{code}   !------------------------------------------------
+
 % \sec CITAÇÕES
 
-% Se o pacote \pkg{csquotes} estiver carregado, ele definirá sua própria versão de \cs\enquote, do contrário, o \pkg{abntexto} criará uma.
+% Se o pacote |csquotes| estiver carregado, ele definirá sua própria versão de |\enquote|, do contrário, o |abntexto| criará uma.
 
-% |bcode !------------------------------------------------
+% \begin{code} !------------------------------------------------
 \AddToHook{begindocument}{%
 	\@ifpackageloaded{csquotes}{}{\protected\def\enquote#1{``#1''}}%
 }
 
-\def\Enquote#1{\par\removelastskip
+\long\def\Enquote#1{\par\removelastskip
 	\vskip\baselineskip
 	{\noindent\leftskip=4cm \small #1\nbpar}%
 	\vskip\baselineskip
 }
-% |ecode !------------------------------------------------
+% \end{code}   !------------------------------------------------
 
 % \sec ALÍNEAS
 
-% Estas linhas não foram baseadas no ambiente \cs{list} do LaTeX, portanto, não podem ser personalizadas por pacotes como \cs{enumitem}, por exemplo.
+% Estas linhas não foram baseadas no ambiente |list| do LaTeX, portanto não podem ser personalizadas por pacotes como |enumitem|, por exemplo.
 
-% |bcode !------------------------------------------------
+% \begin{code} !------------------------------------------------
 \newcount\counttopicsdepth
 \newcount\counttopics
+\newcount\countsubtopics
 
-\def\topicsitem{\par\leavevmode \advcount\counttopics 
-	\setcurrlabel{alínea~\@alph\counttopics )}%
-	\noindent \kern \dimexpr -\parindent-\topicslabelwidth \relax
-	\hbox to\topicslabelwidth{\topicsmakelabel\hfil}%
-	\ignorespaces
-}
-\def\topicslabeli{\@alph\counttopics )}
+\def\thetopics{\@alph\counttopics}
+\def\thesubtopics{\the\countsubtopics}
+
+\def\topicslabeli{\thetopics)}
 \def\topicslabelii{---}
 
-\def\topics{\par\penalty51 \advcount\counttopicsdepth
+\def\cftopics{alínea~\thetopics)}
+\def\cfsubtopics{subalínea~\thetopics\thesubtopics}
+
+\def\topics{\par \advance\counttopicsdepth by1 
 	\ifnum\counttopicsdepth=1 \advance\leftskip\parindent \fi
 	\advance\leftskip\topicslabelwidth
-	\edef\topicsmakelabel{\expandafter\noexpand\csname topicslabel\romannumeral\counttopicsdepth\endcsname}%
+	\edef\topicsmakelabel{\expandafter\noexpand
+		\csname topicslabel\romannumeral\counttopicsdepth\endcsname}%
 	\let\item=\topicsitem
-	\tnba at addto\@esphack\ignorespaces
+	\expandafter\def \expandafter\@esphack \expandafter{\@esphack\ignorespaces}%
 }
 \def\endtopics{\par}
-% |ecode !------------------------------------------------
 
-% |bcode !------------------------------------------------
+\def\topicsitem{\par 
+	\ifnum\counttopicsdepth=1
+		\advance\counttopics by1 \setlabel\cftopics
+	\else
+		\advance\countsubtopics by1 \setlabel\cfsubtopics
+	\fi
+	\noindent \kern-\topicslabelwidth
+	\hbox to\topicslabelwidth{\topicsmakelabel\hfil}%
+	\ignorespaces
+}
+% \end{code}   !------------------------------------------------
 
-\newenvironment{description}
-	{\list{}{\labelwidth=0pt \leftmargin=2em \itemindent=-\leftmargin \let\makelabel=\descriptionlabel}}
-	{\endlist}
-
-\def\descriptionlabel#1{\bfseries #1\hskip.5em }
-% |ecode !------------------------------------------------
-
 % \sec TABELAS
 
-% Na classe \cs{article} o ambiente \cs{table} inicia o modo flutuante, mas nesta classe ele é sinônimo de \cs{tabular} porque faz mais sentido para min.
+% Na classe |article| o ambiente |table| inicia o modo flutuante, mas nesta classe ele é sinônimo de |tabular| porque faz mais sentido para min.
 
-% |bcode !------------------------------------------------
+% \begin{code} !------------------------------------------------
+\let\table=\undefined \let\endtable=\undefined
 \newenvironment{table}[1]{\begin{tabular}{#1}}{\end{tabular}}
-% |ecode !------------------------------------------------
+% \end{code}   !------------------------------------------------
 
 % \sec ÁREAS DE LEGENDA
 
-% |bcode !------------------------------------------------
-\def\tnba at getprevdepth{\par\xdef\tnba at getprevdepthA{\the\prevdepth}}
-\def\tnba at useprevdepth{\par\prevdepth=\tnba at getprevdepthA}
-% |ecode !------------------------------------------------
-
-% |bcode !------------------------------------------------
-\def\tnba at lastplacenum{0}
-
-\def\definelegendplace#1#2#3#4#5{\expandafter\newcount\csname count#1\endcsname
+% \begin{code} !------------------------------------------------
+\def\definelegendplace#1#2#3#4{\expandafter\newcount\csname count#1\endcsname
 	\@namedef{#1name}{#2}%
-	\@namedef{p@#1}##1{#4}%
-	\@namedef{ext@#1}{#5}%
-	\@namedef{l@#5i}{\extline{0pt}{\csname #5labelwidth\endcsname}{\csname #5ifont\endcsname}}%
-	\expandafter\edef\csname the#1\endcsname{\expandafter\noexpand\the\csname count#1\endcsname}%
-	\@namedef{#5labelwidth}{10.4ex}%
-	\@namedef{#5labelbox}##1{\hbox to\extlabelwidth{#2~##1~---\hfil}}%
-	\@namedef{#5ifont}{}%
-	\@namedef{make#5}{\heading{#3} \makeext{#5}\twonewpage}%
+	\expandafter\edef\csname the#1\endcsname
+		{\noexpand\the\csname count#1\endcsname}%
+	\expandafter\edef\csname cf#1\endcsname
+		{\unexpanded{#3}\expandafter\noexpand\csname the#1\endcsname}%
+	\@namedef{#1ext}{#4}%
+	\expandafter\edef\csname l@#4i\endcsname
+		{\noexpand\extline{0pt}{\csname #4labelwidth\endcsname}{\expandafter\noexpand\csname #4ifont\endcsname}}%
+	\@namedef{#4labelwidth}{5.4em}%
+	\@namedef{#4labelbox}##1{\hbox to\csname #4labelwidth\endcsname{#2~##1~---\hss}}%
+	\AddToHook{begindocument}{%
+		\pdfstringdefDisableCommands{\@namedef{#4labelbox}##1{##1 }}%
+	}%
+	\@namedef{#4ifont}##1{##1}%
+	\@namedef{make#4}{\makeext{#4}}%
 }
-% |ecode !------------------------------------------------
+% \end{code}   !------------------------------------------------
 
-% |bcode !------------------------------------------------
-\def\tnba at makelegend{\hbox to\hsize{\hfil\tnba at makelegendA\hfil}}
-\def\tnba at makelegendA{%\global\advance\csname count\tnba at savedplace\endcsname by1 
-	\global\advcount{\csname count\tnba at savedplace\endcsname}%
-	\vtop{\setbox0=\hbox{\legendlabel \tnba at savedlegend}%
-		\ifdim\wd0>\legendmaxwidth \hsize=\legendmaxwidth \else \hsize=\wd0 \fi
-		\legendlabel
-		\vtop{\setbox0=\hbox{\legendlabel}\advance\hsize-\wd0 \tnba at savedlegend}%
+% \begin{code} !------------------------------------------------
+\newdimen\placewidth \AddToHook{begindocument}{\placewidth=.43\linewidth}
+\newdimen\savedplacewidth
+
+\def\printlegend#1{\setbox0=\hbox{\legendlabel#1}%
+	\hfil \vtop{\hsize=\ifdim\wd0>\legendmaxwidth \legendmaxwidth\else\wd0 \fi
+		\hangfrom\legendlabel #1%
+		\par\xdef\savedprevdepth{\the\prevdepth}%
 	}%
-	\edef\@tempa{\expandafter\noexpand\csname \csname ext@\tnba at savedplace\endcsname labelbox\endcsname}%
-	\edef\@tempa{\noexpand\addcontentsline{\expandafter\noexpand\csname ext@\tnba at savedplace\endcsname}%
-			 			                 {\expandafter\noexpand\csname ext@\tnba at savedplace\endcsname i}%
-			 			                 {\noexpand\protect\expandafter\noexpand\@tempa{\noexpand\thelegend}\noexpand\tnba at savedlegend}}%
+	\printlegendA
+	\par\nointerlineskip \nobreak\vskip\medskipamount
+}
+\def\printlegendA{%
+	\def \@tempa{\expandafter\noexpand \csname\csname\savedplace ext\endcsname labelbox\endcsname}%
+	\edef\@tempa{\noexpand\addtoext
+		 {\csname \savedplace ext\endcsname}%
+		 {\csname \savedplace ext\endcsname i}%
+		 {\noexpand\protect \@tempa {\thelegend}\noexpand\savedlegend}%
+	}%
 	\@tempa
 }
+\def\printplace#1{\setbox0=\hbox{\ignorespaces#1\unskip}%
+	\global\savedplacewidth=\wd0
+	\hfil \unhbox0
+	\par\nointerlineskip \nobreak\vskip\medskipamount
+}
+\def\printsrc#1{\hfil \vbox{\hsize=\savedplacewidth
+	\raggedright\footnotesize\singlesp
+	\hangfrom\srclabel #1%
+}}
 
-\def\tnba at makesrc{\hbox to\hsize{\hfil\tnba at makesrcA\hfil}\tnba at useprevdepth}
-\def\tnba at makesrcA{\vtop{\hsize=\tnba at placewidth \srclabel 
-	\vtop{\setbox0=\hbox{\srclabel}\advance\hsize-\wd0 \tnba at savedsrc \tnba at getprevdepth}}%
+\def\place#1{\par \vskip\aboveplace\relax
+	\parindent=0pt\parskip=0pt
+	\ifx\empty\savedplace\else \printlegend\savedlegend \fi
+	\printplace{#1}%
+	\printsrc\savedsrc
+	\resetplace
+	\vskip\belowplace\relax
 }
-% |ecode !------------------------------------------------
+\def\subplace#1{\leavevmode
+	\vtop{\hsize=\placewidth \linewidth=\hsize
+		\parindent=0pt\parskip=0pt
+		\ifx\empty\savedplace\else \printlegend\savedlegend \fi
+		\printplace{#1}%
+		\printsrc\savedsrc
+		\par\xdef\savedprevdepth{\the\prevdepth}%
+	}%
+	\resetplace
+	\ignorespaces
+}
+\def\resetplace{%
+	\let\savedplace=\empty
+	\let\savedlegend=\empty
+	\let\savedsrc=\empty
+	\setlabel{}%
+}
 
-% |bcode !------------------------------------------------
-\def\legend#1#2{\removelastskip
-	\def\tnba at savedplace{#1}%
-	\def\tnba at savedlegend{#2}%
-	\setcurrlabel{\csname p@#1\expandafter\endcsname
-		\the\expandafter\numexpr\csname count#1\endcsname+1}%
+\def\legend#1#2{\ifdim\lastskip>0pt \vskip-\lastskip\fi
+	\def\savedplace{#1}%
+	\def\savedlegend{#2}%
+	\ifx\empty#1\else
+		\global\advance\csname count#1\endcsname by1
+		\setlabel{\csname cf#1\endcsname}%
+	\fi
+	\ignorespaces
 }
+\def\sublegend#1#2{\ifdim\lastskip>0pt \vskip-\lastskip\fi
+	\def\savedplace{#1}%
+	\def\savedlegend{#2}%
+	\ifx\empty#1\else
+		\global\advance\@tempcnta by1
+		\setlabel{\csname cf#1\endcsname \@alph\@tempcnta}%
+	\fi
+	\ignorespaces
+}
 
-\def\legendname{\csname \tnba at savedplace name\endcsname}
-\def\thelegend{\the\csname count\tnba at savedplace\endcsname}
+\def\src#1{\ifdim\lastskip>0pt \vskip-\lastskip\fi
+	\ifx\empty#1\else \def\savedsrc{#1}\fi
+	\ignorespaces
+}
 
-\def\src#1{\removelastskip \def\tnba at savedsrc{#1}}
-% |ecode !------------------------------------------------
+\def\legendname{\csname \savedplace name\endcsname}
+\def\thelegend{\the\csname count\savedplace\endcsname}
 
-% |bcode !------------------------------------------------
-\let\tnba at savedplace=\empty
-\let\tnba at savedlegend=\empty
-\let\tnba at savedsrc=\empty
+\def\savedlegend{}
+\def\savedplace{}
+\def\savedsrc{}
 
-\long\def\place#1{\vskip\aboveplace
-	\begingroup
-		\setbox0=\hbox{\ignorespaces#1\unskip}\edef\tnba at placewidth{\the\wd0}%
-		\parindent=0pt 
-		\ifx\tnba at savedplace\empty\else\tnba at makelegend\fi
-		\par\nointerlineskip\nobreak\vskip10pt 
-		\hbox to\hsize{\hfil\box0 \hfil}%
-		\par\nointerlineskip\nobreak\vskip8pt 
-		\tnba at makesrc \par
-	\endgroup
-	\vskip\belowplace
-	\let\tnba at savedplace=\empty
-	\let\tnba at savedlegend=\empty
-	\let\tnba at savedsrc=\empty
-	\let\@currentlabel=\empty
+\newenvironment{multiplace}{\par \ifdim\lastskip>0pt \vskip-\lastskip \fi
+	\vskip\aboveplace\relax
+	\ifx\savedlegend\empty \else
+		\printlegend\savedlegend \par\prevdepth=\savedprevdepth\relax
+	\fi
+	\noindent
+	\def\legendmaxwidth{\placewidth}%
+	\@tempcnta=0 \let\legend=\sublegend \let\legendlabel=\sublegendlabel
+	\let\printlegendA=\relax
+	\ignorespaces
+}{%
+	\unskip
+	\vskip\belowplace\relax
+	\par\prevdepth=\savedprevdepth\relax
 }
-% |ecode !------------------------------------------------
 
+\AddToHook{begindocument}{%
+	\def\LT at makecaption#1#2#3{\LT at mcol{\LT at cols}{c}{%
+		\hbox to\z@{\hss
+			\parbox[t]{\legendmaxwidth}{\def\savedplace{table}\global\setlabel\cftable
+				\legendlabel#3\endgraf\vskip\baselineskip}%
+		\hss}%
+	}}%
+	\def\LT at c@ption#1[#2]#3{%
+		\LT at makecaption#1\fnum at table{#3}%
+		\def\@tempa{#2}%
+		\ifx\@tempa\@empty\else
+		{\let\\\space
+			\addtoext{lot}{lofi}{\protect\lotlabelbox{\the\counttable}#2}}%
+		\fi
+	}%
+}
+
+\AddToHook{begindocument}{\@ifpackageloaded{longtable}{\LTpre=\baselineskip \LTpost=\baselineskip}{}}
+
+\def\longlegend#1{%
+	\caption{#1} \\ \hline \endfirsthead
+	\caption*{#1}\\ \multicolumn{\LT at cols}{r}{\small (continuação)} \\ \hline \endhead
+}
+\def\longsrc#1{\LT at mcol{\LT at cols}{c}{%
+	\hbox to\z@{\hss \savedplacewidth=\legendmaxwidth
+		\parbox[b]{\legendmaxwidth}{\vskip\medskipamount \printsrc{#1\vskip-\baselineskip}}%
+	\hss}%
+}}
+
+\AddToHook{begindocument}{\let\c at table=\counttable}
+% \end{code}   !------------------------------------------------
+
 % \sec NOTAS DE RODAPÉ
 
 % As notas de rodapé também foram modificadas.
 
-% |bcode !------------------------------------------------
-\let\footnotesize=\relax
+% \begin{code} !------------------------------------------------
 \def\@makefnmark{\hbox{\@textsuperscript{\selectfont\@thefnmark}}}
 \def\@makefntext#1{\hangfrom{\@makefnmark\kern2pt}\small #1}
 \def\footnoterule{\kern18pt \hrule width5cm \kern2.6pt }
-% |ecode !------------------------------------------------
+% \end{code}   !------------------------------------------------
 
 % \sec IDENTIFICAÇÃO DO TRABALHO
 
-% |bcode !------------------------------------------------
-\def\Enter{\@ifnextchar[\tnba at EnterS{\tnba at EnterS[]}}
-\def\tnba at EnterS[#1]{\vskip#1\baselineskip}
-
+% \begin{code} !------------------------------------------------
+\def\Enter{\@ifnextchar[\tnba at Enter{\tnba at Enter[]}}
+\def\tnba at Enter[#1]{\vskip#1\baselineskip}
 \def\twonewpage{\newpage\leavevmode\newpage}
 
-\long\def\indexcard#1{\hbox{\vrule\vbox to7.5cm{\hsize=12.5cm \advance\hsize by-2cm \advance\hsize by-0.8pt 
+\long\def\indexcard#1{\hbox{\vrule\vbox to7.5cm{\hsize=12.5cm
+	\advance\hsize by-2cm
+	\advance\hsize by-0.8pt 
 	\hrule\indexcardA{#1}\vss\xindexcardbar\hrule}\vrule}%
 }
-\long\def\indexcardA#1{\hbox spread2cm{\hss\vbox spread2cm{\vss\ttfamily#1\vss}\hss}%
+\long\def\indexcardA#1{\hbox spread2cm{\hss\vbox spread2cm{\vss
+	\ttfamily\small\parindent=1em #1%
+	\vss}\hss}%
 }
 
 \def\xindexcardbar{}
 \def\indexcardbar{\def\xindexcardbar{\hrule\kern1cm}}
 
-\def\judgeline#1{\par {\centering \rule{.7\linewidth}{.6pt}\\ #1\Enter[1.5]}}
+\def\judgeline#1{{\centering \rule{.7\linewidth}{.6pt}\\ #1\par}\Enter[1.5]}
+% \end{code}   !------------------------------------------------
 
-\def\corrprinton{\begingroup \def\section##1##2{\heading{##2}}}
-\def\corrprintoff{\par\endgroup}
-% |ecode !------------------------------------------------
-
 % \sec A VÍRGULA COMO SEPARADOR DECIMAL
 
-% No Brasil e em outro lugares a vírgula é um separador decimal, portanto \verb+$1,2$+ deve produzir um resultado diferente de \verb+$1, 2$+, por exemplo.
+% No Brasil e em outro lugares a vírgula é um separador decimal, portanto |$1,2$| deve produzir um resultado diferente de |$1, 2$|, por exemplo.
 
-% As linhas abaixo são uma cópia da implementação do pacote \pkg{icomma}.
+% As linhas abaixo são uma cópia da implementação do pacote |icomma|.
 
-% |bcode !------------------------------------------------
-{\catcode`,=\active
+% \begin{code} !------------------------------------------------
+{\catcode`,=13
 	\gdef,{\futurelet\@let at token\tnba at smartcomma}
 }
 \def\tnba at smartcomma{%
@@ -583,13 +711,15 @@
 	\tnba at mathcomma
 }
 
-\mathchardef\tnba at mathcomma\mathcode`\,
-\mathcode`\,="8000 
-% |ecode !------------------------------------------------
+\AddToHook{begindocument}{%
+	\mathchardef\tnba at mathcomma=\mathcode`\,%
+	\mathcode`\,="8000 
+}
+% \end{code}   !------------------------------------------------
 
-% Abaixo está definido um ajuste para que o \pkg{hyperref} não crie conflitos com \cs\MakeUppercase\ nas entradas do sumário.
+% Abaixo está definido um ajuste para que o |hyperref| não crie conflitos com |\MakeUppercase| nas entradas do sumário.
 
-% |bcode !------------------------------------------------
+% \begin{code} !------------------------------------------------
 \iftnba at XETEX \else
 	\AddToHook{begindocument/before}{
 		\let\tnba at hyper@linkstart=\hyper at linkstart
@@ -596,24 +726,22 @@
 		\protected\def\hyper at linkstart#1#2{\lowercase{\tnba at hyper@linkstart{#1}{#2}}}
 	}
 \fi
-% |ecode !------------------------------------------------
+% \end{code}   !------------------------------------------------
 
 % \sec COMANDOS OBSOLETOS
 
-% O \pkg{abntexto} emitirá um aviso ou erro caso um destes comandos esteja obsoleto ou inexistente.
+% O |abntexto| emitirá um aviso ou erro caso um destes comandos esteja obsoleto ou inexistente.
 
-% |bcode !------------------------------------------------
+% \begin{code} !------------------------------------------------
 \def\tnba at undefcmd#1{\def#1{\tnba at error{%
-	O comando ''\string#1'' não existe mais. Linha \the\inputlineno
+	O comando "\noexpand#1" não existe mais%
 }}}
 \def\tnba at obscmd#1#2{\def#1{\tnba at error{%
-	O comando ''\string#1'' é obsoleto, use ''\unexpanded{#2}'' ao invés. Linha \the\inputlineno
+	O comando "\noexpand#1" é obsoleto, use "\unexpanded{#2}" ao invés%
 }}}
-\def\tnba at switchcmd#1#2{\def#1{\tnba at warning{%
-	O comando ''\string#1'' é obsoleto, use ''\string#2'' ao invés. Linha \the\inputlineno
-}#2}}
 
 \tnba at undefcmd \extlineshape
+\tnba at undefcmd \advcount
 
 \tnba at obscmd \sectionuppercase {\def\sectionfont{\MakeUppercase}}
 \tnba at obscmd \tociuppercase {\def\tocifont{\MakeUppercase}}
@@ -622,50 +750,43 @@
 \tnba at obscmd \subsubsectionspaces {\def\abovesubsubsection{valor}\def\belowsubsubsection{valor}}
 \tnba at obscmd \paragraphspaces {\def\aboveparagraph{valor}\def\belowparagraph{valor}}
 \tnba at obscmd \subparagraphspaces {\def\abovesubparagraph{valor}\def\belowsubparagraph{valor}}
+\tnba at obscmd \fontsizedef  \definefontsize
+\tnba at obscmd \paper        \setlayout
+\tnba at obscmd \papersizedef \definepapersize
+\tnba at obscmd \startseci   \printsection
+\tnba at obscmd \startsecii  \printsubsection
+\tnba at obscmd \startseciii \printsubsubsection
+\tnba at obscmd \startseciv  \printparagraph
+\tnba at obscmd \startsecv   \printsubparagraph
+\tnba at obscmd \qt    \enquote
+\tnba at obscmd \quote \Enquote
+% \end{code}   !------------------------------------------------
 
-\tnba at switchcmd \fontsizedef \definefontsize
-\tnba at switchcmd \advancecount \advcount
-\tnba at switchcmd \paper \setlayout
-\tnba at switchcmd \papersizedef \definepapersize
-\tnba at switchcmd \makeseci   \startsection
-\tnba at switchcmd \makesecii  \startsubsection
-\tnba at switchcmd \makeseciii \startsubsubsection
-\tnba at switchcmd \makeseciv  \startparagraph
-\tnba at switchcmd \makesecv   \startsubparagraph
-\tnba at switchcmd \qt \enquote
-\tnba at switchcmd \quote \Enquote
-% |ecode !------------------------------------------------
-
 % \sec INICIALIZAÇÃO
 
-% Aqui o \pkg{abntexto} define as configurações padrões. Note que \cs\pretextual\ deve ser carregado após \cs{\begin\{document\}} para evitar múltiplas chamadas deste, caso seja redefinido pelo usuário ou escritor de pacotes.
+% Aqui o |abntexto| define as configurações padrões. Note que |\pretextual| deve ser carregado após |\begin{document}| para evitar múltiplas chamadas deste, caso seja redefinido pelo usuário ou escritor de pacotes.
 
-% |bcode !------------------------------------------------
-\def\setnormalsize{%
-	\abovedisplayskip=12pt plus3pt minus7pt 
-	\belowdisplayskip=\abovedisplayskip
-	\abovedisplayshortskip=0pt plus3pt 
-	\belowdisplayshortskip=6.5pt plus3.5pt minus3pt 
-}
-\def\setsmall{%
-	\abovedisplayskip=10pt plus2pt minus5pt 
-	\belowdisplayskip=\abovedisplayskip
-	\abovedisplayshortskip=0pt plus3pt 
-	\belowdisplayshortskip=6pt plus3pt minus3pt 
-}
-
+% \begin{code} !------------------------------------------------
 \definefontsize{12pt}{%
-	\sizedef\normalsize{12pt}{14.5pt}{\setnormalsize}%
-	\sizedef\small{10pt}{12pt}{\setsmall}%
+	\sizedef\normalsize{12pt}{14.5pt}{%
+		\abovedisplayskip=12pt plus3pt minus7pt 
+		\belowdisplayskip=\abovedisplayskip
+		\abovedisplayshortskip=0pt plus3pt 
+		\belowdisplayshortskip=6.5pt plus3.5pt minus3pt
+	}%
+	\sizedef\small{10pt}{12pt}{%
+		\abovedisplayskip=10pt plus2pt minus5pt 
+		\belowdisplayskip=\abovedisplayskip
+		\abovedisplayshortskip=0pt plus3pt 
+		\belowdisplayshortskip=6pt plus3pt minus3pt
+	}%
 }
 
 \setfontsize{12pt}
 \spacing{1.5}
 
-\definepapersize{A4}{210mm}{297mm}
-
-\setlayout{
-	paper=A4,
+\geometry{
+	a4paper,
 	left=3cm,
 	top=3cm,
 	right=2cm,
@@ -676,18 +797,23 @@
 \parindent=0pt 
 \parskip=0pt 
 
-\def\tocifont   {\bfseries\MakeUppercase}
-\def\tociifont  {\itshape}
-\def\tociiifont {\scshape}
-\def\tocivfont  {}
-\def\tocvfont   {}
+\def\maintocfont {\tocsectionfont}
 
-\def\sectionfont       {\bfseries\MakeUppercase}
-\def\subsectionfont    {\itshape}
-\def\subsubsectionfont {\scshape}
-\def\paragraphfont     {}
-\def\subparagraphfont  {}
+\def\tocpartfont          #1{\bfseries\MakeUppercase{#1}}
+\def\tocchapterfont       #1{\bfseries\MakeUppercase{#1}}
+\def\tocsectionfont       #1{\bfseries\MakeUppercase{#1}}
+\def\tocsubsectionfont    #1{\itshape#1}
+\def\tocsubsubsectionfont #1{\scshape#1}
+\def\tocparagraphfont     #1{#1}
+\def\tocsubparagraphfont  #1{#1}
 
+\def\sectionfont       #1{\bfseries\MakeUppercase{#1}}
+\def\subsectionfont    #1{\itshape#1}
+\def\subsubsectionfont #1{\scshape#1}
+\def\paragraphfont     #1{#1}
+\def\subparagraphfont  #1{#1}
+
+\def\abovechapter       {50pt}
 \def\abovesection       {\baselineskip}
 \def\abovesubsection    {\baselineskip}
 \def\abovesubsubsection {\baselineskip}
@@ -694,6 +820,7 @@
 \def\aboveparagraph     {\baselineskip}
 \def\abovesubparagraph  {\baselineskip}
 
+\def\belowchapter       {40pt}
 \def\belowsection       {\baselineskip}
 \def\belowsubsection    {\baselineskip}
 \def\belowsubsubsection {\baselineskip}
@@ -700,26 +827,28 @@
 \def\belowparagraph     {\baselineskip}
 \def\belowsubparagraph  {\baselineskip}
 
-\definelegendplace{figure}{Figura}{Lista de figuras}{fig.\,#1}{lof}
-\definelegendplace{table}{Tabela}{Lista de tabelas}{tab.\,#1}{lot}
+\definelegendplace{figure}{Figura}{fig.\,}{lof}
+\definelegendplace{table}{Tabela}{tab.\,}{lot}
 
-\def\legendlabel{\legendname ~\thelegend ~---~}
-\def\srclabel{\raggedright\small Fonte:~}
-\def\legendmaxwidth{0.7\linewidth}
+\def\legendlabel{\legendname\ \thelegend\ ---~}
+\def\sublegendlabel{(\@alph\@tempcnta)~}
+\def\srclabel{Fonte:~}
+\def\legendmaxwidth{.7\linewidth}
 
 \def\aboveplace{\baselineskip}
 \def\belowplace{\baselineskip}
 
-\def\toclabelwidth{3.4ex}
-\def\maketoc{\heading{Sumário} \makeext{toc}\newpage}
+\def\toclabelwidth{2em}
+\def\lotlabelwidth{5.5em}
+\def\loflabelwidth{5.5em}
+\def\appendixlabelwidth{9.2em}
+\def\annexlabelwidth{7.3em}
 
+\def\maketoc{\makeext{toc}}
+
 \def\topicslabelwidth{4ex}
 
-\arrayrulewidth=0.4pt 
-
-\topskip=12pt 
-
 \AddToHook{begindocument}{\pretextual}
 
 \endinput
-% |ecode !------------------------------------------------
+% \end{code}   !------------------------------------------------



More information about the tex-live-commits mailing list.