Вызов функции со стандартным вводом или /dev/null, если он пуст

Если вы не найдете другого пути, вы всегда можете отредактировать PostScript, сгенерированный для bggrayспециального выхода (enscript, аналогично моему ответу на ваш предыдущий вопрос).

Когда вы используете в своем вводе bggray{0.5}после специального escape-символа (, который вы можете изменить с помощью -e), enscript выведет код для вызова функции PostScript bgsдля рисования тени фона. Вы можете изменить эту функцию между выводом enscriptи вводом ps2pdf, чтобы искать определенное значение оттенка, скажем, 0.01и рисовать тонкую линию вместо фоновой рамки.

Моя версия enscriptопределяет bgsс помощью

/bgs {  % x y height blskip gray str -> -  show string with bg color
...
    x y blskip sub str stringwidth pop height Box

Мы можем изменить линию рисования, x y... Box, с помощью sedскрипта

enscript... |
sed '
 /^\/bgs/,/^}/{
    /x y blskip sub str stringwidth pop height Box/{
      s/^/ %--% /
      a\
   /lh height.05 mul def \
   /y2 y height.2 mul add def \
   gray 0.01 eq { x y2 blskip sub str stringwidth pop lh Box /gray 0 store } \
                { x y blskip sub str stringwidth pop height Box } ifelse
    }
}' |
ps2pdf...

Я добавил две части, которые вы можете легко изменить :начало линии /lhопределяет толщину линии как часть высоты. Измените .05, чтобы сделать линию толще (, то есть жирнее ). Следующая строка, начинающаяся с /y2, перемещает подчеркивание вверх на 0,2 высоты блока; это соответствует исправлению, которое я сделал в вашем последнем вопросе.

Обратите внимание, что вы должны быть осторожны, чтобы не подчеркивать завершающие пробелы, убедившись, что escape-символы bggray находятся рядом с текстом. Например,

enscript -fCourierBold12 -e@ -p- |...
@bggray{0.01}underlined text@bggray{1} normal text

создает это изображение :enter image description here

0
18.11.2021, 19:26
0 ответов

Теги

Похожие вопросы