Котельников И., Чеботаев П. LaTeX2e по-русски (1185906), страница 42
Текст из файла (страница 42)
Третийаргумент thickness определяет толщину дробной черты (в \binom она равна нулю). Четвертый аргумент mathstyle должен быть целым числом в диапазоне от 0до 3 в зависимости от выбранного стиля форматирования дроби: \displaystyle,\textstyle, \scriptstyle или \scriptscriptstyle; если он пуст, стиль дробиопределяется из контекста. Последние два аргумента есть собственно числительи знаменатель дроби. Если третий аргумент thickness оставлен пустым, толщина дробной черты устанавливается по умолчанию. Покажем, как могли бы бытьопределены \frac, \tfrac и \binom в терминах команды \genfrac:\newcommand{\frac}[2]{\genfrac{}{}{}{}{#1}{#2}}\newcommand{\tfrac}[2]{\genfrac{}{}{}{1}{#1}{#2}}\newcommand{\binom}[2]{\genfrac{(}{)}{0pt}{}{#1}{#2}}Ещё одна команда(amsmath)\cfrac[pos]{numerator}{denumerator}предназначена для набора непрерывных дробей.\begin{equation}\cfrac{1}{\sqrt{2}+\cfrac{1}{\sqrt{2}+\cfrac{1}{\sqrt{2}+\cdots}}}\end{equation}1√2+(8.24)1√2+ √12 + ···Выравнивание числителя любой из дробей влево или вправо достигается командой \cfrac с опцией pos.
Она может принимать значения l или r (ср. раздел 6.5).8.11.12.Опции команды \smashКоманда\smash[pos]{math}(amsmath)8.11. «Кирпичики» формул201используется для «обмана». LATEX форматирует формулу math в аргументе команды так, как если вместо \smash[pos]{math} просто стоял бы её обязательныйаргумент {math} (вместе с фигурными скобками), но позиционирует её так, будто она имеет нулевую высоту и/или глубину.
Высота и глубина отсчитываются отбазисной линии формулы, где располагается десятичная точка. Иногда этот «обман» полезен для корректировки взаимного расположения частей сложной математической формулы. Команда \smash имеется и в формате LATEX (раздел 6.9),но пакет amsmath расширяет её возможности, добавляя необязательный аргументpos, который может иметь значение t или b. В первом случае (pos=t) обнуляется высота формулы, во втором случае (pos=b) — её глубина при сохраненииестественной высоты. Например, когда подкоренные выражения имеют неодинаковые размеры, использование команды \smash сделает структуру формулыболее однородной.√√√√Сравните $\sqrt{x}+\sqrt{y}+\sqrt{z}$ иСравнитеx+ y + z и x+√√$\sqrt{x}+\sqrt{\smash[b]{y}}+\sqrt{z}$.y + z.8.11.13.РазделителиВертикальная черта |, принадлежащая по классификации LATEX’а к группе разделителей, в современной математике используется для обозначения самых разнообразных объектов.
В теории чисел используют выражения вида p|q.Более#известны обозначение для абсолютного значения |z| и запись вида fζ (t)#t=0 , означающая, что значение функции fζ (t) требуется вычислить при t = 0. Применениеодного и того же символа для разных целей само по себе не так уж плохо. Плохото, что не все эти применения имеют адекватное обозначение во входном файле.По крайней мере, следует различать правые и левые формы разделителей | и .AMS-LATEX вводит для этой цели две пары команд:|\lvert\lVert|\rvert\rVert(amsmath)Теперь легко определить команды для набора абсолютного значения и нормы(длины) вектора:\newcommand{\abs}[1]{\lvert#1\rvert}\newcommand{\norm}[1]{\lVert#1\rVert}В результате $\abs{z}\cdot\norm{A}$ напечатает |z| · A.8.11.14.Имена операторовМатематические функции типа log, sin и lim традиционно печатаются прямымшрифтом, чтобы отличить их от математических переменных, которые воспроизводятся математическим курсивом.
Имена наиболее известных функций предопределены в формате LATEX, но в математических рукописях всё время появляются новые обозначения функций. Пакет amsopn предлагает общий механизм202Глава 8. AMS-LATEXдля определения нового имени «оператора». Поскольку amsopn автоматически загружается пакетом amsmath, последнему также доступен этот механизм. Чтобыопределить обозначение функции, следует использовать декларацию (она должна находиться в преамбуле)\DeclareMathOperator{cmd}{def}\DeclareMathOperator*{cmd}{def}(amsopn)где cmd — имя новой команды, а def — текст, который будет напечатан в качествеимени функции (добавлять декларации, форматирующие имя, не нужно!).\DeclareMathOperator{\xxx}{xxx}...\[ A\xxx(B)\neq A\mathrm{xxx}(B) \]···A xxx(B) := Axxx(B)Вновь определённая команда \xxx в этом примере расставляет правильные пробелы вокруг xxx.
Во втором аргументе def преобладает псевдотекстовый режим:дефис «-» будет печататься как текстовый дефис, но не как знак «минус», а звёздочка «*» будет приподнята (в математической моде звёздочка центрируется).С другой стороны, имя вновь введённой функции обрабатывается в математической моде, поэтому с ним можно использовать нижние и верхние индексы.Если у нового оператора, когда он находится в выключной формуле, индексыдолжны размещаться в позиции предела сверху или снизу, как у lim , следуетиспользовать *-форму декларации \DeclareMathOperator:\DeclareMathOperator*{\Xxx}{xxx}...\[ \Xxx_{x\to0}\neq \xxx_{x\to0}\]t→0···xxx := xxxx→0x→0Обычно размещение индексов можно изменить при помощи \nolimits и \limits.AMS-LATEX значительно ограничивает сферу действия этих команд.
Например, нипри каких условиях он не позволит для функции sin (произведённой командой\sin) запись вида sin , поскольку та не имеет смысла в отличие от lim .t→0...запись вида $\sin\limits_{t\to0}$не имеет смысла в отличие от$\lim\limits_{t\to0}$.t→0. . . запись вида sint→0 не имеетсмысла в отличие от lim .t→0Команды, определённые посредством \DeclareMathOperator, относятся к классу функций \sin; положение их индексов невозможно изменить при помощи\limits или \nolimits.
Напротив, *-форма декларации \DeclareMathOperator*вводит команды типа \lim, которые не игнорируют указания \limits и \nolimits.Всё сказанное относится к случаю, когда пакет amsopn или amsmath загруженс опцией namelimits (действует по умолчанию). Опция nonamelimits приравнивает все функции к классу \sin.Есть также команды\operatorname{def}\operatorname*{def}(amsopn)2038.11.
«Кирпичики» формултакие, что употребление \operatorname{abc} в математической формуле эквивалентно команде \abc, ранее определённой посредством \DeclareMathOperator{\abc}{abc}.Небольшое количество специальных имен функций предопределены в пакетеamsopn в дополнение к имевшимся в формате LATEX:lim−→limproj lim8.11.15.\varliminflim←−lim\varlimsup\projliminj lim\injlim\varinjlim\varprojlim(amsopn)Команда \mod и её производныеКоманды\mod{math} \bmod(amsmath)\pod{math} \pmod{math}предназначены для обозначения операции выделения остатка по модулю.
Команды \bmod и \pmod доступны в LATEX’e, но пакет amsopn несколько изменяетпробелы вокруг mod, когда эти команды используются в формуле внутри текста. Команды \mod и \pod суть варианты \pmod, предпочитаемые некоторымиавторами; \mod опускает круглые скобки, в то время как \pod опускает mod, носохраняет круглые скобки.$\gcd(n,m\bmod n)$;\\$x\equiv y\pmod b$;\\$x\equiv y\mod c$;\\$x\equiv y\pod d$.8.11.16.gcd(n, m mod n);x ≡ y (mod b);x ≡ y mod c;x ≡ y (d).Знаки кратных интеграловКоманды \iint\iiint···\iiiint\idotsint(amsmath)печатают знаки кратныхинтегралов с правильно подобранными интерваламимежду символами . .иСравнитеСравните $\int\int\int\limits_A$ и $\iiint\limits_A$.A8.11.17.AМногострочные индексыКоманда\substack{lines}(amsmath)204Глава 8. AMS-LATEXпредназначена для набора многострочных индексов.
Обычно индексы в несколько строчек приходится использовать в качестве пределов суммирования. Строкив аргументе lines разделяются командами \\:\sum_{\substack{i\in\LambdaP (i, j)\\ 0<j<n}} P(i,j)i∈Λ0<j<nЕсли строчки в индексах необходимо выровнять по левому или правому краю,проще всего использовать процедуру\begin{subarray}{pos} . .
. \end{subarray}(amsmath)Её аргумент pos может принимать значения l, c или r соответственно тому,нужно ли выравнивать строки относительно левого края, центра или правогокрая. В следующем примере строки выровнены по левому краю:\sum_{\begin{subarray}{l}P (i, j)i\in\Lambda\\ 0<j<n\end{subarray}} P(i,j)i∈Λ0<j<nУ \substack и subarray есть аналог — команда \shortstack, действующая в текстовой моде (раздел 9.6.4), причём она совмещает простоту команды \substackсо способностью процедуры subarray выравнивать строки.8.11.18.Сторонние индексыКоманда\sideset{left-scripts}{right-scripts}размещает индексы по углам символа переменного размера типаСравните\[\sideset{_1^2}{_4^3}\prod\text{ и } {_1^2\prod_4^3}.\]Сравните2 314и21(amsmath)или .3.4Рассмотрим более содержательный пример.
Допустим, что необходимо пометитьштрихом знак суммы. Если у знака суммы нет пределов суммирования, достаточно добавить \nolimits перед штрихом:′En\[ \sum\nolimits’ E_n \]Однако при наличии пределов суммирования эта технология не приводит к удовлетворительному результату:′En\[ \sum_{n<k}\nolimits’ E_n \]n<k2058.12. Коммутативные диаграммыРешает проблему команда \sideset:′\[ \sideset{}{’}\sum_{n<k} E_n \]Enn<kДополнительная пара пустых фигурных скобок объясняется тем, что индексовслева от знака суммы в данном случае не должно быть.8.12.Коммутативные диаграммыКоммутативными диаграммами называются схемы видаjS WΛ ⊗ T −−−−→C(S ⊗ T )/ITClim P(Z ⊗ T )/JПростейшие коммутативные диаграммы (без диагональных стрелок) формируетпроцедура\begin{CD} .
. . \end{CD}(amscd)определённая в пакете amscd из коллекции AMS-LATEX. Коммутативная диаграмма, приведённая выше, набрана следующим образом:\begin{equation*}\begin{CD}S^{{\mathcal{W}}_\Lambda}\otimes T@VVV(S\otimes T)/I\end{CD}\end{equation*}@>j>>@=T\\@VV{\lim P}V \\(Z\otimes T)/JВ процедуре CD обозначения@»>@«<@VVV@AAA@=(amscd)производят стрелки соответственно вправо, влево, вниз и вверх, а также двойную горизонтальную линию. В случае горизонтальных стрелок @>>> или @<<<материал между первым и вторым символом > или < будет напечатан в верхнеминдексе, а материал между вторым и третьим символом будет помещен в нижнем индексе. Аналогично материал между первым и вторым (вторым и третьим)символами V или A в обозначении вертикальных стрелок @VVV или @AAA будетнапечатан слева (справа) от стрелки.8.13.Теоремы и теоремоподобные структурыПакет amsthm расширил возможности декларации LATEX’а \newtheorem (раздел 7.3) по конструированию теоремоподобных процедур, добавив *-форму этой206Глава 8.