Как я использую форматирование TEX/латекса для пользовательских подсказок по данным в MATLAB?

Я добавляю Wordpad к контекстному меню Send To. Инструкции для XP здесь . Работы в Vista, также.

5
задан gnovice 4 November 2009 в 01:33
поделиться

1 ответ

Обновление: Это решение в первую очередь применимо к версиям R2014a и более ранним, поскольку кажется, что оно не работает для более новых версий, особенно R2014b и более новые, использующие новую графическую систему . Для более новых версий, использующих новую графическую систему ручки, решение можно найти здесь .


По какой-то странной причине, инструмент курсора данных в MATLAB принудительно устанавливает текст подсказки данных, который будет отображаться буквально вместо интерпретации TeX / LaTeX (даже если настройки MATLAB по умолчанию говорят об этом). Также не существует способа напрямую установить свойства текста через свойства объекта режима курсора данных.

Однако я нашел одно обходное решение. Если вы добавите следующее в конец функции полярной метки , текст должен отображаться правильно:

set(0,'ShowHiddenHandles','on');                       % Show hidden handles
hText = findobj('Type','text','Tag','DataTipMarker');  % Find the data tip text
set(0,'ShowHiddenHandles','off');                      % Hide handles again
set(hText,'Interpreter','tex');                        % Change the interpreter

Объяснение

Каждый графический объект, созданный на рисунке, должен иметь дескриптор . Объекты иногда имеют свойство 'HandleVisibility' , установленное на 'off' , поэтому их дескрипторы не будут отображаться в списке дочерних объектов для их родительского объекта, что делает их труднее найти. Один из способов обойти это - установить для свойства ShowHiddenHandles корневого объекта значение «on» . Это позволит вам использовать findobj для поиска дескрипторов графических объектов с определенными свойствами. ( Примечание: Вы также можете использовать findall и не беспокоиться о настройке ShowHiddenHandles )

Включение режима курсора данных и щелчок по графику создает объект hggroup , одним из потомков которого является текстовый объект для отображаемого текста. Приведенный выше код находит этот текстовый объект и изменяет свойство 'Interpreter' на 'tex' , чтобы символ тета отображался правильно.

Технически, приведенный выше код нужно вызывать только один раз, а не каждый раз, когда вызывается polarlabel . Однако текстовый объект не существует до тех пор, пока вы в первый раз не щелкнете по графику, чтобы отобразить подсказку с данными (т. Е. При первом вызове полярной метки ), поэтому код должен быть в UpdateFcn для объекта режима курсора данных, чтобы первая отображаемая подсказка с данными имела правильное форматирование текста.

8
ответ дан 14 December 2019 в 04:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: