8。数式のフォント
ラテックスフォントの紹介
フローティングテキストとは異なり、通常、フォント形状の自動変更は必要ありません。さまざまな形状には、数学に特定の意味があります。たとえば、ベクトルには大胆な直立文字が使用される場合があります。フォーミュラ内の文字が周囲の状態のために変更された場合、結果は間違っています。そのため、数式のフォントの処理がテキストのフォントとは異なります。
式の文字は、シンボルとアルファベット文字(数字を含む)の2つのクラスに分けることができます。実際、Texは適切な間隔を定義する8つのクラスを内部的に扱っています。しかし、現在の議論では、2つのクラスへの分割で十分です。
「=」などのいくつかの記号は、キーボードから直接入力できます。ただし、それらの一部はコマンドを介して入力する必要があります。たとえば、 \ leq
はより低い符号を与えます。フォーミュラ内のもう1つのメイングループであるアルファベット文字は、キーボードから直接入力されます。
標準のラテックスに定義された200以上のシンボルがあります。これにより、ユーザーはほぼすべての希望の式を整備することができます。これらのシンボルはさまざまなフォントに配置されていますが、ユーザーが内部でどのように表現されているかを認識する必要がないようにアクセスできます。必要に応じて、追加のシンボルフォントに同様の方法でアクセス可能にすることができます。
シンボルとアルファベット文字には、現在私たちにとって最も重要な1つの違いがあります。シンボルには1つの式内で同じグラフィック表現があり、ユーザーはアルファベット文字の外観を変更できます。フォーミュラ内のアルファベット文字の外観を変更するコマンドは *Math Alphabet Identifiers *と呼ばれ、これらのコマンドに関連付けられたフォントは *Math Alphabets *と呼ばれます。アルファベット識別子はフォーミュラ外の周囲のフォントコマンドとは独立しているため、たとえば、テキストがデフォルトで斜体のテキストがタイプセットされている定理環境内に配置された場合、式は変更されません。この動作は非常に重要です。なぜなら、キャラクターの形には、式がドキュメントに表示されている場合はどこでも変わらないことの意味があるからです。
8.1。数学アルファベット識別子
1つのアルファベットと膨大な数のシンボルでは、科学者には十分ではありません。彼らは、利用可能なすべての書体を使用して、特別な概念を示すようにします。通常、シンボルとしてアクセスされるギリシャ文字などの外国のアルファベットに加えて、 \ alpha
、 \ beta
など - マトリックス用のsans serif文字、ベクトル用の太字のセリフ文字、グループ、理想、またはフィールドのfrakturフォントを見つけることができます。他の人は、セットを示すために書道の形状を使用します。慣習の数は無限であり、それらは分野ごとに異なります。ラテックスはこれに対応して、新しい数学アルファベット識別子を宣言し、拡張できない事前定義されたセットにのみ依存するのではなく、任意のフォントシェイプグループに関連付けることができます。これらの識別子は、特定の書体での引数内のアルファベット文字を整形する式で使用する特別なコマンドです。これらの識別子は、
後でが表示されるように、異なる式で異なる書体を使用する場合がありますが、1つの式では、周囲の条件に関係なく常に同じ書体を選択します。
事前定義されたアルファベット識別子
LaTexには、すでにいくつかの組み込みのアルファベット識別子があります。以下の表に示されています。最後の2行は、式で使用されている文字が数学アルファベット\ Mathnormal
から取られていることを示しています。一方、 \ mathit
によって作成された文字の間隔は異なります。つまり、このアルファベットを使用して、一部の分野で一般的なフルワード変数名を提供できます。
コマンド | サンプルコード | 結果 |
---|---|---|
\mathcal | $\mathcal{A}=a$ | ![]() |
\mathrm | $\mathrm{max}_i$ | ![]() |
\mathbf | $\sum x = \mathbf{v}$ | ![]() |
\mathsf | $\mathsf{G}_1^2$ | ![]() |
\mathtt | $\mathtt{W}(a)$ | ![]() |
\mathnormal | $\mathnormal{abc}=abc$ | ![]() |
\mathit | $differ\neq\mathit{differ}$ | ![]() |
LATEX2Eでは、Math Alphabet Identiersは、1つの引数、単一の文字、または特別なフォントに型書きを整える1つの単語を持つコマンドです。
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}
デフォルトの数学アルファベット
アルファベット識別子を明示的に指定していない場合、アルファベットのアルファベット文字は選択されていますか?言い換えれば、デフォルトの数学アルファベットは何ですか?答えは、単一のデフォルトの数学アルファベットがないということです。ラテックスシステムは、ユーザーが特定のものを明示的に要求しない限り、アルファベット順の文字が異なるアルファベットからフェッチされるようにセットアップできます。これは通常、次の例が示すようにそうです。
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ドキュメントプリアンブルで指定することにより、異なるフォントを使用することもできます。
カスタムアルファベット識別子
\DeclareMathAlphabet
コマンドを使用して、新しい数式アルファベット識別子を定義できます。例えば、斜めのサンセリフ書体を数式アルファベットとして使用したいとします。まず、アルファベット識別子として使用する新しいコマンド名(例えば \msfsl
)を決めます。次に、以下のフォント分類表を参照して、このアルファベット識別子に割り当てる適切なフォント形状グループを見つけます。
たとえば、コンピューターモダンなサンズファミリは、直立した形状と傾斜した形の中程度のシリーズで構成されていることがわかります。このファミリの傾斜した形状を使用することにした場合、「\ DecleRemathalphabet」を使用してLaTexに伝えます。
1\DeclareMathAlphabet{cmd}{encoding}{family}{series}{shape}
宣言には(識別子自体を除く)4つのパラメーターがあります。エンコード名、ファミリ、シリーズ、使用するフォントの形状です。次の例で定義されているアルファベット識別子は、常にコンピューターモダンな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
)、数式用の TeX のやや限られたリソースをより有効に活用できるため、\DeclareSymbolFontAlphabet
を使用する方が適切であることに注意してください。
最高の数学フォント
デフォルトの *コンピューターモダン *フォントとは別に、LaTexは数学アルファベットを組み立てるための7つの組み込みフォントを提供しているため、ユーザーはプリアンブルに追加のパッケージを必要とせずに数学式をカスタマイズできます。そして、あなたにとって最良のオプションは、これらの8つのフォントのいずれかを使用することです。
フォント | 使用方法 | コマンド |
---|---|---|
Upright Roman | 標準の Upright フォント | \mathrm{} |
Calligraphic | 通常の数学用文字の組版に使用します。 | \mathnormal{} |
Calligraphic | 特殊な Calligraphic フォントで大文字を組版するために使用します。 | \mathcal{} |
Italic 文字 | テキストをイタリック体にします | \mathit{} |
Upright Sans Serif | 直立した Sans Serif 文字を設定します | \mathsf{} |
Upright Roman 太字 | 直立した Roman 太字文字の組版に使用します | \mathbf{} |
タイプライタータイプ | 直立型タイプライターの文字を組版するために使用されます。 | \mathtt{} |
8.2。数学のテキストフォントコマンド
\ rmfamily
のようなテキストフォント宣言は数学では使用できませんが、フォントを変えるコマンド(たとえば、 \ textrm
)は、テキストと数学の両方で使用できます。これらのコマンドを使用して、一時的に数学からテキストコンテキストに切り替えて、式の外側の周囲のテキストの一部であるフォーミュラの中央にあるテキストを組み立てることができます。このテキストをタイプセットするために使用されるフォントは、周囲の条件に依存します。つまり、以下の例のように、現在のエンコーディング、家族、シリーズ、および形状を継承します。
1\sffamily The result will be
2\[ x = 10 \textbf{ and thus } y = 12 \]
ここでは、sansファミリーが保持され、シリーズが太字に変更されたことがわかります。 [’\ text](/tex/ja/java/latex-text-in-math-formula/#61-the-text-command)コマンド「amstext」パッケージ(
amsmath`によってもロードされます)によって提供されるコマンドは、より便利であることが判明する場合があります。現在のエンコーディング、家族、シリーズ、および形状の値を変更せずに拾います。
8.3。数学式バージョン
数学アルファベット識別子を使用して、式の部分を変更する方法について説明しました。また、ラテックスを使用すると、式全体の外観を変更することもできます。数学式は、常に特定の *数学バージョン *のタイプセットです。また、次の式の全体的なレイアウトを変更するコマンド「\ mathersion」を使用して、数学モード以外の数学バージョンを切り替えることができます。
LaTeXにはデフォルトでnormalとboldの2つの数式バージョンがあります。また、特別なパッケージではさらに多くのバージョンが提供されています。例えば、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
の使用は、見出しなど特定の状況では適切かもしれませんが、バージョンを変更すると数式全体の外観、ひいては意味も変更される可能性があることに留意してください。数式内の一部の記号や文字のみを太字にしたい場合は、\mathversion
を変更するのではなく、文字のアルファベット識別子 \mathbf
を使用するか、
bm
パッケージで提供されている \bm
コマンドを使用する必要があります。
数学バージョンを変更すると、LaTexは内部テーブルを調べて、この新しい数学バージョンのすべてのシンボルがどこにあるかを見つけます。また、Math Alphabet識別子のすべてまたは一部を変更し、このバージョンの他のフォントシェイプに関連付けられる場合があります。
数式アルファベット識別子が特別な数式バージョンで異なるフォントを生成するようにしたい場合は、\SetMathAlphabet
コマンドを使用してLaTeXにその旨を伝える必要があります。例えば、デフォルトの設定では、\mathsf
アルファベット識別子は以下のように定義されています。
数学アルファベット識別子が特別な数学バージョンで異なるフォントを生成する場合、 \ setMathalphabet
コマンドを使用してLaTexを伝える必要があります。たとえば、デフォルトのセットアップでは、 \ mathsf
アルファベット識別子は次のように定義されます。
1\DeclareMathAlphabet{\mathsf}{OT1}{cmss}{m}{n}
2\SetMathAlphabet{\mathsf}{bold}{OT1}{cmss}{bx}{n}
最初の行は、すべてのMathバージョンで「\ Mathsf」のデフォルトとしてコンピュータモダンなsans Mediumを設定します。 2行目は、LaTexにコンピューターモダンなsansを使用するように指示します。
1\SetMathAlphabet{cmd}{version}{encoding}{family}{series}{shape}
前の例からお分かりいただけると思いますが、\SetMathAlphabet
は6つの引数を取ります。数式アルファベットの識別子、特別なセットアップを定義する数式バージョン名、そしてセットアップを関連付けるフォントを識別するための4つのパラメータです。
前述のように、\DeclareMathAlphabet
を使用することで、既存の数式アルファベットの識別子を再定義できます。これを行うと、この識別子に対する以前のすべての \SetMathAlphabet
宣言はLaTeXの内部メモリから削除されます。そのため、新しい \SetMathAlphabet
宣言を追加しない限り、この識別子はすべての数式バージョンで同じ結果になります。
8.4。 AMS-Latexパッケージを使用したフォーミュラのチューニングフォント
amsfonts(およびamssymb)パッケージは、2つの数学アルファベットを定義しています。オイラー・フラクトゥール・アルファベット(\mathfrak
)とBlackboard Boldアルファベット(\mathbb
)です。以下の例をご覧ください。
1\usepackage{amsfonts}
2% -------------------------------------------------------------------------------
3$ \forall n \in \mathbb{N} : \mathfrak{M}_n \leq \mathfrak{A} $
5。大胆な数学フォントスタイル。 「BM」パッケージ
ラテン文字のみの場合、 \ mathbf
コマンドを使用できます。他のすべてについては、「bm」パッケージがあります。それをロードして、 \ bm
を使用して、利用可能なフォントと同じくらい大胆で美しい式を作成します。
以下の例は、\bm
コマンドと \mathbf
コマンドの様々な使用方法を示しています。また、頻繁に使用される太字記号の省略名を定義する戦略も示しています。これには、標準の LaTeX の \newcommand
と、bm
パッケージで提供されている \bmdefine
の両方が使用されています。\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」は、個々のシンボルと文字の大胆なバージョンのリクエストを満たすために最善を尽くします。しかし、よく見ると、結果が常に最適ではないことがわかります。たとえば、合計と製品演算子は、 *貧しい人の大胆 *として知られる手法で作られています。この手法では、シンボルはわずかなオフセットで3回オーバープリントされます。また、巻き毛ブラケットはまったく大胆にされていません。一部のシンボルでは、コンピューターModern Mathフォントを使用する場合、単に大胆なバリアントがないため、このような欠点は避けることはできません。
\bm
が引数内の記号を太字にするために従おうとする正確なルールとは何でしょうか。一般的には、数式全体を太字でタイプセットするために LaTeX に 太字 の数式バージョン (\boldmath
経由でアクセス可能) が含まれているという事実を利用します (適切な太字フォントが使用可能であり、設定されていることが前提)。各記号について、\bm
コマンドはこの数式バージョンを参照して、そのバージョンでの処理を確認します。記号に選択されたフォントが通常の数式バージョンで選択されたフォントと異なる場合、この太字フォントで記号をタイプセットし、完璧な結果を得ます (太字の数式バージョンが適切に設定されていることが前提)。両方のバージョンのフォントが同一の場合、太字バージョンは存在しないものと想定し、poor man’s bold を適用します。
Load the
bm
package after packages that change the existing math font set-up!
この状況は、例の「\ biggl \ lbrace」などの区切り文字とさらに複雑です。 Texは通常、さまざまなサイズのシーケンスから要求された高さに一致するように選択されたグリフによって区切り文字をタイプセットします。これらのグリフはさまざまなフォントに配置でき、特定のサイズには大胆なバリアントがある場合とない場合があります。これらすべてを一緒にすると、「\ bm」が貧しい人の大胆さを適用する必要があるかどうかを確実に判断することができません。したがって、大胆な数学バージョンで提供されるフォントを使用して、デリミッターをタイプセットします。 コンピューターモダン数学フォントでは、最小のデリミッターサイズのみが太字で利用できます。他のすべてのサイズは、大胆なバリエーションのないフォントから来ています。
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
の引数に完全に含まれる必要があります。その結果、タイプセットされた内容のすべての部分が太字になります。引数を持つコマンドの出力を部分的にのみ太字にしたい場合は、次のようにします。太字にしたくない記号を \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
コマンドを使用することで実現できます。前の例の \sqrtsign
と同様に、太字のアクセント記号が頻繁に使用される場合、\bm
はアクセント記号の引数をその引数の外側に置くことができるように特別にプログラムされています。ただし、このようなアクセント記号を頻繁に使用する必要がある場合は、以下の例のように独自の略語を定義するのが最善です。
パフォーマンスの改善
\bmdefine\bpi{\pi}
は \newcommand\bpi{\bm{\pi}}
の単なる省略形のように見えますが、実際はほぼ正反対です。\bm
は \bmdefine
を使用して新しい非表示の一時コマンドを定義し、すぐにこの一時コマンドを使用して太字のシンボルを生成します。つまり、\bmdefine
がすべての面倒な作業を実行します。例えば、\bm{\alpha}
で定義されたものを頻繁に使用する場合、毎回新しい \bmdefine
が実行されます。\bmdefine\balpha{\alpha}
定義をプリアンブルで提供すれば、\balpha
が何度使用されても、\bmdefine
は時間のかかる作業を一度だけ実行します。
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$
この例はまた、変数幅のアクセント(「\ widehat」など)がデリミターと不足を共有していることを示しています。