Для описания проектов на GitHub используется README.md, который пишется на языке разметки markdown. Что и как поддерживается - расписано ниже.
-
body { margin: 0; padding: 0; }
<?php phpinfo();?>
Пример блока для C#:
using MarkdownSharp;
using MarkdownSharp.Extensions.Mal;
Markdown mark = new Markdown();
// Short link for MAL -
// http://myanimelist.net/people/413/Kitamura_Eri => mal://Kitamura_Eri
mark.AddExtension(new Articles());
mark.AddExtension(new Profile());
mark.Transform(text);
я нумерация 1)
3. Седьмой уровень "нумерованный" - 1 (нарушена нумерация, новая нумерация 2)
1. Восьмой уровень "нумерованный" - 1
2. Первый уровень "нумерованный" - 2
- Первый уровень "нумерованный" - 3
4. Первый уровень "нумерованный" - 4 (нарушена нумерация, новая нумерация 1)
5. Первый уровень "нумерованный" - 5 (нарушена нумерация, новая нумерация 2)- Первый уровень "нумерованный" - 1
- Второй уровень "маркер"
- Третий уровень "маркер"
- Третий уровень "маркер"
- Третий уровень "нумерованный" - 1
- Четвертый уровень "нумерованный" - 1
- Пятый уровень "нумерованный" - 1
- Шестой уровень "нумерованный" - 1
- Седьмой уровень "нумерованный" - 1
- Седьмой уровень "маркер"
- Седьмой уровень "нумерованный" - 2
- Седьмой уровень "нумерованный" - 3
- Восьмой уровень "нумерованный" - 1
- Шестой уровень "нумерованный" - 1
- Пятый уровень "нумерованный" - 1
- Четвертый уровень "нумерованный" - 1
- Второй уровень "маркер"
- Первый уровень "нумерованный" - 2
- Первый уровень "маркерный" - 3
- Первый уровень "нумерованный" - 4 (хотя по идее должен быть 3)
- Первый уровень "нумерованный" - 5 (хотя, по идее должен быть 3)
Пример блока для `Python`:
```Python
from timeit import Timer
tmp = "Python 3.2.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32."
def case1(): # А. инкрементальные конкатенации в цикле
s = ""
for i in range(10000):
s += tmp
def case2(): # Б. через промежуточный список и метод join
s = []
for i in range(10000):
s.append(tmp)
s = "".join(s)
def case3(): # В. списковое выражение и метод join
return "".join([tmp for i in range(10000)])
def case4(): # Г. генераторное выражение и метод join
return "".join(tmp for i in range(10000))
for v in range(1,5):
print (Timer("func()","from __main__ import case%s as func" % v).timeit(200))
Задать маркированный список можно несколькими символами -, + или *:
- Уровень списка 1. Пункт 1.
- Уровень списка 1. Пункт 2.
- Уровень списка 1. Пункт 3.
- Уровень списка 1. Пункт 1.
- Уровень списка 1. Пункт 2.
- Уровень списка 1. Пункт 3.
+ Уровень списка 1. Пункт 1.
+ Уровень списка 1. Пункт 2.
+ Уровень списка 1. Пункт 3.
- Уровень списка 1. Пункт 1.
- Уровень списка 1. Пункт 2.
- Уровень списка 1. Пункт 3.
* Уровень списка 1. Пункт 1.
* Уровень списка 1. Пункт 2.
* Уровень списка 1. Пункт 3.
- Уровень списка 1. Пункт 1.
- Уровень списка 1. Пункт 2.
- Уровень списка 1. Пункт 3.
Можно создавать многоуровневые списки. Каждый уровень отделяется четырьмя (4) пробелами:
- Уровень списка 1. Пункт 1.
- Уровень списка 2. Пункт 1.
- Уровень списка 1. Пункт 2.
- Уровень списка 2. Пункт 1.
- Уровень списка 2. Пункт 2.
- Уровень списка 1. Пункт 3.
- Уровень списка 2. Пункт 1.
- Уровень списка 3. Пункт 1.
- Уровень списка 3. Пункт 2.
- Уровень списка 4. Пункт 1.
- Уровень списка 1. Пункт 1.
- Уровень списка 2. Пункт 1.
- Уровень списка 1. Пункт 2.
- Уровень списка 2. Пункт 1.
- Уровень списка 2. Пункт 2.
- Уровень списка 1. Пункт 3.
- Уровень списка 2. Пункт 1.
- Уровень списка 3. Пункт 1.
- Уровень списка 3. Пункт 2.
- Уровень списка 4. Пункт 1.
- Уровень списка 2. Пункт 1.
Каждый уровень отделяется двумя пробелами.
Для Githib работа с нумерованными списками выглядит очень интересно. Каждый уровень отделяется четырьмя (4) пробелами:
1. Первый уровень 1
1. Второй уровень 1
1. Третий уровень 1
1. Четвертый уровень 1
1. Пятый уровень 1
1. Шестой уровень 1
1. Седьмой уровень 1
1. Восьмой уровень 1
2. Первый уровень 2
2. Первый уровень (должно быть 3)
4. Первый уровень 4
- Первый уровень 1
- Второй уровень 1
- Третий уровень 1
- Четвертый уровень 1
- Пятый уровень 1
- Шестой уровень
- Седьмой уровень
- Седьмой уровень
- Седьмой уровень
- Шестой уровень
- Пятый уровень 1
- Четвертый уровень 1
- Третий уровень 1
- Второй уровень 1
- Первый уровень 2
- Первый уровень (должно быть 3)
- Первый уровень 4
При использовании смешанных списков нужно очень внимательно следить за нумерацией. Лучше, как и в нумерованных, использовать четыре (4) пробела для отделения уровня.
1. Первый уровень "нумерованный" - 1
* Второй уровень "маркер"
+ Третий уровень "маркер"
- Третий уровень "маркер"
1. Третий уровень "нумерованный" - 1
1. Четвертый уровень "нумерованный" - 1
1. Пятый уровень "нумерованный" - 1
1. Шестой уровень "нумерованный" - 1
1. Седьмой уровень "нумерованный" - 1
* Седьмой уровень "маркер"
2. Седьмой уровень "нумерованный" - 1 (нарушена нумерация, нова
#### Список задач
(Task List)
Можно создавать "Списки задач". Для этого необходимо использовать `- [ ]` для поставленной задачи и `- [X]` для выполненной задачи.
- Придумать внешний вид резюме
- Написать основные категории
- Опубликовать
- [X] Придумать внешний вид резюме
- [ ] Написать основные категории
- [X] Опубликовать
Также можно создавать многоуровневые списки задач. Каждый уровень отделяется **четырьмя** (4) пробелами:
- Задача 1
- Подзадача 1 для Задачи 1
- Подзадача 2 для Задачи 1
- Задача 2
- Подзадача 1 для Задачи 2
- Подзадача 2 для Задачи 2
- Задача 3
- Подзадача 1 для Задачи 3
- Подзадача 1 для Подзадача 1 для Задачи 3
- Подзадача 1 для Задачи 3
- [X] Задача 1
- [X] Подзадача 1 для Задачи 1
- [X] Подзадача 2 для Задачи 1
- [ ] Задача 2
- [X] Подзадача 1 для Задачи 2
- [ ] Подзадача 2 для Задачи 2
- [ ] Задача 3
- [ ] Подзадача 1 для Задачи 3
- [ ] Подзадача 1 для Подзадача 1 для Задачи 3
[:arrow_up:Оглавление](#Оглавление)
___
## Ссылки
Либо просто вставить ссылку, либо дополнительно задать текст ссылки (пробела между скобками быть не должно):
Первый вариант вставки ссылок - это просто написать адрес сайта https://ru.wikipedia.org/wiki/Markdown
Первый вариант вставки ссылок - это просто написать адрес сайта https://ru.wikipedia.org/wiki/Markdown
Второй вариант записывается так: `[текст ссылки](адрес ссылки)`
[wikipedia.org](https://ru.wikipedia.org/wiki/Markdown)
[wikipedia(DOT)org]:(wikipedia.org)
[:arrow_up:Оглавление](#Оглавление)
____
## Вставка изображения
 "Markdown logo")
### Дополнительно:
#### Вставка ссылки с картинкой на ролик с YouTube
Описание комбинации `[](ссылка на страничку YouTube)`
Пример:
```[](https://youtu.be/SEvR78OhGtw)```
Что мы увидим:
[](https://youtu.be/SEvR78OhGtw)
[:arrow_up:Оглавление](#Оглавление)
____
## Вставка таблиц
| LEFT | CENTER | RIGHT |
|---|---|---|
| По левому краю | По центру | По правому краю |
| текст | текст | текст |
| LEFT | CENTER | RIGHT |
|----------------|:---------:|----------------:|
| По левому краю | По центру | По правому краю |
| текст | текст | текст |
**Внимание:** Если в тексте таблицы нужно использовать символ "вертикальная черта - `|`", то вместо него необходимо написать замену на комбинацию HTML-кода* `|`. Это нужно для того, что бы таблица не потеряла ориентации.
*) - Можно использовать ASCII и/или UTF коды.
**Пример:**
| Обозначение | Описание | Пример регулярного выражения |
|---|---|---|
| literal | Строка содержит символьный литерал literal | foo |
| re1|re2 | Строка содержит регулярные выражения rel или re2 |
foo|bar |
**Результат:**
| Обозначение | Описание | Пример регулярного выражения|
|----:|:----:|:----------|
| literal | Строка содержит символьный литерал literal | foo |
| re1|re2 | Строка содержит регулярные выражения `rel` или `re2` | foo|bar |
[:arrow_up:Оглавление](#Оглавление)
____
## Диаграмм Mermaid.js
Появилась возможность вставлять диаграммы [Mermaid.js](https://mermaid-js.github.io/mermaid/#/)
<pre>
```mermaid
... код диаграммы ...
```mermaid
erDiagram
CUSTOMER ||--o{ ORDER : places
ORDER ||--|{ LINE-ITEM : contains
CUSTOMER }|..|{ DELIVERY-ADDRESS : uses
```
```mermaid
erDiagram
CUSTOMER ||--o{ ORDER : places
ORDER ||--|{ LINE-ITEM : contains
CUSTOMER }|..|{ DELIVERY-ADDRESS : uses
```
## Параграфы и разрывы строк
Для того, чтобы создать параграф с использованием синтаксиса языка Markdown, достаточно отделить строки текста одной (или более) пустой строкой (пустой считается всякая строка, которая не содержит в себе ничего, кроме пробелов и символов табуляции). Для того, чтобы вставить видимый перенос строки (элемент ) необходимо окончить строку двумя пробелами и нажатием клавиши «Enter». Многие элементы синтаксиса Markdown выглядят и работают гораздо лучше в случае, когда их форматируют с помощью «жесткого перевода строк» (разделение строк, осуществленное самим пользователем, а не программой автоматически). К таким элементам относятся цитаты, списки и пр. Очень подробно на русском языке о диаграммах Mermaid.js: https://habr.com/ru/post/652867/
В чистом Маркдауне блоки кода отбиваются 4 пробелами в начале каждой строки.
Но в GitHub-Flavored Markdown (сокращенно GFM) есть более удобный способ: ставим по три апострофа (на букве Ё) до и после кода. Также можно указать язык исходного кода.
<nav class="nav nav-primary">
<ul>
<li class="tab-conversation active">
<a href="#" data-role="post-count" class="publisher-nav-color" data-nav="conversation">
<span class="comment-count">0 комментариев</span>
<span class="comment-count-placeholder">Комментарии</span>
</a>
</li>
<li class="dropdown user-menu" data-role="logout">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="dropdown-toggle-wrapper">
<span>
Войти
</span>
</span>
<span class="caret"></span>
</a>
</li>
</ul>
</nav>Самое приятное, что в коде не нужно заменять угловые скобки < > и амперсанд & на их html-сущности.
Для вставки кода внутри предложений нужно заключать этот код в апострофы (на букве Ё). Пример: <html class="ie no-js">.
Если внутри кода есть апостроф, то код надо обрамить двойными апострофами: There is a literal backtick (`) here.