Ich möchte in der Lage sein, bestimmte Abschnitte meiner Dokumente abhängig von einer Befehlszeilendeklaration „ein-/auszuschalten“.
Ich konvertiere eine große Gruppe von Richtliniendokumenten, die sowohl für den internen als auch für den externen Gebrauch bestimmt sind, über Pandoc ins PDF-Format, wobei ich eine LaTeX-Vorlage verwende, und Pandoc verwendet pdfTeX. Ich habe auch ein PowerShell-Skript, das sie rekursiv konvertiert.
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}
Externe Versionen benötigen den Abschnitt mit den Dokumentdetails nicht, der die erste Seite nach dem Inhaltsverzeichnis ist. Ich könnte die dritte Seite wahrscheinlich entfernen, aber es gibt einige Dokumente mit langen Inhaltsverzeichnissen und einige ohne, und außerdem scheint mir das keine elegante Lösung zu sein.
Mein typisches Dokument sieht ungefähr so aus (YAML und Inhalt der Kürze halber reduziert):
---
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
Wie kann ich dem Markdown jeder Richtlinie, die möglicherweise in der Vorlage behandelt wird, eine Art Umbruch hinzufügen, sodass ich in der Befehlszeile etwas wie das Folgende hinzufügen kann, um den Inhalt des Tags automatisch wegzulassen/einzuschließen.
-V Documentdetails:True
Vielen Dank im Voraus für Ihre Hilfe!
Antwort1
Sie könnten eine
\iftrue
Document details
\fi
und sagen Sie Ihrem Powershell-Skript, dass es iftrue durch iffalse ersetzen und eine neue Kopie kompilieren soll.
Bearbeiten: Wenn Sie alle internen Dinge wie unten mit \begininternal
und umgeben \endinternal
, können Sie umschalten, ob das Dokument für eine interne oder eine externe Kopie des PDFs ist, indem Sie in der zweiten Zeile iffalse
durch ersetzen iftrue
. Dann müssen Sie Ihr Skript nur noch so einstellen, dass es sagt: „Wenn extern, iffalse durch iftrue ersetzen und kompilieren“ oder so ähnlich.
\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}