Pet*_*ron 29 markdown metadata
是否存在在Markdown格式的帖子中嵌入元数据的标准或约定,例如发布日期或作者是否由渲染器进行条件渲染?
看起来像这样的Yaml元数据格式可能就是这样.
有各种策略,例如附带的文件mypost.meta.edn,但我希望将它们全部保存在一个文件中.
Way*_*lan 46
有两种常见的格式看起来非常相似,但在某些非常具体的方面实际上是不同的.第三个是非常不同的.
Jekyll静态站点生成器推广了YAML前端物质,该物质由YAML部分标记消除.是的,破折号实际上是YAML语法的一部分.并且使用任何有效的YAML语法定义元数据.以下是Jekyll文档中的一个示例:
Run Code Online (Sandbox Code Playgroud)--- layout: post title: Blogging Like a Hacker ---
请注意,Markdown解析器不会解析YAML前端问题,但会在Jekyll(或您正在使用的任何工具)解析之前将其删除,并且实际上可以用于请求与该页面的默认Markdown解析器不同的解析器(I不要记得Jekyll是否这样做,但我已经看到了一些工具.)
较旧且更简单的MultiMarkdown Metadata实际上已合并到一些Markdown解析器中.虽然它最近更新为可选支持YAML分隔符,但传统上,元数据结束,Markdown文档从第一个空行开始(如果第一行是空白,则没有元数据).虽然语法看起来与YAML非常相似,但只支持键值对而没有隐含类型.以下是MultiMarkdown文档中的示例:
Run Code Online (Sandbox Code Playgroud)Title: A Sample MultiMarkdown Document Author: Fletcher T. Penney Date: February 9, 2011 Comment: This is a comment intended to demonstrate metadata that spans multiple lines, yet is treated as a single value. CSS: http://example.com/standard.css
MultiMarkdown解析器包含一组对该解析器唯一的附加选项,但键值元数据用于多个解析器.不幸的是,我从未见过任何两个行为完全相同的人.如果没有定义这种格式的Markdown规则,每个人都会做出自己略有不同的解释,从而导致种类繁多.
更常见的一件事是对YAML分隔符和基本键值定义的支持.
为了完整起见,还有Pandoc Title Block.如果有一个非常不同的语法,并不容易与其他两个混淆.据我所知,它只受Pandoc支持(如果启用),它只支持三种类型的数据:标题,作者和日期.以下是Pandoc文档中的示例:
% title
% author(s) (separated by semicolons)
% date
Run Code Online (Sandbox Code Playgroud)
请注意,Pandoc Title Blocks是Pandoc支持的两种样式之一.Pandoc还支持如上所述的YAML元数据.默认情况下,两个扩展都未启用.
小智 22
一种解决方法是使用标准语法并与所有其他查看器兼容。
我也在寻找一种方法来将特定于应用程序的元数据添加到 Markdown 文件,同时确保现有的查看器(如 vscode 和 github 页面)将忽略添加的元数据。使用扩展的 Markdown 语法也不是一个好主意,因为我想确保我的文件可以在不同的查看器上正确呈现。
所以这是我的解决方案:在降价文件的开头,使用以下语法添加元数据:
[_metadata_:author]:- "daveying" [_metadata_:tags]:-“降价元数据”
这是链接引用的标准语法,当您的应用程序可以提取这些数据时,它们不会被呈现。
在-经过:仅仅是网址的预留位置,我没有使用网址为价值,因为你不能在URL中的空间,但我有场景需要数组值。
我为 Markdown 找到的最一致的元数据形式实际上是 HTML 元标记,因为大多数 Markdown 解释器都识别 HTML 标记并且不会呈现元标记,这意味着元数据可以以不会显示在呈现的 HTML 中的方式存储。
<title>Hello World</title>
<meta name="description" content="The quick brown fox jumped over the lazy dog.">
<meta name="author" content="John Smith">
## Heading
Markdown content begins here
Run Code Online (Sandbox Code Playgroud)
您可以在 GitHub Gist 或 StackEdit 等中尝试此操作。
大多数 Markdown 渲染器似乎都支持这种 YAML 格式的文件顶部元数据:
---
layout: post
published-on: 1 January 2000
title: Blogging Like a Boss
---
Content goes here.
Run Code Online (Sandbox Code Playgroud)
正确的。
\n使用yaml前面的键值语法 \xe2\x80\x94 ,就像 MultiMarkdown 支持 \xe2\x80\x94 一样,但 (ab) 使用官方 Markdown URL 语法来添加元数据。
\xe2\x80\xa6 我的解决方法如下所示:
\n---\n[//]: # (Title: My Awesome Title)\n[//]: # (Author: Alan Smithee)\n[//]: # (Date: 2018-04-27)\n[//]: # (Comment: This is my awesome comment. Oh yah.) \n[//]: # (Tags: #foo, #bar) \n[//]: # (CSS: https://path-to-css) \n---\nRun Code Online (Sandbox Code Playgroud)\n将此块放在文档的顶部.md,文档顶部和第一个 之间没有空行---。
当您渲染为 HTML 等时,您的假货yaml不会被包含在内。 \xe2\x80\xa6 它仅出现在.md.
您还可以使用此技术在 Markdown 文档正文中添加注释。
\n| 归档时间: |
|
| 查看次数: |
13290 次 |
| 最近记录: |