0%

参考资料

  1. Emoji Code Sheet:Emoji Cheat Sheet
  2. VScode 插件:Markdown Emoji
  3. Obsidian 插件:Emoji shortcodes(自带补全提示)
  4. Complete list of github markdown emojis

常用 Emoji

只是,同样的 Markdown Emoji 符号,在不同的地方显示可能不同,比如 VScode 和 Obsidian,更别说其他浏览器里

  • 😄:smile
  • 😭:sob
  • 😂:joy
  • 😁:grin
  • 😉:wink
  • 😳:flushed
  • 👍:+1
  • 😅:sweat_smile

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
hexo new "My New Post"

More info: Writing

Run server

1
hexo server

More info: Server

Generate static files

1
hexo generate

More info: Generating

Deploy to remote sites

1
hexo deploy

More info: Deployment

速览

framed – Framed or shaded regions that can break across pages

该宏包提供可三个环境:

  • frame:which puts an ordinary frame box around the region
  • shaded:which shades the region
  • leftbar:which places a line at the left side.

还提供了一个命令来自定义设置 framed-style 的环境

案例分析

1
2
3
4
5
6
7
8
9
10
11
12
\documentclass{ctexart}
\usepackage{zhlipsum}
\usepackage{geometry}
\usepackage{framed}
\geometry{a4paper,left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm}
\begin{document}
\begin{framed}
\zhlipsum[1-5]
\end{framed}
\clearpage
\fbox{\zhlipsum[1-3]}
\end{document}

代码分析

设置页边距,ctexart 文档类默认的页边距有些宽,习惯使用如下的页边距

1
2
\usepackage{geometry} 
\geometry{a4paper,left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm}

使用中文假文

1
2
\usepackage{zhlipsum} %中文假文宏包
\zhlipsum[1-5] %从假文文章中抽取第一段到第五段内容

frame 环境和 fbox 命令

两者均可以为文本内容添加外边框,但是当文本内容超过一行之后,使用 fbox 就会出现问题了,无法正确的换行和分页,导致超出该行的部分无法在 PDF 中显示。如下图所示
因此,针对此问题,宏包作者开发了 framed 宏包,两者的关系不言而喻,framed 宏包是基于 fbox 进行开发的。

framed 环境输出

  1. 正常换行

01-frame宏包正常换行.png

  1. 正常分页

02-frame宏包正常分页.png

fbox 命令输出

  1. 无法正确换行

03-fbox命令无法处理长文本-无法正常换行和分页.png

实际上,framebox 命令输出也是这种效果,这里暂且认为 framebox 命令和 fbox 命令完全相同

对应的,fbox 可以设置边框边线的宽度和内容距边框的间距,framed 环境同样是可以设置的

设置边框宽度和间距

对 fbox 盒子进行设置

1
2
3
4
\fbox{Test box}
\setlength{\fboxrule}{1.6pt}
\setlength{\fboxsep}{1em}
\fbox{Test box}

06-设置fbox边框和间距.png

对 frame 盒子进行设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
\documentclass{ctexart}
\usepackage{zhlipsum}
\usepackage{geometry}
\usepackage{framed}
\geometry{a4paper,left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm}
\begin{document}

\begin{framed}
\zhlipsum[1]
\end{framed}
\setlength\FrameRule{1.6pt}
\setlength\FrameSep{2em}
\begin{framed}
\zhlipsum[1]
\end{framed}

\end{document}

07-默认frame盒子和自定义frame盒子.png

拓展应用

换页是否封闭外边框

  • framed 环境默认是封闭的
  • oframed 环境则提供了开口的外边框:oframed 其实是 “Open Framed” 的组合吧

04-oframed环境.png

左边线样式

我想许多人使用这个宏包就是为了实现网页中的 引用 效果吧 o (^▽^) o,左边线的长度会自动随着环境中的文本长度进行变化

1
2
3
4
5
6
7
8
9
10
\documentclass{ctexart}
\usepackage{zhlipsum}
\usepackage{geometry}
\usepackage{framed}
\geometry{a4paper,left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm}
\begin{document}
\begin{leftbar}
\zhlipsum[1]
\end{leftbar}
\end{document}

05-leftbar环境.png

其他参数

除了上面所说的 FrameSepFrameRule 命令,宏包手册中还列举了大量其他命令,这里就不仔细研究了,感觉用不到这里面太多的东西,但是还是感谢开发者啦 o (^▽^) o

08-framed宏包命令.png

参考资料

前言

侄子这几天在背单词,但是打开了初中英语词汇的书,看了好几天了,还是只翻了前面几页。背,或者说 “读” 单词书有什么意思,期间没有足够的反馈,看着单词似乎认识又似乎不认识。我们又何尝不是这样过来的人呢,也都知道拿着词汇书记单词的枯燥,换做谁都不愿意以这种方式来记单词。
哥哥给侄子买了本词汇书和一本阅读理解的作业书,甩给他了,可是却不知道他,作为初二学生,连 face, said, more 这类的基础词汇都不认识,还指望他自己背词汇书和做题吗,明显方法上是有错误的。所以,打算让侄子试一下使用 Anki 来背单词,或者更准确的来说是 “记单词”,而不是 “背单词”,其实我的目标很简单,只是 “记”,对单词和释义留有一个印象即可,真正想要记牢单词,还需要在实战写作业查单词的过程中去记住这个单词。

Anki 是什么

这里只要知道 Anki 是一款电子抽认卡类型的软件就可以了,抽认卡即正面是问题,反面是答案,就那么简单。要我说 Anki 和墨墨背单词、百词斩这些软件的区别,一是 Anki 除了可以用来记单词,什么都可以记,因为抽认卡是我们自己创建的,二是 Anki 自动分配学习任务背后的那一套算法比市场上的软件要好,三是 Anki 高度的可自定义(包括抽认卡的模板、CSS 样式等)… 更多的我就不再深入了,对于入门的新手来说,第一点和第二点足够了

为什么 Anki

使用 Anki 有那么几个好处:

  1. 词汇资源丰富。Ankiweb 上就有现成的初中英语词汇卡包,对于这种公共科目,直接下载使用,基本上无需花时间来自制抽认卡
  2. 充分及时的反馈。对于一个单词,先出来的是单词,而后再根据自己的判断来决定对这个单词的熟悉程度。不像纸质书一样,词汇和释义一眼扫过去,好像这个释义本身就对应着这个单词,好像这个单词本来就会,但其实这都是假象,并且缺少及时反馈,会与不会,最终结果都是只停留于看书,结果当然是越看越无趣,越看越想睡。Anki 这类抽认卡则开始只出现单词,自己心里做完判断会不会之后再显示答案,再对这张抽认卡做出反馈。单词到主动回忆释义的过程 总比 直接同时看着单词和释义的过程 记忆效果更好。了解更多:请搜索 主动回忆
  3. 电子资源有标准发音。图片什么的先不说,我个人认为图片对记忆词汇的帮助并不大,但是词汇的发音就不一样了,听多了,就算不知道这个单词的意思,但起码看到这个单词就会读了
  4. 考核方便。电子的抽认卡通过某些条件进行筛选,可以轻松的从已学习的抽认卡中抽选出不同难易程度的卡片(筛选是可以根据当时答题的反馈结果对个人进行针对性的过滤的)。而相对于词汇书,想要考核,又需要有人通过默写的手段来进行检查,这种手段真的是低效的,对于进行检查的人来说,需要一个单词一个单词的读词汇,等着默写的人一个一个的写完,而对于默写的人来说,这无疑是童年噩梦。默写完了还需要进行批改,批改完了又如何,错了的词汇进行抄写?了解更多: Anki 之筛选记忆库高级篇
  5. 自动分配任务。对于词汇书,昨天记的单词今天还要在过一遍吗?是全部过一遍吗还是挑几个过一遍?全部过一遍太耗时间了,难道前天,大前天记的单词也需要再重新过一遍?这些问题对于 Anki 来说就不是问题。Anki 只需要你设置每天需要背诵多少个新增词汇就够了,至于前几天背诵的词汇,单词再次出现(也就是你今天需要完成的任务)都是根据当时候你的反馈进行安排的。这样,你可以完全复习到前几天遇到不是很熟悉的单词,当然并不受说简单的词汇不会再出现,而是简单的词汇相对于这些不熟悉的词汇,出现的间隔时间较长一些,频率较低一些。而且,重要的一点是,Anki 会根据你每次的答题反馈对这个间隔时间和出现频率进行调整,你也不必要纠结这个词汇我到底是会还是不会的问题了,不会又怎么了,大不了我让这个单词多出现几次嘛。所以可以做到:只要信任 Anki 的任务分配,那么之后就不用考虑该如何复习之前学过的内容了,打开软件直接开始学就完了。其实,这里所说的自动分配任务,其后是有着一套完整的算法的,这里不具体展开说,有兴趣的可以自行搜索 spaced-repetition-algorithmSupermemo 等内容

一些背单词的原则

  1. 准确率。接着上方的第 4 点说,单词就算默写正确,又能代表你真正记住了这个单词了吗,就算拼写错误,也不见得如何呀,最多是这个单词中有几个字母和发音什么的确实不太好区分或者其他。再说,其实默写单词这种方式,短期记忆的影响特别大,因为知道等会就要默写这几个单词了,注意力当然可以快速集中到容易出错的单词身上,可仔细想一想,考试或者说默写这个环节一旦过了之后,这些短期记忆就会被迅速清空,所以说默写环节记得的那几个单词也并不意味着你之后几天还能准确的默的出来。我想说的是,不要太关注 100% 的准确率(这里的准确率是抽人的准确率,而不是默写的准确率),达到 80-90% 就足够了,每天所记的单词数量可以适当调高,错就错了,不会就不会,又怎么了,大不了通过抽认卡点一下 “重来”、“困难” 这两个按钮嘛,十分钟之内又会再次出现。每天 100 个新单词、准确率达到 80-90% 可能要比每天 30 个准确率达到 100% 要容易的多
  2. 不要尝试在连续的时间段内重复的记那么几个单词,而是要将记每个单词的时间分配在多个不连续的时间段中。意思就相当于在连续时间段中背诵一串单词,和在不同时间段中背诵一串单词的效果是完全不一样的(当然这里假设两者所花的总时间相同),这点可能大家也深有体会,配合着 Anki 的自动分配任务,这一点完全由程序自动完成,而不需我们考虑

使用效果

待更新…

2022-08-05 更新

侄子使用 Anki 来背单词,效果还是有的,到目前为止,他自己说课本上每页基本上单词认识一半左右了(他背了哪些单词,知道那些单词,我似乎比他更清楚,原因可见下)。当然,使用 Anki 的过程中,也发现了一些问题,这里记录一下

A. 牌组不是我自己所制作的,并没有按照单词的难易程度(或单词的出现频率)划分子牌组,导致一开始就会出现一些难度非常大的单词,这对于单词零基础的侄子来说是一件难事,我需要手动将这些频率出现较低的单词先暂停学习,怕到时候花了那么长时间背的单词,做题的过程中竟然一个也不出现,那不就极大降低背单词的兴趣了,背这种低频词汇实际上是吃力不讨好的事。

针对这一点,可以采取如下策略,但都需要我来手动调整:

  1. 将下载到的大牌组按照词汇出现的频率划分成多个子牌组,从易到难的学。
  2. 不用划分子牌组,在学习新单词的时候做好标记,比如重点词汇使用红色旗帜,常规词汇使用绿色旗帜,暂停掉太难而又不常见的词汇。做好旗帜一是可以方便后期做筛选,二是侄子可判断这个单词的重要程度,但是需要在他背新单词时我在旁边看着,一个个的过滤的这些单词,这也正是我所采用的方式。
  3. 自己创建卡包,针对他们英语暑假作业上的单词进行有针对性的练习,或先让他手动将不会的词汇做标记,然后再根据这些标记的单词做卡片。

B. 我需要腾出一台设备给侄子背单词,要么手机,要么电脑,反正是需要腾出一台设备让他学,自己有时还需要到旁边守着,以防他学着学着就刷其他东西去了。

C. 短期时间记忆大量词汇容易导致词汇意思和词汇对不上号,经常记混。但这是正常的,换做谁都会这样。

了解更多

前言

有关 ublacklist 的内容可参考本博客之前的文章:屏蔽内容农场简明指南

ublacklist 订阅源

1
2
3
4
5
https://raw.githubusercontent.com/cobaltdisco/Google-Chinese-Results-Blocklist/master/uBlacklist_subscription.txt 
https://raw.githubusercontent.com/arosh/ublacklist-github-translation/master/uBlacklist.txt
https://raw.githubusercontent.com/dallaslu/penzai-list/main/uBlacklist.txt
https://raw.githubusercontent.com/liubiantao/uBlacklist-Websites/master/uBlacklist.txt
https://raw.githubusercontent.com/arosh/ublacklist-stackoverflow-translation/master/uBlacklist.txt

插件设置

  • 添加订阅源

01-添加订阅源.png

  • 屏蔽列表多端同步

02-屏蔽列表多端同步.png

推荐阅读

参考资料

功能说明

  1. 使用 COM 物件 Word.Application,将 DOCX 档转换为 PDF 格式
  2. 整批转换资料夹里的所有 DOCX 档
  3. 使用 ExportAsFixedFormat 方法

程序源代码请参见:https://gist.github.com/emisjerry/5f936143f1086cc4b0eb100e891dbed3

我们要做的修改只要将第三行的存放 docx 的文件夹路径设定一下就好,注意只能对 docx 进行转换,无法转换 doc 文档

通过与 docx 自带的 PDF 转换比较了一下,生成的 PDF 大小一模一样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
;; 将DOCX批量转换为PDF

sFolder := "Z:\DOC"
sOutputExt := ".pdf"

Loop %sFolder%\*.docx {
sInputFilename = %A_LoopFileName%
;MsgBox filename=%sPdfFileName%
iPos := InStr(sInputFilename, "~")
if (iPos = 1) {
Continue
}
Docx2Pdf(sFolder . "\" . sInputFilename, sOutputExt)
}

Docx2Pdf(sInputFilename, sOutputExt) {
WD := ComObjCreate("Word.Application") ; Create Word object
WD.Documents.Open(sInputFilename) ;open this file
WD.visible:=0 ;make visible for this example. Normally set to zero
iFormat := 17
sOutputFilename := StrReplace(sInputFilename, ".docx", ".pdf")
;MsgBox fn=%sOutputFilename%, ext=%sOutputExt%, format=%iFormat%
;;WdSaveFormat https://docs.microsoft.com/zh-tw/office/vba/api/word.wdsaveformat

OpenAfterExport := True
OptimizeFor := False
Range := 0
From := 1
To := False
/*
Item:= 0
IncludeDocProps := False
KeepIRM := True
reateBookmarks := wdExportCreateHeadingBookmarks := 1
ocStructureTags := False
BitmapMissingFonts := True
UseISO19005_1 := False
*/

;; WD.ActiveDocument.ExportAsFixedFormat(sOutputFilename, 17, OpenAfterExport, OptimizeFor, Range, From, To, Item, IncludeDocProps, KeepIRM, CreateBookmarks, DocStructureTags, BitmapMissingFonts, UseISO19005_1)

WD.ActiveDocument.ExportAsFixedFormat(sOutputFilename,17,OpenAfterExport,OptimizeFor,Range,From,To)

WD.quit ; quit Word
WD := ""
}

自定义发音

模板中配置如下信息,安卓和 Windows 都是可以使用在线发音的,可不知为何 Mac 上不行

1
[sound:https://dict.youdao.com/dictvoice?audio={{单词}}]

自定义 Anki 字体

1
2
3
4
5
6
@font-face {
font-family: myfont;
src: url('_LXGWWenKai-Regular.ttf');
}

font-family: myfont;

复习时可编辑

1
2
3
{{#正文}}
{{{edit:正文}}
{{/正文}}

针对 PDF 中带有特殊字体导致文字乱码 / 文字错位的问题(其他计算机中缺少相应的字体)

首先需要明确一点是 Adobe PDF 中没有专门的一个命令用来将文字转曲,具体操作如下

转曲前的检查

  1. 文档属性 ⇒ 字体 ⇒ 查看文档中内嵌的字体

01-查看文档中内嵌的字体.png

进行转曲

编辑 PDF ⇒ 添加水印 ⇒ 水印设置如下

02-添加水印来实现文字转曲效果.png

添加水印之后,退出 PDF 编辑界面,进入 “印刷制作”

04-印刷制作-拼合器预览中进行相应的设置.png

转曲后的检查

拼合之后,检查文档中的字体信息,结果是没有包含任何字体

05-通过拼合之后的文档中不包含任何字体.png

注意:拼合之后,鼠标无法在选中 PDF 中原有的文字,是对内容的一个极大的破坏,且操作不可逆,在拼合前注意是否需要备份一份文档,只能通过 OCR 等进行识别了

转曲前后文件大小比较(仅供参考):7 页 368kb⇒ 1250kb