Hi, On Wed, Aug 10, 2011 at 5:03 PM, <josef.p...@gmail.com> wrote: > 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.
No - it looked hard to debug. I established that it required numpydoc and autosummary to be enabled. See you, Matthew _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion