
Si en un comando \foo
está uno de mis argumentos, por ejemplo, #1
¿cómo puedo hacer un \def
for \foobar
, es decir, definir un comando con bar
add 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 \xFwd
para cada comando \x
declarado 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}