Pregunta

Estoy escribiendo una pieza de código que se ocupa de las variables matemáticas e índices, y que había necesidad de imprimir subíndices y superíndices en una CLI, hay una (posiblemente multiplataforma) manera de hacer eso? Estoy trabajando en la vainilla C ++.

Nota: Me gustaría que esto sea multiplataforma, pero ya desde las primeras respuestas, esto no parece ser posible, estoy trabajando en MacOS y Linux Ubuntu (por lo bash) .

Gracias

¿Fue útil?

Solución

Como la mayoría de las CLI son realmente sólo los terminales (bastante tontas en su mayoría, pero a veces con el color), la única manera de plataforma cruzada que he hecho esto es mediante la asignación de líneas físicas Muliple por línea virtual, como por ejemplo:

        2
f(x) = x  + log x
               2

No es lo ideal, pero es probablemente el mejor que vas a conseguir sin una interfaz gráfica de usuario.

La siguiente información adicional en cuanto a qué plataformas estás principalmente interesado en:

Con Ubuntu al menos, carreras gnome-terminal en UTF-8 modo por defecto por lo que el código siguiente muestra cómo generar los superíndices y subíndices:

#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;
}

Los super y Char sub * arrays son los UTF-8 codificaciones para los puntos de código Unicode para superíndices numéricos y subíndices (ver aquí ). El programa dado es la salida de mi fórmula de arriba (en una sola línea en lugar de tres), y luego otra línea de prueba para todas las opciones y una y-super-999 y Z-sub-75 para que pueda ver lo que parecen.

MacOS no parece usar gnome-terminal como un programa de terminal pero las referencias aquí y aquí parecen indicar el terminal estándar entiende UTF-8 (o que podrían descargar e instalar gnome-terminal como último recurso).

Otros consejos

  

que había necesidad de imprimir subíndices y superíndices en una CLI, hay una manera de plataforma cruzada para hacer eso?

Sólo si tienes un terminal compatible con Unicode, que está lejos de estar garantizada. Unicode define un número limitado de sub-y ‘caracteres de compatibilidad’ superíndices, que sin duda no se puede utilizar en cualquier letra antigua:

₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎ₐₑₒₓ
⁰¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ⁿⁱ

Incluso entonces es dependiente de la existencia de un glifo en la fuente de la consola, que también está lejos de estar garantizada. Superíndice 2 y 3 es probable que existan ya que son presentes en ISO-8859-1; los otros bien pueden no funcionar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top