2015-03-17 4 views
0

Я хочу использовать красиво отформатированную подпись для моих объявлений, как предложено в LaTeX source code listing like in professional books. Кроме того, контент должен быть обрамлен.Список и подпись LaTex - Как точно выровнять рамку

\documentclass{report} 

\usepackage{color} 
\usepackage{xcolor} 
\usepackage{listings} 

\usepackage{caption} 
\DeclareCaptionFont{white}{\color{white}} 
\DeclareCaptionFormat{listing}{\colorbox{gray}{\parbox{\textwidth}{#1#2#3}}} 
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white} 

\lstdefinestyle{framed} 
{ 
    frame=lrb,   
    belowcaptionskip=-1pt, 
    xleftmargin=8pt, 
    framexleftmargin=8pt, 
    framexrightmargin=5pt, 
    framextopmargin=5pt, 
    framexbottommargin=5pt, 
    framesep=0pt, 
    rulesep=0pt, 
} 

\begin{document} 

\begin{lstlisting}[style=framed,label=some-code,caption=Some Code] 
public void here() { 
    goes().the().code() 
} 
\end{lstlisting} 

\end{document} 

Результаты в: Result

Как вы можете ясно видеть, рама смещена примерно на 1px влево. Масштабирование приводит меня к выводу, что это соответствует граничным настройкам самой надписи. Однако я не могу найти никакой информации о том, как настроить границу с помощью \ captionsetup.

Любые идеи, как решить эту проблему, очень ценятся.

ответ

0

Кто-то дал мне большую подсказку, просто нужно немного переместить окно заголовка влево вручную:

DeclareCaptionFont{white}{\color{white}} 
\DeclareCaptionFormat{listing}{% 
    \hspace*{-0.4pt}\colorbox{gray}{\parbox{\dimexpr\textwidth-2\fboxsep+.8pt\relax}{#1#2#3}}} 
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white}