From dcf129a853f09aecd4cc27c52da59d3289799cb8 Mon Sep 17 00:00:00 2001
From: Rolf Niepraschk <Rolf.Niepraschk@ptb.de>
Date: Wed, 20 Nov 2024 12:11:12 +0100
Subject: [PATCH] Neue Option "DS"="Digital Sealing"; Vereinfachung

---
 IK-2019.clo         |  13 -----
 KK-2019.clo         |  17 -------
 kalibrierschein.cls |  37 ++++----------
 ks-common.clo       | 114 ++++++++++++++++++++++++++++++++++----------
 4 files changed, 98 insertions(+), 83 deletions(-)
 delete mode 100644 IK-2019.clo
 delete mode 100644 KK-2019.clo

diff --git a/IK-2019.clo b/IK-2019.clo
deleted file mode 100644
index db52aac..0000000
--- a/IK-2019.clo
+++ /dev/null
@@ -1,13 +0,0 @@
-
-\ProvidesFile{IK-2019.clo}[2019/03/07 v1.0d IK class option (RN/PTB)]
-
-% Interne Kalibrierung
-
-\newcommand*\ks@nationalEmblem{\includegraphics[width=62bp]{Adler.pdf}}
-
-\newcommand*\ks@first@signature{}
-\newcommand*\ks@first@signature@content{}
-
-\endinput
-%%
-%% End of file `IK-2019.clo'.
diff --git a/KK-2019.clo b/KK-2019.clo
deleted file mode 100644
index ad88285..0000000
--- a/KK-2019.clo
+++ /dev/null
@@ -1,17 +0,0 @@
-
-\ProvidesFile{KK-2019.clo}[2020/10/13 v1.0e KK class option (RN/PTB)]
-
-% Kundenkalibrierung
-
-\newcommand*\ks@nationalEmblem{\includegraphics[width=62bp]{Adler.pdf}}
-\newcommand*\ks@first@signature{%
-  \put(\ks@tempdima,\ks@tempdimb){Im Auftrag}%
-  \put(\ks@tempdima,\ks@tempdimc){\scriptsize\itshape On behalf of PTB}%
-} 
-\newcommand*\ks@first@signature@content{%
-  \put(\ks@tempdima,\ks@tempdimb){\ks@byOrder}%
-}
-
-\endinput
-%%
-%% End of file `KK-2019.clo'.
diff --git a/kalibrierschein.cls b/kalibrierschein.cls
index 38796fe..9bb2d3b 100644
--- a/kalibrierschein.cls
+++ b/kalibrierschein.cls
@@ -1,7 +1,7 @@
 
 \RequirePackage{iftex}
 
-\iftutex\else% any 8-bit-TeX engine
+\iftutex\else% one of the UTF8-compatible engines
   \@latex@error{works only with `LuaLaTeX' or `XeLaTeX'}{%
     type:\MessageBreak 
     lualatex \jobname.tex\MessageBreak
@@ -14,45 +14,30 @@
 \setcounter{errorcontextlines}{100}
 \RequirePackage{ifdraft}
 \newcommand*\ks@location{Berlin}
-\newcommand*\ks@kalType{KK}
 \newcommand*\ks@layout{-2019}% derzeit nicht variabel
 \newcommand*\ks@langs{ngerman,main=english}
 \newif\ifnoCMC \noCMCfalse
+\newif\ifDigitalSealing \DigitalSealingfalse
+\newif\ifKK \KKtrue
 \newif\iftestreport \testreportfalse
 \NeedsTeXFormat{LaTeX2e}[1999/12/01]
 \ProvidesClass{kalibrierschein}
-  [2024/05/02 v0.7b documentclass PTB `Kalibrierschein' (RN/PTB)]
+  [2024/11/20 v0.8a documentclass PTB `Kalibrierschein' (RN/PTB)]
 \DeclareOption{BS}{\def\ks@location{Braunschweig}}
 \DeclareOption{BLN}{\def\ks@location{Berlin}}
-\DeclareOption{KK}{\edef\ks@kalType{\CurrentOption}}
-\DeclareOption{IK}{\edef\ks@kalType{\CurrentOption}}
-%\DeclareOption{2015}{\edef\ks@layout{-\CurrentOption}}
+\DeclareOption{KK}{\KKtrue}
+\DeclareOption{IK}{\KKfalse}
 \DeclareOption{german}{\def\ks@langs{english,main=ngerman}}
 \DeclareOption{ngerman}{\def\ks@langs{english,main=ngerman}}
 \DeclareOption{de}{\def\ks@langs{english,main=ngerman}}
 \DeclareOption{english}{\def\ks@langs{ngerman,main=english}}
 \DeclareOption{en}{\def\ks@langs{ngerman,main=english}}
 \DeclareOption{noCMC}{\noCMCtrue}
+\DeclareOption{DS}{\DigitalSealingtrue}
 \DeclareOption{testreport}{\testreporttrue}
 \DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrartcl}}
 \ProcessOptions\relax
-\PassOptionsToPackage{paper=a4,pagesize,twoside=false,headinclude}
-  {typearea}
-
-%Setze die richtige Kennung je nach CMC / Test Report
-\iftestreport
-  \ifnoCMC
-    \newcommand*\ks@doc@style@code{393 03A m}% Kennung der Word-Vorlage
-  \else
-    \newcommand*\ks@doc@style@code{393 03B o}% Kennung der Word-Vorlage
-  \fi
-\else
-  \ifnoCMC
-    \newcommand*\ks@doc@style@code{391 00A p}% Kennung der Word-Vorlage
-  \else
-    \newcommand*\ks@doc@style@code{391 00B q}% Kennung der Word-Vorlage
-  \fi
-\fi
+\PassOptionsToPackage{paper=a4,pagesize,twoside=false,headinclude}{typearea}
 
 \LoadClass[%
 ,fontsize=11pt
@@ -113,7 +98,7 @@ footskip=0bp,
 \def\tiny{\@setfontsize\tiny\@viipt\@viiipt}
 \let\ks@titelpagefont=\normalsize
 
-\RequirePackage{textcomp}% ???
+%\RequirePackage{textcomp}% ???
 
 \RequirePackage{url,array,xltabular}
 
@@ -138,8 +123,6 @@ footskip=0bp,
 \newcommand*\ks@PTB{Physikalisch-Technische Bundesanstalt}
 \newcommand*\ks@BSuB{Braunschweig und Berlin}
 
-\RequirePackage{picture}% TODO: noch nötig?
-
 \newdimen\ks@tempdima
 \newdimen\ks@tempdimb
 \newdimen\ks@tempdimc
@@ -209,7 +192,7 @@ footskip=0bp,
 \definecolor{PTBcolor}{RGB}{0,155,206}% TODO: Besser CMYK?
 
 \input{ks-common.clo}% Titelseiten- und Layout-Definition
-\input{\ks@kalType\ks@layout.clo}% Titelseiten- und Layout-Definition
+%%%\input{\ks@kalType\ks@layout.clo}% Titelseiten- und Layout-Definition
 
 \newcommand*\ks@type{%
   Typ des Ger\"ates}
diff --git a/ks-common.clo b/ks-common.clo
index 0ece938..92e2175 100644
--- a/ks-common.clo
+++ b/ks-common.clo
@@ -1,7 +1,30 @@
 
-\ProvidesFile{ks-common.clo}[2023/07/04 v0.7a common class option (RN/PTB)]
+\ProvidesFile{ks-common.clo}[2024/11/20 v0.8a common class option (RN/PTB)]
 
-%%% Definitionen, die ab 2019 gültig sind.
+\newcommand*\ks@nationalEmblem{\includegraphics[width=62bp]{Adler.pdf}}
+
+% Kennung je nach CMC / Test Report
+\iftestreport
+  \ifnoCMC
+    \newcommand*\ks@doc@style@code{393 03A m}% Kennung der Word-Vorlage
+  \else
+    \newcommand*\ks@doc@style@code{393 03B o}% Kennung der Word-Vorlage
+  \fi
+\else
+  \ifDigitalSealing
+    \ifnoCMC
+      \newcommand*\ks@doc@style@code{391 01A}% Kennung der Word-Vorlage
+    \else
+      \newcommand*\ks@doc@style@code{391 01B}% Kennung der Word-Vorlage
+    \fi
+  \else
+    \ifnoCMC
+      \newcommand*\ks@doc@style@code{391 00A p}% Kennung der Word-Vorlage
+    \else
+      \newcommand*\ks@doc@style@code{391 00B q}% Kennung der Word-Vorlage
+    \fi
+  \fi
+\fi
 
 % Wird per \AddToShipoutPicture absolut auf der Seite positioniert.
 \newcommand*\ks@printFirstPage{%
@@ -31,8 +54,8 @@
     %------------- Fuss ------------
     \normalfont\scriptsize
     \put(68,86){\parbox[t]{\textwidth}{%
-	  \iftestreport
-	  Prüfberichte ohne Unterschrift und Siegel haben keine G\"ultigkeit.
+    \iftestreport
+      Prüfberichte ohne Unterschrift und Siegel haben keine G\"ultigkeit.
       Dieser Prüfbericht darf nur unver\"andert weiterverbreitet\\
       werden. Ausz\"uge bed\"urfen der Genehmigung der
       Physikalisch-Technischen Bundesanstalt. 
@@ -45,27 +68,44 @@
       Physikalisch-Technische Bundesanstalt. 
       The presented results relate only to\\
       the items tested.
-	  %
-	  \else%
-	  %
-      Kalibrierscheine ohne Unterschrift und Siegel haben keine G\"ultigkeit.
-      Dieser Kalibrierschein darf nur unver\"andert weiterverbreitet\\
-      werden. Ausz\"uge bed\"urfen der Genehmigung der
-      Physikalisch-Technischen Bundesanstalt. 
-      Die dargestellten Ergebnisse beziehen\\
-      sich nur auf die kalibrierten Gegenstände.\\[.2ex]
-      \normalfont\itshape
-      Calibration certificates without signature and seal are not valid.
-      This calibration certificate may not be reproduced other than in
-      full. \\ Extracts may be taken only with permission of the
-      Physikalisch-Technische Bundesanstalt. 
-      The presented results relate only to\\
-      the items calibrated.
-	  \fi
+    %
+    \else%
+    %
+      \ifDigitalSealing
+        Dieser Kalibrierschein wurde automatisiert erstellt und ist ohne
+        Unterschrift wirksam. Dieser Kalibrierschein darf nur unverändert
+        weiterver\-breitet werden. Auszüge bedürfen der Genehmigung der
+        Physikalisch-Technischen Bundesanstalt. Die dargestellten Ergebnisse
+        beziehen\\
+        sich nur auf die kalibrierten Gegenstände.\\[.2ex]
+        \normalfont\itshape
+        This is a computer-generated Calibration Certificate. No signature is
+        required. This Calibration Certificate may not be reproduced other\\
+        than in full. Extracts may be taken only with the permission of the
+        Physikalisch-Technische Bundesanstalt. The presented results relate\\
+        only to the items calibrated.
+      \else
+        Kalibrierscheine ohne Unterschrift und Siegel haben keine G\"ultigkeit.
+        Dieser Kalibrierschein darf nur unver\"andert weiterverbreitet\\
+        werden. Ausz\"uge bed\"urfen der Genehmigung der
+        Physikalisch-Technischen Bundesanstalt. 
+        Die dargestellten Ergebnisse beziehen\\
+        sich nur auf die kalibrierten Gegenstände.\\[.2ex]
+        \normalfont\itshape
+        Calibration certificates without signature and seal are not valid.
+        This calibration certificate may not be reproduced other than in
+        full. \\ Extracts may be taken only with permission of the
+        Physikalisch-Technische Bundesanstalt. 
+        The presented results relate only to\\
+        the items calibrated.
+      \fi
+    \fi
     }}
   }
 }
 
+% TODO: Bei Positionierung nur absolute Zahlen verwenden (?).
+
 \newcommand\ks@put@main{%
   \normalfont\ks@titelpagefont
   \ks@tempdima=68bp %
@@ -140,18 +180,40 @@
   \advance\ks@tempdimb-30bp %
   %%%\ks@tempdimb=204bp %
   \ks@tempdimc=\ks@tempdimb \advance\ks@tempdimc-10bp %
-  \ks@first@signature
+  % First signature
+  \ifKK
+    \put(\ks@tempdima,\ks@tempdimb){Im Auftrag}%
+    \put(\ks@tempdima,\ks@tempdimc){\scriptsize\itshape On behalf of PTB}%    
+  \fi
   \put(\ks@tempdimd,\ks@tempdimb){\ks@location, \ks@certificateDate}
   \put(\ks@tempdime,\ks@tempdimb){Im Auftrag}
   \put(\ks@tempdime,\ks@tempdimc){\scriptsize\itshape On behalf of PTB}
   \advance\ks@tempdimb-24bp %
   \ks@tempdimc=\ks@tempdimb \advance\ks@tempdimc-10bp %
-  \put(\ks@tempdimd,\ks@tempdimb){Siegel}
-  \put(\ks@tempdimd,\ks@tempdimc){\scriptsize\itshape Seal}
+  \ifDigitalSealing
+    \begingroup
+      \linethickness{2bp}%
+      \put(209bp,112bp){%
+        \framebox(294bp,50bp){} 
+      }
+    \endgroup
+  \else
+    \put(\ks@tempdimd,\ks@tempdimb){Siegel}
+    \put(\ks@tempdimd,\ks@tempdimc){\scriptsize\itshape Seal}
+  \fi
   %--------------------------------
   \advance\ks@tempdimb-40bp %
-  \ks@first@signature@content
-  \put(\ks@tempdime,\ks@tempdimb){\ks@examiner} 
+  % First signature content
+  \ifKK
+    \ifDigitalSealing
+      \put(\ks@tempdima,183bp){\ks@byOrder}%
+      \put(\ks@tempdime,183bp){\ks@examiner} 
+    \else
+      \put(\ks@tempdima,\ks@tempdimb){\ks@byOrder}%
+      \put(\ks@tempdime,\ks@tempdimb){\ks@examiner} 
+    \fi
+  \fi
+  
   %--------------------------------
   \put(46bp,256bp){\rotatebox[origin=c]{90}{\tiny \ks@doc@style@code}}
 }
-- 
GitLab