+# This is used as a toggle so that we know what to do when basic_lyx is
+# passed a '$' or '$$' token.
+my $inside_math=0;
+
+sub starting_math {
+ my $name = shift;
+
+ if ($name eq '\(' || $name eq '\[' ||
+ # These tokens bound both ends of a math environment so we must check
+ # $inside_math to know what action to take.
+ ($name eq '$' || $name eq '$$') && !$inside_math) {
+
+ $inside_math = 1;
+ return 1;
+ }
+
+ # All other tokens
+ return 0;
+}
+
+sub ending_math {
+ my $name = shift;
+
+ if ($name eq '\)' || $name eq '\]' ||
+ # These tokens bound both ends of a math environment so we must check
+ # $inside_math to know what action to take.
+ ($name eq '$' || $name eq '$$') && $inside_math) {
+
+ $inside_math = 0;
+ return 1;
+ }
+
+ # All other tokens
+ return 0;
+}
+