Nothing Here...
/blogs will have contents
Headers
# h1 Heading 8-)
## h2 Heading
### h3 Heading
#### h4 Heading
##### h5 Heading
###### h6 Heading
Alternatively, for H1 and H2, an underline-ish style:
Alt-H1
======
Alt-H2
------
```
# h1 Heading 8-)
## h2 Heading
### h3 Heading
#### h4 Heading
##### h5 Heading
###### h6 Heading
Alternatively, for H1 and H2, an underline-ish style:
Alt-H1
======
Alt-H2
------
------
# Emphasis
Emphasis, aka italics, with asterisks or underscores.
Strong emphasis, aka bold, with asterisks or underscores.
Combined emphasis with asterisks and underscores.
Strikethrough uses two tildes. Scratch this.
This is bold text
This is bold text
This is italic text
This is italic text
Strikethrough
Emphasis, aka italics, with *asterisks* or _underscores_.
Strong emphasis, aka bold, with **asterisks** or __underscores__.
Combined emphasis with **asterisks and _underscores_**.
Strikethrough uses two tildes. ~~Scratch this.~~
**This is bold text**
__This is bold text__
*This is italic text*
_This is italic text_
~~Strikethrough~~
------
# Lists
- First ordered list item
- Another item ⋅⋅* Unordered sub-list.
- Actual numbers don't matter, just that it's a number ⋅⋅1. Ordered sub-list
- And another item.
⋅⋅⋅You can have properly indented paragraphs within list items. Notice the blank line above, and the leading spaces (at least one, but we'll use three here to also align the raw Markdown).
⋅⋅⋅To have a line break without a paragraph, you will need to use two trailing spaces.⋅⋅ ⋅⋅⋅Note that this line is separate, but within the same paragraph.⋅⋅ ⋅⋅⋅(This is contrary to the typical GFM line break behaviour, where trailing spaces are not required.)
- Unordered list can use asterisks
- Or minuses
- Or pluses
- Make my changes
- Fix bug
- Improve formatting
- Make the headings bigger
- Push my commits to GitHub
- Open a pull request
- Describe my changes
- Mention all the members of my team
- Ask for feedback
- Create a list by starting a line with
+,-, or* - Sub-lists are made by indenting 2 spaces:
- Marker character change forces new list start:
- Ac tristique libero volutpat at
- Facilisis in pretium nisl aliquet
- Nulla volutpat aliquam velit
- Marker character change forces new list start:
- Very easy!
1. First ordered list item
2. Another item
⋅⋅* Unordered sub-list.
1. Actual numbers don't matter, just that it's a number
⋅⋅1. Ordered sub-list
4. And another item.
⋅⋅⋅You can have properly indented paragraphs within list items. Notice the blank line above, and the leading spaces (at least one, but we'll use three here to also align the raw Markdown).
⋅⋅⋅To have a line break without a paragraph, you will need to use two trailing spaces.⋅⋅
⋅⋅⋅Note that this line is separate, but within the same paragraph.⋅⋅
⋅⋅⋅(This is contrary to the typical GFM line break behaviour, where trailing spaces are not required.)
* Unordered list can use asterisks
- Or minuses
+ Or pluses
1. Make my changes
1. Fix bug
2. Improve formatting
- Make the headings bigger
2. Push my commits to GitHub
3. Open a pull request
* Describe my changes
* Mention all the members of my team
* Ask for feedback
+ Create a list by starting a line with `+`, `-`, or `*`
+ Sub-lists are made by indenting 2 spaces:
- Marker character change forces new list start:
* Ac tristique libero volutpat at
+ Facilisis in pretium nisl aliquet
- Nulla volutpat aliquam velit
+ Very easy!
------
# Task lists
- Finish my changes
- Push my commits to GitHub
- Open a pull request
- @mentions, #refs, links, formatting, and
tagssupported - list syntax required (any unordered or ordered list supported)
- this is a complete item
- this is an incomplete item
- [x] Finish my changes
- [ ] Push my commits to GitHub
- [ ] Open a pull request
- [x] @mentions, #refs, [links](), **formatting**, and <del>tags</del> supported
- [x] list syntax required (any unordered or ordered list supported)
- [ ] this is a complete item
- [ ] this is an incomplete item
------
# Ignoring Markdown formatting
You can tell GitHub to ignore (or escape) Markdown formatting by using \ before the Markdown character.
Let's rename *our-new-project* to *our-old-project*.
Let's rename \*our-new-project\* to \*our-old-project\*.
------
# Links
I'm an inline-style link with title
I'm a relative reference to a repository file
You can use numbers for reference-style link definitions
Or leave it empty and use the link text itself.
URLs and URLs in angle brackets will automatically get turned into links. http://www.example.com or http://www.example.com and sometimes example.com (but not on Github, for example).
Some text to show that the reference links can follow later.
[I'm an inline-style link](https://www.google.com)
[I'm an inline-style link with title](https://www.google.com "Google's Homepage")
[I'm a reference-style link][Arbitrary case-insensitive reference text]
[I'm a relative reference to a repository file](../blob/master/LICENSE)
[You can use numbers for reference-style link definitions][1]
Or leave it empty and use the [link text itself].
URLs and URLs in angle brackets will automatically get turned into links.
http://www.example.com or <http://www.example.com> and sometimes
example.com (but not on Github, for example).
Some text to show that the reference links can follow later.
[arbitrary case-insensitive reference text]: https://www.mozilla.org
[1]: http://slashdot.org
[link text itself]: http://www.reddit.com
------
# Images
Here's our logo (hover to see the title text):
Inline-style:
![]()
Reference-style:
![]()

Like links, Images also have a footnote style syntax

With a reference later in the document defining the URL location:
Here's our logo (hover to see the title text):
Inline-style:

Reference-style:
![alt text][logo]
[logo]: https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png "Logo Title Text 2"


Like links, Images also have a footnote style syntax
![Alt text][id]
With a reference later in the document defining the URL location:
[id]: https://octodex.github.com/images/dojocat.jpg "The Dojocat"
------
# [Footnotes](https://github.com/markdown-it/markdown-it-footnote)
Footnote 1 link[^first].
Footnote 2 link[^second].
Inline footnote^[Text of inline footnote] definition.
Duplicated footnote reference[^second].
[^first]: Footnote can have markup
and multiple paragraphs.[^second]: Footnote text.
Footnote 1 link[^first].
Footnote 2 link[^second].
Inline footnote^[Text of inline footnote] definition.
Duplicated footnote reference[^second].
[^first]: Footnote **can have markup**
and multiple paragraphs.
[^second]: Footnote text.
------
# Code and Syntax Highlighting
Inline code has back-ticks around it.
Inline `code` has `back-ticks around` it.
```c#
using System.IO.Compression;
#pragma warning disable 414, 3021
namespace MyApplication
{
[Obsolete("...")]
class Program : IInterface
{
public static List<int> JustDoIt(int count)
{
Console.WriteLine($"Hello {Name}!");
return new List<int>(new int[] { 1, 2, 3 })
}
}
}@font-face {
font-family: Chunkfive; src: url('Chunkfive.otf');
}
body, .usertext {
color: #F0F0F0; background: #600;
font-family: Chunkfive, sans;
}
@import url(print.css);
@media print {
a[href^=http]::after {
content: attr(href)
}
}function $initHighlight(block, cls) {
try {
if (cls.search(/\bno\-highlight\b/) != -1)
return process(block, true, 0x0F) +
` class="${cls}"`;
} catch (e) {
/* handle exception */
}
for (var i = 0 / 2; i < classes.length; i++) {
if (checkCondition(classes[i]) === undefined)
console.log('undefined');
}
}
export $initHighlight;require_once 'Zend/Uri/Http.php';
namespace Location\Web;
interface Factory
{
static function _factory();
}
abstract class URI extends BaseURI implements Factory
{
abstract function test();
public static $st1 = 1;
const ME = "Yo";
var $list = NULL;
private $var;
/**
* Returns a URI
*
* @return URI
*/
static public function _factory($stats = array(), $uri = 'http')
{
echo __METHOD__;
$uri = explode(':', $uri, 0b10);
$schemeSpecific = isset($uri[1]) ? $uri[1] : '';
$desc = 'Multi
line description';
// Security check
if (!ctype_alnum($scheme)) {
throw new Zend_Uri_Exception('Illegal scheme');
}
$this->var = 0 - self::$st;
$this->list = list(Array("1"=> 2, 2=>self::ME, 3 => \Location\Web\URI::class));
return [
'uri' => $uri,
'value' => null,
];
}
}
echo URI::ME . URI::$st1;
__halt_compiler () ; datahere
datahere
datahere */
datahereTables
Colons can be used to align columns.
| Tables | Are | Cool |
| ------------- |:-------------:| -----:|
| col 3 is | right-aligned | $1600 |
| col 2 is | centered | $12 |
| zebra stripes | are neat | $1 |
There must be at least 3 dashes separating each header cell.
The outer pipes (|) are optional, and you don't need to make the
raw Markdown line up prettily. You can also use inline Markdown.
Markdown | Less | Pretty
--- | --- | ---
*Still* | `renders` | **nicely**
1 | 2 | 3
| First Header | Second Header |
| ------------- | ------------- |
| Content Cell | Content Cell |
| Content Cell | Content Cell |
| Command | Description |
| --- | --- |
| git status | List all new or modified files |
| git diff | Show file differences that haven't been staged |
| Command | Description |
| --- | --- |
| `git status` | List all *new or modified* files |
| `git diff` | Show file differences that **haven't been** staged |
| Left-aligned | Center-aligned | Right-aligned |
| :--- | :---: | ---: |
| git status | git status | git status |
| git diff | git diff | git diff |
| Name | Character |
| --- | --- |
| Backtick | ` |
| Pipe | \| |Colons can be used to align columns.
| Tables | Are | Cool |
|---|---|---|
| col 3 is | right-aligned | $1600 |
| col 2 is | centered | $12 |
| zebra stripes | are neat | $1 |
There must be at least 3 dashes separating each header cell. The outer pipes (|) are optional, and you don't need to make the raw Markdown line up prettily. You can also use inline Markdown.
| Markdown | Less | Pretty |
|---|---|---|
| Still | renders |
nicely |
| 1 | 2 | 3 |
| First Header | Second Header |
|---|---|
| Content Cell | Content Cell |
| Content Cell | Content Cell |
| Command | Description |
|---|---|
| git status | List all new or modified files |
| git diff | Show file differences that haven't been staged |
| Command | Description |
|---|---|
git status |
List all new or modified files |
git diff |
Show file differences that haven't been staged |
| Left-aligned | Center-aligned | Right-aligned |
|---|---|---|
| git status | git status | git status |
| git diff | git diff | git diff |
| Name | Character |
|---|---|
| Backtick | ` |
| Pipe | | |
Blockquotes
> Blockquotes are very handy in email to emulate reply text.
> This line is part of the same quote.
Quote break.
> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can *put* **Markdown** into a blockquote.
> Blockquotes can also be nested...
>> ...by using additional greater-than signs right next to each other...
> > > ...or with spaces between arrows.Blockquotes are very handy in email to emulate reply text. This line is part of the same quote.
Quote break.
This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can put Markdown into a blockquote.
Blockquotes can also be nested...
...by using additional greater-than signs right next to each other...
...or with spaces between arrows.
Inline HTML
<dl>
<dt>Definition list</dt>
<dd>Is something people use sometimes.</dd>
<dt>Markdown in HTML</dt>
<dd>Does *not* work **very** well. Use HTML <em>tags</em>.</dd>
</dl>- Definition list
- Is something people use sometimes.
- Markdown in HTML
- Does *not* work **very** well. Use HTML tags.
Horizontal Rules
Three or more...
---
Hyphens
***
Asterisks
___
UnderscoresThree or more...
Hyphens
Asterisks
Underscores
YouTube Videos
<a href="http://www.youtube.com/watch?feature=player_embedded&v=YOUTUBE_VIDEO_ID_HERE" target="_blank">
<img src="http://img.youtube.com/vi/YOUTUBE_VIDEO_ID_HERE/0.jpg" alt="IMAGE ALT TEXT HERE" width="240" height="180" border="10">
</a>
[](http://www.youtube.com/watch?v=YOUTUBE_VIDEO_ID_HERE)
Custom Rendering Extensions
On top of standard Markdown, this blog renders a few extra author-side markers. They are plain text in the source — no plugins needed.
<line-break> — forced page break
Write <line-break> anywhere in the post. On screen it silently breaks the
flow; when the page is printed (A4), it forces a new page exactly there.
Content after the page break marker.
<follow> — hug the previous content
Place <follow> directly before a table to make it sit inline with the
preceding text instead of starting a new line. The table wraps only when the
line runs out of space.
Inline table hugging this text:
| Fruit | Qty | Note |
|---|---|---|
| Apples | 12 | Fuji |
| Bananas | 8 | Cavendish |
| Cherries | 5 | Rainier |
MusicXML — engraved sheet music
Fenced blocks tagged musicxml are engraved as sheet music at build time
(MuseScore-style layout), not shown as code:
animated-piano — piano animation
Fenced blocks tagged animated-piano become an auto-playing piano key
animation (gif-like). Notes follow the AB-Notation (ABNotes) file spec.
AB-Notation 文件规范(修订版)
AB-Notation 专为 animated-piano 渲染引擎设计,通过简洁的纯文本语法生成钢琴动画。文件由全局元数据(Metadata)与音符序列(Note Sequence)两部分构成。
1. 基础语法格式
基本音符遵循 [时长][音高] 的核心模式。序列中的不同事件(音符、休止、和弦)通过 , 分隔。
时长(Duration):采用“纯长度”(Step/Tick)逻辑计算时值。基础单位 1 = 1 个十六分音符:
| 时长 | 含义 |
|---|---|
1 |
十六分音符 |
2 |
八分音符 |
4 |
四分音符 (Crotchet) |
8 |
二分音符 (Minim) |
16 |
全音符 |
附点语法糖(两种等效写法):
- 纯数字法:直接写出总长度,如
6 - 附点符号法:在时长后加
.,引擎自动计算长度 × 1.5,如4.
6 与 4. 在引擎解析时完全等价,均代表附点四分音符。
音高(Pitch):采用科学音高记谱法,包含音名与八度。升降号使用 #(升号)和 b(降号)标记在音名之后。如 C5、F#4。
休止符(Rest):音高部分使用大写字母 R 替代,如 4R(四分休止符,长度为 4)。
小节线(Barline):使用反引号(`)划分音乐小节,用于视觉分隔以及跨小节连结的绝对定位。
2. 高级记谱特性
连音组(Tuplets):用于表示在指定总长度内,均分排列多个连续音符。
- 语法:
[音符数量]/[共享总长度][音符1, 音符2, ...] - 示例:
3/4[C5, E5, G5] - 解析:三连音(Triplet)结构,C5、E5、G5 三个音符共同占据长度
4(即一个四分音符)的总时长。
和弦(Chords):多个同时发声的音高共享同一个时长声明。
- 语法:
[时长]<音高1, 音高2, ...> - 示例:
8<C4, E4, G4> - 解析:长度为
8(二分音符时长)的 C 大三和弦。
延音线与跨小节连结(Ties):用于将当前音符的时长延长至后续指定位置的音符(同音高),常用于跨小节连接。
- 语法:在目标音高后追加
(tie-to: [小节序号]-[音符索引]) - 示例:
4C5(tie-to: 2-3) - 解析:当前的四分音符 C5 会通过延音线,无缝连接到第 2 小节的第 3 个音符。注意:小节序号与音符索引均从 1 开始计数。
3. 全局元数据(Metadata)
文件头部需声明动画与回放的全局参数,每行一个键值对,无需任何标点结尾:
tempo: 播放速度,单位为 BPM (Beats Per Minute)。如tempo=88metre: 拍号 (Time Signature),定义每小节的节拍结构。如metre=4/4或metre=6/8
4. 综合代码块示例
包含元数据、单音、等效附点写法、和弦与连音的完整示例:
键盘默认显示 10 个白键(约一个八度),音符超出范围时,可用浮动控制条上的 −/+ 按钮调整键盘大小(缩小可看全音域,放大则键更大)。
.private/ — password-protected posts
Articles under .private/ are kept out of the blog index but remain
reachable by their direct URL. When the BLOG_PRIVATE_PASSWORD build secret
is set, their rendered HTML is AES-GCM encrypted at build time and unlocked
with a password in the browser.