Pitch: Markdown que dá erro de compilação, gera Word em conformidade com a ABNT e muito mais.
Quem já escreveu TCC, dissertação ou tese no Brasil conhece o segundo trabalho escondido dentro do primeiro. Formatar na ABNT. Margem, fonte, entrelinha, recuo. A melhor parte são regras diferentes por seção. A numeração de página que conta a partir da folha de rosto mas só aparece a partir da introdução. Epígrafe e dedicatória empurradas pra o final da página. Se a impressão for frente e verso, todo capítulo tem que começar em página ímpar e a margem interna deve ser maior que a externa, por causa da lombada.
É tanta regra que quem não se intimida pelo monstro normalmente foge para o LaTeX. E faz total sentido. LaTeX é excelente, mas talvez nem seja mais a melhor ferramenta para gerar PDF, agora temos Typst, mas foram quase meio século como padrão absoluto da indústria. Ele não vai desaparecer.
O problema é quando alguém pede um documento do Word. E sempre pedem.
Você pode ter um PDF lindo, tipograficamente perfeito, gerado por uma ferramenta maravilhosa. Mas se o processo ao redor espera um .docx editável, comentável e revisável, você ainda não resolveu o problema.
Markdown com Pandoc ajuda?
Pandoc ajuda bastante.
Pandoc - para quem não conhece - é a melhor ferramenta que existe para transformar texto estruturado em outros formatos. Ele pega Markdown (e monte de outras entradas), monta uma árvore do documento e emite HTML, PDF, DOCX, TeX (e um monte de outras saídas).
Mas justamente aí está o limite. Pandoc é um conversor de documentos, mas converter formato não é a mesma coisa que entender as regras do documento.
Ele sabe que existe um título. E usando um reference.docx, até sabe qual fonte, espaçamento, recuo e estilo aplicar naquele título. Mas ele não sabe que aquele título pertence à parte pré-textual. Ele sabe formatar um parágrafo. Mas não sabe que aquele parágrafo é uma epígrafe. Dá para ensinar tudo isso ao Pandoc? Até dá. Mas aí você começa a perceber que o problema não é mais sobre formatação.
Um sistema de tipos para documentos
A partir do momento em que o documento tem tipos, o compilador sabe aplicar regras. Se é pré-textual, conta página mas não mostra numeração. Se é capítulo, começa em página ímpar. Se é epígrafe, vai para o final da página. Essa é a ideia do SpecCompiler.
Na verdade, essa parte de renderização foi quase uma consequência inesperada. O SpecCompiler não nasceu para fazer template ABNT. Ele nasceu para inserir erros de compilação em especificações textuais, do mesmo jeito que o compilador do Rust insere erros de compilação no seu programa quando você quebra regra de tipos.
A ideia original era aplicar, com alguma ironia, a velha máxima do Go Horse:
se compila, funciona.
Só que para especificações textuais:
se compila, tá certo.
Um requisito apontou para outro requisito que não existe? Erro de compilação. Uma seção obrigatória ficou faltando? Erro de compilação. Uma tabela esperada não foi preenchida? Erro de compilação. Uma referência cruzada quebrou? Erro de compilação.

Mas este post não é exatamente sobre o SpecCompiler. Esse fica para outro dia, se tiver interesse.
specc-abnt na prática
O pitch aqui é uma tangente bem mais simples e mais útil para muito mais gente. O specc-abnt é o SpecCompiler usando os tipos da ABNT. Na prática você escreve em Markdown e sai um .docx que só não é "perfeito" porque o sumário e a numeração vêm como campos nativos Word (precisa abrir o arquivo e dá Ctrl+A e F9 para atualizar).
O repositório também é um template do GitHub. Você clica em "Use this template", escreve seu documento numa pasta com um project.yaml e dá push na main. Uma Action ("Publish Document") gera o .docx usando a imagem do docker disponível em ghcr.io/specir/specc-abnt e anexa o resultado numa Release. Dá pra baixar a "monografia" de exemplo aqui: https://github.com/SpecIR/specc-abnt/releases/latest.
(Dá pra rodar localmente, sem Docker, também. Mas é chato e eu não vou explicar.)
Até onde eu sei, não existe outra ferramenta que gera um Word pra ABNT. Se existir, manda nos comentários que eu quero conhecer.
Regras da ABNT como teste de estresse
A NBR 14724 é o conjunto de regras de formatação mais chato que existe, pelo menos dos que eu conheço. Não é à toa que tem gente qque pacote abnTeX chama ABsurd Norms for TeX. E é exatamente por isso que ela é tão interessante. Se o motor formata a ABNT, sobrevive ao template da sua empresa, à norma da sua área, ao manual de marca do seu cliente. O specc-abnt é só a prova de que dá pra gerar qualquer coisa. Com alguns milhões de tokens qualquer classe de LaTeX pode virar um modelo de SpecCompiler.
qual é o modelo de documento que você quer compilar?
Markdown entra. SpecCompiler aplica tipos e regras. DOCX sai.
Documento também compila. Até Word.
Agora vai lá compilar seu TCC. Ou criar um modelo novo para o template chato da sua empresa. Só me avisa o que quebrou, por favor. Porque vai quebrar.