たくさんの図とテキストを含む大きなノートブックがあります。 HTMLファイルに変換したいです。ただし、コードをエクスポートする必要はありません。私は次のコマンドを使用しています
ipython nbconvert --to html notebook.ipynb
ただし、このオプションはコードもエクスポートします。コードなしでノートブックをhtmlに変換する方法はありますか?
this 興味深い記事を見つけました。入力列を削除する方法を説明しています。
変換するノートブックと同じディレクトリに「hidecode.tplx」という名前のテンプレートファイルを作成し、その行を追加するだけです。
((*- extends 'article.tplx' -*))
((* block input_group *))
((*- if cell.metadata.get('nbconvert', {}).get('show_code', False) -*))
((( super() )))
((*- endif -*))
((* endblock input_group *))
そして、このコマンドを実行した後、pdfLatexを使用して、ラテックス経由でPDFのノートブックを変換します。
jupyter nbconvert --to pdf --template hidecode Example.ipynb
または、編集する場合は、.texドキュメントに変換し、pdfLatexを使用してpdfに配置できます。
jupyter nbconvert --to latex --template hidecode Example.ipynb
2018年9月編集:ipython nbconvert
は非推奨です。 jupyter nbconvert
に置き換えられます。したがって、コマンドipython
をjupyter
に置き換えます。
SOで同じ質問を探していましたが、最終的には非常に簡単な方法になりました。
Firefox(57)+ Win7を使用すると仮定
F12
コンソールで次のコマンドを実行します。
document.querySelectorAll("div.input").forEach(function(a){a.remove()})
このコードは、すべての入力div DOMを削除します。その後、right mouse button
を選択し、[ページに名前を付けて保存]を選択し、[完全なページ](単一ページではない)を保存します。
Windowsに関連付けられたフォルダーを含むページが表示されます。 htmlページをZip圧縮してから、関連するものをアンバインドするために抽出します。フォルダーは役に立たない。
これで、コードのない単一のhtmlページになりました。再配布するか、PDFとして印刷できます。
FirefoxまたはWindowsを使用していない場合は、上記の3〜6の手順を調整してください。
このcssをページに追加して、ブラウザーからPDFに印刷できます。コードは非表示であり、削除されないことに注意してください。
div.output_Prompt { visibility: hidden; }
*{ font-family: "Palatino Linotype", "Book Antiqua", Palatino, serif !important }
.input,#header { display: none; }
コードを確実に削除するには、次のようなものを使用する必要があります
$(".input").remove()
私が知っている限りでは、ラテックスを介してコードを含まないPDFを生成する方法はありません。
方法は次のとおりです。ノートブックをhtmlとしてダウンロードするだけです。
次に、このpythonスクリプトを実行してHTMLファイルを変換し、プロンプトとコードセルが消えるようにします。
FILE = "/somewhere/myHTMLFile.html"
with open(FILE, 'r') as html_file:
content = html_file.read()
# Get rid off prompts and source code
content = content.replace("div.input_area {","div.input_area {\n\tdisplay: none;")
content = content.replace(".Prompt {",".Prompt {\n\tdisplay: none;")
f = open(FILE, 'w')
f.write(content)
f.close()
このスクリプトは、クラス 'Prompt'または 'input_area'のすべてのdivにCSS 'display:none'属性を基本的に追加します。
nbconvert
はテンプレートを使用してノートブックのJSONをドキュメントに変換します。たとえば、nbconvertに付属のマークダウンテンプレートでは、markdown.tpl
:
{% block input %}
{% if nb.metadata.language_info %}{{ nb.metadata.language_info.name }}{% endif %}
{{ cell.source}}
{% endblock input %}
各セルのソースを出力に出力します。 {{ cell.source}}
を削除すると、セルのソースは印刷されません。 HTMLおよびLatexテンプレートにも対応するブロックがあります。
さらに良いことに、あなたが望むものを正確に実行する独自のテンプレートを作成してください:)
この回答 の一般化として、hidecodeテンプレートに複数の場所からアクセスできるようにするため:
次のディレクトリに移動します(user_name
をユーザー名に変更します):
cd /home/<user_name>/.jupyter
このディレクトリの下にjupyter_nbconvert_config.py
を作成します。
以下を.py
ファイルに書き込みます(user_name
をユーザー名に変更します):
c = get_config()
c.TemplateExporter.template_path = ['.', "/home/<user_name>/.jupyter" ]
c.LatexExporter.template_path = ['.', "/home/<user_name>/.jupyter"]
このディレクトリの下に、hidecode.tplx
またはhidecode.tpl
という名前のテンプレートファイルを作成します。
((*- extends 'article.tplx' -*))
((* block input_group *))
((*- if cell.metadata.get('nbconvert', {}).get('show_code', False) -*))
((( super() )))
((*- endif -*))
((* endblock input_group *))
次に、次のコードが生成されますPDF without .ipynb
files 'code(Change file_name
your your name):
jupyter nbconvert --to pdf '<file_name>.ipynb' --template=hidecode.tpl