summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/abntexto/abntexto.cls
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/abntexto/abntexto.cls')
-rw-r--r--macros/latex/contrib/abntexto/abntexto.cls101
1 files changed, 77 insertions, 24 deletions
diff --git a/macros/latex/contrib/abntexto/abntexto.cls b/macros/latex/contrib/abntexto/abntexto.cls
index aa12bb3eb8..4ae9b0ade6 100644
--- a/macros/latex/contrib/abntexto/abntexto.cls
+++ b/macros/latex/contrib/abntexto/abntexto.cls
@@ -1,8 +1,14 @@
%! Public Domain Software
-%! 2022-10-06
-%! 1.2.0-alpha
+%! 2022-10-12
+%! 1.2.1-alpha
%! Elayson
-%! abntexto dot classe at gmail dot com
+%! abntexto.classe at gmail.com
+
+%! ANNOUNCEMETS
+
+%!> Changed the manual's typographic font to a serif because they are better for reading long texts — although the manual is purposely short.
+
+%!> Removal of \srcname macro because it is useless.
%! SUMÁRIO
@@ -21,6 +27,11 @@
%! A VÍRGULA COMO SEPARADOR DECIMAL
%! INICIALIZAÇÃO
+% |sec RECOMENDAÇÕES
+% !=======================================================
+
+% Macros internas não podem ser modificadas ou usadas diretamente. Isso é porque essas macros podem ser redefinidos ou até renomeados em futuras versões desta classe. Por macros internas entende-se aquelas com prefixo do pacote em questão, neste caso, \cs{tnba@}. Se você precisa de algum comando interno, defina outro sem anexar o prefixo.
+
% \sec PRÉ-CONFIGURAÇÕES
% !=======================================================
@@ -29,12 +40,12 @@
% |bcode !------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{abntexto}[2022-10-06 1.2.0-alpha Preparation of works in ABNT standards]
+\ProvidesClass{abntexto}[2022-10-12 1.2.1-alpha Preparation of works in ABNT standards]
\RequirePackage{keyval}
% |ecode !------------------------------------------------
-% Definição do sistema \emph{chave=valor} e de um comando de \emph{debug}. Perceba que \tnba@bodyhook não pode ser igual a \cs\relax, mas \cs\empty ao invés.
+% Definição de um sistema \emph{chave=valor} pessoal e de macros auxiliares. Perceba que \cs{\tnba@bodyhook} não pode ser igual a \cs\relax, mas \cs\empty\ ao invés.
% |bcode !------------------------------------------------
\def\tnba@keyprefix{tnba}
@@ -49,7 +60,11 @@
\let\tnba@bodyhook=\empty
\AddToHook{begindocument}{\def\tnba@body{}\tnba@bodyhook}
+% |ecode !------------------------------------------------
+
+% Comando de \emph{debug}.
+% |bcode !------------------------------------------------
\def\tnba@error{\ClassError{abntexto}}
% |ecode !------------------------------------------------
@@ -115,11 +130,12 @@
\advance\topmargin-\headheight \advance\topmargin-\headsep
\advance\textwidth-\tnba@L \advance\textwidth-\tnba@R
\advance\textheight-\tnba@T \advance\textheight-\tnba@B
- \setbox0=\hbox{\@setfontsize\@tempa{10}{12pt}\@tempa 1}
- \advance\headsep-\ht0
+ \setbox0=\hbox{\@setfontsize\@tempa{10pt}{12pt}\@tempa 1}%
+ \advance\headsep-\ht0
\ifx\pdfpagewidth\undefined
\ifx\pagewidth\undefined
- \tnba@error{O comando \@backslashchar paper só suporta saída em PDF. Use o formato PDF ou carregue o pacote *geometry*}\expandafter\enddocument\relax \else
+ \tnba@error{O comando \@backslashchar paper só suporta saída em PDF.
+ Use o formato PDF ou carregue o pacote *geometry*}\expandafter\enddocument\relax \else
\horigin=0pt
\vorigin=0pt
\pagewidth=\paperwidth
@@ -143,6 +159,10 @@
}
% |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{\paper{twoside=false}%
\let\@oddhead=\empty
@@ -163,6 +183,8 @@
% \sec SUMÁRIO
% !=======================================================
+% Aqui, \cs\extline\ foi baseado em \cs\@dottedtocline, do kernel do LaTeX. Ele não é uma instrução privada, ou seja, com prefixo interno, pois existe a chance de o leitor querer redefiní-lo (o mesmo vale para \cs\extlineshape).
+
% |bcode !------------------------------------------------
\def\thepage{\the\c@page}
@@ -196,6 +218,13 @@
\def\l@subsubsection {\extline{toc}{3}}
\def\l@paragraph {\extline{toc}{4}}
\def\l@subparagraph {\extline{toc}{5}}
+% |ecode !------------------------------------------------
+
+% Comandos de personalização do ToC (sumário).
+
+% |bcode !------------------------------------------------
+\def\tociuppercase{\def\maybeuctoc{\MakeUppercase}}
+\def\tocilowercase{\let\maybeuctoc=\relax}
\def\tocifont#1{\def\usetocifont{#1}}
\def\tociifont#1{\def\usetociifont{#1}}
@@ -207,6 +236,8 @@
% \sec SECIONAMENTO
% !=======================================================
+% As linhas abaixo são basicamente uma cópia da funcionalidade do formato OpTeX. O par \cs\smartaboveskip, \cs\smartbelowskip, em especial, serve para eliminar \cs\vskip’s redundantes.
+
% |bcode !------------------------------------------------
\def\tnba@nbpar{\interlinepenalty=10000\par}
\def\noindentfirst{\global\everypar={\tnba@wipeepar \setbox7=\lastbox}}
@@ -245,10 +276,12 @@
\def\subparagraphmark#1{}
% |ecode !------------------------------------------------
+% Nesta parte estão definidos os comandos secionais.
+
% |bcode !------------------------------------------------
\def\section#1{\par \smartaboveskip{\penalty351}{\vskip\sectionabove}\noindent
\advancecount\sectioncount
- \def\@currentlabel{seção~\thesection}%
+ \def\@currentlabel{seção~\thesection}%+/
\setbox0=\hbox{\usesectionfont \thesection\quad}%
{\usesectionfont \hangindent=\wd0 \box0 \maybeucsec{#1}\tnba@nbpar}%
% \noindentfirst
@@ -293,20 +326,24 @@
\nobreak \smartbelowskip{\vskip\subparagraphbelow}%
}
-\def\heading#1{\noindent
- {\usesectionfont \centering \maybeucsec{#1}\tnba@nbpar}%
- \nobreak \vskip\sectionbelow
-}
-
\def\hreftocline#1{\Hy@MakeCurrentHrefAuto{#1}%
\Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}%
}
\tnba@tobody{\ifx\hypertarget\undefined \let\hreftocline=\@gobble \fi}
% |ecode !------------------------------------------------
+% A macro \cs\heading, em particular, serve para produzir títulos não contados, como “Sumário”, “Lista de figuras”, “Apêndice” etc.
+
+% |bcode !------------------------------------------------
+\def\heading#1{\noindent
+ {\usesectionfont \centering \maybeucsec{#1}\tnba@nbpar}%
+ \nobreak \vskip\sectionbelow
+}
+% |ecode !------------------------------------------------
+
+% Comandos de personalização de seções.
+
% |bcode !------------------------------------------------
-\def\tociuppercase{\def\maybeuctoc{\MakeUppercase}}
-\def\tocilowercase{\let\maybeuctoc=\relax}
\def\sectionuppercase{\def\maybeucsec{\MakeUppercase}}
\def\sectionlowercase{\let\maybeucsec=\relax}
@@ -321,15 +358,20 @@
\def\subsubsectionspaces#1#2{\def\subsubsectionabove{#1}\def\subsubsectionbelow{#2}}
\def\paragraphspaces#1#2{\def\paragraphabove{#1}\def\paragraphbelow{#2}}
\def\subparagraphspaces#1#2{\def\subparagraphabove{#1}\def\subparagraphbelow{#2}}
+
+\def\toclabelwidth{3.4ex}
+\def\toclabelbox#1{\hbox to\extlabelwidth{#1\hfil}}
% |ecode !------------------------------------------------
+% 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 \annex.
+
% |bcode !------------------------------------------------
\newcount\appendixcount
\newcount\annexcount
\def\theappendix{\@Alph\appendixcount}
\def\theannex{\@Alph\annexcount}
-\def\appendixlabelwidth{8em}
+\def\appendixlabelwidth{6.6em}
\def\annexlabelwidth{6.2em}
\def\l@appendix{\let\extlabelwidth=\appendixlabelwidth
@@ -372,6 +414,8 @@
% \sec ALÍNEAS
% !=======================================================
+% Estas linhas não foram baseadas no ambiente \cs{list} do LaTeX, portanto, não podem ser personalizadas pelo pacote \cs{enumitem}, por exemplo.
+
% |bcode !------------------------------------------------
\newcount\topicsdepth
\newcount\topicscount
@@ -398,6 +442,8 @@
% \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.
+
% |bcode !------------------------------------------------
\newenvironment{table}[1]{\begin{tabular}{#1}}{\end{tabular}}
% |ecode !------------------------------------------------
@@ -461,7 +507,6 @@
\removelastskip \fi\fi
\def\tnba@savedsrc{#1}%
}
-\def\srcname{Fonte}
% |ecode !------------------------------------------------
% |bcode !------------------------------------------------
@@ -504,6 +549,8 @@
% \sec UTILIDADES
% !=======================================================
+% Algumas macros úteis foram definidos aqui como \cs\Enter\ que serve para produzir um espaço vertical equivalente àquele produzido com a tecla Enter em editores de texto como MS Word.
+
% |bcode !------------------------------------------------
\def\tnba@getprevdepth{\par\xdef\tnba@getprevdepthA{\the\prevdepth}}
\def\tnba@useprevdepth{\par\prevdepth=\tnba@getprevdepthA}
@@ -538,15 +585,19 @@
% |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.
+
+% As linhas abaixo são uma cópia da implementação do pacote \pkg{icomma}.
% |bcode !------------------------------------------------
{\catcode`,=\active
- \gdef,{\futurelet\let@token\tnba@smartcomma}
+ \gdef,{\futurelet\@let@token\tnba@smartcomma}
}
\def\tnba@smartcomma{%
- \ifx\let@token\@sptoken \else
- \ifx\let@token\space \else \mathord \fi\fi
+ \ifx\@let@token\@sptoken \else
+ \ifx\@let@token\space \else \mathord \fi\fi
\tnba@mathcomma
}
@@ -566,6 +617,8 @@
% \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.
+
% |bcode !------------------------------------------------
\fontsizedef{12pt}{
\normalsizedef{12pt}{14.5pt}
@@ -618,8 +671,8 @@
\placespaces{\baselineskip}{\baselineskip}
\def\maketoc{\heading{Sumário}
- \def\extlabelwidth{4ex}%
- \def\extlabelbox##1{\hbox to\extlabelwidth{##1\hfil}}%
+ \let\extlabelwidth=\toclabelwidth
+ \let\extlabelbox=\toclabelbox
\@starttoc{toc}\newpage
}