Markdown实现代码高亮,注释代码


👈点击这里也可查看

前言

Markdown的代码高亮时对代码语法的扩展,即通过对代码块进行语法标注,对其在渲染输出时匹配不同的样式。

语法详解

在 Markdown 文件中,代码块后面标注语法类型,即可完成语法的高亮显示。
实例一:
代码:

​```html
<!DOCTYPE html>
<html>
 <head><title>highlight</title></head>
 <body>
 <p>Hello world</p>
 </body>
</html>
​```

渲染:

<!DOCTYPE html>
<html>
 <head><title>highlight</title></head>
 <body>
 <p>Hello world</p>
 </body>
</html>

实例二:
代码:

​```python
import pyautogui

# 获取屏幕的大小
screen_width, screen_height = pyautogui.size()

# 捕捉鼠标位置和点击事件的回调函数
def on_mouse_event(event):
    print(event)

# 注册回调函数
pyautogui.onMouseEvent = on_mouse_event

# 开始捕捉鼠标事件
pyautogui.PAUSE = 0.1 # 设置每次捕捉的时间间隔
pyautogui.FAILSAFE = True  # 如果鼠标移到屏幕的四个角,将会触发 pyautogui.FailSafeException 异常,可进行异常处理

# 捕捉鼠标事件,直到用户按下键盘上的Ctrl+C来停止程序
try:
    while True:
        pass
except KeyboardInterrupt:
    pass

​```

渲染:

import pyautogui

# 获取屏幕的大小
screen_width, screen_height = pyautogui.size()

# 捕捉鼠标位置和点击事件的回调函数
def on_mouse_event(event):
    print(event)

# 注册回调函数
pyautogui.onMouseEvent = on_mouse_event

# 开始捕捉鼠标事件
pyautogui.PAUSE = 0.1 # 设置每次捕捉的时间间隔
pyautogui.FAILSAFE = True  # 如果鼠标移到屏幕的四个角,将会触发 pyautogui.FailSafeException 异常,可进行异常处理

# 捕捉鼠标事件,直到用户按下键盘上的Ctrl+C来停止程序
try:
    while True:
        pass
except KeyboardInterrupt:
    pass

实例三:
代码:

​```c
#include <iostream>
#include <windows.h>

int main() {
    // 获取屏幕尺寸
    int screenWidth = GetSystemMetrics(SM_CXSCREEN);
    int screenHeight = GetSystemMetrics(SM_CYSCREEN);

    // 创建设备上下文
    HDC hScreenDC = GetDC(NULL);
    HDC hMemoryDC = CreateCompatibleDC(hScreenDC);
    HBITMAP hBitmap = CreateCompatibleBitmap(hScreenDC, screenWidth, screenHeight);
    HBITMAP hOldBitmap = (HBITMAP)SelectObject(hMemoryDC, hBitmap);

    // 截屏
    BitBlt(hMemoryDC, 0, 0, screenWidth, screenHeight, hScreenDC, 0, 0, SRCCOPY);

    // 保存截屏到文件
    BITMAPINFOHEADER bi;
    bi.biSize = sizeof(BITMAPINFOHEADER);
    bi.biWidth = screenWidth;
    bi.biHeight = -screenHeight;
    bi.biPlanes = 1;
    bi.biBitCount = 32;
    bi.biCompression = BI_RGB;
    bi.biSizeImage = 0;
    bi.biXPelsPerMeter = 0;
    bi.biYPelsPerMeter = 0;
    bi.biClrUsed = 0;
    bi.biClrImportant = 0;

    HANDLE hDib = GlobalAlloc(GHND, sizeof(BITMAPINFOHEADER) + screenWidth * screenHeight * 4);
    LPBITMAPINFOHEADER lpbi = (LPBITMAPINFOHEADER)GlobalLock(hDib);
    *lpbi = bi;

    HANDLE hFile = CreateFile("screenshot.bmp", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    DWORD dwWritten;
    WriteFile(hFile, lpbi, sizeof(BITMAPINFOHEADER), &dwWritten, NULL);
    WriteFile(hFile, GetBitmapBits(hBitmap, screenWidth * screenHeight * 4, NULL), screenWidth * screenHeight * 4, &dwWritten, NULL);
    CloseHandle(hFile);

    // 释放资源
    GlobalUnlock(hDib);
    GlobalFree(hDib);
    SelectObject(hMemoryDC, hOldBitmap);
    DeleteDC(hMemoryDC);
    DeleteDC(hScreenDC);

    std::cout << "截屏已保存为screenshot.bmp" << std::endl;

    return 0;
}

​```

渲染:

#include <iostream>
#include <windows.h>

int main() {
    // 获取屏幕尺寸
    int screenWidth = GetSystemMetrics(SM_CXSCREEN);
    int screenHeight = GetSystemMetrics(SM_CYSCREEN);

    // 创建设备上下文
    HDC hScreenDC = GetDC(NULL);
    HDC hMemoryDC = CreateCompatibleDC(hScreenDC);
    HBITMAP hBitmap = CreateCompatibleBitmap(hScreenDC, screenWidth, screenHeight);
    HBITMAP hOldBitmap = (HBITMAP)SelectObject(hMemoryDC, hBitmap);

    // 截屏
    BitBlt(hMemoryDC, 0, 0, screenWidth, screenHeight, hScreenDC, 0, 0, SRCCOPY);

    // 保存截屏到文件
    BITMAPINFOHEADER bi;
    bi.biSize = sizeof(BITMAPINFOHEADER);
    bi.biWidth = screenWidth;
    bi.biHeight = -screenHeight;
    bi.biPlanes = 1;
    bi.biBitCount = 32;
    bi.biCompression = BI_RGB;
    bi.biSizeImage = 0;
    bi.biXPelsPerMeter = 0;
    bi.biYPelsPerMeter = 0;
    bi.biClrUsed = 0;
    bi.biClrImportant = 0;

    HANDLE hDib = GlobalAlloc(GHND, sizeof(BITMAPINFOHEADER) + screenWidth * screenHeight * 4);
    LPBITMAPINFOHEADER lpbi = (LPBITMAPINFOHEADER)GlobalLock(hDib);
    *lpbi = bi;

    HANDLE hFile = CreateFile("screenshot.bmp", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    DWORD dwWritten;
    WriteFile(hFile, lpbi, sizeof(BITMAPINFOHEADER), &dwWritten, NULL);
    WriteFile(hFile, GetBitmapBits(hBitmap, screenWidth * screenHeight * 4, NULL), screenWidth * screenHeight * 4, &dwWritten, NULL);
    CloseHandle(hFile);

    // 释放资源
    GlobalUnlock(hDib);
    GlobalFree(hDib);
    SelectObject(hMemoryDC, hOldBitmap);
    DeleteDC(hMemoryDC);
    DeleteDC(hScreenDC);

    std::cout << "截屏已保存为screenshot.bmp" << std::endl;

    return 0;
}


使用场景及实例

代码块作为对代码段落的增强功能,目的是使文档中出现的代码块在表现时可以更为清晰有层次。

各式各样的 Hello world

​```java
// Java
class HelloWorld {
 public static void main(String[] args) {
 System.out.println("Hello, world!");
 }
}
​```
``python
# Python
print("Hello, world!")
​```

​```ruby
# Ruby
puts "Hello, world!"
​```

​```scala
// Scala
object HelloWorld extends App {
 println("Hello, world!")
}
​```

​```go
// Go
package main
import "fmt"
func main() {
 fmt.Println("Hello, world!")
}
​```


渲染:

// Java
class HelloWorld {
 public static void main(String[] args) {
 System.out.println("Hello, world!");
 }
}
# Python
print("Hello, world!")
# Ruby
puts "Hello, world!"
// Scala
object HelloWorld extends App {
 println("Hello, world!")
}
// Go
package main
import "fmt"
func main() {
 fmt.Println("Hello, world!")
}

小结

如果对您有帮助,请您点赞、收藏、关注、转发,让更多的人看到。

其他文章

点击此处查看
👉Markdown语法字体字号讲解
👉Markdown如何填充前景色、背景色
👉Markdown代码块,超链接,图片的插入
👉Markdown如何添加任务列表-复选框的添加
👉Markdown中特殊符号的使用
👉Markdown实现代码高亮,注释代码
👉Markdown注释的用法

快来试试吧

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐