diff --git a/templates/longtable.tex.jinja b/templates/longtable.tex.jinja index 0558217..9f5d24c 100644 --- a/templates/longtable.tex.jinja +++ b/templates/longtable.tex.jinja @@ -39,14 +39,32 @@ \makeatother <% set total_width = table.colwidths|sum %> <% set colspec_parts = [] %> +<% set min_widths = [] %> <% for width in table.colwidths %> - <% set part = '>{{\\raggedright\\arraybackslash}}p{{{:.4f}\\textwidth}}'.format((width * 0.92) / total_width) %> + <% set computed_width = (width * 0.92) / total_width %> + <% set adjusted_width = computed_width if computed_width >= 0.1 else 0.1 %> + <% set min_widths = min_widths.append(adjusted_width) %> +<% endfor %> +<% set total_column_width = min_widths|sum %> +<% set normalized_widths = [] %> +<% if total_column_width > 0.92 %> + <% set normalization_factor = 0.92 / total_column_width %> + <% for min_width in min_widths %> + <% set temp = min_width * normalization_factor %> + <% set normalized_widths = normalized_widths.append(temp) %> + <% endfor %> +<% else %> + <% set normalized_widths = min_widths %> +<% endif %> +<% for width in normalized_widths %> + <% set part = '>{{\\raggedright\\arraybackslash}}p{{{:.4f}\\textwidth}}'.format(width) %> <% set colspec_parts = colspec_parts.append(part) %> <% endfor %> <% set colspec_string = ''.join(colspec_parts) %> \begin{longtable}{<%= colspec_string %>} <%- if table.caption -%> \sphinxthelongtablecaptionisattop + \caption{<%= ''.join(table.caption) %>\strut}<%= labels %>\\*[\sphinxlongtablecapskipadjust] <% elif labels -%> \noalign{\phantomsection<%= labels %>}% diff --git a/templates/tabular.tex.jinja b/templates/tabular.tex.jinja index ed1a4c9..9f5d24c 100644 --- a/templates/tabular.tex.jinja +++ b/templates/tabular.tex.jinja @@ -39,14 +39,32 @@ \makeatother <% set total_width = table.colwidths|sum %> <% set colspec_parts = [] %> +<% set min_widths = [] %> <% for width in table.colwidths %> - <% set part = '>{{\\raggedright\\arraybackslash}}p{{{:.4f}\\textwidth}}'.format((width * 0.92) / total_width) %> + <% set computed_width = (width * 0.92) / total_width %> + <% set adjusted_width = computed_width if computed_width >= 0.1 else 0.1 %> + <% set min_widths = min_widths.append(adjusted_width) %> +<% endfor %> +<% set total_column_width = min_widths|sum %> +<% set normalized_widths = [] %> +<% if total_column_width > 0.92 %> + <% set normalization_factor = 0.92 / total_column_width %> + <% for min_width in min_widths %> + <% set temp = min_width * normalization_factor %> + <% set normalized_widths = normalized_widths.append(temp) %> + <% endfor %> +<% else %> + <% set normalized_widths = min_widths %> +<% endif %> +<% for width in normalized_widths %> + <% set part = '>{{\\raggedright\\arraybackslash}}p{{{:.4f}\\textwidth}}'.format(width) %> <% set colspec_parts = colspec_parts.append(part) %> <% endfor %> <% set colspec_string = ''.join(colspec_parts) %> \begin{longtable}{<%= colspec_string %>} <%- if table.caption -%> \sphinxthelongtablecaptionisattop + \caption{<%= ''.join(table.caption) %>\strut}<%= labels %>\\*[\sphinxlongtablecapskipadjust] <% elif labels -%> \noalign{\phantomsection<%= labels %>}% @@ -76,7 +94,6 @@ \endlastfoot \sphinxtableatstartofbodyhook -\raggedright <%= ''.join(table.body) -%> \sphinxbottomrule \end{longtable} diff --git a/templates/tabulary.tex.jinja b/templates/tabulary.tex.jinja index 0558217..9f5d24c 100644 --- a/templates/tabulary.tex.jinja +++ b/templates/tabulary.tex.jinja @@ -39,14 +39,32 @@ \makeatother <% set total_width = table.colwidths|sum %> <% set colspec_parts = [] %> +<% set min_widths = [] %> <% for width in table.colwidths %> - <% set part = '>{{\\raggedright\\arraybackslash}}p{{{:.4f}\\textwidth}}'.format((width * 0.92) / total_width) %> + <% set computed_width = (width * 0.92) / total_width %> + <% set adjusted_width = computed_width if computed_width >= 0.1 else 0.1 %> + <% set min_widths = min_widths.append(adjusted_width) %> +<% endfor %> +<% set total_column_width = min_widths|sum %> +<% set normalized_widths = [] %> +<% if total_column_width > 0.92 %> + <% set normalization_factor = 0.92 / total_column_width %> + <% for min_width in min_widths %> + <% set temp = min_width * normalization_factor %> + <% set normalized_widths = normalized_widths.append(temp) %> + <% endfor %> +<% else %> + <% set normalized_widths = min_widths %> +<% endif %> +<% for width in normalized_widths %> + <% set part = '>{{\\raggedright\\arraybackslash}}p{{{:.4f}\\textwidth}}'.format(width) %> <% set colspec_parts = colspec_parts.append(part) %> <% endfor %> <% set colspec_string = ''.join(colspec_parts) %> \begin{longtable}{<%= colspec_string %>} <%- if table.caption -%> \sphinxthelongtablecaptionisattop + \caption{<%= ''.join(table.caption) %>\strut}<%= labels %>\\*[\sphinxlongtablecapskipadjust] <% elif labels -%> \noalign{\phantomsection<%= labels %>}%