包括使用 LaTeX 创建 MATLAB 标签的包

包括使用 LaTeX 创建 MATLAB 标签的包

当使用 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 文件。

相关内容