Опубликован: 24.07.2006 | Доступ: свободный | Студентов: 8867 / 1199 | Оценка: 3.95 / 3.75 | Длительность: 41:47:00
ISBN: 978-5-94157-183-3
Лекция 13:

Программы для работы с текстом

Пакет WordViewer

Как уже говорилось выше, одна из самых больших проблем для пользователей Linux - это работа с файлами в форматах MS Word (и других программ из пакета MS Office). Ведь пока что большинство текстов создается именно в этом формате. Наиболее распространенное средство просмотра таких файлов, - это программа (точнее библиотека программ) wv, которая раньше носила более полное название mswordview.

Библиотека wv предназначена для получения доступа к файлам форматов MS Word 2000, 97, 95 и 6 из операционных систем типа UNIX, в частности из Linux. В состав дистрибутива ALT Linux Junior 1.0 включена версия 0.6.5 этого пакета, авторами которого являются Dom Lachowicz и Caolan McNamara (первый разработчик). Если у вас этот пакет не установлен, вы можете найти его на сайте http://www.wvware.com.

Идея, реализованная в этом пакете, очень проста: раз мы не имеем средств для просмотра файлов в формате MS Word, то давайте преобразуем текст из этих файлов в какой-то открытый формат. В качестве последнего можно выбрать один из следующих форматов: HTML, PS, PDF, LaTex, DVI (формат издательской системы TEX), ABW (формат текстового редактора AbiWord), Wml (формат, используемый в персональных органайзерах PDA и устройствах типа Web-телефонов), ASCII-текст. Вызов отдельных библиотечных процедур может быть использован в других приложениях. Разработчики обещают, что вскоре станет возможным и обратное преобразование: из перечисленных открытых форматов - в формат MS Word.

Пакет состоит из отдельных программ, каждая из которых предназначена для преобразования doc-файла в определенный формат. Этот формат указывается непосредственно в названиях отдельных программ пакета: wvAbw, wvCleanLatex, wvDVI, wvHtml, wvLatex, wvMime, wvPDF, wvPS, wvRTF, wvSimpleCLX, wvText, wvWml. Кроме того, в состав пакета входят две вспомогательных утилиты: wvVersion, которая служит для получения информации о версии документа MS Word, и wvSummary - эта утилита выводит общую информацию о документе, которую в самом MS Word можно ввести через пункт меню Файл | Свойства. Вот как выглядит вывод этих команд (для использованного мной в этом примере файла служебные данные не были введены; впрочем, если их ввести по-русски, то радости будет не много больше, поскольку вывод получим в кодовой странице CP-1251, так что текст на экране будет нечитаемым).

[user@linux tmp]$ wvVersion book-p1.doc
Version: word8, Encrypted: No

[user@linux tmp]$ wvSummary book-p1.doc
The title is A
The subject is
The author is kos
The keywords are
no comments found
The template was Normal.dot
The last author was kos
The rev # was 12
The app name was Microsoft Word 8.0
PageCount is 1
WordCount is 52757
CharCount is 300716
Security is 0
Codepage is 0x4e3 (1251)

Основной утилитой пакета является программа wvWare (или wvConvert ), вызов которой осуществляется следующим образом

wvWare [OPTION...] filename.doc > filename.html

Основные опции:

  • -x --config=config.xml

    Указывает на используемый выходной фильтр.

  • -c --charset=charset

    Задает кодовую страницу для iconv.

  • -p --password=password

    Задает пароль для зашифрованных документов Word.

  • -d --dir=dir

    Задает каталог, в котором будет сохранена создаваемая графика.

  • -v -version

    Выдает версию пакета wvWare.

  • -? -help

    Выводит краткую справку по использованию программы.

Выходной фильтр, указываемый опцией -x или --config=, задает формат выходного файла. Если эта опция не задана, то выходной фильтр ищется в текущем каталоге или (если в текущем не нашли) по месту установки пакета. По умолчанию используется фильтр wvHtml.xml, т. е. doc-файл преобразуется в формат HTML.

После преобразования полученный файл можно просмотреть с помощью соответствующей программы просмотра, например, html-файл - с помощью любого Web-браузера. Конечно, при этом некоторые возможности форматирования, имеющиеся в Word, теряются, и это надо иметь в виду, просматривая полученные файлы.

Насколько я могу судить, именно программы пакета wv используются для открытия файлов MS Word в некоторых текстовых редакторах для Linux, например, в AbiWord.

Программы-перекодировщики кодовых страниц

Как известно, для представления символов русского алфавита существует несколько альтернативных кодировок или кодовых страниц.

В Unix-системах наиболее распространенной является кодировка KOI8-R, Microsoft использует CP-1251 или CP-866 (DOS). Существуют еще ISO8859-5, UTF, Unicode (подробнее о кодировках можно прочитать в "Подключение и настройка аппаратных устройств" ).

Если вы встретили файл, содержимое которого "не читается", то вам потребуется программа перекодировки. Как говорится в RU.LINUX.FAQ: "Перекодировщиков CP1251 и CP866 --> KOI8-R просто огромное количество. Не надо писать новых ;-). Наиболее широко распространены iconv (входит в поставку glibc ) и GNU recode."

Программа iconv запускается следующим образом:

[user]$ iconv -f866 -tKOI8-R -o <outfile> infile

Если не указать выходной файл (опция -o ), то результат будет выдаваться на экран (используя фильтры more или less можно удобно просмотреть файл). Чтобы получить список всех возможных кодировок (а он огромен!), дайте команду iconv --list, а для получения помощи: iconv -? или iconv --usage. Между прочим, man-страница не выдается. Впрочем, других опций все равно очень немного: только --verbose (сообщать дополнительные сведения), -V, и --version (обе опции служат для вывода версии программы).

Программу recode можно найти на http://www.iro.umontreal.ca/~pinard/recode/.

Запускается она примерно так:

[user]$ recode CP1251..KOI8-R winfile.txt

Кроме упомянутых команд вы можете воспользоваться программой "Russian Anywhere", которая существует как в версии для Windows (где я с ней и познакомился), так и в версии для командной строки Linux (создатели обещают выпустить и графическую оболочку). Эту программу можно скачать (как в исходных кодах, так и в виде исполняемого модуля) с сайта разработчика http://www.livotov.org/software/.

Исполняемый модуль программы имеет название re. Его лучше поместить в один из каталогов, указанных в переменной PATH.

Программа вызывается из командной строки. Для того, чтобы перекодировать какой-то файл, который "не читается", в кодировку KOI8-R, надо дать команду:

[user]$ re <SourceFile> <DestFile> ? K

где :

  • <SourceFile> - исходный (нечитаемый) файл;
  • <DestFile> - перекодированный файл;
  • ? - сообщает RE, что кодировка исходного файла не известна и re должна проанализировать файл и самостоятельно определить его кодировку;
  • K - задает кодировку для результирующего файла (в данном случае KOI-8).

Если вы знаете кодировку исходного файла, вы можете указать ее вместо символа "?". Например, если вы хотите перекодировать файл letter.txt, который был создан в Windows, и вы знаете, что файл сохранен в кодировке 1251, то надо дать команду:

[user]$ re letter.txt letter-koi.txt W K

После этого, просмотрев файл letter-koi.txt, вы увидите вполне читаемый русский текст в KOI8-R.

Полный формат вызова перекодировщика:

[user]$ re options filename_from filename_to cp_from cp_to [s/d/f] [u/l/s]

где options: [-v][-E|-R|-N][-e|-s]

  • -v - выдавать информацию о ходе обработки;
  • -n - не выдавать информацию о ходе обработки (задано по умолчанию);
  • -E - преобразовывать все символы p, H из русских в английские;
  • -R - преобразовывать все символы p, H из английских в русские;
  • -N - оставлять все p, H (русские и английские) как в исходном тексте (задано по умолчанию);
  • -e - перекодировать все символы 0x80 - 0xFF;
  • -s - перекодировать только 64 символа русского алфавита (задано по умолчанию),

а cp_from и cp_to - любой из следующих символов, обозначающих возможные кодировки (по умолчанию - W, K).

Таблица 12.1. Обозначение кодировок в программе re
Символ Кодировка Символ Кодировка
W Windows _ (подчеркивание) _xxe
D Dos % %hex
K KOI-8 \\ \'hex
L Latin G Graph_win
I Iso < binhex
H HEX + +UTF7-
S ShiftKbrd C C_MIC
M Mac Y Y_c16
A AFF Z Z_c32
O Odd(UTF8_1) F F(UTF8_2)
B Base64 P Pict
E Express N N_Estl
T T-Html V V_Vpp855
U User X X_sp
- (тире) uue J J_diff

Как уже было сказано, если cp-from="?", то программа пытается самостоятельно определить кодировку исходного файла.

Если у вас по каким-либо причинам не оказалось ни одной из указанных программ-перекодировщиков, то для просмотра содержимого файла можно воспользоваться одним из браузеров Интернет, которые изначально ориентированы на работу с разными кодировками. Например, сгодится обычный lynx:

[user]$ lynx -assume_local_charset cp866 file.txt

Можно также загрузить "нечитаемый" файл в Netscape Navigator, после чего поменять кодировку через меню View / Character Set.

Владислав Гермак
Владислав Гермак

Приглашения оболочки

Одна из очень важных переменных имеет имя PS1. Эта переменная задает вид приглашения, которое bash выводит, когда ожидает ввода очередной команды пользователем. По умолчанию этой переменной присвоено значение "\s-\v\$ ".

"\s-\v\$ ". -значиние /v замените /u