diff options
author | Dimitri van Heesch <dimitri@stack.nl> | 2014-08-08 09:41:23 (GMT) |
---|---|---|
committer | Dimitri van Heesch <dimitri@stack.nl> | 2014-08-08 09:41:23 (GMT) |
commit | 3cb963061343aa5b3b8a044cdfa62848723a02ee (patch) | |
tree | 193ed644113de8d65b66e113b8c792e12404e8a8 /src | |
parent | 7a1196384f9124f872befea1249eaf9bb99924b5 (diff) | |
download | Doxygen-3cb963061343aa5b3b8a044cdfa62848723a02ee.zip Doxygen-3cb963061343aa5b3b8a044cdfa62848723a02ee.tar.gz Doxygen-3cb963061343aa5b3b8a044cdfa62848723a02ee.tar.bz2 |
Bug 732768 - nested html tables cause pdflatex to hang (1.8.4 and 1.8.6)
Diffstat (limited to 'src')
-rw-r--r-- | src/doxygen.sty | 10 | ||||
-rw-r--r-- | src/latexdocvisitor.cpp | 23 |
2 files changed, 27 insertions, 6 deletions
diff --git a/src/doxygen.sty b/src/doxygen.sty index 072104b..c423e12 100644 --- a/src/doxygen.sty +++ b/src/doxygen.sty @@ -434,6 +434,16 @@ }% {\end{xtabular*}\par}% +% Used by nested tables +\newenvironment{TabularNC}[1]% +{% +\setlength{\tmplength}% + {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)}% + \par\begin{tabular*}{\linewidth}% + {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|}% +}% +{\end{tabular*}\par}% + % Used for member group headers \newenvironment{Indent}{% \begin{list}{}{% diff --git a/src/latexdocvisitor.cpp b/src/latexdocvisitor.cpp index 0edb459..dd23d60 100644 --- a/src/latexdocvisitor.cpp +++ b/src/latexdocvisitor.cpp @@ -809,21 +809,32 @@ void LatexDocVisitor::visitPost(DocHtmlDescData *) { } +static const char *getTableName(const DocNode *n) +{ + bool isNested=FALSE; + while (n && !isNested) + { + isNested = n->kind()==DocNode::Kind_HtmlTable; + n = n->parent(); + } + return isNested ? "TabularNC" : "TabularC"; +} + void LatexDocVisitor::visitPre(DocHtmlTable *t) { m_rowSpans.clear(); m_insideTable=TRUE; if (m_hide) return; - if (t->hasCaption()) + if (t->hasCaption()) { m_t << "\\begin{table}[h]"; } - m_t << "\\begin{TabularC}{" << t->numColumns() << "}\n"; + m_t << "\\begin{" << getTableName(t->parent()) << "}{" << t->numColumns() << "}\n"; m_numCols = t->numColumns(); m_t << "\\hline\n"; } -void LatexDocVisitor::visitPost(DocHtmlTable *t) +void LatexDocVisitor::visitPost(DocHtmlTable *t) { m_insideTable=FALSE; if (m_hide) return; @@ -833,14 +844,14 @@ void LatexDocVisitor::visitPost(DocHtmlTable *t) } else { - m_t << "\\end{TabularC}\n"; + m_t << "\\end{" << getTableName(t->parent()) << "}\n"; } } -void LatexDocVisitor::visitPre(DocHtmlCaption *) +void LatexDocVisitor::visitPre(DocHtmlCaption *c) { if (m_hide) return; - m_t << "\\end{TabularC}\n\\centering\n\\caption{"; + m_t << "\\end{" << getTableName(c->parent()) << "}\n\\centering\n\\caption{"; } void LatexDocVisitor::visitPost(DocHtmlCaption *) |