[PYTHON] Extensions Jupyter NB

J'ai écrit une collection de techniques qu'il est utile de retenir en utilisant l'extension nb de Jupyter Notebook.

--Installation --Config --Création d'un fichier de configuration --Spécifier le navigateur

Installation

Officiel ipython-contrib / jupyter_contrib_nbextensions

$ conda install -c conda-forge jupyter_contrib_nbextensions

C'est le plus simple car il supprimera le CSS


Config

Créer un fichier de configuration

$ jupyter notebook --generate-config

Spécifier un navigateur

Jupyter Notebook s'ouvre dans le navigateur qui s'ouvre par défaut s'il n'est pas spécifié.

Puisque les raccourcis clavier seront souvent portés à l'avenir, le navigateur qui ouvre le notebook jupyter sélectionne "non utilisé" = "les touches de raccourci ne sont pas personnalisées".

Recherchez la ligne # c.NotebookApp.browser = '' dans le fichier créé ~ \ .jupyter \ jupyter_notebook_config.py et spécifiez le navigateur.

python:~/.jupyter/jupyter_notebook_config.py


import webbrowser
webbrowser.register('chrome', None, webbrowser.GenericBrowser('C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe'))
c.NotebookApp.browser = 'chrome'

référence:

Sauvegarde automatique

notebook jupyter par défaut toutes les 2 minutes? Va le sauver. (L'intervalle de sauvegarde peut être modifié avec ʻauto save time de nbextension` expliqué ci-dessous)

Si vous écrivez ce qui suit dans ~ / .jupyter / jupyter_notebook_config.py

Est créé.

python:~/.jupyter/jupyter_notebook_config.py


import os
from subprocess import check_call

def post_save(model, os_path, contents_manager):
    """post-save hook for converting notebooks to .py scripts
Chaque fois que ipynb est enregistré[py, html, md, tex, pdf]Créer."""
    if model['type'] != 'notebook':
        return # only do this for notebooks
    d, fname = os.path.split(os_path)
    base, ext = os.path.splitext(fname)
    check_call(['jupyter', 'nbconvert', '--to', 'script', fname], cwd=d)
    check_call(['jupyter', 'nbconvert', '--to', 'html', fname], cwd=d)
    check_call(['jupyter', 'nbconvert', '--to', 'markdown', fname], cwd=d)
    # check_call(['jupyter-nbconvert', '--to', 'latex', fname, '--template', 'jsarticle.tplx'], cwd=d)
    # check_call(['extractbb', base+'_files/*.png'], cwd=d)
    # check_call(['platex', '-interaction=nonstopmode', '-synctex=1', '-kanji=utf8', '-guess-input-enc' , base+'.tex'], cwd=d)
    # check_call(['dvipdfmx', base+'.dvi'], cwd=d)

c.FileContentsManager.post_save_hook = post_save
import os
from subprocess import check_call

def post_save(model, os_path, contents_manager):
    """post-save hook for converting notebooks to .py scripts
Chaque fois que ipynb est enregistré[py, html, md, tex, pdf]Créer."""
    if model['type'] != 'notebook':
        return # only do this for notebooks
    d, fname = os.path.split(os_path)
    check_call(['jupyter', 'nbconvert', '--to', 'script', fname], cwd=d)
    check_call(['jupyter', 'nbconvert', '--to', 'html', fname], cwd=d)
    check_call(['jupyter', 'nbconvert', '--to', 'markdown', fname], cwd=d)
    check_call(['jupyter', 'nbconvert', '--to', 'latex', '--template', 'jsarticle.tplx', 'lualatex', fname], cwd=d)

c.FileContentsManager.post_save_hook = post_save

Génération TeX

Si vous utilisez le japonais, vous ne pouvez pas utiliser Exporter au format PDF dans la barre de menus.

Parce que la classe de document de \ document class [a4paper, dvipdfmx] {jsarticle} est générée en version anglaise.

Alors créez un fichier tex avec jsarticle appliqué au style

Utiliser le fichier modèle (jsarticle.tplx)

Si vous préparez un fichier modèle (ici, jsarticle.tplx), il sera réécrit dans jsarticle et généré.

Lors de l'exécution de la commande nbconvert

Exécutez jupyter nbconvert --to latex --template jsarticle.tplx lualatex <filename>

La méthode spécifique est la suivante.

~~ 1. Placez jsarticle.tplx à l'endroit où passe la variable d'environnement de tex (par exemple, où se trouve platex.exe) ~~

  1. Créez un fichier jsarticle.tplx sous <...> \ Anaconda3 \ Lib \ site-packages \ nbconvert \ templates \ latex`.

<...> est votre répertoire Anaconda. Dans mon cas, C: \ tools \ Anaconda3 \.

  1. Tapez la commande jupyter-nbconvert --to latex% 1 --template jsarticle.tplx qui se convertit automatiquement en jsarticle dans le terminal. % 1 est le nom du fichier et% 2 est le nom de base du fichier.
  2. Exportez l'image au format png. Les images sont enregistrées sous le nom de base du fichier sous le répertoire de travail comme nom de dossier et sous le répertoire ci-dessous. ʻExtractbb% 2_files / *. Png`

jsarticle


% Default to the notebook output style
((* if not cell_style is defined *))
    ((* set cell_style = 'style_ipython.tplx' *))
((* endif *))

% Inherit from the specified cell style.
((* extends cell_style *))

%===============================================================================
% Latex Article
%===============================================================================

((* block docclass *))
\documentclass[a4paper,dvipdfmx]{jsarticle}
((* endblock docclass *))

référence: Memo of Hashikure engineer-Jupyter nbconvert (file conversion) memo Créer automatiquement du HTML avec Qiita --Jupyter notebook

Construisez TeX avec Sublime Text 3

Jusqu'à présent, je l'ai écrit dans un format de construction de texte sublime et l'ai exécuté avec build (ctrl + b). (Par conséquent, le nom de fichier peut être% 1 ou un argument.)

Jupyter2PDF.sublime-build


{
    "cmd":["Jupyter2PDF.bat","$file","$file_base_name"],
}

Jupyter2PDF.bat


@echo off
jupyter-nbconvert --to latex %1 --template jsarticle.tplx
extractbb %2_files/*.png

platex course

Ci-dessous ici, vous devez retaper le nom du fichier, pas% 1 et% 2 comme arguments.

  1. Exécutez platex sur la ligne de commande. Je crie que le fichier platex% 2.tex.sty est manquant, mais continuez d'appuyer sur Entrée pour continuer.
  2. Exécutez dvipdfmx sur la ligne de commande. dvipdfmx% 2.dvi

Ouvrir un pdf avec Sumatra PDF

Jusqu'à présent, le pdf a été créé.

  1. Si vous souhaitez accéder à la source tex lorsque vous cliquez sur pdf, démarrez SumatraPDF avec reuse-instance. SumatraPDF -reuse-instance% 2.pdf

nbextensions

Si vous vérifiez avec nbextention, les paramètres seront enregistrés dans ~ / .jupyter / nbconfig / notebook.json. Mon environnement ressemble à ceci

python:~/.jupyter/nbconfig/notebook.json


{
  "code_format_hotkey": "Ctrl-Alt-D",
  "kse_rebinds": {
    "command": [
      {
        "action_name": "auto:autogenerated-function () {\n                    IPython.notebook.edit_mode();\n                    return false;\n                }",
        "from": "esc"
      }
    ],
    "edit": [
      {
        "action_name": "jupyter-notebook:run-cell-and-insert-below",
        "from": "alt-enter"
      },
      {
        "to": "alt-enter",
        "action_name": "auto:autogenerated-function () {\n                    var cell = IPython.notebook.get_selected_cell();\n                    var mode = cell.mode;\n                    cell.execute();\n                    if (mode === \"edit\") IPython.notebook.edit_mode();\n                    return false;\n                }",
        "from": "ctrl-enter"
      }
    ]
  },
  "limit_output": 1000,
  "stored_keymap": "sublime",
  "load_extensions": {
    "exercise/main": false,
    "collapsible_headings/main": true,
    "python-markdown/main": true,
    "autosavetime/main": true,
    "spellchecker/main": false,
    "dragdrop/main": true,
    "nbpresent/js/nbpresent.min": true,
    "highlighter/highlighter": true,
    "hide_input/main": true,
    "runtools/main": false,
    "hinterland/hinterland": false,
    "contrib_nbextensions_help_item/main": true,
    "keyboard_shortcut_editor/main": true,
    "init_cell/main": true,
    "splitcell/splitcell": true,
    "toggle_all_line_numbers/main": false,
    "freeze/main": true,
    "hide_input_all/main": true,
    "move_selected_cells/main": true,
    "nb_anacondacloud/main": true,
    "select_keymap/main": true,
    "nb_conda/main": true,
    "code_prettify/code_prettify": true,
    "ruler/main": false,
    "navigation-hotkeys/main": true,
    "limit_output/main": false,
    "printview/main": true,
    "nbextensions_configurator/config_menu/main": true,
    "jupyter-js-widgets/extension": true,
    "execute_time/ExecuteTime": true,
    "toc2/main": true,
    "scratchpad/main": true,
    "search-replace/main": false,
    "codefolding/main": true,
    "exercise2/main": false,
    "qtconsole/qtconsole": true
  },
  "kse_show_rebinds": true,
  "autosavetime_starting_interval": "5"
}

Paramètres de Jupyter Notebook liés

Nbextensions edit menu item "nbextensions_configurator/config_menu/main": true, Nbextension config est ajouté à la barre de menu ʻEdit, et vous pouvez passer à l'écran nbextension en cliquant dessus. C'est facile à comprendre et pratique car vous devez généralement entrer localhost: 8888 / nbextensions /` dans le champ d'adresse de votre navigateur.

editmenuitem.png

Nbextensions dashboard tab "nbextensions_configurator/config_menu/main": true, Le menu des paramètres de nbextension apparaît dans la barre de menus de l'écran d'accueil de Jupyter Notebook.

Je veux définir l'un ou l'autre des éléments de menu d'édition Nbextensions

dashboard.png

Select CodeMirror Keymap "select_keymap/main": true, Les keymaps de texte vim et Sublime peuvent-ils être plus sombres que la valeur par défaut? Par exemple, même si je mets Sublime dans le keymap par défaut, je ne pourrais pas faire "sélectionner entre parenthèses" ctrl + shift + m ou" sélectionner plusieurs lignes "ctrl + alt + up <down> Peut être exécuté en définissant sur True. La pratique et inévitable "sélection multiple de chaînes de caractères sélectionnées" "ctrl + d" chevauche souvent les "signets de registre" du navigateur, donc je change la clé avec un add-on.

Pour Firefox, Assistant de menu Pour Chrome Keyconfig

Split Cells Notebook "splitcell/splitcell": true, Divisez en paragraphes gauche et droit. La touche de raccourci est Shift + S

"stored_keymap": "sublime"

Collapsible Headings "collapsible_headings/main": true, Vous pouvez fermer les cellules pour chaque hiérarchie d'en-tête (le début d'une cellule de démarque «#»).

collapsibleheading.png

Lié à l'entrée

Freeze "freeze/main": true, lecture seule: peut être exécuté mais ne peut pas être réécrit gelé: ne peut être ni écrit ni exécuté

freeze.png

Codefolding "codefolding/main": true, Pliez le code en retrait. La touche de raccourci est ʻalt + f`

codefolding.png

Hide input "hide_input/main": true, Masquer les entrées de cellule individuelles.

hideinput.png

Hide input all "hide_input_all/main": true,

Masquer l'entrée dans toutes les cellules. Seul le résultat peut être sorti, ce qui est pratique pour créer des fichiers PDF et des présentations.

hideinputall.png

Move selected cells "move_selected_cells/main": true,

Il semble que vous puissiez déplacer des cellules avec Alt + ↑ / Alt + ↓, mais pour une raison quelconque, je ne peux pas le faire dans mon environnement

Code prettify

"code_prettify/code_prettify": true,

Si vous appuyez sur l'icône de marteau qui apparaît lorsque vous l'activez, le code python sera corrigé pour suivre pep8 etc.

La modification du code python doit supprimer yapf.

conda install --channel https://conda.anaconda.org/conda-forge yapf

Je ne l'ai pas essayé, mais pour R ʻinstall.packages ("formatR", repos = "http://cran.rstudio.com") `

Pour javascript, vous devez déposer le module au format avec npm install js-beautify.

codeprettify.gif

"toggle_all_line_numbers/main": true, Numérotez toutes les cellules avec des numéros de ligne. Il est possible d'attribuer un numéro de cellule à chaque cellule avec le paramètre par défaut (raccourci L) de jupyter-notebook, donc ne l'utilisez pas.

toggleallnumber.png

Limit Output "limit_output/main": true,

Si vous écrivez la fonction suivante dans ~ \ .jupyter \ jupyter_notebook_config.py, la sortie sera automatiquement réduite lorsque la sortie de 1000 lignes ou plus est sortie.

from notebook.services.config import ConfigManager
cm = ConfigManager().update('notebook', {'limit_output': 1000})

Lié à la sortie

"execute_time/ExecuteTime": true, Affichez l'heure d'exécution. Seule la cellule sélectionnée dans «Cellule» dans la barre de menu / affichage du temps d'exécution peut être commutée dans toutes les cellules.

Printview "printview/main": true Vous pouvez facilement voir l'aperçu converti au format html ou pdf sans faire Télécharger en tant que ....


Lié à Markdown

"highlighter/highlighter": true, Points forts de la cellule Markdown

"dragdrop/main": true, Incorporation d'image. Dans la cellule de démarque

<img  src="http://127.0.0.1:8888/notebooks/myimage.png "/>

Vous pouvez écrire comme ça, mais pour ceux qui veulent progresser avec D & D.

Python Markdown "python-markdown/main": true, Un mélange de code python et de markdown.

python-markdown-post.png python-markdown-pre.png


Concernant le noyau

"keyboard_shortcut_editor/main": true,

Une icône de modification de raccourci clavier est ajoutée à la liste des raccourcis clavier.

Pour appeler un raccourci clavier, recherchez afficher le raccourci clavier dans la palette de commandes (ctrl + shift + p), ou appuyez sur h en mode normal.

keyboardshoetcuteditor.png

Launch QTConsole "qtconsole/qtconsole": true, Démarrez qtcosele en reprenant les objets sur le noyau actuel. Je n'aime pas le fait que le style ~~ reste le blanc par défaut. ~~ ← Résolu. Écrivez dans jupyter_qtconsole_config.py comme suit

Créez ~ / .jupyter / jupyter_qtconsole_config.py

c.JupyterWidget.syntax_style = "monokai"

Si vous tapez, il démarrera toujours dans le style monokai lorsque vous démarrez qtconsole.

** Si vous voulez juste essayer, nous vous recommandons le Scratchpad ci-dessous **

Scratchpad notebook extension "scratchpad/main": true, Utile lorsque vous souhaitez essayer facilement le code sans polluer le noyau actuel. Affichez l'écran de saisie sur le côté droit de l'écran La touche de raccourci est «ctrl + b»

scratchpad.gif

Navigation-Hotkeys "navigation-hotkeys/main": true

Ajouter une nouvelle touche de raccourci (probablement)

Edit-mode hotkeys:
pageup - scroll page up
pagedown - scroll page down
Alt- + - Split cell and keep cursor position
Alt- - - Combine cell and keep cursor position
Alt-n - Toggle line number display in current codecell
Shift-Enter - Execute cell, goto next cell and stay in edit mode if next cell is a code cell or unredered markdown cell
Ctrl-Enter - Execute cell and stay in edit mode if cell is a code cell
Ctrl-y - toggle celltype between markdown and code
Command-mode hotkeys:
esc - toggle to edit mode
home - Go to top of notebook
end - Go to bottom of notebook
pageup - scroll page up
pagedown - scroll page down

référence Mémo de type ingénieur Hashikure - Essayez d'utiliser la fonction d'extension de Jupyter Notebook Ajouter Qiita --extension pour créer un environnement Jupyter plus confortable

Relation

Liste de référence

Ma page

Touche de raccourci JupyterNotebook, TeX, imbrication d'image, etc., beaucoup d'informations à couvrir (copie)

Explication de l'environnement de développement python comprenant Jupyter, Ipython ainsi que Jupyter Notebook

Recommended Posts

Extensions Jupyter NB
Jupyter commence
Le tour de Jupyter 4
Astuce de Jupyter 5
Astuce de Jupyter 3
Le tour de Jupyter 2
Installation de Jupyter
L'astuce de Jupyter
Erreur d'installation de Jupyter
Mémo Jupyter Notebook
Présentation de Jupyter Notebook
Jupyter Lab commence
Puissant ordinateur portable Jupyter
Golang avec Jupyter
Bash dans Jupyter
Jupyter sur AWS
Note d'étude Jupyter_002
Mot de passe du notebook Jupyter
Construire Jupyter Hub
Mémo Jupyter Notebook
Note d'étude Jupyter_008
Note d'étude Jupyter_004
configuration de jupyter qtconsole
Étude Jupyter note_001
Note d'étude Jupyter_003
Note d'étude Jupyter_007
Note d'étude Jupyter_005