2017-02-15 7 views
1

Iは Notebook1.ipydb を値下げ[Notebook2](Notebook2.ipynb)とその逆と Notebook2.ipydb へのリンクを含むような別の一つに連結された複数Jupyterノートブックを持っています。リンクされたJupyterノートブックをエクスポートして保存する方法は?

nbconvertですべてのノートブックをHTMLにエクスポートすると、Notebook2.ipynbへのリンクが保持されます。そのリンクをエクスポートしたNotebook2.htmlに変更して、リンクされたHTMLファイルが静的なWebサイトとして機能するようにしたいと思います。

私はget_ipython().__class__.__name__を使用してiPythonで動作しているかどうかを検出しようとしましたが、このコードを実行してからに変換してからHTMLに変換しました。

条件付きで適切なマークダウンを行うために静的ファイルを検出する方法はありますか?リンクされたノートブックを保存する別の方法はありますか?

答えて

3

実際には2つのオプションしかありません。 1つ目はNotebook2.htmlにリンクし、もう1つはnbconvertのカスタムプリプロセッサを作成することです。

c.HTMLExporter.preprocessors = ['CustomPreprocessor.CustomPreprocessor']

これは、カスタムすることを前提としています。そして、あなたのnbconvert設定ファイル(~/.jupyter/jupyter_nbconvert_config.pyに位置するか、またはコマンドjupyter nbconvert --generate-configを使用して生成することができる)に行を追加し、ファイルへ

from nbconvert.preprocessors import Preprocessor 
import re 


class CustomPreprocessor(Preprocessor): 

    def preprocess_cell(self, cell, resources, index): 

     if 'source' in cell and cell.cell_type == "markdown": 
      cell.source = re.sub(r"\[(.*)\]\(\1\.ipynb\)",r"[\1](\1.html)",cell.source) 

     return cell, resources 

保存は、この、プリプロセッサフ​​ァイルの名前はCustomPreprocessorで、変換しようとしているファイルと同じディレクトリにあります。また、モジュールとして適切にインストールすることもできます。

+0

良い解決策。正規表現には 'r '\ [([^])*)\] \(([^)] *)\。ipynb \)" 'を使い、' r "[\ 1](\ 2.html)置換テキストのための ""。このようにして、リンクテキストはファイル名の最初の部分と一致する必要はありません。 –

+0

@TheodoreNorvell正規表現はより一般的であるため、正規表現が本当に優れています。あなたは私の答えが好き嬉しい:) –

+0

クールなもの、また私のために働いた。私はすでに 'nbconvert.HTMLExporter'インスタンスを持っていました。これはプリプロセッサを[register_preprocessor](http://ipython.org/ipython-doc/3/api/generated/IPython.nbconvert.exporters.exporter.html# IPython.nbconvert.exporters.exporter.Exporter.register_preprocessor)。このように私は設定に触れる必要はありませんでした。 – Jeronimo

関連する問題