使用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