永続的な仮定: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ファイルからのスクリーンショット)を取得しました。