limarka / pandoc_abnt Goto Github PK
View Code? Open in Web Editor NEWFiltro pandoc para possibilitar contemplação das Normas da ABNT
License: MIT License
Filtro pandoc para possibilitar contemplação das Normas da ABNT
License: MIT License
Este issue é para definir uma sintaxe para criação de Quadros e implementá-la.
Ver como ficou:
• Identificar linguagem de marcação mais apropriada para escrita de TCCs;
• Analisar requisitos de formatação de TCCs (incluir as normas da ABNT)
• Implementar uma aplicação que possibilite usuários escrever TCCs nacionais utilizando uma linguagem de marcação leve;
• Avaliar o uso da linguagem de marcação leve para a escrita de TCCs nacionais por estudantes.
(A partir de sugestão dada no canal do Limarka no gitter).
Eduardo, no último mês fiz uma extensa pesquisa para ferramentas que possam substituir o Word para escrever minha dissertação de mestrado e o Limarka foi uma das mais promissoras que encontrei...
A automatização da formatação da abnt usando a simplicidade do markdown com templates de latex acertou na mosca.
Após a formatação do padrão, acho que o segundo ponto que pode ser facilitado é o uso das citações a partir do arquivo .bib durante a escrita... Nesse ponto alguns editores de texto como o sublime, o brackets e o atom apresentam alguns plugins que tem a intenção de cumprir esse papel para documentos acadêmicos.
Acontece que a maioria desses plugins acadêmicos para editores se utilizam da sintaxe do Pandoc Markdown para as citações [@citekey], o que não é o caso do Limarka (apesar de fazer uso do Pandoc como seu interpretador para markdown, se é que entendi direito)... O que acaba tornando o limarka incompatível com algumas dessas ferramentas de automação da escrita...
Nesse sentido, destaco aqui o plugin autocomplete-bibtex para o atom. Esse plugin pretende mostrar uma lista suspensa abaixo do cursor com base no arquivo .bib após o usuário inserir o código de citação, facilitando a consulta à bibliografia no momento mesmo da escrita. Eu tentei usar o formato de citção do latex na configuração do plugin, mas sem sucesso e o mesmo ocorreu com outras ferramentas do tipo. A única que consegui que funcionasse bem até agora foi Citebibtex para o Sublime, mas só porque essa ferramenta mostra a lista ao pressionar o F10 ao invés de usar o autocomplete.
Resumindo, no fim das contas a falta dessas ferramentas não atrapalha e nem impede o uso do Limarka, mas são recursos extras úteis que podem ser incorporados facilmente no fluxo de trabalho se a compatibilidade total com o Pandoc Markdown for adotada, por isso que penso que uma opção de configuração que permita escolher entre um formato ou outro de citação pode tornar o Limarka mais aberto a diferentes soluções de trabalho e portanto mais completo...
Obrigado!
Tornar o projeto compatível com a versão 2.X do pandoc.
Para definir um quadro basta:
Quadro nome: Título do quadro.
Depois referenciar o quadro com \autoref{nome}
.
Esta issue é para melhorar o uso para idioma em português:
largura
para substituir width
nas imagensErro: /home/travis/.rvm/gems/ruby-2.3.1/gems/pandoc_abnt-0.1.2/lib/pandoc_abnt/figura_filter.rb:60:in `filtra_json': undefined method `each' for nil:NilClass (NoMethodError)
from /home/travis/.rvm/gems/ruby-2.3.1/gems/pandoc_abnt-0.1.2/exe/pandoc_abnt:12:in `<top (required)>'
from /home/travis/.rvm/gems/ruby-2.3.1/bin/pandoc_abnt:23:in `load'
from /home/travis/.rvm/gems/ruby-2.3.1/bin/pandoc_abnt:23:in `<main>'
from /home/travis/.rvm/gems/ruby-2.3.1/bin/ruby_executable_hooks:15:in `eval'
from /home/travis/.rvm/gems/ruby-2.3.1/bin/ruby_executable_hooks:15:in `<main>'
pandoc: Error running filter pandoc_abnt
Segundo as normas da ABNT as siglas devem ser apresentadas antes de utilizadas.
A funcionalidade consiste em ler o texto e procurar por apresentação de siglas, independente de onde são utilizadas:
A ABNT é responsável por...
A Associação Brasileira de Normas Técnicas (ABNT) define que...
Nesse texto acima percebe-se que a sigla foi apresentada na segunda linha. O que estaria errado, deveria ser apresentado na primeira vez que foi utilizada. Essa funcionalidade iria encontrar as siglas, adicionar à lista de siglas e re-organizar o texto para apresentar a sigla na primeira utilização. O texto seria alterado para:
A Associação Brasileira de Normas Técnicas (ABNT) é responsável por...
A ABNT define que...
E a sigla ABNT seria adicionada à lista de siglas.
NBR 6024:2012 Item 4.2.e
![Título](imagem.png){#id width=30% posicao="ht"}
Fonte: Autor.
Pega o valor de posicao
e utiliza no código latex:
\begin{figure}[ht]
(...)
@RodrigoDAlmeida relatou o seguinte problema no windows:
Senhores, estou tentando gerar o PDF a partir do modelo "trabalho-academico-limarka-master", segui todos as instruções do tutorial do wiki no github, mas segue apresentando esse erro. A instalação do
pandoc_abnt
foi feita conforme a imagem 3. Alguém poderia me auxiliar?
Fui testar o Limarka, e encontrei diversos erros. Um deles pode ser resolvido aqui. Substituindo \legend
por \fonte
http://pandoc.org/MANUAL.html#divs-and-spans
Acho que talvez seja possível gerar código raw para inserção de imagens em docx ou odt.
NBR 6024:2012
Item 4.1.e
$ pandoc -t json
![Título](imagem.png){#id width=30%}
Fonte: Autor.
[{"unMeta":{}},[{"t":"Para","c":[{"t":"Image","c":[["id",[],[["width","30%"]]],[{"t":"Str","c":"Título"}],["imagem.png","fig:"]]}]},{"t":"Para","c":[{"t":"Str","c":"Fonte:"},{"t":"Space","c":[]},{"t":"Str","c":"Autor."}]}]]
Transformar o seguinte código:
![Título](imagem.png){#id width=30% fonte="Fonte da *figura*"}
Em:
\begin{figure}[htbp]
\caption{\label{id}Legenda da figura.}
\begin{center}
\includegraphics[width=0.30\textwidth]{imagem.png}
\end{center}
\legend{Fonte da \emph{figura}}
\end{figure}
Referências:
$ pandoc -t json
![Título](imagem.png){#id width=30% fonte="Fonte da *figura*"}
[{"unMeta":{}},[{"t":"Para","c":[{"t":"Image","c":[["id",[],[["width","30%"],["fonte","Fonte da *figura*"]]],[{"t":"Str","c":"Título"}],["imagem.png","fig:"]]}]}]]
$ pandoc -t json
![Título](imagem.png){#id width=30% fonte="Fonte da *figura*"}
dentro do parágrafo.
[{"unMeta":{}},[{"t":"Para","c":[{"t":"Image","c":[["id",[],[["width","30%"],["fonte","Fonte da *figura*"]]],[{"t":"Str","c":"Título"}],["imagem.png",""]]},{"t":"SoftBreak","c":[]},{"t":"Str","c":"dentro"},{"t":"Space","c":[]},{"t":"Str","c":"do"},{"t":"Space","c":[]},{"t":"Str","c":"parágrafo."}]}]]
$ pandoc -t latex
![Título](imagem.png){#id width=30% fonte="Fonte da *figura*"}
\begin{figure}[htbp]
\centering
\includegraphics[width=0.30000\textwidth]{imagem.png}
\caption{Título}\label{id}
\end{figure}
$ pandoc -t json
![Título](imagem.png){#id width=30%}
Fonte: Autor.
[{"unMeta":{}},[{"t":"Para","c":[{"t":"Image","c":[["id",[],[["width","30%"]]],[{"t":"Str","c":"Título"}],["imagem.png","fig:"]]}]},{"t":"Para","c":[{"t":"Str","c":"Fonte:"},{"t":"Space","c":[]},{"t":"Str","c":"Autor."}]}]]
$ pandoc -t json
![Título](imagem.png){#id width=30%} Fonte: Autor.
[{"unMeta":{}},[{"t":"Para","c":[{"t":"Image","c":[["id",[],[["width","30%"]]],[{"t":"Str","c":"Título"}],["imagem.png",""]]},{"t":"Space","c":[]},{"t":"Str","c":"Fonte:"},{"t":"Space","c":[]},{"t":"Str","c":"Autor."}]}]]
$ pandoc -t json
![Título](imagem.png){#id width=30%}
Fonte: Autor.
[{"unMeta":{}},[{"t":"Para","c":[{"t":"Image","c":[["id",[],[["width","30%"]]],[{"t":"Str","c":"Título"}],["imagem.png",""]]},{"t":"SoftBreak","c":[]},{"t":"Str","c":"Fonte:"},{"t":"Space","c":[]},{"t":"Str","c":"Autor."}]}]]
Veja o problema:
• aBNT NBR 14724, Informação e documentação - Trabalhos acadêmicos - Apresentação;
• aBNT NBR 6023, Informação e documentação - Referências - Elaboração;
• aBNT NBR 6024, Informação e documentação - Numeração progressiva das seções de um documento escrito - Apresentação;
• aBNT NBR 6027, Informação e documentação - Sumário - Apresentação;
• aBNT NBR 6028, Informação e documentação - Resumo - Procedimento;
(...)
Erro: /var/lib/gems/2.3.0/gems/pandoc_abnt-1.0.2/lib/pandoc_abnt/lista_filter.rb:127:in `primeiro_tolken_do_item': undefined method `[]' for nil:NilClass (NoMethodError)
from /var/lib/gems/2.3.0/gems/pandoc_abnt-1.0.2/lib/pandoc_abnt/lista_filter.rb:80:in `block in processa_items_da_lista'
from /var/lib/gems/2.3.0/gems/pandoc_abnt-1.0.2/lib/pandoc_abnt/lista_filter.rb:75:in `each'
from /var/lib/gems/2.3.0/gems/pandoc_abnt-1.0.2/lib/pandoc_abnt/lista_filter.rb:75:in `processa_items_da_lista'
from /var/lib/gems/2.3.0/gems/pandoc_abnt-1.0.2/lib/pandoc_abnt/lista_filter.rb:56:in `block in filtra_json'
from /var/lib/gems/2.3.0/gems/pandoc_abnt-1.0.2/lib/pandoc_abnt/lista_filter.rb:54:in `each'
from /var/lib/gems/2.3.0/gems/pandoc_abnt-1.0.2/lib/pandoc_abnt/lista_filter.rb:54:in `filtra_json'
from /var/lib/gems/2.3.0/gems/pandoc_abnt-1.0.2/exe/pandoc_abnt:11:in `<top (required)>'
from /usr/local/bin/pandoc_abnt:23:in `load'
from /usr/local/bin/pandoc_abnt:23:in `<main>'
pandoc: Error running filter pandoc_abnt
Filter returned error status 1
Os quadros devem ter linhas verticais:
\begin{longtable}[]{@{}clr@{}}
transformar em:
\begin{longtable}[]{|c|l|r|}
https://en.wikibooks.org/wiki/LaTeX/Tables
Ver exemplo de diferença:
Quadro qq: Conteúdo irrelevante
|Outra | Tabela |
|--------|-----------|
|Mais | coisas |
|Qualquer| coisa mais|
Fonte: demais coisas.
\renewcommand\LTcaptype{quadro}
\begin{longtable}[]{@{}ll@{}}
\caption{Conteúdo irrelevante\label{qq}}\tabularnewline
\toprule
Outra & Tabela\tabularnewline
\midrule
\endhead
Mais & coisas\tabularnewline
Qualquer & coisa mais\tabularnewline
\bottomrule
\caption*{Fonte: demais coisas.}
\end{longtable}
\renewcommand\LTcaptype{table}
DEVERIA SER:
\renewcommand\LTcaptype{quadro}
\begin{longtable}[]{|l|l|}
\caption{Conteúdo irrelevante\label{qq}}\tabularnewline
\toprule
Outra & Tabela\tabularnewline
\midrule
\endhead
Mais & coisas\tabularnewline
Qualquer & coisa mais\tabularnewline
\bottomrule
\caption*{Fonte: demais coisas.}
\end{longtable}
\renewcommand\LTcaptype{table}
Comportamento esperado: Que o limarka compile mesmo se faltar algum item na lista.
Passos para reprodução:
Lista:
1. exemplo de item 1;
2. exemplo de item 2;
3. exemplo de item 3;
4.
Erro:
╰─$ limarka exec
Erro: /home/yzakius/.rvm/gems/ruby-2.4.0/gems/pandoc_abnt-1.1.2/lib/pandoc_abnt/lista_filter.rb:131:in `primeiro_tolken_do_item': undefined method `[]' for nil:NilClass (NoMethodError)
from /home/yzakius/.rvm/gems/ruby-2.4.0/gems/pandoc_abnt-1.1.2/lib/pandoc_abnt/lista_filter.rb:85:in `block in processa_items_da_lista'
from /home/yzakius/.rvm/gems/ruby-2.4.0/gems/pandoc_abnt-1.1.2/lib/pandoc_abnt/lista_filter.rb:80:in `each'
from /home/yzakius/.rvm/gems/ruby-2.4.0/gems/pandoc_abnt-1.1.2/lib/pandoc_abnt/lista_filter.rb:80:in `processa_items_da_lista'
from /home/yzakius/.rvm/gems/ruby-2.4.0/gems/pandoc_abnt-1.1.2/lib/pandoc_abnt/lista_filter.rb:62:in `block in filtra_json'
from /home/yzakius/.rvm/gems/ruby-2.4.0/gems/pandoc_abnt-1.1.2/lib/pandoc_abnt/lista_filter.rb:60:in `each'
from /home/yzakius/.rvm/gems/ruby-2.4.0/gems/pandoc_abnt-1.1.2/lib/pandoc_abnt/lista_filter.rb:60:in `filtra_json'
from /home/yzakius/.rvm/gems/ruby-2.4.0/gems/pandoc_abnt-1.1.2/exe/pandoc_abnt:13:in `<top (required)>'
from /home/yzakius/.rvm/gems/ruby-2.4.0/bin/pandoc_abnt:23:in `load'
from /home/yzakius/.rvm/gems/ruby-2.4.0/bin/pandoc_abnt:23:in `<main>'
from /home/yzakius/.rvm/gems/ruby-2.4.0/bin/ruby_executable_hooks:15:in `eval'
from /home/yzakius/.rvm/gems/ruby-2.4.0/bin/ruby_executable_hooks:15:in `<main>'
pandoc: Error running filter pandoc_abnt
Filter returned error status 1
Especificações do sistema:
limarka 0.7.2
Cadastrado originalmente em abntex/limarka#151 por @yzakius
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.