将'\ t'替换为文本对象内正确数量的空格

时间:2017-03-02 06:44:35

标签: matlab text textbox matlab-figure spacing

我的GUI中有一个文本框,我想在其中写一个标签文本。

您可能知道或不知道,\t修饰符在tex解释的文本字符串中不起作用。

我要问的是,是否有一个优雅的解决方案来模拟带有CORRECT空间量的制表符修饰符,同时还考虑到不同字符可能具有不同宽度的事实?

结果应该是这样的:

[tabText('Try\tThis') ; tabText(Tryy\tThis)]

ans = 
Try     This
Tryy    This

感谢。

2 个答案:

答案 0 :(得分:2)

matlab中的

'\t'被解释为:两个字符\t,而非制表。

要获取制表字符,您必须经过sprintf

> 'Try\tThis'
Try\tThis
> sprintf('Try\tThis')
Try       This

char(9)(ASCII码):

> ['Try' char(9) 'This']
Try       This

答案 1 :(得分:1)

查看text的MATLAB文档的相关部分(在撰写本文时,这指向R2016b文档),可以看到TeX"子集"这是MATLAB支持的,不包含任何类似标签的字符。因此,使用tex解释器似乎没有正确的方法。

您有几种选择:

  1. 如果使用uifigures是一个选项,那么文本标签允许使用MathML。这是非常可定制的......
  2. 如果您切换到'latex'解释程序,则可以使用\quad\qquad等。

    figure(); 
    text(.5,.5,{'$$This \quad text$$','$$is \quad properly$$','$$tabbed, \quad Right?$$'},...
      'Interpreter','latex');
    
  3. What O'Neil suggested

  4. 关于不相等的字符宽度 - 您可以通过更改字体来解决这个问题,使用' FontName' text(...)的论据。