Журнал LinuxFormat - перейти на главную

LXF85:LaTeX

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(to be continued…)

Версия 02:04, 11 марта 2008

Содержание

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

Набор математики: снова в школу

ЧАСТЬ 3: Успешно пройдя две ступени посвящения, вы готовы двинуться в путь к вершинам мастерства. Вашим проводником в этом нелегком деле будет Евгений Балдин.

Полиграфисты относят математические работы к каторжным… Д.Э. Кнут. Математическая типография.

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

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

LaTeX – не единственная программная среда, использующая TeXнотацию. Эта же нотация рекомендуется при наборе всех скольконибудь сложных формул на страницах Википедии (http://ru.wikipedia.org статья «Википедия:Формулы»).Становлению TeX как стандарта для набора формул в значительной степени поспособствовало Американское математическое сообщество (The American Mathematical Society – AMS), которое субсидировало разработку расширения TeX, известного как AMSTeX, в начале восьмидесятых годов прошлого столетия. В 1987 году наработки AMSTeX были добавлены в LaTeX в виде пакета amsmath. Вместе с amsmath в LaTeX было добавлено множество улучшений, позволяющих набирать действительно изощрённую математику. Поэтому при использовании в тексте математики в шапке документа следует в обязательном порядке загружать пакет amsmath:

\usepackage{amsmath}

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

Набор формул

При формировании текста формулы подразделяются на строчные и выносные. Строчные формулы набираются внутри абзаца вместе текстом. По описанию формулы LaTeX создаёт бокс, который обрабатывается наравне с обычными текстовыми боксами. Как правило, строковые формулы это небольшие вставки, вроде E=mc2. Выносные или выключенные формулы выводятся за пределы абзаца.

Строчная формула в тексте ограничивается[1] с помощью символа доллара $«формула»$ или с помощью команд-скобок \(«формула»\). При наборе предпочтительнее использовать второй вариант оформления, так как он позволяет легко определить, где начинается, а где кончается формула. «Долларовое» ($) окружение лучше тем, что оно чуть-чуть короче, кроме этого, команда $ крепкая[2], в отличие от команд-скобок.

Однострочные выносные формулы формируются с помощью окружения equation. Так как в этом случае формула вынесена за пределы абзаца, то её можно пронумеровать. Например:

\begin{equation}
  \label{eq:math:ex1}
  \int\limits_{-\infty}^{\infty}
      e^{-x^2/2}dx=\sqrt{2\pi}
\end{equation}
<math>\begin{equation}\label{eq:math:ex1}\int\limits_{-\infty}^{\infty}e^{-x^2/2}dx=\sqrt{2\pi}\end{equation}</math>

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

  • \displaystyle – стиль, используемый для выносных формул,
  • \textstyle – стиль строчных формул,
  • \scriptstyle – в этом стиле набираются индексы,
  • \scriptscriptstyle – индексы второго уровня.

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

\begin{equation*}
  \frac{1}{1+
  \frac{1}{1+
  \frac{1}{1+
  \frac{1}{2}}}}
\end{equation*}
<math>\begin{equation*}\frac{1}{1+\frac{1}{1+\frac{1}{1+\frac{1}{2}}}}\end{equation*}</math>
и
\begin{equation*}
  \frac{1}{\displaystyle 1+
  \frac{1}{\displaystyle 1+
  \frac{1}{\displaystyle 1+
  \frac{\displaystyle 1}
  {\displaystyle 2}}}}
\end{equation*}
<math> \begin{equation*}\frac{1}{\displaystyle 1+\frac{1}{\displaystyle 1+\frac{1}{\displaystyle 1+\frac{\displaystyle 1}{\displaystyle 2}}}}\end{equation*}</math>

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

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

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

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

\usepackage[warn]{mathtext}
\[
v_{ср}=\frac{S_{конец}-S_{начало}}
{\delta t}
\]
<math>\[v_{ср}=\frac{S_{конец}-S_{начало}}{\delta t}\]</math>

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

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

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

\[v_{ср}=
\frac{\text{конец пути}-
\text{начало пути}}
{\text{время в пути}}\]
<math>\[v_{ср}=\frac{\text{конец пути}-\text{начало пути}}{\text{время в пути}}\]</math>

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

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

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

Индексы

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

\[A_{\text{нижний индекс}}\quad B^{\text{верхний индекс}}\quad C_n^k\]

<math>\[A_{\text{нижний индекс}}\quadB^{\text{верхний индекс}}\quadC_n^k\]</math>

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

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

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

\begin{itemize}
  \item \(ABCD\) "--- обычной,
  \item \(\mathbf{ABCD}\) "--- жирной,
  \item \(\mathbb{ABCD}\) "--- ажурной,
  \item \(\mathcal{ABCD}\) "---прописной.
\end{itemize}
<math>\begin{itemize}\item \(ABCD\)\item \(\mathbf{ABCD}\)\item \(\mathbb{ABCD}\)\item \(\mathcal{ABCD}\)\end{itemize}</math>

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

Греческие символы
Буква Команда Буква Команда Буква Команда
<math>\Alpha~\alpha</math> \Alpha \alpha <math>\Iota~\iota</math> \Iota \iota <math>\Sigma~\sigma</math> \Sigma \sigma
<math>\Beta~\beta</math> \Beta \beta <math>\Kappa~\kappa</math> \Kappa \kappa <math>~\varsigma</math> \varsigma
<math>\Gamma~\gamma</math> \Gamma \gamma <math>\Lambda~\lambda</math> \Lambda \lambda <math>\Tau~\tau</math> \Tau \tau
<math>\Delta~\delta</math> \Delta \delta <math>\Mu~\mu</math> \Mu \mu <math>\Upsilon~\upsilon</math> \Upsilon \upsilon
<math>\Epsilon~\epsilon</math> \Epsilon \epsilon <math>\Nu~\nu</math> \Nu \nu <math>\Phi~\phi</math> \Phi \phi
<math>~\varepsilon</math> \varepsilon <math>\Xi~\xi</math> \Xi \xi <math>\varphi</math> \varphi
<math>\Zeta~\zeta</math> \Zeta \zeta <math>\Pi~\pi</math> \Pi \pi <math>\Chi~\chi</math> \Chi \chi
<math>\Eta~\eta</math> \Eta \eta <math>\varpi</math> \varpi <math>\Psi~\psi</math> \Psi \psi
<math>\Theta~\theta</math> \Theta \theta <math>\Rho~\rho</math> \Rho \rho <math>\Omega~\omega</math> \Omega \omega
<math>\vartheta</math> \vartheta <math>\varrho</math> \varrho

В 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 для использования обязателен.


«Школьные» символы
<math>\hat{a}</math> \hat{a} <math>\bar{a}</math> \bar{a} <math>\vec{a}</math> \vec{a} <math>\dot{a}</math> \dot{a} <math>\tilde{a}</math> \tilde{a}
<math>\pm</math> \pm <math>\mp</math> \mp <math>\times</math> \times <math>\cdot</math> \cdot <math>\div</math> \div
<math>\lor</math> \lor <math>\land</math> \land <math>\neg</math> \neg <math>\forall</math> \forall <math>\exists</math> \exists
<math>\le</math> \le <math>\ge</math> \ge <math>\ll</math> \ll <math>\gg</math> \gg <math>\neq</math> \neq
<math>\equiv</math> \equiv <math>\sim</math> \sim <math>\simeq</math> \simeq <math>\approx</math> \approx <math>\propto</math> \propto
<math>\parallel</math> \parallel <math>\perp</math> \perp <math>\angle</math> \angle <math>\triangle</math> \triangle <math>\sphericalangle</math> \sphericalangle
<math>\infty</math> \infty <math>\ell</math> \ell <math>\sum</math> \sum <math>\prod</math> \prod <math>\varnothing</math> \varnothing

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

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

Дроби

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

\[
  дробь=\frac{числитель}{знаменатель}
\]
<math>дробь=\frac{числитель}{знаменатель}</math>

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

Корни

Для рисования знака корня используется команда

\sqrt[степень]{«подкоренное выражение»}

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

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

<math>\overline{\underline{\Large\sqrt[3]{a}+\sqrt[2]{b}+\sqrt[99]{g}}}</math>

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

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

\[\Large
  \sqrt[3]{\mathstrut a}+
  \sqrt[2]{\mathstrut b}+
  \sqrt[99]{\mathstrut g}
\]
<math>\[\Large\sqrt[3]{\mathstrut a}+\sqrt[2]{\mathstrut b}+\sqrt[99]{\mathstrut g}\]</math>

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

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

\[
  x_{1,2}=\frac{-b\pm\sqrt{b^2-4ac}}{2a}
\]
<math>x_{1,2}=\frac{-b\pm\sqrt{b^2-4ac}}{2a}</math>

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

Функции

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

\begin{equation*}
  \begin{split}
  &\log_2 10=\ln10/\ln2\simeq3.32 \\
  &\lim_{x\to0}\frac{\sin x}{x}=1\\
  &(a+b)^n=\sum_{k=1}^n C^k_n a^kb^{n-k}
\end{split}

\end{equation*}

<math> \begin{equation*}\begin{split}&\log_2 10=\ln10/\ln2\simeq3.32 \\&\lim_{x\to0}\frac{\sin x}{x}=1\\&(a+b)^n=\sum_{k=1}^n C^k_n a^kb^{n-k}\end{split}\end{equation*}</math>

Обратите внимание на обработку индексов для функции log (логарифм) и lim (предел). Для доопределения новых функций правильнее всего воспользоваться в преамбуле командой DeclareMathOperator: %В преамбуле - определение новых функций \DeclareMathOperator{\log-like}{log-like} \DeclareMathOperator*{\lim-like}{lim-like} В зависимости от варианта команды индексы отображаются как для логарифма (команда без звёздочки) или как для предела (команда со звёздочкой). Производная и интеграл В старших классах, в конце обучения, обычно чуть-чуть касаются поня- тий интегрирования и дифференцирования. Возможно, для того, чтобы правильно подсчитать сдачу в магазине, эти знания не являются необ- ходимыми. Но для изучения физики и, как следствие, химии и биоло- гии без интегралов никак – поверьте мне на слово. Производная обычно отмечается штрихом. В физике, производная по времени выделяется точкой, для того чтобы отличать её от произ- водной по координате. Можно честно написать \frac{d F(x)}{dx}. Для час- тной производной вместо буквы d используется спецсимвол \partial:

to be continued…

Примечания

  1. Есть более формальное оформление строчной формулы как окружения: \begin{math} «формула» \end{math}. Но, в силу понятных причин, никто подобное описание не использует.
  2. Начав изучать команды LaTeX, довольно быстро сталкиваешься с понятиями «хрупкости»/«крепкости». «Крепкие» команды, в отличие от «хрупких», можно использовать в качестве аргументов других команд. С другой стороны, хрупкие команды тоже можно использовать как параметры, защитив их с помощью команды \protect. Эти понятия в большинстве своём пережитки прошлого и их постепенно изживают, но пока следует иметь их в виду.
  3. Метка выставляется с помощью команды \label.
  4. К equation добавляется звёздочка. Подобный приём в создании команд применяется достаточно часто. Команда со * обычно не нумеруется и не отображается ни в каких автоматически составляемых списках.
  5. От слова fraction – «дробь».
  6. От английского strut – «подпорка» или «страта».
Персональные инструменты
купить
подписаться
Яндекс.Метрика