Описание языка PascalABC.NET - W Cat
Шрифт:
Интервал:
Закладка:
Завершается предыдущий абзац и создается абзац стиля ptTaskCenter (при использовании в формулировке задания) или ptCommentCenter (при использовании в тексте преамбулы)
]
Метка конца абзаца с центрированием
Завершается предыдущий абзац и создается абзац стиля ptTaskContinue (при использовании в формулировке задания) или ptCommentContinue (при использовании в тексте преамбулы)
(
Метка начала абзаца с отступом
Завершается предыдущий абзац и создается абзац стиля ptTaskQuote (при использовании в формулировке задания) или ptCommentQuote (при использовании в тексте преамбулы)
)
Метка конца абзаца с отступом
Завершается предыдущий абзац и создается абзац стиля ptTaskContinue (при использовании в формулировке задания) или ptCommentContinue (при использовании в тексте преамбулы)
J
Метка начала режима выравнивания по столбцам (после нее указывается последовательность символов r, l, c, которая должна оканчиваться символом &)
<table>
j
Метка конца режима выравнивания по столбцам
</table>
&
Переход к новому столбцу в режиме выравнивания по столбцам
Добавляется тег <td> с соответствующим выравниванием; для первого столбца предварительно указывается тег <tr>
Дополнительные сведения об использовании управляющих последовательностейНеобходимость в специальных командах для генерации ссылок на другие задания группы объясняется тем, что любое имеющееся задание может быть импортировано в группу с другим именем (с помощью процедуры UseTask), и поэтому все ссылки на другие задания этой группы также потребуется откорректировать, указав в них новое имя группы. Разумеется, в подобной ситуации необходимо переносить в новую группу все задания, содержащие ссылки друг на друга. Следует заметить, что разность между номерами ссылающихся друг на друга заданий не обязана быть такой же, как в исходной группе заданий. Если в новой группе задания находятся на другом расстоянии" друг от друга, то для указания правильной ссылки достаточно внести соответствующую поправку в параметр процедуры UseTask.
Наличие нескольких видов неразрывных пробелов, не различающихся в тексте заданий и html-страниц, связано с планируемой в дальнейшем возможностью генерации текста заданий в других форматах (в частности, в формате системы TeX, в котором данные виды пробелов различаются). Приведем рекомендации по использованию неразрывных пробелов:
вокруг символов =, <, > указывается обычный неразрывный пробел ~; исключением являются фрагменты текста в скобках вида ( 0), в которых рекомендуется использовать малый пробел: (,0); неразрывный пробел ~ указывается также между текстом и переменной: стороны~{a} и~{b}; вокруг символов + и - ставится средний пробел ;; символы умножения * и деления / пробелами не обрамляются; исключением служит ситуация, когда слева и справа от символа деления указываются прописные буквы; в этом случае желательно использовать обрамление малыми пробелами. Приведем пример оформления формул (данный пример взят из задания Begin39; обратите внимание на выделение переменных с помощью фигурных скобок, а также на команды, обеспечивающие вывод индексов, выделение квадратного корня и центрирование формулы):
TaskText('Найти корни Iквадратного уравненияi ' +
'{A}*{x}^2;+;{B}*{x};+;{C}~=~0, заданного', 0, 1);
TaskText('своими коэффициентами~{A}, {B}, {C} ' +
'(коэффициент~{A} не равен~0), если известно,', 0, 2);
TaskText('что дискриминант уравнения положителен. ' +
'Вывести вначале меньший, а затем',0,3);
TaskText('больший из найденных корней. Корни квадратного ' +
'уравнения находятся по формуле', 0, 4);
TaskText('[{x}_{1,,2}~=~(-{B};+;R{D}r)/(2*{A}),] ' +
'где {D}~= Iдискриминантi, ' +
'равный {B}^2;-;4*{A}*{C}.', 0, 5);
В результате обработки данной формулировки задания в окне задачника будет выведен текст:
В html-описании этот же текст будет отформатирован следующим образом:
Для указания кавычек в тексте задания следует использовать управляющие последовательности < и >.
Управляющие последовательности t, f, N, O для логических констант, нулевых указателей и объектов генерируют текст, зависящий от выбранного в данный момент языка программирования.
Обычные пробелы, указанные после управляющих последовательностей q, Q, P, [, (, ], ), | и &, учитываются только в тексте задачника (и пропускаются в тексте html-страниц).
Режим специального выделения, устанавливаемый парными командами S и s, в окне задачника приводит к выделению полужирным шрифтом, а в html-описании обеспечивает выделение фрагмента текста, аналогичное выделению, используемому для имени задания в начале его формулировки (в приведенном выше фрагменте html-описания так выделено имя задания Begin39"). Данный режим рекомендуется использовать для выделения заголовков, размещаемых в начале абзаца (например, если формулировка задания завершается абзацем, содержащим указание, то с помощью специального выделения целесообразно выделить текст "Указание" в начале этого абзаца).
Команды выделения переменной { и } не влияют на ее вид в окне задачника, но обеспечивают ее выделение курсивом в тексте html-страницы. В индексах команды выделения переменной не учитываются, а любые латинские буквы в них автоматически выделяются курсивом.
В односимвольных индексах нельзя указывать управляющие последовательности для вывода специальных символов, поэтому при необходимости применения в индексах специальных символов следует использовать режим многосимвольных индексов. Метки индексов не могут быть вложенными. В индексах не допускается использование меток выделения I, B, S и наоборот, внутри выделенного текста не допускается указывать индексы.
Выделенные фрагменты не могут содержать меток выделения другого вида. Режим индексов и выделения, заданный в одной процедуре TaskText или CommentText, не переносится на текст, определяемый при последующих вызовах этих процедур. Если в тексте отсутствуют команды завершения текущего режима (индексов или выделения), то режим автоматически завершается при достижении конца текста, определяемого в текущей процедуре TaskText или CommentText.
В команде начала режима выравнивания по столбцам символы r, l, c определяют способ выравнивания в каждом столбце текста (r -- выравнивание по правому краю, l -- выравнивание по левому краю, c -- выравнивание по центру). Их количество должно быть равно числу столбцов. В каждом столбце должен быть хотя бы один непробельный символ (для пустого столбца достаточно указать малый неразрывный пробел ,).
Ввиду сложности управляющих последовательностей, связанных с выравниванием по столбцам, приведем пример их использования (пример взят из задания If26):
TaskText('Для данного вещественного~{x} найти значение ' +
'следующей функции~{f},', 0, 1);
TaskText('принимающей вещественные значения:', 0, 2);
TaskText('[Jrcrl&,&,& -{x},& если {x}~l~0,',
26, 3);
TaskText('&{f}({x})&~=~&{x}^2,& если 0~<~{x}~<~2,', 26, 4);
TaskText('&,&,& 4,& если {x}~g~2.j]', 26, 5);
В результате обработки данной формулировки задания в окне задачника будет выведен текст:
В html-описании этот же текст будет отформатирован следующим образом:
Команду разрыва строки | можно использовать как в обычном тексте, так и в режиме выделения с отступом или центрированием (в режиме выравнивания по столбцам переход на новую строку выполняется автоматически). Для более наглядного отображения в html-документе текста, выровненного по столбцам, данный текст рекомендуется дополнительно центрировать (как в приведенном выше примере) или использовать для него режим выравнивания с отступом.
Следует обратить внимание еще на одну особенность формулировок, содержащих выравнивание по столбцам: строки с подобным выравниванием, как правило, не нужно центрировать в окне задачника. В приведенном примере в трех последних вызовах процедуры TaskText в качестве параметра X указывается не нулевое значение (означающее центрирование по горизонтали), а число 26 -- значение позиции по горизонтали, начиная с которой требуется вывести указанную строку.
Указанное обстоятельство может затруднить использование для подобных формулировок нового варианта процедуры TaskText, появившегося в конструкторе версии 4.11. В этом варианте указывается единственный строковый параметр, содержащий все строки формулировки, разделенные символами разрыва строки (#13 или #10). При разборе этого параметра из каждой строки формулировки удаляются начальные и конечные пробелы, причем строки формулировки, оказавшиеся в результате пустыми, игнорируются, а все непустые строки выводятся в окне задачника в режиме центрирования. Тем не менее, и этот вариант процедуры TaskText позволяет обеспечить особое выравнивание требуемых строк в окне задачника. Для этого надо добавить некоторое количество вспомогательных начальных или конечных пробелов к строке, требующей специального выравнивания, причем первый начальный или последний конечный пробел надо экранировать символом , чтобы не допустить его автоматического удаления. Прочие пробелы (следующие за начальным пробелом или предшествующие конечному пробелу) экранировать необязательно. Приведем пример определения формулировки, в котором используется новый вариант процедуры TaskText (следует обратить внимание на конечные пробелы, указанные в последних трех строках; в остальном текст формулировки не отличается от приведенного выше):