Транжирить знако-места в таблице кодировки на прописные буквы - недопустимое расточительство.
Все буквы строчные.
В тех случаях, когда встречается имя собственное или начало предложения,
достаточно одного префиксного байта
перед словом чтобы указать, что первая буква прописная.
Этот префиксный байт будем называть знак "имя собственное"
(own name).
Работает он так:
anna -> Anna.
То же самое нужно сказать об аббревиатурах.
Достаточно одного префиксного байта
перед словом чтобы указать,
что все буквы до знака "пробел" прописные.
Этот байт будем называть знак "аббревиатура"
(abbreviation).
Работает он так:
uno -> UNO.
Термин отметка (mark) обозначает любой из этих двух префиксных байтов. Пользователь сам их ставит нажимая клавиши "Shift" и "Caps Lock".
Теперь при поиске похожего слова сравнение многих вариантов написания (все буквы строчные, первая буква прописная, все прописные буквы) сводится к сравнению в одном варианте написания (все буквы строчные). Распространенное заблуждение состоит в том, что отождествляют обозначение букв (кодировку) и их графическое изображение (шрифт). Это совсем разные вещи. Кроме того, отметки помогут поисковым серверам найти имена собственные и аббревиатуры на языках и алфавитах без прописных букв.
Индексы прочно вошли в нашу жизнь - без них невозможно такое социальное явление, как наука, без них немыслима такая все-охватывающая индустрия, как программирование. Поражает убогий, пещерный способ записи индексов в текстовых файлах - это нужно исправить.
Введем термины.
Пределы - над-строчные и под-строчные записи,
например, пределы интегрирования и суммирования.
Довески (makeweights) - пределы и индексы;
существует всего четыре вида довесков:
верхние и нижние пределы, верхние и нижние индексы.
База (base) - слово, для которого написаны довески.
Открывающие символы
(open symbols) - управляющие символы, указывающие,
что после них расположен довесок;
существует четыре открывающих символа - по числу видов довесков:
нижний предел
(bottom limit),
верхний предел
(top limit),
нижний индекс
(bottom index),
верхний индекс
(top index).
Ввиду того, что довески пишутся слитно с базой и
заканчиваются у ближайшего пробела,
для пробелов в довесках используется новый символ space
(пробел между словами
будем называть blank).
В пределах могут быть индексы.
У индексов могут быть диакритические знаки (по сути являющиеся теми же пределами).
Таким образом открывающий символ предела не означает окончания индекса и наоборот.
База может иметь множество индексов с суб-индексами.
Если после суб-индекса некоторого индекса нужно написать другой суб-индекс этого же индекса,
то нужно вернуться на предыдущий уровень.
Введем управляющий символ "возврат"
(return)
для возврата на предыдущий уровень.
Работает он так:
aij -> .
Итак, для написания пределов и индексов необходимы шесть новых управляющих символов и шесть новых клавиш на клавиатуре. Термин веха (herald) обозначает любой из этих шести символов.
Внутри параграфа могут содержаться фразы,
которые нужно отметить другим цветом, размером, подчеркиванием, жирностью или
наклонным начертанием -
будем называть их фракциями
(фракции не могут быть вложенными).
Кроме того, современный текст немыслим без гипер-ссылок.
Получается, что мы приходим к специальным знакам для текста, вроде "<" и ">" в
html.
Пусть перед каждой фракцией находятся управляющие символы
начало региона
(beginning of region)
и середина региона
(middle of region),
а после нее - управляющий символ конец региона
(end of region).
Между "началом региона" и "концом региона" находятся
специальные бинарные (не текстовые) структуры
байт-предсказатель и фракционная запись.
text BytePredictor Fractional record fraction text
Байт-предсказатель состоит из 6 бит: 3 из них указывают, присутствуют ли параметры "color" (цвет), "fontsize" (размер шрифта), "number" (идентификатор гипер-ссылки; этот идентификатор передается аппаратным обеспечением программе, когда пользователь нажимает мышью на фракцию) во фракционной записи, а следующие 3 бита указывают, что фракция подчеркнута, жирная, наклонная.
Фракционна запись состоит из полей "color", "fontsize", "number" and имеет переменный размер: поля "color", "fontsize", "number" могут в ней быть или не быть - это зависит от значения одноименных бит байта-предсказателя (если они равны единице, то соответствующее поле в фракционной записи существует). Если эти поля есть, то они указывают цвет, размер шрифта и номер фракции.
сингулярность(singularity) обозначает любой из трех новых символов, а термин
регион(region) обозначает полную конструкцую:
BytePredictor color fontsize numberfraction
Текстовые редакторы сами ставят отметку "имя собственное" после каждой точки, т.е. после окончания предложения, таким образом клавиши "Shift" и "CapsLock" являются редко употребляемыми и должны быть вынесены на периферию клавиатуры. Кроме того, достаточно одной клавиши "Shift" (без второй, парной ей).
Клавиши "Del" и "BkSp" в текстовых редакторах не удаляют управляющие символы (за исключением символа перехода на новую строку "/n") до тех пор, пока не встретится по два непечатных символа подряд - если непечатный символ всего один, то эти клавиши сначала перепрыгивают через него, а только затем удаляют печатный символ. Таким образом выполняются своеобразные прыжки:
abcd | abd | |
abcd | acd | |
abcde | abce | |
abcd | acd | |
abcd | abcd |
Клавишу "Shift" не нужно удерживать во время нажатия другой клавиши - достаточно нажать перед другой клавишей. Клавишу "CapsLock" не нужно нажимать второй раз после окончания аббревиатуры - режим "CapsLock" выключается самостоятельно при окончании слова. Ошибочное нажатие этих клавиш отменяется повторным их нажатием.
Число имеет вид [-|+]x[(.x)][[(|]e)|(*10)[-|+]x], где "x" - последовательность цифр; в квадратных скобках записаны необязательные компоненты; в круглых скобках записаны компоненты, которые присутствуют только одновременно; через знак "|" перечислены альтернативные компоненты.
В редакторах "as is" (MS Word, etc) движение курсора отличается от движения в текстовом файле: клавиши-стрелки "вверх", "вниз" перемещают курсор между индексами, лимитами и базовой линией, (в текстовом файле - всегда между базовыми линиями).
В HTML-документах не нужны теги "sub" и "sup" для создания индексов. Пробел "space" может применяться не в довесках, а на базовой линии в значении . Значения атрибутов html/xml-документов должны заключаться в открывающие и закрывающие двойные кавычки, т.к. значением атрибута может быть строка, сама содержащая двойные кавычки (например, запрос в базу данных с текстовой строкой).
Для генераторов парсеров и сканеров (bison, yacc, byacc; flex). Обозначим как "$b" операцию, левым операндом которой является база, а правым - нижний индекс этой базы.
Специальные обозначения, необходимые в архаичных языках программирования для управляющих символов, приведены ниже:
Тюрин Дмитрий, dmitryturin@yandex.ru, PGP