9-SageLatex.tex (30890B)
1 \documentclass[11pt]{article} 2 3 \usepackage[breakable]{tcolorbox} 4 \usepackage{parskip} % Stop auto-indenting (to mimic markdown behaviour) 5 6 \usepackage{iftex} 7 \ifPDFTeX 8 \usepackage[T1]{fontenc} 9 \usepackage{mathpazo} 10 \else 11 \usepackage{fontspec} 12 \fi 13 14 % Basic figure setup, for now with no caption control since it's done 15 % automatically by Pandoc (which extracts ![](path) syntax from Markdown). 16 \usepackage{graphicx} 17 % Maintain compatibility with old templates. Remove in nbconvert 6.0 18 \let\Oldincludegraphics\includegraphics 19 % Ensure that by default, figures have no caption (until we provide a 20 % proper Figure object with a Caption API and a way to capture that 21 % in the conversion process - todo). 22 \usepackage{caption} 23 \DeclareCaptionFormat{nocaption}{} 24 \captionsetup{format=nocaption,aboveskip=0pt,belowskip=0pt} 25 26 \usepackage[Export]{adjustbox} % Used to constrain images to a maximum size 27 \adjustboxset{max size={0.9\linewidth}{0.9\paperheight}} 28 \usepackage{float} 29 \floatplacement{figure}{H} % forces figures to be placed at the correct location 30 \usepackage{xcolor} % Allow colors to be defined 31 \usepackage{enumerate} % Needed for markdown enumerations to work 32 \usepackage{geometry} % Used to adjust the document margins 33 \usepackage{amsmath} % Equations 34 \usepackage{amssymb} % Equations 35 \usepackage{textcomp} % defines textquotesingle 36 % Hack from http://tex.stackexchange.com/a/47451/13684: 37 \AtBeginDocument{% 38 \def\PYZsq{\textquotesingle}% Upright quotes in Pygmentized code 39 } 40 \usepackage{upquote} % Upright quotes for verbatim code 41 \usepackage{eurosym} % defines \euro 42 \usepackage[mathletters]{ucs} % Extended unicode (utf-8) support 43 \usepackage{fancyvrb} % verbatim replacement that allows latex 44 \usepackage{grffile} % extends the file name processing of package graphics 45 % to support a larger range 46 \makeatletter % fix for grffile with XeLaTeX 47 \def\Gread@@xetex#1{% 48 \IfFileExists{"\Gin@base".bb}% 49 {\Gread@eps{\Gin@base.bb}}% 50 {\Gread@@xetex@aux#1}% 51 } 52 \makeatother 53 54 % The hyperref package gives us a pdf with properly built 55 % internal navigation ('pdf bookmarks' for the table of contents, 56 % internal cross-reference links, web links for URLs, etc.) 57 \usepackage{hyperref} 58 % The default LaTeX title has an obnoxious amount of whitespace. By default, 59 % titling removes some of it. It also provides customization options. 60 \usepackage{titling} 61 \usepackage{longtable} % longtable support required by pandoc >1.10 62 \usepackage{booktabs} % table support for pandoc > 1.12.2 63 \usepackage[inline]{enumitem} % IRkernel/repr support (it uses the enumerate* environment) 64 \usepackage[normalem]{ulem} % ulem is needed to support strikethroughs (\sout) 65 % normalem makes italics be italics, not underlines 66 \usepackage{mathrsfs} 67 68 69 70 % Colors for the hyperref package 71 \definecolor{urlcolor}{rgb}{0,.145,.698} 72 \definecolor{linkcolor}{rgb}{.71,0.21,0.01} 73 \definecolor{citecolor}{rgb}{.12,.54,.11} 74 75 % ANSI colors 76 \definecolor{ansi-black}{HTML}{3E424D} 77 \definecolor{ansi-black-intense}{HTML}{282C36} 78 \definecolor{ansi-red}{HTML}{E75C58} 79 \definecolor{ansi-red-intense}{HTML}{B22B31} 80 \definecolor{ansi-green}{HTML}{00A250} 81 \definecolor{ansi-green-intense}{HTML}{007427} 82 \definecolor{ansi-yellow}{HTML}{DDB62B} 83 \definecolor{ansi-yellow-intense}{HTML}{B27D12} 84 \definecolor{ansi-blue}{HTML}{208FFB} 85 \definecolor{ansi-blue-intense}{HTML}{0065CA} 86 \definecolor{ansi-magenta}{HTML}{D160C4} 87 \definecolor{ansi-magenta-intense}{HTML}{A03196} 88 \definecolor{ansi-cyan}{HTML}{60C6C8} 89 \definecolor{ansi-cyan-intense}{HTML}{258F8F} 90 \definecolor{ansi-white}{HTML}{C5C1B4} 91 \definecolor{ansi-white-intense}{HTML}{A1A6B2} 92 \definecolor{ansi-default-inverse-fg}{HTML}{FFFFFF} 93 \definecolor{ansi-default-inverse-bg}{HTML}{000000} 94 95 % commands and environments needed by pandoc snippets 96 % extracted from the output of `pandoc -s` 97 \providecommand{\tightlist}{% 98 \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} 99 \DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}} 100 % Add ',fontsize=\small' for more characters per line 101 \newenvironment{Shaded}{}{} 102 \newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}} 103 \newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{{#1}}} 104 \newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} 105 \newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} 106 \newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} 107 \newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} 108 \newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} 109 \newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{{#1}}}} 110 \newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{{#1}}} 111 \newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}} 112 \newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{{#1}}} 113 \newcommand{\RegionMarkerTok}[1]{{#1}} 114 \newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}} 115 \newcommand{\NormalTok}[1]{{#1}} 116 117 % Additional commands for more recent versions of Pandoc 118 \newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{{#1}}} 119 \newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} 120 \newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} 121 \newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{{#1}}} 122 \newcommand{\ImportTok}[1]{{#1}} 123 \newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{{#1}}}} 124 \newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} 125 \newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} 126 \newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{{#1}}} 127 \newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}} 128 \newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{{#1}}} 129 \newcommand{\BuiltInTok}[1]{{#1}} 130 \newcommand{\ExtensionTok}[1]{{#1}} 131 \newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{{#1}}} 132 \newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{{#1}}} 133 \newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} 134 \newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} 135 136 137 % Define a nice break command that doesn't care if a line doesn't already 138 % exist. 139 \def\br{\hspace*{\fill} \\* } 140 % Math Jax compatibility definitions 141 \def\gt{>} 142 \def\lt{<} 143 \let\Oldtex\TeX 144 \let\Oldlatex\LaTeX 145 \renewcommand{\TeX}{\textrm{\Oldtex}} 146 \renewcommand{\LaTeX}{\textrm{\Oldlatex}} 147 % Document parameters 148 % Document title 149 \title{Sage and Latex interaction} 150 \author{Sebastiano Tronto - \texttt{sebastiano.tronto@uni.lu}} 151 \date{2021-05-07} 152 153 154 155 156 157 % Pygments definitions 158 \makeatletter 159 \def\PY@reset{\let\PY@it=\relax \let\PY@bf=\relax% 160 \let\PY@ul=\relax \let\PY@tc=\relax% 161 \let\PY@bc=\relax \let\PY@ff=\relax} 162 \def\PY@tok#1{\csname PY@tok@#1\endcsname} 163 \def\PY@toks#1+{\ifx\relax#1\empty\else% 164 \PY@tok{#1}\expandafter\PY@toks\fi} 165 \def\PY@do#1{\PY@bc{\PY@tc{\PY@ul{% 166 \PY@it{\PY@bf{\PY@ff{#1}}}}}}} 167 \def\PY#1#2{\PY@reset\PY@toks#1+\relax+\PY@do{#2}} 168 169 \expandafter\def\csname PY@tok@w\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}} 170 \expandafter\def\csname PY@tok@c\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} 171 \expandafter\def\csname PY@tok@cp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.74,0.48,0.00}{##1}}} 172 \expandafter\def\csname PY@tok@k\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} 173 \expandafter\def\csname PY@tok@kp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} 174 \expandafter\def\csname PY@tok@kt\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.69,0.00,0.25}{##1}}} 175 \expandafter\def\csname PY@tok@o\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} 176 \expandafter\def\csname PY@tok@ow\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}} 177 \expandafter\def\csname PY@tok@nb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} 178 \expandafter\def\csname PY@tok@nf\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} 179 \expandafter\def\csname PY@tok@nc\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} 180 \expandafter\def\csname PY@tok@nn\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} 181 \expandafter\def\csname PY@tok@ne\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.82,0.25,0.23}{##1}}} 182 \expandafter\def\csname PY@tok@nv\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} 183 \expandafter\def\csname PY@tok@no\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.53,0.00,0.00}{##1}}} 184 \expandafter\def\csname PY@tok@nl\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.63,0.63,0.00}{##1}}} 185 \expandafter\def\csname PY@tok@ni\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.60,0.60,0.60}{##1}}} 186 \expandafter\def\csname PY@tok@na\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.49,0.56,0.16}{##1}}} 187 \expandafter\def\csname PY@tok@nt\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} 188 \expandafter\def\csname PY@tok@nd\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}} 189 \expandafter\def\csname PY@tok@s\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} 190 \expandafter\def\csname PY@tok@sd\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} 191 \expandafter\def\csname PY@tok@si\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}} 192 \expandafter\def\csname PY@tok@se\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.13}{##1}}} 193 \expandafter\def\csname PY@tok@sr\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}} 194 \expandafter\def\csname PY@tok@ss\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} 195 \expandafter\def\csname PY@tok@sx\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} 196 \expandafter\def\csname PY@tok@m\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} 197 \expandafter\def\csname PY@tok@gh\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}} 198 \expandafter\def\csname PY@tok@gu\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}} 199 \expandafter\def\csname PY@tok@gd\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}} 200 \expandafter\def\csname PY@tok@gi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.63,0.00}{##1}}} 201 \expandafter\def\csname PY@tok@gr\endcsname{\def\PY@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}} 202 \expandafter\def\csname PY@tok@ge\endcsname{\let\PY@it=\textit} 203 \expandafter\def\csname PY@tok@gs\endcsname{\let\PY@bf=\textbf} 204 \expandafter\def\csname PY@tok@gp\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}} 205 \expandafter\def\csname PY@tok@go\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}} 206 \expandafter\def\csname PY@tok@gt\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.27,0.87}{##1}}} 207 \expandafter\def\csname PY@tok@err\endcsname{\def\PY@bc##1{\setlength{\fboxsep}{0pt}\fcolorbox[rgb]{1.00,0.00,0.00}{1,1,1}{\strut ##1}}} 208 \expandafter\def\csname PY@tok@kc\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} 209 \expandafter\def\csname PY@tok@kd\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} 210 \expandafter\def\csname PY@tok@kn\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} 211 \expandafter\def\csname PY@tok@kr\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} 212 \expandafter\def\csname PY@tok@bp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} 213 \expandafter\def\csname PY@tok@fm\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} 214 \expandafter\def\csname PY@tok@vc\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} 215 \expandafter\def\csname PY@tok@vg\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} 216 \expandafter\def\csname PY@tok@vi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} 217 \expandafter\def\csname PY@tok@vm\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} 218 \expandafter\def\csname PY@tok@sa\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} 219 \expandafter\def\csname PY@tok@sb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} 220 \expandafter\def\csname PY@tok@sc\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} 221 \expandafter\def\csname PY@tok@dl\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} 222 \expandafter\def\csname PY@tok@s2\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} 223 \expandafter\def\csname PY@tok@sh\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} 224 \expandafter\def\csname PY@tok@s1\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} 225 \expandafter\def\csname PY@tok@mb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} 226 \expandafter\def\csname PY@tok@mf\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} 227 \expandafter\def\csname PY@tok@mh\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} 228 \expandafter\def\csname PY@tok@mi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} 229 \expandafter\def\csname PY@tok@il\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} 230 \expandafter\def\csname PY@tok@mo\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} 231 \expandafter\def\csname PY@tok@ch\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} 232 \expandafter\def\csname PY@tok@cm\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} 233 \expandafter\def\csname PY@tok@cpf\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} 234 \expandafter\def\csname PY@tok@c1\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} 235 \expandafter\def\csname PY@tok@cs\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} 236 237 \def\PYZbs{\char`\\} 238 \def\PYZus{\char`\_} 239 \def\PYZob{\char`\{} 240 \def\PYZcb{\char`\}} 241 \def\PYZca{\char`\^} 242 \def\PYZam{\char`\&} 243 \def\PYZlt{\char`\<} 244 \def\PYZgt{\char`\>} 245 \def\PYZsh{\char`\#} 246 \def\PYZpc{\char`\%} 247 \def\PYZdl{\char`\$} 248 \def\PYZhy{\char`\-} 249 \def\PYZsq{\char`\'} 250 \def\PYZdq{\char`\"} 251 \def\PYZti{\char`\~} 252 % for compatibility with earlier versions 253 \def\PYZat{@} 254 \def\PYZlb{[} 255 \def\PYZrb{]} 256 \makeatother 257 258 259 % For linebreaks inside Verbatim environment from package fancyvrb. 260 \makeatletter 261 \newbox\Wrappedcontinuationbox 262 \newbox\Wrappedvisiblespacebox 263 \newcommand*\Wrappedvisiblespace {\textcolor{red}{\textvisiblespace}} 264 \newcommand*\Wrappedcontinuationsymbol {\textcolor{red}{\llap{\tiny$\m@th\hookrightarrow$}}} 265 \newcommand*\Wrappedcontinuationindent {3ex } 266 \newcommand*\Wrappedafterbreak {\kern\Wrappedcontinuationindent\copy\Wrappedcontinuationbox} 267 % Take advantage of the already applied Pygments mark-up to insert 268 % potential linebreaks for TeX processing. 269 % {, <, #, %, $, ' and ": go to next line. 270 % _, }, ^, &, >, - and ~: stay at end of broken line. 271 % Use of \textquotesingle for straight quote. 272 \newcommand*\Wrappedbreaksatspecials {% 273 \def\PYGZus{\discretionary{\char`\_}{\Wrappedafterbreak}{\char`\_}}% 274 \def\PYGZob{\discretionary{}{\Wrappedafterbreak\char`\{}{\char`\{}}% 275 \def\PYGZcb{\discretionary{\char`\}}{\Wrappedafterbreak}{\char`\}}}% 276 \def\PYGZca{\discretionary{\char`\^}{\Wrappedafterbreak}{\char`\^}}% 277 \def\PYGZam{\discretionary{\char`\&}{\Wrappedafterbreak}{\char`\&}}% 278 \def\PYGZlt{\discretionary{}{\Wrappedafterbreak\char`\<}{\char`\<}}% 279 \def\PYGZgt{\discretionary{\char`\>}{\Wrappedafterbreak}{\char`\>}}% 280 \def\PYGZsh{\discretionary{}{\Wrappedafterbreak\char`\#}{\char`\#}}% 281 \def\PYGZpc{\discretionary{}{\Wrappedafterbreak\char`\%}{\char`\%}}% 282 \def\PYGZdl{\discretionary{}{\Wrappedafterbreak\char`\$}{\char`\$}}% 283 \def\PYGZhy{\discretionary{\char`\-}{\Wrappedafterbreak}{\char`\-}}% 284 \def\PYGZsq{\discretionary{}{\Wrappedafterbreak\textquotesingle}{\textquotesingle}}% 285 \def\PYGZdq{\discretionary{}{\Wrappedafterbreak\char`\"}{\char`\"}}% 286 \def\PYGZti{\discretionary{\char`\~}{\Wrappedafterbreak}{\char`\~}}% 287 } 288 % Some characters . , ; ? ! / are not pygmentized. 289 % This macro makes them "active" and they will insert potential linebreaks 290 \newcommand*\Wrappedbreaksatpunct {% 291 \lccode`\~`\.\lowercase{\def~}{\discretionary{\hbox{\char`\.}}{\Wrappedafterbreak}{\hbox{\char`\.}}}% 292 \lccode`\~`\,\lowercase{\def~}{\discretionary{\hbox{\char`\,}}{\Wrappedafterbreak}{\hbox{\char`\,}}}% 293 \lccode`\~`\;\lowercase{\def~}{\discretionary{\hbox{\char`\;}}{\Wrappedafterbreak}{\hbox{\char`\;}}}% 294 \lccode`\~`\:\lowercase{\def~}{\discretionary{\hbox{\char`\:}}{\Wrappedafterbreak}{\hbox{\char`\:}}}% 295 \lccode`\~`\?\lowercase{\def~}{\discretionary{\hbox{\char`\?}}{\Wrappedafterbreak}{\hbox{\char`\?}}}% 296 \lccode`\~`\!\lowercase{\def~}{\discretionary{\hbox{\char`\!}}{\Wrappedafterbreak}{\hbox{\char`\!}}}% 297 \lccode`\~`\/\lowercase{\def~}{\discretionary{\hbox{\char`\/}}{\Wrappedafterbreak}{\hbox{\char`\/}}}% 298 \catcode`\.\active 299 \catcode`\,\active 300 \catcode`\;\active 301 \catcode`\:\active 302 \catcode`\?\active 303 \catcode`\!\active 304 \catcode`\/\active 305 \lccode`\~`\~ 306 } 307 \makeatother 308 309 \let\OriginalVerbatim=\Verbatim 310 \makeatletter 311 \renewcommand{\Verbatim}[1][1]{% 312 %\parskip\z@skip 313 \sbox\Wrappedcontinuationbox {\Wrappedcontinuationsymbol}% 314 \sbox\Wrappedvisiblespacebox {\FV@SetupFont\Wrappedvisiblespace}% 315 \def\FancyVerbFormatLine ##1{\hsize\linewidth 316 \vtop{\raggedright\hyphenpenalty\z@\exhyphenpenalty\z@ 317 \doublehyphendemerits\z@\finalhyphendemerits\z@ 318 \strut ##1\strut}% 319 }% 320 % If the linebreak is at a space, the latter will be displayed as visible 321 % space at end of first line, and a continuation symbol starts next line. 322 % Stretch/shrink are however usually zero for typewriter font. 323 \def\FV@Space {% 324 \nobreak\hskip\z@ plus\fontdimen3\font minus\fontdimen4\font 325 \discretionary{\copy\Wrappedvisiblespacebox}{\Wrappedafterbreak} 326 {\kern\fontdimen2\font}% 327 }% 328 329 % Allow breaks at special characters using \PYG... macros. 330 \Wrappedbreaksatspecials 331 % Breaks at punctuation characters . , ; ? ! and / need catcode=\active 332 \OriginalVerbatim[#1,codes*=\Wrappedbreaksatpunct]% 333 } 334 \makeatother 335 336 % Exact colors from NB 337 \definecolor{incolor}{HTML}{303F9F} 338 \definecolor{outcolor}{HTML}{D84315} 339 \definecolor{cellborder}{HTML}{CFCFCF} 340 \definecolor{cellbackground}{HTML}{F7F7F7} 341 342 % prompt 343 \makeatletter 344 \newcommand{\boxspacing}{\kern\kvtcb@left@rule\kern\kvtcb@boxsep} 345 \makeatother 346 \newcommand{\prompt}[4]{ 347 \ttfamily\llap{{\color{#2}[#3]:\hspace{3pt}#4}}\vspace{-\baselineskip} 348 } 349 350 351 352 % Prevent overflowing lines due to hard-to-break entities 353 \sloppy 354 % Setup hyperref package 355 \hypersetup{ 356 breaklinks=true, % so long urls are correctly broken across lines 357 colorlinks=true, 358 urlcolor=urlcolor, 359 linkcolor=linkcolor, 360 citecolor=citecolor, 361 } 362 % Slightly bigger margins than the latex defaults 363 364 \geometry{verbose,tmargin=1in,bmargin=1in,lmargin=1in,rmargin=1in} 365 366 367 368 \begin{document} 369 370 \maketitle 371 372 373 374 375 It can happen that you need to include the results of your Sage 376 computations and/or Sage code inside a LaTeX document. Luckily Sage 377 provides some functions to translate its objects into LaTeX, and the 378 listings package for LaTeX can be used to include any code (Sage, Python 379 or any other language) in a LaTeX document. 380 381 In this document we will describe some of these interactions between 382 LaTeX and Sage. 383 384 \hypertarget{the-show-command}{% 385 \section{\texorpdfstring{The \texttt{show()} 386 command}{The show() command}}\label{the-show-command}} 387 388 \textbf{Reference:} 389 {[}\href{https://doc.sagemath.org/html/en/reference/repl/sage/repl/display/pretty_print.html}{1}{]} 390 (\texttt{show()} is just an alternative name for 391 \texttt{pretty\_print()}). 392 393 With this command Sage will generate a picture displaying the object. 394 The result depends on the object itself: most of them will be typeset in 395 Latex, but for example graphics primitives (such as plots) will be 396 displayed as pictures. 397 398 You can see it as an alternative to \texttt{print()}. 399 400 \begin{tcolorbox}[breakable, size=fbox, boxrule=1pt, pad at break*=1mm,colback=cellbackground, colframe=cellborder] 401 \prompt{In}{incolor}{4}{\boxspacing} 402 \begin{Verbatim}[commandchars=\\\{\}] 403 \PY{n}{s} \PY{o}{=} \PY{p}{(}\PY{n}{e}\PY{o}{\PYZca{}}\PY{n}{x}\PY{p}{)}\PY{o}{.}\PY{n}{series}\PY{p}{(}\PY{n}{x}\PY{o}{==}\PY{l+m+mi}{0}\PY{p}{,} \PY{l+m+mi}{4}\PY{p}{)} 404 \PY{n}{M} \PY{o}{=} \PY{n}{matrix}\PY{p}{(}\PY{p}{[}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{]}\PY{p}{,}\PY{p}{[}\PY{l+m+mi}{4}\PY{p}{,}\PY{l+m+mi}{5}\PY{p}{,}\PY{l+m+mi}{6}\PY{p}{]}\PY{p}{,}\PY{p}{[}\PY{l+m+mi}{8}\PY{p}{,}\PY{l+m+mi}{9}\PY{p}{,}\PY{l+m+mi}{10}\PY{p}{]}\PY{p}{]}\PY{p}{)} 405 \PY{n+nb}{print}\PY{p}{(}\PY{n}{s}\PY{p}{)} 406 \PY{n}{show}\PY{p}{(}\PY{n}{s}\PY{p}{)} 407 \PY{n+nb}{print}\PY{p}{(}\PY{n}{M}\PY{p}{)} 408 \PY{n}{show}\PY{p}{(}\PY{n}{M}\PY{p}{)} 409 \PY{n+nb}{print}\PY{p}{(}\PY{n}{pi}\PY{p}{)} 410 \PY{n}{show}\PY{p}{(}\PY{n}{pi}\PY{p}{)} 411 \end{Verbatim} 412 \end{tcolorbox} 413 414 \begin{Verbatim}[commandchars=\\\{\}] 415 1 + 1*x + 1/2*x\^{}2 + 1/6*x\^{}3 + Order(x\^{}4) 416 \end{Verbatim} 417 418 \begin{math} 419 \newcommand{\Bold}[1]{\mathbf{#1}}1 + 1 x + \frac{1}{2} x^{2} + \frac{1}{6} x^{3} + \mathcal{O}\left(x^{4}\right) 420 \end{math} 421 422 423 \begin{Verbatim}[commandchars=\\\{\}] 424 [ 1 2 3] 425 [ 4 5 6] 426 [ 8 9 10] 427 \end{Verbatim} 428 429 \begin{math} 430 \newcommand{\Bold}[1]{\mathbf{#1}}\left(\begin{array}{rrr} 431 1 & 2 & 3 \\ 432 4 & 5 & 6 \\ 433 8 & 9 & 10 434 \end{array}\right) 435 \end{math} 436 437 438 \begin{Verbatim}[commandchars=\\\{\}] 439 pi 440 \end{Verbatim} 441 442 \begin{math} 443 \newcommand{\Bold}[1]{\mathbf{#1}}\pi 444 \end{math} 445 446 447 In a Jupyter notebook, the results above are displayed using 448 \href{https://www.mathjax.org/}{MathJax}. 449 450 If you are running this code in an interactive console (terminal) 451 instead of a Jupyter notebook, you will get the Latex source code for 452 those objects. You can force this behavior by using the \texttt{latex()} 453 command. 454 455 \hypertarget{the-latex-command}{% 456 \section{\texorpdfstring{The \texttt{latex()} 457 command}{The latex() command}}\label{the-latex-command}} 458 459 \textbf{Reference:} 460 {[}\href{https://doc.sagemath.org/html/en/reference/misc/sage/misc/latex.html}{2}{]} 461 462 This command is potentially very useful if you need to include the 463 results of Sage computations in a Latex file, especially with complex 464 objects like matrices or very large polynomials. 465 466 Technically, this is a function that returns a string, so you need to 467 \texttt{print()} it to see the result. 468 469 \begin{tcolorbox}[breakable, size=fbox, boxrule=1pt, pad at break*=1mm,colback=cellbackground, colframe=cellborder] 470 \prompt{In}{incolor}{5}{\boxspacing} 471 \begin{Verbatim}[commandchars=\\\{\}] 472 \PY{n+nb}{print}\PY{p}{(}\PY{n}{latex}\PY{p}{(}\PY{n}{s}\PY{p}{)}\PY{p}{)} 473 \PY{n+nb}{print}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+se}{\PYZbs{}n}\PY{l+s+s2}{\PYZdq{}}\PY{p}{)} 474 \PY{n+nb}{print}\PY{p}{(}\PY{n}{latex}\PY{p}{(}\PY{n}{M}\PY{p}{)}\PY{p}{)} 475 \end{Verbatim} 476 \end{tcolorbox} 477 478 \begin{Verbatim}[commandchars=\\\{\}] 479 1 + 1 x + \textbackslash{}frac\{1\}\{2\} x\^{}\{2\} + \textbackslash{}frac\{1\}\{6\} x\^{}\{3\} + \textbackslash{}mathcal\{O\}\textbackslash{}left(x\^{}\{4\}\textbackslash{}right) 480 481 482 \textbackslash{}left(\textbackslash{}begin\{array\}\{rrr\} 483 1 \& 2 \& 3 \textbackslash{}\textbackslash{} 484 4 \& 5 \& 6 \textbackslash{}\textbackslash{} 485 8 \& 9 \& 10 486 \textbackslash{}end\{array\}\textbackslash{}right) 487 \end{Verbatim} 488 489 Interestingly, Sage can use matplotlib's PGF backend to generate Latex 490 code for a plot. (PGF is the graphics language underlying TikZ, like TeX 491 is the language underlying Latex). 492 493 \begin{tcolorbox}[breakable, size=fbox, boxrule=1pt, pad at break*=1mm,colback=cellbackground, colframe=cellborder] 494 \prompt{In}{incolor}{15}{\boxspacing} 495 \begin{Verbatim}[commandchars=\\\{\}] 496 \PY{c+c1}{\PYZsh{}latex(plot(x\PYZca{}2)) \PYZsh{} The output is more than 20 pages long} 497 \end{Verbatim} 498 \end{tcolorbox} 499 500 It is probably easier to just generate the picture and include that in 501 your Latex document with \texttt{\textbackslash{}includegraphics}. 502 503 \hypertarget{a-latex-name-for-your-variables}{% 504 \subsection{A Latex name for your 505 variables}\label{a-latex-name-for-your-variables}} 506 507 \textbf{Reference:} 508 {[}\href{https://doc.sagemath.org/html/en/reference/calculus/sage/calculus/var.html}{3}{]} 509 510 Sometimes you might want to use variables and functions that have, for 511 example, a Greek letter as a name. You can tell Sage that you want them 512 displayed this way when you declare them: 513 514 \begin{tcolorbox}[breakable, size=fbox, boxrule=1pt, pad at break*=1mm,colback=cellbackground, colframe=cellborder] 515 \prompt{In}{incolor}{16}{\boxspacing} 516 \begin{Verbatim}[commandchars=\\\{\}] 517 \PY{n}{var}\PY{p}{(}\PY{l+s+s1}{\PYZsq{}}\PY{l+s+s1}{epsilon}\PY{l+s+s1}{\PYZsq{}}\PY{p}{,} \PY{n}{latex\PYZus{}name}\PY{o}{=}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+se}{\PYZbs{}\PYZbs{}}\PY{l+s+s2}{varepsilon}\PY{l+s+s2}{\PYZdq{}}\PY{p}{)} 518 \PY{n}{function}\PY{p}{(}\PY{l+s+s1}{\PYZsq{}}\PY{l+s+s1}{phi1}\PY{l+s+s1}{\PYZsq{}}\PY{p}{,} \PY{n}{latex\PYZus{}name}\PY{o}{=}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+se}{\PYZbs{}\PYZbs{}}\PY{l+s+s2}{phi\PYZus{}1}\PY{l+s+s2}{\PYZdq{}}\PY{p}{)} 519 520 \PY{n+nb}{print}\PY{p}{(}\PY{n}{phi1}\PY{p}{(}\PY{n}{epsilon}\PY{p}{)}\PY{p}{)} 521 \PY{n}{show}\PY{p}{(}\PY{n}{phi1}\PY{p}{(}\PY{n}{epsilon}\PY{p}{)} \PY{o}{+} \PY{n}{e}\PY{o}{\PYZca{}}\PY{n}{epsilon}\PY{p}{)} 522 \PY{n}{latex}\PY{p}{(}\PY{n}{phi1}\PY{p}{(}\PY{n}{epsilon}\PY{p}{)} \PY{o}{+} \PY{n}{e}\PY{o}{\PYZca{}}\PY{n}{epsilon}\PY{p}{)} 523 \end{Verbatim} 524 \end{tcolorbox} 525 526 \begin{Verbatim}[commandchars=\\\{\}] 527 phi1(epsilon) 528 \end{Verbatim} 529 530 \begin{math} 531 \newcommand{\Bold}[1]{\mathbf{#1}}e^{{\varepsilon}} + \phi_1\left({\varepsilon}\right) 532 \end{math} 533 534 535 \begin{tcolorbox}[breakable, size=fbox, boxrule=.5pt, pad at break*=1mm, opacityfill=0] 536 \prompt{Out}{outcolor}{16}{\boxspacing} 537 \begin{Verbatim}[commandchars=\\\{\}] 538 e\^{}\{\{\textbackslash{}varepsilon\}\} + \textbackslash{}phi\_1\textbackslash{}left(\{\textbackslash{}varepsilon\}\textbackslash{}right) 539 \end{Verbatim} 540 \end{tcolorbox} 541 542 \textbf{Warning:} You need to use two backspaces 543 \texttt{\textbackslash{}\textbackslash{}}. The reason is that in Python 544 (like in many other programming languages) the backslash symbol inside a 545 string is used to print special characters, such as a newline 546 \texttt{\textbackslash{}n}. 547 548 \hypertarget{from-jupyter-to-latex}{% 549 \section{From Jupyter to Latex}\label{from-jupyter-to-latex}} 550 551 \textbf{Reference:} 552 {[}\href{https://nbconvert.readthedocs.io/en/latest/}{4}{]} 553 554 From the Jupyter menu \texttt{File\ \textgreater{}\ Download\ as} you 555 can choose to download your work in many formats, among which there are 556 also Latex and pdf. Personally I prefer downloading the .tex file, so 557 then I can change the title, add an author name and make any other 558 change I like before compiling it into a pdf file. 559 560 If you choose to download the pdf file, you might need to install some 561 extra packages. For example I had to install 562 \href{https://pandoc.org/}{\texttt{pandoc}}, \texttt{texlive-XeTeX} and 563 \texttt{texlive-Xdvi}, but this depends on your operating system and 564 Latex distribution. 565 566 \hypertarget{sagetex}{% 567 \section{SageTex}\label{sagetex}} 568 569 \textbf{Reference:} 570 {[}\href{https://doc.sagemath.org/html/en/tutorial/sagetex.html}{5}{]} 571 572 With SageTex it is possible to run Sage commands directly inside Latex, 573 using the \texttt{\textbackslash{}sage\{\}} command. In this way you 574 don't need to run your Sage code first and then copy the results in 575 Latex. It can be useful especially for short Sage commands. 576 577 You might need to take some extra steps to make this work on your 578 system, see the link above. 579 580 \hypertarget{the-latex-listings-package}{% 581 \section{\texorpdfstring{The Latex \texttt{listings} 582 package}{The Latex listings package}}\label{the-latex-listings-package}} 583 584 \textbf{References:} 585 {[}\href{https://en.wikibooks.org/wiki/LaTeX/Source_Code_Listings}{6}{]} 586 and 587 {[}\href{https://ftp.snt.utwente.nl/pub/software/tex/macros/latex/contrib/listings/listings.pdf}{7}{]} 588 589 If you want to include some code (Sage, Python or anything else) in a 590 Latex document you can use the listings package. 591 592 \begin{verbatim} 593 \usepackage{listings} 594 595 ... 596 597 \begin{lstlisting}[language=Python] 598 for i in range(0,100): 599 if i%5 == 0: 600 print("Multiple of 5!") 601 \end{lstlisting} 602 \end{verbatim} 603 604 You need to specify the language you are using with the 605 \texttt{language=} option. This option can also be set at the beginning 606 of the document using the 607 \texttt{\textbackslash{}lstset\{language=Python\}} command. 608 609 As an alternative, you can include a file directly without copying the 610 code into the tex file, like you would do for a picture: 611 612 \begin{verbatim} 613 \lstinputlisting[language=Python]{file.py} 614 \end{verbatim} 615 616 It is technically possible to include Latex listings in a markdown cell 617 of the Jupyter notebook using 618 \href{https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/nbextensions/latex_envs/README.html}{this 619 package}, but it does not make much sense. So we will move to a Latex 620 editor for the examples. 621 622 \begin{tcolorbox}[breakable, size=fbox, boxrule=1pt, pad at break*=1mm,colback=cellbackground, colframe=cellborder] 623 \prompt{In}{incolor}{ }{\boxspacing} 624 \begin{Verbatim}[commandchars=\\\{\}] 625 626 \end{Verbatim} 627 \end{tcolorbox} 628 629 630 % Add a bibliography block to the postdoc 631 632 633 634 \end{document}