[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Нужен ли bash



Dmitry Azhichakov wrote:
> С выравниваниями при немоноширинных шрифтах проблем гораздо больше, чем
> вы думаете. И в LaTeX есть специальные средства для их решения, но это
> в LaTeX, а не в исходниках на какой-нибудь Жаве.
>
> Например:
>
> a[1]   = 1;
> a[10]  = 10;
> a[100] = 100;
>
> хорошо бы выровнять "=" в столбец, но если шрифт немоноширинный, эта
> запись "расползется".
>   
Десяток писем назад я описал один из возможных алгоритмов, которые могли
бы выравнивать подобные группы внутри текста. Всего-то надо перед каждым
элементом группы (знаком "равно") ставить какой-нибудь спецсимвол,
который бы значил, что знаки "равно" надо выровнять друг под другом. По
чистой случайности, таким символом может быть символ табуляции.

Хотя если выравнивать бездумно пробелами - да, запись расползётся.
Разумеется. Про что я и говорю.


> Или можно записать так:
>
> a[  1] =   1;
> a[ 10] =  10;
> a[100] = 100;
>
> и выровнять числа по разрядам. 
А это уже ASCII-art какой-то, прости господи.
Хотя, возникни такая нужда (а в отличие от "левого поля" и "выравнивания
символов в столбец", она интуитивно не кажется такой уж необходимой),
можно было бы завести другой спецсимвол. Тоже неотображаемый.
Какой-нибудь "правый таб".

(Риторическое) вы когда пробелами символы друг под друга подгоняете, у
вас не возникает подсознательного ощущения, что занимаетесь чем-то не
тем? В то время как реально вам надо было бы просто набрать примерно
следующее:
a[1]<tab>= 1;<tab># singles
a[10]<tab>= 10;<tab># decimals
a[100]<tab>= 100;<tab># hundreds
Оно, в общем-то, сработает даже сейчас, с "восьмипробельными табами". Но
появись в каком редакторе адаптивная табуляция, выровнялись бы даже
следующие строчки, как
a[9 223 372 036 854 775 807]<tab>= 9 223 372 036 854 775 807;<tab>#
overflows
a[1]<tab>= 1;<tab># singles
, так и
a[1]<tab>= 1;<tab># singles
a[9 223 372 036 854 775 807]<tab>= 9 223 372 036 854 775 807;<tab>#
overflows

Для первого необходимо, чтобы следующие строки переходили не в
фиксированные табуляционные позиции (8/16/24...), а в позиции "флажков",
выставленных предыдущей строкой. А для второго - чтобы позиции для
"флажков" выбирались не по одной строке, а по всем строкам, в которых
происходит выравнивание по этому флажку.


Alex Myodov


Reply to: