mirror of
https://github.com/balkian/slides-intro-spark.git
synced 2024-11-21 11:52:28 +00:00
78 lines
2.5 KiB
TeX
78 lines
2.5 KiB
TeX
%% WORKAROUND lstlinebgrd: https://tex.stackexchange.com/questions/451532/recent-issues-with-lstlinebgrd-package-with-listings-after-the-latters-updates
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%
|
|
% \btIfInRange{number}{range list}{TRUE}{FALSE}
|
|
%
|
|
% Test if int number <number> is element of a (comma separated) list of ranges
|
|
% (such as: {1,3-5,7,10-12,14}) and processes <TRUE> or <FALSE> respectively
|
|
|
|
\newcount\bt@rangea
|
|
\newcount\bt@rangeb
|
|
|
|
\newcommand\btIfInRange[2]{%
|
|
\global\let\bt@inrange\@secondoftwo%
|
|
\edef\bt@rangelist{#2}%
|
|
\foreach \range in \bt@rangelist {%
|
|
\afterassignment\bt@getrangeb%
|
|
\bt@rangea=0\range\relax%
|
|
\pgfmathtruncatemacro\result{ ( #1 >= \bt@rangea) && (#1 <= \bt@rangeb) }%
|
|
\ifnum\result=1\relax%
|
|
\breakforeach%
|
|
\global\let\bt@inrange\@firstoftwo%
|
|
\fi%
|
|
}%
|
|
\bt@inrange%
|
|
}
|
|
\newcommand\bt@getrangeb{%
|
|
\@ifnextchar\relax%
|
|
{\bt@rangeb=\bt@rangea}%
|
|
{\@getrangeb}%
|
|
}
|
|
\def\@getrangeb-#1\relax{%
|
|
\ifx\relax#1\relax%
|
|
\bt@rangeb=100000% \maxdimen is too large for pgfmath
|
|
\else%
|
|
\bt@rangeb=#1\relax%
|
|
\fi%
|
|
}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%
|
|
% \btLstHL<overlay spec>{range list}
|
|
%
|
|
\newcommand<>{\btLstHL}[1]{%
|
|
% \only#2{\btIfInRange{\value{lstnumber}}{#1}{\color{blue!30}}{}}%
|
|
\only#2{\btIfInRange{\value{lstnumber}}{#1}{\color{orange!30}\def\lst@linebgrdcmd{\color@block}}{\def\lst@linebgrdcmd####1####2####3{}}}%
|
|
}%
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%
|
|
% \btInputEmph<overlay spec>[listing options]{range list}{file name}
|
|
%
|
|
\newcommand<>{\btLstInputEmph}[3][\empty]{%
|
|
\only#4{%
|
|
\lstset{linebackgroundcolor=\btLstHL{#2}}%
|
|
\lstinputlisting{#3}%
|
|
}% \only
|
|
}
|
|
|
|
\makeatletter
|
|
\let\old@lstKV@SwitchCases\lstKV@SwitchCases
|
|
\def\lstKV@SwitchCases#1#2#3{}
|
|
\makeatother
|
|
\usepackage{lstlinebgrd}
|
|
\makeatletter
|
|
\let\lstKV@SwitchCases\old@lstKV@SwitchCases
|
|
|
|
\lst@Key{numbers}{none}{%
|
|
\def\lst@PlaceNumber{\lst@linebgrd}%
|
|
\lstKV@SwitchCases{#1}%
|
|
{none:\\%
|
|
left:\def\lst@PlaceNumber{\llap{\normalfont
|
|
\lst@numberstyle{\thelstnumber}\kern\lst@numbersep}\lst@linebgrd}\\%
|
|
right:\def\lst@PlaceNumber{\rlap{\normalfont
|
|
\kern\linewidth \kern\lst@numbersep
|
|
\lst@numberstyle{\thelstnumber}}\lst@linebgrd}%
|
|
}{\PackageError{Listings}{Numbers #1 unknown}\@ehc}} |