Команды первой позиции

Команды первой позиции предназначены для упрощения процедур форматирования данных, вставки изображений, вычисления значений переменных и ряда других вспомогательных действий. Каждая команда начинается с определенного символа, вводимого в ПЕРВОЙ позиции строки. Если надо начать строку обычного текста с такого же символа - введите пробел, а потом строку. При отображении строки ведущие пробелы будут проигнорированы.
Команда * служит для ввода заголовков и указания принудительного пропуска строк в тексте. Для ввода заголовка 1 уровня следует указать в первой позиции перед текстом заголовка один символ *, для заголовков 2 уровня - **, для третьего - ***. Если после символа * в первой позиции строки нет ничего, то будет выведена пустая строка (не конец абзаца, а именно пропуск строки - аналог тега BR).
Команда = служит для формирования ненумерованных списков. Для ввода списка 1 уровня следует указать в первой позиции перед текстом элемента списка символ =, для списков 2 уровня - ==, для третьего - ===. Вывод списков разных уровней выполняется с разным отступом. Величина отступа определяется конфигурацией. Если после символа = в первой позиции строки нет ничего, то будет выведена горизонтальная прямая линия (аналог тега HR).
Пример вложенных ненумерованных списков
=Первый элемент 1 уровня
==Первый элемент вложенного списка
==Второй элемент вложенного списка
===Первый элемент 3 уровня
===Второй элемент 3 уровня
===Третий элемент 3 уровня
=Второй элемент 1 уровня
==Первый элемент 2 уровня для второго элемента 1 уровня
==Второй элемент 2 уровня для второго элемента 1 уровня
=Третий элемент 1 уровня
Пример вложенных ненумерованных списков
Первый элемент 1 уровня
Первый элемент вложенного списка
Второй элемент вложенного списка
Первый элемент 3 уровня
Второй элемент 3 уровня
Третий элемент 3 уровня
Второй элемент 1 уровня
Первый элемент 2 уровня для второго элемента 1 уровня
Второй элемент 2 уровня для второго элемента 1 уровня
Третий элемент 1 уровня
Команда + служит для формирования нумерованных списков. Для ввода списка 1 уровня следует указать в первой позиции перед текстом элемента списка символ +, для списков 2 уровня - ++, для третьего - +++. Вывод списков разных уровней выполняется с разным отступом. Величина отступа определяется конфигурацией. Нумерация ведется последовательными числами, начиная с 1. Счетчик 3го уровня сбрасывается при появлении следующего элемента 2 уровня, счетчик 2 уровня - при появлении следующего элемента 1го уровня. Для сброса счетчика 1 уровня надо начать новую секцию .text.
Пример вложенных нумерованных списков
+Первый элемент 1 уровня
++Первый элемент вложенного списка
++Второй элемент вложенного списка
+++Первый элемент 3 уровня
+++Второй элемент 3 уровня
+++Третий элемент 3 уровня
+Второй элемент 1 уровня
++Первый элемент 2 уровня для второго элемента 1 уровня
++Второй элемент 2 уровня для второго элемента 1 уровня
+Третий элемент 1 уровня
Пример вложенных нумерованных списков
 1. Первый элемент 1 уровня
1.1. Первый элемент вложенного списка
1.2. Второй элемент вложенного списка
1.2.1. Первый элемент 3 уровня
1.2.2. Второй элемент 3 уровня
1.2.3. Третий элемент 3 уровня
 2. Второй элемент 1 уровня
2.1. Первый элемент 2 уровня для второго элемента 1 уровня
2.2. Второй элемент 2 уровня для второго элемента 1 уровня
 3. Третий элемент 1 уровня
Нумерованные и ненумерованные списки могут сочетаться в различные комбинациях.
Пример сочетания нумерованных и ненумерованных списков
+Первый элемент 1 уровня
++Первый элемент вложенного списка
++Второй элемент вложенного списка
===Первый элемент 3 уровня
===Второй элемент 3 уровня
===Третий элемент 3 уровня
+Второй элемент 1 уровня
==Первый элемент 2 уровня для второго элемента 1 уровня
==Второй элемент 2 уровня для второго элемента 1 уровня
+Третий элемент 1 уровня
Пример сочетания нумерованных и ненумерованных списков
 1. Первый элемент 1 уровня
1.1. Первый элемент вложенного списка
1.2. Второй элемент вложенного списка
Первый элемент 3 уровня
Второй элемент 3 уровня
Третий элемент 3 уровня
 2. Второй элемент 1 уровня
Первый элемент 2 уровня для второго элемента 1 уровня
Второй элемент 2 уровня для второго элемента 1 уровня
 3. Третий элемент 1 уровня
Величина отступа (как и все параметры форматирования) задается правилами стилевого оформления, которые могут быть изменены средствами конфигурирования (см. раздел "Конфигурирование узлов ").
Команда ' (одинарная кавычка) служит для выделения жирным шрифтом всей строки.
Команда ` (обратная кавычка) приводит к тому, что текст строки будет выведен наклонным шрифтом с выравниванием по центру строки.
Команда > приводит к выводу строки с выравниванием по правой границе окна. Однако, если в конце строки указан символ <, то строка будет выровнена по центру.
Команда & вставляет в текст изображение. В целом она похожа на применение тега IMG, но в ряде случаев существенно упрощает процесс вставки изображения. Общий формат команды следующий:
&xкартинка^f малая_картинка подпись
x - правило выравнивания. Если после символа & указан символ <, то изображение будет размещено ("плавать") слева от последующего текста, если указан символ >, то изображение будет размещено справа от текста. Если эти символы не заданы (x не указан), изображение будет размещено по центру без обтекания текстом.
картинка - URI файла основной картинки. Обязательный параметр. Имя не должно содержать пробелов и символа ^.
f - число пикселов для ужатия (расширения) изображения "картинки" по горизонтали (аналог параметра width тега IMG). Если ^f задано, то высота изменяется пропорционально ширине (система автоматически рассчитывает значение параметра height, исходя из реальных размеров картинки и заданной ширины). Если ^f не задано, то "картинка" выводится в своем реальном размере.
малая_картинка - URI файла уменьшенного изображения картинки. Если задано, то в документ вставляется ссылка на уменьшенное изображение как ссылка на полноразмерное изображение "картинки". Если уменьшенное изображение не задано или вместо него указан символ "звездочка" (*), но задан параметр ^f основного изображения, то в документ вставляется сформатированное по правилам указанным выше изображение основной "картинки" как ссылка на ее полноразмерное изображение.
подпись - произвольный текст (название, комментарий к картинке), который при его наличии размещается под изображением.
Пример:
&>http://www.shurem.ru/users/shurem/shurem-face-400.jpg^200 * Евгений Шуремов<BR>Советский Союз
Надеюсь, что моя физиономия плавает в этом тексте справа, ужата по ширине до 200 пикселов и являет собой ссылку на полноразмерное изображение, которое будет выведено в отдельной вкладке или окне при нажатии на изображение. Только не жмите сильно - мне будет больно.
Евгений Шуремов
Советский Союз
Надеюсь, что моя физиономия плавает в этом тексте справа, ужата по ширине до 200 пикселов и являет собой ссылку на полноразмерное изображение, которое будет выведено в отдельной вкладке или окне при нажатии на изображение. Только не жмите сильно - мне будет больно.
Команда @ служит для присваивания значения переменной. Формат команды:
@имя=выражение
имя - имя переменной
выражение - выражение, значение которого присваивается переменной имя (см раздел "Описание встроенного языка").
Команда ; оформляет строку как комментарий к выходному документу. Эквивалентно:
<!--строка-->
Команда #URI упрощает ввод ссылок на внешний источник. Эквивалентно:
<A href="URI">Источник</A><BR>
Команда : определяет целое множество команд автоматизации формирования текста.
Команда :n (n - число) определяет последующий текст как заголовок уровня n. Для n=1 эквивалентно команде *, для n=2 - **, n=3 - ***. В базовой конфигурации системы предусмотрено форматирование для 3х уровней заголовков, а также заголовка нулевого уровня n=0 (центрированный заголовок). Однако с помощью средств конфигурирования можно определить порядок оформления более, чем 3х уровней заголовков. Тогда n будет указывать на требуемый уровень.
Команда :html позволяет напрямую вставить строку HTML-кода. В ряде случаев это удобнее, чем открывать и закрывать отдельную секцию .htmx. Поля переменных данных обрабатываются.
Команда :style устанавливает новый стиль отображения данных документа.
:style n
n - номер или имя стиля в заданное в конфигурации (см. раздел "Конфигурирование узлов ")
Команда :paste позволяет вложить другой документ с текущего места данного документа. Структура команды:
:paste doc1,doc2,...,docN условие
doc* - номер или имя вкладываемого документа.
Любой из вкладываемых документов обрабатывается по обычным правилам и, если он содержит команды :paste или :import, то рекурсивно происходит вложение указанных ими данных. Уровень рекурсии теоретически неограничен. Проверка на зацикливание (вкладываемый документ пытается вложить тот, в который производится вложение) не производится. В данном случае результат не будет получен.
условие - здесь и везде далее - необязательный параметр - выражение, в зависимости от истинности которого команда выполняется или не выполняется. Если условие опущено, то команда выполняется.
Команда :import позволяет вложить с текущей строки выбранные секции другого документа. Структура команды:
:import doc;s1,s2,...,sN условие
doc - номер или имя документа.
s* - имя секции или название типа секции.
Секции вставляются в последовательности их размещения в документе-источнике, а не в последовательности перечисления имен. Если список имен секций не указан, то команда эквивалентна :paste doc, то есть вставляются все секции источника. Если требуется загрузить все секции определенного типа, то в списке имен нужно указать конструкцию $type, где type - тип секции. Например, выполнение команды :import 1234;$vote приведет к вставке в выходной документ всех секций типа vote документа с номером 1234 начиная с текущей позиции.
Команда :load позволяет загрузить в таблицу переменных документа описание выбранных секций другого документа. В отличие от команды :import, мгновенной вставки данных не производится, но они сохраняются в памяти для последующей обработки другими командами.
Структура команды:
:load name;doc;s1,s2,...,sN условие
name - имя переменной, в которую загружаются данные.
doc - номер или имя документа.
s* - имя секции или название типа секции (аналогично :import).
Команда :test позволяет сгенерировать набор, включающий заданное число тестовых заданий на основе данных, загруженных командами :load. Структура команды:
:test name;v1,v2,...,vN;nt,nv,b0,b1,b2,b3,b4 условие
name - имя создаваемого пакета заданий.
v* - имена переменных, ранее созданных командами :load.
nt - число тестовых заданий, включаемых в пакет.
nv - число вариантов выбора ответа.
b0 - признак включения (1) или не включения (0) в пакет тестовых заданий, определяемых секциями .test.
b1 - признак включения (1) или не включения (0) в пакет тестовых заданий типа 1.
b2 - признак включения (1) или не включения (0) в пакет тестовых заданий типа 2.
b3 - признак включения (1) или не включения (0) в пакет тестовых заданий типа 3.
b4 - признак включения (1) или не включения (0) в пакет тестовых заданий типа 4.
Типы тестовых заданий, автоматически создаваемых на основе словарей (см. параграф "Секция .voc" раздела "Создание/Изменение узлов и документов "):
1 - задан термин, выбрать правильное определение из nv вариантов.
2 - задано определение термина, выбрать правильный термин из nv вариантов.
3 - задан термин, написать его определение.
4 - задано определение, написать характеризующий его термин.
Алгоритм работы команды :test
 1. Если b0=1, то на основе всех секций .test, найденных в списке переменных v* создается список тестовых заданий.
 2. Объединяются все словари, найденные в списке переменных v*.
 3. Если b1=1, то генерируется список тестовых заданий типа 1 для всех терминов объединенного словаря.
 4. Если b2=1, то генерируется список тестовых заданий типа 2 для всех терминов объединенного словаря.
 5. Если b3=1, то генерируется список тестовых заданий типа 3 для всех терминов объединенного словаря.
 6. Если b4=1, то генерируется список тестовых заданий типа 4 для всех терминов объединенного словаря.
 7. Все полученные списки тестовых заданий объединяются и перемешиваются.
 8. Из полученного списка случайным образом выбирается nt тестовых заданий.
 9. Полученный список обрабатывается по правилам оформления тестов и включается в выходной документ.
Тестовые задания типа 1 и 2 формируются следующим образом. Для выбранного термина (определения) отбирается его определение (термин) - правильный ответ. Далее, из всего множества определений (терминов), кроме правильного, случайным образом выбирается nv-1 определений (терминов). Правильный и неправильные ответы перемешиваются и назначаются вариантами выбора.
Пример:
:load t1;isea_test1
:load t2;isea_test2
:load t3;isea_test3
:load t4;isea_test4
:load t5;isea_test5
:load t6;isea_test6
:test test1;t1,t2,t3,t4,t5,t6;15,7,0,1,0,0,0
В данном примере командами :load загружаются все секции документов с именами isea_test* в переменные t*. Все найденные в переменных t1,t2,t3,t4,t5,t6 словари объединяются. Из объединенного словаря случайным образом выбирается 15 терминов, для каждого из которых генерируется тестовое задание типа 1.
Чем больше типов тестов разрешено включать в пакет заданий - тем больше пространство отбора тестовых заданий. Предположим, что в рассмотренном примере объединенный словарь включает 100 терминов. В примере случайный выбор будет производиться из 100 вариантов тестовых заданий. Предположим, та же команда выдана в форме:
:test test1;t1,t2,t3,t4,t5,t6;15,7,0,1,1,1,1
Тогда выбор будет производиться уже из 400 тестовых заданий, поскольку по 100 заданий будут сформированы для каждого типа тестовых заданий. На выходе будет получен пакет из 15 тестовых заданий разного типа.
Команда :vote включает в выходной документ заданное число случайно выбранных опросов на основе данных, загруженных командами :load. Структура команды:
:vote name;v1,v2,...,vN;nv условие
name - имя создаваемого пакета опросов.
v* - имена переменных, ранее созданных командами :load.
nv - число опросов, включаемых в пакет (по умолчанию 1).
Алгоритм работы команды :vote
 1. На основе всех секций .vote, найденных в списке переменных v* создается список опросов.
 2. Из списка опросов исключаются те, на которые данный пользователь уже дал ответ.
 3. Из полученного списка случайным образом выбираются nv опросов.
 4. Выбранные опросы включаются в выходной документ.
Как следует из приведенного алгоритма, возможности выбора опросов сужаются по мере того, как пользователь дает на них ответы. В итоге в документ может быть не включено ни одного опроса.
Команда :cite включает в выходной текст случайно выбранный абзац из заданного документа и оформляет его как цитату. Структура команды:
:cite doc условие
doc - номер или имя документа.
Документ-цитатник должен включать только абзацы текста (цитаты), разделенные пустыми строками.
Команда :image вставляет в текст документа случайным образом выбранную картинку из альбомов, найденных в данных, загруженных командами :load. Структура команды:
:image name;v1,v2,...,vN;side,w,h,mode условие
name - имя переменной, получающей HTML-код ссылки на картинку.
v* - имена переменных, ранее созданных командами :load.
side - способ выравнивания картинки.
w - максимальная ширина представления картинки в пикселах.
h - максимальная высота представления картинки в пикселах.
mode - отображать картинку (1) - по умолчанию, если параметр не указан; (0) - не отображать.
Алгоритм работы команды :image
 1. На основе всех секций .album, найденных в списке переменных v* создается список имен файлов с изображениями.
 2. Из полученного списка случайным образом выбирается файл.
 3. Картинка форматируется таким образом, чтобы ее размер по горизонтали был не больше w, а по вертикали не больше h. Если w и h не заданы, картинка выводится в натуральную величину.
 4. Если side=c (значение по умолчанию), то картинка выводится по центру без обтекания текстом. Если side=r, то картинка размещается (плавает) справа от текста, если side=l, то - слева.
 5. Если mode=0, то картинка не выводится
 6. HTML-код для вывода картинки помещается в переменную name.
Команда :collage вставляет в текст документа композицию из заданного числа случайно выбранных картинок из альбомов, найденных в данных, загруженных командами :load. Структура команды:
:collage name;v1,v2,...,vN;cols,rows;side,w,h,mode условие
name - имя переменной, получающей HTML-код ссылки на коллаж.
v* - имена переменных, ранее созданных командами :load.
cols - число столбцов композиции.
rows - число строк композиции.
side - способ выравнивания картинки.
w - максимальная ширина представления картинки в пикселах.
h - максимальная высота представления картинки в пикселах.
mode - отображать картинку (1) - по умолчанию, если параметр не указан; (0) - не отображать.
Алгоритм работы команда :collage
 1. На основе всех секций .album, найденных в списке переменных v* создается список имен файлов с изображениями.
 2. Из полученного списка случайным образом выбирается n=cols*rows файлов.
 3. Из выбранных файлов формируется таблица, включающая rows строк и cols столбцов. При этом изображения ужимаются (растягиваются) по следующим правилам:
Если mode=1, то для отображения картинки используются параметры, установленные в соответствующем альбоме (см. раздел "Секция .album").
Если mode=0, то картинка форматируется таким образом, чтобы ее размер по горизонтали был не больше w, а по вертикали не больше h.
 4. Если side=c (значение по умолчанию), то таблица с картинками выводится по центру без обтекания текстом. Если side=r, то таблица размещается (плавает) справа от текста, если side=l, то - слева.
 5. Если mode=0, то коллаж не выводится
 6. HTML-код для вывода коллажа помещается в переменную name.
Команда :album вставляет в текст документа альбом, являющийся объединением альбомов, найденных в данных, загруженных командами :load. Структура команды:
:album name;v1,v2,...,vN;cols;side,w,h,mode условие
name - имя переменной, получающей HTML-код ссылки на коллаж.
v* - имена переменных, ранее созданных командами :load.
cols - число столбцов композиции.
side - способ выравнивания картинки.
w - максимальная ширина представления картинки в пикселах.
h - максимальная высота представления картинки в пикселах.
mode - отображать картинку (1) - по умолчанию, если параметр не указан; (0) - не отображать.
Команда :next определяет следующий документ и условие, при котором он будет выведен на проcмотр следующим. Структура команды:
:next doc условие
Если задана одна или несколько команд :next, система запоминает указанные в них условия и идентификаторы документов. В конце выходного документа вставляются кнопки "Продолжить" и "Отменить". При нажатии на кнопку "Продолжить" система анализирует условия, установленные командами :next и выбирает документ, который выводится на просмотр следующим.