202 lines
6.3 KiB
TeX
202 lines
6.3 KiB
TeX
%% Copyright (C) 2017-2018 Achim D. Brucker, https://www.brucker.ch
|
|
%%
|
|
%% License:
|
|
%% This program can be redistributed and/or modified under the terms
|
|
%% of the LaTeX Project Public License Distributed from CTAN
|
|
%% archives in directory macros/latex/base/lppl.txt; either
|
|
%% version 1.3c of the License, or (at your opinion) any later version.
|
|
%% OR
|
|
%% The 2-clause BSD-style license.
|
|
%%
|
|
%% SPDX-License-Identifier: LPPL-1.3c+ OR BSD-2-Clause
|
|
\NeedsTeXFormat{LaTeX2e}
|
|
\ProvidesPackage{lh-listings}
|
|
[2016/09/10 v0.0 The LogicalHacking Listings Style.]
|
|
\RequirePackage{listings}
|
|
|
|
\ProcessOptions\relax
|
|
|
|
\lstloadlanguages{Java, C, HTML, OCL, TeX, SH, Ruby, SQL}
|
|
|
|
|
|
|
|
\newenvironment{btHighlight}[1][]
|
|
{\begingroup\tikzset{bt@Highlight@par/.style={#1}}\begin{lrbox}{\@tempboxa}}
|
|
{\end{lrbox}\bt@HL@box[bt@Highlight@par]{\@tempboxa}\endgroup}
|
|
|
|
\newcommand\btHL[1][]{%
|
|
\begin{btHighlight}[#1]\bgroup\aftergroup\bt@HL@endenv%
|
|
}
|
|
\def\bt@HL@endenv{%
|
|
\end{btHighlight}%
|
|
\egroup
|
|
}
|
|
\newcommand{\bt@HL@box}[2][]{%
|
|
\tikz[#1]{%
|
|
\pgfpathrectangle{\pgfpoint{1pt}{0pt}}{\pgfpoint{\wd #2}{\ht #2}}%
|
|
\pgfusepath{use as bounding box}%
|
|
\node[anchor=base west, fill=orange!30,outer sep=0pt,inner xsep=1pt, inner ysep=0pt, rounded corners=3pt, minimum height=\ht\strutbox+1pt,#1]{\raisebox{1pt}{\strut}\strut\usebox{#2}};
|
|
}%
|
|
}
|
|
|
|
|
|
|
|
|
|
\lstdefinestyle{sh}{language=sh,
|
|
basicstyle=\ttfamily,
|
|
commentstyle=\itshape,
|
|
keywordstyle=\color{blue},
|
|
ndkeywordstyle=\color{blue},
|
|
}
|
|
\lstdefinestyle{displaysh}{style=sh,
|
|
basicstyle=\ttfamily\footnotesize,
|
|
backgroundcolor=\color{black!4}, frame=lines,
|
|
framexleftmargin=5pt}%
|
|
|
|
\lstnewenvironment{sh}[1][]{\lstset{style=displaysh, #1}}{}
|
|
\def\inlinesh{\lstinline[style=sh, columns=fullflexible]}
|
|
|
|
\lstdefinestyle{java}{language=Java,
|
|
basicstyle=\ttfamily,
|
|
commentstyle=\itshape,
|
|
keywordstyle=\color{blue},
|
|
ndkeywordstyle=\color{blue},
|
|
moredelim=**[is][{\btHL[fill=green!30,draw=red,dashed,thin]}]{@}{@}
|
|
}
|
|
\lstdefinestyle{displayjava}{style=java,
|
|
basicstyle=\ttfamily\footnotesize,
|
|
backgroundcolor=\color{black!2}, frame=lines}%
|
|
|
|
\lstnewenvironment{java}[1][]{\lstset{style=displayjava, #1}}{}
|
|
\def\inlinejava{\lstinline[style=java, columns=fullflexible]}
|
|
|
|
\lstdefinestyle{ruby}{language=Ruby,
|
|
basicstyle=\ttfamily,
|
|
commentstyle=\itshape,
|
|
keywordstyle=\color{blue},
|
|
ndkeywordstyle=\color{blue},
|
|
}
|
|
\lstdefinestyle{displayruby}{style=ruby,
|
|
basicstyle=\ttfamily\footnotesize,
|
|
backgroundcolor=\color{black!2}, frame=lines}%
|
|
|
|
\lstnewenvironment{ruby}[1][]{\lstset{style=displayruby, #1}}{}
|
|
\def\inlineruby{\lstinline[style=ruby, columns=fullflexible]}
|
|
|
|
\lstdefinestyle{sql}{language=SQL,
|
|
basicstyle=\ttfamily,
|
|
commentstyle=\itshape,
|
|
keywordstyle=\color{blue},
|
|
ndkeywordstyle=\color{blue},
|
|
}
|
|
\lstdefinestyle{displaysql}{style=sql,
|
|
basicstyle=\ttfamily\footnotesize,
|
|
backgroundcolor=\color{black!2}, frame=lines}%
|
|
|
|
\lstnewenvironment{sql}[1][]{\lstset{style=displaysql, #1}}{}
|
|
\def\inlinesql{\lstinline[style=sql, columns=fullflexible]}
|
|
|
|
\lstdefinestyle{c}{language=C,
|
|
basicstyle=\ttfamily,
|
|
commentstyle=\itshape,
|
|
keywordstyle=\color{lhOrange},
|
|
ndkeywordstyle=\color{lhCyan},
|
|
}
|
|
|
|
\lstdefinestyle{displayc}{style=c,
|
|
basicstyle=\ttfamily\footnotesize,
|
|
backgroundcolor=\color{black!4}, frame=lines,
|
|
numbers=left, numberstyle=\tiny,framexleftmargin=5pt}%
|
|
|
|
\lstnewenvironment{C}[1][]{\lstset{style=displayc, #1}}{}
|
|
\def\inlineC{\lstinline[style=c, columns=fullflexible]}
|
|
|
|
|
|
\lstdefinestyle{ltx}{language=[LaTeX]TeX,
|
|
basicstyle=\ttfamily,
|
|
commentstyle=\itshape,
|
|
keywordstyle=\color{blue},
|
|
ndkeywordstyle=\color{blue},
|
|
}
|
|
\lstdefinestyle{displayltx}{style=ltx,
|
|
basicstyle=\ttfamily\footnotesize,
|
|
backgroundcolor=\color{black!2}, frame=lines}%
|
|
|
|
\lstnewenvironment{ltx}[1][]{\lstset{style=displayltx, #1}}{}
|
|
\def\inlineltx{\lstinline[style=ltx, columns=fullflexible]}
|
|
|
|
|
|
\lstdefinestyle{html}{language=XML,
|
|
basicstyle=\ttfamily,
|
|
commentstyle=\itshape,
|
|
keywordstyle=\color{blue},
|
|
ndkeywordstyle=\color{blue},
|
|
}
|
|
\lstdefinestyle{displayhtml}{style=html,
|
|
floatplacement={tbp}, captionpos=b, framexleftmargin=0pt,
|
|
basicstyle=\ttfamily\scriptsize,
|
|
backgroundcolor=\color{black!2}, frame=lines,
|
|
% numbers=left, numberstyle=\tiny, stepnumber=5
|
|
}
|
|
|
|
\lstnewenvironment{html}[1][]{\lstset{style=displayhtml, #1}}{}
|
|
\def\inlinehtml{\lstinline[style=html, columns=fullflexible]}
|
|
|
|
\lstdefinelanguage{AnB}{
|
|
keywords={Protocol, Types, Agent, Number, Function, Knowledge, Actions,
|
|
Goals, Symmetric_key},
|
|
keywordstyle=\color{lhOrange},
|
|
ndkeywords={inv},
|
|
ndkeywordstyle=\color{lhCyan},
|
|
%identifierstyle=\color{black},
|
|
sensitive=false,
|
|
escapeinside={\%*}{*)},
|
|
comment=[l]{\#},
|
|
%morecomment=[s]{/*}{*/},
|
|
commentstyle=\color{purple}\ttfamily,
|
|
%stringstyle=\color{red}\ttfamily,
|
|
%morestring=[b]',
|
|
%morestring=[b]"
|
|
}
|
|
|
|
\lstdefinestyle{AnB}{language=AnB,
|
|
basicstyle=\small\ttfamily,
|
|
}
|
|
\lstnewenvironment{AnB}[1][]{\lstset{style=AnB, #1}}{}
|
|
\def\inlineAnB{\lstinline[style=AnB, columns=fullflexible]}
|
|
|
|
\lstdefinelanguage{JavaScript}{
|
|
keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break},
|
|
keywordstyle=\color{blue}\bfseries,
|
|
ndkeywords={class, export, boolean, throw, implements, import, this},
|
|
ndkeywordstyle=\color{darkgray}\bfseries,
|
|
identifierstyle=\color{black},
|
|
sensitive=false,
|
|
comment=[l]{//},
|
|
morecomment=[s]{/*}{*/},
|
|
commentstyle=\color{purple}\ttfamily,
|
|
stringstyle=\color{red}\ttfamily,
|
|
morestring=[b]',
|
|
morestring=[b]"
|
|
}
|
|
|
|
\lstdefinestyle{js}{language=JavaScript,
|
|
basicstyle=\ttfamily,
|
|
commentstyle=\itshape,
|
|
keywordstyle=\color{blue},
|
|
ndkeywordstyle=\color{blue},
|
|
moredelim=**[is][{\btHL[fill=green!30,draw=red,dashed,thin]}]{@}{@},
|
|
}
|
|
|
|
\lstdefinestyle{displayjs}{style=js,
|
|
floatplacement={tbp}, captionpos=b, framexleftmargin=0pt,
|
|
basicstyle=\ttfamily\scriptsize,
|
|
backgroundcolor=\color{black!2}, frame=lines,
|
|
% numbers=left, numberstyle=\tiny, stepnumber=5
|
|
}
|
|
|
|
\lstnewenvironment{js}[1][]{\lstset{style=displayjs, #1}}{}
|
|
\def\inlinejs{\lstinline[style=js, columns=fullflexible]}
|
|
|
|
\endinput
|