Un template Pandoc (ou autre) pour écrire des documents en français ?

À la recherche d'un juste milieu entre LaTeX et LibreOffice

a marqué ce sujet comme résolu.

Bonjour !

Étant cette année en master de socio, j’ai pas mal de documents universitaires à rédiger. Jusqu’à présent, j’utilisais LaTeX pour les gros dossiers, et LibreOffice pour les tout petits. Mais il y avait plusieurs inconvénients à cela.

  • Déjà, ça fait deux méthodes de travail différentes. Ce n’est pas bien embêtant, mais j’aime quand même bien avoir un fonctionnement un peu homogène.
  • LaTeX est chouette, mais je le trouve vraiment lourd. Le boilerplate le plus simple pour écrire un document en français — donc avec l’encodage, les règles de typographie françaises et les packages qui vont avec, etc — atteint rapidement plusieurs dizaines de lignes. Et les commandes les plus utiles ne sont pas très ergonomiques ou rapides : pour mettre un texte en italique, il faut écrire \textit{texte}, c’est long pour quelque chose qui peut revenir plusieurs fois par phrase.
  • LibreOffice est sympa aussi, mais quand je l’utilise, j’ai rapidement tendance à trop me concentrer sur la forme plutôt que sur le fond. Et le formatage d’éléments récurrents (le titre, l’auteur, etc) doit être refait à chaque fois. Quand j’écris un document simple et court, ça ne me pose pas spécialement de problème, et c’est pour cela que je l’aime bien. J’ai juste à ouvrir le logiciel et à taper mon texte, pas besoin de perdre plusieurs minutes à retrouver un boilerplate pour avoir un résultat satisfaisant.

Seulement, c’est peut-être un peu utopiste, mais j’aimerais bien me trouver un outil qui associe la puissance de LaTeX et la simplicité de LibreOffice. Quelque chose qui permette de produire un document bien formaté en quelques secondes, mais qui permette aussi d’aller plus loin quand j’ai besoin d’un peu plus d’outils (tableaux, mise en forme particulière, etc).

J’ai découvert le package markdown pour LaTeX, qui permet d’écrire des documents « hybrides » où le Markdown est converti en LaTeX avant de produire le pdf, ce qui évite d’écrire ces ennuyeux \textit{texte} en écrivant directement *texte*. C’est chouette, et je vais surement m’en servir pour mon mémoire de recherche, pour lequel je suis prêt à passer du temps à peaufiner le fond comme la forme. Seulement, là encore, il faut passer du temps à préparer un boilerplate à chaque fois.

Récemment, j’ai découvert le logiciel Pandoc, qui m’a particulièrement plu. En effet, il peut prendre un entrée un simple fichier Markdown, et produire un pdf élégant avec une seule ligne de commande. Je touche au but ! Il reste juste quelques petits détails qui me chiffonnent. En effet, Pandoc suppose par défaut, comme d’habitude, que le document qu’on écrit est en anglais, avec donc des règles de typographie anglaises. J’ai pu facilement en adapter la plupart en ajoutant des options dans l’en-tête du document Markdown, pour avoir par exemple une bonne gestion des guillemets. Mais c’est un peu lourd de recopier le même en-tête YAML à chaque fois.

J’ai donc tenté de créer mon propre template LaTeX, qui serait adapté à mes besoins, mais c’est là que je bloque. Il y a en effet des dizaines de paramètres, pour lesquels la documentation de Pandoc semble plutôt lacunaire, et j’ai toutes les peines du monde à obtenir un résultat satisfaisant, qui me donne un beau pdf francisé avec le minimum d’informations dans l’en-tête du document Markdown. Idéalement, je voudrais n’avoir à préciser à chaque fois que le titre, l’auteur, la date, et éventuellement le fichier de bibliographie associé s’il y en a un, et avoir des valeurs par défaut satisfaisantes pour tout le reste. Mais entre la gestion de la langue, de la typographie, de la bibliographie, de ce qui est géré par Pandoc et ce qui est géré par LaTeX, je m’y perds…

D’où ma question finale : est-ce que vous auriez des ressources, des conseils ou des exemples de bons templates pour écrire des documents universitaires français avec Pandoc ? Je suis également ouvert à toute alternative… ^^

Merci beaucoup par avance pour vos réponses ! :)

+0 -0

Salut,

LaTeX est chouette, mais je le trouve vraiment lourd. Le boilerplate le plus simple pour écrire un document en français — donc avec l’encodage, les règles de typographie françaises et les packages qui vont avec, etc — atteint rapidement plusieurs dizaines de lignes.

J’ai toujours eu du mal à comprendre cet argument du boilerplate avec LaTeX. C’est un truc que tu écris une fois dans ta vie, après il suffit de réutiliser le même squelette (éventuellement en retouchant un peu pour adapter les besoins, mais ça c’est vrai avec tout outil). C’est un truc que tu peux aisément versionner et retrouver partout avec une plateforme comme GitHub. Par ailleurs je suis un peu étonné de ton "plusieurs dizaines de lignes".

\usepackage{fontspec}
\usepackage{polyglossia}
\setdefaultlanguage{french}

puis une compilation avec xelatex ou lualatex te donne le support UTF8 et la typographie française. Les autres paquets que tu peux utiliser par ailleurs ne sont pas liés au fait que ton document est en français (il y a peut être certains paquets où il faudra passer une option, mais c’est de l’ordre du détail).

Et les commandes les plus utiles ne sont pas très ergonomiques ou rapides : pour mettre un texte en italique, il faut écrire \textit{texte}, c’est long pour quelque chose qui peut revenir plusieurs fois par phrase.

Je pense que tu veux mettre en emphase plutôt qu’en italique, et c’est la commande \emph. Tu n’as pratiquement aucune raison valable, hors définition de tes propres commandes (et encore), d’appeler \textit qui n’a pas de signification sémantique particulière. Par ailleurs, si tu utilises certaines commandes intensivement, paramétrer ton éditeur pour avoir des raccourcis divers et variés peut être une façon simple d’alléger le processus de rédaction.

Bref, ça ne répond pas directement à ta question, mais j’ai l’impression que les problèmes que tu soulèves avec LaTeX n’en sont pas vraiment. Lui reprocher sa lourdeur générale pour définir certaines choses et son design particulier, oui. Mais si \emph{…} est trop à écrire, et que tu écris le boilerplate à la main à chaque fois, c’est essentiellement un problème de workflow plutôt qu’un problème d’outil.

+3 -0

Merci pour ta réponse !

En effet, j’ai certainement pas mal de choses à améliorer également du côté du workflow. Disons que ce que j’aime avec Pandoc, c’est que j’ai juste à créer un fichier texte vide, à y mettre mon texte, et à lancer une commande pour produire le pdf.

Personnellement, j’utilise souvent quelque chose qui ressemble à ça comme base de départ quand j’écris du LaTeX (sans bibliographie).

\documentclass[a4paper, 12pt]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{hyperref}
\usepackage{parskip}
\usepackage[a4paper, margin=2cm]{geometry}
\usepackage{csquotes}
\usepackage{titling}

\title{TITRE}
\author{AUTEUR}
\date{DATE}

\setlength{\droptitle}{-5em}

\begin{document}
    \maketitle
    
    CONTENU
\end{document}

Je vais profiter des vacances pour essayer de revoir tout ça… Merci ! :)

+0 -0

Disons que ce que j’aime avec Pandoc, c’est que j’ai juste à créer un fichier texte vide, à y mettre mon texte, et à lancer une commande pour produire le pdf.

Ben c’est pas tout à fait ce que tu dis là, quand même :

J’ai pu facilement en adapter la plupart en ajoutant des options dans l’en-tête du document Markdown, pour avoir par exemple une bonne gestion des guillemets. Mais c’est un peu lourd de recopier le même en-tête YAML à chaque fois.

Et même au-delà de ça, qu’est-ce qui t’empêche d’avoir un template dans ton éditeur favori ou encore de définir une commande qui copie ton squelette (cette solution convient surtout si tu utilises un terminal) ?

J’ai l’impression que les avantages réels de Pandoc sont :

  • gestion de conversion entre pleins de format, ne s’applique pas à ton cas d’usage ;
  • possibilité d’écrire très rapidement un document sans avoir à paramétrer ni apprendre un outil difficile si on connait déjà e.g. Markdown, qui ne s’applique pas non plus puisque tu as déjà ton squelette LaTeX, et qu’en plus les paramètres par défaut de Pandoc ne te conviennent pas.

Certains avancent aussi comme avantage à écrire par exemple en Markdown plutôt qu’en LaTeX que la syntaxe de LaTeX est lourde pour les listes, les emphases etc. C’est indéniable, mais j’ai du mal à voir en quoi c’est un vrai problème. Par exemple, je viens de regarder sur ma thèse écrite en LaTeX. C’est un document de 200 pages, environ 8600 lignes de LaTeX, comprenant au total 2 appels à \emph, 9 appels à itemize et 3 à enumerate. Donc bon, le gain à utiliser du Markdown pour alléger ces éléments est relativement limité. D’un autre côté, il y a aussi 255 références à des éléments internes, 262 citations, 63 figures, et 335 équations qui seraient tout simplement impossibles à exprimer en Markdown (ou alors avec des extensions qui rendent la chose aussi lourde de toute façon). Si tu veux un système qui est adapté à l’écriture de long documents, Markdown est impossible. Si tu veux un système adapté à l’écriture de document courts, les inconvénients de LaTeX sont relativement marginaux, on ne passe pas son temps à écrire des listes et mettre en emphase (sauf document très particulier peut être…).

+2 -0

Effectivement, mais ce problème d’en-tête vient surtout de mon usage. Je pense que je vais essayer de reprendre un squelette LaTeX satisfaisant, et de l’adapter par essais-erreurs à Pandoc. Je prends déjà toutes mes notes de cours en Markdown, donc ce serait tout de même un gain de temps si je pouvais continuer.

Sinon, je pense que les usages varient grandement selon les disciplines. J’ai récemment fait un document de 8 pages dans lequel j’utilisais de l’italique une vingtaine de fois (pour de l’emphase, ou pour des expressions anglaises ou latines) et où j’ai utilisé deux listes. Ce sera surement très différent pour mon mémoire de recherche (où j’aurai besoin de faire des citations, des tableaux, et surement quelques références), mais j’écris assez souvent des documents de ce genre (fiches de lectures, comptes-rendus d’entretiens, notes de recherches, etc).

Du coup, je pense que je vais passer à un fonctionnement hybride entre Pandoc pour les petits documents et LaTeX pour ceux avec des plus gros besoins. :)

+0 -0

Je ne sais pas si c’est pertinent, mais connaissez-vous aussi Lyx ? C’est pratique pour alléger la syntaxe de LaTeX.

+1 -0

En plus de ce qu’a dit adri1, j’ajouterais que si tu y tiens vraiment, tu peux inclure du markdown dans du latex

Je ne sais pas ce que ça vaut … mais pourquoi pas.

Sur une note plus personnelle, pour avoir beaucoup beaucoup écrit en LaTeX (quand j’étais étudiant, j’ai écrit tous mes cours de maths en direct en LaTeX …)et avoir déjà essayé un workflow avec du pandoc qui traduit en direct, je peux dire que LaTeX peut être rendu très efficace, plus que le reste. Les commandes sont lourdes à écrire, mais elles sont aussi plus robuste et bien plus faciles à (re)définir. Quant au résultat typographique, il n’y a aucune comparaison possible, LaTeX met la patée à tout le monde

Aussi, il ne faut pas sous-estimer le gain de temps que serait de définir toi même ta documentclass, et alors une simple inclusion au début d’un nouveau document remplace ce qui te semble long à écrire aujourd’hui …

edit : j’avais lu en diagonale et loupé la partie sur le package hihi

+1 -0

Pour répondre à ta question, pour moi c’est facile: tu appelles pandoc --print-default-template=latex, il va t’afficher la template par défaut qu’il utilise pour convertir du pandoc en LaTeX. Tu stockes ça dans un fichier montemplate.tex.tmpl, que tu modifies comme tu le souhaites pour avoir la sortie que tu veux, et tu testes et utilises la template modifiée avec pandoc toto.md --template=montemplate.tex.tmpl -o toto.tex.

En plus de ce qu’a dit adri1, j’ajouterais que si tu y tiens vraiment, tu peux inclure du markdown dans du latex

Je ne sais pas ce que ça vaut … mais pourquoi pas.

Holosmos

Prochain billet: Comment lire un message sur le forum. 😂

Je plussoie @florian6973, j’essaye Lyx depuis hier soir et franchement je suis assez impressionné. Je suis plutôt du style généralement à utiliser pdflatex mais Lyx est vraiment bien fait et bien conçu.

+0 -0

Je ne sais pas si c’est pertinent, mais connaissez-vous aussi Lyx ? C’est pratique pour alléger la syntaxe de LaTeX.

florian6973

Je ne connaissais pas, je vais aller regarder ça !

@gasche : Effectivement, j’ai déjà tenté de personnaliser un peu les templates. Le problème, c’est que ceux par défaut sont très denses, et les variables disponibles ne sont presque pas documentées. Mais si j’aboutis à quelque chose de simple et efficace je vous le partagerai. :)

Du coup, je vais voir ce que je peux changer dans mon usage de LaTeX, et je vais regarder du côté de Lyx.

Merci ! :)

+0 -0

Salut,

Depuis hier j’ai la flemme de répondre à ce sujet, mais là ça y est, j’ai pris mon clavier, j’ai pris un bonbon, j’ai pris mes mains, et nous voilà !

Tu peux effectivement regarder du côté de Lyx, mais je pense également que tes « soucis » avec LaTeX sont plus liés aux outils que tu utilises. L’éditeur que tu utilises peux t’aider pour les trucs que tu trouves longs. Tu utilises quoi pour faire du LaTeX ?

Par exemple, sur TeXStudio, tu peux définir des templates, certains trucs comme les listes sont plus rapides à écrire et il y a même des outils pour faciliter l’écriture de tableaux ou encore de matrices. Tu peux également définir des raccourcis claviers pour faire ce que tu veux (un raccourci clavier qui écrit la commande pour indiquer que tu vas écrire une expression anglaise).

Concernant ce dernier point, puisque pour dire que c’est trop long il faut comparer à un autre outil, je ne pense pas que ce soit vraiment plus rapide sur LibreOffice de mettre un mot en italique. Je reviens également sur le fait de mettre en italique avec \textit. Ça a déjà été dit plus haut, il faut éviter d’utiliser de telles commandes et plutôt (définir et) utiliser des commandes plus sémantiques. Par exemple, une commande \latin pour les mots en latins ne me semblerait pas bizarre (et si c’est un mot qui revient, tu peux même faire une commande pour ce mot).

Et puisqu’on parle de commandes, ça permet d’aborder le point suivant : l’inclusion de fichiers. Tu peux effectivement avoir un fichier principal où tu as tes inclusions de packages et tout, et inclure un fichier command.tex où tu as les commandes que tu as définies. Ce fichier peut alors être inclus dans tous tes documents (c’est ce que beaucoup de personnes font).

Après, je favorise l’uniformité du document et la lisibilité du fichier source, donc prendre un peu plus de temps à écrire ne me gêne pas tant que ce n’est pas trois fois plus de temps. :)

+3 -0

Le problème, c’est que ceux par défaut sont très denses, et les variables disponibles ne sont presque pas documentées.

Oui mais c’est assez facile (il me semble) de modifier seulement ce qu’on veut, et de virer ce dont on est sûr qu’on n’a pas besoin (en faisant des tests sur un document pour vérifier).

Au passage, je vois les lignes suivantes dans le template par défaut chez moi:

$if(lang)$
  $babel-lang$,
$endif$

donc visiblement tu peux faire pandoc -V lang=fr-FR et il utilise babel (ou polyglossia si tu lui demander d’utiliser context). (Tu le mentionnes dans ton premier message mais j’avais pas remarqué à première lecture.)

J’ai pu facilement en adapter la plupart en ajoutant des options dans l’en-tête du document Markdown, pour avoir par exemple une bonne gestion des guillemets. Mais c’est un peu lourd de recopier le même en-tête YAML à chaque fois.

Tu peux aussi passer ces options dans la ligne de commande (c’est précisé dans man pandoc, qui est assez complet), et donc en particulier te faire un script qui invoque pandoc avec tes options/variables courantes.

Tu peux effectivement regarder du côté de Lyx, mais je pense également que tes « soucis » avec LaTeX sont plus liés aux outils que tu utilises. L’éditeur que tu utilises peux t’aider pour les trucs que tu trouves longs. Tu utilises quoi pour faire du LaTeX ?

Jusqu’à récemment, j’utilisais Geany pour à peu près tout, et depuis cet été je suis passé à Atom parce que j’aime bien son interface épurée. Mais effectivement, je n’ai pas d’éditeur dédié à faire du LaTeX (en fait j’en fais assez peu souvent, peut-être un ou deux par semestre, justement parce que j’ai rapidement tendance à préférer la légèreté de Markdown pour des petits documents).

Par exemple, sur TeXStudio, tu peux définir des templates, certains trucs comme les listes sont plus rapides à écrire et il y a même des outils pour faciliter l’écriture de tableaux ou encore de matrices. Tu peux également définir des raccourcis claviers pour faire ce que tu veux (un raccourci clavier qui écrit la commande pour indiquer que tu vas écrire une expression anglaise).

Ah okay, je vais l’essayer pour la prochaine fois ! :)

Concernant ce dernier point, puisque pour dire que c’est trop long il faut comparer à un autre outil, je ne pense pas que ce soit vraiment plus rapide sur LibreOffice de mettre un mot en italique.

Sans vouloir me faire l’avocat du diable, je peux comparer trois méthodes « naïves » (si l’on exclut l’aide offerte par l’éditeur) pour mettre le mot « texte » en italique.

  • Avec LibreOffice, on fait Ctrl + I, on écrit texte, et Ctrl + I.
  • Avec Markdown, on écrit *, puis texte, puis *.
  • Avec LaTeX, on fait AltGr + 8 pour mettre un \, on écrit emph, on fait AltGr + 4 pour {, on écrit texte, puis on fait AltGr + + pour }.

Et vu que j’utilise beaucoup l’emphase ou les expressions anglaises ou latines, j’apprécie particulièrement Markdown justement parce qu’il ne demande que deux frappes pour mettre un passage en italique, contre quatre pour LibreOffice, et dix pour LaTeX (certes, sans compter l’aide de l’éditeur).

Du coup, je vais tester un peu tout ça, et voir avec quoi je me sens le plus à l’aise, quitte à faire un squelette LaTeX que j’utiliserai également comme template Pandoc minimaliste si j’y parviens. :)

+0 -0

Jusqu’à récemment, j’utilisais Geany pour à peu près tout, et depuis cet été je suis passé à Atom parce que j’aime bien son interface épurée. Mais effectivement, je n’ai pas d’éditeur dédié à faire du LaTeX (en fait j’en fais assez peu souvent, peut-être un ou deux par semestre, justement parce que j’ai rapidement tendance à préférer la légèreté de Markdown pour des petits documents).

Je suis sûr qu’Atom fera très bien l’affaire, c’est un éditeur de texte suffisamment complet pour pouvoir paramétrer ce que tu veux. Il vaut mieux apprendre à utiliser un seul éditeur mais l’apprendre très bien que se perdre avec tous ces éditeurs dédiés à un seul langage qui te forcent à revisiter tes habitudes. Pour la rapidité à éditer du texte, rien ne bat l’habitude de l’outil et avoir ses propres raccourcis et idiosyncrasies.

Sans vouloir me faire l’avocat du diable, je peux comparer trois méthodes « naïves » (si l’on exclut l’aide offerte par l’éditeur) pour mettre le mot « texte » en italique.

C’est absurde comme comparaison. Ce serait comme de dire que trainer la souris sur Libre Office pour mettre en italique est lent alors que ce serait en fait un mauvais usage des outils. Si tu as une entrée que tu utilises sans cesse, définis un raccourci clavier. Tu peux très bien mapper Ctrl + I (où ce que tu veux) à l’insertion de \emph{|} et mettre ton curseur là où j’ai mis le |. Boom, deux frappes. Si tu penses que le nombre de frappes est une métrique pertinente (spoiler alert, le temps que tu passes à taper ces marqueurs est largement négligeable devant le temps à rédiger le document de toute façon), mappe par exemple une touche Fn, et tu descends à une seule frappe… Par ailleurs, un des énormes avantages des formats textes est la richesse des éditeurs de texte qui te permettent de manipuler du texte de manière ultra efficace. Libre Office pourra se rhabiller dans tous les cas sur la vitesse d’obtention d’un document formaté correctement face à LaTeX sur un document un peu complet utilisé par quelqu’un qui connait son éditeur de texte. Le coût d’entrée est moindre pour Libre Office, mais la puissance derrière n’a rien à voir (et sur un truc qu’on utilise toute sa vie, le coût d’entrée est négligeable de toute façon). Par exemple, formater une sortie d’un programme à coup de macros pour en faire un tableau LaTeX dans Vim (et j’imagine qu’Atom a quelque chose de similaire) est l’affaire de quelques secondes à une minute en général. Rien à voir avec se battre pour coller correctement le contenu dans Libre Office.

Après par contre, un truc certain est que les claviers AZERTY sont pas pratiques du tout pour taper du LaTeX parce que les \{} sont pas accessibles facilement et Alt Gr casse bien la position des mains surtout sur certains claviers…). C’est une des raisons pour lesquelles j’utilise une disposition QWERTY internationale, couplé avec une touche de composition pour les symboles et les diacritiques dans divers languages. C’est peut être inadapté dans ton cas, mais comme j’écris surtout en anglais, c’est raisonnable pour mon usage.

+4 -0

Pour le point de l’éditeur…

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte