On Wed, Aug 10, 2011 at 6:17 PM, Matthew Brett <matthew.br...@gmail.com> wrote: > Hi, > > On Wed, Aug 10, 2011 at 12:38 PM, Skipper Seabold <jsseab...@gmail.com> wrote: >> On Wed, Aug 10, 2011 at 3:28 PM, Matthew Brett <matthew.br...@gmail.com> >> wrote: >>> Hi, >>> >>> I think this one might be for Pauli. >>> >>> I've run into an odd problem that seems to be an interaction of >>> numpydoc and autosummary and large classes. >>> >>> In summary, large classes and numpydoc lead to large tables of class >>> methods, and there seems to be an error in the creation of the large >>> tables in latex. >>> >>> Specifically, if I run 'make latexpdf' with the attached minimal >>> sphinx setup, I get a pdflatex error ending thus: >>> >>> ... >>> l.118 \begin{longtable}{LL} >>> >>> and this is because longtable does not accept LL as an argument, but >>> needs '|l|l|' (bar - el - bar - el - bar). >>> >>> I see in sphinx.writers.latex.py, around line 657, that sphinx knows >>> about this in general, and long tables in standard ReST work fine with >>> the el-bar arguments passed to longtable. >>> >>> if self.table.colspec: >>> self.body.append(self.table.colspec) >>> else: >>> if self.table.has_problematic: >>> colwidth = 0.95 / self.table.colcount >>> colspec = ('p{%.3f\\linewidth}|' % colwidth) * \ >>> self.table.colcount >>> self.body.append('{|' + colspec + '}\n') >>> elif self.table.longtable: >>> self.body.append('{|' + ('l|' * self.table.colcount) + '}\n') >>> else: >>> self.body.append('{|' + ('L|' * self.table.colcount) + '}\n') >>> >>> However, using numpydoc and autosummary (see the conf.py file), what >>> seems to happen is that, when we reach the self.table.colspec test at >>> the beginning of the snippet above, 'self.table.colspec' is defined: >>> >>> In [1]: self.table.colspec >>> Out[1]: '{LL}\n' >>> >>> and thus the LL gets written as the arg to longtable: >>> >>> \begin{longtable}{LL} >>> >>> and the pdf build breaks. >>> >>> I'm using the numpydoc out of the current numpy source tree. >>> >>> At that point I wasn't sure how to proceed with debugging. Can you >>> give any hints? >>> >> >> It's not a proper fix, but our workaround is to edit the Makefile for >> latex (and latexpdf) to >> >> https://github.com/statsmodels/statsmodels/blob/master/scikits/statsmodels/docs/Makefile#L94 >> https://github.com/statsmodels/statsmodels/blob/master/scikits/statsmodels/docs/make.bat#L121 >> >> to call the script to replace the longtable arguments >> >> https://github.com/statsmodels/statsmodels/blob/master/scikits/statsmodels/docs/fix_longtable.py >> >> The workaround itself probably isn't optimal, and I'd be happy to hear >> of a proper fix. > > Thanks - yes - I found your workaround in my explorations, I put in a > version in our tree too: > > https://github.com/matthew-brett/nipy/blob/latex_build_fixes/tools/fix_longtable.py > > - but I agree it seems much better to get to the root cause.
When I tried to figure this out, I never found out why the correct sphinx longtable code path never gets reached, or which code (numpydoc, autosummary or sphinx) is filling in the colspec. Josef > > See you, > > Matthew > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion > _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion