数式と記号
MathJax
MathJaxは、数式や化学式に便利な、最新のブラウザベースの組版システムです。追加のソフトウェアをインストールする必要がないため、使いやすく、ほとんどのユーザーにお勧めです。
MathJaxは、Anki 2.1以降、AnkiMobile、AnkiDroid 2.9以降で標準でサポートされています。
試してみるには:
-
フィールドに次のように入力します:
\sqrt{x}
-
入力したテキストを選択します。
-
エディタの右端のボタンをクリックし、メニューから「MathJaxインライン」を選択します。Ankiはテキストを次のように変更します:
\(\sqrt{x}\)
-
**カード…**ボタンをクリックします。カードが復習されるときに方程式がどのように表示されるかのプレビューが表示されます。
$$ \sqrt{x} $$
AnkiのMathJaxサポートは、TeX形式のコンテンツを期待します。TeX形式に慣れていない場合は、このチートシートを参照してください。
ポイント1はAnkiには適用されないことに注意してください - Ankiはインライン方程式に\(
と\)
を使用し、ディスプレイ方程式に\[
と\]
を使用します。
MathJax式で改行を使用したい場合は、通常の改行がMathJaxの正しい動作を妨げるため、EnterだけでなくShift+Enterを使用してください。
Ankiには、化学式をレンダリングするためのmhchemの組み込みサポートが含まれています。詳細については、「化学式」セクションと次のセクションを参照してください: https://mhchem.github.io/MathJax-mhchem/
MathJaxのカスタマイズ
Ankiにバンドルされているは、カードコンテンツの前に読み込まれるため、MathJaxをカスタマイズしたい場合は、特定の方法で行う必要があります。ここに例を示します。
<script>
MathJax.config.tex['macros'] = {
R: '{\\mathbb {R}}',
};
if (typeof is_already_run == 'undefined') {
is_already_run = true
MathJax.startup.getComponents();
}
</script>
Ankiには、MathJax方程式の標準区切り文字を変更すると動作しない可能性があるクローズ削除用の特別なロジックがあることに注意してください。
LaTeX
LaTeXは、数式、化学式、楽譜などを入力するのに便利な強力な組版システムです。AnkiはLaTeXをサポートしており、ノートにLaTeXコードを入力できます。カードを復習するとき、AnkiはLaTeXを呼び出し、生成された画像を代わりに表示します。
LaTeXはセットアップに手間がかかり、画像はコンピュータ版のAnkiでのみ生成できます - ただし、一度生成されれば、画像はモバイルクライアントでも表示できます。LaTeXがもたらす追加の複雑さのため、MathJaxが提供する以上の機能が必要なユーザーにのみ推奨されます。
セキュリティ警告
LaTeXコードには、コンピュータ上のAnki以外のデータを読み書きできる悪意のあるコマンドが含まれている可能性があります。このため、最近のAnkiバージョンでは、デフォルトでLaTeX画像の生成を拒否します。
自分のカードでLaTeXを使用したい場合は、設定画面でLaTeX画像を生成オプションを有効にする必要があります。
共有デッキを使用している場合、または将来共有デッキをインポートすると思われる場合は、このオプションを有効にしないことを強くお勧めします。共有デッキの作者にコンピュータへのアクセスを許可する可能性があるためです。
共有デッキではこのオプションを有効にする必要はありません。共有デッキの作者がデッキを共有する前にすべての画像を正しく生成している場合、画像はすでに利用可能なはずです。
前提知識
AnkiのLaTeXサポートはターンキーではありません:すでにLaTeXの使い方を知っており、インストールされていることが前提となります。LaTeXの経験がない場合は、インターネット上で利用可能な多くのガイドの1つを参照してください。マークアップで問題がある場合は、LaTeXフォーラムでお尋ねください。
LaTeXをインストールするには、WindowsではMiKTeX、macOSではMacTeX、Linuxではディストリビューションのパッケージマネージャーを使用します。Dvipngもインストールする必要があります。
Windowsでは、MikTeXのメンテナンスウィンドウで設定に移動し、「不足しているパッケージをその場でインストール」が「最初に尋ねる」ではなく「常に」に設定されていることを確認してください。引き続き問題がある場合、あるユーザーは、すべてのパッケージが取得されるまで管理者としてAnkiを実行することが役立ったと報告しています。
macOSでは、LaTeXはMacTeXとBasicTeXでのみテストされています。BasicTeXを使用する場合は、次のコマンドでdvipngを個別にインストールする必要があります:
sudo tlmgr update --self; sudo tlmgr install dvipng
コマンドがパス上にない場合があるため、完全なパスを指定する必要があるかもしれません。例:/usr/local/texlive/2014basic/bin/x86_64-darwin/tlmgr。
上記のLaTeXパッケージを使用していない場合は、edit LaTeXアドオンを使用して、latexとdvipngへの完全なパスを指定する必要があります。
Web/モバイル
LaTeXを含むカードを復習すると、AnkiはそのLaTeX用の画像を生成し、将来の使用のためにコレクションのメディアフォルダに画像を配置します。Webおよびモバイルクライアントはこれらの画像がすでに存在する場合は表示しますが、自分で画像を生成することはできません。
他のクライアントで学習する前に、すべてのカードを少なくとも1回復習する必要を避けるため、Ankiは画像を一括で生成できます。すべての画像を生成するには、ツール>メディアをチェックに移動してください。その後、同期により生成されたメディアがAnkiWebと他のクライアントにアップロードされるはずです。
例
LaTeXコンテンツを入力する最も一般的な方法は、[latex][/latex]タグで囲むことです。エディタセクションに記載されているショートカットボタンがあります。
[latex]タグはフィールド内で使用する必要があります - カードテンプレートに配置すると問題が発生します。
例えば、Ankiフラッシュカードの表面に次のように入力すると:
[latex]\begin{math}\sum_{k = 1}^{\infty}\frac{1}{k}\end{math}[/latex]は収束しますか?
フラッシュカードを表示すると次のようになります:
上記の例の式は「テキスト式」と呼ばれ、非数学的テキスト内に直接表示されるためです。対照的に、次の例は「表示式」を示しています:
以下の和は収束しますか?
[latex]\begin{displaymath}\sum_{k = 1}^{\infty}\frac{1}{k}\end{displaymath}[/latex]
「テキスト式」と「表示式」はLaTeX式の最も一般的なタイプであるため、Ankiはそれらの短縮バージョンを提供しています。次の形式の式:
[latex]\begin{math}...\end{math}[/latex]
は次のように短縮できます
[$]...[/$]
そして次の形式の式
[latex]\begin{displaymath}...\end{displaymath}[/latex]
は次のように短縮できます
[$$]...[/$$]
例えば、前に示した2つのLaTeXスニペットは、それぞれ次と同等です
[$]\sum_{k = 1}^{\infty}\frac{1}{k}[/$]は収束しますか?
そして
以下の和は収束しますか?
[$$]\sum_{k = 1}^{\infty}\frac{1}{k}[/$$]
パッケージ
Ankiでは、化学、音楽などのカスタムパッケージをインポートできるように、LaTeXプリアンブルをカスタマイズできます。例えば、インターネットで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でパッケージを使用するには、メインウィンドウで「追加」をクリックし、ノートタイプ選択ボタンをクリックします。「管理」ボタンをクリックし、使用する予定のノートタイプを選択して「オプション」をクリックします。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]
テンプレートの競合
Anki 2.1.20 / AnkiMobile 2.0.56 / AnkiDroid 2.13以降、フィールド内の{{field}}
テキストがもはや問題を引き起こさないため、この回避策は不要になりました。古いバージョンをサポートする必要があり、この構文を使い続けたい場合は、最近のAnkiバージョンは開始以外の場所では認識しないため、{{=<% %>=}}
文字列を表面と裏面のテンプレートの最上部に配置してください。
古いバージョンの場合:
数式を書くときに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は数式モードでスペースを無視するため、方程式は同じようにレンダリングされます)。レンダリングされたテキストに余分なスペースを追加したくない場合(例えば、プログラミング言語を学習するためのクローズカードを作成している場合)、HTMLモードでカードを編集するときにHTMLコメントを使用する別のオプションがあります:
{{c1::[$]\frac{foo}{\frac{bar}{baz}<!-- -->}[/$] blah blah blah.}}
クローズ削除されたテキスト内で::
文字シーケンスを使用する必要がある場合は、どちらの回避策も使用できます。次のノートテキストに対して生成される最初のカードはC++の[type]はタイプセーフなユニオンです
と読まれます:
C++の{{c1::std:<!-- -->:variant::~type~}}は{{c2::タイプセーフなユニオン}}です
安全でないコマンド
Ankiは、\inputや\defなどの特定のコマンドをカードやテンプレートで使用することを禁止しています。これらを許可すると、悪意のある共有デッキがシステムに損害を与える可能性があるためです。(安全のため、これらのコマンドはコメント内でも禁止されているため、このエラーが発生しているが使用したと思わない場合は、ヘッダー、テンプレート、カードにあるコメントを再確認してください。)これらのコマンドを使用する必要がある場合は、システムパッケージに追加し、前のセクションで説明したようにそのパッケージをインポートしてください。