문제

수학 변수 및 지수를 다루는 코드를 작성하고 있으며 CLI에 첨자 및 슈퍼 스크립트를 인쇄해야합니다. (아마도 크로스 플랫폼) 방법이 있습니까? 나는 바닐라 C ++에서 일하고 있습니다.

메모: 나는 이것이 크로스 플랫폼이되기를 원하지만, 첫 번째 답변에서 이것은 MacOS와 Ubuntu Linux (So Bash)에서 일하고있는 것 같습니다.

고맙습니다

도움이 되었습니까?

해결책

대부분의 CLI는 실제로 단지 단지 (주로 멍청하지만 때로는 컬러로)이기 때문에, 내가 한 유일한 크로스 플랫폼 방식은 다음과 같은 가상 라인 당 모두 물리적 라인을 할당하는 것입니다.

        2
f(x) = x  + log x
               2

이상적이지는 않지만 GUI 없이는 최선을 다할 것입니다.

주로 관심있는 플랫폼에 대한 추가 정보를 따르십시오.

Ubuntu를 사용하면 최소한 Gnome-Terminal이 기본적으로 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 char* 배열은 숫자 슈퍼 스크립트 및 구독에 대한 유니 코드 코드 포인트의 UTF-8 인코딩입니다 (참조 여기). 주어진 프로그램은 내 공식을 위에서 (세 대신 한 줄에서) 출력 한 다음 모든 선택에 대한 다른 테스트 라인과 y-super-999 및 z-sub-75를 통해 그들이 어떻게 생겼는지 볼 수 있습니다.

MacOS는 그놈 말단을 터미널 프로그램으로 사용하는 것으로 보이지만 참조 여기 그리고 여기 표준 터미널이 UTF-8을 이해한다는 것을 나타내는 것 같습니다 (또는 그놈 말단을 최후의 수단으로 다운로드하여 설치할 수 있음).

다른 팁

CLI에 구독 및 슈퍼 스크립트를 인쇄해야합니다.이를 수행하는 크로스 플랫폼 방법이 있습니까?

유니 코드 캡처 가능한 터미널이있는 경우에만 보장되지 않습니다. 유니 코드는 제한된 수의 하위 및 슈퍼 스크립트 '호환성 문자'를 정의합니다.

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

그럼에도 불구하고 당신은 콘솔 글꼴에 글리프가 있다는 것에 의존합니다. SuperScript 2와 3은 ISO-8859-1에 존재하므로 존재할 수 있습니다. 다른 사람들은 잘 작동하지 않을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top