>>546
>確かに,引数が必ず1文字だという前提があるならばそれでもいいですね.
>無意識に2文字以上の場合を想定していました.
あー, なる.

修正版は確かに動くんだけど, 本当にやりたかったのは

\generateabbrevdef{hoge}{\@tmpa}{\it{\@tmpa}}
\defineabbrevhoge{A,B}
\hogeA
\hogeB

とかなんですよね. \protect つけても意図した様には動いてくれない.

% \generateabbrevdef{hoge}{\@tmpa}{hogehoge\@tmpa} %% it works
% \generateabbrevdef{hoge}{\@tmpa}{\mbox{hoge}hoge\@tmpa} %% it works
\generateabbrevdef{hoge}{\@tmpa}{\protect\it{hoge}hoge\@tmpa} %% problem...
\generateabbrevdef{hoge}{\@tmpa}{\it{hoge}hoge\@tmpa} %% problem...

\generateabberevdef に \protect が食われるからなんだろうけど, これはどう回避すれば?

あとお薦めのマクロ本があれば教えてもらえると助かる.
藤田さんのマクロの八街を読んだだけ. 取り敢えず藤田さんのマクロ作法を頼んだけど.
吉永さんの「LATEX2εマクロ&クラス プログラミング実践解説」「独習 LaTeX2ε」あたり?