8. Шрифты в математических формулах | Мат шрифты LaTeX

Знакомство со шрифтами LaTeX

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

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

Некоторые символы, например =, можно вводить непосредственно с клавиатуры. Однако часть из них необходимо вводить с помощью команды, например, \leq дает знак меньше или равно. Другая основная группа символов формулы — символы алфавита — вводятся непосредственно с клавиатуры.

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

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

8.1. Идентификаторы математического алфавита

Ученым недостаточно одного алфавита и огромного количества символов. Они стараются использовать все доступные шрифты для обозначения особых понятий. Помимо иностранных алфавитов, таких как греческие буквы, которые обычно используются как символы — \alpha, \beta и т. д., мы можем найти буквы без засечек для матриц, жирные буквы с засечками для векторов, шрифты Fraktur для групп, идеалы или поля. Другие используют каллиграфические формы для обозначения наборов. Число соглашений бесконечно, и они различаются от одной дисциплины к другой. И LaTeX учитывает это, позволяя объявлять новые идентификаторы математического алфавита и связывать их с любой желаемой группой форм шрифта, вместо того, чтобы полагаться только на предопределенный набор, который не может быть расширен. Эти идентификаторы представляют собой специальные команды для использования в формуле, которая печатает любой символ алфавита в их аргументе определенной гарнитурой. Эти идентификаторы могут использовать разные гарнитуры в разных формулах, как мы увидим позже, но внутри одной формулы они всегда выбирают одну и ту же гарнитуру независимо от окружающих условий.

Предопределенные идентификаторы алфавита

В LaTeX уже есть несколько встроенных алфавитных идентификаторов. Они показаны в таблице ниже. Последние две строки показывают, что буквы, используемые в формулах, взяты из математического алфавита \mathnormal. С другой стороны, буквы, создаваемые \mathit, имеют разный интервал, а это означает, что этот алфавит можно использовать для создания полных имен переменных, которые распространены в некоторых дисциплинах.

КомандаПример кодаРезультат
\mathcal$\mathcal{A}=a$“Каллиграфическое A равно a”
\mathrm$\mathrm{max}_i$“Римский Max нижний индекс i”
\mathbf$\sum x = \mathbf{v}$“Жирная сумма x равна v”
\mathsf$\mathsf{G}_1^2$“Без засечек G Нижний индекс 1 Верхний индекс 2”
\mathtt$\mathtt{W}(a)$“Пишущая машинка W из a”
\mathnormal$\mathnormal{abc}=abc$“Обычный abc равен abc”
\mathit$differ\neq\mathit{differ}$“Курсив Различается Не равно Различается”

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

1Therefore, $\mathsf{G}$ can be computed as
2\begin{equation}
3\mathsf{G} = \mathcal{A} +
4             \sum_{i=1}^{n} \mathcal{B}_{i}
5\end{equation}

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

Математический алфавит по умолчанию

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

1\begin{eqnarray}
2x &=& 12345 \\
3\mathrm{x} &=& \mathrm{12345} \\
4\mathnormal{x} &=& \mathnormal{12345}
5\end{eqnarray}

Нет математического алфавита по умолчанию

Здесь вы можете видеть, что \mathrm не меняет цифры, а \mathnormal не меняет буквы, поэтому по умолчанию для цифр в обычной настройке используется математический алфавит, связанный с \mathrm и по умолчанию для букв используется \mathnormal. Этим поведением можно управлять с помощью команды \DeclareMathSymbol.

Какой шрифт LaTeX использует для математических вычислений?

В LaTeX шрифтом по умолчанию, используемым для математического режима, обычно является Computer Modern. Однако вы также можете использовать разные шрифты, указав их в преамбуле документа LaTeX с помощью пакетов.

Пользовательские идентификаторы алфавита

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

Классификация семейств шрифтов Computer Modern

Например, вы обнаружите, что семейство Computer Modern Sans состоит из средней серии с вертикальными и наклонными формами. Если вы решите использовать наклонную форму этого семейства, вы сообщите об этом LaTeX, используя \DeclareMathAlphabet.

1\DeclareMathAlphabet{cmd}{encoding}{family}{series}{shape}

В объявлении есть четыре параметра (помимо самого идентификатора): имя кодировки, семейство, серия и форма используемого шрифта. Идентификатор алфавита, определенный в следующем примере, всегда будет переключаться на Computer Modern Sans со средним наклоном.

1\DeclareMathAlphabet{\msfsl}{OT1}{cmss}{m}{sl}
2% -------------------------------------------------------------------------------
3We demonstrate this with the formula
4\begin{equation}
5\sum \msfsl{A}_{i} = a \tan \beta
6\end{equation}

Объявление идентификатора пользовательского математического алфавита

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

1\DeclareMathAlphabet{\mathsf}{OT1}{pag}{m}{n}

переопределит настройки по умолчанию для идентификатора алфавита \mathsf. В ваших формулах он переключится на Adobe Avant Garde.

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

Лучшие математические шрифты

Помимо стандартного шрифта Computer Modern, LaTeX предлагает семь встроенных шрифтов для набора математических алфавитов, поэтому пользователи могут настраивать свои математические выражения, не требуя дополнительных пакетов в преамбуле. И лучший вариант для вас — использовать один из этих 8 шрифтов.

ШрифтИспользованиеКоманда
Прямой римскийСтандартный прямой шрифт\mathrm{}
КаллиграфическийИспользуется для набора обычных математических букв.\mathnormal{}
КаллиграфическийИспользуется для набора заглавных букв специальным каллиграфическим шрифтом.\mathcal{}
Курсивные буквыСделать текст курсивом\mathit{}
Прямой Sans SerifУстанавливает прямые буквы без засечек\mathsf{}
Прямой римский полужирныйИспользуется для набора прямых римских полужирных букв\mathbf{}
Тип пишущей машинкиИспользуется для набора букв вертикального пишущей машинки.\mathtt{}

8.2. Команды текстового шрифта в математике

Хотя объявления текстовых шрифтов, такие как \rmfamily, не могут использоваться в математике, команды изменения шрифта - например, \textrm - могут использоваться как в тексте, так и в математических вычислениях. Используя эти команды, вы можете временно переключиться с математического контекста на текстовый и набрать текст в середине формулы, который логически является частью окружающего текста вне формулы. Шрифт, используемый для набора этого текста, будет зависеть от окружающих условий, а это значит, что он унаследует текущую кодировку, семейство, серию и форму, как в примере ниже.

1\sffamily The result will be
2\[ x = 10 \textbf{ and thus } y = 12 \]

Команды текстового шрифта в математике

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

8.3. Версии математических формул

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

По умолчанию LaTeX имеет две математические версии: нормальный и жирный. А специальные пакеты предоставляют больше версий. Например, пакет mathtime (для коммерческих шрифтов MathTime) устанавливает математическую версию под названием heavy для набора формул сверхжирными символами, как это предусмотрено в шрифтах MathTime.

Очевидно, что математическая версия по умолчанию — \mathversion{normal}. Жирный вариант, в свою очередь, будет отображать более жирные буквы и символы алфавита, хотя большие операторы, такие как \sum, по умолчанию не изменяются. В приведенном ниже примере одна и та же формула показана сначала в обычном, а затем в жирном математическом варианте.

1\begin{equation}
2  \sum_{j=1}^{z} j = \frac{z(z+1)}{2}
3\end{equation}
4\mathversion{bold}
5\begin{equation}
6  \sum_{j=1}^{z} j = \frac{z(z+1)}{2}
7\end{equation}

Математические версии

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

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

Но что происходит с пользовательскими идентификаторами алфавита, такими как \msfsl, которые мы определили в примере? Пока вы объявили их с помощью \DeclareMathAlphabet, они останутся одинаковыми во всех математических версиях.

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

1\DeclareMathAlphabet{\mathsf}{OT1}{cmss}{m}{n}
2\SetMathAlphabet{\mathsf}{bold}{OT1}{cmss}{bx}{n}

Первая строка устанавливает Computer Modern Sans в качестве среды по умолчанию для \mathsf во всех математических версиях. Вторая строка предписывает LaTeX использовать жирный шрифт Computer Modern Sans, расширенный в полужирной математической версии.

1\SetMathAlphabet{cmd}{version}{encoding}{family}{series}{shape}

Как вы могли догадаться из предыдущего примера, \SetMathAlphabet принимает шесть аргументов: идентификатор математического алфавита, имя математической версии, для которой вы определяете специальную настройку, и четыре параметра для идентификации шрифта, с которым вы связываетесь. ваша установка. Как мы отмечали ранее, вы можете переопределить существующий идентификатор математического алфавита, используя \DeclareMathAlphabet. Если вы это сделаете, все предыдущие объявления \SetMathAlphabet для этого идентификатора будут удалены из внутренней памяти LaTeX. Таким образом, идентификатор будет одинаковым во всех математических версиях, если вы не добавите для него новые объявления \SetMathAlphabet.

8.4. Настройка шрифтов в формулах с помощью пакетов AMS-LATEX

Пакет amsfontsamssymb) определяет два математических алфавита: алфавит Эйлера Fraktur (\mathfrak) и алфавит Blackboard Bold (\mathbb). См. пример ниже.

1\usepackage{amsfonts}
2% -------------------------------------------------------------------------------
3$ \forall n \in \mathbb{N} : \mathfrak{M}_n \leq \mathfrak{A} $

идентификаторы математических алфавитов amsfonts

5. Жирный математический шрифт. Пакет bm

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

В следующем примере показано множество способов использования команд \bm и \mathbf. Здесь также показана стратегия определения сокращенных имен для часто встречающихся жирных символов с использованием как стандартного LaTeX \newcommand, так и \bmdefine, который предоставляется пакетом bm. Обратите внимание, что \mathbf{xy} не идентичен \bm{xy}. В первом случае получается жирный римский «xy», а во втором — «xy» (жирный математический курсив).

 1\usepackage{amsmath,amssymb,bm}
 2\newcommand\bfB{\mathbf{B}} \newcommand\bfx{\mathbf{x}}
 3\bmdefine\bpi{\pi} \bmdefine\binfty{\infty}
 4% -------------------------------------------------------------------------------
 5\section{The bold equivalence
 6  $\sum_{j < B} \prod_\lambda : \bm{\sum_{x_j} \prod_\lambda}$}
 7\begin{gather}
 8  B_\infty + \pi B_1 \sim \bfB_{\binfty} \bm{+} \bpi \bfB_{\bm{1}}
 9    \bm {\sim B_\infty + \pi B_1}\\
10  B_\binfty + \bpi B_{\bm{1}} \bm{\in} \bm{\biggl\lbrace}
11    (\bfB, \bfx) : \frac {\partial \bfB}{\partial\bfx}
12    \bm{\lnapprox} \bm{1} \bm{\biggr\rbrace}
13\end{gather}

Использование пакета bm

В этом примере bm изо всех сил старается удовлетворить запросы на жирные версии отдельных символов и букв. Но если вы присмотритесь, то увидите, что результаты не всегда оптимальны. Например, операторы суммы и произведения создаются с помощью метода, известного как жирный шрифт бедняка, при котором символ наносится три раза с небольшими смещениями. Кроме того, фигурные скобки вообще не выделяются жирным шрифтом. Таких недостатков невозможно избежать, поскольку для некоторых символов просто не существует жирного варианта при использовании математических шрифтов Computer Modern.

Каковы точные правила, которым следует \bm для создания жирных форм символов в своем аргументе? В общем, он использует тот факт, что LaTeX включает жирную математическую версию (доступную через \boldmath) для набора всей формулы жирным шрифтом (при условии, что подходящие жирные шрифты доступны и настроены). Для каждого символа команда \bm просматривает эту математическую версию, чтобы узнать, что будет сделано в этой версии. Если шрифт, выбранный для символа, отличается от шрифта, выбранного в обычной математической версии, символ набирается этим жирным шрифтом, получая идеальный результат (при условии, что полужирная математическая версия настроена правильно). Если шрифты в обеих версиях идентичны, предполагается, что жирный вариант отсутствует, и применяется жирный шрифт для бедняков.

Загрузите пакет bm после пакетов, которые изменяют существующую настройку математического шрифта!

Ситуация еще сложнее с разделителями, такими как \biggl\lbrace в примере. TeX обычно вводит разделитель с помощью глифа, выбранного в соответствии с запрошенной высотой из последовательности разных размеров. Эти глифы могут быть расположены разными шрифтами, а для определенного размера могут быть или не быть жирные варианты. Все это вместе лишает \bm возможности надежно определить, нужно ли применять жирный шрифт бедняка. Поэтому он набирает разделитель, используя любые шрифты, предлагаемые полужирной математической версией. В математических шрифтах Computer Modern полужирным шрифтом выделяется только наименьший размер разделителей; все остальные размеры взяты из шрифтов, у которых нет жирных вариантов.

1\usepackage{bm}
2% -------------------------------------------------------------------------------
3$\bm{\Biggl\lbrace\biggl\lbrace\Bigl\lbrace\bigl \lbrace \lbrace
4  \mathcal{Q}
5  \rangle \bigr\rangle\Bigr\rangle\biggr\rangle
6\Biggr\rangle}$

Разграничители выделены (и не выделены) жирным шрифтом с помощью команды \bm Обычно, если команда, которая сама принимает аргументы, находится в аргументе \bm, то эта команда должна быть полностью включена в аргумент \bm. В результате все части наборного материала будут выделены жирным шрифтом. Если вам нужно, чтобы вывод команды с аргументами был выделен полужирным шрифтом лишь частично, вам следует сделать следующее. Вам следует поместить символы, которые вы не хотите выделять жирным шрифтом, в \mbox и явно сбросить математическую версию внутри содержимого поля, используя \unboldmath. TeX считает \mbox символом класса Ordinary. Таким образом, чтобы получить правильный интервал, вам, возможно, придется окружить его \mathbin, \mathrel или \mathop.

1\usepackage{amsmath,bm}
2% -------------------------------------------------------------------------------
3$ \bm{\sqrt[2]{x \times \alpha}} $ but
4$ \bm{\sqrt[2]{x \mathbin{\mbox{\unboldmath$\times$}} \alpha}} $
5or the similar
6$ \bm{\sqrtsign}{\bm{x} \times \bm{\alpha}} $

\bm с командами, принимающими аргументы

К счастью, такие сложные операции требуются редко. В большинстве случаев, когда используются команды с аргументами, жирным шрифтом необходимо выделять только часть аргумента. И этого можно добиться, используя команду \bm внутри этих аргументов. Как и в случае с \sqrtsign в предыдущем примере, для общего случая жирных акцентов \bm специально запрограммирован так, чтобы позволить аргументу акцента находиться вне его собственного аргумента. Однако если такие акценты вам нужны регулярно, лучше всего определить свои собственные сокращения, как в примере ниже.

Улучшение производительности

Хотя \bmdefine\bpi{\pi} кажется просто сокращением от \newcommand\bpi{\bm{\pi}}, на самом деле правда почти противоположна: \bm определяет новый скрытый временный объект. команду, используя \bmdefine, а затем немедленно использует эту временную команду для создания жирного символа. Другими словами, \bmdefine делает всю тяжелую работу! Если вы часто используете, например, что-то, что определено через \bm{\alpha}, то каждый раз будет выполняться новый \bmdefine. Если вы предоставите определение \bmdefine\balpha{\alpha} в преамбуле, то \bmdefine выполнит свою трудоемкую работу только один раз, независимо от того, сколько раз \balpha используется.

1\usepackage{bm}
2\bmdefine\bhat{\hat}
3% -------------------------------------------------------------------------------
4$\hat a \neq \bm{\hat a} \neq \bm\hat a = \bhat a\neq \bm\widehat a$

Оптимизировано выделение акцентов жирным шрифтом с помощью команды \bm

Этот пример также показывает, что акценты переменной ширины (например, \widehat) имеют общий недостаток с разделителями: в математической настройке Computer Modern они происходят из шрифта, для которого не доступен полужирный вариант.

Have any questions about Aspose.TeX?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.