Математика та символи
MathJax
MathJax — це сучасна система верстки для браузерів, корисна для математичних та хімічних рівнянь. Вона не потребує встановлення додаткового програмного забезпечення, тому її легко використовувати, і вона рекомендована для більшості користувачів.
MathJax підтримується з коробки в Anki 2.1+, AnkiMobile та AnkiDroid 2.9+.
Щоб спробувати:
-
Введіть наступне у поле:
\sqrt{x}
-
Виділіть текст, який ви щойно ввели.
-
Натисніть крайню праву кнопку в редакторі та виберіть "MathJax inline" з меню. Anki змінить текст так, щоб він виглядав так:
\(\sqrt{x}\)
-
Якщо натиснути кнопку "Карти…", ви побачите попередній перегляд того, як рівняння виглядатиме під час перегляду картки.
Підтримка MathJax в Anki очікує контент у форматі TeX. Якщо ви не знайомі з форматуванням TeX, перегляньте цей довідник. Зверніть увагу, що пункт 2 не застосовується в Anki — Anki використовує \(
і \)
для вбудованих рівнянь та \[
і \]
для відображуваних рівнянь.
Якщо потрібно використовувати нові рядки у виразі MathJax, будь ласка, використовуйте Shift+Enter замість Enter, оскільки звичайний новий рядок завадить MathJax працювати правильно.
Anki включає вбудовану підтримку mhchem для рендерингу хімічних рівнянь. Будь ласка, перегляньте розділ "хімічні рівняння" та наступні розділи для отримання додаткової інформації: https://mhchem.github.io/MathJax-mhchem/
Можливо налаштувати деякі параметри.
LaTeX
LaTeX — це потужна система верстки, корисна для введення математичних формул, хімічних формул, музичної нотації тощо. Anki надає певну підтримку LaTeX, дозволяючи вводити код LaTeX у ваші нотатки. Під час перегляду картки Anki викликає LaTeX і відображає згенероване зображення.
LaTeX потребує більше налаштувань, і зображення можуть бути згенеровані лише у комп'ютерній версії Anki — хоча після генерації зображення можуть відображатися мобільними клієнтами. Через додаткову складність, яку приносить LaTeX, він рекомендований лише для користувачів, яким потрібні більше можливостей, ніж надає MathJax.
Необхідні знання
Підтримка LaTeX в Anki не є готовим рішенням: передбачається, що ви вже вмієте користуватися LaTeX і що він у вас встановлений. Якщо у вас немає досвіду роботи з LaTeX, будь ласка, зверніться до одного з багатьох посібників, доступних в інтернеті. Якщо у вас виникають проблеми з розміткою, зверніться на форум LaTeX.
Щоб встановити LaTeX, на Windows використовуйте MiKTeX; на macOS — MacTeX, а на Linux — менеджер пакетів вашої дистрибуції. Також необхідно встановити dvipng.
На Windows перейдіть до налаштувань у вікні обслуговування MiKTeX і переконайтеся, що "Install missing packages on the fly" встановлено на "Always", а не на "Ask me first". Якщо проблеми продовжуються, один користувач повідомив, що запуск 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.
Веб/Мобільні клієнти
Під час перегляду картки з LaTeX, Anki згенерує зображення для цього LaTeX і помістить його у папку медіафайлів вашої колекції для подальшого використання. Веб- та мобільні клієнти відображатимуть ці зображення, якщо вони вже існують, але не можуть генерувати зображення самостійно.
Щоб уникнути необхідності переглядати всі ваші картки хоча б один раз перед тим, як ви зможете вивчати їх на інших клієнтах, Anki може згенерувати зображення оптом для вас. Щоб згенерувати всі зображення, перейдіть до Інструменти > Перевірити медіа. Після цього синхронізація повинна завантажити згенеровані медіафайли на AnkiWeb та інші клієнти.
Приклад
Найзагальніший спосіб введення контенту LaTeX — це обгорнути його тегами [latex][/latex]. Є кнопка швидкого доступу для цього, задокументована в розділі редактор.
Теги [latex] повинні використовуватися всередині поля — розміщення їх у шаблоні картки спричинить проблеми.
Наприклад, введення наступного на передній стороні картки Anki:
Does [latex]\begin{math}\sum_{k = 1}^{\infty}\frac{1}{k}\end{math}[/latex] converge?
створить таке зображення під час перегляду картки:
Формула в наведеному вище прикладі називається "текстовою формулою", оскільки вона відображається прямо в нематематичному тексті. На відміну від цього, наступний приклад показує "відображувану формулу":
Чи збігається сума нижче?
[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]
можна скоротити до
[$$]...[/$$]
Наприклад, два наведені вище фрагменти 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%>
Конфлікти Cloze
Cloze-видалення завершуються }}
, що може конфліктувати з }}
, яке з'являється у вашому LaTeX. Щоб запобігти інтерпретації LaTeX як закриття cloze, можна вставити пробіл між будь-якими подвійними закриваючими дужками, які не вказують на кінець cloze, тому
{{c1::[$]\frac{foo}{\frac{bar}{baz}}[/$] blah blah blah.}}
не працюватиме, але
{{c1::[$]\frac{foo}{\frac{bar}{baz} }[/$] blah blah blah.}}
працюватиме (і LaTeX ігнорує пробіли в математичному режимі, тому ваше рівняння відобразиться так само). Якщо ви хочете уникнути додавання зайвого пробілу в відображуваний текст (наприклад, коли ви створюєте картки Cloze для вивчення мов програмування), інший варіант — використовувати HTML-коментар під час редагування картки в режимі HTML:
{{c1::[$]\frac{foo}{\frac{bar}{baz}<!-- -->}[/$] blah blah blah.}}
Можна використовувати будь-який з цих обхідних шляхів, якщо потрібно використовувати послідовність символів ::
у тексті, видаленому Cloze. Перша картка, згенерована для наступного тексту нотатки, виглядатиме так: [type] in C++ is a type-safe union
:
{{c1::std:<!-- -->:variant::~type~}} in C++ is a {{c2::type-safe union}}
Небезпечні команди
Anki забороняє використання певних команд, таких як \input або \def, на картках або в шаблонах, оскільки їх використання може дозволити шкідливим спільним колодам пошкодити вашу систему. (Для безпеки ці команди заборонені навіть у коментарях, тому якщо ви отримуєте цю помилку, але не думаєте, що використовували одну з них, будь ласка, перевірте будь-які коментарі у ваших заголовках, шаблонах і картках.) Якщо вам потрібно використовувати ці команди, додайте їх до системного пакета та імпортуйте цей пакет, як описано в попередньому розділі.