abntex / trabalho-academico-limarka

Modelo de trabalho acadêmico para utilizar com o limarka
https://github.com/abntex/limarka/wiki
MIT License
11 stars 37 forks source link

Template para Pandoc apenas com YAML? #31

Open bcdavasconcelos opened 3 years ago

bcdavasconcelos commented 3 years ago

Bom dia, Eduardo. Muito interessando o seu trabalho com o Limarka.

A minha pergunta é a seguinte: por ventura há algum template pronto que funcione diretamente com o Pandoc utilizando apenas os cabeçalhos YAML para as configurações (e, possivelmente algum filtro ou outro)?

Sou doutorando e estou dando uma disciplina sobre recursos de pesquisa em ciências humanas no PPG-Filosofia UFMG e me ocorreu de preparar um template para utilizar o Limarka com o Scrivener, nos moldes do Scrivomatic. Se você não conhece o Scrivener, não há problema. O Scrivener apenas compila o projeto em (pandoc) markdown e chama o script do Pandocomatic que utiliza várias receitas configuradas em YAML para gerar os formatos de saída desejados (PDF, DOCX, LATEX, etc).

Para fazer um teste preliminar eu condensei todos os arquivos do template e tive que fazer uma mudança para que ele funcionasse com o Pandoc 2.11.4 acrescentando detalhes sobre o CSL. Como latex não é totalmente a minha praia, provavelmente eu posso ter comprometido algumas funcionalidades (apesar de que está compilando OK, apenas nas páginas de capa e contracapa tem aparecido TRUE no topo ao invés do nome do autor.)


%%%%%%%%%%%%%%%%%%%%%%%%%5
%% abtex2-modelo-trabalho-academico.tex, v<VERSION> laurocesar
%% Copyright 2012-<COPYRIGHT_YEAR> by abnTeX2 group at http://www.abntex.net.br/
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%%   http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%%
%% This work has the LPPL maintenance status `maintained'.
%%
%% The Current Maintainer of this work is the abnTeX2 team, led
%% by Lauro César Araujo. Further information are available on
%% http://www.abntex.net.br/
%%
%% This work consists of the files abntex2-modelo-trabalho-academico.tex,
%% abntex2-modelo-include-comandos and abntex2-modelo-references.bib
%%

% ------------------------------------------------------------------------
% ------------------------------------------------------------------------
% abnTeX2: Modelo de Trabalho Academico (tese de doutorado, dissertacao de
% mestrado e trabalhos monograficos em geral) em conformidade com
% ABNT NBR 14724:2011: Informacao e documentacao - Trabalhos academicos -
% Apresentacao
% ------------------------------------------------------------------------
% ------------------------------------------------------------------------

\documentclass[
    % -- opções da classe memoir --
    12pt,               % tamanho da fonte
%  openright,           % capítulos começam em pág ímpar (insere página vazia caso preciso)
    oneside,            % para impressão em recto e verso use twoside
    a4paper,            % tamanho do papel.
    % -- opções da classe abntex2 --
    %chapter=TITLE,     % títulos de capítulos convertidos em letras maiúsculas
    %section=TITLE,     % títulos de seções convertidos em letras maiúsculas
    %subsection=TITLE,  % títulos de subseções convertidos em letras maiúsculas
    %subsubsection=TITLE,% títulos de subsubseções convertidos em letras maiúsculas
    % -- opções do pacote babel --
    english,            % idioma adicional para hifenização
    french,             % idioma adicional para hifenização
    spanish,            % idioma adicional para hifenização
    brazil              % o último idioma é o principal do documento
    ]{abntex2}

% ---
% Pacotes básicos
% ---
\usepackage{fontspec}
% fontes ———————————
\defaultfontfeatures{Ligatures={TeX}}
\setromanfont{Alegreya}
\setsansfont{Alegreya Sans}
\setmonofont[Scale=MatchLowercase]{Menlo}
\setlength{\emergencystretch}{3em}

$if(linestretch)$
\usepackage{setspace}
\setstretch{$linestretch$}
$endif$

% —————————————

\usepackage[utf8]{inputenc}     % Codificacao do documento (conversão automática dos acentos)
\usepackage{lastpage}           % Usado pela Ficha catalográfica
\usepackage{indentfirst}        % Indenta o primeiro parágrafo de cada seção.
\usepackage{color}              % Controle das cores
\usepackage{graphicx}           % Inclusão de gráficos
\usepackage{microtype}          % para melhorias de justificação
% ---

% ---
% Pacotes adicionais, usados apenas no âmbito do Modelo Canônico do abnteX2
% ---
\usepackage{lipsum}             % para geração de dummy text
% ---

% ---
% Pacotes de citações
% ---
\usepackage[brazilian,hyperpageref]{backref}     % Paginas com as citações na bibl
% \usepackage[$referencias_sistema$]{abntex2cite}   % Citações padrão ABNT

\usepackage{etoolbox}
$if(links-as-notes)$
% Make links footnotes instead of hotlinks:
\DeclareRobustCommand{\href}[2]{#2\footnote{\url{#1}}}
$endif$

\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available

$if(footnotes-pretty)$
% load footmisc in order to customize footnotes (footmisc has to be loaded before hyperref, cf. https://tex.stackexchange.com/a/169124/144087)
\usepackage[hang,flushmargin,bottom,multiple]{footmisc}
\setlength{\footnotemargin}{0.8em} % set space between footnote nr and text
\setlength{\footnotesep}{\baselineskip} % set space between multiple footnotes
\setlength{\skip\footins}{0.3cm} % set space between page content and footnote
\setlength{\footskip}{0.9cm} % set space between footnote and page bottom
$endif$

$if(footnotes-disable-backlinks)$
$else$
\usepackage{footnotebackref}
$endif$
\PassOptionsToPackage{hyphens}{url}

% ---
% CONFIGURAÇÕES DE PACOTES
% ---

% ---
% Configurações do pacote backref
% Usado sem a opção hyperpageref de backref
\renewcommand{\backrefpagesname}{Citado na(s) página(s):~}
% Texto padrão antes do número das páginas
\renewcommand{\backref}{}
% Define os textos da citação
\renewcommand*{\backrefalt}[4]{
    \ifcase #1 %
        Nenhuma citação no texto.%
    \or
        Citado na página #2.%
    \else
        Citado #1 vezes nas páginas #2.%
    \fi}%
% ---

% ---
% Informações de dados para CAPA e FOLHA DE ROSTO
% ---
\titulo{$title$}
\autor{$author$}
\data{$date$}
\local{$local$}
\orientador{$orientador$}
\coorientador{$coorientador$}
\instituicao{%
  $instituicao$
  \par
$if(graduacao)$
  $curso$
$endif$
$if(especializacao)$
  $curso$
$endif$
$if(mestrado)$
  $programa$
$endif$
$if(doutorado)$
  $programa$
$endif$
}
\tipotrabalho{$tipo_do_trabalho$}

% O preambulo deve conter o tipo do trabalho, o objetivo (propósito),
% o nome da instituição e a área de concentração.
% Esse texto irá compor a Folha de Rosto e Folha de Aprovação.
\preambulo{
$if(proposito)$
$proposito$
$else$
% Propósito gerado automaticamente.
$if(graduacao)$
$if(projeto)$Projeto de Monografia apresentado$else$Monografia apresentada$endif$ ao Curso de $curso$ da $instituicao$, como requisito parcial para obtenção do grau de $titulacao$.
$endif$
$if(especializacao)$
$if(projeto)$Projeto de Trabalho de Final de Curso apresentado$else$Trabalho de Final de Curso apresentado$endif$ ao Curso de $curso$ da $instituicao$, como requisito parcial para obtenção do grau de $titulacao$.
$endif$
$if(mestrado)$
$if(projeto)$Projeto de Dissertação apresentado $else$Dissertação apresentada$endif$ ao $programa$ da $instituicao$, como requisito parcial para obtenção do grau de $titulacao$.
$endif$
$if(doutorado)$
$if(projeto)$Projeto de Tese apresentado $else$Tese apresentada$endif$ ao $programa$ da $instituicao$, como requisito parcial para obtenção do grau de $titulacao$.
$endif$
$endif$
$if(area_de_concentracao)$
\newline\textbf{Área de concentração}: $area_de_concentracao$.
$endif$
$if(linha_de_pesquisa)$
\newline\textbf{Linha de pesquisa}: $linha_de_pesquisa$.
$endif$}%% fim do preambulo

% ---
% Configurações de aparência do PDF final

% alterando o aspecto da cor azul
\definecolor{blue}{RGB}{41,5,195}

% informações do PDF
\makeatletter
\hypersetup{
        %pagebackref=true,
        pdftitle={\@title},
        pdfauthor={\@author},
        pdfsubject={\imprimirpreambulo},
        pdfcreator={LaTeX with abnTeX2 and Limarka},
        pdfkeywords={abnt},
        colorlinks=true,            % false: boxed links; true: colored links
        linkcolor=Mahogany,             % color of internal links
        citecolor=black,                % color of links to bibliography
        filecolor=black,            % color of file links
        %urlcolor=black,
        bookmarksdepth=4
}
\makeatother
% ---

% ---
% Possibilita criação de Quadros e Lista de quadros.
% Ver https://github.com/abntex/abntex2/issues/176
%
\newcommand{\quadroname}{Quadro}
\newcommand{\listofquadrosname}{Lista de quadros}

\newfloat[chapter]{quadro}{loq}{\quadroname}
\newlistof{listofquadros}{loq}{\listofquadrosname}
\newlistentry{quadro}{loq}{0}

% configurações para atender às regras da ABNT
\setfloatadjustment{quadro}{\centering}
\counterwithout{quadro}{chapter}
\renewcommand{\cftquadroname}{\quadroname\space}
\renewcommand*{\cftquadroaftersnum}{\hfill--\hfill}

% ---

% ---
% Espaçamentos entre linhas e parágrafos
% ---

% O tamanho do parágrafo é dado por:
\setlength{\parindent}{1.3cm}

% Controle do espaçamento entre um parágrafo e outro:
\setlength{\parskip}{0.2cm}  % tente também \onelineskip

% ---
% compila o indice
% ---
\makeindex
% ---

%---
% CONFIGURAÇÕES EXTRA DO LIMARKA
%---

$if(natbib)$
\usepackage[$natbiboptions$]{natbib}
\bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$}
$endif$
$if(abntex2cite)$
$if(biblatex)$
\usepackage[$if(biblio-style)$style=$it$,$endif$$for(biblatexoptions)$$it$$sep$,$endfor$]{biblatex}
$for(bibliography)$
\addbibresource{$bibliography$}
$endfor$
$endif$
$endif$
$if(csl-refs)$
\newlength{\cslhangindent}
\setlength{\cslhangindent}{1.5em}
  \newlength{\csllabelwidth}
\setlength{\csllabelwidth}{1em}
\newenvironment{CSLReferences}[2] % #1 hanging-ident, #2 entry spacing
 {% don't indent paragraphs
  \setlength{\parindent}{0pt}
  % turn on hanging indent if param 1 is 1
  \ifodd #1 \everypar{\setlength{\hangindent}{\cslhangindent}}\ignorespaces\fi
  % set entry spacing
  \ifnum #2 > 0
  \setlength{\parskip}{#2\baselineskip}
  \fi
 }%
 {}
\usepackage{calc}
\newcommand{\CSLBlock}[1]{#1\hfill\break}
\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{#1}}
\newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{#1}\break}
\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1}
$endif$

% Configura citações de pandoc para 4cm à esquerda (utiliza o ambiente quote)
\renewenvironment{quote}
  {\footnotesize\list{}{\rightmargin=0.1cm \leftmargin=4cm}%
   \item\relax}
  {\endlist}

% Para incluir páginas PDF (ficha catalografica e folha de aprovação)
\usepackage[dvipsnames]{xcolor} % http://tex.stackexchange.com/questions/124636/package-xcolor-error-undefined-colors-maroon-royal-blue-when-master-has-pdf
\usepackage{pdfpages}
\usepackage{longtable,ltcaption,booktabs} % para as tabelas pandoc e quadros ABNT
%\usepackage{floatrow}
%\floatsetup[figure]{capposition=top}

% Para melhorar o visual do quadro
\usepackage{boldline} 
\def\toprule{\hlineB{3}} % primeira linha mais gorda
\def\midrule{\hline}
\def\bottomrule{\hlineB{3}} % última linha mais gorda

% ---
% BUG: Imagens e tabelas apareciam no meio da página em branco
% https://github.com/abntex/trabalho-academico-limarka/issues/1
% O código a seguir posta imagens ou tabelas em página em branco no topo, em vez do meio (comportamento padrão)
\makeatletter
\setlength{\@fptop}{5pt} % Set distance from top of page to first float
\makeatother
% ---

% ---
% Usado pelo limarka como hook para criação de novas listas.
% https://github.com/abntex/trabalho-academico-limarka/issues/16
%
\newcommand{\listasdousuario}{}

% ---
% CUSTOMIZAÇÕES DO USUÁRIO (somente se existir arquivo latexcustomizacao.sty)
% ---
\IfFileExists{latexcustomizacao.sty}{\usepackage{latexcustomizacao}}{}

%%
%% Esse modelo é responsável pela impressão dos seguintes elementos:
%% Capa, Folha de rosto e Ficha catalográfica.

\special{dvipdfmx:config z 0}

% ----
% Início do documento
% ----
\begin{document}

% Seleciona o idioma do documento (conforme pacotes do babel)
%\selectlanguage{english}
\selectlanguage{brazil}

% Retira espaço extra obsoleto entre as frases.
\frenchspacing

% ----------------------------------------------------------
% ELEMENTOS PRÉ-TEXTUAIS
% ----------------------------------------------------------
% \pretextual

% ---
% Capa $capa_pdf_caminho$
% ---
$if(capa_pdf_caminho)$
% Incluindo capa personalizada de pdf
\begin{capa}
\includepdf{$capa_pdf_caminho$}
\end{capa}

$else$
% Gerando capa abnTeX2
\imprimircapa

$endif$
% ---

% Folha de rosto: sempre será impressa
% ---
$if(incluir_ficha_catalografica)$

\imprimirfolhaderosto* % (o * indica que haverá a ficha catalográfica)

% ---
% Inserir a ficha catalográfica
% ---
% Provavelmente a biblioteca da sua universidade lhe fornecerá um PDF
% com a ficha catalográfica definitiva após a defesa do trabalho. Quando estiver
% com o documento, salve-o como PDF no diretório do seu projeto e substitua todo
% o conteúdo de implementação deste arquivo pelo comando abaixo:

\begin{fichacatalografica}
    \includepdf{imagens/ficha-catalografica.pdf}
\end{fichacatalografica}

$else$
\imprimirfolhaderosto

% ---
% Sem ficha catalográfica
% ---
$endif$
% ---

$if(errata)$
% ---
% ERRATA
% ---
\begin{errata}

$body$

\end{errata}
% ---
$else$
% ---
% ERRATA: Sem errata
% ---
$endif$

$if(incluir_folha_de_aprovacao)$
% ---
% Folha de aprovação incluída
% ---

% Após após aprovação do trabalho a folha deve ser assinada, escaneada e
% incluída como abaixo:
\begin{folhadeaprovacao}
\includepdf{imagens/folha-de-aprovacao-escaneada.pdf}
\end{folhadeaprovacao}
$endif$

$if(folha_de_aprovacao)$
% ---
% Folha de aprovação gerada
% ---

% Isto é um exemplo de Folha de aprovação, elemento obrigatório da NBR
% 14724/2011 (seção 4.2.1.3).
% Este modelo será utilizado antes da aprovação do trabalho.

\begin{folhadeaprovacao}

  \begin{center}
    {\ABNTEXchapterfont\large\imprimirautor}

    \vspace*{\fill}\vspace*{\fill}
    \begin{center}
      \ABNTEXchapterfont\bfseries\Large\imprimirtitulo
    \end{center}
    \vspace*{\fill}

    \hspace{.45\textwidth}
    \begin{minipage}{.5\textwidth}

    \imprimirpreambulo

    \end{minipage}%
    \vspace*{\fill}
   \end{center}

   $tipo_do_trabalho$ aprovada. \imprimirlocal, $aprovacao_dia$ de $aprovacao_mes$ de $date$:

   \assinatura{\textbf{\imprimirorientador} \\ Orientador}
$if(coorientador)$
   \assinatura{\textbf{$coorientador$} \\ Coorientador}
$endif$
   \assinatura{\textbf{$avaliador1$} \\ Convidado}
   \assinatura{\textbf{$avaliador2$} \\ Convidado}
$if(avaliador3)$
   \assinatura{\textbf{$avaliador3$} \\ Convidado}
$endif$

   \begin{center}
    \vspace*{0.5cm}
    {\large\imprimirlocal}
    \par
    {\large\imprimirdata}
    \vspace*{1cm}
  \end{center}

\end{folhadeaprovacao}
$else$
% ---
% Sem Folha de aprovação
% ---
$endif$
% ---

% ---
% Dedicatória
% ---
$if(dedicatoria)$
\begin{dedicatoria}
   \vspace*{\fill}
   \centering
   \noindent

    $dedicatoria$

   \vspace*{\fill}
\end{dedicatoria}
% ---
$endif$

% ---
% Agradecimentos
% ---
$if(agradecimentos)$
\begin{agradecimentos}

$agradecimentos$

\end{agradecimentos}
% ---
$endif$

% ---
% Epígrafe
% ---
$if(epigrafe)$
\begin{epigrafe}
    \vspace*{\fill}
    \begin{flushright}

  $epigrafe$

    \end{flushright}
\end{epigrafe}
$endif$
% ---

% ---
% Resumo na língua vernácula (obrigatório)
% ---

$if(resumo)$

% resumo em português
\setlength{\absparsep}{18pt} % ajusta o espaçamento dos parágrafos do resumo
\begin{resumo}

  $resumo$

 \textbf{Palavras-chave}: $palavras_chave$
\end{resumo}

$endif$

% ---
% Resumo em língua estrangeira (obrigatório)
% ---

$if(abstract_texto)$
% resumo em inglês
\begin{resumo}[Abstract]
 \begin{otherlanguage*}{english}
   $abstract_texto$

   \vspace{\onelineskip}

   \noindent 
   \textbf{Keywords}: $keywords$
 \end{otherlanguage*}
\end{resumo}
$endif$

$if(resume)$
% resumo em francês 
\begin{resumo}[Résumé]
 \begin{otherlanguage*}{french}
    $resume$

   \textbf{Mots-clés}: $mots_cles$
 \end{otherlanguage*}
\end{resumo}
$endif$

$if(resumen)$
% resumo em espanhol
\begin{resumo}[Resumen]
 \begin{otherlanguage*}{spanish}
   $resumen$

   \textbf{Palabras clave}: $palabras_clave$
 \end{otherlanguage*}
\end{resumo}
$endif$
% ---

$if(lista_ilustracoes)$
% ---
% Lista de ilustrações (opcional)
% ---
\pdfbookmark[0]{\listfigurename}{lof}
\listoffigures*
\cleardoublepage
$else$
% ---
% Lista de ilustrações (opcional): não utilizando.
% ---
$endif$

$if(lista_quadros)$
% ---
% inserir lista de quadros
% ---
\pdfbookmark[0]{\listofquadrosname}{loq}
\listofquadros*
\cleardoublepage
% ---
$else$
% ---
% Lista de quadros (opcional): não utilizando.
% ---
$endif$

% Carrega listas definidas pelo usuário em `latexcustomizacao.sty`
\listasdousuario

$if(lista_tabelas)$
% ---
% Lista de tabelas (opcional)
% ---
\pdfbookmark[0]{\listtablename}{lot}
\listoftables*
\cleardoublepage
% ---
$else$
% ---
% Lista de tabelas (opcional): não utilizando
% ---
$endif$

% ---
% Lista de abreviaturas e siglas (opcional)
% ---
$if(siglas)$
\begin{siglas}
$for(siglas)$
  \item[$siglas.s$] $siglas.d$
$endfor$
\end{siglas}
% ---
$else$
% SEM LISTA DE SIGLAS
$endif$

$if(simbolos)$
% ---
% Lista de símbolos (opcional): PRESENTE
% ---
\begin{simbolos}
$for(simbolos)$
  \item[$$ \$simbolos.s$ $$] $simbolos.d$
$endfor$
\end{simbolos}
% ---
$else$
% ---
% Lista de símbolos (opcional): AUSENTE
% ---
$endif$

% ---
% Sumário
% ---
\pdfbookmark[0]{\contentsname}{toc}
\tableofcontents*
\cleardoublepage
% ---

% ----------------------------------------------------------
% ELEMENTOS PRÉ-TEXTUAIS
% ----------------------------------------------------------
% \pretextual

$for(include-before)$
$include-before$

$endfor$

% ----------------------------------------------------------
% ELEMENTOS TEXTUAIS
% ----------------------------------------------------------
\textual
\pagestyle{simple}                  % #17 Cabeçalho apenas com
\aliaspagestyle{chapter}{simple}    % a numeração das páginas

$body$

% ----------------------------------------------------------
% ELEMENTOS PÓS-TEXTUAIS
% ----------------------------------------------------------
\postextual
% ----------------------------------------------------------

$for(include-after)$
$include-after$

$endfor$
% ----------------------------------------------------------
% Referências bibliográficas
% ----------------------------------------------------------

$if(natbib)$
$if(bibliography)$
$if(biblio-title)$
$if(has-chapters)$
\renewcommand\bibname{$biblio-title$}
$else$
\renewcommand\refname{$biblio-title$}
$endif$
$endif$
$if(beamer)$
\begin{frame}[allowframebreaks]{$biblio-title$}
  \bibliographytrue
$endif$
  \bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$}
$if(beamer)$
\end{frame}
$endif$

$endif$
$endif$

$if(biblatex)$
$if(beamer)$
\begin{frame}[allowframebreaks]{$biblio-title$}
  \bibliographytrue
  \printbibliography[heading=none]
\end{frame}
$else$
\printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$
$endif$
$endif$

% ----------------------------------------------------------
% Glossário
% ----------------------------------------------------------
%
% Consulte o manual da classe abntex2 para orientações sobre o glossário.
%
%\glossary

% ----------------------------------------------------------
% Apêndices
% ----------------------------------------------------------
$if(apendices)$
% 
% ---
% Inicia os apêndices
% ---
\begin{apendicesenv}

% Imprime uma página indicando o início dos apêndices
\partapendices

$body$

\end{apendicesenv}
$else$
%% 
% Seção de apendices configurada como desativada
%% 
% ---
$endif$

$if(anexos)$
% ----------------------------------------------------------
% Anexos
% ----------------------------------------------------------
\begin{anexosenv}
% Imprime uma página indicando o início dos anexos
\partanexos
$body$
\end{anexosenv}
$else$
% ----------------------------------------------------------
% Anexos desativados: 
% Seção de anexos configurada como desativada
% ----------------------------------------------------------
$endif$

$if(indice-remissivo)$
%---------------------------------------------------------------------
% INDICE REMISSIVO
%---------------------------------------------------------------------
\phantompart
\printindex
%---------------------------------------------------------------------
$endif$

\end{document}

Obs.: Estou utilizando um CSL próprio durante a conversão com o pandoc ao invés do abntex2cite.

Não sei até que ponto você ainda está envolvido com esse projeto e tem interesse em mante-lo vivo, mas qualquer ajuda seria bem-vinda.

Abraços.

edusantana commented 3 years ago

Oi @bcdavasconcelos o abntex2cite está sem mantenedor, recomendo https://github.com/abntex/biblatex-abnt

Eu tenho interesse em rescrever o limarka para funcionar diretamente com o pandoc, apenas incluindo alguns filtros.

Infelizmente no momento não posso me dedicar a essa demanda. Posso dar algumas dicas no entanto.