是否可以将matlab图的字体转换为乳胶字体的字体。例如,我可以通过以下方式修改绘图的字体:
x = -pi:.1:pi;
y = sin(x);
plot(x,y)
set(gca,'FontName','Helvetica');
是否可以对乳胶字体做同样的事情(我说乳胶字体,因为我不确定乳胶字体的实际名称是否用作基本字体)。
答案 0 :(得分:12)
对于任何文本对象,您只需将“Interpreter”属性设置为“latex”即可。所以,例如你可以做
xlabel('$$\int_0^x\!\int_y dF(u,v)$$','Interpreter','latex');
对于刻度标签,它是more difficult,但可能有文件可以使其更容易(example)。
答案 1 :(得分:6)
我建议在脚本/函数的开头将默认解释器设置为LaTex:
set(0,'defaulttextinterpreter','latex')
您也可以download a version of Computer Modern(LaTeX字体系列)并将其安装到您的计算机上。如果您正在运行Windows或Mac,技术可能会有所不同,对于Mac,您需要下载OTF版本并将其添加到FontBook(Cmd-Space:FontBook)
接下来,重启Matlab
最后,您可以在Matlab中使用LaTeX字体:
set(0,'DefaultTextFontname', 'CMU Serif')
set(0,'DefaultAxesFontName', 'CMU Serif')
这是一个很好的解决方法,可以在刻度标签although it has some trouble exporting in some formats.
中使用常量字体答案 2 :(得分:3)
您可以在乳胶字符串中定义字体。例如,要在serif字体(Roman)和sans serif字体(Helvetica,我猜)之间进行更改:
text(0.5, 0.8, '\textsf{sans serif}','interpreter','latex')
text(0.5, 0.7, '\textrm{roman}','interpreter','latex')
text(0.5, 0.6, '$$\mathsf{math\,\,mode\,\,sans\,\,serif}$$','interpreter','latex')
text(0.5, 0.5, '$$\mathrm{math\,\,mode\,\,roman}$$','interpreter','latex')
答案 3 :(得分:2)
对于字体的真实匹配(包括LaTeX风格的字距调整,连字等),Matlab图中的文本需要使用LaTeX进行排版。使用laprint script的psfrag是一种直接的方式。
答案 4 :(得分:2)
如果您导出到.eps
,您可以稍后使用简单的文本编辑器编辑图形并在那里交换字体。它有点繁琐,但做的伎俩。您还可以单独更改每个字符的字距(因为其位置在那里是硬编码的)。
也可以单独更改每个字符的字体(如果需要来自Latex的符号(即计算机现代版),我有时会这样做,但是希望再次使用Helvetica中的其他标签)
答案 5 :(得分:2)
免责声明:我不是专家。
但是,linux的命令fc-list
列出了系统中的所有字体,我认为它们都是Matlab支持的。
在ubuntu(可能还有其他发行版)中, latex font 被称为拉丁现代,或简称为lm。您可以通过以下方式找到它们:
# fc-list | grep lmroman
/usr/share/texmf/fonts/opentype/public/lm/lmroman10-bold.otf: Latin Modern Roman,LM Roman 10:style=10 Bold,Bold
/usr/share/texmf/fonts/opentype/public/lm/lmroman7-italic.otf: Latin Modern Roman,LM Roman 7:style=7 Italic,Italic
... etc etc...
在冒号和第一个逗号之间它表示拉丁现代罗马,这是拉丁现代的罗马字体的名称,还有:
我认为在mathmode中的latex中调用\textrm
(罗马),\textsf
(serif)等等时会使用这些字体。当然,您可以通过fc-list
命令找到它们。
要在图中获取乳胶字体,只需执行:
plot(rand(10), 'o');
xlabel('index', 'FontName', 'Latin Modern Roman', 'FontSize', 25);
ylabel('value', 'FontName', 'Latin Modern Roman', 'FontSize', 25);
set(gca, 'FontName', 'Latin Modern Roman', 'FontSize', 25);
结果很不错:
关于Matlab的解释器选项,据我所知,它不适用于绘图的所有文本元素,如ax标签:
>> plot(rand(10), '.'); set(gca, 'Interpreter', 'latex');
Error using hg.axes/set
The name 'Interpreter' is not an accessible property for an instance of class 'axes'.
不幸的是,matlab的print
功能存在缺陷,因为它无法将字体嵌入到eps或pdf文件中。因此,生成的文件可能具有替换字体,即使在同一系统上也是如此。要解决此问题,此库允许您嵌入字体:http://www.mathworks.com/matlabcentral/fileexchange/23629-export-fig
确保在导出之前将图形的背景设置为白色,并注意该库可能会占用大量内存,因为它会调用ghostscript。
此外,如果您想更改字体,更改解释器似乎有点过分。
答案 6 :(得分:0)
如果您的目标是将MATLAB图形导出到LaTeX中并且想要一致的外观(包括字体),您应该使用matlab2tikz(我曾经开始的项目)。