| \documentclass[$if(fontsize)$$fontsize$,$endif$$if(lang)$$lang$,$endif$$if(papersize)$$papersize$,$endif$$for(classoption)$$classoption$$sep$,$endfor$]{$documentclass$} |
| $if(fontfamily)$ |
| \usepackage{$fontfamily$} |
| $else$ |
| \usepackage{lmodern} |
| $endif$ |
| $if(linestretch)$ |
| \usepackage{setspace} |
| \setstretch{$linestretch$} |
| $endif$ |
| \usepackage{etoolbox} |
| \usepackage{xstring} |
| \usepackage{amssymb,amsmath} |
| \usepackage{ifxetex,ifluatex} |
| \usepackage{fixltx2e} % provides \textsubscript |
| \ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex |
| \usepackage[T1]{fontenc} |
| \usepackage[utf8x]{inputenc} |
| $if(euro)$ |
| \usepackage{eurosym} |
| $endif$ |
| \else % if luatex or xelatex |
| \ifxetex |
| \usepackage{mathspec} |
| \usepackage{xltxtra,xunicode} |
| $if(CJKmainfont)$ |
| \usepackage{xeCJK} |
| \setCJKmainfont{$CJKmainfont$} |
| $endif$ |
| \else |
| \usepackage{fontspec} |
| \fi |
| \defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase} |
| \newcommand{\euro}{€} |
| $if(mainfont)$ |
| \setmainfont{$mainfont$} |
| $endif$ |
| $if(sansfont)$ |
| \setsansfont{$sansfont$} |
| $endif$ |
| $if(monofont)$ |
| \setmonofont[Mapping=tex-ansi]{$monofont$} |
| $endif$ |
| $if(mathfont)$ |
| \setmathfont(Digits,Latin,Greek){$mathfont$} |
| $endif$ |
| \fi |
| % use upquote if available, for straight quotes in verbatim environments |
| \IfFileExists{upquote.sty}{\usepackage{upquote}}{} |
| % use microtype if available |
| \IfFileExists{microtype.sty}{% |
| \usepackage{microtype} |
| \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts |
| }{} |
| $if(geometry)$ |
| \usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry} |
| $endif$ |
| $if(natbib)$ |
| \usepackage{natbib} |
| \bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$} |
| $endif$ |
| $if(biblatex)$ |
| \usepackage{biblatex} |
| $if(biblio-files)$ |
| \bibliography{$biblio-files$} |
| $endif$ |
| $endif$ |
| $if(listings)$ |
| |
| \usepackage{xcolor} |
| \usepackage{listings} |
| \lstset{ |
| literate={_}{\_}1, |
| basicstyle=\ttfamily, |
| keywordstyle=\color[rgb]{0.13,0.29,0.53}\bfseries, |
| stringstyle=\color[rgb]{0.31,0.60,0.02}, |
| commentstyle=\color[rgb]{0.56,0.35,0.01}\itshape, |
| numberstyle=\footnotesize, |
| frame=single, |
| showspaces=false, % show spaces everywhere adding particular underscores; it overrides 'showstringspaces' |
| showstringspaces=false, % underline spaces within strings only |
| breaklines=true, |
| postbreak=\raisebox{0ex}[0ex][0ex]{\ensuremath{\color{gray}\hookrightarrow\space}} |
| } |
| |
| $endif$ |
| $if(lhs)$ |
| \lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{} |
| $endif$ |
| $if(highlighting-macros)$ |
| $highlighting-macros$ |
| $endif$ |
| $if(verbatim-in-note)$ |
| \usepackage{fancyvrb} |
| $endif$ |
| $if(tables)$ |
| \usepackage{longtable,booktabs} |
| % set table to left-aligned |
| \setlength\LTleft{0pt} |
| \setlength\LTright{0pt} |
| % fill the columns to page width |
| \makeatletter |
| \patchcmd\LT@array{\tabskip\z@}{\extracolsep{\fill}} |
| \makeatletter |
| |
| $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$ |
| \ifxetex |
| \usepackage[setpagesize=false, % page size defined by xetex |
| unicode=true, % unicode breaks when used with xetex |
| xetex]{hyperref} |
| \else |
| \usepackage[unicode=true]{hyperref} |
| \fi |
| \hypersetup{breaklinks=true, |
| bookmarks=true, |
| pdfauthor={$author$}, |
| pdftitle={$title$}, |
| colorlinks=true, |
| citecolor=$if(citecolor)$$citecolor$$else$blue$endif$, |
| urlcolor=$if(urlcolor)$$urlcolor$$else$blue$endif$, |
| linkcolor=$if(linkcolor)$$linkcolor$$else$magenta$endif$, |
| pdfborder={0 0 0}} |
| \urlstyle{same} % don't use monospace font for urls |
| $if(links-as-notes)$ |
| % Make links footnotes instead of hotlinks: |
| \renewcommand{\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{\parindent}{0pt} |
| \setlength{\parskip}{6pt plus 2pt minus 1pt} |
| \setlength{\emergencystretch}{3em} % prevent overfull lines |
| \providecommand{\tightlist}{% |
| \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} |
| $if(numbersections)$ |
| \setcounter{secnumdepth}{5} |
| $else$ |
| \setcounter{secnumdepth}{0} |
| $endif$ |
| $if(verbatim-in-note)$ |
| \VerbatimFootnotes % allows verbatim text in footnotes |
| $endif$ |
| $if(lang)$ |
| \ifxetex |
| \usepackage{polyglossia} |
| \setmainlanguage{$mainlang$} |
| \else |
| \usepackage[$lang$]{babel} |
| \fi |
| $endif$ |
| |
| $if(title)$ |
| \title{$title$$if(subtitle)$\\\vspace{0.5em}{\large $subtitle$}$endif$} |
| $endif$ |
| $if(author)$ |
| \author{$for(author)$$author$$sep$ \and $endfor$} |
| $endif$ |
| \date{$date$} |
| $for(header-includes)$ |
| $header-includes$ |
| $endfor$ |
| |
| % quote style |
| % http://tex.stackexchange.com/questions/179982/add-a-black-border-to-block-quotations |
| \usepackage{framed} |
| % \usepackage{xcolor} |
| \let\oldquote=\quote |
| \let\endoldquote=\endquote |
| \colorlet{shadecolor}{orange!15} |
| \renewenvironment{quote}{\begin{shaded*}\begin{oldquote}}{\end{oldquote}\end{shaded*}} |
| |
| % https://www.zhihu.com/question/25082703/answer/30038248 |
| % no cross chapter |
| \usepackage[section]{placeins} |
| % no float everywhere |
| \usepackage{float} |
| \floatplacement{figure}{H} |
| |
| % we chinese write article this way |
| \usepackage{indentfirst} |
| \setlength{\parindent}{2em} |
| |
| \renewcommand{\contentsname}{目录} |
| \renewcommand\figurename{图} |
| |
| % fix overlap toc number and title |
| % https://blog.csdn.net/golden1314521/article/details/39926135 |
| \usepackage{titlesec} |
| \usepackage{titletoc} |
| % \titlecontents{标题名}[左间距]{标题格式}{标题标志}{无序号标题}{指引线与页码}[下间距] |
| % fix overlap |
| \titlecontents{subsection} |
| [4em] |
| {}% |
| {\contentslabel{3em}}% |
| {}% |
| {\titlerule*[0.5pc]{$$\cdot$$}\contentspage\hspace*{0em}}% |
| |
| \titlecontents{subsubsection} |
| [7em] |
| {}% |
| {\contentslabel{3.5em}}% |
| {}% |
| {\titlerule*[0.5pc]{$$\cdot$$}\contentspage\hspace*{0em}}% |
| |
| % \usepackage[all]{background} |
| % \backgroundsetup{contents=PingCAP Inc.,color=blue,opacity=0.2} |
| % \backgroundsetup{contents=\includegraphics{media/pingcap-logo}, |
| % placement=top,scale=0.2,hshift=1000pt,vshift=-150pt, |
| % opacity=0.9,angle=0} |
| |
| |
| |
| % |
| % line spacing |
| % |
| $if(linestretch)$ |
| $else$ |
| \usepackage{setspace} |
| \setstretch{1.2} |
| $endif$ |
| |
| % |
| % colors |
| % |
| % $if(colorlinks)$ |
| % $else$ |
| % \usepackage[dvipsnames,svgnames*,x11names*,table]{xcolor} |
| % $endif$ |
| |
| % |
| % listing colors |
| % |
| |
| %\definecolor{listing-background}{rgb}{0.97,0.97,0.97} |
| %\definecolor{listing-rule}{HTML}{B3B2B3} |
| %\definecolor{listing-numbers}{HTML}{B3B2B3} |
| %\definecolor{listing-text-color}{HTML}{000000} |
| %\definecolor{listing-keyword}{HTML}{D8006B} |
| %\definecolor{listing-identifier}{HTML}{000000} |
| %\definecolor{listing-string}{HTML}{006CA9} |
| %\definecolor{listing-comment}{rgb}{0.25,0.5,0.35} |
| %\definecolor{listing-javadoc-comment}{HTML}{006CA9} |
| |
| |
| $if(mainfont)$ |
| $else$ |
| \usepackage[default]{sourcesanspro} |
| \usepackage{sourcecodepro} |
| $endif$ |
| |
| |
| |
| |
| % |
| % remove paragraph indention |
| % |
| \setlength{\parindent}{0pt} |
| \setlength{\parskip}{6pt plus 2pt minus 1pt} |
| \setlength{\emergencystretch}{3em} % prevent overfull lines |
| |
| |
| % avoid level-4, 5 heading to be connected with following content |
| % https://github.com/jgm/pandoc/issues/1658 |
| \let\oldparagraph\paragraph |
| \renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}} |
| \let\oldsubparagraph\subparagraph |
| \renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}} |
| |
| \begin{document} |
| |
| % no bg at title page |
| % \NoBgThispage |
| $if(title)$ |
| \maketitle |
| $endif$ |
| $if(abstract)$ |
| \begin{abstract} |
| $abstract$ |
| \end{abstract} |
| $endif$ |
| |
| $for(include-before)$ |
| $include-before$ |
| |
| $endfor$ |
| $if(toc)$ |
| { |
| \hypersetup{linkcolor=black} |
| \setcounter{tocdepth}{$toc-depth$} |
| \tableofcontents |
| } |
| $endif$ |
| $if(lot)$ |
| \listoftables |
| $endif$ |
| $if(lof)$ |
| \listoffigures |
| $endif$ |
| |
| \newpage |
| |
| $body$ |
| |
| $if(natbib)$ |
| $if(biblio-files)$ |
| $if(biblio-title)$ |
| $if(book-class)$ |
| \renewcommand\bibname{$biblio-title$} |
| $else$ |
| \renewcommand\refname{$biblio-title$} |
| $endif$ |
| $endif$ |
| \bibliography{$biblio-files$} |
| |
| $endif$ |
| $endif$ |
| $if(biblatex)$ |
| \printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$ |
| |
| $endif$ |
| $for(include-after)$ |
| $include-after$ |
| |
| $endfor$ |
| \end{document} |