Хороший способ управления кодом в презентациях для программистов

574
Jens Schauder

В настоящее время я создаю семинар по программированию (на самом деле речь идет об ООД, но это не должно иметь большого значения).

У меня есть в основном два вида ресурсов:

  • слайды (HTML / show.js)
  • примеры проектов (Java)

Во многих местах код из примеров проектов должен появиться в презентации.

Какой хороший способ достичь этого?

Мои требования

  • простой способ указать фрагмент кода, который будет использоваться в презентации, и место, где он должен отображаться

  • Изменения в коде отражаются в презентации автоматически (запуск инструмента сборки в порядке, ручная вырезка и вставка - нет)

  • неработающие ссылки (например, попытка встроить фрагмент кода, который не существует, или пометка фрагмента, который не используется в презентации, должен создать предупреждение

  • Бонусные баллы за наличие ссылок между кодом и презентацией

2
Было бы очень полезно узнать причину закрытия голосования. Jens Schauder 8 лет назад 0

1 ответ на вопрос

3
ahus1

Asciidoctor http://asciidoctor.org/ might solve most of your requirements:

  • use plain ASCII to write the content
  • include code snippets from real source code files
  • broken links will create a warning when building the output
  • created presentations in reveal.js and deck.js

You'll find at https://github.com/asciidoctor/asciidoctor-gradle-examples some examples how to use Asciidoctor with gradle (but other build tools work as well).

You can browse the sample output here and you'll find a presentation rendered with deck.js and reveal.js (look for the sub-chapters 3.4 and 9.4 labeled "Outputs")

Another source of inspiration might be Dan Allan's set of decks: https://github.com/mojavelinux/decks

You also asked for links from the code back to the presentation. The best Asciidoctor can provide you AFAIK is that the tag you used to mark your code snippet in the code (// tag::XXX[]) will also be present in your presentation's source (include::Class.java[tags=XXX])