summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/abntexto/abntexto.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/abntexto/abntexto.tex')
-rw-r--r--macros/latex/contrib/abntexto/abntexto.tex449
1 files changed, 449 insertions, 0 deletions
diff --git a/macros/latex/contrib/abntexto/abntexto.tex b/macros/latex/contrib/abntexto/abntexto.tex
new file mode 100644
index 0000000000..2183e6ebf7
--- /dev/null
+++ b/macros/latex/contrib/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}