@@ -646,7 +646,7 @@ def __init__(self, document: nodes.document, builder: "LaTeXBuilder") -> None:
646646 latex_engine = self .config .latex_engine )
647647 self .context = [] # type: List[Any]
648648 self .descstack = [] # type: List[str]
649- self .table = None # type: Table
649+ self .tables = [] # type: List[ Table]
650650 self .next_table_colspec = None # type: str
651651 self .bodystack = [] # type: List[List[str]]
652652 self .footnote_restricted = None # type: nodes.Element
@@ -783,6 +783,14 @@ def render(self, template_name: str, variables: Dict) -> str:
783783
784784 return renderer .render (template_name , variables )
785785
786+ @property
787+ def table (self ) -> Table :
788+ """Get current table."""
789+ if self .tables :
790+ return self .tables [- 1 ]
791+ else :
792+ return None
793+
786794 def visit_document (self , node : Element ) -> None :
787795 self .curfilestack .append (node .get ('docname' , '' ))
788796 if self .first_document == 1 :
@@ -1079,11 +1087,21 @@ def visit_tabular_col_spec(self, node: Element) -> None:
10791087 raise nodes .SkipNode
10801088
10811089 def visit_table (self , node : Element ) -> None :
1082- if self .table :
1090+ if len (self .tables ) == 1 :
1091+ if self .table .get_table_type () == 'longtable' :
1092+ raise UnsupportedError (
1093+ '%s:%s: longtable does not support nesting a table.' %
1094+ (self .curfilestack [- 1 ], node .line or '' ))
1095+ else :
1096+ # change type of parent table to tabular
1097+ # see https://groups.google.com/d/msg/sphinx-users/7m3NeOBixeo/9LKP2B4WBQAJ
1098+ self .table .has_problematic = True
1099+ elif len (self .tables ) > 2 :
10831100 raise UnsupportedError (
1084- '%s:%s: nested tables are not yet implemented.' %
1101+ '%s:%s: deeply nested tables are not implemented.' %
10851102 (self .curfilestack [- 1 ], node .line or '' ))
1086- self .table = Table (node )
1103+
1104+ self .tables .append (Table (node ))
10871105 if self .next_table_colspec :
10881106 self .table .colspec = '{%s}\n ' % self .next_table_colspec
10891107 if 'colwidths-given' in node .get ('classes' , []):
@@ -1100,7 +1118,7 @@ def depart_table(self, node: Element) -> None:
11001118 self .body .append (table )
11011119 self .body .append ("\n " )
11021120
1103- self .table = None
1121+ self .tables . pop ()
11041122
11051123 def visit_colspec (self , node : Element ) -> None :
11061124 self .table .colcount += 1
0 commit comments