Перейти к содержимому

Пишем личный автотипограф

В Триреме рабо­тает очень неза­метный авто­ти­по­граф: он убирает двойные пробелы, не даёт пред­логам висеть в конце строк и пока­зы­вает, где можно пере­нести слово на новую строку. Сейчас расскажу, как это рабо­тает и как вы с помощью нескольких строк кода можете доба­вить авто­ти­по­графу свои правила: будь-­то замена кавычек на правиль­ные, двух дефисов на тире и так далее.

Чтобы не быть голо­слов­ным: вот так выглядит правило, которое не даёт тире из сере­дины пред­ло­жения оказаться в начале строки и быть воспри­нятым как прямая речь. Инструкций на две строки.

/eleventy.config.js

eleventyConfig.addPreprocessor("nbspEmDash", "md", (data, content) => {
	// Replace " —" (regular space + em dash) with non-­breaking space + em dash
	return content.replace(/\u0020—/g, "\u00A0—");
	});

Авто­ти­по­граф Триремы рабо­тает благо­даря тому, что 11ty даёт поль­зо­ва­телю изме­нять содер­жимое маркдаун-­файлов перед тем, как гене­ратор превратит их в ХТМЛ — если по-­птичьему, подклю­чать пре­про­цес­со­ры.

Для того,чтобы доба­вить в авто­ти­по­граф новое правило, просто попро­сите у ЧатГПТ напи­сать функцию напо­добие той, что я показал выше, откройте eleventy.config.js и вставьте её рядом (!) с другими addPreprocessor-­ами.

Если ваше правило требует какой-­то сложной логики или сторонних библио­тек, лучше выне­сите его в отдельный файл в папке _con­fig и подклю­чите плаги­ном. По такой логике в Триреме рабо­тает перенос слов — вы можете отклю­чить его, заком­мен­ти­ровав одну строчку в конфиге.

_config/hyphenation.js

// логика функции hyphen­at­e­Text в начале файла и импорт библио­теки Hypher

export default func­tion hyphenatorPlugin(eleventyConfig) {
	const hyphen­at­orRu = new Hypher(russian);
	const hyphen­atorEn = new Hypher(english);
	
	eleventyConfig.addPreprocessor("hyphenate", "md", (data, content) => {
	return hyphenateText(content, hyphen­at­orRu, hyphenatorEn);
	}); 
}

/eleventy.config.js

import hyphen­at­or­Plugin from "./_config/hyphenation.js";

export default async func­tion (eleventyConfig) {
	eleventyConfig.addPlugin(hyphenatorPlugin); 

Eсли вам вообще не хочется запа­ри­вать­ся, но хочется авто­за­мены кавычек на «ёлочки» и „лап­ки“, а дефисов на тире, внутри файла _config/markdown-it.js заме­ните false на true напротив пара­метра typo­grapher. Преду­пре­ждаю — для длин­ного тире в таком случае нужно будет набрать три дефиса подряд, а для вложенных кавычек исполь­зо­вать одинарные '.

typo­grapher: false, // замени на true
quotes: "«»„“",     
})

А вообще скачайте раскладку для биологов и нужные символы всегда будут под рукой без всяких авто­ти­по­гра­фов.