faviconv-noREADME|ARCHIVES|CATEGORIES|SEARCH|
«Thu Jan 07 2021AkrISrn语法扩展facbd1dRaw
链接语法
The documentation is a work in progress, and English edition is just an empty shell for now. I will translate it when Chinese edition has done.

因为链接语法是 Markdown 引用文件的关键,它是 v-no 主要进行扩展的目标。

一个标准 Markdown 链接语法由三个部分组成:

  1. !:标记它是一个文字链接还是图像链接。
  2. [text]
    • 对于文字链接,它被渲染成元素的 innerHTML
    • 对于图像链接,它是元素的 alt 属性。
  3. (path "title")
    1. path
      • 对于文字链接,它是元素的 href 属性。
      • 对于图像链接,它是元素的 src 属性。
    2. title:元素的 title 属性。

你可以发现,只有 title 的含义不会随链接的类型发生变化,而且似乎写 Markdown 时很少会用到它,这真是一个值得动刀子的好地方。

v-no 会截取 title 中最后出现的 # 符号和它后面的部分作为识别标记,而在它之前的部分会成为新的 title(如果它为空,链接不会有 title 属性)。对于不同类型的链接,标记也有不同的工作方式:

  • 文字链接:如果 path/ 开头,并且指向 .md 文件(可以省略 index.md),则将它转换为以 # 开头的 Hash 地址。
    • 如果 # 之后还有更多内容,以 ? 作为分隔,在它之前的部分会组成锚点,之后的部分则是查询字符串。
    • 如果 text 为空,用 path 指向文件的标题填充它。如果它还单独位于一个 <li> 中,则将这个 <li> 转换为一个展示文件部分元数据的特殊列表项。
  • 图像链接:# 之后的部分用于控制它的样式。
    1. 如果它是数字,则作为图像的宽度。
    2. 如果它以 . 开头,将它加到 class 属性,你可以用 . 分隔多个值。有几个特殊的 class 值:
      • hidden:隐藏图像。
      • leftright:将图像浮动在左右两侧。
      • 如果它是以 w 开头的一组数字,则将数字部分作为图像的宽度。
    3. 其它情况都会直接把它填进 style 属性。

title 写多了还是有点麻烦。v-no 还有几个会替换 / 移除原链接的标记,它们选择对 text 进行扩展,并且都需要单独占据一行使用。

  • 嵌入链接:用于引入嵌入文件text 需要以 + 开头,它可以跟一个 #,在它之后的部分会被解析成参数对象。各个参数项之间要用 | 分隔,它们会依序得到一个从 0 开始的序号。你也可以用赋值语句(a=1)标记一个命名参数,让它除了序号还拥有一个字符串别名。
  • 自定义脚本链接:path 要以 .js 结尾,text 只能包含 $,不过不限个数。使用多于一个 $ 会将它标记为一个驻留脚本。
  • 自定义样式链接:除了要以 .css 结尾、使用 * 作为标记,其它地方和自定义脚本类似。
This page is open source, improve it
Graph