Как распечатать нижние индексы/верхние индексы на CLI?

Разделение общего кода на отдельный суб ...

Private Sub Copy_Jobs()
    'either like this...
    CopyAndFormat Worksheets("Sales").Range("Week1"), _
                  Worksheets("Tasks").Range("Job1")

    CopyAndFormat Worksheets("Sales").Range("Week2"), _
                  Worksheets("Tasks").Range("Job2")

    '...or in a loop
    Dim i As Long
    For i = 1 to 5
        CopyAndFormat Worksheets("Sales").Range("Week" & i), _
                      Worksheets("Tasks").Range("Job" & i)
    Next i

End Sub

Sub CopyAndFormat(w as Range, j As Range)
    w(1).Cells.Value = j(1).Cells.Value
    w(2).Cells.Value = j(2).Cells.Value
    w(3).Cells.Value = j(3).Cells.Value
    w(4).Cells.Value = j(5).Cells.Value
    w.Font.Color = j.Font.Color
    w.Interior.Color = j.Interior.Color
End Sub 

Обратите внимание, что копирование шрифта и цветов интерьера действительно работает только в том случае, если диапазоны отформатированы согласованно.

5
задан Georg Fritzsche 17 April 2010 в 00:25
поделиться

2 ответа

Так как большинство CLIs является действительно только терминалами (довольно немые главным образом, но иногда с цветом), единственный межплатформенный способ, которым я когда-либо делал, это путем выделения muliple физических линий на виртуальную строку, таких как:

        2
f(x) = x  + log x
               2

Это не идеально, но, вероятно, лучше, чтобы Вы собрались добраться без GUI.

Следующий за Вами дополнительная информация относительно того, какими платформами Вы главным образом интересуетесь:

С Ubuntu, по крайней мере, терминал гнома работает в режиме 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 для числовых верхних индексов и нижних индексов (см. здесь). Данная программа произведет мою формулу сверху (на одной строке вместо три), затем другая тестовая строка для всего выбора и y-super-999 и z-sub-75, таким образом, Вы видите то, на что они похожи.

MacOS, кажется, не использует терминал гнома в качестве терминальной программы, но ссылок здесь и здесь, кажется, не указывает, что стандартный терминал понимает UTF-8 (или Вы могли загрузить и установить терминал гнома как последнее прибежище).

11
ответ дан 18 December 2019 в 10:49
поделиться

Я должен был бы распечатать нижние индексы и верхние индексы на CLI, есть ли межплатформенный способ сделать это?

Только если у Вас есть способный к Unicode терминал, который совсем не гарантирован. Unicode определяет ограниченное количество под - и верхний индекс ‘символы совместимости’, Вы, конечно, не можете использовать его ни на какой старой букве:

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

Даже затем Вы уверены в том, чтобы там быть глифом для него в шрифте консоли, который также совсем не гарантирован. Верхний индекс 2 и 3, вероятно, будет существовать, поскольку они присутствуют в ISO-8859-1; другие не могут работать.

5
ответ дан 18 December 2019 в 10:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: