LaTeX サポート (LaTeX Support)

Last-modified: 2015-01-02 (金) 12:15:58

原文 = http://ankisrs.net/docs/dev/manual.html#latex


目次



LaTeX はパワフルな植字システムであり、数学の公式、化学式、音楽記号などの入力に最適です。Anki は LaTeX を部分的にサポートしており、ノートに LaTeX コードの入力が可能です。カードの復習時には、Anki は LaTeX を呼び出し、生成された画像を代わりに表示します。

インストールと前提知識

Anki の LaTeX サポートにはややこしい設定が必要です:既にユーザーが LaTeX の使い方を知っており、既にインストール済みであることを前提としています。LaTeX を使った経験がなければ、インターネットで利用可能なたくさんのガイドを参考にしてください。LaTeX マークアップに疑問点などがあれば、LaTeX フォーラムで質問をしてください。

LaTeX のインストールをするには、Windows では MiKTeX、OS X では MacTex、Linux では ディストロのパッケージマネージャを使ってください。dvipng もインストールする必要があります。

ノート

Windows では、MikTeX のメンテナンスウィンドウで Settings を選び、"Install missing packages on the fly" を "Ask me first" ではなく "No" に設定してください。これでもまだ問題がある場合、全てのパッケージが入手されるまで Anki を管理者権限で起動することで動作させることができたという報告がありました。

ノート

OS X では、LaTeX は MacTex と BasicTex でのみテストされています。BasicTexを利用する場合、以下のコマンドにより dvipng を別にインストールする必要があります:

sudo tlmgr update --self; sudo tlmgr install dvipng

コマンドには path が通っていない場合、フルパスを指定する必要がある。例:

/usr/local/texlive/2014basic/bin/x86_64-darwin/tlmgr.

ノート

上記の LaTeX パッケージ以外を使っている場合、"edit LaTeX" アドオンを使い latex と dvipng のフルパスを指定する必要があります。

Web/Mobile 上での LaTeX

LaTeX の記入されたカードを復習した際、Anki は LaTeX の画像を生成しコレクションのメディアフォルダーに入れ、将来的に利用できるようにします。Web 上やモバイルクライアントは画像ファイルがあればこれを表示します。ただしこれらのクライアントは画像を生成することはできません。

他のクライアントで学習する前に全てのカードを一度は学習しなければならないという事態を避けるため、Anki には画像を一括で生成する機能があります。全ての画像を生成するには、ツール>メディアをチェック (Tools>Check Media) を使用してください。これにより、生成されたメディアが同期時に AnkiWeb と他のクライアントにアップロードされます。

使用例

LaTeX コンテンツを入力する最も一般的な方法は、 [latex][/latex] タグで囲むことです。この文書の エディター セクションに、ショートカットボタンがあります。

例えば、Ankiカードの front に以下のように入力すると:

Does [latex]\begin{math}\sum_{k = 1}^{\infty}\frac{1}{k}\end{math}[/latex] converge?
(総和 ... は収束するか?)

以下のようなカードとして表示されます:

convergence_question.png

上の例のような数式は テキスト数式 (text formula) と呼びます。数式ではないテキストの中に表示されるからです。対照的に、以下の例は ディスプレイ数式 (displayed formula) です:

Does the sum below converge?
(以下の総和は収束するか?)
[latex]\begin{displaymath}\sum_{k = 1}^{\infty}\frac{1}{k}\end{displaymath}[/latex]
convergence_question_2.png

テキスト数式ディスプレイ数式 は最もよく使われる LaTeX 表現なので、Anki には省略表記があります。

[latex]\begin{math}...\end{math}[/latex]

[$]...[/$]

と略記できます。また、以下の形式

[latex]\begin{displaymath}...\end{displaymath}[/latex]

[$$]...[/$$]

と略記できます。例えば、前にあげた 2つの LaTeX 式は それぞれ 以下と等価です。

Does [$]\sum_{k = 1}^{\infty}\frac{1}{k}[/$] converge?

Does the sum below converge?
[$$]\sum_{k = 1}^{\infty}\frac{1}{k}[/$$]

LaTeX パッケージ

Anki では LaTeX のプリアンブル (preamble) を変更し、化学用や音楽用などのカスタムパッケージを導入することができます。例えば、インターネット上で chemtex のサンプルファイルを見つけたとします:

\documentclass[a4paper,12pt]{report}
\usepackage{chemtex}
\begin{document}
\initial
\begin{figure}[h]\centering
\parbox{.3\textwidth}{\ethene{H}{H$_3$C}{CH$_3$}{Br}}
\hfil
\parbox{.3\textwidth}{\cbranch{H}{S}{H}{S}{C}{S}{}{S}{H}
  \xi=-200 \cright{}{Q}{C}{D}{O}{S}{OH}}
\hfil
\parbox{.3\textwidth}{\hetisix{Q}{Q}{Q}{Q}{Q}{Q}{O}{Q}{O}
  \xi=-171 \fuseup{Q}{Q}{Q}{Q}{D}{Q}{D}{Q}{D}}
\caption{Chemie mit {\tt CHEMTEX}\label{a1}}
\end{figure}
\end{document}

まず最初に、パッケージと MiKTeX/MacTex のドキュメントに従い、パッケージをインストールします。パッケージが動作することを確認するため、上記のようなコードを .latex ファイルに書き込み、コマンドラインからコンパイルすることができることを確認します。これを確認したらパッケージは動作可能なので、Anki にパッケージを導入します。

Anki でパッケージを使うには、メインウィンドウの "Add" ボタンを押し、次にノートタイプ選択ボタンを押してください。"Manage" ボタンを押し、使おうとしているノートタイプを選択して "Options" をクリックします。LaTeX ヘッダーとフッターが表示されます。ヘッダーは以下のようになっています:

\documentclass[12pt]{article}
\special{papersize=3in,5in}
\usepackage{amssymb,amsmath}
\pagestyle{empty}
\setlength{\parindent}{0in}
\begin{document}

chemtex を使うには、前述の例に usepackage 行を追加し、このようにします:

\documentclass[12pt]{article}
\special{papersize=3in,5in}
\usepackage{amssymb,amsmath}
\usepackage{chemtex}
\pagestyle{empty}
\setlength{\parindent}{0in}
\begin{document}

これにより、Anki カードに以下のような行を含めることができるようになります:

[latex]\ethene{H}{H$_3$C}{CH$_3$}{Br}[/latex]

LaTeX との競合

LaTeX で数式を記述する際、{{ と }} が現れることは珍しいことではありません。LaTeX の等式が Anki のフィールド置換と競合しないことを確実にするため、セパレータを別のものに変えることができます。

例えば、以下のテンプレートがあるとします:

{{latex field}}

これを次のように変えることで LaTeX との競合が起こりにくくなります:

{{=<% %>=}}
<%latex field%>

この書式は LaTeX ではたいへんよく現れるものの、LaTeX を使う・使わないに関わらず、上記の方法はカードに {{ }} を含める必要があるどんな場合にもうまく動作します。

穴埋め問題を使う場合、穴埋め問題をマークするのに使う二重カッコを変えることはできません。代わりに二重の閉じカッコの間にスペースを入れ、穴埋めの終わりを示さないようにすることができます。よって

{{c1::[$]\frac{foo}{\frac{bar}{baz}}[/$] blah blah blah.}}

は正しく動作しませんが

{{c1::[$]\frac{foo}{\frac{bar}{baz} }[/$] blah blah blah.}}

は正しく動作します。(LaTeX の数学モードではスペースを無視し、等式の表示は変わりません。)

安全でないコマンド

Anki ではカードやテンプレートにおいて、\input や \def といった特定のコマンドを禁止しています。これらを認めると、悪意ある公開された単語帳でシステムに損害を与えることができるためです。(安全を期してこれらのコマンドはコメントでも禁じられており、使った覚えがないのにこのエラーが表示される場合、ヘッダーやテンプレートやカードのコメントを再度チェックしてください。)これらのコマンドを使う必要がある場合、これらをシステムパッケージに追加して、前のセクションで説明してようにインポートしてください。