Опубликован: 07.02.2007 | Доступ: свободный | Студентов: 3790 / 1190 | Оценка: 4.56 / 3.95 | Длительность: 23:09:00
Специальности: Художник
Лекция 3:

Набор текста

Буквальное воспроизведение(verbatim, verb)

Окружение verbatim предназначено для буквального воспроизведения имеющихся в файле символов (шрифтом типа пишушей машинки). Одной только команды \ttfamily для этого недостаточно, поскольку воспроизводимый текст может содержать, например, команды TeX'а, и необходимо, чтобы они печатались, а не исполнялись.

Между \begin{verbatim} и \end{verbatim} могут идти любые символы (в том числе символ "\" и непарные фигурные скобки), за исключением последовательности символов \end{verbatim}. После этого надо написать \end{verbatim} в отдельной строке, ничего, кроме этого текста, не содержащей (для всех прочих LaTeX'овских окружений это не обязательно). При этом между "\end" и "{verbatim}" не должно быть пробела (также вопреки общим правилам: обычно такой пробел, как и вообще пробел после имени команды, состоящего из букв, ни на что не влияет).

Короткие последовательности символов удобно набирать для буквального воспроизведения с помощью команды \verb. Непосредственно после \verb должен стоять любой символ, не являющийся буквой или звездочкой, далее — воспроизводимый текст (укладывающийся в одну строку), не содержащий того символа, который стоял непосредственно после \verb, а затем — снова тот символ, что стоял непосредственно после \verb. После \verb не должно быть пробела. Пример:

Команда \verb"\dots" задает
многоточие. Знак~\verb|"|
в TeX'е используется
редко
.
Команда \verb"\dots" 
задает многоточие. 
Знак~\verb|"|
в TeX'е используется
редко.

Описанные окружение и команда удобны, когда надо имитировать машинописный текст, текст на мониторе компьютера, или набирать тексты компьютерных программ. В данном руководстве \verb и verbatim широко использовались для набора LaTeX'овских и TeX'овских команд.

У команды \verb и окружения verbatim есть варианты "со звездочкой". От своих вариантов без звездочки они отличаются тем, что пробел изображается знаком \text{\char32}.

Команду \verb и окружение verbatim нельзя использовать в сносках; если вам необходимо напечатать в сноске что-нибудь вроде \sqrt, то придется делать это вручную, с помощью команды \symbol: \texttt{\symbol{`\\}sqrt} или \texttt{\symbol{"5C}sqrt}.

Если вы забудете "закрывающий символ" в команде \verb или сделаете опечатку в тексте \end{verbatim}, то в лучшем случае получите уйму сообщений об ошибке, а в худшем — завесите компьютер.

Если вы воспроизводите в режиме verbatim текст, простирающийся на многие страницы (например, компьютерную программу), то TeX'у может не хватить памяти. Чтобы избежать такой неприятности, надо или распределить воспроизводимый текст по нескольким окружениям verbatim, или подключить стилевой пакет verbatim, после чего можно будет спокойно задавать сколь угодно длинные окружения verbatim и verbatim* (только не забудьте про \end{verbatim} в конце). Кроме того, при подключении этого пакета становится доступной команда \verbatiminput, позволяющая дословно воспроизвести содержимое произвольного текстового файла: именно, если вы напишете '\verbatiminput{something.txt}', то это будет равносильно тому, как если бы вы написали

\begin{verbatim}
(содержимое файла something.txt)
\end {verbatim}

Абзацы нестандартной формы

Пусть нам потребовалось создать абзац c "отрицательным" абзацным отступом, в котором все строки, кроме первой, начинаются на расстоянии одного сантиметра от полей. Этого можно добиться следующим образом:

%%%HOLE_TeX%%% 
\documentclass{book}
\usepackage[matrix,arrow,curve]{xy}
\usepackage{all}
%%%%
\usepackage{textcomp}
\setlength{\textwidth}{3cm}
\parindent=0cm

\usepackage{color}
\usepackage{amsmath}
\usepackage{mathtext}         % если нужны русские буквы в формулах (не обязательно)
\usepackage[T2A]{fontenc}     % внутренняя T2A кодировка TeX
\usepackage[cp1251]{inputenc} % кодировка - можно использовать [cp866] [cp1251] [koi8-r]
\usepackage[russian]{babel}   % включение переносов
\usepackage{tabularx}
\usepackage{longtable}
%\usepackage{graphy}
\usepackage{array}
\usepackage{soul}

\definecolor{bg}{rgb}{
1,1,1
}
\definecolor{fg}{rgb}{
0.517647058823529,0.00784313725490196,0.0156862745098039
}
\pagestyle{empty}
\pagecolor{bg}
\begin{document}
\color{fg}
\noindent{\unitlength=0.1pt
\raisebox{-4pt}{
\hbox{\begin{picture}(1,1)
\put(0,0){\line(1,0){1}}
\end{picture}
}
\hbox to \textwidth {}{\hbox {
\begin{picture}(1,1)
\put(0,0){\line(1,0){1}}
\end{picture}
}}}
\par\noindent
\parindent=-1cm

Отрицательный абзацный отступ
(по-английски hanging indentation).
}
\end{document}
\hangindent=1cm \noindent
Отрицательный абзацный отступ
(по-английски hanging indentation).

Здесь TeX'овский параметр \hangindent означает величину отступа от полей во всех строках абзаца, кроме первой (по умолчанию значение этого параметра равно нулю). Обратите внимание, что мы начали абзац командой \noindent, чтобы первая строка не началась с абзацным отступом (см. разд.Подавление стандартного отступа).

Пусть теперь нам хочется, чтобы дополнительный отступ, величина которого задана параметром \hangindent, начинался не со второй строки, а, скажем, с третьей. Для этого надо установить еще один TeX'овский параметр, обозначаемый \hangafter:

%%%HOLE_TeX%%% 
\documentclass{book}
\usepackage[matrix,arrow,curve]{xy}
\setlength{\textwidth}{4cm}

\usepackage{color}
\usepackage[T2A]{fontenc}     % внутренняя T2A кодировка TeX
\usepackage[cp1251]{inputenc} % кодировка - можно использовать [cp866] [cp1251] [koi8-r]
\usepackage[russian]{babel}   % включение переносов

\definecolor{bg}{rgb}{
1,1,1
}
\definecolor{fg}{rgb}{
0.517647058823529,0.00784313725490196,0.0156862745098039
}
\pagestyle{empty}
\pagecolor{bg}
\begin{document}
\color{fg}

\hangindent=1cm \hangafter=2
\noindent 
Можно сделать
так, чтобы отступ начался не с
первой строки, а там, где нам
это потребовалось.

}
\end{document}
\hangindent=1cm \hangafter=2
\noindent Можно сделать
так, чтобы отступ начался не с
первой строки, а там, где нам
это потребовалось.

Значение параметра \hangafter — номер строки, после которой начинается дополнительный отступ. По умолчанию значение \hangafter равно единице (как и было в нашем первом примере).

Можно также добиться того, чтоб дополнительный отступ не начинался после какой-то строки, а напротив, присутствовал только в нескольких первых строках абзаца. Для этого надо присвоить параметру \hangafter отрицательное значение: если величина \hangafter равна n<0, то дополнительный отступ, равный \hangindent, будет присутствовать в строках номер 1,2,\ldots,|n|. Пример:


\hangindent=1.5cm
\hangafter=-3 \noindent
С помощью рассмотренных нами
средств TeX'а можно
выкапывать в абзацах небольшие
ямки. На место образующегося
белого прямоугольника можно,
например, вклеить иллюстрацию.

Если значение параметра \hangindent отрицательно и равно h, то дополнительный отступ размером |h| будет отсчитываться от правого, а не левого поля (в каких именно строках будет этот дополнительный отступ, по-прежнему определяется значением \hangafter ):


\hangindent=-2cm \hangafter=2
\noindent
На сей раз нам захотелось
приклеить картинку не слева,
а справа. Что ж, TeX\ позволяет
сделать и так, было бы желание.
Вскоре вы сможете убедиться,
что и это — не предел.

После каждой команды "завершить абзац" (иными словами, после каждой пустой строки или команды \par восстанавливаются принятые по умолчанию значения параметров \hangindent и \hangafter. Отметим еще, что не следует менять эти параметры внутри LaTeX'овских окружений наподобие itemize или quote: в таких окружениях LaTeX устанавливает эти параметры самостоятельно, и их ручная переустановка может привести к непредсказуемым результатам.


Начало этого причудливого абзаца выглядело в исходном тексте так:

\parshape=14
0cm 6cm  .1cm 5.8cm  .17cm 5.66cm  .5cm 5cm
.9cm 4.2cm  1.05cm 3.9cm  1.1cm 3.8cm  1.1cm 3.8cm
1.05cm 3.9cm  .9cm 4.2cm  .5cm 5cm .17cm 5.66cm
.1cm 5.8cm  0cm 6cm
\noindent \small
Если вам не хватает возможностей...

Смысл этого текста следующий. Число 14, следующее непосредственно после \parshape и знака равенства, задает количество строк, имеющих нестандартные длину и/или отступ от левого поля. После этого числа, через пробел (конец строки, как мы помним, — тоже пробел), перечислены отступы от левого поля и длины строк: 0cm - отступ первой строки от левого поля, 6cm - ее длина, 0.1cm - отступ второй строки от левого поля, 5.8cm - ее длина, и т.д. Если написано, что \parshape равно n, то после этого должно следовать 2n длин. Если реально в абзаце получится менее n строк, то указания на длину и отступ отсутствующих строк будут проигнорированы TeX'ом; если строк получается больше, чем n, то все последующие строки будут иметь те же отступ и длину, что заданы для строки номер n. Заметим, наконец, что абзац мы начали командой \noindent, чтобы отступ самой первой строки был действительно равен нулю (если абзац начинается без \noindent, то в первой строке будет еще присутствовать пробел длиной в \parindent ).

После пустой строки или команды \par действие параметров, заданных командой \parshape, прекращается.

У абзаца, форма которого задана с помощью \hangindent или \parshape, длина и отступ строки зависят, как вы могли заметить, от ее номера. Если такой абзац содержит выключную формулу, то TeX считает, что эта формула занимает три строки, причем сама формула расположена в средней из этих трех (реально формула может, разумеется, занимать больше места).

Сноски

Чтобы сделать сноску к какому-то месту в тексте, достаточно использовать команду \footnote с одним обязательным аргументом — текстом сноски. В стандартных классах LaTeX'а сноски8Вроде этой. нумеруются подряд на протяжении всей лекции или даже (в классе article) всего документа. В исходном тексте предыдущий фрагмент выглядел так:

сноски\footnote{Вроде этой.} нумеруются ...

В разделе, посвященном "счетчикам", мы расскажем о том, какие возможности есть для того, чтобы помечать сноски по-другому.

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

Текст сноски может состоять из нескольких абзацев; в этом случае они, как обычно, разделяются пустой строкой.

К сожалению, весьма непросто заставить TeX автоматически нумеровать сноски так, чтобы нумерация начиналась заново на каждой странице. В LaTeX'е, в частности, такая возможность не предусмотрена. Если вы готовы пожертвовать автоматической нумерацией сносок, то можно воспользоваться командой \footnote с необязательным аргументом. Этот необязательный аргумент ставится (в квадратных скобках) перед обязательным \footnote [2003]{Вот какой интересный номер!}. Предыдущий фрагмент выглядел в исходном тексте так:

обязательным\footnote[2003]{Вот какой ... }

При использовании команды \footnote с необязательным аргументом автоматическая нумерация сносок не сбивается: предыдущая сноска имела номер \arabic{footnote}, затем мы искусственно создали сноску номер 2003, а следующая сноска9Вот эта. будет иметь номер \arabic{footnote}.

В случае, если вы хотите сделать сноску к тексту, входящему в " блок" (например, в аргумент команды \mbox ; в "Блоки и клей" мы расскажем о том, что такое блок в общем случае и какими командами блоки генерируются), команда \footnote непригодна. Вот как надо ставить сноски в этом случае:

Роман \mbox{``Три\footnotemark\
мушкетера''}\footnotetext{А не четыре!} написал Дюма.

В этом случае получится нормальная сноска, напоминающая нам, что в названии романа \mbox{``Три\footnotemark\ мушкетера''}\footnotetext{А не четыре!} фигурируют три мушкетера, а не четыре. Если бы мы просто написали \footnote, то увидели бы на печати только номер, но не саму сноску. Обратите также внимание на "backslash с пробелом" после команды \footnotemark: мы его поставили, чтобы между словами " три" и "мушкетера" на печати был пробел.

Если вы к тому же хотите вручную задать номер сноски к тексту, входящему в "блок", то нужно задать этот номер дважды: первый раз в качестве необязательного аргумента команды \footnotemark (обязательных аргументов у этой команды не предусмотрено), а второй раз — в качестве необязательного аргумента команды \footnotetext (необязательный аргумент этой команды должен идти перед обязательным):

Роман \mbox{``Три\footnotemark[99]
мушкетера''}\footnotetext[99]{А не четыре!}
написал Дюма.
Василий Майоров
Василий Майоров
Даврон Юсупалиев
Даврон Юсупалиев
Андрей Лучицкий
Андрей Лучицкий
Россия
Михаил Алексеев
Михаил Алексеев
Россия, Уфа, УГАТУ, 2002