Skip to content
This repository has been archived by the owner on Nov 6, 2018. It is now read-only.

PDF-Optimisation #16

Open
Karduin opened this issue Oct 18, 2018 · 40 comments
Open

PDF-Optimisation #16

Karduin opened this issue Oct 18, 2018 · 40 comments

Comments

@Karduin
Copy link
Collaborator

Karduin commented Oct 18, 2018

Cellules de codes :

  • Lignes trop longues
    Que ce soit sur le code ou sur le résultat après une évaluation de la cellule.
    • La génération du pdf via Jupyter coupe la ligne
    • En Latex on récupère bien sur l’intégralité de la ligne mais en générant le pdf il y a le même problème.

Exemples :

Bien sur c'est un fonctionnement logique puisque c'est du code mais comme tu l'as souligné peut-être une extension Jupyter pour ça.

@parmentelat
Copy link
Owner

ok c'est très utile

  • c'est très gérable au niveau des entrées, je bricole ma moulinette dans ce sens
  • au niveau des sorties par contre, c'est beaucoup plus délicat; en général il me semble que ce n'est pas très grave s'il manque un morceau des sorties trop longues. Est-ce que je me trompe, as-tu un exemple où ce n'est pas le cas ?

@Karduin
Copy link
Collaborator Author

Karduin commented Oct 18, 2018

Justification des tableaux :

  • La justification à droite des tableaux n’est pas prise en compte.
    Dans les fichiers tex, il faut changer la justification.
\begin{longtable}[]{@{}lr@{}}

Exemple :

Bon c'est clairement pas pénalisant.

@Karduin
Copy link
Collaborator Author

Karduin commented Oct 18, 2018

url sans lien :

Parfois le code latex pour les url n'est pas généré.
du coup il faut le faire dans le fichier tex.

Exemple :

  • w3-s1-c1-fichier
    url

@Karduin
Copy link
Collaborator Author

Karduin commented Oct 18, 2018

ok c'est très utile

* c'est très gérable au niveau des entrées, je bricole ma moulinette dans ce sens

* au niveau des sorties  par contre, c'est beaucoup plus délicat; en général il me semble que ce n'est pas très grave s'il manque un morceau des sorties trop longues. Est-ce que je me trompe, as-tu un exemple où ce n'est pas le cas ?

Dans cet exemple tu verra les 3 points déjà signalés. w3-s1-c1.pdf
Si pour une ligne de commentaire ce n'est pas bien grave, pour une ligne de code ou un résultat d’évaluation de la cellule c'est plus embêtant.

@Karduin
Copy link
Collaborator Author

Karduin commented Oct 18, 2018

Sauts de ligne :

Toujours dans cet exemple,(voir le même pdf)
dans le notebook on à :

La méthode flush

Les entrées-sorties sur fichier sont bien souvent bufferisées par le système
d’exploitation. Cela signifie qu’un appel à write ne provoque pas forcément une écriture immédi-
ate, car pour des raisons de performance on attend d’avoir suffisamment de matière avant d’écrire
sur le disque.

Il y a des cas où ce comportement peut s’avérer gênant, et où on a besoin d’écrire immédiate-
ment (et donc de vider le buffer), et c’est le propos de la méthode flush.

alors qu'avec le pdf on obtient :

La méthode flush Les entrées-sorties sur fichier sont bien souvent bufferisées par le système
d’exploitation. Cela signifie qu’un appel à write ne provoque pas forcément une écriture immédi-
ate, car pour des raisons de performance on attend d’avoir suffisamment de matière avant d’écrire
sur le disque.
Il y a des cas où ce comportement peut s’avérer gênant, et où on a besoin d’écrire immédiate-
ment (et donc de vider le buffer), et c’est le propos de la méthode flush.

Bon c'est plus de l’esthétique qu'autre chose mais ça facilite la lecture.

@Karduin
Copy link
Collaborator Author

Karduin commented Oct 18, 2018

Caractères spéciaux ou Math :
Dans l'entête du fichier tex il doit manquer les packages correspondant à ces caractères.
Du coup ces caractères sont soit absent soit remplacé par un code UTF8.
Exemple :

  • w2-s1-c1-accents
    • le pi en gras fonctionne pas.

@Karduin
Copy link
Collaborator Author

Karduin commented Oct 18, 2018

Tout ça concerne ce que tu as appelé l’étape 2, il y en a encore. Bien sur ce ne sont que des exemples, on retrouve ces problèmes à différents endroits du document.
Pour l'étape 1, je vais faire un petit résumé de ce qu'il faudrait faire pour automatiser le plus possible.

@Karduin
Copy link
Collaborator Author

Karduin commented Oct 19, 2018

Étape 1

Le fichier master python.tex construit à partir d'un notebook ne doit contenir que :

L’entête LaTeX

  • Les packages utilisés langues, math, formatage, etc.

    Ce que j’ai modifié ou ajouté:

	\documentclass[11pt]{article} changé pour \documentclass[11pt, a4paper, french]{book}

	Ajout : \usepackage[frenchb]{babel} 
	        \usepackage[Lenny]{fncychap} (style des chapitres)
  • Les commandes de mises en couleur du code.

  • La première de couverture.

La commande \title et \maketitle est mise en commentaire et remplacé par ce qui est entre les balise \begin{titlepage}… \end{titlepage}

  • La liste des fichiers découpés en chapitres.

    Ne pas numéroter la table des matières

Juste apres le \endtitle{page} ajout de 

\pagestyle{empty}
\addtocontents{toc}{\protect\thispagestyle{empty}}
\tableofcontents
\thispagestyle{empty}

puis :

\chapter{Introduction au MOOC et aux outils Python} (titre de chapitre)
\pagestyle{plain} (reprendre la numerotation)
\setcounter{page}{1} (reprendre la numerotation)
\include{w1-s1-c1-versions-python} (inclure les fichiers tex)
...

Les notebooks

Enregistrés en LaTeX ou via nbconvert

Les cellules doivent avoir été exécutés sauf :

  • Les cellules destinées aux étudiants.
  • Les cellules PythonTutor qui pointent vers une page html et donc ne passe pas dans LaTeX.
  • Les exercices bien que si on avait les exemples on pourrait travailler offline.

Enregistrer via les notenooks on contrôle bien les cellules à exécuter.
Avec nbconvert option execute je ne vois pas de solution simple pour contrôler les cellules à exclurent. De plus quand une cellule attend une entrée utilisateur, ça bloque toute les cellules suivantes.

Il faut ensuite supprimer toute l'entête de ces fichiers de la première ligne à
{Licence CC BY-NC-ND} {Thierry Parmentelat \& Arnaud Legout} {} inclus. (cette dernière info est sur la couverture)
Il faut aussi supprimer ces deux dernières lignes

    % Add a bibliography block to the postdoc   
    \end{document}

Pour que la table des matières soit à jour il faut compiler deux fois.

Publications à la semaine deux options,

  • on scinde le fichier complet auquel cas il n'y a pas de TOC pour les publications à la semaine.
  • on recompile semaine par semaine avec une TOC qui ne concerne que la semaine

Publication de S1 à Sx pas de problème particulier.

Ouf, j’espère ne rien avoir oublié ! Et bravo si tu as tout lu ;-)

@parmentelat
Copy link
Owner

Oui j'ai tout lu, je pense que j'ai compris en gros;

Quelques améliorations que j'envisage à court terme:

  • en admettant que les .tex sont OK, j'aimerais avoir pour commencer un outil qui me permette de dire:
    je veux la semaine 5, ou bien je veux les semaines de 1 à 4, ou de 2 à 6.
    et ne rien avoir à éditer à la main parce que c'est trop casse-pieds.

Bien sûr les détails de l'entête de Python.tex vont rester en dur dans un .tex, on ne va générer que la partie contenu of course.

La seule valeur ajoutée ici finalement c'est de scanner le contenu du directory qui contient les .tex et de ne retenir que ceux qui ont le bon pattern, ajouter le sucre avec les chapter et autres table des matières - ou pas d'ailleurs.

  • ensuite ce qu'on pourrait essayer à titre un peu expérimental, ce serait d'automatiser le passage ipynb -> latex

Ce qui me paraît le plus délicat c'est le choix des cellules à évaluer ou pas; Il se trouve que dans mon labo on a le même problème pour publier; on voudrait bien commencer à publier sous forme de notebook, mais au moment de générer le pdf on a exactement le même souci. Et on s'est dit qu'on pourrait utiliser les metadata des cellules pour marquer celles qu'on veut ou pas rendre ou évaluer dans le .tex; et aussi comme tu le dis, de gérer les appels à input() qui bloquent; sur ce point précis j'ai trouvé:

w1/w1-s4-c3-fibonacci-prompt.ipynb:    "entier = int(input(\"Entrer un entier \"))"
w1/w1-s6-c1-calculette.ipynb:    "reponse = input(\"quel est votre âge ? \")"
w2/w2-s2-c3-la-fonction-input.ipynb:    "nom_ville = input(\"Entrez le nom de la ville : \")\n",
w2/w2-s2-c3-la-fonction-input.ipynb:    ">>> input(\"nombre de lignes ? \") + 3\n",
w2/w2-s2-c3-la-fonction-input.ipynb:    "int(input(\"Nombre de lignes ? \")) + 3"

Sur ce sujet-là je vais réfléchir un peu plus et voir s'il y a déjà d'autres gens qui sont partis sur une voie analogue; genre quels tags on met dans les metadata pour indiquer ce qu'on veut faire, car si quelqu'un a déjà commencé à outiller ça (ça m'étonnerait que non, reste à les trouver :) il est important de choisir quelque chose de cohérent.

@parmentelat
Copy link
Owner

J'ai gribouillé un script pour ne plus avoir à modifier Python.tex
Le script s'appelle contenu.py et il génère contenu.tex qui est inclus par Python.tex

voir le howto.md, que j'ai remis à jour sommairement

j'en ai profité pour numéroter les chapitres en fonction de la semaine; c'est à dire que la semaine 4 par exemple est toujours publiée dans le chapitre 4 quelle que soit la sélection de semaines qu'on a faite

@parmentelat
Copy link
Owner

Je n'ai pour l'instant rien trouvé du tout concernant le passage de ipynb à latex, à propos de la façon de tagger dans les metadata la façon de gérer les différentes cellules; un sujet qui a besoin de mûrir un peu je pense avant qu'on puisse coder...

@Karduin
Copy link
Collaborator Author

Karduin commented Oct 22, 2018

De mon coté j'ai trouvé comment gérer les interlignes de paragraphes.
En rapport avec Saut de ligne plus haut.

Il suffit de rajouter dans le fichier master : \setlength{\parskip}{1em}. Je vais le modifier en conséquence. Ça implique qu'il faut que je reprenne tous les fichiers tex déjà fait pour supprimer les line break que j'avais ajouter.

De même, quand tu met un titre de niveau 4 dans un notebook (####) le passage au latex ne tient aucun compte de l'interligne. On peux remplacer niveau 4 par bold qui me parait équivalent du point de vu de la police. Du coup grâce à la commande précédente, le problème d'interligne est complétement résolu.

Si tu ne vois pas de quoi je parle, je mettrai un exemple.

@Karduin
Copy link
Collaborator Author

Karduin commented Oct 22, 2018

Il n'y a pas un système pour checker les problèmes résolus ?

J'ai aussi chercher des infos ipynb => LaTeX, je pense avoir trouvé des choses intéressantes mais ça dépasse un peu mon niveau pour le moment. Je mettrai des liens pour avoir ton avis.

@parmentelat
Copy link
Owner

parmentelat commented Oct 22, 2018 via email

@Karduin
Copy link
Collaborator Author

Karduin commented Oct 23, 2018

OK je me doute que tu as beaucoup de travail ! Je fais ça aussi sur du temps libre et ce n'est pas simple d'en trouver.
Du coup je suis moins assidu sur le cours de python, mais ce n'est pas grave je me rattraperai après.
Ce travail est formateur et forcement réutilisable.

je ne suis pas sûr que c’est de ça que tu parles, mais en principe on crée une ‘Issue’ par problème et on ferme l’Issue quand le problème est réglé.

Oui c'est bien ce que je voulais dire.

Comme je reprend les .tex pour supprimer les line break inutiles je vais en profité pour corrigé une bêtise de ma part en renommant le dossier medias => media (comme dans l'original) et les liens vers les images

@Karduin
Copy link
Collaborator Author

Karduin commented Oct 23, 2018

URL non prise en compte lors de la conversion vers LaTeX.

Solution :

Dans le notebook si l'url est juste entrée brut comme ça :

Ici encore, la méthode recommandée est de partir de la page https://www.python.org/download
et d'utiliser le programme d'installation.

ça passe dans le notebook, mais pour LaTeX et pdf il faut faire :

Ici encore, la méthode recommandée est de partir de la page
[https://www.python.org/download](https://www.python.org/download)
et d'utiliser le programme d'installation.

@Karduin
Copy link
Collaborator Author

Karduin commented Oct 23, 2018

Justification des tableaux.

Solution :
Dans le notebook la table se présente comme ci-dessous, mais curieusement à l'affichage c'est justifié à droite.

| Quoi            | Avec quel outil              |
|:----------------|:-----------------------------|
| fichier complet | `python3 <fichier>.py`       |
| ligne à ligne   | `python3` en mode interactif |
|     &nbsp;      | ou sous `ipython3`           |
|     &nbsp;      | ou avec IDLE                 |
| par fragments   | dans un notebook             |

Pour LaTeX et pdf mettre les deux points de l'autre coté si tu veux conserver la justification à droite.

| Quoi            | Avec quel outil              |
|----------------:|-----------------------------:|
| fichier complet | `python3 <fichier>.py`       |
| ligne à ligne   | `python3` en mode interactif |
|     &nbsp;      | ou sous `ipython3`           |
|     &nbsp;      | ou avec IDLE                 |
| par fragments   | dans un notebook             |

@Karduin
Copy link
Collaborator Author

Karduin commented Oct 24, 2018

Bon j'ai trouvé une solution pour les section profondeur 4.

Dans le master je rajoute :

  • \usepackage{titlesec}
  • \titleformat{\subparagraph}
    {\normalfont\normalsize\bfseries}{\thesubparagraph}{1em}{}
    \titlespacing*{\subparagraph}{\parindent}{3.25ex plus 1ex minus .2ex}{.75ex plus .1ex}

Il n'y a rien à toucher côté notebook.


Pour résumer les les modifications qui résolvent les problèmes.

Côté LaTeX :

  • Lines Break, Pour les paragraphes \setlength{\parskip}{1em}
  • Lines Break pour le section > profondeur 3.
\titleformat{\subparagraph}
{\normalfont\normalsize\bfseries}{\thesubparagraph}{1em}{}
\titlespacing*{\subparagraph}{\parindent}{3.25ex plus 1ex minus .2ex}{.75ex plus .1ex}

Côté Notebook :

  • URL changer
 Ici encore, la méthode recommandée est de partir de la page https://www.python.org/download
et d'utiliser le programme d'installation.

Par la syntaxe [texte](link)

Ici encore, la méthode recommandée est de partir de la page
[https://www.python.org/download](https://www.python.org/download)
et d'utiliser le programme d'installation.
  • Justification Tableaux
    Changer les : de côté.

  • Longueurs des lignes de codes
    Tu as déjà traité le problème.

  • Les listes
    Tu as déjà résolu le problème

  • Certains caractères spéciaux
    Je n'ai pas encore de solution

@Karduin
Copy link
Collaborator Author

Karduin commented Oct 24, 2018

Compte tenu de ce qui précède, je vais refaire tout les .tex afin qu'ils soit en phase avec les modifications du fichier master.

Je pense que je modifierai aussi les notebooks en local pour les liens et les tables à moins que ta moulinette magique puisse faire ça sans soucis ;-)

@parmentelat
Copy link
Owner

La moulinette a pas mal évolué récemment; regarde un peu nbcustomexec.py dans le repo du cours dans le sous-dir tools

J'ai inventé quelques tags, qui m'ont permis d'instrumenter les notebooks du cours pour que l'évaluation des notebooks fasse ce qu'on veut de manière automatique

de manière générale je pense qu'on devrait chercher à atteindre le stade où les .tex n'ont plus de valeur du tout, c'est à dire qu'ils seraient automatiquement produits;

typiquement si des passages ne vont pas bien, il faut changer le notebook, et/ou adapter nos diverses moulinettes; jusqu'à ce que le passage notebook -> pdf soit complètement lisse.

je sais qu'on en n'est pas encore là, mais ce serait la tendance.

dans ce contexte, si tu modifies des notebooks en local, ça m'intéresserait que tu me postes un PR sur le repo du cours que je puisse intégrer tes changements upstream

je ne sais pas si c'est clair, n'hésite pas si certains trucs sont flous pour toi.

@parmentelat
Copy link
Owner

je viens de pousser dans une branche 'automatic' tous les .tex que j'ai obtenus 100% automatiquement

bien sûr il reste plein de glitches mais ça me semble intéressant de pouvoir faire un diff avec les .tex manuels; je n'ai pas encore eu le temps de regarder ces diffs en détail par contre...

@parmentelat
Copy link
Owner

parmentelat commented Oct 25, 2018

Le premier truc qui saute aux yeux c'est une histoire de saut de ligne (en latex \\) qui ont été rajoutés à la main, j'ai l'impression ?

ça correspond à quoi exactement ce trait-là ?

@Karduin
Copy link
Collaborator Author

Karduin commented Oct 25, 2018

Le premier truc qui saute aux yeux c'est une histoire de saut de ligne (en latex \\) qui ont été rajoutés à la main, j'ai l'impression ?

Avant de contourner le problème, j'ajoutai manuellement un double \ pour aérer l’affichage afin qu'il soit identique au notebook.
Maintenant ce n'est plus nécessaire, il suffit de rajouter dans le fichier python.tex \setlength{\parskip}{1em}, ce que j'ai fais en local mais je n'est pas encore commit la modification.
De même pour les titre de niveau > 3 je rajoute ça dans python.tex.

\titleformat{\subparagraph}
{\normalfont\normalsize\bfseries}{\thesubparagraph}{1em}{}
\titlespacing*{\subparagraph}{\parindent}{3.25ex plus 1ex minus .2ex}{.75ex plus .1ex}

Du coup on n'a plus à ce préoccuper des line break
Je vais juste commit le python.tex pour que tu puisses voir.

Edit: c'est une des raisons qui m'oblige à refaire tous les .tex

@Karduin
Copy link
Collaborator Author

Karduin commented Oct 25, 2018

Un petit point avec une checklist histoire de voir ou on en est.
LaTeX

  • Line break paragraphe et sous-titre => OK géré dans python.tex
  • Dossier medias => à changer en media pour être en phase avec les notebook et ne pas avoir à changer l'url

Notebooks

  • Listes => OK interlignes dans les notebooks
  • Cellules de code tros longues => OK moulinette Thierry
  • URL => syntaxe à modifier dans les notbooks
  • Table => à modifier dans les notebooks, justification à droite

Autre

  • Évaluation des cellules ipynb to pdf => partiel, en cours
  • Quelques caractères qui ne passent pas, code UTF8 au lieu du caractère => ???
  • Supprimer l'en-tête et le pied de page des .tex => à faire via une moulinette

de manière générale je pense qu'on devrait chercher à atteindre le stade où les .tex n'ont plus de valeur du tout, c'est à dire qu'ils seraient automatiquement produits;

Tout à fait d'accord.

dans ce contexte, si tu modifies des notebooks en local, ça m'intéresserait que tu me postes un PR sur le repo du cours que je puisse intégrer tes changements upstream

je ne sais pas si c'est clair, n'hésite pas si certains trucs sont flous pour toi.

C'est très clair ;-).

Ce que j'ai commencé à faire :

  • Modifier les notebooks URL et tables
  • Refaire tous les .tex line break, url, tables, listes sont maintenant gérés automatiquement, et pointage vers le bon dossier media.

Je crois que les deux seuls points qui restent à traiter, sont :

  • l'évaluation des cellules
  • les codes UTF8 qui ne passent pas

Première question, je continue comme ça ? (modif notebook + tex à refaire)
Deuxième question, je ne pense que nous soyons prêt pour la S7. Je prépare les publications comme avant ?

@parmentelat
Copy link
Owner

  • en ce qui concerne l'évaluation des cellules, je pense être plus ou moins OK avec les tags que j'ai mis dans les notebooks et en utilisant nbcustomexec

  • le découpage des .tex pour enlever l'entête et le footer, c'est pris en charge par mon striplatex.py

  • j'ai commencé à voir ce qu'on pouvait faire pour les codes UTF8 qui ne passent pas; le premier sur lequel je suis tombé ce sont les 2 variantes de PI qui sont dans w1-s5-c1-noms-de-variables, et pour l'instant je ne suis pas arrivé à grand-chose; j'ai essayé de remplacer le code à la volée dans le code source, mais ce n'est pas probant car la seule chose que je peux mettre à la place du PI illégal, c'est un PI légal, et du coup ça ruine complètement le point qu'on cherche à illustrer.

une autre approche dans ce cas précis serait de ne pas mettre les deux cellules en question du tout:

screen shot 2018-10-25 at 22 13 51

dans ce cas précis ça pourrait aller; je n'ai pas encore de système de metadata pour faire ça (faire disparaitre une cellule complètement à l'évaluation) mais ça ne doit pas être dur.
Mais ce qui me soucie c'est que ça risque de ne pas être la bonne réponse pour les autres cas

est-ce que de mémoire c'est quelque chose qui arrive souvent ? tu aurais d'autres exemples significatifs à me signaler de cas de caractères ésotériques ?


Pour la suite immédiate:

  • je commencerais si c'était moi par la semaine 7 (tu as raison qu'on ne sera pas prêts). Ce serait intéressant que tu partes de ce qui est dans la branche automatic - c'est ce qui est produit par les divers outils dans leur état actuel.

  • en parallèle tu peux me faire les PR qui visent à rectifier les notebooks (url et tables si je comprends bien), comme ça on pourra remouliner le tout pour voir le chemin qui reste à faire.

Il faudrait dans l'idéal que tu passes le moins de temps possible à rectifier manuellement des .tex :)

Tu travailles sur quel OS ? je peux te donner les recettes pour assembler les différents morceaux:

  • d'abord nbcustomexec pour passer d'un notebook vierge à un notebook évalué
  • ensuite nbconvert --to latex pour créer un .tex
  • ensuite striplatex pour extraire ce qui nous intéresse
  • enfin contenu.py pour générer contenu.tex qui est inclus dans Python.tex

@parmentelat
Copy link
Owner

PS. oui il reste une truc bizzare avec les images externes; tu m'en dire un peu plus ?

Je fournis un media/ dans flotpython, tu as fait aussi un medias/ en dessous de python_2018, c'est quoi la logique ? il manquait des trucs chez moi ? ce serait bien de tout merger dans un seul endroit

PS2. je n'ai pas abandonné l'idée du déménagement de repos, mais vu comme ça tourne je préfère repousser à une date ultérieure où ce sujet sera moins actif

@parmentelat
Copy link
Owner

Je pousse sur 'automatic' quelques retouches qui sont le résultat de changements dans les notebooks

Notamment pour les équations, j'utilisais un simple $ pour créer dans le markdown une zone d'équation, avec un double dollar $$ ça marche aussi bien dans le notebook et ça sort bien en latex aussi, donc ya ka !

@Karduin
Copy link
Collaborator Author

Karduin commented Oct 26, 2018

OK je vais passer la S7 en priorité et les notebooks (url et tabes).

  • UTF8 je pense qu'il faut essayer de régler ça en trouvant un package LaTeX qui va bien. Ce n'est pas très fréquent, peut-être 4 ou 5 fois dans tout le document.
  • OS Indifféremment sur Windows ou Linux suivant mes besoins.
  • Images, c'est une ânerie de ma part l'année dernière j'avais créé le dossier medias ce qui est complétement idiot puisque ça m'oblige à réécrire les url qui pointent sur les images. Donc il faut renommer le dossier medias en media (je n'ai pas vu comment faire ça dans github) et comme ça il n'y aura rien à retoucher dans les tex.

Je ne crois pas avoir accès à la branche automatic si elle est sur flotpython.

@parmentelat
Copy link
Owner

la branche automatic est sur le repo 'moocpython'; elle contient tous les .tex générés par les diverses moulinettes
cela dit elle n'est pas 100% à jour, si ça ne te fait rien d'attendre un peu je peux lisser encore un peu les outils (il y reste un petit souci avec nbcustomexec) et relancer tout le bousin sur tous les notebooks, je peux faire ça ce weekend et même peut-être aujourd'hui

@parmentelat
Copy link
Owner

ok pour medias/media, ce que je fais dans l'immediat chez moi c'est juste un symlink media vers medias, on règlera ça plus tard

@parmentelat
Copy link
Owner

J'ai mis à jour la branche automatic comme convenu

Dans l'enthousiasme je suis aussi passé en 10pt au lieu de 11pt, c'est indépendant du reste, j'essaie juste de diminuer l'encombrement de l'ensemble.

Lorsqu'on lance pdflatex sur tout le cours, il reste 3 glitches liés à de l'unicode (pi et divers degrés celsius et autres)

il me semble qu'on y est presque :)

@Karduin
Copy link
Collaborator Author

Karduin commented Oct 26, 2018

Super.

j'ai une idée qui pourrai fonctionner.

Par exemple pour pi en gras, plutôt que de mettre une cellule de code on peut mettre du code LaTeX :

$\boldsymbol{\Pi}$ le boldsymbol est explicite et la majuscule su Pi affiche pi en majuscule. J'ai testé dans latex ça marche, dans un notebook je récupère bien pi mais le code bold n'a pas l'air de fonctionner. Mais c'est peut-être moi qui fait un faute de syntaxe. (J'ai pas creusé encore)
Pour les autres glitches qui pour moi son tous liés à des symboles, dans le même esprit on peut utliser par exemple $\textdegreeC$

Qu'en pense tu ?

@parmentelat
Copy link
Owner

Comme maintenant je peux accéder à presque tout ce qui se passe entre le notebook et le latex, j'ai bidouillé la sortie pour mettre les cellules de code en évidence.

C'est un work in progress parce qu'il me faut là encore retoucher un peu les notebooks, mais pour l'instant j'ai ceci:

Python.pdf

@parmentelat
Copy link
Owner

Pour les symboles: je propose qu'on utilise xelatex plutôt que pdflatex

Tout est pareil, sauf que par défaut xelatex cause le utf-8; cela rend obsolète tous les packages liés aux encodages comme inputenc et fontenc

En théorie ça devrait régler le souci; en pratique, c'est OK pour le - mais pas le ni les deux variantes de pi qui restent; mais enfin c'est quand même un peu plus lisse avec cette version-là de latex

Du coup à ce stade il ne me reste comme glitches de symboles que les deux formes de pi, justement.
Mon souci est que si je les remplace trop tôt (lors de l'évaluation du notebook) par la forme latex qui va bien, eh bien dans ce cas le latex se retrouve verbatim dans la sortie. il faut donc que je le fasse plus tard, par exemple dans striplatex;

je pense que je vais faire ça, c'est très hacky mais je fatique un peu sur le sujet :)

@Karduin
Copy link
Collaborator Author

Karduin commented Oct 27, 2018

Bien, au point ou tu en es, est-ce vraiment utile que je fasse la s7 et s1 to s7 et la suite ?
Du coup tu maitrise tout le process ce n'est peut-être pas utile que je continu.
Je vais juste voir pour les url et les tables et c'est bon.
A la limite modifier à la main les Pi et °F le temps de contourner le problème
Qu'en penses tu ?.

@parmentelat
Copy link
Owner

parmentelat commented Oct 27, 2018 via email

@Karduin
Copy link
Collaborator Author

Karduin commented Oct 27, 2018

Effectivement tu perds des enrichissements je vais faire un test rapide pour voir si c'est ça et notamment la deuxième ligne :

\titleformat{\subparagraph}
{\normalfont\normalsize\bfseries}{\thesubparagraph}{1em}{} 
\titlespacing*{\subparagraph}{\parindent}{3.25ex plus 1ex minus .2ex}{.75ex plus .1ex}

qui pose problème.

Pour la numérotation je triche plus ou moins. En fait je génère un pdf complet (toutes les semaines) et ensuite je le découpe avec acrobat de telle page à telle page. Cela m'a semblé le plus simple pour conserver la numérotation.

ps: pour les out qui font + de 80 caractères, il n'y a pas un format dans print() qui pourrai faire le job si on le paramètre dans la cellule de code précédente ?

@parmentelat
Copy link
Owner

bon j'ai du revenir en arrière sur certains réglages que j'avais faits pour gérer correctement le degré celsius; ma sortie ressemble de nouveau à la tienne; et pour l'instant je dis tant pis pour les quelques caractères qui ne passent pas bien à la sortie...

ne reste plus que ces histoires de tables et d'url donc :)

pour la semaine 6 je vais publier tes sorties, je pense en effet que la sortie automatic pour la semaine 7 sera essentiellement OK :)

je ne sais pas si/comment tu comptes poursuivre
dans tous les cas merci pour tout !
je ne pense pas que j'aurais eu le courage de me lancer là-dedans sans avoir tes sorties comme référence :)

@parmentelat
Copy link
Owner

J'ai fait une première passe rapide sur les URL en dur - je veux dire sans les
ça va se trouver dans le tag automatic-pdf-v03 de flotpython une fois que j'aurai vérifié que je n'ai rien cassé par ailleurs

@Karduin
Copy link
Collaborator Author

Karduin commented Oct 28, 2018

Bonjour Thierry,

je ne sais pas si/comment tu comptes poursuivre

En tous cas, pour le pdf je ne suis pas persuadé que qu'il y ai un intérêt à ce que je poursuive maintenant que le process est à 99% fonctionnel.
Si tu as besoin que je fasse quelque chose, n’hésite pas à me le dire.

dans tous les cas merci pour tout !

Pas de problème, c'était intéressant et instructif, même si il y avait des moments fastidieux.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants