#!/usr/bin/perl
sub process_latex {
my ($latex) = @_;
\\frac
(\{
([^{}]*(?:(?1)[^{}]*)*) # numerator (match balanced braces)
\})
(\{
([^{}]*(?:(?3)[^{}]*)*) # denominator (match balanced braces)
\})
}{
my ($numerator, $denominator) = ($2, $4);
$numerator = process_latex($numerator);
$denominator = process_latex($denominator);
"($numerator)/($denominator)";
}gex;
}
print process_latex
('\frac{ \frac{1\frac{2}{3}}{4} a{} }{ b{} }') . "\n"; print process_latex
('\frac{\epsilon+\gamma}{2^{-4\epsilon}}') . "\n"; print process_latex
('\frac{\frac{1}{2} \textbf{a}}{b \textit{c}}') . "\n";
IyEvdXNyL2Jpbi9wZXJsCgoKc3ViIHByb2Nlc3NfbGF0ZXggewogICAgbXkgKCRsYXRleCkgPSBAXzsKICAgIDEgd2hpbGUgJGxhdGV4ID1+IHN7CiAgICAgICAgXFxmcmFjCiAgICAgICAgKFx7CiAgICAgICAgICAgIChbXnt9XSooPzooPzEpW157fV0qKSopICMgbnVtZXJhdG9yIChtYXRjaCBiYWxhbmNlZCBicmFjZXMpCiAgICAgICAgXH0pCiAgICAgICAgKFx7CiAgICAgICAgICAgIChbXnt9XSooPzooPzMpW157fV0qKSopICMgZGVub21pbmF0b3IgKG1hdGNoIGJhbGFuY2VkIGJyYWNlcykKICAgICAgICBcfSkKICAgIH17CiAgICAgICAgbXkgKCRudW1lcmF0b3IsICRkZW5vbWluYXRvcikgPSAoJDIsICQ0KTsKICAgICAgICAkbnVtZXJhdG9yID0gcHJvY2Vzc19sYXRleCgkbnVtZXJhdG9yKTsKICAgICAgICAkZGVub21pbmF0b3IgPSBwcm9jZXNzX2xhdGV4KCRkZW5vbWluYXRvcik7CiAgICAgICAgIigkbnVtZXJhdG9yKS8oJGRlbm9taW5hdG9yKSI7CiAgICB9Z2V4OwogICAgcmV0dXJuICRsYXRleDsKfQoKcHJpbnQgcHJvY2Vzc19sYXRleCgnXGZyYWN7IFxmcmFjezFcZnJhY3syfXszfX17NH0gYXt9IH17IGJ7fSB9JykgIC4gIlxuIjsKcHJpbnQgcHJvY2Vzc19sYXRleCgnXGZyYWN7XGVwc2lsb24rXGdhbW1hfXsyXnstNFxlcHNpbG9ufX0nKSAgLiAiXG4iOwpwcmludCBwcm9jZXNzX2xhdGV4KCdcZnJhY3tcZnJhY3sxfXsyfSBcdGV4dGJme2F9fXtiIFx0ZXh0aXR7Y319JykgIC4gIlxuIjs=