vendredi 27 octobre 2017

quelques éditeurs Markdown

J'utilise LaTeX depuis de nombreuses années, s'il est parfait pour produire des documents contenant beaucoup de formules mathématiques, figures et autres références croisées, il est très mal adapté à la prise de notes . Or face à un temps de travail de plus en plus  haché entre différentes tâches, on a souvent besoin de rédiger rapidement des notes/comptes rendus en agrégeant des images, liens, formules, copies de consoles etc ... C'est dans ce domaine qu'un langage de balisage comme Markdown se révèle être particulièrement efficace, d'autant plus que couplé avec pandoc on peut ensuite convertir nos notes dans à peu près tous les formats.  Voici un petit tour d'horizon des outils qui m'ont permis de démarrer facilement  en Markdown .

quelques éditeurs markdown

 Markdown 


Pour commencer rappelons que Markdown est un langage de balisage très léger qui permet donc de faire de la prise de notes facilement  dans un fichier texte (d'extension *.md) structuré  à l'aide de symboles usuel :
  • # pour les parties, * pour les listes, 
  • [texte](adresse) pour les liens et ![texte](adresse) pour les images
  • voir un fichier avec quelques exemples test.md
le but n'est pas de mettre en page un document complet  mais de saisir le minimum vital très rapidement. Un bon éditeur Markdown permet de :
  • visualiser  le résultat de la saisie sous forme d'un rendu 
  • supporter l'interprétation des balises html (si on veut ajouter des éléments de formatage inexistant en Markdown)
  • interpréter correctement les formules mathématiques  (pour peu qu'on dispose de Mathjax)
  • exporter le résultat vers d'autres format html/pdf/latex/ods ...
Le gros défaut de Markdown c'est que sa syntaxe n'est pas définie par une instance officielle, les concepteurs d'éditeurs implémentent donc les fonctionnalités selon la manière qu'ils ont d'utiliser le langage!


Retext


Retext c'est l'éditeur avec lequel j'ai commencé car il est disponible par défaut  dans les dépôts ubuntu. on l'installe avec un simple sudo apt-get install retext , vous pourrez ensuite l'appeler depuis un  terminal avec la commande retext ou l'associer aux fichiers *.md. Ses caractéristiques et défauts :
  • Il permet d'ouvrir plusieurs fichiers dans des onglets différents 
  • il dispose d'un correcteur orthographique mais pas d'une coloration syntaxique du Markdown
  • Il dispose de 2 rendus pour afficher  la page en parallèle du code qu'on saisi, mais le code et le rendu ne sont pas synchronisés!
  • un seul des rendus, webkit, affiche correctement les formules mathématiques et seulement si on utilise le balisage $\backslash(...\backslash)$ ou $\backslash[...\backslash]$ (avec $ \$\$...\$\$ $  ou  $ \$ ...\$ $ ça ne marche pas)
  • l'interface permet d'exporter  vers pdf/html/ods mais le traitement des équations  entre $\backslash(...\backslash)$ ou $\backslash[...\backslash]$ n'est pas correct !

    Utext

     
    il s'agit d'un autre éditeur Markdown sous linux, mais qui n'est pas disponible dans les dépôts officiels. Il faut l'installer à partir du dépôt du développeur de l'application Utext

    sudo add-apt-repository ppa:atareao/utext
    sudo apt-get update
    sudo apt-get install utext
    

    • Contrairement à Retext Utext possède beaucoup de rendus disponibles et qui sont assez esthétiques !
    • les fenêtres de code et de rendu sont synchronisées ce qui est pratique pour visualiser une modification
    • on a un correcteur orthographique et une coloration syntaxique 
    • par contre l'export en html/pdf/ods n'est pas en mesure de tenir compte des rendus choisis  ...
    • il y a en plus un problème dans l'affichage des images locales impossible d'utiliser des chemins relatifs ou même absolu du type file:///  les images ne sont pas affichées (mais à l'exportation tout va bien!)

    marp 


    Marp est un éditeur Markown spécialement conçu pour réaliser des slides. L'application est multi-plateforme : on peut l'utiliser sous Linux/Mac/Window en téléchargeant les sources. Pour linux il faut décompresser l'archive dans un répertoire (MARP ci-dessous) et lancer la commande Marp dans le répertoire de décompression. Si vous voulez faire les choses proprement, déplacez ensuite ce répertoire vers /share/ et mettez un lien symbolique dans /bin/  pointant vers l'application Marp avec le nom de la commande que vous souhaitez pour démarrer :


    ## file 0.0.11-Marp-linux-x64.tar.gz  in MARP/ directory
    cd MARP
    gunzip 0.0.11-Marp-linux-x64.tar.gz
    tar -xvf 0.0.11-Marp-linux-x64.tar
    cd ..
    sudo mv -R MARP/ /share/
    cd /bin/
    sudo ln -s marp /share/MARP/Marp # command "marp"
    


    • marp permet de créer une présentation au format diapositives bien plus  rapidement que Beamer  sans la lourdeur d'une interface graphique complexe comme LibreOffice Impress
    • l'interface affiche un rendu en parallèle du code Markdown les deux fenêtres étant synchronisées
    • il y a 2 rendus, qui possèdent 2 variantes (foncé/clair ou clair/foncé),  qui sont sélectionnés par une directive en début de fichier (le thème gaïa me va très bien)
    • on peut  indiquer une image de fond dans la balise markdown avec  "bg"  ![bg](image)
    • les formules de maths sont correctement traitées avec $ \$\$...\$\$ $  ou  $ \$ ...\$ $
    • on exporte facilement les diapositives au format pdf, mais on est limité à des diapositives statiques

    pandoc


    Le principal défaut que j'ai rencontré avec les éditeurs précédents c'est l'exportation du Markdown vers d'autres format. Suivant les cas cette exportation :
    • ne traite pas correctement toutes les balises (maths en particulier) 
    • ne propose pas  beaucoup de format d'export (pdf/html/ods)
    • est très lente (fenêtre de l'éditeur qui freeze ...)

    pour palier à ces problèmes on peut utiliser pandoc qui est un convertisseur capable de prendre en entré un fichier Markdown et de le transformer en vraiment beaucoup de format (html/ods/pdf  mais aussi latex et avec des options ...). C'est en général lui qui est appelé pour faire la conversion dans les éditeurs décrit ci-dessus, mais on ne maîtrise vraiment la séquence d'appels. La séquence d'appel est quelque-chose comme :

    pandoc -f format_entree -t format_sortie -o output input
    

    Le format d'entrée sera markdown et celui de sortie quelque-chose comme html,latex ... Cependant pour obtenir du pdf il y a une petite subtilité : le format de sortie doit être "latex" et l'extension du fichier output doit être pdf :

    pandoc -f markdown -t latex -o fichier.pdf fichier.md
    

    Pour le cas des balises \(...\)  comme elles ont d'autres utilisations pour les non-mathématiciens elle ne sont pas traitées comme telles par pandoc qui ne traite bien que les balises $ \$ ...\$ $et \$\$...\$\$ $  ! Il est donc possible de contourner ce problème en conservant les balises $\backslash(...\backslash)$ ou $\backslash[...\backslash]$ dans les fichiers *.md mais en les remplaçant par $ \$ ...\$ $et \$\$...\$\$ $ avant d'utiliser pandoc !  Pour cela j'ai développée une commande toute simple à base de sed :

    fic=$1
    newfic=${fic%md}'pdf'
    cp $1 tmp.md
    sed -ie 's/\\([ ]*/$/g'  tmp.md
    sed -ie 's/\\)/$/g'  tmp.md
    sed -ie 's/\\\[/$$/g'  tmp.md
    sed -ie 's/\\]/$$/g'  tmp.md
    pandoc -f markdown -t latex -o tmp.pdf tmp.md
    mv tmp.pdf $newfic
    rm tmp*

    un simple mypandoc.sh fichier.md créera une sortie fichier.pdf ! Pour le faire vous aussi sauvez le code précédent dans un fichier texte mypandoc.sh, que vous placer dans votre répertoire ~/bin/  et auquel vous donnez les droits d'exécution chmod u+x mypandoc.sh

    Aucun commentaire:

    Enregistrer un commentaire

    Pour écrire des formules mathématiques vous pouvez utiliser la syntaxe latex en mettant vos formules entre des "dollars" $ \$....\$ $ par exemple :
    - $\sum_{n=1}^\infty {1\over n^2}={\pi^2\over 6}$ s'obtient avec \sum_{n=1}^\infty {1\over n^2}={\pi^2\over 6}
    - $\mathbb R$ s'obtient avec {\mathbb R} et $\mathcal D$ s'obtient avec {\mathcal D}
    - pour les crochets $\langle .,. \rangle$ dans les commentaires utilisez \langle .,. \rangle
    vous pouvez écrire du html dans les commentaires :
    - italique <i> ... </i> gras <b> ... </b>
    - lien <a href="http://adresse "> .... </a>