• 検索結果がありません。

雑多なこと

ドキュメント内 How to write your own thesis tutorial with LaTeX2e (ページ 109-115)

第 7 章 数式の書き方 79

7.9 雑多なこと

7

plain 標準の\theorem命令と同じ書式にします.

break h名前iを出力した後に改行をします.

margin 通し番号を余白に出力します.

change 通し番号とh名前iを入れ替えます.

marginbreak ‘margin’に付け加え,それを出力した後に改行します.

changebreak ‘change’に付け加え,それを出力した後に改行します.

theoremパッケージで「命題2.1,定義2.2,定理2.3」のような環境を作成したければ次

のようにします.

{\theorembodyfont{\normalfont}

\theoremheaderfont{\normalfont\gtfamily\bfseries}

\newtheorem{Exam}{命題}

\newtheorem{Refer}[Exam]{定義}

\newtheorem{Prob}[Exam]{定理}}

7.9 雑多なこと

不定積分を表現したり定積分を表現したりする次の場合を考えてみましょう.

%\usepackage{txfonts}

\[ \int f(x)dx + \int g(y)dy +

\iint h(x,y)dx\,dy \]

Z

f(x)dx+ Z

g(y)dy+ ZZ

h(x, y)dx dy

この場合は新規に\intxや\iintxyなどを定義すると手間が省けるでしょう.

\newcommand*\intx[1]{\int#1dx}

\newcommand*\inty[1]{\int#1dy}

\newcommand*\iintxy[1]{\iint#1dx\,dy}

\[ \intx{f(x)} + \inty{g(y)} +

\iintxy{h(x,y)} \]

Z

f(x)dx+ Z

g(y)dy+ ZZ

h(x, y)dx dy

ある線形微分方程式dy/dx+P(x)y=Q(x)の一般解を表現するために

\[ y = e^{-\int P(x)dx} \left\{

\int{Q(x)e^{\int P(x)dx}dx +

\mathrm{c}} \right\} \]

y=e

RP(x)dxZ Q(x)e

RP(x)dx

dx+ c ff

というのを何回も書くのはエネルギーの無駄ですから,公式通りに新規に命令を作ると 汎用的にP(x)やQ(x)を書くことができます.

\newcommand{\my}{%

\ensuremath{dy/dx+P(x)y=Q(x)}}

\newcommand{\mypq}[2]{\ensuremath{%

e^{\int{#1}dx}\left\{\int{{#2}%

e^{\int{#1}dx}dx+\mathrm{c}}\right\}}}

$P(x)=x^2+\pi$,$Q(x)=e^x$とすると\my の 解$y$は\[\mypq{(x^2+\pi)}{e^x}\]となる.

P(x) = x2+πQ(x) = ex とするとdy/dx+ P(x)y=Q(x)の解y

e

R(x2+π)dx

Z exe

R(x2+π)dx

dx+ c ff

となる.

何らかの数式が公式として確立している場合はそれをマクロとして作成しておくと便利 です.マクローリン展開やテイラー展開を毎回書くのは面倒ですから次のような使い方を すると良いでしょう.

\newcommand{\macl}[2][x]{\ensuremath{%

f(#2)+\frac{1}{1!}f’(#2)(#1-#2)+

\frac{1}{2!}f’’(#2)(#1-#2)^2+\cdots +\frac{1}{k!} f^{(k)}(#2)(#1-#2)^k +\cdots}}

\newcommand{\Macl}[2][x]{\ensuremath{%

\sum^{\infty}_{k=0}\frac{1}{k!}%

f^{(k)}(#2)(#1-#2)^k}}

関数$f(z)$の$z=0$におけるテイラー展開は

\(\macl[z]{0}\)であり\(\Macl[z]{0}\) となるので$z=0$における級数は\[

f(z)=\sum^{\infty}_{k=0}\frac{1}{k!}

f^{(k)}(0)z^k

\]となり,これをマクローリン展開と呼ぶ.

関 数 f(z)z = 0に お け る テ イ ラ ー 展 開 は f(0) +1!1f0(0)(z0) + 2!1f00(0)(z0)2+· · ·+

1

k!f(k)(0)(z−0)k+· · ·でありP

k=0 1

k!f(k)(0)(z 0)k となるのでz= 0における級数は

f(z) = X k=0

1

k!f(k)(0)zk

となり,これをマクローリン展開と呼ぶ.

偏微分記号が多く出てくる数式を考えます.

\[ \frac{\partial{f}}{\partial{x}}

+\frac{\partial^2{f}}{\partial{x}^2}

+\frac{\partial^3{f}}{\partial{x}^3}

\]

∂f

∂x+2f

∂x2 +3f

∂x3

毎回このように記述するのは疲れますので次のようにマクロを作成して用います.

\newcommand{\pdif}[3][]{\ensuremath{%

\frac{\partial^{#1}{#2}}

{\partial{#3}^{#1}}}}

\[ \pdif{f}{x}+\pdif[2]{f}{x} \]

∂ f

∂x +2f

∂x2

このようにしても良いのですが,変数が二つ以上の場合は手動で対処します.

\newcommand{\pdif}[3][]{\ensuremath{%

\frac{ \partial^{#1}{#2}}

{\partial{#3}^{#1}}}}

\[ \pdif[2]{f}{x} + \pdif{\sp2f}{xy} +

\pdif[2]{f}{y} \]

2f

∂x2 +2f

∂xy +2f

∂y2

\partialと\fracを乱雑に書くよりはこのほうがすっきりしているでしょう.

作成中の文書の分野を考えてあらかじめ公式の一部分をマクロとして作成するのも有効 かも知れません.

H 7.9.1 記号の積み重ね

イコール‘=’のうえに‘def’をのせて‘def=’のような記号を出したいときがあります.こ

れには\stackrelという命令が使えます.一つ目の引数を二つ目の引数のうえに載せて

関係子を作ります.

7.9 雑多なこと 99

7

\stackrel{h上の記号i}{h下の記号i}

\newcommand{\defeq}{%

\stackrel{\mathrm{def}}{=}}

\( x \defeq p(t)+q(t)+r(t) \)

xdef= p(t) +q(t) +r(t)

記号の積み重ねとは少し違うのですが,次のような数式を出力するときもあるでしょ う.この例では\substackというamsmathパッケージに含まれる命令を使っています.

\begin{displaymath}

\sum^l_{i=1} \sum^m_{j=1} \sum^n_{k=1}

p_i q_j r_k \neq \sum_{

\substack{i\le 1\le l \\ j\le 1 \le m

\\ k\le 1 \le n}} p_i q_j r_k

\end{displaymath}

Xl i=1

Xm j=1

Xn k=1

piqjrk6= X

i≤1≤l j1m k≤1≤n

piqjrk

H 7.9.2 記号の重ね合わせ

二つの記号を重ね合わせて新しい記号を作りたいときがあります.\ooalignと\crcr 命令を組み合わせるとうまくできます.

{\ooalign{h一つ目i\crcrh二つ目i}}

二つの記号の内で横幅の広いほうの幅が優先されます.二つの記号を中心に重ね合わせ たいときは\hssという空白を挿入する命令を使います.さらに文字列に\notを使って も演算子の否定のようにはなりませんので

\newcommand{\cnot}[1]{\ooalign{/\crcr{\hss{#1}\hss}}}

のような定義をしておくと良いでしょう.スラッシュは全角を使っています.

\newcommand{\pile}[2]{%

{\ooalign{#1\crcr#2}}}

\newcommand{\cpile}[2]{{\ooalign{{%

\hss#1\hss}\crcr{\hss#2\hss}}}}

\newcommand{\cnot}[1]{%

\ooalign{/\crcr{\hss{#1}\hss}}}

円記号$\pile Y=$はこの$\cpile Y=$とは 別物で,\cnot{A}も\pile/Aとは別物である.

円記号Y=はこのY=とは別物で,/Aも/Aとは別物で ある.

H 7.9.3 数式の太字

何らかの理由である数式の一部や,ある数式全体を太字にすることがあります.方法は いくつか存在します.

• \mathbf命令を使う.

• \boldmathと\unboldmathを使って太字かどうかを切り替える.

• amsmathに含まれるamsbsyパッケージの\boldsymbol命令を使う.

• bmパッケージの\bm命令を使う.

などがあります.これは使用している数式書体によっては使えないことがあります.

txfonts やpxfonts を 使 う と な ん ら 問 題 な く 出 力 で き ま す .一 つ 目 の \boldmath と

\unboldmathは数式モード中で使うことができません.

\(\mathbf{\int^a_b f(x)dx} \neq\)

\boldmath \(\int^a_b f(x)dx \neq\)

\unboldmath\(\int^a_b f(x)dx \)

Ra

bf(x)dx6=Ra

b f(x)dx6=Ra b f(x)dx

\mathbfの場合はギリシャ文字などの特定の記号しか太字にならないうえにイタリッ

ク体ではなくローマン体になってしまいます.もう少し局所的に使いたい場合はamsbsy の\boldsymbolを使います.

\(\mathbf{\int^a_b f(x)dx} \neq

\boldsymbol{\int^a_b f(x)dx} \neq

\int^a_b f(x)dx \)

Ra

bf(x)dx6=RRRa

b f(x)dx6=Ra b f(x)dx

amsbsyを使うよりもbmパッケージの\bmを使うほうが安全です.

\(\mathbf{\int^a_b f(x)dx} \neq

\bm{\int^a_b f(x)dx} \neq

\int^a_b f(x)dx \)

Ra

bf(x)dx6=RRRa

b f(x)dx6=Ra b f(x)dx

結論として \bm命令を使うようにすると思い通りの結果になるのではないかと思い ます.

H 7.9.4 高さを揃える

ルート記号などを使っているとルートの高さが揃わずに見栄えが悪くなるときがありま す.これには数式中でルートなどの高さを揃える\mathstrut 命令が使えます.

\[ \overline{\sqrt a + \sqrt b \neq

\sqrt{\mathstrut a}+

\sqrt{\mathstrut b}} \]

√a+ b6=p

a+p b

分かりづらいのですが実は高さのみならず,深さも\mathstrutによって自動的に調整 されています.

もう少し高度な命令として \phantom,\vphantom,\hphantomの三つが用意されて

います.\phantom命令は引数に与えられた要素だけの高さと幅と深さを持った空白を

作成します. \vhpantomは引数に与えた要素の高さと同じ目には見えない箱を作成しま す.\hphantomはその横方向バージョンです.

\[ \sqrt{\int f(x)dx}+\sqrt{g(x)}\neq

\sqrt{\int f(x)dx}+\sqrt{%

\vphantom{\int f(x)dx} g(x)} \]

sZ

f(x)dx+p g(x)6=

sZ

f(x)dx+ s

g(x)

7.9 雑多なこと 101

7

もう一つ\smashという命令もあり,これは引数に与えられた要素の高さと深さを0に する魔法のようなものです.\smashと\vphantomを組み合わせると要素の幅はそのま まで高さと深さを0にしたうえで\vphantomで指定した高さと深さの見えない箱を作成 できるので,高さや深さを揃えるのに使えます.

\begin{displaymath}

\underbrace{a+b}+\underbrace{i+j}\neq

\underbrace{\smash{a+b}\vphantom{i+j}}

+\underbrace{i+j}

\end{displaymath}

a+b

| {z }+i+j

| {z }6=a+b

| {z }+i+j

| {z }

H 7.9.5 スマートな分数の書き方

文中数式中で分数を出力する \frac 命令を使うと ab となります.このような分数の 書き方はスマートではありません.a/bと書くと一般的な文中の分数のスタイルとなり ます.

\begin{displaymath}

\frac{\frac{a}{b}}{c}\neq\frac{a/b}{c}

\end{displaymath}

a b

c 6= a/b c

このような分数のスタイルは別行数式にも当てはまります.別行数式において分数を記 述しており,その分母・分子上にさらに分数を書く,連分数を記述する場合などはスラッ シュ‘/’による表記をするとスマートになります.ただしスラッシュによる表記では適宜 丸括弧を補います.

\begin{displaymath}

\frac{\frac{a-b}{c}}{d} \neq

\frac{a-b/c}{d} \neq \frac{(a-b)/c}{d}

\end{displaymath}

a−b c

d 6=a−b/c

d 6=(a−b)/c d

\begin{displaymath}

\frac{x+f(x)}{x-g(x)} \neq (x+f(x))/(x-g(x))

\end{displaymath}

x+f(x)

x−g(x) 6= (x+f(x))/(x−g(x))

H 7.9.6 数式モード中の空白と書体

数式用の環境では自動的に要素の前後の記号の種類になどにより空白が調節されますか ら意図していた結果と異なる場合があります.

\emph{diff}は\(diff\)にはなりませんから

\[ diff \neq \mathit{diff}. \]

diffdif fにはなりませんから dif f6=diff.

‘diff’という文字が全て数式中では変数と解釈され,それぞれLATEXが適切だと思う空 白を挿入してくれています.これから分かるように数式モード中ではユーザが明示的に空 白を調節すると良い場合があります.

$10\times5,000=50,000$円になります!\par

$10\times5{,}000=50{,}000$円になる?\par

10×5,000 = 50,000円になります!

10×5,000 = 50,000円になる?

上記の例ではコンマ‘,’が恐らく何かの区切りとして解釈されたのでしょう,意図して いたものよりも広くなっています.同じように感嘆符‘!’などは逆に空白が挿入されませ ん.ですから\,命令で若干の空きを挿入します.

\[ \frac{s! (q-1)! (r-2)!}

{p! q! r!} \neq

\frac{s!\,(q-1)!\,(r-2)!}

{\,p!\,q!\,r!} \]

s!(q−1)!(r2)!

p!q!r! 6= s! (q−1)! (r2)!

p!q!r!

感嘆符‘!’の例を見ると分かりますが数式モード中では斜体になっていません.このよ うに数式モード中でも斜体にならない記号がいくつかあります.\textitでは記号もイ タリック体になりますが数式中の \mathitを使うといくつかの記号が斜体にならないば かりか,空白制御が行われません.

%\usepackage{amsmath}

\textit{This is text mode?!}\par

\(\mathit{Is\ this\ text\ mode?!}\)\par

\(\mathit{Is this text mode?!}\)\par

\(\mathrm{Is this text mode?!}\)\par

\(\text{Is this text mode?!}\)\par

\(Is this text mode?!\)

This is text mode?!

Is this text mode?!

Isthistextmode?!

Isthistextmode?!

Is this text mode?!

Isthistextmode?!

いずれの場合も疑問符‘?’はイタリック体にはなっていません.このように数式中では 明示的にイタリック体に書体を変更する命令を使ってもローマン体のままの記号があり ます.

103

8

第 8 章 図表の貼り方

レポート・論文に図や表を取り入れることは読者の理解を助けること になります.この章では文書中にどのように図表を構成すればよいのか を解説します.

ドキュメント内 How to write your own thesis tutorial with LaTeX2e (ページ 109-115)