parmentelat / moocpython

16 stars 7 forks source link

sous-projet pdf_du_cours/from_latex #9

Open Karduin opened 6 years ago

Karduin commented 6 years ago

J'ouvre cette issue avec une copie du read me. Aprés avoir generé le pdf du cours avec Sphinx à partir des imports en .rst, et puisque dans ce cas, Sphinx utilise LaTeX, Je tente une nouvelle approche en utilisant directement LaTeX et les imports du cours en .tex.

Je precise qu'avant ce cours je n'utilisai ni l'un ni l'autre, du coup il y aura certainenemnt des maladresses.

Pourquoi ?

Sphinx

Comment ?

Ca commence à faire long. Je vais faire un how to pour expliquer la demarche.

parmentelat commented 6 years ago

Merci d'avoir exposé le pdf directement dans le repo.

Ce qui me serait le plus utile à ce stade, ce serait

Je n'avais pas réellement conscience d'en avoir écrit autant que ça en fait ;)

Merci en tous cas à tous les deux !

parmentelat commented 6 years ago

en fait j'avais eu un peu du mal à suivre les diverses mutations depuis corriges2rst jusque dans les recoins de pdf_du_cours - que j'avais hativement pris pour juste un moyen d'exposer le résultat

je précise donc que le readme dont veut parler @Karduin c'est celui-ci: https://github.com/parmentelat/moocpython/blob/master/pdf_du_cours/from_latex/read_me.md

aussi je change le nom de l'issue pour refléter qu'on s'intéresse à pdf_du_cours

parmentelat commented 6 years ago

mais alors maintenant du coup je suis un peu perdu entre les différentes versions de Python3.pdf qui sont sous git; a quoi correspond celle qui est dans corriges2rst, si ce repo s'intéresse seulement aux corrigés (d'après son nom) mais que le pdf contient aussi les notebooks ?

c'est pas forcément très grave, j'essaie juste de suivre :)

jgorene commented 6 years ago

Salut à vous,

Oui en effet à ce stade... pas évident de s'y retrouver mais ça vient un peu de moi en fait, dsl ;)

Je pensais m'en être expliqué sur l'issue du corriges2rst... mais bon à fortiori... ma démarche apporte plus de confusion qu'autre chose, ce n'est pas bien grave de toute façon c'est vrai !

Je vais donc supprimer du dossier corriges2rst le pdf "Python 3" de compilation et les 2 scripts concernés qui sont en fait des "intrus" dans ce dossier, c'est vrai... Ce sera en effet plus facile à suivre pour les visiteurs de passage; c'est important :)

Sinon @Karduin ta nouvelle approche pour générer le pdf du cours est une bonne idée car le langage rst, bien que je commence à m'y retrouver, ce n'est pas évident du tout, en tout cas au départ... A suivre alors, pas de souci...

Karduin commented 6 years ago

@parmentelat pas de problème j'ai prévu d'intégrer la totalité du cours. Dans le how to concernant latex que je vais rédiger, tu auras toutes les explications nécessaires pour générer ou modifier toi même ou ton équipe les futurs versions du cours. Sinon que pensez vous de la version issue directement de latex ?

Karduin commented 6 years ago

@parmentelat Thierry, j'ai rédigé le how to qui, j’espère, est suffisamment clair.
Tu peu voir le pdf en exemple et les fichiers utilisés dans l'archive mooc_pyton.7z

Je n'avais pas réellement conscience d'en avoir écrit autant que ça en fait ;)

Oui ça commence à faire des pages quand même... :-)

parmentelat commented 6 years ago

Pour répondre à ta question dans le howto:

Dans le github maitre, on trouve tous les notebooks au format ipynb; pour les transformer en latex plutot que de les prendre sur fun ce qui est fastidieux, il est préférable je pense de juste faire un nbconvert --to latex ou quelque chose dans ce genre

Karduin commented 6 years ago

J'avais oublié cette commande. Reste à voir comment gérer quelles cellules sont exécuter. Je me souviens que l'on peux dire dans la commande de tout exécuter mais peut on n'en exclure certaines ?

parmentelat commented 6 years ago

pour les pdf qui circulent, tu/vous avez fait comment par rapport à l'évaluation des cellules ? toutes les cellules évaluées, aucune évaluée, choix fait à la main ?

Karduin commented 6 years ago

Pour tous les notebooks exercices ou python tutor choix manuel.(il y en a relativement peu)
Pout tout les autres en automatique.
Il me semble qu'avec nbconvert il y a une option pour évaluer les cellules en même temps que la conversion.
Il faut voir si avec nbconvert on peu choisir lesquelles évaluer.

Karduin commented 6 years ago

j'ai fait quelques essais en ligne de commande avec nbconvert.
Pour les notebooks sans exercices ou python tutor, avec une ligne comme celle ci aucun problème. jupyter nbconvert --ExecutePreprocessor.kernel_name='python3' --to latex --execute w2-s3-c1-slices.ipynb
Pour les autres, on peu contourner le problème comme ça. Mais, si le fichier est bien généré, l'erreur s'affiche dans la cellule concernée.
jupyter nbconvert --ExecutePreprocessor.kernel_name='python3' --to latex --execute --allow-errors w3-s2-x1-comptage.ipynb
J'ai vu que l'on pouvait aussi faire une liste des fichiers à traiter

c.NbConvertApp.notebooks = ["notebook1.ipynb", "notebook2.ipynb"]  

L’idéal serait qu'avec --allow-errors on puisse lui dire de ne rien afficher. Sinon clairement, on peut via un script traiter tout les ipynb d'un seul coup. Reste à écrire un script pour modifier les fichiers latex comme expliqué dans le how to.
Je vais creuser encore un peu...

edit: J'ai trouvé un truc mais j'ai du mal à comprendre comment l'utiliser :

from nbconvert.preprocessors import CellExecutionError
try :
    out = ep.preprocess(nb, {'metadata': {'path': run_path}})
except CellExecutionError:
    out = None
    msg = 'Error executing the notebook "%s".\n\n' % notebook_filename
    msg += 'See notebook "%s" for the traceback.' % notebook_filename_out
    print(msg)
    raise
finally:
    with open(notebook_filename_out, mode='wt') as f:
        nbformat.write(nb, f)

Est ce qu'avec ça on pourrai générer le fichier sans que l'erreur s'affiche dans la cellule et si oui, comment je l'utilise ?

parmentelat commented 6 years ago

je n'ai pas la réponse sous la main..

mais c'est quoi exactement le problème ? est-ce que c'est que l'évaluation s'arrête lorsqu'on rencontre un problème ? ou bien qu'on veut cherche un moyen de sélectionner a priori les cellules à évaluer et pas les autres ?

aussi je ne me rends pas bien compte du problème spécifique que pose les cellules pythontutor spécifiquement, peux-tu être plus explicite là dessus aussi ?

merci en tous cas de tout ce temps passé là dessus; il ne faut pas que ça devienne trop lourd comme travail, souviens-toi qu'il s'agit d'un exercice :)

jgorene commented 6 years ago

J'ai bien essayé de survoler le howto mais j'avoue que j'ai du mal à y voir clair et donc désolé de ne pas apporter plus de retours; en tout cas pour le moment...

Sinon, bravo pour le travail fourni en effet :+1:

De mon côté, j'avoue avoir toujours la tête immergée dans les fichiers rst avec lesquels je commence à m'y retrouver pour la configuration de Sphinx (encore du boulot malgré tout)

Je vais essayer de suivre ça... Sinon, un des côtés très intéressant c'est l'accès aux "coulisses" de ce mooc... et voir le travail effectué déjà et entre autres choses ;) Bravo aussi :+1:

jgorene commented 6 years ago

J'ai procédé à quelques tests pris comme un exercice perso juste pour essayer de mieux voir de quoi il retourne ... tout en restant sur une compile pdf à partir des fichiers rst, pour ma part ;)

J'utilise nbconvert comme librairie en essayant de suivre ce doc pour convertir aussi bien en .tex (voir fichier joint flotpython-w1-tex.zip ) qu'en rst ou autres... à partir d'un script. Au final, hyper efficace avec quelques secondes par semaine... rien à dire ! Toujours impressionné par Python, bref !

Pas de pbs pour convertir sans exécuter donc mais pour l’exécution des notebooks toujours en essayant de suivre la doc, je rencontre une erreur assez claire (en apparence seulement;) que je n'arrive pas à solutionner pour le moment en tout cas... J'effectue l'opération à partir d'un script sur Spyder avec sans doute un pb d'environnement différent du dossier d'exécution contenant le module nbconvert par rapport au dossier des corrections, à voir ??

ModuleNotFoundErrorTraceback (most recent call last)
<ipython-input-1-ce7e6fb238d0> in <module>()
      1 # évaluez cette cellule pour charger l'exercice
----> 2 from corrections.regexp_pythonid import exo_pythonid

ModuleNotFoundError: No module named 'corrections'

Ceci étant dit une question quand même:

Pour finir comme le note Thierry... c'est vite beaucoup de temps passé quand on débute en tout cas... d'un autre côté, excellent apprentissage aussi ! A suivre...

parmentelat commented 6 years ago

je suis assez d'accord que les notebooks d'exercices n'ont pas besoin d'être évalués

cela étant dit le package de corrections est dans le repo flotpython dans le sous-répertoire modules

Karduin commented 6 years ago

Alors pour éviter tous ces problèmes de fichiers manquant, et comme le souligne Thierry, j'ai telecharger l’intégralité du flotpython. Pour les exercices, j’exécute quand même les cellules exemples. Les soucis restant :

C'est tout pour le moment

jgorene commented 6 years ago

J'ai fait pareil pour floppython; la chose intéressante étant de savoir utiliser (même en partie) nbconvert... au fait, quand même beauuucoup plus pratique que de le faire à la main (pour répondre à Thierry en passant ;)

Par contre, je n'arrive toujours à exécuter les notebooks:

Après 2 ou 3 essais, toujours le même message d'erreur cité précédemment ! Sans doute que cette action doit être exécutée avec une connexion serveur ou autre action que je ne maîtrise pas de toute façon; je vais donc laisser ça de côté car non prioritaire pour moi ;)

Pour revenir à la création du pdf par sphinx à partir de fichiers tex ou rst un des problèmes gênant il me semble (et entre autres) mais pas bloquant, c'est le niveau des titres qui ne suivent pas toujours la bonne "hiérarchie" pour les notebooks notamment; comme th l'avais d'ailleurs signalé Fangh dans le tuto initial mis à dispo pour Sphinx. De mon côté, je vais plutôt voir de ce côté là; comment essayer de corriger ça déjà sur les fichiers convertis si c'est possible bien sûr car peut être intéressant comme démarche "en pratique"... A suivre donc...

parmentelat commented 6 years ago

Pour évaluer les notebooks d'exercices - et quelques autres qui utilisent du code ad hoc au mooc - vous pouvez positionner la variable d'environnement PYTHONPATH pour désigner l'endroit où vous avez cloné le repo flotpython - plus précisément donc, son sous-répertoire modules/

je suis nul en windows, mais en macos ça donnerait, si vous avez cloné flotpython dans
/Users/jgorene/git/flotpython
alors

export PYTHONPATH=/Users/jgorene/git/flotpython/modules
jupyter nbconvert --execute ...

de cette façon les interpréteurs python lancés comme des descendants de mon bash vont hériter de cette variable, et ça leur permettra de trouver les modules dont on a besoin

jgorene commented 6 years ago

Merci beaucoup pour le retour :) Je viens de tester rapidement depuis Spyder, j'ai toujours le message d'erreur bloquant pour l'instant mais je vois mieux ce qu'il faut faire, c'est le plus important ! Je vais juste prendre le temps pour voir ça tranquillement... pour ne pas risquer de mettre le bazar sur ma machine en fonction des versions de python ou autres contraintes à prendre en compte en fonction de la configuration en place... Pas de souci, à suivre ;)

jgorene commented 6 years ago

@parmentelat Bon, je viens de tester dans le terminal sur un fichier... nickel :+1: Merci ;)

Karduin commented 6 years ago

J'ai uploder la nouvelle version.

jgorene commented 6 years ago

Finalement réalisé à partir de fichiers tex ?

Sinon, je relève un peu les mêmes soucis non bloquants par contre à la génération par Sphinx... sauf que tout les fichiers sont présents au final dans mon cas, complets... à vérifier aussi? Ça fait quand même un gros pavé;) Python3 - 1 a 9 - sansindex.pdf

Le doc finalisé joint à partir de fichiers rst au cas où... convertis à la volée avec nbconvert (un régal;) mais pas exécutés par contre; du coup les exemples n'apparaissent pas non plus; gênant ? à voir ?

Karduin commented 6 years ago

Oui tout en LATeX. (Pas si simple...) Bah je pense que comme tout document de ce type, la phase relecture est obligatoire. On obtient visiblement jamais un 100%. Il y a toujours des petites modifications à faire. Je ferai peut être ça au fil de l'eau.
Ce que je voulais c'est avoir une doc qui tient à peu prés la route, si d'autre peuvent en profiter tant mieux.

jgorene commented 6 years ago

Oui au fait, fichiers "non exécutés" parce-qu'après avoir testé via le terminal que ça fonctionnait bien sur un fichier, je rencontre encore quelques soucis genre:

~/anaconda3/lib/python3.6/site-packages/ipykernel/kernelbase.py in raw_input(self, prompt) 698 if not self._allow_stdin: 699 raise StdinNotImplementedError( --> 700 "raw_input was called, but this frontend does not support input requests." 701 ) 702 return self._input_request(str(prompt),

StdinNotImplementedError: raw_input was called, but this frontend does not support input requests.


Par contre aucune urgence de mon côté, je regarderais ça tranquillement plus tard ;)
Karduin commented 6 years ago

Oui sur celui c'est normal la cellule attend une entrée utilisateur qui n'arrive pas.
C'est une des raisons pour lesquelles je génère mes fichiers .tex à partir des notebooks en web (local ou fun mooc). C'est ch*** comme tout, je te l'accorde, mais pour l'instant je n'ai pas d'autre solution.

edit : J'ai rajouté un lien pour télécharger ta version dans le forum sur le post épinglé ;-)

jgorene commented 6 years ago

Oui, il me semblait voir d'où pouvait le pb... mai bon pas d'ugence ;) Merci pour le pdf au fait !

Sinon bravo pour le boulot avant déjà (tuto compris;)... qui plus est depuis la "démarche tex" !

Tout ça est assez nouveau pour moi aussi : python que je viens juste de découvrir (encore du boulot mais passionnant) le rst, latex et autres joyeusetés au travers de python et de Sphinx... ça fait beaucoup de choses en peu de temps !

Je vais donc le prendre tranquille et verrais un peu plus tard pour les fichiers tex ! A chacun son rythme :D

jgorene commented 6 years ago

@Karduin Oups ! Si tu pouvais plutôt mettre la version avec la table des matières à y être.. ce sera peut-être mieux. L'autre ex. était un test en fait... Merci :) Python3 - 1 a 9 avec index.pdf

Karduin commented 6 years ago

@jgorene c'est fait ;-) J'ai uploadé ma nouvelle version qui intègre tous les fichiers.
Ne reste plus que les petits soucis de mise en page (quelques listes, certains trucs mathématiques et lignes trop longue)

jgorene commented 6 years ago

Super, merci =) Pour les soucis un peu pareil et je me bagarre toujours avec les "niveaux" de titres... certes non bloquant mais à y être ! J'avance péniblement et je vais peut-être un peu laisser refroidir je pense, mais à suivre malgré tout ;)

jgorene commented 6 years ago

@Karduin Bon, j'en ai eu un peu marre de Sphinx et de la gestion des titres (entre autres)... pour le moment ;) Finalement, j'ai testé ta "recette" pour travailler à partir d'un fichier maître en latex... Super vraiment et merci à nouveau :+1: :+1:

Comme quoi, faut laisser un peu décanté parfois ;) J'ai donc testé "à la main" pour le moment sur TeXmaker en suivant les indications et ma foi, latex ce n'est pas si mal au final :D

En parlant de ça, bien que tu dois avoir ce qu'il faut je pense, j'ai fait un script "semi-automatique" pour convertir de .ipynb en rst, tex; on peut y ajouter toutes les extensions que permet nbconvert en fait. Je te le fais passer, le cas échéant

Du coup, je vais essayer d'automatiser une action en fonction de ta recette pour voir ce que ça donne... Ok, à suivre

Karduin commented 6 years ago

Oui, j'aime bien LaTeX, encore un peu difficile à appréhender,mais ça commence à venir...
C'est vraiment puissant !

J'ai mis mon fichier master.tex ici si cela intéresse quelqu'un.
@parmentelat Si cela t’intéresses, je rajoute tous les fichiers .tex des cours utilisés pour générer le pdf. Comme cela tu pourras les modifier à ta guise. @jgorene Je peux aussi les mettre sur mon propre dépôt si tu veux les télécharger et si cela n'est pas trop le sujet de ce dépôt. (ou par exemple les corrigés que j'ai refait en notebooks pour générer facilement du LaTeX)

jgorene commented 6 years ago

Puissant en effet, c'est le terme ! Pour le document maître je viens de voir mais j'avais fait le mien du coup et je commence aussi à m'y retrouver; au début je ne voyais que des pourcentages partout, mais ça va mieux ;)

Sinon si ça t'intéresse, j'ai trouvé 2 lignes de codes à ajouter pour un effet de style pas vilain du tout () :

jgorene commented 6 years ago

Salut @Karduin Puissant Latex c'est vrai mais... au minimum... sportif ! Disons qu'il faut être motivé genre nécessité oblige... pour pratiquer, bref;)

J'ai quand même essayé d'avancer pour résoudre certaines erreurs rencontrées...

Pour ne pas être trop long, juste 2 docs joints ... le pdf final (-3 fichiers) et le document maître tex...; Jai travaillé initialement sur une autre présentation mais j'ai remis ta page d'accueil ainsi que l'option "Lenny", les 2 passant très bien, pour que tu puisses t'y retrouver; j'espère !

En comparant les 2 docs "maître", on voit vite les apports sur le "preamble' initial qui permettent de régler certains pbs comme les caractères unicode non reconnus (entre autres) J'ai encore des erreurs restantes sur les 3 fichiers manquants avec 3 types d'erreurs seulement; pour l'instant je cale... (w2-s1-c1-accents.tex, w2-s6-x4-if-et-def.tex, w4-s2-x1-dispatch)

Par contre, juste un corrigé en test car j'essaie encore de les sortir à partir des fichiers txt que je convertis en tex à partir d'un script python cette fois ; encore un bout de code à régler et à trouver... justement pour délimiter les partie de "bloc code" que l'on retrouve sur les fichiers txt; manque pas grand chose mais pas gagné !

Sinon, pas la peine de remettre cette version en ligne c'est juste un document de travail qui j'espère pourra apporter quelques réponses... même si ça déborde très largement des seuls corrigés. Sans tes tutos initiaux, j'aurais rien fait de toute façon, donc pas de souci.

python3-test.pdf

python3-maitre-test.txt

Karduin commented 6 years ago

Salut @jgorene , haha, sportif en effet, faut en vouloir pour aller au bout ! Il y a peut être une manière plus simple de procéder. Je vois que l'on bute sur les mêmes fichiers (logique après tout). w2-s1-c1-accents.tex

w2-s6-x4-if-et-def.tex

jgorene commented 6 years ago

@Karduin Je sors du chat... sportif aussi ;)

Sinon j'ai finalement réglé tous les pbs bloquants en tout cas... dans mon éditeur-compilateur TexMaker Je te joins le doc final qui sort pas trop mal pour moi et tu verras ce que tu en fais éventuellement, pas de souci; le mooc se terminant bientôt... python3 - ok.pdf python3-ok.txt

Ce serait trop long d'énumérer ici mais je n'ai eu qu'à faire 2 corrections "à la main" pour régler ces pbs bloquants s'entend, car il y a eu bien sûr pas mal de modifs de paramètres sur le master-doc que tu retrouvera, le cas échéant

Bon, je ne doute pas qu'il doit y avoir un milliers d'autres solutions ou approches comme souvent en code ;)

Si ça t'intéresse je te joins le dossier complet car j'ai suivi les préconisations bien plus pratique finalement en ne mettant sur le master-doc que ce qui concerne \begin{document} et \end{document} (plus pratique pour créer le document avec python;)

Même s'il reste encore des bricoles sur le master-doc actuel car je vais aussi laisser refrodir tout ça... :D La "preamble", la title page (entre autres) sont importés, un peu comme on construit un "dossier web" avec les pages de styles et les js (entre autres)

Au final, très instructif ce petit travail et cette collaboration ;) J'ai surtout découvert et appris un tas de choses intéressantes finalement avec la réalisation de scripts python pour essayer de trouver des solutions pratiques surtout... Entre autre automatiser la préparation des fichiers rst, tex ou autres (très important et passionnant;) et aussi construire le dossier Latex qui va bien ou qui va mieux ;))

Karduin commented 6 years ago

Je t'avoue que je me suis mis en pose sur le sujet.
J'aime bien cette idée de tout séparer, ton lien est très instructif.
Tou à fait d'accord, mooc excellent, collaboration fructueuse, un bon moment et une bonne progression grâce à tout ça. Ne reste plus qu'à trouver des petits projets motivants. Je réfléchis déjà à ce que je pourrais faire. ( pas trop mathématiques ;-) je me débrouille à condition de ne pas aller trop loin

Karduin commented 6 years ago

@jgorene J'avais installé MiKTeX et l'éditeur fourni avec TeXworks qui, si il fait le job n'est pas très souple.
Et la je découvre TeXstudio, Whaouh, le confort de travail, c'est autre chose. Je te laisse découvrir si tu as le temps... Je travail en dual boot, un coup windows un coup linux (mint), je n'ai pas encore testé sous linux.

jgorene commented 6 years ago

@Karduin Oui c'est bien TeXstudio, c'est un fork de Texmaker (sous linux de mon côté) et du coup très semblables dans le principe de fonctionnement et l'interface ;)

MikTex ou autre éditeur-compilateur tex... connait pas... Je découvre ces outils depuis peu finalement... comme énormément d'autres depuis que je me suis lancé dans python... bref !! ;) J'ai aussi pris un peu de recul là-dessus (le pdf)... maintenant que je comprends mieux comment-ça-marche :-D

Pour finir, la participation à ce mini-projet c'était aussi en partie l'occasion de pratiquer github en "collaboratif"... créer des branches... merger... collaborer aussi sur des mini projets hors contexte professionnel en "production" afin de pouvoir s'autoriser quelques erreurs mais surtout... s'y retrouver. En fait c'est un outil qu'il faut pratiquer pour apprendre à (bien) s'en servir...

Pas trop maths non plus sauf contraint par une nécessité absolue ;) Sinon le mooc se terminant suis partant pour un petit projet à partir de python pour pratiquer et progresser surtout, à voir éventuellement, pourquoi pas?

Ok, à suivre :)