math vector - yarakos95/LaTeX-for-math GitHub Wiki
ベクトルを書きたい.表記や方法がいくつかある.まとめておこう. これを一通り読んだら,ベクトルに関するLaTeX のノートが書けることを想定している.
ベクトルにはいくつかの方法があり,それぞれの表記方法をないまぜにするようなことはほとんどの場合ないだろう.新たなコマンドとして定義しておいて,あとで好きなように変更できるようにしておいた方が良い.[^newcommand] また,どのような意味で矢印を付けているのか,太字斜体にしているのかはっきりさせることも出来る.
[^newcommand]: \vec
と\vector
はすでに定義されているので,この名前を使いたい場合には\renewcommand
を用いる.
個人的には以下のようにしておくベクトルがおもしろいと思う.[^attention]
[^attention]: オフィシャルな文面で矢印と太字斜体の両方を使用したベクトルは使うべきではない(見たことがない).しかし,自分で読んでいて太字になっているのか分からないときがある.そこでこのような表記をしている.最後には\boldsymbol
のみにしている.
\newcommand{\vect}[1]{% この中身は自分の好きなベクトルの表記に置き換える
\overset{\scriptscriptstyle \boldsymbol{\to}}{\boldsymbol {#1}} % amsmath が必要
}
ちなみに,以下で紹介するesvect パッケージが提供する\vv
では\boldsymbol
やbm パッケージを用いても全体をボールド体にすることは出来なかった.
\vec
と\overrightarrow
がある.
コマンド | 例 | 矢印の長さ | |
---|---|---|---|
\vec |
\vec{a} |
一文字分 | |
\overrightarrow |
\overrightarrow{AB} |
好きなだけ |
矢印の形状を変更したい場合は,esvect パッケージ[^esvect]を用いると良いだろう.と言うよりも変えた方が良いだろう.\overrightarrow
は矢印と文字が干渉することがあるが,esvect パッケージが提供する矢印では干渉することはない.
また,以下のようにa
~h
のオプションから矢印のスタイルを変更することが出来る.
[^esvect]: esvect.sty | CTAN から.「LaTeX:esvectパッケージによる矢線ベクトル表記 - Qiita」に詳しい.パッケージガイドも1ページしかないので,直接これを読んでも良いだろう.
h
が\vec
, a
が\overrightarrow
に近い矢印になっているようだ.
いくつかの方法がある.いずれの方法であっても同様の結果を得る.
-
$\rm\LaTeX$ 標準 - amsmath パッケージ[^amsmath]を用いた方法
- bm パッケージ[^bm]を用いた方法
[^amsmath]: amsmath.sty | CTAN から.
[^bm]: bm.sty | CTAN から.
このほかにもphysics パッケージを用いる等の方法があるが,以下の方法を把握していれば他はほとんど必要ないだろう.
以下のようにすれば,数学パッケージを読み込まずにベクトルを表記することが出来る.
\mbox{\boldmath$A$}
このほかにも\mathbf
を用いることでボールド体にすることは出来るが,斜体とはならないので注意が必要.
amsmath はほとんどの場合で使われるはずなので,以下の方法がオーソドックスな方法だろう.
\boldsymbol{A}
bm パッケージは\boldsymbol
を拡張している.
\bm{A}
どのような文字がボールドに出来ないのか把握していないが,poor man's bold \pmb
を用いることで,太字にすることが出来る.
これは,2回文字を重ねることで太字にしている.あまり綺麗ではないので,太字斜体に出来ない場合のみ使用すると良いだろう.よく見るとダブっている.
白抜き文字でベクトルを示したい場合には,\mathbb
を使おう.ただし,アルファベット大文字にしか使えないので注意が必要である.
ベクトルに使用するよりも,集合で使用することを想定しているようだ.
また,bbm パッケージ[^bbm]では\mathbbm
を少しだけ拡張しているようだ.
[^bbm]: bbm.sty | CTAN から.「天地有情 [LaTeX] bbm-macros ---「黒板スタイル」cmフォントのLaTeXサポート」に詳しい.
ベクトルに添え字が付与される場合があるだろう. このとき,添え字がベクトルそのものとは無関係の場合には,ベクトルの表記が混じることのないようにすべきである.
ダメな例 :
% 多くの場合,添え字はベクトルに含むべきではない
\vec{A_0} % 矢印の位置がずれる
\overrightarrow{A_1} % 矢印の中に添え字が含まれてしまっている
\boldsymbol{A_2} % 添え字もボールド体になっている
\overrightarrow
では,添え字をベクトルの矢印内に含んでいてもおかしくない場合もある.
esvect パッケージを利用する場合であっても,添え字を避けるようにすることのできるコマンドもあるようだ.
訂正例 :
\vec{A}_0
\overrightarrow{A}_1
\boldsymbol{A}_2
ベクトルに_\mathrm{<vector name>}
とする場合には,特に注意が必要になるだろう.
下付き文字を付与するためのコマンドが提供されている.
このコマンドを用いると,\overrightarrow
よりも少しだけ見た目が良くなる.
\begin{align*}
\vec{a}_0, \quad \overrightarrow{A}_1, \quad \overrightarrow{AB}_2 \\
\vv{a}_{0}, \quad \vv{A}_{1}, \quad \vv{AB}_{2} \\ % "\vec" や"\overrightarrow" と同じように使うことが出来る
\vv*{a}{0}, \quad \vv*{A}{1}, \quad \vv*{AB}{2} % 下付き文字を含むコマンド
\end{align*}
\vec
や\overrightarrow
, \vv
に比べて\vv*
の方が添え字がベクトルに近づいている.
転置行列等で上付き文字を付与する場合,少し違いが生じる.
\vec{A}^\mathsf{T}
\overrightarrow{B}^\mathsf{T}
\vv{C}^\mathsf{T}
\vec
では矢印と上付き文字が完全に干渉してしまっている.\,
などで間隔を空けることでごまかすことは出来るが面倒くさい.
この意味でもesvect パッケージを利用した方が有用だろう.
ベクトルを記述する記号はさまざまある.これらについてもまとめておこう.
平行記号と垂直記号はamsmath から関係演算子として提供されている.
\perp % 垂直
\parallel % 平行
この平行記号は\|
と似た記号となっている.斜めの平行記号は提供されていないので,自作するしかない.
\newcommand{\parallelsum}{\mathbin{/\mkern-5mu/}} % \parallelsum と定義
\perp % 垂直
\parallel % 平行
\parallelsum % 斜め平行
垂直記号に比べて平行記号は少し大きく見える.高さを上手く調整したいが,ムズカシイね.[^shortparallel]
[^shortparallel]: \shortparallel
もあるが,小さすぎる.
また,斜めの平行記号は以下のような定義方法もある.
\newcommand{\varParallel}{ % \varParallel と定義
\def\@varParallel{/\kern-.2em /}\mathchoice %
{\@varParallel} %
{\textstyle\@varParallel} %
{\scriptscriptstyle\@varParallel} %
{\scriptscriptstyle\@varParallel} %
}
ただし,この方法では,添え字にした場合に\scriptscriptstyle
が反映されてしまうため他の文字もこれに従ってしまう.
内積(スカラー積)と外積(ベクトル積)は以下を利用する.
\cdot % ドット
\times % クロス
実際に利用すると次のようになる.
\boldsymbol{A} \cdot \boldsymbol{B} \times \boldsymbol{C}
ちょっと細い気がする.
\newcommand{\dotp}{\boldsymbol{\cdot}} % "dot product"
\newcommand{\crossp}{\boldsymbol{\times}} % "cross product"
\boldsymbol{A} \dotp \boldsymbol{B} \crossp \boldsymbol{C}
絶対値とノルムを定義しておこう.この定義コマンド内で\left
~ \right
で対応関係を採っても良いだろう.
\providecommand{\abs}[1]{\lvert #1 \rvert}
\providecommand{\norm}[1]{\lVert #1 \rVert}
mathtools を利用している場合であれば,プリアンブルで以下のように定義しておこう.
\DeclarePairedDelimiter{\abs}{\lvert}{\rvert}
\DeclarePairedDelimiter{\norm}{\lVert}{\rVert}
このように定義しておくと,以下のように使うことが出来る.
\abs{\frac{a}{b}}, \quad % そのまま
\abs*{\frac{c}{d}}, \quad % * 付きは自動調整
\abs[\Bigg]{\frac{e}{f}}. % \Bigg オプション付き
勾配,発散,回転に関しても定義しておくと便利だろう.
\DeclareMathOperator{\grad}{grad}
\DeclareMathOperator{\divergence}{div} % \div は "÷" と競合するので注意
\DeclareMathOperator{\rot}{rot}
\DeclareMathOperator{\curl}{curl}
発散に関して\div
としたい場合には,\renewcommand
としておけば良い.
\renewcommand{\div}{\divergence} % これ以降では "÷" は使えない
"÷" も使いたい (折りたたみ)
以下のようにしておけば良いような気がした.
\newcommand{\divisionsymbol}{\div} % これ以降では "÷" は "\divisionsymbol" とする
\renewcommand{\div}{\divergence} % これ以降では "\div" で "div" とする
上手くいかなかったので,解決方法があれば教えてほしい.
ラプラシアンやダランベルシアンについても定義しておくと良いだろう.[^unicode]
[^unicode]: Unicode で特定の文字が与えられているようなので,これを用いた方が確実だと思われる.ラプラシアンはU+2206
,ダランベルシアンはU+29E0
らしい.ただし,この場合にはUnicode で指定することのできるパッケージを新たに読み込む必要がある.しかし,これらはあくまでも意味的な文字であり,形状はいずれを採ってもおおよそ同じようなものになる.少なくとも,\Delta
や口
(漢字のくち)で代用しているわけではない限りには問題ないだろう.
\newcommand*{\Laplace}{\!\mathop{}\mathbin{\bigtriangleup}} % ただの三角形
\newcommand*{\DAlambert}{\!\mathop{}\mathbin{\Box}} % ただの四角形
\tilde
や\hat
等のアクセントを付与する際でもきれいな位置にレンダリングされるので,これで良いかと思われる.[^experience]
[^experience]: \DeclareMathOperator
で定義しても良さそうに思っていたが,アクセントを付けるとズレる.適していないようだ.また,関数との間隔が空きすぎるように見える.
これが面倒な場合には,ナブラの2乗でも良いように思う.
\newcommand*{\Laplace}{\mathbin{\nabla^2}
矢印スタイルではesvect パッケージを利用,太字斜体スタイルでは\bodlsymbol
またはbm パッケージを利用すると良いだろう.
- TeXの記憶(101)— 斜体の\parallel | 寝坊した
- Correct symbol for the Laplace operator ($\Delta$) - TeX - LaTeX Stack Exchange
- symbols - How to draw the "parallel circuits" sign "//"? - TeX - LaTeX Stack Exchange
- ベクトルの添え字についてにおける「esvect を使った場合」,「上付き文字」を追加しました.