如何在MATLAB中更改表标题的字体权重?

时间:2017-10-10 21:06:41

标签: matlab fonts

创建表格后,' VariablesNames'在每列的顶部自动加粗。当我在日记文件中检查表时,每个列名都被HTML样式的强标记包围。是否有一行代码可用于防止自动加粗?

关于表格标题,我对于fontweights的MATLAB文档没有运气:https://www.mathworks.com/help/matlab/ref/matlab.ui.control.table-properties.html他们提到字体权重,但他们没有提供如何实现的示例代码。(罢工文本不是控制台输出的相关文档。)

以下是我用来创建表格的命令:X = array2table(B,' VariableNames',{' y',' One' ;,'两个''三'});由于某种原因,列标题大胆出现。值得注意的是B是5x4矩阵。

3 个答案:

答案 0 :(得分:4)

我相信你正在混淆:你引用的文档页面是指在Matlab GUI中显示的表格(使用uitable函数),其FontWeight属性是指内部数据的字体权重该表中显示的元素。

这显然与您实际执行的操作完全无关,即使用非GUI数据表,例如使用table函数创建的数据表。这样的表是一个使用disp函数的内部重载的对象,以便在Matlab控制台(命令窗口)中显示表内容。这个重载的disp函数使用HTML< Strong>显示表格标题。标签。您可以在 matlabroot/toolbox/matlab/datatypes/@tabular/disp.m 中看到完整的源代码,以及在第45行附近添加强标记的部分。

简而言之,如果您希望表输出不在其标题中使用强标记,则需要修改该文件,或者创建自己的继承 table {的类。 {1}}以任何你想要的方式对tablular函数进行类和重载。

附录:我刚刚发现了一种更简单的方法:

disp

答案 1 :(得分:2)

  

简而言之,如果您希望表输出不使用强标记   标题,您需要修改该文件,或创建自己的类   继承表类并重载disp函数   无论你想做什么。

不幸的是,表类是密封的,因此子类不能从它继承。

Error using unbold_table
Class 'table' is Sealed and may not be used as a superclass.

您可以随时按照Yair的建议进入源代码并进行编辑。

答案 2 :(得分:2)

正如@YairAltman所提到的,粗体是由disp类的table方法完成的。

(实际上,情况并非如此:在旧版本中,它由disp类的table方法完成,在更新版本中,它由disp方法完成tabular类的table超类。

Yair提出了两个想法:

首先,您可以创建自己的继承自table的类,并实现您自己的disp版本。不幸的是,由于table是密封的,因此无效,因此您无法继承它。 (当然,如果您对修改MATLAB源代码感到满意,可以开启它;但我不建议您尝试这样做,但是出于很好的理由它们已将其密封了。)

其次,您可以修改disp方法的源代码,以便它不会进行粗体化。这样可行,但您可能不想弄乱MATLAB源代码(有些人可能会以一种只读的方式安装IT)。

但是,disp / table的{​​{1}}方法有一些未记录的功能,可以在不修改任何内容的情况下帮助您:如果您传递一个额外的参数{ {1}},您可以关闭粗体。

tabular

第二个参数的默认值为disp,因此要实现此目的,您需要使用第二个参数>> a = table(1,2); >> disp(a) % the following Var1 and Var2 are bold Var1 Var2 ____ ____ 1 2 >> disp(a,false) % the following Var1 and Var2 are not bold Var1 Var2 ____ ____ 1 2 显式调用true