如何为Jupyter nbconvert编写Jinja2模板以显示降价并抑制输出数量?

时间:2017-12-29 15:38:28

标签: python latex jinja2 jupyter-notebook nbconvert

我正在尝试编写Jinja2模板,使用Jupyter notebook通过LaTexnbconvert转换为PDF。我当前的尝试不显示Markdown单元格或图像标题,并且还在我的所有matplotlib图形上方显示以下输出:

out[1]: <matplotlib.axes._subplots.AxesSubplot at 0x2e62e885cc0>

我想显示markdown单元格和标题,并禁止matplotlib对象描述。

我当前的模板改编自nbconvert github repo上托管的模板,如下所示:

% Default to the notebook output style
((* if not cell_style is defined *))
    ((* set cell_style = 'style_ipython.tplx' *))
((* endif *))

% Inherit from the specified cell style.
((* extends cell_style *))


%===============================================================================
% Latex Book
%===============================================================================

((* block docclass *))
\documentclass{report}
((* endblock docclass *))

% Author and Title from metadata
((* block maketitle *))
((*- if nb.metadata["latex_metadata"]: -*))
((*- if nb.metadata["latex_metadata"]["title"]: -*))
    \title{((( nb.metadata["latex_metadata"]["title"] )))}
((*- endif *))
((*- else -*))
    \title{((( resources.metadata.name )))}
((*- endif *))

\date{\today}
\maketitle
((* endblock maketitle *))

((* block markdowncell scoped *))
((( cell.source | citation2latex | strip_files_prefix | convert_pandoc('markdown+tex_math_double_backslash', 'json',extra_args=[]) | resolve_references | convert_pandoc('json','latex', extra_args=["--chapters"]) )))
((* endblock markdowncell *))


% Disable input cells
((* block input_group *))
((* endblock input_group *))

1 个答案:

答案 0 :(得分:0)

这似乎不是一个很好的回答,&#34;但你有没有尝试在代码单元的最后一行末尾使用分号? Jupyter的正常行为是显示代码单元返回的最后一个对象。如果您的最后一行与matplotlib有关,那么该行代码通常会返回一个matplotlib对象,您通常不会对此感兴趣。例如:

from matplotlib.pyplot import plot, xlabel, grid
from numpy import linspace, sin
x = linspace(-20, 20, 200)
plot(x, sin(x))
grid()
xlabel('x')

按照您的描述生成输出。以下不生成单行打印。唯一的区别是最后的分号。

from matplotlib.pyplot import plot, xlabel, grid
from numpy import linspace, sin
x = linspace(-20, 20, 200)
plot(x, sin(x))
grid()
xlabel('x');

避免输出的另一种方法是重新排列线条。 grid()函数通常会返回None,因此如果您将该行放在最后,则也不会输出。

这是你要问的吗?