From ef98c16af01f5efa41b84a5af70a946e5986b7ca Mon Sep 17 00:00:00 2001 From: Tuesday Date: Sun, 12 Jun 2022 20:08:58 +0200 Subject: [PATCH] initial Commit --- README.md | 68 +++++ templates/seminarfach.latex | 478 ++++++++++++++++++++++++++++++++++++ 2 files changed, 546 insertions(+) create mode 100644 README.md create mode 100644 templates/seminarfach.latex diff --git a/README.md b/README.md new file mode 100644 index 0000000..972fe1d --- /dev/null +++ b/README.md @@ -0,0 +1,68 @@ +# Templates für die Seminarfacharbeit an der TGS-Weimar + +## Pandoc Template + +Das Template [seminarfach.latex](https://gitlab.com/october32551/tgsw_semi/-/blob/main/templates/seminarfach.latex) ist eine Modifikation des [default Pandoc Templates](https://github.com/jgm/pandoc/blob/master/data/templates/default.latex). + +### Variablen + +Die folgenden Variablen müssen in dem [Yaml Metadata Block](https://pandoc.org/MANUAL.html#extension-yaml_metadata_block) der Markdown Datei angegeben werden um das Titelblatt und die Kopfzeile richtig zu generieren. + +#### allgemein Variablen + ++ `documentclass` + + eg. `documentclass: article` ++ `mainfont` + + eg. `mainfont: Carlito` ++ `titel` + + eg. `titel: Ein sehr langer Titel der meine Seminarfacharbeit beschreibt` ++ `kurztitel` für für Kopfzeile + + falls `titel` zu lang für die Kopfzeile ist, kann **auch** ein kurztitel definiert werden + + eg. `kurztitel: Mein Thema` ++ `student` + + wenn mehrere Angegeben werden sollten diese schon Alphabetisch sortiert angegeben werden + + eg.: + +```yaml +student: +- nachname: Mustermann + name: Max + stammkurs: 11 1 +- nachname: Müller + name: Marie + stammkurs: 12 3 +``` + ++ `nur-nachname` + + kann zu `nur-nachname: true` gesetzt werden um nur die Nachnamen in der Kopfzeile zu setzen + +#### Deckblatt + +Falls ein Deckblatt generiert werden soll müssen diese Variablen gesetzt werden und `deckblatt: true` hinzugefühgt werden. + ++ `schulname` + + eg. `schulname: Staatliche Gemeinschaftsschule Weimar` ++ `seminarfachlehrer-in`, `seminarfachlehrerin` oder `seminarfachlehrer` + + eg. `seminarfachlehrer: Max Mustermann` + + `Seminarfachlehrer-in` für SeminarfachlehrerIn ++ `fachbetreuer-in`, `fachbetreuerin` oder `fachbetreuer` + + eg. `fachbetreuerin: Martina Mustermann` + +Um eine eigenes Latex-Deckblatt zu benutzen muss `deckblatt-datei: Pfad-zur-datei` angegeben werden, z.B. `deckblatt-datei: ./deckblatt.tex` + +### Kompilieren + ++ template datei muss in User-Dir/templates sein siehe `pandoc -v` + + unter Linux: `~/.local/share/pandoc/templates` + + unter Windows: `C:\Users\USERNAME\AppData\Roaming\pandoc` ++ Befehl: + +```bash +pandoc file.md --standalone --template=seminarfach -o outputfile.pdf --pdf-engine=xelatex +``` + +# Todo + ++ [] Beispiel Datei ++ [] definition von `documentclass` unnötig machen ++ [] vielleicht generelle einführung in Pandoc diff --git a/templates/seminarfach.latex b/templates/seminarfach.latex new file mode 100644 index 0000000..75312aa --- /dev/null +++ b/templates/seminarfach.latex @@ -0,0 +1,478 @@ +% Modification of https://github.com/jgm/pandoc/blob/master/data/templates/default.latex +% Options for packages loaded elsewhere +\PassOptionsToPackage{unicode$for(hyperrefoptions)$,$hyperrefoptions$$endfor$}{hyperref} +\PassOptionsToPackage{hyphens}{url} +$if(colorlinks)$ +\PassOptionsToPackage{dvipsnames,svgnames,x11names}{xcolor} +$endif$ +$if(dir)$ +$if(latex-dir-rtl)$ +\PassOptionsToPackage{RTLdocument}{bidi} +$endif$ +$endif$ +$if(CJKmainfont)$ +\PassOptionsToPackage{space}{xeCJK} +$endif$ +% +\documentclass[ + 12pt, + ngerman, +$for(classoption)$ + $classoption$$sep$, +$endfor$ +]{$documentclass$} + +% Kopf und Fußzeile +\usepackage{fancyhdr} +\setlength{\parskip}{1em} +\setlength{\parindent}{0em} +\pagestyle{fancy} +\fancyhf{} +\fancyhead[L]{ + $if(kurztitel)$ + $kurztitel$ + $else$ + $titel$ + $endif$ +} +\fancyhead[R]{ + $for(student)$ + $if(nur-nachname)$ + $student.nachname$ + $else$ + \textit{$student.name$} $student.nachname$ + $endif$ + $endfor$ +} + +\fancyfoot[R]{Seite \thepage} +\fancypagestyle{plain}{\pagestyle{fancy}} +\renewcommand{\headwidth}{\textwidth} +% \renewcommand{\headrulewidth}{0pt} % Entfernt Linie unter Kopfzeile + +\usepackage{amsmath,amssymb} +$if(fontfamily)$ +\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$} +$else$ +\usepackage{lmodern} +$endif$ +$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} + \else + \usepackage{unicode-math} + \fi +$else$ + \usepackage{unicode-math} +$endif$ + \defaultfontfeatures{Scale=MatchLowercase} + \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1} +$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} +\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$ +$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$ + hidelinks, +$endif$ + pdfcreator={LaTeX via pandoc}} +\urlstyle{same} % disable monospaced font for URLs +$if(verbatim-in-note)$ +\VerbatimFootnotes % allow verbatim text in footnotes +$endif$ +\usepackage[a4paper, left=2.5cm, right=2.5cm, top=2.5cm, bottom=2.0cm]{geometry} +$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(links-as-notes)$ +% Make links footnotes instead of hotlinks: +\DeclareRobustCommand{\href}[2]{#2\footnote{\url{#1}}} +$endif$ +$if(strikeout)$ +\usepackage[normalem]{ulem} +% Avoid problems with \sout in headers with hyperref +\pdfstringdefDisableCommands{\renewcommand{\sout}{}} +$endif$ +\setlength{\emergencystretch}{3em} % prevent overfull lines +\providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} +\setcounter{secnumdepth}{3} +$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$ +$for(header-includes)$ +$header-includes$ +$endfor$ +\usepackage[main=ngerman]{babel} +% get rid of language-specific shorthands (see #6817): +\let\LanguageShortHands\languageshorthands +\def\languageshorthands#1{} +$if(babel-newcommands)$ + $babel-newcommands$ +$endif$ +\ifLuaTeX + \usepackage{selnolig} % disable illegal ligatures +\fi +$if(dir)$ +\ifXeTeX + % Load bidi as late as possible as it modifies e.g. graphicx + \usepackage{bidi} +\fi +\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$ + +% Figure Label von Abbildung zu Abb. ändern +\usepackage[figurename=Abb., tablename=Abb.]{caption} +% Figuren unabhängig von Chapter nummerieren +% https://texblog.org/2014/12/04/continuous-figuretable-numbering-in-latex/ +% \counterwithout{figure}{chapter} + +% \usepackage{titlesec} +% \titleformat*{\chapter} +% {\normalfont\fontsize{16pt}{19.2pt}\selectfont\bfseries}{\thechapter}{}{} +% \titleformat*{\section} +% {\normalfont\fontsize{14pt}{16.8pt}\selectfont\bfseries}{\thesection}{1em}{} +% \titleformat*{\subsection} +% {\normalfont\fontsize{12pt}{14.4pt}\selectfont\bfseries}{\thesubsection}{1em}{} +\usepackage{sectsty} + +\sectionfont{\fontsize{16}{19}\selectfont} +\subsectionfont{\fontsize{14}{17}\selectfont} +\subsubsectionfont{\fontsize{12}{15}\selectfont} + +\begin{document} + +% Deckblatt +$if(deckblatt-datei)$ +\input{$deckblatt-datei$} +$endif$ + +% Default Deckblatt +$if(deckblatt)$ +\begin{titlepage} + \centering + \vspace*{2cm} + % \line(1,0){\textwidth}\\ + % \hrulefill{}\\ + \underline{\underline{\LARGE{\textbf{$titel$}}}}\\ + \vspace*{1cm} + % \line(1,0){375} + % \hrulefill{}\\ + \large{Seminarfach}\\ + \large{$schulname$} + \vfill + $if(seminarfachlehrer-in)$ + \large{\textit{SeminarfachlehrerIn:} $seminarfachlehrer-in$}\\ + $endif$ + $if(seminarfachlehrerin)$ + \large{\textit{Seminarfachlehrerin:} $seminarfachlehrerin$}\\ + $endif$ + $if(seminarfachlehrer)$ + \large{\textit{Seminarfachlehrer:} $seminarfachlehrer$}\\ + $endif$ + $if(fachbetreuer-in)$ + \large{\textit{FachbetreuerIn:} $fachbetreuer-in$}\\ + $endif$ + $if(fachbetreuerin)$ + \large{\textit{Fachbetreuerin:} $fachbetreuerin$}\\ + $endif$ + $if(fachbetreuer)$ + \large{\textit{Fachbetreuer:} $fachbetreuer$}\\ + $endif$ + \line(1,0){100}\\ + $for(student)$ + \large{$it.nachname$ $it.name$, $it.stammkurs$}\\ + $endfor$ + \vfill + \hrulefill{}\large{$datum$}\hrulefill{} + \vspace*{2cm} +\end{titlepage} +$endif$ + +$for(include-before)$ +$include-before$ + +$endfor$ + +% Inhaltsverzeichnis +\tableofcontents + +\thispagestyle{empty} + + +$if(lof)$ +\listoffigures +$endif$ +$if(lot)$ +\listoftables +$endif$ +$if(linestretch)$ +\setstretch{$linestretch$} +$endif$ +\pagebreak{} +$if(has-frontmatter)$ +\mainmatter +$endif$ + +\setcounter{page}{1} + +$body$ + +$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$ +\end{document}