- Um sistema moderno de tipografia que expande a sintaxe tradicional do Markdown para permitir a criação fácil de documentos em vários formatos, como livros, artigos acadêmicos, slides e apresentações
- Incorpora diretamente ao Markdown recursos avançados como suporte a funções, uso de variáveis, condicionais/loops e biblioteca padrão, oferecendo um diferencial em extensibilidade e automação em relação ao Markdown tradicional ou ao LaTeX
- Com um único arquivo-fonte, é possível gerar várias saídas, como HTML, PDF, slides (reveal.js) e livros paginados (paged.js), com foco especial na criação de conteúdo baseada em código
- Com recursos de scripting e sintaxe de extensão expressiva, permite implementar livremente até conteúdos complexos ou dinâmicos
- Oferece ambiente com REPL, pré-visualização ao vivo e compilação rápida, possibilitando edição e depuração de documentos em tempo real
- Em comparação com ferramentas existentes, tem pontos fortes em recursos de scripting, controle de documentos e curva de aprendizado acessível frente a Markdown, LaTeX, Typst, AsciiDoc e MDX
- Pode ser usado em todos os principais sistemas operacionais apenas com Java 17 ou superior, sem necessidade de ambiente de desenvolvimento separado ou configuração complexa
About
- Quarkdown é um sistema moderno de composição tipográfica projetado para facilitar a criação, a partir da estrutura básica do Markdown com adição de funções e sintaxe estendida, de resultados refinados em vários formatos, de texto simples a livros, artigos acadêmicos e slides
- Foi desenvolvido com base em CommonMark e GFM e oferece suporte completo a sua própria sintaxe, além de funções, variáveis e bibliotecas definidas pelo usuário
- Fornece uma sintaxe própria chamada Quarkdown Flavor
- Adiciona recursos avançados ao Markdown por meio de uma sintaxe de extensão de funções Turing-completa, incluindo funções, condicionais e loops
- Com bibliotecas .qmd, é possível usar vários recursos como layout, entrada/saída, matemática, condicionais e loops
- Mesmo quando são necessárias estruturas documentais complexas ou conteúdo dinâmico, é possível aumentar a extensibilidade e a produtividade
Principais recursos e formas de uso
- Suporte a vários formatos de saída, como HTML, slides, livros (Paged) e PDF
- É possível definir o tipo de documento com chamadas de função como
.doctype {slides} e .doctype {paged}
- Integração com engines open source como reveal.js e paged.js
- Scripting e conteúdo dinâmico
- Introduz elementos de programação como funções, variáveis, condicionais e loops
- ex) .function {greet} ... .greet {world} from:{iamgio}
- Pré-visualização ao vivo e compilação rápida
- Oferece visualização em tempo real e detecção de alterações de arquivos (Watch)
- As opções
-p --preview e -w --watch aumentam a eficiência do trabalho
- Comparação com outras ferramentas de documentação
- Tem curva de aprendizado menor que o LaTeX e melhor extensibilidade de recursos que o Markdown
- Em comparação com Typst, AsciiDoc e MDX, também se destaca em scripting e expressividade
Alvos suportados
- HTML
- Saída geral (padrão)
- Slides (usando reveal.js)
- Formato de livro/artigo acadêmico (usando paged.js, requer servidor web)
- PDF
- Todos os tipos e recursos de documento suportados em HTML também podem ser exportados para PDF
- Para mais detalhes sobre a exportação em PDF, consulte o wiki
- Controle do formato de saída com chamadas de função como
.doctype {slides} e .doctype {paged}
Comparação
|
Quarkdown |
Markdown |
LaTeX |
Typst |
AsciiDoc |
MDX |
| Concisão e legibilidade |
✔ |
✔ |
✗ |
✔ |
✔ |
✔ |
| Controle total do documento |
✔ |
✗ |
✔ |
✔ |
✗ |
✗ |
| Recursos de scripting |
✔ |
✗ |
suporte parcial |
✔ |
✗ |
✔ |
| Saída em formato de livro/artigo |
✔ |
✗ |
✔ |
✔ |
✔ |
3rd party |
| Saída para apresentação |
✔ |
✗ |
✔ |
✔ |
✔ |
3rd party |
| Curva de aprendizado |
verde |
verde |
vermelho |
laranja |
verde |
verde |
| Suporte a alvos |
HTML, PDF |
HTML |
PDF, PostScript |
PDF |
HTML, PDF, ePub |
HTML |
5 comentários
Acho que por causa da tabela, o layout no celular está quebrando.
Se você definir
min-width: 0em.topic_contents, isso é corrigido. Essemin-widthrealmente dá muita dor de cabeça...Ah, resolvi de outra forma. Obrigado!
Obrigado pelo feedback rápido~
Comentários do Hacker News
Meu editor de texto FOSS, KeenWrite, usa uma abordagem parecida para converter Markdown em XHTML, TeX e PDF
A arquitetura do software mostra como uma cadeia de processadores pode ser projetada
Criei o KeenWrite para poder usar variáveis como nomes de personagens ou lugares ao escrever ficção científica
Para mais detalhes, veja o tutorial
Para quem ainda usa pandoc e shell scripts, a série Typesetting Markdown explica como montar uma infraestrutura baseada em scripts para converter Markdown em PDF
Mais informações sobre o próprio KeenWrite podem ser vistas aqui
O diagrama de arquitetura pode ser consultado aqui
Seria interessante comparar este projeto com o Typst, que recebeu muita atenção recentemente, então é surpreendente que o Typst nem seja mencionado na matriz de comparação de recursos
No geral, os dois projetos parecem muito parecidos
Fico me perguntando se a tabela comparativa está correta – link
Acho que o LaTeX claramente tem recursos completos de scripting, embora seja doloroso de usar
Sou cético quanto à afirmação de que a sintaxe críptica do Quarkdown seja mais concisa e legível que a do Typst
Também não acho que a curva de aprendizado seja mais fácil que a do Typst; os dois parecem quase iguais
Acho que o LaTeX também consegue gerar HTML com tex4ht
A barreira de entrada dificilmente pode ser mais baixa do que isso
Claro, curva de aprendizado não é exatamente a mesma coisa que barreira de entrada, mas há bastante sobreposição
E “curva de aprendizado” é uma característica subjetiva
Se colocar isso numa tabela comparativa, ela inevitavelmente já nasce enviesada
Recursos claros são mais objetivos, mas às vezes, dependendo do produto, certos recursos nem são necessários
A tabela comparativa está claramente incorreta
A saída de exemplo parece ótima
Mas eu nunca gostei muito quando linguagens de template crescem em chamadas de função ou complexidade
Claro, neste contexto isso pode fazer sentido
Mas, se tiver que usar junto com outra linguagem, por exemplo em renderização no servidor ou geração de documentos orientada a dados, você acaba perdendo tempo demais alternando entre duas linguagens
Linguagens de template nunca são tão poderosas quanto uma linguagem “de verdade”
Por isso prefiro abordagens como JSX ou tagged template literals em JavaScript
É melhor usar uma linguagem de programação real e, ao mesmo tempo, ter entendimento do contexto do documento, de forma a reduzir preocupações com escape, como XSS
Queria entender como o Quarto difere deste projeto
O nome é parecido, a extensão também, e a proposta parece semelhante, mas as funcionalidades até parecem menores – Quarto
O FAQ diz que foi desenvolvido pelos mesmos criadores
Dias atrás um amigo me mostrou que reescreveu todos os roteiros de aula em Quarto e até embutiu apresentações, e pareceu bem organizado
O fato de o Quarto também se integrar bem com R Studio e Jupyter Notebook é uma grande vantagem
Acho que isso é um tipo de evolução convergente
Achei interessante a explicação de que algo que pode parecer “planet” na verdade é um quark, especificamente um down quark
É um projeto legal, mas por causa da marca famosa da indústria editorial QuarkXPress, usar a palavra “Quark” como nome de um sistema de editoração é um pouco arriscado
Informações de registro relacionadas podem ser vistas aqui, aqui
(Também fico curioso por que existem dois registros de marca com a mesma palavra)
Em toda thread de discussão dessa área, uns 70% dos comentários são do tipo “por que não usar LaTeX?”, então vou deixar minha posição bem clara
Eu realmente preciso de um sistema moderno de editoração baseado em Markdown
Gostaria que houvesse várias tentativas de substituir o LaTeX
LaTeX é realmente desconfortável e antiquado, e seria bom ter um sistema que permitisse uma marcação mais livre
Mesmo que a sintaxe fique maior conforme os recursos crescem, claramente existe uma necessidade por algo um pouco mais poderoso que Markdown
Mas sinto que este projeto não é o que eu procurava
Pelos exemplos, ele parece pender mais para algo só um pouco mais poderoso que Markdown, e não chega a substituir totalmente o LaTeX (ou o Typst)
Um sistema de documentos desse tipo precisa ser realmente suave de usar, e este não me passa essa sensação
Isso não ajuda muito na difusão
Eu preferiria que fosse o mais compatível possível com Markdown normal, mas se a indentação de argumentos de função for obrigatória, parece que o documento inteiro vai acabar indentado, enquanto os pontos de extensão do Markdown normalmente ficam mais naturais em blocos de código (no estilo ```plugin-name`)
Por causa das diferenças de sintaxe, pode ser necessário reorganizar a estrutura inteira do documento
Se o objetivo é publicar um documento, dá para simplesmente trabalhar em LaTeX
O mais útil é quando isso fica bem integrado a um aplicativo de anotações
Pode haver quem faça isso em Emacs ou Vim, mas até eu, que sou meio saudosista, admito que acabei migrando para o Obsidian e afins
Seria bom ter algo que permitisse controlar melhor a estrutura do documento dentro do app de notas ou conectar recursos de publicação
Se for algo independente, fico me perguntando por que eu usaria
Pelo menos o Typst tem um editor online, e todo mundo usa isso
O ponto central é não adicionar coisas inúteis ao documento
Esses sistemas, incluindo o Typst, são basicamente voltados para a composição tipográfica de textos longos, como artigos
Eu gostaria que se tornassem uma alternativa ao HTML, mas, embora eu também tenha usado o Typst, parece que os autores só se preocupam com “artigos ou textos longos”
Eu também gostaria de fazer formulários, faturas, panfletos e cartões de visita, mas esse tipo de elemento fica fora do radar
(Na verdade eu estava pensando no Sile, mas o Typst é parecido)
Não usei o Typst a fundo porque ele é comercial
Especialmente formulários interativos, já há notícias de que isso está em andamento (o backend do writer de PDF já oferece algum suporte)
Daqui a algum tempo, parece provável que o Typst implemente recursos de formulários – veja esta issue
Faturas, panfletos publicitários, cartões de visita etc. exigem posicionar pequenos elementos exatamente no centro da página ou nas bordas, e nisso ferramentas WYSIWYG são mais convenientes
Só com composição tipográfica baseada em texto há tentativa e erro demais
Por exemplo, em tabloides o texto precisa fluir e contornar imagens ou recortes, em vez de ficar só em retângulos, e fazer isso apenas com coordenadas, sem ver o resultado, é muito difícil na prática
Eu instalei via cargo, em Rust, e uso tranquilamente sem o editor online
É bem fácil de usar para vários tipos de documento
Eu já o uso como substituto para produzir slides e apostilas
Ainda faltam alguns recursos, como contorno de imagem e fluxo de texto, mas isso também é difícil no TeX e está planejado para o futuro no Typst
Exemplo de pôster
Isso parece praticamente a mesma coisa que reStructuredText (rST)
A sintaxe de função do Quarkdown (
.somefunction {arg} {arg} body) é muito parecida com a sintaxe de função do rST (.. somefunction:: {arg} {arg} body)Tem Markdown, Quarkdown, Typst e tantos outros, tudo parece pouco padronizado, então no fim voltei para HTML+CSS
Nunca usei diretamente, mas estou considerando bem seriamente
Os outros formatos são complexos e têm curva de aprendizado, o que atrapalha a própria escrita
No XML eu posso definir minhas próprias tags e, com um parser, criar várias estruturas como geração automática de notas de rodapé
Queria saber se alguém já usou essa abordagem
O problema surge quando gente demais começa a empilhar sistemas em cima dele para tentar resolver algo que desde o início era “mais complexo”
Acho que pegam um sistema originalmente feito para usos simples e, achando que estão melhorando, na verdade não percebem suas limitações e só aumentam repetição e confusão desnecessárias
O problema não é falta de recursos, e sim estar usando fora do escopo para o qual foi projetado
Mesmo se colocarem formatação no notepad do Windows, eu não consideraria isso uma melhoria em essência
O notepad tinha um papel original
Se você não detesta Emacs, é uma boa opção
Não é preciso decorar centenas de frameworks e sintaxes complexas nessa mesma medida
Até mandar uma IA gerar um conversor de markdown para html já resolve bem
Em The Art of Unix Programming, de 2003, também aparece a ideia de que editar XML diretamente era doloroso, então era preciso criar vários formatos e parsers novos