From d204c31d8b029e10fed23db855dcccc2f5b7422b Mon Sep 17 00:00:00 2001 From: Prashantha T P Date: Thu, 4 Nov 2021 16:40:14 +0530 Subject: [PATCH] feat(pandoc): add utils/script for markdown to pdf conversion includes templates --- .config/utils/pandoc/md2pdf.sh | 43 + .config/utils/pandoc/templates/Document1.pdf | Bin 0 -> 1188 bytes .config/utils/pandoc/templates/README.md | 7 + .config/utils/pandoc/templates/background.pdf | Bin 0 -> 1073 bytes .../utils/pandoc/templates/background1.PNG | Bin 0 -> 8219 bytes .../utils/pandoc/templates/background1.pdf | Bin 0 -> 1061 bytes .../pandoc/templates/background1_edited.png | Bin 0 -> 33219 bytes .config/utils/pandoc/templates/eisvogel.tex | 1064 +++++++++++++++++ .config/utils/pandoc/templates/head.tex | 40 + .config/utils/pandoc/templates/metadata.yml | 15 + .config/utils/pandoc/templates/template.tex | 556 +++++++++ 11 files changed, 1725 insertions(+) create mode 100644 .config/utils/pandoc/md2pdf.sh create mode 100644 .config/utils/pandoc/templates/Document1.pdf create mode 100644 .config/utils/pandoc/templates/README.md create mode 100644 .config/utils/pandoc/templates/background.pdf create mode 100644 .config/utils/pandoc/templates/background1.PNG create mode 100644 .config/utils/pandoc/templates/background1.pdf create mode 100644 .config/utils/pandoc/templates/background1_edited.png create mode 100644 .config/utils/pandoc/templates/eisvogel.tex create mode 100644 .config/utils/pandoc/templates/head.tex create mode 100644 .config/utils/pandoc/templates/metadata.yml create mode 100644 .config/utils/pandoc/templates/template.tex diff --git a/.config/utils/pandoc/md2pdf.sh b/.config/utils/pandoc/md2pdf.sh new file mode 100644 index 0000000..5db5a3f --- /dev/null +++ b/.config/utils/pandoc/md2pdf.sh @@ -0,0 +1,43 @@ +#! /bin/sh +if [ "$1" == "-h" ] ; then + echo "Usage: `basename $0` [input_file] [out_dir] [-h]" +fi + +if [ -z "$1" ] + then + echo "No input file specified." + exit 0 +fi + +if [ -z "$2" ];then + out_dir=pdf +else + out_dir=$2 +fi +echo "Creating output dir if not exists : $out_dir" +mkdir -p "$out_dir" +echo "======== Markdown to PDF ================" +filename_full=$(basename -- "$1") +extension="${filename_full##*.}" +filename="${filename_full%.*}" +out_file=$out_dir/${filename}".pdf" +data_dir="$HOME/.config/utils/pandoc" +header_file="$data_dir/templates/head.tex" +user_metadata_file="$(dirname \"$1\")/metadata.yml" +metadata_file="~/.config/utils/templates/metadata.yml" +[ -f "$user_metadata_file" ] && metadata_file="$user_metadata_file" +echo "Source file": $filename_full +echo "Target file": $out_file +echo "Metadata file": $metadata_file + +pandoc -N -s \ + --data-dir="$data_dir"\ + --template=eisvogel.tex \ + -H "$header_file" \ + --listings $1 \ + --toc --toc-depth=4 \ + --metadata-file "$metadata_file" \ + -o $out_file + + +echo "=========================================" diff --git a/.config/utils/pandoc/templates/Document1.pdf b/.config/utils/pandoc/templates/Document1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..bab1da4e3c7ad672c2a7a0ac88fe638e471b2e0d GIT binary patch literal 1188 zcmah}O-vI(6h7$1;(F1OL^GEP#=!n`x4UbaMxYc36q=TVL≈nWam%J9T#&3ek|D zUJM}~JgRWuq(`DA9Q8ngC*y@9BzhuVyy-!G(-u}C(K$3T@9q2Ed*An7AYH-i>!DR>wlJj^D9$Nb`y;!G6 z9>N@ZY%ZOas80l3B7z-g@G1*XZ$7|b75lu3rcwSn#IRb8`jDu%{itJqv3(CH<}ULy zm{Zi7xv43ds@Pgm(+pL&Z>VOEruK*!@tr`P$rsT~;Bp#(b(}6Puz<8-bBz2CB_A-- zs8E1`;38`T6$(+V<5Kdkq7(YTD%bm!%aR?uWSUACl-Qi1LxMGJ{aL3N>fyBMK%RDsCW8JDc<0prlB2bE@M zg%PNCg8Flyu&S646AL*=RFh)OXSv;h*n?Z=A01r$e1Y{%tX@ly$^C8q@yzJq%ax_& zdLgr0I{WipxAf%ArJdUTua%zIzu%iG_oZ&#mpox7q+F_^$k-p(wFN$u1;#2P>Z5Iyd~gp>rI1t2Ku zG>lpm^Z(aolx8ERScSGTvNZ$hNHGQ3@N;}n(l8PR5{}MMA*(pZKem|$;GM9k3hdAc zo27!dCv6G)lug%9;~C~@Tf&4UkMMYaU5^GZ2Ss;@A{)sC#spcdr62PhhQwCGAHY}! zl~Q)nEGxt|4NGx!TdkBWOUEYG9Lq8ktZV5MAx4srG9jjpb+}^{s8IBZVVF)r(@0wI T8FC!(7IT(iOY!*dR95;8Qpr_z literal 0 HcmV?d00001 diff --git a/.config/utils/pandoc/templates/README.md b/.config/utils/pandoc/templates/README.md new file mode 100644 index 0000000..4afdead --- /dev/null +++ b/.config/utils/pandoc/templates/README.md @@ -0,0 +1,7 @@ +# Dev Utils + +## Markdown to Pdf + +# LICENSE : +* [https://github.com/Wandmalfarbe/pandoc-latex-template/LICENSE](https://github.com/Wandmalfarbe/pandoc-latex-template/blob/6baf692c89a5be30a44e4dd0137d8a07bd0a114c/LICENSE) +* Jdhao's [blog](https://jdhao.github.io/2019/05/30/markdown2pdf_pandoc/] : [Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0)](https://creativecommons.org/licenses/by-nc-nd/4.0/) diff --git a/.config/utils/pandoc/templates/background.pdf b/.config/utils/pandoc/templates/background.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6c8ed29f0aaecf1af006c0fa4ae9c3d765108c4b GIT binary patch literal 1073 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 literal 0 HcmV?d00001 diff --git a/.config/utils/pandoc/templates/background1.pdf b/.config/utils/pandoc/templates/background1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c0850b1de75b66ec36e9e23809ffbbb83ee41f86 GIT binary patch literal 1061 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\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}} +$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$ + +% Make use of float-package and set default placement for figures to H. +% The option H means 'PUT IT HERE' (as opposed to the standard h option which means 'You may put it here if you like'). +\usepackage{float} +\floatplacement{figure}{$if(float-placement-figure)$$float-placement-figure$$else$H$endif$} + +$for(header-includes)$ +$header-includes$ +$endfor$ +$if(lang)$ +\ifxetex + $if(mainfont)$ + $else$ + % See issue https://github.com/reutenauer/polyglossia/issues/127 + \renewcommand*\familydefault{\sfdefault} + $endif$ + % Load polyglossia as late as possible: uses bidi with RTL langages (e.g. Hebrew, Arabic) + \usepackage{polyglossia} + \setmainlanguage[$for(polyglossia-lang.options)$$polyglossia-lang.options$$sep$,$endfor$]{$polyglossia-lang.name$} +$for(polyglossia-otherlangs)$ + \setotherlanguage[$for(polyglossia-otherlangs.options)$$polyglossia-otherlangs.options$$sep$,$endfor$]{$polyglossia-otherlangs.name$} +$endfor$ +\else + \usepackage[$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=$babel-lang$]{babel} +% get rid of language-specific shorthands (see #6817): +\let\LanguageShortHands\languageshorthands +\def\languageshorthands#1{} +$if(babel-newcommands)$ + $babel-newcommands$ +$endif$ +\fi +$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 +\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex + \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(csl-refs)$ +\newlength{\cslhangindent} +\setlength{\cslhangindent}{1.5em} +\newlength{\csllabelwidth} +\setlength{\csllabelwidth}{3em} +\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 \everypar{\setlength{\hangindent}{\cslhangindent}}\ignorespaces\fi + % set entry spacing + \ifnum #2 > 0 + \setlength{\parskip}{#2\baselineskip} + \fi + }% + {} +\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(csquotes)$ +\usepackage{csquotes} +$endif$ + +$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$ + + + +%% +%% added +%% + +% +% language specification +% +% If no language is specified, use English as the default main document language. +% +$if(lang)$$else$ +\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex + \usepackage[shorthands=off,$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=english]{babel} +$if(babel-newcommands)$ + $babel-newcommands$ +$endif$ +\else + $if(mainfont)$ + $else$ + % Workaround for bug in Polyglossia that breaks `\familydefault` when `\setmainlanguage` is used. + % See https://github.com/Wandmalfarbe/pandoc-latex-template/issues/8 + % See https://github.com/reutenauer/polyglossia/issues/186 + % See https://github.com/reutenauer/polyglossia/issues/127 + \renewcommand*\familydefault{\sfdefault} + $endif$ + % load polyglossia as late as possible as it *could* call bidi if RTL lang (e.g. Hebrew or Arabic) + \usepackage{polyglossia} + \setmainlanguage[]{english} +$for(polyglossia-otherlangs)$ + \setotherlanguage[$polyglossia-otherlangs.options$]{$polyglossia-otherlangs.name$} +$endfor$ +\fi +$endif$ + +$if(page-background)$ +\usepackage[pages=all]{background} +$endif$ + +% +% for the background color of the title page +% +$if(titlepage)$ +\usepackage{pagecolor} +\usepackage{afterpage} +$if(titlepage-background)$ +\usepackage{tikz} +$endif$ +$if(geometry)$ +$else$ +\usepackage[margin=2.5cm,includehead=true,includefoot=true,centering]{geometry} +$endif$ +$endif$ + +% +% break urls +% +\PassOptionsToPackage{hyphens}{url} + +% +% When using babel or polyglossia with biblatex, loading csquotes is recommended +% to ensure that quoted texts are typeset according to the rules of your main language. +% +\usepackage{csquotes} + +% +% captions +% +\definecolor{caption-color}{HTML}{777777} +$if(beamer)$ +$else$ +\usepackage[font={stretch=1.2}, textfont={color=caption-color}, position=top, skip=4mm, labelfont=bf, singlelinecheck=false, justification=$if(caption-justification)$$caption-justification$$else$raggedright$endif$]{caption} +\setcapindent{0em} +$endif$ + +% +% blockquote +% +\definecolor{blockquote-border}{RGB}{221,221,221} +\definecolor{blockquote-text}{RGB}{119,119,119} +\usepackage{mdframed} +\newmdenv[rightline=false,bottomline=false,topline=false,linewidth=3pt,linecolor=blockquote-border,skipabove=\parskip]{customblockquote} +\renewenvironment{quote}{\begin{customblockquote}\list{}{\rightmargin=0em\leftmargin=0em}% +\item\relax\color{blockquote-text}\ignorespaces}{\unskip\unskip\endlist\end{customblockquote}} + +% +% Source Sans Pro as the de­fault font fam­ily +% Source Code Pro for monospace text +% +% 'default' option sets the default +% font family to Source Sans Pro, not \sfdefault. +% +\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex + $if(fontfamily)$ + $else$ + \usepackage[default]{sourcesanspro} + \usepackage{sourcecodepro} + $endif$ +\else % if not pdftex + $if(mainfont)$ + $else$ + \usepackage[default]{sourcesanspro} + \usepackage{sourcecodepro} + + % XeLaTeX specific adjustments for straight quotes: https://tex.stackexchange.com/a/354887 + % This issue is already fixed (see https://github.com/silkeh/latex-sourcecodepro/pull/5) but the + % fix is still unreleased. + % TODO: Remove this workaround when the new version of sourcecodepro is released on CTAN. + \ifxetex + \makeatletter + \defaultfontfeatures[\ttfamily] + { Numbers = \sourcecodepro@figurestyle, + Scale = \SourceCodePro@scale, + Extension = .otf } + \setmonofont + [ UprightFont = *-\sourcecodepro@regstyle, + ItalicFont = *-\sourcecodepro@regstyle It, + BoldFont = *-\sourcecodepro@boldstyle, + BoldItalicFont = *-\sourcecodepro@boldstyle It ] + {SourceCodePro} + \makeatother + \fi + $endif$ +\fi + +% +% heading color +% +\definecolor{heading-color}{RGB}{40,40,40} +$if(beamer)$ +$else$ +\addtokomafont{section}{\color{heading-color}} +$endif$ +% When using the classes report, scrreprt, book, +% scrbook or memoir, uncomment the following line. +%\addtokomafont{chapter}{\color{heading-color}} + +% +% variables for title, author and date +% +$if(beamer)$ +$else$ +\usepackage{titling} +\title{$title$} +\author{$for(author)$$author$$sep$, $endfor$} +\date{$date$} +$endif$ + +% +% tables +% +$if(tables)$ + +\definecolor{table-row-color}{HTML}{F5F5F5} +\definecolor{table-rule-color}{HTML}{999999} + +%\arrayrulecolor{black!40} +\arrayrulecolor{table-rule-color} % color of \toprule, \midrule, \bottomrule +\setlength\heavyrulewidth{0.3ex} % thickness of \toprule, \bottomrule +\renewcommand{\arraystretch}{1.3} % spacing (padding) + +$if(table-use-row-colors)$ +% TODO: This doesn't work anymore. I don't know why. +% Reset rownum counter so that each table +% starts with the same row colors. +% https://tex.stackexchange.com/questions/170637/restarting-rowcolors +% +% Unfortunately the colored cells extend beyond the edge of the +% table because pandoc uses @-expressions (@{}) like so: +% +% \begin{longtable}[]{@{}ll@{}} +% \end{longtable} +% +% https://en.wikibooks.org/wiki/LaTeX/Tables#.40-expressions +\let\oldlongtable\longtable +\let\endoldlongtable\endlongtable +\renewenvironment{longtable}{ +\rowcolors{3}{}{table-row-color!100} % row color +\oldlongtable} { +\endoldlongtable +\global\rownum=0\relax} +$endif$ +$endif$ + +% +% remove paragraph indention +% +\setlength{\parindent}{0pt} +\setlength{\parskip}{6pt plus 2pt minus 1pt} +\setlength{\emergencystretch}{3em} % prevent overfull lines + +% +% +% Listings +% +% + +$if(listings)$ + +% +% general listing colors +% +\definecolor{listing-background}{HTML}{F7F7F7} +\definecolor{listing-rule}{HTML}{B3B2B3} +\definecolor{listing-numbers}{HTML}{B3B2B3} +\definecolor{listing-text-color}{HTML}{000000} +\definecolor{listing-keyword}{HTML}{435489} +\definecolor{listing-keyword-2}{HTML}{1284CA} % additional keywords +\definecolor{listing-keyword-3}{HTML}{9137CB} % additional keywords +\definecolor{listing-identifier}{HTML}{435489} +\definecolor{listing-string}{HTML}{00999A} +\definecolor{listing-comment}{HTML}{8E8E8E} + +\lstdefinestyle{eisvogel_listing_style}{ + language = java, +$if(listings-disable-line-numbers)$ + xleftmargin = 0.6em, + framexleftmargin = 0.4em, +$else$ + numbers = left, + xleftmargin = 2.7em, + framexleftmargin = 2.5em, +$endif$ + backgroundcolor = \color{listing-background}, + basicstyle = \color{listing-text-color}\linespread{1.0}$if(code-block-font-size)$$code-block-font-size$$else$\small$endif$\ttfamily{}, + breaklines = true, + frame = single, + framesep = 0.19em, + rulecolor = \color{listing-rule}, + frameround = ffff, + tabsize = 4, + numberstyle = \color{listing-numbers}, + aboveskip = 1.0em, + belowskip = 0.1em, + abovecaptionskip = 0em, + belowcaptionskip = 1.0em, + keywordstyle = {\color{listing-keyword}\bfseries}, + keywordstyle = {[2]\color{listing-keyword-2}\bfseries}, + keywordstyle = {[3]\color{listing-keyword-3}\bfseries\itshape}, + sensitive = true, + identifierstyle = \color{listing-identifier}, + commentstyle = \color{listing-comment}, + stringstyle = \color{listing-string}, + showstringspaces = false, + escapeinside = {/*@}{@*/}, % Allow LaTeX inside these special comments + literate = + {á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1 + {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1 + {à}{{\`a}}1 {è}{{\'e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1 + {À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1 + {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1 + {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1 + {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1 + {Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1 + {œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1 + {ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1 + {€}{{\EUR}}1 {£}{{\pounds}}1 {«}{{\guillemotleft}}1 + {»}{{\guillemotright}}1 {ñ}{{\~n}}1 {Ñ}{{\~N}}1 {¿}{{?`}}1 + {…}{{\ldots}}1 {≥}{{>=}}1 {≤}{{<=}}1 {„}{{\glqq}}1 {“}{{\grqq}}1 + {”}{{''}}1 +} +\lstset{style=eisvogel_listing_style} + +% +% Java (Java SE 12, 2019-06-22) +% +\lstdefinelanguage{Java}{ + morekeywords={ + % normal keywords (without data types) + abstract,assert,break,case,catch,class,continue,default, + do,else,enum,exports,extends,final,finally,for,if,implements, + import,instanceof,interface,module,native,new,package,private, + protected,public,requires,return,static,strictfp,super,switch, + synchronized,this,throw,throws,transient,try,volatile,while, + % var is an identifier + var + }, + morekeywords={[2] % data types + % primitive data types + boolean,byte,char,double,float,int,long,short, + % String + String, + % primitive wrapper types + Boolean,Byte,Character,Double,Float,Integer,Long,Short + % number types + Number,AtomicInteger,AtomicLong,BigDecimal,BigInteger,DoubleAccumulator,DoubleAdder,LongAccumulator,LongAdder,Short, + % other + Object,Void,void + }, + morekeywords={[3] % literals + % reserved words for literal values + null,true,false, + }, + sensitive, + morecomment = [l]//, + morecomment = [s]{/*}{*/}, + morecomment = [s]{/**}{*/}, + morestring = [b]", + morestring = [b]', +} + +\lstdefinelanguage{XML}{ + morestring = [b]", + moredelim = [s][\bfseries\color{listing-keyword}]{<}{\ }, + moredelim = [s][\bfseries\color{listing-keyword}]{}, + moredelim = [l][\bfseries\color{listing-keyword}]{/>}, + moredelim = [l][\bfseries\color{listing-keyword}]{>}, + morecomment = [s]{}, + morecomment = [s]{}, + commentstyle = \color{listing-comment}, + stringstyle = \color{listing-string}, + identifierstyle = \color{listing-identifier} +} +$endif$ + +% +% header and footer +% +$if(beamer)$ +$else$ +$if(disable-header-and-footer)$ +$else$ +\usepackage[headsepline,footsepline]{scrlayer-scrpage} + +\newpairofpagestyles{eisvogel-header-footer}{ + \clearpairofpagestyles + \ihead[$if(header-right)$$header-right$$else$$date$$endif$]{$if(header-left)$$header-left$$else$$title$$endif$} + \chead[$if(header-center)$$header-center$$else$$endif$]{$if(header-center)$$header-center$$else$$endif$} + \ohead[$if(header-left)$$header-left$$else$$title$$endif$]{$if(header-right)$$header-right$$else$$date$$endif$} + \ifoot[$if(footer-right)$$footer-right$$else$\thepage$endif$]{$if(footer-left)$$footer-left$$else$$for(author)$$author$$sep$, $endfor$$endif$} + \cfoot[$if(footer-center)$$footer-center$$else$$endif$]{$if(footer-center)$$footer-center$$else$$endif$} + \ofoot[$if(footer-left)$$footer-left$$else$$for(author)$$author$$sep$, $endfor$$endif$]{$if(footer-right)$$footer-right$$else$\thepage$endif$} + \addtokomafont{pageheadfoot}{\upshape} +} +\pagestyle{eisvogel-header-footer} +$if(page-background)$ +\backgroundsetup{ +scale=1, +color=black, +opacity=$if(page-background-opacity)$$page-background-opacity$$else$0.2$endif$, +angle=0, +contents={% + \includegraphics[width=\paperwidth,height=\paperheight]{$page-background$} + }% +} +$endif$ +$endif$ +$endif$ + +%% +%% end added +%% + +\begin{document} + +%% +%% begin titlepage +%% +$if(beamer)$ +$else$ +$if(titlepage)$ +\begin{titlepage} +$if(titlepage-background)$ +\newgeometry{top=2cm, right=4cm, bottom=3cm, left=4cm} +$else$ +\newgeometry{left=6cm} +$endif$ +$if(titlepage-color)$ +\definecolor{titlepage-color}{HTML}{$titlepage-color$} +\newpagecolor{titlepage-color}\afterpage{\restorepagecolor} +$endif$ +$if(titlepage-background)$ +\tikz[remember picture,overlay] \node[inner sep=0pt] at (current page.center){\includegraphics[width=\paperwidth,height=\paperheight]{$titlepage-background$}}; +$endif$ +\newcommand{\colorRule}[3][black]{\textcolor[HTML]{#1}{\rule{#2}{#3}}} +\begin{flushleft} +\noindent +\\[-1em] +\color[HTML]{$if(titlepage-text-color)$$titlepage-text-color$$else$5F5F5F$endif$} +\makebox[0pt][l]{\colorRule[$if(titlepage-rule-color)$$titlepage-rule-color$$else$435488$endif$]{1.3\textwidth}{$if(titlepage-rule-height)$$titlepage-rule-height$$else$4$endif$pt}} +\par +\noindent + +$if(titlepage-background)$ +% The titlepage with a background image has other text spacing and text size +{ + \setstretch{2} + \vfill + \vskip -8em + \noindent {\huge \textbf{\textsf{$title$}}} + $if(subtitle)$ + \vskip 1em + {\Large \textsf{$subtitle$}} + $endif$ + \vskip 2em + \noindent {\Large \textsf{$for(author)$$author$$sep$, $endfor$} \vskip 0.6em \textsf{$date$}} + \vfill +} +$else$ +{ + \setstretch{1.4} + \vfill + \noindent {\huge \textbf{\textsf{$title$}}} + $if(subtitle)$ + \vskip 1em + {\Large \textsf{$subtitle$}} + $endif$ + \vskip 2em + \noindent {\Large \textsf{$for(author)$$author$$sep$, $endfor$}} + \vfill +} +$endif$ + +$if(logo)$ +\noindent +\includegraphics[width=$if(logo-width)$$logo-width$$else$35mm$endif$, left]{$logo$} +$endif$ + +$if(titlepage-background)$ +$else$ +\textsf{$date$} +$endif$ +\end{flushleft} +\end{titlepage} +\restoregeometry +$endif$ +$endif$ + +%% +%% end titlepage +%% + +$if(has-frontmatter)$ +\frontmatter +$endif$ +$if(title)$ +$if(beamer)$ +\frame{\titlepage} +$endif$ +$if(abstract)$ +\begin{abstract} +$abstract$ +\end{abstract} +$endif$ +$endif$ + +$if(first-chapter)$ +\setcounter{chapter}{$first-chapter$} +\addtocounter{chapter}{-1} +$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} +$if(toc-own-page)$ +\newpage +$endif$ +$else$ +{ +$if(colorlinks)$ +\hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$$endif$} +$endif$ +\setcounter{tocdepth}{$toc-depth$} +\tableofcontents +$if(toc-own-page)$ +\newpage +$endif$ +} +$endif$ +$endif$ +$if(lot)$ +\listoftables +$endif$ +$if(lof)$ +\listoffigures +$endif$ +$if(linestretch)$ +\setstretch{$linestretch$} +$endif$ +$if(has-frontmatter)$ +\mainmatter +$endif$ +$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} diff --git a/.config/utils/pandoc/templates/head.tex b/.config/utils/pandoc/templates/head.tex new file mode 100644 index 0000000..bd6626d --- /dev/null +++ b/.config/utils/pandoc/templates/head.tex @@ -0,0 +1,40 @@ +\usepackage{longtable} +\usepackage[T1]{fontenc} +\usepackage{lmodern} +% \usepackage[scaled]{helvet} + +\usepackage{glossaries} + +\makeglossaries +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Block Quotes +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{framed} +\usepackage{quoting} + +\definecolor{bgcolor}{HTML}{DADADA} +\colorlet{shadecolor}{bgcolor} +% define a new environment shadedquotation. You can change leftmargin and +% rightmargin as you wish. +\newenvironment{shadedquotation} + {\begin{shaded*} + \quoting[leftmargin=1em, rightmargin=0pt, vskip=0pt, font=itshape] + } + {\endquoting + \end{shaded*} + } + +% +\def\quote{\shadedquotation} +\def\endquote{\endshadedquotation} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Inline Quotes +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{fvextra} +\DefineVerbatimEnvironment{Highlighting}{Verbatim}{breaklines,commandchars=\\\{\}} + +\definecolor{bgcolor}{HTML}{E0E0E0} +\let\oldtexttt\texttt +\newcommand{\code}[1]{\begingroup\setlength{\fboxsep}{1pt}\colorbox{bgcolor}{\oldtexttt{\hspace*{2pt}\vphantom{A}#1\hspace*{2pt}}}\endgroup} +\renewcommand{\texttt}[1]{\code{\oldtexttt{#1}}} diff --git a/.config/utils/pandoc/templates/metadata.yml b/.config/utils/pandoc/templates/metadata.yml new file mode 100644 index 0000000..d7e98c5 --- /dev/null +++ b/.config/utils/pandoc/templates/metadata.yml @@ -0,0 +1,15 @@ +title: +date: <date> +keywords: [<tag1>,<tag2>], +lang: "en" +subtitle: "<subtitle>" +fontfamily: "Source Code Pro" +fontsize: 14pt +monofont: "Source Code Pro" +titlepage: true, +titlepage-text-color: "FFFFFF" +titlepage-rule-color: "360049" +titlepage-rule-height: 0 +titlepage-background: "<absolute or relative path>/templates/background.pdf" +page-background-none: "<absolute or relative path>/templates/background1.pdf" +toc-own-page: true diff --git a/.config/utils/pandoc/templates/template.tex b/.config/utils/pandoc/templates/template.tex new file mode 100644 index 0000000..1f6a16a --- /dev/null +++ b/.config/utils/pandoc/templates/template.tex @@ -0,0 +1,556 @@ +\PassOptionsToPackage{unicode=true$for(hyperrefoptions)$,$hyperrefoptions$$endfor$}{hyperref} % options for packages loaded elsewhere +\PassOptionsToPackage{hyphens}{url} +$if(colorlinks)$ +\PassOptionsToPackage{dvipsnames,svgnames*,x11names*}{xcolor} +$endif$ +$if(dir)$ +$if(latex-dir-rtl)$ +\PassOptionsToPackage{RTLdocument}{bidi} +$endif$ +$endif$ +% +\documentclass[ +$if(fontsize)$ + $fontsize$, +$endif$ +$if(lang)$ + $babel-lang$, +$endif$ +$if(papersize)$ + $papersize$paper, +$endif$ +$if(beamer)$ + ignorenonframetext, +$if(handout)$ + handout, +$endif$ +$if(aspectratio)$ + aspectratio=$aspectratio$, +$endif$ +$endif$ +$for(classoption)$ + $classoption$$sep$, +$endfor$ +]{$documentclass$} +$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$ +$if(fontfamily)$ +\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$} +$else$ +\usepackage{lmodern} +$endif$ +$if(linestretch)$ +\usepackage{setspace} +\setstretch{$linestretch$} +$endif$ +\usepackage{amssymb,amsmath} +\usepackage{ifxetex,ifluatex} +\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex + \usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc} + \usepackage[utf8]{inputenc} + \usepackage{textcomp} % provides euro and other symbols +\else % if luatex or xelatex +$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(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$ +%%%%%%%%%%% Fancy header and footer %%%%%%%%%%%%% +%\usepackage[fit]{truncate} +\usepackage{fancyhdr} +\pagestyle{fancy} % % This must be here, because defaults are set and renewcommand for section marks will work. + +\fancyhf{} + %\fancyhead[RO,LE]{\truncate{.95\headwidth}{\leftmark}} +\fancyhead[R]{\nouppercase{\leftmark}} + \fancyfoot[C]{\thepage} + +%\renewcommand{\sectionmark}[1]{\markright{#1}} +%\renewcommand{\chaptermark}[1]{\markleft{#1}} +%\renewcommand{\subsectionmark}[1]{} + +%\fancyhead[L]{\rightmark} +%\fancyhead[R]{\leftmark} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%https://en.wikibooks.org/wiki/LaTeX/Customizing_Page_Headers_and_Footers +%\renewcommand{\chaptermark}[1]{ \markboth{#1}{} } +% +%\renewcommand{\sectionmark}[1]{ \markright{#1} } +% +%\fancyhf{} +%\fancyhead[LE,RO]{\thepage} +%\fancyhead[RE]{\textit{ \nouppercase{\leftmark}} } +%\fancyhead[LO]{\textit{ \nouppercase{\rightmark}} } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%https://latex.org/forum/viewtopic.php?t=31420 + +%\pagestyle{fancy} +%\fancyhead{} +%\fancyhead[RO,LE]{\thepage} +%\fancyhead[CE]{Title of the book} +%\fancyhead[CO]{\chaptermark}<-- \chaptermark has no place here. It is used to *set* the mark(s) for a chapter, not to get it. +%\fancyhead[CO]{\leftmark} +%\fancyfoot{} +%\renewcommand{\chaptermark}[1]{\markboth{#1}{}} +%\renewcommand{\headrulewidth}{0.4pt} +%\renewcommand{\footrulewidth}{0pt} +%\fancypagestyle{plain}{}%<-- only if you really want to have the first page of a chapter showing the same stuff like the chapter's title just below it... + +%%%%%https://tex.stackexchange.com/questions/151784/how-to-display-current-section-title-in-header + +%\fancyhf{} +%\fancyhead[L]{\rightmark} +%\fancyhead[R]{\nouppercase{\leftmark}} +%%\renewcommand{\headrulewidth}{0pt} + + + +%\pagestyle{fancy} % This must be here, because defaults are set and renewcommand for section marks will work. +%\renewcommand{\sectionmark}[1]{\markright{#1}} +%\renewcommand{\subsectionmark}[1]{} +% +%%%https://tex.stackexchange.com/questions/222370/how-can-i-customize-and-use-the-leftmark-and-rightmark-commands-with-custom-fa +%%Fancyhdr Styles +%\fancypagestyle{frontmatter}{% + %\fancyhf{} % clear all fields + %\renewcommand{\headrulewidth}{0pt} + %\lhead{} + %\lfoot{} + %\cfoot{} + %\rfoot{} +%}% +%\fancypagestyle{mainmatter}{% + %\fancyhf{} % clear all fields + %\renewcommand{\headrulewidth}{0pt} + %\lhead{} + %\rhead{} + %\lfoot{} + %\cfoot{} + %\rfoot{} +%}% +%%%%%%%%%%% Fancy header and footer %%%%%%%%%%%%% + +% 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(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$ + pdfborder={0 0 0}, +$endif$ + breaklinks=true} +\urlstyle{same} % don't use monospace font for urls +$if(verbatim-in-note)$ +\VerbatimFootnotes % allows verbatim text in footnotes +$endif$ +$if(geometry)$ +\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry} +$endif$ +$if(beamer)$ +\newif\ifbibliography +$endif$ +$if(listings)$ +\usepackage{listings} +\newcommand{\passthrough}[1]{#1} +\lstset{defaultdialect=[5.3]Lua} +\lstset{defaultdialect=[x86masm]Assembler} +$endif$ +%%%%%%% Allow deeper lists %%%%%%%%%%%%%%%%%%% + \usepackage{enumitem} + \setlistdepth{20} + \renewlist{itemize}{itemize}{20} + \renewlist{enumerate}{enumerate}{20} + \setlist[itemize]{label= $cdot$ } + \setlist[itemize,1]{label=\textbullet} + \setlist[itemize,2]{label=--} + \setlist[itemize,3]{label=*} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +$if(lhs)$ +\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{} +$endif$ +$if(highlighting-macros)$ +$highlighting-macros$ +$endif$ +$if(tables)$ +\usepackage{longtable,booktabs} +$if(beamer)$ +\usepackage{caption} +% These lines are needed to make table captions work with longtable: +\makeatletter +\def\fnum@table{\tablename~\thetable} +\makeatother +$else$ +% Allow footnotes in longtable head/foot +\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}} +\makesavenoteenv{longtable} +$endif$ +$endif$ +$if(graphics)$ +\usepackage{graphicx,grffile} +\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} +$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}} +$if(numbersections)$ +\setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$} +$else$ +\setcounter{secnumdepth}{-2} +$endif$ +$if(beamer)$ +$else$ +$if(subparagraph)$ +$else$ +% Redefines (sub)paragraphs to behave more like sections +\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$ + +% set default figure placement to htbp +\makeatletter +\def\fps@figure{htbp} +\makeatother + +$for(header-includes)$ +$header-includes$ +$endfor$ +$if(lang)$ +\ifnum 0\ifxetex 1\fi=0 % if pdftex or luatex + \usepackage[shorthands=off,$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=$babel-lang$]{babel} +$if(babel-newcommands)$ + $babel-newcommands$ +$endif$ +\else % if xetex + % load polyglossia as late as possible as it *could* call bidi if RTL lang (e.g. Hebrew or Arabic) + \usepackage{polyglossia} + \setmainlanguage[$polyglossia-lang.options$]{$polyglossia-lang.name$} +$for(polyglossia-otherlangs)$ + \setotherlanguage[$polyglossia-otherlangs.options$]{$polyglossia-otherlangs.name$} +$endfor$ +\fi +$endif$ +$if(dir)$ +\ifxetex + % load bidi as late as possible as it modifies e.g. graphicx + \usepackage{bidi} +\fi +\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex + \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(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$ +$if(author)$ +\author{$for(author)$$author$$sep$ \and $endfor$} +$endif$ +\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$ + +\begin{document} +$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} +$if(toc-title)$ + \frametitle{$toc-title$} +$endif$ + %\tableofcontents[hideallsubsections] +\tableofcontents +\end{frame} +$else$ +{ +$if(colorlinks)$ +\hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$$endif$} +$endif$ +\setcounter{tocdepth}{$toc-depth$} +%\setcounter{tocdepth}{4} +\setcounter{secnumdepth}{3} +\tableofcontents +%\setlistdepth{9}} +$endif$ +$endif$ +$if(lot)$ +\listoftables +$endif$ +$if(lof)$ +\listoffigures +$endif$ +$body$ + +$if(natbib)$ +$if(bibliography)$ +$if(biblio-title)$ +$if(book-class)$ +\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}