Orac1e の blog

Back

MD语法及内嵌Astro组件Blur image

最近使用Astro框架重新搭了博客,演示一下各组件效果

Markdown基本语法#

1. 标题#

## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题
markdown

在 Typora 中建议开启 严格模式, 即不应为 #标题, 应为 # 标题. 应该要手动补上空格, 使得 Markdown 语法在其他文本编辑器上兼容.

此主题中只有二级及以下标题会在目录与大纲分级显示, 可以跳转.

2. 强调#

**欢迎报考吉林大学!** (我喜欢用这种)
__欢迎报考吉林大学!__
markdown

或者选中想要强调的文字按下 Ctrl + B.

E.G.

欢迎报考吉林大学!

3. 斜体#

*欢迎大佬来浇浇我各种知识* (我喜欢用这种)
_欢迎大佬来浇浇我各种知识_
**_欢迎大佬来浇浇我各种知识_**
markdown

或者选中想要强调的文字按下 Ctrl + I.

E.G. 欢迎大佬来浇浇我各种知识 欢迎大佬来浇浇我各种知识

4. 删除线#

~~我宣布个事儿, 我是Sabiyary!~~
markdown

E.G. 我宣布个事儿, 我是Sabiyary!

5. *高亮#

(注意: 此为扩展语法)

==我喜欢黄色, 也喜欢绿色==
markdown

E.G. ==我喜欢黄色, 也喜欢绿色==

6. 单行代码#

`sudo rm -rf /*`
markdown

E.G. sudo rm -rf /* (没事别乱敲这个! )

“请输入管理员密码: (闪烁的光标)“

7.代码块#

```
// 这里就可以开始输入你要的代码了
#include <stdio.h>
int mian() 
{
    print(“Hello, world!\n");
    retrun O;
}
``` // (这三个"`"文本编辑器会帮你自动补全 一般不用手动输)
c

E.G.

function a() {
    console.log("hello world!")
}
javascript

8. 引用#

> 24岁, 是学生.
> > 学生特有的无处不在(恼)
markdown

引用是可以嵌套的!

E.G.

18岁, 是学生.

学生特有的无处不在(恼)

9. 无序列表#

- 一颗是枣树 (我喜欢用这种)
+ 另一颗还是枣树
* (其实这种也可以, 不过由于在 Typora 中很难单个输入, 故不常用)
markdown

三种前置符都可以, 敲回车会自动补全, 可在 Typora 设置中调整补全的符号, 敲回车后按下 Tab 会缩进一级. E.G.

  • 一颗是枣树
  • 另一颗还是枣树

10. 有序列表#

我来这里就为了三件事:
1. 公平
2. 公平
3. 还是tm的公平!
markdown

敲回车会自动补全, 敲回车后按下 Tab 会缩进一级.

E.G. 我来这里就为了三件事:

  1. 公平
  2. 公平
  3. 还是tm的公平!

11. *上标#

(注意: 此为扩展语法)

C语言中int的上限是 2^31^ - 1 = 2147483647
markdown

E.G.

C语言中 int 的上限是 231 - 1 = 2147483647

12. *下标#

(注意: 此为扩展语法)

H~2~O 是剧毒的!
markdown

E.G.

H2O 是剧毒的!

13. *注释#

(注意: 此为扩展语法)

> 今日我们相聚于此, 是为了学习 Markdown 的使用, 它的教程对于全体「观众」而言, 值得足足两个硬币的支持鼓励![^1]

[^1]: 沃兹·基·硕德 改编自「公鸡」普契涅拉.
markdown

需要在文末写上注释对应的内容,注释显示在文末点击可跳转

E.G.

今日我们相聚于此, 是为了学习 Markdown 的使用, 它的教程对于全体「观众」而言, 值得足足两个硬币的支持鼓励!1

14. 链接#

(注意: 文内跳转为扩展用法)

[bilibili](https://www.bilibili.com/)
markdown

支持网页链接与文内跳转, 按住 Ctrl单击鼠标左键 即可跳转.

E.G. bilibili

15. 任务列表#

TodoList:
- [ ] 刷B站
- [ ] 写代码
- [x] 起床
markdown

x 代替 [ ] 中的空格来勾选任务列表. 在 Typora 中可以直接用鼠标左键单击勾选框.

E.G. TodoList:

  • 刷B站
  • 写代码
  • 起床

16. 表格#

| 学号 | 姓名  | 年龄 |
| :--- | :---: | ---: |
|114514|田所|24|
|1919810|浩三|25|
markdown

注:冒号的位置代表着 左对齐、居中、右对齐

第一行为表头, 并由第二行分割线决定对齐方式与长度, 第三行及之后即表格数据 E.G.

学号姓名年龄
114514田所24
1919810浩三25

17.图片#

![图片](图片的位置)
markdown

图片的位置使用图床url链接

E.G. 图片示例

18. 分割线#

***
--- (我喜欢用这种)
___
// (其实按三个及以上都可以)
markdown

由于 *_ 均会自动补全, 所以我觉得 - 最为方便. E.G.




19. Emoji表情#

(注意: 英文输入为扩展语法)

:sweat_smile: 
:drooling_face:
:clown_face:
// (敲回车或者鼠标点击, 后置的":"一般不需要手动输)
plaintext

这个功能唯一的要求就是英语水平要高, 或者大概记得各个 Emoji 的英文名.

E.G.

:sweat_smile: :drooling_face: :clown_face:

对于其余普通的 Markdown 文本编辑器, 可以直接将 Emoji 表情复制进来, 这是直接硬编码的 (刻进DNA里)

E.G.

😅🤤🤡

这里分享一个可以复制全Emoji的网站

20. 内联 HTML 代码#

<div style="text-align:center">
  <font style="color:red">我不会 HTML 呜呜呜... 浇浇我</font>
</div>

<center>简单的文字居中也可以这样</center>

<u>我差点忘了还有下划线这东西...</u>
html

只要你会写, 你完全可以把 Markdown 当作 HTML 来写.

同时, .md 文件可以直接导出成一个网页.

下划线可以选中想要下划的文字按下 Ctrl + U.

E.G.

我不会 HTML 呜呜呜… 浇浇我
简单的文字居中也可以这样
我差点忘了还有下划线这东西…

21. 内联LaTeX公式#

(注意: 部分编译器会不识别部分符号)

$\LaTeX$ 是最好用的论文排版语言! 不信你看!

$a^n+b^n=c^n$

$$\sqrt{x} + \sqrt{x^{2}+\sqrt{y}} = \sqrt[3]{k_{i}} - \frac{x}{m}$$
markdown

$ 包围为单条公式, 按下两个 $ 并敲回车即生成公式块.

E.G.

LaTeX\LaTeX 是最好用的论文排版语言! 不信你看!

an+bn=cna^n+b^n=c^n

x+x2+y=ki3xm\sqrt{x} + \sqrt{x^{2}+\sqrt{y}} = \sqrt[3]{k_{i}} - \frac{x}{m}


本次升级带来的新特性,体验一下吧

Astro组件—容器#

Card#

import { Card } from 'astro-pure/user'

<Card
  as='a'
  href='#card'
  heading='Lorem ipsum'
  subheading='Lorem ipsum dolor sit amet, vidit suscipit at mei.'
  date='August 2021'
>
  You can even contain a list here
</Card>
jsx

Collapse#

Lorem ipsum

Lorem ipsum dolor sit amet, vidit suscipit at mei.
Are you sure you want to see?

Lorem ipsum

Lorem ipsum dolor sit amet, vidit suscipit at mei.
import { Collapse } from 'astro-pure/user'

<Collapse title='Lorem ipsum'> Lorem ipsum dolor sit amet, vidit suscipit at mei. </Collapse>
<Collapse title='Lorem ipsum'>
  <div slot='before' class='mt-2'>Are you sure you want to see?</div>
  <div>Lorem ipsum dolor sit amet, vidit suscipit at mei.</div>
</Collapse>
jsx

Aside#

import { Aside } from 'astro-pure/user'

<Aside>No type selected will default to 'note'. 😉</Aside>
<Aside type="tip">
Other content is also supported in aside! 😍

// ```js
// A code snippet, for example.
// ```
</Aside>
<Aside type='caution' title='You should know it!'>Is your code buggy again? 🤨</Aside>
<Aside type='danger'>Have you used `rm -rf` to clean your computer? 😡</Aside>
jsx

Tabs#

Sirius, Vega, Betelgeuse
import { Tabs, TabItem } from 'astro-pure/user';

<Tabs>
  <TabItem label="Stars">Sirius, Vega, Betelgeuse</TabItem>
  <TabItem label="Moons">Io, Europa, Ganymede</TabItem>
</Tabs>
jsx

MDX Repl#

Hello

<p>Hello</p>
html
import { MdxRepl } from 'astro-pure/user'

// Width is optional; using width parameter to set
// all elements inside the MDX Repl component.
// (slot desc is not included this parameter)
<MdxRepl width='100%'>
<p>Hello</p>
<Fragment slot='desc'>
  ```html
  <p>Hello</p>
  ```
</Fragment>
</MdxRepl>
jsx

Astro组件—列表#

CardList#

A list

  • I am hidden!

A list

import { CardList } from 'astro-pure/user'

<CardList title='A list' list={
  [{title: 'I am hidden!'}]
} collapse />
<CardList title='A list' list={
  [
    { title: 'Lorem ipsum', link: '#list' },
    { title: 'Dolor sit amet', children: [{
      title: 'Vidit suscipit', link: '#'
    }] }
  ]
} />
jsx

Timeline#

  • August 2021
    Hello
  • August 2022
    World!
import { Timeline } from 'astro-pure/user'

<Timeline events={
  [
    { date: 'August 2021', content: 'Hello' },
    { date: 'August 2022', content: '<i>World!</i>' },
  ]
} />
jsx

Steps#

How to Yi Jian San Lian:

  1. Dian Zan

  2. Tou Bi

  3. Shou Cang

    Or GuanZhu sometimes.

import { Steps } from 'astro-pure/user'

How to Yi Jian San Lian:

<Steps>
1. Dian Zan
2. Tou Bi
3. Shou Cang
  
  Or GuanZhu sometimes.
</Steps>
jsx

Astro组件—简单文本渲染#

Button#

Simple

Link style

Back

Pill style

Italic
import { Button } from 'astro-pure/user'

<div class='flex gap-x-2'>
  <Button as='div' title='Simple' />
  <Button as='a' href='#button' title='Link style' variant='ahead' class='not-prose' />
  <Button as='div' title='Back' variant='back' />
  <Button as='div' title='Pill style' variant='pill' />
  <Button as='div' variant='pill'><i>Italic</i></Button>
</div>
jsx

Spoiler#

No one can find me. But I am exposed here.

import { Spoiler } from 'astro-pure/user'

<Spoiler>No one can find me.</Spoiler> But I am exposed here.
jsx

Formatted Date#

import { FormattedDate } from 'astro-pure/user'

<FormattedDate date={new Date('2021-08-01')} dateTimeOptions={{ month: 'short' }} />
jsx

Label#

Hello

import { Label } from 'astro-pure/user'

<Label title='Hello' />
jsx

SVG Loader#

import { Svg } from 'astro-pure/user'

<Svg src={import('@/assets/icons/key.svg?raw')} />
jsx

资源#

Icon#

Single use:

Preview all icons available (click button to copy):

import { Icon } from 'astro-pure/user'

Single use: <Icon name='rss' class='inline' />

Preview all icons available (click button to copy):

import { Icons as allIcons } from 'astro-pure/libs'
import { Button } from 'astro-pure/user'

<div class='flex flex-wrap gap-2'>
{
  Object.keys(allIcons).map(icon => {
    const script = `navigator.clipboard.writeText('${icon}');document.dispatchEvent(new CustomEvent('toast',{detail:{message:'Copied "${icon}" to clipboard!'}}))`
    return (
      <Button as='button' type='button' class='cursor-pointer' onclick={script}>
        <Icon slot='before' name={icon} />
        <span>{icon}</span>
      </Button>
    )
  })
}
</div>
jsx

其他高级组件#

GitHub卡片#

Byforacle / astro-blog

Waiting for api.github.com...

???
???
???
?????
import { GithubCard } from 'astro-pure/advanced'

<GithubCard repo='cworld1/astro-theme-pure' />
jsx

链接预览#

预览内容中插入的链接

import { LinkPreview } from 'astro-pure/advanced'

<LinkPreview href='https://www.cloudflare.com/' />
// `zoomable` option will control mediumzoom tag
// <LinkPreview href='https://www.cloudflare.com/' zoomable={false} />
<LinkPreview href='https://www.cloudflare.com/' hideMedia />
jsx

二维码生成#

import { QRCode } from 'astro-pure/advanced'

// <QRCode /> // default to render current page link
<QRCode
  content='https://github.com/Byforacle/astro-blog'
  class='inline-flex max-w-44 p-3 bg-muted rounded-lg border' />
jsx

Footnotes#

  1. 沃兹·基·硕德 改编自「公鸡」普契涅拉.

MD语法及内嵌Astro组件
https://www.orac1e.me/blog/b1og
Author Orac1e
Published at July 26, 2023
Comment seems to stuck. Try to refresh?✨