Код Markdown
Markdown предоставляет несколько способов отображения кода: от простого встроенного кода до сложных блоков кода, чтобы удовлетворить потребности отображения кода в различных сценариях.
Встроенный код
Если это функция или фрагмент кода в абзаце, вы можете обернуть его обратными кавычками (`), например:
`printf()` 函数
Отображаемый результат выглядит следующим образом:

Распространённые примеры использования:
- Имя функции: используйте
console.log()вывод информации - Имя переменной: присвойте значение
userNamevariable - Командная строка: запустите
npm installустановите зависимости - Клавиша клавиатуры: нажать
Ctrl+Cкопировать содержимое - Имя файла: редактировать
index.htmlфайл

Экранирование специальных символов
Когда вам нужно отобразить обратные кавычки или другие специальные символы во встроенном коде, необходимо выполнить экранирование.
Способы отображения обратных кавычек:
Используйте двойные обратные кавычки, чтобы окружить одну обратную кавычку:
``Use `backticks` to surround code``
Отображённый результат:

Используйте несколько обратных кавычек, чтобы окружить:
```Code containing `` double backticks```
Отображённый результат:

Обработка других специальных символов:
- HTML-теги:
<div>элемент - Математический символ: вычислить
x + y = z - Специальный символ: используйте
для обозначения пробела
Блоки кода
Блоки кода с отступом
В блоках кода используются4 пробелаилисимвол табуляции (клавиша Tab)。
Формат синтаксиса:
Normal text paragraph
This is an indented code block
Each line is preceded by four spaces
Keep the original format of the code
Continue normal text

Пример:

Отображаемый результат выглядит следующим образом:

Блоки кода с тройными обратными кавычками
Вы также можете использовать```, чтобы обернуть фрагмент кода, и указать язык (или нет):
``` Multi-line code content Can contain blank lines Keep original indentation ```

Тройные обратные кавычки (```) — наиболее часто используемый синтаксис блоков кода, поддерживающий подсветку синтаксиса и отображение многострочного кода.
```javascript
$(document).ready(function () {
alert('EXAMPLE');
});
```
Отображаемый результат выглядит следующим образом:

Примечания:
- Блоки кода с отступом требуют пустых строк до и после для разделения
- Все строки кода должны сохранять одинаковый отступ
- Подсветка синтаксиса не поддерживается
- При использовании в списке требуется отступ в 8 пробелов
Идентификаторы языков и подсветка синтаксиса
Добавление идентификатора языка после тройных обратных кавычек может включить подсветку синтаксиса.
Список распространённых идентификаторов языков:
javascript/js- JavaScriptpython/py- Pythonhtml- HTMLcss- CSSsql- SQLjson- JSONxml- XMLyaml/yml- YAMLbash/shell- Shell scriptjava- Javacpp/c++- C++csharp/c#- C#php- PHPruby/rb- Rubygo- язык Gorust- Rusttypescript/ts- TypeScript
JavaScript:
```javascript
const users = [
{ name: "Alice", age: 25 },
{ name: "Bob", age: 30 }
];
const adults = users.filter(user => user.age >= 18);
console.log(adults);
```
Python:
```python
def calculate_area(radius):
"""计算圆的面积"""
import math
return math.pi * radius ** 2
# 使用函数
area = calculate_area(5)
print(f"圆的面积是: {area:.2f}")
```
SQL:
```sql SELECT u.name, u.email, COUNT(o.id) as order_count FROM users u LEFT JOIN orders o ON u.id = o.user_id WHERE u.created_at >= '2024-01-01' GROUP BY u.id, u.name, u.email ORDER BY order_count DESC LIMIT 10; ```

Расширенные возможности блоков кода
Отображение номеров строк
Некоторые рендереры Markdown поддерживают отображение номеров строк, реализуемое через специальный синтаксис или конфигурацию.
Пример синтаксиса (частично поддерживается):
```javascript {.line-numbers}
function fibonacci(n) {
if (n <= 1) return n;
return fibonacci(n - 1) + fibonacci(n - 2);
}
console.log(fibonacci(10));
```
Или используйте:
```javascript showLineNumbers
const numbers = [1, 2, 3, 4, 5];
const doubled = numbers.map(x => x * 2);
const sum = doubled.reduce((a, b) => a + b, 0);
console.log(`总和: ${sum}`);
```
Сравнение различий кода
Используется для отображения добавлений, удалений или изменений в коде, часто применяется для показа изменений в системе контроля версий.
Синтаксис diff:
```diff
function calculateTotal(items) {
- let total = 0;
+ let total = 0.0;
for (let item of items) {
- total += item.price;
+ total += parseFloat(item.price);
}
+ // 保留两位小数
+ total = Math.round(total * 100) / 100;
return total;
}
```

Отображение diff в стиле Git:
```diff
@@ -1,5 +1,8 @@
function greetUser(name) {
- console.log("Hello " + name);
+ if (!name) {
+ throw new Error("Name is required");
+ }
+ console.log(`Hello, ${name}!`);
}
```Сравнение diff для конкретного языка:
```javascript
// 之前的代码
const oldFunction = () => {
var x = 10; // ❌ 使用 var
console.log("Value: " + x); // ❌ 字符串拼接
}
// 改进后的代码
const newFunction = () => {
const x = 10; // ✅ 使用 const
console.log(`Value: ${x}`); // ✅ 模板字符串
}
```
