[PYTHON] Jupyter nb Erweiterungen

Ich habe eine Sammlung von Techniken geschrieben, an die ich mich mit der Erweiterung nb von Jupyter Notebook erinnern kann.

--Installation --Config --Erstellen einer Konfigurationsdatei

Installation

Offizielle ipython-contrib / jupyter_contrib_nbextensions

$ conda install -c conda-forge jupyter_contrib_nbextensions

Dies ist am einfachsten, da dadurch CSS gelöscht wird


Konfig

Konfigurationsdatei erstellen

$ jupyter notebook --generate-config

Browser angeben

Jupyter Notebook wird im Browser geöffnet, der standardmäßig geöffnet wird, wenn nichts angegeben ist.

Da in Zukunft häufig Tastenkombinationen verwendet werden, wählt der Browser, der das Jupyter-Notizbuch öffnet, "unbenutzt" = "Tastenkombinationen sind nicht angepasst".

Suchen Sie nach der Zeile "# c.NotebookApp.browser =" im erstellten "~ \ .jupyter \ jupyter_notebook_config.py" und geben Sie den Browser an.

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'

Referenz:

Automatisch speichern

Jupyter Notebook standardmäßig alle 2 Minuten? Wird es retten. (Sie können das Speicherintervall mit der unten erläuterten "automatischen Speicherzeit" von "nbextension" ändern.)

Wenn Sie Folgendes in ~ / .jupyter / jupyter_notebook_config.py schreiben

Geschaffen.

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
Jedes Mal, wenn ipynb gespeichert wird[py, html, md, tex, pdf]Erschaffen."""
    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
Jedes Mal, wenn ipynb gespeichert wird[py, html, md, tex, pdf]Erschaffen."""
    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

TeX-Generation

Wenn Sie Japanisch verwenden, können Sie in der Menüleiste nicht Als PDF exportieren verwenden.

Da die Dokumentklasse "\ document class [a4paper, dvipdfmx] {jsarticle}" in englischer Version generiert wird.

Erstellen Sie also eine Tex-Datei mit jsarticle, die auf den Stil angewendet wird

Vorlagendatei verwenden (jsarticle.tplx)

Wenn Sie eine Vorlagendatei vorbereiten (hier jsarticle.tplx), wird diese in jsarticle umgeschrieben und generiert.

Bei der Ausführung des Befehls nbconvert

Führen Sie jupyter nbconvert --to latex --template jsarticle.tplx lualatex <Dateiname> aus

Die spezifische Methode ist wie folgt.

~~ 1. Platzieren Sie jsarticle.tplx an der Stelle, an der die Umgebungsvariable von tex übergeben wird (z. B. an der Stelle, an der sich platformx.exe befindet) ~~

  1. Erstellen Sie eine jsarticle.tplx-Datei unter <...> \ Anaconda3 \ Lib \ site-packages \ nbconvert \ templates \ latex`.

<...> ist Ihr Anaconda-Verzeichnis. In meinem Fall "C: \ tools \ Anaconda3".

  1. Geben Sie den Befehl jupyter-nbconvert --to latex% 1 --template jsarticle.tplx ein, der automatisch in jsarticle in das Terminal konvertiert wird. % 1 ist der Dateiname und% 2 ist der Dateibasisname.
  2. Exportieren Sie das Bild als PNG. Bilder werden unter dem Dateibasisnamen unter dem Arbeitsverzeichnis als Ordnername und unter dem Verzeichnis unten gespeichert. 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 *))

Referenz: Memo von Hashikure Engineer-Jupyter nbconvert (Dateikonvertierung) Memo HTML automatisch mit Qiita - Jupiter Notebook erstellen

Erstellen Sie TeX mit Sublime Text 3

Bisher habe ich es im erhabenen Text-Build-Format geschrieben und mit build (Strg + b) ausgeführt. (Daher kann der Dateiname% 1 oder ein Argument sein.)

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 laufen

Unten müssen Sie den Dateinamen erneut eingeben, nicht% 1 und% 2 als Argumente.

  1. Führen Sie platformx in der Befehlszeile aus. Ich schreie, dass die Datei plotx% 2.tex.sty fehlt, aber drücke weiterhin die Eingabetaste, um fortzufahren.
  2. Führen Sie dvipdfmx in der Befehlszeile aus. dvipdfmx% 2.dvi

Öffnen Sie das PDF mit Sumatra PDF

Bis zu diesem Punkt wurde das PDF erstellt.

  1. Wenn Sie beim Klicken auf PDF zur Tex-Quelle wechseln möchten, starten Sie SumatraPDF mit der Wiederverwendungsinstanz. SumatraPDF -reuse-instance% 2.pdf

nbextensions

Wenn Sie mit nbextention überprüfen, werden die Einstellungen in ~ / .jupyter / nbconfig / notebook.json gespeichert. Meine Umgebung sieht so aus

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"
}

Jupyter Notebook-Einstellungen im Zusammenhang

Nbextensions edit menu item "nbextensions_configurator/config_menu/main": true, Nbextension config wird der MenüleisteEdit hinzugefügt, und Sie können zum nbextension-Bildschirm wechseln, indem Sie darauf klicken. Es ist leicht zu verstehen und bequem, da Sie normalerweise "localhost: 8888 / nbextensions /" in das Adressfeld Ihres Browsers eingeben müssen.

editmenuitem.png

Nbextensions dashboard tab "nbextensions_configurator/config_menu/main": true, Das Menü nbextension settings wird in der Menüleiste des Jupyter Notebook-Startbildschirms angezeigt.

Ich möchte entweder "Nbextensions edit menu item" einstellen.

dashboard.png

Select CodeMirror Keymap "select_keymap/main": true, Können vim- und Sublime-Text-Keymaps dunkler als die Standardeinstellungen sein? Selbst wenn ich beispielsweise Sublime standardmäßig in die Keymap einfügen würde, könnte ich nicht "In Klammern auswählen" Strg + Umschalt + m oder" Mehrere Zeilen auswählen "Strg + Alt + Auf <Ab>> ausführen. Kann ausgeführt werden, indem auf True gesetzt wird. Die bequeme und unvermeidbare "Mehrfachauswahl ausgewählter Zeichenketten"Strg + d` überschneidet sich häufig mit den" Register-Lesezeichen "des Browsers, daher ändere ich den Schlüssel mit einem Add-On.

Für Firefox Menü-Assistent Für Chrome Keyconfig

Split Cells Notebook "splitcell/splitcell": true, Teilen Sie in linke und rechte Absätze. Die Tastenkombination lautet "Umschalt + S"

"stored_keymap": "sublime"

Collapsible Headings "collapsible_headings/main": true, Sie können Zellen für jede Überschriftenhierarchie schließen (der Beginn einer Markdown-Zelle "#").

collapsibleheading.png

Eingabebezogen

Freeze "freeze/main": true, schreibgeschützt: Kann ausgeführt, aber nicht neu geschrieben werden eingefroren: kann nicht geschrieben oder ausgeführt werden

freeze.png

Codefolding "codefolding/main": true, Falten Sie den eingerückten Code. Die Tastenkombination lautet "Alt + F"

codefolding.png

Hide input "hide_input/main": true, Einzelne Zelleingaben ausblenden.

hideinput.png

Hide input all "hide_input_all/main": true,

Eingabe in allen Zellen ausblenden. Es kann nur das Ergebnis ausgegeben werden, was für die Erstellung von PDFs und Präsentationen praktisch ist.

hideinputall.png

Move selected cells "move_selected_cells/main": true,

Es scheint, dass Sie Zellen mit Alt + ↑ / Alt + ↓ verschieben können, aber aus irgendeinem Grund kann ich dies in meiner Umgebung nicht tun

Code prettify

"code_prettify/code_prettify": true,

Wenn Sie auf das Hammersymbol drücken, das beim Aktivieren angezeigt wird, wird der Python-Code so korrigiert, dass er pep8 usw. folgt.

Das Ändern des Python-Codes muss yapf löschen.

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

Ich habe es nicht ausprobiert, aber für R install.packages (" formatR ", repos =" http://cran.rstudio.com ")

Für Javascript müssen Sie das Modul löschen, um es mit npm install js-beautify zu formatieren.

codeprettify.gif

"toggle_all_line_numbers/main": true, Nummerieren Sie alle Zellen mit Zeilennummern. Es ist möglich, jeder Zelle mit der Standardeinstellung (Verknüpfung L) des Jupyter-Notebooks eine Zellennummer zuzuweisen. Verwenden Sie sie daher nicht.

toggleallnumber.png

Limit Output "limit_output/main": true,

Wenn Sie die folgende Funktion in ~ \ .jupyter \ jupyter_notebook_config.py schreiben, wird die Ausgabe automatisch reduziert, wenn die Ausgabe von 1000 Zeilen oder mehr ausgegeben wird.

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

Ausgabebezogen

"execute_time/ExecuteTime": true, Zeigen Sie die Ausführungszeit an. In allen Zellen kann nur die in der Menüleiste / Ausführungszeitanzeige unter "Zelle" ausgewählte Zelle umgeschaltet werden.

Printview "printview/main": true Sie können die in das HTML- oder PDF-Format konvertierte Vorschau leicht sehen, ohne "Herunterladen als ..." auszuführen.


Abschlag im Zusammenhang

"highlighter/highlighter": true, Markierungszellen-Highlights

"dragdrop/main": true, Bildeinbettung. In der Markdown-Zelle

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

Sie können so schreiben, aber für diejenigen, die mit D & D Fortschritte machen wollen.

Python Markdown "python-markdown/main": true, Eine Mischung aus Python-Code und Markdown.

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


Kernel verwandt

"keyboard_shortcut_editor/main": true,

Der Tastaturkürzelliste wird ein Symbol zum Bearbeiten von Tastenkombinationen hinzugefügt.

Um eine Tastenkombination aufzurufen, suchen Sie in der Befehlspalette nach "Tastaturkürzel anzeigen" (Strg + Umschalt + P) oder drücken Sie im normalen Modus "h".

keyboardshoetcuteditor.png

Launch QTConsole "qtconsole/qtconsole": true, Starten Sie qtcosele, indem Sie die Objekte im aktuellen Kernel übernehmen. Ich mag die Tatsache nicht, dass der ~~ Stil der Standardweiß bleibt. ~~ ← Gelöst. Schreiben Sie wie folgt in jupyter_qtconsole_config.py

Erstellen Sie ~ / .jupyter / jupyter_qtconsole_config.py

c.JupyterWidget.syntax_style = "monokai"

Wenn Sie eingeben, wird es beim Starten von qtconsole immer im Monokai-Stil gestartet.

** Wenn Sie es nur ausprobieren möchten, empfehlen wir das unten aufgeführte "Scratchpad" **

Scratchpad notebook extension "scratchpad/main": true, Nützlich, wenn Sie den Code einfach ausprobieren möchten, ohne den aktuellen Kernel zu verschmutzen. Zeigen Sie den Eingabebildschirm auf der rechten Seite des Bildschirms an Die Tastenkombination lautet "Strg + B"

scratchpad.gif

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

Fügen Sie eine neue Tastenkombination hinzu (wahrscheinlich)

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

Referenz Hashikure-Ingenieur-ähnliches Memo - Versuchen Sie es mit der Erweiterungsfunktion von Jupyter Notebook Qiita - Erweiterung hinzufügen, um eine komfortablere Jupyter-Umgebung zu erstellen

Beziehung

Referenzliste

Meine Seite

JupyterNotebook-Tastenkombination, TeX, Bildeinbettung usw., viele Informationen, die behandelt werden müssen (Kopie)

Erläuterung der Python-Entwicklungsumgebung einschließlich Jupyter, Ipython sowie Jupyter Notebook

Recommended Posts

Jupyter nb Erweiterungen
Jupyter beginnt
Jupyters Trick 4
Jupyters Trick 5
Jupyters Trick 3
Jupyters Trick 2
Jupyter Installation
Jupyters Trick
Jupyter-Installationsfehler
Jupyter Notizbuch Memo
Einführung in Jupyter Notebook
Jupyter Lab beginnt
Leistungsstarkes Jupyter-Notizbuch
Golang mit Jupyter
Bash in Jupyter
Jupyter auf AWS
Jupyter-Studie note_002
Jupyter Notebook Passwort
Baue Jupyter Hub
Jupyter Notizbuch Memo
Jupyter-Studie note_008
Jupyter-Studie note_004
jupyter qtconsole config
Jupyter-Studie note_001
Jupyter-Studie note_003
Jupyter Study Note_007
Jupyter-Studie note_005