2016-01-15 7 views
10

У меня есть большой ноутбук с большим количеством цифр и текста. Я хочу преобразовать его в html-файл. Однако я не хочу экспортировать код. Я использую следующую командуЭкспорт записной книжки в pdf без кода

ipython nbconvert --to html notebook.ipynb 

Но этот вариант также экспортирует код. Есть ли способ конвертировать ноутбук в html без кода?

+1

Возможный дубликат [Как скрыть код из ячеек в ноутбуке ipython, визуализированный с помощью nbviewer?] (Http://stackoverflow.com/questions/27934885/how-to-hide-code-from-cells-in-ipython- ноутбук-визуализированный-с-nbviewer) –

+0

Вы хотите экспортировать в PDF (ваш заголовок) или в HTML (в теле вашего вопроса)? или, возможно, оба? – gboffi

+0

скажем, оба @gboffi – aloha

ответ

4

Вы можете добавить этот css на свою страницу и затем распечатать в PDF из браузера. Обратите внимание, что код скрыт, а не удален.

div.output_prompt { visibility: hidden; } 
*{ font-family: "Palatino Linotype", "Book Antiqua", Palatino, serif !important } 
.input,#header { display: none; } 

Чтобы убедиться, что вы удалите код, который вы должны использовать что-то вроде

$(".input").remove() 

Насколько я знаю, нет никакого способа, чтобы генерировать с помощью латекса в PDF, который не содержит код. Было бы здорово иметь расширение для ноутбука jupyter, которое делает это, хотя ...

2

использует шаблоны для преобразования JSON ноутбука в документ; например, в шаблоне уценки, который поставляется с nbconvert, markdown.tpl:

{% block input %} 
{% if nb.metadata.language_info %}{{ nb.metadata.language_info.name }}{% endif %} 
{{ cell.source}} 
{% endblock input %} 

который печатает источник каждой ячейки на выходе. Если вы удалите {{ cell.source}}, источник ячейки не будет распечатан. В шаблонах HTML и Latex есть соответствующие блоки.

еще лучше, сделать свой собственный шаблон, который делает именно то, что вы хотите :)

1

Я нашел this статье это интересно объяснить, как удалить входные столбцы:

вы должны просто создать файл шаблона с именем «hidecode.tplx» в том же каталоге, что и ноутбук, который требуется преобразовать и добавить эти строки в нем:

((*- extends 'article.tplx' -*)) 

((* block input_group *)) 
    ((*- if cell.metadata.get('nbconvert', {}).get('show_code', False) -*)) 
     (((super()))) 
    ((*- endif -*)) 
((* endblock input_group *)) 

и после запуска этой команды он будет использовать pdfLatex конвертировать ноутбук в PDF с помощью латекса:

ipython nbconvert --to pdf --template hidecode Example.ipynb 

или если вы хотите изменить вы можете преобразовать его в .tex документ и использовать pdfLatex, чтобы поместить его в PDF:

ipython nbconvert --to latex --template hidecode Example.ipynb 

Надеется, что это поможет другим.

0

В качестве обобщения this answer, так что hidecode шаблон может быть доступен из нескольких мест:

  1. Перейти в следующую папку (Change user_name с именем пользователя):

    cd /home/<user_name>/.jupyter 
    
  2. Создайте jupyter_nbconvert_config.py под эту директорию.

  3. Написать следующий код в .py файла (Change user_name с именем пользователя):

    c = get_config() 
    c.TemplateExporter.template_path = ['.', "/home/<user_name>/.jupyter" ] 
    c.LatexExporter.template_path = ['.', "/home/<user_name>/.jupyter"] 
    
  4. Создать файл шаблона в этой директории с именем hidecode.tplx или hidecode.tpl:

    ((*- extends 'article.tplx' -*)) 
    
    ((* block input_group *)) 
        ((*- if cell.metadata.get('nbconvert', {}).get('show_code', False) -*)) 
          (((super()))) 
        ((*- endif -*)) 
    ((* endblock input_group *)) 
    
  5. Затем следует создать PDF-код без .ipynb кодов файлов (смените file_name на имя вашего файла):

    jupyter nbconvert --to pdf '<file_name>.ipynb' --template=hidecode.tpl 
    
1

Вот как я это делаю: я просто загрузить мой ноутбук, как HTML.

Затем запустите этот питон скрипт для преобразования этого файла HTML, так что подсказки и код клетки исчезли:

FILE = "/somewhere/myHTMLFile.html" 

with open(FILE, 'r') as html_file: 
    content = html_file.read() 

# Get rid off prompts and source code 
content = content.replace("div.input_area {","div.input_area {\n\tdisplay: none;")  
content = content.replace(".prompt {",".prompt {\n\tdisplay: none;") 

f = open(FILE, 'w') 
f.write(content) 
f.close() 

Этот сценарий Bascially добавляет «дисплей: нет» CSS не атрибут для всех дивы класса «проворная» или 'input_area'.