% ====================================================================== % brlex-doc.tex % Copyright (c) Youssef Cherem , 2015 % % This file is part of the br-lex LaTeX2e class. % This work may be distributed and/or modified under the conditions of % the LaTeX Project Public License, version 1.3c of the license. % The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.3c or later is part of all distributions of LaTeX % version 2005/12/01 and of this work. % % This work has the LPPL maintenance status "author-maintained". % ====================================================================== \documentclass{ltxdoc} \usepackage[brazil]{babel} \usepackage{fontspec} \RequirePackage[sharp]{easylist} \usepackage[normalem]{ulem} \newcommand{\cortado}[1]{\sout{#1}} \usepackage[dvipsnames]{xcolor} \frenchspacing \usepackage{listings} \lstset{% language=[LaTeX]TeX, numbers=left, columns=flexible, basicstyle=\ttfamily\small, backgroundcolor=\color{lightgray!10!}, frame=single, tabsize=2, title=\lstname, escapeinside={\%*}{*)}, breaklines=true, commentstyle=\color{gray}, keywords=[0]{\titulo,\descricao,\cortado,\artigo,\paragrafo,paragrafos}, keywordstyle=[0]\color{Red}, keywords=[1]{}, keywordstyle=[1]\color{Green}, breakatwhitespace=true, alsoother={0123456789_}, inputencoding=utf8, extendedchars=true, literate={á}{{\'a}}1 {ã}{{\~a}}1 {é}{{\'e}}1 {è}{{\`{e}}}1 {ê}{{\^{e}}}1 {ë}{{\¨{e}}}1 {É}{{\'{E}}}1 {Ê}{{\^{E}}}1 {û}{{\^{u}}}1 {ú}{{\'{u}}}1 {â}{{\^{a}}}1 {à}{{\`{a}}}1 {á}{{\'{a}}}1 {ã}{{\~{a}}}1 {Á}{{\'{A}}}1 {Â}{{\^{A}}}1 {Ã}{{\~{A}}}1 {ç}{{\c{c}}}1 {Ç}{{\c{C}}}1 {õ}{{\~{o}}}1 {ó}{{\'{o}}}1 {ô}{{\^{o}}}1 {Õ}{{\~{O}}}1 {Ó}{{\'{O}}}1 {Ô}{{\^{O}}}1 {î}{{\^{i}}}1 {Î}{{\^{I}}}1 {í}{{\'{i}}}1 {Í}{{\~{Í}}}1 {º}{{\textordmasculine}}1, } \ListProperties(Numbers1=R,Numbers2=l,Numbers3=a, FinalMark1={~---},FinalMark2={)},Hide2=1,Hide3=2,Margin1=4em,Margin2=6em,Margin3=7.5em,Align=move) \title{\texttt{br-lex}: Uma classe para redação\\ de normas e leis brasileiras} \author{Youssef Cherem} \newcommand{\nota}[1]{\marginpar{\hfill \cmd{#1}}} \begin{document} \maketitle \begin{abstract} Classe para redação de normas e leis de acordo com a Lei Complementar Nº 95, de 26 de fevereiro de 1998. O objetivo é uma implementação tipográfica facilitada para o usuário. \end{abstract} \section{Utilização} Para usar a classe \texttt{br-lex}, basta invocar as palavras mágicas: \begin{verbatim} \documentclass{br-lex} \end{verbatim} As opções de língua portuguesa já vêm carregadas automaticamente, utilizando o pacote \texttt{babel}, se a compilação for com \texttt{pdflatex}, e o pacote \texttt{polyglossia}, se optar por \texttt{xelatex}. Esta classe foi elaborada com a classe \texttt{scrbook}. Além das opções das classes \verb|\KOMAScript|, há as seguintes opções: \begin{itemize} \item \texttt{paragrafonormal}, para parágrafos indentados em sem espaço entre si; \item \texttt{paragrafoespaco}, para parágrafos sem indentação e com espaço entre si, e \item \texttt{capitulo}, para começar os capítulos na mesma página. \end{itemize} As páginas têm cabeçalho automático de acordo com a classe \texttt{scrbook}. Se desejar, você pode mudar o estilo da página com o pacote \texttt{scrlayer-scrpage} (antigo \texttt{scrpage2}). \begin{verbatim}\titulo{} \end{verbatim} \nota{\titulo\marg{Título}} Título. Capítulos e seções são inseridos da maneira usual em \LaTeX: \verb|\chapter|\marg{Capítulo} e \verb|\section|\marg{Seção}. \begin{verbatim}\descricao{} \end{verbatim} \nota{\descricao\marg{Descrição}} Descrição da lei. \begin{verbatim}\cortado{} \end{verbatim} \nota{\cortado\marg} Para inserir partes ``cortadas" (\cortado{revogadas}). \begin{verbatim} \artigo Escreva aqui o artigo. \end{verbatim} \cmd{\artigo} (sem \verb|{}|)\nota{\artigo} Insere um artigo, cuja numeração não depende do capítulo. \begin{verbatim} \begin{paragrafos} \paragrafo Escreva aqui o parágrafo. \paragrafo Outro parágrafo ... \end{paragrafos} \end{verbatim} Ambiente \texttt{paragrafos},\nota{\paragrafo} cuja numeração recomeça a cada artigo. Dentro desse ambiente, você pode inserir um \verb|\paragrafo| (sem \verb|{}|). Para divisões inferiores a parágrafo, é utilizado o pacote \texttt{easylist}: \begin{verbatim} \begin{easylist} # Incisos (romanos) com \verb|#| ## Alíneas (minúsculas) com \verb|##| ### Itens com (arábicos) com \verb|###| \end{easylist} \end{verbatim} \begin{easylist} # Incisos (romanos) com \verb|#| ## Alíneas (minúsculas) com \verb|##| ### Itens com (arábicos) com \verb|###| ### ## \verb|##| Volta para alíneas. # \verb|#| Volta para incisos. \end{easylist} \section{Implementação} \begin{lstlisting} \NeedsTeXFormat{LaTeX2e} \ProvidesClass{br-lex}[22/04/2015 v. 0.1 Beta] \LoadClassWithOptions{scrbook}%%[a4paper,DIV=calc] \KOMAoptions{pagesize,numbers=noendperiod,headings=small} %chapterprefix=true desnecessário com titlesec \RequirePackage{enumitem} \RequirePackage{indentfirst} \RequirePackage[sharp]{easylist} \RequirePackage[normalem]{ulem} \addtokomafont{chapter}{\centering} \addtokomafont{pagehead}{\rmfamily\itshape} %\addtokomafont{section}{\centering} \renewcommand{\thechapter}{%Capítulo \Roman{chapter}} \renewcommand{\thesection}{%Seção~ \Roman{section}} %Retirado: capítulo e seção por causa de acentos com pdflatex. substituído por nome em titlesec. \RequirePackage[all]{nowidow} \RequirePackage{ifxetex} \makeatletter \ifxetex \RequirePackage{fontspec} \defaultfontfeatures{Ligatures=TeX} \RequirePackage{polyglossia} \setmainlanguage{brazil} %\setotherlanguages{english,french,spanish,german,italian} \else \RequirePackage[utf8]{inputenc} \addtokomafont{disposition}{\rmfamily} \RequirePackage[brazil]{babel} \fi \makeatother %%risca partes do texto \newcommand{\cortado}[1]{\sout{#1}} \newcommand{\titulo}[1]{ \begin{center} \centering \bfseries \sffamily \huge #1 \end{center}} \newcommand{\descricao}[1]{\hfill% \begin{minipage}{0.5\textwidth} #1 \end{minipage} \vspace{\baselineskip} } %%seções \RequirePackage{titlesec} \titleformat{\section}[display]% {\large\bfseries\sffamily\centering} {Seção \thesection} {%-6pt 0pt} {} \titlespacing*{\section} {0pt}{18pt}{16pt} \titlespacing*{\chapter} {0pt}{18pt}{16pt} \titleformat{\chapter}[display]% {\Large\bfseries\sffamily\centering} {Capítulo \thechapter} {%-10pt 0pt} {} % % % Para começar capítulos na mesma página: \RequirePackage{etoolbox} % para opção de começar capítulos na mesma página %% opção de começar capítulos na mesma página: capitulo \DeclareOption{capitulo}{% \makeatletter \patchcmd{\chapter}{\cleardoublepage\else\clearpage\fi}{}{}{} \patchcmd{\addchap}{\cleardoublepage\else\clearpage\fi}{}{}{} \makeatother } %%%original: %\makeatletter %\patchcmd{\chapter}{\if@openright\cleardoublepage\else\clearpage\fi}{}{}{} %\makeatother %%% Opções da classe: %%% \DeclareOption{paragrafoespaco}{% \setlength{\parskip}{10pt}% \setlength{\parindent}{0pt}% } \DeclareOption{paragrafonormal}{% \setlength{\parskip}{0pt}% } \ExecuteOptions{paragrafoespaco} \ProcessOptions\relax %% Do pacote easylist: listas segundo a norma: incisos, alíneas, itens. \ListProperties(Numbers1=R,Numbers2=l,Numbers3=a, FinalMark1={~---},FinalMark2={)},Hide2=1,Hide3=2,Margin1=4em,Margin2=6em, Margin3=7.5em,Align=move) %Space*=10pt entre mesmo nível,Space=9pt,Space*=9pt %Adiciona: Margin=\the\parindent,Progressive=3ex, 27-04-2015Progressive=3em,Margin1=5em,Align=move %%%from the etoolbox package: restart numbering easylist \AtBeginEnvironment{easylist} {\ListProperties(Start1=1)} {} {} %\renewcommand*{\chapterheadstartvskip}{\vspace*{-12pt}} %\renewcommand*{\chapterheadendvskip}{\vspace*{-24pt}} \newcounter{artigo} \newcommand{\artigo}{\refstepcounter{artigo} % \ifnum\theartigo<10 % {\bfseries Art.~\arabic{artigo}º~~}% \else {\bfseries Art. \arabic{artigo}~~}% \fi %Art. \arabic{artigo}.~ } \newcounter{paragrafo} \newcommand{\paragrafo}{\refstepcounter{paragrafo} % \ifnum\theparagrafo<10 % \S~\arabic{paragrafo}º~% \else \S~\arabic{paragrafo}~% \fi } \newenvironment{paragrafos}{\setcounter{paragrafo}{0} \setlength{\parindent}{0pt} \begin{addmargin}[4em]{0pt} } {\end{addmargin} } \endinput \end{lstlisting} \end{document}