Markdown教程
写在前面的:
如今作为一个程序员,做笔记用word会被各种莫名其妙且必须用鼠标或者繁杂的快捷键去调整的的格式所困扰,用latex做笔记虽然可以很好的表现出公式,而且能够在代码层做出各种各样的排版,但是会因为各种复杂的标签以及超大的体量所困扰
而Markdown有着有限而简洁的格式,支持代码控制格式,而且能够实现常用的latex公式,加上有专门支持代码高亮的格式,成了程序员做笔记的不二之选。最重要的是,不论是GitHub上的README、CSDN或者简书的博客还有acwing的打卡,都是要用Markdown进行排版的。所以,作为一名入门的程序员,学会使用Markdown,是开始写个人博客的第一步。
1. Markdown的本地编辑器
Markdown的本地编辑器,个人推荐用typora,不但可以支持本来的Markdown语法标签编辑,还有着各种快捷键的操作,可以说是能实现随心所欲的对文本的格式进行操作
关于配置这个编辑器的问题,其实比配置一个编译器都简单太多,其实就是安装一个文本编辑器,直接点这里进入官网进行下载,然后无脑下一步安装即可
2. 对文本格式的基本
2.1 文本的标题
写一篇文章,最重要的当然是先列好提纲啊,而提纲一般也就是第几章第几节的主要内容,如果对应到最后写出来以后得我文章,那么其实第几级标题
而标题的在Markdown语法中的控制,其实就是在源码前面加上若干个#
和一个空格,就能实现对标题的标记,代码如下代码块
# 一级标题
## 二级标题
### 三级标题
而这些代码块最终实现的结果如以下文本块中的效果
一级标题
二级标题
三级标题
2.2 文本的强调
在写博客的过程中,有些文本是需要被不一样的方式强调出来的,所以Markdown给出了一系列强调文本的方法,包括但不限于
-
斜体
-
加黑
-
斜体加黑
-
高亮
-
下划线
-
缩小
-
删除
如下代码给出了这些强调方式的实现(如果有效果显示不出来就应该是acwing不支持)
*斜体*
**加黑**
***斜体加黑***
==高亮==
++下划线++(这个标签貌似是acwing自创的,其他地方比如typora都只支持`<u></u>`,而不是++)
~缩小~
~~删除~~
而代码块中最终实现效果就如下图文本块中所示(就像C++有着C17和C11标准的区别,不同的网站对不同的Markdown语法也有着微妙的区别,有的网站可能会不支持某些格式,但是一般的Markdown编辑器都会对这些格式有着支持)
斜体
加黑
斜体加黑
==高亮==
下划线
~缩小~
删除
2.3 文本块
有时候因为种种原因我们需要使用文本块来记录一些特别的话,比如下面对名著的引用
世上本没有路,走的人多了,便变成了路。——鲁迅《故乡》
所以Markdown语法中发明了文本块这种格式
而文本块这种格式最终的实现方式如下代码块
>文本块块
>>文本块中的文本块
>>>禁止套娃,一般的文本块不会有这么多层
而以上代码块中的代码最终实现的结果如下(因为这次实现的本来就是文本块,所以就不用文本块套娃了)
文本块块
文本块中的文本块
禁止套娃,一般的文本块不会有这么多层
2.4 列表
我们平时做笔记的时候,经常会因为几个知识点并列而要将几个知识点并列列出的效果,这时候就需要列表,可以将几个并列的知识点一一列举出来
而其中一种就是有序的列表,一般用来表示某一需要按照顺序行进的过程。当然,同样可以用来列举无时序关系的知识点,一般实现就是序号加点再加空格,具体实现代码如下代码块
1. 首先
2. 然后
3. 之后
4. 最后
而代码块中的实现效果如下文本块
- 首先
- 然后
- 之后
- 最后
当然,有有序的也就有无序的,一般会用来列举一些并列的方法,实现的方式是在要点之前加*
符或者-
符进行标记,具体实现代码如下代码块
* 冒泡排序
* 快速排序
- 归并排序
- 堆排序
而代码块中的实现效果如下文本块(这里的无序序列因为是用了两个不同的标识符,所以是不同的无序队列,导致中间的空空比较大)
- 冒泡排序
- 快速排序
- 归并排序
- 堆排序
3.对代码的操作
3.1 代码块
相信只要用过acwing的同学,都闹过一下文本块中的笑话
include[HTML_REMOVED]
using namespace std;
int main()
{
cout<<”hello,world”<<endl;
return 0;
}
本来只想写一个代码,结果头文件大的出奇,而且下面的代码排版也奇丑无比,而Markdown作为一个程序员记笔记的工具,怎么可能没有专门针对于代码的功能呢,这个功能就是代码块
代码块的实现代码就如下代码块所示(我貌似在套娃)
```C++
#include<iostream>
using namespace std;
int main()
{
cout<<"hello,world";
return 0;
}
```
首先是三个键盘esc键下面那个键的英文输出(下面都都叫他代码标记符),之后就是语言的种类比如C++或者python之类,Markdown会根据语言的种类对关键字进行高亮标出,之后再接上代码,最后以三个代码标记符收尾即可
3.2 行内代码
这个就比较简单啦,就比如我要在内表现出一行代码,比如cout<<"hello,world";
,就需要用到行内代码块
这个的实现其实比较简单只需要一头一尾一个代码标记符,对代码形成两面包夹芝士,即可形成写出这种效果,具体演示见以下代码块
`cout<<"hello,world";`
具体实现的效果就如下文本块
cout<<"hello,world";
4. latex公式
前面已经说过了,一般的Markdown都支持latex的数学公式语法,详细的数学公式语法可以点这里下载《不太简短的latex教程》看里面的第三章,查看数学公式的具体编辑方式,懒得看latex的话,可以点这里了解最最基本的latex的数学公式
4.1 公式块
了解了数学公式的具体编辑方式之后,我们只需要将编辑好的数学公式放在美元符中即可实现latex数学公式,下面以一个典型的数学公式——欧拉公式(本来想用矩阵的,结果发现acwing不支持矩阵),对公式块的功能进行演示,代码如下代码块
$$
\begin{align}
y = y(x,t) &= A e^{i\theta} \\\\
&= A (\cos \theta + i \sin \theta) \\\\
&= A (\cos(kx - \omega t) + i \sin(kx - \omega t)) \\\\
&= A\cos(kx - \omega t) + i A\sin(kx - \omega t) \\\\
&= A\cos \Big(\frac{2\pi}{\lambda}x - \frac{2\pi v}{\lambda} t \Big) + i A\sin \Big(\frac{2\pi}{\lambda}x - \frac{2\pi v}{\lambda} t \Big) \\\\
&= A\cos \frac{2\pi}{\lambda} (x - v t) + i A\sin \frac{2\pi}{\lambda} (x - v t)
\end{align}
$$
这里面的代码具体实现之后的效果就如下文本块
$$ \begin{align} y = y(x,t) &= A e^{i\theta} \\\\ &= A (\cos \theta + i \sin \theta) \\\\ &= A (\cos(kx - \omega t) + i \sin(kx - \omega t)) \\\\ &= A\cos(kx - \omega t) + i A\sin(kx - \omega t) \\\\ &= A\cos \Big(\frac{2\pi}{\lambda}x - \frac{2\pi v}{\lambda} t \Big) + i A\sin \Big(\frac{2\pi}{\lambda}x - \frac{2\pi v}{\lambda} t \Big) \\\\ &= A\cos \frac{2\pi}{\lambda} (x - v t) + i A\sin \frac{2\pi}{\lambda} (x - v t) \end{align} $$
4.2 行内公式
和代码一样,有行内代码就有行内公式只要将latex语法夹在两个美元符之间就可以实现了,以经典的牛顿奈布尼茨公式举例,具体实现代码如下
$\int_a^bf(x)dx=F(x)|_a^b$
最终的实现效果就如下文本块所示
$\int_a^bf(x)dx=F(x)|_a^b$
5.其他操作
Markdown还支持表格和画图的操作,但是由于并不好操作并且有些网站不支持,所以这里就不对其进行讲解了,真要画流程图之类的还会是去做用visio之类的专业工具,而做表格word或者Excel做出来之后截图插入会方便很多
之后还包括超链接,比如点这里进我的个人中心源代码就是
[点这里进我的个人中心](https://www.acwing.com/user/myspace/index/59801/)
而插入图片也是比较简单的操作,代码差不多如下
![这里是图片注释](这里是图片地址,可以是绝对路径也可以是相对路径)
具体到实例代码就是![图片案例](https://cdn.acwing.com/media/article/image/2021/06/05/59801_ee970b0cc6-59801_55126aecc6-favicon.png)
显示成示例就是下面的文本块
如果说内容之间想惊醒分割的话,可以使用分割线,具体代码就是---
或者***
实例如以下代码快
---
***
表现出来的 形式如下文本块
最后还有一点点就是Markdown有自己的表情系统只要冒号里面夹一个单词,如果有就会显示成表情代码。比如用邮件所谓示例,代码是:email:
,实际效果是
最后还提一嘴,Markdown是支持自动根据标题生成目录的,具体代码是[TOC]
,不过acwing的貌似不支持
如果赶时间,直接看附录
这个表格包涵的Markdown大部分的基本操作
写在最后:
总结了一下Markdown的基本语法,与其说是教程,还不如说是我自己的Markdown实践,读下来你会发现真正的知识点只有最后这么一个表格,不过还是感谢你愿意花时间看到这里啦
如果有啥做的不好的欢迎在评论区指出,有问题也欢迎私信
山长水远,后会有期,告辞
更新:
随手写的东西居然被大佬们点赞了,开心
改了一些错别字(素质教育的漏网之鱼出来丢人了)
看了看某个大佬收藏里面的一篇教程,觉得自己井底之蛙了,改了一下标题
虽然是个没什么用的解(qi)决(ji)方(yin)法(qiao),但单独一行的\$ \$可以打出空行
cout<<"hello,world";
支持!
#### TQL
嘿嘿,还是大佬比较强
厉害了!
嘿嘿,谢谢大佬夸奖哦
# 超级用心诶~
## 为巨巨打call !!!
哈哈,随手总结的,阿铭太看得起我咯