Pandoc を使用して、Googleスライドから切り替えて、MarkdownドキュメントからReveal.jsプレゼンテーションを作成します。最初から、さまざまなイベントや講義のプレゼンテーションを複数のファイルから自動的に組み合わせることにしました。したがって、複数の場所でコンテンツを絶えず更新しなくても、別々のスライドを維持する方が簡単です。
今のところ、ソリューションは Codekit (キット言語を使用)とpandocを組み合わせています。したがって、プレゼンテーションの個々の部分はエディターで準備され、@ importステートメントを含む単一の.kit
ファイルで参照され、結果のMarkdownファイルはpandocによって処理され、HTMLプレゼンテーションが作成されます(最後の部分はSublimeによって実行されます)テキストビルドシステム)。
Pandocがそれを食べるたびに結合されたMarkdownファイルを自動的に前処理するある種のスクリプトを使用して、このプロセスを何らかの方法で単純化したいと思います。 StackExchangeにはHaskellフィルターを参照する投稿がありますが、Haskellのインストールは私の小さなシステムには大きすぎます(最低800Mb)。
他の種類のプログラミング言語やトリックでファイルを含める方法はありますか?たとえば、pandocコマンドで名前を連結することで複数のファイルを結合できることは知っていますが、それではワークフローがスムーズまたは高速になるわけではありません。
私はついにその仕事をするいくつかの方法を見つけました。
1つ目は Pythonで記述されたpandocフィルターを含む (pandoc docsで説明されているHaskellフィルターと同じように機能します)を使用することです。ただし、現在は一般的なコンテンツではなく、含まれているコードブロックでのみ使用するように適合されています。
2番目の方法は、ビルドコマンドの前に追加できるインラインPerlスクリプトを使用することです(最初に見られるのは ここ )。このパスは有用であることが証明されており、しばらくはそれを使い続けます。
以下は、Reveal.js形式でスライドショーを作成するために使用するコマンドです(これは一部のWebホスティングにアップロードすることを目的としていますが、pandocの_--self-contained
_オプションを使用して自己完結型のスライドショーファイルを作成するための他のビルドバリアントがありますまたは、たとえば、スライドショーに関連するすべてのファイルをデスクトップ上のフォルダに「収集」します):
Perl -ne 's/^#\\((.+)\\).*/`cat \"${project_path/\\//\\\\\\//g}\\$1\"`/e;s/\\((\\/_common\\/img)/(\\/presentations\\$1/g;print' ${file_base_name}.md > result.md && pandoc -s -t revealjs --variable revealjs-url=http://www.site.com/presentations/_common/resources/revealjs --css=http://www.site.com/presentations/_common/resources/customcss_sky.css -H ${project_path}/_common/resources/customhtml.html --highlight-style haddock result.md -o index.html && trash result.md
このコマンド:
trash
ユーティリティを使用して一時ファイルを破棄します。Haskellは特に適していますが、原則として、任意の言語でpandocフィルターを作成できます。 pandocfilters ライブラリを使用すると、Pythonで簡単に記述できます。
これが pandocフィルターのチュートリアル です。これには、インクルードファイル用のサンプルHaskellフィルターが含まれています。これは、pandocfiltersを使用してpythonフィルターに変換するのは非常に簡単です。
Pandocfiltersリポジトリの examples のディレクトリも参照してください。