styles/langs.sty
author Christian Urban <christian.urban@kcl.ac.uk>
Mon, 10 Nov 2025 11:04:33 +0000
changeset 493 f7c84bfa3cee
permissions -rw-r--r--
updated
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
493
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     1
\usepackage{listings}
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     2
\usepackage{etoolbox}
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     3
\setmonofont[Scale=.95]{Consolas}
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     4
\newfontfamily{\consolas}{Consolas}
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     5
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     6
\makeatletter
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     7
\let\old@lstKV@SwitchCases\lstKV@SwitchCases
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     8
\def\lstKV@SwitchCases#1#2#3{}
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     9
\makeatother
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    10
\usepackage{lstlinebgrd}
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    11
\makeatletter
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    12
\let\lstKV@SwitchCases\old@lstKV@SwitchCases
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    13
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    14
\lst@Key{numbers}{none}{%
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    15
    \def\lst@PlaceNumber{\lst@linebgrd}%
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    16
    \lstKV@SwitchCases{#1}%
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    17
    {none:\\%
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    18
     left:\def\lst@PlaceNumber{\llap{\normalfont
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    19
                \lst@numberstyle{\thelstnumber}\kern\lst@numbersep}\lst@linebgrd}\\%
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    20
     right:\def\lst@PlaceNumber{\rlap{\normalfont
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    21
                \kern\linewidth \kern\lst@numbersep
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    22
                \lst@numberstyle{\thelstnumber}}\lst@linebgrd}%
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    23
    }{\PackageError{Listings}{Numbers #1 unknown}\@ehc}}
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    24
\makeatother
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    25
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    26
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    27
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    28
\definecolor{codered}{rgb}{0.6,0,0}            % for strings
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    29
\definecolor{codegreen}{rgb}{0.25,0.5,0.35}    % comments
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    30
\definecolor{codepurple}{rgb}{0.5,0,0.35}      % keywords
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    31
\definecolor{codedocblue}{rgb}{0.25,0.35,0.75} % doc
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    32
\definecolor{codeblue}{rgb}{0.25,0.35,0.75}    % types
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    33
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    34
\BeforeBeginEnvironment{lstlisting}{\par\noindent\begin{minipage}{\linewidth}}
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    35
\AfterEndEnvironment{lstlisting}{\end{minipage}\par}
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    36
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    37
\lstdefinelanguage{Scala}{
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    38
  morekeywords={abstract,case,catch,class,def,%
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    39
    do,else,extends,false,final,finally,%
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    40
    for,if,implicit,import,match,mixin,%
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    41
    new,null,object,override,package,%
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    42
    private,protected,requires,return,sealed,%
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    43
    super,this,throw,trait,then,true,try,%
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    44
    type,val,var,while,with,yield,write,read},%
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    45
  otherkeywords={=>,<-,<\%,<:,>:,\#},%
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    46
  sensitive=true,%
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    47
  %directives={Int,Char,Rexp,String,Boolean,BigInt,Unit,List,Set},%
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    48
  %moredelim=*[directive]:,%
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    49
  morecomment=[l]{//},%
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    50
  morecomment=[n]{/*}{*/},
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    51
  morestring=[s]{"""}{"""},
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    52
  morestring=[b]",
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    53
  morestring=[b]',
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    54
}[keywords,comments,strings]
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    55
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    56
\lstdefinelanguage{While}{
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    57
  morekeywords={if,then,else,while,do,true,false,write,upto,read,for,skip},
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    58
  morecomment=[l]{//},
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    59
  morecomment=[n]{/*}{*/},
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    60
  morestring=[b]",
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    61
  otherkeywords={=,!=,:=,<,>,\%;*,/},
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    62
}[keywords,comments,strings]
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    63
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    64
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    65
\newcommand{\code}[1]{{\lstinline{#1}}}
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    66
\newcommand{\pcode}[1]{\mbox{\lstset{language={},keywordstyle=\color{black}}\lstinline!#1!}}
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    67
\newcommand{\scode}[1]{\mbox{\lstset{language={},basicstyle=\ttfamily\color{codegreen}}\lstinline!#1!}}
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    68
\makeatother
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    69
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    70
%%\lstset{escapeinside={(*@}{@*)}}
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    71
\lstset{escapeinside={/*@}{@*/}}
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    72
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    73
%% stripy code
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    74
\usepackage{lstlinebgrd}
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    75
\definecolor{capri}{rgb}{0.0, 0.75, 1.0}
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    76
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    77
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    78
\lstdefinestyle{mystyle}
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    79
       {basicstyle=\ttfamily,
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    80
	keywordstyle=\color{codepurple}\bfseries,
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    81
	stringstyle=\color{codegreen},
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    82
	commentstyle=\color{codegreen},
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    83
	morecomment=[s][\color{codedocblue}]{/**}{*/},
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    84
	numbers=none,
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    85
	numberstyle=\tiny\color{black},
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    86
	stepnumber=1,
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    87
	numbersep=10pt,
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    88
	tabsize=2,
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    89
	showspaces=false,
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    90
	showstringspaces=false,
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    91
        xleftmargin=8mm,
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    92
        emphstyle=\color{codeblue}\bfseries,
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    93
        keepspaces,
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    94
        linebackgroundcolor={\ifodd\value{lstnumber}\color{capri!3}\fi}
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    95
}
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    96
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    97
\lstset{language=Scala,
f7c84bfa3cee updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    98
        style=mystyle}