0

我想In [35]:jupyter-nbconvert --to latex.

一旦有一个模板,style_simple.tplx几乎可以满足我的要求,但现在它已被删除,它的配套模板style_bw_ipython.tplx等等。仍然分发,但不再使用新的 nbconvert。

我知道我必须用模板语言编写一个临时模板jinja2,但jinja2模板语法和它的使用nbconvert都让我无法理解,尽管我做了很多尝试。

鉴于我无法编写这样的模板,我正在寻求有关该任务的帮助。

4

1 回答 1

5

出现提示的两个地方是inputexecute_result块。

默认输入块:

((* block input scoped *))
    ((( add_prompt(cell.source | highlight_code(strip_verbatim=True), cell, 'In ', 'incolor') )))
((* endblock input *))

我们可以将其替换为将突出显示的源代码直接放在逐字块中的块中,而不是添加提示:

((* block input scoped *))
\begin{Verbatim}[commandchars=\\\{\}]
((( cell.source | highlight_code(strip_verbatim=True) )))
\end{Verbatim}
((* endblock input *))

对于输出,我们可以使用 execute_result 输出实际上与 display_data 输出相同的事实,只是添加了提示。所以我们可以告诉我们的模板显示 execute_result 输出与 display_data 相同:

((* block execute_result scoped *))
    ((* block display_data scoped *))
        ((( super() )))
    ((* endblock display_data *))
((* endblock execute_result *))

将它们放在一个自定义模板中,扩展默认article模板:

% extend the default article template:
((* extends 'article.tplx' *))

% display input without prompts:
((* block input scoped *))
\begin{Verbatim}[commandchars=\\\{\}]
((( cell.source | highlight_code(strip_verbatim=True) )))
\end{Verbatim}
((* endblock input *))

% treat execute_result (output with prompt) as display_data (output without prompt)
((* block execute_result scoped *))
    ((* block display_data scoped *))
        ((( super() )))
    ((* endblock display_data *))
((* endblock execute_result *))

如果我们调用这个文件noprompts.tplx,那么我们可以使用它:

jupyter nbconvert --to latex --template noprompts mynotebook.ipynb
于 2016-06-24T11:58:08.237 回答