ユーザーが変更する可能性のある変数が、ノートブック全体で個別のセルにグループ化されるように、ノートブックを設計しています。これらのセルを別の背景色で強調表示して、ノブがどこにあるかをユーザーに明らかにしたいと思います。
どうすればそれを達成できますか?
注意: この関連する質問 は静的コードの強調表示(マニュアル用)であり、受け入れられた回答は基本的にすべてをマークアップコメント。私の場合、強調表示されたコードを実行可能なセルに入れます。
ここに行きます(Python kernelを使用している場合):
from IPython.display import HTML, display
def set_background(color):
script = (
"var cell = this.closest('.jp-CodeCell');"
"var editor = cell.querySelector('.jp-Editor');"
"editor.style.background='{}';"
"this.parentNode.removeChild(this)"
).format(color)
display(HTML('<img src onerror="{}">'.format(script)))
次に、次のように使用します。
set_background('honeydew')
解決策は少しハックですが、よりエレガントな解決策が見られれば幸いです。デモ:
Firefox 60およびChrome 67でJupyterLab 0.32.1を使用してテスト済み。
セルマジックとして編集するには、次のようにします。
from IPython.core.magic import register_cell_magic
@register_cell_magic
def background(color, cell):
set_background(color)
そしてそれを次のように使用します:
%%background honeydew
my_important_param = 42
krassowskiのコード への小さな追加(コメントとして追加しようとしましたが、フォーマットを機能させることができませんでした)。
from IPython.core.magic import register_cell_magic
from IPython.display import HTML, display
@register_cell_magic
def bgc(color, cell=None):
script = (
"var cell = this.closest('.jp-CodeCell');"
"var editor = cell.querySelector('.jp-Editor');"
"editor.style.background='{}';"
"this.parentNode.removeChild(this)"
).format(color)
display(HTML('<img src onerror="{}">'.format(script)))
このように、あなたはそれを魔法として、そして通常の関数呼び出しの両方で使うことができます:
bgc('yellow')
bla = 'bla'*3
または
%%bgc yellow
bla = 'bla'*3
nbconvert
で変換されたセルの色のみを変更する必要がある場合は、テンプレートを作成しますmytemplate.tpl
をフォルダーに追加します。
{% extends 'full.tpl'%}
{% block any_cell %}
{% if 'highlight' in cell['metadata'].get('tags', []) %}
<div style="background:lightpink">
{{ super() }}
</div>
{% else %}
{{ super() }}
{% endif %}
{% endblock any_cell %}
(公式 docs から転載)
..次に、セルにタグ「highlight」を追加します。 Jupyterラボでは、選択したセルの左側でこれを行うことができます:
次に、テンプレートを使用してnbconvertでノートブックを変換します。
jupyter nbconvert --to html 'mynb.ipynb' --template=mytemplate.tpl
結果のHTMLは次のようになります。
これは、特定のセルを読者に強調するのに適していることがわかりました。