web-dev-qa-db-ja.com

Enscriptでのテキストの垂直方向の配置

Enscriptの行内でテキストを垂直方向に配置するオプションはありますか?

背景の垂直方向の中央にテキストを揃える必要があります。 bggray

テキストスクリプト:

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

ボックスのy座標を上げるには、たとえばx y ... Boxによって、行height*0.2を次のように変更する必要があります。

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

これを行うには、パイプのps2pdfの前にsedスクリプトを追加します。

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

enscriptはわずかに異なる定義を生成する可能性があるため、最初にそれらを比較してください。

0
meuh