ホームページ >テクノロジー周辺機器 >IT業界 >PandocとLaTexを使用してMarkdownからPDFを作成します

PandocとLaTexを使用してMarkdownからPDFを作成します

Joseph Gordon-Levitt
Joseph Gordon-Levittオリジナル
2025-02-19 09:48:09132ブラウズ

Creating PDFs from Markdown with Pandoc and LaTeX

コアポイント

この記事の著者であるChris Wardは、オープンソースボードゲームチップショップにPandocとLaTexを使用してMarkdownファイルをPDFに変換する方法を説明します。ゲームコンポーネントはMarkdownを使用して記述され、ゲームWebサイトもこれらのファイルによって生成されます。

Pandoc(オープンソースマークアップ変換ツール)とLaTex(ドキュメント宣言とレイアウトシステム)を使用して、MarkdownファイルからPDFを生成します。強力な機能にもかかわらず、複数のPDFを単一ページに結合することはできないため、WardはコマンドラインツールPDFJAMを使用してこの要件を満たしています。

著者は、必要な依存関係(Markdown、Jekyll、Pandoc、LaTex、PDFJAM)のインストール方法に関する詳細なガイドを提供し、マークダウンからPDFを生成し、ラテックスファイルの作成、PDFJAMを使用してカードを転送するなど、ビルドプロセスを徐々に導入します。 1つのページに組み合わせます。

著者の理想的なワークフローは、訪問者がそれを要求するときではなく、ウェブサイトを生成しながらPDFファイルを生成することです。また、このアプローチにより、PDFカードバージョンは、複雑なCSSルールを使用せずにHTMLページとは異なるように見えます。

Creating PDFs from Markdown with Pandoc and LaTeX プロジェクトの一環として、私はゲーム全体を可能な限りオープンしようとしました。数回の試みの後、私はほとんどのゲームコンポーネント(特にカードと指示)の基本的なフレームワークとしてMarkdownを使用することにしました。

ゲームWebサイトではJekyllを使用しているため、ゲームWebサイトはMarkdownファイルから生成されます。ゲームのプレミアムプレボックス付きの自己印刷バージョンを作成します。これにより、MarkdownファイルからPDFを生成する必要があります。

ターゲット

私の理想的なワークフローは、訪問者がそれを要求するときではなく、ウェブサイトを生成しながらPDFファイルを生成することです。これは、生成されたHTMLからPDFを生成しているため、私が通常PDF生成に使用するwkhtmltopdfを除外します。もう1つの理由は、PDFカードバージョンをHTMLページとは異なるように見せたいということです。Jekyllには、複雑なCSSルールを使用せずにこれを実現するための「ビューモード」機能がありません。

チップショップゲームのカードマークダウンテンプレートファイルには、ゲームメカニクス用の多くのマークダウン前情報フィールドが含まれています。すべてのカードがすべてのカードで使用されるわけではありません。簡単に印刷するには、A4ページにカードをできるだけ何度も配置する必要があります。この場合、3×3グリッドです。最終的に、ページは両側に印刷する必要がありますが、まだ実装していません。

pandocとlatex

MarkdownからPDFソリューションを生成するWeb検索は、Pandocのパスに導かれます。 Pandocは、さまざまな入力および出力マーク形式をサポートするオープンソースのスイスアーミーナイフマーク変換ツールです。

pandocを使用してPDFを生成するには、LaTexが必要です。ラテックスは科学研究コミュニティに由来し、文書宣言およびレイアウトシステムです。 PandocとLaTexと組み合わせて、変数を使用して一連のMarkdownファイルからPDFを生成し、マークダウンの情報をサポートできます。

強力なPandocとLaTexにもかかわらず、特にMarkdownファイルで変数を使用する場合、複数のPDF(カード)を単一ページに組み合わせる方法が見つかりません。多くの調査の後、私はこのニーズのための簡単なコマンドラインツールであるPDFJAMを選択しました。

依存関係のインストール

マークダウン

エディターが必要であることに加えて、追加のマークダウンソフトウェアは必要ありません。編集者がたくさんいます。選択するためにいくつかのSitePoint記事を読むことをお勧めします。

jekyll

Jekyllを使用して、ゲームから取得した例でビルドプロセスを説明し続けますが、Webサイトが必要ない場合は、PDF世代の必要な部分ではありません。

pandoc

Macでは、HomeBrewを使用してPandocをインストールしましたが、すべてのオペレーティングシステムには対応するオプションがあります。

latex

ニーズや使用方法に応じて、ラテックスをインストールする最良の方法については多くの言葉があります。その一般的なツールとライブラリの完全な設置は2GBに近い場合がありますが、ほとんどの目的では、最小限のインストールで十分です。プロジェクトのダウンロードページを読んで、最適なオプションを見つけてください。

このチュートリアルでは、カスタムフォントを使用するため、Xelatexエンジンを使用します。ただし、必要な特定の機能を提供するエンジンを選択できます。

pdfjam

LaTexのインストール方法によっては、PDFJAMをインストールした可能性があります。 (ターミナルのPDFJAMを入力して確認してください。)インストールがない場合は、こちらのインストールの詳細を探してください。

ビルディングプロセス

ある程度検討した後、私は地元で実行されているBashスクリプトを実行しています。現時点では最良の選択肢のようです。より良い方法がありますが、それは機能し、後でプロセスを改善し、連続統合システムまたはGitフックに転送することができます。

githubでbashスクリプトを表示します。

このスクリプトを段階的に紹介しましょう。

設定

<code class="language-bash">bundle install
bundle update

rm -dfr _site
rm -dfr pod</code>
これらのコマンドにより、JekyllがWebサイトを構築するために必要なRubyの依存関係が最新であり、既存のWebサイトと印刷フォルダーを削除しました。

Webサイトを作成します

<code class="language-bash">jekyll build
mkdir -p pod/pdf/cards</code>
次に、Webサイトを構築し、カードの印刷バージョン用のフォルダーを作成します。

Markdown

からPDFを生成します

各マークダウンファイルPDFバージョンを含むフォルダーを作成しましょう。

このスクリプトは、_Cardsディレクトリ内の各マークダウンファイルを処理し、マークダウンプレフォーメーションフィールドを必ず監視します。 Cards.Latexテンプレート(後でカバーします)を使用して、正しいLaTexエンジンは適切な名前でPDFを出力します。

<code class="language-bash">for filename in _cards/*.md; do
  echo $filename
  pandoc --from=markdown+yaml_metadata_block --template _layouts/cards.latex -o pod/pdf/cards/"$(basename "$filename" .md)".pdf --latex-engine=xelatex $filename
done</code>
latexファイル

Pandocからカードファイルを生成する魔法のほとんどは、LaTexテンプレートで発生します。

Githubでラテックステンプレートを表示します。

ラテックスは私にとって新しいものですが、それほど複雑ではありません。デフォルトのLATEXファイル(pandoc_install_dir/data/templates/default.latex)から変更したものを説明して、カードを適切に動作させます。 LaTexファイルを編集するときにプレビューするために、shareLatex.comをお勧めします。

<code class="language-bash">bundle install
bundle update

rm -dfr _site
rm -dfr pod</code>

特定のページサイズが必要であり、列を使用して後でカードのコストとスコアを表示します。グラフィックとカスタムフォントを使用しているため、これらのパッケージが必要です。

明確で簡潔なシンプルなレイアウトを作成しようとしています。実装方法は次のとおりです

<code class="language-bash">jekyll build
mkdir -p pod/pdf/cards</code>
上記の多くは、コードやタグ付けに慣れている人にとっては非常に簡単に理解できると思います。カードの要素を作成し、それらを調整し、フォントサイズを設定し、値があるかどうかを確認し、カードが空のフィールドにならないように出力します。

画像を特定のサイズにサイズ変更し、中央に配置します。コストとスコアの値は2つの列に配置され、begin {tabular}コマンドを使用して設定され、列の数はlの数を使用して設定されます。

Creating PDFs from Markdown with Pandoc and LaTeX 1ページにカードを組み合わせる

PDFJAMを使用して、個々のPDFカードで大きなPDFファイルを作成します。

このコマンドを使用して、以下を指定します

ページの向きは常に垂直
<code class="language-bash">for filename in _cards/*.md; do
  echo $filename
  pandoc --from=markdown+yaml_metadata_block --template _layouts/cards.latex -o pod/pdf/cards/"$(basename "$filename" .md)".pdf --latex-engine=xelatex $filename
done</code>
でなければなりません

個々のPDFはフレーム化する必要があります

    グリッドサイズ
  • ファイル名接尾辞
  • ファイル名
  • PDFJAMは、作業ディレクトリに出力していない場合、エラーを発生させる可能性があるため、ファイルを実際に望む場所に移動します(将来解決されることを願っています)。ここでは、単一のPDFファイルを必要としない場合は削除することもできます。
  • それだけです - 私たちはウェブサイトとゲームカードの印刷可能なPDFを持っています。

スクリプトを実行

Creating PDFs from Markdown with Pandoc and LaTeX を使用してビルドスクリプトを実行します。多くの画像とPDF処理があるため、約5〜10分かかります。次に、これらのフォルダーをWebサーバーに展開するための個別のスクリプトがあります。

次のステップ

./build.sh

このプロセスは、それを正しくするのに少し時間がかかりましたが、ゲームテスト後もプロセスとレイアウトを改善し続けるのに十分です。

私の研究と実験があなたのプロジェクトに役立つと思うことを願っています。コメントや提案がある場合は、お知らせください。

PandocとLaTexを使用してMarkdownからPDFを作成することについての

FAQ(FAQS)私のシステムにPandocとLaTexをインストールする方法は?

Pandocをインストールするには、公式Webサイト(

https://www.php.cn/link/8f1dd6e7a88b9cf615c146330c591ba9

PandocとLaTexを使用して作成されたPDFSの外観をカスタマイズできますか?

はい、LaTexテンプレートを使用して、PDFの外観をカスタマイズできます。 Pandocはデフォルトのテンプレートを使用してPDFSを生成しますが、オプションを使用して独自のテンプレートを指定できます。独自のテンプレートを作成したり、Wandmalfarbe Pandoc LaTexテンプレートGitHubリポジトリにあるなど、オンラインで利用可能な多くのテンプレートのいずれかを使用できます。 --template

PandocとLaTexを使用してMarkdownファイルをPDFに変換する方法は?

マークダウンファイルをPDFに変換するには、端末またはコマンドプロンプトで次のコマンドを使用できます:

。 Markdownファイルの名前にpandoc yourfile.md -o yourfile.pdfを置き、yourfile.mdをPDFファイルの目的の名前に置き換えます。このコマンドは、Pandocに、デフォルトのLatexテンプレートを使用してMarkdownファイルをPDFに変換するように指示します。 yourfile.pdf

(FAQコンテンツの残りの部分は元のテキストと同じです。ここでは、複製を避けるために省略しています)

以上がPandocとLaTexを使用してMarkdownからPDFを作成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。