Настройка типа карты Cloze — наличие двух карт в одном типе карты

У меня есть две карты в моем типе карт, которые я создал на основе типа удаления закрытия, скопировав его.

Если позиция моей карты 1, то как описано в документации, {{cloze:MyDataField}} работает, как мне нравится. Но если позиция карты двойка, расширение удаления cloze вроде отключено.

На моей карточке на второй позиции мне нужно только отобразить предложение, без тегов {{c1::word1}}, ...., {{cN::wordN}}, а со словами, обернутыми ими.

Может быть, есть способ создать две карты, используя близкий тип в шаблоне моего типа карты? Или, может быть, есть способ получить простой текст моих полей, чтобы я мог разобрать его с помощью JavaScript? Или можно как-то просто отображать содержимое поля, игнорируя {{c1 выражения, но отображая содержимое?


person Jakob Alexander Eichler    schedule 30.10.2016    source источник
comment
Я также хотел бы, чтобы это работало, но, к сожалению, функция fmod_uncloze никогда не вызывается. Даже если бы это сработало, это не помогло бы мне с дроидом Anki, не так ли? Итак... единственный обходной путь - отредактировать и скомпилировать мою собственную версию Anki?? пфф! Я думаю, что мне просто нужно добавить поля, одно с закрытием и одно без. Пух!   -  person chibi    schedule 28.03.2019


Ответы (1)


Для этого можно написать надстройку Anki, если вы знакомы с Python 2. Карты, скомпилированные с помощью Desktop Anki с установленной надстройкой, будут работать на AnkiWeb без отображения тарабарщины. Вот (непроверенное!) дополнение, которое должно регистрировать специальный fmod, который позволяет вам писать {{uncloze:fieldname}}, чтобы получить обычный текст без меток {{cn:: и }}.

import re

from anki.hooks import addHook
from anki.template.template import Template

"""Adds support for the unclose Moustache tag.
Blame wizzwizz4 if this does / doesn't work.
Modified to work for <anki_version> by <your_name>."""

open_cloze_regex = re.compile(r"{{c\d+::")

def fmod_uncloze(txt, extra, context, tag, tag_name):
    field_name = tag_name[8:]  # Strip off "uncloze:"
    field_content = Template("{{" + field_name + "}}", context).render()
    return open_cloze_regex.sub("", field_content).replace("}}", "")

addHook("fmod_uncloze", fmod_uncloze)

Поместите это в файл в каталоге надстроек Anki, затем перезапустите Anki, чтобы установить его.

Большая часть этого кода взята из этого ответа.

person wizzwizz4    schedule 08.10.2017
comment
Очень приятно, я не знал, что надстройки так хорошо интегрированы в Anki. Но у меня проблема, я пытался использовать это в Anki 2.1, поместив его в отдельную папку и скопировав код в init.py. Он отображается в моих надстройках, но когда я пишу {{uncloze:Fieldname}} и пробую его, закрытие просто полностью исчезает. Карточка с I am {{c1::clozed}} становится I am на обзоре с обратной стороной I am . Я неправильно понимаю ожидаемое поведение здесь, я сделал что-то не так или что-то критично изменилось в Anki 2.1? - person Yannick; 09.01.2018
comment
@ Янник, я мог просто сделать это неправильно. На самом деле, теперь, когда я об этом подумал... я думаю, что заново изобрел колесо. Я просто отредактирую... - person wizzwizz4; 09.01.2018
comment
Я не могу получить префикс text: для работы с cloze. Но это, наверное, проблема только у меня. На самом деле я просматривал этот ответ, чтобы получить представление о том, как самому написать определенное дополнение, чтобы вмешиваться в закрытые карты (это вполне может стать вопросом в ближайшем будущем). Есть ли какая-либо обширная документация по всем функциональным возможностям дополнений, которые вы используете для написания дополнений здесь, или вы просто просматриваете исходный код (извините, что не по теме). - person Yannick; 09.01.2018
comment
Это не сработало, потому что предполагалось, что text удаляется, а не закрывается. :-/ Я думаю, что стратегия такова: 1. Проверить переполнение стека (тег anki). 2. Задайте вопрос о переполнении стека. 3. Пингуйте меня в чате (необязательно). 4. Проверьте исходный код. 5. ‹del›Электронная почта‹/del› Разместите сообщение на сайте поддержки Anki. - person wizzwizz4; 09.01.2018
comment
@Yannick Попробуйте сейчас. - person wizzwizz4; 27.01.2018
comment
Все еще не удается заставить его работать, возможно, просто добавив простой вариант использования, поскольку вы говорите, что работаете с Python 2 (хотя это действительный код Python 3), возможно, это больше не работает в Anki 2.1? У меня больше нет 2.0 на моей машине. Или, может быть, добавить список действий, которые необходимо выполнить для проверки использования (1. создать карту типа x, 2. заменить {{Front}} на {{uncloze:Front}} и т. д.). Я чувствую, что на данный момент это проблема с моей настройкой, извините за это. - person Yannick; 28.01.2018
comment
@Yannick Это дополнение 2.0, а не дополнение 2.1. Я не знаю, как использовать 2.1, так как мне никогда не удавалось установить его. Я бы с удовольствием использовал его, хотя бы для Python 3. - person wizzwizz4; 20.06.2018