使用 Python 正则表达式简化 Latex 分数
Using Python Regex to Simplify Latex Fractions
Latex 示例代码:
%Chebyshev of second kind
\begin{equation}
\sum_{\ell \hiderel{=} 0}^n\frac{( \ChebyU{\ell}@{x} )^2}*{ \frac{\pi}{2} }*=\frac{ 2^n }{ \frac{\pi}{2} 2^n+1 }\frac{ \ChebyU{n+1}@{x} \ChebyU{n}@{y} - \ChebyU{n}@{x} \ChebyU{n+1}@{y} }{x-y}
\end{equation}
\frac{(\ChebyU{\ell}@{x})^2}*{\frac{\pi}{2}}
是我针对此特定案例查看的分数。因为它是另一个分数的分母中的分数,所以我想使用 Python 正则表达式将其从 a/(b/c)
更改为 (ac)/b
.
示例输出:
%Chebyshev of second kind
\begin{equation}
\sum_{\ell \hiderel{=} 0}^n\frac{(2 \ChebyU{\ell}@{x} )^2}{\pi}*=\frac{ 2^n }{ \frac{\pi}{2} 2^n+1 }\frac{ \ChebyU{n+1}@{x} \ChebyU{n}@{y} - \ChebyU{n}@{x} \ChebyU{n+1}@{y} }{x-y}
\end{equation}
最终结果:\frac{(2\ChebyU{\ell}@{x})^2}{\pi}
是正则表达式应产生的分数。
我将如何在 Python 中使用正则表达式执行此操作?
这是一个应该有效的正则表达式。请注意,我对您的 LaTeX 表达式进行了更改,因为我认为存在错误(* 符号)。
astr = '\frac{(\ChebyU{\ell}@{x})^2}{\frac{\pi}{2}}'
import re
pat = re.compile('\frac\{(.*?)\}\{\frac\{(.*?)\}\{(.*?)\}\}')
match = pat.match(astr)
if match:
expr = '\frac{{{0}*{2}}}{{{1}}}'.format(*match.groups())
print expr
注意:我没有在您的原始表达式中包含空格。
Latex 示例代码:
%Chebyshev of second kind
\begin{equation}
\sum_{\ell \hiderel{=} 0}^n\frac{( \ChebyU{\ell}@{x} )^2}*{ \frac{\pi}{2} }*=\frac{ 2^n }{ \frac{\pi}{2} 2^n+1 }\frac{ \ChebyU{n+1}@{x} \ChebyU{n}@{y} - \ChebyU{n}@{x} \ChebyU{n+1}@{y} }{x-y}
\end{equation}
\frac{(\ChebyU{\ell}@{x})^2}*{\frac{\pi}{2}}
是我针对此特定案例查看的分数。因为它是另一个分数的分母中的分数,所以我想使用 Python 正则表达式将其从 a/(b/c)
更改为 (ac)/b
.
示例输出:
%Chebyshev of second kind
\begin{equation}
\sum_{\ell \hiderel{=} 0}^n\frac{(2 \ChebyU{\ell}@{x} )^2}{\pi}*=\frac{ 2^n }{ \frac{\pi}{2} 2^n+1 }\frac{ \ChebyU{n+1}@{x} \ChebyU{n}@{y} - \ChebyU{n}@{x} \ChebyU{n+1}@{y} }{x-y}
\end{equation}
最终结果:\frac{(2\ChebyU{\ell}@{x})^2}{\pi}
是正则表达式应产生的分数。
我将如何在 Python 中使用正则表达式执行此操作?
这是一个应该有效的正则表达式。请注意,我对您的 LaTeX 表达式进行了更改,因为我认为存在错误(* 符号)。
astr = '\frac{(\ChebyU{\ell}@{x})^2}{\frac{\pi}{2}}'
import re
pat = re.compile('\frac\{(.*?)\}\{\frac\{(.*?)\}\{(.*?)\}\}')
match = pat.match(astr)
if match:
expr = '\frac{{{0}*{2}}}{{{1}}}'.format(*match.groups())
print expr
注意:我没有在您的原始表达式中包含空格。