带有乳胶字体的 matlab 图形

带有乳胶字体的 matlab 图形

我意识到这个疑问可能已经被问过了,但是我对 LaTeX 和 matlab 还比较陌生,所以我需要一些帮助。

我正在尝试导出一个图形以包含在我的tex文档中(使用 进行编译pdflatex)。该图形包含带有 LaTeX 字体的轴标签(xlabel(...,'interpreter',latex))。

我在网上搜索了很多,但还没有找到令人满意的解决方案。到目前为止,我最好的解决方案是使用该savefig.m函数生成 png 文件,但质量并不理想

如有任何提示我将非常感激。

答案1

以下是您可以采用的可能性(我在工作中使用前两种):

出路 1

你可以尝试matlab2tikz并将您的图形导出为tikz代码。

出路 2

尝试matfig2pgf并获取pgf您的图形代码。matfig2pgf 还在 matlab 图形窗口中提供了一个不错的菜单,因此更加友好。

出路 3

如果你是 PSTricks 粉丝,请尝试图2texps并获取 pstricks 代码。

出路 4

尝试plot2svg 并获取 svg 图表。但这有点过头了,因为您必须再次找到将 svg 图形插入 latex 的方法。

出路 5

如果你有表面图,你可以看看surf2latex

您可以在 mathworks 中搜索其他应用程序matlabcentral/文件交换并寻找各种(众多)方法。在该页面上搜索时,还可以使用不同的关键词,如 pgf、tikz、PSTricks、latex 等。希望这对您有用。

如何获得内心的平静

对于所有绘图需求,您可以开始使用pgfplots。使用 matlab 从程序中获取数据点,然后使用pgfplots进行绘图。有关详细信息,请参阅pgfplots 文档.pgfplots也可以与 gnuplot 无缝地一起使用。因此,我们也可以使用 gnuplot 的计算能力。

一个例子:

\documentclass{article}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}[scale=1.0]
\begin{axis}[xlabel=$x-$ label and some text,
            ylabel=$y-$ label
            ]
%
\addplot[domain=-10000:10000, no markers,green,ultra thick] gnuplot{14*x - x^2 + x^3 - x^4};
%
\end{axis}
\end{tikzpicture}

Some text to show the similarity of fonts in figures and main body.

\end{document}

您需要gnuplot安装才能使其工作并启用--shell-escape选项pdflatex

在此处输入图片描述

答案2

我可以建议一些其他选项,但它们并不完全简单。你可以尝试一下。

此外,savefig.mMathWorks Central 中还有一些流行的工具可以导出 Matlab 图形,例如导出图矩阵碎片拉普林特

将它们从中分离出来matlabfrag,并将laprintmatlab 图形拆分为图形流.eps和文本流,即“.tex”。在 latex->dvips->ps2pdf 编译期间,PDF使用包完成嵌入 latex 字体的图形的生成psfrag

有关简单演示laprint,请matlabfrag参见下面的链接 Matlab 图形与 LaTeXPDF文档在此。 你可能需要工具包使得包在编译 psfrag期间工作。pdflatex

例如export_fig可以找到这里

使用一些关键字和标签进行搜索,如此链接所示 https://tex.stackexchange.com/search?q=matlab+pdflatex

与此主题相关的问题之一包含 Matlab 图形的最佳方法是什么?

PS:我主要使用export_figmatlabfrag

更新: 使用 mlf2pdf.m 我们可以在 matlab 中运行“带有 psfrag 命令的 latex-dvi-ps-pdf 编译”。我们不需要 latex 文档中的 pstool 或 psfrag。这是非常不流行的未知魔法函数。http://www.mathworks.com/matlabcentral/fileexchange/28545-matlabfrag-to-pdf

答案3

我最近了解到了另一种方法MATLAB 答案这涉及到重载 MATLAB 处理 TeX 和 LaTeX 标签的方式。基本上,当您在将解释器设置为 TeX 或 LaTeX 的图形中创建文本标签时,MATLAB 会使用名为 的函数处理该字符串tex.m。此函数创建一个 MATLAB 字符串,这是一个相当典型的.tex文件。它有一个\documentclass和一个\begin{document}和一个\end{document}。文档类mwarticle是开源的,本质上与文章类相同,只是有一些间距和页面布局变化。然后将 MATLAB 字符串传递给一个封闭的源.mex文件,该文件进行处理并创建图像。看起来该.mex文件本质上调用了某种tex程序。这种理解提出了两种解决方案。

第一个是添加包的字符串。这有点困难,因为您需要包含包的路径。还不清楚文件调用的程序在多大程度上.mex完全tex符合要求。MATLAB 创建的字符串包括\nofiles,并且不清楚如何处理多个传递。

我认为第二个解决方案很有趣,即重载tex.m以调用您自己的 TeX 发行版。这样,您就可以对 MATLAB 文本标签进行任何您想做的事情。您甚至可以包含交叉引用和pgfplots任何其他您想要的内容。

相关内容