新增 LaTeX「標籤」以在命令列中包含/排除 Markdown 的部分

新增 LaTeX「標籤」以在命令列中包含/排除 Markdown 的部分

我希望能夠根據命令列聲明“打開/關閉”文件的某些部分。

我正在使用 LaTeX 範本透過 Pandoc 將大量供內部和外部使用的政策文件轉換為 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}

外部版本不需要文件詳細資訊部分,該部分是目錄之後的第一頁。我可能可以刪除第三頁,但有些文件有很長的目錄,有些則沒有,除此之外,我覺得這不是一個優雅的解決方案。

我的典型文件看起來像這樣(為了簡潔起見,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 並編譯新副本。

編輯:如果您用 和 包圍所有內部內容\begininternal,如下所示,那麼您可以透過在第二行替換來\endinternal切換文件是用於 pdf 的內部副本還是外部副本。然後你只需要讓你的腳本說「如果是外部的,用 iftrue 取代 iffalse 並編譯」之類的。iffalseiftrue

\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}

在此輸入影像描述

相關內容