Найти в Дзене
Блокнот математика

Рубрика "Секреты Вим". Печать в Postscript

Привет, коллеги. Как распечатать набранный в Вим текст на принтере? Да, это бывает нужно не так часто, но бывает нужно.

Один способ мы уже обсуждали: можно сконвертировать текст в HTML и потом распечатать из браузера. Но есть и прямой способ: команда :hardcopy. Она конвертирует текст к Постскрипт (а на MS Windows посылает на системный принтер), ну а его потом можно распечатать без проблем. Если принтер постскриптовый, то вообще легко, а если нет, то все равно есть чем распечатать ps, как правило, а еще можно переделать в PDF.

Как обычно, можно указать диапазон строк, а по умолчанию печатается весь файл. Постскрипт создается во временном файле, имя которого доступно в переменной v:fname_in, но вы можете перенаправить вывод куда вам угодно, поставив обычное перенаправление после команды:

:hardcopy > file.ps

Как и с HTML, показывается процент проделанной работы.

Это мой скрипт на Перле, напечатанный Вимом в Постскрипте. Как видите, с раскраской синтаксиса все как надо. Заголовок/колонтитул я настроил.
Это мой скрипт на Перле, напечатанный Вимом в Постскрипте. Как видите, с раскраской синтаксиса все как надо. Заголовок/колонтитул я настроил.

Предусмотрен ряд опций для управления результатом.

printencoding задает кодировку. По умолчанию используется encoding, которая обычно utf8. Для русского языка надо задавать 8-битную кодировку. У меня по какой-то причине русский текст в UTF8 в PostScript не читается: то ли юникодных символов нет, то ли еще почему — не знаю. Задал кодировку (printencoding) cp1251 — все нормально. Эта опция задается один раз глобально, а не при каждой печати (хотя никто не мешает, конечно).

printfont задает шрифт. По умолчанию courier. Какие доступны — не спрашивайте. На самом деле, для печати в постскрипт доступен только курьер. Можно добавить :h14, где 14 — размер шрифта. По умолчанию размер 10. Вот это важно. А гарнитура и не нужна, курьер сойдет, все равно серьезная работа со шрифтами идет не в Вим.

printheader задает заголовок. Формат такой же, как у statusline, то есть можно задавать текст и поля через знак %: поля заменяются той или иной информацией. Это может быть имя файла, номер строки или страницы, любая опция, и т.п. См. подробности в заметке про информационную строку statusline.

Есть пара опцией для задания множества символов и шрифта для вывода иероглифики. Я темой не владею — если интересно и нужно, читайте справку Вим.

printoptions — список опций в виде A:B через запятую, определяет формат печати. Там все, что мы обычно задаем в системном диалоге вывода на печать. Я не буду перечислять все, потому что редко когда вот прямо из Вим придется посылать материал на принтер. Надо создать постскрипт, а уж его распечатать через системный диалог, так ведь?

По умолчанию опция пуста, что означает значения по умолчанию. Может содержать, в числе прочего:

left:nn — поле слева (10pc)

right:nn — поле справа (5pc)

top:nn — поле сверху (5pc)

bottom:nn — поле снизу (5pc)

Вместо nn идет число и за ним in если в дюймах, pt для пунктов (пункт — это 1/72 дюйма), mm для миллиметров и pc для процентов от ширины или высоты листа. Единицу измерения можно опустить, тогда будет единица по умолчанию (процент).

header:nn — задает число строк на заголовок. Здесь nn — просто число. Если 0, то заголовка не будет. Заголовок всегда в первой строке, остальные просто пустые. По умолчанию 2.

syntax:yn — включить или выключить разметку синтаксиса. Вместо yn ставим либо y (это да), либо n (нет), либо a (это по умолчанию и означает "да, если принтер может печатать цвет или оттенки серого"). Постскрипт, видимо, всегда может.

number:yn — включать ли номера строк. По умолчанию n.

wrap:yn — сворачивать ли длинные строки. По умолчанию y.

portrait:yn — ориентация бумаги.

paper:A4 — размер бумаги. Возможны такие варианты:

10x14 — это название формата. Но также и размер в дюймах (25.4x35.57 в см)

A3 — понятно, 29.7x42 в дюймах или 11.69x16.54 в см.

A4 — самый распространенный формат бумаги, половина A3 (21x29.7, 8.27x11.69).

A5 — половина А4 (14.8x21, 5.83x8.27)

B4 — размер 25x35.3 или 10.12x14.33 в см

B5 — размер 17.6x25 или 7.17x10.12 в см

Еще варианты executive, folio, ledger, legal, letter, quarto, statement, tabloid. Размеры смотрите в Интернете или Справке.

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

Фрагмент сгенерированного текста на Постскрипт. Как это выглядит - см. выше.
Фрагмент сгенерированного текста на Постскрипт. Как это выглядит - см. выше.

Удачи, коллеги!

Научно-популярные каналы на Дзене: путеводитель
Новости популярной науки12 марта 2022