((= Latex base template (must inherit)
This template builds upon the abstract template, adding common latex output
functions.  Figures, data_text,
This template does not define a docclass, the inheriting class must define this.=))

((*- extends 'display_priority.tplx' -*))

%===============================================================================
% Abstract overrides
%===============================================================================

((* block header *))
    ((* block docclass *))((* endblock docclass *))
    
    ((* block packages *))
    \usepackage{graphicx} % Used to insert images
    \usepackage{adjustbox} % Used to constrain images to a maximum size 
    \usepackage{color} % Allow colors to be defined
    \usepackage{enumerate} % Needed for markdown enumerations to work
    \usepackage{geometry} % Used to adjust the document margins
    \usepackage{amsmath} % Equations
    \usepackage{amssymb} % Equations
    \usepackage[mathletters]{ucs} % Extended unicode (utf-8) support
    \usepackage[utf8x]{inputenc} % Allow utf-8 characters in the tex document
    \usepackage{fancyvrb} % verbatim replacement that allows latex
    \usepackage{grffile} % extends the file name processing of package graphics 
                         % to support a larger range 
    % The hyperref package gives us a pdf with properly built
    % internal navigation ('pdf bookmarks' for the table of contents,
    % internal cross-reference links, web links for URLs, etc.)
    \usepackage{hyperref}
    \usepackage{longtable} % longtable support required by pandoc >1.10
    \usepackage{booktabs}  % table support for pandoc > 1.12.2
    ((* endblock packages *))

    ((* block definitions *))
    \definecolor{orange}{cmyk}{0,0.4,0.8,0.2}
    \definecolor{darkorange}{rgb}{.71,0.21,0.01}
    \definecolor{darkgreen}{rgb}{.12,.54,.11}
    \definecolor{myteal}{rgb}{.26, .44, .56}
    \definecolor{gray}{gray}{0.45}
    \definecolor{lightgray}{gray}{.95}
    \definecolor{mediumgray}{gray}{.8}
    \definecolor{inputbackground}{rgb}{.95, .95, .85}
    \definecolor{outputbackground}{rgb}{.95, .95, .95}
    \definecolor{traceback}{rgb}{1, .95, .95}
    % ansi colors
    \definecolor{red}{rgb}{.6,0,0}
    \definecolor{green}{rgb}{0,.65,0}
    \definecolor{brown}{rgb}{0.6,0.6,0}
    \definecolor{blue}{rgb}{0,.145,.698}
    \definecolor{purple}{rgb}{.698,.145,.698}
    \definecolor{cyan}{rgb}{0,.698,.698}
    \definecolor{lightgray}{gray}{0.5}
    
    % bright ansi colors
    \definecolor{darkgray}{gray}{0.25}
    \definecolor{lightred}{rgb}{1.0,0.39,0.28}
    \definecolor{lightgreen}{rgb}{0.48,0.99,0.0}
    \definecolor{lightblue}{rgb}{0.53,0.81,0.92}
    \definecolor{lightpurple}{rgb}{0.87,0.63,0.87}
    \definecolor{lightcyan}{rgb}{0.5,1.0,0.83}
    
    % commands and environments needed by pandoc snippets
    % extracted from the output of `pandoc -s`
    \DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
    % Add ',fontsize=\small' for more characters per line
    \newenvironment{Shaded}{}{}
    \newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}}
    \newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{{#1}}}
    \newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}}
    \newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}}
    \newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}}
    \newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}}
    \newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}}
    \newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{{#1}}}}
    \newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{{#1}}}
    \newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}}
    \newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{{#1}}}
    \newcommand{\RegionMarkerTok}[1]{{#1}}
    \newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}}
    \newcommand{\NormalTok}[1]{{#1}}
    
    % Define a nice break command that doesn't care if a line doesn't already
    % exist.
    \def\br{\hspace*{\fill} \\* }
    % Math Jax compatability definitions
    \def\gt{>}
    \def\lt{<}
    % Document parameters
    ((* block title *))\title{((( resources.metadata.name | ascii_only | escape_latex )))}((* endblock title *))
    ((* block date *))((* endblock date *))
    ((* block author *))((* endblock author *))
    ((* endblock definitions *))

    ((* block commands *))
    % Prevent overflowing lines due to hard-to-break entities
    \sloppy 
    % Setup hyperref package
    \hypersetup{
      breaklinks=true,  % so long urls are correctly broken across lines
      colorlinks=true,
      urlcolor=blue,
      linkcolor=darkorange,
      citecolor=darkgreen,
      }
    % Slightly bigger margins than the latex defaults
    ((* block margins *))
    \geometry{verbose,tmargin=1in,bmargin=1in,lmargin=1in,rmargin=1in}
    ((* endblock margins *))
    ((* endblock commands *))
((* endblock header *))

((* block body *))
    \begin{document}
    
    ((* block predoc *))
    ((* block maketitle *))\maketitle((* endblock maketitle *))
    ((* block abstract *))((* endblock abstract *))
    ((* endblock predoc *))

    ((( super() )))

    % Add a bibliography block to the postdoc
    ((* block postdoc *))
    ((* block bibliography *))((* endblock bibliography *))
    ((* endblock postdoc *))
    \end{document}
((* endblock body *))

%===============================================================================
% Support blocks
%===============================================================================

% Displaying simple data text
((* block data_text *))
    \begin{verbatim}
((( output.text )))
    \end{verbatim}
((* endblock data_text *))

% Display python error text as-is
((* block pyerr *))
    \begin{Verbatim}[commandchars=\\\{\}]
((( super() )))
    \end{Verbatim}
((* endblock pyerr *))
((* block traceback_line *))
    ((( line | indent | strip_ansi | escape_latex )))
((* endblock traceback_line *))

% Display stream ouput with coloring
((* block stream *))
    \begin{Verbatim}[commandchars=\\\{\}]
((( output.text | escape_latex | ansi2latex )))
    \end{Verbatim}
((* endblock stream *))

% Display latex
((* block data_latex -*))
    ((*- if output.latex.startswith('$'): -*)) 
        ((= Replace $ symbols with more explicit, equation block. =))
        \begin{equation*}
        ((( output.latex | strip_dollars )))
        \end{equation*}
    ((*- else -*))
        ((( output.latex )))
    ((*- endif *))
((* endblock data_latex *))

% Default mechanism for rendering figures
((*- block data_png -*))((( draw_figure(output.png_filename) )))((*- endblock -*))
((*- block data_jpg -*))((( draw_figure(output.jpeg_filename) )))((*- endblock -*))
((*- block data_svg -*))((( draw_figure(output.svg_filename) )))((*- endblock -*))
((*- block data_pdf -*))((( draw_figure(output['application/pdf_filename']) )))((*- endblock -*))

% Draw a figure using the graphicx package.
((* macro draw_figure(filename) -*))
((* set filename = filename | posix_path *))
((*- block figure scoped -*))
    \begin{center}
    \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{((( filename )))}
    \end{center}
    { \hspace*{\fill} \\}
((*- endblock figure -*))
((*- endmacro *))

% Draw heading cell.  Explicitly map different cell levels.
((* block headingcell scoped *))

    ((* if cell.level == 1 -*))
        ((* block h1 -*))\section((* endblock h1 -*))
    ((* elif cell.level == 2 -*))
        ((* block h2 -*))\subsection((* endblock h2 -*))
    ((* elif cell.level == 3 -*))
        ((* block h3 -*))\subsubsection((* endblock h3 -*))
    ((* elif cell.level == 4 -*))
        ((* block h4 -*))\paragraph((* endblock h4 -*))
    ((* elif cell.level == 5 -*))
        ((* block h5 -*))\subparagraph((* endblock h5 -*))
    ((* elif cell.level == 6 -*))
        ((* block h6 -*))\\*\textit((* endblock h6 -*))
    ((*- endif -*))
    {((( cell.source | replace('\n', ' ') | citation2latex | strip_files_prefix | markdown2latex )))}

((* endblock headingcell *))

% Redirect pyout to display data priority.
((* block pyout scoped *))
    ((* block data_priority scoped *))
    ((( super() )))
    ((* endblock *))
((* endblock pyout *))

% Render markdown
((* block markdowncell scoped *))
    ((( cell.source | citation2latex | strip_files_prefix | markdown2latex )))
((* endblock markdowncell *))

% Don't display unknown types
((* block unknowncell scoped *))
((* endblock unknowncell *))
