diff options
author | Norbert Preining <norbert@preining.info> | 2023-11-14 03:01:05 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2023-11-14 03:01:05 +0000 |
commit | e20928a0f9f4a7faa8bb21915e761e11e34f04ff (patch) | |
tree | 32b28652fc038d4e06485fe1eb5a25517d15ef87 /macros/latex/contrib/abntexto | |
parent | 88ed039ed13674ce7440cc57dba288cf166796fe (diff) |
CTAN sync 202311140301
Diffstat (limited to 'macros/latex/contrib/abntexto')
-rw-r--r-- | macros/latex/contrib/abntexto/README | 4 | ||||
-rw-r--r-- | macros/latex/contrib/abntexto/abntexto.cls | 410 | ||||
-rw-r--r-- | macros/latex/contrib/abntexto/abntexto.pdf | bin | 219363 -> 258189 bytes | |||
-rw-r--r-- | macros/latex/contrib/abntexto/abntexto.tex | 101 |
4 files changed, 294 insertions, 221 deletions
diff --git a/macros/latex/contrib/abntexto/README b/macros/latex/contrib/abntexto/README index 9392f77fc8..8a02781587 100644 --- a/macros/latex/contrib/abntexto/README +++ b/macros/latex/contrib/abntexto/README @@ -1,6 +1,6 @@ Public Domain Software -2023-10-13 -3.0.2-beta +2023-11-13 +3.1.0-beta Elayson Abreu abntexto.classe@gmail.com diff --git a/macros/latex/contrib/abntexto/abntexto.cls b/macros/latex/contrib/abntexto/abntexto.cls index 4cb87e638b..bdfd09ff5e 100644 --- a/macros/latex/contrib/abntexto/abntexto.cls +++ b/macros/latex/contrib/abntexto/abntexto.cls @@ -1,6 +1,6 @@ %! Public Domain Software -%! 2023-10-13 -%! 3.0.2-beta +%! 2023-11-13 +%! 3.1.0-beta %! Elayson Abreu %! abntexto.classe@gmail.com @@ -27,25 +27,25 @@ % Identificação do formato \TeX\ e da classe, carregando a classe |article| e os únicos pacotes do |abntexto|. -% \begin{code} !------------------------------------------------ +% \begin{code} \NeedsTeXFormat{LaTeX2e} -\ProvidesClass{abntexto}[2023-10-13 3.0.2-beta Preparation of works in ABNT standards] +\ProvidesClass{abntexto}[2023-11-13 3.1.0-beta Preparation of works in ABNT standards] \LoadClass{article} \RequirePackage{geometry} \RequirePackage{graphicx} -% \end{code} !------------------------------------------------ +% \end{code} % Um atalho para |\ClassError|. -% \begin{code} !------------------------------------------------ +% \begin{code} \def\tnba@error#1{\ClassError{abntexto}{#1}{}} -% \end{code} !------------------------------------------------ +% \end{code} % Condicionais para identificação da extensão TeX. -% \begin{code} !------------------------------------------------ +% \begin{code} \newif \iftnba@PDFTEX \newif \iftnba@XETEX \newif \iftnba@LUATEX @@ -54,58 +54,38 @@ \tnba@PDFTEXtrue \else \tnba@XETEXtrue \fi \else \tnba@LUATEXtrue \fi -% \end{code} !------------------------------------------------ +% \end{code} % \sec FONTE TIPOGRÁFICA -% Apenas o tamanho 12\,pt está definido. Defina outros usando |\definefontsize{<id>}{<definições>}|. - -% \begin{code} !------------------------------------------------ -\def\definefontsize#1#2{\@namedef{tnba@fontsize@#1}{#2}} -\def\setfontsize#1{\ifcsname tnba@fontsize@#1\endcsname - \def\tnba@setfontsizehook{\csname tnba@fontsize@#1\endcsname}\else - \tnba@error{Tamanho de fonte "#1" desconhecido. Defina um novo usando \noexpand\definefontsize}\fi -} - -\@onlypreamble \definefontsize -\@onlypreamble \setfontsize +% O tamanho 12\,pt foi definido ao final deste manual e é o tamanho padrão da classe. Com ele foi definido um tamanho menor |\small|. +% \begin{code} \def\sizedef#1#2#3#4{\DeclareRobustCommand#1{\fontsize{#2}{#3}\selectfont#4\relax}} \def\spacing#1{\def\currspacing{#1}% \@tempdima=\f@size pt \baselineskip=#1\@tempdima \ignorespaces } -\def\currspacing{1.5} -\def\tnba@setfontsizehook{} - \AddToHook{begindocument}{% - \tnba@setfontsizehook - \normalsize - \@tempdima=\f@size pt \baselineskip=\currspacing\@tempdima + \@tempdima=\f@size pt \baselineskip=\currspacing\@tempdima \relax } \def\singlesp{\baselineskip=\normalbaselineskip} \def\onehalfsp{\spacing{1.5}} \def\doublesp{\spacing{2}} -% \end{code} !------------------------------------------------ +% \end{code} % \sec \emph{LAYOUT} % 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. -% 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. +% A instrução |\textual| põe a numeração de página no topo direito nas páginas ímpares e no topo esquerdo em páginas pares. Além disso, |twoside| vai espelhar as margens horizontais. + +% Por algum motivo, |\newgeometry| reseta |\baselineskip| e |\parindent|, então temos de repetir estas instruções. -% \begin{code} !------------------------------------------------ +% \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 @@ -120,38 +100,37 @@ bottom = 2cm }% \spacing{1.5}% + \parindent=1.5cm \def\@oddhead{\hfil\small\thepage}% \def\@evenhead{\small\thepage\hfil}% - \def\@oddfoot{}% - \def\@evenfoot{}% - \parindent=1.5cm } -% \end{code} !------------------------------------------------ +% \end{code} % \sec SUMÁRIO % 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. -% \begin{code} !------------------------------------------------ +% \begin{code} \def\extpagenumwidth{1.55em} \def\extrightmargin{2.55em} \def\extline#1#2#3#4#5{% \begingroup - \parindent=0pt \leftskip=#1 + \parindent=0pt \leftskip=#1\relax \rightskip=\extrightmargin\relax \parfillskip=-\rightskip - #3{\advance\leftskip#2\relax \hskip-#2\relax #4}% + #3{\global\advance\leftskip#2\relax \hskip-#2\relax #4}% \nobreak\extleaders\nobreak \hbox to\extpagenumwidth{\hfil #5\kern-1pt\kern1pt}\nbpar \endgroup + \global\leftskip=0pt } \def\extleaders{\leaders\hbox{$\mathsurround=0pt \mkern4.5mu\hbox{.}\mkern4.5mu$}\hfill} \def \l@part {\addpenalty{-300}\addvspace{2.25em plus1pt}% \extline{0pt}{\toclabelwidth}{\def\extleaders{\hfil}\tocpartfont}} \def \l@chapter {\addpenalty{-300}\addvspace{1em plus1pt}% - \extline{0pt}{\toclabelwidth}{\def\extleaders{\hfil}\tocchapterfont}} + \extline{0cm}{\toclabelwidth}{\def\extleaders{\hfil}\tocchapterfont}} \def \l@section {\addpenalty{-300}\addvspace{1em plus1pt}% \extline{0pt}{\toclabelwidth}{\def\extleaders{\hfil}\tocsectionfont}} \def \l@subsection {\vskip0pt plus.2pt @@ -164,19 +143,27 @@ \extline{0pt}{\toclabelwidth}{\tocsubparagraphfont}} \def\toclabelbox#1{\hbox to\toclabelwidth{#1\hss}} -% \end{code} !------------------------------------------------ +% \end{code} % \sec SECIONAMENTO +% Nesta parte estão definidos os comandos secionais. Nenhum destes comandos são internos, caso o leitor queira redefiní-los. + % O comando |\hangfrom| é oriundo do kernel. Ele vai ser útil na formatação das seções. -% \begin{code} !------------------------------------------------ +% A ideia de usar |\nonum| e |\notoc| ao invés de * vem do Op\TeX\ (muitas outras implementações aqui foram inspiradas nele). + +% \begin{code} +\newif\ifnotoc +\newif\ifnonum + \let\hangfrom=\@hangfrom \def\nbpar{{\interlinepenalty=10000\par}} \def\trytextual{\textual \let\textual=\relax} -% \end{code} !------------------------------------------------ +\def\nonum{\global\nonumtrue} +\def\notoc{\global\notoctrue} +\def\resetnonumnotoc{\global\notocfalse \global\nonumfalse} -% \begin{code} !------------------------------------------------ \newcount\countseclevel \newcount\countpart @@ -194,11 +181,7 @@ \def\thesubsubsection{\thesubsection .\the\countsubsubsection} \def\theparagraph{\thesubsubsection .\the\countparagraph} \def\thesubparagraph{\theparagraph .\the\countsubparagraph} -% \end{code} !------------------------------------------------ - -% Nesta parte estão definidos os comandos secionais. Nenhum destes comandos são internos, caso o leitor queira redefiní-los. -% \begin{code} !------------------------------------------------ \def\recountchapter {\countsection=0 \recountsection} \def\recountsection {\countsubsection=0 \recountsubsection} \def\recountsubsection {\countsubsubsection=0 \recountsubsubsection} @@ -210,12 +193,12 @@ \centering\huge\bfseries Parte \thepart \vskip20pt \Huge\bfseries #1\nbpar - \endgroup + \endgroup } \def\printchapter#1{% \begingroup - \raggedright\huge\bfseries Capítulo \thechapter - \vskip20pt + \raggedright\huge\bfseries + \ifnonum \else Capítulo \thechapter \vskip20pt \fi \Huge\bfseries #1\nbpar \endgroup } @@ -223,6 +206,8 @@ \hangfrom{\sectionfont\thesection\quad}% \sectionfont{#1}\nbpar }} +\def\printnonumsection#1{{\centering\sectionfont{#1}\par}} + \def\printsubsection#1{{% \hangfrom{\subsectionfont\thesubsection\quad}% \subsectionfont{#1}\nbpar @@ -239,19 +224,13 @@ \hangfrom{\subparagraphfont\thesubparagraph\quad}% \subparagraphfont{#1}\nbpar }} -% \end{code} !------------------------------------------------ +% \end{code} % A instrução |\setlabel| ensina a forma como |\label|'s devem ser referenciados. O comando |\setlabel| será útil em outros contextos. -% \begin{code} !------------------------------------------------ -\def\partlevel {-1} -\def\chapterlevel {0} -\def\sectionlevel {1} -\def\subsectionlevel {2} -\def\subsubsectionlevel {3} -\def\paragraphlevel {4} -\def\subparagraphlevel {5} +% As referências cruzadas (\emph{cross ref}) serão impressas por meio de |\ref| conforme |\cfpart|, |\cfchapter| etc. O leitor pode querer redefiní-los. +% \begin{code} \def\setlabel#1{\def\@currentlabel{#1}} \def\cfpart {parte\,\thepart} @@ -261,29 +240,63 @@ \def\cfsubsubsection {subseçao\,\thesubsubsection} \def\cfparagraph {subseçao\,\theparagraph} \def\cfsubparagraph {subseçao\,\thesubparagraph} +% \end{code} + +% Por meio de |\trytextual|, a instrução |\textual| é iniciada automaticamente na primeira chamada de |\section|, |\chapter| ou |\part|, conforme o nível secional principal. -\def\part#1{\cleardoublepage\trytextual \leavevmode\vfil - \global\advance\countpart by1 - \countseclevel=\partlevel\relax \setlabel\cfpart - \addtoext{toc}{part}{\protect\toclabelbox{\thepart}#1}% +% É mais provável que o usuário queira redefinir comandos como |\printsection|, |\printsubsection| ao invés de seus invólucros maiores, neste caso, |\section| e |\subsection|. + +% \begin{code} +\def\partlevel {-1} +\def\chapterlevel {0} +\def\sectionlevel {1} +\def\subsectionlevel {2} +\def\subsubsectionlevel {3} +\def\paragraphlevel {4} +\def\subparagraphlevel {5} + +\def\part#1{\ifnonum\else\cleardoublepage\fi \ifnonum\else\trytextual\fi + \leavevmode\vfil + \ifnonum \else + \global\advance\countpart by1 + \fi + \countseclevel=\partlevel\relax \ifnonum \else \setlabel\cfpart \fi + \ifnotoc \else + \addtoext{toc}{part}{\ifnonum \else \protect\toclabelbox{\thepart}\fi #1}% + \fi \printpart{#1}% \markpart{#1}% + \resetnonumnotoc \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}% +\def\chapter#1{\ifnonum\else\cleardoublepage\fi \ifnonum\else\trytextual\fi + \leavevmode\vskip\abovechapter\relax + \ifnonum \else + \global\advance\countchapter by1 {\globaldefs=1 \recountchapter}% + \fi + \countseclevel=\chapterlevel\relax \ifnonum \else \setlabel\cfchapter \fi + \ifnotoc \else + \addtoext{toc}{chapter}{\ifnonum \else \protect\toclabelbox{\thechapter}\fi #1}% + \fi \printchapter{#1}% \markchapter{#1}% + \resetnonumnotoc \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}% +\def\section#1{\ifnonum\else\trytextual\fi \addpenalty{-300}\addvspace\abovesection + \ifnonum \else + \global\advance\countsection by1 {\globaldefs=1 \recountsection}% + \fi + \countseclevel=\sectionlevel\relax \ifnonum \else \setlabel\cfsection \fi + \ifnotoc \else + \addtoext{toc}{section}{\ifnonum \else \protect\toclabelbox{\thesection}\fi #1}% + \fi + \ifnonum + \printnonumsection{#1}\else + \printsection{#1}% + \fi \marksection{#1}% + \resetnonumnotoc \par\nobreak \vskip\belowsection\relax % Esse \par é necessário. } \def\subsection#1{\addpenalty{-300}\addvspace\abovesubsection @@ -315,34 +328,54 @@ \printsubparagraph{#1}% \par\nobreak \vskip\belowsubparagraph\relax } -% \end{code} !------------------------------------------------ +% \end{code} % 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. -% \begin{code} !------------------------------------------------ +% Comandos como |\printbibliography| e |\printglossaries| já vêm com título embutido. Mas este título precisa estar inserido na macro secional principal, |\section| ou |\chapter|, dependendo de |\usechapters|/|\useparts| estar ativado ou não. Por este motivo foi definido o ambiente |corrprint|. + +% \begin{code} +\def\makeext#1{\@starttoc{#1}} +\def\maketoc{\makeext{toc}} \def\corrprint#1{\begingroup - \addtoext{toc}{section}{#1}% - \def\section##1##2{\heading{##2}}% + \def\tmp{section}% + \ifx\mainsecname\tmp + \let\origsection=\section + \def\chapter##1##2{\nonum \origsection {##2}}% + \def\section##1##2{\nonum \origsection {##2}}% + \else + \edef\mainsecname{orig\mainsecname}% + \let\origchapter=\chapter + \let\origsection=\section + \def\chapter##1##2{\nonum \csname\mainsecname\endcsname {##2}}% + \def\section##1##2{\nonum \csname\mainsecname\endcsname {##2}}% + \fi + } \def\endcorrprint{\par\endgroup} +\def\mainsecname{section} +\def\mainseclevel{\sectionlevel} +\def\maintocfont{\tocsectionfont} + \def\usechapters{% \def\l@section{\extline{0pt}{\toclabelwidth}{\tocsectionfont}}% \def\thesection{\thechapter.\the\countsection}% + \def\mainsecname{chapter}% \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@chapter {\addpenalty{-300}\addvspace{1em plus1pt}% \extline{0pt}{\toclabelwidth}{\tocchapterfont}}% } +% \end{code} -\def\makeext#1{\@starttoc{#1}} +% Quando |\usechapters| está ativo, o LaTeX, por algum motivo, exige a criação do contador |\c@chapter|. + +% \begin{code} +\newcount\c@chapter \AddToHook{begindocument}{% \pdfstringdefDisableCommands{\def\toclabelbox#1{#1 }}% @@ -355,11 +388,11 @@ {}% } \def\marksubsection#1{\markright{\MakeUppercase{\thesubsection\quad #1}}} -% \end{code} !------------------------------------------------ +% \end{code} % Os comandos a seguir são usados pelo |hyperref.sty| na criação de \emph{bookmarks} em PDFs. -% \begin{code} !------------------------------------------------ +% \begin{code} \def\toclevel@part {\partlevel} \def\toclevel@chapter {\chapterlevel} \def\toclevel@section {\sectionlevel} @@ -368,14 +401,13 @@ \def\toclevel@paragraph {\paragraphlevel} \def\toclevel@subparagraph {\subparagraphlevel} -\def\mainseclevel{\sectionlevel} \def\toclevel@appendix {\mainseclevel} \def\toclevel@annex {\mainseclevel} -% \end{code} !------------------------------------------------ +% \end{code} % A definição de |\addtoext| depende de o |hyperref.sty| estar presente ou não. -% \begin{code} !------------------------------------------------ +% \begin{code} \def\addtoext#1#2#3{\noindent % Esse \noindent é necessário. \setcounter{section@level}{\countseclevel}% \NR@gettitle{#3}% @@ -391,27 +423,19 @@ \let\pdfstringdefDisableCommands=\@gobble }% } -% \end{code} !------------------------------------------------ - -% A macro |\heading| serve para produzir títulos não contados, como “Sumário”, “Lista de figuras”, “Apêndice” etc. - -% \begin{code} !------------------------------------------------ -\def\heading#1{{\centering \sectionfont{#1}\par}% - \vskip\belowsection\relax -} -% \end{code} !------------------------------------------------ +% \end{code} % Aqui estão definidos |\appendix| e |\annex|. -% \begin{code} !------------------------------------------------ +% \begin{code} \newcount\countappendix \newcount\countannex \def\theappendix{\@Alph\countappendix} \def\theannex{\@Alph\countannex} -\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~---\hss}} +\def\annexlabelbox#1{\hbox to\annexlabelwidth{Anexo~#1~---\hss}} \AddToHook{begindocument}{\pdfstringdefDisableCommands{% \def\appendixlabelbox#1{Apêndice #1 }% @@ -423,27 +447,34 @@ \def \l@annex {\addpenalty{-300}\addvspace{1em plus1pt}% \extline{0pt}{\annexlabelwidth}{\def\extleaders{\hfil}\maintocfont}} +\def\cfappendix{Apêndice~\theappendix} +\def\cfannex{Anexo~\theannex} + \def\appendix#1{\newpage \global\advance\countappendix by1 \addtoext{toc}{appendix}{\protect\appendixlabelbox{\theappendix}#1}% - \heading{Apêndice~\theappendix~---~#1}% + \setlabel\cfappendix + \par\nointerlineskip + \begingroup + \def\abovesection{0pt}% + \nonum\notoc \csname\mainsecname\endcsname {Apêndice~\theappendix~---~#1}% + \endgroup } \def\annex#1{\newpage \global\advance\countannex by1 \addtoext{toc}{annex}{\protect\annexlabelbox{\theannex}#1}% - \heading{Anexo~\theannex~---~#1}% + \setlabel\cfannex + \par\nointerlineskip + \begingroup + \def\abovesection{0pt}% + \nonum\notoc \csname\mainsecname\endcsname {Anexo~\theannex~---~#1}% + \endgroup } -% \end{code} !------------------------------------------------ - -% Quando |\usechapters| está ativo, o LaTeX, por algum motivo, exige a criação do contador |\c@chapter|. - -% \begin{code} !------------------------------------------------ -\newcount\c@chapter -% \end{code} !------------------------------------------------ +% \end{code} % \sec CITAÇÕES % Se o pacote |csquotes| estiver carregado, ele definirá sua própria versão de |\enquote|, do contrário, o |abntexto| criará uma. -% \begin{code} !------------------------------------------------ +% \begin{code} \AddToHook{begindocument}{% \@ifpackageloaded{csquotes}{}{\protected\def\enquote#1{``#1''}}% } @@ -453,13 +484,13 @@ {\noindent\leftskip=4cm \small \ignorespaces#1\unskip \nbpar}% \vskip\baselineskip } -% \end{code} !------------------------------------------------ +% \end{code} % \sec ALÍNEAS % Estas linhas não foram baseadas no ambiente |list| do LaTeX, portanto não podem ser personalizadas por pacotes como |enumitem|, por exemplo. -% \begin{code} !------------------------------------------------ +% \begin{code} \newcount\counttopicsdepth \newcount\counttopics \newcount\countsubtopics @@ -493,40 +524,41 @@ \hbox to\topicslabelwidth{\topicsmakelabel\hfil}% \ignorespaces } -% \end{code} !------------------------------------------------ +% \end{code} % \sec TABELAS -% Na classe |article| o ambiente |table| inicia o modo flutuante, mas nesta classe ele é sinônimo de |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. Além disso, a classe não suporta objetos flutuantes. O comando |\place| põe o conteúdo no local especificado. -% \begin{code} !------------------------------------------------ +% \begin{code} \let\table=\undefined \let\endtable=\undefined \newenvironment{table}[1]{\begin{tabular}{#1}}{\end{tabular}} -% \end{code} !------------------------------------------------ +% \end{code} % \sec ÁREAS DE LEGENDA -% \begin{code} !------------------------------------------------ +% \begin{code} +\def\@nameedef#1{\expandafter\edef\csname#1\endcsname} + \def\definelegendplace#1#2#3#4{\expandafter\newcount\csname count#1\endcsname \@namedef{#1name}{#2}% - \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}% + \@nameedef{the#1}{\noexpand\the\csname count#1\endcsname}% + \@nameedef{cf#1}{\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}}% + \@nameedef{l@#4i}{\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}}% + \@nameedef{#4labelbox}##1{\hbox to\csname #4labelwidth\endcsname{#2~##1~---\hss}}% \AddToHook{begindocument}{% \pdfstringdefDisableCommands{\@namedef{#4labelbox}##1{##1 }}% }% - \@namedef{#4ifont}##1{##1}% + \@namedef{#4ifont}{\maintocfont}% \@namedef{make#4}{\makeext{#4}}% } -% \end{code} !------------------------------------------------ +% \end{code} -% \begin{code} !------------------------------------------------ +% \begin{code} \newdimen\placewidth \AddToHook{begindocument}{\placewidth=.43\linewidth} \newdimen\savedplacewidth @@ -662,21 +694,21 @@ }} \AddToHook{begindocument}{\let\c@table=\counttable} -% \end{code} !------------------------------------------------ +% \end{code} % \sec NOTAS DE RODAPÉ % As notas de rodapé também foram modificadas. -% \begin{code} !------------------------------------------------ +% \begin{code} \def\@makefnmark{\hbox{\@textsuperscript{\selectfont\@thefnmark}}} \def\@makefntext#1{\hangfrom{\@makefnmark\kern2pt}\small #1} \def\footnoterule{\kern18pt \hrule width5cm \kern2.6pt } -% \end{code} !------------------------------------------------ +% \end{code} % \sec IDENTIFICAÇÃO DO TRABALHO -% \begin{code} !------------------------------------------------ +% \begin{code} \def\Enter{\@ifnextchar[\tnba@Enter{\tnba@Enter[]}} \def\tnba@Enter[#1]{\vskip#1\baselineskip} @@ -694,7 +726,7 @@ \def\indexcardbar{\def\xindexcardbar{\hrule\kern1cm}} \def\judgeline#1{{\centering \rule{.7\linewidth}{.6pt}\\ #1\par}\Enter[1.5]} -% \end{code} !------------------------------------------------ +% \end{code} % \sec A VÍRGULA COMO SEPARADOR DECIMAL @@ -702,7 +734,7 @@ % As linhas abaixo são uma cópia da implementação do pacote |icomma|. -% \begin{code} !------------------------------------------------ +% \begin{code} {\catcode`,=13 \gdef,{\futurelet\@let@token\tnba@smartcomma} } @@ -716,24 +748,24 @@ \mathchardef\tnba@mathcomma=\mathcode`\,% \mathcode`\,="8000 } -% \end{code} !------------------------------------------------ +% \end{code} % Abaixo está definido um ajuste para que o |hyperref| não crie conflitos com |\MakeUppercase| nas entradas do sumário. -% \begin{code} !------------------------------------------------ +% \begin{code} \iftnba@XETEX \else \AddToHook{begindocument/before}{ \let\tnba@hyper@linkstart=\hyper@linkstart \protected\def\hyper@linkstart#1#2{\lowercase{\tnba@hyper@linkstart{#1}{#2}}} } \fi -% \end{code} !------------------------------------------------ +% \end{code} % \sec COMANDOS OBSOLETOS -% O |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 seja usado. -% \begin{code} !------------------------------------------------ +% \begin{code} \def\tnba@undefcmd#1{\def#1{\tnba@error{% O comando "\noexpand#1" não existe mais% }}} @@ -743,51 +775,51 @@ \tnba@undefcmd \extlineshape \tnba@undefcmd \advcount - -\tnba@obscmd \sectionuppercase {\def\sectionfont{\MakeUppercase}} -\tnba@obscmd \tociuppercase {\def\tocifont{\MakeUppercase}} -\tnba@obscmd \sectionspaces {\def\abovesection{valor}\def\belowsection{valor}} -\tnba@obscmd \subsectionspaces {\def\abovesubsection{valor}\def\belowsubsection{valor}} +\tnba@undefcmd \definefontsize +\tnba@undefcmd \setfontsize +\tnba@undefcmd \fontsizedef +\tnba@undefcmd \paper +\tnba@undefcmd \papersizedef +\tnba@undefcmd \startseci +\tnba@undefcmd \startsecii +\tnba@undefcmd \startseciii +\tnba@undefcmd \startseciv +\tnba@undefcmd \startsecv +\tnba@undefcmd \sectionuppercase +\tnba@undefcmd \tociuppercase + +\tnba@obscmd \sectionspaces {\def\abovesection{valor}\def\belowsection{valor}} +\tnba@obscmd \subsectionspaces {\def\abovesubsection{valor}\def\belowsubsection{valor}} \tnba@obscmd \subsubsectionspaces {\def\abovesubsubsection{valor}\def\belowsubsubsection{valor}} -\tnba@obscmd \paragraphspaces {\def\aboveparagraph{valor}\def\belowparagraph{valor}} -\tnba@obscmd \subparagraphspaces {\def\abovesubparagraph{valor}\def\belowsubparagraph{valor}} -\tnba@obscmd \fontsizedef \definefontsize -\tnba@obscmd \paper \setlayout -\tnba@obscmd \papersizedef \definepapersize -\tnba@obscmd \startseci \printsection -\tnba@obscmd \startsecii \printsubsection -\tnba@obscmd \startseciii \printsubsubsection -\tnba@obscmd \startseciv \printparagraph -\tnba@obscmd \startsecv \printsubparagraph +\tnba@obscmd \paragraphspaces {\def\aboveparagraph{valor}\def\belowparagraph{valor}} +\tnba@obscmd \subparagraphspaces {\def\abovesubparagraph{valor}\def\belowsubparagraph{valor}} \tnba@obscmd \qt \enquote \tnba@obscmd \quote \Enquote -% \end{code} !------------------------------------------------ +% \end{code} % \sec INICIALIZAÇÃO -% 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. +% Aqui o |abntexto| define as configurações padrões. Note que |\pretextual| foi carregado após |\begin{document}| para evitar múltiplas chamadas deste, caso seja redefinido pelo usuário ou escritor de classes. -% \begin{code} !------------------------------------------------ -\definefontsize{12pt}{% - \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 - }% +% \begin{code} +\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} \geometry{ a4paper, + twoside=false, left=3cm, top=3cm, right=2cm, @@ -798,21 +830,19 @@ \parindent=0pt \parskip=0pt -\def\maintocfont {\tocsectionfont} - -\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\tocpartfont {\bfseries\MakeUppercase} +\def\tocchapterfont {\bfseries\MakeUppercase} +\def\tocsectionfont {\bfseries\MakeUppercase} +\def\tocsubsectionfont {\itshape} +\def\tocsubsubsectionfont {\scshape} +\def\tocparagraphfont {} +\def\tocsubparagraphfont {} -\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\sectionfont {\bfseries\MakeUppercase} +\def\subsectionfont {\itshape} +\def\subsubsectionfont {\scshape} +\def\paragraphfont {} +\def\subparagraphfont {} \def\abovechapter {50pt} \def\abovesection {\baselineskip} @@ -845,11 +875,9 @@ \def\appendixlabelwidth{9.2em} \def\annexlabelwidth{7.3em} -\def\maketoc{\makeext{toc}} - \def\topicslabelwidth{4ex} \AddToHook{begindocument}{\pretextual} \endinput -% \end{code} !------------------------------------------------ +% \end{code} diff --git a/macros/latex/contrib/abntexto/abntexto.pdf b/macros/latex/contrib/abntexto/abntexto.pdf Binary files differindex feb6a20420..a1f9ae0fac 100644 --- a/macros/latex/contrib/abntexto/abntexto.pdf +++ b/macros/latex/contrib/abntexto/abntexto.pdf diff --git a/macros/latex/contrib/abntexto/abntexto.tex b/macros/latex/contrib/abntexto/abntexto.tex index b9210f5b0e..32dc5e19d7 100644 --- a/macros/latex/contrib/abntexto/abntexto.tex +++ b/macros/latex/contrib/abntexto/abntexto.tex @@ -9,6 +9,7 @@ \usepackage{unicode-math} \usepackage[colorlinks,linktoc=page]{hyperref} \usepackage{listings} +\usepackage{microtype} \makeatletter @@ -47,8 +48,8 @@ \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}}% + \hbox{{\color{leftbar}\vrule width3pt}\kern\hh\vbox{% + \hbox{\vbox{\advance\hsize-3pt \advance\hsize-\hh \verbfont #1}}% }}% } \def\verbfont{\sloppy\ttfamily\small\singlesp} @@ -58,7 +59,7 @@ \chardef\savedttchar=`#1% \chardef\savedttcharc=\catcode`#1% \bgroup\lccode`\~=`#1% - \lowercase {\egroup\def~}{\leavevmode\hbox\bgroup\setverb\adef{ }{\ }% + \lowercase {\egroup\def~}{\leavevmode\hbox\bgroup\color{blue!90!black}\setverb\adef{ }{\ }% \ttfamily\readverb}% \bgroup\lccode`\~=`#1\lowercase{\egroup\def\readverb ##1~}{##1\egroup}% \catcode`#1=13 @@ -66,7 +67,7 @@ \verbchar{|} \AddToHook{begindocument}{\adef{<}{\begingroup \setverb\startmeta}} -\def\startmeta#1>{\ttfamily$\langle${\rmfamily\itshape #1\/}$\rangle$\endgroup} +\def\startmeta#1>{\normalcolor\ttfamily$\langle${\rmfamily\itshape #1\/}$\rangle$\endgroup} % MISC % ================================================ @@ -85,7 +86,7 @@ \setmathfont{texgyretermes-math.otf} \def\tocsectionfont#1{\bfseries#1\mdseries} -\def\sectionfont#1{\bfseries#1} +\def\sectionfont{\bfseries} \def\appendixlabelwidth{6.7em} \def \l@section {\addpenalty{-300}\addvspace{.5em plus1pt} @@ -120,10 +121,10 @@ \par} \vskip3in -{\centering\large\ttfamily 3.0.2-beta\par} +{\centering\large\ttfamily 3.1.0-beta\par} \newpage -\heading{Sumário} +\nonum\notoc\section{Sumário} \maketoc \newpage @@ -175,27 +176,25 @@ Digite as linhas em \ref{cd:início} e use |abntexto|. \end{document} \endverb -O arquivo exemplo.tex, disponível no CTAN, mostra como elaborar os elementos pré-textuais. +O arquivo |exemplo.tex|, disponível no CTAN, mostra como elaborar os elementos pré-textuais. \section{Fonte tipográfica} -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 |\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 tamanho da fonte é 12\,pt de imediato e pode ser configurado redefinindo |\normalsize| por meio de |\sizedef|. 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. 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. +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, porém |\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. As margens foram ajustadas com o pacote |geometry|. -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: |\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 na 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. \section{Sumário} -Os comandos que mudam a fonte das entradas no ToC (Table of Contents) são |\tocsectionfont|, |\tocsubsectionfont|, \dots, |\tocsubparagraphfont| (ver \ref{cd:contents}). +Os comandos que configuram a fonte tipográfica 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} @@ -204,12 +203,13 @@ Os comandos que mudam a fonte das entradas no ToC (Table of Contents) são |\toc \usepackage{xcolor} -\def \tocsectionfont #1{\color{red}\itshape\MakeUppercase{#1}} -\def \tocsubsectionfont #1{\color{blue}\bfseries#1} +\def \tocsectionfont {\color{red}\itshape\MakeUppercase} +\def \tocsubsectionfont {\color{blue}\bfseries} \begin{document} - \heading{Sumário} + \nonum\notoc\section{Sumário} \maketoc + \newpage \section{Título} \subsection{Título} @@ -229,12 +229,12 @@ Também há como alterar o espaço vertical acima e abaixo das seções usando | \usepackage{xcolor} -\def \sectionfont #1{\color{blue}\scshape#1} -\def \subsectionfont #1{\color{red}\itshape#1} -\def \subsubsectionfont #1{\color{yellow}\sffamily#1} +\def \sectionfont {\color{blue}\scshape} +\def \subsectionfont {\color{red}\itshape} +\def \subsubsectionfont {\color{yellow}\sffamily} \begin{document} - \heading{Sumário} + \nonum\notoc\section{Sumário} \maketoc \section{Texto} @@ -243,6 +243,10 @@ Também há como alterar o espaço vertical acima e abaixo das seções usando | \end{document} \endverb +O usuário pode querer utilizar capítulos no trabalho. O |abntexto| disponibiliza a instrução |\chapter| para capítulos, porém não em conformidade com a Norma, mas no estilo da classe |book|. Para ativá-los é preciso chamar a instrução |\usechapters| no preâmbulo do documento. Também é possível usar |\part| em conjunto com o comando |\useparts|. Este útlimo contém |\usechapters| em sua definição, portanto, ao chamar |\useparts|, você também estará chamando |\usechapters|. + +Os níveis secionais |\section|, |\chapter| e |\part| estão sujeitos a |\nonum| que remove a numeração do título e |\notoc| que instrui o título a não ingressar no sumário. + \section{Alíneas} 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. @@ -253,7 +257,7 @@ Use o ambiente |topics| para criar alíneas. Ele dispõe de dois níveis sendo q \begin{topics} \item \label{al:x} 1 \begin{topics} - \item x + \item \label{subal:x} x \item y \item z \end{topics} @@ -264,7 +268,7 @@ Use o ambiente |topics| para criar alíneas. Ele dispõe de dois níveis sendo q \section{Áreas de legenda} -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>}|. +Use |\place{<obj>}| para inserir áreas de legenda como mostrado em \ref{cd:place}. Mas existem condições: |\place| deve constar em último lugar e |\legend{<tipo de obj>}{<legenda>}| deve preceder |\label|. 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} @@ -279,9 +283,46 @@ Use |\place{<obj>}| para inserir áreas de legenda como mostrado em \ref{cd:plac \end{document} \endverb -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. +O leitor pode querer definir uma nova área de legenda usando, por exemplo, a instrução |\definelegendplace{diagram}{Diagrama}{diag.\,#1}{lod}| que criará o comando |\makelod| para escrever no documento as entradas do arquivo auxiliar .lod. Por exemplo, |\definelegendplace| foi usado para criar as áreas de legenda para tabelas e figuras nesta classe. + +O |abntexto| também tem suporte nativo para inserção de figuras lado a lado. Elas se comportam como caracteres então podemos usar |\hfil| para centralizá-las. Veja o exemplo no \ref{cd:multiple} e o resultado logo em seguida. + +Até o momento, a classe não tem suporte para objetos flutuantes. + +\legend{code}{Figuras lado a lado} \src\me +\label{cd:multiple} +\begverb + \legend{figure}{Duas figuras} + \begin{multiplace} + \sublegend{figure}{Um título} + \src{\texttt{www.site.com.br}. Acesso em 01 jan. 2020.} + \label{fig:teste1} + \hfil \subplace{\includegraphics[width=\linewidth]{example-image-a}} + \sublegend{figure}{Outro título} + \src{\texttt{www.site.com.br}. Acesso em 01 jan. 2020.} + \label{fig:teste2} + \hfil \subplace{\includegraphics[width=\linewidth]{example-image-b}} + \end{multiplace} + + Ver \ref{fig:teste1} e \ref{fig:teste2}. +\endverb + +\legend{figure}{Duas figuras} +\begin{multiplace} + \sublegend{figure}{Um título} + \src{\texttt{www.site.com.br}. Acesso em 01 jan. 2020.} + \label{fig:teste1} + \hfil \subplace{\includegraphics[width=\linewidth]{example-image-a}} + \sublegend{figure}{Outro título} + \src{\texttt{www.site.com.br}. Acesso em 01 jan. 2020.} + \label{fig:teste2} + \hfil \subplace{\includegraphics[width=\linewidth]{example-image-b}} +\end{multiplace} + +Ver \ref{fig:teste1} e \ref{fig:teste2}. -\section{Formatação de {\ttfamily\textbackslash\lowercase{cite}} e referências} +\section{Formatação de {\mdseries\ttfamily\textbackslash\lowercase{cite}} e referências} +\label{section} Até o momento o |abntexto| não possui macros para formatação de |\cite| e referências. Utilize |\usepackage[style=abnt]{biblatex}|. @@ -313,8 +354,6 @@ Pode-se alterar a largura dos rótulos das entradas de apêndice/anexo no sumár \printbibliography \end{corrprint} -\newpage - \appendix{Glossário} Você pode criar glossários com o pacote |glossaries|, como em \ref{cd:gloss}. @@ -322,6 +361,8 @@ Você pode criar glossários com o pacote |glossaries|, como em \ref{cd:gloss}. \legend{code}{Glossário} \src\me \label{cd:gloss} \begverb +\documentclass{abntexto} + \usepackage{lipsum} \usepackage{glossaries} @@ -347,6 +388,8 @@ O |glossaries.sty| também serve para criar uma lista de siglas, conforme \ref{c \legend{code}{Siglas} \src\me \label{cd:acro} \begverb +\documentclass{abntexto} + \usepackage[acronym]{glossaries} \makenoidxglossaries @@ -369,6 +412,7 @@ O |glossaries.sty| também serve para criar uma lista de siglas, conforme \ref{c \endverb \appendix{\emph{Feedback}} + Sugestões, relatos de \emph{bugs} e doações são bem-vindas. Chave PIX: {\ttfamily abntexto.classe@gmail.com} @@ -393,6 +437,8 @@ Chave PIX: {\ttfamily abntexto.classe@gmail.com} \def\leftsep{5mm} \lstnewenvironment{code}{\lstset{ +% language=TeX, Definir uma linguagem não está funcionando aqui. + basicstyle=\verbfont, frame=single, framerule=0pt, framesep=\codesep, @@ -403,7 +449,6 @@ Chave PIX: {\ttfamily abntexto.classe@gmail.com} numbers=left, numbersep=6pt, numberstyle=\fontsize{8pt}{9pt}\selectfont, - basicstyle=\verbfont, commentstyle=\color{blue}\bfseries, comment=[l]{\%}, columns=fullflexible, |