Enscript

Enscript中的文本垂直對齊

  • May 7, 2019

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"

如果找不到其他方法,您可以隨時編輯生成的 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可能會生成稍微不同的定義,因此請先比較它們。

引用自:https://unix.stackexchange.com/questions/517510