Kalibrierschein
Das Projekt enthält eine LaTeX-Dokumentenklasse und andere Komponenten zur Erzeugung eines PTB-konformen Kalibrierscheins.
Zur Erzeugung der PDF-Datei ist Folgendes zu tun:
lualatex kalibrierschein-test.tex # oder: xelatex kalibrierschein-test.tex
Vorausgesetzt wird eine aktuelle TeX-Distribution (getestet mit »TeX Live 2020« unter Linux).
Es sind zwei LaTeX-Läufe nötig, um alle Referenzen (z.B. Anzahl der Seiten)
aufzulösen. Der TeX-Compiler muss auch Zugriff auf die Grafikdateien
Adler.pdf
, PTB-Logo.pdf
und CIPM-MRA.png
haben.
Im Repositorium ist weiterhin das LaTeX-Paket siunitx-PTB.sty
enthalten. Es
stellt eine Erweiterung des LaTeX-Pakets
»siunitx.sty«
dar. Darin enthalten ist die automatische Anpassung an deutsche bzw. englische
Gepflogenheiten (z.B. ,
statt .
als Dezimaltrenner) sowie die Erweiterung
der unterstützten Maßeinheiten, auch wenn sie nicht SI-konform sein sollten
(derzeit nur für die Belange des Vakuum-Labors).
Die Datei kalibrierschein-test.tex
ist zuvor aus einer Template-Datei
entstanden, indem die in dieser enthaltenen Variablen durch tatsächliche Werte
ersetzt wurden. Diese Werte werden durch Analyse einer DCC-XML-Datei ermittelt.
Das Python-Script sample_cal_creation.py
zeigt das Prinzip:
./sample_cal_creation.py templates/kalibrierschein-test.tex.tpl < kalibrierschein-test.xml > kalibrierschein-test.tex
Der einzige notwendige Parameter ist die Template-Datei. Die XML-Struktur wird
auf stdin
erwartet und die resultierende LaTeX-Datei wird nach stdout
geschrieben (Unix-Filter).
Derzeit werden nur Informationen, die auf der Titelseite des Kalibrierscheins
verwendet werden, extrahiert (Erweiterung ist geplant). Das Python3-Script
sample_cal_creation.py
verwendet die verbreiteten Python-Bibliotheken
»python-lxml« (XML-Verarbeitung) und
»python-Jinja2« (Template-Verarbeitung) jeweils in
der Python3-Version. Der hier beschriebene Ablauf kann auch per
make
in Gang gesetzt werden. Er wurde unter Linux (openSUSE) getestet.
Den Ersetzungsprozess, der von sample_cal_creation.py
vollzogen wird, kann
auch leicht in eine Serveranwendung ausgelagert werden (beispielsweise
basierend auf der Python-Bibliothek Flask
).
-- R.N.