首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Enscript中的文本垂直对齐

Enscript中的文本垂直对齐
EN

Unix & Linux用户
提问于 2019-05-07 06:23:26
回答 1查看 433关注 0票数 1

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

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

文字脚本:

代码语言:javascript
复制
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",
                                    "", "", "", ""));

或案文如下:

代码语言:javascript
复制
~bggray{0.85} Part Number       Description      Qty. ~font{DejaVuSansMono-Bold10} Unit Price  Ext. Price  Cost ~font{default}~bggray{1.0}

Enscript代码:

代码语言:javascript
复制
 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"
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2019-05-07 17:59:18

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

代码语言:javascript
复制
/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,使其是:

代码语言:javascript
复制
x y  height .2 mul add  blskip sub str stringwidth pop height Box

为此,在管道中添加一个sed脚本,在ps2pdf之前:

代码语言:javascript
复制
enscript ... |
sed '/^\/bgs /,/^}/{
       /x y blskip/s//x   y height .2 mul add   blskip/
    }' |
ps2pdf ...

您的enscript可能会生成一个稍微不同的定义,所以请先对它们进行比较。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/517510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档