Hi, On Wed, Aug 10, 2011 at 5:17 PM, Matthew Brett <matthew.br...@gmail.com> wrote: > 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.
It looks like this conversation dried up, so I've moved it to a ticket: http://projects.scipy.org/numpy/ticket/1935 Best, Matthew _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion