Fügen Sie LaTeX-Tags hinzu, um Markdown-Abschnitte in die Befehlszeile einzuschließen/auszuschließen.

Fügen Sie LaTeX-Tags hinzu, um Markdown-Abschnitte in die Befehlszeile einzuschließen/auszuschließen.

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

Bildbeschreibung hier eingeben

verwandte Informationen