Concatenar nombre de macro \foo + bar ==> \foobar

Concatenar nombre de macro \foo + bar ==> \foobar

Si en un comando \fooestá uno de mis argumentos, por ejemplo, #1¿cómo puedo hacer un \deffor \foobar, es decir, definir un comando con baradd to #1?

Específicamente intento lo siguiente

\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}

Esto usaLista de símbolos/abreviaturas y macrospara colocar automáticamente un símbolo (aquí \Rn) en la Nomenclatura (Lista de Símbolos) en su primer uso. Esto funciona muy bien para más, pero ahora tengo la rara ocasión en que quiero hacer un primer uso de un símbolo que aún no debería estar registrado en la nomenclatura. Con este fin quiero introducir un comando \xFwdpara cada comando \xdeclarado por \defsym.

Intenté esto arriba, pero cuando descomento esa línea aparece el error Use of \Rn doesn't match its definition.que creo que se debe a la pregunta que planteé primero.

Respuesta1

\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.

Respuesta2

\documentclass{article}

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

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

\foobar
\end{document}

información relacionada