summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDimitri van Heesch <dimitri@stack.nl>2014-08-08 09:41:23 (GMT)
committerDimitri van Heesch <dimitri@stack.nl>2014-08-08 09:41:23 (GMT)
commit3cb963061343aa5b3b8a044cdfa62848723a02ee (patch)
tree193ed644113de8d65b66e113b8c792e12404e8a8 /src
parent7a1196384f9124f872befea1249eaf9bb99924b5 (diff)
downloadDoxygen-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.sty10
-rw-r--r--src/latexdocvisitor.cpp23
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 *)