图像缩略图

CPRINDF - 在命令风中显示格式化彩色文本

版本1.11.0.0(31.7KB)由 Yair Altman.
使用指定的颜色/下划线样式在命令窗口中显示Sprintf格式字符串
4.9
106评级

106下载

更新2020年1月5日

查看版本历史记录

查看许可证

语法:
count = cprintf(样式,格式,......)

描述:
CPRINTF使用内置SPRINTF和FPRINTF函数接受的完全相同的FORMAT参数处理指定的文本。

然后,CPrintF使用指定的样式参数在命令窗口中显示文本。接受的样式是用于Matlab语法突出显示的样式(参见:文件/首选项/颜色/ m-file语法突出显示颜色),以及用户定义的颜色。

可能的预定义样式名称是:

“文本”-默认值:黑色
“关键字”-默认值:蓝色
'评论' - 默认:绿色
“字符串”-默认值:紫色
'UnterminalTrings' - 默认:深红色
“SystemCommands”-默认值:橙色
“错误”-默认值:浅红色
'超链接' -默认:带下划线的蓝色

'黑色','青色','洋红色','蓝色','绿色','红色','黄色','白色'

用' - '_'开始的风格将下划线。例如:
'-Blue'=>带下划线的蓝色,如“超链接”
'_Comments'=>带下划线的绿色

以“*”开头的样式将为粗体(仅限R2011b+)。例如:
'*Blue'是大胆的蓝色;
“*Comments”是粗体的绿色等等。
注意:Matlab目前不支持粗体和下划线,在一个cprintf命金宝app令中只能使用其中一个。当然,粗体和下划线可以通过使用单独的命令混合使用。

风格也接受了一个常规的Matlab RGB矢量,可以否定下划线。例如: - [0,1,1]意味着下划线的青色。

样式不区分大小写,并接受唯一(非歧义)的部分字符串(例如,“cy”而不是“cyan”)。

示例(请参阅附加屏幕截图中的结果):
cprintf;%显示演示
Cprintf('文本','普通黑色文本');
Cprintf('超级','后跟%s','by');
Cprintf ('key', '%d有色',4);
cprintf(' - 评论','&带下划线');
cprintf('err','元素\ n');
cprintf(‘青色’、‘青色’);
cprintf(“绿色”、“带下划线的绿色”);
cprintf(-[1,0,1],“带下划线的洋红”);
cprintf(“*蓝色”、“粗体*(仅限R2011b+)”);
cprintf([1,0.5,0],'和多\ nline Orange \ n');

错误和建议:
请寄给yair altman(Gmail dot com的altmany)

警告:
此代码严重依赖于未记录和不受支持的Matlab功能。它在Matlab7+上工作,但使用风险自负金宝app!

有关实施的技术说明可在以下网址找到:http://undocumentedmatlab.com/blog/cprintf.
查看主要帮助部分中的详细信息和当前限制

引用

亚尔·奥特曼(2021年)。CPRINDF - 在命令风中显示格式化彩色文本(//www.tatmou.com/matlabcentral/fileexchange/24093-cprintf-display -formatted -colored-text-in-the-comand-wind-the-command-wind),matlab中央文件exchange。检索到

评论和评级(138.

张雄

Hossam哈桑

张波

谢谢!!!

Yair Altman.

@DavidBryers - 我没有这样的计划

大卫博塞尔斯

有任何更新的计划,使CPrintf将为Simulink Model输出到诊断查看器或命令窗口,具体取决于金宝app当前的内容?

ronen cohen.

一些P

耶稣卢西奥

多谢!!天才!!

泰勒洗涤

你是上帝

雅达拉姆

雷杰普·多加·西里

理查德·胡德泽克

Filippos Dakis.

Chuck Renneberg.

卢卡斯罗德

乔纳斯Rosegren

非常感谢。我一直在寻找这一段时间

Hubertus Temminck.

谢谢你,出色的功能,正是我要找的地方!

Sergio Yanez-Pagans

优秀的代码,甚至更好,真的很容易选择任何颜色(RGB)。只是:

cprintf([0.54 0.17 0.89],'我的错误(警告)消息在RGB紫色!\ n');

其中[r / 255 g / 255 b / 255](Matlab使用标准化的RGB)

Carsci.

这太棒了,让我的输出更容易阅读。非常感谢。

罗马·普诺诺科斯

非常感谢。该函数省略了最后一个字符,但在其他方面效果非常好。

乔治·平托

ori yungrise

Yair Altman.

Matlab的帮助将不包括任何关于改变文本颜色的信息,因为这个功能是没有文档记录的。

更改命令窗口文本的唯一方法是使用CPrintF实用程序,依赖于未记录的功能。您可以从文件交换中下载CPrintf。自2009年以来,CPrintf已提供,并致力于过去15年左右的所有Matlab版本。

罗纳德赫特文

这毫无价值。到目前为止,关于更改Matlab帮助的文本颜色的一切都是毫无价值的。

Yair Altman.

Ivano-下载实用程序后,必须将其路径添加到Matlab路径,否则Matlab无法找到它

伊凡诺拉斯

嗨。

我正在尝试这行代码“cprintf([1,0.5,0],”和多行橙色“;”在R2018a的命令窗口中,更新6和我获取和“未定义的函数或变量‘cprintf’”

我做错什么了吗?

Christoph Rasche.

了不起!应该发现了2009年。我晚了9年了。

Yair Altman.

@Peter-cprintf依赖于基于Java的桌面。它在基于web的桌面上不起作用。我没有将cprintf应用于web的短期计划。

Peter Corke.

我已经用了很多年了,太棒了。在MATLAB OnLine中,一切都是红色的,即使是cprintf('text\n')也是红色的。作为完整性检查,fprintf('text\n')确实是黑色的。好消息是,我们可以控制颜色。

凯文·j·德莱尼

极好的!再一次,我敬畏!

陈钊陈

Nikolay Cherkasov.

不,如果你在单词之间没有空格,它会变得很乱

Nikolay Cherkasov.

杰出的
但是,粗体对我没有特别工作 - 只有前4个字符是粗体,所有5都有正确的颜色

埃姆雷Kopanoglu

赛义德·阿里

迈克尔罗兰斯

非常好,优雅的功能来改善MATLAB消息的通信。

顺羌罗

格雷格

伟大的我希望matlab能在下一个版本中集成此功能

泰勒·雷宁格

李建龙

吓坏了!!

余莉

森多仕

我们可以包含一个删除的格式化选项吗???

安德烈斯格奥尔希

Soooooo需要非常感谢!

符文拉斯穆森

工作和良好的记录

雅各布D.

为了在整个字符串中保持下划线,可以使用退格字符。
当不需要空间时,这会有所帮助。也许是对代码的一个很好的补充?
例如:
Wrncol = [255,100,0] / 255;
Warn='blahblah';
cprintf(wrncl,'警告'');
cprintf(-wrncol,[warn']); fprintf('\ b');
没有找到cprintf(wrncl,'''。\ n');

赖安

令人惊叹的。太棒了。我记得几个月前在谷歌上搜索过这些废话,但大多数论坛都说这是不可能的。然后我发现了一个没有文档的matlab博客。非常感谢。

Alexander Andreychenko.

Alex Poulsen.

格式错误颜色
http://pastebin.com/kmvbwsuw

亚历山大墨菲

这是伟大的

andres melguizo cortijo

谢谢!,非常有用!

亚历山大·瓦库伦科

谢谢

Ander Biguri.

谢谢亚丽,再次滥用Matlab!在使用它时,我发现单字符格式在Matlab2014b中不起作用。

如。

cprintf('黑','你好');
cprintf('err','e');
cprintf('黑色','yari');

您可能还想查看StackOverflow中的问题:

https://stackoverflow.com/questions/32694074/change-the-color-of-pecific-letter-in-console#32694654

亦文阴

这是一个非常有用的函数。谢谢

我尝试通过字符串中的字符使用它颜色字符,但它没有在字符串中彩色一个字符。例如,

基因='ATCG';
测试=基因(1);
cprintf('青色',测试);

它不会先给字符“A”上色。你能检查一下吗?有人能帮我吗?非常感谢。

约书亚

华丽的

马克·莫黑德

这是我一直在使用的一个很好的函数。在命令窗口中使用颜色编码的文本非常有用,可以确保代码的用户看到的是最重要的信息。它确实有一些小毛病(就像所有代码一样),但这并不妨碍它成为一种优秀的工具。改进该工具的唯一方法是,Mathworks将其作为自己的功能并对其进行集成,以便它能够成功地处理所有不同的平台并进行升级。

Yair Altman.

@retrobytes-当然可以,您的代码中有一个bug(缺少一个“):

cprintf([1,0.5,0],'文本文本%.0f文本文本%d text text \ n',-pi,5);

有时,显示的文本的部分不会以预期的颜色出现,但文本始终正确显示。无效颜色(发生时)是由于内部MATLAB实现细节,我们根本无法控制。在大多数情况下,它在这些限制内工作良好。

这是否意味着cprintf是一个糟糕的功能?不 - 它只是意味着它有一些限制。在这些限制内,CPrintf提供了出色的功能。

我讨厌那些不欣赏为创造这个功能而付出的巨大努力的人,没有人认为它是可能的,甚至没有人接近于复制它。仅仅因为它在你眼中不是100%完美而批评它,尽管它给了你比以前更好的东西,这是纯粹的忘恩负义。我想,即使我给你一辆崭新的奔驰车作为礼物,如果你认为它的颜色不完美,你也会抱怨。

如果你认为你可以更好地实现这个功能,那就去试试吧。也许那时你会感激创建cprintf所付出的所有努力。

反向字节

总的来说,这是一个有用的工具。

不幸的是,在结束时传递变量,不起作用(至少不正确),例如:

CPrintf(RGB('Darkorange'),'文本文本%.0f文本文本%d文本文本,var1,var2)

亚历山德罗

亚历山德罗

伟大的工作!非常感谢!

托尼

非常好。我使用此功能显示特定行需要用颜色红色突出显示的矩阵。很有用。精彩的工作......

伯克斯

收回之前的评论,这在R2013a上非常有效。非常有用,值得称赞。

伯克斯

我很乐意听到那些让它在较新的Matlabs工作的人 - 我无法在我的R2013A上工作(在Mac上)。

加雷斯托马斯

奥列格

Thierry Dalon.

找到了1个问题:
如果我有一个包含html链接的字符串,在这一行中,链接前的文本格式为红色。很奇怪。
text ='titi toto '
CPRINDF('青色','%s \ n',文字)

Masoud.

非常感谢!

Simone Panza.

干得好然而,我可能发现了一个与单元代码模式相关的bug。
考虑这段代码

s1='你好\n';
s2 ='h \ n';
Cprintf('红色',s1)
cprintf(‘黑’,s2)

如果将其运行为正常脚本(使用F5),一切都很好。但是,如果您在单元格模式下运行相同的代码(使用Ctrl + Enter),结果不是您所期望的。
这让我快发疯了。我使用MatlabR2013B,在我的脚本中使用了大量的单元代码,所以这给了我一些麻烦。
如果您尝试在调试模式下运行代码,则这更复杂,问题不再显示了!
我认为问题是相关的事实,当使用细胞代码模式时,脚本文件的名称不是传递到命令窗口(虽然它出现在cmd窗口当使用F5),这在某种程度上反映了计算命令窗口中的当前位置。

Christos Saragiotis.

这是一个非常好的提交,谢谢!

我可以通过以下方式添加预定义样式“警告”
a.在函数processStyleInfo的validStyles单元格(在'Errors'项之后)中添加一个'Warnings'项,
湾将后续的“elsef mathces <8”更改为“elseif matches <9”和
c.将下面的' requestdcolor = colors(matches-7,:);'改为' requestdcolor = colors(matches-8,:);'

到目前为止,它似乎很好。

斯蒂芬Cobeldick.

这是对MATLAB内部工作原理的一次有趣的探索,作者在他的博客上对此进行了精彩的解释。我特别喜欢RGB值作为唯一颜色字符串的创新使用,它允许显示任何颜色(博客也很棒!)

佐伊

托德卡林

丹尼Tormo.

做得好!谢谢,祝贺!

德米特里•

马丁·莱克纳

有一个粗体文本的小错误。粗体文本的最后一个字符显示为普通文本。只有当粗体文本结尾没有空格或回车符时,这才是一个问题。
在下面的示例中,粗体文本的“d”以普通字体显示。
cprintf(‘*键”,“大胆”),cprintf(“犯错”,“正常\ n”)

尽管如此,一个伟大的工具!

Nitin Singh.

马丁·莱克纳

巴拉克阿尔莫格

令人敬畏的提交。在2012B上完美地工作。谢谢,亚本!

Yair Altman.

Sébastien-您错误地使用了cprintf。首先,额外的参数4没有意义,因为您没有在字符串中使用任何printf字段(例如%d)。

其次,您不需要(并且实际上不应该使用)\ r - \ r清除当前行到某些系统上的开头,这可以解释您所看到的内容。

Sebastien MAILFERT

谢谢你的代码。
它适用于Matlab 2007,但我的计算机上没有Matlab 2012B的颜色。
文本显示,但实际上是白色的。
如果我写CPrintf('k','test \ r \ n',4),则线条用白色的“ - ”在字符串之前用白色写入白色
如果我写cprintf('-k',test\r\n',4),文本将以蓝色显示,并在字符串前用蓝色“-”下划线。

请问你能帮帮我吗?

卡雷尔Lebeda

非常感谢!
无论如何,我有一个建议:它不会关闭上色,除非在行尾,例如:
cprintf('r','aaa');FPRINTF('BBB')
把所有东西都印成红色…

克里斯托弗红木

这是一个了不起的屈服。我遇到的bug与R2011a有关。如文件所述,它们是在每行的前面插入一个空格,并且必须在格式中的每个字符串的末尾使用该空格。对于这样一个好的程序来说有一些小的不便。干得好耶!

雅典娜

干得好!谢谢
我在循环中使用该函数(R2012A)有问题,颜色没有从迭代到迭代的迭代。我添加了fprintf('\ n');在CPrintf线之前,这似乎解决了,至少是我的问题。我还补充了;到我所有的FPRINTF和CPRINTF线条的结束......也有帮助。

格罗兹·克韦茨克

高雅的提交

格罗兹·克韦茨克

非常顺从。

Yair Altman.

@adam - 我上传的版本昨天包括支持*粗体*格式化金宝app

帕特里斯Tscherrig.

伟大的
不幸的是,在Win7,R2011B 64bit

>>cprintf([255 175 0]。/255,“警告文本”)

不会生成与R2009a、WinXP、32位上相同的彩色文本。知道为什么吗?

pio nonus

布莱恩

这就是Matlab的乐趣所在!谢谢你

亚当·怀亚特

伟大的

建议 - 您可以为粗体文本添加支持。金宝app我假设它可以使用它,因为命令窗口已使用粗体文本。

bedadipta

这只是Aswm ....谢谢你,谢谢你:)

马丁·莱克纳

Yair Altman.

对于所有注意到cprintf在R2011b上的问题的人来说,刚刚上传的新版本修复了这些问题以及空间问题(仅在R2011b上)

Rory Adams.

您可能会发现,在第164行更改FPRINFF命令以使用标准输出而不是标准错误可能会用文本颜色来解决您的问题

即使用
fprintf(1,格式,varargin{:})
底片
fprintf(2,格式,varargin {:})

周杰瑞

Szilárdnémeth.

一个非常有用的函数。停止在R2011b下工作(正如马克·莫黑德指出的)。

yair,你打算更新它,以便我们可以在未来的发布中拥有这种伟大的东西吗?

马克·莫黑德

我一直在使用CPrintf函数,并发现它非常有用。

我刚刚安装了matlab v 2011b(64bit),Cprintf不再正常工作。

当我运行它时,我得到:
>>cprintf('text','regular black text');
_ t >>
>>

如果我突出显示,我得到:
>>cprintf('text','regular black text');
普通黑色文本> >
>>

所以文本是在白色打印的。Matlab更新中的某些内容必须存在颜色反转问题。

乔恩

穆罕默德

达尼洛兹

@Yair - 我发现了一个错误:

由于我使用了命令窗口的黑色背景和灰色文本,Cprintf('text','hello world!\ n')显示了黑色中的字符串,即,与我的配置不可见。

通过仔细观察,我发现文本颜色“保存”在“ColorsText”首选项中,因此我将第242行的代码更改为:

%常规文本
elseif match == 1
style ='colorstext';

现在,当我使用'text'作为样式时,我得到的颜色与我在首选项中设置的颜色完全一致。

CR.

亨利

这个函数很棒。我只有一个问题。如果我通过ssh在远程机器上运行它,但没有X(比如通过Cygwin),那么它会报告错误:

???尝试去引用非结构数组字段。

==> CPrintf在156时出错
xCmdWndView = cw.getComponent .getViewport.getComponent (0) (0);

显然,我不希望在没有指定显示的情况下看到颜色。但我确实希望我的代码独立于平台。也就是说,如果有显示,则显示颜色。否则,请以与fprintf(1,…)相同的方式操作(即,请不要返回错误/失败)。

安德烈·坎

马蒂西亚斯

保罗米耶迪

Reza Farrahi Moghaddam

这有助于我很多。

但是,它不能与fprintf合作。
使用时

CPrintf('text','3d距离错误(max):');
cprintf('关键词','%f \ n',max(evert));

它产生

三维距离误差(最大值):0.226647

既然我不想领先的空间,当尝试

FPRINTF('3D距离错误(MAX):');
cprintf('关键词','%f \ n',max(evert));

它产生了

3D距离错误(最大值):_

有正确的颜色下划线,但数字在白色。

你能帮我出去吗?

顺致敬意,

CEDRIC Wannz.

这个功能很棒!使用它在我的待办事项列表中,所以现在我对它几乎一无所知。但是,您不能将第145行的空白替换为\r(至少部分)解决空白问题吗?

fprintf(' \ r ');

只是鬼鬼祟祟地看了一眼,所以我不知道这对其他的有什么影响。

顺致敬意,

CEDRIC.

Yair Altman.

@James - 不幸的是,闪烁的文本难以实现。

如果这对您来说足够重要,我愿意为您开发费用 - 如果是这种情况,请通过电子邮件联系我。

詹姆斯·图尔萨

做得好。当然,这意味着我想要更多!是否有可能闪烁文字?我知道这通常是令人讨厌的使用,但是当我在一段代码中提出警告消息时,这正是我想要的,即将崩溃Matlab的代码(一个错误演示代码)。

埃夫根尼公共关系

这就跟你问声好!

Cprintf在〜45倍的比Fprintf慢。
有机会摆脱调用DRAWNOW在CPRINTF?这大大降低了性能。

Bijit Banik.

非常感谢。

Yair Altman.

Bijit-不能使用cprintf执行此操作,但可以通过对话框的文本属性执行此操作:

处理= helpdlg (Help_str,标题和作者);
hText=findall(hDlg,'type','text');
设置(htext,'解释器','tex','string','\ color {红色}红色文本')

Bijit Banik.

是否有可能改变图形用户界面对话框文本的颜色与这个cprintf函数?例如:

标题='分析解决方案';金宝搏官方网站
作者='Bijit,Yair';
help_str = char(标题,作者);
helpdlg(help_str,'标题和作者');

现在我想看不同颜色的“bijit,yair”。

谢谢。

埃夫根尼公共关系

Yair Altman.

阅读说明:CPrintF将打印到命令提示符 - 而不是文件!

扎卡里·丹齐格

Yair Altman.

Sharron-我上传了一个新版本,修复了您报告的edge案例

莎伦

这是一个很棒的工具!
然而,我认为该命令在打印反斜杠时工作得不好,例如

CPrintf('错误','\\ abc \ n')

不生成输出\abc

谢谢

andré.

罗布·坎贝尔

好了!尽管我几乎只在Unix上使用-nodesktop标志运行。如果没有Mathworks命令窗口,此函数将无法工作。事实上,它会产生一个错误。也许它应该优雅地失败?

德米特里•

一毫秒

莱普劳

这是一个很好的小工具!谢谢你!

麦克风

麦克风

似乎是另一个错误,这是涉及'%'的字符。例如,

Cprintf('关键字','%%关键字\n')

仅旋转命令提示符(双脚轮)蓝色,而不是打印'%关键字'和换行符。

另一方面,FPRINTF('%%关键字\ n')打印您希望的内容。

Yair Altman.

@Karl - 这是一个具有非换行符终止字符串的已知问题的推论。在这种情况下,初始FPRINTF()是非换行符终止的,CPTPTF困惑......

此案例的解决方法是简单地使用初始黑色文本的CPrintf,而不是fprintf:

cprintf('text','这里:');
cprintf('蓝','蓝色\ n');

卡尔

这很棒!我希望Matlab更好地记录了其Java Innards。无论如何,似乎有另一个小错误。

fprintf('这里:')
cprintf('蓝','蓝色\ n');

结果蓝色下划线,然后是白色的“蓝色”一词(在我的命令窗口的白色背景上看不见 - 但突出显示)。

但是,与上面相同的代码,只使用'-blue'而不是'蓝色',工作正常(给出预期的带下划线的蓝色文本)。

我在Linux机器上使用Matlab 2007b。

Alan B

Yair Altman.

yes Petter-这是CPRINTF的已知限制,在其帮助部分以及TODO列表(在文件底部)中提到了这一限制。不幸的是,如果没有空格分隔符,那么Matlab会尝试组合相邻的样式段,从而使第一段的样式与第二段的样式溢出。添加分隔符可以解决这个问题。如果有人能找到解决办法,我很乐意听到。在那之前,付出的代价很小。。。

寄生

好的,我现在认为可能需要。

寄生

该函数在每个字符串后打印额外的空白空间。例子:

str=‘欢迎!’;
n=长度(str);
对于k = 1:n
Col = [k/n 0 0];
Cprintf(Col,str(k));
结束
fprintf('\ n');

结果是:
我们会的!

寄生

我不知道这是可能的

Aurelien Queffurust.

使用Windows下的当前版本R2009a和Linux 64位下的R2008b成功测试。真是一个伟大的屈服!

MATLABician

一段时间,同事们问我是否有可能以默认值以外的颜色显示,在命令窗口中,在优化问题中违反某些阈值的值。我的回答是“这一定是可行的,因为Matlab是这样的,例如,错误消息。我会调查一下。”好吧,你看起来很好,亚本!

阿尔伯特

万分感谢!

Matlab释放兼容性
使用R2007B创建
与任何版本兼容
平台兼容性
视窗 苹果系统 Linux

社区寻宝

在MATLAB Central中查找宝藏,了解社区如何帮助您!

开始打猎吧!