Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Převod textů do UNIXu

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!

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

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.

TIB2012

       

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.

Školení: TCP/IP síť na Linuxu II

V tomto školení prohloubíte svoji znalost síťování na Linuxu a vyzkoušíte si pokročilejší techniky. Školení je určené mimojiné i pro správce poskytovatelských sítí.

  • Průřez technologiemi TCP/IP 
  • Stavba testovací sítě
  • Dynamický routing: OSPFv2 a OSPFv3
  • Bridging, proxy ARP, proxy NDP
  • Různé metody překladu adres
  • NAT traversal v praxi
  • Přepis paketů
  • Tunelování a VPN
  • Troubleshooting, situace z praxe

Podrobnější informace a přihláška 

Ohodnoťte jako ve škole:
Průměrná známka 3,23

Přehled názorů

antiword pro windows :(
Tomáš Stehlík 17. 12. 2001 08:21
Nový
├ 
Re: antiword pro windows :(
Lukas 17. 12. 2001 09:22
Nový
├ 
Re: antiword pro windows :(
Martin Proks 17. 12. 2001 16:52
Nový
└ 
Re: antiword pro windows :(
donki 13. 5. 2007 17:00
Nový
konverze
Vac 17. 12. 2001 10:55
Nový
no nic moc
kokot 17. 12. 2001 13:38
Nový
├ 
Re: no nic moc
Stanislav Brabec 17. 12. 2001 21:13
Nový
└ 
Re: no nic moc
Jindrich 18. 12. 2001 10:07
Nový
 
└ 
čeština v AbiWordu
Stanislav Brabec 18. 12. 2001 14:39
Nový
 
 
└ 
Re: čeština v AbiWordu
Jindrich 19. 12. 2001 13:47
Nový
wvWare WMF konverze
Avatar 17. 12. 2001 20:36
Nový
└ 
Re: wvWare WMF konverze
Jindrich 18. 12. 2001 10:09
Nový
 
└ 
wvWare - jméno
Stanislav Brabec 18. 12. 2001 14:40
Nový
bez titulku
pitomek 18. 12. 2001 11:17
Nový
wp2latex umi pozrat i Word
F&T 10. 12. 2005 15:32
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem