将字符串转换为宏(更改 catcodes)

将字符串转换为宏(更改 catcodes)

是否不可能将字符串重新转换为宏?我知道lualatex我们可以用宏做很多有趣的事情。我从未见过不使用宏进行字符串转换的情况。

\documentclass{article}                                  
\usepackage[utf8]{inputenc}                              
\usepackage[T1]{fontenc}                                 
\usepackage{tikz}                                        

\newcommand{\dosthfunny}{\foreach \x in {1,...,5} {\x\\}}

\def\Macro{\dosthfunny}                                  

\makeatletter                                            
\edef\String{\expandafter\strip@prefix\meaning\Macro}    
\makeatother                                             

\begin{document}                                         
\String %change it to \dosthfunny macro                                                 
\end{document}                                           

答案1

目前还不是很清楚这种间接方法的原因。您可以使用\scantokens

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}

\newcommand{\dosthfunny}{\foreach \x in {1,...,5} {\x\\}}

\def\Macro{\dosthfunny}

\makeatletter
\edef\String{\expandafter\strip@prefix\meaning\Macro}
\makeatother

\begin{document}

\noindent
\scantokens\expandafter{\String} %change it to \dosthfunny macro

\end{document}

在此处输入图片描述

相关内容