Pergunta

Eu estou escrevendo um pedaço de código que lida com variáveis ??matemáticas e índices, e eu preciso imprimir subscritos e sobrescritos em uma CLI, há uma (possivelmente cross-platform) maneira de fazer isso? Eu estou trabalhando em baunilha C ++.

Nota: Eu gostaria que isso seja multi-plataforma, mas já que desde as primeiras respostas isso não parece ser possível que eu estou trabalhando no MacOS e Linux Ubuntu (para bash) .

Obrigado

Foi útil?

Solução

Como a maioria dos CLIs realmente apenas terminais (aqueles muito burro em sua maioria, mas às vezes com a cor), a única maneira de plataforma cruzada que eu já fiz isso é através da atribuição de linhas físicas muliple por linha virtual, tais como:

        2
f(x) = x  + log x
               2

Não é o ideal, mas é provavelmente o melhor que você vai conseguir sem uma GUI.

A seguir você informação extra sobre o que as plataformas que você está interessado principalmente em:

Com o Ubuntu, pelo menos, corre gnome-terminal no modo UTF-8 por padrão para os seguintes mostra o código como gerar o sobrescrito e subscrito:

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

O super e sub char * matrizes são os UTF-8 codificações para os pontos de código Unicode para sobrescritos numéricos e subscritos (ver aqui ). O dado vontade saída do programa minha fórmula de cima (em uma linha, em vez de três), em seguida, uma outra linha de teste para todas as opções e uma y-super-999 e z-sub-75 para que você possa ver como eles se parecem.

MacOS não parece usar gnome-terminal como um programa de terminal, mas as referências aqui aqui parecem indicar o terminal padrão compreende UTF-8 (ou você pode baixar e instalar gnome-terminal como um último recurso).

Outras dicas

Eu preciso imprimir subscritos e sobrescritos em uma CLI, há uma maneira de plataforma cruzada para fazer isso?

Apenas se você tiver um terminal de Unicode-capable, o que está longe de garantida. Unicode define um número limitado de sub e sobrescrito dos personagens de compatibilidade ', você certamente não pode usá-lo em qualquer carta de idade:

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

Mesmo assim, você está dependente da existência de um glifo para ele na fonte do console, que também está longe de garantida. Sobrescrito 2 e 3 são susceptíveis de existir como eles estão presentes na norma ISO-8859-1; os outros podem muito bem não trabalho.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top