---
title: "Le document 2.0"
author: "François Pelletier"
date: "7 décembre 2017"
---

## Accueil

__Bienvenue !!!__

Objectifs de cet atelier:

1. Partager ma méthode de travail pour créer des documents
1. Présenter une méthodologie de travail axée sur le minimalisme
1. Présenter les avantages de travailler avec des formats ouverts et des outils libres

---

## Ordre du jour

1. La syntaxe Markdown
1. Les thèmes Bootstrap
1. L'outil de conversion de documents Pandoc

# Markdown

- Markdown est une syntaxe simple pour écrire des textes et de la documentation. 
- C'est un langage de balisage léger, beaucoup plus simple que le HTML et le LaTeX.
- Cette syntaxe permet la création de documents source lisibles par l'humain. 
- Elle est inspirée de plusieurs notations utilisées dans les courriels avant l'utilisation massive du HTML.
- La documentation complète de Markdown tient dans une seule page: [cheat sheet](https://warpedvisions.org/projects/markdown-cheat-sheet/)

---

## Conversion du Markdown

Markdown est concu pour être converti en d'autres formats facilement:

- [HTML](https://www.w3schools.com/html/default.asp): Site web prêt à mettre en ligne)
- [PDF](https://fr.wikipedia.org/wiki/Portable_Document_Format): Documents imprimables et diapositives.
- [LaTeX](https://www.latex-project.org//): Documents scientifiques et publications professionnelles
- [ODT](https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office): Format ouvert de document pour le traitement de texte utilisé par LibreOffice, OpenOffice, Google Docs. Assure la pérennité de l'information
- [Office Open XML](https://en.wikipedia.org/wiki/Office_Open_XML) (fichiers .docx): Format commun de bureautique (très mauvaise compatibilité)
- MediaWiki: Syntaxe de documentation collaborative, utilisée par Wikipédia et autres

---

## Les _saveurs_ de Markdown

Attention: Il n'existe pas de standard de Markdown

- Il y a par contre peu de différences entre celles-ci, ce sont surtout des ajouts pour des besoins précis

Quelques _saveurs_:

- [GitHub](https://guides.github.com/pdfs/markdown-cheatsheet-online.pdf): Utilisée sur ce réseau social pour développeurs
- [R Markdown](http://rmarkdown.rstudio.com/): Utilisé pour créer des rapports statistiques très élégants (C'est ce qu'on utilise dans mon équipe)
- [Pandoc Markdown](http://rmarkdown.rstudio.com/authoring_pandoc_markdown.html): Utile pour créer des documents riches dans plusieurs formats de façon automatisée.

---

## La syntaxe

La documentation de la syntaxe Markdown peut facilement être trouvée en ligne. Une version française se trouve ici:

- [Traduction de la documentation en français](https://michelf.ca/projets/php-markdown/syntaxe/)
- [Un guide pour bien commencer avec markdown](https://blog.wax-o.com/2014/04/tutoriel-un-guide-pour-bien-commencer-avec-markdown/)

---

## Quel éditeur utiliser?

- Pour les minimalistes, le bloc-notes de Windows peut amplement suffire.
- Plusieurs éditeurs de code permettent d'utiliser Markdown plus aisément:
    - Atom
    - Visual Studio Code
    - Remarkable
    - RStudio

---

## Atom

[Atom](https://atom.io/): Éditeur de texte pour le 21e siècle!

![Capture d'écran d'Atom](atom-markdown.png)

---

## Visual Studio

[Visual Studio Code](https://code.visualstudio.com) est un éditeur libre, moderne et tres performant développé par la communauté et Microsoft.

![Capture d'écran de Visual Studio](0_9_0_openpreviewside.png)

Je recommande Visual Studio Code. Il est disponible sur tous les environnements de bureau et existe aussi en version portable afin de contourner les restrictions d'entreprise.

---

## Remarkable

Remarkable est un éditeur simple et convivial pour la syntaxe Markdown

[Remarkable sur GitHub](https://github.com/jamiemcg/remarkable)

![Capture d'écran de Remarkable](remarkable.png)

---

## RStudio

RStudio est d'abord un environnement de développement intégré (IDE) pour le langage statistique R, mais il est aussi un excellent éditeur markdown. Il supporte aussi sa propre syntaxe RMarkdown pour la production de rapports statistiques et de documents interactifs.

![](rmdint-template.png)

[RStudio RMarkdown](http://rmarkdown.rstudio.com/)

# Bootstrap

Bootstrap est un module qui permet d'utiliser des consignes de formatages faciles à interpréter par le navigateur. Il utilise le CSS (Cascading Style Sheet) pour créer des thèmes personnalisés et interchangeables. Créer un thème bootstrap requiert une connaissance du HTML et du CSS, mais les utiliser est plutôt simple.

---

## Bootswatch

[Bootswatch](https://bootswatch.com/) est un ite web qui propose des thèmes gratuits pour Bootstrap.

![Capture du site web bootswatch.com démontrant 6 thèmes](bootswatch.png)

# Pandoc

Pandoc est un outil et une librairie écrit en Haskell qui permet de convertir des documents entre plusieurs formats ouverts.

Il y a aussi une librairie très utilisée par plusieurs autres logiciels. Si votre éditeur permet d'exporter votre travail dans une multitude de formats, c'est probablement du à Pandoc.

Pandoc est multi-plateformes, mais certaines fonctionnalités peuvent être limitées. Par exemple, il faut avoir Microsoft Word ou LibreOffice pour produire des DOCX.

---

## Installation

### Windows

Cette configuration permet l'utilisation portable depuis une clé USB ou un disque réseau sans avoir les droits administrateur. C'est ce que j'utilise au bureau.

- Installer le fichier `pandoc-2.0.3-windows.zip` depuis [cette page](https://github.com/jgm/pandoc/releases/tag/2.0.3)
- Installer MikTeX Portable au besoin (pour faire des PDF) depuis [cette page](https://miktex.org/download)

### MacOS

Installer depuis homebrew:

```bash
brew install pandoc
```

Sinon:

- Installer le fichier `pandoc-2.0.3-macOS.pkg` depuis [cette page](https://github.com/jgm/pandoc/releases/tag/2.0.3)
- Installer BasicTeX avec le fichier `BasicTeX.pkg` depuis [cette page](http://www.tug.org/mactex/morepackages.html)

### Linux

- Debian, Ubuntu, ...
```bash
sudo apt-get install pandoc texlive-base
```

- RedHat, ... (ils n'ont pas TeX Live dans les dépots): Télécharger manuellement en suivant les instructions [ici](http://www.tug.org/texlive/acquire-netinstall.html)

---

## Pandoc: Formats d'entrée

Les formats d'entrée incluent:

- markdown
- DocBook
- LaTeX
- OpenDocument
- Epub
- ...

---
## Pandoc: Formats de sortie

Les formats de sortie incliuent:

- HTML
- OpenDocument
- EPub
- DocBook
- LaTeX
- PDF
- markdown
- MediaWiki
- DokuWiki


---

## Pandoc Markdown

Le Pandoc Markdown est un des formats d'entrée les plus vertatiles. Il s'agit d'une variante de Markdown supportant plusieurs fonctionnalités additionnelles.

Référence: [Anthoring Pandoc Markdown](http://rmarkdown.rstudio.com/authoring_pandoc_markdown.html)

---

## Pandoc Markdown: Blocs de lignes

Les **blocs** de lignes permettent de séparer le texte manuellement. Par exemple, pour les adresses:

**Code:**

```markdown
| Centre de loisirs St-Louis-de-France
|
| 1560 Route De L’Église
| Québec, G1W 3P5
```

**Résultat:**

| Centre de loisirs St-Louis-de-France
|
| 1560 Route De L’Église
| Québec, G1W 3P5


---

## Pandoc Markdown: Tables simples

Il faut spécifier l'extension `+simple_tables`

**Code:**

```markdown
Droite    Gauche   Centre    Defaut
 -----    -----     ----     ------
     12   12        12          12
    123   123       123        123

Table:  Demonstration de la syntaxe des tables simples.
```

**Résultat:**

Droite    Gauche   Centre    Defaut
 -----    -----     ----     ------
     12   12        12          12
    123   123       123        123

Table:  Demonstration de la syntaxe des tables simples.

---

## Pandoc Markdown: métadonnées

Les métadonnées permettent d'identifier le titre, l'auteur et la date dans l'entête du document. On utilise l'extension `+pandoc_title_block`

**Code:**
```markdown
---
title: "Le document 2.0"
author: "François Pelletier"
date: "7 décembre 2017"
---
```

---

## Pandoc Markdown: mathématiques

Pandoc permet de traiter les équations mathématiques saisies avec la syntaxe LaTeX à l'aide de différents outils tout dépendamment du format de document en sortie.

Les principaux outils utilisés sont MathML et AMS \LaTeX

---

## Pandoc Markdown: mathématiques

On saisis les contenus mathématiques entre signes `$` ou `$$` pour les expressions multilignes.

**Code:**

```markdown
$$
{\begin{aligned}/home/francois/nextCloud/LinuQ/20171025_pandoc/20171025_formats_ouverts
&\gamma _{ij}(x,t) \\ 
=&\sum _{k=1}^{N}\sigma _{ik}(x,t)\sigma _{jk}(x,t)
\end{aligned}}
$$
```

**Résultat:**

$$
{\begin{aligned}
&\gamma _{ij}(x,t) \\ 
=&\sum _{k=1}^{N}\sigma _{ik}(x,t)\sigma _{jk}(x,t)
\end{aligned}}
$$

---

## Produire des présentations facilement

Un exemple: cette présentation a été écrite avec le langage Markdown et exportée en PDF et en HTML avec Pandoc.

```bash
#!/bin/bash
pandoc -f markdown+simple_tables+pandoc_title_block \
  -t html document2_0.md -o document2_0.html --template template.html \
  --css template.css --mathjax --toc --toc-depth 2

pandoc -f markdown+simple_tables+pandoc_title_block \
  -t slidy document2_0.md -o document2_0_slidy.html \
  --css template.css --mathjax --toc --toc-depth 3
```

---

## Publier sur un wiki ou un site web

Il est aussi possible d'exporter le contenu d'un document vers la syntaxe dokuwiki, ce qui peut être très utile !

```bash
pandoc -f markdown+simple_tables+pandoc_title_block \
 -t dokuwiki -s presentation.md -o presentation.dokuwiki
```

## Références

- Source des templates Bootstrap CSS et HTML: [tonyblundell/pandoc-bootstrap-template](https://github.com/tonyblundell/pandoc-bootstrap-template)
- Guide [Pandoc Markdown](http://rmarkdown.rstudio.com/authoring_pandoc_markdown.html)
- Beaucoup de [StackOverflow](https://stackoverflow.com/) !!!
- [Logo Desjardins](https://www.desjardins.com/a-propos/desjardins/marque/logos/index.jsp)