Matlab 2015a在长字符串中的µ前插入了空格,但在短字符串(xlabel)中没有。在某些情况下,可以通过使用UTF-8字母来解决这个问题,但在其他情况下会失败(见^2)
文字的字体应该是
Helvetica
,但它看起来是不同的。虽然
get Fontname
返回
Helvetica
。
这是MATLAB中的一个错误,而且已经被报告了。我不想等待几个月,直到MATHWORKS修复这个错误。
我怎样才能自己解决这个问题呢?我试着把渲染器改为
opengl
,但这使所有的字体混合得更厉害。
plot([2014 2015 2016], [0 1 0])
xlabel('MATLAB (\mu)')
ylabel('Space-bugs (\mum^2) (µm²) (µm^2)')
title('Number of wrong spaces in MATLAB')
textTT = text(2015-1, 1/2,'ugliest plot bugs ever', 'FontSize', 20, 'FontName', 'Helvetica');
text(2015, 1/3, get(textTT, 'Fontname')) % says Helvetica, but lies.
print -depsc2 -r864 -painters '/tmp/test.eps'
print -dpdf -r864 -painters '/tmp/test.pdf'
在Linux 64位上用Matlab 2015a渲染的代码
同样的代码由Luis Mendo在Matlab Windows 64 Bit中渲染。
编辑1:该错误在2015b和2016a中仍然存在。该错误在Linux版本中显示,但在Windows版本中没有。
编辑2:有人建议使用内部的latex解释器。我认为这不是解决办法,因为如果所有的字体都被替换成斜体(或斜体),那么代码就很难阅读了。绘图和单位应该有一种字体,标题和标签必须直着写。
EDIT 3: The bug is still present in 2017b.
编辑4:这个错误似乎在2022a中得到了修复。(报告后7年)