mirror of
https://github.com/Wandmalfarbe/pandoc-latex-template.git
synced 2025-01-31 00:23:56 +00:00
a0caf07dbe
* feat: Merge changes from pandoc 3.5 LaTeX template * feat: create single file templates (latex and beamer) * feat: use `sed` differently on macOS than on other systems * feat: update copyright year * feat: release compressed archives without version number * docs: explain versions of the template (the different files) * ci: build with pandoc 3.5 * chore: add changelog for version 3.0.0
308 lines
7.6 KiB
Plaintext
Executable File
308 lines
7.6 KiB
Plaintext
Executable File
$if(linestretch)$
|
|
\usepackage{setspace}
|
|
$else$
|
|
% Use setspace anyway because we change the default line spacing.
|
|
% The spacing is changed early to affect the titlepage and the TOC.
|
|
\usepackage{setspace}
|
|
\setstretch{1.2}
|
|
$endif$
|
|
|
|
$--
|
|
$-- paragraph formatting
|
|
$--
|
|
$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(beamer)$
|
|
$else$
|
|
$if(block-headings)$
|
|
% Make \paragraph and \subparagraph free-standing
|
|
\makeatletter
|
|
\ifx\paragraph\undefined\else
|
|
\let\oldparagraph\paragraph
|
|
\renewcommand{\paragraph}{
|
|
\@ifstar
|
|
\xxxParagraphStar
|
|
\xxxParagraphNoStar
|
|
}
|
|
\newcommand{\xxxParagraphStar}[1]{\oldparagraph*{#1}\mbox{}}
|
|
\newcommand{\xxxParagraphNoStar}[1]{\oldparagraph{#1}\mbox{}}
|
|
\fi
|
|
\ifx\subparagraph\undefined\else
|
|
\let\oldsubparagraph\subparagraph
|
|
\renewcommand{\subparagraph}{
|
|
\@ifstar
|
|
\xxxSubParagraphStar
|
|
\xxxSubParagraphNoStar
|
|
}
|
|
\newcommand{\xxxSubParagraphStar}[1]{\oldsubparagraph*{#1}\mbox{}}
|
|
\newcommand{\xxxSubParagraphNoStar}[1]{\oldsubparagraph{#1}\mbox{}}
|
|
\fi
|
|
\makeatother
|
|
$endif$
|
|
$endif$
|
|
|
|
$--
|
|
$-- verbatim in notes
|
|
$--
|
|
$if(verbatim-in-note)$
|
|
\usepackage{fancyvrb}
|
|
$endif$
|
|
|
|
$-- highlighting
|
|
$if(listings)$
|
|
\usepackage{listings}
|
|
\newcommand{\passthrough}[1]{#1}
|
|
\lstset{defaultdialect=[5.3]Lua}
|
|
\lstset{defaultdialect=[x86masm]Assembler}
|
|
$endif$
|
|
$if(listings-no-page-break)$
|
|
\usepackage{etoolbox}
|
|
\BeforeBeginEnvironment{lstlisting}{\par\noindent\begin{minipage}{\linewidth}}
|
|
\AfterEndEnvironment{lstlisting}{\end{minipage}\par\addvspace{\topskip}}
|
|
$endif$
|
|
$if(lhs)$
|
|
\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{}
|
|
$endif$
|
|
$if(highlighting-macros)$
|
|
$highlighting-macros$
|
|
|
|
% Workaround/bugfix from jannick0.
|
|
% See https://github.com/jgm/pandoc/issues/4302#issuecomment-360669013)
|
|
% or https://github.com/Wandmalfarbe/pandoc-latex-template/issues/2
|
|
%
|
|
% Redefine the verbatim environment 'Highlighting' to break long lines (with
|
|
% the help of fvextra). Redefinition is necessary because it is unlikely that
|
|
% pandoc includes fvextra in the default template.
|
|
\usepackage{fvextra}
|
|
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{breaklines,fontsize=$if(code-block-font-size)$$code-block-font-size$$else$\small$endif$,commandchars=\\\{\}}
|
|
|
|
$endif$
|
|
|
|
$--
|
|
$-- tables
|
|
$--
|
|
$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$
|
|
|
|
$--
|
|
$-- graphics
|
|
$--
|
|
$if(graphics)$
|
|
\usepackage{graphicx}
|
|
\makeatletter
|
|
\newsavebox\pandoc@box
|
|
\newcommand*\pandocbounded[1]{% scales image to fit in text height/width
|
|
\sbox\pandoc@box{#1}%
|
|
\Gscale@div\@tempa{\textheight}{\dimexpr\ht\pandoc@box+\dp\pandoc@box\relax}%
|
|
\Gscale@div\@tempb{\linewidth}{\wd\pandoc@box}%
|
|
\ifdim\@tempb\p@<\@tempa\p@\let\@tempa\@tempb\fi% select the smaller of both
|
|
\ifdim\@tempa\p@<\p@\scalebox{\@tempa}{\usebox\pandoc@box}%
|
|
\else\usebox{\pandoc@box}%
|
|
\fi%
|
|
}
|
|
% Set default figure placement to htbp
|
|
% 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$}
|
|
\makeatother
|
|
$endif$
|
|
$if(svg)$
|
|
\usepackage{svg}
|
|
$endif$
|
|
|
|
$--
|
|
$-- strikeout/underline
|
|
$--
|
|
$if(strikeout)$
|
|
\ifLuaTeX
|
|
\usepackage{luacolor}
|
|
\usepackage[soul]{lua-ul}
|
|
\else
|
|
\usepackage{soul}
|
|
$if(beamer)$
|
|
\makeatletter
|
|
\let\HL\hl
|
|
\renewcommand\hl{% fix for beamer highlighting
|
|
\let\set@color\beamerorig@set@color
|
|
\let\reset@color\beamerorig@reset@color
|
|
\HL}
|
|
\makeatother
|
|
$endif$
|
|
$if(CJKmainfont)$
|
|
\ifXeTeX
|
|
% soul's \st doesn't work for CJK:
|
|
\usepackage{xeCJKfntef}
|
|
\renewcommand{\st}[1]{\sout{#1}}
|
|
\fi
|
|
$endif$
|
|
\fi
|
|
$endif$
|
|
|
|
$--
|
|
$-- CSL citations
|
|
$--
|
|
$if(csl-refs)$
|
|
% definitions for citeproc citations
|
|
\NewDocumentCommand\citeproctext{}{}
|
|
\NewDocumentCommand\citeproc{mm}{%
|
|
\begingroup\def\citeproctext{#2}\cite{#1}\endgroup}
|
|
\makeatletter
|
|
% allow citations to break across lines
|
|
\let\@cite@ofmt\@firstofone
|
|
% avoid brackets around text for \cite:
|
|
\def\@biblabel#1{}
|
|
\def\@cite#1#2{{#1\if@tempswa , #2\fi}}
|
|
\makeatother
|
|
\newlength{\cslhangindent}
|
|
\setlength{\cslhangindent}{1.5em}
|
|
\newlength{\csllabelwidth}
|
|
\setlength{\csllabelwidth}{3em}
|
|
\newenvironment{CSLReferences}[2] % #1 hanging-indent, #2 entry-spacing
|
|
{\begin{list}{}{%
|
|
\setlength{\itemindent}{0pt}
|
|
\setlength{\leftmargin}{0pt}
|
|
\setlength{\parsep}{0pt}
|
|
% turn on hanging indent if param 1 is 1
|
|
\ifodd #1
|
|
\setlength{\leftmargin}{\cslhangindent}
|
|
\setlength{\itemindent}{-1\cslhangindent}
|
|
\fi
|
|
% set entry spacing
|
|
\setlength{\itemsep}{#2\baselineskip}}}
|
|
{\end{list}}
|
|
\usepackage{calc}
|
|
\newcommand{\CSLBlock}[1]{\hfill\break\parbox[t]{\linewidth}{\strut\ignorespaces#1\strut}}
|
|
\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{\strut#1\strut}}
|
|
\newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{\strut#1\strut}}
|
|
\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1}
|
|
$endif$
|
|
|
|
$--
|
|
$-- Babel language support
|
|
$--
|
|
$if(lang)$
|
|
\ifLuaTeX
|
|
\usepackage[bidi=basic]{babel}
|
|
\else
|
|
\usepackage[bidi=default]{babel}
|
|
\fi
|
|
$if(babel-lang)$
|
|
\babelprovide[main,import]{$babel-lang$}
|
|
$if(mainfont)$
|
|
\ifPDFTeX
|
|
\else
|
|
\babelfont{rm}[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$$if(mainfontfallback)$,RawFeature={fallback=mainfontfallback}$endif$]{$mainfont$}
|
|
\fi
|
|
$endif$
|
|
$endif$
|
|
$for(babel-otherlangs)$
|
|
\babelprovide[import]{$babel-otherlangs$}
|
|
$endfor$
|
|
$for(babelfonts/pairs)$
|
|
\babelfont[$babelfonts.key$]{rm}{$babelfonts.value$}
|
|
$endfor$
|
|
% get rid of language-specific shorthands (see #6817):
|
|
\let\LanguageShortHands\languageshorthands
|
|
\def\languageshorthands#1{}
|
|
$if(selnolig-langs)$
|
|
\ifLuaTeX
|
|
\usepackage[$for(selnolig-langs)$$it$$sep$,$endfor$]{selnolig} % disable illegal ligatures
|
|
\fi
|
|
$endif$
|
|
$endif$
|
|
|
|
$--
|
|
$-- pagestyle
|
|
$--
|
|
$if(pagestyle)$
|
|
\pagestyle{$pagestyle$}
|
|
$endif$
|
|
|
|
$--
|
|
$-- prevent overfull lines
|
|
$--
|
|
\setlength{\emergencystretch}{3em} % prevent overfull lines
|
|
|
|
$--
|
|
$-- tight lists
|
|
$--
|
|
\providecommand{\tightlist}{%
|
|
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
|
|
|
$--
|
|
$-- subfigure support
|
|
$--
|
|
$if(subfigure)$
|
|
\usepackage{subcaption}
|
|
$endif$
|
|
|
|
$--
|
|
$-- text direction support for pdftex
|
|
$--
|
|
$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$
|
|
|
|
$--
|
|
$-- bibliography support support for natbib and biblatex
|
|
$--
|
|
$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$
|
|
|
|
$--
|
|
$-- csquotes
|
|
$--
|
|
$if(csquotes)$
|
|
\usepackage{csquotes}
|
|
$endif$
|