Поскольку большинство CLIs действительно только терминалы (довольно тупые те, в основном, но иногда с цветом), только кросс-платформенный способ, которым я когда-либо делал это путем выделения Muliple физических линий на виртуальной линии, например:
2
f(x) = x + log x
2
Это не идеальный вариант, но это, вероятно, лучшее, что вы получите без графического интерфейса.
После вам дополнительную информацию о том, какие платформы вы в основном заинтересованы в:
С Ubuntu, по крайней мере, Gnome-терминал работает в UTF-8 режиме по умолчанию, поэтому следующий код показывает, как генерировать надстрочные и индексы:
#include <stdio.h>
static char *super[] = {"\xe2\x81\xb0", "\xc2\xb9", "\xc2\xb2",
"\xc2\xb3", "\xe2\x81\xb4", "\xe2\x81\xb5", "\xe2\x81\xb6",
"\xe2\x81\xb7", "\xe2\x81\xb8", "\xe2\x81\xb9"};
static char *sub[] = {"\xe2\x82\x80", "\xe2\x82\x81", "\xe2\x82\x82",
"\xe2\x82\x83", "\xe2\x82\x84", "\xe2\x82\x85", "\xe2\x82\x86",
"\xe2\x82\x87", "\xe2\x82\x88", "\xe2\x82\x89"};
int main(void) {
int i;
printf ("f(x) = x%s + log%sx\n",super[2],sub[2]);
for (i = 0; i < 10; i++) {
printf ("x%s x%s ", super[i], sub[i]);
}
printf ("y%s%s%s z%s%s\n", super[9], super[9], super[9], sub[7], sub[5]);
return 0;
}
в super
и sub
символьные * массивы являются UTF-8 кодировки для кодовых точек Unicode для числовых верхних и нижних индексов (см here). Данная программа выведет мою формулу сверху (в одной строке вместо трех), затем другую тестовую линию для всех вариантов и y-super-999 и z-sub-75, чтобы вы могли видеть, как они выглядят.
MacOS не появляется использовать гном-терминал в качестве терминальной программы, но ссылки here и here, кажется, указывают на стандартный терминал понимает UTF-8 (или вы можете загрузить и установить гном-терминал в крайнем случае).
Как насчет не-межплатформенного способа? – tunnuz
Это будет зависеть от платформы :-) Если вы можете рассказать нам о платформах, на которых вы планируете работать, мы сможем вам помочь. – paxdiablo
Я отредактировал мой вопрос, хотя MacOS и Ubuntu Linux. – tunnuz