Hlavní navigace

Převod textů do UNIXu

Stanislav Brabec

Na místě dnešního dílu seriálu Grafika v UNIXu se poněkud neobvykle budeme zabývat texty. Má to svůj důvod – chceme-li připravovat tiskové podklady v UNIXu, nebudeme zřejmě pracovat ve vzduchoprázdnu – písařka asi nebude používat Emacs či Vi, zákazníci jakbysmet. A to už vůbec nemluvím o „obrázcích v Dokumentu“, které budeme občas muset přečíst. Dnešní díl věnujeme převodu textů do otevřených formátů, vhodných pro práci v UNIXu. Až příště přijde e-mail v MS-Wordu, i váš Mutt jej může zobrazit!

Pokud při práci navazujeme na někoho, kdo používá jinou platformu, prvním krokem, který nás čeká, je převod.

Holé texty

Nejčastěji se tento problém týká textů. Přestože zde již dlouhá léta existují standardní kódování češtiny (Linux používá jedno z nich – ISO-8859–2, nověji též UTF-8 a Unicode), Microsoft i Apple si vytvořili svá vlastní. Jak Windows-1250, tak MacCE obsahují širší množinu znaků než Latin-2, a tak při převodu musíme prověřit (např. zpětnou konverzí), že jsme žádný znak neztratili. Pro textovou konverzi je k dispozici mnoho nástrojů.

Součástí glibc je jeden z těchto nástrojů – iconv. Dalšími jsou balíčky GNU recode nebo perlové Cstools.

Zde je malá ukázka převodu:

iconv -f WINDOWS-1250 -t ISO8859-2 \
  <windows.txt >unix.txt
recode -f 1250..latin2 <windows.txt >unix.txt
cstocs 1250 il2  <windows.txt >unix.txt

Pokud vystačíme jen s převodem znaků konce řádku, použijeme nástroje tr a sed, které najdeme v každé distribuci:

tr -d '\r\032' <dos.txt >unix.txt
tr '\r' '\n' <mac.txt >unix.txt
# ^M je znak Control-M, ^Z  je znak Control-Z
( sed 's/$/^M/' ; echo -n '^Z' ) <unix.txt >dos.txt
# Pozn.: Znak konce souboru (^Z == \032) většina
# programů ve Windows již nepotřebuje.

Microsoft Word Document

Dnes se stále častěji setkáváme s proprietárními formáty, jejichž dekódování není zdaleka triviální. Nejčastěji se jedná o některou verzi obecně rozšířeného formátu Microsoft Word Document. Někteří uživatelé Windows jej používají všude v domnění, že jde o základní textový formát.

Před vlastní konverzí zhodnotíme, co z původního formátování textu je třeba zachovat a co je možné (nebo dokonce žádoucí) ztratit. Jiné nároky budeme mít na román (i když i tam můžeme narazit např. na Françoise či Bjřrna), jiné na vědeckou práci plnou vzorců.

V případě, že majitel jiného programu je ochoten (a schopen) spolupracovat, je možné dohodnout rozumný meziformát (třeba i jiný proprietární formát), který zachová vše, co je v dané situaci potřebné. Jako příklad může posloužit např. formát HTML. Zajímavým meziformátem je též T602, který zachová kurzívu, tučné písmo a několik dalších základních stylů. Jeho export má bohužel v novějších verzích MS-Wordu otřesnou kvalitu (vypadávají webové odkazy, e-maily, textové rámy).

Pokročilejší uživatel MS-Wordu dokonce dokáže v případě potřeby okolo každé kurzívy automaticky doplnit např. {\it kurzíva}, čímž vyexportuje text přímo použitelný v TEXu.

Pro případ co nejkompletnějšího převodu je naopak jako meziformát vhodný formát programu Word Perfect. Jeden z jeho nejlepších převodníků je wp2latex. V případě novějších verzí MS-Wordu je kvalita převodníku opět otřesná (písmena ŽŤŇŮžťňů se interpretují špatně a místo písmen Řř naleznete jen paznaky). Kolega pracující ve Windows si za účelem převodu do TEXu udržuje instalaci MS-Wordu 6.0, další možností je záměna písmen před exportem.

Dnes však stále častěji musíme převádět texty i tehdy, když autor nespolupracuje nebo neovládá počítač natolik, aby dokázal změnit výstupní formát (byť je mu to krok za krokem vysvětleno). Pak se poohlédneme po UNIXovém převodníku. Na Rootu se již tomuto tématu věnovaly dva starší články, které popsaly několik alternativ. K nim bych chtěl přidat pouze odkaz na Antiword.

Více se zaměřím na staronový projekt wv. Jedná se o knihovnu (kterou používá např. AbiWord) a několik programů pro použití z příkazové řádky. Jejich výstup lze poměrně dobře řídit pomocí konfiguračních XML souborů. Standardní výbava obsahuje výstup do holého textu, HTML, AbiWordu, LaTEXu, čistého LaTEXu, PostScriptu, PDF, RTF, DVI a WML.

Program navíc exportuje i obrázky – JPG, PNG a WMF – tedy něco, co je pod Windows bez ztráty kvality téměř nemyslitelné. Díky wv tedy již neplatí: „Co MS-Office pohltí, již nikdy nevydá.“

Příkazovou řádku oceníme zvlášť tehdy, když je kniha s padesáti kapitolami uložena v padesáti souborech.

Jako příklad další konfigurace uvádím wvupages (konfigurační soubor a pomocný skript), který převede soubory v aktuálním adresáři do mého vlastního TEXového formátu, ve kterém se zachová kurzíva a tučné písmo, ale minimum dalšího formátování, jež při dalším zpracování většinou překáží.

Ukázkou integrace wv do systému je také skript docview, který umožní prohlížet .doc soubory přímo v poštovním programu (např. v Muttu) a Midnight Commanderu. Pokud si jej nakopírujete do počítače, můžete provést následující instalaci:

Přidáme dva řádky do souboru /etc/mailcap:

application/msword; docview -h %s; needsterminal
application/msword; docview %s; copiousoutput

První řádek zajistí, že se příloha zobrazí, když ji otevřeme (i s odkazy na obrázky), druhý ji zobrazí v souhrnném pohledu.

Potom ještě do souboru /etc/Muttrc na konec řádku auto_view připíšeme application/msword

A do souboru /usr/lib/mc/mc.ext (nebo podobného) přidáme:

# Microsoft Word Document
regex/\.([Dd]o[ct]|DO[CT]|[Ww]ri|WRI)$
    View=%view{ascii} docview %f
type/^Microsoft\ Word
    View=%view{ascii} docview %f

Toť vše. A nyní se vám již příloha application/msword zobrazí v Muttu, jako by to byl obyčejný text! Pokud se pod souborem s příponou .doc skrývá obyčejný textový soubor, skript to odhalí a zobrazí jej taktéž.

RTF

Druhým nejčastěji převáděným formátem je RTF. Jedná se sice o formát textový a otevřený (jeho základní formátování je podobné TEXu), ale ve většině verzí různě „rozšířený“, takže i pro něj jsou potřebné převodníky.

Nejjednodušší převodník pro RTF lze napsat za pár minut (převodník a pomocný skript). Takový převodník však vyrobí spoustu zbytečného balastu. Naštěstí je zde GNU unrtf. Pravda, zatím neobsahuje českou kódovací tabulku, ale pro LaTEXový výstup si pomůžeme jednoduchým postprocesorem.

Na závěr bych chtěl poznamenat, že v nouzi lze z RTF ručně získat bloky hexadecimálních čísel reprezentující některá data (např. obrázky), a pak je pomocí jednoduchého programu unhex.c převést do binárních dat.

Našli jste v článku chybu?

10. 12. 2005 15:32

F&T (neregistrovaný)
wp2latex umi pozrat a konvertovat i Word. Size to zatim
moc nechodi, ale muzete to zkusit jako vychodisko z nouze.

Interni format Wordu je strasna sracka, Wordperfect
je proti tomu relativne snadno rozlustitelny.

F&T





120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Vitalia.cz: Vychytané vály a válečky na vánoční cukroví

Vychytané vály a válečky na vánoční cukroví

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Lupa.cz: Kdo pochopí vtip, může jít do ČT vyvíjet weby

Kdo pochopí vtip, může jít do ČT vyvíjet weby

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

120na80.cz: Horní cesty dýchací. Zkuste fytofarmaka

Horní cesty dýchací. Zkuste fytofarmaka

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

120na80.cz: Co všechno ovlivňuje ženskou plodnost?

Co všechno ovlivňuje ženskou plodnost?

Podnikatel.cz: Udávání a účtenková loterie, hloupá komedie

Udávání a účtenková loterie, hloupá komedie

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

Vitalia.cz: Pamlsková vyhláška bude platit jen na základkách

Pamlsková vyhláška bude platit jen na základkách

Měšec.cz: mBank cenzuruje, zrušila mFórum

mBank cenzuruje, zrušila mFórum

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Podnikatel.cz: Chaos u EET pokračuje. Jsou tu další návrhy

Chaos u EET pokračuje. Jsou tu další návrhy

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

DigiZone.cz: Flix TV: dva set-top boxy za korunu

Flix TV: dva set-top boxy za korunu