Jupyterノートブック用のLaTeXテンプレートのセットアップ

コードに関する優れた本をトレーニング/レポート/作成するための優れたツール、 Jupyter Notebookがあります。 たとえば、レポートや本がキリル文字で書かれていて、美しい数式と正しい長さのダッシュでPDFをすばやく作成する必要がある場合、すぐに問題が見つかります:Jupyterがメモ帳をLaTeX経由でPDFに変換するために使用する標準テンプレートには、必要なパッケージはありません必要なパラメータを使用しているため、LaTeXはコンパイルされず、PDFを取得できません。



永続的な仮定:Jupyterについて説明します。これは、IPython 4リリースのメインIPythonプロジェクトから切断されました。 IPython 3.xについて話したい場合は、 ipython



jupyter



ipython



に置き換え、ファイル名の不一致の可能性を確認してください。 PDFを生成するには、コマンドライン( jupyter nbconvert --to pdf myfile.ipynb



)か、Webインターフェースのボタンとしてダウンロード-> LaTeX経由のPDFを使用します。



不足しているパッケージの問題を解決する最も簡単な方法は、 jupyter nbconvert --to latex myfile.ipynb



で、結果のTeXソースを開き、不足しているパッケージを追加します。 ソース( pdflatex myfile.tex



または他の誰でも好きなもの)をコンパイルし、目標を達成します。



問題が1行で解決しない場合(テンプレートを大幅に変更する必要があり、LaTeXへの変換の不快な結果を詳しく調べたくない場合)/ノートブックがたくさんある/より一般的な解決策が必要な場合は、続行します。



TL; DR :キリル文字のpdfを取得するには、 2つのファイルを自分に追加します(リンクは短い説明付きのコメントにつながります)。



メモ帳をLaTeXに変換するには、標準のテンプレートを使用するのではなく、ヘッダーを拡張し、最も正しいフォントと企業テーマを使用する必要があることをコンバーターに説明する必要があります。



 jupyter nbconvert --to pdf --template mytemplate.tplx myfile.ipynb
      
      





問題: mytemplate.tplx



nbconvert



起動されたディレクトリにのみ正常に配置され、Webインターフェイスを介してテンプレートを記述する方法が明確ではありません。



設定ファイル



まず、ファイルの構成と場所について。 これは、独自の設定ファイルを作成することですぐに解決されます。 nbconvert



の構成ファイルは、Pythonコードファイルです。 コンバーターを呼び出すときに設定ファイルを指定する方法:



 jupyter nbconvert --to pdf --config cfg.py myfile.ipynb
      
      





設定ファイルは次のようになります。



 c = get_config() c.NbConvertApp.export_format = 'pdf' c.TemplateExporter.template_path = ['.'] c.Exporter.template_file = 'article'
      
      





ここで、 export_format



export_format



のデフォルト値、 template_path



template_path



を含むディレクトリのリストです。ここでは、nbconvertが開始されたディレクトリでテンプレートファイルを検索する必要があることを示しています。 。



ここでjupyter notebook --config cfg.py



を実行すると、変換のためのすべての設定が最初に構成ファイルから取得されます。これは必要なものです。 ユーザーがnbconvert



起動したときにこれらの設定をデフォルトにするには、 ~/.jupyter/jupyter_nbconvert_config.py



ファイルに設定する必要があります。 したがって、 notebook



一般設定ファイルは~/.jupyter/jupyter_notebook_config.py



です。



パターン



最も興味深い部分は、テンプレートの作成方法です。 テンプレートは、 Jinja2テンプレートエンジンを使用して作成されます。 特殊なLaTeX文字との競合を避けるために、テンプレートエンジンのサービスシーケンスが再定義されます (最初の{



((



、残りの{



by (



、バックブラケットミラー付き)にNBCONVERT_INSTALLATION_DIR/nbconvert/templates/latex/



られます。デフォルトで使用されるテンプレートのセットはNBCONVERT_INSTALLATION_DIR/nbconvert/templates/latex/



ます。 Githubのnbconvert-examplesリポジトリでテンプレートの例を見つけることもできます。さまざまな設計オプションのスクリーンショットはこのリポジトリのセクションのいずれかのreadmeで見つけることができます。



個人的に必要なすべてが実行される独自のテンプレートを作成する方法は? いくつかの必要なものを書き込むファイルmytemplate.tplx



を作成します。



まず、コードでセルを描画する特定のスタイルを定義するテンプレートから慎重に継承します( 例のように )。



 % Default to the notebook output style ((* set cell_style = 'style_notebook.tplx' *)) % Inherit from the specified cell style. ((* extends cell_style *))
      
      





ここでは、標準ではないがnbconvert-examplesにあるstyle_notebook.tplx



テンプレートから継承します。 このテンプレートは、明らかに古いバージョンのnbconvert向けに作成されているため、 ((* extends 'latex_base.tplx' *))



((* extends 'base.tplx' *))



に変更する必要があります。



次に、将来のLaTeXファイルの\documentclass



決定し、ヘッダーを作成しません(代わりに、 .ipynb



ファイルのメタデータまたは他の場所からヘッダーを取得するコードを作成できます)。



 ((* block docclass *)) \documentclass{article} ((* endblock docclass *)) ((* block maketitle *))((* endblock maketitle *))
      
      





第三に、キリル文字のサポート(およびお気に入りのさらに1つまたは2つ)で目的のパッケージを接続します。



 ((* block packages *)) ((( super() ))) % load all other packages \usepackage[T2A]{fontenc} \usepackage[english, russian]{babel} \usepackage{mathtools} ((* endblock packages *))
      
      





ブロックの完全なリストは、 nbconvert/templates/latex/skeleton/null.tplx



およびnbconvert/templates/latex/base.tplx



されています(これらはGitHubへのリンクでもあります)。



結果のテンプレートを特定のプロジェクトではなく、すべてのノートブックで使用する場合は、たとえば~/.jupyter/templates/



し、設定ファイルの対応する行を変更できます(相対パスがまさにそのようなコメントであることに感謝します動作しません):



 import os c.TemplateExporter.template_path = ['.', os.path.expanduser('~/.jupyter/templates/')]
      
      





コードでセルをレンダリングするためのテンプレートを少し修正した後([*]の碑文が気に入らなかった)、これらのレポート(PDFファイルからのスクリーンショット)を取得しました。










All Articles