![是否可以创建一个环境或命令,使得其中的每个单词都转换为 TeX 命令?](https://linux22.com/image/324866/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E7%8E%AF%E5%A2%83%E6%88%96%E5%91%BD%E4%BB%A4%EF%BC%8C%E4%BD%BF%E5%BE%97%E5%85%B6%E4%B8%AD%E7%9A%84%E6%AF%8F%E4%B8%AA%E5%8D%95%E8%AF%8D%E9%83%BD%E8%BD%AC%E6%8D%A2%E4%B8%BA%20TeX%20%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
我的目的是消除长文本中反斜杠的使用,因为每个单词都应该是一个命令。例如,我可以直接输入或更好的 \def\new{this is a new command!}
\def\another{Another one…}
命令序列,而不是等。这可能吗?我遇到这个问题是因为我想制作一个使用几个特殊命令插入一系列音乐符号的包。\new \another \c{c}
\begin{myspecialENV} new another c{c} \end{myspecialEnv}
\myspecialCom{ new another c{c} }
答案1
我看不到输入有任何改进;但是,如果你喜欢危险的生活,那么这里就是:
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\myspecialcommand}{m}
{
\seq_set_split:Nnn \l_tmpa_seq { ~ } { #1 }
\seq_map_inline:Nn \l_tmpa_seq
{
\tl_rescan:no { } { \c_backslash_str##1 }
}
}
\cs_generate_variant:Nn \tl_rescan:nn { no }
\ExplSyntaxOff
\newcommand\new{This is a new command}
\newcommand\another{Another one}
\begin{document}
\myspecialcommand{new another c{c}}
\end{document}
答案2
我不会这么做,但如果我要做的话,那么:
\documentclass{article}
\newcommand\new{This is a new command}
\newcommand\another{Another one}
\def\myspecialcommand#1{%
{\catcode`\ 0
\scantokens{ #1}}}
\begin{document}
\myspecialcommand{new another c{c}}
\end{document}