コマンドラインから Markdown のセクションを含める/除外するための LaTeX の「タグ」を追加する

コマンドラインから Markdown のセクションを含める/除外するための LaTeX の「タグ」を追加する

コマンドライン宣言に応じて、ドキュメントの特定のセクションを「オン/オフ」できるようにしたいと思います。

私は Pandoc 経由で、社内および社外向けの大量のポリシー ドキュメントを LaTeX テンプレートを使用して PDF に変換しています。Pandoc は pdfTeX を使用しています。また、それらを再帰的に変換する PowerShell スクリプトもあります。

gci -r -i *.md | foreach{$pdf=$_.directoryname+"\"+$_.basename+".pdf"; pandoc -f markdown --template template.latex -V geometry:margin=1.5cm -V fontfamily:lato -V fontfamilyoptions:default -V fontfamilyoptions:defaultsans -s $_.name -o $pdf}

外部バージョンでは、目次の次の最初のページであるドキュメントの詳細セクションは必要ありません。おそらく 3 ページ目を削除することもできますが、長い目次があるドキュメントもあれば、ないドキュメントもあり、その上、エレガントな解決策とは思えません。

私の典型的なドキュメントは次のようになります (簡潔にするために YAML とコンテンツは削減されています)。

---
title: "A policy"
documentdetails: True/false % I could add something here for the default?
...

Table of contents:

\documentdetailstart % A tag looking like this for instance

# Document Details

#### Document Details

| Description | Status/Version | Reference Code | Control |
| --- |---|---|---|
|A Policy | Final / 1.0 | LaTeX | All |

\documentdetailend % A tag looking like this for instance

Begin Document

おそらくテンプレートで処理される各ポリシーのマークダウンに何らかのラッピングを追加して、コマンドラインに以下のようなものを追加し、タグの内容を自動的に省略/含めることができるようにするにはどうすればよいですか。

-V Documentdetails:True

ご協力いただける場合は、事前に感謝いたします。

答え1

あなたは

\iftrue
Document details
\fi

そして、PowerShell スクリプトに iftrue を iffalse に置き換えて新しいコピーをコンパイルするように指示します。

編集:以下のように内部専用のものをすべて と で囲むと、2 行目の を に置き換えることで、ドキュメントが PDF の内部コピー用か外部コピー用かを切り替えることができます\begininternal。次に、スクリプトに「外部の場合は、iffalse を iftrue に置き換えてコンパイルする」などのように記述するだけです。\endinternaliffalseiftrue

\documentclass{article}
\let\begininternal\iffalse
\let\endinternal\fi

\begin{document}
Stuff everyone gets

\begininternal
Internal  only stuff
\endinternal

More stuff everyone gets

\begininternal
More internal only stuff
\endinternal

The end.
\end{document}

ここに画像の説明を入力してください

関連情報