MaTeX 与 LaTeX
2021-08-02 22:08:00
本文算是一篇教程,推荐的 MaTeX 扩展包可以让 Mathematica 使用 LaTeX 的输出效果,简直是如虎添翼。
如果你还没用过 MaTeX,可以先收藏本文,方便需要的时候查看。
为什么要用 LaTeX
我还没正儿八经的用 LaTeX 排版过东西,对于 LaTeX 的排版功能不好评价,看看某博主是怎么说的:
LaTeX 在有干货的理工科学术/毕业论文里面对 Word 有着(大概)压倒性的优势。
一方面可见博主用词之严谨,另一方面“天下苦 Word 久矣”之情溢于言表。换句话说,哪个用 LaTeX 的人没深受过 Word 的毒害?(当然了,春秋责备贤者,希望 Word 党听完不要生气。不过世界上真的有 Word 党吗,哈哈哈)
LaTeX 的公式我倒是频繁使用,不过使用范围也仅限于 Typora,不得不说那种纯键盘输入、所思即所得的感觉的确可以满足广大研究生的一个基本需求——装 X
Mathematica 对 LaTeX 的支持情况
在 Mathematica 里书写一个表达式,选中,可以很轻松的复制成 LaTeX 公式:
效果是下面的样子(我是直接粘贴过来的)
美中不足的是,Mathematica 自身并不能渲染出 LaTeX 公式。只有一个差强人意的 TraditionalForm:
但是,有人就说了:
我只爱看 LaTeX 渲染的公式,看别的我头晕,你 Mathematica 就不能输出 LaTeX 给我吗?
Mathematica 说抱歉我还真做不到,但是有退而求其次的法子——MaTeX。
安装 MaTeX
MaTeX 的开源地址是 https://github.com/szhorvat/MaTeX。
在 Mathematica 11.3 及更高的版本,只需运行下面的一行代码即可安装或升级 MaTeX:
ResourceFunction["MaTeXInstall"][]
低版本的 Mathematica 需要手动安装(当然,我没说高版本不可以手动安装,在 https://github.com/szhorvat/MaTeX/releases 下载 MaTeX-1.x.x.paclet 文件,比如目前显示的最新版本为 1.7.8:
需要用到 PacletInstall 函数:
Needs["PacletManager`"]
PacletInstall["~/Downloads/MaTeX-1.7.8.paclet"]
好,大功告成。有人又问了:
这个 2MB 的小东西真的能渲染 LaTeX 吗?
其实还不能,因为你的计算机还需要装有 TeX系统 和 Ghostscript。
TeX 系统推荐直接安装 texlive,一步到位,免得各种报错,报得你怀疑人生,别问我是怎么知道的。
推荐在清华大学开源软件镜像站下载 texlive,安全稳定且速度快,进入之后,随便下载一个 .iso 文件:
具体怎么安装,网上的教程铺天盖地,就不赘述啦(安装时间通常在一个小时左右,所以请提前合理分配时间)
Ghostscript 可以在其官网下载,然后正常安装就行了。
总的来说,安装过程的确比较繁琐,但如果你的计算机曾安装过 texlive 和 Ghostscript,且 Mathematica 版本高于 11.3,安装也不过是一行代码的事吗(真是听君一席话如听一席话呢)
安装完成后,需要运行:
或者
来加载 MaTeX 扩展包。官方文档解释说:
首次加载时,MaTeX 会尝试自动进行自我配置。如果自动配置失败,它将显示有关如何手动配置 pdflatex 和 Ghostscript 可执行文件的路径的说明。
可以用下面的代码测试是否安装成功:
成功的话会给出 pdflatex.exe 和 gswin32c.exe (gswin64c.exe) 的路径。
MaTeX 的一般用法
听别人说:(当然这句话的真实性有待考证)
市面上 80% 的 Mathematica 参考书都是抄的官方帮助文档。
(不过我寻思市面上统共能有几本 Mathematica 参考书,哈哈哈)因为 MaTeX 的帮助文档写的很全面,所以下面我引用了其中的很多例子。
使用之前需要先运行:
或者
来加载 MaTeX 扩展包。比如在重启 Mathematica 或者执行清除全部命令 ClearAll 之后。
上文举的例子改用 MaTeX 输出,顿时顺眼多了:
MaTeX 也可以直接输出成矩阵:
MaTeX 不仅可以直接作用于表达式,还可以作用于字符串,而且和 Mathematica 自带的函数一样,函数 MaTeX 可以穿过列表 List,即可以穿过 { },比如:
来研究一下 MaTeX 输出的东西的本质是什么,以最简单的“点”为例(实在想不出来 LaTeX 里除了空格还有比点更简单的字符吗)
查看 “
MaTeX 的进阶用法
函数 MaTeX 可以指定参数,用于进一步修饰输出的样式。
ContentPadding——内容填充,指定为False
时会尽可能的紧凑:
"DisplayStyle"——指定为False
时会输出行内样式:
FontSize——用于指定字体大小:
LineSpacing——指定为{c,n}
,代表行距为 c 倍字体大小加上 n 个印刷点:
Magnification——用于指定缩放比例:
"Preamble"——指定导言
- 导入 color 宏包用于设定字体颜色:
- 导入 epsdice 宏包用于输出特殊字符:
其他的示例就不过多展示啦。
MaTeX 在绘图中的应用
为了像某博主那样严谨,我说:
在有干货的理工科学术/毕业论文里,画图是一件令人头疼的事情。
用 Mathematica 画图时,默认的坐标轴标签、图例等元素都是默认的样式,但有时要求渲染成 LaTeX 的样式(此时 MATLAB 表示我可以做到。叉出去),目前不知道有什么更好的解决方案,但是 MaTeX 绝对可以胜任,比如:
数据标签也可以渲染成 LaTeX:
哇,这就是 MaTeX 吗,爱了爱了
MaTeX 的注意事项
函数 MaTeX 在接受字符串输入时,\ 一定要写成 \\,比如:
一般经常在转义字符用到 \,转义字符本身就够混乱的了,这里又得写成 \\,所以很容易翻车。
如果想要把 {x,y} 整体输出成 LaTeX 样式,需要先转化为 TeXForm 或用 HoldForm 保持表达式,否则函数 MaTeX 可以穿过 { },将把 x 和 y 输出成 LaTeX 样式,比如:
上面这个例子还是很能说明问题的。
但是,使用 HoldForm 保持表达式时需要谨慎,比如对 IdentityMatrix[3] 使用 HoldForm 保持表达式,再用 MaTeX 输出,得到的是 LaTeX 文字样式:
所以,使用 HoldForm 需要谨慎。
巧妙范例
在 Mathematica 官方的说明文档的结尾,一般都会给出几个巧妙范例,MaTeX 的作者在说明文档中也给出了巧妙范例:
这是一个谢尔宾斯基三角形,有机会的话公众号会出一篇关于它的文章。
MaTeX 与 LaTeX