texinfo-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

branch master updated: * tp/Texinfo/ParserNonXS.pm (_end_line_starting_b


From: Patrice Dumas
Subject: branch master updated: * tp/Texinfo/ParserNonXS.pm (_end_line_starting_block), tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block), tp/Texinfo/XS/parsetexi/handle_commands.c (handle_other_command): remove extra prototypes. Use the number of bracketed content to set max_columns, and always use max_columns for the number of columns in the XS parser.
Date: Tue, 07 Mar 2023 11:32:56 -0500

This is an automated email from the git hooks/post-receive script.

pertusus pushed a commit to branch master
in repository texinfo.

The following commit(s) were added to refs/heads/master by this push:
     new f29f2cdbb6 * tp/Texinfo/ParserNonXS.pm (_end_line_starting_block), 
tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block), 
tp/Texinfo/XS/parsetexi/handle_commands.c (handle_other_command): remove extra 
prototypes.  Use the number of bracketed content to set max_columns, and always 
use max_columns for the number of columns in the XS parser.
f29f2cdbb6 is described below

commit f29f2cdbb678f1ee09f1d9e6a317d723530876ae
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Tue Mar 7 17:32:45 2023 +0100

    * tp/Texinfo/ParserNonXS.pm (_end_line_starting_block),
    tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block),
    tp/Texinfo/XS/parsetexi/handle_commands.c (handle_other_command):
    remove extra prototypes.  Use the number of bracketed content to set
    max_columns, and always use max_columns for the number of columns
    in the XS parser.
---
 ChangeLog                                          |   9 ++
 tp/Texinfo/ParserNonXS.pm                          |  32 +---
 tp/Texinfo/XS/parsetexi/end_line.c                 |  37 +----
 tp/Texinfo/XS/parsetexi/handle_commands.c          |  21 +--
 tp/t/results/coverage/multitable.pl                |  18 +--
 tp/t/results/float/complex_float.pl                |  36 +----
 .../multitable_anchor_and_index_entry.pl           |  18 +--
 .../info_tests/nested_multitable_anchor_index.pl   |  36 +----
 tp/t/results/invalid_nestings/bad_tab_nesting.pl   |  18 +--
 tp/t/results/invalid_nestings/center.pl            |  18 +--
 .../multitable_in_style_command.pl                 |  18 +--
 .../invalid_nestings/multitable_item_in_index.pl   |  18 +--
 .../invalid_nestings/on_block_command_line.pl      |  11 +-
 .../invalid_nestings/section_on_multitable_line.pl |  24 +--
 tp/t/results/invalid_nestings/tab_in_index.pl      |  18 +--
 .../multitable/empty_multitable_with_cells.pl      |   3 +-
 .../inter_item_commands_in_multitable.pl           |  22 +--
 .../multitable/multitable_begin_with_tab.pl        |  36 +----
 ...ultitable_bracketed_no_inter_space_prototype.pl |  18 +--
 ...titable_bracketed_prototype_empty_not_closed.pl |   7 +-
 ...bracketed_prototype_empty_not_closed_comment.pl |  11 +-
 ..._bracketed_prototype_empty_spaces_not_closed.pl |   7 +-
 ...ed_prototype_empty_spaces_not_closed_comment.pl |  11 +-
 .../multitable_bracketed_prototype_not_closed.pl   |  11 +-
 ...table_bracketed_prototype_not_closed_comment.pl |  13 +-
 ...bracketed_prototype_not_closed_space_comment.pl |  13 +-
 .../multitable_empty_bracketed_prototype.pl        |  14 +-
 tp/t/results/multitable/multitable_figure_space.pl |  18 +--
 tp/t/results/multitable/multitable_in_example.pl   |  18 +--
 tp/t/results/multitable/multitable_not_closed.pl   |  18 +--
 .../multitable/multitable_not_closed_item.pl       |  18 +--
 .../multitable/multitable_not_closed_item_tab.pl   |  18 +--
 .../multitable_one_column_too_much_cells.pl        |  11 +-
 .../results/multitable/not_letters_in_prototype.pl | 134 ++++++++--------
 tp/t/results/multitable/paragraph_in_cells.pl      |  18 +--
 .../results/multitable/prototype_brace_no_brace.pl |  15 +-
 .../multitable/prototype_brace_no_brace_comment.pl |  15 +-
 tp/t/results/multitable/prototype_no_brace.pl      |  25 ++-
 tp/t/results/multitable/w_in_multitable.pl         |  18 +--
 .../plaintext_tests/empty_multitable_in_itemize.pl |   3 +-
 tp/t/results/plaintext_tests/multitable.pl         |  83 +---------
 .../multitable_in_example_extraneous_item_tab.pl   | 170 ++++++++++-----------
 .../multitable_in_example_extraneous_tab.pl        |  11 +-
 tp/t/results/plaintext_tests/nested_multitable.pl  |  40 +----
 tp/t/results/xml_tests/commands_and_spaces.pl      |  30 +---
 .../xml_tests/comments_on_block_command_lines.pl   |  18 +--
 46 files changed, 232 insertions(+), 947 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index c1ec886fde..05a8da5f48 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2023-03-07  Patrice Dumas  <pertusus@free.fr>
+
+       * tp/Texinfo/ParserNonXS.pm (_end_line_starting_block),
+       tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block),
+       tp/Texinfo/XS/parsetexi/handle_commands.c (handle_other_command):
+       remove extra prototypes.  Use the number of bracketed content to set
+       max_columns, and always use max_columns for the number of columns
+       in the XS parser.
+
 2023-03-07  Patrice Dumas  <pertusus@free.fr>
 
        * tp/Texinfo/Convert/DocBook.pm (_convert),
diff --git a/tp/Texinfo/ParserNonXS.pm b/tp/Texinfo/ParserNonXS.pm
index 9a7026669d..7191fc7987 100644
--- a/tp/Texinfo/ParserNonXS.pm
+++ b/tp/Texinfo/ParserNonXS.pm
@@ -3754,29 +3754,16 @@ sub _end_line_starting_block($$$)
       delete $multitable->{'extra'}->{'columnfractions'};
     }
   } elsif ($command eq 'multitable') {
-    # parse the prototypes and put them in a special arg
-    my @prototype_row;
+    # determine max columns based on prototypes
+    my $max_columns = 0;
     if ($current->{'contents'}) {
       foreach my $content (@{$current->{'contents'}}) {
         if ($content->{'type'} and $content->{'type'} eq 'bracketed') {
-          # TODO the 'extra' information in $content is not copied over,
-          # at least leading/trailing spaces (something else?).
-          my $bracketed_prototype
-            = { 'type' => 'bracketed_multitable_prototype' };
-          $bracketed_prototype->{'contents'} = $content->{'contents'}
-            if ($content->{'contents'});
-          push @prototype_row, $bracketed_prototype;
+          $max_columns++;
         } elsif ($content->{'text'}) {
           # TODO: this should be a warning or an error - all prototypes
           # on a @multitable line should be in braces, as documented in the
           # Texinfo manual.
-          if ($content->{'text'} =~ /\S/) {
-            foreach my $prototype (split /\s+/, $content->{'text'}) {
-              push @prototype_row, { 'text' => $prototype,
-                                     'type' => 'row_prototype' }
-                unless ($prototype eq '');
-            }
-          }
         } else {
           if (!$content->{'cmdname'}
                 or ($content->{'cmdname'} ne 'c'
@@ -3791,12 +3778,11 @@ sub _end_line_starting_block($$$)
     }
     my $multitable = $current->{'parent'};
     $multitable->{'extra'} = {} if (!$multitable->{'extra'});
-    $multitable->{'extra'}->{'max_columns'} = scalar(@prototype_row);
-    if (!scalar(@prototype_row)) {
+    $multitable->{'extra'}->{'max_columns'} = $max_columns;
+    if (!$max_columns) {
       $self->_command_warn($multitable, $source_info,
                            __("empty multitable"));
     }
-    $multitable->{'extra'}->{'prototypes'} = \@prototype_row;
   }
   $current = $current->{'parent'};
   delete $current->{'remaining_args'};
@@ -8682,11 +8668,9 @@ C<extra> hash labels information.
 
 =item C<@multitable>
 
-The key I<max_columns> holds the maximal number of columns.  If there
-are prototypes on the line they are in the array associated with
-I<prototypes>.  If there is a C<@columnfractions> as argument, then the
-I<columnfractions> key is associated with the element for the
-@columnfractions command.
+The key I<max_columns> holds the maximal number of columns.  If there is a
+C<@columnfractions> as argument, then the I<columnfractions> key is associated
+with the element for the @columnfractions command.
 
 =item C<@node>
 
diff --git a/tp/Texinfo/XS/parsetexi/end_line.c 
b/tp/Texinfo/XS/parsetexi/end_line.c
index dcd34042a7..7676480501 100644
--- a/tp/Texinfo/XS/parsetexi/end_line.c
+++ b/tp/Texinfo/XS/parsetexi/end_line.c
@@ -763,7 +763,7 @@ end_line_starting_block (ELEMENT *current)
   else if (command == CM_multitable)
     {
       int i;
-      ELEMENT *prototypes = new_element (ET_NONE);
+      int max_columns = 0;
 
       for (i = 0; i < current->contents.number; i++)
         {
@@ -771,35 +771,15 @@ end_line_starting_block (ELEMENT *current)
 
           if (e->type == ET_bracketed)
             {
-              /* Copy and change the type of the element. */
-
-              ELEMENT *new;
-              new = malloc (sizeof (ELEMENT));
-              memcpy (new, e, sizeof (ELEMENT));
-              new->type = ET_bracketed_multitable_prototype;
-              new->parent = 0;
-              /* TODO the extra_info/info_info information in e is not copied
-                 over, at least leading/trailing spaces (something else?). */
-              new->extra_info = new_associated_info();
-              new->info_info = new_associated_info();
-              add_to_contents_as_array (prototypes, new);
+              max_columns++;
             }
           else if (e->text.end > 0)
             {
-              /* Split the text up by whitespace. */
-              char *p, *p2;
-              p = e->text.text;
-              while (1)
-                {
-                  ELEMENT *new;
-                  p2 = p + strspn (p, whitespace_chars);
-                  if (!*p2)
-                    break;
-                  p = p2 + strcspn (p2, whitespace_chars);
-                  new = new_element (ET_row_prototype);
-                  text_append_n (&new->text, p2, p - p2);
-                  add_to_contents_as_array (prototypes, new);
-                }
+              /*
+              TODO: this should be a warning or an error - all prototypes
+              on a @multitable line should be in braces, as documented in the
+              Texinfo manual.
+               */
             }
           else
             {
@@ -817,13 +797,10 @@ end_line_starting_block (ELEMENT *current)
         }
 
       {
-      int max_columns = prototypes->contents.number;
       add_extra_integer (current->parent, "max_columns", max_columns);
       if (max_columns == 0)
         command_warn (current->parent, "empty multitable");
       }
-      add_extra_contents_oot (current->parent, "prototypes", prototypes);
-      /* See code in destroy_element for how prototypes is deallocated. */
     }
 
   current = current->parent;
diff --git a/tp/Texinfo/XS/parsetexi/handle_commands.c 
b/tp/Texinfo/XS/parsetexi/handle_commands.c
index 541caff476..8a53676d90 100644
--- a/tp/Texinfo/XS/parsetexi/handle_commands.c
+++ b/tp/Texinfo/XS/parsetexi/handle_commands.c
@@ -391,23 +391,12 @@ handle_other_command (ELEMENT *current, char **line_inout,
           /* In a @multitable */
           else if ((parent = item_multitable_parent (current)))
             {
-              int max_columns = 0;
-              KEY_PAIR *prototypes;
+              long max_columns = 0;
+              KEY_PAIR *k;
 
-              prototypes = lookup_extra  (parent, "prototypes");
-              if (prototypes)
-                max_columns = prototypes->value->contents.number;
-              else
-                {
-                  prototypes = lookup_extra(parent, "columnfractions");
-                  if (prototypes)
-                    {
-                      prototypes = lookup_extra((ELEMENT *) prototypes->value,
-                                                "misc_args");
-                      if (prototypes)
-                        max_columns = prototypes->value->contents.number;
-                    }
-                }
+              k = lookup_extra (parent, "max_columns");
+              if (k)
+                max_columns = (long) k->value;
 
               if (max_columns == 0)
                 {
diff --git a/tp/t/results/coverage/multitable.pl 
b/tp/t/results/coverage/multitable.pl
index 99e876b07d..a17849064d 100644
--- a/tp/t/results/coverage/multitable.pl
+++ b/tp/t/results/coverage/multitable.pl
@@ -512,21 +512,7 @@ $result_trees{'multitable'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 2
           },
           'info' => {
             'spaces_before_argument' => {
@@ -546,8 +532,6 @@ $result_trees{'multitable'} = {
   'type' => 'document_root'
 };
 
$result_trees{'multitable'}{'contents'}[0]{'contents'}[1]{'extra'}{'columnfractions'}
 = 
$result_trees{'multitable'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0];
-$result_trees{'multitable'}{'contents'}[0]{'contents'}[3]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'multitable'}{'contents'}[0]{'contents'}[3]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'multitable'}{'contents'}[0]{'contents'}[3]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'multitable'}{'contents'}[0]{'contents'}[3]{'args'}[0]{'contents'}[2]{'contents'}[0];
 
 $result_texis{'multitable'} = '
 @multitable @columnfractions 0.6 0.4
diff --git a/tp/t/results/float/complex_float.pl 
b/tp/t/results/float/complex_float.pl
index 5c104a1f03..49d79e3b8b 100644
--- a/tp/t/results/float/complex_float.pl
+++ b/tp/t/results/float/complex_float.pl
@@ -1498,21 +1498,7 @@ $result_trees{'complex_float'} = {
                         }
                       ],
                       'extra' => {
-                        'max_columns' => 2,
-                        'prototypes' => [
-                          {
-                            'contents' => [
-                              {}
-                            ],
-                            'type' => 'bracketed_multitable_prototype'
-                          },
-                          {
-                            'contents' => [
-                              {}
-                            ],
-                            'type' => 'bracketed_multitable_prototype'
-                          }
-                        ]
+                        'max_columns' => 2
                       },
                       'info' => {
                         'spaces_before_argument' => {
@@ -2863,21 +2849,7 @@ $result_trees{'complex_float'} = {
                         }
                       ],
                       'extra' => {
-                        'max_columns' => 2,
-                        'prototypes' => [
-                          {
-                            'contents' => [
-                              {}
-                            ],
-                            'type' => 'bracketed_multitable_prototype'
-                          },
-                          {
-                            'contents' => [
-                              {}
-                            ],
-                            'type' => 'bracketed_multitable_prototype'
-                          }
-                        ]
+                        'max_columns' => 2
                       },
                       'info' => {
                         'spaces_before_argument' => {
@@ -3523,8 +3495,6 @@ 
$result_trees{'complex_float'}{'contents'}[2]{'contents'}[7]{'contents'}[8]{'ext
 
$result_trees{'complex_float'}{'contents'}[2]{'contents'}[7]{'contents'}[11]{'extra'}{'command_as_argument'}
 = 
$result_trees{'complex_float'}{'contents'}[2]{'contents'}[7]{'contents'}[11]{'args'}[0]{'contents'}[0];
 
$result_trees{'complex_float'}{'contents'}[2]{'contents'}[7]{'contents'}[13]{'contents'}[1]{'args'}[0]{'extra'}{'node_content'}[0]
 = 
$result_trees{'complex_float'}{'contents'}[2]{'contents'}[7]{'contents'}[13]{'contents'}[1]{'args'}[0]{'contents'}[0];
 
$result_trees{'complex_float'}{'contents'}[2]{'contents'}[7]{'contents'}[17]{'args'}[0]{'contents'}[7]{'extra'}{'command_as_argument'}
 = 
$result_trees{'complex_float'}{'contents'}[2]{'contents'}[7]{'contents'}[17]{'args'}[0]{'contents'}[7]{'args'}[0]{'contents'}[0];
-$result_trees{'complex_float'}{'contents'}[2]{'contents'}[7]{'contents'}[17]{'args'}[0]{'contents'}[10]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'complex_float'}{'contents'}[2]{'contents'}[7]{'contents'}[17]{'args'}[0]{'contents'}[10]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'complex_float'}{'contents'}[2]{'contents'}[7]{'contents'}[17]{'args'}[0]{'contents'}[10]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'complex_float'}{'contents'}[2]{'contents'}[7]{'contents'}[17]{'args'}[0]{'contents'}[10]{'args'}[0]{'contents'}[2]{'contents'}[0];
 
$result_trees{'complex_float'}{'contents'}[2]{'contents'}[7]{'contents'}[17]{'args'}[0]{'contents'}[12]{'extra'}{'element_node'}
 = $result_trees{'complex_float'}{'contents'}[1];
 
$result_trees{'complex_float'}{'contents'}[2]{'contents'}[7]{'contents'}[17]{'args'}[0]{'contents'}[15]{'extra'}{'command_as_argument'}
 = 
$result_trees{'complex_float'}{'contents'}[2]{'contents'}[7]{'contents'}[17]{'args'}[0]{'contents'}[15]{'args'}[0]{'contents'}[0];
 
$result_trees{'complex_float'}{'contents'}[2]{'contents'}[7]{'contents'}[17]{'args'}[0]{'contents'}[17]{'contents'}[1]{'args'}[0]{'extra'}{'node_content'}[0]
 = 
$result_trees{'complex_float'}{'contents'}[2]{'contents'}[7]{'contents'}[17]{'args'}[0]{'contents'}[17]{'contents'}[1]{'args'}[0]{'contents'}[0];
@@ -3534,8 +3504,6 @@ 
$result_trees{'complex_float'}{'contents'}[2]{'contents'}[7]{'extra'}{'caption'}
 
$result_trees{'complex_float'}{'contents'}[2]{'contents'}[7]{'extra'}{'float_section'}
 = $result_trees{'complex_float'}{'contents'}[2];
 
$result_trees{'complex_float'}{'contents'}[2]{'contents'}[7]{'extra'}{'shortcaption'}
 = $result_trees{'complex_float'}{'contents'}[2]{'contents'}[7]{'contents'}[20];
 
$result_trees{'complex_float'}{'contents'}[4]{'contents'}[1]{'contents'}[3]{'args'}[0]{'contents'}[4]{'extra'}{'command_as_argument'}
 = 
$result_trees{'complex_float'}{'contents'}[4]{'contents'}[1]{'contents'}[3]{'args'}[0]{'contents'}[4]{'args'}[0]{'contents'}[0];
-$result_trees{'complex_float'}{'contents'}[4]{'contents'}[1]{'contents'}[3]{'args'}[0]{'contents'}[7]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'complex_float'}{'contents'}[4]{'contents'}[1]{'contents'}[3]{'args'}[0]{'contents'}[7]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'complex_float'}{'contents'}[4]{'contents'}[1]{'contents'}[3]{'args'}[0]{'contents'}[7]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'complex_float'}{'contents'}[4]{'contents'}[1]{'contents'}[3]{'args'}[0]{'contents'}[7]{'args'}[0]{'contents'}[2]{'contents'}[0];
 
$result_trees{'complex_float'}{'contents'}[4]{'contents'}[1]{'contents'}[3]{'args'}[0]{'contents'}[9]{'extra'}{'element_node'}
 = $result_trees{'complex_float'}{'contents'}[3];
 
$result_trees{'complex_float'}{'contents'}[4]{'contents'}[1]{'contents'}[3]{'args'}[0]{'contents'}[12]{'extra'}{'command_as_argument'}
 = 
$result_trees{'complex_float'}{'contents'}[4]{'contents'}[1]{'contents'}[3]{'args'}[0]{'contents'}[12]{'args'}[0]{'contents'}[0];
 
$result_trees{'complex_float'}{'contents'}[4]{'contents'}[1]{'contents'}[3]{'args'}[0]{'contents'}[17]{'contents'}[1]{'args'}[0]{'extra'}{'node_content'}[0]
 = 
$result_trees{'complex_float'}{'contents'}[4]{'contents'}[1]{'contents'}[3]{'args'}[0]{'contents'}[17]{'contents'}[1]{'args'}[0]{'contents'}[0];
diff --git a/tp/t/results/info_tests/multitable_anchor_and_index_entry.pl 
b/tp/t/results/info_tests/multitable_anchor_and_index_entry.pl
index bb3e936044..4b0fc886db 100644
--- a/tp/t/results/info_tests/multitable_anchor_and_index_entry.pl
+++ b/tp/t/results/info_tests/multitable_anchor_and_index_entry.pl
@@ -765,21 +765,7 @@ $result_trees{'multitable_anchor_and_index_entry'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 2
           },
           'info' => {
             'spaces_before_argument' => {
@@ -914,8 +900,6 @@ $result_trees{'multitable_anchor_and_index_entry'} = {
 
$result_trees{'multitable_anchor_and_index_entry'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'contents'}[1]{'contents'}[1]{'contents'}[2]{'extra'}{'element_node'}
 = $result_trees{'multitable_anchor_and_index_entry'}{'contents'}[1];
 
$result_trees{'multitable_anchor_and_index_entry'}{'contents'}[1]{'contents'}[1]{'extra'}{'columnfractions'}
 = 
$result_trees{'multitable_anchor_and_index_entry'}{'contents'}[1]{'contents'}[1]{'args'}[0]{'contents'}[0];
 
$result_trees{'multitable_anchor_and_index_entry'}{'contents'}[1]{'contents'}[3]{'contents'}[0]{'contents'}[1]{'contents'}[0]{'contents'}[2]{'extra'}{'element_node'}
 = $result_trees{'multitable_anchor_and_index_entry'}{'contents'}[1];
-$result_trees{'multitable_anchor_and_index_entry'}{'contents'}[1]{'contents'}[3]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'multitable_anchor_and_index_entry'}{'contents'}[1]{'contents'}[3]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'multitable_anchor_and_index_entry'}{'contents'}[1]{'contents'}[3]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'multitable_anchor_and_index_entry'}{'contents'}[1]{'contents'}[3]{'args'}[0]{'contents'}[2]{'contents'}[0];
 
$result_trees{'multitable_anchor_and_index_entry'}{'contents'}[1]{'contents'}[6]{'contents'}[0]{'args'}[0]{'extra'}{'node_content'}[0]
 = 
$result_trees{'multitable_anchor_and_index_entry'}{'contents'}[1]{'contents'}[6]{'contents'}[0]{'args'}[0]{'contents'}[0];
 
$result_trees{'multitable_anchor_and_index_entry'}{'contents'}[1]{'contents'}[6]{'contents'}[2]{'args'}[0]{'extra'}{'node_content'}[0]
 = 
$result_trees{'multitable_anchor_and_index_entry'}{'contents'}[1]{'contents'}[6]{'contents'}[2]{'args'}[0]{'contents'}[0];
 
diff --git a/tp/t/results/info_tests/nested_multitable_anchor_index.pl 
b/tp/t/results/info_tests/nested_multitable_anchor_index.pl
index 03f5dab944..4fe2292cc6 100644
--- a/tp/t/results/info_tests/nested_multitable_anchor_index.pl
+++ b/tp/t/results/info_tests/nested_multitable_anchor_index.pl
@@ -276,21 +276,7 @@ $result_trees{'nested_multitable_anchor_index'} = {
                             }
                           ],
                           'extra' => {
-                            'max_columns' => 2,
-                            'prototypes' => [
-                              {
-                                'contents' => [
-                                  {}
-                                ],
-                                'type' => 'bracketed_multitable_prototype'
-                              },
-                              {
-                                'contents' => [
-                                  {}
-                                ],
-                                'type' => 'bracketed_multitable_prototype'
-                              }
-                            ]
+                            'max_columns' => 2
                           },
                           'info' => {
                             'spaces_before_argument' => {
@@ -507,21 +493,7 @@ $result_trees{'nested_multitable_anchor_index'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 2
           },
           'info' => {
             'spaces_before_argument' => {
@@ -659,11 +631,7 @@ $result_trees{'nested_multitable_anchor_index'} = {
   'type' => 'document_root'
 };
 
$result_trees{'nested_multitable_anchor_index'}{'contents'}[1]{'contents'}[1]{'contents'}[0]{'contents'}[0]{'contents'}[0]{'contents'}[1]{'contents'}[0]{'contents'}[0]{'contents'}[1]{'contents'}[2]{'extra'}{'element_node'}
 = $result_trees{'nested_multitable_anchor_index'}{'contents'}[1];
-$result_trees{'nested_multitable_anchor_index'}{'contents'}[1]{'contents'}[1]{'contents'}[0]{'contents'}[0]{'contents'}[0]{'contents'}[1]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'nested_multitable_anchor_index'}{'contents'}[1]{'contents'}[1]{'contents'}[0]{'contents'}[0]{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'nested_multitable_anchor_index'}{'contents'}[1]{'contents'}[1]{'contents'}[0]{'contents'}[0]{'contents'}[0]{'contents'}[1]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'nested_multitable_anchor_index'}{'contents'}[1]{'contents'}[1]{'contents'}[0]{'contents'}[0]{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[2]{'contents'}[0];
 
$result_trees{'nested_multitable_anchor_index'}{'contents'}[1]{'contents'}[1]{'contents'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[2]{'extra'}{'element_node'}
 = $result_trees{'nested_multitable_anchor_index'}{'contents'}[1];
-$result_trees{'nested_multitable_anchor_index'}{'contents'}[1]{'contents'}[1]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'nested_multitable_anchor_index'}{'contents'}[1]{'contents'}[1]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'nested_multitable_anchor_index'}{'contents'}[1]{'contents'}[1]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'nested_multitable_anchor_index'}{'contents'}[1]{'contents'}[1]{'args'}[0]{'contents'}[2]{'contents'}[0];
 
$result_trees{'nested_multitable_anchor_index'}{'contents'}[1]{'contents'}[5]{'contents'}[0]{'args'}[0]{'extra'}{'node_content'}[0]
 = 
$result_trees{'nested_multitable_anchor_index'}{'contents'}[1]{'contents'}[5]{'contents'}[0]{'args'}[0]{'contents'}[0];
 
$result_trees{'nested_multitable_anchor_index'}{'contents'}[1]{'contents'}[5]{'contents'}[2]{'args'}[0]{'extra'}{'node_content'}[0]
 = 
$result_trees{'nested_multitable_anchor_index'}{'contents'}[1]{'contents'}[5]{'contents'}[2]{'args'}[0]{'contents'}[0];
 
diff --git a/tp/t/results/invalid_nestings/bad_tab_nesting.pl 
b/tp/t/results/invalid_nestings/bad_tab_nesting.pl
index 753c6e6879..421d93bf14 100644
--- a/tp/t/results/invalid_nestings/bad_tab_nesting.pl
+++ b/tp/t/results/invalid_nestings/bad_tab_nesting.pl
@@ -156,21 +156,7 @@ $result_trees{'bad_tab_nesting'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 2
           },
           'info' => {
             'spaces_before_argument' => {
@@ -189,8 +175,6 @@ $result_trees{'bad_tab_nesting'} = {
   ],
   'type' => 'document_root'
 };
-$result_trees{'bad_tab_nesting'}{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'bad_tab_nesting'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'bad_tab_nesting'}{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'bad_tab_nesting'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[2]{'contents'}[0];
 
 $result_texis{'bad_tab_nesting'} = '@multitable {truc} {bidule}
 @item truc
diff --git a/tp/t/results/invalid_nestings/center.pl 
b/tp/t/results/invalid_nestings/center.pl
index 92f1cf3e03..4b9ab94638 100644
--- a/tp/t/results/invalid_nestings/center.pl
+++ b/tp/t/results/invalid_nestings/center.pl
@@ -1172,21 +1172,7 @@ $result_trees{'center'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 2
           },
           'info' => {
             'spaces_before_argument' => {
@@ -1308,8 +1294,6 @@ $result_trees{'center'} = {
 };
 
$result_trees{'center'}{'contents'}[0]{'contents'}[20]{'extra'}{'command_as_argument'}
 = 
$result_trees{'center'}{'contents'}[0]{'contents'}[20]{'args'}[0]{'contents'}[0];
 
$result_trees{'center'}{'contents'}[0]{'contents'}[22]{'extra'}{'command_as_argument'}
 = 
$result_trees{'center'}{'contents'}[0]{'contents'}[22]{'args'}[0]{'contents'}[0];
-$result_trees{'center'}{'contents'}[0]{'contents'}[33]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'center'}{'contents'}[0]{'contents'}[33]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'center'}{'contents'}[0]{'contents'}[33]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'center'}{'contents'}[0]{'contents'}[33]{'args'}[0]{'contents'}[2]{'contents'}[0];
 
$result_trees{'center'}{'contents'}[0]{'contents'}[35]{'args'}[0]{'contents'}[1]{'extra'}{'command_as_argument'}
 = 
$result_trees{'center'}{'contents'}[0]{'contents'}[35]{'args'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0];
 
 $result_texis{'center'} = '@center @indent @titlefont{in titlefont} @anchor{in 
anchor}@footnote{footnote}
diff --git a/tp/t/results/invalid_nestings/multitable_in_style_command.pl 
b/tp/t/results/invalid_nestings/multitable_in_style_command.pl
index 6f5eae0279..5eeda1d77b 100644
--- a/tp/t/results/invalid_nestings/multitable_in_style_command.pl
+++ b/tp/t/results/invalid_nestings/multitable_in_style_command.pl
@@ -170,21 +170,7 @@ $result_trees{'multitable_in_style_command'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 2
           },
           'info' => {
             'spaces_before_argument' => {
@@ -203,8 +189,6 @@ $result_trees{'multitable_in_style_command'} = {
   ],
   'type' => 'document_root'
 };
-$result_trees{'multitable_in_style_command'}{'contents'}[0]{'contents'}[1]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'multitable_in_style_command'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'multitable_in_style_command'}{'contents'}[0]{'contents'}[1]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'multitable_in_style_command'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[2]{'contents'}[0];
 
 $result_texis{'multitable_in_style_command'} = '@code{
 Multitable
diff --git a/tp/t/results/invalid_nestings/multitable_item_in_index.pl 
b/tp/t/results/invalid_nestings/multitable_item_in_index.pl
index 89d1268c2b..7b99cd13a6 100644
--- a/tp/t/results/invalid_nestings/multitable_item_in_index.pl
+++ b/tp/t/results/invalid_nestings/multitable_item_in_index.pl
@@ -123,21 +123,7 @@ $result_trees{'multitable_item_in_index'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 2
           },
           'info' => {
             'spaces_before_argument' => {
@@ -156,8 +142,6 @@ $result_trees{'multitable_item_in_index'} = {
   ],
   'type' => 'document_root'
 };
-$result_trees{'multitable_item_in_index'}{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'multitable_item_in_index'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'multitable_item_in_index'}{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'multitable_item_in_index'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[2]{'contents'}[0];
 
 $result_texis{'multitable_item_in_index'} = '@multitable {aaa} {bbb}
 @vindex  on item line
diff --git a/tp/t/results/invalid_nestings/on_block_command_line.pl 
b/tp/t/results/invalid_nestings/on_block_command_line.pl
index 78d34e09d7..2cdeac428d 100644
--- a/tp/t/results/invalid_nestings/on_block_command_line.pl
+++ b/tp/t/results/invalid_nestings/on_block_command_line.pl
@@ -158,15 +158,7 @@ $result_trees{'on_block_command_line'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 1,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 1
           },
           'info' => {
             'spaces_before_argument' => {
@@ -353,7 +345,6 @@ $result_trees{'on_block_command_line'} = {
   ],
   'type' => 'document_root'
 };
-$result_trees{'on_block_command_line'}{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'on_block_command_line'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'contents'}[0];
 
 $result_texis{'on_block_command_line'} = '@multitable {@anchor{in anchor}} 
@titlefont{in titlefont}
 @item @titlefont{in titlefont}
diff --git a/tp/t/results/invalid_nestings/section_on_multitable_line.pl 
b/tp/t/results/invalid_nestings/section_on_multitable_line.pl
index 24f0f6b163..f839a0618c 100644
--- a/tp/t/results/invalid_nestings/section_on_multitable_line.pl
+++ b/tp/t/results/invalid_nestings/section_on_multitable_line.pl
@@ -17,8 +17,7 @@ $result_trees{'section_on_multitable_line'} = {
           ],
           'cmdname' => 'multitable',
           'extra' => {
-            'max_columns' => 0,
-            'prototypes' => []
+            'max_columns' => 0
           },
           'info' => {
             'spaces_before_argument' => {
@@ -91,8 +90,7 @@ $result_trees{'section_on_multitable_line'} = {
           ],
           'cmdname' => 'multitable',
           'extra' => {
-            'max_columns' => 0,
-            'prototypes' => []
+            'max_columns' => 0
           },
           'info' => {
             'spaces_before_argument' => {
@@ -175,21 +173,7 @@ $result_trees{'section_on_multitable_line'} = {
           ],
           'cmdname' => 'multitable',
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 2
           },
           'info' => {
             'spaces_before_argument' => {
@@ -246,8 +230,6 @@ $result_trees{'section_on_multitable_line'} = {
   ],
   'type' => 'document_root'
 };
-$result_trees{'section_on_multitable_line'}{'contents'}[2]{'contents'}[1]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'section_on_multitable_line'}{'contents'}[2]{'contents'}[1]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'section_on_multitable_line'}{'contents'}[2]{'contents'}[1]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'section_on_multitable_line'}{'contents'}[2]{'contents'}[1]{'args'}[0]{'contents'}[2]{'contents'}[0];
 
 $result_texis{'section_on_multitable_line'} = '@multitable @section first
 
diff --git a/tp/t/results/invalid_nestings/tab_in_index.pl 
b/tp/t/results/invalid_nestings/tab_in_index.pl
index 4184a2ea85..b8d7e7e136 100644
--- a/tp/t/results/invalid_nestings/tab_in_index.pl
+++ b/tp/t/results/invalid_nestings/tab_in_index.pl
@@ -185,21 +185,7 @@ $result_trees{'tab_in_index'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 2
           },
           'info' => {
             'spaces_before_argument' => {
@@ -218,8 +204,6 @@ $result_trees{'tab_in_index'} = {
   ],
   'type' => 'document_root'
 };
-$result_trees{'tab_in_index'}{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'tab_in_index'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'tab_in_index'}{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'tab_in_index'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[2]{'contents'}[0];
 
 $result_texis{'tab_in_index'} = '@multitable {one nonlettered character} 
{normal text}
 @item one nonlettered character @tab aaa
diff --git a/tp/t/results/multitable/empty_multitable_with_cells.pl 
b/tp/t/results/multitable/empty_multitable_with_cells.pl
index 54b0c8d12b..83ddfb6fad 100644
--- a/tp/t/results/multitable/empty_multitable_with_cells.pl
+++ b/tp/t/results/multitable/empty_multitable_with_cells.pl
@@ -112,8 +112,7 @@ $result_trees{'empty_multitable_with_cells'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 0,
-            'prototypes' => []
+            'max_columns' => 0
           },
           'source_info' => {
             'file_name' => '',
diff --git a/tp/t/results/multitable/inter_item_commands_in_multitable.pl 
b/tp/t/results/multitable/inter_item_commands_in_multitable.pl
index 13696eb1a8..09902afe0a 100644
--- a/tp/t/results/multitable/inter_item_commands_in_multitable.pl
+++ b/tp/t/results/multitable/inter_item_commands_in_multitable.pl
@@ -216,15 +216,7 @@ $result_trees{'inter_item_commands_in_multitable'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 1,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 1
           },
           'info' => {
             'spaces_before_argument' => {
@@ -754,15 +746,7 @@ $result_trees{'inter_item_commands_in_multitable'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 1,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 1
           },
           'info' => {
             'spaces_before_argument' => {
@@ -786,9 +770,7 @@ $result_trees{'inter_item_commands_in_multitable'} = {
   ],
   'type' => 'document_root'
 };
-$result_trees{'inter_item_commands_in_multitable'}{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'inter_item_commands_in_multitable'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'contents'}[0];
 
$result_trees{'inter_item_commands_in_multitable'}{'contents'}[0]{'contents'}[2]{'extra'}{'columnfractions'}
 = 
$result_trees{'inter_item_commands_in_multitable'}{'contents'}[0]{'contents'}[2]{'args'}[0]{'contents'}[0];
-$result_trees{'inter_item_commands_in_multitable'}{'contents'}[0]{'contents'}[4]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'inter_item_commands_in_multitable'}{'contents'}[0]{'contents'}[4]{'args'}[0]{'contents'}[0]{'contents'}[0];
 
 $result_texis{'inter_item_commands_in_multitable'} = '@multitable {truc}
 @c comment before first item
diff --git a/tp/t/results/multitable/multitable_begin_with_tab.pl 
b/tp/t/results/multitable/multitable_begin_with_tab.pl
index 9caf148256..939933bef9 100644
--- a/tp/t/results/multitable/multitable_begin_with_tab.pl
+++ b/tp/t/results/multitable/multitable_begin_with_tab.pl
@@ -96,21 +96,7 @@ $result_trees{'multitable_begin_with_tab'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 2
           },
           'info' => {
             'spaces_before_argument' => {
@@ -254,21 +240,7 @@ $result_trees{'multitable_begin_with_tab'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 2
           },
           'info' => {
             'spaces_before_argument' => {
@@ -287,10 +259,6 @@ $result_trees{'multitable_begin_with_tab'} = {
   ],
   'type' => 'document_root'
 };
-$result_trees{'multitable_begin_with_tab'}{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'multitable_begin_with_tab'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'multitable_begin_with_tab'}{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'multitable_begin_with_tab'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[2]{'contents'}[0];
-$result_trees{'multitable_begin_with_tab'}{'contents'}[0]{'contents'}[2]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'multitable_begin_with_tab'}{'contents'}[0]{'contents'}[2]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'multitable_begin_with_tab'}{'contents'}[0]{'contents'}[2]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'multitable_begin_with_tab'}{'contents'}[0]{'contents'}[2]{'args'}[0]{'contents'}[2]{'contents'}[0];
 
 $result_texis{'multitable_begin_with_tab'} = '@multitable {a} {b}
  t
diff --git 
a/tp/t/results/multitable/multitable_bracketed_no_inter_space_prototype.pl 
b/tp/t/results/multitable/multitable_bracketed_no_inter_space_prototype.pl
index 45b406539b..8e3d2cfc48 100644
--- a/tp/t/results/multitable/multitable_bracketed_no_inter_space_prototype.pl
+++ b/tp/t/results/multitable/multitable_bracketed_no_inter_space_prototype.pl
@@ -80,21 +80,7 @@ 
$result_trees{'multitable_bracketed_no_inter_space_prototype'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 2
           },
           'info' => {
             'spaces_before_argument' => {
@@ -113,8 +99,6 @@ 
$result_trees{'multitable_bracketed_no_inter_space_prototype'} = {
   ],
   'type' => 'document_root'
 };
-$result_trees{'multitable_bracketed_no_inter_space_prototype'}{'contents'}[0]{'contents'}[1]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'multitable_bracketed_no_inter_space_prototype'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'multitable_bracketed_no_inter_space_prototype'}{'contents'}[0]{'contents'}[1]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'multitable_bracketed_no_inter_space_prototype'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[1]{'contents'}[0];
 
 $result_texis{'multitable_bracketed_no_inter_space_prototype'} = '
 @multitable {a}{b}
diff --git 
a/tp/t/results/multitable/multitable_bracketed_prototype_empty_not_closed.pl 
b/tp/t/results/multitable/multitable_bracketed_prototype_empty_not_closed.pl
index 0d6f48cf4b..bd2ee7d22e 100644
--- a/tp/t/results/multitable/multitable_bracketed_prototype_empty_not_closed.pl
+++ b/tp/t/results/multitable/multitable_bracketed_prototype_empty_not_closed.pl
@@ -67,12 +67,7 @@ 
$result_trees{'multitable_bracketed_prototype_empty_not_closed'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 1,
-            'prototypes' => [
-              {
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 1
           },
           'info' => {
             'spaces_before_argument' => {
diff --git 
a/tp/t/results/multitable/multitable_bracketed_prototype_empty_not_closed_comment.pl
 
b/tp/t/results/multitable/multitable_bracketed_prototype_empty_not_closed_comment.pl
index 1f444cda71..9e45e7a824 100644
--- 
a/tp/t/results/multitable/multitable_bracketed_prototype_empty_not_closed_comment.pl
+++ 
b/tp/t/results/multitable/multitable_bracketed_prototype_empty_not_closed_comment.pl
@@ -73,15 +73,7 @@ 
$result_trees{'multitable_bracketed_prototype_empty_not_closed_comment'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 1,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 1
           },
           'info' => {
             'spaces_before_argument' => {
@@ -100,7 +92,6 @@ 
$result_trees{'multitable_bracketed_prototype_empty_not_closed_comment'} = {
   ],
   'type' => 'document_root'
 };
-$result_trees{'multitable_bracketed_prototype_empty_not_closed_comment'}{'contents'}[0]{'contents'}[1]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'multitable_bracketed_prototype_empty_not_closed_comment'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'contents'}[0];
 
 $result_texis{'multitable_bracketed_prototype_empty_not_closed_comment'} = '
 @multitable {@comment comment
diff --git 
a/tp/t/results/multitable/multitable_bracketed_prototype_empty_spaces_not_closed.pl
 
b/tp/t/results/multitable/multitable_bracketed_prototype_empty_spaces_not_closed.pl
index 6e7aeaaa84..51c971c6f8 100644
--- 
a/tp/t/results/multitable/multitable_bracketed_prototype_empty_spaces_not_closed.pl
+++ 
b/tp/t/results/multitable/multitable_bracketed_prototype_empty_spaces_not_closed.pl
@@ -67,12 +67,7 @@ 
$result_trees{'multitable_bracketed_prototype_empty_spaces_not_closed'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 1,
-            'prototypes' => [
-              {
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 1
           },
           'info' => {
             'spaces_before_argument' => {
diff --git 
a/tp/t/results/multitable/multitable_bracketed_prototype_empty_spaces_not_closed_comment.pl
 
b/tp/t/results/multitable/multitable_bracketed_prototype_empty_spaces_not_closed_comment.pl
index a8ed5d2669..7dad20b707 100644
--- 
a/tp/t/results/multitable/multitable_bracketed_prototype_empty_spaces_not_closed_comment.pl
+++ 
b/tp/t/results/multitable/multitable_bracketed_prototype_empty_spaces_not_closed_comment.pl
@@ -78,15 +78,7 @@ 
$result_trees{'multitable_bracketed_prototype_empty_spaces_not_closed_comment'}
             }
           ],
           'extra' => {
-            'max_columns' => 1,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 1
           },
           'info' => {
             'spaces_before_argument' => {
@@ -105,7 +97,6 @@ 
$result_trees{'multitable_bracketed_prototype_empty_spaces_not_closed_comment'}
   ],
   'type' => 'document_root'
 };
-$result_trees{'multitable_bracketed_prototype_empty_spaces_not_closed_comment'}{'contents'}[0]{'contents'}[1]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'multitable_bracketed_prototype_empty_spaces_not_closed_comment'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'contents'}[0];
 
 
$result_texis{'multitable_bracketed_prototype_empty_spaces_not_closed_comment'} 
= '
 @multitable { @comment comment
diff --git 
a/tp/t/results/multitable/multitable_bracketed_prototype_not_closed.pl 
b/tp/t/results/multitable/multitable_bracketed_prototype_not_closed.pl
index bdeaae6f37..dd55781b1b 100644
--- a/tp/t/results/multitable/multitable_bracketed_prototype_not_closed.pl
+++ b/tp/t/results/multitable/multitable_bracketed_prototype_not_closed.pl
@@ -72,15 +72,7 @@ $result_trees{'multitable_bracketed_prototype_not_closed'} = 
{
             }
           ],
           'extra' => {
-            'max_columns' => 1,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 1
           },
           'info' => {
             'spaces_before_argument' => {
@@ -99,7 +91,6 @@ $result_trees{'multitable_bracketed_prototype_not_closed'} = {
   ],
   'type' => 'document_root'
 };
-$result_trees{'multitable_bracketed_prototype_not_closed'}{'contents'}[0]{'contents'}[1]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'multitable_bracketed_prototype_not_closed'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'contents'}[0];
 
 $result_texis{'multitable_bracketed_prototype_not_closed'} = '
 @multitable { a
diff --git 
a/tp/t/results/multitable/multitable_bracketed_prototype_not_closed_comment.pl 
b/tp/t/results/multitable/multitable_bracketed_prototype_not_closed_comment.pl
index 0d82425ef0..7ff68c8fca 100644
--- 
a/tp/t/results/multitable/multitable_bracketed_prototype_not_closed_comment.pl
+++ 
b/tp/t/results/multitable/multitable_bracketed_prototype_not_closed_comment.pl
@@ -76,16 +76,7 @@ 
$result_trees{'multitable_bracketed_prototype_not_closed_comment'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 1,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {},
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 1
           },
           'info' => {
             'spaces_before_argument' => {
@@ -104,8 +95,6 @@ 
$result_trees{'multitable_bracketed_prototype_not_closed_comment'} = {
   ],
   'type' => 'document_root'
 };
-$result_trees{'multitable_bracketed_prototype_not_closed_comment'}{'contents'}[0]{'contents'}[1]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'multitable_bracketed_prototype_not_closed_comment'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'multitable_bracketed_prototype_not_closed_comment'}{'contents'}[0]{'contents'}[1]{'extra'}{'prototypes'}[0]{'contents'}[1]
 = 
$result_trees{'multitable_bracketed_prototype_not_closed_comment'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'contents'}[1];
 
 $result_texis{'multitable_bracketed_prototype_not_closed_comment'} = '
 @multitable {a@c comment
diff --git 
a/tp/t/results/multitable/multitable_bracketed_prototype_not_closed_space_comment.pl
 
b/tp/t/results/multitable/multitable_bracketed_prototype_not_closed_space_comment.pl
index 7b52c5651c..b306e8fadb 100644
--- 
a/tp/t/results/multitable/multitable_bracketed_prototype_not_closed_space_comment.pl
+++ 
b/tp/t/results/multitable/multitable_bracketed_prototype_not_closed_space_comment.pl
@@ -76,16 +76,7 @@ 
$result_trees{'multitable_bracketed_prototype_not_closed_space_comment'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 1,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {},
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 1
           },
           'info' => {
             'spaces_before_argument' => {
@@ -104,8 +95,6 @@ 
$result_trees{'multitable_bracketed_prototype_not_closed_space_comment'} = {
   ],
   'type' => 'document_root'
 };
-$result_trees{'multitable_bracketed_prototype_not_closed_space_comment'}{'contents'}[0]{'contents'}[1]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'multitable_bracketed_prototype_not_closed_space_comment'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'multitable_bracketed_prototype_not_closed_space_comment'}{'contents'}[0]{'contents'}[1]{'extra'}{'prototypes'}[0]{'contents'}[1]
 = 
$result_trees{'multitable_bracketed_prototype_not_closed_space_comment'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'contents'}[1];
 
 $result_texis{'multitable_bracketed_prototype_not_closed_space_comment'} = '
 @multitable {a @c comment
diff --git a/tp/t/results/multitable/multitable_empty_bracketed_prototype.pl 
b/tp/t/results/multitable/multitable_empty_bracketed_prototype.pl
index ed3fec5a5e..f38610dd4c 100644
--- a/tp/t/results/multitable/multitable_empty_bracketed_prototype.pl
+++ b/tp/t/results/multitable/multitable_empty_bracketed_prototype.pl
@@ -78,18 +78,7 @@ $result_trees{'multitable_empty_bracketed_prototype'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 2
           },
           'info' => {
             'spaces_before_argument' => {
@@ -108,7 +97,6 @@ $result_trees{'multitable_empty_bracketed_prototype'} = {
   ],
   'type' => 'document_root'
 };
-$result_trees{'multitable_empty_bracketed_prototype'}{'contents'}[0]{'contents'}[1]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'multitable_empty_bracketed_prototype'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[2]{'contents'}[0];
 
 $result_texis{'multitable_empty_bracketed_prototype'} = '
 @multitable {} {a}
diff --git a/tp/t/results/multitable/multitable_figure_space.pl 
b/tp/t/results/multitable/multitable_figure_space.pl
index 4f05405d61..273bdcec68 100644
--- a/tp/t/results/multitable/multitable_figure_space.pl
+++ b/tp/t/results/multitable/multitable_figure_space.pl
@@ -260,21 +260,7 @@ $result_trees{'multitable_figure_space'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 2
           },
           'info' => {
             'spaces_before_argument' => {
@@ -293,8 +279,6 @@ $result_trees{'multitable_figure_space'} = {
   ],
   'type' => 'document_root'
 };
-$result_trees{'multitable_figure_space'}{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'multitable_figure_space'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'multitable_figure_space'}{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'multitable_figure_space'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[2]{'contents'}[0];
 
 $result_texis{'multitable_figure_space'} = '@multitable {999999999} 
{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}
 @item    55 @tab explanation
diff --git a/tp/t/results/multitable/multitable_in_example.pl 
b/tp/t/results/multitable/multitable_in_example.pl
index e0c48d3a57..5d2082a99a 100644
--- a/tp/t/results/multitable/multitable_in_example.pl
+++ b/tp/t/results/multitable/multitable_in_example.pl
@@ -239,21 +239,7 @@ $result_trees{'multitable_in_example'} = {
                 }
               ],
               'extra' => {
-                'max_columns' => 2,
-                'prototypes' => [
-                  {
-                    'contents' => [
-                      {}
-                    ],
-                    'type' => 'bracketed_multitable_prototype'
-                  },
-                  {
-                    'contents' => [
-                      {}
-                    ],
-                    'type' => 'bracketed_multitable_prototype'
-                  }
-                ]
+                'max_columns' => 2
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -305,8 +291,6 @@ $result_trees{'multitable_in_example'} = {
   ],
   'type' => 'document_root'
 };
-$result_trees{'multitable_in_example'}{'contents'}[0]{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'multitable_in_example'}{'contents'}[0]{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'multitable_in_example'}{'contents'}[0]{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'multitable_in_example'}{'contents'}[0]{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[2]{'contents'}[0];
 
 $result_texis{'multitable_in_example'} = '@example
 @multitable {AAA}  {BBB}
diff --git a/tp/t/results/multitable/multitable_not_closed.pl 
b/tp/t/results/multitable/multitable_not_closed.pl
index a9a78b3c41..0b1aee3e22 100644
--- a/tp/t/results/multitable/multitable_not_closed.pl
+++ b/tp/t/results/multitable/multitable_not_closed.pl
@@ -44,21 +44,7 @@ $result_trees{'multitable_not_closed'} = {
           ],
           'cmdname' => 'multitable',
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 2
           },
           'info' => {
             'spaces_before_argument' => {
@@ -77,8 +63,6 @@ $result_trees{'multitable_not_closed'} = {
   ],
   'type' => 'document_root'
 };
-$result_trees{'multitable_not_closed'}{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'multitable_not_closed'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'multitable_not_closed'}{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'multitable_not_closed'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[2]{'contents'}[0];
 
 $result_texis{'multitable_not_closed'} = '@multitable {r} {t}
 ';
diff --git a/tp/t/results/multitable/multitable_not_closed_item.pl 
b/tp/t/results/multitable/multitable_not_closed_item.pl
index 33286cb309..abb01a4961 100644
--- a/tp/t/results/multitable/multitable_not_closed_item.pl
+++ b/tp/t/results/multitable/multitable_not_closed_item.pl
@@ -85,21 +85,7 @@ $result_trees{'multitable_not_closed_item'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 2
           },
           'info' => {
             'spaces_before_argument' => {
@@ -118,8 +104,6 @@ $result_trees{'multitable_not_closed_item'} = {
   ],
   'type' => 'document_root'
 };
-$result_trees{'multitable_not_closed_item'}{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'multitable_not_closed_item'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'multitable_not_closed_item'}{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'multitable_not_closed_item'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[2]{'contents'}[0];
 
 $result_texis{'multitable_not_closed_item'} = '@multitable {r} {t}
 @item rt 
diff --git a/tp/t/results/multitable/multitable_not_closed_item_tab.pl 
b/tp/t/results/multitable/multitable_not_closed_item_tab.pl
index 871da60316..2b8428575d 100644
--- a/tp/t/results/multitable/multitable_not_closed_item_tab.pl
+++ b/tp/t/results/multitable/multitable_not_closed_item_tab.pl
@@ -110,21 +110,7 @@ $result_trees{'multitable_not_closed_item_tab'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 2
           },
           'info' => {
             'spaces_before_argument' => {
@@ -143,8 +129,6 @@ $result_trees{'multitable_not_closed_item_tab'} = {
   ],
   'type' => 'document_root'
 };
-$result_trees{'multitable_not_closed_item_tab'}{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'multitable_not_closed_item_tab'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'multitable_not_closed_item_tab'}{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'multitable_not_closed_item_tab'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[2]{'contents'}[0];
 
 $result_texis{'multitable_not_closed_item_tab'} = '@multitable {r} {t}
 @item rt @tab ds
diff --git a/tp/t/results/multitable/multitable_one_column_too_much_cells.pl 
b/tp/t/results/multitable/multitable_one_column_too_much_cells.pl
index c71fe4a29f..627ce144cf 100644
--- a/tp/t/results/multitable/multitable_one_column_too_much_cells.pl
+++ b/tp/t/results/multitable/multitable_one_column_too_much_cells.pl
@@ -292,15 +292,7 @@ $result_trees{'multitable_one_column_too_much_cells'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 1,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 1
           },
           'info' => {
             'spaces_before_argument' => {
@@ -319,7 +311,6 @@ $result_trees{'multitable_one_column_too_much_cells'} = {
   ],
   'type' => 'document_root'
 };
-$result_trees{'multitable_one_column_too_much_cells'}{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'multitable_one_column_too_much_cells'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'contents'}[0];
 
 $result_texis{'multitable_one_column_too_much_cells'} = '@multitable {a}
 @item a  additional tab  other additional tab  3rd  additiona tab
diff --git a/tp/t/results/multitable/not_letters_in_prototype.pl 
b/tp/t/results/multitable/not_letters_in_prototype.pl
index eee356d080..2ab6eda113 100644
--- a/tp/t/results/multitable/not_letters_in_prototype.pl
+++ b/tp/t/results/multitable/not_letters_in_prototype.pl
@@ -30,67 +30,33 @@ $result_trees{'not_letters_in_prototype'} = {
           'contents' => [
             {
               'contents' => [
+                {
+                  'text' => ' ',
+                  'type' => 'ignorable_spaces_after_command'
+                },
                 {
                   'contents' => [
                     {
-                      'cmdname' => 'item',
-                      'contents' => [
-                        {
-                          'text' => ' ',
-                          'type' => 'ignorable_spaces_after_command'
-                        },
-                        {
-                          'contents' => [
-                            {
-                              'text' => '1.3 '
-                            }
-                          ],
-                          'type' => 'paragraph'
-                        }
-                      ],
-                      'extra' => {
-                        'cell_number' => 1
-                      },
-                      'source_info' => {
-                        'file_name' => '',
-                        'line_nr' => 2,
-                        'macro' => ''
-                      }
-                    },
+                      'text' => '1.3 '
+                    }
+                  ],
+                  'type' => 'paragraph'
+                },
+                {
+                  'text' => ' ',
+                  'type' => 'ignorable_spaces_after_command'
+                },
+                {
+                  'contents' => [
                     {
-                      'cmdname' => 'tab',
-                      'contents' => [
-                        {
-                          'text' => ' ',
-                          'type' => 'ignorable_spaces_after_command'
-                        },
-                        {
-                          'contents' => [
-                            {
-                              'text' => '5-6
+                      'text' => '5-6
 '
-                            }
-                          ],
-                          'type' => 'paragraph'
-                        }
-                      ],
-                      'extra' => {
-                        'cell_number' => 2
-                      },
-                      'source_info' => {
-                        'file_name' => '',
-                        'line_nr' => 2,
-                        'macro' => ''
-                      }
                     }
                   ],
-                  'extra' => {
-                    'row_number' => 1
-                  },
-                  'type' => 'row'
+                  'type' => 'paragraph'
                 }
               ],
-              'type' => 'multitable_body'
+              'type' => 'before_item'
             },
             {
               'args' => [
@@ -126,17 +92,7 @@ $result_trees{'not_letters_in_prototype'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'text' => '1.3',
-                'type' => 'row_prototype'
-              },
-              {
-                'text' => '5-6',
-                'type' => 'row_prototype'
-              }
-            ]
+            'max_columns' => 0
           },
           'info' => {
             'spaces_before_argument' => {
@@ -157,7 +113,7 @@ $result_trees{'not_letters_in_prototype'} = {
 };
 
 $result_texis{'not_letters_in_prototype'} = '@multitable  1.3  5-6
-@item 1.3 @tab 5-6
+ 1.3  5-6
 @end multitable
 ';
 
@@ -165,27 +121,65 @@ $result_texis{'not_letters_in_prototype'} = '@multitable  
1.3  5-6
 $result_texts{'not_letters_in_prototype'} = '1.3 5-6
 ';
 
-$result_errors{'not_letters_in_prototype'} = [];
+$result_errors{'not_letters_in_prototype'} = [
+  {
+    'error_line' => 'warning: empty multitable
+',
+    'file_name' => '',
+    'line_nr' => 1,
+    'macro' => '',
+    'text' => 'empty multitable',
+    'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: @item in empty multitable
+',
+    'file_name' => '',
+    'line_nr' => 2,
+    'macro' => '',
+    'text' => '@item in empty multitable',
+    'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: @tab in empty multitable
+',
+    'file_name' => '',
+    'line_nr' => 2,
+    'macro' => '',
+    'text' => '@tab in empty multitable',
+    'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: @multitable has text but no @item
+',
+    'file_name' => '',
+    'line_nr' => 1,
+    'macro' => '',
+    'text' => '@multitable has text but no @item',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'not_letters_in_prototype'} = {};
 
 
 
-$result_converted{'plaintext'}->{'not_letters_in_prototype'} = '1.35-6
+$result_converted{'plaintext'}->{'not_letters_in_prototype'} = '1.3
+5-6
 ';
 
 
 $result_converted{'html_text'}->{'not_letters_in_prototype'} = '<table 
class="multitable">
-<tbody><tr><td>1.3</td><td>5-6</td></tr>
-</tbody>
+<tr><td>1.3 <p>5-6
+</p></td></tr>
 </table>
 ';
 
 
 $result_converted{'xml'}->{'not_letters_in_prototype'} = '<multitable spaces=" 
 " endspaces=" "><columnprototypes>1.3  5-6</columnprototypes>
-<tbody><row><entry command="item"> <para>1.3 </para></entry><entry 
command="tab"> <para>5-6
-</para></entry></row></tbody></multitable>
+<beforefirstitem> <para>1.3 </para> <para>5-6
+</para></beforefirstitem></multitable>
 ';
 
 1;
diff --git a/tp/t/results/multitable/paragraph_in_cells.pl 
b/tp/t/results/multitable/paragraph_in_cells.pl
index 02f9f1a591..296b4589dd 100644
--- a/tp/t/results/multitable/paragraph_in_cells.pl
+++ b/tp/t/results/multitable/paragraph_in_cells.pl
@@ -229,21 +229,7 @@ $result_trees{'paragraph_in_cells'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 2
           },
           'info' => {
             'spaces_before_argument' => {
@@ -262,8 +248,6 @@ $result_trees{'paragraph_in_cells'} = {
   ],
   'type' => 'document_root'
 };
-$result_trees{'paragraph_in_cells'}{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'paragraph_in_cells'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'paragraph_in_cells'}{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'paragraph_in_cells'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[2]{'contents'}[0];
 
 $result_texis{'paragraph_in_cells'} = '@multitable {AAA}  {BBB}
 @item truc @tab bidule
diff --git a/tp/t/results/multitable/prototype_brace_no_brace.pl 
b/tp/t/results/multitable/prototype_brace_no_brace.pl
index 5b1815df43..7eac873cc6 100644
--- a/tp/t/results/multitable/prototype_brace_no_brace.pl
+++ b/tp/t/results/multitable/prototype_brace_no_brace.pl
@@ -70,19 +70,7 @@ $result_trees{'prototype_brace_no_brace'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'text' => 'bb',
-                'type' => 'row_prototype'
-              }
-            ]
+            'max_columns' => 1
           },
           'info' => {
             'spaces_before_argument' => {
@@ -101,7 +89,6 @@ $result_trees{'prototype_brace_no_brace'} = {
   ],
   'type' => 'document_root'
 };
-$result_trees{'prototype_brace_no_brace'}{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'prototype_brace_no_brace'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'contents'}[0];
 
 $result_texis{'prototype_brace_no_brace'} = '@multitable {aa} bb
 @end multitable
diff --git a/tp/t/results/multitable/prototype_brace_no_brace_comment.pl 
b/tp/t/results/multitable/prototype_brace_no_brace_comment.pl
index 3b00603b70..2fb68c274b 100644
--- a/tp/t/results/multitable/prototype_brace_no_brace_comment.pl
+++ b/tp/t/results/multitable/prototype_brace_no_brace_comment.pl
@@ -76,19 +76,7 @@ $result_trees{'prototype_brace_no_brace_comment'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'text' => 'bb',
-                'type' => 'row_prototype'
-              }
-            ]
+            'max_columns' => 1
           },
           'info' => {
             'spaces_before_argument' => {
@@ -107,7 +95,6 @@ $result_trees{'prototype_brace_no_brace_comment'} = {
   ],
   'type' => 'document_root'
 };
-$result_trees{'prototype_brace_no_brace_comment'}{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'prototype_brace_no_brace_comment'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'contents'}[0];
 
 $result_texis{'prototype_brace_no_brace_comment'} = '@multitable {aa} 
bb@comment cc
 @end multitable
diff --git a/tp/t/results/multitable/prototype_no_brace.pl 
b/tp/t/results/multitable/prototype_no_brace.pl
index a061c7119e..747c05a63d 100644
--- a/tp/t/results/multitable/prototype_no_brace.pl
+++ b/tp/t/results/multitable/prototype_no_brace.pl
@@ -83,21 +83,7 @@ $result_trees{'prototype_no_brace'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 3,
-            'prototypes' => [
-              {
-                'text' => 'aa',
-                'type' => 'row_prototype'
-              },
-              {
-                'text' => 'b',
-                'type' => 'row_prototype'
-              },
-              {
-                'text' => 'cc',
-                'type' => 'row_prototype'
-              }
-            ]
+            'max_columns' => 0
           },
           'info' => {
             'spaces_before_argument' => {
@@ -133,6 +119,15 @@ $result_errors{'prototype_no_brace'} = [
     'macro' => '',
     'text' => 'unexpected argument on @multitable line: @var{FF}',
     'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: empty multitable
+',
+    'file_name' => '',
+    'line_nr' => 1,
+    'macro' => '',
+    'text' => 'empty multitable',
+    'type' => 'warning'
   }
 ];
 
diff --git a/tp/t/results/multitable/w_in_multitable.pl 
b/tp/t/results/multitable/w_in_multitable.pl
index c436267dff..f9be54627e 100644
--- a/tp/t/results/multitable/w_in_multitable.pl
+++ b/tp/t/results/multitable/w_in_multitable.pl
@@ -165,21 +165,7 @@ $result_trees{'w_in_multitable'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 2
           },
           'info' => {
             'spaces_before_argument' => {
@@ -198,8 +184,6 @@ $result_trees{'w_in_multitable'} = {
   ],
   'type' => 'document_root'
 };
-$result_trees{'w_in_multitable'}{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'w_in_multitable'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'w_in_multitable'}{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'w_in_multitable'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[2]{'contents'}[0];
 
 $result_texis{'w_in_multitable'} = '@multitable {aaaaaaaaa} {bbbbbbbbbbb}
 @item @w{aaaaaaaa
diff --git a/tp/t/results/plaintext_tests/empty_multitable_in_itemize.pl 
b/tp/t/results/plaintext_tests/empty_multitable_in_itemize.pl
index 92ec657005..dd15befb74 100644
--- a/tp/t/results/plaintext_tests/empty_multitable_in_itemize.pl
+++ b/tp/t/results/plaintext_tests/empty_multitable_in_itemize.pl
@@ -97,8 +97,7 @@ $result_trees{'empty_multitable_in_itemize'} = {
                     }
                   ],
                   'extra' => {
-                    'max_columns' => 0,
-                    'prototypes' => []
+                    'max_columns' => 0
                   },
                   'source_info' => {
                     'file_name' => '',
diff --git a/tp/t/results/plaintext_tests/multitable.pl 
b/tp/t/results/plaintext_tests/multitable.pl
index fb51f324b4..5d551812be 100644
--- a/tp/t/results/plaintext_tests/multitable.pl
+++ b/tp/t/results/plaintext_tests/multitable.pl
@@ -201,21 +201,7 @@ $result_trees{'multitable'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 2
           },
           'info' => {
             'spaces_before_argument' => {
@@ -1138,21 +1124,7 @@ $result_trees{'multitable'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 2
           },
           'info' => {
             'spaces_before_argument' => {
@@ -1421,21 +1393,7 @@ $result_trees{'multitable'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 2
           },
           'info' => {
             'spaces_before_argument' => {
@@ -1588,15 +1546,7 @@ $result_trees{'multitable'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 1,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 1
           },
           'info' => {
             'spaces_before_argument' => {
@@ -1816,21 +1766,7 @@ $result_trees{'multitable'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 2
           },
           'info' => {
             'spaces_before_argument' => {
@@ -1849,15 +1785,6 @@ $result_trees{'multitable'} = {
   ],
   'type' => 'document_root'
 };
-$result_trees{'multitable'}{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'multitable'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'multitable'}{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'multitable'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[2]{'contents'}[0];
-$result_trees{'multitable'}{'contents'}[0]{'contents'}[2]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'multitable'}{'contents'}[0]{'contents'}[2]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'multitable'}{'contents'}[0]{'contents'}[2]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'multitable'}{'contents'}[0]{'contents'}[2]{'args'}[0]{'contents'}[2]{'contents'}[0];
-$result_trees{'multitable'}{'contents'}[0]{'contents'}[4]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'multitable'}{'contents'}[0]{'contents'}[4]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'multitable'}{'contents'}[0]{'contents'}[4]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'multitable'}{'contents'}[0]{'contents'}[4]{'args'}[0]{'contents'}[2]{'contents'}[0];
-$result_trees{'multitable'}{'contents'}[0]{'contents'}[6]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'multitable'}{'contents'}[0]{'contents'}[6]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'multitable'}{'contents'}[0]{'contents'}[8]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'multitable'}{'contents'}[0]{'contents'}[8]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'multitable'}{'contents'}[0]{'contents'}[8]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'multitable'}{'contents'}[0]{'contents'}[8]{'args'}[0]{'contents'}[2]{'contents'}[0];
 
 $result_texis{'multitable'} = '@multitable {truc}    {bidule}
 @item truc @tab bidule
diff --git 
a/tp/t/results/plaintext_tests/multitable_in_example_extraneous_item_tab.pl 
b/tp/t/results/plaintext_tests/multitable_in_example_extraneous_item_tab.pl
index e0e76394e6..b262e132a4 100644
--- a/tp/t/results/plaintext_tests/multitable_in_example_extraneous_item_tab.pl
+++ b/tp/t/results/plaintext_tests/multitable_in_example_extraneous_item_tab.pl
@@ -47,94 +47,52 @@ $result_trees{'multitable_in_example_extraneous_item_tab'} 
= {
                     {
                       'contents' => [
                         {
-                          'cmdname' => 'item',
-                          'contents' => [
-                            {
-                              'contents' => [
-                                {
-                                  'text' => ' ',
-                                  'type' => 'ignorable_spaces_after_command'
-                                },
-                                {
-                                  'text' => 'ita '
-                                }
-                              ],
-                              'type' => 'preformatted'
-                            },
-                            {
-                              'contents' => [
-                                {
-                                  'text' => ' ',
-                                  'type' => 'ignorable_spaces_after_command'
-                                },
-                                {
-                                  'text' => 'tmp
+                          'text' => ' ',
+                          'type' => 'ignorable_spaces_after_command'
+                        },
+                        {
+                          'text' => 'ita '
+                        }
+                      ],
+                      'type' => 'preformatted'
+                    },
+                    {
+                      'contents' => [
+                        {
+                          'text' => ' ',
+                          'type' => 'ignorable_spaces_after_command'
+                        },
+                        {
+                          'text' => 'tmp
 '
-                                }
-                              ],
-                              'type' => 'preformatted'
-                            }
-                          ],
-                          'extra' => {
-                            'cell_number' => 1
-                          },
-                          'source_info' => {
-                            'file_name' => '',
-                            'line_nr' => 3,
-                            'macro' => ''
-                          }
                         }
                       ],
-                      'extra' => {
-                        'row_number' => 1
-                      },
-                      'type' => 'row'
+                      'type' => 'preformatted'
                     },
                     {
                       'contents' => [
                         {
-                          'cmdname' => 'item',
-                          'contents' => [
-                            {
-                              'contents' => [
-                                {
-                                  'text' => ' ',
-                                  'type' => 'ignorable_spaces_after_command'
-                                },
-                                {
-                                  'text' => 'secit '
-                                }
-                              ],
-                              'type' => 'preformatted'
-                            },
-                            {
-                              'contents' => [
-                                {
-                                  'text' => '
+                          'text' => ' ',
+                          'type' => 'ignorable_spaces_after_command'
+                        },
+                        {
+                          'text' => 'secit '
+                        }
+                      ],
+                      'type' => 'preformatted'
+                    },
+                    {
+                      'contents' => [
+                        {
+                          'text' => '
 ',
-                                  'type' => 'ignorable_spaces_after_command'
-                                }
-                              ],
-                              'type' => 'preformatted'
-                            }
-                          ],
-                          'extra' => {
-                            'cell_number' => 1
-                          },
-                          'source_info' => {
-                            'file_name' => '',
-                            'line_nr' => 4,
-                            'macro' => ''
-                          }
+                          'type' => 'ignorable_spaces_after_command'
                         }
                       ],
-                      'extra' => {
-                        'row_number' => 2
-                      },
-                      'type' => 'row'
+                      'type' => 'preformatted'
                     }
                   ],
-                  'type' => 'multitable_body'
+                  'type' => 'before_item'
                 },
                 {
                   'args' => [
@@ -170,13 +128,7 @@ $result_trees{'multitable_in_example_extraneous_item_tab'} 
= {
                 }
               ],
               'extra' => {
-                'max_columns' => 1,
-                'prototypes' => [
-                  {
-                    'text' => 'a',
-                    'type' => 'row_prototype'
-                  }
-                ]
+                'max_columns' => 0
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -237,8 +189,8 @@ $result_trees{'multitable_in_example_extraneous_item_tab'} 
= {
 
 $result_texis{'multitable_in_example_extraneous_item_tab'} = '@example
 @multitable a
-@item ita  tmp
-@item secit 
+ ita  tmp
+ secit 
 @end multitable
 @end example
 ';
@@ -249,22 +201,58 @@ secit ';
 
 $result_errors{'multitable_in_example_extraneous_item_tab'} = [
   {
-    'error_line' => 'too many columns in multitable item (max 1)
+    'error_line' => 'warning: empty multitable
+',
+    'file_name' => '',
+    'line_nr' => 2,
+    'macro' => '',
+    'text' => 'empty multitable',
+    'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: @item in empty multitable
+',
+    'file_name' => '',
+    'line_nr' => 3,
+    'macro' => '',
+    'text' => '@item in empty multitable',
+    'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: @tab in empty multitable
 ',
     'file_name' => '',
     'line_nr' => 3,
     'macro' => '',
-    'text' => 'too many columns in multitable item (max 1)',
-    'type' => 'error'
+    'text' => '@tab in empty multitable',
+    'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: @item in empty multitable
+',
+    'file_name' => '',
+    'line_nr' => 4,
+    'macro' => '',
+    'text' => '@item in empty multitable',
+    'type' => 'warning'
   },
   {
-    'error_line' => 'too many columns in multitable item (max 1)
+    'error_line' => 'warning: @tab in empty multitable
 ',
     'file_name' => '',
     'line_nr' => 4,
     'macro' => '',
-    'text' => 'too many columns in multitable item (max 1)',
-    'type' => 'error'
+    'text' => '@tab in empty multitable',
+    'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: @multitable has text but no @item
+',
+    'file_name' => '',
+    'line_nr' => 2,
+    'macro' => '',
+    'text' => '@multitable has text but no @item',
+    'type' => 'warning'
   }
 ];
 
diff --git 
a/tp/t/results/plaintext_tests/multitable_in_example_extraneous_tab.pl 
b/tp/t/results/plaintext_tests/multitable_in_example_extraneous_tab.pl
index 6722125c42..53b2edfee8 100644
--- a/tp/t/results/plaintext_tests/multitable_in_example_extraneous_tab.pl
+++ b/tp/t/results/plaintext_tests/multitable_in_example_extraneous_tab.pl
@@ -175,15 +175,7 @@ $result_trees{'multitable_in_example_extraneous_tab'} = {
                 }
               ],
               'extra' => {
-                'max_columns' => 1,
-                'prototypes' => [
-                  {
-                    'contents' => [
-                      {}
-                    ],
-                    'type' => 'bracketed_multitable_prototype'
-                  }
-                ]
+                'max_columns' => 1
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -241,7 +233,6 @@ $result_trees{'multitable_in_example_extraneous_tab'} = {
   ],
   'type' => 'document_root'
 };
-$result_trees{'multitable_in_example_extraneous_tab'}{'contents'}[0]{'contents'}[0]{'contents'}[0]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'multitable_in_example_extraneous_tab'}{'contents'}[0]{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'contents'}[0];
 
 $result_texis{'multitable_in_example_extraneous_tab'} = '@example
 @multitable {a}
diff --git a/tp/t/results/plaintext_tests/nested_multitable.pl 
b/tp/t/results/plaintext_tests/nested_multitable.pl
index 4e25ae4de1..feb4bfdff1 100644
--- a/tp/t/results/plaintext_tests/nested_multitable.pl
+++ b/tp/t/results/plaintext_tests/nested_multitable.pl
@@ -200,21 +200,7 @@ $result_trees{'nested_multitable'} = {
                             }
                           ],
                           'extra' => {
-                            'max_columns' => 2,
-                            'prototypes' => [
-                              {
-                                'contents' => [
-                                  {}
-                                ],
-                                'type' => 'bracketed_multitable_prototype'
-                              },
-                              {
-                                'contents' => [
-                                  {}
-                                ],
-                                'type' => 'bracketed_multitable_prototype'
-                              }
-                            ]
+                            'max_columns' => 2
                           },
                           'info' => {
                             'spaces_before_argument' => {
@@ -369,23 +355,7 @@ $result_trees{'nested_multitable'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {},
-                  {},
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 2
           },
           'info' => {
             'spaces_before_argument' => {
@@ -404,12 +374,6 @@ $result_trees{'nested_multitable'} = {
   ],
   'type' => 'document_root'
 };
-$result_trees{'nested_multitable'}{'contents'}[0]{'contents'}[1]{'contents'}[0]{'contents'}[0]{'contents'}[0]{'contents'}[1]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'nested_multitable'}{'contents'}[0]{'contents'}[1]{'contents'}[0]{'contents'}[0]{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'nested_multitable'}{'contents'}[0]{'contents'}[1]{'contents'}[0]{'contents'}[0]{'contents'}[0]{'contents'}[1]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'nested_multitable'}{'contents'}[0]{'contents'}[1]{'contents'}[0]{'contents'}[0]{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[2]{'contents'}[0];
-$result_trees{'nested_multitable'}{'contents'}[0]{'contents'}[1]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'nested_multitable'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'nested_multitable'}{'contents'}[0]{'contents'}[1]{'extra'}{'prototypes'}[0]{'contents'}[1]
 = 
$result_trees{'nested_multitable'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'contents'}[1];
-$result_trees{'nested_multitable'}{'contents'}[0]{'contents'}[1]{'extra'}{'prototypes'}[0]{'contents'}[2]
 = 
$result_trees{'nested_multitable'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'contents'}[2];
-$result_trees{'nested_multitable'}{'contents'}[0]{'contents'}[1]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'nested_multitable'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[2]{'contents'}[0];
 
 $result_texis{'nested_multitable'} = '
 @multitable {truc AAAA @  machin}    {bidule}
diff --git a/tp/t/results/xml_tests/commands_and_spaces.pl 
b/tp/t/results/xml_tests/commands_and_spaces.pl
index 444db2c044..0633c21f5a 100644
--- a/tp/t/results/xml_tests/commands_and_spaces.pl
+++ b/tp/t/results/xml_tests/commands_and_spaces.pl
@@ -956,33 +956,7 @@ $result_trees{'commands_and_spaces'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 5,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'text' => 'gg',
-                'type' => 'row_prototype'
-              },
-              {
-                'text' => 'hh',
-                'type' => 'row_prototype'
-              },
-              {
-                'text' => 'j',
-                'type' => 'row_prototype'
-              }
-            ]
+            'max_columns' => 2
           },
           'info' => {
             'spaces_before_argument' => {
@@ -1717,8 +1691,6 @@ 
$result_trees{'commands_and_spaces'}{'contents'}[1]{'contents'}[23]{'contents'}[
 
$result_trees{'commands_and_spaces'}{'contents'}[1]{'contents'}[23]{'extra'}{'caption'}
 = 
$result_trees{'commands_and_spaces'}{'contents'}[1]{'contents'}[23]{'contents'}[1];
 
$result_trees{'commands_and_spaces'}{'contents'}[1]{'contents'}[23]{'extra'}{'shortcaption'}
 = 
$result_trees{'commands_and_spaces'}{'contents'}[1]{'contents'}[23]{'contents'}[3];
 
$result_trees{'commands_and_spaces'}{'contents'}[1]{'contents'}[25]{'extra'}{'columnfractions'}
 = 
$result_trees{'commands_and_spaces'}{'contents'}[1]{'contents'}[25]{'args'}[0]{'contents'}[0];
-$result_trees{'commands_and_spaces'}{'contents'}[1]{'contents'}[27]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'commands_and_spaces'}{'contents'}[1]{'contents'}[27]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'commands_and_spaces'}{'contents'}[1]{'contents'}[27]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'commands_and_spaces'}{'contents'}[1]{'contents'}[27]{'args'}[0]{'contents'}[2]{'contents'}[0];
 
$result_trees{'commands_and_spaces'}{'contents'}[1]{'contents'}[35]{'extra'}{'command_as_argument'}
 = 
$result_trees{'commands_and_spaces'}{'contents'}[1]{'contents'}[35]{'args'}[0]{'contents'}[0];
 
$result_trees{'commands_and_spaces'}{'contents'}[1]{'contents'}[43]{'contents'}[0]{'extra'}{'def_index_element'}
 = 
$result_trees{'commands_and_spaces'}{'contents'}[1]{'contents'}[43]{'contents'}[0]{'args'}[0]{'contents'}[2];
 
$result_trees{'commands_and_spaces'}{'contents'}[1]{'contents'}[43]{'contents'}[0]{'extra'}{'element_node'}
 = $result_trees{'commands_and_spaces'}{'contents'}[1];
diff --git a/tp/t/results/xml_tests/comments_on_block_command_lines.pl 
b/tp/t/results/xml_tests/comments_on_block_command_lines.pl
index fbb8530258..82f1fc1ce5 100644
--- a/tp/t/results/xml_tests/comments_on_block_command_lines.pl
+++ b/tp/t/results/xml_tests/comments_on_block_command_lines.pl
@@ -1831,21 +1831,7 @@ $result_trees{'comments_on_block_command_lines'} = {
             }
           ],
           'extra' => {
-            'max_columns' => 2,
-            'prototypes' => [
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              },
-              {
-                'contents' => [
-                  {}
-                ],
-                'type' => 'bracketed_multitable_prototype'
-              }
-            ]
+            'max_columns' => 2
           },
           'info' => {
             'spaces_before_argument' => {
@@ -2128,8 +2114,6 @@ 
$result_trees{'comments_on_block_command_lines'}{'contents'}[0]{'contents'}[4]{'
 
$result_trees{'comments_on_block_command_lines'}{'contents'}[0]{'contents'}[6]{'extra'}{'command_as_argument'}
 = 
$result_trees{'comments_on_block_command_lines'}{'contents'}[0]{'contents'}[6]{'args'}[0]{'contents'}[0];
 
$result_trees{'comments_on_block_command_lines'}{'contents'}[0]{'contents'}[12]{'extra'}{'command_as_argument'}
 = 
$result_trees{'comments_on_block_command_lines'}{'contents'}[0]{'contents'}[12]{'args'}[0]{'contents'}[0];
 
$result_trees{'comments_on_block_command_lines'}{'contents'}[0]{'contents'}[30]{'extra'}{'columnfractions'}
 = 
$result_trees{'comments_on_block_command_lines'}{'contents'}[0]{'contents'}[30]{'args'}[0]{'contents'}[0];
-$result_trees{'comments_on_block_command_lines'}{'contents'}[0]{'contents'}[32]{'extra'}{'prototypes'}[0]{'contents'}[0]
 = 
$result_trees{'comments_on_block_command_lines'}{'contents'}[0]{'contents'}[32]{'args'}[0]{'contents'}[0]{'contents'}[0];
-$result_trees{'comments_on_block_command_lines'}{'contents'}[0]{'contents'}[32]{'extra'}{'prototypes'}[1]{'contents'}[0]
 = 
$result_trees{'comments_on_block_command_lines'}{'contents'}[0]{'contents'}[32]{'args'}[0]{'contents'}[2]{'contents'}[0];
 
 $result_texis{'comments_on_block_command_lines'} = '@itemize @c comm
 @item itemize it



reply via email to

[Prev in Thread] Current Thread [Next in Thread]