Releases: MuiseDestiny/zotero-style
Releases · MuiseDestiny/zotero-style
2.4.3: 本地存储;期刊标签更新;分类数量显示模式
- 提供本地存储
- 点击期刊标签可重新从API更新数据
- 分类文献数量显示模式(在标题的列设置)
2.4.2: 作者/Creator - 自定义显示;一些优化
- Creator增加列设置
- 优化progress列数据存储,优化带来的卡顿
- GPT结果可以选中复制
- 优化因为关系图谱setInterval未清理导致的Zotero仍有后台bug
- 修改视图组切换圆点颜色
此功能可以在首选项关闭,对应按钮为:Creator
slices
由多个slice
组成,一个slice将以:
拆分成参数传给Creators.slice(...slice.split(":")),多个slice
用,
隔开,多组slice结果将concat合并成一个newCreators。并以join
传入的字符串连接。
具体代码:
const creators = item.getCreators() as any
const firstCreator = item.firstCreator as string;
const format = Zotero.Prefs.get(`${config.addonRef}.creatorColumn.format`) as string
const join = Zotero.Prefs.get(`${config.addonRef}.creatorColumn.join`) as string
let slices = Zotero.Prefs.get(`${config.addonRef}.creatorColumn.slices`) as string
let newCreators: any = []
try {
slices.split(/,\s*/).forEach((slice: string) => {
newCreators = newCreators.concat(
creators.slice(...slice.split(":").filter(i => i.trim().length).map(i => Number(i)))
)
})
} catch { return cellSpan}
let textArray = []
for (let i = 0; i < newCreators.length; i++) {
textArray.push(
format
.replace(/\$\{firstName\}/g, newCreators[i].firstName)
.replace(/\$\{lastName\}/g, newCreators[i].lastName)
.replace(/\$\{firstCreator\}/g, firstCreator)
)
}
cellSpan.innerText = textArray.join(join)
2.4.1: 进度列新增style选项 - stack
2.4.0: 增加首选项功能设置
2.3.7: 修复视图组加载失败bug,优化GPT UI
2.3.6: Hi, GPT.
2.3.5: 修复#标签排序bug,优化进度列显示
#标签
#标签排序遵循下列规则:
优先显示指派过颜色位置
的标签,这属于特殊标签,优先显示,排序按照指定的位置/position
然后是普通标签,也就是没有指定颜色位置
的,它们会根据名称排序A-Z(以前是添加时间先后顺序)
你可以为需要前排显示的#标签加上一个位置前缀比如A,B,C。根据需求添加。
/^#[A-Z]?(?:.+\/)*(.+)/
提供一个可以过滤掉A-Z的#标签正则(选择性使用)
进度列
特别说明
进度列,表示的是PDF中高亮标注的字数在每一页的分布,并不是标题那里阅读进度的另一种呈现方式
标注信息(包括标注的文字,对应页数)可以不打开PDF直接读取,但对于渲染还缺少总页数,所以之前的版本需要打开PDF后
插件记录了总页数后,才可以渲染
此版本对于没有打开的PDF,不知道总页数,但做了标注的,也支持显示进度,会使用标注的最大页数作为总页数。
2.3.4: 修复原Zotero标签视图滚动条bug,嵌套标签视图增加支持Night插件dark模式
2.3.3: 分类下条目数量标注;#标签、嵌套标签支持正则表达式
- 分类数量标注
- #标签排序,0-9A-Z
- #标签支持正则表达式
例如一个标签#AAA/BBB/CCC
很长,只想显示CCC
,可以用正则/^#(?:.+\/)*(.+)/
,这个正则不仅用于#标签的原始标签->正则匹配的标签的映射,还作为嵌套标签的验证,属于高级用法,详见下面getTagMatch
函数;
这个正则表达式应用于String.match函数,需要把需要提取的字符串用括号括起来(详见getTagMatch
函数)。
如果你不会正则表达式,但有高级需求,请在讨论中提问
static getTagMatch(tag: string) {
const rawString = Zotero.Prefs.get(`${config.addonRef}.textTagsColumn.match`) as string
const res = rawString.match(/\/(.+)\/(\w*)/)
let regex: RegExp;
// 是正则表达式
if (res) {
regex = new RegExp(res[1], res[2])
}
// 不以xxx开头
else if (rawString.startsWith("~~")) {
regex = new RegExp(`^([^${rawString.slice(2)}].+)`)
}
// 以xxx开头
else {
regex = new RegExp(`^${rawString}(.+)`)
}
const arr = tag.match(regex)
return (arr && arr.slice(1).join("")) || ""
}
2.3.2: 修复PDF Tab错误
#184: Zotero.Reader.open少参数导致的bug