IPythonノートブックコードセルのデフォルト表示に行番号を含めたい。
IPython/Jupyter Notebooksで行番号を表示する から、これをctrl-MLで切り替えることができることを学びました。デフォルトで行番号を含めるには、ipython_notebook_config.pyファイルに何かを追加する必要があります。私が何かを見逃していない限り、ドキュメントでこれを行う方法の説明はありません。
_custom.js
_ファイル(場所はOSによって異なります)
_IPython.Cell.options_default.cm_config.lineNumbers = true;
_
Custom.jsが見つからない場合は、単に検索できますが、通常はprofile_defaultフォルダーにあります。存在しない場合は、$(ipython locate profile)/static/custom/custom.js
でファイルを作成します
何らかの理由で機能しない場合は、_custom.js
_内の_site-packages/IPython/html/static/custom/
_ファイルを同じ方法でいつでも編集できます。
(Jupyter 4+の場合)最新のJupyterバージョンでは、 ドキュメント化された 構成を変更する場所があります。基本的に、Jupyterの更新では、プロファイルの概念が削除されたため、_custom.js
_フォルダーの場所に応じて、_.jupyter/custom/custom.js
_ファイルの場所は_.jupyter
_になりました。したがって、custom
フォルダーまたは_custom.js
_ファイルがない場合は、それらを作成してから、これらの行を新しく作成したファイルに追加します。
_define([
'base/js/namespace',
'base/js/events'
],
function(IPython, events) {
events.on("app_initialized.NotebookApp",
function () {
require("notebook/js/cell").Cell.options_default.cm_config.lineNumbers = true;
}
);
}
);
_
上記は、行番号をすべてのセルタイプに同時に設定するためのものです。これを行うと、コード、マークダウン、および未加工のセルはすべて行番号を取得します。行番号コードセルのみが必要な場合は、より簡単な方法があります。コードセルを選択し、Chrome/Firefox JavaScriptコンソールを開き、次の行を入力します。
_var cell = Jupyter.notebook.get_selected_cell();
var config = cell.config;
var patch = {
CodeCell:{
cm_config:{lineNumbers:true}
}
}
config.update(patch)
_
次に、ページをリロードします。 Jupyterが_.jupyter/nbconfig
_にjson設定ファイルを作成して保存するため、これらの変更は持続します。このメソッドはドキュメントの このページ からのものであるため、設定を変更するためにドキュメントを参照してください。
(古い回答)
IPython Notebookの最新バージョン(v3.1.0)で、_~/.ipython/<profile_name>/static/custom/custom.js
_に移動し、次の行を追加します。
_define([
'base/js/namespace',
'base/js/events'
],
function(IPython, events) {
events.on("app_initialized.NotebookApp",
function () {
IPython.Cell.options_default.cm_config.lineNumbers = true;
}
);
}
);
_
_IPython.Cell.options_default.cm_config.lineNumbers = true;
_行だけでは、これを試行する前にIPython.Cellオブジェクトをロードする必要があるため機能しません。この行のみを追加すると、コンソールで未定義のエラーが発生します。図に示すように、イベントハンドラーに入れる必要があります。
@ William-Denmanのコードは以前のバージョンでも機能していたかもしれませんが、今はこれを行う必要があります。
編集:最新バージョンのIPython/Jupyterの場合、真ん中のコード行をrequire("notebook/js/cell").Cell.options_default.cm_config.lineNumbers = true;
に変更する必要があります(IPython 4.0.0、Jupyter 4.0。 6)。古い_IPython.Cell
_オブジェクトも動作しますが、Webコンソールは非推奨の警告をスローするため、将来のバージョンでは古い行がサポートされないことが予想されます。
また、 WinPython portable を使用して実行している最新のIPython/Jupyterでは、プロファイルフォルダー内に_custom.js
_ファイルが見つかりませんでした。 _WinPython-64bit-2.7.10.3\python-2.7.10.AMD64\Lib\site-packages\notebook\static\custom
_で( much 検索後)見つけました。これがWinPythonのものかJupyterのものかはわかりません。誰かがJupyter(最新バージョン)を正常に(pipなどを使用して)インストールしても、プロファイルフォルダーで_custom.js
_ファイルを見つけることができる場合は、コメントしてください。
~/.jupyter/nbconfig/notebook.json
次の行を追加するために追加する必要がありました。
"CodeCell": {
"cm_config": {
"lineNumbers": true
}
そこにあったオブジェクトの内部。したがって、最終的なオブジェクトは次のようになります。
{
"CodeCell": {
"cm_config": {
"lineNumbers": true
}
}
}