CLI에서 구독/슈퍼 스크립트를 인쇄하는 방법은 무엇입니까?
-
11-09-2019 - |
문제
수학 변수 및 지수를 다루는 코드를 작성하고 있으며 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에 존재하므로 존재할 수 있습니다. 다른 사람들은 잘 작동하지 않을 수 있습니다.