有没有办法使用TeX(希腊字母,下标,上标等)使uicontrol的静态文本中的八度音阶解释字符串?

时间:2019-04-26 13:38:24

标签: octave tex subscript uicontrol

我正在用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上进行搜索,但是没有运气。似乎没有人遇到过这种麻烦,这对我来说很奇怪。我想念什么吗?任何帮助将不胜感激!

1 个答案:

答案 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");

一个人必须在字体大小等方面稍作调整,但效果却令人满意。