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

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

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

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

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

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

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

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

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

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

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

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

решение1

Ассиидокторhttp://asciidoctor.org/может удовлетворить большинство ваших требований:

  • используйте простой ASCII для записи содержимого
  • включить фрагменты кода из реальных файлов исходного кода
  • неработающие ссылки приведут к появлению предупреждения при формировании выходных данных
  • создал презентации в reveal.js и deck.js

Вы найдете наhttps://github.com/asciidoctor/asciidoctor-gradle-examplesнесколько примеров использования Asciidoctor с Gradle (но другие инструменты сборки тоже работают).

Ты можешьпросмотрите пример вывода здесьи вы найдете презентацию, созданную с помощью deck.js и reveal.js (ищите подразделы 3.4 и 9.4 с надписью «Выходные данные»)

Еще одним источником вдохновения может стать набор колод Дэна Аллана:https://github.com/mojavelinux/decks

Вы также запросили ссылки из кода обратно на презентацию. Лучшее, что может предоставить вам Asciidoctor, насколько мне известно, это то, что тег, который вы использовали для обозначения фрагмента кода в коде ( // tag::XXX[]), также будет присутствовать в исходном коде вашей презентации ( include::Class.java[tags=XXX])

Связанный контент