enscript 是否支持文本下划线

enscript 是否支持文本下划线

我需要打印带有下划线的输入文本数据的某些部分。我们目前使用 Perl 脚本来生成文本文件,并使用“enscript”和“ps2pdf”来生成生成的文本文件的 PDF 文件。

需要 PDF 中文本的某些部分(如下划线)。任何建议都会有帮助的。

- 要求

在此输入图像描述

但根据 @meuh 的回复生成的 pdf 看起来像

在此输入图像描述

我们需要对 sed 脚本进行任何修改吗?

答案1

如果您找不到其他方法,您可以随时编辑为 enscript 的特殊转义生成的 PostScript bggray(与我对您之前的回答类似)问题)。

当您在输入中使用bggray{0.5}特殊转义字符(可以使用 进行更改-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 倍;这对应于我在你的上一个问题中所做的修复。

请注意,您必须小心,确保 bggray 转义符位于文本旁边,不要在尾随空格下划线。例如,

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

产生这个图像: 在此输入图像描述

相关内容