> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/uk/baza-znan/166-writing-markdown-in-latex-documents.md).

# Написання Markdown у документах LaTeX

## Вступ

Щоб використовувати markdown у документі LaTeX, вам потрібно завантажити [`markdown` accents](https://www.ctan.org/pkg/markdown) у преамбулі документа:

```latex
\usepackage[settings]{markdown}
```

де `[settings]` є *необов'язковим* набором параметрів, що використовується для налаштування або ввімкнення певних можливостей пакета. Зверніться до `markdown` accents [документації](https://anorien.csc.warwick.ac.uk/mirrors/CTAN/macros/generic/markdown/markdown.html) для [опису параметрів пакета (опцій)](https://anorien.csc.warwick.ac.uk/mirrors/CTAN/macros/generic/markdown/markdown.html#options).

У цій статті ми коротко розглянемо обидва *вбудованому* markdown, написаний у вашому документі, та імпорт *external* markdown, що міститься у текстовому файлі.

* **Примітка**: Зазвичай використання markdown у документі LaTeX слід розглядати як додатковий і зручний варіант для написання деяких елементів вмісту вашого документа, а не як альтернативний синтаксис, що повністю замінює сам LaTeX.

## Використання зовнішніх файлів markdown

Використайте команду

```latex
\markdownInput{filename}
```

щоб включити файл markdown `filename`.

Наведений нижче приклад вставляє файл під назвою `example.md`. Скористайтеся посиланням під кодовими фрагментами, щоб відкрити їх як проєкт Overleaf:

**`main.tex`**

```latex
\documentclass{article}
\title{Using the markdown package}
\usepackage[smartEllipses]{markdown}
\begin{document}

\markdownInput{example.md}

\end{document}
```

**`example.md`**

```latex
%% example.md

# Я — файл markdown.

І я можу робити *курсив*.
## З підзаголовками

> Блокові цитати
> записуються ось так.
>
> Вони можуть охоплювати кілька абзаців,
> якщо хочете.

Використовуйте 3 тире для em-dash. Використовуйте 2 тире для
діапазонів (наприклад, «це все в розділах 12--14»).
Три крапки ... буде перетворено на багатокрапку
(за умови, що ви включите опцію smartEllipses
у преамбулі). Підтримується Unicode.
```

[Відкрийте ці файли як проєкт Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name\[]=main.tex\&snip\[]=%5Cdocumentclass%7Barticle%7D%0A%5Ctitle%7BUsing+the+markdown+package%7D%0A%5Cusepackage%5BsmartEllipses%5D%7Bmarkdown%7D%0A%5Cbegin%7Bdocument%7D%0A%0A%5CmarkdownInput%7Bexample.md%7D%0A%0A%5Cend%7Bdocument%7D\&snip_name\[]=example.md\&snip\[]=%25%25+example.md%0A%0A%23+I%27m+a+markdown+file.%0A%0AAnd+I+can+do+%2Aemphasis%2A.%0A%23%23+With+sub-headers%0A%0A%3E+Block+quotes+are%0A%3E+written+like+so.%0A%3E%0A%3E+They+can+span+multiple+paragraphs%2C%0A%3E+if+you+like.%0A%0AUse+3+dashes+for+an+em-dash.+Use+2+dashes+for+%0Aranges+%28ex.%2C+%22it%27s+all+in+chapters+12--14%22%29.+%0AThree+dots+...+will+be+converted+to+an+ellipsis+%0A%28provided+you+include+the+smartEllipses+option+%0Ain+your+preamble%29.+Unicode+is+supported.\&main_document=main.tex)

Цей приклад дає такий результат:

![Зображення, що показує результат роботи пакета markdown](/files/52a7fa75b0a030b5aed3ad04c6e9eb74163477cf)

## Використання вбудованого markdown

Використовуйте `markdown` середовище:

```latex
\begin{markdown}
...ваш markdown
тут...
\end{markdown}
```

щоб писати вбудований markdown, як показано в наступному прикладі:

```latex
\documentclass{article}
\usepackage[hashEnumerators,smartEllipses]{markdown}
\begin{document}

Використання вбудованого markdown:

\begin{markdown}
Заголовок h1
============

Абзаци розділяються порожнім рядком.

2-й абзац. *Курсив*, **жирний** і `моноширинний`. Маркований список
виглядає так:

* цей
* той
* інший

> Блокові цитати
> записуються ось так.
>
> Вони можуть охоплювати кілька абзаців,
> якщо хочете.

Заголовок h2
------------

Ось нумерований список (використайте опцію `hashEnumerators`, якщо хочете використовувати решітки):

#. перший пункт
#. другий пункт
#. третій пункт

\end{markdown}
\end{document}
```

[Відкрийте цей приклад в Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Using+markdown\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5BhashEnumerators%2CsmartEllipses%5D%7Bmarkdown%7D%0A%5Cbegin%7Bdocument%7D%0A%0AUsing+inline+markdown%3A%0A%0A%5Cbegin%7Bmarkdown%7D%0AAn+h1+header%0A%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0AParagraphs+are+separated+by+a+blank+line.+%0A%0A2nd+paragraph.+%2AItalic%2A%2C+%2A%2Abold%2A%2A%2C+and+%60monospace%60.+Itemized+lists%0Alook+like%3A%0A%0A%2A+this+one%0A%2A+that+one%0A%2A+the+other+one%0A%0A%3E+Block+quotes+are%0A%3E+written+like+so.%0A%3E%0A%3E+They+can+span+multiple+paragraphs%2C%0A%3E+if+you+like.%0A%0AAn+h2+header%0A------------%0A%0AHere%27s+a+numbered+list+%28use+%60hashEnumerators%60+option+if+you+want+to+use+hashes%29%3A%0A%0A%23.+first+item%0A%23.+second+item%0A%23.+third+item%0A%0A%5Cend%7Bmarkdown%7D%0A%5Cend%7Bdocument%7D)

Цей приклад дає такий результат:

![Приклад верстки вбудованого markdown в Overleaf](/files/67fbf78a1963833a8ee302f4b1c8ec9fcbfa7a79)

## Можливості та опції пакета Markdown

Тут ми розглянемо кілька [можливостей і опцій](https://anorien.csc.warwick.ac.uk/mirrors/CTAN/macros/generic/markdown/markdown.html) наданих пакетом `markdown` пакет.

### Включення коду в markdown

Існує два способи відображення фрагментів коду (блоків коду) у markdown:

* з відступом у кожному рядку блоку щонайменше на чотири пробіли або одну табуляцію, або
* за допомогою так званих [огороджених блоків коду](#using-fenced-code-blocks)

#### Використання відступів для відображення блоків коду

Наведений нижче приклад використовує 4 або більше пробілів на початку кожного рядка коду — деякі рядки використовують 6, 8 або 10 пробілів залежно від потрібного розміру відступу:

```latex
\documentclass{article}
\usepackage{markdown}
\begin{document}
Ось кілька фрагментів коду з відступом щонайменше на 4 пробіли.
\vspace{6mm}

\begin{markdown}

Ось фрагмент C:

    /* Дозвольте мені виконати ітерацію ... */

    int i;
    for(i=0; i<10; i++)
    {
      do-something(i)
    }

Ось HTML:

    <html>
      <head>
        <title>Page Title</title>
      </head>
      <body>
        <h1>Це заголовок</h1>
          <p>Це абзац.</p>
      </body>
    </html>

\end{markdown}
\end{document}
```

[Відкрийте цей приклад в Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Using+markdown+code+snippets\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bmarkdown%7D%0A%5Cbegin%7Bdocument%7D%0AHere+are+some+code+fragments+indented+by+at+least+4+space+characters.%0A%5Cvspace%7B6mm%7D%0A%0A%5Cbegin%7Bmarkdown%7D%0A%0AHere+is+a+fragment+of+C%3A%0A%0A++++%2F%2A+Let+me+iterate+...+%2A%2F%0A%0A++++int+i%3B%0A++++for%28i%3D0%3B+i%3C10%3B+i%2B%2B%29%0A++++%7B%0A++++++do-something%28i%29%0A++++%7D%0A%0AHere+is+some+HTML%3A%0A%0A++++%3Chtml%3E%0A++++++%3Chead%3E%0A++++++++%3Ctitle%3EPage+Title%3C%2Ftitle%3E%0A++++++%3C%2Fhead%3E%0A++++++%3Cbody%3E%0A++++++++%3Ch1%3EThis+is+a+Heading%3C%2Fh1%3E%0A++++++++++%3Cp%3EThis+is+a+paragraph.%3C%2Fp%3E%0A++++++%3C%2Fbody%3E%0A++++%3C%2Fhtml%3E%0A%0A%5Cend%7Bmarkdown%7D%0A%5Cend%7Bdocument%7D)

Цей приклад дає такий результат:

![Приклад верстки коду через markdown](/files/81978fab772746a471a4ef11f6cb49cfc878be60)

#### Використання огороджених блоків коду

Огороджений блок коду створюється шляхом написання або

* трьох зворотних апострофів (` ``` `), або
* трьох тильд (`~~~`)

на рядках перед і після блоку коду. Використовуючи цей метод, вам не потрібно робити відступи в жодному рядку, але потрібно використовувати `fencedCode` опцію у преамбулі:

```latex
\usepackage[fencedCode]{markdown}
```

Ось приклад створення огороджених блоків коду за допомогою 3 зворотних апострофів (` ``` `):

````latex
\documentclass{article}
\usepackage[fencedCode]{markdown}
\begin{document}
\begin{markdown}

```
if (a > 3) {
    moveShip(5 * gravity, DOWN);
}
```

```
    <html>
      <head>
        <title>Page Title</title>
      </head>
      <body>
        <h1>Це заголовок</h1>
          <p>Це абзац.</p>
      </body>
    </html>
```
\end{markdown}
\end{document}
````

[Відкрийте цей приклад в Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Using+markdown+fenced+code+blocks\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5BfencedCode%5D%7Bmarkdown%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bmarkdown%7D%0A%0A%60%60%60%0Aif+%28a+%3E+3%29+%7B%0A++++moveShip%285+%2A+gravity%2C+DOWN%29%3B%0A%7D%0A%60%60%60%0A%0A%60%60%60%0A++++%3Chtml%3E%0A++++++%3Chead%3E%0A++++++++%3Ctitle%3EPage+Title%3C%2Ftitle%3E%0A++++++%3C%2Fhead%3E%0A++++++%3Cbody%3E%0A++++++++%3Ch1%3EThis+is+a+Heading%3C%2Fh1%3E%0A++++++++++%3Cp%3EThis+is+a+paragraph.%3C%2Fp%3E%0A++++++%3C%2Fbody%3E%0A++++%3C%2Fhtml%3E%0A%60%60%60%0A%5Cend%7Bmarkdown%7D%0A%5Cend%7Bdocument%7D)

Цей приклад дає такий результат:

![Використання огороджених блоків коду з пакетом markdown LaTeX](/files/6dd9a77e58f8423b36da8101756b93daf288e8b2)

#### Підсвічування синтаксису

Огороджені блоки коду підтримують підсвічування синтаксису завдяки тому, що назву мови записують після першого набору зворотних апострофів (`` ` ``). Наприклад, наведений нижче блок ідентифікується як Javascript, якщо перший набір зворотних апострофів записати як ` ``` js `:

````latex
``` js
if (a > 3) {
    moveShip(5 * gravity, DOWN);
}
```
````

Для LaTeX, `minted` пакет можна використовувати для підсвічування синтаксису, як показано в наступному прикладі, що містить трохи Javascript (` ``` js `) і HTML (` ``` html `):

````latex
\documentclass{article}
\usepackage{minted}
\usepackage[fencedCode]{markdown}
\begin{document}
\begin{markdown}

``` js
if (a > 3) {
    moveShip(5 * gravity, DOWN);
}
```

``` html
    <html>
      <head>
        <title>Page Title</title>
      </head>
      <body>
        <h1>Це заголовок</h1>
          <p>Це абзац.</p>
      </body>
    </html>
```
\end{markdown}
\end{document}
````

[Відкрийте цей приклад в Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Using+markdown+fenced+code+blocks\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bminted%7D%0A%5Cusepackage%5BfencedCode%5D%7Bmarkdown%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bmarkdown%7D%0A%0A%60%60%60+js%0Aif+%28a+%3E+3%29+%7B%0A++++moveShip%285+%2A+gravity%2C+DOWN%29%3B%0A%7D%0A%60%60%60%0A%0A%60%60%60+html%0A++++%3Chtml%3E%0A++++++%3Chead%3E%0A++++++++%3Ctitle%3EPage+Title%3C%2Ftitle%3E%0A++++++%3C%2Fhead%3E%0A++++++%3Cbody%3E%0A++++++++%3Ch1%3EThis+is+a+Heading%3C%2Fh1%3E%0A++++++++++%3Cp%3EThis+is+a+paragraph.%3C%2Fp%3E%0A++++++%3C%2Fbody%3E%0A++++%3C%2Fhtml%3E%0A%60%60%60%0A%5Cend%7Bmarkdown%7D%0A%5Cend%7Bdocument%7D)

Цей приклад дає такий результат:

![Підсвічування синтаксису за допомогою minted і markdown](/files/b3139f16130460af39aadfaf2dd89260e42a099b)

### Списки

Попередні приклади [демонструють створення невпорядкованих списків](#using-inline-markdown) у markdown за допомогою `*` символу. Упорядковані списки можна створювати за допомогою `#` символу, якщо `hashEnumerators` опцію було вказано:

```latex
\usepackage[hashEnumerators]{markdown}
```

Також можна створювати вкладені списки, як показано в наступному прикладі:

```latex
\documentclass{article}
\usepackage[hashEnumerators]{markdown}
\begin{document}
\begin{markdown}
Ось нумерований список, який містить вкладений список:

#. Спочатку візьміть такі інгредієнти:

      * морква
      * селера
      * сочевиця

#. Закип'ятіть трохи води.

#. Скиньте все в каструлю і виконайте цей алгоритм:

        знайти дерев'яну ложку
        відкрити каструлю
        перемішати
        накрити каструлю
        обережно покладіть дерев'яну ложку на ручку каструлі
        зачекайте 10 хвилин
        перейти до першого кроку (або вимкнути конфорку, коли все буде готово)

    Не зачіпайте дерев'яну ложку, інакше вона впаде.
\end{markdown}
\end{document}
```

[Відкрийте цей приклад в Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Creating+a+nested+list+in+markdown\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5BhashEnumerators%5D%7Bmarkdown%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bmarkdown%7D%0AHere+is+a+numbered+list+that+contains+a+nested+list%3A%0A%0A%23.+First%2C+get+these+ingredients%3A%0A%0A++++++%2A+carrots%0A++++++%2A+celery%0A++++++%2A+lentils%0A%0A%23.+Boil+some+water.%0A%0A%23.+Dump+everything+in+the+pot+and+follow+this+algorithm%3A%0A%0A++++++++find+wooden+spoon%0A++++++++uncover+pot%0A++++++++stir%0A++++++++cover+pot%0A++++++++balance+wooden+spoon+precariously+on+pot+handle%0A++++++++wait+10+minutes%0A++++++++goto+first+step+%28or+shut+off+burner+when+done%29%0A%0A++++Do+not+bump+wooden+spoon+or+it+will+fall.%0A%5Cend%7Bmarkdown%7D%0A%5Cend%7Bdocument%7D)

Цей приклад дає такий результат:

![Створення нумерованих списків за допомогою пакета markdown для LaTeX](/files/36d85abacfa678ff917efa02741a7a2455485284)

### Включення LaTeX у markdown

Якщо ви ввімкнете `hybrid` опцію, ви можете поєднувати код LaTeX у Markdown!

```latex
\documentclass{article}
\usepackage[hybrid]{markdown}
\begin{document}

\begin{markdown}
Вбудовані математичні рівняння можна створювати так: $\omega = d\phi / dt$.
Виведене математичне вираження можна записати так:

\begin{equation}
I = \int \rho R^{2} dV
\end{equation}

\end{markdown}
\end{document}
```

[Відкрийте цей приклад в Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Using+LaTeX+code+in+markdown\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bhybrid%5D%7Bmarkdown%7D%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cbegin%7Bmarkdown%7D%0AInline+math+equations+can+be+created+like+this%3A+%24%5Comega+%3D+d%5Cphi+%2F+dt%24.+%0ADisplay+math+can+be+written+as%3A%0A%0A%5Cbegin%7Bequation%7D%0AI+%3D+%5Cint+%5Crho+R%5E%7B2%7D+dV%0A%5Cend%7Bequation%7D%0A%0A%5Cend%7Bmarkdown%7D%0A%5Cend%7Bdocument%7D)

Цей приклад дає такий результат:

![Використання коду LaTeX у markdown](/files/8ae65e5475fb3bd81dedbab8d129b8c6e0b88f0c)

### Включення зображень

* **Примітка**: Наступний приклад використовує графічний файл (`example-image.pdf`) наданий пакетом `mwe` Пакет. Ці графічні файли поширюються разом із TeX Live і тому зберігаються на серверах Overleaf, завдяки чому вони доступні як заповнювачі зображень, як-от у прикладі нижче.

Зображення можна включати в markdown, використовуючи розмітку такого формату:

```latex
![alt-text](file-name "image caption")
```

Сподіваємося, що назви параметрів `alt-text`, `file-name` та `"image caption"` описують, що вони роблять. Ось приклад, щоб це продемонструвати:

```latex
\documentclass{article}
\usepackage[hybrid]{markdown}
% Пакет mwe надає приклади зображень. Завантажувати його
% не обов'язково, оскільки ці зображення є в шляху пошуку LaTeX.
% Тут ми завантажуємо його для ясності в цьому прикладі.
\usepackage{mwe}
\begin{document}
\begin{markdown}
Цей приклад показує, як імпортувати графічний файл. Тут ми використовуємо
приклад зображення, наданого пакетом `mwe`.

% Використовуйте \setkeys{Gin}, якщо потрібно змінити розмір відображення зображення

\setkeys{Gin}{width=.5\linewidth}
![Це альтернативний текст, що описує моє зображення.](example-image.jpg "Приклад зображення, наданий пакетом \texttt{mwe}.")
\end{markdown}
\end{document}
```

[Відкрийте цей приклад в Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Using+images+in+markdown\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bhybrid%5D%7Bmarkdown%7D%0A%25+The+mwe+package+provides+example+images.+Loading+it+is%0A%25+not+essential+because+those+images+are+in+LaTeX%27s+search+path.+%0A%25+Here%2C+we+load+it+for+clarity+in+this+example.%0A%5Cusepackage%7Bmwe%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bmarkdown%7D%0AThis+example+shows+how+to+import+a+graphics+file.+Here+we+are+using+an%0Aexample+image+provided+by+the+%60mwe%60+package.%0A%0A%25+Use+%5Csetkeys%7BGin%7D+if+you+need+to+change+an+image%27s+display+size%0A%0A%5Csetkeys%7BGin%7D%7Bwidth%3D.5%5Clinewidth%7D%0A%21%5BThis+is+alt+text+to+describe+my+image.%5D%28example-image.jpg+%22An+example+image+provided+by+the+%5Ctexttt%7Bmwe%7D+package.%22%29%0A%5Cend%7Bmarkdown%7D%0A%5Cend%7Bdocument%7D)

Цей приклад дає такий результат:

![Показано, як імпортувати зображення в markdown](/files/4a4f42ed31f3d004598773994d39c534e1de95d2)

#### Примітка щодо ширини зображення

Як і більшість пакетів, `markdown` завантажує інші пакети, зокрема [`keyval`](https://ctan.org/pkg/keyval?lang=en) та [`graphicx`](https://ctan.org/pkg/graphicx?lang=en), щоб використовувати команди та можливості, які вони надають. Тут ширину зображення встановлено за допомогою `\setkeys` команди, яку надає `keyvals`. `Gin` — це «сімейство» ключів, визначене `graphicx` пакет.

* **Примітка**: Оскільки команда LaTeX, а саме `\setkeys`, використовується *у* сайті `markdown` середовищі, то `hybrid` опція пакета markdown є обов'язковою.

## Додаткове читання

Overleaf опублікував інші статті про використання markdown:

* [Як писати в Markdown на Overleaf](/latex/uk/dokladni-statti/30-how-to-write-in-markdown-on-overleaf.md)
* [Markdown у LaTeX зі стилем](/latex/uk/dokladni-statti/32-markdown-into-latex-with-style.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/uk/baza-znan/166-writing-markdown-in-latex-documents.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
