
除了很多时候mathematica可以拿来当作某种草稿本来用,甚至可以当作公式编辑器,因为可以直接将表达式复制为
比如我想要打出
那么在mma里面这么操作

但是看看剪贴板里的内容,发现是这个
于此类似的还有标准的tex格式输出函数TeXForm
TeXForm[a^-1]
(*frac{1}{a}*)
虽然它们(指
总结一下刚才的问题
问题1:负数幂转化为分数 ,分数幂转化为根式
TeXForm
问题2:加法乘法顺序的调换
原理是mma内部的加法和乘法都是无序的,所以在进行某种操作的时候顺序会重新安排。
TeXForm
问题3:分数的重新分配
TeXForm
问题4:特定字符的重写
说你呢,E和I。因为这两家伙解释为自然对数的底数和单位虚数,所以会导致转化的时候大写变小写。
TeXForm
使用HoldForm
例子:要打出
HoldForm的确是起作用了,但是对于最开始的情况:
TeXForm
没用!怎么办?
这里[1]提供了一种解决方法,将HoldForm再搞到里面去
TeXForm
成功!再试试别的例子
例如,我要打出
TeXForm
可以看到的确解决了问题,缺点是当式子很多的时候需要大量HoldForm。
还有HoldForm对第四种问题并没有作用。
使用字符串
TeXForm
可以看到也很好地解决了问题,缺点是没法转化矩阵


修改内部过程(最佳)
在这里[2]看到了这个操作,原理比较复杂,做法是重载一个函数,直接将其改没
System`FEDump`
运行这句话以后,虽然TeXForm函数输出还是会重新排版,但是右键复制为latex就能保持原格式了。
缺点是除非重新启动mathematica,否则右键复制为latex再也不能帮你做小动作了。
除此以外还有很多杂七杂八的操作,但都是治标不治本,比如专门取消加法和乘法的无序特性、使用奇怪的中缀或者是替换等等,我觉得最巧妙的还是最后一种解决方法。
参考
- ^https://mathematica.stackexchange.com/questions/69655/holdform-does-not-hold-form-for-fractions-sometimes
- ^https://mathematica.stackexchange.com/questions/76860/how-do-i-prevent-mathematica-from-reformatting-the-expressions-that-i-copy-as-la