Linuxでプレーンテキストを正当化するにはどうすればよいですか?


17

左と右の段落を揃えたプレーンテキスト(.txt)ドキュメントを作成しています。手動でスペースを追加し、必要に応じて行が均一な長さになるまで単語をハイフンで区切ります。私のドキュメントの例を使用するには、次のような段落:

これらの幻想的なボールには、奇妙な性質、きちんとした、
面白くて、怠othersなデザインを示すものもあります。彼らはほとんどすべてです
同じ設計上の欠陥が原因:ゲームはそれらを通常のように扱いすぎます
ボール。

次のようになります。

これらの幻のボールにはいくつかの奇妙な特性があり、
きちんとしたもの、面白いもの、インディカだけのもの
怠zyなデザインの動機。それらはほとんどすべてによって引き起こされます
同じ設計上の欠陥:ゲームはそれらをあまりにも扱います
通常のボール。

これどうやってするの?

スペースを追加しても構いません(単語を改行することなく)が、段落のターゲット幅(#文字)を制御する必要があります。上記の例は1行あたり53文字に正当化されていますが、実際のドキュメントの行幅は60から79に変化します。

また、このような機能を備えたテキストエディタがあれば素晴らしいと思います。

私はすでに試しました:

  • OpenOfficeTeX:書式設定を使用して、テキストの表示方法を変更するだけです。
  • nanoのJustifyコマンドは、実際には行の幅を均一にしないため、カウントされません。

次の答えを受け入れたのは、それが私にとって最もうまくいったものだったからです。答えの中で最も使いやすいのはemacs fillコマンドであり、空白以外のインデント(#や//コメントなど)でさえ認識する方法に感謝しています。ただし、他の回答はすべて自分のニッチを埋めるので、この質問を訪問している他の人も同様に確認することをお勧めします。


1
どうして?私は本当に興味があります。プレーンテキストの利点の1つは、書式設定に依存せず、OpenOfficeまたはTeXに平手打ちして見栄えを良くできることです。これには何を使用しますか?
ダグ・ハリス

また、半インテリジェントなハイフネーションも行うこのユーティリティを探していますか?
ダグ・ハリス

1
理由は、それがGameFAQのガイドだからです。GameFAQsはプレーンテキスト、TXTドキュメントのみを受け取ります。ハイフネーションに関しては、私はそれを好むが、絶対的な要件ではない。
Exp HP

回答:


5

これは、fill-paragraphまたはfill-regionfill docs)を使用してemacsで実行できます。

数値のプレフィックス引数を渡す必要があります。デフォルトの塗りつぶし列は70です。

入力するテキストを選択して実行しますM-3 M-x fill-region

サンプルテキストの塗りつぶし列を53に設定すると、次のようになります。

These phantasmic balls  have some strange properties,
some   neat,  some   interesting,  and   others  just
indicative of lazy  design. They're almost all caused
by  the same design  flaw: The  game treats  them too
much like regular balls.

それはよさそうだ。この機能を確認するために、現在emacs用のパッケージをインストールしています。
Exp HP

さて、珍しいインターフェイスと用語(少なくとも今日の標準では珍しい)に慣れるにはかなりの手間がかかりましたが、これは素晴らしいことです。Cx f 53、M-1 Mq。確かに、プランB(テキストを正当化する独自のRubyスクリプトを書くことになる)よりも簡単であり、満足のいくように、インデントを認識し、正当化するときにそれを考慮します。いいね
Exp HP

フィル列を53またはその他の値に設定するにはどうすればよいですか?また、現在の状態を確認するにはどうすればよいですか?
HelloGoodbye

1
ところで、あなたの答えのリンクは壊れています。
HelloGoodbye

リンクを更新しました
ダグハリス

18

あなたが必要 par

たとえば、ubuntuで取得するには、次のようにします。

sudo aptitude install par

text.txt(80文字の幅で)正当化するには、次の場所に保存しnewtext.txtます。

par j1w80 < text.txt > newtext.txt

vimまたはgvimでparを使用するには:

:set formatprg=par\ j1w80

次に、書式設定するテキストを強調表示して、gqコマンドを使用します。

詳細については、 man par


1
私はこれをテストし、非常に扱いにくいことがわかりました。最も無害な状況と思われる状況下でも、エラーが発生することがあります。emacsコマンドと比較すると、これは使用できません。
Exp HP

例を挙げていただけますか?私には非常に安定しているようです。
sml

1
指定したコマンドは正しくありません。そうpar w80 j1でなくてはならないpar 80j。編集:またはpar jw80
ガンダロ

6

fmt 古い学校のソリューションです

manページから:

fmt [-cmnps] [-d chars] [-l num] [-t num] [目標[最大] | -width | -w幅] [ファイル...]

そして

ゴールの長さはデフォルトで65に設定され、最大値はゴールの長さよりも10長く設定されています。または、ハイフンを前に付けるか、-wを使用して、単一の幅パラメーターを指定できます。たとえば、fmt -w 72'',fmt -72 ''および `` fmt 72 72 ''はすべて同じ出力を生成します。


の一部のバージョンにfmtは、これらのオプションのいくつかがなく、完全な正当化ができません。
追って通知があるまで一時停止します。

申し訳ありませんが、を使用してテキストを正当化する方法を明確に述べていませんfmt。また、デニスが言ったように、私のシステムでは、manページはあなたが言及したようなテキストを提供せず、正当化する方法を言っていません。
jamadagni

2

以下はPerlスクリプトです paradj完全な正当化とハイフネーションを実行できる示します。

以下にdiff、左マージンの追加をサポートするために行ったいくつかの変更を示します。

12c12
< my ($indent, $newline);
---
> my ($indent, $margin, $newline);
15a16
>   "margin:i" => \$margin,
21a23
> $margin = 0 if (!$margin);
149a152
>     print " " x $margin;
187a191,193
>   print "--margin=n (or -m=n or -m n)  Add a left margin of n ";
>   print "spaces\n";
>   print "                                (defaults to 0)\n";

このコマンド:

./paradj.pl -h --width=53 --both --indent=0 inputfile

例に非常に近い出力を生成します(余分なスペースは異なる場所にあります)。

These  phantasmic balls have some strange properties,
some  neat, some interesting, and others just indica-
tive of lazy design. They're almost all caused by the
same  design flaw: The game treats them too much like
regular balls.

残念ながら、私は使用できない素晴らしいソリューション。約1か月前、私はTeX :: Hyphenを使用したかったので、PerlでTeXを取得しようとしました(この質問に関連する別の問題のため)。IIRC、私が発見したのは、UbuntuリポジトリにはTeXライブラリの特定の部分しか利用できず、Hyphenも含まれていないということです。Perl TeXライブラリを手動でインストールしようとしましたが、うまくいきませんでした。私は結局Perlを壊してしまい、その後数時間を費やして損害を取り消した。私はそれをもう一度やりたがりません。ただし、少なくともこの回答に対して+1を提供するのに十分な担当者がいればいいのですが。
経験HP

@Exp HP:ごめんなさい。Ubuntu 9.10システムでこれを取得しましたが、問題はありません。
追って通知があるまで一時停止します。

0

Nanoを使用しています。

ファイルの名前を短い名前(8.3)に変更します。その後、ナノで開くAlt- Jドキュメント全体を正当化します。Alt- O保存します。その後Alt- X終了します。次に、ファイルの名前を元の名前に戻します。

面倒な音が、それは、マニュアルをやっ上で私に多くの時間を保存した可能性があるEnterDeleteEnd私はそれと一緒に暮らすことができる72の90ナノデフォルトに列を制限します。


2
短いファイル名の背後にある魔法とは何ですか?
ジャワ

0

試すことができreformatます。

を実行すると、Debian / Ubuntuにインストールできsudo apt-get install reformatます。

次のように使用します。

reformat -w 80 -j < mytext.txt

正当化されたテキストは標準出力に書き込まれます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.