From 77f09f05f543d333c77963ca31210796d74a0f4b Mon Sep 17 00:00:00 2001 From: Steffen Jost Date: Thu, 9 Jun 2022 11:59:19 +0200 Subject: [PATCH] chore(pdf): pdf generation working with texlive-basic-scheme --- nix/docker/default.nix | 8 +- shell.nix | 15 ++-- src/Handler/Admin/Test.hs | 2 +- templates/letter/din5008.latex | 64 ++++++++++---- templates/letter/fraport_renewal.md | 45 ++++++++-- templates/letter/fraport_renewal_template.md | 91 -------------------- 6 files changed, 105 insertions(+), 120 deletions(-) delete mode 100644 templates/letter/fraport_renewal_template.md diff --git a/nix/docker/default.nix b/nix/docker/default.nix index 8252a192b..3c370201c 100644 --- a/nix/docker/default.nix +++ b/nix/docker/default.nix @@ -22,12 +22,14 @@ let uniworx.uniworx.components.exes.uniworx prev.dockerTools.binSh findutils coreutils iana-etc - # for PDFLaTeX for pandoc PDF creation + # for PDF creation with Pandoc and LuaTeX cups # needed for interface with print center #texlive.combined.scheme-medium # too large for container in LMU build environment. (texlive.combine { - inherit (texlive) scheme-basic xcolor "scrlttr2" - # lualatex + inherit (texlive) scheme-basic + babel-german babel-english booktabs + enumitem eurosym koma-script parskip xcolor + # required fro LuaTeX luatexbase unicode-math lualatex-math selnolig ; }) diff --git a/shell.nix b/shell.nix index 8c4467c71..6522c94a7 100644 --- a/shell.nix +++ b/shell.nix @@ -74,12 +74,17 @@ in pkgs.mkShell { ++ (with pkgs; [ nodejs-14_x postgresql_12 openldap google-chrome exiftool memcached minio minio-client gup skopeo - texlive.combined.scheme-medium + #texlive.combined.scheme-full # works + #texlive.combined.scheme-medium # texlive.combined.scheme-small - #(texlive.combine { - # inherit (texlive) scheme-basic xcolor scrlttr2 luatexbase unicode-math lualatex-math selnolig; - # ERROR: attribute 'scrlttr2' missing - gleicher Fehler kommt bei ausgedachten Namen, auch ohne Zahl am Ende - #}) + (texlive.combine { + inherit (texlive) scheme-basic + babel-german babel-english booktabs + enumitem eurosym koma-script parskip xcolor + # required fro LuaTeX + luatexbase lualatex-math unicode-math selnolig + ; + }) ] ) ++ (with pkgs.haskellPackages; [ stack yesod-bin hlint cabal-install weeder profiteur ]); diff --git a/src/Handler/Admin/Test.hs b/src/Handler/Admin/Test.hs index 7b7798f1e..9548fb76b 100644 --- a/src/Handler/Admin/Test.hs +++ b/src/Handler/Admin/Test.hs @@ -297,7 +297,7 @@ getAdminTestPdfR = do doc1 <- P.readMarkdown readeropts md doc2 <- P.writeMarkdown writeropts1 doc1 doc3 <- P.readMarkdown readeropts doc2 - P.makePDF "pdflatex" texopts P.writeLaTeX writeropts2 $ + P.makePDF "lualatex" texopts P.writeLaTeX writeropts2 $ P.setDate (P.text . tshow $ utctDay now) doc3 case content of Right (Right bs) -> do diff --git a/templates/letter/din5008.latex b/templates/letter/din5008.latex index 9af7f1941..6b40ab0c9 100644 --- a/templates/letter/din5008.latex +++ b/templates/letter/din5008.latex @@ -10,8 +10,51 @@ pagenumber=botright % show pagenumbers on bottom right ]{scrlttr2} -\usepackage[ngerman]{babel} +\PassOptionsToPackage{hyphens}{url} +\PassOptionsToPackage{unicode$for(hyperrefoptions)$,$hyperrefoptions$$endfor$}{hyperref} +\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available +\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}} +\hypersetup{ +$if(title-meta)$ + pdftitle={$title-meta$}, +$endif$ +$if(author-meta)$ + pdfauthor={$author-meta$}, +$endif$ +$if(lang)$ + pdflang={$lang$}, +$endif$ +$if(subject)$ + pdfsubject={$subject$}, +$endif$ +$if(keywords)$ + pdfkeywords={$for(keywords)$$keywords$$sep$, $endfor$}, +$endif$ +} +\usepackage{url} + \usepackage{iftex} + +%\usepackage[ngerman]{babel} +$if(lang)$ +\ifLuaTeX +\usepackage[bidi=basic]{babel} +\else +\usepackage[bidi=default]{babel} +\fi +\babelprovide[main,import]{$babel-lang$} +$for(babel-otherlangs)$ +\babelprovide[import]{$babel-otherlangs$} +$endfor$ +% get rid of language-specific shorthands (see #6817): +\let\LanguageShortHands\languageshorthands +\def\languageshorthands#1{} +$endif$ + +\ifLuaTeX + \usepackage{selnolig} % disable illegal ligatures +\fi + \ifPDFTeX \usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc} \usepackage[utf8]{inputenc} @@ -36,7 +79,6 @@ $endif$ \usepackage[right]{eurosym} -\usepackage[hyphens]{url} \usepackage{enumitem} \makeatletter @@ -51,11 +93,11 @@ $endif$ \providecommand{\tightlist}{% \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} -\begin{document} - \setkomavar{fromname}{$author$} - \renewcommand*{\raggedsignature}{\raggedright} - \setkomavar{fromaddress}{ - $for(return-address)$ +\begin{document}% + \setkomavar{fromname}{$author$}% + \renewcommand*{\raggedsignature}{\raggedright}% + \setkomavar{fromaddress}{% + $for(return-address)$% $return-address$$sep$\\ $endfor$ } @@ -76,14 +118,6 @@ $endif$ \opening{$opening$} - This paragraph is fixed within the template. - Not sure if this is the way to go though. - - \begin{description}[leftmargin=!,labelwidth=1.5cm,labelindent=1cm] - \item[Login] $login$ - \item[Pin] $pin$ - \end{description} - $body$ \closing{$closing$} diff --git a/templates/letter/fraport_renewal.md b/templates/letter/fraport_renewal.md index 9769aaea7..b62fa4527 100644 --- a/templates/letter/fraport_renewal.md +++ b/templates/letter/fraport_renewal.md @@ -6,18 +6,19 @@ author: Fraport AG - Fahrerausbildung (AVN-AR) phone: +49 69 690-30306 email: fahrerausbildung@fraport.de place: Frankfurt/Main -return-address: +return-address: - 60547 Frankfurt opening: Sehr geehrte Damen und Herren, closing: | Mit freundlichen Grüßen, Ihre Fahrerausbildung. encludes: +hyperrefoptions: hidelinks ### Metadaten, welche automatisch ersetzt werden: date: 11.11.1111 lang: de-de -is-de: NULL +is-de: true lms-login: 123456 lms-pin: abcdef # Emfpänger @@ -28,7 +29,8 @@ address: - Musterstraße 11 - 12345 Musterstadt ... - +$if(is-de)$ + die Gültigkeit Ihres Vorfeldführerscheines läuft demnächst ab. Durch die erfolgreiche Teilnahme an einem E-Lernen können Sie die Gültigkeit um 2 Jahre verlängern. Verwenden Sie dazu folgende @@ -44,11 +46,11 @@ Name: Login - : $login$ + : $lms-login$ Pin - : $pin$ + : $lms-pin$ Sobald die Frist abgelaufen ist, muss zur Wiedererlangung des Vorfeldführerscheins @@ -56,3 +58,36 @@ erneut der Grundkurs bei der Fahrerausbildung absolviert werden. Bei Fragen können Sie sich gerne an das Team der Fahrerausbildung wenden. + +$else$ + + +your apron diving licence is about to expire soon. +You may renew your apron driving licence by two years through successfully +completing an e-learning course. Please use the following login data. + +URL + + : + +Name: + + : $name$ + +Login + + : $lms-login$ + +Pin + + : $lms-pin$ + + +Should your apron driving licence expire before completing this +e-learning course, then a renewal requires your full participation +of the basic training course again. + + +Please do not hesitate to contact the Fraport driving school team, if you need any assistance. + +$endif$ diff --git a/templates/letter/fraport_renewal_template.md b/templates/letter/fraport_renewal_template.md deleted file mode 100644 index e7a18f956..000000000 --- a/templates/letter/fraport_renewal_template.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -### Metadaten, welche hier eingestellt werden: -# Absender -subject: Verlängerung Vorfeldführerschein -author: Fraport AG - Fahrerausbildung (AVN-AR) -phone: +49 69 690-30306 -email: fahrerausbildung@fraport.de -place: Frankfurt/Main -return-address: - - 60547 Frankfurt -opening: Sehr geehrte Damen und Herren, -closing: | - Mit freundlichen Grüßen, - Ihre Fahrerausbildung. -encludes: null - -### Metadaten, welche automatisch ersetzt werden: -date: 11.11.1111 -lang: de-de -is-de: NULL -lms-login: 123456 -lms-pin: abcdef -# Emfpänger -name: E. M. Pfänger -address: - - Musterfirma GmbH - - E. M. Pfänger - - Musterstraße 11 - - 12345 Musterstadt -... -$if(is-de)$ - -[comment]: <> (This is a comment, it will not be included) -die Gültigkeit Ihres Vorfeldführerscheines läuft demnächst ab. -Durch die erfolgreiche Teilnahme an einem E-Lernen können Sie -die Gültigkeit um 2 Jahre verlängern. Verwenden Sie dazu folgende -Login-Daten. - -URL - - : - -Name: - - : $name$ - -Login - - : $login$ - -Pin - - : $pin$ - - -Sobald die Frist abgelaufen ist, muss zur Wiedererlangung des Vorfeldführerscheins -erneut der Grundkurs bei der Fahrerausbildung absolviert werden. - - -Bei Fragen können Sie sich gerne an das Team der Fahrerausbildung wenden. -$else$ - -your apron diving licence is about to expire soon. -You may renew your apron driving licence by two years through successfully -completing an e-learning course. Please use the following login data. - -URL - - : - -Name: - - : $name$ - -Login - - : $login$ - -Pin - - : $pin$ - - -Should your apron driving licence expire before completing this -e-learning course, then a renewal requires your full participation -of the basic training course again. - - -Please do not hesitate to contact the Fraport driving school team, if you need any assistance. - -$endif$