% !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}