I'm using minted to highlight code. And I put that into a listing environment in order to get those numbered. By it self minted breaks code across pages. But when I put it into a listing, I get code on a separate page. Here's an MWE:
\documentclass{article}
\usepackage{minted}
\usepackage{lipsum}
\begin{document}
\lipsum[1-3]
\begin{listing}[H]
\begin{minted}{python}
# defs:
def fitfunc(p, coords):
x0, y0, z0, R = p
x, y, z = coords.T
return sqrt((x-x0)**2 + (y-y0)**2 + (z-z0)**2)
# initial fit values:
BeadsCenter = (Beads.coordinates().max(axis=0)
+ Beads.coordinates().min(axis=0)) / 2
BeadsInSwell = Beads.selectAtoms("point {0} {1} {2} {3}".format(
BeadsCenter[0], BeadsCenter[1], BeadsCenter[2],
args.radius))
MaxZ = (BeadsInSwell.coordinates().max(axis=0)[2])
MinZ = (BeadsInSwell.coordinates().min(axis=0)[2])
b = MaxZ - MinZ
MaxY = (BeadsInSwell.coordinates().max(axis=0)[1])
MinY = (BeadsInSwell.coordinates().min(axis=0)[1])
a = MaxY - MinY
R0 = (a**2 / 4 + b**2) / (2 * b)
x0, y0, z0 = (BeadsInSwell.coordinates().max(axis=0)
+ BeadsInSwell.coordinates().min(axis=0)) / 2.
z0 = MaxZ - R0
# data:
coords = BeadsInSwell.coordinates()
# initial fit paramters:
p0 = [x0, y0, z0, R0]
# fit:
errfunc = lambda p, x: fitfunc(p, x) - p[3]
p1, flag = leastsq(errfunc, p0, args=coords)
\end{minted}
\caption{Fit code (crucial part).\label{lst:fit}}
\end{listing}
\end{document}
I tried to put the listing environment in minipage, but it doesn't work.