123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- ((=- IPython input/output style -=))
- ((*- extends 'base.tplx' -*))
- ((*- block packages -*))
- \usepackage[breakable]{tcolorbox}
- \usepackage{parskip} % Stop auto-indenting (to mimic markdown behaviour)
- ((( super() )))
- ((*- endblock packages -*))
- ((*- block definitions -*))
- ((( super() )))
- % Pygments definitions
- (((- resources.latex.pygments_definitions )))
- % For linebreaks inside Verbatim environment from package fancyvrb.
- \makeatletter
- \newbox\Wrappedcontinuationbox
- \newbox\Wrappedvisiblespacebox
- \newcommand*\Wrappedvisiblespace {\textcolor{red}{\textvisiblespace}}
- \newcommand*\Wrappedcontinuationsymbol {\textcolor{red}{\llap{\tiny$\m@th\hookrightarrow$}}}
- \newcommand*\Wrappedcontinuationindent {3ex }
- \newcommand*\Wrappedafterbreak {\kern\Wrappedcontinuationindent\copy\Wrappedcontinuationbox}
- % Take advantage of the already applied Pygments mark-up to insert
- % potential linebreaks for TeX processing.
- % {, <, #, %, $, ' and ": go to next line.
- % _, }, ^, &, >, - and ~: stay at end of broken line.
- % Use of \textquotesingle for straight quote.
- \newcommand*\Wrappedbreaksatspecials {%
- \def\PYGZus{\discretionary{\char`\_}{\Wrappedafterbreak}{\char`\_}}%
- \def\PYGZob{\discretionary{}{\Wrappedafterbreak\char`\{}{\char`\{}}%
- \def\PYGZcb{\discretionary{\char`\}}{\Wrappedafterbreak}{\char`\}}}%
- \def\PYGZca{\discretionary{\char`\^}{\Wrappedafterbreak}{\char`\^}}%
- \def\PYGZam{\discretionary{\char`\&}{\Wrappedafterbreak}{\char`\&}}%
- \def\PYGZlt{\discretionary{}{\Wrappedafterbreak\char`\<}{\char`\<}}%
- \def\PYGZgt{\discretionary{\char`\>}{\Wrappedafterbreak}{\char`\>}}%
- \def\PYGZsh{\discretionary{}{\Wrappedafterbreak\char`\#}{\char`\#}}%
- \def\PYGZpc{\discretionary{}{\Wrappedafterbreak\char`\%}{\char`\%}}%
- \def\PYGZdl{\discretionary{}{\Wrappedafterbreak\char`\$}{\char`\$}}%
- \def\PYGZhy{\discretionary{\char`\-}{\Wrappedafterbreak}{\char`\-}}%
- \def\PYGZsq{\discretionary{}{\Wrappedafterbreak\textquotesingle}{\textquotesingle}}%
- \def\PYGZdq{\discretionary{}{\Wrappedafterbreak\char`\"}{\char`\"}}%
- \def\PYGZti{\discretionary{\char`\~}{\Wrappedafterbreak}{\char`\~}}%
- }
- % Some characters . , ; ? ! / are not pygmentized.
- % This macro makes them "active" and they will insert potential linebreaks
- \newcommand*\Wrappedbreaksatpunct {%
- \lccode`\~`\.\lowercase{\def~}{\discretionary{\hbox{\char`\.}}{\Wrappedafterbreak}{\hbox{\char`\.}}}%
- \lccode`\~`\,\lowercase{\def~}{\discretionary{\hbox{\char`\,}}{\Wrappedafterbreak}{\hbox{\char`\,}}}%
- \lccode`\~`\;\lowercase{\def~}{\discretionary{\hbox{\char`\;}}{\Wrappedafterbreak}{\hbox{\char`\;}}}%
- \lccode`\~`\:\lowercase{\def~}{\discretionary{\hbox{\char`\:}}{\Wrappedafterbreak}{\hbox{\char`\:}}}%
- \lccode`\~`\?\lowercase{\def~}{\discretionary{\hbox{\char`\?}}{\Wrappedafterbreak}{\hbox{\char`\?}}}%
- \lccode`\~`\!\lowercase{\def~}{\discretionary{\hbox{\char`\!}}{\Wrappedafterbreak}{\hbox{\char`\!}}}%
- \lccode`\~`\/\lowercase{\def~}{\discretionary{\hbox{\char`\/}}{\Wrappedafterbreak}{\hbox{\char`\/}}}%
- \catcode`\.\active
- \catcode`\,\active
- \catcode`\;\active
- \catcode`\:\active
- \catcode`\?\active
- \catcode`\!\active
- \catcode`\/\active
- \lccode`\~`\~
- }
- \makeatother
- \let\OriginalVerbatim=\Verbatim
- \makeatletter
- \renewcommand{\Verbatim}[1][1]{%
- %\parskip\z@skip
- \sbox\Wrappedcontinuationbox {\Wrappedcontinuationsymbol}%
- \sbox\Wrappedvisiblespacebox {\FV@SetupFont\Wrappedvisiblespace}%
- \def\FancyVerbFormatLine ##1{\hsize\linewidth
- \vtop{\raggedright\hyphenpenalty\z@\exhyphenpenalty\z@
- \doublehyphendemerits\z@\finalhyphendemerits\z@
- \strut ##1\strut}%
- }%
- % If the linebreak is at a space, the latter will be displayed as visible
- % space at end of first line, and a continuation symbol starts next line.
- % Stretch/shrink are however usually zero for typewriter font.
- \def\FV@Space {%
- \nobreak\hskip\z@ plus\fontdimen3\font minus\fontdimen4\font
- \discretionary{\copy\Wrappedvisiblespacebox}{\Wrappedafterbreak}
- {\kern\fontdimen2\font}%
- }%
-
- % Allow breaks at special characters using \PYG... macros.
- \Wrappedbreaksatspecials
- % Breaks at punctuation characters . , ; ? ! and / need catcode=\active
- \OriginalVerbatim[#1,codes*=\Wrappedbreaksatpunct]%
- }
- \makeatother
- % Exact colors from NB
- ((*- block style_colors *))
- \definecolor{incolor}{HTML}{303F9F}
- \definecolor{outcolor}{HTML}{D84315}
- \definecolor{cellborder}{HTML}{CFCFCF}
- \definecolor{cellbackground}{HTML}{F7F7F7}
- ((*- endblock style_colors *))
-
- % prompt
- \makeatletter
- \newcommand{\boxspacing}{\kern\kvtcb@left@rule\kern\kvtcb@boxsep}
- \makeatother
- ((*- block style_prompt *))
- \newcommand{\prompt}[4]{
- \ttfamily\llap{{\color{#2}[#3]:\hspace{3pt}#4}}\vspace{-\baselineskip}
- }
- ((* endblock style_prompt *))
-
- ((*- endblock definitions -*))
- %===============================================================================
- % Input
- %===============================================================================
- ((* block input scoped *))
- ((( draw_cell(cell.source | highlight_code(strip_verbatim=True), cell, 'In', 'incolor', '\\boxspacing') )))
- ((* endblock input *))
- %===============================================================================
- % Output
- %===============================================================================
- ((*- if charlim is not defined -*))
- ((* set charlim = 80 *))
- ((*- endif -*))
- ((* block execute_result scoped *))
- ((*- for type in output.data | filter_data_type -*))
- ((*- if type in ['text/plain']*))
- ((( draw_cell(output.data['text/plain'] | wrap_text(charlim) | escape_latex | ansi2latex, cell, 'Out', 'outcolor', '\\boxspacing') )))
- ((* else -*))
- ((( " " )))
- ((( draw_prompt(cell, 'Out', 'outcolor','') )))((( super() )))
- ((*- endif -*))
- ((*- endfor -*))
- ((* endblock execute_result *))
- ((* block stream *))
- \begin{Verbatim}[commandchars=\\\{\}]
- ((( output.text | wrap_text(charlim) | escape_latex | strip_trailing_newline | ansi2latex )))
- \end{Verbatim}
- ((* endblock stream *))
- %==============================================================================
- % Support Macros
- %==============================================================================
- % Name: draw_cell
- % Purpose: Renders an output/input prompt
- ((*- if draw_cell is not defined -*)) % Required to allow overriding.
- ((* macro draw_cell(text, cell, prompt, prompt_color, extra_space) -*))
- ((*- if prompt == 'In' -*))
- ((*- set style = "breakable, size=fbox, boxrule=1pt, pad at break*=1mm,colback=cellbackground, colframe=cellborder"-*))
- ((*- else -*))((*- set style = "breakable, size=fbox, boxrule=.5pt, pad at break*=1mm, opacityfill=0"-*))((*- endif -*))
- \begin{tcolorbox}[((( style )))]
- (((- draw_prompt(cell, prompt, prompt_color, extra_space) )))
- \begin{Verbatim}[commandchars=\\\{\}]
- ((( text )))
- \end{Verbatim}
- \end{tcolorbox}
- ((*- endmacro *))
- ((*- endif -*))
- % Name: draw_prompt
- % Purpose: Renders an output/input prompt
- ((* macro draw_prompt(cell, prompt, prompt_color, extra_space) -*))
- ((*- if cell.execution_count is defined -*))
- ((*- set execution_count = "" ~ (cell.execution_count | replace(None, " ")) -*))
- ((*- else -*))((*- set execution_count = " " -*))((*- endif *))
- ((*- if (resources.global_content_filter.include_output_prompt and prompt == 'Out')
- or (resources.global_content_filter.include_input_prompt and prompt == 'In' ) *))
- \prompt{(((prompt)))}{(((prompt_color)))}{(((execution_count)))}{(((extra_space)))}
- ((*- endif -*))
- ((*- endmacro *))
|