为了备考某个需要默写的科目,做了个问答题笔记模板,如下:
在上图的回答栏填写答案后,点击显示答案按钮转到背面:
只实现上面的功能是很简单的,直接基于Anki
自带的问答题模板添加自己需要的字段即可。问题是在学习的初期阶段,答案基本上很难写对,所以想在正面直接阅读正确答案,在比较熟悉后再开始回答。这就需要让这个问答题模板支持“阅读”和“答题”两种模式,而且最好在笔记页面提供随时切换的功能。
一顿操作猛如虎,对模板做了一番修改后,终于支持了阅读模式和答题模式的切换。其中的持久化模块依然用的Simon Lammer
的anki-persistence
脚本,该脚本可以兼容Windows
、Linux
、macOS
、安卓、iOS
等常见平台,实现在Anki
牌组卡片之间持久化保存信息,该项目发布于github
,可以在github
搜索该项目以保持版本的更新。修改后的笔记功能如以下图片所示:
改造后的笔记正面、背面模板和样式文件附后。其中样式文件包含了很多自带模板中的信息,我并未清理,只是添加了一些自己需要的内容。有一点需要说明的是,下面的代码:
<div class="h1 yleft";align=left>{
{FrontSide:type:答案}}</div>
会在笔记背面显示出用户在正面输入的答案以及笔记中保存的正确答案,通过css
选择器code#typeans::before
可以将用户在正面输入的答案前面加上“你输入的答案”作为提示,但是花了一段时间查阅文档,没有找到如何选择笔记保存的正确答案的css
选择器,希望高手指导。
正面模板:
<script>
// v1.1.8 - https://github.com/SimonLammer/anki-persistence/blob/584396fea9dea0921011671a47a0fdda19265e62/script.js
if(void 0===window.Persistence){
var e="github.com/SimonLammer/anki-persistence/",t="_default";if(window.Persistence_sessionStorage=function(){
var i=!1;try{
"object"==typeof window.sessionStorage&&(i=!0,this.clear=function(){
for(var t=0;t<sessionStorage.length;t++){
var i=sessionStorage.key(t);0==i.indexOf(e)&&(sessionStorage.removeItem(i),t--)}},this.setItem=function(i,n){
void 0==n&&(n=i,i=t),sessionStorage.setItem(e+i,JSON.stringify(n))},this.getItem=function(i){
return void 0==i&&(i=t),JSON.parse(sessionStorage.getItem(e+i))},this.removeItem=function(i){
void 0==i&&(i=t),sessionStorage.removeItem(e+i)},this.getAllKeys=function(){
for(var t=[],i=Object.keys(sessionStorage),n=0;n<i.length;n++){
var s=i[n];0==s.indexOf(e)&&t.push(s.substring(e.length,s.length))}return t.sort()})}catch(n){
}this.isAvailable=function(){
return i}},window.Persistence_windowKey=function(i){
var n=window[i],s=!1;"object"==typeof n&&(s=!0,this.clear=function(){
n[e]={
}},this.setItem=function(i,s){
void 0==s&&(s=i,i=t),n[e][i]=s},this.getItem=function(i){
return void 0==i&&(i=t),void 0==n[e][i]?null:n[e][i]},this.removeItem=function(i){
void 0==i&&(i=t),delete n[e][i]},this.getAllKeys=function(){
return Object.keys(n[e])},void 0==n[e]&&this.clear()),this.isAvailable=function(){
return s}},window.Persistence=new Persistence_sessionStorage,Persistence.isAvailable()||(window.Persistence=new Persistence_windowKey("py")),!Persistence.isAvailable()){
var i=window.location.toString()