Skip to content
| Marketplace
Sign in
Visual Studio Code>Formatters>md2gostNew to Visual Studio Code? Get it now.
md2gost

md2gost

MixelTe

|
104 installs
| (3) | Free
Converts markdown to docx format, trying to comply with GOST standards
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

md2gost

Расширение для преобразования Markdown-файлов в DOCX и PDF с автоматическим соблюдением требований ГОСТ (курсовые, отчёты, дипломы). Соответствие ГОСТ максимально приближено, но не гарантируется на 100%.

Другие интересные/полезные проекты автора: тут tg chanel и тут github

🎓 Пишете курсовую? Ознакомьтесь с готовым шаблоном и правилами оформления.

Если вам не хватает какой-то функции или вы знаете, как сделать инструмент лучше – пишите в Issues. Рациональные предложения попадают в план, безумные – ждут вдохновения.

👻 Быстрый старт

  1. Создайте файл с расширением .g.md
  2. Откройте его в VS Code
  3. Напишите документ (или вставьте пример ниже)
  4. Нажмите кнопку экспорта:

Кнопка экспорта

✨ Возможности

  • Экспорт Markdown → DOCX / PDF
  • Автонумерация (рисунки, таблицы, листинги, источники)
  • Генерация оглавления
  • Поддержка ГОСТ-структуры курсовой работы
  • Вставка других DOCX/PDF (например, титульник)
  • Автоматическое добавление "Продолжение таблицы/листинга #" при разрыве таблиц/листингов на несколько страниц
  • Подсветка кода (опционально)
  • Автоматическая замена "ИИ" тире на обычные
  • Удобный графический редактор Markdown таблиц
  • Форматирование Markdown файлов

⚙️ Требования

  • Основной функционал
    • Никаких
  • Полный функционал
    • Windows
    • Установленный Microsoft Word

Без Word будут недоступны:

  • Экспорт в PDF
  • Автоматическое добавление "Продолжение таблицы/листинга #"
  • Вставка содержимого других DOCX-файлов

📖 Документация

  • Как использовать
  • Шаблон курсовой работы
  • Редактор таблиц
  • Настройки расширения
  • Поддерживаемый синтаксис Markdown:
    • Текст
    • Заголовки
    • Списки
    • Картинки
    • Листинг
    • Таблицы
    • Комментарии
    • Разрыв страницы
  • Дополнительный синтаксис:
    • Правила (!!rule)
    • Оглавление
    • Разрыв секции
    • Автонумерация
    • Вставка docx/pdf (вставка титульника)
    • Автозамены
  • Переключаемые функции:
    • Подсветка синтаксиса кода
    • Подпись названия и автора
    • Что-то ещё

Как использовать

1. Создание файла

Создайте файл с расширением .g.md (например: report.g.md) и откройте его в VS Code.

2. Напишите документ

Поддерживается весь синтаксис Markdown + присутствует дополнительный синтаксис.

!!(title.docx){}
!!section from 2

# Начало пути

Это пример документа.

На рисунке [#] показан кот.

![[#] Кот](cat.png)

3. Экспортируйте документ

Кнопка экспорта

  • Маленький призрак -> DOCX
  • Большой призрак -> PDF

📄 Результат

# Начало пути

На рисунке 1 показан кот.

Рисунок 1 – Кот

📌 Что делает этот пример

  • !!(title.docx){} – вставляет титульный лист (только при экспорте в PDF). (подробнее)
  • !!section from 2 – начинает нумерацию страниц с 2 (после титульника). (подробнее)
  • [#] – автоматически подставляет номер рисунка. (подробнее)
  • ![[#] Кот](cat.png) – создаёт рисунок с подписью по ГОСТ

Советы

  • Не нумеруйте вручную – используйте [#]
  • Включите ленивую автонумерацию – чтобы не писать [#]
  • В VSCode можно вставлять картинки в md прямо из буфера обмена
    • Также можно указать, куда будет сохраняться картинка, добавив в настройки (Ctrl+Shift+P >Open User Settings (JSON)) следующие строки:

        "markdown.copyFiles.destination": {
        	"*": "${documentDirName}/imgs/${fileName}"
        },
      

Написание курсовой работы

При рендере md2gost автоматически формирует специфические разделы курсовой работы согласно ГОСТ.

Шаблон файла

Используйте этот скелет как основу вашего .g.md файла. Заголовки, написанные капсом, являются ключевыми словами, активирующими автоматику.

!!(title.docx){}
!!section from 3

# РЕФЕРАТ
ключевые, слова, 5-15 штук

Текст реферата на одной странице.

# ОГЛАВЛЕНИЕ

# ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ
* Термин: Определение после двоеточия
* DOM: Объектная модель документа...
* Git: Система контроля версий...

# ПЕРЕЧЕНЬ СОКРАЩЕНИЙ И ОБОЗНАЧЕНИЙ
* HTML - HyperText Markup Language
* JS - JavaScript

# ВВЕДЕНИЕ
Текст...

# 1 Основная часть
## 1.1 Подраздел
Текст с ссылкой на источник [[mdn]].

# ЗАКЛЮЧЕНИЕ
...

# СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
[s1] Источник 1
[mdn] Документация MDN Web Docs [Электронный ресурс]. – URL: https://developer.mozilla.org/

Особенности автоматизации разделов

При использовании указанных выше заголовков, md2gost применяет к ним специальную логику:

Раздел Что делает автоматика
РЕФЕРАТ Добавляет строку со статистикой: Отчет x с., x рис., x табл., x лист., x источн. Ключевые слова автоматически переводятся в ВЕРХНИЙ РЕГИСТР.
ОГЛАВЛЕНИЕ Генерирует иерархический список всех разделов с указанием страниц.
ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ Вставляет фразу «В настоящем отчете применяются следующие термины...» и преобразует список в таблицу.
ПЕРЕЧЕНЬ СОКРАЩЕНИЙ... Вставляет фразу «В настоящем отчете применяют следующие сокращения...».
ИСТОЧНИКИ Автоматически нумерует и сортирует источники в порядке их первого упоминания в тексте.

Важные нюансы:

  1. Разрыв страниц: После каждого из этих разделов (кроме введения и основной части) разрыв страницы добавляется автоматически.
  2. Секции: Команда !!section from 3 позволяет начать нумерацию страниц с нужного числа (обычно с реферата), пропустив титульный лист и задание.
  3. Ссылки на источники: В тексте указывайте идентификатор в квадратных скобках (например, [mdn]), и программа сама заменит его на порядковый номер при рендере.

Поддерживаемый синтаксис

Текст

Пустая строка разделяет параграфы. В отличие от обычного Markdown перенос строки сохраняется в параграфе.

Выделение *курсивом*
Выделение **жирным**
Выделение ***курсивом и жирным***
Выделение `моношрифтом` (см. ниже)
Неразрывный пробел: 5 кг

Ссылка: [подпись](https://example.com)

Некоторые символы автоматически заменяются на другие, см. автозамены.

Для вставки пустых строк можно воспользоваться символами переноса строки <br>.

Есть разница между переносом строки просто и переносом строки с помощью <br>:

Перенос строки просто написав текст на двух строчках,
добавляет таб перед переносом строки, чтобы текст не растягивался

Перенос строки с помощью спецсимвола, <br>не добавляет таб перед переносом строки, чтобы делать *правильный* перенос строки

демонстрация разницы переносов строк

Выделение с помощью обратных кавычек `монотекст` по умолчанию отображается как курсив. С помощью правила backtick_mono можно именить отображение:

  • !!rule backtick_mono italic - курсив (по умолчанию)

    backtick_mono italic

  • !!rule backtick_mono off - обычный текст

    backtick_mono off

  • !!rule backtick_mono on - моношрифт

    backtick_mono on

  • !!rule backtick_mono outline - моношрифт в рамочке

    backtick_mono outline

Заголовки

# Заголовок первого уровня
## Заголовок второго уровня
### и т. д.

Списки

При экспорте автоматически добавляются запятые/точка с запятой у элементов и точка у последнего элемента

Не нумерованный список:
* первое
* второе
- можно чертой

Нумерованный список:
1. первое
1. второе
2) можно скобкой

Вложенный список:
1. первое
	* подпункт 1
	* подпункт 2
2. второе

Картинки

Картинкам можно задать размер, указав его в фигурных скобках. В тексте подписи можно вставить перенос строки с помощью <br> (т.к. поддерживается только однострочное объявление картинки).

Путь к картинке вычисляется относителено .g.md файла

После квадратной скобки пробела быть не должно (тут он стоит из-за некоторых проблем с отображением этого файла)

![подпись] (путь/к/файлу.png)
![подпись] (путь/к/файлу.png){ширина x высота}

![Рисунок 1.1 - Пример] (image.png)
![Рисунок 1.2 - С указанием ширины] (image.png){340}
![Рисунок 1.3 - С указанием высоты] (image.png){x265}
![Рисунок 1.4 - С указанием размера] (image.png){340x265}
![Рисунок 1.5 - Важные зарисовки, с очень длинным названием, \nкоторое не умещается в одну строку] (image.png){340}

Листинг

В отличие от обычного Markdown после кода языка в первой строке пишется заголовок листинга (при разрыве листинга на несколько страниц заголовок продублируется автоматически)

Путь к документу вычисляется относителено .g.md файла

```html Листинг 1.1 - Шаблон html страницы
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
</body>
</html>
```

Таблицы

Параграф перед таблицей считается её подписью и при экспорте соответствующе форматируется.

Для вставки переноса строки внутри ячейки напишите <br>.

Таблица 1 - Результат анализа

Заголовок 1 | Заголовок 2 | Заголовок 3
------------|-------------|------------
текст       | текст       | текст
текст       | текст       | текст

Поддерживается выравнивание текста с помощью двоеточия :. Вертикальные черты по краям таблицы опциональны.

Таблица 1 - Результат анализа

| Слева | По центру | Справа |
|:------|:---------:|-------:|
| текст |   текст   |  текст |
| текст |   текст   |  текст |

Комментарии

Текст, который исчезнет при экспорте. Поддерживаются только однострочные комментарии.

<!-- Комментарий -->
<!-- в две строки -->

Разрыв страницы

---

Правила

Правила - специальные команды для изменения работы системы. Их можно писать в любом месте документа - они влияют на весь документ вне зависимости от расположения. Если одно и тоже правило указано несколько раз, используется последнее значение.

!!rule имя правила

Оглавление

Достаточно написать заголовок "Оглавление"

# Оглавление

Разрыв секции

Создаёт разрыв секции в документе:

!!section
Секция без нумерации страниц

!!section from 3
Секция с нумерацией страниц начиная с 3

Автонумерация

Система автонумерации автоматически нумерует элементы документа (разделы, рисунки, таблицы, листинги, источники) и позволяет ссылаться на них из текста.

Номера элементов и ссылки задаются выражениями в квадратных скобках: [...].

Поведение автонумерации можно настроить (см. тут). Совет: включите ленивую автонумерацию.

Базовый функционал:

В тексте [#] указывает на следующий элемент нумерации - рисунок, таблица, листинг - первое, что из этого встретилось.

В подписи элемента [#] заменяется на номер и подпись (например: Рисунок 1 - ).

В заголовках первого уровня цифра, поставленная вручную, распознаётся и последующие [#] продолжают с неё.

Ссылка на следующий элемент:

# 1 Примеры
## [#] Пример с рисунком
На рисунке [#] показан кот.

![[#] Кот] (cat.png)
![[#] Кот] (cat.png)

## [#] Пример с листингом
В листинге [#] показан код.

```html [#] Одинокий div
<div></div>
```

## [#] Пример с таблицей
В таблице [#] показаны результаты анализа.

[#] Результат анализа

Заголовок 1 | Заголовок 2
------------|------------
текст       | текст

Результат:

# 1 Примеры
## 1.1 Пример с рисунком
На рисунке 1 показан кот.

![Рисунок 1 - Кот] (cat.png)
![Рисунок 2 - Кот] (cat.png)

## 1.2 Пример с листингом
В листинге 1 показан код.

```html Листинг 1 - Одинокий div
<div></div>
```

## 1.3 Пример с таблицей
В таблице 1 показаны результаты анализа.

Таблица 1 - Результат анализа

Заголовок 1 | Заголовок 2
------------|------------
текст       | текст

У картинки перед круглой скобкой пробела быть не должно (тут он стоит из-за некоторых проблем с отображением этого файла)

Нумерация по разделам:

!!rule numbering sections on
# 1 Первый раздел
На рисунке [#] показан кот.

![[#] Кот] (cat.png)
![[#] Кот] (cat.png)

# [#] Второй раздел
На рисунке [#] показан кот.

![[#] Кот] (cat.png)
![[#] Кот] (cat.png)

Результат:

# 1 Первый раздел
На рисунке 1.1 показан кот.

![Рисунок 1.1 - Кот] (cat.png)
![Рисунок 1.2 - Кот] (cat.png)

# 2 Второй раздел
На рисунке 2.1 показан кот.

![Рисунок 2.1 - Кот] (cat.png)
![Рисунок 2.2 - Кот] (cat.png)

Относительные ссылки

К номеру можно применять смещение: [# ± N].

[#-1]   предыдущий элемент
[#+2]   через два вперёд
[#-3]   на три назад

Примеры:

![[#] Мяч] (ball.png)
На рисунке [#-1] был изображён кот

Ниже, на рисунках [#]-[#+2] изображены коты
![[#] Кот] (cat1.png)
![[#] Котик] (cat2.png)
![[#] Котяра] (cat3.png)
Выше, на рисунках [#-3]-[#-1] были изображены коты

Результат:

![Рисунок 1 - Мяч] (ball.png)
На рисунке 1 был изображён кот

Ниже, на рисунках 2-4 изображены коты
![Рисунок 2 - Кот] (cat1.png)
![Рисунок 3 - Котик] (cat2.png)
![Рисунок 4 - Котяра] (cat3.png)
Выше, на рисунках 2-4 были изображены коты

У картинок перед круглой скобкой пробела быть не должно (тут он стоит из-за некоторых проблем с отображением этого файла)

Именованные ссылки

Элементу можно присвоить идентификатор, который позволяет ссылаться на него из других мест документа: [name]. Идентификатор может состоять из латинских и кириллических букв, цифр и нижнего подчёркивания (без пробелов!). Идентификатор чувствителен к регистру.

В разделе [cats] вопрос будет рассмотрен подробнее

## [cats] О котах
Ниже, на рисунках [cat]-[Котяра] изображены коты
![[cat] Кот] (cat1.png)
![[img2] Котик] (cat2.png)
![[Котяра] Котяра] (cat3.png)

К именованной ссылке также можно применять смещение: [name ± N].

Ниже, на рисунках [cat]-[cat+2] изображены коты
![[cat] Кот] (cat1.png)
![[#] Котик] (cat2.png)
![[#] Котяра] (cat3.png)

У картинок перед круглой скобкой пробела быть не должно (тут он стоит из-за некоторых проблем с отображением этого файла)

Количество элементов

Специальные выражения выводят общее количество элементов.

Документ содержит [!pages] страниц,
[!imgs] рисунков,
[!tables] таблиц,
[!codes] листингов.

Примечание: [!pages] может отображаться некоректно до рендера в pdf (как пустота или неверное значение). В таком случае выделите это место в Word и нажмите ПКМ->"Обновить поле" (при рендере в pdf не требуется).

Настройки автонумерации

  • Включить ленивую автонумерацию: !!rule numbering lazy
    • Когда включено, более не нужно писать [#] в названиях картинок, таблиц и т.д. - добавляется автоматически
  • Включить нумерацию по разделам: !!rule numbering sections
    • Рисунок 1 - Кот -> Рисунок 1.1 - Кот
  • Отключить автоматическое добавление названия элемента: !!rule numbering autoprefix off
    • ![[#] Кот] (cat.png):
      • Рисунок 1 - Кот -> 1 Кот
    • ![Рисуночек [#]: Кот] (cat.png):
      • Рисуночек Рисунок 1 - : Кот -> Рисуночек 1: Кот

Пример с включённой ленивой автонумерацией (именованные элементы продолжают работать как раньше):

!!rule numbering lazy
Ниже, на рисунках [#] и [cat] изображены коты
![Кот] (cat1.png)
![[cat] Котик] (cat2.png)

В таблице [#] показаны результаты анализа.

Результат анализа

Заголовок 1 | Заголовок 2
------------|------------
текст       | текст

Код представлен в листинге [#].

```html Шаблон html страницы
<html></html>
```

Вставка внешнего документа

Команда позволяет вставить содержимое файлов DOCX (с поддержкой шаблонизации) или PDF.

Синтаксис: !!(путь/к/файлу){"ключ": "значение"}

Особенности вставки:

  • DOCX: Поддерживает передачу параметров. Внутри файла поля должны быть оформлены в двойных фигурных скобках: {{поле}}.

    screenshot

  • PDF: Вставляется «как есть», блок параметров должен быть пустым {}.

  • Разрывы: После вставки файла необходимо добавить разрыв страницы (---) или секции (!!section).

Ограничение: Вставка внешнего файла поддерживается только при экспорте в PDF.

Примеры использования

1. Простая вставка DOCX или PDF

В самом начале документа:

!!(title.docx){}
!!section

!!(title.pdf){}
!!section

2. Вставка с параметрами и управлением нумерацией

Если нужно передать данные в шаблон и начать нумерацию основного документа, например, со второй страницы:

!!(title.docx){
    "taskN": "1",
    "topic": "Сбалансированные деревья поиска",
    "group": "КЛМН-00-00",
    "name": "Иванов П.С."
}
!!section from 2

4. Вставка в произвольное место документа

Документ можно вставить не только в начало. Чтобы изолировать вставку, используйте горизонтальные разделители (разрыв страницы) или команды секций.

  • --- – просто переносит контент на новую страницу.
  • !!section – начинает новую страницу и сбрасывает нумерацию. Подробнее в разделе Работа с секциями.
Текст основного документа...

---
!!(важная вставка.docx){}
---

Продолжение основного текста...

Незнамо на кой оно нужно, но чего сделано не воротишь

Блок параметров парсится как json, так что можно и числа, и объекты, и списки там писать. И такой неожиданый способ использования был предусмотрен...

!!(title.docx){
	"students": [
		{ "name": "Вася", "group": "ЁКЛМН-20-24" },
		{ "name": "Петя", "group": "ЁПРСТ-30-24" },
		null,
	],
	"veryImportantFeature": false,
	"apples": 1.5,
}

В ворде такие поля будут доступны через точку, напрмер {{students.0.name}}. Парсер расплющивает сложный объект в плоский список ключей. Так что пример выше идентичен такой записи:

!!(title.docx){
	"students.0.name": "Вася",
	"students.0.group": "ЁКЛМН-20-24",
	"students.1.name": "Петя",
	"students.1.group": "ЁПРСТ-30-24",
	"veryImportantFeature": "false",
	"apples": "1.5"
}

Автозамены

Некоторые символы автоматически заменяются на другие

  • — на - ("ИИ" тире на обычные)
  • - на – (пробел-тире-пробел на вордовое тире)
  • <br> на перенос строки
  • "текст" на «текст» (кавычки-ёлочки)
  • &laquo; &raquo; &lsaquo; &rsaquo; на « » ‹ ›
  • &nbsp; на неразрывный пробел
  • &Tab; на отступ (таб)
  • &Star; на *
  • &#124; на |
  • &shy; на Soft Hyphen (мягкий перенос)
  • &#x200B; на ничего (используйте чтобы обмануть парсер)
  • &alpha; &beta; &gamma; &delta; &epsilon; &zeta; &eta; &theta; &iota; &kappa; &lambda; &mu; &nu; &xi; &omicron; &pi; &rho; &sigma; &tau; &upsilon; &phi; &chi; &psi; &omega; &Delta; &Sigma; &Omega; на α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω Δ Σ Ω
  • &infin; &sum; &prod; &radic; &int; &part; &asymp; &ne; &lt; &gt; &le; &ge; &plusmn; &times; &divide; на ∞ ∑ ∏ √ ∫ ∂ ≈ ≠ < > ≤ ≥ ± × ÷
  • &copy; &reg; &trade; &sect; &para; &hellip; &bull; &middot; &deg; &euro; &pound; &yen; &cent; &curren; &fnof; &permil; на © ® ™ § ¶ … • · ° € £ ¥ ¢ ¤ ƒ ‰
  • [!pages] на кол-во страниц
  • [!imgs] на кол-во картинок
  • [!tables] на кол-во таблиц
  • [!codes] на кол-во листингов
  • [!sources] на кол-во источников

Подсветка синтаксиса кода

По ГОСТу листинги просто чёрно-белые, так что этот пункт не для курсовой

Чтобы включить подсветку кода, добавьте строчку !!rule highlight code в любом месте (один раз на весь файл).

Поддерживаются следующие языки:

  • html, xml, css, js, ts, jsx, tsx, json, bash, powershell, python, java, c, cpp, csharp, go, rust, php, ruby, swift, kotlin, sql, yaml, markdown, docker, nginx
!!rule highlight code

```html Листинг 1.1 - Красивый листинг
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
</body>
</html>
```

Подпись названия и автора

Отображаются в свойствах файла и в заголовке окна при открытии PDF.

!!rule title Мой отчёт
!!rule author Иванов П.С.

Что-то ещё

  • Установить время редактирования в минутах
    • !!rule etime <int>
    • Пример: !!rule etime 123
    • По умолчанию: случайное число от 30 до 120
  • Установить время создания
    • !!rule ctime <ISO 8601>
    • Пример: !!rule ctime 2026-02-18
    • По умолчанию: время создания .g.md файла
  • Установить время изменения
    • !!rule mtime <ISO 8601>
    • Пример: !!rule mtime 2026-02-18T12:30:00
    • По умолчанию: время рендера
  • !!rule rainbow

Редактор таблиц

Расширение упрощает работу с Markdown-таблицами, предоставляя удобный графический интерфейс (GUI).

Как открыть редактор

Чтобы перейти в графический режим:

  1. Откройте Markdown-файл.
  2. Наведите курсор на любую область существующей таблицы.
  3. Нажмите на появившуюся над кодом кнопку "Edit table".

Кнопка "Edit table"

Двусторонняя синхронизация

Редактор работает в режиме реального времени:

  • Из кода в GUI: Любые правки текста в Markdown-файле мгновенно отображаются в интерфейсе расширения.
  • Из GUI в код: Как только вы изменяете содержимое ячейки или структуру (добавляете ряды/колонки), изменения автоматически записываются в исходный файл.

Примечание: Undo/Redo в GUI работают только частично, если не сработало, повторите в текстовом редакторе.

Внешний вид редактора

Горячие клавиши

Действие Сочетание клавиш
Навигация по ячейкам Shift + Alt + Стрелки
Переместить строку/столбец Ctrl + Shift + Alt + Стрелки
Добавить строку снизу Ctrl + Enter
Добавить строку сверху Ctrl + Shift + Enter
Добавить столбец справа Alt + Enter
Добавить столбец слева Alt + Shift + Enter
Дублировать текущую строку Ctrl + D
Удалить текущую строку Ctrl + Shift + Backspace
Удалить текущий столбец Alt + Shift + Backspace

⚙️ Настройки расширения

Параметр Описание
md2gost.tables.editor.enabled Включает или отключает отображение кнопки "Edit table" над таблицами.
md2gost.tables.borderStyle Стиль внешних границ таблиц: добавлять \| по краям, убирать, или не изменять.
md2gost.tables.alwaysAddLeftColon Добавлять ли двоеточие для левого выравнивания в таблицах (:--- или ---).
md2gost.tables.compact Выравниванивать ли столбцы таблицы пробелами.
md2gost.ui.inlayHints Отображать встроенные подсказки в тексте (например, «Рисунок # –»).
md2gost.ui.disableHighlighting Отключить кастомную подсветку Markdown.
md2gost.formatter.suppressDefaultPrompt Отключает предложение использовать md2gost в качестве форматировщика по умолчанию.
md2gost.formatter.replaceEmDash Заменять ли Em dash (—) на En dash (–)
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft