+
+% Define a style for interactive sage prompt listings.
+\lstdefinelanguage{sage}{ keywords={sage} }
+\lstdefinestyle{sage}{
+ commentstyle=\color{brown},
+ keywordstyle=\color{brilliantlavender},
+ stringstyle=\color{brilliantgreen}
+}
+
+
+% Input a SageMath example code listing from a file. You generally
+% want these to be in separate files so that the build system can test
+% them automatically.
+%
+% The sole argument is the "name" of the listing, which ultimately
+% just identifies a file named "sage_listings/<name>.listing".
+\newtcbinputlisting{\sagelisting}[2][]{%
+ colback=codebg,%
+ coltext=codefg,%
+ enlarge bottom finally by=\baselineskip,%
+ enlarge top initially by=\baselineskip,%
+ left=2em,%
+ listing only,%
+ listing options={language=sage,style=sage},%
+ listing file=sage_listings/#2.listing,%
+ #1}
+
+\fi