当使用 LaTeX 作为解释器在 MATLAB 中排版标签时,如果能够包含包来自定义外观就太好了。这可能吗?
到目前为止,我还不知道如何在图例中创建非斜体希腊字母。
答案1
背景
没有简单的方法可以做到这一点,但有 3 种方法可以破解它。要了解如何控制 MATLAB LaTeX 解释器,您需要了解它的工作原理。当 MATLAB 处理 LaTeX 字符串时,它会调用tex.m
。MATLABtex
函数附加
\nofiles \documentclass{mwarticle} \begin{document}\setbox0=\hbox{
并添加
}\copy0\special{bounds: \the\wd0 \the\ht0 \the\dp0}\end{document}
到字符串。MATLAB 然后调用一个封闭源编译函数,texmex
该函数似乎调用tex
二进制文件。MATLAB 附带的 TeX 安装非常有限,因此即使您可以加载包文件,您也需要告诉 MATLAB 在哪里查找。
MATLAB 有一个内置功能,可让您控制查看的位置。您可以使用以下方式控制
setappdata(0, 'TeXPath', PackagePath);
其中变量PackagePath
包含包的完整路径。您可以从 MATLAB 命令行或脚本或函数中执行此操作。
3 种方法
有 3 种方法可以让 MATLAB 加载包。其中两种方法需要您修改/重载 MATLAB 函数,是完整的解决方案。最后一种方法不需要对 MATLAB 函数进行任何修改,但并非在所有情况下都有效。
这第一种方式\input
是通过而不是来加载包\usepackage
。这是因为您不能\usepackage
在 之后使用\begin{document}
。这可能不起作用,而且我不知道您是否可以\input
在 内部使用\hbox
。
这第二种方式修改mwarticle.cls
以加载所需的包。这将加载所有 MATLAB LaTeX 字符串的包。
这第三条道路是tex.m
通过类似这样的机制来有条件地加载包
getappdata(0, 'TeXPackages', Packagelist);
这需要了解 MATLAB 才能进行更改,理论上可能会破坏某些东西。如果您采用这种方式,您可能还需要进行修改tex.m
以调用本地latex
二进制文件,而不是可能过时的 MATLAB 文件。