Markdown

Why

How

How to convert to pdf?

What

Introducing

  • 据 GitHub Flavored Markdown(GFM)官方文档介绍,Markdown 是由约翰·格鲁伯(John Gruber)在亚伦·斯沃茨(Aaron Swartz)的帮助下开发,并在 2004 年发布的标记语言。
  • 其设计灵感主要来源于纯文本电子邮件的格式,目标是让人们能够使用易读、易写的纯文本格式编写文档,而且这些文档可以转换为 HTML(Hyper Text Markup Language,超文本标记语言)文档。
  • 起初 Markdown 主要用于网络写作,后来人们希望 Markdown 能够应用到更多的领域,如写书、记笔记、写文档、写幻灯片等。
  • 由于 Markdown 本身功能有限,一些特定的需求和场景无法被满足,因此产生了许多扩展语法,这些语法在基础语法之上新增了如表格、任务列表、围栏代码块等功能。
  • 超集

Timeline

  • 2004
    • Markdown 发布,作者是 John Gruber
  • 2006
    • Pandoc's Markdown 发布,作者是 John MacFarlane。 此版本对 Markdown 语法有额外的扩充和些许修正,这使 Markdown 可以转换为更多的文件格式,Pandoc 堪称文件转换领域的「瑞士军刀」
  • 2011
    • MultiMarkdown(简称 MMD)发布,作者是 Fletcher T.Penney。 此版本让 Markdown 可以转换为更多的文件格式,包括 HTML/XHTML、LATEX、OpenDocument、OPML(Outline Processor Markup Language,大纲处理标记语言)
  • 2013
    • Markdown Extra 发布,作者是 Michel Fortin。 此版本最初使用 PHP 语言实现,新增了围栏代码块、具有 id/class 属性的元素、表格、任务列表、脚注、缩写等功能。
  • 2014
    • CommonMark 规范发布,主要作者是 Jeff Atwood 和 John MacFarlane。 CommonMark 旨在为人们提供一个标准的 Markdown 语法规范和参考实现。 Markdown 标准化工作开始于 2012 年,2014 年 9 月,由于 John Gruber 反对在这一工作中继续使用「Markdown」这个名字,其被更名为 CommonMark。
  • 2017
    • GitHub 发布了 GitHub Flavored Markdown,即 GFM。 此版本遵循 CommonMark 规范,新增了围栏代码块、表格、删除线、自动链接、Emoji 表情和任务列表等功能,是目前使用最广泛的版本。
  • 总之,版本之多 John Gruber 认为合理,未做约束,作出约束的是 CommonMark ——它为 Markdown 提出了一个标准的、明确的语法规范,以及一套全面的测试,根据此规范可以验证 Markdown 的实现结果,GitHub Flavored Markdown(GFM)遵循的就是 CommonMark 规范

Advanced Syntax

Mermaid mermaid-js/mermaid- Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.

Flow

st=>start: 开始框
op=>operation: 处理框
cond=>condition: 判断框(是或否?)
sub1=>subroutine: 子流程
io=>inputoutput: 输入输出框
e=>end: 结束框
st->op->cond
cond(yes)->io->e
cond(no)->sub1(right)->op
# via: https://www.thiscodeworks.com/6086881411312200146f509a

Anchor (锚点)

this is a para.[^something_ref]
 
[^something_ref]: https://xxx.com/xxx

Collapsed on web

  <details><summary>点击展开</summary><a>xxxxx</a></details>

Beautify uri

  • (空格) 尽量用 _ / - 来替换;
    • 在网页的编码中, ’ ’ 代表 %20, 出来的网址会冗杂

Code list

via: https://terryl.in/en/highlight-js-html-code-language-list-for-syntax-highlighting/#how-it-works

codetype
1c1C:Enterprise (v7, v8)
abnfAugmented Backus-Naur Form
accesslogAccess log
actionscriptActionScript
adaAda
angelscriptAngelScript
apacheApache
applescriptAppleScript
arcadeArcGIS Arcade
arduinoArduino
armasmARM Assembly
asciidocAsciiDoc
aspectjAspectJ
assemblyAssembly
autohotkeyAutoHotkey
autoitAutoIt
avrasmAVR Assembler
awkAwk
axaptaMicrosoft Axapta (now Dynamics 365)
bashBash
basicBasic
bnfBackus–Naur Form
brainfuckBrainfuck
calC/AL
capnprotoCap’n Proto
ceylonCeylon
cleanClean
clojure-replClojure REPL
clojureClojure
cmakeCMake
coffeescriptCoffeeScript
coqCoq
cosCache Object Script
cppC++
crmshcrmsh
crystalCrystal
csc#
cspCSP
cssCSS
dD
dartDart
delphiDelphi
diffDiff
djangoDjango
dnsDNS Zone file
dockerfileDockerfile
dosDOS .bat
dsconfigdsconfig
dtsDevice Tree
dustDust
ebnfExtended Backus-Naur Form
elixirElixir
elmElm
erbERB (Embedded Ruby)
erlang-replErlang REPL
erlangErlang
excelExcel
fixFIX
flixFlix
fortranFortran
fsharpF#
gamsGAMS
gaussGAUSS
gcodeG-code (ISO 6983)
gherkinGherkin
glslGLSL
gmlGML
goGolang
goloGolo
gradleGradle
groovyGroovy
hamlHaml
handlebarsHandlebars
haskellHaskell
haxeHaxe
hspHSP
htmlbarsHTMLBars
httpHTTP (Header Plaintext)
hyHy
inform7Inform 7
iniTOML, also INI
irpf90IRPF90
isblISBL
javaJava
javascriptJavaScript
jboss-clijboss-cli
jsonJSON / JSON with Comments
julia-replJulia REPL
juliaJulia
kotlinKotlin
lassoLasso
ldifLDIF
leafLeaf
lessLess
lispLisp
livecodeserverLiveCode
livescriptLiveScript
llvmLLVM IR
lslLSL (Linden Scripting Language)
luaLua
makefileMakefile
markdownMarkdown
mathematicaMathematica
matlabMatlab
maximaMaxima
melMEL
mercuryMercury
mipsasmMIPS Assembly
mizarMizar
mojoliciousMojolicious
monkeyMonkey
moonscriptMoonScript
n1qlN1QL
nginxNginx
nimrodNim (formerly Nimrod)
nixNix
nsisNSIS
objectivecObjective-C
ocamlOCaml
openscadOpenSCAD
oxygeneOxygene
parser3Parser3
perlPerl
pfpf.conf
pgsqlPostgreSQL SQL dialect and PL/pgSQL
phpPHP
plaintextPlaintext
ponyPony
powershellPowerShell
processingProcessing
profilePython profile
prologProlog
propertiesProperties
protobufProtocol Buffers
puppetPuppet
purebasicPureBASIC
pythonPythin
qQ
qmlQML
rR
reasonmlReasonML
ribRenderMan RIB
roboconfRoboconf
routerosMicrotik RouterOS script
rslRenderMan RSL
rubyRuby
ruleslanguageOracle Rules Language
rustRust
sasSAS
scalaScala
schemeScheme
scilabScilab
scssSCSS
shellShell Session
smaliSmali
smalltalkSmalltalk
smlSML (Standard ML)
sqfSQF
sqlSQL (Structured Query Language)
stanStan
stataStata
step21STEP Part 21
stylusStylus
subunitSubUnit
swiftSwift
taggerscriptTagger Script
tapTest Anything Protocol
tclTcl
texTeX
thriftThrift
tpTP
twigTwig
typescriptTypeScript
valaVala
vbnetVB.NET
vbscript-htmlVBScript in HTML
vbscriptVBScript in HTML
verilogVerilog
vhdlVHDL
vimVim Script
x86asmIntel x86 Assembly
xlXL
xmlHTML, XML
xqueryXQuery
yamlYAML
zephirZephir

Reference