2

When I use the listings package with frame in my code the frame "breaks" when the page ends and it is open in the end of the page. I want the frame to be complete with four sides and continue in the next page again with all four frame sides complete. How can I do this? Why does the frame "breaks"?

enter image description here

8
  • This question appears to be off-topic because it is a feature request for the listings package.
    – jub0bs
    Apr 3, 2014 at 22:46
  • Why is this an off-topic question?
    – Adam
    Apr 3, 2014 at 22:51
  • Because it is essentially a feature request for the listings package, and, as such, not really fit for a question on this site. You would be better off contacting the maintainer of listings directly.
    – jub0bs
    Apr 3, 2014 at 22:53
  • You mean that there isn't already a way to do it and I must ask the maintainer to create that feature?
    – Adam
    Apr 3, 2014 at 22:54
  • 1
    @Jubobs I just did. But these two are similar and hence one of them may be marked as duplicate IMO.
    – user11232
    Apr 4, 2014 at 0:32

1 Answer 1

3

It is possible with tcolorbox.

\documentclass{article}
\usepackage{tcolorbox,listings}
\usepackage[textheight=2in]{geometry}
\lstdefinestyle{mystyle}{
     basicstyle=\ttfamily,
     numbers=left,
     numberstyle=\tiny,
     numbersep=5pt
 }
\tcbuselibrary{listings,skins,breakable}
\newtcblisting{mycode}{
      arc=0mm,
      top=0mm,
      bottom=0mm,
      left=3mm,
      right=0mm,
      width=\textwidth,
      boxrule=1pt,
      colback=blue!20,
      listing only,
      listing options={style=mystyle},
      breakable
}

\begin{document}
\begin{mycode}
abc def {

xyz




some 

again some

Some again
\end{mycode}
\end{document}

enter image description here

The advantage is, with tcolorbox, you can do lot of customisations.

6
  • Thank you for your answer! I will check if it solves my problem.
    – Adam
    Apr 3, 2014 at 23:07
  • I tried it and it works! The only "problem" is that you have to specify how big you want the box to be although I would prefer to adjust automatically with the length of the code.
    – Adam
    Apr 4, 2014 at 14:43
  • @Adam There is hbox option but it won't allow you to break across pages. You can try with varwidth and post a new question on that. :)
    – user11232
    Apr 4, 2014 at 14:45
  • I think that someone can use a box as long as the page for the worst case. This seem to solve the previous problem I mentioned!
    – Adam
    Apr 4, 2014 at 14:53
  • Also why there is space at the top and at the bottom of the box? How can I make it disappear?
    – Adam
    Apr 4, 2014 at 15:28

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .