Fix #2723: extra spaces in latex pdf output from multirow cell

Adds some ``\relax``/``\unskip`` and removes spaces from ``visit_entry``
generated latex code. Earlier, multirow cell inherited one extra space
token at begin and one at end, making left or right alignment with other
cells fail because the native LaTeX space removal mechanism for table
cells could not apply there.

Memo: the ``\eqparbox`` part of ``visit_entry`` from e41f831f is left
untouched; separate analysis required.
This commit is contained in:
jfbu 2016-06-29 14:25:58 +02:00
parent f30a8d5a36
commit b25dc5ef4c

View File

@ -1123,7 +1123,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
extracols = self.remember_multirowcol[self.table.col]
self.body.append('\\multicolumn{')
self.body.append(str(extracols + 1))
self.body.append('}{|l|}{}')
self.body.append('}{|l|}{}\\relax ')
self.table.col += extracols
self.body.append('&')
else:
@ -1134,15 +1134,15 @@ class LaTeXTranslator(nodes.NodeVisitor):
self.body.append('\\multicolumn{')
self.body.append(str(node.get('morecols') + 1))
if self.table.col == 1:
self.body.append('}{|l|}{')
self.body.append('}{|l|}{\\relax ')
else:
self.body.append('}{l|}{')
context += '}'
self.body.append('}{l|}{\\relax ')
context += '\\unskip}\\relax '
if 'morerows' in node:
self.body.append('\\multirow{')
self.body.append(str(node.get('morerows') + 1))
self.body.append('}{*}{')
context += '}'
self.body.append('}{*}{\\relax ')
context += '\\unskip}\\relax '
self.remember_multirow[self.table.col] = node.get('morerows')
if 'morecols' in node:
if 'morerows' in node:
@ -1160,7 +1160,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
pass
else:
self.body.append('\\textsf{\\relax ')
context += '}'
context += '\\unskip}\\relax '
while self.remember_multirow.get(self.table.col + 1, 0):
self.table.col += 1
self.remember_multirow[self.table.col] -= 1
@ -1169,7 +1169,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
extracols = self.remember_multirowcol[self.table.col]
context += '\\multicolumn{'
context += str(extracols + 1)
context += '}{l|}{}'
context += '}{l|}{}\\relax '
self.table.col += extracols
if len(node.traverse(nodes.paragraph)) >= 2:
self.table.has_problematic = True