Enscript 中的文本垂直对齐方式

Enscript 中的文本垂直对齐方式

Enscript 中的行内是否有垂直文本对齐选项?

我必须将文本对齐在背景的垂直中间。 灰色

文本脚本:

push (@parts_section_array, sprintf(border("#")."%4s".'~bggray{0.85}'." Part Number %9s  Description %16s Qty. ". '~font{DejaVuSansMono-Bold10}' ."Unit Price  Ext. Price %4s Cost".'~font{default}~bggray{1.0}'." ".border("|")."\n",
                                    "", "", "", ""));

或者文字是:

~bggray{0.85} Part Number       Description      Qty. ~font{DejaVuSansMono-Bold10} Unit Price  Ext. Price  Cost ~font{default}~bggray{1.0}

刻录代码:

 enscript -q \
    -f DejaVuSansMono@10 \
    -e~ \
    --no-header \
    -s 4.3 \
    --margins=10:2:14:10 \
    -L 73 "${pi}" \
    -o - \
| ps2pdf - "$BOOK_DIR"/"${filename}.pdf"

答案1

如果您找不到其他方法,您可以随时编辑生成的 PostScript。我的版本将调用以绘制背景的函数enscript的定义放在输出的开头:bgs

/bgs {  % x y height blskip gray str -> -  show string with bg color
  /str exch def
  /gray exch def
  /blskip exch def
  /height exch def
  /y exch def
  /x exch def
  gsave
    x y blskip sub str stringwidth pop height Box
    gray setgray
    fill
  grestore
  x y M str s
} def

您需要更改该行x y ... Box以提高框的 y 坐标,例如height*0.2

x y  height .2 mul add  blskip sub str stringwidth pop height Box

sed通过在管道中之前添加一个脚本来执行此操作ps2pdf

enscript ... |
sed '/^\/bgs /,/^}/{
       /x y blskip/s//x   y height .2 mul add   blskip/
    }' |
ps2pdf ...

enscript可能会生成略有不同的定义,因此请先对它们进行比较。

相关内容