У меня есть следующая проблема. Я определил макрос, \func
следующим образом
\newcommand{\func}[1]{% do something with #1
X #1 Y
}
Я теперь хочу определить другой макрос
\newcommand{\MyFunc}[1]{
% parse #1 and if it contains "\func{....}", ignore all except this part
% otherwise ignore #1
}
Может кто-то говорить мне, как реализовать \MyFunc
?
Вот то, что должно произойти:
\MyFunc{123abcdefg} % should print nothing
\MyFunc{123\func{abcd}efg} % should print X abcd Y
Я могу только изменить код \MyFunc
. \func
должен остаться как есть.
Это можно сделать с помощью стандартного программирования LaTeX. Something like:
\documentclass{article} \newcommand\func[1]{X #1 Y} \makeatletter \newcommand\MyFunc[1]{% \in@{\func}{#1}% \ifin@ \ignore@all@but@func#1\@nil \fi } \def\ignore@all@but@func#1\func#2#3\@nil{\func{#2}} \makeatother \begin{document} [\MyFunc{123abcdefg}] % should print nothing [\MyFunc{123\func{abcd}efg}] % should print X abcd Y \end{document}