@node 埋め込み LaTeX, Exporting, Agenda Views, Top @chapter 埋め込み LaTeX @cindex @TeX{} 解釈 @cindex La@TeX{} 解釈 純粋な ASCII は、殆どの場合、(英文等における)書き物に十分な表現力を備 えています。しかしその例外は、数学記号やしばしば数式の表現を必要とする 科学的な書き物です。La@TeX{}@footnote{La@TeX{} はドナルド・E・クヌース の @TeX{} システムを本にしたマクロ・システムです。ここで ``La@TeX{}'' のものとして述べる多くの要素は、実は @TeX{} に由来しますが、文章を平易 にするため筆者はこの区別をあえて行なっていません。} は、そのような科学 系文書の植字に幅広く使われています。多くの学術関係者は La@TeX{} ソース コードを読むことに慣れており、HTML 文書に画像として挿入することも容易で す。こういった理由から、Org-mode では文書への La@TeX{} コードの埋め込み に対応しています。 La@TeX{} マクロやコードを記述するのに特殊な方法は必要ありません。わずか な決まりごとを守りさえすれば、Org-mode は適切に記述を見つけ、処理するこ とができます。 @menu * 数学記号:: 記号とギリシャ文字のための TeX マクロ * 下付き文字と上付き文字:: テキストの高さを調整する単純な構文 * LaTeX 断片:: 複雑な数式も簡単に * LaTeX 断片の処理:: LaTeX 処理結果の表示 * CDLaTeX モード:: 数式入力の効率化 @end menu @node 数学記号, 下付き文字と上付き文字, 埋め込み LaTeX, 埋め込み LaTeX @section 数学記号 @cindex 数学記号 @cindex TeX マクロ La@TeX{} マクロは、@samp{\alpha} としてギリシャ文字のアルファを表したり、 @samp{\to} として矢印を表す、というように特殊な記号を挿入するために使用 できます。これらのマクロは補完が効きます。@samp{\} と入力してから部分的 に文字を入力し、@kbd{M-@key{TAB}} を押すことで補完候補を見ることができ ます。La@TeX{} コードと異なり、Org-mode ではこういったマクロを数式区切 り文字で囲まない表現も認めています。以下、例: @example 角度はギリシャ文字 \alpha, \beta, \gamma で表わされている. @end example HTML エクスポートの際(@pxref{HTML export})、これらの記号は正しい HTML の構文に従って変換されます。上述の例では、それぞれ@samp{α} や @samp{→} と出力されます。もし、こうした記号を語の一部として含め る必要がある場合、@samp{\Aacute@{@}stor} のように区切ります。 @node 下付き文字と上付き文字, LaTeX 断片, 数学記号, 埋め込み LaTeX @section 下付き文字と上付き文字 @cindex 下付き文字 @cindex 上付き文字 La@TeX{} では、@samp{^} と @samp{_} は上付き・下付き文字を表わすのに使 われます。これらもまた、数式区切り文字で囲まなくても使えます。ASCII テ キストの読みやすさのために、場合によっては、複数文字からなる下付き・上 付き文字を波括弧で囲まなくても構いません。以下、例: @example 太陽の質量 M_sun = 1.989 x 10^30 kg. 太陽の半径 R_@{sun@} = 6.96 x 10^8 m. @end example 上付き、または下付き文字と解釈されることを避けたい場合、@samp{\_} や @samp{\^} のように、@samp{^} 又は @samp{_} の前にバックスラッシュ(\) を付加します。 HTML エクスポートの際(@pxref{HTML export})、下付き文字と上付き文字は それぞれ @code{} タグと @code{} タグによって囲まれます。 @node LaTeX 断片, LaTeX 断片の処理, 下付き文字と上付き文字, 埋め込み LaTeX @section LaTeX 断片 @cindex LaTeX 断片 @vindex org-format-latex-header 記号や下付き・上付き文字を用いることで、HTML はごく簡単な数式程度であれ ば表現することができます@footnote{MathML という物もありますが、これはい まだにブラウザの多くによるサポートが不完全であり、La@TeX{} や ASCII に よる数式表現を上手く MathML に変換する手段が存在しません。よって暫くの 間、数式は画像に変換しておくのが無難だと思います。}。より複雑な表現を行 なうためには、数式処理プログラムの助けを借りる必要があります。この目的 のため、Org-mode には任意の La@TeX{} コードの断片を含めることが可能です。 Org-mode は、これらの断片の植字結果をプレビューするためのコマンドを用意 しており、HTML へのエクスポート時には、全ての断片を画像に変換し HTML 文 書へと挿入します@footnote{La@TeX{} エクスポートの場合には、断片は画像と してではなく、そのまま La@TeX{} コードとして含まれます。}。これらの機能 を使用するためには、システムに La@TeX{} がインストールされている必要が あります。また、@url{http://sourceforge.net/projects/dvipng/} で入手で きる @file{dvipng} というプログラムも必要になります。断片の処理に使用さ れる La@TeX{} ヘッダは、変数 @code{org-format-latex-header} によって設 定可能です。 La@TeX{} 断片に特殊な記法は全く必要ありません。以下の点において、 La@TeX{} ソースコードと同等です。 @itemize @bullet @item あらゆる種類の環境。ただ一つの注意点は、@code{\begin} 文は新しい行に置 き、その前には空白(ホワイトスペース)以外の文字を置かないことです。 @item 通常の La@TeX{} 区切り文字中のテキスト。一般に通用している仕様同士の衝 突を避けるため、単一の @samp{$} 記号は、それで囲んだテキストに含まれて いる改行が二つ以下であり、内容と @samp{$} 記号との間に空白がなく、なお かつ閉じる方の @samp{$} 記号の次に空白・句読点・ダッシュのいずれかが続 いている場合にのみ区切り文字として認識されます。他の区切り文字にはこの ような制約はありません。迷った場合は、@samp{\(...\)} を行中の区切り文字 として使用して下さい。 @end itemize @noindent 以下、例: @example \begin@{equation@} % 任意の環境、 x=\sqrt@{b@} % 他に表や図、 \end@{equation@} % 等々 $a^2=b$ かつ \( b=2 \) ならば、解は $$ a=+\sqrt@{2@} $$ 又は \[ a=-\sqrt@{2@} \] のいずれかである。 @end example @noindent @vindex org-format-latex-options 区切り文字として使われる何らかの文字列が、他の目的で必要な場合、 @code{org-format-latex-options} オプションで La@TeX{} 変換時に処理され たくないものを対象から解除することができます。 @node LaTeX 断片の処理, CDLaTeX モード, LaTeX 断片, 埋め込み LaTeX @section LaTeX 断片の処理 @cindex LaTeX 断片, プレビュー La@TeX{} 断片により、植字表現のプレビュー画像を生成することができます: @table @kbd @kindex C-c C-x C-l @item C-c C-x C-l カーソルが置かれた点にある La@TeX{} 断片のプレビュー画像を生成し、ソー スコード部分にオーバーレイ(上塗り)で表示します。カーソルが La@TeX{} 断片内に置かれていない場合は、現在のエントリ(二つの見出しの間)にある 全ての La@TeX{} を同様に処理します。前置引数を一つ付けて呼び出した場合、 サブツリーも全て処理します。前置引数を二つを付けて呼び出した場合、もし くはカーソルが最初の見出しの前にある場合、バッファ全体を処理します。 @kindex C-c C-c @item C-c C-c プレビュー画像のオーバーレイを削除します。 @end table HTML エクスポートの際(@pxref{HTML export})、下記の設定を行なっていれ ば、全ての La@TeX{} 断片は画像に変換され、文中に挿入されます。 @lisp (setq org-export-with-LaTeX-fragments t) @end lisp @node CDLaTeX モード, , LaTeX 断片の処理, LaTeX 断片 @section 数式入力のための CDLaTeX @cindex CDLaTeX CDLaTeX モードは、通常は AUCTeX のような La@TeX{} 用メジャーモードと組 み合わせて使われる、環境や数式入力の効率化のためのマイナーモードです。 Org-mode でも、CDLaTeX モードのいくつかの機能を利用することが出来ます。 これを利用するためには、@file{cdlatex.el} と @file{texmathp.el}(後者は AUCTeX に付属しています)を @url{http://www.astro.uva.nl/~dominik/Tools/cdlatex} から入手し、インス トールしておく必要があります。また、Org-mode の使用中には CDLaTeX モー ドを直接使わず、Org-mode が提供する軽量版モード @code{org-cdlatex-mode} を通して利用して下さい。このモードをカレントバッ ファで有効にするためには @code{M-x org-cdlatex-mode} を実行します。全て の Org ファイルで有効にするためには、下記のように設定します。 @lisp (add-hook 'org-mode-hook 'turn-on-org-cdlatex) @end lisp このモードが有効な時、以下の機能が利用できます(より詳しい情報は CDLaTex モードの資料を参照して下さい): @itemize @bullet @kindex C-c @{ @item @kbd{C-c @{} で環境テンプレートを挿入できます。 @item @kindex @key{TAB} La@TeX{} 断片中にカーソルがある時、 @key{TAB} キーはテンプレートを展開 します@footnote{Org-mode はカーソルが断片内にあるかどうかを判別する手段 を有しています。詳しくは、関数 @code{org-inside-LaTeX-fragment-p} の資 料を参照して下さい。}。例えば、@key{TAB} の機能によって @code{fr} は @code{\frac@{@}@{@}} と展開され、カーソルが一つ目の括弧内に移動します。 もう一度 @key{TAB} を押すと、二つめの括弧内に移動します。また、断片の外 では、@key{TAB} は行頭にある環境の省略名を展開します。例えば、行頭に @samp{equ} と書いた状態で @key{TAB} を押すと、この省略名が @code{equation} 環境として展開されます。全ての省略名の一覧を見るには、 @kbd{M-x cdlatex-command-help} と入力します。 @item @kindex _ @kindex ^ @vindex cdlatex-simplify-sub-super-scripts La@TeX{} 断片中で @kbd{_} や @kbd{^} を入力すると、一組の括弧が同時に挿 入されます。@key{TAB} を押して括弧の外に出た時に、括弧内に記述されてい るのが単一の文字、又はマクロであった場合、この括弧は削除されます(この 動作は変数 @code{cdlatex-simplify-sub-super-scripts} の値に依存します)。 @item @kindex ` バッククォート @kbd{`} に続けて文字を入力すると、特定の数式マクロが挿入 されます。La@TeX{} 断片の外でも同様です。バッククォートを押して 1.5 秒 以上待機すると、ヘルプ・ウィンドウが表示されます。 @item @kindex ' 普通のクォート @kbd{'} に続けて文字を入力すると、その直前にある記号をア クセントかフォントで修飾します。クォートの後で 1.5 秒以上待機すると、ヘ ルプ・ウィンドウが表示されます。クォートによる文字修飾はLa@TeX{} 断片内 でのみ機能し、断片の外では通常の動作です。 @end itemize