Есть ли способ заставить октавные строки интерпретировать в статическом тексте uicontrol, используя TeX (греческие буквы, нижние индексы, верхние индексы и т. Д.)? - PullRequest
1 голос
/ 26 апреля 2019

Я пишу графический интерфейс в октаву GNU (5.1.0).Предполагается прочитать некоторые входные значения, сделать некоторые вычисления, построить несколько графиков и записать результаты.Все работает хорошо, за исключением нежелательного факта, что uicontrol отображает данную строку без интерпретации (греческие буквы, нижние индексы, верхние индексы и т. Д.).Есть ли способ изменить это?

Я попытался указать интерпретатор внутри uicontrol:

uicontrol ("parent", p, "style",'text', "string", ["\beta Q_v [m^3/s]"],'interpreter','tex']);

Но в документации нет такого свойства, и поэтому неудивительно, что я получаюэта ошибка:

ошибка: установлено: неизвестный интерпретатор свойства uicontrol

Тем временем мне удалось вставить греческие буквы в отображаемый текст, используя код ASCII UTF-8(в данном случае буква бета):

uicontrol ("parent", p, "style",'text', "string", [char([206 178]) " Q_v [m^3/s]"],'interpreter','tex']);

Это прекрасно работает.Однако переменная и ее единицы отображаются так же, как они записаны в коде (без индексов, без индексов), что выглядит глупо, а сверху это занимает много места.

Я искал по всему Интернету с тех пор, как начал писать этот графический интерфейс (2017 или около того), но не повезло.Кажется, что никто никогда не сталкивался с этой проблемой, что мне кажется странным.Я что-то пропустил?Любая помощь будет в основном оценена!

1 Ответ

0 голосов
/ 18 июня 2019

Такой опции нет ни в Octave, ни в Matlab. Однако есть обходной путь, предложенный Pantxo , который можно найти здесь . Хитрость заключается в том, чтобы «подделать текстовый 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");

Нужно немного поиграть с размером шрифта и т. Д., Но результат очень удовлетворительный.

...