%20y%20el%20listado%3F.png)
Con el MWE a continuación (adaptado deaquí), ¿cómo aumento el margen interno en el listado para que en lugar de verse así:
Se ve así (tenga en cuenta que el fondo gris se ha "estirado" un poco):
He intentado jugar con framextopmargin
, belowcaptionskip
etc. pero no parece funcionar con elinternomargen.
\documentclass{article}
\usepackage[svgnames]{xcolor}
\usepackage{caption}
\usepackage{listings}
\usepackage{calc}
\lstdefinestyle{outline}{
basicstyle=\scriptsize\ttfamily,
numberstyle=\tiny,
numbersep=5pt,
tabsize=2,
extendedchars=true,
breaklines=true,
keywordstyle=\color{blue},
frame=b,
stringstyle=\color{green!40!black}\ttfamily,
showspaces=false,
showtabs=false,
numbers=left,
xleftmargin=17pt,
framexleftmargin=17pt,
showstringspaces=false,
backgroundcolor=\color[RGB]{200,200,200},
belowcaptionskip=-1pt
}
\DeclareCaptionFont{white}{\color{white}}
\DeclareCaptionFormat{listing}{\colorbox[RGB]{60,100,180}{\parbox{\textwidth - 2 \fboxsep}{\hspace{14pt}#1#2#3}}}
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white, singlelinecheck=false, margin=0pt, font={bf,footnotesize}}
\begin{document}
\begin{lstlisting}[style=outline,caption=Test]
First line.
Second line.
\end{lstlisting}
\end{document}
Respuesta1
Parece que es necesario que haya una línea de marco en la parte superior para framextopmargin
que tenga algún impacto. Con la excepción de una delgada línea negra entre el título y el marco, esto es exactamente lo que pediste:
\documentclass{article}
\usepackage[svgnames]{xcolor}
\usepackage{caption}
\usepackage{listings}
\usepackage{calc}
\lstdefinestyle{outline}{
basicstyle=\scriptsize\ttfamily,
numberstyle=\tiny,
numbersep=5pt,
tabsize=2,
extendedchars=true,
breaklines=true,
keywordstyle=\color{blue},
frame=bt, % <<<<<<<<<<<<<<<<<<<<<<<<<<
stringstyle=\color{green!40!black}\ttfamily,
showspaces=false,
showtabs=false,
numbers=left,
xleftmargin=17pt,
framexleftmargin=17pt,
framextopmargin=1pt, % <<<<<<<<<<<<<<<<<<<<<<
showstringspaces=false,
backgroundcolor=\color[RGB]{200,200,200},
belowcaptionskip=0pt
}
\DeclareCaptionFont{white}{\color{white}}
\DeclareCaptionFormat{listing}{\colorbox[RGB]{60,100,180}{\parbox{\textwidth - 2 \fboxsep}{\hspace{14pt}#1#2#3}}}
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white, singlelinecheck=false, margin=0pt, font={bf,footnotesize}}
\begin{document}
\begin{lstlisting}[style=outline,caption=Test]
First line.
Second line.
\end{lstlisting}
\end{document}
Editar:
Posibles soluciones al problema de la "línea negra":
Para eliminar ambas líneas negras para que sean "invisibles", simplemente puede agregar una
rulecolor
palabra clave a la configuración del estilo del listado:rulecolor=\color[RGB]{200,200,200},
Para eliminar realmente la línea superior para que no se imprima, pero mantenga la línea inferior, desea conservarla
frame=bt
(ya que esto es necesario para el espaciado), pero agregue lo siguiente al preámbulo después de la configuración de estilo para establecer el ancho de la regla en 0 solo para fotogramas "superiores":\usepackage{etoolbox} \makeatletter \patchcmd{\lst@frameh}{\color@begingroup}{\color@begingroup\if#2T\let\lst@framerulewidth\z@ \fi}{}{} \makeatother
De estas dos soluciones, personalmente preferiría la primera, ya que no creo que la única línea negra en la parte inferior sea tan atractiva visualmente.