J'ai un grand cahier avec beaucoup de chiffres et de texte. Je veux le convertir en fichier html. Cependant, je ne veux pas exporter le code. J'utilise la commande suivante
ipython nbconvert --to html notebook.ipynb
Mais cette option exporte également le code. Existe-t-il un moyen de convertir le portable en html sans le code?
J'ai trouvé cet article intéressant, il explique comment supprimer les colonnes d'entrée:
il vous suffit de créer un fichier modèle nommé "hidecode.tplx" dans le même répertoire que le bloc-notes que vous souhaitez convertir et d'y ajouter ces lignes:
((*- extends 'article.tplx' -*))
((* block input_group *))
((*- if cell.metadata.get('nbconvert', {}).get('show_code', False) -*))
((( super() )))
((*- endif -*))
((* endblock input_group *))
Et après avoir exécuté cette commande, il utilisera pdfLatex pour convertir le cahier en pdf via latex:
jupyter nbconvert --to pdf --template hidecode Example.ipynb
ou si vous voulez éditer vous pouvez le convertir en un document .tex et utiliser pdfLatex pour le mettre en pdf:
jupyter nbconvert --to latex --template hidecode Example.ipynb
EDIT Sept 2018: ipython nbconvert
est obsolète. Il sera remplacé par jupyter nbconvert
: Nous remplaçons donc la commande ipython
par jupyter
Je cherchais la même question dans SO et finalement avéré d'une manière très simple:
En supposant utiliser Firefox (57) + Win7
F12
Exécutez la commande suivante dans la console:
document.querySelectorAll("div.input").forEach(function(a){a.remove()})
Le code supprime toutes les entrées div DOM. Ensuite right mouse button
et choisissez "Enregistrer la page sous" et Enregistrer la "Page complète" (pas une seule page).
Vous obtiendrez une page avec un dossier associé dans Windows. Utilisez une astuce en zippant la page html puis extrayez pour dissocier l'associé. Le dossier est inutile.
Maintenant, c'est une seule page html sans code. Vous pouvez le redistribuer ou l'imprimer au format PDF.
Si vous n'utilisez pas Firefox ou Windows, veuillez ajuster les étapes 3-6 ci-dessus.
Vous pouvez ajouter ce css à votre page, puis l'imprimer dans PDF à partir du navigateur. Notez que le code est uniquement masqué, pas supprimé.
div.output_Prompt { visibility: hidden; }
*{ font-family: "Palatino Linotype", "Book Antiqua", Palatino, serif !important }
.input,#header { display: none; }
Pour vous assurer que vous supprimez le code, vous devez utiliser quelque chose comme
$(".input").remove()
Pour autant que je sache, il n'y a aucun moyen de générer via latex un PDF qui n'inclut pas le code. Ce serait formidable d'avoir une extension de portable jupyter qui le fait cependant ...
Voici comment je le fais: je télécharge simplement mon carnet en html.
Ensuite, exécutez ce script python pour convertir ce fichier html afin que les invites et les cellules de code aient disparu:
FILE = "/somewhere/myHTMLFile.html"
with open(FILE, 'r') as html_file:
content = html_file.read()
# Get rid off prompts and source code
content = content.replace("div.input_area {","div.input_area {\n\tdisplay: none;")
content = content.replace(".Prompt {",".Prompt {\n\tdisplay: none;")
f = open(FILE, 'w')
f.write(content)
f.close()
Ce script ajoute fondamentalement l'attribut CSS 'display: none' pour toutes les divs de la classe 'Prompt' ou 'input_area'.
nbconvert
utilise des modèles pour convertir le JSON du bloc-notes en document; par exemple, dans le modèle de démarque fourni avec nbconvert, markdown.tpl
:
{% block input %}
{% if nb.metadata.language_info %}{{ nb.metadata.language_info.name }}{% endif %}
{{ cell.source}}
{% endblock input %}
qui imprime la source de chaque cellule dans la sortie. Si vous supprimez {{ cell.source}}
alors la source de la cellule ne s'imprimera pas. Il existe également des blocs correspondants dans les modèles HTML et Latex.
Mieux encore, créez votre propre modèle qui fait exactement ce que vous voulez :)
Comme une généralisation de cette réponse , de sorte que le modèle de hidecode puisse être accessible à partir de plusieurs emplacements:
Accédez au répertoire suivant (Modifier user_name
à votre nom d'utilisateur):
cd /home/<user_name>/.jupyter
Créer jupyter_nbconvert_config.py
sous ce répertoire.
Écrivez ce qui suit dans le .py
fichier (Modifier user_name
à votre nom d'utilisateur):
c = get_config()
c.TemplateExporter.template_path = ['.', "/home/<user_name>/.jupyter" ]
c.LatexExporter.template_path = ['.', "/home/<user_name>/.jupyter"]
Créez un fichier modèle sous ce répertoire, nommé hidecode.tplx
ou hidecode.tpl
:
((*- extends 'article.tplx' -*))
((* block input_group *))
((*- if cell.metadata.get('nbconvert', {}).get('show_code', False) -*))
((( super() )))
((*- endif -*))
((* endblock input_group *))
Ensuite, ce qui suit devrait générer un PDF sans .ipynb
codes des fichiers (Modifier file_name
à votre nom de fichier):
jupyter nbconvert --to pdf '<file_name>.ipynb' --template=hidecode.tpl