%20e%20listagem%3F.png)
Com o MWE abaixo (adaptado deaqui), como faço para aumentar a margem interna na listagem para que ao invés de ficar assim:
Fica assim (observe que o fundo cinza foi um pouco "esticado"):
Eu tentei mexer com framextopmargin
, belowcaptionskip
etc, mas não parece funcionar com ointernomargem.
\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}
Responder1
Parece que é necessário haver uma linha de moldura na parte superior para framextopmargin
causar algum impacto. Com exceção de uma fina linha preta entre a legenda e o próprio quadro, isso é exatamente o que você pediu:
\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:
Possíveis soluções para o problema da “linha preta”:
Para remover ambas as linhas pretas e torná-las "invisíveis", basta adicionar uma
rulecolor
palavra-chave à configuração do estilo de listagem:rulecolor=\color[RGB]{200,200,200},
Para realmente remover a linha superior para que ela não seja impressa, mas manter a linha inferior, você deseja mantê-la
frame=bt
(já que isso é necessário para o espaçamento), mas adicione o seguinte ao preâmbulo após as configurações de estilo para definir a largura da regra para 0 apenas para quadros "Principais":\usepackage{etoolbox} \makeatletter \patchcmd{\lst@frameh}{\color@begingroup}{\color@begingroup\if#2T\let\lst@framerulewidth\z@ \fi}{}{} \makeatother
Dessas duas soluções, eu pessoalmente preferiria a primeira, pois não acho que a única linha preta na parte inferior seja tão atraente visualmente.