如何选择字符串中指定单词的所有出现位置并在每个出现的位置附加另一个单词?

如何选择字符串中指定单词的所有出现位置并在每个出现的位置附加另一个单词?

使用infix-RPN包时,我们可以使用\infixtoRPN将中缀表达式转换为 RPN 表达式。可以通过调用 来检索转换的输出\RPN

\infixtoRPN{cos(x)+sin(x)}例如,将产生x cos x sin add可用的\RPN

我的问题是,如何RadtoDeg在 之后插入x?所以最后的将是x RadtoDeg cos x RadtoDeg sin add

其骨架如下。

\documentclass{article}
\usepackage{infix-RPN}

\def\f(#1){cos(#1)+sin(#1)}

% #1 target word
% #2 inserted word
\def\appendtoRPNafter#1#2{%
    %implementation using \RPN goes here!
    %don't forget to return the result!
}
\begin{document}
    \infixtoRPN{\f(x)}%
    \appendtoRPNafter{x}{RadtoDeg}%
\end{pspicture}
\end{document}

答案1

(您的 MWE 不 W)

\documentclass{article}
\usepackage{infix-RPN}

\def\f(#1){cos(#1)+sin(#1)}

    \infixtoRPN{\f(x)}%

\typeout{A: \RPN}

% #1 target word
% #2 inserted word
\def\appendtoRPNafter#1#2{%
\def\tmp##1 #1 ##2{##1\ifx\tmpb##2\else\space #1 #2 \expandafter\tmp\fi##2}%
\def\tmpb.{}%
\edef\RPN{\expandafter\tmp\RPN\tmpb. #1 \tmpb.}
}

    \appendtoRPNafter{x}{RadtoDeg}%

\typeout{B: \RPN}

\stop

产生终端输出

A:  x cos x sin add
B:  x RadtoDeg cos x RadtoDeg sin add

相关内容