标记语言Markdown介绍以及日常使用

Markdown介绍

图片描述

  • Markdown是一种文本标记语言,用于快速文档排版
  • Markdown文件为纯文本文件,后缀名为 .md
  • Markdown介于WordHTML之间
    • 比起Word,Markdown是纯文本,排版文档轻量、方便、快速。
    • 比起HTML,Markdown简单直观,易读、易写、易修改

Markdown优点

  • 简单、流行、B格高且使用广泛,排版功能足够使用(不足之处可用HTML、CSS弥补)
  • 广泛用于用于办公、文字工作者、程序员等人员日常文档的写作排版

Markdown缺点

  • 太简单,很多复杂的专业排版样式功能无法实现,只适用于要求不高的文字排版场合(办公、技术文档等)

Markdown编辑器

  • 任意文本编辑器
  • 专业Markdown编辑器:支持Markdown文档排版后预览,适合文字工作者
    • MAC:mou,macdown
    • Windows:MarkdownPad
  • 自带预览功能的专业代码编辑器:适合编程、分析等理工类应用
    • VSCode 原生支持预览
    • Atom 原生支持预览,并可将md文件另存为HTML文件
    • Jupyter Notebook 科学工作者和程序员用交互式笔记本,网页版,可用于数据分析、教学、演讲等

Markdown预览

  • Atom:
    • 预览快捷键:Ctrl+Shift+M
    • 或:Ctrl+Shift+P - 命令窗口输入 markdown ,回车
  • VSCode:md文件右上方-打开侧边栏预览

Markdown语法

Markdown有很多扩展方言,这里使用GFM(Github Flavored Markdown)

如何速成Markdown?

一份Markdown格式的文件,
应该要能以纯文字形式直接发表,
并且一眼看过去不存在任何标记用的标签或格式指令。- John Gruber
  • 不要机械记忆Markdown标记,如果由我发明一种格式标记语言,写文章时候如何表示标题、段落、列表,你就知道Markdown是怎么发明出来的了。

Markdown基本语法

  • 1:标题(# h1-h6)
  • 2:空格、段落和换行(<p><br>)
  • 3:超链接([]() <a>)
  • 4:图片(![]() <img>)和公式
  • 5:列表(<ul><ol><li>)
  • 6:代码块(``` <pre>)
  • 7:着重、强调(** <em><strong>)
  • 8:表格(-|-|- <table>)
  • 9:转义字符(\)
  • 10:分隔线(--- <hr>)

1:标题(# h1-h6)

<!-- 标题用 2个或2个以上的=或- -->一级标题
==二级标题
--<!-- 或者: --># 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题

一级标题

二级标题

三级标题

四级标题

五级标题
六级标题

2:空格、段落和换行(<p><br>)

  • 空格:直接在编辑器空格或换行,md都只显示为一个空格
  • 段落:回车两次,编辑器换两行,显示为段落(p标签)

少见情况:

  • 多个空格:语义性原因不建议这么做,可直接写HTML转义字符 &nbsp;
  • 换行:上一行结尾加两个空格再回车(<br>)。建议少用,可用无序列表代替
  • 连续换行多行:语义性原因不建议这么做,可直接写HTML换行标签<br>
空     格
没 &nbsp;&nbsp;&nbsp;&nbsp;换行段落<!-- 少见情况 -->本行结尾空两格  
回车就会换一行连续换行多行
<br><br><br>
换行结束

空 格没     换行

段落

本行结尾空两格
回车就会换一行

连续换行多行


换行结束


3:超链接([]() <a>)

3.1:直接写链接地址:http://www.aaa.com/ (VSCode不支持)3.2:[超链接](http://www.aaa.com/)3.3:[本页面锚点](#abc)
<div id="abc">点击跳转到本页面锚点位置,多用于文档目录</div>




4:图片(![]() <img>)和公式

  • 图片只比超链接前面多个 !
  • 图片路径,相对链接、绝对链接均可
  • 复杂的写法,例如 图片加超链接、图片设宽高 等,建议用HTML或CSS实现

![图片描述](images/markdown.png)

图片描述

URL地址中带括号的图片,一般是公式,

图片调用和URL链接隔行书写,

  • 一行调用(描述可以不写),
  • 一行定义图片URL地址(括号内名字或数字对应)。

![][gs][gs]: http://latex.codecogs.com/gif.latex?\prod%20\(n_{i}\)+1


5:列表(<ul><ol><li>)

* 无序列表1
* 无序列表2* 无序列表3* 无序列表4* 无序列表51. 有序列表1
1. 有序列表21. 有序列表31. 有序列表41. 有序列表5

无序列表

  • 无序列表1
  • 无序列表2
    • 无序列表3
      • 无序列表4
      • 无序列表5

有序列表

  1. 有序列表1
  2. 有序列表2
    1. 有序列表3
      1. 有序列表4
      2. 有序列表5

6:代码块(``` <pre>)

` 反引号

  • 将编辑器内程序代码原格式显示
  • 内部的HTML特殊符号如< > &和都会自动转义为&lt; &gt; &amp;
  • 代码块要离上下内容空一行,否则易出问题

1:行内代码块,一个反引号,HTML转义为<code>包裹区块,保留布局

这是`<strong>行内代码块</strong>`都在一行内

效果:这是<strong>行内代码块</strong>都在一行内

2:块级代码块,三个反引号包含,```,HTML转义为<pre><code>包裹区块,保留布局

```
<div>这是块级代码块
</div>
```

效果:

<div>这是块级代码块
</div>

如要带代码高亮效果,3个反引号开始处加上编程语言名

```html
<div>这是块级代码块
</div>
```

效果:

<div>这是块级代码块
</div>

如要显示一个反引号或者<pre>标签,用两个反引号包裹文档 ``

在这个``文本中夹杂一个`反引号如何显示``?

效果:在这个文本中夹杂一个`反引号如何显示

如要显示3个反引号,用<pre>标签标签包裹文档

<pre>
```javascript
function aaa(){var a = 1;
}
```
</pre>

效果:

```javascript
function aaa(){var a = 1;
}
```

7:着重、强调(** <em><strong>)

着重 斜体 em *着重 斜体 em*

强调 粗体 strong **强调 粗体 strong**


8:表格(-|-|- <table>)

默认左对齐

表头1 | 表头2 | 表头3
------|------|------
行1列1 | 行1列2  | 行1列3
行2列1 | 行2列2  | 行2列3
行3列1 | 行3列2  | 行3列3
表头1表头2表头3
行1列1行1列2行1列3
行2列1行2列2行2列3
行3列1行3列2行3列3

9:转义字符(\)

\ 反斜杠

  • 想在页面显示md标记,
  • 或者你不小心写了其他重复md标记,例如:
### 标题__也是着重标记__1986. 数字+点,被转成有序列表
1986. 数字+点,被转成有序列表

标题

也是着重标记

  1. 数字+点,被转成有序列表
  2. 数字+点,被转成有序列表

反斜杠转义

\### 标题\__也是着重标记__1986\. 数字+点,被转成有序列表
1986\. 数字+点,被转成有序列表

### 标题

_也是着重标记_

1986. 数字+点,被转成有序列表1986. 数字+点,被转成有序列表


10:分隔线(--- <hr>)


---

  • 前面空一行
  • 本行最少三个-表示水平线,分隔线

Markdown拓展应用

1:Markdown保存为HTML

  • 最简单的方法:Atom - 预览界面右键 - Save As HTML(注意图片路径默认为绝对路径,需要修改为相对路径)
  • 高级方法:
    • 使用基于Node.js的gitbook库自动生成HTML文档
    • 使用基于Python的Sphinx库生成HTML文档
    • 使用基于Haskell的Pandoc转换任意电子文档格式

2:在Markdown中直接写HTML/CSS/JavaScript

不在md范围内的标记或样式,或者说用Markdown很难实现的标记或样式,可以直接写HTML/CSS/JavaScript语言实现

你完全可以把md文档当成HTML文档在里面写原生HTML/CSS/JS代码(注意环境支持度)

  • HTML: 所有编辑器都支持
  • CSS: 大部分支持。Atom VSCode支持,JupyterNotebook只支持行内样式
  • JS: 基本都不支持。VSCode设置开启后支持,其他环境如想写JS可导出HTML文档后自行编辑
<div class="d1">d111</div>
<div id="d2">d222</div><style>
.d1{background:#f00;
}
</style><script>
d2.style.background = '#00f';
</script>
d111
d222

3:在Markdown中载入基于文本的公式

上面图片标签讲了怎样载入基于图片的公式,怎样载入基于文本的公式?

  • MathJax是一个渲染公式的JS库,LaTex语法书写
  • 使用MathJax显示公式,文档浏览器必须支持JS
    • Jupyter不需操作,原生支持
    • VSCode需手动载入MathJax.js,再启用JS后支持
    • Atom默认过滤JS,不支持

使用方式:

  1. 载入MathJax.js
  2. Jupyter不需要,默认已载入
  3. 载入JS库路径问号后面的参数必须带
CDN远程载入
<script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>或下载JS库后本地载入
<script src="images/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
  1. 将LaTeX公式写入$$ $$之间,空格分隔
$$ P(A \mid B) = \frac{P(B \mid A) \, P(A)}{P(B)} $$

效果(需启用JS支持才可预览):

$$ P(A \mid B) = \frac{P(B \mid A) \, P(A)}{P(B)} $$

  • myscript网站可以手写公式,自动转为LaTeX语法:http://webdemo.myscript.com/views/math.html#

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473565.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

天池 在线编程 有效的字符串

文章目录1. 题目2. 解题1. 题目 描述 如果字符串的所有字符出现的次数相同&#xff0c;则认为该字符串是有效的。 如果我们可以在字符串的某1个索引处删除1个字符&#xff0c;并且其余字符出现的次数相同&#xff0c;那么它也是有效的。 给定一个字符串s&#xff0c;判断它是否…

Flink的时间语义和Watermark

1 时间语义 数据迟到的概念是&#xff1a;数据先产生&#xff0c;但是处理的时候滞后了 在Flink的流式处理中&#xff0c;会涉及到时间的不同概念&#xff0c;如下图所示&#xff1a; Event Time&#xff1a;是事件创建的时间。它通常由事件中的时间戳描述&#xff0c;例如采集…

数据分析案例:亚洲国家人口数据计算

数据截图: 数据下载地址&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1dGHwAC5 密码&#xff1a;nfd2 该数据包含了2006年-2015年10年间亚洲地区人口数量数据&#xff0c;共10行50列数据。我们需要使用Numpy完成如下数据任务: 计算2015年各个国家人口数据计算朝鲜历…

LeetCode 1646. 获取生成数组中的最大值

文章目录1. 题目2. 解题1. 题目 给你一个整数 n 。按下述规则生成一个长度为 n 1 的数组 nums &#xff1a; nums[0] 0nums[1] 1当 2 < 2 * i < n 时&#xff0c;nums[2 * i] nums[i]当 2 < 2 * i 1 < n 时&#xff0c;nums[2 * i 1] nums[i] nums[i 1]…

TotoiseSVN的基本使用方法

一、签入源代码到SVN服务器 假如我们使用Visual Studio在文件夹StartKit中创建了一个项目&#xff0c;我们要把这个项目的源代码签入到SVN Server上的代码库中里&#xff0c;首先右键点击StartKit文件夹&#xff0c;这时候的右键菜单如下图所示&#xff1a; 图2-2-1 点击Import…

LeetCode 1647. 字符频次唯一的最小删除次数(贪心)

文章目录1. 题目2. 解题1. 题目 如果字符串 s 中 不存在 两个不同字符 频次 相同的情况&#xff0c;就称 s 是 优质字符串 。 给你一个字符串 s&#xff0c;返回使 s 成为 优质字符串 需要删除的 最小 字符数。 字符串中字符的 频次 是该字符在字符串中的出现次数。 例如&am…

Flink中的状态管理

1 Flink中的状态 当数据流中的许多操作只查看一个每次事件(如事件解析器)&#xff0c;一些操作会跨多个事件的信息(如窗口操作)。这些操作称为有状态。状态由一个任务维护&#xff0c;并且用来计算某个结果的所有数据&#xff0c;都属于这个任务的状态。可以简单的任务状态就是…

Python之日志处理(logging模块)

主要内容 日志相关概念logging模块简介使用logging提供的模块级别的函数记录日志logging模块日志流处理流程使用logging四大组件记录日志配置logging的几种方式向日志输出中添加上下文信息参考文档 一、日志相关概念 日志是一种可以追踪某些软件运行时所发生事件的方法。软件开…

LeetCode 514. 自由之路(记忆化递归 / DP)

文章目录1. 题目2. 解题1. 题目 电子游戏“辐射4”中&#xff0c;任务“通向自由”要求玩家到达名为“Freedom Trail Ring”的金属表盘&#xff0c;并使用表盘拼写特定关键词才能开门。 给定一个字符串 ring&#xff0c;表示刻在外环上的编码&#xff1b;给定另一个字符串 ke…

Flink中的容错机制

1 checkpoint Flink 故障恢复机制的核心&#xff0c;就是应用状态的一致性检查点checkpoint。 在Spark Streaming中仅仅是针对driver的故障恢复做了数据和元数据的Checkpoint&#xff0c;处理的是当前时间点所有分区当前数据的状态。在Flink中不能把当前所有分区的数据直接存下…

LeetCode 698. 划分为k个相等的子集(回溯)

文章目录1. 题目2. 解题1. 题目 给定一个整数数组 nums 和一个正整数 k&#xff0c;找出是否有可能把这个数组分成 k 个非空子集&#xff0c;其总和都相等。 示例 1&#xff1a; 输入&#xff1a; nums [4, 3, 2, 3, 5, 2, 1], k 4 输出&#xff1a; True 说明&#xff1a;…

MySQL中的表中增加删除字段

1增加两个字段&#xff1a; mysql> create table id_name(id int,name varchar(20)); Query OK, 0 rows affected (0.13 sec)mysql> alter table id_name add age int,add address varchar(11); Query OK, 0 rows affected (0.13 sec) Records: 0 Duplicates: 0 Warnin…

Ubuntu下svn 版本管理客户端工具及常用方法

Ubuntu16.04系统下安装RapidSVN版本控制器及配置diff,editor,merge和exploer工具&#xff0c;在Window下我们使用TortoiseSVN(小乌龟)&#xff0c;可以很方便地进行查看、比较、更新、提交、回滚等SVN版本控制操作。 在Linux下我们可以使用RapidSVN。RapidSVN是一款轻量级的免费…

Flink的Table API 与SQL的流处理

1 流处理与SQL的区别 Table API和SQL&#xff0c;本质上还是基于关系型表的操作方式&#xff1b;而关系型表、SQL本身&#xff0c;一般是有界的&#xff0c;更适合批处理的场景。所以在流处理的过程中&#xff0c;有一些特殊概念。 SQL流处理处理对象字段元组的有界集合字段元…

LeetCode 833. 字符串中的查找与替换(排序,replace)

文章目录1. 题目2. 解题1. 题目 某个字符串 S 需要执行一些替换操作&#xff0c;用新的字母组替换原有的字母组&#xff08;不一定大小相同&#xff09;。 每个替换操作具有 3 个参数&#xff1a;起始索引 i&#xff0c;源字 x 和目标字 y。 规则是&#xff1a;如果 x 从原始…

Json.NET

我前面的一篇博客 Metro应用Json数据处理 介绍了如何使用 DataContractJsonSerializer 类将对象的实例序列化为JSON字符串以及将JSON字符串反序列化为对象的实例的处理方式。而此种处理方式的一个很大的缺点就是要求JSON字符串格式是约定好的&#xff0c;而在很多情况下我们无法…

天池 在线编程 最大得分(DP)

文章目录1. 题目2. 解题1. 题目 来源&#xff1a;https://tianchi.aliyun.com/oj/164423301311799378/184808348725744275 2. 解题 class Solution { public:/*** param matrix: the matrix* return: the maximum score you can get*/int maximumScore(vector<vector<i…

天池 在线编程 LR String

文章目录1. 题目2. 解题1. 题目 来源&#xff1a;https://tianchi.aliyun.com/oj/164423301311799378/184808348725744276 2. 解题 class Solution { public:/*** param s: a string* param t: a string* param n: max times to swap a l and a r.* return: return if s can …

天池 在线编程 音乐组合

文章目录1. 题目2. 解题1. 题目 来源&#xff1a;https://tianchi.aliyun.com/oj/164423301311799378/184808348725744274 2. 解题 对60求余后&#xff0c;0, 30的为 Cn2C_n^2Cn2​&#xff0c;其余的相加等于60的&#xff0c;种类相乘 class Solution { public:/*** param …

java之NIO(Channel,Buffer,Selector)

java之NIO 1 什么是NIO Java NIO (New IO&#xff0c;Non-Blocking IO)是从Java 1.4版本开始引入的一套新的IO API。NIO支持面向缓冲区的、基于通道的IO操作。NIO的三大核心部分&#xff1a;通道(Channel)&#xff0c;缓冲区(Buffer), 选择器(Selector)&#xff0c;数据总是从…