web-dev-qa-db-ja.com

エンスクリプトはテキストの下線をサポートしていますか

入力テキストデータの一部に下線を付けて印刷する必要があります。現在、Perlスクリプトを使用してテキストファイルを生成し、「enscript」と「ps2pdf」を使用して、生成されたテキストファイルのPDFファイルを生成しています。

下線付きのPDFのテキストの一部が必要です。提案があれば役に立ちます。

-要件

enter image description here

しかし、@ meuhからの返信に基づいて作成されたPDFは、次のようになります。

enter image description here

sedスクリプトに変更を加える必要がありますか?

1

他に方法が見つからない場合は、enscriptのbggray特殊エスケープ用に生成されたPostScriptをいつでも編集できます(以前の 質問 に対する私の回答と同様の方法で)。

入力で特別なエスケープ文字(bggray{0.5}で変更可能)の後に-eを使用すると、enscriptはPostScript関数bgsを呼び出して背景の陰影を描画するコードを出力します。 enscriptの出力とps2pdfの入力の間でこの関数を変更して、特定のシェード値、たとえば0.01を探し、背景ボックスの代わりに細い線を描くことができます。

私のバージョンのenscriptbgsを次のように定義しています

/bgs {  % x y height blskip gray str -> -  show string with bg color
 ...
    x y blskip sub str stringwidth pop height Box

sedスクリプトを使用して、描画を行う線x y ... Boxを変更できます。

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 ...

簡単に変更できる2つの部分を追加しました。/lhで始まる線は、線の太さを高さの一部として定義します。 .05を変更して、線を太く(太字にします)します。 /y2で始まる次の行は、下線をボックスの高さの0.2倍上に移動します。これは、前回の質問で行った修正に対応しています。

Bggrayエスケープがテキストのすぐ隣にあることを確認して、末尾のスペースに下線を引かないように注意する必要があることに注意してください。例えば、

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

この画像を生成します: enter image description here

1
meuh