Markdown to docx, y compris le modèle complexe

J’ai automatisé ma construction pour convertir les fichiers Markdown en fichiers DOCX en utilisant Pandoc. J’ai même utilisé un document de référence pour le style du document final. La commande que j’utilise est:

pandoc -f markdown -t docx --data-dir=docs/rendering/ mydoc.md -o mydoc.docx 

La reference.docx est récupérée par Pandoc dans docs/rendering et Pandoc rend mydoc.docx avec les mêmes styles que la doc de référence.

Cependant, reference.docx contient plus que des styles. Il contient des logos, préambule, etc.

Comment puis-je automatiser la fusion du contenu Markdown avec les styles et le contenu de reference.docx . Ma solution doit fonctionner sous Linux.

Je sais que cela tarde à venir, mais je suppose que les gens sont toujours à la recherche de solutions trois ans après la question initiale – je le sais.

Ma solution consistait à utiliser LaTeX comme intermédiaire entre markdown et docx (en fait, je convertissais à partir du mode org, mais la même différence). Donc, dans votre cas, je pense qu’une solution à une seule ligne serait:

 pandoc -f markdown -t latex -o mydoc.tex mydoc.md && \ pandoc -f latex -t docx --data-dir=docs/rendering/ -o mydoc.docx mydoc.tex 

Ce qui pourrait vous rapprocher de votre objective. Bien sûr, Pandoc a une centaine d’arguments qu’il peut gérer, et il y a probablement des moyens de rendre cela plus joli. Il a également reçu quelques mises à jour depuis que vous avez posté votre question.

Dans l’idéal, PanDoc développera cette fonctionnalité, mais elle n’aura probablement pas l’impression de l’être bientôt.

Je ne connais aucun outil permettant de faire le travail directement, mais vous pourriez probablement revenir à la fusion de reference.docx et de mydoc.docx, produit par mydoc.docx en code.

Le format .docx est une archive ZIP de fichiers XML (principalement). Le plus important est word/document.xml . Si vous utilisez un outil XML pour extraire (la plupart) du document.xml d’un fichier et l’insérer dans un autre, vous aurez quelque chose de plus proche de vos besoins.

Je pourrais rassembler un exemple dans, disons, Ruby si une illustration pouvait aider.

Idéalement, vous pourriez utiliser un modèle docx personnalisé, mais pandoc ne le supporte pas encore. Un fichier reference.docx permet uniquement d’incorporer des styles personnalisés dans des fichiers docx nouvellement créés.

Heureusement, vous pouvez approximer cela en utilisant odt au lieu de docx. Vous pouvez assez facilement modifier le modèle OpenDocument par défaut pour y inclure vos logos, préambule et autres éléments personnalisés. Utilisez le modèle personnalisé conjointement avec un fichier reference.odt pour obtenir tous les styles et le contenu personnalisé.

Une fois que vous avez le fichier au format odt, vous pouvez utiliser un nombre quelconque d’outils de ligne de commande pour convertir odt en docx. Par exemple, sous Linux, vous pouvez exécuter

 libreoffice --invisible --convert-to docx test.odt 

Ou sous OS X:

 /Applications/LibreOffice.app/Contents/MacOS/soffice.bin --invisible --convert-to docx test.odt