《 长袜子皮皮 》

bookcover|200

字段 值
作者 阿斯特丽德·林格伦
ISBN 9787500781929
出版年 2006-6
出版社 中国少年儿童出版社
来源 长袜子皮皮
评分 9.1
页码 197
分类 =this.file.etags
我的评级 =this.file.link.我的评级
书籍链接(外部) 长袜子皮皮
书籍链接(内部) 长袜子皮皮

内容简介:

点击展开/收起 《长袜子皮皮》于 1945 年出版,这部作品的问世标志着世纪儿童的诞生。 书中的主人公皮皮是个奇怪而有趣的小姑娘。她满头红发,脸上布满了雀斑,长着大大的嘴巴,牙齿整齐洁白,小辫子翘向两边。她脚上穿的长袜子,一只是棕色的,另一只却是黑色的。她的鞋子比她的脚大一倍。她力大无比,能轻而易举地把一匹马、一头牛举过头顶,能降服倔强的公牛和食人的大鲨鱼,对付那些身强力壮的小偷和强盗更是绰绰有余。她有取之不尽的金币,常用它买糖果和玩具分送给孩子们。她十分善良,对人热情、体贴入微。她好开玩笑、喜欢冒险,很淘气,常想出许许多多奇妙的鬼主意,创造一个又一个的奇迹····· 可以说,《长袜子皮皮》中具备所有让儿童着迷的东西:不用上学、远离父母、力大无穷、糖果遍地、零钱无限····皮皮做的都是与她同龄的孩子不敢做的事情:撒谎、抗拒大人的威严。她是社会规则的捣乱者,她献给初识的小伙伴杜米和阿妮卡的见面礼是一顿暴打。这样一个传统意义上的“坏”女孩形象确实是对传统儿童文学叙事的一个颠覆,小说出版后一度在瑞典引起一场关于教育的争议。 当时第二次世界大战刚刚结束,人们对纳粹和法西斯在青年当中推行的绝对权威和盲从的教育进行了深刻的反思,也对瑞典本国古老的专制主义的教育方法提出了疑问。报刊上广泛争论着自由教育学、体罚、有保障的家庭环境、儿童阅读以及战争与危机对儿童的影响等。很多人提出,对儿童进行严厉无条件服从的教育会使儿童产生压抑和自卑感。关于长袜子皮皮的辩论进行了好几年。人们渐渐认同,皮皮这一形象是儿童被压抑着的最狂野的幻想的化身,体现了儿童的自主、力量、自由和快乐的梦想。“长袜子皮皮这个人物形象在某种程度上把儿童和儿童文学从传统、迷信权威和道德主义中解放出来·····皮皮变成了自由人类的象征。”与“永远长不大”的彼得·潘相比,长袜子皮皮走得更远,她是一个“不需要长大”的、完美的、具有独立人格的人。 现在,越来越多的人相信,一个快乐、幸福、充满自信的童年,是一个人获得健康成熟的发展的保证。而像《长袜子皮皮》和与它类似的那些让孩子们获得无尽快乐的精神食粮,是美好童年生活的重要组成部分。 (上述简介来源于 《[一生读书计划:小学生书架](https://www.123865.com/s/joaiVv-w0gfv)》,潞潞,ISBN:978-7-5440-4836-1,p65)
// 指定要搜索的文件夹
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}” 的简介。`);
}


📋 我的笔记

📜读书笔记

// 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(`![](${imagePath})`);
  }
})();

🔗 微信读书

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("![]("+path+"#高亮划线)");
}

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("![]("+path+"#读书笔记)");
}


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("![]("+path+"#本书评论)");
}

🔖 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("![]("+path+"#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("![]("+path+"#注释)");
}

🌐 其它相关