Linux에서 일반 텍스트를 어떻게 정당화 할 수 있습니까?


17

왼쪽과 오른쪽의 단락이있는 일반 텍스트 (.txt) 문서를 작성 중입니다. 줄 길이가 균일해질 때까지 공백을 수동으로 추가하고 필요한 경우 하이픈으로 단어를 분리합니다. 내 문서의 예제를 사용하려면 다음과 같은 단락을 수행하십시오.

이 공상 구슬은 이상한 성질을 가지고 있고
흥미롭고 다른 사람들은 게으른 디자인을 나타냅니다. 그들은 거의 다
동일한 디자인 결함으로 인해 : 게임은 그것들을 너무 규칙적으로 취급합니다
불알.

다음과 같이 보일 것입니다.

이 환상적인 공들은 이상한 성질을 가지고 있습니다
깔끔하고 재미 있고 다른 사람들은
게으른 디자인의 tive. 그들은 거의 모두에 의해 발생
동일한 디자인 결함 : 게임은 그것들을 너무 많이 취급합니다
일반 공.

어떻게해야합니까?

공백을 추가해도됩니다 (단어를 구분하지 않고). 단락의 대상 너비 (# 문자)를 제어해야합니다. 위의 예제는 한 줄에 53 자로 정렬되지만 실제 문서의 줄 너비는 60에서 79까지 다양합니다.

그러한 기능을 가진 텍스트 편집기가 있다면 좋을 것입니다.

나는 이미 시도했다 :

  • OpenOffice and TeX : 형식을 사용하여 텍스트 표시 방법을 변경합니다.
  • nano 의 Justify 명령은 실제로 선의 너비를 균일하게 만들지 않기 때문에 계산에 포함되지 않습니다.

다음 답변이 본인에게 가장 적합한 답변 이었으므로 다음 답변을 수락했습니다 . 나는 이맥스 채우기 명령이 답 중에서 가장 사용하기 쉽다는 것을 알았으며 공백이 아닌 들여 쓰기 (# 및 // 주석과 같은)조차 인식하는 방법에 감사합니다. 그러나 다른 답변은 모두 자신의 틈새를 채우고이 질문을 방문하는 다른 사람들도 볼 것을 권장합니다.


1
왜? 정말 궁금합니다. 일반 텍스트의 장점 중 하나는 서식과 무관하며 OpenOffice 또는 TeX로 썰어 멋지게 만들 수 있다는 것입니다. 이 용도로 무엇을 사용하십니까?
Doug Harris

또한 세미 인텔리전트 하이픈도 사용할 유틸리티를 찾고 있습니까?
Doug Harris

1
그 이유는 GameFAQ를위한 안내서이기 때문입니다. GameFAQ는 일반 텍스트 TXT 문서 만 사용합니다. 하이픈 넣기에 관해서는 선호하지만 절대적인 요구 사항은 아닙니다.
경험치 HP

답변:


5

fill-paragraph또는 fill-region( fill 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 용 패키지를 설치하고 있습니다.
경험치 HP

좋아, 특이한 인터페이스와 용어에 익숙해지기까지는 약간의 시간이 걸렸지 만 (최소한 오늘날의 표준에서는 비정상적입니다). Cx f 53, M-1 Mq. 내 계획 B (텍스트를 정당화하는 내 자신의 Ruby 스크립트를 작성했을 것)보다 확실히 쉽고 만족스럽게도 들여 쓰기를 인식하고 정당화 할 때 고려합니다. 좋은.
경험치 HP

채우기 열을 53 또는 그 문제에 대해 원하는 다른 값으로 설정하려면 어떻게합니까? 현재 상태를 어떻게 확인할 수 있습니까?
HelloGoodbye

1
그건 그렇고, 답변의 링크가 끊어졌습니다.
HelloGoodbye

링크를 업데이트했습니다
Doug Harris

18

너는 필요해 par

예를 들어 우분투에서 얻으려면 다음을 수행하십시오.

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 명령과 비교하여 이것은 사용할 수 없습니다.
경험치 HP

예를 들어 줄 수 있습니까? 나에게는 꽤 안정적인 것 같습니다.
sml

1
제공 한 명령이 올바르지 않습니다. 그것은이어야 par w80 j1하지 par 80j. 편집 : 또는par jw80
Gandaro

6

fmt 구식 솔루션입니다

매뉴얼 페이지에서 :

fmt [-cmnps] [-d 문자] [-l num] [-t num] [목표 [최대] | 너비 | -w 너비] [파일 ...]

목표 길이는 기본적으로 목표 길이보다 65이고 최대 길이는 10입니다. 또는 하이픈을 앞에 추가하거나 -w를 사용하여 단일 너비 매개 변수를 지정할 수 있습니다. 예를 들어, fmt -w 72'',fmt -72 ''및``fmt 72 72 ''는 모두 동일한 출력을 생성합니다.


일부 버전에는 fmt이러한 옵션 중 일부 가 없으며 전체 정당성을 수행 할 수 없습니다.
추후 공지가있을 때까지 일시 중지되었습니다.

죄송하지만을 사용하여 텍스트를 정확히 어떻게 정당화하는지 명확하게 말하지 않았습니다 fmt. 또한 Dennis가 말한 것처럼 내 시스템에서 매뉴얼 페이지는 언급 한 것과 같은 텍스트를 제공하지 않으며 정당화하는 방법을 말하지 않습니다.
jamadagni

2

여기에paradj 완전한 정당화와 하이픈을 넣을 수 있는 Perl 스크립트 가 있습니다.

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.

불행히도 사용할 수없는 훌륭한 솔루션입니다. 약 한 달 전에 TeX :: Hyphen을 사용하고 싶기 때문에 Perl에서 TeX를 얻으려고했습니다 (이 질문과는 다르지만 관련이있는 문제). IIRC, 내가 발견 한 것은 우분투 저장소에는 TeX 라이브러리의 특정 부분 만 있고 하이픈은 포함되어 있지 않다는 것입니다. Perl TeX 라이브러리를 수동으로 설치하려고 시도했지만 제대로 작동하지 않았습니다. 나는 펄을 깨고 다음 몇 시간 동안 피해를 취소했다. 나는 또 다른 것을 포기하기를 꺼려한다. 그래도 적어도이 답변에 대해 +1을 줄 수있는 충분한 담당자가 있기를 바랍니다.
경험치 HP

@Exp HP : 문제가 생겨서 죄송합니다. 나는 이것을 Ubuntu 9.10 시스템에 가지고 있으며 아무런 문제가 없습니다.
추후 공지가있을 때까지 일시 중지되었습니다.

0

나는 나노를 사용합니다.

파일 이름을 짧은 이름 (8.3)으로 바꾸십시오. 다음, 나노에서 열기 Alt- J전체 문서를 정당화하기 위해. Alt- O저장합니다. 그런 다음 Alt- X종료하십시오. 그런 다음 파일 이름을 원래 이름으로 다시 바꾸십시오.

성가신 소리를하지만 수동을하는 동안 나에게 많은 시간을 저장 할 수 있음 Enter, Delete, End나는 그와 함께 살 수 (72)에 90 나노 기본값으로 열을 제한합니다.


2
짧은 파일 이름의 마술은 무엇입니까?
Jawa

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.