I wrote a collection of techniques that are useful to remember by using the nb extension of Jupyter Notebook.
--Installation --Config --Creating a config file --Browser specification --Automatic save
Official ipython-contrib / jupyter_contrib_nbextensions
$ conda install -c conda-forge jupyter_contrib_nbextensions
This is the easiest because it will drop css
$ jupyter notebook --generate-config
Jupyter Notebook opens in a browser that opens by default if not specified.
Since key bindings will often be worn in the future, the browser that opens the jupyter notebook selects "unused" = "shortcut keys are not customized".
Look for the line # c.NotebookApp.browser =''
in the created ~ \ .jupyter \ jupyter_notebook_config.py
and specify the browser.
c.NotebookApp.browser = u'/ usr / bin / firefox% s'
webbrowser.register
and then specify the registered browser.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'
reference:
Is jupyter notebook every 2 minutes by default? Will save it.
(The save interval can be changed with ʻauto save time of
nbextension` described below)
If you write the following in ~ / .jupyter / jupyter_notebook_config.py
Is created.
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
Every time ipynb is saved[py, html, md, tex, pdf]To create."""
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
Every time ipynb is saved[py, html, md, tex, pdf]To create."""
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
If you use Japanese, you cannot use Export as PDF on the menu bar.
Because the documentclass of \ documentclass [a4paper, dvipdfmx] {jsarticle}
is generated in English.
So create a tex file with jsarticle applied to the style
If you prepare a template file (here, jsarticle.tplx), it will be rewritten to jsarticle and generated.
When executing the nbconvert command
.tplx
file exists in the nb command directory--template jsarticle.tplx
in the nbconvert option.Execute
jupyter nbconvert --to latex --template jsarticle.tplx lualatex <filename>
The specific method is as follows.
~~ 1. Put jsarticle.tplx
in the place where the environment variable of tex passes (such as where platex.exe is) ~~
<...> is your Anaconda directory. In my case,
C: \ tools \ Anaconda3 \
.
jupyter-nbconvert --to latex% 1 --template jsarticle.tplx
, which automatically converts to jsarticle, into the terminal. % 1 is the file name and% 2 is the file base name. 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 *))
reference: Memo of Hashikure engineer-Jupyter nbconvert (file conversion) memo Automatically create HTML with Qiita --Jupyter notebook
So far, I wrote it in sublime text-build format and executed it with build (ctrl + b). (Therefore, the file name may be% 1 or an 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
Below here, you have to retype the file name, not% 1 and% 2 as arguments.
platex% 2.tex
.sty file isn't there, but keep pressing Enter to continue.dvipdfmx% 2.dvi
The pdf has been created so far.
SumatraPDF -reuse-instance% 2.pdf
nbextensions
If you check with nbextention, the settings will be saved in ~ / .jupyter / nbconfig / notebook.json
.
My environment looks like this
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"
}
Nbextensions edit menu item
"nbextensions_configurator/config_menu/main": true,
Nbextension config
is added to the menu bar ʻEdit, and you can move to the nbextension screen by clicking it. It's easy to understand and convenient because you usually have to enter
localhost: 8888 / nbextensions /` in the address field of your browser.
Nbextensions dashboard tab
"nbextensions_configurator/config_menu/main": true,
The nbextension settings menu appears in the menu bar of the Jupyter Notebook home screen.
I want to set either Nbextensions edit menu item
.
Select CodeMirror Keymap
"select_keymap/main": true,
Can vim and Sublime text keymaps be darker than the default?
For example, even if I put Sublime in the keymap by default, I couldn't do "Select in parentheses" ctrl + shift + m
or" Select multiple lines "ctrl + alt + up <down>
. Can be executed by setting to True.
Convenient and unavoidable "Multiple selection of selected character strings" ctrl + d
often overlaps with" Register bookmark "of the browser, so I change the key with an add-on.
For Firefox, Menu Wizard For Chrome Keyconfig
Split Cells Notebook
"splitcell/splitcell": true,
Divide into left and right paragraphs.
Shortcut key is Shift + S
"stored_keymap": "sublime"
Collapsible Headings
"collapsible_headings/main": true,
You can close cells for each hierarchy of Heading (markdown cell heading #
).
Freeze
"freeze/main": true,
read-only: Can be executed but cannot be rewritten
frozen: cannot be written or executed
Codefolding
"codefolding/main": true,
Fold the indented code.
Shortcut key is ʻalt + f`
Hide input
"hide_input/main": true,
Hide individual cell inputs.
Hide input all
"hide_input_all/main": true,
Hide input in all cells. Only the result can be output, which is convenient for creating pdfs and presentations.
Move selected cells
"move_selected_cells/main": true,
It seems that you can move cells with Alt + ↑ / Alt + ↓, but for some reason I can't do it in my environment
Code prettify
"code_prettify/code_prettify": true,
If you press the hammer icon that appears when you enable it, it will fix the python code so that it follows pep8 etc.
Modifying python code has to drop yapf.
conda install --channel https://conda.anaconda.org/conda-forge yapf
I haven't tried it, but for R ʻinstall.packages ("formatR", repos = "http://cran.rstudio.com")`
For javascript, you have to drop the module to format with npm install js-beautify
.
"toggle_all_line_numbers/main": true,
Number all cells with row numbers.
It is possible to assign a cell number to each cell with the default setting (shortcut L
) of jupyter-notebook, so do not use it.
Limit Output
"limit_output/main": true,
If you write the following function to ~ \ .jupyter \ jupyter_notebook_config.py
, the output will be automatically collapsed when the output of 1000 lines or more is output.
from notebook.services.config import ConfigManager
cm = ConfigManager().update('notebook', {'limit_output': 1000})
"execute_time/ExecuteTime": true,
Display the execution time.
Only the cell selected from Cell
on the menu bar / Execution time display can be switched in all cells.
Printview
"printview/main": true
You can easily see the preview converted to html or pdf format without doing Download as ...
.
"highlighter/highlighter": true, Markdown cell highlights
"dragdrop/main": true, Image embedding. In markdown cell
<img src="http://127.0.0.1:8888/notebooks/myimage.png "/>
You can write it like this, but for those who want to make progress with D & D.
Python Markdown
"python-markdown/main": true,
A mix of python code and markdown.
"keyboard_shortcut_editor/main": true,
An edit icon for keyboard shortcuts is added to the keyboard shortcut list.
To call a keyboard shortcut, search for show keyboard shortcut
from the command palette (ctrl + shift + p), or press h
in normal mode.
Launch QTConsole
"qtconsole/qtconsole": true,
Start qtcosele by taking over the objects on the current kernel. I don't like the fact that ~~ style remains the default white. ~~ ← Solved. Write to jupyter_qtconsole_config.py
as follows
Create ~ / .jupyter / jupyter_qtconsole_config.py
c.JupyterWidget.syntax_style = "monokai"
If you type in, it will always start up in the monokai
style when you start up qtconsole.
** If you just want to give it a try, we recommend the Scratchpad
listed below **
Scratchpad notebook extension
"scratchpad/main": true,
Useful when you want to easily try out the code without polluting the current kernel.
Display the input screen on the right side of the screen
Shortcut key is ctrl + b
Navigation-Hotkeys
"navigation-hotkeys/main": true
Add a new shortcut key (likely)
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
reference Memo like a Hashikure engineer --Try using the extension of Jupyter Notebook Add Qiita --extension to build a more comfortable Jupyter environment
JupyterNotebook Shortcut key, TeX, image embedding, etc., a lot of information to be covered (copy and paste)
Explanation of python development environment including Jupyter, Ipython as well as Jupyter Notebook
Recommended Posts