TB065

Trabajos Prácticos de la Materia Señales y Sistemas
Index Commits Files Refs
primera_parte/latex-template/style_jupyter.tex.j2 (8258B)
   1 ((=- IPython input/output style -=))
   2 ((*- extends 'base.tex.j2' -*))
   3 
   4 ((*- block packages -*))
   5     \usepackage[breakable]{tcolorbox}
   6     \usepackage{parskip} % Stop auto-indenting (to mimic markdown behaviour)
   7     ((( super() )))
   8 ((*- endblock packages -*))
   9 
  10 ((*- block definitions -*))
  11     ((( super() )))
  12 % Pygments definitions
  13     (((- resources.latex.pygments_definitions )))
  14 
  15     % For linebreaks inside Verbatim environment from package fancyvrb.
  16     \makeatletter
  17         \newbox\Wrappedcontinuationbox
  18         \newbox\Wrappedvisiblespacebox
  19         \newcommand*\Wrappedvisiblespace {\textcolor{red}{\textvisiblespace}}
  20         \newcommand*\Wrappedcontinuationsymbol {\textcolor{red}{\llap{\tiny$\m@th\hookrightarrow$}}}
  21         \newcommand*\Wrappedcontinuationindent {3ex }
  22         \newcommand*\Wrappedafterbreak {\kern\Wrappedcontinuationindent\copy\Wrappedcontinuationbox}
  23         % Take advantage of the already applied Pygments mark-up to insert
  24         % potential linebreaks for TeX processing.
  25         %        {, <, #, %, $, ' and ": go to next line.
  26         %        _, }, ^, &, >, - and ~: stay at end of broken line.
  27         % Use of \textquotesingle for straight quote.
  28         \newcommand*\Wrappedbreaksatspecials {%
  29             \def\PYGZus{\discretionary{\char`\_}{\Wrappedafterbreak}{\char`\_}}%
  30             \def\PYGZob{\discretionary{}{\Wrappedafterbreak\char`\{}{\char`\{}}%
  31             \def\PYGZcb{\discretionary{\char`\}}{\Wrappedafterbreak}{\char`\}}}%
  32             \def\PYGZca{\discretionary{\char`\^}{\Wrappedafterbreak}{\char`\^}}%
  33             \def\PYGZam{\discretionary{\char`\&}{\Wrappedafterbreak}{\char`\&}}%
  34             \def\PYGZlt{\discretionary{}{\Wrappedafterbreak\char`\<}{\char`\<}}%
  35             \def\PYGZgt{\discretionary{\char`\>}{\Wrappedafterbreak}{\char`\>}}%
  36             \def\PYGZsh{\discretionary{}{\Wrappedafterbreak\char`\#}{\char`\#}}%
  37             \def\PYGZpc{\discretionary{}{\Wrappedafterbreak\char`\%}{\char`\%}}%
  38             \def\PYGZdl{\discretionary{}{\Wrappedafterbreak\char`\$}{\char`\$}}%
  39             \def\PYGZhy{\discretionary{\char`\-}{\Wrappedafterbreak}{\char`\-}}%
  40             \def\PYGZsq{\discretionary{}{\Wrappedafterbreak\textquotesingle}{\textquotesingle}}%
  41             \def\PYGZdq{\discretionary{}{\Wrappedafterbreak\char`\"}{\char`\"}}%
  42             \def\PYGZti{\discretionary{\char`\~}{\Wrappedafterbreak}{\char`\~}}%
  43         }
  44         % Some characters . , ; ? ! / are not pygmentized.
  45         % This macro makes them "active" and they will insert potential linebreaks
  46         \newcommand*\Wrappedbreaksatpunct {%
  47             \lccode`\~`\.\lowercase{\def~}{\discretionary{\hbox{\char`\.}}{\Wrappedafterbreak}{\hbox{\char`\.}}}%
  48             \lccode`\~`\,\lowercase{\def~}{\discretionary{\hbox{\char`\,}}{\Wrappedafterbreak}{\hbox{\char`\,}}}%
  49             \lccode`\~`\;\lowercase{\def~}{\discretionary{\hbox{\char`\;}}{\Wrappedafterbreak}{\hbox{\char`\;}}}%
  50             \lccode`\~`\:\lowercase{\def~}{\discretionary{\hbox{\char`\:}}{\Wrappedafterbreak}{\hbox{\char`\:}}}%
  51             \lccode`\~`\?\lowercase{\def~}{\discretionary{\hbox{\char`\?}}{\Wrappedafterbreak}{\hbox{\char`\?}}}%
  52             \lccode`\~`\!\lowercase{\def~}{\discretionary{\hbox{\char`\!}}{\Wrappedafterbreak}{\hbox{\char`\!}}}%
  53             \lccode`\~`\/\lowercase{\def~}{\discretionary{\hbox{\char`\/}}{\Wrappedafterbreak}{\hbox{\char`\/}}}%
  54             \catcode`\.\active
  55             \catcode`\,\active
  56             \catcode`\;\active
  57             \catcode`\:\active
  58             \catcode`\?\active
  59             \catcode`\!\active
  60             \catcode`\/\active
  61             \lccode`\~`\~
  62         }
  63     \makeatother
  64 
  65     \let\OriginalVerbatim=\Verbatim
  66     \makeatletter
  67     \renewcommand{\Verbatim}[1][1]{%
  68         %\parskip\z@skip
  69         \sbox\Wrappedcontinuationbox {\Wrappedcontinuationsymbol}%
  70         \sbox\Wrappedvisiblespacebox {\FV@SetupFont\Wrappedvisiblespace}%
  71         \def\FancyVerbFormatLine ##1{\hsize\linewidth
  72             \vtop{\raggedright\hyphenpenalty\z@\exhyphenpenalty\z@
  73                 \doublehyphendemerits\z@\finalhyphendemerits\z@
  74                 \strut ##1\strut}%
  75         }%
  76         % If the linebreak is at a space, the latter will be displayed as visible
  77         % space at end of first line, and a continuation symbol starts next line.
  78         % Stretch/shrink are however usually zero for typewriter font.
  79         \def\FV@Space {%
  80             \nobreak\hskip\z@ plus\fontdimen3\font minus\fontdimen4\font
  81             \discretionary{\copy\Wrappedvisiblespacebox}{\Wrappedafterbreak}
  82             {\kern\fontdimen2\font}%
  83         }%
  84 
  85         % Allow breaks at special characters using \PYG... macros.
  86         \Wrappedbreaksatspecials
  87         % Breaks at punctuation characters . , ; ? ! and / need catcode=\active
  88         \OriginalVerbatim[#1,codes*=\Wrappedbreaksatpunct]%
  89     }
  90     \makeatother
  91 
  92     % Exact colors from NB
  93     ((*- block style_colors *))
  94     \definecolor{incolor}{HTML}{303F9F}
  95     \definecolor{outcolor}{HTML}{D84315}
  96     \definecolor{cellborder}{HTML}{CFCFCF}
  97     \definecolor{cellbackground}{HTML}{F7F7F7}
  98     ((*- endblock style_colors *))
  99 
 100     % prompt
 101     \makeatletter
 102     \newcommand{\boxspacing}{\kern\kvtcb@left@rule\kern\kvtcb@boxsep}
 103     \makeatother
 104     ((*- block style_prompt *))
 105     \newcommand{\prompt}[4]{
 106         {\ttfamily\llap{{\color{#2}[#3]:\hspace{3pt}#4}}\vspace{-\baselineskip}}
 107     }
 108     ((* endblock style_prompt *))
 109 
 110 ((*- endblock definitions -*))
 111 
 112 %===============================================================================
 113 % Input
 114 %===============================================================================
 115 
 116 ((* block input scoped *))
 117     ((( draw_cell(cell.source | highlight_code(strip_verbatim=True), cell, 'In', 'incolor', '\\boxspacing') )))
 118 ((* endblock input *))
 119 
 120 
 121 %===============================================================================
 122 % Output
 123 %===============================================================================
 124 
 125 ((*- if charlim is not defined -*))
 126     ((* set charlim = 80 *))
 127 ((*- endif -*))
 128 
 129 ((* block execute_result scoped *))
 130     ((*- for type in output.data | filter_data_type -*))
 131         ((*- if type in ['text/plain']*))
 132             ((( draw_cell(output.data['text/plain'] | wrap_text(charlim) | escape_latex | ansi2latex, cell, 'Out', 'outcolor', '\\boxspacing') )))
 133         ((* else -*))
 134             ((( " " )))
 135             ((( draw_prompt(cell, 'Out', 'outcolor','') )))((( super() )))
 136         ((*- endif -*))
 137     ((*- endfor -*))
 138 ((* endblock execute_result *))
 139 
 140 ((* block stream *))
 141     \begin{Verbatim}[commandchars=\\\{\}]
 142 ((( output.text | wrap_text(charlim) | escape_latex | strip_trailing_newline | ansi2latex )))
 143     \end{Verbatim}
 144 ((* endblock stream *))
 145 
 146 %==============================================================================
 147 % Support Macros
 148 %==============================================================================
 149 
 150 % Name: draw_cell
 151 % Purpose: Renders an output/input prompt
 152 ((*- if draw_cell is not defined -*)) % Required to allow overriding.
 153 ((* macro draw_cell(text, cell, prompt, prompt_color, extra_space) -*))
 154 ((*- if prompt == 'In' -*))
 155 ((*- set style = "breakable, size=fbox, boxrule=1pt, pad at break*=1mm,colback=cellbackground, colframe=cellborder"-*))
 156 ((*- else -*))((*- set style = "breakable, size=fbox, boxrule=.5pt, pad at break*=1mm, opacityfill=0"-*))((*-  endif -*))
 157 
 158 \begin{tcolorbox}[((( style ))), fontupper=\footnotesize]
 159 (((- draw_prompt(cell, prompt, prompt_color, extra_space) )))
 160 \begin{Verbatim}[commandchars=\\\{\}]
 161 ((( text )))
 162 \end{Verbatim}
 163 \end{tcolorbox}
 164 ((*- endmacro *))
 165 ((*- endif -*))
 166 
 167 % Name: draw_prompt
 168 % Purpose: Renders an output/input prompt
 169 ((* macro draw_prompt(cell, prompt, prompt_color, extra_space) -*))
 170     ((*- if cell.execution_count is defined -*))
 171     ((*- set execution_count = "" ~ (cell.execution_count | replace(None, " ")) -*))
 172     ((*- else -*))((*- set execution_count = " " -*))((*- endif *))
 173 
 174     ((*- if (resources.global_content_filter.include_output_prompt and prompt == 'Out')
 175          or (resources.global_content_filter.include_input_prompt  and prompt == 'In' ) *))
 176 \prompt{(((prompt)))}{(((prompt_color)))}{(((execution_count)))}{(((extra_space)))}
 177     ((*- endif -*))
 178 ((*- endmacro *))