在jupyter笔记本中隐藏代码

时间:2017-11-12 23:46:14

标签: python jupyter-notebook

我有一个jupyter笔记本,它是markdown和代码的混合体。最后,我想将其作为pdf报告呈现出来并隐藏代码。我仍然希望看到代码,图表和表格的输出,我只是不想在最终报告中看到代码。我发现下面的帖子中有下面的代码,如果添加到笔记本中,会创建一个切换按钮,可用于隐藏或显示输入代码。问题是我最终在报告的顶部有一个切换按钮。有谁知道怎么做?

发表:

http://chris-said.io/2016/02/13/how-to-make-polished-jupyter-presentations-with-optional-code-visibility/

代码:

<script>
  function code_toggle() {
    if (code_shown){
      $('div.input').hide('500');
      $('#toggleButton').val('Show Code')
    } else {
      $('div.input').show('500');
      $('#toggleButton').val('Hide Code')
    }
    code_shown = !code_shown
  }

  $( document ).ready(function(){
    code_shown=false;
    $('div.input').hide()
  });
</script>
<form action="javascript:code_toggle()"><input type="submit" id="toggleButton" value="Show Code"></form>

4 个答案:

答案 0 :(得分:3)

您可以通过创建自定义nbconvert模板轻松实现所需目的。这意味着您的实时笔记本仍然可以显示输入,但是当您转换为pdf时,它会隐藏输入。

创建扩展标准乳胶模板article.tplx的模板文件(乳胶模板也用于pdf转换)

custom.tplx:

% Inherit from the article.tplx
((* extends 'article.tplx' *))

% remove inputs
((* block input_group *))
((* endblock input_group *))

然后使用以下命令转换您的笔记本

jupyter nbconvert --template=custom.tplx --to=pdf your_notebook.ipynb

以下是使用自定义模板的文档:http://nbconvert.readthedocs.io/en/latest/customizing.html#Custom-Templates

答案 1 :(得分:3)

如果您不想编写自己的模板,并且不会对输出感到困扰,可以使用hide_input_all nbextension作为jupyter contrib nbextensions包的一部分提供的here 。这提供了隐藏所有代码单元的输入(但不是输出)的按钮,以及设置元数据项,允许您使用包提供的模板将隐藏的输入导出到html,latex或pdf:

jupyter nbconvert --template=nbextensions --to=html my_notebook.ipynb

答案 2 :(得分:2)

我确定您现在已经弄清楚了,但是您只需在单元格顶部添加注释即可: # @hidden_cell

答案 3 :(得分:0)

请阅读How to print out from Jupyter Notebook without code blocks

基本上,您需要添加CSS。

如果要打印代码,请使用@media print{}。如果要在屏幕上显示它,则需要将其取出并运行。

将以下内容粘贴到单元格中并运行它。然后从浏览器的文件>打印中将其打印出来。所有代码和输出块都应该消失。

  • 您可以根据需要修改CSS。
  • 您可以创建一个模板并将其用作基础,因此您不需要 将代码粘贴到单元格中。
%%html
 <style>
    @media print { 
    div.input {
      display: none;
      padding: 0;
    }

    div.output_prompt {
      display: none;
      padding: 0;
    }

    div.text_cell_render {
      padding: 1pt;
    }

    div#notebook p,
    div#notebook,
    div#notebook li,
    p {
      font-size: 11pt;
      line-height: 135%;
      margin: 0;
    }

    .rendered_html h1,
    .rendered_html h1:first-child {
      font-size: 16pt;
      margin: 7pt 0;
    }

    .rendered_html h2,
    .rendered_html h2:first-child {
      font-size: 14pt;
      margin: 6pt 0;
    }

    .rendered_html h3,
    .rendered_html h3:first-child {
      font-size: 13pt;
      margin: 6pt 0;
    }

    div.output_subarea {
      padding: 0;
    }
    }

    @page {
      size: A4;
    }
  </style>