LaTeX отображает математическое выравнивание в Anki

Я пытался создать математические карточки в Anki. Естественно, я хотел, чтобы LaTeX была системой набора текста по умолчанию для этих карт. Для этого я создал новый базовый тип заметки с именем basic math. Вот мой заголовок параметров:

\documentclass[10pt]{article}
\usepackage[paperwidth=5in, paperheight=100in]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{amssymb,amsmath,amsfonts,mathrsfs,color}
\pagestyle{empty}
\setlength{\parindent}{0in}
\newcommand{\C}{\mathbb{C}}
\newcommand{\N}{\mathbb{N}}
\newcommand{\Q}{\mathbb{Q}}
\newcommand{\R}{\mathbb{R}}
\newcommand{\Z}{\mathbb{Z}}
\renewcommand{\Re}{\operatorname{Re}}
\renewcommand{\Im}{\operatorname{Im}}
\begin{document}

Тип моей карты (на французском):

[Латекс]{{Ректо}}[/ латекс]

Тип моей карты обратно (на французском):

{{FrontSide}}

<hr id=answer>
<br />

[latex]{{Verso}}[/latex]

И наконец, вот стиль моей карты:

.card {
font-family: arial;
font-size: 10px;
text-align: center;
color: black;
background-color: white;
}
img {
width: auto;
height: auto;
max-height:1000px;
}

Вот передняя сторона карты (на французском):

Vrai ou faux ?
\[
z-\overline{z}=2\Im z
\]

и его спина:

Faux. En général,
\[
z-\overline{z}=2{\color{red}i}\Im z
\]

Увы, вот рендеринг:

Очевидно, что-то странное с выравниванием отображения математики. Если я поменяю оборотную сторону карты для этого:

Faux. En général, bla bla bla bla bla bla bla bla bla bla bla
\[
z-\overline{z}=2{\color{red}i}\Im z
\] 

тогда уравнение будет правильно отцентрировано (как обычно должно быть по умолчанию с LaTeX):

Итак, мой вопрос: как получить правильное выравнивание по центру, как в математической среде Anki [$$][/$$]?

1 ответ

Решение

Во-первых, вы не можете делать то, что вы пытаетесь сделать с [latex]{{Recto}}[/latex], Я отсылаю вас к руководству:

Медиа ссылки на поля не допускаются. Они могут отображаться или не отображаться во время просмотра и не будут работать при проверке неиспользуемых носителей, импорте / экспорте и т. Д. Примеры, которые не будут работать:

[latex]{{Field 1}}[/latex]

Кроме того, однако, что вы видите, является результатом \documentclass{article} в сочетании с тем, как Анки вызывает dvipng обрезать полученное изображение. (Кроме того, какого черта у вас это установлено 100in?)

Давайте посмотрим, что происходит за кулисами, когда Anki генерирует изображение из LaTeX:

  1. latex (не pdflatex! старая школа, если вы не меняете вручную anki.latex.latexCmds с надстройкой.), чтобы сгенерировать файл DVI из каскадного ввода LaTeX:

    latex -interaction=nonstopmode tmp.tex
    
  2. dvipng вызывается для результата, чтобы преобразовать его в PNG, который может быть включен в вашу колоду Anki, и в процессе вырезает большую часть пробела:

    dvipng -D 400 -T tight tmp.dvi -o tmp.png
    

Хорошо, давайте посмотрим на это в действии на вашем "рабочем" примере, за исключением сверхвысоких 100in инструкция (нажмите на изображение, чтобы увидеть его в полном размере):

Внизу слева - ваш каскадный код LaTeX; вверху справа - документ, сгенерированный LaTeX; а справа внизу - окончательное обрезанное изображение.

Все идет нормально. Давайте попробуем ваш оригинальный код:

Ahhah! Вы видите, что там происходит?

Ваше уравнение центрировано с точки зрения LaTeX, то есть с точки зрения 5in -широкий {article}, что вы сказали здесь, чтобы генерировать; это обрезка, которая делает его похожим на центр. (Или, с другой точки зрения, мы могли бы сказать, что уравнение центрировано, и текст плохо оплачивается - он смещен далеко налево, в вашем документе.)


Ладно, хватит "почему". К сожалению, насколько я знаю, эту проблему нелегко решить, и все же получаю то, что ожидает Анки.

Тем не менее, один подход, который будет работать на вашем конкретном примере, - это переключиться со стандартного \documentclass{article}, чтобы \documentclass{standalone} - пакет с функцией, специально разработанной для того, чтобы делать то, что мы хотим, здесь (настройте макет - например, такие как центрирование - в LaTeX, чтобы набирать вещи до их наименьшего размера.)

В частности, давайте попробуем crop а также varwidth опции. Измените вашу прелюдию LaTeX в Anki на следующую, настроенную по мере необходимости ¹ в соответствии с вашими потребностями: (обратите внимание, что я избавился от настроек Anki по умолчанию \special{papersize=3in,5in} линия, так как она больше не актуальна)

\documentclass[crop=true,varwidth=true]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{amssymb,amsmath}
\pagestyle{empty}
\setlength{\parindent}{0in}
\begin{document}

Тада!

Теперь давайте поговорим о предостережениях, прежде чем я уйду в закат SRS:

  1. Это может вызвать некоторые ошибки компиляции. Не спрашивайте меня, почему - я думаю, standalone Пакету не нравится то, что мы делаем с ним (он создан для генерации своих собственных изображений? Хотя я не уверен в специфике.) Это не должно испортить генерацию изображений Anki, хотя они могут отображаться в предварительном просмотре. окно для вас, я не уверен? YMMV.

  2. varwidth среда имеет... много предостережений. Куча вещей не работает в них. Я не знаю всех деталей - вам придется пройтись по TeX.se, чтобы найти ответы от людей, более знающих, чем я, скорее всего, при его использовании.

Из-за этого я хочу рассмотреть одну последнюю альтернативу:

Во -первых, не набирайте всю свою карту в LaTeX!

К счастью, мы находимся в SuperUser, а не в TeX.se - я уверен, что там самое высшее богохульство, но, честно говоря, Computer Modern все равно уродлив на экранах (в любом случае он предназначен для печати, и это здорово… но не очень) так много на экранах, где мы используем Anki); и, что более важно, Anki, вероятно, перейдет в MathJax в будущем (то есть, будет более последовательный рендеринг в карточке, в отличие от использования таких хакерских предварительно скомпилированных PNG). Это более перспективно, чтобы полагаться на встроенную сеть Anki. движок (HTML, CSS, JavaScript) для стилизации и набора текста, а не для отправки всего этого в LaTeX! На данном этапе рендеринг уравнений в PNG с использованием LaTeX является эффективной мерой удержания.

В принципе, этого можно избежать, если вы просто наберете свою карту в HTML. Вместо:

[latex]
Faux. En général,
\[
z-\overline{z}=2{\color{red}i}\Im z
\]
[/latex]

… пытаться:

Faux. En général,
[$$]z-\overline{z}=2{\color{red}i}\Im z[/$$]

Boom; текст центрируется по уравнению. Какой шедевр! (Мои настройки немного отличаются от ваших; ваши настройки не будут такими большими и т. Д.)


  1. Я понятия не имею, как сделать {geometry} пакет, с которым вы работаете {standalone}, Я на самом деле не эксперт, я только что случайно столкнулся с этой конкретной проблемой - для того, чтобы она работала с вашими конкретными потребностями, возможно, потребуется спор с самим LaTeX, в отличие от Anki. Удачи.
Другие вопросы по тегам