While trying out Dennis's Armv8.6-A patch, I noticed that texi2pod.pl
didn't handle the new @multitable correctly.  There were two problems:

(1) @multitables nested in other @tables inherited the @item type from
    the enclosing @table.  Since the new @multitable is in a @table @samp,
    we applied @samp markup to the @multitable @items.  This in turn
    meant that it captured the @tab separator in the @item markup.

    Fixed by pushing an empty item code onto the stack.

(2) We didn't handle @headitem.  Fixed by enclosing it in italics,
    like we do for section headings.  This causes it to be underlined
    in the man output.

Tested by making sure that it doesn't change the current gcc.pod output,
but fixes the problems mentioned above when the new @multitable is added.
OK to install?

Richard


2019-12-05  Richard Sandiford  <richard.sandif...@arm.com>

contrib/
        * texi2pod.pl: Handle @headitems in @multitables, printing them
        in italics.  Push an empty item code onto the stack.

Index: contrib/texi2pod.pl
===================================================================
--- contrib/texi2pod.pl 2019-03-08 18:14:23.345019203 +0000
+++ contrib/texi2pod.pl 2019-12-06 10:15:24.968809478 +0000
@@ -164,6 +164,7 @@ while(<$inf>) {
            $ic = pop @icstack;
        } elsif ($ended eq "multitable") {
            $_ = "\n=back\n";
+           $ic = pop @icstack;
        } else {
            die "unknown command \@end $ended at line $.\n";
        }
@@ -288,7 +289,9 @@ while(<$inf>) {
 
     /^\@multitable\s.*/ and do {
        push @endwstack, $endw;
+       push @icstack, $ic;
        $endw = "multitable";
+       $ic = "";
        $_ = "\n=over 4\n";
     };
 
@@ -312,11 +315,13 @@ while(<$inf>) {
        $_ = "";        # need a paragraph break
     };
 
-    /^\@item\s+(.*\S)\s*$/ and $endw eq "multitable" and do {
+    /^\@(headitem|item)\s+(.*\S)\s*$/ and $endw eq "multitable" and do {
        @columns = ();
-       for $column (split (/\s*\@tab\s*/, $1)) {
+       $item = $1;
+       for $column (split (/\s*\@tab\s*/, $2)) {
            # @strong{...} is used a @headitem work-alike
            $column =~ s/^\@strong\{(.*)\}$/$1/;
+           $column = "I<$column>" if $item eq "headitem";
            push @columns, $column;
        }
        $_ = "\n=item ".join (" : ", @columns)."\n";

Reply via email to