Concatenar o nome da macro \foo + bar ==> \foobar

Concatenar o nome da macro \foo + bar ==> \foobar

Se em um comando \foofor um dos meus argumentos, por exemplo, #1como posso fazer um \deffor \foobar, ou seja, definir um comando baradicionado a #1?

Especificamente, tento o seguinte

\documentclass{scrbook}
\usepackage[refpage,noprefix]{nomencl}
\makeatletter
\newcommand*{\defsym}[3][]{\def#2{%
  \ifx\protect\@unexpandable@protect
    #3%
  \else
    \nomenclature{$#3$}{#1}\gdef#2{#3}#3%
  \fi} %
  %\def#2FwD{#3} % <-- this does not work
}
\makeatother
\usepackage{amsmath,amsfonts,amssymb}
\defsym{\Rn}{\mathbb{R}^n}

\makenomenclature
\begin{document}

$\Rn$ will be introduced later ...
%$\RnFwD$ will be introduced later ...

\clearpage

$\Rn$ is defined as ...

\printnomenclature
\end{document}

Isso usaLista de símbolos/abreviaturas e macrospara colocar automaticamente um símbolo (aqui \Rn) na Nomenclatura (Lista de Símbolos) em seu primeiro uso. Isso funciona bem para mais, mas agora tive a rara ocasião em que quero fazer o primeiro uso de um símbolo que ainda não deveria estar registrado na nomenclatura. Para este fim, quero apresentar um comando \xFwdpara cada comando \xdeclarado por \defsym.

Tentei isso acima, mas quando descomentei essa linha recebo o erro Use of \Rn doesn't match its definition.que acho que se deve à pergunta que fiz primeiro.

Responder1

\makeatletter

\def\addbar#1{%
  \expandafter\def\csname\expandafter\@gobble\string#1bar\endcsname}

\addbar\sin#1{hello #1}

\show\sinbar

\stop

define \sinbar:

> \sinbar=macro:
#1->hello #1.

Responder2

\documentclass{article}

\makeatletter
\def\foo#1#2{\@namedef{foo#1}{#2}}
\makeatother

\begin{document}
\foo{bar}{foobarbaz}

\foobar
\end{document}

informação relacionada