我已经搜索过但没有找到答案。
我使用两层\newcommand
s 来创建与文本内联的符号,使用\includegraphics
。 (它用于音乐符号。)
目前,我有这个作为通用命令:
\newcommand*{\inlineImage}[2]{\raisebox{#1pt}{\fbox{\includegraphics{__#2__}}}}
然后是许多如下形式的命令:
\newcommand*{\Eighth}{\inlineImage{0}{Eighth}}
\newcommand*{\Sixteenth}{\inlineImage{-1.5}{Sixteenth}}
这可行,但在设置过程中输入两次相同的文本很麻烦。当然,我可以在文档主体中使用带参数的命令,但我不想这样做。有没有办法用以下形式的命令替换特定命令:
\newcommand*{\Sixteenth}{\inlineImage{-1.5}{<thecommandname>}}
答案1
该etoolbox
包提供了以下\csdef
命令:
\newcommand*{\inlineImage}[2]{\raisebox{#1pt}{\fbox{\includegraphics{__#2__}}}}
\newcommand*\defnote[2]{\csdef{#1}{\inlineImage{#2}{#1}}}
然后使用
\defnote{Eighth}{0}
\defnote{Sixteenth}{-1.5}
创建宏\Eighth
并\Sixteenth
按照您的需要进行操作。
答案2
要从文本创建命令,请使用\csname .. \endcsname
宏。例如,如果您要写
\def\newnote#1{\expandafter\def\csname #1\endcsname{\inlineImage{-1.5}{#1}}}
然后命令如下
\newnote{Fourth}
\newnote{Eighth}
\newnote{Sixteenth}
将定义注释\Fourth
、\Eighth
和\Sixteenth
,以插入适当的图像。