basic - yarakos95/LaTeX-for-math GitHub Wiki

数式モードのスタイルやシンボルのクラス,フォントを確認しておこう.

○ 数式モードのスタイル

数式モードのスタイルには4つの種類がある.

スタイル
1 \displaystyle 別行立て数式
2 \textstyle インライン数式
3 \scriptstyle 添え字
4 \scriptscriptstyle 添え字の添え字

{\XXXstyle \sum_{n=0}^N A_n} とすることで,それぞれのスタイルを使うこと出来る.

\begin{align*}    % いずれも同じ \sum_{n=0}^N A_n を異なるスタイルで表示させる
    {\displaystyle \sum_{n=0}^N A_n} \\
    {\textstyle \sum_{n=0}^N A_n} \\
    {\scriptstyle \sum_{n=0}^N A_n} \\
    {\scriptscriptstyle \sum_{n=0}^N A_n}
\end{align*}

math-style.png

○ 数学シンボルのクラス

数式モードでは以下のような数式に対するクラスとして括られているようだ.このクラスによって,左右に適切な空白を入れる等の効果がある.[^anothermathclass]

[^anothermathclass]: \mathalpha\mathinner もあるようだが,これらのクラスはどうなっているのだろうか.

このような数式シンボルのクラスを$\rm\LaTeX$ ユーザにとって必要な情報なのかは怪しい[^texonlatex]が,知っておくことで数式を作成するときに意味を持った数式の書き方が出来るのではないかと思う.

[^texonlatex]: $\rm\TeX$ ユーザは知っておくべきなのだと思う.しかし,数式を打てれば良いお気持ちの$\rm\LaTeX$ ユーザとしては知らずとも作成できるので知っていたらちょっと良いドキュメント作成が出来るかなと言う感じ.

Class No. Mnemonic コマンド 種類
0 Ord \mathord 通常の記号 $A\quad 0\quad \Phi\quad \infty$
1 Op \mathop 大型演算子 $\sum\quad \prod\quad \int$
2 Bin \mathbin 二項演算子 $+\quad \times \quad $
3 Rel \mathrel 関係演算子 $=\quad <\quad \in$
4 Open \mathopen 左デリミタ, 開きデリミタ $(\quad \lbrack\quad \langle\quad \lvert$
5 Close \mathclose 右デリミタ, 閉じデリミタ $)\quad \rbrack\quad \rangle\quad \rvert$
6 Pun \mathpunct 句読点類 $.\quad ,\quad ;\quad !$

\mathXXX{<数学記号>} とすれば,<数学記号>XXX のシンボルクラスと同等の扱いとなる.

例 : E という大型演算子を新たに定義する.

\newcommand{\opE}{\mathop{E}}    % E をOperator クラスにしている
\begin{equation*}
    \opE^\infty_0
\end{equation*}

mathop-E.png

これでE が大型演算子\opE として利用できるようになった. しかし,この大型演算子はnosumlimits 等のamsmath のオプションを受け付けないようだ.

■ 数学記号を上下に組み合わせる

以下のコマンドがamsmath から提供されている.

コマンド
上に重ねる \overset \overset{<上側>}{<基準>}
下に重ねる \underset \underset{<下側>}{<基準>}
上下に重ねる \overunderset \overunderset{<上側>}{<下側>}{<基準>}
関係演算子として上に重ねる \stackrel \stackrel{<上側>}{<基準>}

\overset, \underset, \overunderset はともに<基準>となる数学記号のシンボルクラスに依存する.特に,*^ などのアクセントをつける場合の使用が想定されているのだろう.[^accents]

[^accents]: いくつかのアクセントは$\rm\LaTeX$ で定義されている.「数式アクセント-講座 - PukiWiki」に詳しい.

逆に,\stackrel では全体を関係演算子とすることが出来る.

A= を上下に重ねてみると以下のようになる. \XXXset では通常の記号として扱われているが,\stackrel では関係演算子として扱われているために前後に間隔が空けられているのが分かる.

set-rel.png

このことから,以下のように数学記号を上下に組み合わせた場合,同等の結果が得られる.

\overset{*}{=}    % シンボルクラスが"=" に依存する
\stackrel{*}{=}    % 基準となる数学記号に依らずに関係演算子のシンボルクラスとなる

$$ \stackrel{*}{=} $$

同等の結果が得られるが,新たな"等号" の意味で定義するのであれば,\stackrel で定義する方が意味があるだろう.

実用的な例とすれば,以下のようなものだろうか.

\stackrel{\scriptscriptstyle \mathsf{def}}{=}

○ 数学フォント

amsmath とmathrsfs パッケージを導入しておけば以下のすべてを利用できる. 数学の流派によってさまざまなフォントが使用されるので,どのフォントがどの数学に使用するのかについては言及しない.(把握もしていない)

コマンド 備考
デフォルトの数学フォント \mathnormal 省略可能
ローマン \mathrm 本文中のフォント
イタリック \mathit \mathnormal よりも少し字がつまるようだ
ボールド \mathbf -
サンセリフ \mathsf -
カリグラフィー \mathcal 大文字のみ
等幅フォント \mathtt -
黒板太字 \mathbb 大文字のみ,amsfonts またはamssymb が必要
フラクトゥール \mathfrak アルファベットのみ,amsfonts またはamssymb が必要
スクリプト \mathscr 大文字のみ,mathrsfs が必要

euscript パッケージを導入しても\mathscr を用いることが出来るが,異なるフォントが出力される.

math-font.png

  • ブランクとなっている部分は本来の文字が出力されないか,おかしな文字が出力される
  • 小文字のアルファベットに対応していない書体が一部ある
  • 小文字のギリシャ文字はいずれの書体も対応していない

ギリシャ文字に関してはいずれのコマンドも使用することが出来ない.(ただし,\mathbf はギリシャ文字の大文字は太字にすることが出来る.) 以下のコマンドを用いると,ギリシャ文字であっても太字にすることが出来る.

■ 太字にしたい

ベクトルにはbm パッケージを使う方が容易で確実だろう

ベクトル表記ではボールド体にすることが多い.いくつかの方法があるのでまとめておきたい.

提供 コマンド
LaTeX \mathbf ボールド
amsmath パッケージ \boldsymbol bm パッケージと等価
LaTeX \pmb poor man's bold
bm パッケージ[^bm] \bm \boldsymbol とほぼ等価
physics パッケージ[^physics] \vb \mathbf と等価
physics パッケージ \vb* \boldsymbol と等価

[^bm]: bm | CTAN から. [^physics]: physics | CTAN から.

math-font-bold.png

\pmb は2回(3回?)重ねることで太字を作り出すもので,あまり推奨されない^pmbようだ.実際に出力してみると,文字がダブっているためあまり綺麗ではない.

bm パッケージは\boldsymbol を踏襲しているようだが,より拡張的に構成されている. おもしろいところはいくつかあるが,例としては\boldsymbol ではボールドにすることの出来ない記号をボールドに変換することが出来る点だろう.

physics パッケージにもボールドにするコマンドがある.ボールドの他にもさまざまな機能があるので,パッケージをあまり使用したくない場合にはこちらのベクトル表記を用いても良いだろう.(bm パッケージより少し劣るか?)

他にも以下のような方法で太字にする方法が紹介されているところがあるが,bm パッケージを使用すれば特に必要ないだろう.

\newcommand{\vector}[1]{\mbox{\boldmath $ #1 $}}    % \vector として定義した

上のフォントを並べた図は以下のコードから見ることが出来る.

LaTeX Math Fonts Demo Code (折りたたみ)

typeset : upLaTeX + dvipdfmx

\documentclass[uplatex,dvipdfmx,12pt,a4paper]{jsreport}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{upgreek}
\usepackage{mathrsfs}
\usepackage{mathtools}
\usepackage{bm}
\usepackage{physics}
\begin{document}
\newcommand{\mathsymbol}[5]{
&\text{Fonts}& #1 & \text{alph} & #1 & \text{Alph} & #1 & \text{greek} & #1 & \text{Greek} \\
&\text{normal}&  & \mathnormal{#2} &  & \mathnormal{#3} &  & \mathnormal{#4} &  & \mathnormal{#5} \\
&\text{mathrm}&  & \mathrm{#2} &  & \mathrm{#3} &  & \mathrm{#4} &  & \mathrm{#5} \\
&\text{mathit}&  & \mathit{#2} &  & \mathit{#3} &  & \mathit{#4} &  & \mathit{#5} \\
&\text{mathbf}&  & \mathbf{#2} &  & \mathbf{#3} &  & \mathbf{#4} &  & \mathbf{#5} \\
&\text{mathsf}&  & \mathsf{#2} &  & \mathsf{#3} &  & \mathsf{#4} &  & \mathsf{#5} \\
&\text{mathcal}&  & \mathcal{#2} &  & \mathcal{#3} &  & \mathcal{#4} &  & \mathcal{#5} \\
&\text{mathtt}&  & \mathtt{#2} &  & \mathtt{#3} &  & \mathtt{#4} &  & \mathtt{#5} \\
&\text{mathbb}&  & \mathbb{#2} &  & \mathbb{#3} &  & \mathbb{#4} &  & \mathbb{#5} \\
&\text{mathfrak}&  & \mathfrak{#2} &  & \mathfrak{#3} &  & \mathfrak{#4} &  & \mathfrac{#5} \\
&\text{mathscr}&  & \mathscr{#2} &  & \mathscr{#3} &  & \mathscr{#4} &  & \mathscr{#5}
}
\newcommand{\mathboldsymbol}[5]{
&\text{Fonts}& #1 & \text{alph} & #1 & \text{Alph} & #1 & \text{greek} & #1 & \text{Greek} \\
&\text{mathbf} &   & \mathbf{#2} &   & \mathbf{#3} &   & \mathbf{#4} &   & \mathbf{#5} \\
&\text{vb}&  & \vb{#2} &  & \vb{#3} &  & \vb{#4} &  & \vb{#5} \\
&\text{BoldSymbol}&  & \boldsymbol{#2} &  & \boldsymbol{#3} &  & \boldsymbol{#4} &  & \boldsymbol{#5} \\
&\text{bm}&  & \bm{#2} &   & \bm{#3} &  & \bm{#4} &  & \bm{#5} \\
&\text{vb*}&  & \vb*{#2} &  & \vb*{#3} &  & \vb*{#4} &  & \vb*{#5} \\
&\text{pmb}&  & \pmb{#2} &  & \pmb{#3} &  & \pmb{#4} &  & \pmb{#5} \\
}

% Math Fonts
\begin{alignat*}{8}
\mathsymbol{\qquad}{afg}{AGZ}{\alpha\lambda\omega}{\Gamma\Delta\Theta}
\end{alignat*}

% Math Fonts for Bold
\begin{alignat*}{8}
\mathboldsymbol{\qquad}{afg}{AGZ}{\alpha\lambda\omega}{\Gamma\Delta\Theta}
\end{alignat*}

\end{document}

今回は出していないが,upgreek に関しても他のギリシャ文字と同様の結果を得た.ぜひ試してみてほしい.

参考

[^shortmathguide]: $ texdoc short-math-guide と叩いてもガイドが出すことができる

⚠️ **GitHub.com Fallback** ⚠️