Вы должны иметь возможность использовать строковые рисунки. На основе http://reference.wolfram.com/mathematica/tutorial/StringPatterns.html, что-то вроде следующего должно работать:
MyTeXForm[a_]:=StringReplace[ToString[TeXForm[a]], "\\text{"~~s___~~"}"->s]
Я не Mathematica под рукой прямо сейчас, но это должно быть написано «Совпадение„\ текст {“следуют ноль или более символов, которые хранятся в переменной s, за которой следует «}», а затем замените все это тем, что хранится в s. '
UPDATE:
Вышеуказанные работы в простейшем случае там быть один «\ текст {...}» элемент, но шаблон s___
жадный, поэтому на входе a+bb+xx+y
, который TeXForm системы Mathematica делает, как "a + \ text {bb} + \ text {xx} + y", он соответствует всем, что находится между первым "\ text {" и last "}" --- so, "bb} + \ text {xx" --- что приводит к выходу
In[1]:= MyTeXForm[a+bb+xx+y]
Out[1]= a+bb}+\text{xx+y
исправление этого заключается в том, чтобы обернуть шаблон с Shortest[]
, что приводит к второму определению
In[2]:= MyTeXForm2[a_] := StringReplace[
ToString[TeXForm[a]],
Shortest["\\text{" ~~ s___ ~~ "}"] -> s
]
, который дает выход
In[3]:= MyTeXForm2[a+bb+xx+y]
Out[3]= a+bb+xx+y
по желанию. К сожалению, это все равно не сработает, когда сам текст содержит закрывающую фигуру. Например, входной f["a}b","c}d"]
(по какой-то причине ...) даст
In[4]:= MyTeXForm2[f["a}b","c}d"]]
Out[4]= f(a$\$b},c$\$d})
вместо "F ($ \} $ B A, C $ \} $ d)", который был бы надлежащая обработка вывода TeXForm
«f (\ text {a $ \} $ b}, \ text {c $ \} $ d})".
Хорошо ... Я понял ... Но это не работает в том случае, когда у меня есть много '\ text {_}' в уравнении. Можете ли вы мне помочь? – Eleteroboltz
Что происходит, когда вы запускаете его? Например, что такое вывод MyTeXForm, когда a = "x = 5 \\ text {m/s} +2 \\ text {m/s}"? Я исправлю, что вы хотите, чтобы выход был «x = 5m/s + 2m/s»? – Michael
Я обновил свой ответ с помощью решения, которое, как мы надеемся, будет работать во многих случаях, но, не зная причины, по которым вы хотите это сделать, я не уверен, что смогу помочь намного дальше от головы ... Вероятно, регулярные выражения могут помочь с еще более полным решением, если ваш текст будет содержать символы «}». – Michael