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

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

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

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

/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-ами.

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

_config/hyphenation.js

// логика функции hyphenateText в начале файла и импорт библиотеки Hypher

export default function hyphenatorPlugin(eleventyConfig) {
	const hyphenatorRu = new Hypher(russian);
	const hyphenatorEn = new Hypher(english);
	
	eleventyConfig.addPreprocessor("hyphenate", "md", (data, content) => {
	return hyphenateText(content, hyphenatorRu, hyphenatorEn);
	}); 
}

/eleventy.config.js

import hyphenatorPlugin from "./_config/hyphenation.js";

export default async function (eleventyConfig) {
	eleventyConfig.addPlugin(hyphenatorPlugin); 

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

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

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