Me gustaría poder "activar/desactivar" ciertas secciones de mis documentos, dependiendo de una declaración de línea de comando.
Estoy convirtiendo un gran grupo de documentos de políticas que son para uso interno y externo, a través de Pandoc, a PDF, usando una plantilla LaTeX, y Pandoc está usando pdfTeX. También tengo un script de PowerShell que los convierte de forma recursiva.
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}
Las versiones externas no necesitan la sección de detalles del documento, que es la primera página después de la tabla de contenido. Probablemente podría eliminar la tercera página, pero hay algunos documentos con ToC largos y otros sin ellos, además, no me parece una solución elegante.
Mi documento típico se parece a este (YAML y contenido reducidos para mayor brevedad):
---
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
¿Cómo puedo agregar algún tipo de ajuste a la rebaja de cada política, que quizás se trate en la plantilla, de modo que pueda agregar algo como lo siguiente en la línea de comando para omitir/incluir automáticamente el contenido de la etiqueta?
-V Documentdetails:True
¡Gracias de antemano por cualquier ayuda que puede proporcionar!
Respuesta1
Podrías tener un
\iftrue
Document details
\fi
y dígale a su script de PowerShell que reemplace iftrue con iffalse y compile una nueva copia.
Editar: si rodea todo el material interno con \begininternal
y \endinternal
como se muestra a continuación, puede alternar entre si el documento es para una copia interna o externa del pdf reemplazándolo iffalse
con iftrue
en la segunda línea. Luego solo necesita que su script diga "si es externo, reemplace iffalse con iftrue y compile" o algo así.
\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}