% !TeX TS-program = lualatex \documentclass{abntexto} \usepackage[cmyk]{xcolor} \usepackage[style=abnt]{biblatex} \addbibresource{abntexto.bib} \usepackage[brazil]{babel} \usepackage{fontspec} \usepackage{unicode-math} \usepackage[colorlinks,linktoc=page]{hyperref} \usepackage{listings} \usepackage{microtype} \makeatletter % VERBATIM % ================================================ \newcount\verbcount \newdimen\hh \hh=6pt \def\adef#1{\catcode`#1=13 \begingroup \lccode`\~=`#1\lowercase{\endgroup\def~}} \def\setverb{\def\do##1{\catcode`##1=12}\dospecials} {\catcode`\^^M=13 \gdef\verbpercent#1^^M{{\bfseries\color{comment}\%#1}^^M} } \def\makeverbcount{} \def\begverb{\par \begingroup\parindent=0pt\parskip=0pt \setverb \catcode`\|=0 \adef{ }{\ }% \adef{\^^I}{\ \ \ }% % \everypar={\makeverbcount}% \def\par##1{\endgraf\ifx##1\par\leavevmode\fi ##1}% \obeylines \adef{'}{\textquotesingle}% % \adef{`}{\`{}}% \adef{-}{-\kern0pt }% \adef{\%}{\verbpercent}% \startverb } {\catcode`\^^M=13 \catcode`\|=0 \catcode`\\=12 |long|gdef|startverb#1\endverb{|verbbox{#1|endgraf}|endgroup|resetplace} } \def\verbbox#1{\place{\verbframe{#1}}} \def\verbframe#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} \def\verbchar#1{% \ifx\savedttchar\undefined\else \catcode\savedttchar=\savedttcharc \fi \chardef\savedttchar=`#1% \chardef\savedttcharc=\catcode`#1% \bgroup\lccode`\~=`#1% \lowercase {\egroup\def~}{\leavevmode\hbox\bgroup\color{blue!90!black}\setverb\adef{ }{\ }% \ttfamily\readverb}% \bgroup\lccode`\~=`#1\lowercase{\egroup\def\readverb ##1~}{##1\egroup}% \catcode`#1=13 } \verbchar{|} \AddToHook{begindocument}{\adef{<}{\begingroup \setverb\startmeta}} \def\startmeta#1>{\normalcolor\ttfamily$\langle${\rmfamily\itshape #1\/}$\rangle$\endgroup} % MISC % ================================================ \definecolor{leftbar}{gray}{.75} \definecolor{comment}{gray}{.2} \setmainfont{texgyretermes}[ UprightFont = *-regular, BoldFont = *-bold, ItalicFont = *-italic, BoldItalicFont = *-bolditalic, Extension = .otf ] \setmonofont{InconsolataN-Regular.otf} \setmathfont{texgyretermes-math.otf} \def\tocsectionfont#1{\bfseries#1\mdseries} \def\sectionfont{\bfseries} \def\appendixlabelwidth{6.7em} \def \l@section {\addpenalty{-300}\addvspace{.5em plus1pt} \extline{0pt}{\toclabelwidth}{\tocsectionfont}} \def \l@appendix {\addpenalty{-300}\addvspace{.5em plus1pt}% \extline{0pt}{\appendixlabelwidth}{\maintocfont}} \def \l@annex {\addpenalty{-300}\addvspace{.5em plus1pt}% \extline{0pt}{\annexlabelwidth}{\maintocfont}} \definelegendplace{code}{Código}{cód.\,}{loc} \def\me{o Autor.} \clubpenalty=10000 \widowpenalty=10000 \def\bibfont{\raggedright \singlesp \bibitemsep=\baselineskip} \makeatother \begin{document} \leavevmode\vskip1.9in {\centering \LARGE\sffamily\bfseries abntexto\\[0.4em] \Large\itshape\mdseries Classe para {\upshape\LaTeX}\\[2em] \normalfont\large Elayson Abreu\\[1ex] \href{mailto:abntexto.classe@gmail.com}{abntexto.classe@gmail.com}\\[2.5ex] \today \par} \vskip3in {\centering\large\ttfamily 3.2.0-beta\par} \newpage \nonum\notoc\section{Sumário} \maketoc \newpage \section{Introdução} O |abntexto| é uma classe do \LaTeX\ criada para facilitar a utilização das normas da Associação Brasileira de Normas Técnicas (ABNT) em trabalhos acadêmicos (monografias, dissertações, teses). Este \emph{não} é um manual sobre LaTeX (ou TeX, a ferramenta que o constitui) nem tampouco uma descrição detalhada sobre as normas ABNT. Para aprender sobre LaTeX leia \textcite{viaexemplos}, em português, ou \textcite{latex2eunnoficial}, disponível em inglês, espanhol e francês. Além disso, também se pode ler \textcite{texbytopic}, em inglês, para aprender sobre o sistema \TeX. Já existe uma classe para aplicação das normas ABNT cujo nome é |abntex2|. Mas, diferente desta, o |abntexto| não depende do |memoir|, uma classe de código-fonte e manual extensos e que implementa funções as quais, em sua maioria, não são pertinentes a um documento que use as diretrizes da ABNT. As normas ABNT as quais o |abntexto| se propõe a seguir seguem listadas: \begin{topics} \item NBR 14724:2011. Informação e documentação --- Trabalhos acadêmicos --- Apresentação \cite{nbr14724}. \item NBR 12225:2004. Informação e documentação --- Lombada --- Apresentação \cite{nbr12225}. \item NBR 6028:2021. Informação e documentação --- Resumo --- Apresentação \cite{nbr6028}. \item NBR 6027:2012. Informação e documentação --- Sumário --- Apresentação \cite{nbr6027}. \item NBR 10520:2002. Informação e documentação --- Citações em documentos --- Apresentação \cite{nbr10520}. \item NBR 6023:2018. Informação e documentação --- Referências --- Elaboração \cite{nbr6023}. \item NBR 5892:2019. Informação e documentação --- Representação e formatos de tempo --- Datas e horas --- Apresentação \cite{nbr5892}. \item NBR 6024:2012. Informação e documentação --- Numeração progressiva das seções de um documento --- Apresentação \cite{nbr6024}. \item IBGE. Normas de apresentação tabular \cite{ibge1993}. \end{topics} \section{Chamando a classe} Digite as linhas em \ref{cd:início} e use |abntexto|. \legend{code}{Início} \src\me \label{cd:início} \begverb % !TeX TS-program = lualatex \documentclass{abntexto} \usepackage[brazil]{babel} \usepackage{fontspec} \setmainfont{texgyretermes}[ UprightFont = *-regular, BoldFont = *-bold, ItalicFont = *-italic, BoldItalicFont = *-bolditalic, Extension = .otf ] \begin{document} Texto \end{document} \endverb O arquivo |exemplo.tex|, disponível no diretório da classe 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 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, 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| e |\textual|. O primeiro executa |\onesidelayout| internamente e remove a numeração de página. O comando |\onesidelayout| configura as páginas para impressão de somente um lado do papel (frente). O comando |\pretextual| é executado automaticamente após |\begin{document}| tendo efeito a partir da primeira página, portanto o usuário não precisa inserí-lo no documento, mas pode redefiní-lo conforme a necessidade. O segundo comando é |\textual|. Este executa |\twosidelayout| e habilita a numeração de página. A instrução |\twosidelayout| habilita as páginas para impressão dos dois lados do papel (frente e verso). O comando |\twosidelayout| não precisa ser inserido pelo usuário, pois ele é iniciado automaticamente pelo primeiro comando secional. O primeiro comando secional é, por padrão, |\section|, mas pode ser alterado conforme o uso de |\usechapters| e |\useparts| (Ver \ref{secionamento}). Os trabalhos acadêmicos podem ser disponiblizados num repositório \emph{online}. Neste caso, o usuário pode querer reconfigurar as margens de forma a se ter uma leitura mais confortável em dispositivos eletrônicos. Para isto, existem duas possibilidades. A primeira é, no preâmbulo, redefinir |\pretextual| e |\textual| substituindo as instruções |\onesidelayout| e |\twosidelayout| por |\eletroniclayout|. A segunda possibilidade é, também no preâmbulo, redefinir |\onesidelayout| e |\twosidelayout| diretamente conforme \ref{cod:eletroniclayout}. O comando |\eletroniclayout| centraliza o corpo do texto pondo 2.5\,cm as margens esquerda e direita. \legend{code}{\emph{Layout} para dispositivos eletrônicos} \src\me \label{cod:eletroniclayout} \begverb \documentclass{abntexto} \let\onesidelayout=\eletroniclayout \let\twosidelayout=\eletroniclayout \begin{document} texto \end{document} \endverb \section{Sumário} 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} \begverb \documentclass{abntexto} \usepackage{xcolor} \def \tocsectionfont {\color{red}\itshape\MakeUppercase} \def \tocsubsectionfont {\color{blue}\bfseries} \begin{document} \nonum\notoc\section{Sumário} \maketoc \newpage \section{Título} \subsection{Título} \end{document} \endverb \section{Secionamento} \label{secionamento} A personalização das macros de seção (|\section|, |\subsection| etc.) é análoga a personalização do sumário e deve ser feita com |\sectionfont|, |\subsectionfont| etc. como exemplificado em \ref{cd:sec}. Também há como alterar o espaço vertical acima e abaixo das seções usando |\abovesection|, |\belowsection| e semelhantes. Por exemplo, |\def\abovesubsection{2cm}| insere um espaço de 2\,cm acima de |\subsection|. \legend{code}{Aparência das seções} \src\me \label{cd:sec} \begverb \documentclass{abntexto} \usepackage{xcolor} \def \sectionfont {\color{blue}\scshape} \def \subsectionfont {\color{red}\itshape} \def \subsubsectionfont {\color{yellow}\sffamily} \begin{document} \nonum\notoc\section{Sumário} \maketoc \section{Texto} \subsection{Texto} \subsubsection{Texto} \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| podem ser prefixados com |\nonum| que remove a numeração do título: |\nonum\section|. O títulos não numerados devem ser centralizados como orientado na Norma, portanto |\nonum| centraliza os títulos. Veja um exemplo de uso em \ref{cd:nonum}. \legend{code}{Exemplo de título sem numeração} \src\me \label{cd:nonum} \begverb \nonum\notoc\section{Resumo} Texto \nonum\notoc\section{Sumário} \maketoc \endverb Os níveis secionais supracitados também podem ser prefixados com |\notoc| que instrui o título a não ingressar no sumário: |\notoc\section|. Além disso, é possível usar ambos os prefixos ao mesmo tempo, conforme mostrado em \ref{cd:nonum}. O primeiro parágrafo após uma seção é indentado por padrão, dispensando, assim, o uso do pacote |indentfirst|. Infelizmente, comandos como |\printbibliography|, |\printglossary| e |\printindex| inserem o título internamente. Para que este título seja exibido corretamente no |abntexto|, é necessário usar o ambiente |corrprint|, como demonstrado em \ref{cd:corrprint}. O título aparecerá normalmente no Sumário e, se o pacote |hyperref| estiver carregado, também vai constar na lista de marcadores do visualizador de PDF. \legend{code}{Ambiente {\ttfamily corrprint}} \src\me \label{cd:corrprint} \begverb \begin{corrprint} \printbibliography % ou \printglossary, \printindex e semelhantes \end{corrprint} \endverb Existe a possibilidade de o usuário desejar criar um Índice Remissivo usando o ambiente |theindex| do kernel LaTeX --- embora alternativas automatizadas sejam preferíveis, como a ferramenta |makeindex|, por exemplo. Neste caso, o ambiente |corrprint| funcionará como esperado conforme explicitado em \ref{cd:corrprint-theindex}. De forma semelhante a |theindex|, |corrprint| também pode ser usado em conjunto com |thebibliography|. \legend{code}{Ambientes {\ttfamily corrprint} e {{\ttfamily theindex}}} \src\me \label{cd:corrprint-theindex} \begverb \begin{corrprint} \begin{theindex} \item acorn squash, 1 \subitem maple baked, 2 \indexspace \item bacon, 3 \subitem maple baked, 4 \end{theindex} \end{corrprint} \endverb %\chapter{Lorem} %\begin{corrprint} % \begin{thebibliography}{9} % \bibitem{latexdps} % Leslie Lamport. % \textit{\LaTeX{}: a document preparation system}. % Addison-Wesley, Reading, Massachusetts, 1993. % \bibitem{texbook} % Donald Ervin Knuth. % \textit{The \TeX book}. % Addison-Wesley, Reading, Massachusetts, 1983. % \end{thebibliography} %\end{corrprint} %\begin{corrprint} % \begin{theindex} % \item acorn squash, 1 % \subitem maple baked, 2 % \indexspace % \item bacon, 3 % \subitem maple baked, 4 % \end{theindex} %\end{corrprint} \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. \legend{code}{Alíneas} \src\me \label{cd:topics} \begverb \begin{topics} \item \label{al:x} 1 \begin{topics} \item \label{subal:x} x \item y \item z \end{topics} \item \label{al:y} 2 \item 3 \end{topics} \endverb \section{Áreas de legenda} Use |\place{}| para inserir áreas de legenda, |\legend{}{}| para títular e |\src{}| para inserir a fonte como mostrado em \ref{cd:place}. Mas, existem condições: |\place| deve constar em último lugar e |\legend| 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{}| e |\def\belowplace{}|. \legend{code}{Áreas de legenda} \src\me \label{cd:place} \begverb \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} \endverb 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. \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}. Há uma legenda principal impressa com |\legend| e duas sublegendas para cada objeto inseridas com |\sublegend|, bem como dois |\subplace's|. Além disso, a ordem das instruções é similar àquela aplicada em |\place|: |\subplace| deve ser posto após |\sublegend|, |\src| e |\label| sendo que |\sublegend| deve preceder |\label|. Linhas em branco são proibidas no ambiente |multiplace|. Até o momento, esta classe não tem suporte para objetos flutuantes. \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}|. \section{Citações} Pela Norma ABNT, Para inserir aspas duplas em citações diretas, de até três linhas, use |\enquote{}\cite{}|. Mas, se tratando de citações diretas, com mais de três linhas, alterne para |\Enquote{ \cite{}}|. \section{Apêndice e Anexo} Com os comandos |\appendix| e |\annex| você pode inserir apêndices e anexos junto dos indicativos desejados: “Apêndice 1 --- \dots” ou “Anexo 1 --- \dots” (ver \ref{cd:appendix}). \legend{code}{Anexos e apêndices} \src\me \label{cd:appendix} \begverb \begin{document} \appendix{Lorem} \appendix{Lipsum} \annex{Lorem} \annex{Lipsum} \end{document} \endverb Pode-se alterar a largura dos rótulos das entradas no sumário redefinindo o comando |\appendixlabelwidth|\,/\,|\annexlabelwidth|. \section{Limitações e planos para o futuro} \begin{topics} \item No momento não existe suporte para tabelas que se partem entre páginas usando |longtable.sty|. \item O suporte para objetos flutuantes pode ser implementado, mas não é prioridade, porque não são compatíveis com a Norma. \item \emph{Hyperlinks} de |\labels's| oriundos de áreas de legenda podem não estar funcionando corretamente. \item Implementar subitens em listas de figuras e tabelas. \item Implementar notas gerais e específicas em tabelas. \end{topics} \newpage \begin{corrprint} \printbibliography \end{corrprint} \appendix{Glossário} 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} \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}. \begin{corrprint} \printnoidxglossary \end{corrprint} \end{document} \endverb \appendix{Lista de siglas} O |glossaries.sty| também serve para criar uma lista de siglas, conforme \ref{cd:acro}. \legend{code}{Siglas} \src\me \label{cd:acro} \begverb \documentclass{abntexto} \usepackage[acronym]{glossaries} \makenoidxglossaries \newacronym{ibge}{IBGE}{Instituto Brasileiro de Geografia e Estatística} \newacronym{html}{HTML}{Hypertext Markup Language} \def\acr#1{\gls{#1}} \begin{document} 1ª chamada: \acr{ibge}, \acr{html}. 2ª chamada: \acr{ibge}, \acr{html}. \begin{corrprint} \def\acronymname{Lista de siglas} \printnoidxglossary[type=acronym] \end{corrprint} \end{document} \endverb \appendix{\emph{Feedback}} Sugestões, relatos de \emph{bugs} e doações são bem-vindas. Chave PIX: {\ttfamily abntexto.classe@gmail.com} % MACROS PARA O CÓDIGO-FONTE % ================================================ \appendix{Código-fonte} \definecolor{background}{cmyk}{0,0.08,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\addtoext#1#2#3{} \def\sectionfont{\itshape} \def\sec#1\par{\section{#1}} \def\verbfont{\raggedright\ttfamily\small\sloppy} \def\codesep{2mm} \def\leftsep{5mm} \lstnewenvironment{code}{\lstset{ % language=TeX, Definir uma linguagem não está funcionando aqui. basicstyle=\verbfont, frame=single, framerule=0pt, framesep=\codesep, xleftmargin=\dimexpr\codesep+\leftsep, xrightmargin=\codesep, framexleftmargin=\leftsep, firstnumber=last, numbers=left, numbersep=6pt, numberstyle=\fontsize{8pt}{9pt}\selectfont, commentstyle=\color{blue}\bfseries, comment=[l]{\%}, columns=fullflexible, tabsize=3, backgroundcolor=\color{background}, literate= {\ }{ }1 {\^^M\%}{}2 }}{} {\catcode`\!=14 \catcode`\%=9 \input abntexto.cls } \end{document}