Compare commits
1 Commits
Author | SHA1 | Date |
---|---|---|
iGor milhit | 1d49fe91d9 |
|
@ -2,3 +2,4 @@ example.html
|
||||||
example.pdf
|
example.pdf
|
||||||
test.*
|
test.*
|
||||||
release/
|
release/
|
||||||
|
watched-files.txt
|
||||||
|
|
|
@ -90,13 +90,16 @@ Pour générer directement le PDF, en utilisant `pagedjs` au moyen de `pandoc`
|
||||||
pandoc --citeproc \
|
pandoc --citeproc \
|
||||||
--to=pdf --pdf-engine=pagedjs-cli \
|
--to=pdf --pdf-engine=pagedjs-cli \
|
||||||
--css=../style.css \
|
--css=../style.css \
|
||||||
|
--template=../template.html \
|
||||||
--toc --toc-depth=2 \
|
--toc --toc-depth=2 \
|
||||||
|
-V noscript=true
|
||||||
--output=example.pdf example.md
|
--output=example.pdf example.md
|
||||||
```
|
```
|
||||||
|
|
||||||
- `--pdf-engine=` impose `pagedjs` pour la conversion en PDF.
|
- `--pdf-engine=` impose `pagedjs` pour la conversion en PDF.
|
||||||
- Ici le `template` ne doit pas être utilisé, mais la feuille de style doit
|
- `-V noscript=true` permet d'indiquer que la feuille de style de l'interface
|
||||||
l'être.
|
web de `pagedjs` et les scripts javascript utile dans le navigateur web ne
|
||||||
|
soient pas utilisés, car ils perturbent la conversion par `pandoc`.
|
||||||
|
|
||||||
Pour générer le PDF en utilisant directement `pagedjs` :
|
Pour générer le PDF en utilisant directement `pagedjs` :
|
||||||
|
|
||||||
|
|
|
@ -31,10 +31,11 @@ Au terme de cet atelier, vous serez en mesure de :
|
||||||
|
|
||||||
|
|
||||||
:::{#licence}
|
:::{#licence}
|
||||||
![Logo de la licence CC BY-SA 4.0](../static/by-sa.svg) \
|
![Logo de la licence CC BY-SA 4.0][logo] \
|
||||||
[CC BY-SA 4.0][cc-by-sa] --- [Sources][sources]
|
[CC BY-SA 4.0][cc-by-sa] --- [Sources][sources]
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
[logo]: ../static/by-sa.svg
|
||||||
[cc-by-sa]: https://creativecommons.org/licenses/by-sa/4.0/deed.fr "Texte de la licence en français"
|
[cc-by-sa]: https://creativecommons.org/licenses/by-sa/4.0/deed.fr "Texte de la licence en français"
|
||||||
[sources]: https://git.milhit.ch/igor/bunige-pagedjs-template
|
[sources]: https://git.milhit.ch/igor/bunige-pagedjs-template
|
||||||
|
|
||||||
|
@ -123,16 +124,20 @@ par exemple un livre.</p>
|
||||||
|
|
||||||
## Police
|
## Police
|
||||||
|
|
||||||
Pour que la police *TheSans* puisse s'appliquer correctement, elle doit être
|
Bien que la police *TheSans* face partie de la charte de l'UNIGE et de la
|
||||||
installée sur votre système d'exploitation. Malheureusement, elle n'est pas
|
Bibliothèque de l'Université, je trouve qu'elle n'est pas des plus lisible,
|
||||||
publiée avec une licence libre, ce qui en réduit l'usage. Les polices de
|
notamment sur les titres. De plus, la licence de cette police, sauf erreur,
|
||||||
remplacement sont dans l'ordre *Open Sans*, *Arial*, *Helvetica*, ou la police
|
n'est pas libre, ce qui en limite l'usage. C'est pourquoi je préfère spécifier
|
||||||
|
ici les polices *Noto Sans*, *Open Sans*, *Arial*, *Helvetica*, ou la police
|
||||||
*sans-serif* par défaut de votre système ou de votre navigateur.
|
*sans-serif* par défaut de votre système ou de votre navigateur.
|
||||||
|
|
||||||
La police peut être facilement configurable au moyen du sélecteur `body` dans
|
La police peut être facilement configurable au moyen du sélecteur `body` dans
|
||||||
le fichier `style.css` (règle déjà existante, dans la section *Définitions
|
le fichier `style.css` (règle déjà existante, dans la section *Définitions
|
||||||
globales*).
|
globales*).
|
||||||
|
|
||||||
|
Pour les éléments verbatim (`pre`, `code`), la police est *Lilex*, *Courier
|
||||||
|
New*, *Courier*, *monospace*.
|
||||||
|
|
||||||
## Titres
|
## Titres
|
||||||
|
|
||||||
Il y a une particularité avec les titres, qui découlent de l'usage de
|
Il y a une particularité avec les titres, qui découlent de l'usage de
|
||||||
|
@ -149,6 +154,23 @@ Ainsi, un sélecteur unique est disponible pour appliquer un saut de page à ce
|
||||||
titre, quel que soit son texte. Une logique similaire est appliquée au titre de
|
titre, quel que soit son texte. Une logique similaire est appliquée au titre de
|
||||||
la bibliographie (`bibliography`).
|
la bibliographie (`bibliography`).
|
||||||
|
|
||||||
|
De la même façon, une ou plusieurs classes peuvent être attribuées :
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
## Titre {.class}
|
||||||
|
```
|
||||||
|
|
||||||
|
Ainsi, on peut ajouter la classe `.newpage` qui insert un saut de page avant le
|
||||||
|
titre en question.
|
||||||
|
|
||||||
|
La même chose peut être faite avec des `<div>`, par exemple :
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
:::{.class}{#id}
|
||||||
|
Du texte.
|
||||||
|
:::
|
||||||
|
```
|
||||||
|
|
||||||
## Citation
|
## Citation
|
||||||
|
|
||||||
> Tout d’abord un bon éditeur est un éditeur avec coloration syntaxique. Avec
|
> Tout d’abord un bon éditeur est un éditeur avec coloration syntaxique. Avec
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,117 @@
|
||||||
|
// Reload-in-place v2.0
|
||||||
|
// Nicolas Taffin + Sameh Chafik - 2020
|
||||||
|
// MIT License https://opensource.org/licenses/MIT
|
||||||
|
// A simple script to add your pagedjs project. On reload, it will make the web browser scroll to the place it was before reload.
|
||||||
|
// Useful when styling or proof correcting your book. Multi docs compatible and doesn't wait for complete compilation to go.
|
||||||
|
|
||||||
|
|
||||||
|
console.log("reload in place");
|
||||||
|
|
||||||
|
|
||||||
|
// separate human / machine scroll
|
||||||
|
var machineScroll = false;
|
||||||
|
|
||||||
|
// check pagedJS ended compilation
|
||||||
|
var pagedjsEnd = false;
|
||||||
|
|
||||||
|
class pagedjsEnded extends Paged.Handler {
|
||||||
|
constructor(chunker, polisher, caller) {
|
||||||
|
super(chunker, polisher, caller);
|
||||||
|
}
|
||||||
|
afterRendered(pages) {
|
||||||
|
pagedjsEnd = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Paged.registerHandlers(pagedjsEnded);
|
||||||
|
|
||||||
|
// set a "unique" filename based on title element, in case several books are opened
|
||||||
|
var fileTitle = document.getElementsByTagName("title")[0].text;
|
||||||
|
|
||||||
|
function getDocHeight() {
|
||||||
|
var D = document;
|
||||||
|
return Math.max(
|
||||||
|
D.body.scrollHeight, D.documentElement.scrollHeight,
|
||||||
|
D.body.offsetHeight, D.documentElement.offsetHeight,
|
||||||
|
D.body.clientHeight, D.documentElement.clientHeight
|
||||||
|
)
|
||||||
|
}
|
||||||
|
function saveAmountScrolled(){
|
||||||
|
var scrollArray = [];
|
||||||
|
var scrollTop = window.pageYOffset || (document.documentElement || document.body.parentNode || document.body).scrollTop
|
||||||
|
if (!machineScroll) {
|
||||||
|
var scrollLeft = window.pageXOffset || (document.documentElement || document.body.parentNode || document.body).scrollLeft
|
||||||
|
scrollArray.push({ X: Math.round(scrollLeft), Y: Math.round(scrollTop) });
|
||||||
|
console.log("Saved ", scrollArray);
|
||||||
|
localStorage[fileTitle] = JSON.stringify(scrollArray);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// on Load, blur or opacify the page, and try to join ASAP
|
||||||
|
// last saved position, or at least last compiled page
|
||||||
|
|
||||||
|
|
||||||
|
window.onload = moveFast;
|
||||||
|
|
||||||
|
function moveFast() {
|
||||||
|
machineScroll= true;
|
||||||
|
var styleEl = document.createElement('style');
|
||||||
|
document.head.appendChild(styleEl);
|
||||||
|
var styleSheet = styleEl.sheet;
|
||||||
|
styleSheet.insertRule('.pagedjs_pages { filter: blur(10px); }', 0);
|
||||||
|
//styleSheet.insertRule('.pagedjs_pages { opacity: 0.1; }', 0);
|
||||||
|
var savedData = localStorage.getItem(fileTitle);
|
||||||
|
if (savedData) {
|
||||||
|
var scrollArray = JSON.parse(savedData);
|
||||||
|
var scrollTop = scrollArray[0].Y;
|
||||||
|
var scrollLeft = scrollArray[0].X;
|
||||||
|
} else {
|
||||||
|
var scrollTop = 0;
|
||||||
|
var scrollLeft = 0;
|
||||||
|
}
|
||||||
|
var winheight= window.innerHeight || (document.documentElement || document.body).clientHeight
|
||||||
|
window.currentInterval = setInterval(function(){
|
||||||
|
var docheight = getDocHeight();
|
||||||
|
|
||||||
|
if ( scrollTop > 0 && scrollTop > docheight - winheight && !pagedjsEnd) {
|
||||||
|
window.scrollTo(scrollLeft,docheight);
|
||||||
|
} else {
|
||||||
|
window.scrollTo(scrollLeft,scrollTop);
|
||||||
|
clearInterval(window.currentInterval);
|
||||||
|
setTimeout(function(){
|
||||||
|
window.scrollTo(scrollLeft,scrollTop);
|
||||||
|
machineScroll = false;
|
||||||
|
styleSheet.deleteRule(0);
|
||||||
|
}, 500); // Delay to start
|
||||||
|
}
|
||||||
|
}, 50); // refresh frequency
|
||||||
|
};
|
||||||
|
|
||||||
|
// slow down a bit save position pace
|
||||||
|
|
||||||
|
var slowSave = debounce(function() {
|
||||||
|
if(!machineScroll) {
|
||||||
|
saveAmountScrolled();
|
||||||
|
}
|
||||||
|
}, 100); // save frequency
|
||||||
|
|
||||||
|
function debounce(func, wait, immediate) {
|
||||||
|
var timeout;
|
||||||
|
return function() {
|
||||||
|
var context = this, args = arguments;
|
||||||
|
var later = function() {
|
||||||
|
timeout = null;
|
||||||
|
if (!immediate) func.apply(context, args);
|
||||||
|
};
|
||||||
|
var callNow = immediate && !timeout;
|
||||||
|
clearTimeout(timeout);
|
||||||
|
timeout = setTimeout(later, wait);
|
||||||
|
if (callNow) func.apply(context, args);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// Scroll triggers save, but not immediately on load
|
||||||
|
|
||||||
|
setTimeout(function(){
|
||||||
|
window.addEventListener('scroll', slowSave);
|
||||||
|
}, 1000); // wait a bit before starting position save
|
||||||
|
|
24
style.css
24
style.css
|
@ -28,7 +28,7 @@
|
||||||
* bibliothèque de l'UNIGE. */
|
* bibliothèque de l'UNIGE. */
|
||||||
@top-right {
|
@top-right {
|
||||||
content: "";
|
content: "";
|
||||||
background-image: url("./static/bibliotheque-logo.svg");
|
background-image: url("static/bibliotheque-logo.svg");
|
||||||
background-position: right;
|
background-position: right;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-size: 25%;
|
background-size: 25%;
|
||||||
|
@ -56,7 +56,8 @@
|
||||||
* ************************ */
|
* ************************ */
|
||||||
|
|
||||||
body {
|
body {
|
||||||
font-family: "TheSansOsF", "Open Sans", Arial, Helvetica, sans-serif;
|
font-family: "Noto Sans", "Open Sans",
|
||||||
|
Arial, Helvetica, sans-serif;
|
||||||
/* Définit les trois variables de compteur nécessaires */
|
/* Définit les trois variables de compteur nécessaires */
|
||||||
counter-reset: figureNumber toc tableNumber;
|
counter-reset: figureNumber toc tableNumber;
|
||||||
}
|
}
|
||||||
|
@ -132,6 +133,7 @@
|
||||||
* dans la source markdown. */
|
* dans la source markdown. */
|
||||||
#first-section,
|
#first-section,
|
||||||
#bibliography,
|
#bibliography,
|
||||||
|
.newpage,
|
||||||
.footnotes {
|
.footnotes {
|
||||||
break-before: page;
|
break-before: page;
|
||||||
}
|
}
|
||||||
|
@ -158,8 +160,9 @@
|
||||||
padding: none;
|
padding: none;
|
||||||
}
|
}
|
||||||
code {
|
code {
|
||||||
font-family:'Courier New', Courier, monospace;
|
font-family: 'Lilex Nerd Font', 'Courier New', Courier, monospace;
|
||||||
font-size: 90%;
|
font-size: 90%;
|
||||||
|
line-height: 1.4;
|
||||||
background-color: #f2f1f1;
|
background-color: #f2f1f1;
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
|
@ -173,6 +176,12 @@
|
||||||
}
|
}
|
||||||
.footnote-ref {
|
.footnote-ref {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
padding-left: 2px;
|
||||||
|
}
|
||||||
|
.footnote-back {
|
||||||
|
font-size: small;
|
||||||
|
text-decoration: none;
|
||||||
|
padding-left: .5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
figure {
|
figure {
|
||||||
|
@ -198,6 +207,15 @@
|
||||||
content: "Figure " counter(figureNumber) " : ";
|
content: "Figure " counter(figureNumber) " : ";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.exercise {
|
||||||
|
background-color: #f2f1f1;
|
||||||
|
width: 90%;
|
||||||
|
margin: 0 auto;
|
||||||
|
border: 2px solid #d80669;
|
||||||
|
border-radius: .5em;
|
||||||
|
padding: 0 .5em;
|
||||||
|
}
|
||||||
|
|
||||||
blockquote {
|
blockquote {
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,15 +26,21 @@ $endif$
|
||||||
$for(css)$
|
$for(css)$
|
||||||
<link rel="stylesheet" href="$css$" />
|
<link rel="stylesheet" href="$css$" />
|
||||||
$endfor$
|
$endfor$
|
||||||
|
<!-- Allow to use -V noscript=true with pandoc
|
||||||
|
in order to avoid to insert these lines
|
||||||
|
when they are unnecessary. -->
|
||||||
|
$if(noscript)$
|
||||||
|
$else$
|
||||||
<link href="/interface.css" rel="stylesheet" type="text/css" />
|
<link href="/interface.css" rel="stylesheet" type="text/css" />
|
||||||
<script src="https://unpkg.com/pagedjs/dist/paged.polyfill.js"></script>
|
<script src="/paged.polyfill.js"></script>
|
||||||
|
<script src="/reload-in-place.js"></script>
|
||||||
|
$endif$
|
||||||
$for(header-includes)$
|
$for(header-includes)$
|
||||||
$header-includes$
|
$header-includes$
|
||||||
$endfor$
|
$endfor$
|
||||||
$if(math)$
|
$if(math)$
|
||||||
$math$
|
$math$
|
||||||
$endif$
|
$endif$
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
$for(include-before)$
|
$for(include-before)$
|
||||||
|
|
Loading…
Reference in New Issue