Compare commits
No commits in common. "6f5d5ee378da8af615daf44cb6e835a8658026db" and "f6730e38ceff2f1da1f277b1e7e86c8ff83b885c" have entirely different histories.
6f5d5ee378
...
f6730e38ce
13 changed files with 3301 additions and 27 deletions
14
Makefile
14
Makefile
|
@ -1,14 +1,10 @@
|
|||
.PHONY: clean all
|
||||
.PHONY: clean
|
||||
|
||||
all: clean cv resume letter
|
||||
all: resume_*.qmd templates/jb2resume.latex letter.qmd templates/letter.latex
|
||||
poetry run quarto render
|
||||
|
||||
cv: cv.typ
|
||||
typst compile --input lang=en cv.typ build/cv_en.pdf
|
||||
typst compile --input lang=de cv.typ build/cv_de.pdf
|
||||
|
||||
resume: resume.typ
|
||||
typst compile --input lang=en resume.typ build/resume_en.pdf
|
||||
typst compile --input lang=de resume.typ build/resume_de.pdf
|
||||
cv: resume_de.qmd resume_en.qmd templates/jb2resume.latex
|
||||
poetry run quarto render resume_de.qmd resume_en.qmd
|
||||
|
||||
letter: letter.qmd templates/letter.latex
|
||||
poetry run quarto render letter.qmd
|
||||
|
|
15
_quarto.yml
Normal file
15
_quarto.yml
Normal file
|
@ -0,0 +1,15 @@
|
|||
project:
|
||||
output-dir: _output
|
||||
|
||||
format:
|
||||
html: default
|
||||
pdf:
|
||||
latex-auto-mk: false
|
||||
pdf-engine: tectonic
|
||||
template: templates/jb2resume.latex
|
||||
include-in-header:
|
||||
- text: |
|
||||
\usepackage{xcolor}
|
||||
|
||||
execute:
|
||||
echo: false
|
32
content.yml
32
content.yml
|
@ -180,8 +180,8 @@ experience:
|
|||
de: 2021
|
||||
en: 2021
|
||||
title:
|
||||
de: Forschungsassistenz, Informelle Organisierung und Absicherung
|
||||
en: Research Assistant, Informal Organization and Social Security
|
||||
de: Forschungsassistenz, informelle Organisierung und Absicherung
|
||||
en: Research Assistant, informal organization and social security
|
||||
place:
|
||||
de: Universität Roskilde
|
||||
en: Roskilde University
|
||||
|
@ -199,8 +199,8 @@ experience:
|
|||
de: 2021
|
||||
en: 2021
|
||||
title:
|
||||
de: Redakteur, Soziale Absicherung informeller Arbeiter (SPIWORK)
|
||||
en: Editorial Assistant, Social Protection of Informal Workers (SPIWORK)
|
||||
de: Redaktionsassistenz, SPIWORK-Projekt
|
||||
en: Editorial Assistant, SPIWORK Project
|
||||
place:
|
||||
de: Universität Roskilde
|
||||
en: Roskilde University
|
||||
|
@ -377,16 +377,6 @@ volunteering:
|
|||
en: IT and event management services
|
||||
|
||||
skills:
|
||||
- name:
|
||||
de: Office-Suite
|
||||
en: Office suite
|
||||
items:
|
||||
- de: Excel
|
||||
en: Excel
|
||||
- de: Word
|
||||
en: Word
|
||||
- de: Access
|
||||
en: Access
|
||||
- name:
|
||||
de: Autorensoftware
|
||||
en: Authoring software
|
||||
|
@ -437,6 +427,16 @@ skills:
|
|||
en: Jujutsu
|
||||
- de: Fossil
|
||||
en: Fossil
|
||||
- name:
|
||||
de: Office-Suite
|
||||
en: Office suite
|
||||
items:
|
||||
- de: Excel
|
||||
en: Excel
|
||||
- de: Word
|
||||
en: Word
|
||||
- de: Access
|
||||
en: Access
|
||||
- name:
|
||||
de: Web Content Management
|
||||
en: Web content management
|
||||
|
@ -447,8 +447,8 @@ skills:
|
|||
en: Hugo
|
||||
- de: Flask
|
||||
en: Flask
|
||||
# - de: Astro
|
||||
# en: Astro
|
||||
- de: Astro
|
||||
en: Astro
|
||||
- de: HTML
|
||||
en: HTML
|
||||
- de: CSS
|
||||
|
|
2295
poetry.lock
generated
Normal file
2295
poetry.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
0
processing/__init__.py
Normal file
0
processing/__init__.py
Normal file
92
processing/content.py
Normal file
92
processing/content.py
Normal file
|
@ -0,0 +1,92 @@
|
|||
from typing import Any
|
||||
|
||||
|
||||
def summary_to_md(data: dict[str, Any], lang: str = "en", headline: str = ""):
|
||||
if "summary" not in data:
|
||||
return ""
|
||||
md = f"{headline}\n\n {data['summary'][lang]}\n\n"
|
||||
|
||||
return md
|
||||
|
||||
|
||||
def _publication_md(publication: str, subdued: bool):
|
||||
md = "> "
|
||||
if subdued:
|
||||
md += "\\textcolor{publication}{"
|
||||
md += publication
|
||||
if subdued:
|
||||
md += "}"
|
||||
return f"{md}\n\n"
|
||||
|
||||
|
||||
def experience_to_md(
|
||||
data: dict[str, Any],
|
||||
lang: str = "en",
|
||||
headline: str = "",
|
||||
subdued_publications: bool = True, # slightly off-color presentation
|
||||
bulletpoints_show: bool = True, # display detailed bulletpoints per job
|
||||
):
|
||||
if "experience" not in data:
|
||||
return ""
|
||||
|
||||
md = f"{headline}\n\n"
|
||||
md += "\\definecolor{publication}{rgb}{0.5,0.5,0.5}\n\n"
|
||||
for exp in data["experience"]:
|
||||
client = exp["client"][lang] if "client" in exp else ""
|
||||
title = exp["title"][lang] if "title" in exp else ""
|
||||
md += (
|
||||
# new python 3.12 f-string embedding niceness
|
||||
f"## {title}{f", {client}" if client else ""}\\hfill{exp['date'][lang]}\n\n"
|
||||
)
|
||||
|
||||
if "publication" in exp:
|
||||
md += _publication_md(exp["publication"][lang], subdued_publications)
|
||||
|
||||
if bulletpoints_show:
|
||||
for point in exp["bullets"]:
|
||||
md += f"* {point[lang]}\n"
|
||||
md += "\n\n"
|
||||
|
||||
return md
|
||||
|
||||
|
||||
def thesis_to_md(data: dict[str, Any], lang: str = "en"):
|
||||
md = ""
|
||||
for thesis in data["thesis"]:
|
||||
md += f"{thesis['type'][lang]}\n"
|
||||
md += f": {thesis['title'][lang]}\n"
|
||||
md += f": {thesis['abstract'][lang]}\n"
|
||||
return f"{md}\n"
|
||||
|
||||
|
||||
def education_to_md(
|
||||
data: dict[str, Any], lang: str = "en", headline: str = "", thesis: bool = True
|
||||
):
|
||||
if "education" not in data:
|
||||
return ""
|
||||
|
||||
md = f"{headline}\n\n"
|
||||
|
||||
if thesis and "thesis" in data:
|
||||
md += thesis_to_md(data, lang)
|
||||
|
||||
for edu in data["education"]:
|
||||
md += (
|
||||
f"{edu['place'][lang]}\n\n: {edu['program'][lang]}; {edu['date'][lang]}\n\n"
|
||||
)
|
||||
|
||||
return md
|
||||
|
||||
|
||||
def qualifications_to_md(data: dict[str, Any], lang: str = "en", headline: str = ""):
|
||||
if "skills" not in data:
|
||||
return ""
|
||||
|
||||
md = f"{headline}\n\n"
|
||||
for skillset in data["skills"]:
|
||||
md += f"{skillset[lang]}\n\n"
|
||||
for content in skillset["content"]:
|
||||
md += f": {content['name'][lang]} ({', '.join([item[lang] for item in content['items']])})\n"
|
||||
md += "\n"
|
||||
|
||||
return md
|
9
processing/yml.py
Normal file
9
processing/yml.py
Normal file
|
@ -0,0 +1,9 @@
|
|||
import yaml
|
||||
|
||||
DEFAULT_FILE = "content.yml"
|
||||
|
||||
|
||||
def parse(fname: str = DEFAULT_FILE):
|
||||
with open(fname, mode="rb") as f:
|
||||
return yaml.safe_load(f)
|
||||
|
22
pyproject.toml
Normal file
22
pyproject.toml
Normal file
|
@ -0,0 +1,22 @@
|
|||
[tool.poetry]
|
||||
name = "resume"
|
||||
version = "0.1.0"
|
||||
description = "My personal curriculum vitae"
|
||||
authors = ["Marty Oehme <marty.oehme@gmail.com>"]
|
||||
license = "GPLv3"
|
||||
packages = [
|
||||
{ include = "processing"}
|
||||
]
|
||||
|
||||
[tool.poetry.dependencies]
|
||||
python = "^3.11"
|
||||
PyYAML = "^6.0"
|
||||
jupyter = "^1.0.0"
|
||||
|
||||
[tool.poetry.group.dev.dependencies]
|
||||
pynvim = "^0.4.3"
|
||||
pyperclip = "^1.8.2"
|
||||
|
||||
[build-system]
|
||||
requires = ["poetry-core"]
|
||||
build-backend = "poetry.core.masonry.api"
|
|
@ -271,7 +271,7 @@
|
|||
}),
|
||||
align(right, block(fill: luma(250), width: 90%,
|
||||
{
|
||||
v(15pt)
|
||||
v(20pt)
|
||||
set block(inset: (left: 20 * margin, right: 20 * margin))
|
||||
show heading: it => align(right, upper(it))
|
||||
set list(marker: "")
|
||||
|
@ -280,7 +280,6 @@
|
|||
align(right, block(it))
|
||||
}
|
||||
sidebar
|
||||
v(15pt)
|
||||
}))
|
||||
)
|
||||
|
||||
|
|
47
resume_de.qmd
Normal file
47
resume_de.qmd
Normal file
|
@ -0,0 +1,47 @@
|
|||
---
|
||||
title: Lebenslauf
|
||||
subtitle: Marty Oehme
|
||||
name: Marty Oehme
|
||||
lang: de
|
||||
left-column:
|
||||
- "Email: [marty.oehme@gmail.com](mailto:marty.oehme@gmail.com)"
|
||||
- "Telefon: +49 177 377 4949"
|
||||
right-column:
|
||||
- "Homepage: [http://martyoeh.me/](http://martyoeh.me/)"
|
||||
- "GitHub: [https://github.com/marty-oehme/](https://github.com/marty-oehme/)"
|
||||
- 'Stand: \today'
|
||||
---
|
||||
|
||||
```{python}
|
||||
from processing import yml, content
|
||||
from IPython.display import Markdown
|
||||
|
||||
data = yml.parse("content.yml")
|
||||
lang = "de"
|
||||
```
|
||||
|
||||
```{python}
|
||||
#| label: summary
|
||||
display(Markdown(content.summary_to_md(data, headline="# Zusammenfassung", lang=lang)))
|
||||
```
|
||||
|
||||
```{python}
|
||||
#| label: prof experience
|
||||
display(
|
||||
Markdown(content.experience_to_md(data, headline="# Berufserfahrung", lang=lang))
|
||||
)
|
||||
```
|
||||
|
||||
```{python}
|
||||
#| label: education
|
||||
display(Markdown(content.education_to_md(data, headline="# Ausbildung", lang=lang)))
|
||||
```
|
||||
|
||||
```{python}
|
||||
#| label: qualifications
|
||||
display(
|
||||
Markdown(
|
||||
content.qualifications_to_md(data, headline="# Qualifikationen", lang=lang)
|
||||
)
|
||||
)
|
||||
```
|
51
resume_en.qmd
Normal file
51
resume_en.qmd
Normal file
|
@ -0,0 +1,51 @@
|
|||
---
|
||||
title: Curriculum Vitae
|
||||
subtitle: Marty Oehme
|
||||
name: Marty Oehme
|
||||
lang: en
|
||||
left-column:
|
||||
- "Email: [marty.oehme@gmail.com](mailto:marty.oehme@gmail.com)"
|
||||
- "Mobile: +49 177 377 4949"
|
||||
right-column:
|
||||
- "Homepage: [http://martyoeh.me/](http://martyoeh.me/)"
|
||||
- "GitHub: [https://github.com/marty-oehme/](https://github.com/marty-oehme/)"
|
||||
- 'Last Updated: \today'
|
||||
---
|
||||
|
||||
```{python}
|
||||
from processing import yml, content
|
||||
from IPython.display import Markdown
|
||||
|
||||
data = yml.parse("content.yml")
|
||||
lang = "en"
|
||||
```
|
||||
|
||||
```{python}
|
||||
#| label: summary
|
||||
display(Markdown(content.summary_to_md(data, headline="# Summary", lang=lang)))
|
||||
```
|
||||
|
||||
```{python}
|
||||
#| label: prof experience
|
||||
display(
|
||||
Markdown(
|
||||
content.experience_to_md(
|
||||
data,
|
||||
headline="# Professional experience",
|
||||
lang=lang,
|
||||
)
|
||||
)
|
||||
)
|
||||
```
|
||||
|
||||
```{python}
|
||||
#| label: education
|
||||
display(Markdown(content.education_to_md(data, headline="# Education", lang=lang)))
|
||||
```
|
||||
|
||||
```{python}
|
||||
#| label: qualifications
|
||||
display(
|
||||
Markdown(content.qualifications_to_md(data, headline="# Qualifications", lang=lang))
|
||||
)
|
||||
```
|
103
templates/jb2resume.latex
Normal file
103
templates/jb2resume.latex
Normal file
|
@ -0,0 +1,103 @@
|
|||
% LaTeX Resume Pandoc Template jb2resume.latex
|
||||
%
|
||||
% Copyright (c) 2016-2017, John Bokma
|
||||
% Based on Jason Blevins' LaTeX CV Template;
|
||||
% http://jblevins.org/projects/cv-template/
|
||||
%
|
||||
% GitHub: https://github.com/john-bokma/resume-pandoc
|
||||
|
||||
\documentclass[$if(fontsize)$$fontsize$$else$10pt$endif$,letterpaper]{article}
|
||||
|
||||
\usepackage{hyperref}
|
||||
\usepackage{geometry}
|
||||
\usepackage{enumitem}
|
||||
\usepackage{underscore}
|
||||
\usepackage[parfill]{parskip}
|
||||
\usepackage{lmodern}
|
||||
\usepackage[svgnames]{xcolor}
|
||||
\usepackage[utf8]{inputenc}
|
||||
|
||||
% Your name on the resume
|
||||
\def\name{$name$}
|
||||
|
||||
% The following metadata will show up in the PDF properties
|
||||
\hypersetup{
|
||||
colorlinks = true,
|
||||
urlcolor=$if(urlcolor)$$urlcolor$$else$blue$endif$,
|
||||
linkcolor=$if(linkcolor)$$linkcolor$$else$magenta$endif$,
|
||||
pdfauthor = {\name},
|
||||
pdfkeywords = {$keywords$},
|
||||
pdftitle = {\name: Curriculum Vitae},
|
||||
pdfsubject = {Curriculum Vitae},
|
||||
pdfpagemode = UseNone
|
||||
}
|
||||
|
||||
\geometry{
|
||||
left=0.5in,
|
||||
top=0.5in,
|
||||
right=0.5in,
|
||||
}
|
||||
\renewcommand{\baselinestretch}{1}
|
||||
|
||||
% Fix for "! Undefined control sequence. <recently read> \tightlist",
|
||||
% see: https://github.com/osener/markup.rocks/issues/4
|
||||
% I have this issue with Pandoc 1.17.2
|
||||
\providecommand{\tightlist}{%
|
||||
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
||||
|
||||
% Page number is top right, and it is possible to control the rest of
|
||||
% the header.
|
||||
\pagestyle{myheadings}
|
||||
\markright{\name}
|
||||
\thispagestyle{empty}
|
||||
|
||||
% Custom section fonts
|
||||
\usepackage{sectsty}
|
||||
$if(section-color)$
|
||||
\sectionfont{\color{$section-color$}\sffamily\bfseries\Large}
|
||||
$else$
|
||||
\sectionfont{\rmfamily\mdseries\Large}
|
||||
$endif$
|
||||
\subsectionfont{\rmfamily\mdseries\itshape\large}
|
||||
|
||||
% Section numbers or not (default)
|
||||
$if(numbersections)$
|
||||
\setcounter{secnumdepth}{5}
|
||||
$else$
|
||||
\setcounter{secnumdepth}{0}
|
||||
$endif$
|
||||
|
||||
% By putting an empty \item[] at the start of the list, the list
|
||||
% starts on a new line.
|
||||
\setlist[itemize]{leftmargin=1em,label={--},before=\item[]}
|
||||
|
||||
\setlist[description]{leftmargin=0em, style=sameline}
|
||||
|
||||
% Don't use monospace font for URLs
|
||||
\urlstyle{same}
|
||||
|
||||
\begin{document}
|
||||
|
||||
% Place name at left
|
||||
$if(name-color)$
|
||||
{\huge\color{$name-color$}\sffamily\bfseries \name}
|
||||
$else$
|
||||
{\huge \name}
|
||||
$endif$
|
||||
|
||||
\bigskip
|
||||
|
||||
$if(left-column)$
|
||||
\begin{minipage}[t]{0.495\textwidth}
|
||||
$for(left-column)$$left-column$$sep$ \\ $endfor$
|
||||
\end{minipage} % Don't use empty lines after \end and the next \begin{minipage}.
|
||||
$endif$
|
||||
$if(right-column)$
|
||||
\begin{minipage}[t]{0.495\textwidth}
|
||||
$for(right-column)$$right-column$$sep$ \\ $endfor$
|
||||
\end{minipage}
|
||||
$endif$
|
||||
|
||||
$body$
|
||||
|
||||
\end{document}
|
645
templates/letter.latex
Normal file
645
templates/letter.latex
Normal file
|
@ -0,0 +1,645 @@
|
|||
%
|
||||
% Options for packages loaded elsewhere
|
||||
%
|
||||
% taken with gratitude from:
|
||||
% https://github.com/benedictdudel/pandoc-letter-din5008
|
||||
%
|
||||
\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(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}
|
||||
$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$
|
||||
$-- 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$
|
||||
$if(sansfont)$
|
||||
\setsansfont[$for(sansfontoptions)$$sansfontoptions$$sep$,$endfor$]{$sansfont$}
|
||||
$endif$
|
||||
$if(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
|
||||
\setmathfont(Digits,Latin,Greek)[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
|
||||
\else
|
||||
\setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
|
||||
\fi
|
||||
$else$
|
||||
\setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
|
||||
$endif$
|
||||
$endif$
|
||||
$if(CJKmainfont)$
|
||||
\ifXeTeX
|
||||
\usepackage{xeCJK}
|
||||
\setCJKmainfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
|
||||
\fi
|
||||
$endif$
|
||||
$if(luatexjapresetoptions)$
|
||||
\ifLuaTeX
|
||||
\usepackage[$for(luatexjapresetoptions)$$luatexjapresetoptions$$sep$,$endfor$]{luatexja-preset}
|
||||
\fi
|
||||
$endif$
|
||||
$if(CJKmainfont)$
|
||||
\ifLuaTeX
|
||||
\usepackage[$for(luatexjafontspecoptions)$$luatexjafontspecoptions$$sep$,$endfor$]{luatexja-fontspec}
|
||||
\setmainjfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
|
||||
\fi
|
||||
$endif$
|
||||
\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}}
|
||||
$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$
|
||||
$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}
|
||||
$if(has-frontmatter)$
|
||||
\frontmatter
|
||||
$endif$
|
||||
$if(title)$
|
||||
$if(beamer)$
|
||||
\frame{\titlepage}
|
||||
$else$
|
||||
\maketitle
|
||||
$endif$
|
||||
$if(abstract)$
|
||||
\begin{abstract}
|
||||
$abstract$
|
||||
\end{abstract}
|
||||
$endif$
|
||||
$endif$
|
||||
|
||||
$for(include-before)$
|
||||
$include-before$
|
||||
|
||||
$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$
|
||||
|
||||
% OVERRIDES
|
||||
\begin{letter}{%
|
||||
$sendto$
|
||||
}
|
||||
\opening{\usekomavar{opening}}
|
||||
% END OVERRIDES
|
||||
$body$
|
||||
% OVERRIDES
|
||||
\closing{\usekomavar{closing}}
|
||||
$if(ps)$\ps{$ps$}$endif$
|
||||
$if(encl)$\encl{$encl$}$endif$
|
||||
% END OVERRIDES
|
||||
|
||||
$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$
|
||||
|
||||
$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$
|
||||
|
||||
$endif$
|
||||
$for(include-after)$
|
||||
$include-after$
|
||||
|
||||
$endfor$
|
||||
% OVERRIDES
|
||||
$if(cc)$
|
||||
\cc{$cc$}
|
||||
$endif$
|
||||
\end{letter}
|
||||
% END OVERRIDES
|
||||
\end{document}
|
Loading…
Reference in a new issue