「ASCIIテキスト、重ね打ち」ファイル形式の目的


46

Bashのソースコードをダウンロードした後、docディレクトリを参照していて、次のファイルに遭遇しました。

  • bash.1は、manページの構築に使用される通常のtroffファイルです。
  • bash.0これは、マニュアルページのプレーンテキストバージョンのようなものです。^Hバックスペース制御文字が自由に配布されているだけです。

これらの制御文字は、Git Webインターフェースによって提供される表現には表示されませんが、実際のファイルをダウンロードして、Vimなどのテキストエディターで調べることができます

fileコマンドを実行するとbash.0、次の出力が出力されます。

bash.0: ASCII text, with overstriking

これまでこのファイル形式に出くわしたことはありませんでしたが、その目的が何であり、どのように使用されるのか疑問に思っていました。「ASCIIテキスト、重ね打ち」というフレーズをWebで検索することは、あまり目を光らせませんでした。

回答:


14

「backspace」および「overstrike」のWeb検索では、より良い結果が得られます。

ファイルは、を使用してフォーマットされたマニュアルページnroffです。通常、このようなファイルbash.0は単に生成されて破棄されます。しばらく前に、manプログラムの作業を減らすために保存されました。むしろ/usr/share/man/man1、あなたのマニュアルページはから読まれるでしょう/usr/share/man/cat1catmanたとえばの説明を読んでください。

nroffマニュアルページやその他のファイルをフォーマットするためのUnixコマンドです。それが最初に書かれたときに戻って、いくつかのユーティリティがあり、それぞれ独自のマークアップ言語がありました。少なくとも1ダースの異なるものを使用しました。しかし、彼らは皆、強調されたテキストを印刷する問題を同じ方法で解決しました:キャリッジ制御の使用。 バックスペースは、他のプレーンテキストファイルでは使用されないため、目立つだけです。 タブキャリッジリターンラインフィードフォームフィードはすべてプレーンテキストファイルで役割を果たします(ただし、フォームフィードの重要性は当初よりもはるかに低くなります)。

nroffイタリックを示すために下線を使用し、太字を表すために上線を使用します。この手法は古くなっています。同じ位置に複数の文字を印刷できるハードコピーデバイスに役立ちます。それを行うビデオ端末はほとんどありません。でterminfo(5)、それは

   over_strike               os     os   terminal can over-
                                         strike

またはより完全に

端末がオーバーストライクした場合(キャラクターがストライクされたときに位置をクリアするのではなく)、そのos 機能が必要 です。

通常の場合では、ビデオ端末の所与の行/列に書き込まれた最後の文字は次のようになり、すべての表示されていること。 nroff下線付き文字が下線、バックスペース、および実際の文字として書き込まれるように出力を編成しました。そうすることで、オーバーストライク機能のない端末が何か有用なものを印刷することが保証されました。

オーバーストライク機能を備えた、ごく少数のビデオ端末の中に、約3年間(1976-1979年)使用したDEC gt40があります。そのシステムにはUnixはありませんでした(RT-11を実行しました)が、同じタイプの打ち消されたテキストを使用して、テキストフォーマッタを作成しました。最終的には、ハードコピーが必要であり、それを実現するユーティリティを作成しましたcol。おそらくのようなものですが、関連する問題を解決します。私のプログラムがテキストを再編成して前後の動きの切り替えの量を減らすまで、端末に下線付きのテキストがたくさんあると印刷が非常に遅くなりました。

ビデオ端末では、その必要はありません。しかし、彼らはオーバーストライクを行いません。代わりに、下線を認識して下線を表示するプログラムがあるか、またはgroff下線(および太字)の代わりに色付きのテキストを表示する可能性があるプログラムがあります。

参考文献:


興味深い歴史的背景を持つ包括的な回答をありがとう。私にとっては深夜なので、明日は正しく読みます。FWIW、私は実際にテキストフォーマッタの* roffファミリを調査していたときに、以前にマニュアルページを生成するというあなたの答えを支持しました。
アンソニーG-モニカの正義

43

重ね打ちnroffは、プレーンASCIIで許可されているよりも多くの活版印刷の可能性を提供するために使用される方法です(Troffの論文を参照)。

  • 太字のテキスト(同じ文字を重ね打ちして)
  • 下線付きテキスト(上線付き_
  • アクセントや発音区別符号(例えば é打ちによって生成eして

ターゲット出力デバイスで許可されている他のさまざまなシンボル。

ではbash、これら.0のファイルはによって直接生成されnroffて、Makefileなどのルール

.1.0:
        $(RM) $@
        -${NROFF} -man $< > $@

このようなファイルは、less; を使用して表示できます。重ね打ちシーケンスを処理し、必要に応じて置き換えます。

less bash.0

元々nroffの出力はタイプライター形式の出力デバイスを対象としており、バックスペース文字を受信するたびにバックアップされていました。重ね打ちすると、目的の視覚的出力が生成されます。chirluが指摘したように、同じ文字を2回打つと、連続するストライキの避けられない不整列のおかげで、通常はより大胆な外観になります。付着するインク量の増加も役立ちます。

troff対象となる組版機。)


Troffユーザーマニュアルへのリンクと、ファイルの作成方法に関する情報をお寄せいただきありがとうございます。私の質問では、これらのファイルがどのように使用されるかについても尋ねました。nroff bash.0Ubuntuシステムで実行しようとしましたが、いくつかの警告が出され、出力は65文字でハードラップされ、特別なフォーマットはありませんでした。
アンソニーG-モニカの正義

1
ああ、私はその部分を忘れました。回答を編集しました。nroffこれらのファイルを表示するためではなく、生成するために使用されます。
スティーブンキット

2
はい、それがほぼどのようにman bash機能するかです。適切なページャーに送る前にnroff -man.1ファイル(または関連するセクション)、つまりファイルを処理するために使用しますnroff
スティーブンキット

5
@Anthony Geoghegan:アイデアは、このファイルをデイジーホイールプリンターなどのインパクトプリンターに送信するというものでした。実際に文字を印刷し、次に戻り、他の文字を印刷すると、上記の結果が得られます。太字のテキストは、オーディオ処理の「コーラスエフェクト」に似ています。2番目の文字は最初の文字と非常にわずかにずれており、太い線になります。
-chirlu

1
@chirluこれは、従来のハードウェアで活版印刷効果を達成するために制御文字がどのように使用されたかの素晴らしい説明です。これらの特定のキャラクターを使用することは、今では非常に理にかなっています。これを回答として投稿すると、適切に投票できます。編集:スティーブンはすでにこれを取り入れて拡張しています。
アンソニーG-モニカの正義

7

さらに以前は、古いタイプライターのように機能し、印刷できる文字のセットが非常に限られていたゴルフボールプリンターでの印刷方法でした。したがって、nroffは、古いテレタイププリンターのバイトストリームを使用して、「画面上」の表示方法を表します。


nroff実際には、troffどのターゲットタイプセッターではなく、タイプライターで印刷するように最初に設計されました。出力用の画面を使用して...後で来た
スティーブン・キット

9
私はあなたが入力!して入力した機械式タイプライターを使用したのに十分な年齢です' BACKSPACE .
-Barmar
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.