Uses ANSI escape codes to print colored output when using MATLAB
from a terminal. If not running in a terminal, or if called by MATLAB's
datatipinfo function, tcprintf reverts to standard printf. The latter is
desirable if tcprintf is used within an object's disp() method to avoid
seeing the ANSI characters here.
The first argument is an style description that consists of space-separated
words. These words may include:
one of the following colors:
black, red, green, yellow, blue, purple, cyan, darkGray, lightGray, white
one of the following background colors:
onBlack, onRed, onGreen, onYellow, onBlue, onPurple, onCyan, onWhite
and any of the following modifiers:
bright : use the bright (or bold) form of the color, not applicable for
black, darkGray, lightGray, or white
underline : draw an underline under each character
blink : This is a mistake. Please don't use this ever.
tcprintf('lightGray onRed underline', 'Message: %20s\n', msg);
Author: Dan O'Shea (http://djoshea.com) (c) 2012
Released under the open source BSD license
Daniel J O'Shea (2021). tcprintf : ANSI colored output in terminal (https://www.mathworks.com/matlabcentral/fileexchange/38252-tcprintf-ansi-colored-output-in-terminal), MATLAB Central File Exchange. Retrieved .
Hi Ali, still working for me in iTerm2 on MacOS. This utility just outputs ANSI escape codes for the 256 colors in the palette. If your terminal isn't displaying it, the terminal may not be setup for color. If you're on Mac or Linux, you can try setting the environment variables:
You can check whether a command like "ls" produces color output too to see if the problem is with your terminal.
If you're on Windows, apparently the Windows console should display colors, but I can't adequately help you debug as I don't have access to a Windows machine.
Even the demo didn't work well for me. everything displayed in black.
perfect! exactly what I was looking for.
Very nice idea and implementation. I liked the blink [counter-]suggestion :-)
A few ideas for improvement:
- make the inputs case-insensitive
- revert to cprintf (if available) in case of usejava('desktop') and not datatip
- use the full 256 color indices use by xterm for fg,bg colors (ANSI codes 38,48 respectively); KDE's Konsole even supports full RGB here
- codes 35,45 are often called magenta, not purple; I suggest that you accept both of these as synonyms to this code
- similarly, 33,43 are displayed as brown on VGA monitors, so I suggest accepting "brown" as a synonym
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!