在文本框中部分更改文字颜色

3
我正在尝试在绘图中包含一个显示结果的小文本框和表格。在表格中,我想仅更改单个单词或符号的文本颜色。
该表格是使用tabular和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);

1
据我所知,MATLAB并没有实现所有的TeX命令。有些可以使用,而有些则不行。 - Adriaan
1
@Adriaan,我认为它不包含任何包,\color是来自于xcolor包。 - Ander Biguri
这里的问题是什么?为什么它不起作用,还是如何使它变成彩色的? - Ander Biguri
谢谢大家的评论。问题是如何使它变成彩色的? - Moritz Braun
2个回答

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);

您可以在Yair Altman的博客中了解更多有关Matlab jLabel组件的信息,以及有关Matlab UI组件中HTML支持的信息

4
你遇到的问题是文本着色仅在Interpreter属性设置为'tex'时才支持,但表格环境仅在解释器设置为'latex'时才支持。你最好的解决方法可能是使用Zep建议的jLabel选项。另外一种方法是使用'tex'解释器并自己管理水平元素间距。你可以使用字符串单元数组来创建多行文本:
str = {'{\it test}   A', '{\color{magenta} test}   A'};
set(h, 'Interpreter', 'tex', 'String', str);

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接