Математика и символы
MathJax
MathJax — это современная система вёрстки на основе браузера, полезная для математических и химических уравнений. Она не требует установки какого-либо дополнительного программного обеспечения, поэтому её легко использовать, и она рекомендуется большинству пользователей.
MathJax поддерживается «из коробки» в Anki 2.1+, AnkiMobile и AnkiDroid 2.9+.
Чтобы попробовать:
-
Введите в поле:
\sqrt{x} -
Выделите только что введённый текст.
-
Нажмите на самую правую кнопку в редакторе (если нет дополнений, а так это кнопка «fx-Уравнения») и вам будет показано выпадающее меню, где надо выбрать пункт «MathJax в строке». Anki изменит текст (в текущей версии:
<anki-mathjax>\sqrt{x}</anki-mathjax>, но показывается сразу корень) следующим образом:\(\sqrt{x}\) -
Нажмите кнопку «Карточки...» (можно и кнопку «Просмотреть»). Вы увидите предварительный просмотр того, как уравнение будет выглядеть при повторении карточки.
$$ \sqrt{x} $$ Поддержка MathJax в Anki ожидает содержимое в формате TeX. Если вы не знакомы с форматированием TeX, пожалуйста, ознакомьтесь с этой шпаргалкой. Обратите внимание, что пункт 1 не применяется в Anki — Anki использует
\(и\)для встроенных уравнений (в тексте) и\[и\]для вынесенных уравнений (тут: с выключкой или выравнивание по центру на отдельной строке). (В текущей версии:\(и\)автоматически заменятся на<anki-mathjax>и</anki-mathjax>, а вынесенное на отдельной строке будет:<anki-mathjax block="true">и</anki-mathjax>. Cейчас пользователю сразу показывается формула и если кликнуть по ней, то будет отображено меню из 3 пунктов: «MathJax в строке», «MathJax с выключкой», «Удалить»)
Если вы хотите использовать переносы строк в выражении MathJax, пожалуйста, используйте Shift+Enter вместо просто Enter, так как обычный перенос строки помешает MathJax работать корректно. (В текущей версии не наблюдается это).
Anki включает встроенную поддержку MathJax-mhchem для отображения химических уравнений. Простой пример: введите в поле текст «H2O» и выделите его; нажмите кнопку «fx» и активируйте пункт меню «"MathJax для химии"». Вы увидете формулу воды, а скрытый текст в редакторе HTML будет такой: <anki-mathjax>\ce{H2O}</anki-mathjax>. Для получения дополнительной информации смотрите раздел «Chemical Equations» на странице https://mhchem.github.io/MathJax-mhchem/.
Настройка MathJax
Поддержка 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 используется специальная логика для заполнения пропусков (cloze deletions), которая может не работать, если вы измените стандартные разделители для уравнений MathJax.
LaTeX
LaTeX — это мощная система вёрстки, полезная для ввода математических формул, химических формул, нотной записи и так далее. Anki обеспечивает некоторую поддержку LaTeX, позволяя вводить код LaTeX в ваших записях. Когда вы повторяете карточку, Anki вызовет LaTeX и отобразит сгенерированное изображение вместо кода.
LaTeX требует больше усилий для настройки, и изображения могут быть сгенерированы только с помощью компьютерной версии Anki — хотя после генерации изображения могут отображаться мобильными клиентами. Из-за дополнительной сложности, которую вносит LaTeX, он рекомендуется только для пользователей, которым требуется больше возможностей, чем предоставляет MathJax.
Предупреждение безопасности
Код LaTeX может содержать вредоносные команды, которые могут читать или записывать данные, не относящиеся к Anki, на вашем компьютере. По этой причине последние версии Anki по умолчанию отказываются генерировать изображения LaTeX.
Если вы хотите использовать LaTeX на своих карточках, вам необходимо включить опцию «Создание изображений LaTeX (риск безопасности)» на экране настроек (в меню: «Инструменты > Настройки > Учёба»).
Мы настоятельно рекомендуем не включать эту опцию, если вы используете общие колоды или думаете, что будете импортировать общие колоды в будущем, так как вы потенциально даёте любому автору общей колоды доступ к вашему компьютеру..
Вам не нужно включать эту опцию для общих колод. Если автор общей колоды корректно сгенерировал все изображения до того, как поделился колодой, изображения уже должны быть доступны
Предполагаемые знания
Поддержка LaTeX в Anki не является готовым решением: предполагается, что вы уже знаете, как использовать LaTeX, и что он у вас установлен. Если у вас нет опыта работы с LaTeX, обратитесь к одному из многочисленных руководств, доступных в интернете. Если у вас возникли проблемы с разметкой, пожалуйста, спросите на форуме LaTeX.
Для установки LaTeX на Windows используйте MiKTeX; на macOS используйте MacTeX, а в Linux используйте менеджер пакетов вашего дистрибутива. Dvipng также должен быть установлен.
В Windows зайдите в Settings (Настройки) в окне обслуживания 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
Команда может отсутствовать в переменной PATH, поэтому вам может потребоваться указать полный путь, например, /usr/local/texlive/2014basic/bin/x86_64-darwin/tlmgr.
Если вы не используете указанные выше пакеты LaTeX, вам нужно будет использовать дополнение edit LaTeX, чтобы указать полный путь к latex и dvipng.
Веб-версия/Мобильные устройства
Когда вы повторяете карточку с LaTeX, Anki сгенерирует для этого LaTeX изображение и поместит его в папку медиафайлов вашей коллекции для будущего использования. Веб- и мобильные клиенты будут отображать эти изображения, если они уже существуют, но не могут генерировать изображения самостоятельно.
Чтобы избежать необходимости повторять все ваши карточки хотя бы один раз перед изучением на других клиентах, Anki может генерировать изображения для вас оптом. Чтобы сгенерировать все изображения, перейдите в «Инструменты > Проверить медиафайлы». После этого синхронизация должна загрузить сгенерированные медиафайлы на AnkiWeb и другие клиенты.
Пример
Наиболее распространенный способ ввода контента LaTeX — это заключение его в теги [latex][/latex]. Для этого есть соответствующая кнопка «fx», описанная в разделе Добавление/Редактирование.
Теги [latex] необходимо использовать внутри поля — размещение их в шаблоне карточки вызовет проблемы .
Например, ввод следующего на лицевой стороне карточки Anki:
Does [latex]\begin{math}\sum_{k = 1}^{\infty}\frac{1}{k}\end{math}[/latex] converge?
даст следующий результат при просмотре карточки:

Формула в приведённом выше примере называется «текстовой формулой», потому что она отображается прямо внутри нематематического текста. В отличие от этого, следующий пример показывает «отображаемую формулу»:
Does the sum below 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 эквивалентны
Does [$]\sum_{k = 1}^{\infty}\frac{1}{k}[/$] converge?
и
Does the sum below converge?
[$$]\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, нажмите «Добавить» (Add) в главном окне, затем нажмите кнопку выбора типа записи. Нажмите кнопку «Править», затем выберите тип записи, который вы планируете использовать, и нажмите «Настройки». Отображаются заголовок и нижний колонтитул 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)
Пропуска завершаются }}, что может конфликтовать с }}, появляющимся в вашем 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.}}
Вы можете использовать любое из этих обходных решений, если вам нужно использовать последовательность символов :: внутри текста с пропусками. Первая сгенерированная карточка для следующего текста записи будет читаться как [type] in C++ is a type-safe union:
{{c1::std:<!-- -->:variant::~type~}} in C++ is a {{c2::type-safe union}}
Небезопасные команды
Anki запрещает использование определённых команд, таких как \input или \def, на карточках или в шаблонах, потому что их разрешение может позволить вредоносным общим колодам повредить вашу систему. (Для безопасности эти команды запрещены даже в комментариях, поэтому, если вы получаете эту ошибку, но думаете, что не использовали их, перепроверьте любые комментарии в ваших заголовках, шаблонах и карточках.) Если вам нужно использовать эти команды, пожалуйста, добавьте их в системный пакет и импортируйте этот пакет, как описано в предыдущем разделе.