Làm thế nào tôi có thể biện minh cho văn bản đơn giản trong Linux?


17

Tôi đang soạn một tài liệu văn bản đơn giản (.txt) có các đoạn hợp lý trái và phải. Tôi tự thêm khoảng trắng, ngắt từ bằng dấu gạch nối nếu cần, cho đến khi các dòng có độ dài đồng nhất. Để sử dụng một ví dụ từ tài liệu của tôi, một đoạn như thế này:

Những quả bóng phantasmic này có một số tính chất lạ, một số gọn gàng, một số
thú vị, và những người khác chỉ cho thấy thiết kế lười biếng. Họ gần như tất cả
gây ra bởi cùng một lỗi thiết kế: Trò chơi đối xử với họ quá giống như thường lệ
những quả bóng.

sẽ kết thúc như thế này:

Những quả bóng phantasmic có một số tính chất lạ,
một số gọn gàng, một số thú vị, và những người khác chỉ là indica-
Tive của thiết kế lười biếng. Chúng hầu như đều do
lỗ hổng thiết kế giống nhau: Trò chơi đối xử với họ quá nhiều như
bóng thường xuyên.

Tôi có thể làm cái này như thế nào?

Bạn có thể thêm khoảng trắng (không ngắt từ trên dòng), nhưng tôi cần kiểm soát độ rộng mục tiêu của đoạn (tính bằng # ký tự). Ví dụ trên được chứng minh là 53 ký tự trên mỗi dòng, nhưng độ rộng dòng trong tài liệu thực tế của tôi thay đổi từ 60 đến 79.

Sẽ thật tuyệt nếu có một trình soạn thảo văn bản có tính năng như vậy.

Tôi đã thử:

  • OpenOfficeTeX : Họ chỉ sử dụng định dạng để thay đổi cách hiển thị văn bản.
  • Lệnh Justify của nano không được tính bởi vì nó không thực sự làm cho các đường có độ rộng đồng đều.

Tôi chấp nhận câu trả lời sau đây vì đó là câu trả lời phù hợp nhất với tôi . Tôi thấy các lệnh điền vào emacs dễ sử dụng nhất trong số các câu trả lời và tôi đánh giá cao cách nó nhận ra ngay cả thụt lề không phải khoảng trắng (đối với những thứ như # và // bình luận). Tuy nhiên, tất cả các câu trả lời khác đều điền vào những ngóc ngách của riêng họ và tôi khuyên những người khác truy cập câu hỏi này để xem xét chúng.


1
Tại sao? Tôi thực sự tò mò. Một trong những lợi thế của văn bản đơn giản là nó không phụ thuộc vào định dạng và bạn có thể đưa nó vào OpenOffice hoặc TeX và làm cho nó trông đẹp. Bạn sử dụng cái gì cho việc này?
Doug Harris

Ngoài ra, bạn đang tìm kiếm tiện ích này để thực hiện gạch nối bán thông minh quá?
Doug Harris

1
Lý do là bởi vì đó là một hướng dẫn cho GameFAQs. GameFAQ chỉ lấy văn bản thuần túy, tài liệu TXT. Đối với gạch nối, tôi thích nó, nhưng nó không phải là một yêu cầu tuyệt đối.
Exp HP

Câu trả lời:


5

Bạn có thể làm điều này trong emacs bằng cách sử dụng fill-paragraphhoặc fill-region( điền tài liệu ).

Bạn cần phải vượt qua một đối số tiền tố số. Cột điền mặc định là 70.

Chọn văn bản để điền và làm M-3 M-x fill-region.

Tôi đặt cột điền thành 53 cho văn bản mẫu của bạn và nhận được:

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.

Trông tôt đây. Tôi đang cài đặt gói cho emacs ngay bây giờ để xem tính năng này.
Exp HP

Được rồi, phải mất khá nhiều thời gian để làm quen với giao diện và thuật ngữ bất thường (ít nhất là theo tiêu chuẩn ngày nay, ít nhất), nhưng điều này thật tuyệt. Cx f 53, M-1 Mq. Nó chắc chắn dễ dàng hơn Kế hoạch B của tôi (đã từng viết kịch bản Ruby của riêng tôi mà văn bản hợp lý), và tôi rất hài lòng, nó thậm chí còn nhận ra sự thụt lề và tính đến điều đó khi biện minh. Đẹp.
Exp HP

Làm cách nào để đặt cột điền thành 53 hoặc bất kỳ giá trị nào khác tôi muốn cho vấn đề đó? Và làm thế nào tôi có thể kiểm tra những gì nó hiện đang có?
HelloGoodbye

1
Nhân tiện, liên kết trong câu trả lời của bạn bị hỏng.
HelloGoodbye

Tôi đã cập nhật liên kết
Doug Harris

18

bạn cần par

ví dụ: để có được nó trên Ubuntu, hãy làm:

sudo aptitude install par

để biện minh text.txt(ở độ rộng 80 ký tự), tiết kiệm trong newtext.txt:

par j1w80 < text.txt > newtext.txt

để sử dụng mệnh giá trong vim hoặc gvim:

:set formatprg=par\ j1w80

sau đó làm nổi bật văn bản bạn muốn định dạng và sử dụng gqlệnh.

để biết thêm thông tin, xem man par


1
Tôi đã thử nghiệm điều này và thấy nó khá cảm động. Nó đôi khi dẫn đến lỗi ngay cả dưới những gì có vẻ là vô tội nhất trong hoàn cảnh. So với lệnh emacs, điều này là không thể sử dụng.
Exp HP

Bạn có thể đưa ra một ví dụ không? Nó có vẻ khá ổn định với tôi.
sml

1
Lệnh bạn đưa ra là không chính xác. Nó phải là par w80 j1, không phải par 80j. Chỉnh sửa: Hoặcpar jw80
Gandaro

6

fmt là giải pháp trường học cũ

Từ trang người đàn ông:

fmt [-cmnps] [-d chars] [-l num] [-t num] [mục tiêu [tối đa] | -Băng thông | -w chiều rộng] [tập tin ...]

Độ dài mục tiêu mặc định là 65 và tối đa đến 10 so với độ dài mục tiêu. Thay vào đó, một tham số chiều rộng duy nhất có thể được chỉ định bằng cách thêm dấu gạch nối vào nó hoặc bằng cách sử dụng -w. Ví dụ, fmt -w 72'',fmt -72 '' và `` fmt 72 72 '' đều tạo ra đầu ra giống hệt nhau.


Một số phiên bản fmtkhông có một vài trong số các tùy chọn đó và không thể biện minh đầy đủ.
Tạm dừng cho đến khi có thông báo mới.

Xin lỗi nhưng bạn chưa nói rõ ràng chính xác làm thế nào để biện minh cho việc sử dụng văn bản fmt. Ngoài ra, như Dennis đã nói, trên hệ thống của tôi, trang người đàn ông không cung cấp bất kỳ văn bản nào như bạn đã đề cập và không nói cách biện minh.
jamadagni

2

Đây là một kịch bản Perl được gọi làparadj có thể thực hiện đầy đủ biện minh và gạch nối.

Dưới đây là một diffsố thay đổi tôi đã thực hiện để hỗ trợ thêm lề trái:

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";

Lệnh này:

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

tạo đầu ra rất gần với ví dụ của bạn (không gian thêm ở những nơi khác nhau).

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.

Một giải pháp tuyệt vời mà thật không may, tôi không thể sử dụng. Khoảng một tháng trước, tôi đã cố gắng để có được TeX trong Perl vì tôi muốn sử dụng TeX :: Hyphen (cho một vấn đề khác nhưng có liên quan đến câu hỏi này). IIRC, những gì tôi phát hiện ra là các repos Ubuntu chỉ có một số phần nhất định của thư viện TeX và Hyphen không nằm trong số đó. Tôi đã thử cài đặt thủ công thư viện Perl TeX, nhưng nó không hoạt động tốt. Cuối cùng tôi đã phá vỡ Perl và dành vài giờ tiếp theo để hoàn tác. Tôi miễn cưỡng cho nó đi tiếp. Dù vậy, tôi ước mình có đủ đại diện để ít nhất cho bạn +1 cho câu trả lời này.
Exp HP

@Exp HP: Tôi xin lỗi bạn đã gặp quá nhiều rắc rối. Tôi đã có điều này trên hệ thống Ubuntu 9.10 và tôi không gặp vấn đề gì.
Tạm dừng cho đến khi có thông báo mới.

0

Tôi sử dụng Nano.

Đổi tên tập tin thành một tên ngắn hơn (8.3). Mở bằng Nano, sau đó Alt- Jđể biện minh cho toàn bộ tài liệu. Alt- Ođể tiết kiệm. Sau đó Alt- Xđể thoát. Sau đó đổi tên tập tin trở lại tên ban đầu.

Có vẻ rườm rà nhưng nó lưu lại cho tôi rất nhiều thời gian qua làm hướng dẫn Enter, Delete, Endđể hạn chế các cột đến 90. mặc định Nano đến 72. Tôi có thể sống với điều đó.


2
Điều kỳ diệu đằng sau tên tập tin ngắn là gì?
Jawa

0

Bạn có thể thử reformat.

Bạn có thể cài đặt nó trên Debian / Ubuntu bằng cách chạy sudo apt-get install reformat.

Sử dụng nó như thế này:

reformat -w 80 -j < mytext.txt

Các văn bản hợp lý sẽ được viết vào đầu ra tiêu chuẩn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.