2

Я пытался создать математические карточки в 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 ответ1

4

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

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

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

Помимо этого, однако, то, что вы видите, является результатом \documentclass{article} сочетании с тем, как Anki вызывает 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 на следующую, скорректированную по мере необходимости ¹ в соответствии с вашими потребностями: (обратите внимание, что я избавился от строки по умолчанию \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!

Это повезло , что мы на суперпользователя, а не 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. Удачи.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .