Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

LaTeX

.pdf
Скачиваний:
102
Добавлен:
23.03.2016
Размер:
6.45 Mб
Скачать

LaTeX Учебник

СНОВА В ШКОЛУ

Нумерация формул удобна для того, чтобы позже в тексте на неё можно было легко сослаться с помощью команды \eqref{eq:math:1}3. Если же формул немного и не хочется никакой нумерации, то можно воспользоваться окружением equation*4.

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

\displaystyle – стиль, используемый для выносных формул,

\textstyle – стиль строчных формул,

\scriptstyle – в этом стиле набираются индексы,

\scriptscriptstyle – индексы второго уровня.

Спомощью этих команд можно увеличить размер шрифта для формул внутри абзаца, или заставить индексы выглядеть как базовые символы. Например, сравните:

\begin{equation*}

 

 

 

 

 

 

 

\frac{1}{1+

 

 

1

 

 

 

 

\frac{1}{1+

 

 

 

 

 

 

1 +

1

 

 

 

\frac{1}{1+

 

 

 

1+

1

 

 

 

 

 

 

1

 

 

\frac{1}{2}}}}

 

 

1+

2

 

 

 

 

 

 

 

 

 

\end{equation*}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

и

\begin{equation*}

 

 

1

 

 

 

 

\frac{1}{\displaystyle 1+

 

 

 

 

 

 

\frac{1}{\displaystyle 1+

1 +

 

1

 

 

 

\frac{1}{\displaystyle 1+

1 +

1

 

 

 

 

 

 

 

 

\frac{\displaystyle 1}

 

 

1 +

1

 

 

 

 

 

 

 

{\displaystyle 2}}}}

 

 

 

2

 

 

\end{equation*}

 

 

 

 

 

 

 

Пробелы в формулах отмечают только конец команды, а сами по себе смысла не имеют – LaTeX, как правило, гораздо лучше знает, как сформировать результат.

Кириллица в формулах

Всё дело в имеющихся шрифтах – они красивые, разнообразные, но в большинстве своём англоязычные. В настоящее время кириллические математические шрифты в «дикой природе» отсутствуют, поэтому приходится пользоваться их текстовыми версиями.

Стиль mathtext (пакет t2), позволяет использовать кириллицу в формулах без дополнительных ухищрений. Стиль может быть подключён с опцией warn – в этом случае он сообщает обо всех случаях использования кириллических букв в формулах. mathtext следует загружать до babel и/или fontenc.

\usepackage[warn]{mathtext}

\[

 

Sконец Sначало

 

v_{ср}=\frac{S_{конец}-S_{начало}}

vср =

 

{\delta t}

 

δt

\]

 

 

 

Здесь для создания выключенной формулы используется команда \[«формула»\] – краткий аналог окружения equation*. В отличие от латиницы, русские буквы в формулах печатаются прямым шрифтом – это было сделано специально. Чтобы изменить это поведение, в преамбуле следует добавить команду для переопределения шрифта:

\DeсlareSуmbolFont{T2Aletters}{T2A}{cmr}{m}{it}

3 Метка выставляется с помощью команды \label.

4 К equation добавляется звёздочка. Подобный приём в создании команд применяется достаточно часто. Команда со * обычно не нумеруется и не отображается ни в каких автоматически составляемых списках.

Стиль amstext (загружается автоматически при загрузке amsmath) определяет команду \text, которая позволяет вставлять в формулу обычный текст. Он может быть и русским:

\[v_{ср}=

 

конец пути начало пути

 

\frac{\text{конец пути}-

vср =

 

\text{начало пути}}

 

время в пути

{\text{время в пути}}\]

 

 

 

 

 

 

 

Преимущество такого подхода заключается в том, что внутри команды \text пробелы воспринимаются как нормальные символы и слова не сливаются. Использование \text предпочтительно и для целей переносимости.

Школьная математика

Математика в школе – это явление, через которое проходит каждый. Именно поэтому фактически любой вменяемый россиянин умеет обращаться с дробями, знает теорему Пифагора, с лёгкостью решает квадратные уравнения и что-то слышал про интеграл и производную. Разберёмся со всем этим поподробнее.

Индексы

Букв в латинском алфавите не так уж и много, а научных понятий – без числа. Один из способов отличать обозначения друг от друга – это индексы, как верхние, так и нижние:

\[A_{\text{нижний индекс}}\quad

Aнижний индекс Bверхний индекс Cnk

B^{\text{верхний индекс}}\quad

C_n^k\]

 

 

 

Обратите внимание, что если в индексе ровно один знак, то фигурные скобки вокруг него можно и нужно опустить. Теперь мы можем записать теорему Пифагора: \(a^2+b^2=c^2\)

a2 + b2 = c2

a c

α

b

Математические символы

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

\begin{itemize}

ABCD — обычной,

\item \(ABCD\) "--- обычной,

 

\item \(\mathbf{ABCD}\) "--- жирной,

• ABCD — жирной,

\item \(\mathbb{ABCD}\) "--- ажурной,

• ABCD — ажурной,

\item \(\mathcal{ABCD}\) "---

прописной.

ABCD — прописной.

\end{itemize}

Это далеко не все возможные шрифтовые стили которые можно применять в математической моде, но лучше особо не перегружать формулы всякой «готикой» (например, \mathfrak).

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

Ноябрь 2006 Linux Format 115

Учебник LaTeX

Греческие символы

α

\alpha

β

\beta

γ

\gamma

δ

\delta

ε

\epsilon

ζ

\zeta

η

\eta

θ

\theta

ι

\iota

κ

\kappa

λ

\lambda

µ

\mu

ν

\nu

ξ

\xi

o

o

π

\pi

ρ

\rho

σ

\sigma

τ

\tau

υ

\upsilon

ϕ

\phi

χ

\chi

ψ

\psi

ω

\omega

Γ

\Gamma

\Delta

Θ

\Theta

Λ

\Lambda

Ξ

\Xi

Π

\Pi

Σ

\Sigma

Υ

\Upsilon

Φ

\Phi

Ψ

\Psi

\Omega

В LaTeX присутствует полный набор и, за исключением трёх букв, начертание вполне привычное. Для исправления непривычных начертаний эти буквы были переопределены с помощью пакета amssymb:

%Переопределение kappa epsilon phi на русский лад \renewcommand{\kappa}{\varkappa} \renewcommand{\epsilon}{\varepsilon} \renewcommand{\phi}{\varphi}

Спецсимволов в LaTeX великое множество. В стандартной поставке TeX Live идёт «Всеобъемлющий список сиволов LaTeX» (The Comprehensive LaTeX Symbols List – файл symbols-a4.pdf) в котором перечислено 3300 распространённых символов, применяемых пользователями LaTeX. Почти наверняка любой операнд, который вам нужен, там уже есть. Ниже будет перечислена только та часть символов, которая, с моей точки зрения, может пригодиться в наборе школьной математики. Пакет amssymb для использования обязателен.

«Школьные» символы

aˆ

\hat{a}

a¯

\bar{a}

a

\vec{a}

a˙

\dot{a}

a˜

\tilde{a}

±

\pm

 

\mp

×

\times

·

\cdot

÷

\div

 

\lor

 

\land

¬

\neg

 

\forall

 

\exists

 

\le

 

\ge

 

\ ll

 

\gg

=

\neq

\equiv

 

\sim

 

\simeq

\approx

 

\propto

 

\parallel

 

\perp

 

\angle

 

\triangle

 

\ sphericalangle

\infty

 

\ell

 

\sum

 

\prod

 

\varnothing

Для соответствия русским традициям 2 символа были переопределены:

%Переопределение le ge на русский лад \renewcommand{\le}{\leqslant} \renewcommand{\ge}{\geqslant}

Дроби

Дроби формируются с помощью команды \frac5:

Как и практически вся математика в LaTeX, дробь записывается так, как читается само выражение.

Корни

Для рисования знака корня используется команда \sqrt[степень]{«подкоренное выражение»}

Степень можно упустить. В этом случае рисуется обычный квадратный корень.

\[

 

 

 

 

 

 

 

 

 

 

 

\overline{

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

\underline{\Large

3

 

 

 

 

99

 

 

 

 

 

 

 

 

 

\sqrt[3]{a}+\sqrt[2]{b}+\sqrt[99]{g}

 

a +

b +

g

 

}

 

 

 

 

 

 

 

 

 

 

 

}

 

 

 

 

 

 

 

 

 

 

 

\]

 

 

 

 

 

 

 

 

 

 

 

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

5 От слова fraction – «дробь».

Для выравнивания по высоте используется команда \mathstrut6. В результате её применения вставляется невидимый символ нулевой толщины и высоты, в точности равной высоте круглой скобки:

\[\Large

 

 

 

 

 

 

 

 

\sqrt[3]{\mathstrut a}+

3

+

2

 

+

99

 

 

 

 

 

\sqrt[2]{\mathstrut b}+

 

 

 

\] \sqrt[99]{\mathstrut g}

a

 

b

 

g

Квадратное уравнение

И, наконец, вершина школьной математики – это решение квадратного уравнения ax2+bx+c=0:

\[

 

 

 

 

 

 

2

4ac

x_{1,2}=\frac{-b\pm\sqrt{b^2-4ac}}{2a}

x1,2 =

−b ±

b

 

\]

 

2a

 

 

 

 

 

 

 

 

 

 

 

 

Теперь можно смело садиться за написание методичек.

Функции

Все символы в математической моде печатаются курсивом, поэтому названия функций, для выделения, печатаются прямым шрифтом. Кроме смены шрифта, функции с обоих сторон должны правильно «отбиваться» пробелами, иначе будет некрасиво. При загрузке русского языка с помощью пакета babel кроме стандартных имён функций доопределяется несколько сокращений, применяемых в русскоязычной литературе. Среди часто употребляемых функций можно упомянуть: cos, arccos, sin, arcsin, tg, arctg, ctg, arcctg, sh, ch, th, cth, exp, ln, log, lim, min и max. В математической моде эти функции можно использовать

в качестве команд:

 

 

 

 

 

 

 

 

 

 

\begin{equation*}

log2 10 = ln 10/ ln 2 3.32

\begin{split}

&\log_2 10=\ln10/\ln2\simeq3.32 \\

lim

sin x

= 1

 

&\lim_{x\to0}\frac{\sin x}{x}=1\\

x→0

x

 

n

 

&(a+b)^n=\sum_{k=1}^n C^k_n a^kb^{n-k}

 

 

 

 

(a + b)n =

 

Cnkakbn−k

\end{split}

 

\end{equation*}

 

 

 

k=1

 

 

 

 

 

 

Обратите внимание на обработку индексов для функции log (логарифм) и lim (предел). Для доопределения новых функций правильнее всего воспользоваться в преамбуле командой DeclareMathOperator:

%В преамбуле - определение новых функций \DeclareMathOperator{\log-like}{log-like} \DeclareMathOperator*{\lim-like}{lim-like}

В зависимости от варианта команды индексы отображаются как для логарифма (команда без звёздочки) или как для предела (команда со звёздочкой).

Производная и интеграл

В старших классах, в конце обучения, обычно чуть-чуть касаются понятий интегрирования и дифференцирования. Возможно, для того, чтобы правильно подсчитать сдачу в магазине, эти знания не являются необходимыми. Но для изучения физики и, как следствие, химии и биологии без интегралов никак – поверьте мне на слово.

Производная обычно отмечается штрихом. В физике, производная по времени выделяется точкой, для того чтобы отличать её от производной по координате. Можно честно написать \frac{d F(x)}{dx}. Для частной производной вместо буквы d используется спецсимвол \partial:

\[ f’\quad f’’\quad

 

 

 

df

 

∂f

 

\dot{f}\quad

\ddot{f} \quad

f f

f˙

f¨

 

 

\frac{d f}{d

x}\quad

 

 

 

dx

 

∂x

 

\frac{\partial f}{\partial x} \]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Взятие производной есть обратная операция по отношению к интегрированию:

\[

 

d

 

F (x)dx = F (x)

\frac{d}{dx}\int F(x) dx=F(x)

 

 

dx

\]

 

 

 

 

 

 

 

 

 

6 От английского strut – «подпорка» или «страта».

116 Linux Format Ноябрь 2006

Приглядевшись к этому примеру, можно отметить, что, вопреки русским математическим традициям, представленный здесь интеграл не прямой, а наклонный. Это можно исправить, например, загрузив пакет wasysym с опцией integrals. К сожалению, получающиеся интегралы «не смотрятся», поэтому пока лучше использовать начертания по умолчанию в надежде, что в будущем ситуация изменится к лучшему.

Неопределённый интеграл – это хорошо, а определённый – лучше. Качественное оформление пределов интегрирования важно для вос-

приятия формулы.

\[

\int_0^{\infty}\quad

0

n

 

\int\limits_0^{\infty}\quad

n

 

 

 

 

 

 

 

0

 

\sum_{i=1}^n\quad

 

 

i=1

i=1

\sum\nolimits_{i=1}^n\quad

 

 

 

 

 

\]

 

 

 

 

 

 

 

 

 

 

По умолчанию пределы размещаются справа от интеграла. Ситуацию можно поправить с помощью команды \limits. Команда \nolimits делает всё ровно наоборот.

Скобки

Для визуальной группировки символов внутри формулы скобки – вещь незаменимая. Особенно здорово, если скобки автоматически подгоняют свой размер под выражение, которое они окружают. Парные команды \left и \right включают режим подобной подстройки:

\[\left(

\left[

\left\langle

\left\{

\left\uparrow

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

\left\lceil

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

\left|

 

 

 

 

 

 

 

 

 

 

4

 

3

 

2

 

 

 

 

 

 

 

 

 

5

 

 

\right\rfloor^9

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

\left\lfloor

 

 

 

 

 

7

 

 

 

 

 

 

 

\text{что-то}^{10}

 

что-то10

9

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

\right|^8

 

 

 

 

 

 

 

 

 

 

 

 

 

\right\rceil^7

 

 

 

 

 

 

 

 

 

 

 

 

 

\right\downarrow^6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

\right\}^5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

\right\rangle^4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

\right]^3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

\right)^2\]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Эстеты, в зависимости от ситуации, могут добавить в конце команды модификатор позиционирования разделителя как левого – l (отбивка как для \left), правого – r (отбивка как для \right) и среднего – m.

Перенос формул

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

a + b = = c

Однако, по умолчанию этого не происходит. Проще всего решить проблему с помощью следующего макроса7, который необходимо определить в преамбуле:

%перенос формул в тексте \newcommand*{\hm}[1]{#1\nobreak\discretionary{}%

{\hbox{$\mathsurround=0pt #1$}}{}}

Здесь определена команда \hm, которую следует добавлять в местах потенциального переноса формулы, примерно, так: \(a + b \hm{=} c\). Сделать это можно во время окончательной доводки текста. В любом случае, для полировки рукописи ручная работа необходима.

Заключение

Изложенных правил и приёмов вполне хватит для набора текстов в рамках школьной математики. Для более изощрённых формул требуются более продвинутые приёмы и конструкции. Всё это будет, но чуть позже.

LaTeX Учебник

Формулы для Вики

«Движок», который использует Википедия для отображения формул, называется WikiTeX.

Основной сайт проекта, естественно, представляет из себя вики и расположен по адресу http://wikisophia.org/ Используя это программное обеспечение в связке с LaTeX, можно не только сносно отображать математические формулы на WWW без особых ухищрений, но и отрисовывать шахматные партии, химические формулы, фейнмановские диаграммы, нотные записи и многое другое. TeX разрабатывался как программа, которая может формировать изображения для разных устройств, даже для тех, о которых на момент создания этого текстового процессора профессору Д.Э. Кнуту ничего не было известно. Поэтому TeX обретается в самых неожиданных местах.

Сделайте так, чтобы Ваш форум или Вики заговорили на языке LaTeX.

7 Рецепт от Евгения Миньковского из fido7.ru.tex

Через месяц Твердо усвоив школьную программу, мы двинемся в сторону высшей математики.

Ноябрь 2006 Linux Format 117

Компьютерные TeXнологии Учимся использовать культовую систему вёрстки

Графика

ЧАСТЬ 3: Порой иллюстрация стоит тысячи слов – и сегодня Евгений Балдин расскажет, как добавить их в создаваемые вами документы LaTeX!

ческие программы умеют экспортировать результаты своей деятельности в виде

инструкций PostScript. Это особенно касается векторных графических редакторов,

так как PostScript подразумевает векторную графику.

Encapsulated PostScript (EPS) – графический формат [скорее даже язык про-

граммирования, – прим. ред.]. Файлы в этом формате обычно имеют расширение

.eps. По сути дела, это PostScript с некоторыми упрощениями и дополнительными

договорённостями. Самая интересная с точки зрения LaTeX договорённость – это

обязательное наличие в заголовке информации о размере картинки, которая пере-

даётся вместе с комментарием:

%!PS-Adobe-2.0 EPSF-2.0

%%Creator: dvips(k) 5.95b Copyright 2005 Radical Eye Software

%%Title: picture.dvi

%%BoundingBox: 127 464 430 667

%%DocumentFonts: SFRM1200 SFRM0800

%%EndComments

Первая строка комментария обычно содержит версию PostScript1. Вслед за

комментарием BoundingBox идёт информация о размерах. Первые два числа соот-

ветствуют координатам левого нижнего угла картинки, а последние соответствуют координатам правого верхнего угла. Единицей измерения является «большой пункт» (bp=1/72 in), который примерно равен 0,351 мм. Для вёрстки текста указанной информации достаточно.

Чтобы из уже имеющегося одностраничного PostScript-файла сделать EPS, Q: Как быстро написать на LaTeX-е курсовую, в которой кроме текста необходимо и, как правило, достаточно добавить BoundingBox. Для вычисления

есть и графики?

 

искомых размеров можно воспользоваться утилитой ps2eps из одноимённого паке-

A: Сделать для начала графики.

 

та. Если же в стандартной поставке эта программа отсутствует, то можно напрямую

Вопрос и краткий ответ воспользоваться программой Ghostscript – свободным программным интерпрета-

 

 

тором PostScript:

ероятно, на текущий момент TeX лучше других программ вёрстки умеет

 

 

 

 

> gs -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=bbox «имя файла»

разбивать абзацы на строки, то есть удачнее всех разливать порции «клея»

 

Размеры выясняются с помощью указания специального драйвера bbox.

Вмежду «боксами». Но подготовка графики выносится за рамки этого про-

 

Ключи -q, -dNOPAUSE и -dBATCH используются для подавления вывода ненужной

цесса. Почти…

 

информации и вопросов со стороны программы. Ключ -dSAFER гарантирует, что

С точки зрения TeX, картинка – это просто очень большой прямоугольник, кото-

 

Ghostscript не будет производить никаких деструктивных действий2.

рый надо как-то разместить на странице. От пользователя нужны только размеры

 

Ещё одной особенностью формата EPS является возможность добавлять рас-

этого прямоугольника. Отображение же иллюстрации лежит на плечах драйверов.

 

тровое изображение для предварительного просмотра. Это было сделано для

Самым востребованным форматом для представления графики в LaTeX до сих пор

 

ситуаций, когда программа не понимает PostScript, а что-то на месте «дырки» для

является Encapsulated PostScript.

 

картинки отобразить надо. Такое добавление идёт вразрез с принципиальной кросс-

Encapsulated PostScript

 

платформенностью PostScript и его следует, по возможности, избегать. Для опе-

 

раций с этим расширением, в том числе и для добавления/удаления растра, можно

Уже больше двадцати лет прошло с тех пор, как никому не известная фирма

 

воспользоваться утилитой epstool из одноимённого пакета.

Adobe Systems Inc. получила от компании Apple инвестиции на «обучение» лазер-

 

В конце рассказа про EPS хотелось бы упомянуть о замечательной утилите

ных принтеров молодому языку PostScript. Как следствие, этот платформенно-

 

pstoedit из, естественно, одноимённого же пакета. Не все, но некоторые из более-

независимый язык с полностью открытой спецификацией стал безальтернатив-

 

 

 

1

Некоторые программы (не будем тыкать пальцем в драйвер для PostScript-принтеров одной очень

ным стандартом. Даже сейчас PostScript фактически не имеет конкурентов в

 

распространённой операционной системы) добавляют перед комментарием бинарный мусор. Для полноценной

области допечатной подготовки. Поэтому почти все «уважающие себя» графи-

работы с такими файлами этот мусор следует удалить.

 

 

 

 

Месяц назад Мы набирали математические формулы.

86 Linux Format Декабрь 2006

LaTeX Учебник

 

 

Значение представляет из себя четыре

 

 

числа, кодирующие положение лево-

 

 

го нижнего и правого верхнего углов,

 

 

например: [bb=127 464 430 667]. Вместо

 

 

одного bb можно воспользоваться чет-

 

 

вёркой ключей: [bbllx=127,bblly=464,bb

 

 

rx=430,bbry=667], каждому из которых

 

 

присваивается только одно значение.

 

 

Помимо перечисленных ключей,

 

 

для модификации BoundingBox можно

 

Пример использования \includegraphics.

использовать viewport – четыре чис-

 

 

ла, описывающих границы BoundingBox,

 

 

где в качестве центра координат выби-

менее внятно созданных PostScript-файлов она ухитряется перевести в редактиру-

рается левый нижний угол уже сущест-

емый векторный графический формат. Это упрощает правку файлов, которые не

вующего описания и trim – четыре числа, представляющих собой отступы от левой,

имеют исходных текстов.

нижней, правой и верхней границ.

Как сделать EPS из растра

clip – обрезает вставленную картинку по BoundingBox. Это необходимо делать

в случае изменения границ для «выкусывания» части картинки, иначе она будет

Одним из важных вопросов является конвертация растровых форматов в EPS. Растр

«вылезать» за пределы выделенного ей бокса. По умолчанию имеет значение false.

гораздо проще создавать, а кое-где, например, при снятии скриншотов, применим

Отсутствие значение у ключа clip при его упоминании эквивалентно значению true.

фактически только растр. Стандартные же средства преобразования, например,

Подобное поведение верно и для других логических переключателей.

утилита convert из пакета ImageMagick, не всегда дают оптимальные результаты.

angle – поворачивает картинку на заданный угол в градусах.

 

Возможным и вполне разумным решением является замена традиционной

origin – определяет координаты центра, вокруг которого вращается рисунок.

линейки: LaTeX dvips [ps2pdf] на pdfLaTeX, сразу «из коробки» поддержива-

Кроме непосредственно координат, origin принимает и буквенные сокращения: l,

ющий растровые форматы PNG и JPEG, которые можно внедрять в формат PDF

b, r и t – соответствует центру вращения слева, снизу, справа и сверху. В каждом

напрямую. Массового перехода на данную технологию пока не наблюдается, но

случае выбирается середина указанной стороны. Возможны комбинации, задаю-

заметное движение в эту сторону есть. У неё есть неоспоримые достоинства, но она

щие углы картинки: lt, rt, rb и lb. c обозначает центр картинки.

не лишена недостатков. Рассказ о pdfLaTeX выходит за рамки этой статьи.

width – ширина вставляемой картинки.

 

Вопрос о конвертации из JPEG можно решить с помощью простой утилиты

height – высота вставляемой картинки.

jpeg2ps, которую можно найти в любом CTAN3-архиве в директории nonfree/support/

scale – масштабный коэффициент.

jpeg2ps. Утилита не преобразовывает JPEG-файл, а просто добавляет правильный

keepaspectratio – логический переключатель. Модифицирует параметры высо-

EPS-заголовок. Декомпрессия JPEG производится непосредственно интерпретато-

ты и ширины картинки в сторону уменьшения с целью сохранения исходных про-

ром PostScript4. К недостаткам утилиты можно отнести то, что в силу своей лицен-

изображения.

зии она не может распространяться со свободными дистрибутивами, а к достоинс-

 

твам – отсутствие зависимостей.

 

 

Более комплексными решениями являются утилиты sam2p из одноимённого

 

пакета и bmeps. Их также можно найти на CTAN в директориях graphics/sam2p и

 

support/bmeps, соответственно. sam2p является своеобразным комбайном, который

 

поддерживает множество растровых графических форматов, в то время как bmeps

 

фокусируется на PNG и JPEG. Обе эти программы позволяют получить вполне при-

 

личную EPS-картинку для печати или просмотра на экране. В обоих случаях будет

Ещё один пример использования \includegraphics

необходимо разобраться в ключах и настройках. С моей точки зрения, bmeps являет-

 

ся более удобным решением, производящим достаточно маленькие5 по размеру EPS-

Аргументы \includegraphics интерпретируются слева направо. Для команд вра-

файлы, но и sam2p достаточно хорош.

щения и масштабирования порядок следования имеет значение.

 

Опять же на CTAN в директории graphics/a2ping можно взять довольно уве-

По вашим правилам

систый perl-скрипт a2ping.pl. Он является своеобразной надстройкой над sam2p и

Ghostscript, что позволяет ему более-менее автоматически конвертировать из рас-

Пакет graphicx предоставляет возможность вызвать внешнюю программу для обра-

тра в PostScript и обратно.

ботки картинки перед её вставкой. Так, например, можно добавить возможность

 

Обзор внешних программ закончен. Внимание! Далее слово «пакет» будет отно-

включения в документ PNG-файлов:

ситься к пакетам LaTeX, а не пакетам дистрибутива GNU/Linux.

\DeclareGraphicsRule{.png}{eps}{.bb}{`bmeps -p3 -c #1`}

graphicx

Первый параметр определяет расширение нового графического формата, для

которого задаются правила. В представленном примере это .png. Второй параметр

Ответственным за создание «бокса» для размещения картинки является пакет

указывает тип графики. После преобразования это будет EPS – по умолчанию,

graphicx6, а точнее, команда \includegraphics.

dvips ничего другого и не знает. Третий параметр определяет расширение файла,

 

В команде есть один обязательный параметр – вставляемая картинка.

из которого будут считаны параметры BoundingBox. Файл должен содержать одну

Необязательные параметры передаются с помощью пар «ключ=значение», разде-

строчку вида:

ляемых запятой. За подобный способ объявления параметров отвечает пакет keyval.

%%BoundingBox: 0 0 848 979

Некоторые из поддерживаемых пакетом параметров перечислены ниже:

Такой файл необходимо предварительно создать для каждой PNG-картинки. Это

 

bb – позволяет исправить BoundingBox прямо в коде, не меняя EPS-файл.

можно сделать, например, так:

 

 

bmeps -b «картинка».png «картинка».bb

2

Отключается возможность выполнения таких команд, как удаление и переименование, а чтение файлов

Последний параметр определяет команду, которую следует выполнить для

преобразования картинки. Команда должна выдавать результат в стандартный

происходит в режиме read-only. Очень полезный ключ, если Ghostscript используется в качестве фильтра.

3

The Comprehensive TeX Archive Network. Центральный сайт: http://www.ctan.org.

поток вывода. #1 соответствует имени обрабатываемого файла. Непосредственное

4

Это стало возможным, начиная с версии PostScript Level 2.

выполнение команды происходит при трансляции dvi-файла.

5

Это важно, так как мало какой растровый редактор может оптимально сохранить EPS.

Выполнение внешней команды является потенциально опасной процедурой,

6

graphicx пришёл на смену пакету graphics — различия в последней букве. Команды из предыдущего пакета

поэтому защита по умолчанию этого не позволяет. Для просмотра dvi-файла через

также можно использовать, но делать это настоятельно не рекомендуется.

 

Декабрь 2006 Linux Format 87

Учебник LaTeX

xdvi следует использовать ключ -allowshell. В противном случае будет выдаваться

или b – в этом случае запрет распространяется только на размещение плавающих

запрос на выполнение команды каждый раз, когда встречается вставка по новым

объектов вверху или внизу страницы, соответственно.

правилам. Для преобразования в PostScript через dvips также следует отключить

placeins

защиту с помощью ключика -R0. Лучше всё-таки, по возможности, избегать выше-

описанной процедуры и сразу готовить картинки в формате EPS.

Пакет placeins не даёт плавающим объектам «утекать» за установленные пределы.

Для трактования всех неизвестных драйверу расширений как EPS следует при-

Барьер устанавливается с помощью команды \FloatBarrier.

менить команду:

Это бывает полезно, когда хочется, чтобы все картинки не выходили за пределы

 

 

своего раздела. В этом случае следует переопределить нужную команду секциони-

\DeclareGraphicsRule{*}{eps}{*}{}

Это полезно в случае вставки картинок MetaPost, которые по умолчанию не

рования для установки перед ней барьеров. В случае команды секционирования

имеют расширений. Если третий параметр равен «звёздочке», то это означает, что

раздела (section) достаточно передать пакету при загрузке опцию [section]:

BoundingBox следует искать в том же файле, что и графику.

 

 

\usepackage[section]{placeins}

 

 

 

 

Плавающие объекты

endfloat

Часто при подготовке статей необходимо размещать иллюстрации на отдельных

Мало просто добавить картинку – её надо красиво разместить, и, по возможности,

страницах после основного текста. Подобная галерея предваряется списком иллюс-

она должна это делать самостоятельно. Просто \includegraphics для этого дела не

траций. Пакет endfloat именно это и делает. Достаточно просто загрузить его.

очень подходит, так как размещение регулируется исключительно пользователем.

«Упаковка» картинок в один float

Для этой цели в LaTeX имеется специальная сущность: плавающий объект (float7).

Если для данного объекта не хватает места на текущей странице, он переносится

Для уменьшения «поголовья» плавающих объектов полезно размещать картинки

на следующую.

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

Стандартные классы определяют плавающий объект для размещения картинок

команду \parbox или окружение minipage:

как окружение figure:

 

 

\parbox[«позиционирование»]{ширина}{текст}

 

 

 

 

\begin{figure}[ht]

 

 

 

 

 

 

\centering%центрируем картинку

\begin{minipage}[«позиционирование»]{ширина}

 

 

 

 

\includegraphics{«картинка»}

текст

 

 

 

 

\caption{«подпись»}\label{fig:metka}

\end{minipage}

 

 

В обоих случаях поддерживается обязательный параметр «ширина», по которой

\end{figure}

В качестве необязательного параметра окружению figure можно передать допус-

формируется создаваемый бокс, и необязательный «позиционирование» – рас-

тимые способы размещения плавающего объекта:

положение сформированного бокса относительно базовой линии по вертикали.

h – разместить по возможности здесь же,

Позиционирование может проводиться по центру (опция [c] – задана по умолча-

t – разместить в верхней части страницы,

нию), по верхней линии ([t]) и по нижней линии бокса ([b]). Шаблон для двух стоя-

b – разместить в нижней части страницы,

щих рядом рисунков может иметь примерно следующий вид:

p – разместить на отдельной странице, где нет ничего, кроме плавающих

 

 

\begin{figure}[ht]\centering

объектов.

 

 

\parbox[b]{0.49\TeXtwidth}{\centering

Приоритет размещения определяется порядком следования букв. Если первой

 

 

\includegraphics{«рисунок-1»}

следует буква h, то в случае неудачи LaTeX размещает плавающий объект на следу-

 

 

\caption{«подпись-1»}\label{fig:metka-1}}

ющей странице. Если же первыми следуют буквы t или b, то размещение организу-

 

 

\hfil\hfil%раздвигаем боксы по горизонтали

ется на текущей странице.

 

 

\begin{minipage}[b]{0.49\TeXtwidth}

Для «красивого» размещения картинок LaTeX опирается на некоторые значения

 

 

\centering

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

 

 

\includegraphics{«рисунок-2»}

Поэтому, если очень хочется разместить картинку, например, внизу, то пожелание

 

 

\caption{«подпись-2»}\label{fig:metka-2}

можно усилить с помощью восклицательного знака: [b!].

 

 

\end{minipage}

 

 

 

 

Управление плавающими объектами

\end{figure}

Использование команды \parbox или окружения minipage зависит исключитель-

Если плавающих объектов в документе немного, то всё будет хорошо и без како-

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

го-либо вмешательства человека. Но если их много, то так или иначе надо будет

конструкции.

управлять их размещением.

Для целей автоматизации упаковки можно использовать специализированные

clearpage

пакеты:

subfig – организует группы из множества картинок. Относительно современный

Если LaTeX не справляется с размещением картинок, то он переносит их на следую-

пакет.

щую страницу. В какой-то момент может накопиться целая «толпа» таких перенесён-

miniplot – делает то же что subfig, хоть и менее изощрённо.

ных картинок, и возникнет необходимость в их «насильственном» выводе в каком-то

figsize – специализируется на автоматическом вычислении размеров картинок

определённом месте. Для этого существует команда \clearpage. При вызове этой

для размещения их в указанных пределах.

команды завершается текущая страница и выводятся все отложенные плавающие объ-

dpfloat – определяет новый тип плавающего окружения, занимающего сразу

екты – и только потом продолжается обычный вывод текста. Единственная проблема

две страницы – двойные иллюстрации на развороте.

этой команды в том, что текущая страница обрывается. Чтобы избежать обрыва, мож-

Картинки «в оборку»

но воспользоваться пакетом afterpage, точнее, одноимённой командой из него:

 

 

Маленькие иллюстративные рисунки удобно делать в оборку с текстом, то есть

\afterpage{\clearpage}

Команда \afterpage откладывает выполнение указанных в ней инструкций до

текст должен обтекать их. Такие картинки располагаются на внешней стороне стра-

конца текущей страницы.

ницы – слева для чётных и справа для нечётных страниц или, в случае, односторон-

suppressfloats

него режима печати, справа.

Традиционно описываются два пакета для создания подобных рисунков: floatflt

Команда \suppressfloats полностью подавляет размещение плавающих объектов

и wrapfig. floatflt более автоматизирован для размещения картинок, но он также

на текущей странице. В качестве необязательного параметра ей можно передать t

чаще «ломается» при большом числе плавающих объектов. Возможны даже «поте-

 

 

ри» картинок. Упомянутые пакеты определяют окружения floatingfigure и wrapfigure,

 

 

7 Пакет, который позволяет создавать новые типы плавающих объектов, так и называется: float. Вместо него

соответственно.

можно использовать floatraw, созданный Ольгой Лапко.

 

 

\begin{floatingfigure}[«размещение»]{«ширина»}

88 Linux Format Декабрь 2006

LaTeX Учебник

Картинка в оборку.

\end{floatingfigure}

Необязательный параметр «размещение» позволяет изменить алгоритм размещения картинки:

rflt – размещать справа, lflt – размещать слева,

vflt – слева для чётных и справа для нечётных страниц (по умолчанию).

\begin{wrapfigure}[«число строк в оборке»] {«размещение»}{«ширина»}

\end{wrapfigure}

В отличие от окружения floatingfigure, wrapfigure требует определить правила размещения картинки. Доступные варианты: справа ({r}), слева ({l}), с внешней стороны страницы ({i}) и с внутренней стороны страницы ({o}). Если вместо строчных букв передать заглавные, то включается запрет на сдвиг по вертикали – картинка должна быть размещена начиная с той строки абзаца, в которой она была определена.

Необязательный параметр «число строк в оборке» позволяет указать число строк текста, которые должны быть сбоку от картинки, при этом выносная формула считается за три строки текста. Если параметр не определён, то число строк вычисляется автоматически – к сожалению, не всегда оптимально.

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

\sidefig(«ширина картинки»)(«ширина текста») {\includegraphics{«картинка»}}{«текст»}

В этом случае предлагается передавать команде \sidefig и саму картинку, и текст, помещаемый сбоку. Параметр «ширина текста» можно опустить – тогда текст занимает всё оставшееся пространство. Подробности можно посмотреть в документации nccfloats.pdf.

Подписи к рисункам

Для добавления подписи к рисунку используется команда \caption, которую можно использовать только внутри плавающих объектов. В качестве обязательного параметра передаётся текст подписи. При выводе подпись центрируется, если она достаточно мала. В противном случае подпись оформляется в виде абзаца. Текст подписи не должен содержать команд разрыва строки. Все хрупкие команды внутри подписи должны быть защищены с помощью команды \protect. \caption можно передать также необязательный параметр, который должен представлять из себя краткую версию подписи, появляющуюся в автоматически создаваемых списках.

Оформление подписи жёстко привязано к стилю документа, и изменить её без переопределения самой команды \caption непросто. Для модификации параметров следует воспользоваться пакетами caption или ccaption. Оба упомянутых пакета позволяют «покрутить» множество ручек и снабжены исчерпывающей документацией.

При включении русской опции \usepackage[russian]{babel} перед подписью выводится слово «Рис.», за которым следует автоматически вычисляемый порядковый номер картинки. В качестве разделителя между счётчиком и подписью по умолчанию используется двоеточие. Для замены двоеточия на точку в преамбуле достаточно набрать, например, следующее:

8 nccfloats входит в коллекцию ncctools, созданную А.И. Роженко

\usepackage{ccaption}

% заменяем для рисунков ‘:’ после номера рисунка на ‘.’ \captiondelim{. } % после точки стоит пробел!

Кроме традиционного размещения подписи под картинками, её можно вынести, например, на поля страницы. Недаром же стандартные классы имеют такие широкие поля! Пакет mcaption определяет окружение margincap:

\begin{figure}[ht]

\begin{margincap}{«Подпись»}

\includegraphics{«картинка»}

\end{margincap}

\end{figure}

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

Странный получился рассказ. В статье, озаглавленной «Графика», не было сказано ни слова о том, как эту графику, собственно говоря, создавать. А ведь есть что сказать, но в данном случае информация о размещении и оформлении готовых картинок поважнее будет. О том, что LaTeX умеет рисовать, мы тоже поговорим, но чуть попозже. LXF

OpenSource шагает по стране – «пользователи» наступают.

Посмотрите на картинку. Что это? Это TpX – простой векторный редактор для Windows.

Чем же он интересен? Гм, сложный вопрос. Ну да – его можно запустить в Wine и от некоторых действий он даже не выпадает в осадок. Но это не Inkscape и отнюдь не xfig. Ещё один ничем не выдающийся «велосипед», если бы не три «но».

Первое «но» состоит в том, что этот «велосипед» выпущен под GPL: (http:// sourceforge.net/projects/tpx/).

Второе «но» заключается в специализации этого редактора – он предназначен для создания простых картинок с последующим внедрением в LaTeX. То есть это всё-таки специализированный «велосипед».

«Но» третье и основное заключается в авторе. Это Александр Анатольевич Цыплаков (http://www.nsu.ru/ef/tsy/) – кандидат экономических наук и доцент Новосибирского государственного университета. Да, для разработки использовался Delphi, да информацию, что программа под GPL найти в коде непросто (её там нет) – отсутствие технической культуры, да, диссертация написана в Microsoft Word – как это принято у экономистов. Но автор не технарь – он тот самый «пользователь», о котором так любят рассуждать программисты. Пользователь, недовольный нехваткой инструментов настолько, что начал создавать их самостоятельно. Не просто создавать, а распространять результаты своего труда под свободной лицензией. И этой программой вполне можно пользоваться.

Правда, пока автор не освоит в совершенстве Lazarus, более-менее стабильной версии под Linux (у автора это в планах) вряд ли можно ожидать. Ну, естественно, если кто-нибудь ему не поможет, а то «пользователи» будут вынуждены взять власть в свои «очумелые» руки.

Через месяц LaTeX для программистов – представление кода и алгоритмов в печатном виде.

Декабрь 2006 Linux Format 89

Компьютерные TeXнологии Учимся использовать культовую систему вёрстки

Документация и

ЧАСТЬ 4: TeX, как известно, был создан для представления кода и алгоритмов. Так постигайте же замысел создателя и его последователей вместе с Евгением Балдиным!

+++ Ошибка Деления На Огурец. Переустановите Вселенную И Перезагрузитесь +++

Так зависает Гекс.

Источник: «Санта-Хрякус» от Терри Пратчетта

Программирование под Linux – вполне естественное занятие. Написание документации – неотъемлемая часть этого процесса. LaTeX достоин быть включённым в технологическую

цепочку по выпуску программного продукта.

Если вспомнить историю, то Д.Э. Кнут создал TeX именно для целей представления кода и алгоритмов в своём глобальном пятитомнике «Искусство программирования».

Спецсредства

Чтобы украсить инструкцию, надо добавлять в неё «пятна». Злоупотреблять этим не стоит, но пару мыслей выделить вполне реально. Упомянутые ниже приёмы далеко не все, что может предложить LaTeX: это просто демонстрация возможностей.

LCD-дисплей

LCD-дисплеи сейчас встроены даже в кофемолки. Они легко узнаваемы, поэтому нет необходимости копировать их вид в документацию с помощью фотографий достаточно нарисовать что-то похожее. Изобразить вид дисплея можно с помощью пакета lcd.

keystroke

Иногда в тексте необходимы фразы вида: «Для выхода из программы нужно нажать клавишу Esc.» Макрос \keystroke, определённый в одноимённом пакете keystroke, позволяет выделить название клавиши, примерно следующим образом:

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

Для определения цветов используется макрос \definecolor из пакета color. Команда \LCDcolors формирует цвет букв и фона, а макрос \textLCD выводит LCD-подобный текст на экран. \textLCD понимает стандартные команды изменения размера шрифта, поэтому его можно использовать совместно с обычным текстом внутри абзаца.

По умолчанию определены только латинские буквы, цифры и некоторые из стандартных символов. Для определения других символов можно воспользоваться макросом \DefineLCDchar. Макросу передаётся имя символа и битовая маска, определяющая картинку 5x7 точек. Имя символа может быть однобуквенным, тогда соответствующая буква замещается новым рисунком, или многобуквенным, тогда созданный рисунок кодируется указанным словом в фигурных скобках. Другие размеры матрицы в пакете отсутствуют, но при желании его вполне можно доработать.

Клавиши, определённые в пакете keystoke.

Определяем букву «Ё» для LCD.

 

Месяц назад Мы научились вставлять графику в документы LaTeX.

86 Linux Format Январь 2007

\wordbox[lrb]{1}{до 65{.}527 байт} \end{bytefield}
Кроме уже упомянутых команд создания полей при описании формата UDP использовалась команда нумерации столбцов \bitheader, конструкция для создания группы \wordgroupr и макрос \skippedwords
для формирования «разрыва». Стандартный пакет altt – это почти то же самое, что и verbatim, В качестве обязательного аргумента команде \bitheader передаётно с возможностью использовать внутри окружения команды LaTeX.
ся список нумеруемых битов, при этом можно передавать диапазоПравда, шрифт в любом случае остаётся фиксированной ширины, как ны чисел, например, {0-31}. В пакете определены два окружения для для печатной машинки.
группировки битовых полей, \wordgroupr и \wordgroupl отличие этих
команд в том, что для первой заголовок группы вводится справа, а для второй слева. Для более подробной информации следует обратиться к документации пакета.
Гораздо более разнообразные средства управления выводом неформатированного текста предоставляет пакет fancyvrb. За подробной информацией следует обратиться к документации пакета.
2 User Datagram Protocol — это сетевой протокол для передачи данных в сетях IP.
Январь 2007 Linux Format
\skippedwords\\
\wordbox[lrt]{1}{Данные}\\
\endwordgroupr\\
\bitbox{16}{Размер}\bitbox{16}{Контрольная сумма}
\bitbox{16}{Порт отправителя}\bitbox{16}{Порт получателя}\\
\wordgroupr{Заголовок}
\bitheader{0,15,16,31}\\
\begin{bytefield}{32}
\bitbox[«рамка»]{«число занимаемых битов»}{«текст»}
\wordbox[«рамка»]{«число строк»}{«текст»}
Самый простой способ включить код в текст это заключить его в стандартное окружение verbatim, которое просто выводит данный текст на печать с отступами пользователя. При этом исчезает возможность
Необязательный параметр «рамка» позволяет сформировать обрамделать акценты в избранных местах.
ление для текущего битового поля. Значение по умолчанию [lrtb] означаНебольшие вставки можно делать с помощью команды \verb!текст!. ет, что рамка рисуется со всех сторон поля: l слева, r справа, t сверСразу после \verb должен идти группирующий символ (в данном случае, ху и b снизу. Строки разделяются двойной обратной чертой \\. «!»), который указывает окончание действия команды. Группирующий
Формат пакета сетевого протокола UDP1 можно описать примерно символ может быть любым, кроме пробела или звёздочки «*». следующим образом: Пакет verbatim из коллекции tools переопределяет стандарт-
ную команду так, что внутри окружения можно вставлять тексты неограниченного размера. Кроме этого, пакет предоставляет команду \verbatiminput, которой в качестве основного аргумента можно передать имя внешнего файла.
Кроме упомянутых окружения и макросов определены такие же, но со звёздочкой в конце имени, то есть окружение verbatim* и команды \verb* и \verbatiminput*. *-форма отличается от базовой тем, что все пробелы визуализируются.
verbatim
В окружении bytefield работают команды \wordbox и \bitbox, которые формируют поля, занимающие всю ширину таблицы или только часть её, соответственно:
\begin{bytefield}{«битовая ширина поля»} «битовые поля»
\end{bytefield}
Форматирование кода
LaTeX может использоваться не только для набора математики. Хотя набор математики, безусловно, вершина типографского искусства, существует масса задач со сравнимой сложностью форматирования. Представление исходных текстов программ это весьма непростое занятие, особенно если хочется сделать код читаемым.
Битовые поля
Для описания сетевых протоколов, а так же для бинарных форматов данных удобнее всего представить последовательность битов графически, то есть в виде таблицы. Это специализация пакета bytefield. В пакете определено одноимённое окружение bytefield, в качестве обязательного аргумента которому передаётся ширина таблицы в битах:

LaTeX Учебник

программный код

Для эмуляции дисплея используется команда \LCD. В качестве обя-

зательных параметров ей передаётся число строк и число столбцов, за

которыми следует содержание строк, разделённых каким-то раздели-

телем. В приведённом примере в качестве разделителя используется

вертикальная черта, но на её месте мог бы быть любой символ:

Формат пакета UDP.

87

Пример использования пакета algorithm.
algorithm
Пакет algorithm ориентирован на описание алгоритмов, а не на представление кода. Это позволяет отрешиться от форматирования и сосредоточиться на основной задаче. Пакет определяет окружение algorithmic. Для использования в преамбуле следует загрузить одноимённый стиль.
Собственно говоря, это именно то, ради чего Д.Э. Кнут и создал TeX. Поэтому пакеты для облегчения записи алгоритмов в LaTeX существовали с самого его рождения. На текущий момент, даже число стандартных пакетов, подпадающих под эту тематику, больше десятка. Здесь рассмотрена только малая часть из них.
Представление алгоритмов
ляет установить язык программирования отличный от выбранного по умолчанию, а caption создаёт подпись к фрагменту кода.
Файлы можно включать с помощью команды \lstinputlisting: %установка значений по умолчанию
\lstset{numbers=left, language=MetaPost, backgroundcolor=\color{yellow}, frame=shadowbox, rulesepcolor=\color{black}}
%вставка файла \lstinputlisting[firstline=16, lastline=24,
emph={forsuffixes,text,bpath},emphstyle={\color{red}},
emph={[2]fill,unfill},emphstyle={[2]\bfseries\underbar},
]{intro.mp}
Необязательный параметр может принимать опции, специфичные для оформления этого куска кода. Например, опция language позво-
2 Следует поискать файл listings.pdf.
Сразу после загрузки пакета рекомендуется «подгрузить» исполь-
зуемые в тексте языки программирования3 с помощью макроса С помощью опций firstline и secondline можно указать диапазон \lstloadlanguages. В квадратных скобочках перед названием языка строк, который следует вывести. В зависимости от выбора языка форможно указать желательный диалект. матирование существенно меняется. Инструкция numbers=left нумерует
Команда \lstset позволяет устанавливать значения по умолчанию. строки слева.
Некоторые из полезных умолчаний перечислены ниже: Для работы с цветами лучше загрузить уже упоминавшийся Для того, чтобы можно было печатать кириллицу, например в комранее пакет color. Цвета хороши для выделения каких-то ключементариях, следует определить переменную extendedchars=true4. вых слов и подложки, за которую отвечает опция backgroundcolor. Опция escapechar позволяет при наборе кода пользоваться услугаВозможности для определения своих «словариков» предоставляет ми LaTeX напрямую. Всё, что находится между выбранными символаопции emph=<список ключевых слов>. В начале списка может идти ми, обрабатывается средствами LaTeX. Естественно, если выбранный его метка в квадратных скобках, таким образом, можно поддерживать символ (в данном случае «|») используется в отображаемом языке, то несколько списков одновременно. С помощью опции emphstyle можно могут возникнуть проблемы при компиляции. Для того, чтобы обнуопределить способ выделения ключевых слов.
лить escapechar, достаточно ничего не писать за знаком равно при слеОбычно код располагается прямо по месту основного текста, так как дующем переопределении. обсуждение «исходников» можно производить в самом коде, благо есть Инструкция frame=<POSITION> позволяет рисовать рамку вокруг комментарии. При желании можно воспользоваться опцией float, чтобы сегмента кода. На вход принимаются буквы t обрамление сверху, b из фрагмента кода получился полноценный «плавающий» объект.
снизу, l и r слева и справа, соответственно. В случае frame=trbl будет Пакет поддерживает свыше сотни распространённых языков пронарисована простейшая одинарная рамка. Опция frame= эквивалентна граммирования и разметки (с учётом диалектов), так что вам, скоотказу от обрамления. Если вместо прописных букв указать заглавные рее всего, не придётся определять свой язык с помощью инструкции frame=TRBL, то рамка будет двойная. В пакете есть возможность сде- \lstdefinelanguage. Но если очень хочется, то и это возможно.
лать рамки посложнее.
Все команды, определённые в пакете listings, начинаются с префикса lst. Команда для включения небольших кусочков кода \lstinline!код! аналогична по действию команде \verb!текст!.
Сегмент кода оформляется с помощью окружения lstlisting:
LaTeX
listings
Пакет listings специализируется на оформлении программного кода. К пакету прилагается подробнейшая документация2. С помощью команд пакета можно включить как небольшие кусочки кода, так и целые его сегменты, ну и, естественно, файлы.
Для загрузки пакета listings необходимо добавить в заголовок следующие инструкции:

Учебник

3 Текущая версия пакета 1.3c поддерживает следующие языки (в скобках указаны диалекты): ABAP, ACSL, Ada (83, 95), Algol (60, 68), Ant, Assembler (x86masm), Awk (gnu, POSIX), bash, Basic (Visual), C (ANSI, Handel, Objective, Sharp), C++ (ANSI, GNU, ISO, Visual), Caml (light, Objective), Clean, Cobol (1974, 1985, ibm) Comal 80, csh, Delphi, Eiffel, Elan, erlang, Euphoria, Fortran (77, 90, 95), GCL, Gnuplot, Haskell, HTML, IDL (empty, CORBA), inform, Java (empty, AspectJ), JVMIS, ksh, Lisp (empty, Auto), Logo, make (empty, gnu), Mathematica (1.0, 3.0), Matlab, Mercury, MetaPost, Miranda, Mizar, ML, Modula-2, MuPAD, NASTRAN, Oberon-2, OCL (decorative, OMG), Octave, Oz, Pascal (Borland6, Standard, XSC), Perl, PHP, PL/I, Plasm, POV, Prolog, Promela, Python, R, Reduce, Rexx, RSL, Ruby, S (empty, PLUS), SAS, Scilab, sh, SHELXL, Simula (67, CII, DEC, IBM), SQL, tcl (empty, tk), TeX (AlLaTeX, common, LaTeX, plain, primitive), VBScript, Verilog, VHDL (empty, AMS), VRML (97), XML, XSLT.

4 Если это не сработает, то необходимо обновить пакет до последней версии или сменить дистрибутив LaTeX на более подходящий.

88 Linux Format Январь 2007

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]