我希望能够根据命令行声明“打开/关闭”文档的某些部分。
我正在通过 Pandoc 将一大批供内部和外部使用的政策文件转换为 PDF,使用 LaTeX 模板,而 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}
外部版本不需要文档详细信息部分,即目录后的第一页。我或许可以删除第三页,但有些文档有较长的目录,有些则没有,除此之外,在我看来这不是一个优雅的解决方案。
我的典型文档看起来像这样(为了简洁起见,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
我如何才能为每个策略的 markdown 添加某种包装,这也许是在模板中处理的,以便我可以在命令行上添加类似下面的内容来自动省略/包含标签的内容。
-V Documentdetails:True
提前感谢您提供的任何帮助!
答案1
你可以有一个
\iftrue
Document details
\fi
并告诉你的 powershell 脚本用 iffalse 替换 iftrue 并编译一个新的副本。
\begininternal
编辑:如果您用和包围所有仅供内部使用的内容\endinternal
(如下所示),那么您可以通过在第二行替换iffalse
来切换文档是用于 pdf 的内部副本还是外部副本iftrue
。然后,您只需让脚本说“如果是外部的,则将 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}