Вопрос или проблема
Я работаю над базой знаний, где связываю документы с помощью гиперссылок на названия файлов и их соответствующие заголовки.
Например:
Совместимость
в !Боковая панель
с [Совместимость](Совместимость)
. Я также могу связывать конкретные заголовки из других файлов следующим образом: [Совместимость](Совместимость#Названия)
, что открывает Совместимость.md
@ ## Названия
.
Однако, если заголовок содержит пробелы, мне не удается на них ссылаться. Возможно ли создать гиперссылки на заголовки, содержащие пробелы в Markdown?
Я предпочел бы сохранить пробелы в большинстве заголовков, которые уже у меня есть.
“Возможно ли создать гиперссылку на заголовок, содержащий пробелы в Markdown?”
Да! Просто используйте кодировку URL для пробела (это %20
) вместо пробела в ссылке. Например, если вы хотите создать ссылку на Долгие Названия
, вместо этого:
[Совместимость](Совместимость#Долгие Названия)
Вам нужно сделать так:
[Совместимость](Совместимость#Долгие%20Названия)
Не забудьте, что у заголовка должен быть установлен id=
, равный Долгие Названия
.
Markdown не знает, что вы ссылаетесь на заголовок Markdown – он только знает, что вы ссылаетесь на какую-то другую HTML-страницу. Это означает, что важны не текст заголовка, а сгенерированные HTML-теги.
Рендереры Markdown, как правило, заменяют пробелы на дефисы при генерации якорей. Заголовок, как “Системные требования”, обычно будет иметь якорь #sistemnye-trebovaniya
. Кроме того, большинство специальных символов обычно удаляются.
Если целевая страница находится на GitHub, вы можете использовать значок ‘ссылка’, который появляется при наведении на заголовок, чтобы увидеть, куда она ссылается (ссылка ведет на сам заголовок, и ее цель – дать вам возможность скопировать ссылку на заголовок). Щелкните правой кнопкой мыши, выберите “Скопировать адрес ссылки”, вставьте результат в ваш документ и обрежьте ненужные части.
В большинстве других случаев (т.е. не на GitHub, который использует fancy JS для обработки #фрагментных ссылок), вы можете щелкнуть правой кнопкой мыши на заголовке и использовать опцию браузера “Просмотреть код”, чтобы увидеть, какой <h2 id=
или <a name=
был сгенерирован. Например, может быть <h2 id="sistreq">Системные требования</h2>
, который связан как #sistreq
.
URI не могут содержать пробелы. Это верно как для идентификатора фрагмента, так и для имени хоста и пути.
Для символов, не разрешенных в URI, мы должны использовать шестнадцатеричное представление – в данном случае %20
, так как пробел представлен как 0x20 в UTF-8.
Ответ или решение
Да, вы можете создать гиперссылки на заголовки, содержащие пробелы в Markdown, используя кодирование URL. Вместо пробелов в заголовках необходимо использовать их эквивалент в кодировании — %20
. Например, если вы хотите сослаться на заголовок с текстом Long Titles
, вам нужно будет сделать это следующим образом:
[Compatibility](Compatibility#Long%20Titles)
Важно отметить, что Markdown не интерпретирует ссылки как ссылки на заголовки Markdown. Он воспринимает их как ссылки на HTML-страницы. Поэтому для правильного связывания заголовка вам нужно знать, как именно Markdown преобразует текстовые заголовки в HTML.
Обычно при рендеринге Markdown большинство систем заменяют пробелы на дефисы в идентификаторах заголовков. Это значит, что заголовок System Requirements
будет иметь якорь #system-requirements
. Также стоит учитывать, что специальные символы могут быть удалены или преобразованы.
Если вы работаете на платформе, такой как GitHub, вы можете использовать значок "ссылка", который появляется при наведении на заголовок. Он позволяет быстро скопировать ссылку на заголовок. Правой кнопкой мыши кликните по нему и выберите "Копировать целевой адрес". Затем вставьте его и при необходимости обрежьте лишние части.
В других случаях вы можете использовать инструмент "Инспектор" в браузере, чтобы увидеть сгенерированные идентификаторы. Например, вы можете увидеть в HTML:
<h2 id="sysreq">System requirements</h2>
Таким образом, в Markdown вы могли бы ссылаться на этот заголовок так:
[System Requirements](YOUR_FILE.md#sysreq)
Запомните, что URI не могут содержать пробелы, как в основной части адреса, так и в фрагменте (части после #
). Поэтому замена пробелов на %20
в ссылках является обязательным шагом для их корректной работы.
При правильном использовании описанных выше методов, вы сможете успешно создавать ссылки на заголовки с пробелами в Markdown.