有没有办法使用 TeX(希腊字母、下标、上标等)使 octave 解释 uicontrol 静态文本中的字符串?
Posted
技术标签:
【中文标题】有没有办法使用 TeX(希腊字母、下标、上标等)使 octave 解释 uicontrol 静态文本中的字符串?【英文标题】:Is there a way to make octave interpret strings in static text of uicontrol using TeX (Greek letters, subscripts, superscripts etc.)? 【发布时间】:2019-04-26 13:38:23 【问题描述】:我正在用 GNU octave (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 年左右)以来,我一直在互联网上搜索,但没有运气。似乎从来没有人遇到过这种麻烦,这对我来说似乎很奇怪。我错过了什么吗?任何帮助将不胜感激!
【问题讨论】:
【参考方案1】:在 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");
字体大小等都得玩一点,但效果还是很满意的。
【讨论】:
以上是关于有没有办法使用 TeX(希腊字母、下标、上标等)使 octave 解释 uicontrol 静态文本中的字符串?的主要内容,如果未能解决你的问题,请参考以下文章