diff options
Diffstat (limited to 'Docs/Support/colspec-fix.pl')
-rwxr-xr-x | Docs/Support/colspec-fix.pl | 46 |
1 files changed, 35 insertions, 11 deletions
diff --git a/Docs/Support/colspec-fix.pl b/Docs/Support/colspec-fix.pl index 64269fdbe3a..6c64edd1441 100755 --- a/Docs/Support/colspec-fix.pl +++ b/Docs/Support/colspec-fix.pl @@ -8,10 +8,10 @@ use strict; -my $table_width = 12.75; # cm -my $gutter_width = 0.09; # cm +my $table_width = 12.75; # Specify the max width of the table in cm +my $gutter_width = 0.55; # Specify the width of the gutters in cm -my $str = join '', <>; +my $str = join '', <>; # Push stdin (or file) $str =~ s{([\t ]*(<colspec colwidth=\".+?\" />\s*)+)} {&rel2abs($1)}ges; @@ -28,12 +28,17 @@ sub msg { } sub rel2abs { - my $str = shift; - my $colnum = 1; + my $str = shift; + my $colnum = 1; - my @widths = (); - my $total = 0; - my $output = ''; + my @widths = (); + my $total = 0; + my $output = ''; + + my $gutters; + my $content_width; + my $total_width; + my @num_cache; $str =~ /^(\s+)/; my $ws = $1; @@ -43,12 +48,31 @@ sub rel2abs { push @widths, $1; } - my $unit = ($table_width - ($#widths * $gutter_width)) / ($total); + msg("!!! WARNING: Total Percent > 100%: $total%") if $total > 100; + + if (! $total) { + die 'Something bad has happened - the script believes that there are no columns'; + } + + $gutters = $#widths * $gutter_width; + $content_width = $table_width - $gutters; + # Don't forget that $#... is the last offset not the count foreach (@widths) { - $output .= $ws . '<colspec colnum="'. $colnum .'" colwidth="'. sprintf ("%0.2f", $_ * $unit) .'cm" />' . "\n"; + my $temp = sprintf ("%0.2f", $_/100 * $content_width); + $total_width += $temp; + + if ($total_width > $content_width) { + $temp -= $total_width - $content_width; + msg("!!! WARNING: Column width reduced from " . + ($temp + ($total_width - $content_width)) . " to $temp !!!"); + $total_width -= $total_width - $content_width; + } + + $output .= $ws . '<colspec colnum="'. $colnum .'" colwidth="'. $temp .'cm" />' . "\n"; ++$colnum; + push @num_cache, $temp; } - + return $output . "\n$ws"; } |