コマンドライン宣言に応じて、ドキュメントの特定のセクションを「オン/オフ」できるようにしたいと思います。
私は 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 に置き換えてコンパイルする」などのように記述するだけです。\endinternal
iffalse
iftrue
\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}