Commit bc9056d4 authored by sauret's avatar sauret

mise à jour pour atelier part2

parent b2ef053e
......@@ -23,8 +23,7 @@ _pause déjeuner_
3. Outils ([parcours/03_outils](./parcours/03_outils.md))
- Installation des outils
- prise en main de git
- prise en main de pandoc
- Prise en main de git ([parcours/03b_git](./parcours/03b_git.md))
_pause_
......@@ -36,8 +35,12 @@ _pause_
## Samedi 19 janvier
5. Customisation
- LATEX
Objectifs de la journée : produire un ouvrage en HTML, Pdf (LaTeX) et Epub, à partir d'une édition Markdown.
5. Initialisation de l'ouvrage ([parcours/05_livre](./parcours/05_livre.md))
6. Production du HTML ([parcours/06_livreHTML](./parcours/06_livreHTML.md))
7. Production du PDF ([parcours/07_livreLatex](./parcours/07_livreLatex.md))
8. Production de l'Epub ([parcours/08_livreEpub](./parcours/08_livreEpub.md))
---
......
......@@ -27,6 +27,7 @@ Quelques utilisations possibles :
- vous souhaitez récupérer le contenu d'un document Word (.docx) et poursuivre son édition en Markdown :
pandoc -f docx -t markdown --extract-media=./ --atx-headers fichier.docx -o fichier.md
- vous souhaitez convertir en HTML un document en Markdown comprenant des références bibliographiques (references.bib) :
pandoc --standalone --ascii --bibliography=references.bib -f markdown -t html fichier.md -o fichier.html
......
# Initialisation de l'ouvrage
Nous allons préparer vos sources pour une édition en Markdown.
Dans votre répertoire de travail, créer un sous-dossier `ouvrage` et déplacez y votre.vos fichier.s source.s.
En ligne de commande :
mkdir ouvrage
cd ouvrage
cp /chemin/sources/monfichier.docx ./
Selon votre format d'entrée (docx, odt, html, autre ?), lancer la commande Pandoc pour convertir votre document en Markdown, en remplaçant `docx` par votre format :
pandoc -f docx -t markdown --extract-media=./ --atx-headers monfichier.docx -o monfichier.md
Vous pouvez maintenant :
1. éditer votre contenu en Markdown
2. produire une bibliographie structurée en bibtex
3. préparer les métadonnées génériques dans un fichier séparé (`monfichier.yaml`)
# Production du HTML
L'édition du livre est terminée. Nous allons pouvoir procéder aux premières conversions.
Il est probable qu'une fois les conversions effectuées, il soit nécessaire de revenir à l'édition Markdown pour améliorer les exports. C'est pour cela qu'un export HTML nous est utile pour contrôler que le corps de texte du document soit correctement édité.
Vous pouvez dans un premier temps lancer un export html (si vous avez une bibliographie, ajoutez l'option `--bibliography=references.bib`) :
pandoc --standalone --ascii -f markdown -t html monfichier.md monfichier.yaml -o monfichier.html
Pour une lecture plus agréable, vous pouvez ajouter le fichier [pandoc.css](/ressources/pandoc.css) :
pandoc --standalone --ascii --css="ressources/pandoc.css" -f markdown -t html monfichier.md monfichier.yaml -o monfichier.html
Vous pouvez maintenant :
- contrôler que les différentes parties et éléments du texte soient correctement édité,
- éventuellement corriger les sources
- relancer la commande précédente pour finaliser la sortie HTML.
## Pour aller plus loin
L'édition web d'un ouvrage peut constituer un site web en tant que tel. Pour aller plus loin, un exercice consiste à diviser le html précédemment produit en plusieurs pages HTML qui constitueront ensemble un site web complet.
Pour cela, il peut être utile d'utiliser un template css préexistant (voir [W3.css](https://www.w3schools.com/w3css/default.asp) ou [Bootstrap](https://www.w3schools.com/bootstrap/bootstrap_templates.asp)), et de le décliner pour produire une navigation entre chapitre.
Pour faciliter la production du site, on peut par exemple :
- adapter le template choisi comme un template Pandoc, de manière à produire automatiquement les différentes pages du site à partir des chapitres,
- autre méthode : décliner à la main la structure du site, et y intégrer les contenus HTML produits avec une commande Pandoc sans l'option `--standalone`.
# Production de l'Epub
3 solutions:
- se baser sur le md : pandoc md to epub
- on déclare la granularité avec option.
- se baser sur le tex : pandoc tex to epub
- se baser sur les htmls : pandoc md.s to html.s to epub
- Edition Epub sur Calibre (Ebook Editor)
%début head
%% définit le type de document (ici "book"), la taille de la police par défaut ainsi que la langue.
%% openany : Par défaut, Latex place un début de chapitre en page impaire dans la classe book. L'option openany force l'ouverture du chapitre dans la page disponible suivant le chapitre précédent.
\documentclass[10pt,french,openany]{book} %10pt ou 12? à tester
%% définit l'encodage du texte
\usepackage[utf8]{inputenc}
%\usepackage[letter,frame,center]{crop} % ajoute les lignes de coupe pour l'imprimeur dans un papier de taille letter.
\usepackage[french]{babel} % on déclare la langue dans le paquet "babel", on peut d'ailleurs déclarer plusieurs langues.
\usepackage[paperheight=17.463cm,paperwidth=10.795cm,top=2.2cm,bottom=1.8cm,inner=1.5cm,outer=1.5cm]{geometry} % geometry permet de définir une taille de page et les marges. Ici, nous avons la taille des livres de poche.
\usepackage{afterpage}
\usepackage{xltxtra}
% \setmainfont{Jannon10Pro} % On peut définir une police. Elle doit être OpenType.
\usepackage[all]{nowidow} % pour éviter les veuves
% Ici on commence à déclarer le layout
\usepackage{fancyhdr} % paquet pour gérer les en-têtes et les pieds de pages
\pagestyle{fancy}
\lhead{} % leftHead est vide
\chead{\small\textit{[L'espace numérique]}} % On ajouter ici (centerHead) le titre du livre et auteur
%% remarque, la gestion de la taille fonctionne ainsi en LaTeX :
%% - \normalsize est la taille par défaut
%% - \small est petit
%% - \footnotesize plus petit
%% - \scriptsize : etc.
%% - \tiny
%% - \large : gros
%% - \Large : plus gros
%% - \LARGE : etc..
%% - \huge
%% - \Huge
\rhead{} % rightHead est vide
\fancyhead[RO,LE]{\small\thepage} % ici on déclare où se trouve le numéro de page avec la syntaxe suivante RO: rightOdd, LE: leftEven.
\fancyhead[RE,LO]{} % ici pas de numéro de page pour les RE: rightEven, LO: leftOdd. On pourrait ajouter le nom de l'auteur ou autre chose
\lfoot{} % les footers (left, center et right)
\cfoot{}
\rfoot{}
\renewcommand{\headrulewidth}{0pt} % pour enlever le bord sous le header (par défaut avec le package fancy)
\usepackage{etoolbox}
\patchcmd{\chapter}{\thispagestyle{plain}}{\thispagestyle{empty}}{}{} % pour enlever le numéro de page dans les pages de début chapitre
% Gestion de l'overfull hbox :
%
% \pretolerance: essaye de faire la ligne SANS syllaber
% \tolerance: essaye de faire la ligne AVEC syllabation
% \emergencystretch : décide combien il peut s'éloigne de l'approche de caractère par défaut.
% il faut avoir le paramètre de pretolerance plus bas que celui de tolerance
% ex:
% \pretolerance=150
% \tolerance=9000
%
% Solution suggérée (selon le format de papier proposé ici) : mettre dans le préambule la tolerance à 9999 et l'emergencystretch à 3em
\pretolerance=150
\tolerance=9999
\setlength{\emergencystretch}{3em}
\newcommand{\fr}{\selectlanguage{french}} % ici on invente une nouvelle fonction (macro) qu'on pourra lancer plus tard dans le document pour sélectionner la langue. On pourra ainsi jongler plus facilement avec un document multilingue.
% éléments de base pour les fonctions mathématiques. Vous pouvez les enlever.
\usepackage{amssymb,amsmath}
\usepackage{ifxetex,ifluatex}
\usepackage{fixltx2e} % provides \textsubscript
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
% \usepackage[T1]{fontenc}
\else % if luatex or xelatex
\usepackage{unicode-math}
\defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase}
\fi
% use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
% use microtype if available
\IfFileExists{microtype.sty}{%
\usepackage[]{microtype}
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
\PassOptionsToPackage{hyphens}{url} % url is loaded by hyperref
\usepackage[unicode=true]{hyperref}
\hypersetup{
pdftitle={L'espace numérique},
pdfborder={0 0 0},
breaklinks=true}
\urlstyle{same} % don't use monospace font for urls
% Gestion des images
\usepackage{graphicx,grffile} % permet d'insérer les images
\makeatletter
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
\makeatother
% Scale images if necessary, so that they will not overflow the page
% margins by default, and it is still possible to overwrite the defaults
% using explicit options in \includegraphics[width, height, ...]{}
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
% on déclare que par défaut, l'indentation de début de paragraphe est "0". Sinon, il y aura une indentation par défaut.
\setlength{\parindent}{0pt}
% Espace entre les paragraphes
\setlength{\parskip}{0mm plus 0mm minus 0mm}
% set default figure placement to htbp
\makeatletter
\def\fps@figure{htbp}
\makeatother
% On déclare quelques métadonnées du livre
\title{L'espace numérique} % titre du livre
\providecommand{\subtitle}[1]{} % ici on crée une commande \subtitle (si elle n'existe pas) qui aura un ([1]) argument qui sera déclaré (ligne suivante) dans des accolades.
\subtitle{Sous-titre} % s'il y a un sous-titre
\author{Éric Méchoulan, Marcello Vitali-Rosati}
\date{}
% si on utilise des fonts TeX (MetaFont) et non OpenType, ces deux commandes définissent ce qu'on utilise comme famille de fonts et la font elle-même
%
% \renewcommand{\familydefault}{\rmdefault}
% \renewcommand*\rmdefault{bch} % ici on déclare une font parmis : cmr, lmr, pbk, bch, pnc, ppl, ptm
% Ici on déclare comment se comporte une page blanche
\def\blankpage{%
\clearpage%
\thispagestyle{empty}%
\addtocounter{page}{0}%
\null%
\clearpage}
% Ici commence enfin le document
%% \begin commence un environnement qui doit se termine par \end
\begin{document}
\thispagestyle{empty} % dans cette page, pas de footer et header
\begin{center} % début d'un environnement "centre" pour mettre au centre tout ce qui suit.
\vspace*{1cm} % espace vertical d'un cm. "*" précise de le faire même s'il n'y a rien avant.
% \maketite % Cette balise imprime toutes les métadonnées (titre, auteur, etc.) avec le style par défaut.
% Ici, on a préféré customiser notre affichage
\Huge L'espace numérique\\ % ici les "\\" sont un saut de ligne
% \vspace*{0.5cm}\huge Sous-titre \\ % enlever le commentaire pour ajouter un sous-titre
\vspace*{1cm} \LARGE Éric Méchoulan\\Marcello Vitali-Rosati
\\
\vspace*{\fill}
\includegraphics[width=20mm]{media/logo.png}\\
\end{center}
% Nouvelle page, avec un style de page encore vide
\newpage \thispagestyle{empty}
% \fill va pousser le contenu en bas de page
\vspace*{\fill}
\footnotesize\vspace*{5cm}
Sens public Juin 2018 - Montréal\\
\vspace*{1cm}
Ce livre a été publié sous forme de dossier dans Sens public. L'espace numérique, 17-05-2018/18-06-2018 \url{http://sens-public.org/article1319.html}
\vspace*{1cm}
ISBN:\\ 978-2-924925-00-3 (imprimé)\\
978-2-924925-02-7 (epub)\\
978-2-924925-01-0 (pdf)\\
\small
\begin{flushright}
\includegraphics[width=5mm]{media/crochets.png}
\end{flushright}
\begin{center}\footnotesize
Creative Commons Attribution-ShareAlike 4.0 International\\(CC BY-SA 4.0)
\end{center}
% Nouvelle page
\newpage
\vspace*{2cm}
\emph{} %dédicace
\thispagestyle{empty}
\fr
% Nouvelle page blanche
\blankpage
% Nouvelle page avec la table des matières
\tableofcontents
% Nouvelle page
\newpage \thispagestyle{empty}
% Ici on ajoute le reste du livre.
%
%
%
%
% Fin du livre
\end{document}
/*
* source: https://gist.github.com/killercup/5917178
*/
html {
font-size: 100%;
overflow-y: scroll;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
body {
color: #444;
font-family: Georgia, Palatino, 'Palatino Linotype', Times, 'Times New Roman', serif;
font-size: 12px;
line-height: 1.7;
padding: 1em;
margin: auto;
max-width: 42em;
background: #fefefe;
}
a {
color: #0645ad;
text-decoration: none;
}
a:visited {
color: #0b0080;
}
a:hover {
color: #06e;
}
a:active {
color: #faa700;
}
a:focus {
outline: thin dotted;
}
*::-moz-selection {
background: rgba(255, 255, 0, 0.3);
color: #000;
}
*::selection {
background: rgba(255, 255, 0, 0.3);
color: #000;
}
a::-moz-selection {
background: rgba(255, 255, 0, 0.3);
color: #0645ad;
}
a::selection {
background: rgba(255, 255, 0, 0.3);
color: #0645ad;
}
p {
margin: 1em 0;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
color: #111;
line-height: 125%;
margin-top: 2em;
font-weight: normal;
}
h4, h5, h6 {
font-weight: bold;
}
h1 {
font-size: 2.5em;
}
h2 {
font-size: 2em;
}
h3 {
font-size: 1.5em;
}
h4 {
font-size: 1.2em;
}
h5 {
font-size: 1em;
}
h6 {
font-size: 0.9em;
}
blockquote {
color: #666666;
margin: 0;
padding-left: 3em;
border-left: 0.5em #EEE solid;
}
hr {
display: block;
height: 2px;
border: 0;
border-top: 1px solid #aaa;
border-bottom: 1px solid #eee;
margin: 1em 0;
padding: 0;
}
pre, code, kbd, samp {
color: #000;
font-family: monospace, monospace;
_font-family: 'courier new', monospace;
font-size: 0.98em;
}
pre {
white-space: pre;
white-space: pre-wrap;
word-wrap: break-word;
}
b, strong {
font-weight: bold;
}
dfn {
font-style: italic;
}
ins {
background: #ff9;
color: #000;
text-decoration: none;
}
mark {
background: #ff0;
color: #000;
font-style: italic;
font-weight: bold;
}
sub, sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
ul, ol {
margin: 1em 0;
padding: 0 0 0 2em;
}
li p:last-child {
margin-bottom: 0;
}
ul ul, ol ol {
margin: .3em 0;
}
dl {
margin-bottom: 1em;
}
dt {
font-weight: bold;
margin-bottom: .8em;
}
dd {
margin: 0 0 .8em 2em;
}
dd:last-child {
margin-bottom: 0;
}
img {
border: 0;
-ms-interpolation-mode: bicubic;
vertical-align: middle;
}
figure {
display: block;
text-align: center;
margin: 1em 0;
}
figure img {
border: none;
margin: 0 auto;
}
figcaption {
font-size: 0.8em;
font-style: italic;
margin: 0 0 .8em;
}
table {
margin-bottom: 2em;
border-bottom: 1px solid #ddd;
border-right: 1px solid #ddd;
border-spacing: 0;
border-collapse: collapse;
}
table th {
padding: .2em 1em;
background-color: #eee;
border-top: 1px solid #ddd;
border-left: 1px solid #ddd;
}
table td {
padding: .2em 1em;
border-top: 1px solid #ddd;
border-left: 1px solid #ddd;
vertical-align: top;
}
.author {
font-size: 1.2em;
text-align: center;
}
@media only screen and (min-width: 480px) {
body {
font-size: 14px;
}
}
@media only screen and (min-width: 768px) {
body {
font-size: 16px;
}
}
@media print {
* {
background: transparent !important;
color: black !important;
filter: none !important;
-ms-filter: none !important;
}
body {
font-size: 12pt;
max-width: 100%;
}
a, a:visited {
text-decoration: underline;
}
hr {
height: 1px;
border: 0;
border-bottom: 1px solid black;
}
a[href]:after {
content: " (" attr(href) ")";
}
abbr[title]:after {
content: " (" attr(title) ")";
}
.ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after {
content: "";
}
pre, blockquote {
border: 1px solid #999;
padding-right: 1em;
page-break-inside: avoid;
}
tr, img {
page-break-inside: avoid;
}
img {
max-width: 100% !important;
}
@page :left {
margin: 15mm 20mm 15mm 10mm;
}
@page :right {
margin: 15mm 10mm 15mm 20mm;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3 {
page-break-after: avoid;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment