mirror of
https://github.com/benedictdudel/pandoc-letter-din5008.git
synced 2024-08-16 10:19:49 +02:00
Template now based on the official LaTeX template of pandoc
This commit is contained in:
parent
78cb69210d
commit
f1a9c37a41
11 changed files with 726 additions and 134 deletions
107
README.md
107
README.md
|
@ -1,22 +1,12 @@
|
|||
# Pandoc Letter Template (DIN 5008)
|
||||
# Pandoc Letter Template (Default: DIN 5008)
|
||||
|
||||
[Pandoc](https://pandoc.org/) template for writing letters in Markdown and converting them into PDFs
|
||||
that follow the German national standard DIN 5008 for letter formatting. By using this
|
||||
template, you can more efficiently create professional-looking letters in a
|
||||
clean and organized manner. The template is customizable, so you can tailor it
|
||||
to your specific needs.
|
||||
Effortlessly write professional letters with the Pandoc Letter Template. Simply create and customize your letters in Markdown and convert them to stunning PDFs with one command. Based on the official [Pandoc LaTeX template](https://github.com/jgm/pandoc/blob/master/data/templates/default.latex) and [`scrlttr2`](https://ftp.rrzn.uni-hannover.de/pub/mirror/tex-archive/macros/latex/contrib/koma-script/doc/scrguide-en.pdf#chapter.4) document class, you can use all the variables supported by the official template, plus additional variables. The template defaults to the German [DIN 5008](https://de.wikipedia.org/wiki/DIN_5008) standard for added convenience. No more tedious design or typesetting work - just easy, beautiful letters for any occasion.
|
||||
|
||||
## Preview
|
||||
## Previews
|
||||
|
||||
<p align="center">
|
||||
<img src="https://github.com/benedu/pandoc-letter/raw/master/example/letter.png" alt="Letter Preview"/>
|
||||
</p>
|
||||
|
||||
## Requirements
|
||||
|
||||
- [Pandoc](http://pandoc.org/installing.html)
|
||||
- [LaTeX](https://latex-project.org/ftp.html)
|
||||
- [csquotes](https://ctan.org/pkg/csquotes)
|
||||
|[Minimal](/examples/minimal)|[Invoice](/examples/invoice)|
|
||||
|:--------------------------:|:--------------------------:|
|
||||
|<img src="/examples/minimal/letter.png" alt="Minimal Letter Preview"/>|<img src="/examples/invoice/letter.png" alt="Invoice Letter Preview"/>|
|
||||
|
||||
## Usage
|
||||
|
||||
|
@ -26,23 +16,98 @@ Clone this repository or download the template with the following command:
|
|||
curl https://raw.githubusercontent.com/benedictdudel/pandoc-letter-din5008/master/letter.latex --create-dirs -o ~/.pandoc/templates/letter.latex
|
||||
```
|
||||
|
||||
Write your letter in markdown, using the provided [`example/letter.md`](https://raw.githubusercontent.com/benedictdudel/pandoc-letter-din5008/master/example/letter.md) file as a
|
||||
Write your letter in markdown, using one of the provided examples [`examples/minimal/letter.md`](https://raw.githubusercontent.com/benedictdudel/pandoc-letter-din5008/master/examples/minimal/letter.md) file as a
|
||||
guide. You can download the example `letter.md` file with the following command:
|
||||
|
||||
```bash
|
||||
curl https://raw.githubusercontent.com/benedictdudel/pandoc-letter-din5008/master/example/letter.md -o letter.md
|
||||
curl https://raw.githubusercontent.com/benedictdudel/pandoc-letter-din5008/master/examples/minimal/letter.md -o letter.md
|
||||
```
|
||||
|
||||
To convert the markdown file to a PDF run:
|
||||
|
||||
```bash
|
||||
pandoc letter.md -s -o letter.pdf --template="letter"
|
||||
pandoc letter.md -o letter.pdf --template="letter"
|
||||
```
|
||||
|
||||
## Customization
|
||||
|
||||
You can customize the look and feel of the generated PDF by modifying the
|
||||
variables. See [`example/letter.md`](https://raw.githubusercontent.com/benedictdudel/pandoc-letter-din5008/master/example/letter.md) for a full list of available variables.
|
||||
There are two ways to customize the letter. You can use the exported KOMA-variables via yaml or use a custom `lco` (letter class options) file which you can reference in your yaml metadata.
|
||||
|
||||
### 1. Letter Class Options (`.lco`)
|
||||
|
||||
Create a new file `defaults.lco` with the following content:
|
||||
```latex
|
||||
\ProvidesFile{defaults.lco}
|
||||
|
||||
\setkomavar{opening}{Dear Sir or Madam,}
|
||||
\setkomavar{closing}{Sincerely,}
|
||||
```
|
||||
|
||||
Reference the `defaults.lco` file within you yaml metadata:
|
||||
```yaml
|
||||
---
|
||||
letteroption:
|
||||
- defaults
|
||||
---
|
||||
```
|
||||
|
||||
### 2. Variables
|
||||
|
||||
The template supports all variables from the official LaTeX template plus additional variables from `scrlttr2`. Those variables are:
|
||||
|
||||
|name |description |
|
||||
|--------------------|-------------------------------------------------------|
|
||||
|addresseeimage|commands used to print the postpaid postmark for the addrfield backgroundimage option or the postpaid address for the addrfield=image option|
|
||||
|backaddress|return address for window envelopes|
|
||||
|backaddressseparator|separator within the return address|
|
||||
|closing|concluding text|
|
||||
|ccseparator|separator between title of additional addresses (cc list) and additional addresses|
|
||||
|cc|distribution list|
|
||||
|customer|customer number|
|
||||
|customername|name of customer number|
|
||||
|date|date|
|
||||
|datename|name of date|
|
||||
|emailseparator|separator between email name and email address|
|
||||
|enclseparator|separator between title of enclosure and enclosures|
|
||||
|faxseparator|separator between title of fax and fax number|
|
||||
|firstfooter|footer of the letterhead page|
|
||||
|firsthead|header of the letterhead page|
|
||||
|fromaddress|sender’s address without sender name|
|
||||
|fromalign|where the sender information should be placed on the first page|
|
||||
|frombank|sender’s bank details|
|
||||
|fromemail|sender’s e-mail|
|
||||
|fromfax|sender’s fax number|
|
||||
|fromlogo|commands for inserting the sender’s logo|
|
||||
|frommobilephone|sender’s mobile telephone number|
|
||||
|fromname|complete name of sender|
|
||||
|fromphone|sender’s telephone number|
|
||||
|fromurl|URL of the sender, e. g. of the sender’s homepage|
|
||||
|fromzipcode|ZIP code (postal code) of the sender for the postpaid postmark of the addrfield=PP option|
|
||||
|invoice|invoice number|
|
||||
|invoicename|name of invoice number|
|
||||
|letteroption|to load lco files|
|
||||
|location|extra details of the sender|
|
||||
|myref|sender’s reference|
|
||||
|nextfoot|footer using page style headings or myheadings|
|
||||
|nexthead|header using page style headings or myheadings|
|
||||
|opening|salutation|
|
||||
|phoneseparator|separator between title of telephone and telephone number|
|
||||
|place|sender’s location; used next to date|
|
||||
|placeseparator|separator between location and date|
|
||||
|PPdatamatrix|command to print the data array for the addrfield=PP option|
|
||||
|PPcode|commands for the sender’s identification code for the addrfield=PP option|
|
||||
|signature|signature annotation beneath the closing text of the letter|
|
||||
|specialmail|delivery method|
|
||||
|subject|letter’s subject|
|
||||
|subjectseparator|separator between subject title and subject|
|
||||
|title|letter title|
|
||||
|toaddress|address of recipient without recipient name|
|
||||
|toname|complete name of recipient|
|
||||
|yourmail|date of recipient’s referenced mail|
|
||||
|yourmailname|name of date of recipient’s referenced mail|
|
||||
|yourref|recipient’s reference|
|
||||
|yourrefname|name of the recipient’s reference|
|
||||
|zipcodeseparator|separator between the title of ZIP code (postal code) and the code itself|
|
||||
|
||||
## Contact
|
||||
|
||||
|
|
|
@ -1,39 +0,0 @@
|
|||
---
|
||||
letteroption:
|
||||
- parskip=half
|
||||
- foldmarks=true
|
||||
- foldmarks=BTm
|
||||
- fromalign=right
|
||||
- version=last
|
||||
author: Max Mustermann
|
||||
phone: +49 1234 56789
|
||||
email: max.mustermann@beispiel.de
|
||||
date: 01.08.2016
|
||||
place: Musterstadt
|
||||
subject: Titel vom Brief
|
||||
return-address:
|
||||
- Musterstraße
|
||||
- 12345 Berlin
|
||||
address:
|
||||
- Musterfirma GmbH
|
||||
- Max Mustermann
|
||||
- Musterstraße
|
||||
- 12345 Musterstadt
|
||||
opening: Sehr geehrte Damen und Herren,
|
||||
closing: Mit freundlichen Grüßen
|
||||
enclosed: Muster, Muster, Muster
|
||||
ps: "PS: Hier noch ein Gedanke zum Schluss"
|
||||
links-as-notes: true
|
||||
...
|
||||
|
||||
Ich bin ein kleiner [Blindtext](https://twitter.com/benedictdudel). Und zwar schon so lange ich denken kann. Es war nicht leicht zu verstehen, was es bedeutet, ein blinder Text zu sein: Man ergibt keinen Sinn. Wirklich keinen Sinn.
|
||||
|
||||
- Honig 5 €
|
||||
- Streichhölzer 2 €
|
||||
|
||||
Aber andere Texte schaffen das auch nicht. Und darum stört es mich nicht besonders "blind" zu sein.
|
||||
|
||||
|Spalte 1 |Spalte 2|
|
||||
|-------------|--------|
|
||||
|Honig |5 € |
|
||||
|Streichhölzer|2 € |
|
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 94 KiB |
30
examples/invoice/letter.md
Normal file
30
examples/invoice/letter.md
Normal file
|
@ -0,0 +1,30 @@
|
|||
---
|
||||
lang: de
|
||||
backaddress: Erika Musterfrau, Musterstraße 1, 12345 Musterstadt
|
||||
fromname: Erika Musterfrau
|
||||
fromaddress: |
|
||||
Musterstraße 1
|
||||
12345 Musterstadt
|
||||
place: Musterstadt
|
||||
to: |
|
||||
Musterfirma GmbH
|
||||
Max Mustermann
|
||||
Musterstraße 2
|
||||
12345 Musterstadt
|
||||
date: 01.01.2023
|
||||
subject: Musterbrief
|
||||
signature: Erika Musterfrau
|
||||
invoice: 123456789
|
||||
...
|
||||
|
||||
vielen Dank für Ihren Auftrag. Bitte überweisen Sie den im Folgenden aufgeführten Rechnungsbetrag innerhalb von 14 Tagen auf das angegebene Konto.
|
||||
|
||||
| **Beschreibung** | **Menge** | **Preis St.** | **Preis Gesamt** |
|
||||
| --------------------- | --------- | ------------- | ---------------- |
|
||||
| Software-Entwicklung | 4 | € 100 | € 400 |
|
||||
| Software-Installation | 1 | € 50 | € 50 |
|
||||
| --------------------- | ----- | --------- | ------------ |
|
||||
| Zwischensumme | | | € 450 |
|
||||
| _MwSt. 19%_ | | | _€ 85,5_ |
|
||||
| --------------------- | ----- | --------- | ------------ |
|
||||
| **Gesamt** | | | **€ 535,5** |
|
BIN
examples/invoice/letter.pdf
Normal file
BIN
examples/invoice/letter.pdf
Normal file
Binary file not shown.
BIN
examples/invoice/letter.png
Normal file
BIN
examples/invoice/letter.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 81 KiB |
21
examples/minimal/letter.md
Normal file
21
examples/minimal/letter.md
Normal file
|
@ -0,0 +1,21 @@
|
|||
---
|
||||
backaddress: Erika Musterfrau, Musterstraße 1, 12345 Musterstadt
|
||||
fromname: Erika Musterfrau
|
||||
fromaddress: |
|
||||
Musterstraße 1
|
||||
12345 Musterstadt
|
||||
place: Musterstadt
|
||||
to: |
|
||||
Musterfirma GmbH
|
||||
Max Mustermann
|
||||
Musterstraße 2
|
||||
12345 Musterstadt
|
||||
date: 01.01.2023
|
||||
subject: Musterbrief
|
||||
signature: Erika Musterfrau
|
||||
...
|
||||
Nostrud ullamco do elit ullamco. Tempor culpa id minim eiusmod labore in fugiat anim anim cupidatat est. Ipsum culpa in labore ea minim nisi amet. Fugiat aute duis non ut aliqua ex. Irure id nulla amet do nostrud commodo ea aliqua non eu.
|
||||
|
||||
Do duis voluptate occaecat mollit laborum ad id proident culpa sit. Fugiat labore qui magna occaecat ex amet nisi ipsum eiusmod commodo minim. Ea culpa voluptate est laborum in culpa.
|
||||
|
||||
Esse incididunt consequat Lorem nostrud ea enim cupidatat occaecat. Commodo ut fugiat magna nulla. Id consectetur minim laborum id laboris quis amet. Veniam ipsum id culpa eiusmod id deserunt laboris cupidatat quis duis dolor sit. Do culpa veniam laboris aute ipsum in.
|
BIN
examples/minimal/letter.pdf
Normal file
BIN
examples/minimal/letter.pdf
Normal file
Binary file not shown.
BIN
examples/minimal/letter.png
Normal file
BIN
examples/minimal/letter.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 99 KiB |
657
letter.latex
657
letter.latex
|
@ -1,21 +1,140 @@
|
|||
% Options for packages loaded elsewhere
|
||||
\PassOptionsToPackage{unicode$for(hyperrefoptions)$,$hyperrefoptions$$endfor$}{hyperref}
|
||||
\PassOptionsToPackage{hyphens}{url}
|
||||
$if(colorlinks)$
|
||||
\PassOptionsToPackage{dvipsnames,svgnames,x11names}{xcolor}
|
||||
$endif$
|
||||
$if(CJKmainfont)$
|
||||
\PassOptionsToPackage{space}{xeCJK}
|
||||
$endif$
|
||||
%
|
||||
\documentclass[
|
||||
$if(phone)$ fromphone,$endif$
|
||||
$if(email)$ fromemail,$endif$
|
||||
$for(letteroption)$
|
||||
$letteroption$$sep$,
|
||||
$if(fontsize)$
|
||||
$fontsize$,
|
||||
$endif$
|
||||
$if(papersize)$
|
||||
$papersize$paper,
|
||||
$endif$
|
||||
$if(beamer)$
|
||||
ignorenonframetext,
|
||||
$if(handout)$
|
||||
handout,
|
||||
$endif$
|
||||
$if(aspectratio)$
|
||||
aspectratio=$aspectratio$,
|
||||
$endif$
|
||||
$endif$
|
||||
$for(classoption)$
|
||||
$classoption$$sep$,
|
||||
$endfor$
|
||||
]{scrlttr2}
|
||||
|
||||
% Fonts
|
||||
% Inspired from https://github.com/aaronwolen/pandoc-letter
|
||||
$if(fontfamily)$
|
||||
\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$}
|
||||
$if(beamer)$
|
||||
$if(background-image)$
|
||||
\usebackgroundtemplate{%
|
||||
\includegraphics[width=\paperwidth]{$background-image$}%
|
||||
}
|
||||
$endif$
|
||||
\usepackage{pgfpages}
|
||||
\setbeamertemplate{caption}[numbered]
|
||||
\setbeamertemplate{caption label separator}{: }
|
||||
\setbeamercolor{caption name}{fg=normal text.fg}
|
||||
\beamertemplatenavigationsymbols$if(navigation)$$navigation$$else$empty$endif$
|
||||
$for(beameroption)$
|
||||
\setbeameroption{$beameroption$}
|
||||
$endfor$
|
||||
% Prevent slide breaks in the middle of a paragraph
|
||||
\widowpenalties 1 10000
|
||||
\raggedbottom
|
||||
$if(section-titles)$
|
||||
\setbeamertemplate{part page}{
|
||||
\centering
|
||||
\begin{beamercolorbox}[sep=16pt,center]{part title}
|
||||
\usebeamerfont{part title}\insertpart\par
|
||||
\end{beamercolorbox}
|
||||
}
|
||||
\setbeamertemplate{section page}{
|
||||
\centering
|
||||
\begin{beamercolorbox}[sep=12pt,center]{part title}
|
||||
\usebeamerfont{section title}\insertsection\par
|
||||
\end{beamercolorbox}
|
||||
}
|
||||
\setbeamertemplate{subsection page}{
|
||||
\centering
|
||||
\begin{beamercolorbox}[sep=8pt,center]{part title}
|
||||
\usebeamerfont{subsection title}\insertsubsection\par
|
||||
\end{beamercolorbox}
|
||||
}
|
||||
\AtBeginPart{
|
||||
\frame{\partpage}
|
||||
}
|
||||
\AtBeginSection{
|
||||
\ifbibliography
|
||||
\else
|
||||
\frame{\sectionpage}
|
||||
\fi
|
||||
}
|
||||
\AtBeginSubsection{
|
||||
\frame{\subsectionpage}
|
||||
}
|
||||
$endif$
|
||||
$endif$
|
||||
$if(beamerarticle)$
|
||||
\usepackage{beamerarticle} % needs to be loaded first
|
||||
$endif$
|
||||
\usepackage{amsmath,amssymb}
|
||||
$if(linestretch)$
|
||||
\usepackage{setspace}
|
||||
$endif$
|
||||
\usepackage{iftex}
|
||||
\ifPDFTeX
|
||||
\usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage{textcomp} % provide euro and other symbols
|
||||
\else % if luatex or xetex
|
||||
$if(mathspec)$
|
||||
\ifXeTeX
|
||||
\usepackage{mathspec} % this also loads fontspec
|
||||
\else
|
||||
\usepackage{unicode-math} % this also loads fontspec
|
||||
\fi
|
||||
$else$
|
||||
\usepackage{unicode-math} % this also loads fontspec
|
||||
$endif$
|
||||
\defaultfontfeatures{Scale=MatchLowercase}$-- must come before Beamer theme
|
||||
\defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
|
||||
\fi
|
||||
$if(fontfamily)$
|
||||
$else$
|
||||
$-- Set default font before Beamer theme so the theme can override it
|
||||
\usepackage{lmodern}
|
||||
$endif$
|
||||
$for(fontfamilies)$
|
||||
\newfontfamily{$fontfamilies.name$}[$fontfamilies.options$]{$fontfamilies.font$}
|
||||
$endfor$
|
||||
$-- Set Beamer theme before user font settings so they can override theme
|
||||
$if(beamer)$
|
||||
$if(theme)$
|
||||
\usetheme[$for(themeoptions)$$themeoptions$$sep$,$endfor$]{$theme$}
|
||||
$endif$
|
||||
$if(colortheme)$
|
||||
\usecolortheme{$colortheme$}
|
||||
$endif$
|
||||
$if(fonttheme)$
|
||||
\usefonttheme{$fonttheme$}
|
||||
$endif$
|
||||
$if(mainfont)$
|
||||
\usefonttheme{serif} % use mainfont rather than sansfont for slide text
|
||||
$endif$
|
||||
$if(innertheme)$
|
||||
\useinnertheme{$innertheme$}
|
||||
$endif$
|
||||
$if(outertheme)$
|
||||
\useoutertheme{$outertheme$}
|
||||
$endif$
|
||||
$endif$
|
||||
$-- User font settings (must come after default font and Beamer theme)
|
||||
$if(fontfamily)$
|
||||
\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$}
|
||||
$endif$
|
||||
\ifPDFTeX\else
|
||||
% xetex/luatex font selection
|
||||
$if(mainfont)$
|
||||
\setmainfont[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$]{$mainfont$}
|
||||
$endif$
|
||||
|
@ -23,11 +142,14 @@ $if(sansfont)$
|
|||
\setsansfont[$for(sansfontoptions)$$sansfontoptions$$sep$,$endfor$]{$sansfont$}
|
||||
$endif$
|
||||
$if(monofont)$
|
||||
\setmonofont[Mapping=tex-ansi$if(monofontoptions)$,$for(monofontoptions)$$monofontoptions$$sep$,$endfor$$endif$]{$monofont$}
|
||||
\setmonofont[$for(monofontoptions)$$monofontoptions$$sep$,$endfor$]{$monofont$}
|
||||
$endif$
|
||||
$for(fontfamilies)$
|
||||
\newfontfamily{$fontfamilies.name$}[$for(fontfamilies.options)$$fontfamilies.options$$sep$,$endfor$]{$fontfamilies.font$}
|
||||
$endfor$
|
||||
$if(mathfont)$
|
||||
$if(mathspec)$
|
||||
\ifxetex
|
||||
\ifXeTeX
|
||||
\setmathfont(Digits,Latin,Greek)[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
|
||||
\else
|
||||
\setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
|
||||
|
@ -37,89 +159,482 @@ $else$
|
|||
$endif$
|
||||
$endif$
|
||||
$if(CJKmainfont)$
|
||||
\ifxetex
|
||||
\ifXeTeX
|
||||
\usepackage{xeCJK}
|
||||
\setCJKmainfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
|
||||
\fi
|
||||
$endif$
|
||||
$if(luatexjapresetoptions)$
|
||||
\ifluatex
|
||||
\ifLuaTeX
|
||||
\usepackage[$for(luatexjapresetoptions)$$luatexjapresetoptions$$sep$,$endfor$]{luatexja-preset}
|
||||
\fi
|
||||
$endif$
|
||||
$if(CJKmainfont)$
|
||||
\ifluatex
|
||||
\ifLuaTeX
|
||||
\usepackage[$for(luatexjafontspecoptions)$$luatexjafontspecoptions$$sep$,$endfor$]{luatexja-fontspec}
|
||||
\setmainjfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
|
||||
\fi
|
||||
$endif$
|
||||
% End of Fonts
|
||||
|
||||
\usepackage[ngerman]{babel}
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage{csquotes} % German quotation marks
|
||||
|
||||
\usepackage{graphics}
|
||||
|
||||
\usepackage{booktabs}
|
||||
\usepackage{longtable}
|
||||
|
||||
\usepackage[right]{eurosym}
|
||||
|
||||
\fi
|
||||
$if(zero-width-non-joiner)$
|
||||
%% Support for zero-width non-joiner characters.
|
||||
\makeatletter
|
||||
\def\zerowidthnonjoiner{%
|
||||
% Prevent ligatures and adjust kerning, but still support hyphenating.
|
||||
\texorpdfstring{%
|
||||
\TextOrMath{\nobreak\discretionary{-}{}{\kern.03em}%
|
||||
\ifvmode\else\nobreak\hskip\z@skip\fi}{}%
|
||||
}{}%
|
||||
}
|
||||
\makeatother
|
||||
\ifPDFTeX
|
||||
\DeclareUnicodeCharacter{200C}{\zerowidthnonjoiner}
|
||||
\else
|
||||
\catcode`^^^^200c=\active
|
||||
\protected\def ^^^^200c{\zerowidthnonjoiner}
|
||||
\fi
|
||||
%% End of ZWNJ support
|
||||
$endif$
|
||||
% Use upquote if available, for straight quotes in verbatim environments
|
||||
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
|
||||
\IfFileExists{microtype.sty}{% use microtype if available
|
||||
\usepackage[$for(microtypeoptions)$$microtypeoptions$$sep$,$endfor$]{microtype}
|
||||
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
|
||||
}{}
|
||||
$if(indent)$
|
||||
$else$
|
||||
\makeatletter
|
||||
\@ifundefined{KOMAClassName}{% if non-KOMA class
|
||||
\IfFileExists{parskip.sty}{%
|
||||
\usepackage{parskip}
|
||||
}{% else
|
||||
\setlength{\parindent}{0pt}
|
||||
\setlength{\parskip}{6pt plus 2pt minus 1pt}}
|
||||
}{% if KOMA class
|
||||
\KOMAoptions{parskip=half}}
|
||||
\makeatother
|
||||
$endif$
|
||||
$if(verbatim-in-note)$
|
||||
\usepackage{fancyvrb}
|
||||
$endif$
|
||||
\usepackage{xcolor}
|
||||
$if(geometry)$
|
||||
$if(beamer)$
|
||||
\geometry{$for(geometry)$$geometry$$sep$,$endfor$}
|
||||
$else$
|
||||
\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
|
||||
$endif$
|
||||
$endif$
|
||||
$if(beamer)$
|
||||
\newif\ifbibliography
|
||||
$endif$
|
||||
$if(listings)$
|
||||
\usepackage{listings}
|
||||
\newcommand{\passthrough}[1]{#1}
|
||||
\lstset{defaultdialect=[5.3]Lua}
|
||||
\lstset{defaultdialect=[x86masm]Assembler}
|
||||
$endif$
|
||||
$if(lhs)$
|
||||
\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{}
|
||||
$endif$
|
||||
$if(highlighting-macros)$
|
||||
$highlighting-macros$
|
||||
$endif$
|
||||
$if(tables)$
|
||||
\usepackage{longtable,booktabs,array}
|
||||
$if(multirow)$
|
||||
\usepackage{multirow}
|
||||
$endif$
|
||||
\usepackage{calc} % for calculating minipage widths
|
||||
$if(beamer)$
|
||||
\usepackage{caption}
|
||||
% Make caption package work with longtable
|
||||
\makeatletter
|
||||
\def\fnum@table{\tablename~\thetable}
|
||||
\makeatother
|
||||
$else$
|
||||
% Correct order of tables after \paragraph or \subparagraph
|
||||
\usepackage{etoolbox}
|
||||
\makeatletter
|
||||
\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{}
|
||||
\makeatother
|
||||
% Allow footnotes in longtable head/foot
|
||||
\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}}
|
||||
\makesavenoteenv{longtable}
|
||||
$endif$
|
||||
$endif$
|
||||
$if(graphics)$
|
||||
\usepackage{graphicx}
|
||||
\makeatletter
|
||||
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
|
||||
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
|
||||
\makeatother
|
||||
% Scale images if necessary, so that they will not overflow the page
|
||||
% margins by default, and it is still possible to overwrite the defaults
|
||||
% using explicit options in \includegraphics[width, height, ...]{}
|
||||
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
|
||||
% Set default figure placement to htbp
|
||||
\makeatletter
|
||||
\def\fps@figure{htbp}
|
||||
\makeatother
|
||||
$endif$
|
||||
$if(svg)$
|
||||
\usepackage{svg}
|
||||
$endif$
|
||||
$if(strikeout)$
|
||||
$-- also used for underline
|
||||
\usepackage{soul}
|
||||
$endif$
|
||||
\setlength{\emergencystretch}{3em} % prevent overfull lines
|
||||
\providecommand{\tightlist}{%
|
||||
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
||||
|
||||
\makeatletter
|
||||
\setlength{\@tempskipa}{-1.2cm}%
|
||||
\@addtoplength{toaddrheight}{\@tempskipa}
|
||||
\makeatother
|
||||
|
||||
\setlength{\oddsidemargin}{\useplength{toaddrhpos}}
|
||||
\addtolength{\oddsidemargin}{-1in}
|
||||
\setlength{\textwidth}{\useplength{firstheadwidth}}
|
||||
|
||||
% Links
|
||||
\usepackage[hidelinks]{hyperref}
|
||||
$if(numbersections)$
|
||||
\setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$}
|
||||
$else$
|
||||
\setcounter{secnumdepth}{-\maxdimen} % remove section numbering
|
||||
$endif$
|
||||
$if(beamer)$
|
||||
$else$
|
||||
$if(block-headings)$
|
||||
% Make \paragraph and \subparagraph free-standing
|
||||
\ifx\paragraph\undefined\else
|
||||
\let\oldparagraph\paragraph
|
||||
\renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}}
|
||||
\fi
|
||||
\ifx\subparagraph\undefined\else
|
||||
\let\oldsubparagraph\subparagraph
|
||||
\renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}}
|
||||
\fi
|
||||
$endif$
|
||||
$endif$
|
||||
$if(pagestyle)$
|
||||
\pagestyle{$pagestyle$}
|
||||
$endif$
|
||||
$if(csl-refs)$
|
||||
\newlength{\cslhangindent}
|
||||
\setlength{\cslhangindent}{1.5em}
|
||||
\newlength{\csllabelwidth}
|
||||
\setlength{\csllabelwidth}{3em}
|
||||
\newlength{\cslentryspacingunit} % times entry-spacing
|
||||
\setlength{\cslentryspacingunit}{\parskip}
|
||||
\newenvironment{CSLReferences}[2] % #1 hanging-ident, #2 entry spacing
|
||||
{% don't indent paragraphs
|
||||
\setlength{\parindent}{0pt}
|
||||
% turn on hanging indent if param 1 is 1
|
||||
\ifodd #1
|
||||
\let\oldpar\par
|
||||
\def\par{\hangindent=\cslhangindent\oldpar}
|
||||
\fi
|
||||
% set entry spacing
|
||||
\setlength{\parskip}{#2\cslentryspacingunit}
|
||||
}%
|
||||
{}
|
||||
\usepackage{calc}
|
||||
\newcommand{\CSLBlock}[1]{#1\hfill\break}
|
||||
\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{#1}}
|
||||
\newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{#1}\break}
|
||||
\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1}
|
||||
$endif$
|
||||
$if(lang)$
|
||||
\ifLuaTeX
|
||||
\usepackage[bidi=basic]{babel}
|
||||
\else
|
||||
\usepackage[bidi=default]{babel}
|
||||
\fi
|
||||
$if(babel-lang)$
|
||||
\babelprovide[main,import]{$babel-lang$}
|
||||
$endif$
|
||||
$for(babel-otherlangs)$
|
||||
\babelprovide[import]{$babel-otherlangs$}
|
||||
$endfor$
|
||||
% get rid of language-specific shorthands (see #6817):
|
||||
\let\LanguageShortHands\languageshorthands
|
||||
\def\languageshorthands#1{}
|
||||
$endif$
|
||||
$for(header-includes)$
|
||||
$header-includes$
|
||||
$endfor$
|
||||
\ifLuaTeX
|
||||
\usepackage{selnolig} % disable illegal ligatures
|
||||
\fi
|
||||
$if(dir)$
|
||||
\ifPDFTeX
|
||||
\TeXXeTstate=1
|
||||
\newcommand{\RL}[1]{\beginR #1\endR}
|
||||
\newcommand{\LR}[1]{\beginL #1\endL}
|
||||
\newenvironment{RTL}{\beginR}{\endR}
|
||||
\newenvironment{LTR}{\beginL}{\endL}
|
||||
\fi
|
||||
$endif$
|
||||
$if(natbib)$
|
||||
\usepackage[$natbiboptions$]{natbib}
|
||||
\bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$}
|
||||
$endif$
|
||||
$if(biblatex)$
|
||||
\usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$endfor$]{biblatex}
|
||||
$for(bibliography)$
|
||||
\addbibresource{$bibliography$}
|
||||
$endfor$
|
||||
$endif$
|
||||
$if(nocite-ids)$
|
||||
\nocite{$for(nocite-ids)$$it$$sep$, $endfor$}
|
||||
$endif$
|
||||
$if(csquotes)$
|
||||
\usepackage{csquotes}
|
||||
$endif$
|
||||
\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
|
||||
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
|
||||
\urlstyle{$if(urlstyle)$$urlstyle$$else$same$endif$}
|
||||
$if(links-as-notes)$
|
||||
% Make links footnotes instead of hotlinks:
|
||||
\DeclareRobustCommand{\href}[2]{#2\footnote{\url{#1}}}
|
||||
$endif$
|
||||
% End of Links
|
||||
$if(verbatim-in-note)$
|
||||
\VerbatimFootnotes % allow verbatim text in footnotes
|
||||
$endif$
|
||||
\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$
|
||||
$if(colorlinks)$
|
||||
colorlinks=true,
|
||||
linkcolor={$if(linkcolor)$$linkcolor$$else$Maroon$endif$},
|
||||
filecolor={$if(filecolor)$$filecolor$$else$Maroon$endif$},
|
||||
citecolor={$if(citecolor)$$citecolor$$else$Blue$endif$},
|
||||
urlcolor={$if(urlcolor)$$urlcolor$$else$Blue$endif$},
|
||||
$else$
|
||||
$if(boxlinks)$
|
||||
$else$
|
||||
hidelinks,
|
||||
$endif$
|
||||
$endif$
|
||||
pdfcreator={LaTeX via pandoc}}
|
||||
|
||||
$if(title)$
|
||||
\title{$title$$if(thanks)$\thanks{$thanks$}$endif$}
|
||||
$endif$
|
||||
$if(subtitle)$
|
||||
$if(beamer)$
|
||||
$else$
|
||||
\usepackage{etoolbox}
|
||||
\makeatletter
|
||||
\providecommand{\subtitle}[1]{% add subtitle to \maketitle
|
||||
\apptocmd{\@title}{\par {\large #1 \par}}{}{}
|
||||
}
|
||||
\makeatother
|
||||
$endif$
|
||||
\subtitle{$subtitle$}
|
||||
$endif$
|
||||
\author{$for(author)$$author$$sep$ \and $endfor$}
|
||||
\date{$date$}
|
||||
$if(beamer)$
|
||||
$if(institute)$
|
||||
\institute{$for(institute)$$institute$$sep$ \and $endfor$}
|
||||
$endif$
|
||||
$if(titlegraphic)$
|
||||
\titlegraphic{\includegraphics{$titlegraphic$}}
|
||||
$endif$
|
||||
$if(logo)$
|
||||
\logo{\includegraphics{$logo$}}
|
||||
$endif$
|
||||
$endif$
|
||||
|
||||
% OVERRIDES
|
||||
\newkomavar{opening}
|
||||
\newkomavar{closing}
|
||||
|
||||
\KOMAoptions{fromemail=false}
|
||||
\KOMAoptions{fromfax=false}
|
||||
\KOMAoptions{fromlogo=false}
|
||||
\KOMAoptions{frommobilephone=false}
|
||||
\KOMAoptions{fromphone=false}
|
||||
\KOMAoptions{fromurl=false}
|
||||
\KOMAoptions{fromalign=right}
|
||||
|
||||
\setkomavar{opening}{Sehr geehrte Damen und Herren,}
|
||||
\setkomavar{closing}{Mit freundlichen Grüßen}
|
||||
\setkomavar*{enclseparator}{Anlagen}
|
||||
|
||||
$for(letteroption)$
|
||||
\LoadLetterOption{$letteroption$}
|
||||
$endfor$
|
||||
|
||||
$if(addresseeimage)$\setkomavar{addresseeimage}{$addresseeimage$}$endif$
|
||||
$if(backaddress)$\setkomavar{backaddress}{$backaddress$}\KOMAoptions{backaddress=true}$endif$
|
||||
$if(backaddressseparator)$\setkomavar{backaddressseparator}{$backaddressseparator$}$endif$
|
||||
$if(ccseparator)$\setkomavar{ccseparator}{$ccseparator$}$endif$
|
||||
$if(customer)$\setkomavar{customer}{$customer$}$endif$
|
||||
$if(date)$\setkomavar{date}{$date$}$endif$
|
||||
$if(emailseparator)$\setkomavar{emailseparator}{$emailseparator$}$endif$
|
||||
$if(enclseparator)$\setkomavar{enclseparator}{$enclseparator$}$endif$
|
||||
$if(faxseparator)$\setkomavar{faxseparator}{$faxseparator$}$endif$
|
||||
$if(firstfoot)$\setkomavar{firstfoot}{$firstfoot$}$endif$
|
||||
$if(firsthead)$\setkomavar{firsthead}{$firsthead$}$endif$
|
||||
$if(fromaddress)$\setkomavar{fromaddress}{$fromaddress$}$endif$
|
||||
$if(frombank)$\setkomavar{frombank}{$frombank$}$endif$
|
||||
$if(fromemail)$\setkomavar{fromemail}{$fromemail$}\KOMAoptions{fromemail=true}$endif$
|
||||
$if(fromfax)$\setkomavar{fromfax}{$fromfax$}\KOMAoptions{fromfax=true}$endif$
|
||||
$if(fromlogo)$\setkomavar{fromlogo}{$fromlogo$}\KOMAoptions{fromlogo=true}$endif$
|
||||
$if(frommobilephone)$\setkomavar{frommobilephone}{$frommobilephone$}\KOMAoptions{frommobilephone=true}$endif$
|
||||
$if(fromname)$\setkomavar{fromname}{$fromname$}$endif$
|
||||
$if(fromphone)$\setkomavar{fromphone}{$fromphone$}\KOMAoptions{fromphone=true}$endif$
|
||||
$if(fromurl)$\setkomavar{fromurl}{$fromurl$}\KOMAoptions{fromurl=true}$endif$
|
||||
$if(fromzipcode)$\setkomavar{fromzipcode}{$fromzipcode$}$endif$
|
||||
$if(invoice)$\setkomavar{invoice}{$invoice$}$endif$
|
||||
$if(location)$\setkomavar{location}{$location$}$endif$
|
||||
$if(myref)$\setkomavar{myref}{$myref$}$endif$
|
||||
$if(nextfoot)$\setkomavar{nextfoot}{$nextfoot$}$endif$
|
||||
$if(nexthead)$\setkomavar{nexthead}{$nexthead$}$endif$
|
||||
$if(phoneseparator)$\setkomavar{phoneseparator}{$phoneseparator$}$endif$
|
||||
$if(place)$\setkomavar{place}{$place$}$endif$
|
||||
$if(placeseparator)$\setkomavar{placeseparator}{$placeseparator$}$endif$
|
||||
$if(PPdatamatrix)$\setkomavar{PPdatamatrix}{$PPdatamatrix$}$endif$
|
||||
$if(PPcode)$\setkomavar{PPcode}{$PPcode$}$endif$
|
||||
$if(signature)$\setkomavar{signature}{$signature$}\renewcommand*{\raggedsignature}{\raggedright}$endif$
|
||||
$if(specialmail)$\setkomavar{specialmail}{$specialmail$}$endif$
|
||||
$if(subject)$\setkomavar{subject}{$subject$}$endif$
|
||||
$if(subjectseparator)$\setkomavar{placeseparator}{$placeseparator$}$endif$
|
||||
$if(title)$\setkomavar{title}{$title$}$endif$
|
||||
$if(toaddress)$\setkomavar{toaddress}{$toaddress$}\KOMAoptions{toaddress=true}$endif$
|
||||
$if(toname)$\setkomavar{toname}{$toname$}\KOMAoptions{toname=true}$endif$
|
||||
$if(yourmail)$\setkomavar{yourmail}{$yourmail$}$endif$
|
||||
$if(yourref)$\setkomavar{yourref}{$yourref$}$endif$
|
||||
$if(zipcodeseparator)$\setkomavar{zipcodeseparator}{$zipcodeseparator$}$endif$
|
||||
$if(enclseparator)$\setkomavar{enclseparator}{$enclseparator$}$endif$
|
||||
$if(fromalign)$\KOMAoptions{fromalign=$fromalign$}$endif$
|
||||
$if(customername)$\setkomavar*{customer}{$customername$}$endif$
|
||||
$if(datename)$\setkomavar*{date}{$datename$}$endif$
|
||||
$if(invoicename)$\setkomavar*{invoice}{$invoicename$}$endif$
|
||||
$if(myrefname)$\setkomavar*{myref}{$myrefname$}$endif$
|
||||
$if(yourmailname)$\setkomavar*{yourmail}{$yourmailname$}$endif$
|
||||
$if(yourrefname)$\setkomavar*{yourref}{$yourrefname$}$endif$
|
||||
$if(opening)$\setkomavar{opening}{$opening$}$endif$
|
||||
$if(closing)$\setkomavar{closing}{$closing$}$endif$
|
||||
$if(enclseparator)$\setkomavar*{enclseparator}{$enclseparator$}$endif$
|
||||
% END OVERRIDES
|
||||
|
||||
\begin{document}
|
||||
\setkomavar{fromname}{$author$}
|
||||
\renewcommand*{\raggedsignature}{\raggedright}
|
||||
\setkomavar{fromaddress}{
|
||||
$for(return-address)$
|
||||
$return-address$$sep$\\
|
||||
$endfor$
|
||||
}
|
||||
\setkomavar{fromphone}{$phone$}
|
||||
\setkomavar{fromemail}{$email$}
|
||||
\setkomavar{signature}{$author$}
|
||||
$if(has-frontmatter)$
|
||||
\frontmatter
|
||||
$endif$
|
||||
$if(title)$
|
||||
$if(beamer)$
|
||||
\frame{\titlepage}
|
||||
$else$
|
||||
\maketitle
|
||||
$endif$
|
||||
$if(abstract)$
|
||||
\begin{abstract}
|
||||
$abstract$
|
||||
\end{abstract}
|
||||
$endif$
|
||||
$endif$
|
||||
|
||||
$if(date)$\setkomavar{date}{$date$}$endif$
|
||||
\setkomavar{place}{$place$}
|
||||
$for(include-before)$
|
||||
$include-before$
|
||||
|
||||
$if(subject)$\setkomavar{subject}{$subject$}$endif$
|
||||
$endfor$
|
||||
$if(toc)$
|
||||
$if(toc-title)$
|
||||
\renewcommand*\contentsname{$toc-title$}
|
||||
$endif$
|
||||
$if(beamer)$
|
||||
\begin{frame}[allowframebreaks]
|
||||
$if(toc-title)$
|
||||
\frametitle{$toc-title$}
|
||||
$endif$
|
||||
\tableofcontents[hideallsubsections]
|
||||
\end{frame}
|
||||
$else$
|
||||
{
|
||||
$if(colorlinks)$
|
||||
\hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$$endif$}
|
||||
$endif$
|
||||
\setcounter{tocdepth}{$toc-depth$}
|
||||
\tableofcontents
|
||||
}
|
||||
$endif$
|
||||
$endif$
|
||||
$if(lof)$
|
||||
\listoffigures
|
||||
$endif$
|
||||
$if(lot)$
|
||||
\listoftables
|
||||
$endif$
|
||||
$if(linestretch)$
|
||||
\setstretch{$linestretch$}
|
||||
$endif$
|
||||
$if(has-frontmatter)$
|
||||
\mainmatter
|
||||
$endif$
|
||||
|
||||
\begin{letter}{%
|
||||
$for(address)$
|
||||
$address$$sep$\\
|
||||
$endfor$}
|
||||
% OVERRIDES
|
||||
\begin{letter}{%
|
||||
$to$
|
||||
}
|
||||
\opening{\usekomavar{opening}}
|
||||
% END OVERRIDES
|
||||
$body$
|
||||
% OVERRIDES
|
||||
\closing{\usekomavar{closing}}
|
||||
$if(ps)$\ps{$ps$}$endif$
|
||||
$if(encl)$\encl{$encl$}$endif$
|
||||
% END OVERRIDES
|
||||
|
||||
\opening{$opening$}
|
||||
$if(has-frontmatter)$
|
||||
\backmatter
|
||||
$endif$
|
||||
$if(natbib)$
|
||||
$if(bibliography)$
|
||||
$if(biblio-title)$
|
||||
$if(has-chapters)$
|
||||
\renewcommand\bibname{$biblio-title$}
|
||||
$else$
|
||||
\renewcommand\refname{$biblio-title$}
|
||||
$endif$
|
||||
$endif$
|
||||
$if(beamer)$
|
||||
\begin{frame}[allowframebreaks]{$biblio-title$}
|
||||
\bibliographytrue
|
||||
$endif$
|
||||
\bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$}
|
||||
$if(beamer)$
|
||||
\end{frame}
|
||||
$endif$
|
||||
|
||||
$body$
|
||||
$endif$
|
||||
$endif$
|
||||
$if(biblatex)$
|
||||
$if(beamer)$
|
||||
\begin{frame}[allowframebreaks]{$biblio-title$}
|
||||
\bibliographytrue
|
||||
\printbibliography[heading=none]
|
||||
\end{frame}
|
||||
$else$
|
||||
\printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$
|
||||
$endif$
|
||||
|
||||
\closing{$closing$}
|
||||
$endif$
|
||||
$for(include-after)$
|
||||
$include-after$
|
||||
|
||||
$if(ps)$\ps $ps$$endif$
|
||||
|
||||
$if(enclosed)$
|
||||
\setkomavar*{enclseparator}{Anlage(n)}
|
||||
\encl{$enclosed$}
|
||||
$endif$
|
||||
\end{letter}
|
||||
$endfor$
|
||||
% OVERRIDES
|
||||
$if(cc)$
|
||||
\cc{$cc$}
|
||||
$endif$
|
||||
\end{letter}
|
||||
% END OVERRIDES
|
||||
\end{document}
|
Loading…
Reference in a new issue