diff options
author | Karl Berry <karl@freefriends.org> | 2023-02-01 21:04:40 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2023-02-01 21:04:40 +0000 |
commit | 165f553315d9f59ef87cf00148148f9e15539f84 (patch) | |
tree | 54377cb7c31f0092ffeea81387644392ca00dd08 /Master | |
parent | 19544b227d42aa5d47703377e243aadbdae5a0ff (diff) |
abntexto (1feb23)
git-svn-id: svn://tug.org/texlive/trunk@65705 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/doc/latex/abntexto/README (renamed from Master/texmf-dist/doc/latex/abntexto/README.txt) | 4 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/abntexto/abntexto-manual.pdf | bin | 246005 -> 124830 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/abntexto/abntexto-manual.tex | 353 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/abntexto/abntexto.bib | 30 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/abntexto/abntexto.tex | 449 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/abntexto/abntexto.cls | 829 |
6 files changed, 899 insertions, 766 deletions
diff --git a/Master/texmf-dist/doc/latex/abntexto/README.txt b/Master/texmf-dist/doc/latex/abntexto/README index 850a1cd3f3a..bd658f4e981 100644 --- a/Master/texmf-dist/doc/latex/abntexto/README.txt +++ b/Master/texmf-dist/doc/latex/abntexto/README @@ -1,6 +1,6 @@ Public Domain Software -2022-10-12 -1.2.1-alpha +2023-01-31 +2.0.0-alpha Elayson abntexto.classe at gmail.com diff --git a/Master/texmf-dist/doc/latex/abntexto/abntexto-manual.pdf b/Master/texmf-dist/doc/latex/abntexto/abntexto-manual.pdf Binary files differindex 79ea6ff35f9..c168af62961 100644 --- a/Master/texmf-dist/doc/latex/abntexto/abntexto-manual.pdf +++ b/Master/texmf-dist/doc/latex/abntexto/abntexto-manual.pdf diff --git a/Master/texmf-dist/doc/latex/abntexto/abntexto-manual.tex b/Master/texmf-dist/doc/latex/abntexto/abntexto-manual.tex deleted file mode 100644 index 7d9d2b3153b..00000000000 --- a/Master/texmf-dist/doc/latex/abntexto/abntexto-manual.tex +++ /dev/null @@ -1,353 +0,0 @@ -\documentclass{abntexto} - -\makeatletter - -\usepackage[brazil]{babel} -\usepackage[T1]{fontenc} -\usepackage{newtxtext} -\usepackage{newtxmath} -\usepackage{lipsum} \def\lip{\lipsum[1][1-2]} -\usepackage{graphicx} -\usepackage[cmyk]{xcolor} -\usepackage[style=abnt]{biblatex} \addbibresource{abntexto.bib} -\usepackage[colorlinks]{hyperref} -%\let\href=\relax \newdimen\bibitemsep \def\textcite#1{{\bfseries#1}} - -% MARKUP -% ================================================ - -\def\ttnoligs{\ttfamily\@noligs} - -\def\cs#1{{\ttnoligs \string#1}} -\def\meta#1{{\ttnoligs <#1>}} % ⟨⟩ -\def\cc#1{{\ttnoligs \{\meta{#1}\}}} -\def\kk#1{{\ttnoligs [\meta{#1}]}} - -\def\arg{\cc{arg}} -\def\opt{\kk{opt}} -\def\ccval#1{{\ttnoligs \{#1\}}} -\def\kkval#1{{\ttnoligs [#1]}} -\def\pkg#1{{\ttnoligs #1}} - -% VERBATIM -% ================================================ - -\def\adef#1{\catcode`#1=13 \begingroup \lccode`\~=`#1\lowercase{\endgroup\def~}} -\def\dodef#1{\catcode`#1=12 } -\def\verbcatcodes{\let\do=\dodef \dospecials \catcode`\|=0 } - -{\catcode`\^^M=13 - \gdef\verbpercent#1^^M{{\color{graycomment}\itshape\@percentchar#1^^M}} -} - -\long\def\codeon{\par\begingroup \verbcatcodes - \adef{\^^I}{\ \ \ }% - \adef{\^^M}{\par\leavevmode}% - \adef{ }{\ }% - \adef{\%}{\verbpercent}% - \startverb -} -{\catcode`\ =13 \catcode`\^^M=13 \catcode`\|=0 \catcode`\\=12 - |gdef|startverb^^M#1^^M\codeoff{|verbbox{#1}|par|endgroup |verbreset} -} -\def\verbbox#1{\def\tnba@placewidth{\hsize \advance\hsize-3cm}% - \vskip\placeabovespace - \parindent=0pt - \ifx\tnba@savedplace\empty\else\tnba@makelegend\fi - \nobreak\nointerlineskip\vskip10pt - {\verbfont{#1}}% - \nobreak\nointerlineskip\vskip8pt - \ifx\tnba@savedsrc\empty\else\tnba@makesrc\fi - \vskip\placebelowspace -} -\def\verbreset{% - \let\tnba@savedplace=\empty - \let\tnba@savedlegend=\empty - \let\tnba@savedsrc=\empty - \let\@currentlabel=\empty -} -\def\verbfont{\raggedright\leftskip=6pt\singlesp\small\ttnoligs\leftframed} -\long\def\leftframed#1{\setbox0=\vtop{#1}% - \hbox{{\color{graybar}\kern1.5cm\vrule width1pt}\box0}% -} - -% MISC -% ================================================ - -\sizeselectordef\large{14.4pt}{17pt} -\sizeselectordef\Large{20.74pt}{25pt} -\sizeselectordef\LARGE{25pt}{30pt} - -\definecolor{graybar}{gray}{0.75} -\definecolor{graycomment}{gray}{.2} - -\legendplacedef{code}{Código}{Lista de códigos}{cód.\,#1}{loc} -\def\loclabelwidth{10.6ex} -\def\me{o autor.} - -\tocilowercase -\sectionlowercase - -\clubpenalty=10000 -\widowpenalty=10000 - -\let\cite=\textcite -\def\bibfont{\singlesp} -\bibitemsep=18pt - -\def\corrprinton{\begingroup \def\section##1##2{\heading{##2}}} -\def\corrprintoff{\par\endgroup} - -\makeatother - - - -\begin{document} - -\leavevmode\vskip1.9in - -{\centering \LARGE\sffamily\bfseries - abntexto\\[0.4em] \Large\itshape\mdseries - Classe para {\upshape\LaTeX}\\[2em] \normalfont\large - Elayson\\[1ex] - \href{mailto:abntexto.classe@gmail.com}{abntexto.classe at gmail.com}\\[2.5ex] - \today\par} - -\vskip3in - -{\centering \large\ttfamily 1.2.1-alpha\par} - -\newpage - -\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). - -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. - -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. - -\section{Chamando a classe} - -Digite as linhas em \ref{vb:início} e use \pkg{abntexto}. - -\legend{code}{Início} \src\me -\label{vb:início} -\codeon -\documentclass{abntexto} - -\usepackage[brazil]{babel} % para obter os padrões de hifenização corretos -\usepackage[T1]{fontenc} -\usepackage{newtxtext} % fontes New TX, semelhantes a Times -\usepackage{newtxmath} - -\begin{document} - Texto -\end{document} -\codeoff - -\section{Fonte tipográfica} - -O tamanho da fonte é 12\,pt de imediato e pode ser configurado com o comando \cs\setfontsize\cc{size} sendo que 12\,pt é a única opção disponível. Mas, se você deseja outro tamanho de fonte, crie-o usando \cs\fontsizedef\cc{size}\cc{defs}. 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 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}. - -\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\paper\ que deve ser usada assim: \cs\paper\ccval{left=0cm, right=0cm, top=0cm, botttom=0cm}. - -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 aonde 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\paper\ccval{twoside} equivale a \cs\paper\ccval{twoside=true} e esse princípio também se aplica a outras chaves booleanas. - -\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{vb:contents}). - -\legend{code}{Aparência do sumário} \src\me -\label{vb:contents} -\codeon -\documentclass{abntexto} - -\usepackage{color} - -\tocifont{\color{red}\itshape} -\tociifont{\color{blue}\bfseries} - -\begin{document} - \maketoc - - \section{Título} - \subsection{Título} -\end{document} -\codeoff - -\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{vb:sec}. - -Também há como alterar o espaço vertical acima e abaixo das seções usando \cs\sectionspaces, \cs\subsectionspaces, etc. Por exemplo, \cs\sectionspaces\ccval{2ex}\ccval{1cm} insere um espaço de 2\,ex acima de \cs\section\ e de 1\,cm abaixo. - -\legend{code}{Aparência das seções} \src\me -\label{vb:sec} -\codeon -\documentclass{abntexto} - -\usepackage{color} - -\sectionfont{\color{blue}\scshape} -\subsectionfont{\color{red}\slshape} -\subsubsectionfont{\color{yellow}\sffamily} - -\begin{document} - \maketoc - - \section{Texto} - \subsection{Texto} - \subsubsection{Texto} -\end{document} -\codeoff - -\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{vb:topics}. Naturalmente o uso de \cs\label\ é permitido. - -\legend{code}{Alíneas} \src\me -\label{vb:topics} -\codeon -\begin{topics} - \item \label{al:x} 1 - \begin{topics} - \item x - \item y - \item z - \end{topics} - \item \label{al:y} 2 - \item 3 -\end{topics} -\codeoff - -\section{Áreas de legenda} - -Use \cs\place\ para inserir áreas de legenda como mostrado em \ref{vb: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\placespaces\cc{aboveskip}\cc{belowskip}. - -\legend{code}{Áreas de legenda} \src\me -\label{vb:place} -\codeon -\usepackage{graphicx} - -\begin{document} - \legend{figure}{Um título} - \src{\texttt{www.site.com.br}. Acesso em 01 jan. 2020.} - \label{fig:teste} - \place{\includegraphics[width=0.4\linewidth]{example-image}} - - Ver \ref{fig:teste}. -\end{document} -\codeoff - -O leitor pode querer definir uma nova área de legenda usando, por exemplo, a instrução: \cs\legendplacedef\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. - -%* - -\section{Formatação de {\ttfamily\protect\textbackslash 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\}}. - -\section{Citações} - -Para inserir aspas em citações diretas use \cs\qt\ccval{texto}. Mas, se tratando de citações diretas com mais de três linhas, alterne para \cs\quote\ccval{texto \cs\cite\cc{key}}. - -\newpage - -\corrprinton -%\printbibliography -\corrprintoff - -\newpage -\appendix - -\section{\emph{Feedback}} -Sugestões, relatos de \emph{bugs} e doações são bem-vindas. - -\section{Código-fonte} - -\makeatletter -\newcount\seccount \def\thesec{\the\seccount} -\def\extlabelwidth{4ex} -\def\extlabelbox#1{\hbox to\extlabelwidth{#1~---~\hfil}} -\def\l@subsection#1#2{\smartaboveskip{\penalty351}{\vskip1em plus1pt}% - \begingroup - \usetocifont \nobreak - \extlineshape \relax - \hskip-\leftskip \maybeuctoc{#1}\nobreak\hfil\nobreak - \hbox to1.55em{\hss #2\kern-1pt\kern1pt}\par - \endgroup -} -\def\subsection#1{\par \smartaboveskip{\penalty351}{\vskip\subsectionabove}\noindent - \advancecount\seccount - \setbox0=\hbox{\usesubsectionfont \thesec\quad}% - {\usesubsectionfont \hangindent=\wd0 \box0 #1\tnba@nbpar}% - \nobreak \smartbelowskip{\vskip\subsectionbelow}% -} -\makeatother - -% SOURCE MACROS -% ================================================ - -\makeatletter - -\definecolor{bg}{cmyk}{0,0.06,0,0} -\definecolor{comment}{cmyk}{0.9,0,0,0.1} - -\def\sec#1\par{\subsection{#1}} - -\newdimen\hhkern \hhkern=12pt -\newdimen\vvkern \vvkern=12pt - -\def\hh{\kern\hhkern} -\def\vv{\kern\vvkern} - -{\catcode`\^^M=13 - \gdef\verbpercent#1^^M{{\bfseries\color{comment}\@percentchar#1^^M}} -} - -\def\srccatcodes{\catcode`\!=14 \catcode`\%=9 \catcode`\|=0 } -\def\codecatcodes{\let\do=\dodef \dospecials} - -\long\def\bcode{\par\begingroup \codecatcodes - \adef{\^^I}{\ \ \ }% - \adef{\^^M}{\par\leavevmode}% - \adef{ }{\ }% - \adef{\%}{\verbpercent}% -% \def\par##1{\endgraf\ifx##1\par\leavevmode\fi##1}\obeylines - \startcode -} -{\catcode`\%=13 \catcode`\ =13 \catcode`\^^M=13 \catcode`\|=0 \catcode`\\=12 - |long|gdef|startcode #1% |ecode{|codefont{#1}|par|endgroup} -} - -\def\codefont{\raggedright\small\ttnoligs\bgbox} - -\long\def\bgbox#1{\setbox0=\vbox{\advance\hsize-24pt \vv#1\vv}% - \ifdim\ht0>\dimexpr \pagegoal - \pagetotal \relax - \setbox2=\vsplit0 to\dimexpr \pagegoal - \pagetotal -24pt \relax - \fi - \vskip8pt minus2pt - \drawbg2\par \drawbg0% - \vskip8pt minus2pt -} -\def\drawbg#1{\leavevmode - \rlap{{\color{bg} \vrule width\dimexpr\wd#1+24pt\relax height\ht#1 depth\dp#1}}% - \hbox{\hh\box#1\hh}% -} - -\def\inputsrc#1{\begingroup \parskip=0pt \srccatcodes \input #1\endgroup} - -\inputsrc{abntexto.cls} - -\end{document} diff --git a/Master/texmf-dist/doc/latex/abntexto/abntexto.bib b/Master/texmf-dist/doc/latex/abntexto/abntexto.bib index 6e58d2d95ff..7110e1db1d2 100644 --- a/Master/texmf-dist/doc/latex/abntexto/abntexto.bib +++ b/Master/texmf-dist/doc/latex/abntexto/abntexto.bib @@ -1,24 +1,24 @@ @book{texbytopic, - author = {Viktor Eijkhout}, - title = {\TeX\ by topic: a \TeX nician’s reference}, - location = {England}, + author = {Viktor Eijkhout}, + title = {\TeX\ by topic: a \TeX nician’s reference}, + location = {England}, publisher = {Addison-Wesley}, - date = {1992}, - url = {https://www.ctan.org/pkg/texbytopic}, - urldate = {2022-09-28} + date = {1992}, + url = {https://www.ctan.org/pkg/texbytopic}, + urldate = {2022-09-28} } @book{viaexemplos, - author = {Sadao Massago}, - title = {\LaTeXe\ Via Exemplos}, + author = {Sadao Massago}, + title = {\LaTeXe\ Via Exemplos}, location = {São Paulo}, - date = {2022-05-17}, - url = {https://www.ctan.org/pkg/latex-via-exemplos}, - urldate = {2022-09-28} + date = {2022-05-17}, + url = {https://www.ctan.org/pkg/latex-via-exemplos}, + urldate = {2022-09-28} } @book{latex2eunnoficial, - author = {Torsten Martinsen and Stephen Gilmore and Karl Berry}, - title = {\LaTeXe: An unofficial reference manual}, - date = {2022-05}, - url = {https://www.ctan.org/pkg/latex2e-help-texinfo}, + author = {Torsten Martinsen and Stephen Gilmore and Karl Berry}, + title = {\LaTeXe: An unofficial reference manual}, + date = {2022-05}, + url = {https://www.ctan.org/pkg/latex2e-help-texinfo}, urldate = {2022-09-28} } diff --git a/Master/texmf-dist/doc/latex/abntexto/abntexto.tex b/Master/texmf-dist/doc/latex/abntexto/abntexto.tex new file mode 100644 index 00000000000..2183e6ebf7a --- /dev/null +++ b/Master/texmf-dist/doc/latex/abntexto/abntexto.tex @@ -0,0 +1,449 @@ +% !TeX TS-program = lualatex + +\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[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 + +\rewrite +\let\href=\relax \def\textcite#1{{\bfseries#1}} \def\today{} +\endrewrite + +% MARKUP +% ================================================ + +\def\ttnoligs{\ttfamily\@noligs} + +\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\arg{\cc{arg}} +\def\opt{\kk{opt}} +\def\ccval#1{{\ttnoligs \{#1\}}} +\def\kkval#1{{\ttnoligs [#1]}} +\def\pkg#1{{\ttnoligs #1}} + +% VERBATIM +% ================================================ + +\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 } + +{\catcode`\^^M=13 + \gdef\codepercent#1^^M{{\color{graycomment}\itshape\@percentchar#1^^M}} +} + +\long\def\codeon{\begingroup \codecatcodes + \adef{\^^I}{\space\space\space}% + \adef{\^^M}{\par\leavevmode}% + \adef{\ }{\space}% + \adef{\%}{\codepercent}% + \startcode +} + +{\catcode`\ =13 \catcode`\^^M=13 \catcode`\|=0 \catcode`\\=12 + |gdef|startcode^^M#1^^M\codeoff{|codebox{#1}|par|endgroup |codereset} +} +\def\codebox#1{\def\tnba@placewidth{\hsize \advance\hsize-3cm}% + \vskip\aboveplace + \parindent=0pt + \ifx\tnba@savedplace\empty\else\tnba@makelegend\fi + \nobreak\nointerlineskip\vskip10pt + {\codefont{#1}}% + \nobreak\nointerlineskip\vskip8pt + \ifx\tnba@savedsrc\empty\else\tnba@makesrc\fi + \vskip\belowplace +} +\def\codereset{% + \let\tnba@savedplace=\empty + \let\tnba@savedlegend=\empty + \let\tnba@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}}} + +% MISC +% ================================================ + +\definecolor{mono}{cmyk}{0,0,0,.73} +\definecolor{graybar}{gray}{.75} +\definecolor{graycomment}{gray}{.2} + +\erase +\setmainfont{TeX Gyre Termes} +\setmonofont{Inconsolatazi4-Regular}[Color=mono] +%\newfontfamily\bgfont{Inconsolatazi4-Regular}[Color=bgfontcolor] +\enderase + +\def\tocifont{\bfseries} +\def\sectionfont{\bfseries} + +\sizedef \large {14.4pt}{17pt}{} +\sizedef \Large {20.74pt}{25pt}{} +\sizedef \LARGE {25pt}{30pt}{} + +\definelegendplace{code}{Código}{Lista de códigos}{cód.\,#1}{loc} +\def\me{o autor.} + +\clubpenalty=10000 +\widowpenalty=10000 + +\let\cite=\textcite +\def\bibfont{\singlesp} +\erase +\bibitemsep=18pt +\enderase + +\makeatother + + + +\begin{document} + +\leavevmode\vskip1.9in + +{\centering \LARGE\sffamily\bfseries + abntexto\\[0.4em] \Large\itshape\mdseries + Classe para {\upshape\LaTeX}\\[2em] \normalfont\large + Elayson\\[1ex] + \href{mailto:abntexto.classe@gmail.com}{abntexto.classe at gmail.com}\\[2.5ex] + 2023-01-31\par} + +\vskip3in + +{\centering\large\ttfamily 2.0.0-alpha\par} + +\newpage + +\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). + +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. + +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. + +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. + +\section{Chamando a classe} + +Digite as linhas em \ref{cd:início} e use \pkg{abntexto}. + +\legend{code}{Início} \src\me +\label{cd:início} +\codeon +% !TeX TS-program = lualatex +\documentclass{abntexto} + +\usepackage[brazil]{babel} +\usepackage{fontspec} + +\setmainfont{TeX Gyre Termes} + +\begin{document} + Texto +\end{document} +\codeoff + +\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. + +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. + +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}. + +\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}}. + +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: \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}). + +\legend{code}{Aparência do sumário} \src\me +\label{cd:contents} +\codeon +\documentclass{abntexto} + +\usepackage{color} + +\def \tocifont {\color{red}\itshape\MakeUppercase} +\def \tociifont {\color{blue}\bfseries} + +\begin{document} + \maketoc + + \section{Título} + \subsection{Título} +\end{document} +\codeoff + +\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}. + +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. + +\legend{code}{Aparência das seções} \src\me +\label{cd:sec} +\codeon +\documentclass{abntexto} + +\usepackage{color} + +\def \sectionfont {\color{blue}\scshape} +\def \subsectionfont {\color{red}\itshape} +\def \subsubsectionfont {\color{yellow}\sffamily} + +\begin{document} + \maketoc + + \section{Texto} + \subsection{Texto} + \subsubsection{Texto} +\end{document} +\codeoff + +\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. + +\legend{code}{Alíneas} \src\me +\label{cd:topics} +\codeon +\begin{topics} + \item \label{al:x} 1 + \begin{topics} + \item x + \item y + \item z + \end{topics} + \item \label{al:y} 2 + \item 3 +\end{topics} +\codeoff + +\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}. + +\legend{code}{Áreas de legenda} \src\me +\label{cd:place} +\codeon +\usepackage{graphicx} + +\begin{document} + \legend{figure}{Um título} + \src{\texttt{www.site.com.br}. Acesso em 01 jan. 2020.} + \label{fig:teste} + \place{\includegraphics[width=0.4\linewidth]{example-image}} + + Ver \ref{fig:teste}. +\end{document} +\codeoff + +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. + +\section{Formatação de {\ttfamily\protect\textbackslash 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\}}. + +\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}}. + +\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}). + +\legend{code}{Anexos e apêndices} \src\me +\label{cd:appendix} +\codeon +\begin{document} + \appendix + \section{Lorem} + \section{Lipsum} + + \annex + \section{Lorem} + \section{Lipsum} +\end{document} +\codeoff + +Pode-se alterar a largura dos rótulos das entradas de apêndice/anexo no sumário redefinindo \cs\appendixlabelwidth \,/\,\cs\annexlabelwidth. + +%\end{document} + +\newpage + +\erase +\corrprinton +\printbibliography +\corrprintoff +\enderase + +\newpage + +\let\origsection=\section +\appendix + +\section{Glossário} + +%\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 +\usepackage{lipsum} +\usepackage{glossaries} + +\makenoidxglossaries + +\newglossaryentry{metalism}{name=metalismo,description={Tipo de sistema monetário cujo valor da moeda, geralmente de uma nação ou de um país, é determinado pela quantidade constante de certo metal (ouro ou prata), desta forma se estabelece um valor fixo de troca entre esses metais e o próprio dinheiro}} + +\newglossaryentry{lip}{name=lipsum,description={\lipsum[1]}} + +\begin{document} + O \gls{metalism} e o \gls{lip}. + + \corrprinton + \printnoidxglossary + \corrprintoff +\end{document} +\codeoff + +\section{Lista de siglas} + +O pacote \pkg{glossaries} também serve para criar uma lista de siglas. + +\codeon +\usepackage{lipsum} +\usepackage[acronym]{glossaries} + +\makenoidxglossaries + +\newacronym{ibge}{IBGE}{Instituto Brasileiro de Geografia e Estatística} +\newacronym{html}{HTML}{Hypertext Markup Language} + +\begin{document} + 1ª chamada: \gls{ibge}, \gls{html}. + + 2ª chamada: \gls{ibge}, \gls{html}. + + \corrprinton + \def\acronymname{Lista de siglas} + \printnoidxglossary[type=acronym] + \corrprintoff +\end{document} +\codeoff + +\section{\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 + +\definecolor{bg}{cmyk}{0,0.06,0,0} +\definecolor{comment}{cmyk}{0.9,0,0,0.1} +\definecolor{letter}{cmyk}{0,0,0,.8} + +\parskip=0pt plus.2ex minus.1ex + +\countsection=0 +\def\addcontentsline#1#2#3{} +\def\sectionfont{\itshape} +\def\sec#1\par{\origsection{#1}} + +{\catcode`\^^M=13 + \gdef\codepercent#1^^M{{\bfseries\color{comment}\@percentchar#1^^M}} +} + +\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`\%=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} diff --git a/Master/texmf-dist/tex/latex/abntexto/abntexto.cls b/Master/texmf-dist/tex/latex/abntexto/abntexto.cls index 4ae9b0ade6d..d731a37d2ee 100644 --- a/Master/texmf-dist/tex/latex/abntexto/abntexto.cls +++ b/Master/texmf-dist/tex/latex/abntexto/abntexto.cls @@ -1,17 +1,10 @@ %! Public Domain Software -%! 2022-10-12 -%! 1.2.1-alpha +%! 2023-01-31 +%! 2.0.0-alpha %! Elayson %! 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 - +%! RECOMENDAÇÕES %! PRÉ-CONFIGURAÇÕES %! FONTES %! LAYOUT @@ -22,77 +15,87 @@ %! TABELAS %! ÁREAS DE LEGENDA %! NOTAS DE RODAPÉ -%! UTILIDADES %! IDENTIFICAÇÃO DO TRABALHO %! A VÍRGULA COMO SEPARADOR DECIMAL %! INICIALIZAÇÃO -% |sec RECOMENDAÇÕES -% !======================================================= +% \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. +% 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. % \sec PRÉ-CONFIGURAÇÕES -% !======================================================= % Identificação do formato \TeX\ e da classe. Apenas o pacote \pkg{keyval} é carregado no \pkg{abntexto}. % |bcode !------------------------------------------------ \NeedsTeXFormat{LaTeX2e} -\ProvidesClass{abntexto}[2022-10-12 1.2.1-alpha Preparation of works in ABNT standards] +\ProvidesClass{abntexto}[2023-01-31 2.0.0-alpha Preparation of works in ABNT standards] \RequirePackage{keyval} % |ecode !------------------------------------------------ -% 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. +% Definição de um sistema \emph{chave=valor} pessoal e de macros auxiliares. % |bcode !------------------------------------------------ -\def\tnba@keyprefix{tnba} - -\def\tnba@key{\define@key{\tnba@keyprefix @\tnba@keyfamily}} -\def\tnba@setkeys{\setkeys{\tnba@keyprefix @\tnba@keyfamily}} -\def\tnba@setmacrokeys#1{\setkeys{\tnba@keyprefix @#1}} +\def\tnba@key{\define@key{tnba@\tnba@keyfamily}} +\def\tnba@setkeys#1{\setkeys{tnba@#1}} -\def\advancecount#1{\global\advance#1by1 } \def\tnba@addto#1#2{\expandafter\def\expandafter#1\expandafter{#1#2}} -\def\tnba@tobody{\tnba@addto\tnba@bodyhook} -\let\tnba@bodyhook=\empty -\AddToHook{begindocument}{\def\tnba@body{}\tnba@bodyhook} +\newif \iftnba@inbody +\AddToHook{begindocument}{\tnba@inbodytrue} % |ecode !------------------------------------------------ -% Comando de \emph{debug}. +% Alertas, mensagens, \emph{debug}. % |bcode !------------------------------------------------ -\def\tnba@error{\ClassError{abntexto}} +\def\tnba@warning{\ClassWarningNoLine{abntexto}} +\def\tnba@error#1{\ClassError{abntexto}{#1}{}} % |ecode !------------------------------------------------ -% \sec FONTE TIPOGRÁFICA -% !======================================================= +% Condicionais para identificação da extensão \TeX. -% Apenas o tamanho 12\,pt está definido. Defina outros usando \cs\fontsizedef\cc{size}\cc{defs}. +% |bcode !------------------------------------------------ +\newif \iftnba@PDFTEX +\newif \iftnba@XETEX +\newif \iftnba@LUATEX + +\ifx\directlua\undefined \ifx\XeTeXversion\undefined + \tnba@PDFTEXtrue \else + \tnba@XETEXtrue \fi \else + \tnba@LUATEXtrue \fi +% |ecode !------------------------------------------------ + +% \sec FONTE TIPOGRÁFICA -% Diferentemente de outras âncoras, \cs{\tnba@setfontsizehook} deve ser executado antes de \cs\begin\ccval{document} para evitar o alerta sobre \cs\normalsize\ não estar definido. +% Apenas o tamanho 12\,pt está definido. Defina outros usando \cs\definefontsize\cc{id}\hfil\break \cc{definições}. % |bcode !------------------------------------------------ -\def\fontsizedef#1#2{\@namedef{tnba@fontsize@#1}{#2}} -\def\sizeselectordef#1#2#3{\DeclareRobustCommand#1{\@setfontsize#1{#2}{#3}}} -\def\normalsizedef#1#2{\def\normalsize{\@setfontsize\normalsize{#1}{#2}}} +\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 - \let\normalsize=\relax - \tnba@error{Tamanho de fonte *#1* desconhecido}{}\relax \fi + \def\tnba@setfontsizehook{\csname tnba@fontsize@#1\endcsname}\else + \let\normalsize=\relax \tnba@error{Tamanho de fonte ''#1'' desconhecido}\relax \fi } -\AddToHook{begindocument/before}{\tnba@setfontsizehook} +\@onlypreamble \setfontsize + +\def\sizedef#1#2#3#4{\DeclareRobustCommand#1{\fontsize{#2}{#3}\selectfont#4}} \def\spacing#1{\def\currspacing{#1}% - \ifx\tnba@body\undefined - \tnba@tobody{\tnba@spacing{#1}} \else - \tnba@spacing{#1}\fi \ignorespaces + \@tempdima=\f@size pt \baselineskip=#1\@tempdima \ignorespaces +} + +\def\currspacing{1.5} +\def\normalsize{} +\def\tnba@setfontsizehook{} + +\AddToHook{begindocument}{% + \tnba@setfontsizehook + \normalsize + \@tempdima=\f@size pt \baselineskip=\currspacing\@tempdima } -\def\tnba@spacing#1{\dimen0=\f@size pt \dimen0=#1\dimen0 \baselineskip=\dimen0} \def\singlesp{\baselineskip=\normalbaselineskip} \def\onehalfsp{\spacing{1.5}} @@ -100,63 +103,52 @@ % |ecode !------------------------------------------------ % \sec \emph{LAYOUT} -% !======================================================= -% |bcode !------------------------------------------------ -\def\tnba@keyfamily{paper} +% 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. -\def\papersizedef#1(#2,#3){\def\tnba@keyfamily{paper}% - \tnba@key{#1}[]{\def\tnba@W{#2}\def\tnba@H{#3}}% -} - -\tnba@key{width} {\def\tnba@W{#1}} -\tnba@key{height} {\def\tnba@H{#1}} -\tnba@key{left} {\def\tnba@L{#1}} -\tnba@key{right} {\def\tnba@R{#1}} -\tnba@key{top} {\def\tnba@T{#1}} -\tnba@key{bottom} {\def\tnba@B{#1}} -\tnba@key{twoside}[true]{\def\tnba@twoside{#1}} +% |bcode !------------------------------------------------ +\iftnba@LUATEX + \protected\edef\pdfhorigin {\pdfvariable horigin} + \protected\edef\pdfvorigin {\pdfvariable vorigin} + \let\pdfpagewidth=\pagewidth + \let\pdfpageheight=\pageheight +\fi -\def\paper#1{\tnba@setmacrokeys{paper}{#1}% - \paperwidth=\tnba@W - \paperheight=\tnba@H - \oddsidemargin=\tnba@L - \evensidemargin=\tnba@R +\def \tnba@keyfamily {setlayout} + +\tnba@key{paper} {\csname tnba@papersize@#1\endcsname} +\tnba@key{width} {\def\tnba@W{#1}} +\tnba@key{height} {\def\tnba@H{#1}} +\tnba@key{left} {\def\tnba@L{#1}} +\tnba@key{right} {\def\tnba@R{#1}} +\tnba@key{top} {\def\tnba@T{#1}} +\tnba@key{bottom} {\def\tnba@B{#1}} +\tnba@key{twoside}[true]{\csname @twoside#1\endcsname} + +\def \setlayout #1{\tnba@setkeys{setlayout}{#1}% + \paperwidth=\tnba@W \paperheight=\tnba@H + \oddsidemargin=\tnba@L \evensidemargin=\tnba@R + \textwidth=\paperwidth \textheight=\paperheight \topmargin=\tnba@T - \textwidth=\paperwidth - \textheight=\paperheight \headheight=12pt \headsep=1cm - \advance\topmargin-\headheight \advance\topmargin-\headsep + \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{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 - \horigin=0pt - \vorigin=0pt - \pagewidth=\paperwidth - \pageheight=\paperheight - \fi + \advance\textheight-\tnba@T \advance\textheight-\tnba@B + \tnba@setlayoutA +} + +\def \tnba@setlayoutA {% + \iftnba@XETEX + \advance\oddsidemargin-1in \advance\evensidemargin-1in \advance\topmargin-1in + \pdfpagewidth=\paperwidth \pdfpageheight=\paperheight \else - \ifx\pdfhorigin\undefined - \advance\oddsidemargin-1in - \advance\topmargin-1in - \pdfpagewidth=\paperwidth - \pdfpageheight=\paperheight - \else - \pdfhorigin=0pt - \pdfvorigin=0pt - \pdfpagewidth=\paperwidth - \pdfpageheight=\paperheight - \fi + \pdfhorigin=0pt \pdfvorigin=0pt + \pdfpagewidth=\paperwidth \pdfpageheight=\paperheight \fi - \ifx\tnba@twoside\undefined \else - \csname @twoside\tnba@twoside\endcsname \fi } + +\def\definepapersize#1#2#3{\@namedef{tnba@papersize@#1}{\def\tnba@W{#2}\def\tnba@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. @@ -164,323 +156,338 @@ % 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}% +\def\pretextual{\setlayout{twoside=false}% \let\@oddhead=\empty \let\@evenhead=\empty \let\@oddfoot=\empty \let\@evenfoot=\empty } -\def\textual{\paper{twoside=true}% - \def\@oddhead{{\itshape\rightmark}\hfil{\small\thepage}}% - \def\@evenhead{{\small\thepage}\hfil\itshape\leftmark}% - \let\@oddfoot=\empty - \let\@evenfoot=\empty - \justifying +\def\textual{\setlayout{twoside=true}% + \def\@oddhead{\hfil\small\thepage}% + \def\@evenhead{\small\thepage\hfil}% + \def\@oddfoot{}% + \def\@evenfoot{}% \parindent=1.5cm } % |ecode !------------------------------------------------ % \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). +% 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. % |bcode !------------------------------------------------ +\newdimen\extlabelwidth + \def\thepage{\the\c@page} -\def\extline#1#2#3#4{% +\def\extpagenumwidth{1.55em} +\def\extrightmargin{2.55em} + +\def\extline#1#2#3#4#5{\vskip0pt plus.2pt + \extlabelwidth=#2 \begingroup - \csname use#1\romannumeral#2font\endcsname \nobreak - \extlineshape \relax - \hskip-\leftskip {#3}\nobreak - \leaders\hbox{$\m@th \mkern4.5mu\hbox{.}\mkern4.5mu$}\hfil\nobreak - \hbox to1.55em{\hss #4\kern-1pt\kern1pt}\par + \parindent=#1 \leftskip=#1 + \rightskip=\extrightmargin \parfillskip=-\rightskip + \leavevmode #3{}\advance\leftskip\extlabelwidth \hskip-\leftskip #3{#4}\nobreak\extleaders\nobreak + \hbox to\extpagenumwidth{\hfil #5\kern-1pt\kern1pt}\nbpar \endgroup } -\def\extlineshape{% - \parindent=0pt - \leftskip=\extlabelwidth - \rightskip=2.55em - \parfillskip=-\rightskip - \interlinepenalty=10000 - \leavevmode -} +\def\extleaders{\leaders\hbox{$\mathsurround=0pt \mkern4.5mu\hbox{.}\mkern4.5mu$}\hfill} -\def\l@section#1#2{\smartaboveskip{\penalty351}{\vskip1em plus1pt}% +\def \l@toci #1#2{\addpenalty{351}\addvspace{1em plus1pt}% + \extlabelwidth=\toclabelwidth \begingroup - \usetocifont \nobreak - \extlineshape \relax - \hskip-\leftskip \maybeuctoc{#1}\nobreak\hfil\nobreak - \hbox to1.55em{\hss #2\kern-1pt\kern1pt}\par + \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@subsection {\extline{toc}{2}} -\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}} -\def\tociiifont#1{\def\usetociiifont{#1}} -\def\tocivfont#1{\def\usetocivfont{#1}} -\def\tocvfont#1{\def\usetocvfont{#1}} +\def \l@tocii {\extline{0pt}{\toclabelwidth}{\tociifont}} +\def \l@tociii {\extline{0pt}{\toclabelwidth}{\tociiifont}} +\def \l@tociv {\extline{0pt}{\toclabelwidth}{\tocivfont}} +\def \l@tocv {\extline{0pt}{\toclabelwidth}{\tocvfont}} % |ecode !------------------------------------------------ % \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. +% O comando \cs\hangfrom\ foi retirado 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 !------------------------------------------------ +\let\hangfrom=\@hangfrom +\def\nbpar{{\interlinepenalty=10000\par}} +\def\advcount#1{\advance#1by1 } +\def\addtotoc{\hreftocline\currsecname \addcontentsline{toc}} +% |ecode !------------------------------------------------ % |bcode !------------------------------------------------ -\def\tnba@nbpar{\interlinepenalty=10000\par} -\def\noindentfirst{\global\everypar={\tnba@wipeepar \setbox7=\lastbox}} -\def\tnba@wipeepar{\global\everypar={}} +\newcount\countseclevel + +\newcount\countsection +\newcount\countsubsection +\newcount\countsubsubsection +\newcount\countparagraph +\newcount\countsubparagraph + +\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 !------------------------------------------------ -\newskip\savedtitleskip -\newskip\savedlastskip +% Nesta parte estão definidos os comandos secionais. Nenhum destes comandos são internos, caso o leitor queira redefiní-los. -\def\smartaboveskip#1#2{\savedlastskip=\lastskip - \ifdim\lastskip>\z@ \vskip-\lastskip \fi - \ifnum\lastpenalty=11333 \vskip-\savedtitleskip \else #1\fi - \ifdim\savedlastskip>\z@ \setbox0=\vbox{#2\global\dimen0=\lastskip}% - \else \dimen0=\maxdimen \fi - \ifdim\savedlastskip>\dimen0 \vskip\savedlastskip \else #2\fi +% |bcode !------------------------------------------------ +\def\recountseci {\countsubsection=0 \recountsecii} +\def\recountsecii {\countsubsubsection=0 \recountseciii} +\def\recountseciii {\countparagraph=0 \recountseciv} +\def\recountseciv {\countsubparagraph=0 } + +\def\noindentfirst{\global\everypar={\global\everypar={}\setbox7=\lastbox}} +\def\tryindentfirst{} + +\def\startsection#1{\advcount\countsection \recountseci + \hangfrom{\sectionfont\thesection\quad}% + {\sectionfont{#1}\nbpar}% + \tryindentfirst +} +\def\startsubsection#1{\advcount\countsubsection \recountsecii + \hangfrom{\subsectionfont\thesubsection\quad}% + {\subsectionfont{#1}\nbpar}% + \tryindentfirst +} +\def\startsubsubsection#1{\advcount\countsubsubsection \recountseciii + \hangfrom{\subsubsectionfont\thesubsubsection\quad}% + {\subsubsectionfont{#1}\nbpar}% + \tryindentfirst +} +\def\startparagraph#1{\advcount\countparagraph \recountseciv + \hangfrom{\paragraphfont\theparagraph\quad}% + {\paragraphfont{#1}\nbpar}% + \tryindentfirst +} +\def\startsubparagraph#1{\advcount\countsubparagraph + \hangfrom{\subparagraphfont\thesubparagraph\quad}% + {\subparagraphfont{#1}\nbpar}% + \tryindentfirst } -\def\smartbelowskip#1{#1\global\savedtitleskip=\lastskip \penalty11333} % |ecode !------------------------------------------------ +% A instrução \cs\setcurrlabel\ ensina a forma como \cs\label's devem ser referenciados. Esse comando pode ser útil em outros contextos. + % |bcode !------------------------------------------------ -\newcount\sectioncount -\newcount\subsectioncount -\newcount\subsubsectioncount -\newcount\paragraphcount -\newcount\subparagraphcount - -\def\thesection{\the\sectioncount} -\def\thesubsection{\thesection .\the\subsectioncount} -\def\thesubsubsection{\thesubsection .\the\subsubsectioncount} -\def\theparagraph{\thesubsubsection .\the\paragraphcount} -\def\thesubparagraph{\theparagraph .\the\subparagraphcount} - -\def\sectionmark#1{} -\def\subsectionmark#1{} -\def\subsubsectionmark#1{} -\def\paragraphmark#1{} -\def\subparagraphmark#1{} +\def\setcurrlabel#1{\def\@currentlabel{#1}} + +\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\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\section#1{\par \addpenalty{351}\addvspace\abovesection + \identifysection + \startsection{#1}% + \marksection{#1}% + \addtotoc{toci}{\protect\toclabelbox{\thesection}#1}% + \par\nobreak \vskip\belowsection +} +\def\subsection#1{\par \addpenalty{351}\addvspace\abovesubsection + \identifysubsection + \startsubsection{#1}% + \marksubsection{#1}% + \addtotoc{tocii}{\protect\toclabelbox{\thesubsection}#1}% + \par\nobreak \vskip\belowsubsection +} +\def\subsubsection#1{\par \addpenalty{351}\addvspace\abovesubsubsection + \identifysubsubsection + \startsubsubsection{#1}% + \marksubsubsection{#1}% + \addtotoc{tociii}{\protect\toclabelbox{\thesubsubsection}#1}% + \par\nobreak \vskip\belowsubsubsection +} +\def\paragraph#1{\par \addpenalty{351}\addvspace\aboveparagraph + \identifyparagraph + \startparagraph{#1}% + \markparagraph{#1}% + \addtotoc{tociv}{\protect\toclabelbox{\theparagraph}#1}% + \par\nobreak \vskip\belowparagraph +} +\def\subparagraph#1{\par \addpenalty{351}\addvspace\abovesubparagraph + \identifysubparagraph + \startsubparagraph{#1}% + \marksubparagraph{#1}% + \addtotoc{tocv}{\protect\toclabelbox{\thesubparagraph}#1}% + \par\nobreak \vskip\belowsubparagraph +} % |ecode !------------------------------------------------ -% Nesta parte estão definidos os comandos secionais. +% 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. % |bcode !------------------------------------------------ -\def\section#1{\par \smartaboveskip{\penalty351}{\vskip\sectionabove}\noindent - \advancecount\sectioncount - \def\@currentlabel{seção~\thesection}%+/ - \setbox0=\hbox{\usesectionfont \thesection\quad}% - {\usesectionfont \hangindent=\wd0 \box0 \maybeucsec{#1}\tnba@nbpar}% -% \noindentfirst - \hreftocline{section}% - \addcontentsline{toc}{section}{\protect\extlabelbox{\thesection\hss}#1}% - \nobreak \smartbelowskip{\vskip\sectionbelow}% -} -\def\subsection#1{\par \smartaboveskip{\penalty351}{\vskip\subsectionabove}\noindent - \advancecount\subsectioncount - \setbox0=\hbox{\usesubsectionfont \thesubsection\quad}% - {\usesubsectionfont \hangindent=\wd0 \box0 #1\tnba@nbpar}% -% \noindentfirst - \hreftocline{subsection}% - \addcontentsline{toc}{subsection}{\protect\extlabelbox{\thesubsection\hss}#1}% - \nobreak \smartbelowskip{\vskip\subsectionbelow}% -} -\def\subsubsection#1{\par \smartaboveskip{\penalty351}{\vskip\subsubsectionabove}\noindent - \advancecount\subsubsectioncount - \setbox0=\hbox{\usesubsubsectionfont \thesubsubsection\quad}% - {\usesubsubsectionfont \hangindent=\wd0 \box0 #1\tnba@nbpar}% -% \noindentfirst - \hreftocline{subsubsection}% - \addcontentsline{toc}{subsubsection}{\protect\extlabelbox{\thesubsubsection\hss}#1}% - \nobreak \smartbelowskip{\vskip\subsubsectionbelow}% -} -\def\paragraph#1{\par \smartaboveskip{\penalty351}{\vskip\paragraphabove}\noindent - \advancecount\paragraphcount - \setbox0=\hbox{\useparagraphfont \theparagraph\quad}% - {\useparagraphfont \hangindent=\wd0 \box0 #1\tnba@nbpar}% -% \noindentfirst - \hreftocline{paragraph}% - \addcontentsline{toc}{paragraph}{\protect\extlabelbox{\theparagraph\hss}#1}% - \nobreak \smartbelowskip{\vskip\paragraphbelow}% -} -\def\subparagraph#1{\par \smartaboveskip{\penalty351}{\vskip\subparagraphabove}\noindent - \advancecount\subparagraphcount - \setbox0=\hbox{\subsubparagraphfont \thesubparagraph\quad}% - {\usesubparagraphfont \hangindent=\wd0 \box0 #1\tnba@nbpar}% -% \noindentfirst - \hreftocline{subparagraph}% - \addcontentsline{toc}{subparagraph}{\protect\extlabelbox{\thesubparagraph\hss}#1}% - \nobreak \smartbelowskip{\vskip\subparagraphbelow}% +\def\toclabelbox#1{\hbox to\extlabelwidth{#1\hfil}} +\def\makeext#1{\@starttoc{#1}} +\def\tocname{Sumário} + +\def\marksection#1{\markboth + {\MakeUppercase{\thesection\quad #1}}% + {}% } +\def\marksubsection#1{\markright{\MakeUppercase{\thesubsection\quad #1}}} \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 +\AddToHook{begindocument}{% + \@ifpackageloaded{hyperref}{}{\let\hreftocline=\@gobble}% } % |ecode !------------------------------------------------ -% Comandos de personalização de seções. +% A macro \cs\heading\ serve para produzir títulos não contados, como “Sumário”, “Lista de figuras”, “Apêndice” etc. % |bcode !------------------------------------------------ -\def\sectionuppercase{\def\maybeucsec{\MakeUppercase}} -\def\sectionlowercase{\let\maybeucsec=\relax} - -\def\sectionfont#1{\def\usesectionfont{#1}} -\def\subsectionfont#1{\def\usesubsectionfont{#1}} -\def\subsubsectionfont#1{\def\usesubsubsectionfont{#1}} -\def\paragraphfont#1{\def\useparagraphfont{#1}} -\def\subparagraphfont#1{\def\usesubparagraphfont{#1}} - -\def\sectionspaces#1#2{\def\sectionabove{#1}\def\sectionbelow{#2}} -\def\subsectionspaces#1#2{\def\subsectionabove{#1}\def\subsectionbelow{#2}} -\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}} +\def\heading#1{\par {\centering \sectionfont{#1}\par}% + \nobreak \vskip\belowsection +} % |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. +% 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. % |bcode !------------------------------------------------ -\newcount\appendixcount -\newcount\annexcount +\newcount\countappendix +\newcount\countannex + +\def\theappendix{\@Alph\countappendix} +\def\theannex{\@Alph\countannex} -\def\theappendix{\@Alph\appendixcount} -\def\theannex{\@Alph\annexcount} \def\appendixlabelwidth{6.6em} \def\annexlabelwidth{6.2em} -\def\l@appendix{\let\extlabelwidth=\appendixlabelwidth - \def\extlabelbox##1{\hbox to\extlabelwidth{Apêndice~##1~---~\hfil}}% - \l@section -} -\def\l@annex{\let\extlabelwidth=\annexlabelwidth - \def\extlabelbox##1{\hbox to\extlabelwidth{Anexo~##1~---~\hfil}}% - \l@section -} - -\def\appendix{\def\section##1{\newpage\noindent \advance\appendixcount by1 - {\usesectionfont \centering \maybeucsec{Apêndice~\theappendix~---~##1}\tnba@nbpar}% - \hreftocline{appendix}% - \addcontentsline{toc}{appendix}{\protect\extlabelbox{\theappendix}##1}% - \nobreak \vskip\sectionbelow - }% -} -\def\annex{\def\section##1{\newpage\noindent \advance\annexcount by1 - {\usesectionfont \centering \maybeucsec{Anexo~\theannex~---~##1}\tnba@nbpar}% - \hreftocline{annex}% - \addcontentsline{toc}{annex}{\protect\extlabelbox{\theannex}##1}% - \nobreak \vskip\sectionbelow - }% -} +\def\appendixlabelbox#1{\hbox to\appendixlabelwidth{Apêndice~#1~---~\hfil}} +\def\annexlabelbox#1{\hbox to\annexlabelwidth{Anexo~#1~---~\hfil}} + +\def\l@appendix{\l@toci} +\def\l@annex{\l@toci} + +\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 !------------------------------------------------ % \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. % |bcode !------------------------------------------------ -\def\qt#1{``#1''} +\AddToHook{begindocument}{% + \@ifpackageloaded{csquotes}{}{\protected\def\enquote#1{``#1''}}% +} -\def\quote#1{\smartaboveskip{\penalty351}{\vskip\baselineskip}% - \hbox to\hsize{\hfil\vtop{\advance\hsize-4cm \noindent\small #1\tnba@getprevdepth}}\tnba@useprevdepth - \smartbelowskip{\vskip\baselineskip}% +\def\Enquote#1{\par\removelastskip + \vskip\baselineskip + {\noindent\leftskip=4cm \small #1\nbpar}% + \vskip\baselineskip } % |ecode !------------------------------------------------ % \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. +% 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. % |bcode !------------------------------------------------ -\newcount\topicsdepth -\newcount\topicscount +\newcount\counttopicsdepth +\newcount\counttopics -\def\topicsitem{\par\leavevmode\noindent \advance\topicscount by1 - \def\@currentlabel{alínea~\@alph\topicscount )}% - \kern\dimexpr-\parindent-\topicslabelwidth\relax +\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\topicscount )} +\def\topicslabeli{\@alph\counttopics )} \def\topicslabelii{---} -\def\topics{\par \advance\topicsdepth by1 - \ifnum\topicsdepth=1 \advance\leftskip\parindent \fi +\def\topics{\par\penalty51 \advcount\counttopicsdepth + \ifnum\counttopicsdepth=1 \advance\leftskip\parindent \fi \advance\leftskip\topicslabelwidth - \edef\topicsmakelabel{\expandafter\noexpand\csname topicslabel\romannumeral\topicsdepth\endcsname}% + \edef\topicsmakelabel{\expandafter\noexpand\csname topicslabel\romannumeral\counttopicsdepth\endcsname}% \let\item=\topicsitem \tnba@addto\@esphack\ignorespaces } -\let\endtopics=\par +\def\endtopics{\par} +% |ecode !------------------------------------------------ + +% |bcode !------------------------------------------------ + +\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 \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 !------------------------------------------------ % \sec ÁREAS DE LEGENDA -% !======================================================= + +% |bcode !------------------------------------------------ +\def\tnba@getprevdepth{\par\xdef\tnba@getprevdepthA{\the\prevdepth}} +\def\tnba@useprevdepth{\par\prevdepth=\tnba@getprevdepthA} +% |ecode !------------------------------------------------ % |bcode !------------------------------------------------ \def\tnba@lastplacenum{0} -\def\legendplacedef#1#2#3#4#5{\expandafter\newcount\csname c@#1\endcsname - \@namedef{#1name}{#2} - \@namedef{p@#1}##1{#4} - \@namedef{ext@#1}{#5} - \@namedef{l@#1}{\extline{#5}{1}} - \expandafter\edef\csname the#1\endcsname{\expandafter\noexpand\the\csname c@#1\endcsname} - \@namedef{#5labelwidth}{10.4ex} - \@namedef{#5labelbox}##1{\hbox to\extlabelwidth{#2 ##1 ---\hfil}} - \@namedef{make#5}{\heading{#3}% - \expandafter\let\expandafter\extlabelwidth\csname #5labelwidth\endcsname - \expandafter\let\expandafter\extlabelbox\csname #5labelbox\endcsname - \@starttoc{#5}\twonewpage - } +\def\definelegendplace#1#2#3#4#5{\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}% } % |ecode !------------------------------------------------ % |bcode !------------------------------------------------ \def\tnba@makelegend{\hbox to\hsize{\hfil\tnba@makelegendA\hfil}} -\def\tnba@makelegendA{\advancecount{\csname c@\tnba@savedplace\endcsname}% +\def\tnba@makelegendA{%\global\advance\csname count\tnba@savedplace\endcsname by1 + \global\advcount{\csname count\tnba@savedplace\endcsname}% \vtop{\setbox0=\hbox{\legendlabel \tnba@savedlegend}% \ifdim\wd0>\legendmaxwidth \hsize=\legendmaxwidth \else \hsize=\wd0 \fi \legendlabel \vtop{\setbox0=\hbox{\legendlabel}\advance\hsize-\wd0 \tnba@savedlegend}% }% - \addcontentsline{\csname ext@\tnba@savedplace\endcsname}% - {\tnba@savedplace}% - {\protect\extlabelbox\thelegend \tnba@savedlegend}% + \edef\@tempa{\expandafter\noexpand\csname \csname ext@\tnba@savedplace\endcsname labelbox\endcsname}% + \edef\@tempa{\noexpand\addcontentsline{\expandafter\noexpand\csname ext@\tnba@savedplace\endcsname}% + {\expandafter\noexpand\csname ext@\tnba@savedplace\endcsname i}% + {\noexpand\protect\expandafter\noexpand\@tempa{\noexpand\thelegend}\noexpand\tnba@savedlegend}}% + \@tempa } \def\tnba@makesrc{\hbox to\hsize{\hfil\tnba@makesrcA\hfil}\tnba@useprevdepth} @@ -490,23 +497,17 @@ % |ecode !------------------------------------------------ % |bcode !------------------------------------------------ -\def\legend#1#2{% - \ifdim\lastskip<0pt \else - \ifnum\lastpenalty=11333 \vskip-\placeabovespace \else - \removelastskip \fi\fi - \def\tnba@savedplace{#1}\def\tnba@savedlegend{#2}% - \def\@currentlabel{\csname p@#1\expandafter\endcsname - \the\expandafter\numexpr\csname c@#1\endcsname+1}% +\def\legend#1#2{\removelastskip + \def\tnba@savedplace{#1}% + \def\tnba@savedlegend{#2}% + \setcurrlabel{\csname p@#1\expandafter\endcsname + \the\expandafter\numexpr\csname count#1\endcsname+1}% } + \def\legendname{\csname \tnba@savedplace name\endcsname} -\def\thelegend{\the\csname c@\tnba@savedplace\endcsname} +\def\thelegend{\the\csname count\tnba@savedplace\endcsname} -\def\src#1{% - \ifdim\lastskip<0pt \else - \ifnum\lastpenalty=11333 \vskip-\placeabovespace \else - \removelastskip \fi\fi - \def\tnba@savedsrc{#1}% -} +\def\src#1{\removelastskip \def\tnba@savedsrc{#1}} % |ecode !------------------------------------------------ % |bcode !------------------------------------------------ @@ -514,78 +515,59 @@ \let\tnba@savedlegend=\empty \let\tnba@savedsrc=\empty -\long\def\place#1{\setbox0=\hbox{\ignorespaces#1}\edef\tnba@placewidth{\the\wd0}% - \vskip\placeabovespace +\long\def\place#1{\vskip\aboveplace \begingroup + \setbox0=\hbox{\ignorespaces#1\unskip}\edef\tnba@placewidth{\the\wd0}% \parindent=0pt \ifx\tnba@savedplace\empty\else\tnba@makelegend\fi - \nointerlineskip\nobreak\vskip10pt - \hbox to\hsize{\hfil\box0\hfil}% - \nointerlineskip\nobreak\vskip8pt - \tnba@makesrc - \vskip\placebelowspace + \par\nointerlineskip\nobreak\vskip10pt + \hbox to\hsize{\hfil\box0 \hfil}% + \par\nointerlineskip\nobreak\vskip8pt + \tnba@makesrc \par \endgroup + \vskip\belowplace \let\tnba@savedplace=\empty \let\tnba@savedlegend=\empty \let\tnba@savedsrc=\empty - \let\@currentlabel=\empy + \let\@currentlabel=\empty } -\def\placespaces#1#2{\def\placeabovespace{#1}\def\placebelowspace{#2}} % |ecode !------------------------------------------------ % \sec NOTAS DE RODAPÉ -% !======================================================= % As notas de rodapé também foram modificadas. % |bcode !------------------------------------------------ \let\footnotesize=\relax \def\@makefnmark{\hbox{\@textsuperscript{\selectfont\@thefnmark}}} -\def\@makefntext#1{\leavevmode \setbox0=\hbox{\@makefnmark\kern2pt}% -\hangindent=\wd0 \box0 \small #1} -\def\footnoterule{\kern18pt\hrule width5cm\kern2.6pt} +\def\@makefntext#1{\hangfrom{\@makefnmark\kern2pt}\small #1} +\def\footnoterule{\kern18pt \hrule width5cm \kern2.6pt } % |ecode !------------------------------------------------ -% \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. +% \sec IDENTIFICAÇÃO DO TRABALHO % |bcode !------------------------------------------------ -\def\tnba@getprevdepth{\par\xdef\tnba@getprevdepthA{\the\prevdepth}} -\def\tnba@useprevdepth{\par\prevdepth=\tnba@getprevdepthA} - -\long\def\sizedpar#1{\leavevmode\vtop{\ignorespaces#1\tnba@getprevdepth}\tnba@useprevdepth} - -\def\justifying{\let\\=\tnba@origcr - \leftskip=0pt \rightskip=0pt - \finalhyphendemerits=5000 - \parfillskip=0pt plus1fil -} -\let\tnba@origcr=\\ - \def\Enter{\@ifnextchar[\tnba@EnterS{\tnba@EnterS[]}} \def\tnba@EnterS[#1]{\vskip#1\baselineskip} \def\twonewpage{\newpage\leavevmode\newpage} -% |ecode !------------------------------------------------ - -% \sec IDENTIFICAÇÃO DO TRABALHO -% !======================================================= -% |bcode !------------------------------------------------ \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\indexcardbar\hrule}\vrule}% + \hrule\indexcardA{#1}\vss\xindexcardbar\hrule}\vrule}% } \long\def\indexcardA#1{\hbox spread2cm{\hss\vbox spread2cm{\vss\ttfamily#1\vss}\hss}% } -\def\indexcardbar{\hrule\kern1cm} -\def\judgeline#1{\par{\centering \rule{.7\linewidth}{.6pt}\\ #1\Enter[1.5]}} +\def\xindexcardbar{} +\def\indexcardbar{\def\xindexcardbar{\hrule\kern1cm}} + +\def\judgeline#1{\par {\centering \rule{.7\linewidth}{.6pt}\\ #1\Enter[1.5]}} + +\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. @@ -605,31 +587,85 @@ \mathcode`\,="8000 % |ecode !------------------------------------------------ +% Abaixo está definido um ajuste para que o \pkg{hyperref} não crie conflitos com \cs\MakeUppercase\ nas entradas do sumário. + % |bcode !------------------------------------------------ -\ifx\XeTeXversion\undefined -\AddToHook{begindocument/before}{ - \let\tnba@hyper@linkstart=\hyper@linkstart - \protected\def\hyper@linkstart#1#2{\lowercase{\tnba@hyper@linkstart{#1}{#2}}} -} +\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 % |ecode !------------------------------------------------ +% \sec COMANDOS OBSOLETOS + +% O \pkg{abntexto} emitirá um aviso ou erro caso um destes comandos esteja obsoleto ou inexistente. + +% |bcode !------------------------------------------------ +\def\tnba@undefcmd#1{\def#1{\tnba@error{% + O comando ''\string#1'' não existe mais. Linha \the\inputlineno +}}} +\def\tnba@obscmd#1#2{\def#1{\tnba@error{% + O comando ''\string#1'' é obsoleto, use ''\unexpanded{#2}'' ao invés. Linha \the\inputlineno +}}} +\def\tnba@switchcmd#1#2{\def#1{\tnba@warning{% + O comando ''\string#1'' é obsoleto, use ''\string#2'' ao invés. Linha \the\inputlineno +}#2}} + +\tnba@undefcmd \extlineshape + +\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@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@switchcmd \fontsizedef \definefontsize +\tnba@switchcmd \advancecount \advcount +\tnba@switchcmd \paper \setlayout +\tnba@switchcmd \papersizedef \definepapersize +\tnba@switchcmd \makeseci \startsection +\tnba@switchcmd \makesecii \startsubsection +\tnba@switchcmd \makeseciii \startsubsubsection +\tnba@switchcmd \makeseciv \startparagraph +\tnba@switchcmd \makesecv \startsubparagraph +\tnba@switchcmd \qt \enquote +\tnba@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 \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} - \sizeselectordef\small{10pt}{12pt} +\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 +} + +\definefontsize{12pt}{% + \sizedef\normalsize{12pt}{14.5pt}{\setnormalsize}% + \sizedef\small{10pt}{12pt}{\setsmall}% +} + \setfontsize{12pt} \spacing{1.5} -\papersizedef{A4}(210mm,297mm) -\paper{ - A4, +\definepapersize{A4}{210mm}{297mm} + +\setlayout{ + paper=A4, left=3cm, top=3cm, right=2cm, @@ -640,41 +676,42 @@ \parindent=0pt \parskip=0pt -\tociuppercase -\sectionuppercase - -\tocifont {\bfseries} -\tociifont {\itshape} -\tociiifont {\scshape} -\tocivfont {} -\tocvfont {} - -\sectionfont {\bfseries} -\subsectionfont {\itshape} -\subsubsectionfont {\scshape} -\paragraphfont {} -\subparagraphfont {} - -\sectionspaces {\baselineskip}{\baselineskip} -\subsectionspaces {\baselineskip}{\baselineskip} -\subsubsectionspaces {\baselineskip}{\baselineskip} -\paragraphspaces {\baselineskip}{\baselineskip} -\subparagraphspaces {\baselineskip}{\baselineskip} - -\legendplacedef{figure}{Figura}{Lista de figuras}{fig.\,#1}{lof} -\legendplacedef{table}{Tabela}{Lista de tabelas}{tab.\,#1}{lot} +\def\tocifont {\bfseries\MakeUppercase} +\def\tociifont {\itshape} +\def\tociiifont {\scshape} +\def\tocivfont {} +\def\tocvfont {} + +\def\sectionfont {\bfseries\MakeUppercase} +\def\subsectionfont {\itshape} +\def\subsubsectionfont {\scshape} +\def\paragraphfont {} +\def\subparagraphfont {} + +\def\abovesection {\baselineskip} +\def\abovesubsection {\baselineskip} +\def\abovesubsubsection {\baselineskip} +\def\aboveparagraph {\baselineskip} +\def\abovesubparagraph {\baselineskip} + +\def\belowsection {\baselineskip} +\def\belowsubsection {\baselineskip} +\def\belowsubsubsection {\baselineskip} +\def\belowparagraph {\baselineskip} +\def\belowsubparagraph {\baselineskip} + +\definelegendplace{figure}{Figura}{Lista de figuras}{fig.\,#1}{lof} +\definelegendplace{table}{Tabela}{Lista de tabelas}{tab.\,#1}{lot} \def\legendlabel{\legendname ~\thelegend ~---~} \def\srclabel{\raggedright\small Fonte:~} \def\legendmaxwidth{0.7\linewidth} -\placespaces{\baselineskip}{\baselineskip} +\def\aboveplace{\baselineskip} +\def\belowplace{\baselineskip} -\def\maketoc{\heading{Sumário} - \let\extlabelwidth=\toclabelwidth - \let\extlabelbox=\toclabelbox - \@starttoc{toc}\newpage -} +\def\toclabelwidth{3.4ex} +\def\maketoc{\heading{Sumário} \makeext{toc}\newpage} \def\topicslabelwidth{4ex} |