Структура словарной статьи

Словарная статья

Заголовок статьи

Тело статьи

Словарная статья

Словарь на языке DSL представляет собой последовательность словарных статей. Каждая статья состоит из двух частей: заголовка (заглавного слова или словосочетания) и тела.

Телом называется переводная или толковательная часть, следующая сразу за заголовком. Тело одной статьи простирается до заголовка следующей статьи или, если эта статья — последняя, до конца файла.

Между телом одной и заголовком следующей статьи для удобства чтения исходного DSL могут быть вставлены одна или несколько пустых строк.

Напротив, между заголовком и телом в пределах одной статьи наличие пустых строк не допускается. При компилировании такая строка будет истолкована как начало тела новой статьи, что приведёт к ошибке с сообщением об отсутствии заголовка.

У одного тела может быть несколько заголовков, между которыми также не допускается наличие пустых строк. При компилировании такая строка будет истолкована как начало заголовка новой статьи, что приведёт к ошибке с сообщением об отсутствии тела.

В одном словаре не допускается наличие двух статей с одинаковыми заголовками. При этом учитывается регистр букв, т.е. если заголовки совпадают по буквам, а буквы различаются по регистру, то заголовки уже не одинаковы: например, барс и Барс — разные заголовки.

Словарные статьи можно располагать в произвольной последовательности, не соблюдая алфавитного порядка заголовков. При отображении в словарной программе заголовки сортируются и порядок их следования в DSL не учитывается.

В DSL, подобно родственному ему языку HTML, действует правило сокращения пробелов: любое количество пробелов, идущих подряд в заголовке или теле статьи, при компилировании заменяются одним пробелом.

Заголовок статьи

Заголовком в DSL является строка, начинающаяся с любого символа, кроме знаков пробела, табуляции и метасимвола #.

Заголовком может быть как слово, так и словосочетание.

Максимально допустимая длина заголовка — 246 символов, включая пробельные. Если этот порог превысить, компилятор сообщит об ошибке и исключит текущую статью из скомпилированного словаря. При подсчёте учитываются также метасимволы \ , {…} и (…) со своим содержимым, но не учитываются пробелы, идущие после 246-го непробельного символа — таковые при компилировании будут проигнорированы. Если DSL сохранён в кодировке Unicode (UTF-16 LE), то в заголовках могут присутствовать символы занимающие более двух байтов. В таких случаях максимально допустимая длина может сокращаться (подробнее см. в главе Ограничения формата DSL).

Для того, чтобы лучше разобраться в некоторых особенностях оформления заголовков, прежде рассмотрим способ их отображения в словарной программе. При подключении словаря к Lingvo, заголовки отображаются двояко:

  1. в главном окне программы в общем списке всех заголовков;
  2. в окне словарной карточки вместе с телом статьи.

На приведённых снимках заметны различия отображения одного и того же заголовка в списке и в карточке. Ниже объясняются причины этой разницы.

Для отображения заголовков в карточках характерны следующие особенности:

  1. выделение полужирным начертанием и шрифтом бо́льшего кегля по умолчанию;
  2. возможность применять дополнительное форматирование.

Список заголовков в главном окне Lingvo включает в себя заголовочные слова и словосочетания из всех словарей, подключенных в данный момент к программе. Для отображения элементов в этом списке характерны другие особенности:

  1. отсутствие форматирования;
  2. сортировка.

Сортировка списка заголовков в Lingvo выполняется по следующему алгоритму:

  1. При сортировке учитываются символы: буквы, числа, пробел, дефис -, точка ., апостроф ', подчёркивание _, запятая , и косая черта /[1].
  2. На первом этапе формирования списка учитывается порядок следования букв в национальных алфавитах, вне зависимости от регистра символов. Вследствие чего заголовок «аврал» предшествует «Аврора», а «ерунда» предшествует «ёрш».
  3. На втором этапе учитываются числовые коды символов по таблице Юникод. Вследствие чего:
  4. В официальном справочном руководстве к Lingvo по отношению к описанному алгоритму применён термин «"естественный" лексикографический».

При оформлении заголовков особую функцию несёт употребление одинарных фигурных скобок {…}. Эта конструкция создаёт несортируемую часть заголовка, которая:

  1. не отображается в списке заголовков главного окна;
  2. игнорируется при сортировке списка заголовков главного окна;
  3. не учитывается при поиске перевода слов.

Рассмотрим, как выглядит заголовок из примера на снимках выше в исходном DSL:

Несортируемая часть заголовка :: Запись в DSL

{[c slategray]}{to }{[/c]}tell {[c slategray]}smb{[/c]} how to do {[c slategray]}smth{[/c]}
	[m1][trn]рассказать кому-либо, как что-либо делать[/trn][/m]

Сравнение кода DSL и результата его отображения демонстрирует нам следующие особенности:

  1. Любой символ или последовательность символов, заключённые в фигурные скобки, не отображаются в списке заголовков, но отображаются в карточке.
  2. Тэги DSL, заключённые в фигурные скобки, не отображаются и не влияют на внешний вид заголовков в списке главного окна, но влияют на внешний вид заголовков в словарной карточке.

Другую функцию при оформлении заголовков несёт употребление круглых скобок (…). С их помощью выделяются альтернативные части, при обработке которых один заголовок раскладывается на несколько вариантов. Так, например, запись (пре)вращать(ся) раскроется в четыре отдельных заголовка: вращать, вращаться, превращать, превращаться. Все эти варианты будут показаны без скобок в списке заголовков главного окна, а при обращении к одному из них, откроется словарная карточка, в заглавии которой отобразится исходное написание из DSL со скобками. Повторим наглядно. Запись вида:

Круглые скобки в заголовках :: Запись в DSL

(пре)вращать(ся)
	[m1]turn[/m]

в списке заголовков покажет четыре варианта без скобок:

а в карточке будет соответствовать написанию в исходном DSL:

У одной статьи может быть несколько заголовков. При этом каждый занимает одну отдельную строку. Все они будут показаны в списке заголовков, но в карточке отобразится только один — тот, который был выбран при её вызове.

Между несколькими заголовками не допускается наличие пустых строк. Каждая такая строка будет истолкована при компилировании как начало заголовка новой статьи, что приведёт к ошибке с сообщением об отсутствии тела.

Тело статьи

Тело статьи может состоять из одной или нескольких строк, каждая из которых должна начинаться с пробела (одного или нескольких), или табуляции (одной или нескольких). Строки, начинающиеся с любых других символов (кроме метасимвола #), толкуются как заголовки.

В пределах одной статьи между строками тела, а также между заголовком и телом не должно быть пустых строк. При компилировании таковые приведут к ошибке с сообщением об отсутствии заголовка в первом случае и тела — во втором.

Максимальная длина одного «слова», как непрерывной последовательности непробельных символов, в теле статьи составляет 255 символов. Превышение данного порога приведёт к ошибке при компилировании. При подсчёте не учитываются метасимвол \ и тэги с их атрибутами и значениями. В программе GoldenDict ограничений на длину «слова» нет, однако очень длинные «слова» там некорректно отображаются.

В связи с действующим правилом сокращения пробелов, возникают сложности с созданием в теле статьи отбивок и красных строк. Решается это следующими способами:

  1. Употреблением неразрывных пробелов (Non-break space):
    код в таблице Юникода: 0x00A0;
    Alt-коды: Alt+255 или Alt+0160 (набор на NumPad с одновременно зажатой клавишей Alt).
  2. Употреблением любых других нестандартных пробелов. К примеру, N-пробела (En space):
    код в таблице Юникода: 0x2002;
    Alt-код: Alt+8194[2].
  3. Употреблением экранированных пробелов: \{пробел}.

Отбивка и красная строка :: Запись в DSL

Адонис
	[m1]      ([p]греч.[/p] Adonis, от [p]финик.[/p] Адон - господин) - [p]греч.[/p] [p]назв.[/p] финикийского божества растительности и плодородия, соответствующего [p]вавилон.[/p] Таммузу. Культ А. известен со 2-го тыс. до н. э., а с нач. 1-го тыс. распространялся по [p]финик.[/p] колониям в Средиземноморье и затем проник в Грецию (в [p]греч.[/p] мифологии А. - возлюбленный Афродиты).[/m]
	\ 
	[m1][p]Лит.:[/p] Baudissin W. W., Adonis und Esmun, Lpz., 19U.

Отбивка и красная строка :: Вид в словарной карточке

Энциклопедия (Ru-Ru)
Адонис
      (греч. Adonis, от финик. Адон - господин) - греч. назв. финикийского божества растительности и плодородия, соответствующего вавилон. Таммузу. Культ А. известен со 2-го тыс. до н. э., а с нач. 1-го тыс. распространялся по финик. колониям в Средиземноморье и затем проник в Грецию (в греч. мифологии А. - возлюбленный Афродиты).

Лит.: Baudissin W. W., Adonis und Esmun, Lpz., 19U.

Подробнее о нестандартных пробелах и вариантах их использования в DSL см. в главе Об использовании нестандартных пробелов.

[1] В этом месте официальное справочное руководство добавляет: «и прочие» (см. Приложение → О сортировке заголовков → Сортируемые символы). Однако не уточняет при этом, о каких именно «прочих» идёт речь.

[2] В некоторых редакторах для работоспособности Alt-кода перед десятичным кодом символа нужно дополнительно набирать ноль 0 или два ноля 00.