diff options
author | Karl Berry <karl@gnu.org> | 1998-09-17 17:25:42 +0000 |
---|---|---|
committer | Karl Berry <karl@gnu.org> | 1998-09-17 17:25:42 +0000 |
commit | 7a43e6cd3088a1edba0603b3dad276a9aef709ff (patch) | |
tree | 6d6822907b2131827ca27bbb89e0960a5dce85ff /texinfo.tex | |
parent | 84d159bb642a5806736efcf6b8395a4d92e3a2d1 (diff) | |
download | gunmake-7a43e6cd3088a1edba0603b3dad276a9aef709ff.tar.gz |
* texinfo.tex: Fix @macro expansion of @code with _ in the
argument.
From: Zack Weinberg <zack@rabi.columbia.edu>.
Diffstat (limited to 'texinfo.tex')
-rw-r--r-- | texinfo.tex | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/texinfo.tex b/texinfo.tex index 7d3a33c..2cc8256 100644 --- a/texinfo.tex +++ b/texinfo.tex @@ -4514,6 +4514,17 @@ width0pt\relax} \fi \catcode`\^^M=12 \usembodybackslash} +\def\macroargctxt{% + \catcode`\~=12 + \catcode`\^=12 + \catcode`\_=12 + \catcode`\|=12 + \catcode`\<=12 + \catcode`\>=12 + \catcode`\+=12 + \catcode`\@=12 + \catcode`\\=12} + % \mbodybackslash is the definition of \ in @macro bodies. % It maps \foo\ => \csname macarg.foo\endcsname => #N % where N is the macro parameter number. @@ -4610,17 +4621,21 @@ width0pt\relax} \fi \noexpand\scanmacro{\temp}}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt \noexpand\braceorline\csname\the\macname xxx\endcsname}% \expandafter\xdef\csname\the\macname xxx\endcsname##1{% - \noexpand\scanmacro{\temp}}% + \egroup\noexpand\scanmacro{\temp}}% \else % many - \expandafter\xdef\csname\the\macname\endcsname##1{% + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \noexpand\csname\the\macname xx\endcsname} + \expandafter\xdef\csname\the\macname xx\endcsname##1{% \csname\the\macname xxx\endcsname ##1,}% \expandafter\expandafter \expandafter\xdef \expandafter\expandafter \csname\the\macname xxx\endcsname - \paramlist{\noexpand\scanmacro{\temp}}% + \paramlist{\egroup\noexpand\scanmacro{\temp}}% \fi \else \ifcase\paramno @@ -4630,18 +4645,24 @@ width0pt\relax} \fi \noexpand\scanmacro{\temp}\egroup}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt \noexpand\braceorline\csname\the\macname xxx\endcsname}% \expandafter\xdef\csname\the\macname xxx\endcsname##1{% + \egroup \noexpand\norecurse{\the\macname}% \noexpand\scanmacro{\temp}\egroup}% \else % many - \expandafter\xdef\csname\the\macname\endcsname##1{% + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \noexpand\csname\the\macname xx\endcsname} + \expandafter\xdef\csname\the\macname xx\endcsname##1{% \csname\the\macname xxx\endcsname ##1,}% \expandafter\expandafter \expandafter\xdef \expandafter\expandafter \csname\the\macname xxx\endcsname \paramlist{% + \egroup \noexpand\norecurse{\the\macname}% \noexpand\scanmacro{\temp}\egroup}% \fi |