taylormitchell / ankify_roam

A command-line tool which brings flashcards created in Roam to Anki.
MIT License
36 stars 6 forks source link

Sometimes higher level nodes are not ideal for making QA cards #5

Closed CoffeeDrinkRabbit closed 3 years ago

CoffeeDrinkRabbit commented 4 years ago

Regarding Basic cards, the nodes that currently have #ankify added will appear as the question part of the card, and their children will appear as the answer part of the card. In addition to that, the Children’s children will also appear as an answer on the back of the card.

When higher-level nodes are added with #ankify, you end up with the back of the card which is kind of a hard bone to chew on: pic1: https://imgchr.com/i/wqRURH

I understand that there are situations where all the subnodes need to be remembered, but for information that needs to be remembered layer by layer, it would seem more appropriate to just have the lower level subnodes as the back of the card, for example : pic2:https://imgchr.com/i/wqRNJe

taylormitchell commented 4 years ago

Hmm, I hadn't considered this before but now that you mentioned it, some of my cards could benefit from this. I like the idea but I think having this as the default behaviour might be unintuitive for new users.

What do you think of having this as an option that the user can control? Either at the command line --max-depth=1, which would apply to all cards, or on a per-card basis with a tag eg. #[[max-depth=1]]

CoffeeDrinkRabbit commented 4 years ago

It seems like there is value in both, and the efficiency should be different in different situations.

The command line is better for one-off batch processing, and this option is something that should be provided if the layers of notes in roam are organized exactly in a certain pattern, e.g. all #ankify nodes the last two layers should be used as answers, but at the third level it's a question for another card or additional material that you don't want to make a card for. Then in this case just use #ankify as usual and then use --max-depth=2 on the command line, no additional action is needed.

However, if the knowledge structure in roam is rather complex and there is not some sort of unified node relationship, manually entering the tags will ensure the accuracy of the answer range. For example, if a node, as a question, wants its three subsequent levels as an answer, then you can add #[max-depth=3]; and another node, if all his subsequent levels are relevant evidence or argumentative material for that node, then use the default #ankify and use all the children of the node as the answer to the card.

taylormitchell commented 4 years ago

Good points! I agree there's value in both. Adding this to my list of next features to implement

Thanks for the suggestion 👍

mblackwo commented 3 years ago

Thanks for pointing this out, additional question, how can this work for cloze deletion questions? As an example:

2020-10-12_09-58-05

Is there a way to do a cloze deletion and have an answer show up on the next card.

taylormitchell commented 3 years ago

@mblackwo There's no way to do that at the moment. Cloze cards don't include the child blocks, they only include the block with the #ankify tag. I plan to add the ability to do this - maybe in the next release.

taylormitchell commented 3 years ago

Added max-depth with release 0.1.0 (#16) which addresses this issue