我正在用GNU八度(5.1.0)编写GUI。应该读取一些输入值,进行一些计算,绘制一些图形并写入结果。 uicontrol会显示给定的字符串未解释(希腊字母,下标,上标等),这是不受欢迎的事实,一切工作都很好。有办法改变吗?
我尝试在uicontrol中指定解释器:
uicontrol ("parent", p, "style",'text', "string", ["\beta Q_v [m^3/s]"],'interpreter','tex']);
但是在文档中没有列出这样的属性,因此也难怪我会收到此错误:
错误:设置:未知的uicontrol属性解释器
与此同时,我设法使用UTF-8 ASCII码(在本例中为beta)将希腊字母插入显示的文本中:
uicontrol ("parent", p, "style",'text', "string", [char([206 178]) " Q_v [m^3/s]"],'interpreter','tex']);
那很好。但是,变量及其单位的显示方式与在代码中的书写方式相同(没有下标,没有上标),这看起来很愚蠢,并且最浪费空间。
自从开始编写此GUI(大约2017年)以来,我一直在Internet上进行搜索,但是没有运气。似乎没有人遇到过这种麻烦,这对我来说很奇怪。我想念什么吗?任何帮助将不胜感激!
答案 0 :(得分:0)
在Octave和Matlab中都没有这样的选项。但是, Pantxo 建议使用一种变通方法,可以在here中找到。诀窍是“使用适当的文本对象伪造文本样式的uicontrol”。
简而言之,必须替换:
uicontrol ("parent", p, "style",'text', "string", ...
[char([206 178]) " Q_v[m^3/s]"], "position", [x0 y0 dx dy]);
使用
hax = axes ("parent", p,"visible", "off", "position", [0 0 1 1]);
text ("parent", hax, "units", "pixels", "position", [x0 y0 0], ...
"interpreter", "tex", "string", "\\beta Q_v[m^3/s]", ...
"backgroundcolor", "none");
一个人必须在字体大小等方面稍作调整,但效果却令人满意。