我需要删除Mathematica中\text
生成的所有TeXForm
。
我现在正在做的是:
MyTeXForm[a_]:=StringReplace[ToString[TeXForm[a]], "\\text" -> ""]
但结果保留了括号,例如:
对于a=fx
,
TeXForm[a]
的结果是\text{fx}
MyTeXForm[a]
的结果是{fx}
但我想要的只是fx
答案 0 :(得分:2)
您应该能够使用字符串模式。基于http://reference.wolfram.com/mathematica/tutorial/StringPatterns.html,以下内容应该有效:
MyTeXForm[a_]:=StringReplace[ToString[TeXForm[a]], "\\text{"~~s___~~"}"->s]
我现在没有Mathematica方便,但这应该说'匹配'\ text {“后跟零或多个字符存储在变量s中,后跟”}“,然后替换所有这些什么存储在s。'
更新:
上述工作最简单的情况是只有一个“\ text {...}”元素,但模式s___
是贪婪的,所以输入a+bb+xx+y
,Mathematica的TeXForm渲染作为“a + \ text {bb} + \ text {xx} + y”,它匹配第一个“\ text {”和last“}”之间的所有内容---所以,“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(a $ \} $ b,c $ \} $ d)”,这将是TeXForm
输出的正确处理“f(\ text {a $ \} $ b },\ {文本C $ \} $ d})”。
答案 1 :(得分:0)
这就是我所做的(对我来说很好):
In your Google Cloud console select “IAM & admin”->”IAM”
You will see the “ADD” option. This will allow you to set permissions for your new
Service Account. Click “ADD”.
You can then enter the service account and role ('Owner' if you are following the instructions in the tutorial).