expat_rusde (expat_rusde) wrote,
expat_rusde
expat_rusde

Categories:

Anki 2. Пропуски

Первая часть: ссылка

В предыдущий раз я рассказывала, как подключить уже готовую колоду, как настроить свои собственные карточки, о полезных функциях и о своей колоде В1+ - В2, которую вы можете у меня приобрести за символические 5 евро (или любую другую сумму в качестве пожертвования). В следующий раз расскажу об автоматическом подключении звука. А на этот раз, как давно обещала, о пропусках.



До этого мы разбирали тип карточек "основная + обратная", куда добавили третью сторону с грамматикой. Но в Анки есть еще специальная разновидность карточек с пропущенной информацией, которая называется "Пропуски". Что-нибудь вроде: "Пушкин родился в ... году".
Я использую их для перевода с русского на немецкий. Можно пропустить при желании хоть все предложение.
Дает это многое:
- слово помещено в контекст, а не существует само по себе
- можно тренировать формы и предлоги
- можно тренировать значения, которые при заучивании теряются. Многие глаголы имеют два и больше очень разных значения, каждое из которых в речи используется часто, но при заучивании слова человек ориентируется на первое, а второе часто не учится или забывается.
- можно тренировать идиомы

В отличие от стандартной формы в карточки пропусков я добавила код для печатания слов (стандартная форма предполагает только переворачивание карточки). В прошлой теме мы добавляли такую возможность, но там был короткий код, который в пропусках не работает. Здесь мне пришлось порыться на разных форумах, откуда я раздобыла работающий код. Не спрашивайте меня, что там написано - я просто скопировала его копи-пастом.

Итак, настраиваем Пропуски.

1. На странице, где перечислены колоды, идем в Инструменты/Управление типами записей. Там нажимаем Пропуски. Справа выбираем "Поля". В открывшемся окне нажимаем Добавить и вносим названия полей, которые нам нужны. У меня три поля: одно немецкое, в котором я делаю пропуск, второе - русское, с которого я перевожу, а еще есть третье - оно не участвует в заучивании, но нужно для того, чтобы в обзоре карточки показывались не по первому слову предложения, а по основному заучиваемому слову. Это станет ясно чуть дальше.



Когда мы ввели названия полей, переходим к разделу Карточки (все в том же меню Инструменты /Управление типами записей). Карточка здесь одна и выглядит у меня она так. Обратите внимание, что в коде должно стоять то название поля, которое вы ввели на предыдущем этапе.



Поскольку в скане видно не весь код, копирую:

<div style='font-family: Arial; font-size: 20px;'>{{Vstavka1_rus}}<br><br><br></div>

{{type:cloze:Vstavka_deu}}{{cloze:Vstavka_deu}}

<script type="text/javascript">
var fields = [];
function updateMain()
{
    ///Updates the primary "typeans" textbox with the results of each textbox.
    ///Only used if there are multiple cloze deletions.
    var textbox = document.getElementById("typeans");
    var str = "";
    var previous = "";
    var maxLength = fields.length;
    for (var i = 0; i < maxLength; i++)
    {
        //add the comma beforehand instead of afterwards, this avoids the need to explicitly handle consolidating two consecutive fields with the same value.
        var toAdd = fields[i].value;
        var addComma = (i != 0 && toAdd != previous);
        if(addComma)
        {
            str += ", ";
        }

        if(toAdd == previous)
            continue; //do nothing if the same data is consecutive.
        str += toAdd;
        previous = toAdd;
    }

    textbox.value = str;
    return true;
}
mungeCloze = function()
{
    var textbox = document.getElementById("typeans")
    //clozes are blue elements of: [...] which we want to remove.
    var clozes = document.getElementsByClassName("cloze");

    if(textbox == null || clozes.length == 0)
        return;

    var needsWork = (clozes.length > 1);

    fields = [];
    if(!needsWork)
    {
        var cloze = clozes[0];
        if(cloze != null)
        {
            textbox.removeAttribute("class")

            var container = cloze.parentNode;
            container.insertBefore(textbox, cloze);
            container.removeChild(cloze);
            textbox.style.display = ""; //make visible.
        }

    }
    else
    {
        //Clone the textbox and insert it before the deletions: "[...]".
        var length = clozes.length;
        var originalTextbox = textbox;
        for (var i = 0; i < length; i++)
        {
            var cloze = clozes[i];
            if (cloze == null)
                continue;

            var textboxToReplace = originalTextbox.cloneNode(true);
            textboxToReplace.id = "typeans" + i;
            textboxToReplace.onkeyup = updateMain;

            var container = cloze.parentNode;
            container.insertBefore(textboxToReplace, cloze);
            fields.push(textboxToReplace);
        }
      
        //Once we've handled each cloze, remove it from the list so it will not be modified again.
        while(clozes.length > 0)
        {
            var toRemove = clozes[0];
            toRemove.parentNode.removeChild(toRemove);
        } 

        //We hide the textbox here. If we did this beforehand then .clone() would transfer this to the new textboxes.
        originalTextbox.style.display = "none";
    }
}
mungeCloze();
window.setTimeout(mungeCloze, 1000);
</script>


Это была левая половина окна, верхняя треть.
Вторая треть:

.card
{
    font-family: arial;
    font-size: 20px;
    text-align: center;
    color: black;
    background-color: white;
}

.cloze
{
    font-weight: bold;
    color: blue;
}
#typeans { width: 150px; }
center { display:inline; }
typeGood { background: lightgreen; }
.typeBad { background: pink; }
.typeMissed { background: pink; }



2. Карточки настроены, теперь надо их заполнить. На странице с колодами идем в Обзор и в списке слева выбираем колоду, в которой будут наши карточки. Нажимаем на кнопку наверху + Добавить. Появляется окно Добавить (маленькое окошко на скане).
В открывшемся окошке смотрим, какая колода указана. Если у вас несколько колод и вы в процессе глобального редактирования, то бывает полезно оставить По умолчанию, так как оттуда легче разбросать по другим колодам. Иначе может оказаться, что вы очередной раз забыли поменять название колоды во вкладке Добавить и ваши новые карточки растворились в чужой колоде.
Тип должен быть Пропуски.
В поле Дополнительно я пишу слово, к которому относятся мои примеры (abwesend). Во втором поле - немецкий пример, в третьем - русский перевод. Поле Дополнительно в моем списке полей (то, с чего мы начали настройку) стоит на самом верху, чтобы сортировка автоматически шла по нему.
Не забываем в немецком переводе выделить те слова, которые мы хотим пропустить, и нажать кнопочку с многоточием.



На странице обзора вы видите, как будет выглядеть карточка. Слово выделено красным, так как это уже вторая карточка на это слово - программа предупреждает о повторе.
В этом случае я сделала два пропуска, так как у меня глагол в прошедшем времени и причастие. Обратите внимание, что при указании второго пропуска автоматически ставится цифра с2, что означает, что ваше предложение будет показываться дважды, при этом будут пропущены разные места предложения. Чтобы пропуски показывались одновременно, надо не забыть цифру 2 заменить на 1.

Вот так будет это выглядеть при обучении. Красным выделяются ошибки.



Tags: #typeans, немецкий словарь, немецкий язык
Subscribe

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments