diff options
Diffstat (limited to 'macros/latex/contrib/abntexto/abntexto.cls')
-rw-r--r-- | macros/latex/contrib/abntexto/abntexto.cls | 101 |
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 } |