diff --git a/templates/tex/latex_sphinx_base.tplx b/templates/tex/latex_sphinx_base.tplx index 59fe839..473bcc2 100644 --- a/templates/tex/latex_sphinx_base.tplx +++ b/templates/tex/latex_sphinx_base.tplx @@ -32,13 +32,116 @@ \usepackage{((( resources.sphinx_texinputs )))/sphinx} \usepackage{multirow} + \usepackage{amsmath} + \usepackage{amssymb} + \usepackage{graphicx} + \usepackage{ucs} + \usepackage{enumerate} + +% Define a few colors for use in code, links and cell shading +\usepackage{color} +\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} + +% Framed environments for code cells (inputs, outputs, errors, ...). The +% various uses of \unskip (or not) at the end were fine-tuned by hand, so don't +% randomly change them unless you're sure of the effect it will have. +\usepackage{framed} + +% remove extraneous vertical space in boxes +\setlength\fboxsep{0pt} + +% codecell is the whole input+output set of blocks that a Code cell can +% generate. + +% TODO: unfortunately, it seems that using a framed codecell environment breaks +% the ability of the frames inside of it to be broken across pages. This +% causes at least the problem of having lots of empty space at the bottom of +% pages as new frames are moved to the next page, and if a single frame is too +% long to fit on a page, will completely stop latex from compiling the +% document. So unless we figure out a solution to this, we'll have to instead +% leave the codecell env. as empty. I'm keeping the original codecell +% definition here (a thin vertical bar) for reference, in case we find a +% solution to the page break issue. + +%% \newenvironment{codecell}{% +%% \def\FrameCommand{\color{mediumgray} \vrule width 1pt \hspace{5pt}}% +%% \MakeFramed{\vspace{-0.5em}}} +%% {\unskip\endMakeFramed} + +% For now, make this a no-op... +\newenvironment{codecell}{} + + \newenvironment{codeinput}{% + \def\FrameCommand{\colorbox{inputbackground}}% + \MakeFramed{\advance\hsize-\width \FrameRestore}} + {\unskip\endMakeFramed} + +\newenvironment{codeoutput}{% + \def\FrameCommand{\colorbox{outputbackground}}% + \vspace{-1.4em} + \MakeFramed{\advance\hsize-\width \FrameRestore}} + {\unskip\medskip\endMakeFramed} + +\newenvironment{traceback}{% + \def\FrameCommand{\colorbox{traceback}}% + \MakeFramed{\advance\hsize-\width \FrameRestore}} + {\endMakeFramed} + +% Use and configure listings package for nicely formatted code +\usepackage{listingsutf8} +\lstset{ + language=python, + inputencoding=utf8x, + extendedchars=\true, + aboveskip=\smallskipamount, + belowskip=\smallskipamount, + xleftmargin=2mm, + breaklines=true, + basicstyle=\small \ttfamily, + showstringspaces=false, + keywordstyle=\color{blue}\bfseries, + commentstyle=\color{myteal}, + stringstyle=\color{darkgreen}, + identifierstyle=\color{darkorange}, + columns=fullflexible, % tighter character kerning, like verb +} + +% 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} +\hypersetup{ + breaklinks=true, % so long urls are correctly broken across lines + colorlinks=true, + urlcolor=blue, + linkcolor=darkorange, + citecolor=darkgreen, + } + +% hardcode size of all verbatim environments to be a bit smaller +\makeatletter +\g@addto@macro\@verbatim\small\topsep=0.5em\partopsep=0pt +\makeatother + +% Prevent overflowing lines due to urls and other hard-to-break entities. +\sloppy + % Document level variables - \title{((( nb.metadata.name )))} - \date{((( nb.metadata.date )))} - \release{((( nb.metadata.version )))} - \author{((( nb.metadata.author )))} + \title{((( filterOutLatex(nb.metadata.name) )))} + \date{((( filterOutLatex(nb.metadata.date) )))} + \release{((( filterOutLatex(nb.metadata.version) )))} + \author{((( filterOutLatex(nb.metadata.author) )))} \newcommand{\sphinxlogo}{} - \renewcommand{\releasename}{((( nb.metadata.release )))} + \renewcommand{\releasename}{((( filterOutLatex(nb.metadata.release) )))} \makeindex @@ -81,7 +184,7 @@ ((* block h5 -*))subsubsection((* endblock h5 -*)) ((*- elif cell.level == 6 -*)) ((* block h6 -*))paragraph((* endblock h6 -*)) - ((*- endif -*)){((( cell.source | markdown2latex )))} + ((*- endif -*)){((( filterOutLatex(cell.source) )))} ((= | markdown2latex =)) ((*- endblock headingcell *)) ((* block unknowncell scoped*)) @@ -102,6 +205,7 @@ not get touched by the templating system. =)) ((* macro filterOutLatex(text) -*)) ((*- set text = text|replace("\\","\\backslash") -*)) + ((*- set text = text|replace("_","\\_") -*)) ((*- set text = text|replace("{","\\{") -*)) ((*- set text = text|replace("}","\\}") -*)) ((*- set text = text|replace("|","\\vert") -*)) @@ -117,11 +221,10 @@ not get touched by the templating system. =)) \begin{center}\setlength{\fboxsep}{5pt} \shadowbox{\box0}\end{center} - ((======================================================================== EVERYTHING BELOW HERE STILL NEEDS TO BE FILLED IN! ========================================================================)) - +((= ((*- block codecell scoped -*)) ((*- block input_group -*)) ((*- block in_prompt -*))((*- endblock in_prompt -*)) @@ -161,3 +264,5 @@ not get touched by the templating system. =)) ((*- endblock output_group -*)) ((*- endif -*)) ((*- endblock codecell -*)) +=)) +