From b01d215df18ba753746a170125b883befe100d67 Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Sat, 7 Dec 2019 09:57:04 +0000 Subject: [PATCH] Fix @multitable handling in texi2pod.pl 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. 2019-12-07 Richard Sandiford contrib/ * texi2pod.pl: Handle @headitems in @multitables, printing them in italics. Push an empty item code onto the stack. From-SVN: r279074 --- contrib/ChangeLog | 5 +++++ contrib/texi2pod.pl | 9 +++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/contrib/ChangeLog b/contrib/ChangeLog index db1d6fbdb19..b1910a64210 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,8 @@ +2019-12-07 Richard Sandiford + + * texi2pod.pl: Handle @headitems in @multitables, printing them + in italics. Push an empty item code onto the stack. + 2019-11-13 Janne Blomqvist * download_prerequisites: Use http instead of ftp for downloading. diff --git a/contrib/texi2pod.pl b/contrib/texi2pod.pl index 91bdbb5cea9..608dff42415 100755 --- a/contrib/texi2pod.pl +++ b/contrib/texi2pod.pl @@ -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";