これを解決策として提案しますが、引用エラーが含まれていないことを保証するものではありません.
define(`UL',`<ul>IT($@)<\ul>')dnl
define(`LI',`ifelse(`$1',`', `', `<li>`$1'<\li>')')dnl
define(`IT',`ifelse(`$#', `0',, `$#', `1',`LI(`$1')',
`LI(`$1')IT(shift($@))')')dnl
dnl
UL(foo,bar,baz)
UL(`UL',`LI',`IT')
UL(``UL'',``LI'',``IT'')
後世のために、これは確かに引用エラーを含む私の元のソリューションです:
define(`UL',`<ul>IT($@)<\ul>')dnl
define(`LI',`ifelse(`$1',`', `', `<li>$1<\li>')')dnl
define(`IT',`ifelse(`$#', `0',, `$#', `1',`LI(`$1')',
`LI(`$1')IT(shift($*))')')dnl
dnl
UL(foo,bar,baz)
UL(`UL',`LI',`IT')
UL(``UL'',``LI'',``IT'')
最初の解決策では、 の最終的な呼び出しは期待どおりでUL
はありませんが、m4 の引用規則がよくわからないので、何を期待すればよいか本当にわからないため、引用エラーがあると思われます。助けていただければ幸いです。