Читать интересную книгу Описание языка PascalABC.NET - W Cat

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 87 88 89 90 91 92 93 94 95 ... 101

Завершается предыдущий абзац и создается абзац стиля 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 (следует обратить внимание на конечные пробелы, указанные в последних трех строках; в остальном текст формулировки не отличается от приведенного выше):

1 ... 87 88 89 90 91 92 93 94 95 ... 101
На этом сайте Вы можете читать книги онлайн бесплатно русская версия Описание языка PascalABC.NET - W Cat.
Книги, аналогичгные Описание языка PascalABC.NET - W Cat

Оставить комментарий