我正试图在表格中包含一个小的文本框,以显示绘图结果。在表格中,我只想更改单个单词或符号的文本颜色。
使用表格和LaTeX标记创建表。由于某些原因,TextBox Properties中的某些命令(例如\it
)有效,而\color{red}
例如无效。您知道使它着色的方法吗?
figure
str = '\begin{tabular}{lr} $\it test$ & A \\ $\color{magenta} test$ & A\end{tabular}';
h = annotation('textbox',[.15 .15 .2 .28],...
'Interpreter', 'latex',...
'FitBoxToText','on',...
'EdgeColor','black',...
'BackgroundColor', [1 1 1]);
set(h, 'String', str);
答案 0 :(得分:5)
您可以作弊并使用未记录的jLabel对象,该对象支持HTML标记。
figure
str = '<HTML><FONT color="red">Hello</Font></html>';
jLabel = javaObjectEDT('javax.swing.JLabel',str);
[hcomponent,hcontainer] = javacomponent(jLabel,[100,100,40,20],gcf);
您也可以制作HTML表:
str = ['<HTML><FONT color="red">Here is a table</Font>'...
'<table><tr><th>1</th><th>2</th><th>3</th></tr>'...
'<tr><th>4</th><th>5</th><th>6</th></tr></html>'];
jLabel = javaObjectEDT('javax.swing.JLabel',str);
[hcomponent,hcontainer] = javacomponent(jLabel,[100,200,150,250],gcf);
您可以阅读有关Matlab here中的jLabel组件以及HTML here的更多信息。感谢Yair Altman的博客。
答案 1 :(得分:4)
您遇到的问题是,仅当Interpreter
属性设置为'tex'
时才支持文本着色,但是只有将解释器设置为tabular environment时才支持文本着色。 'latex'
。最好的解决方法是使用the jLabel option suggested by Zep。
否则,我看到的唯一方法是使用'tex'
解释器并自己管理水平元素的间距。您可以使用cell array of strings创建多行文字:
str = {'{\it test} A', '{\color{magenta} test} A'};
set(h, 'Interpreter', 'tex', 'String', str);