The following Texinfo examples were processed into
the shown Info output using:

  makeinfo /path/to/file/containing/example

where makeinfo has the following version:

  makeinfo (GNU texinfo) 4.13

Also, the examples (including blank lines) are indented
by 2 spaces relative to the surrounding non-example text
and offset from the surrounding non-example text by one
blank line.

###################
#### Example 0 ####
###################

  @setfilename test.info
  A
  @example
  B
  @end example
  C
  @bye

produces:

  This is test.info, produced by makeinfo version 4.13 from test.texinfo.
  
  A
       B
     C
  

Is there a particular reason why the `...@bye' line yields a
blank line? Why not just output nothing at all, thereby
producing this:

  This is test.info, produced by makeinfo version 4.13 from test.texinfo.
  
  A
       B
     C

which no longer has the last blank line (though, note that
the last line still ends with a newline).

###################
#### Example 1 ####
###################

  @setfilename test.info
  @macro Example
  @example
  @end macro
  @macro endExample
  @end example
  @end macro
  A
  @Example
  B
  @endExample
  C
  @bye


produces:

  This is test.info, produced by makeinfo version 4.13 from test.texinfo.
  
  A
  
       B
  
     C
  

Now, compare that output to the output of Example 0:

  This is test.info, produced by makeinfo version 4.13 from test.texinfo.
  
  A
       B
     C
  

The macros have introduced whitespace, namely a blank line
between `A' and `B' and a blank line between `B' and `C'.

Is this not a bug? Is it not at least inconsistent behavior?

According to:

  info texinfo 'Defining Macros'

we have:

  You use the Texinfo `...@macro' command to define a macro, like this:
  
       @macro MACRONAME{PARAM1, PARAM2, ...}
       TEXT ... \PARAM1\ ...
       @end macro
  
  ...
  
    The newlines after the `...@macro' line and before the `...@end macro' line
  are ignored, that is, not included in the macro body.  All other
  whitespace is treated according to the usual Texinfo rules.

This suggests that it is a bug.

###################
#### Example 2 ####
###################

  @setfilename test.info
  @macro Example
  @example
  
  
  
  
  @end macro
  @macro endExample
  @end example
  @end macro
  A
  @Example
  B
  @endExample
  C
  @bye

produces:

  This is test.info, produced by makeinfo version 4.13 from test.texinfo.

  A
  
  
  
  
       B
  
     C
  
As you can see, the blank lines were copied from the input to the output;
however, this contradicts the Texinfo manual as quoted earlier:
  
    The newlines after the `...@macro' line and before the `...@end macro' line
  are ignored, that is, not included in the macro body.  All other
  whitespace is treated according to the usual Texinfo rules.

Perhaps the manual should read:
  
    The newlines after the `...@macro' line are ingnored (that is, they are
    not included in the macro body). Similarly, newlines before the
    `...@end macro' line are ignored unless they are within an unended
    environment within the macro body.  All other whitespace is treated
    according to the usual Texinfo rules.

But wait!

###################
#### Example 3 ####
###################

  @setfilename test.info
  @macro b
  @example
  B
  @end example
  @end macro
  A
  @b
  C
  @bye


produces:

This is test.info, produced by makeinfo version 4.13 from test.texinfo.

  A
       B
  
     C
  

Again, compare that to the output of Example 0:

  This is test.info, produced by makeinfo version 4.13 from test.texinfo.
  
  A
       B
     C
  
The macro has introduced whitespace, namely a blank line
between `B' and `C'; I don't have a rationalization
for this one.

###################
#### Example 4 ####
###################

  @setfilename test.info
  @macro b
  B
  @end macro
  A
  @example
  @b
  @end example
  C
  @bye

produces:

  This is test.info, produced by makeinfo version 4.13 from test.texinfo.
  
  A
       B
     C
  

which is as expected; the Examples 3 and 4  suggest that
there is a bug triggered when `...@example' (and possibly
other) environments are used within macro bodies.

Sincerely,
Michael Witten

Reply via email to