OnWorks Linux i Windows Online WorkStation

Menu
logo

Darmowy hosting online dla stacji roboczych

<Poprzedni | Spis treści | Następne>

groff

groff to pakiet programów zawierających implementację troffa w wersji GNU. Zawiera także skrypt używany do emulacji Nroffa i reszty rodziny roffów.


Kompletujemy wszystkie dokumenty (wymagana jest kopia paszportu i XNUMX zdjęcia) potrzebne do roff i jego potomkowie służą do tworzenia sformatowanych dokumentów, robią to w sposób raczej obcy współczesnym użytkownikom. Większość współczesnych dokumentów jest tworzona przy użyciu edytorów tekstu, które są w stanie w jednym kroku wykonać zarówno kompozycję, jak i układ dokumentu. Przed pojawieniem się graficznych edytorów tekstu dokumenty były często tworzone w dwuetapowym procesie obejmującym użycie edytora tekstu do tworzenia składu oraz procesora, takiego jak troff, aby zastosować formatowanie. Instrukcje programu formatującego zostały osadzone w komponowanym tekście za pomocą języka znaczników. Współczesnym odpowiednikiem takiego procesu jest strona internetowa, która jest tworzona przy użyciu pewnego rodzaju edytora tekstu, a następnie renderowana przez przeglądarkę internetową przy użyciu HTML jako języka znaczników w celu opisania ostatecznego układu strony.

Nie będziemy zakrywać groff w całości, ponieważ wiele elementów jego języka znaczników dotyczy raczej tajemniczych szczegółów typografii. Zamiast tego skoncentrujemy się na jednym z nich pakiety makr który pozostaje w powszechnym użyciu. Te pakiety makr skupiają wiele poleceń niskiego poziomu w mniejszym zestawie poleceń wysokiego poziomu, które ułatwiają korzystanie groff dużo łatwiej.

Przyjrzyjmy się na chwilę skromnej stronie podręcznika. Mieszka w / usr / share / man katalog jako gzip skompresowany plik tekstowy. Gdybyśmy sprawdzili jego nieskompresowaną zawartość, zobaczylibyśmy następujące informacje (strona podręcznika dla ls w sekcji 1 pokazano):


[ja@linuxbox ~]$ zcat /usr/share/man/man1/ls.1.gz | głowa

.\" NIE MODYFIKUJ TEGO PLIKU! Został wygenerowany przez help2man 1.35.

.TH LS „1” „Kwiecień 2008” „GNU coreutils 6.10” „Polecenia użytkownika”

NAZWA .SH

ls \- wyświetla zawartość katalogu

.SH STRESZCZENIE

.B ls

[\fOPCJA\fR]... [\fPLIK\fR]...

.SH OPIS

.\" Dodaj tutaj dodatkowy opis

.PP

[ja@linuxbox ~]$ zcat /usr/share/man/man1/ls.1.gz | głowa

.\" NIE MODYFIKUJ TEGO PLIKU! Został wygenerowany przez help2man 1.35.

.TH LS „1” „Kwiecień 2008” „GNU coreutils 6.10” „Polecenia użytkownika”

NAZWA .SH

ls \- wyświetla zawartość katalogu

.SH STRESZCZENIE

.B ls

[\fOPCJA\fR]... [\fPLIK\fR]...

.SH OPIS

.\" Dodaj tutaj dodatkowy opis

.PP


obraz

W porównaniu ze stroną podręcznika w jej normalnej prezentacji możemy zacząć dostrzegać korelację między językiem znaczników a jego wynikami:


[ja@linuxbox ~]$ człowiek jest | głowa

Polecenia użytkownika LS(1).

LS(1)

[ja@linuxbox ~]$ człowiek jest | głowa

Polecenia użytkownika LS(1).


IMIĘ

IMIĘ


ls - lista zawartości katalogu

ls - lista zawartości katalogu


STRESZCZENIE

ls [OPCJA]... [PLIK]...

STRESZCZENIE

ls [OPCJA]... [PLIK]...


Jest to interesujące dlatego, że strony podręcznika są renderowane przez groffStosując człowiek-doktor pakiet makro. W rzeczywistości możemy symulować mężczyzna polecenie z następującym potokiem:



[ja@linuxbox ~]$ zcat /usr/share/man/man1/ls.1.gz | groff -mandoc -T ascii | głowa

LS(1) Polecenia użytkownika LS(1)


IMIĘ

ls - lista zawartości katalogu


STRESZCZENIE

ls [OPCJA]... [PLIK]...

[ja@linuxbox ~]$ zcat /usr/share/man/man1/ls.1.gz | groff -mandoc -T ascii | głowa

LS(1) Polecenia użytkownika LS(1)


IMIĘ

ls - lista zawartości katalogu


STRESZCZENIE

ls [OPCJA]... [PLIK]...


Tutaj używamy groff program z opcjami ustawionymi w celu określenia mandocja pakiet makr i sterownik wyjściowy dla ASCII. groff może generować dane wyjściowe w kilku formatach. Jeśli nie określono żadnego formatu, domyślnie wyświetlany jest język PostScript:



[ja@linuxbox ~]$ zcat /usr/share/man/man1/ls.1.gz | groff-mandoc | głowa

%!PS-Adobe-3.0

%%Twórca: wersja groffa 1.18.1

%%Data utworzenia: czw. 5 lutego 13:44:37 2009

%%DocumentNeededResources: czcionka Times-Roman

%%+ czcionka Times-Bold

%%+ czcionka Times-Italic

%%DocumentSuppliedResources: grupy procset 1.18 1

%%Strony: 4

%%PageOrder: Wznieś się

%%Orientacja: pionowa

[ja@linuxbox ~]$ zcat /usr/share/man/man1/ls.1.gz | groff-mandoc | głowa

%!PS-Adobe-3.0

%%Twórca: wersja groffa 1.18.1

%%Data utworzenia: czw. 5 lutego 13:44:37 2009

%%DocumentNeededResources: czcionka Times-Roman

%%+ czcionka Times-Bold

%%+ czcionka Times-Italic

%%DocumentSuppliedResources: grupy procset 1.18 1

%%Strony: 4

%%PageOrder: Wznieś się

%%Orientacja: pionowa


Krótko wspomnieliśmy o PostScript w poprzednim rozdziale i powtórzymy to w następnym. PostScript to język opisu strony używany do opisywania zawartości drukowanej strony na urządzeniu przypominającym zecer. Jeśli weźmiemy wynik naszego polecenia i zapiszemy go w pliku (zakładając, że używamy pulpitu graficznego z Stacjonarny informator):


[ja@linuxbox ~]$ zcat /usr/share/man/man1/ls.1.gz | groff -mandoc >

~/Desktop/foo.ps

[ja@linuxbox ~]$ zcat /usr/share/man/man1/ls.1.gz | groff -mandoc >

~/Desktop/foo.ps


Na pulpicie powinna pojawić się ikona pliku wyjściowego. Po dwukrotnym kliknięciu ikony przeglądarka stron powinna uruchomić się i wyświetlić plik w jego wyrenderowanej formie:


obraz

Rysunek 4: Przeglądanie wyjścia PostScript za pomocą przeglądarki stron w środowisku GNOME


To, co widzimy, to ładnie napisana strona podręcznika ls! W rzeczywistości możliwa jest konwersja pliku PostScript na plik PDF (Portable Document Format) plik za pomocą tego polecenia:



[ja@linuxbox ~]$ ps2pdf ~/Desktop/foo.ps ~/Desktop/ls.pdf

[ja@linuxbox ~]$ ps2pdf ~/Desktop/foo.ps ~/Desktop/ls.pdf


Kurs ps2pdf program jest częścią Ghostscript pakiet instalowany w większości systemów Linux obsługujących drukowanie.


obraz

Wskazówka: systemy Linux często zawierają wiele programów wiersza poleceń obsługujących format pliku


obraz


obraz

konwersja. Często nazywa się je w konwencji format2format. Spróbuj użyć polecenia ls /usr/bin/*[[:alfa:]]2[[:alfa:]]* aby je zidentyfikować. Spróbuj także wyszukać programy o nazwie formatdoformat.


obraz

Do naszego ostatniego ćwiczenia z groff, ponownie odwiedzimy naszego starego przyjaciela dystrybucja.txt jeszcze raz. Tym razem skorzystamy z tabl program używany do formatowania tabel w celu złożenia naszej listy dystrybucji Linuksa. Aby to zrobić, użyjemy naszego wcześniejszego sed skrypt dodający znaczniki do strumienia tekstowego, do którego będziemy przesyłać dane groff.

Najpierw musimy zmodyfikować nasz sed skrypt dodający niezbędne elementy znaczników (tzw prośby in groff) to tabl wymaga. Używając edytora tekstu, zmienimy distros.sed do następujących:


# skrypt sed generujący raport o dystrybucjach Linuksa


1 ja\

.TS\

pole środkowe;\ cb ss\

cb cb cb\ ln c.\

Raport dotyczący dystrybucji Linuksa\

=\

# skrypt sed generujący raport o dystrybucjach Linuksa


1 ja\

.TS\

pole środkowe;\ cb ss\

cb cb cb\ ln c.\

Raport dotyczący dystrybucji Linuksa\

=\


Imię

_

Wersja

Wydany\

Imię

_


s/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3-\1-\2/

$a\

TE

s/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3-\1-\2/

$a\

TE


obraz

Należy pamiętać, że aby skrypt działał poprawnie, należy zwrócić uwagę, aby słowa „Nazwa wersji wydanej” były oddzielone tabulatorami, a nie spacjami. Wynikowy plik zapiszemy jako distros-tbl.sed. tabl używa .TS i TE żądania rozpoczęcia i zakończenia tabeli. Wiersze następujące po .TS request definiuje globalne właściwości tabeli, które w naszym przykładzie są wyśrodkowane poziomo na stronie i otoczone ramką. Pozostałe wiersze definicji opisują układ każdego wiersza tabeli. Teraz, jeśli ponownie uruchomimy nasz potok generowania raportów z nowym sed skrypt, otrzymamy następujące informacje:


[ja@linuxbox ~]$ sort -k 1,1 -k 2n dystrybucje.txt | sed -f dystrybucje-tbl

.sed | groff -t -T ascii 2>/dev/null

+-----------------------------+

| Raport dotyczący dystrybucji Linuksa |

+-----------------------------+

[ja@linuxbox ~]$ sort -k 1,1 -k 2n dystrybucje.txt | sed -f dystrybucje-tbl

.sed | groff -t -T ascii 2>/dev/null

+-----------------------------+

| Raport dotyczący dystrybucji Linuksa |

+-----------------------------+



obraz

| Nazwa Wersja Wydana |

+-----------------------------+


|Fedora

5

2006-03-20

|

|Fedora

6

2006-10-24

|

|Fedora

7

2007-05-31

|

|Fedora

8

2007-11-08

|

|Fedora

9

2008-05-13

|

|Fedora

10

2008-11-25

|

|SUSE

10.1

2006-05-11

|

|SUSE

10.2

2006-12-07

|

|SUSE

10.3

2007-10-04

|

|SUSE

11.0

2008-06-19

|

|Ubuntu

6.06

2006-06-01

|

|Ubuntu

6.10

2006-10-26

|

|Ubuntu

7.04

2007-04-19

|

|Ubuntu

7.10

2007-10-18

|

|Ubuntu

8.04

2008-04-24

|

|Ubuntu

8.10

2008-10-30

|

+-----------------------------+


Dodawanie -t opcja do groff instruuje go, aby wstępnie przetworzył strumień tekstowy tabl. Podobnie, -T opcja służy do wyprowadzania danych w formacie ASCII, a nie w domyślnym nośniku wyjściowym, PostScript.

Format wydruku jest najlepszy, jakiego możemy się spodziewać, jeśli ograniczamy się do możliwości ekranu terminala lub drukarki przypominającej maszynę do pisania. Jeśli określimy wyjście PostScript i graficznie obejrzymy wynik, otrzymamy znacznie bardziej satysfakcjonujący wynik:



[ja@linuxbox ~]$ sort -k 1,1 -k 2n dystrybucje.txt | sed -f dystrybucje-tbl

.sed | groff -t > ~/Desktop/foo.ps

[ja@linuxbox ~]$ sort -k 1,1 -k 2n dystrybucje.txt | sed -f dystrybucje-tbl

.sed | groff -t > ~/Desktop/foo.ps


obraz

Rysunek 5: Oglądanie gotowego stołu


Najlepsze przetwarzanie w chmurze dla systemu operacyjnego w OnWorks: