diff --git a/src/libprs500/ebooks/lrf/html/table.py b/src/libprs500/ebooks/lrf/html/table.py
index 52e937b11a..303aa1e592 100644
--- a/src/libprs500/ebooks/lrf/html/table.py
+++ b/src/libprs500/ebooks/lrf/html/table.py
@@ -327,28 +327,22 @@ class Table(object):
except IndexError:
continue
widths[c] = max(cellwidths)
- adjustable_columns, psum = [], 0.
+
min_widths = [self.minimum_width(i)+10 for i in xrange(cols)]
for i in xrange(len(widths)):
wp = self.width_percent(i)
if wp >= 0.:
- psum += wp
- if psum > 100:
- adjustable_columns.append(i)
- else:
- widths[i] = ceil((wp/100.) * (maxwidth - (cols-1)*self.colpad))
- if widths[i] < min_widths[i]:
- widths[i] = min_widths[i]
- else:
- adjustable_columns.append(i)
+ widths[i] = max(min_widths[i], ceil((wp/100.) * (maxwidth - (cols-1)*self.colpad)))
+
itercount = 0
while sum(widths) > maxwidth-((len(widths)-1)*self.colpad) and itercount < 100:
- for i in adjustable_columns:
+ for i in range(cols):
widths[i] = ceil((95./100.)*widths[i]) if \
ceil((95./100.)*widths[i]) >= min_widths[i] else widths[i]
itercount += 1
+
return [i+self.colpad for i in widths]
def blocks(self, maxwidth, maxheight):