内容简介:
点击展开/收起
《神雕侠侣》是金庸作品集之一。其主人公杨过自然而然地走上了非正统的人生道路,入了“道流”。其特点是“至情至性,实现自我”,即把个人的利益、情感、个性及人格尊严置于人生首位,作为首要目标,亦作为待人处事,评价是非的首要原则。书中将杨过对郭靖的杀父之仇与疼惜之恩难以取舍的复杂心理刻画得维妙维肖;他与“姑姑”小龙女的情感纠葛和他对江湖世事的渴望又令他挣扎不已……// 指定要搜索的文件夹
const targetFolder = "阅读/作家";
// 可修改的摘要长度(字符数)
const excerptLength = 300;
// 从模板变量接收作者名(可能带引号)
let rawAuthor = `'金庸'`;
let author = rawAuthor.replace(/^['"]+|['"]+$/g, "").trim();
// 获取该目录下所有页面并过滤
let pagesInFolder = dv.pages(`"${targetFolder}"`);
let matching = pagesInFolder.filter(p => p.file.name === author || p.file.name.includes(author));
if (matching.length > 0) {
(async () => {
let note = matching[0];
let path = note.file.path;
let name = note.file.name;
// 输出文件链接
dv.paragraph(`**作者简介:** ${name}`);
// 读取全文
let file = app.vault.getAbstractFileByPath(path);
let content = await app.vault.read(file);
// 去除笔记属性
content = content.replace(/^---\r?\n[\s\S]*?\r?\n---/, "").trim();
// 提取“作家简介”标题后的首个段落,允许标题后空行
const sectionRegex = /^###\s*作家简介[^\n]*\r?\n(?:\r?\n)?([\s\S]*?)(?=\r?\n\s*\r?\n|$)/m;
let excerpt = '';
const secMatch = content.match(sectionRegex);
if (secMatch) {
let body = secMatch[1].trim();
excerpt = body.length > excerptLength ? body.substring(0, excerptLength) + '...' : body;
} else {
// 未找到标题时默认使用首个段落
const paraMatch = content.match(/^([\s\S]*?)(?=\r?\n\s*\r?\n|$)/);
let firstPara = paraMatch ? paraMatch[1].trim() : content.substring(0, excerptLength).trim();
excerpt = firstPara.length > excerptLength ? firstPara.substring(0, excerptLength) + '...' : firstPara;
}
// 使用 <details> 实现可折叠展示摘要
dv.paragraph(
`<details>
<summary>点击展开/收起</summary>
${excerpt}
</details>`
);
})();
} else {
dv.paragraph(`尚未添加 “${author}” 的简介。`);
}
郭襄回头过来,见张君宝头上伤口中兀自汨汨流血,于是从怀中取出手帕,替他包扎。张君宝好生感激,欲待出言道谢,却见郭襄眼中泪光莹莹,心下大是奇怪,不知她为甚么伤心,道谢的言辞竟此便说不出口。
却听得杨过朗声说道:“今番良晤,豪兴不浅,他日江湖相逢,再当杯酒言欢。咱们就此别过。”说着袍袖一拂,携着小龙女之手,与神雕并肩下山。
其时明月在天,清风吹叶,树巅乌鸦啊啊而鸣,郭襄再也忍耐不住,泪珠夺眶而出。
正是:“秋风清,秋月明;落叶聚还散,寒鸦栖复惊。相思相见知何日,此时此夜难为情。”
——引自第779页
法王笑道:“人各有志,那也勉强不来。杨兄弟,你的武功花样甚多,不是我倚老卖老说一句,博采众家固然甚妙,但也不免驳而不纯。你最擅长的到底是那一门功夫?要用甚么武功去对付郭靖夫妇?”
这几句话可将杨过问得张口结舌,难以回答。他一生遭际不凡,性子又是贪多务得,全真派的、欧阳锋的、古墓派的、九阴真经、洪七公的、黄药师的,诸般武功着实学了不少。这些功夫每一门都是奥妙无穷,以毕生精力才智钻研探究,亦难以望甚涯岸,他东摘一鳞、西取半爪,却没一门功夫练到真正第一流的境界。遇到次等对手之时,施展出来固然是五花八门,叫人眼花撩乱,但遭逢到真正高手,却总是相形见绌,便和金轮法王的弟子达尔巴、霍都相较,也是颇有不及。他低头凝思,觉得金轮法王这几句话实是当头棒喝,说中了他武学的根本大弊。
转念又想:“我既已决意与姑姑厮守终生,却何以又到处留情?程姑娘、媳妇儿,还有那完颜萍。我对他们既无真情,何以又不规规矩矩的?这真是贪多嚼不烂了。”再想:“不论洪七公、黄药师、欧阳锋,或是全真七子、金轮法王,凡是卓然而成名家者,都是精修本门功夫,别派武功并非不懂,却只是明其家数,并不研习,然则我该当专修那一门功夫?”在情在理,自当专研古墓派的玉女心经才是,但想到洪七公的打狗棒法如此奥妙、黄药师的玉萧剑法这等精微,置之不理,岂非可惜?而义父的蛤蟆功与经脉逆行、九阴真经中的诸般功夫,无一不是以一技即足以扬名天下,好不容易的学到,又怎能弃之如遗?
他走出茅棚,在山顶上负手而行,苦苦思索,甚是烦恼,想了半天,突然间心念一动:“我何不取各派所长,自成一家?天下武功,均是由人所创,别人既然创得,我难道就创不得?”想到此处,眼前登时大现光明。
他自辰时想到午后,又自午后苦思至深夜,在山峰上不饮不食,生平所见诸般精妙武功在脑海中此来彼往,相互激荡。他曾见洪七公与欧阳锋口述比武,自己也曾口讲指划而将李莫愁惊走,此时脑中诸家武功...
——引自章节:第十六回杀父深仇
我的笔记
读书笔记
// dataviewjs: 根据是否存在“摘抄”节,选择不同渲染方式
(async () => {
// 1. 获取书籍笔记库路径和书名变量
const configPage = dv.pages(`#path`)
.filter(p => String(p.file.path).includes("BookLibPath"))[0];
if (!configPage) {
dv.paragraph("⚠️ 未配置 `BookLibPath` 路径。");
return;
}
const BookNotePath = configPage.BookNotePath;
const rawBook = '神雕侠侣';
const bookName = rawBook.replace(/^['"]+|['"]+$/g, "").trim();
// 2. 查找匹配笔记
const matching = dv.pages(`"${BookNotePath}"`)
.filter(p => p.file.name.includes(bookName));
if (matching.length === 0) {
// 4a. 如果没有笔记
dv.paragraph(`尚未创建 “${bookName}” 的读书笔记。`);
return;
}
// 3. 选第一个匹配的笔记
const note = matching[0];
const path = note.file.path;
const name = note.file.name;
// 4. 读取文件、去除 frontmatter
const file = app.vault.getAbstractFileByPath(path);
let content = await app.vault.read(file);
content = content.replace(/^---\r?\n[\s\S]*?\r?\n---/, "").trim();
// 5. 提取 “摘抄” 节
const lines = content.split('\n');
let capture = false;
const sect = [];
for (const line of lines) {
if (/^#{1,6}\s*摘抄\s*$/.test(line)) {
capture = true;
continue;
}
if (capture && /^#{1,6}\s*\S+/.test(line)) break;
if (capture) sect.push(line);
}
const excerpt = sect.join('\n').trim();
if (excerpt) {
// 6a. 有“摘抄”,渲染带折叠和样式的区域
dv.paragraph(`
<div style="
border:1px solid;
padding:8px;
border-radius:4px;
margin:8px 0;
">
<div>
<strong>📖 书籍笔记:</strong>
</div>
<hr style="
border:none;
border-top:1px dotted;
margin:8px 0;
">
<details>
<summary style="cursor:pointer;">📋 摘抄(点击展开/收起)</summary>
${excerpt}
</details>
</div>
`);
} else {
// 6b. 无“摘抄”,退回到第一段逻辑:展示封面图
dv.paragraph("读书笔记:");
const imagePath = path.replace(/\s+/g, '%20');
dv.paragraph(``);
}
})();
微信读书
- 微信读书 -
高亮划线
let WereadPath = dv.pages(`#path`).filter(p=>String(p.file.path).includes("BookLibPath"))[0].WereadPath;
let link = dv.pages(`"${WereadPath}"`)
.filter(p=>String(p.file.name).includes("神雕侠侣")).file.path;
if(link[0])
{
let path = link[0].replace(/\s+/g, '%20');
dv.paragraph("");
}
- 微信读书 -
读书笔记
let WereadPath = dv.pages(`#path`).filter(p=>String(p.file.path).includes("BookLibPath"))[0].WereadPath;
let link = dv.pages(`"${WereadPath}"`)
.filter(p=>String(p.file.name).includes("神雕侠侣")).file.path;
if(link[0])
{
let path = link[0].replace(/\s+/g, '%20');
dv.paragraph("");
}
- 微信读书 -
本书评论
let WereadPath = dv.pages(`#path`).filter(p=>String(p.file.path).includes("BookLibPath"))[0].WereadPath;
let link = dv.pages(`"${WereadPath}"`)
.filter(p=>String(p.file.name).includes("神雕侠侣")).file.path;
if(link[0])
{
let path = link[0].replace(/\s+/g, '%20');
dv.paragraph("");
}
Zotero
- Zotero -
电子书
let ZoteroPath = dv.pages(`#path`).filter(p=>String(p.file.path).includes("BookLibPath"))[0].ZoteroPath;
let link = dv.pages(`"${ZoteroPath}"`)
.filter(p=>String(p.file.name).includes("神雕侠侣")).file.path;
if(link[0])
{
let path = link[0].replace(/\s+/g, '%20');
dv.paragraph("");
}
- Zotero -
注释
let ZoteroPath = dv.pages(`#path`).filter(p=>String(p.file.path).includes("BookLibPath"))[0].ZoteroPath;
let link = dv.pages(`"${ZoteroPath}"`)
.filter(p=>String(p.file.name).includes("神雕侠侣")).file.path;
if(link[0])
{
let path = link[0].replace(/\s+/g, '%20');
dv.paragraph("");
}