Problemas recientes con el paquete lstlinebgrd con listados después de la actualización de este último

Problemas recientes con el paquete lstlinebgrd con listados después de la actualización de este último

Esta pregunta es una continuación de la anterior.preguntaen el que se ha modificado para incluir el color de fondo junto con linebackgroundel color en unas pocas líneas de código. MWE se proporciona a continuación:

\documentclass{beamer}

\usepackage{listings, pgffor}

\makeatletter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % \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}}{}}%
}%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % \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}}
\makeatother

\begin{document}

\begin{frame}[fragile]{Problem}
Test programme:
\begin{lstlisting}[%
    language=C, 
    gobble=4, 
%   linebackgroundcolor={%
%       \btLstHL<1>{1,3,5-6}%
%       \btLstHL<2>{4}%
%   },
    backgroundcolor=\color{gray!10}
]
    #include <stdio.h>

    int main(void) {%
    printf("Hello World!");  
        return 0;
    }
\end{lstlisting}
\end{frame}
\end{document}

Este MWE [excepto la clave de color de fondo] fue proporcionado por@moewe. Ahora, cuando uso ambas teclas: linebackgroundcolory backgroundcolor, la opción de color backgroundcolordeja de funcionar. Intenté comunicarme con el autor del paquete pero no lo logré. Cualquier sugerencia para solucionarlo, por favor.

Respuesta1

El color de fondo funciona bien en principio, el problema es que la macro de resaltado no solo rellena las líneas para resaltar, sino que rellena todas las demás líneas con blanco y, por lo tanto, cubre el fondo gris.

Como solución alternativa, puede ajustar \btLstHLcomo en el siguiente ejemplo:

\documentclass{beamer}

\usepackage{listings, pgffor}

\makeatletter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % \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}}{\color{gray!20}}}%
}%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % \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}}
\makeatother

\begin{document}

\begin{frame}[fragile]{Problem}
Test programme:
\begin{lstlisting}[%
    language=C, 
    gobble=4, 
   linebackgroundcolor={%
       \btLstHL<1>{1,3,5-6}%
       \btLstHL<2>{4}%
   },
    backgroundcolor=\color{gray!20}
]
    #include <stdio.h>

    int main(void) {%
    printf("Hello World!");  
        return 0;
    }
\end{lstlisting}
\end{frame}
\end{document}

ingrese la descripción de la imagen aquí

información relacionada