nbconvert --to latex,删除所有提示

gbo*_*ffi 0 jinja2 ipython-notebook jupyter jupyter-notebook nbconvert

我想In [35]:从生成的LaTeX中删除典型的IPython提示jupyter-nbconvert --to latex.

一旦有了模板,style_simple.tplx几乎就是我想要的,但现在它已经被移除了,otoh它的配套模板,style_bw_ipython.tplx等等.仍然分发但不再使用新的nbconvert工作.

我知道我必须在模板语言中编写一个临时模板jinja2,但是jinja2模板语法及其使用nbconvert都没有理解我的理解,尽管我做了很多尝试.

鉴于我无法编写这样的模板,我正在寻求这项任务的帮助.

min*_*nrk 5

两个地方出现的提示是inputexecute_result阻止.

默认输入模块:

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

我们可以用一个块来替换它,该块将突出显示的源代码直接放在逐字块中,而不是添加提示:

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

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

((* block execute_result scoped *))
    ((* block display_data scoped *))
        ((( super() )))
    ((* endblock display_data *))
((* endblock execute_result *))
Run Code Online (Sandbox Code Playgroud)

将它们放在一个自定义模板中,扩展默认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 *))
Run Code Online (Sandbox Code Playgroud)

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

jupyter nbconvert --to latex --template noprompts mynotebook.ipynb
Run Code Online (Sandbox Code Playgroud)