Portál AbcLinuxu, 2. května 2025 17:37
\XeTeXinterchartokenstate=1 \newXeTeXintercharclass\JrTClass \newXeTeXintercharclass\JrVClass \newXeTeXintercharclass\JrEaccClass \newXeTeXintercharclass\JrAaccClass \XeTeXcharclass`T = \JrTClass \XeTeXcharclass`V = \JrVClass \XeTeXcharclass`ě = \JrEaccClass \XeTeXcharclass`ä = \JrAaccClass \XeTeXinterchartoks\JrVClass\JrEaccClass={\kern-0.08em } \XeTeXinterchartoks\JrTClass\JrEaccClass={\kern-0.08em } \XeTeXinterchartoks\JrVClass\JrAaccClass={\kern-0.08em }Konkrétně takhle si upravuji kerning mezi "Tě", "Vě" a "Vä" v Adobe Garamond Pro...
\def\bookmark#1#2{\special{pdf: out #1 << /Title (#2) /Dest [ @thispage /XYZ null @ypos null ] >>}} \def\topbookmark#1#2{\special{pdf: out #1 << /Title (#2) /Dest [ @thispage /XYZ null null null ] >>}}
\bookmark
odkazuje na aktuální pozici, \topbookmark
na vršek stránky.
\input eplain.tex \enablehyperlinks \font\foofont="DejaVu Serif" at 12pt \foofont Tohle je text Tohle je \special{color push rgb 1 0 0}červený text\special{color pop} Tohle je \special{color push rgb 0 1 0}zelená adresa \href{mailto:pokus@test.cz}{pokus@test.cz}\special{color pop} Tohle je \special{color push rgb .5 .5 .5}\href{http://www.abclinuxu.cz}{šedý odkaz}\special{color pop} \medskip A ještě modrá čára: \medskip \special{color push rgb 0 0 1}\hrule height 0.5mm\special{color pop} \byePak už stačilo jen
xetex test.tex
a vypadlo z toho PDFko.
Jako ne že bych vám chtěl XeTeX nějak nutit, jen že sám píšete, že chcete pracovat s obecnými fonty, což právě XeTeX umí a můžete klidně zůstat u plainu...
\special{pdf: docinfo << /Author (Honza Jaroš) >>} \special{pdf: docinfo << /Title (Testovací dokument) >>}Popis těhle speciálních příkazů pro PDF najdete v manuálech pro Dvipdfm. Třeba tady. Nejsou to jen metadata, i další možnosti ohledně hyperlinků, barev atd...
Jenže když ten test.pdf
převedu na text pomocí pdftotext
tak z toho vznikne tohle:
Tohle Tohle Tohle Tohle je je je je text červený text zelená adresa pokus@test.cz šedý odkaz A ještě modrá čára: 1
Ale když převedu svoje PDF z LaTeXu do TXT, tak je ten výstup mnohem lepší.
mj. to má vliv na vyhledávání v dokumentu – např. Okular není schopný najít „Tohle je“ nebo „je text“, i když „červený text“ najde. V mém dokumentu najde i „červená, zelená, modrá“ nebo „a další odkaz“.
Ono to vypadá, že řeším prkotiny, ale když pak máš nějakou dokumentaci a máš v ní něco najít, tak tohle je dost znát. Další věc je indexování v různých CMS nebo i na webu a fulltextové vyhledávání (nějaké sofistikovanější, než jen že dokument obsahuje určitá slova) nebo třeba zobrazování náhledů a úryvků.
Neříkám, že LaTeX je dokonalý nebo že to v jiném *TeXu nejde, ale zatím jsem se k uspokojivým výsledkům dopracoval v LaTeXu, tak u něj zůstávám.
Špatné je, že nenajde „sit amet“ tam, kde došlo k řádkovému zlomu.
Dá se s tím něco dělat při sazbě do PDF? Nebo je potřeba to nějak vyřešit na úrovni prohlížeče?
Tohle je např. problém, když v dokumentaci hledáš nějaký_ukrutně_dlouhý_parametr
a on je v tabulce a zalomil se na víc řádků – nenajdeš ho ani v tom PDF z LaTeXu.
Jenže když tenNezáleží na tom, zda je použit pdfTeX/XeTeX, LaTeX nebo plain. Záleží na tom, jak se sejde ta sazba. Program pdftotext se snaží domýšlet některé věci. Například, když vidí mezery pod sebou, dochází k domněnce, že to je vícesloupcová sazba, a čte to po sloupcích. Když má řádky dost blízko u sebe, naopak to napere na jediný řádek. Přesněji řečeno to není vlastnost pdftotext, ale knihovny poppler, která je vybavena touto inteligencí. Váš příklad jsem přeznačkoval do plainu a uvádím to zde taky jako přílohu. (Povšimněte si, že hlavička je výrazně kratší než ta LaTeXová.) Protože byly řádky dost blízko u sebe, poppler to nyní nacpal do jediného řádku a dokonce zrušil rozdělené slovo. V tuto chvíli se správně domníval, že to je rozdělené slovo, ale jindy se může domnívat nesprávně. Je to alchymie, jejíž důvod je ten, že v době realizované sazby už jsou informace o logickém členění dokumentu (odstavce, sloupce ve vícelsoupcové sazbě, nerozdělená slova) ztraceny a ten sowtware se může akorát pokusit si něco domyslet.test.pdf
převedu na text pomocípdftotext
tak z toho vznikne tohle: ... Ale když převedu svoje PDF z LaTeXu do TXT, tak je ten výstup mnohem lepší.
Pěkné, jsem rád, že to funguje Kdysi jsem viděl nějaké odstrašující příklady (už nevím, jaký *TeX to byl), kde nešlo v PDF ani vyhledávat česká slova, protože háčky a čárky byly někde bokem. Tak jsem se radši držel té své šablony v LaTeXu, kde to funguje.
... Tomáš Pecina (je-li to tento Tomáš Pecina) ...Právnické texty jsou typická ukázka, ve které lze plně využít výhody TeXu. Měl jsem několik zakázek od takových těch nakladatelství, která pro právníky neustále znovu a znovu tisknou novelizované verze zákonů. Zdroje dostávají z jakéhosi úřadu, kde je sbírka zákonů, ve wordu. Dokázali z toho vlastním softwarem extrahovat text a základní značkování. Na mě pak bylo vytvořit makra, aby to tím prohnali a měli ty knihy hotové. Když projdete regály v knihkupectví s touto právničinou, těžko poznáte, které knížky byly dělané v TeXu... Já jsem v souvislosti s tím ty právnické texty začal trochu více číst a nyní třeba dělám předsedu legislativní komise senátu ČVUT. Ale to je už jiný příběh...
To je zajímavé, neměl jsem tušení, že XeTeX takové věci umí... Bohužel, není pro něj zatím udělaný pdfTeX, takže mi to nepomůže.
pokud by šlo o hyperlinky, eplain by měl podporovat i XeTeX
... LaTeX, ... výsledkem je dobré PDF, které má odkazy, PDF obsah, nějaká ta metadata a hlavně český text, ve kterém se dá vyhledávat...Jak jsem již v jedné diskusi psal, XeTeX má jiný backend, takže pro barvy, odkazy atd. je potřeba použít jiná low-level makra. Například OPmac v takovém případě natáhne automaticky opmac-xetex.tex, kde jsou tato low-level makra zkonvertována tak, aby to prošlo XeTeXem. Můžete se inspirovat pohledem do toho souboru. Jsou tam zmíněny i problémy, kdy není výstup stoprocentně stejný z principu. Když v ukázce z třetího dílu seriálu priklad-opmac.tex přidáte na začátek
\input ucode
a nezměníte nic jiného,
zpracujete to csplainem v XeTeXu, vyleze
vám stejný dokument,
jak zjistíte, kliknete-li na odkaz. Není tedy třeba se XeTeXu bát a není vůbec nutné
hovořit o LaTeXu.
Na druhou stranu není nutné na XeTeX přecházet:
původní dokument
má taky vyhledatelné texty a byl vytvořen prostým pdfTeXem.
Vyhledatelnost českých textů je implicitní vlastností csplainu už dávno i v pdfTeXu.
Jestliže tedy LaTeXisté kvůli tomu musejí přecházet na XeLaTeX, je to jejich
problém, ne náš.
Jediný argument pro přejití na XeTeX je využití OpenType fontů a všech
dalších fontů instalovaných systému. Já osobně tuto závislost TeXu na
operačním systému moc nevítám a raději využívám fonty v TeXové distribuci.
I fonty, které mám odjinud, především dávám do TeXové distribuce. Do systému
je nikdy neinstaluji.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.