Skupiny Google už nepodporují nová předplatná ani příspěvky Usenet. Historický obsah lze zobrazit stále.

Konverze plainTeX na html

0 zobrazení
Přeskočit na první nepřečtenou zprávu

Petr Olsak

nepřečteno,
8. 3. 2004 4:13:5408.03.04
komu:

On Thu, 4 Mar 2004, Petr Mandys wrote:

> Zdravim,
>
> nemate nekdo zkusenosti s konverzi plainTeXu do html? Dival jsem se na
> TtH, ale to nevypada prilis uspokojive.

Dotaz na to, zda mohu pomoci nejakeho konvertitka z plainTeXoveho
zdrojaku dostat XML resp. HTML je v posledni dobe docela casty.
Zkuseni uzivatele pak napisi odpoved, ze externi konvertitko (pokud
neumi do posledniho \expandafter a \futurelet emulovat TeX) nema
sanci, protoze plainovy uzivatel si pise makra sam a jeho znackovani
dokumentu je casto velmi specificke a sverazne.

Dalsi uzivatel odpovi, ze nejlepsi je mit primarni informace
ulozeny rovnou v XML a delat radeji konverzi do TeXu.

Dovolim si zde uvest jinou cestu, ktera se mi zdala docela schudna.
Zvlaste tehdy, pokud dokument neobsahuje zadnou matematiku.
Me se osvedcilo zachovat primarni informace v TeXovem zdrojaku,
protoze se to docela prijemne prohlizi a modifikuje obycejnym textovym
editorem. Kdyz jsem dostal od zakaznika pozadavek na vystup v XML,
podival jsem se na pozadovane DTD, napsal podle toho za pul hodinky
kratka makra a pouzil jsem pro konverzi samotny TeX. Tato cesta se
ukazala podstatne snadnejsi, nez jsem si puvodne myslel.

Kazdy rozumny plainista ma v dokumentu oddelenu oblast maker od
oblasti dobre strukturovaneho a znackovaneho dokumentu (trebaze
sveraznym zpusobem). Ja osobne mam tyto dve veci v jednom souboru.
Mezi oblast maker a oblast vlastniho textu dokumentu jsem pridal:

% \input xmlout.tex

V pripade, ze chci XML vystup, odstranim jednoduse procento.
V souboru xmlout.tex mam re-definice vsech maker vyhrazenych pro
znackovani dokumentu. Protoze oznackovany dokument rozumnym
plainistou ma stejnou miru informace jako obvykly XML dokument
a autor textu vetsinou nebude ochoten dodavat informace dalsi, je
konverze docela primocara.

Pro ilustraci uvadim cast souboru xmlout.tex ze zakazky pro Verlag
(viz http://www.olsak.net/texpraxe.html). Pro znackovani kapitol jsou
pouzita makra \dil, \kap, pro znackovani okraju vedle textu makro
\okraj, pro vyznaceni prikazu pro prikazovou radku pocitace
(uvnitr textu odstavce sazena strojopisem) je pouzito makro \cmd a
pro vyznaceni useku textovych konfiguracnich souboru pouzivam oblibene
\begtt...\endtt. Konecne pro obrazky mam makro \obr.


--------------------- xmlout.tex ------------------------------

\def\dil #1 \par{\ifnum\kapnum=0 \else \out {</chapter>}\fi
\out{^^J<chapter o-num="\the\dilnum" level="1" type="TEXT"
o-num-display="YES">#1</chapter>}\kapnum=0 }
\def\oo #1. {}
\def\enddil{}

\def\kap #1 \par{%
\ifnum\kapnum=0 \else \out {</chapter>^^J}\fi
\advance\kapnum by1
\out{<chapter o-num="\the\kapnum" level="2"
c-date="2003-09-01" m-date="2003-09-26" type="TEXT"
o-num-display="YES">^^J
<title>#1</title>}}
\def\okraj #1{\out{ <p-title>#1</p-title>}}
\def\beginpar #1 \par{\out{ \space<p alignment="JUSTIFY">#1</p>}\par}

\def\begtt{\out{ <block type="PRE">}\bgroup
\endlinechar=`^^X
\def\beginpar ##1^^X{\out{ \space<p alignment="LEFT">##1</p>}\par}
}
\def\endtt^^X{\egroup\out{ </block>}}

\def\obr #1[#2]#3{\out{ <illustration><graphic
src="#2"/><title>#3</title></illustration>}}

{\catcode`\%=12 \gdef\%{%}}
{\catcode`\_=12 \gdef\_{_}}
{\catcode`\~=12 \gdef\char`\~{~}}
{\catcode`\&=12 \gdef\ent#1{&#1;}}
\def~{\ent{nbsp}}
\def\,{\ent{thinsp}}
\def\uv#1{\ent{ldquor}#1\ent{rdquor}}

\def\hbox#1{#1}
\def\dots{...}
\def\${$}
\def\cmd#1{<cmd>#1</cmd>}
\def\bf#1{<b>#1</b>}
\def\it#1{<it>#1</it>}
\def\-{}
\def\TeX{TeX}
\def\/{}

\newwrite\fout
\immediate\openout\fout=ver4out.xml
\def\out{\immediate\write\fout}

\newlinechar=`^^J
\out {<?xml version="1.0" encoding="iso-8859-2"?>}
\out {<!DOCTYPE rwtext SYSTEM "rw-text-xml.dtd">}
\out {<rwtext>}
\out { <rw-meta code="cz_onlinux">}
\out { \space <pub-title>\texttitle</pub-title>}
\out { \space <iss-date day="\the\day" month="\the\month"
year="\the\year">%
\the\day.\the\month.\the\year</iss-date>}
\out { </rw-meta>}
\def\bye {\out{</chapter>^^J</rwtext>}\end}

\everypar={\beginpar}
\def\plainoutput{\shipout\box255} %% ignorujeme zbytky vystupu do dvi

---------------------------------------------------------------------

Svym prispevkem jsem chtel ukazat, ze lze primarni informaci
o dokumentu udrzet v plainTeXovem zdrojaku, zvlaste pokud se jedna
o dobre znackovany dokument napr. o pocitacich bez matematickych
vzorecku.

Pripoustim, ze pokud by dokument obsahoval matematiku, byla by
konverze obtizna. Vystup do MathML by snad byl mozny za pouziti Omegy
(pry neco takoveho umi) nebo modifikaci TeXu tak, aby se
vyuzila konverze na urovni math-listu, ktery je nejvice podobny
pozadovanemu MathML. Zatim jsem tyto experimenty nedelal a zajimalo by
me, jak konverzi dokumentu z TeXu s matematikou do HTML / XML
resili jini uzivatele. Myslim si, ze v tomto pripade ani
standardizovane znackovani z LaTeXu moc nepomuze.

----------

On Thu, 4 Mar 2004, Zdenek Wagner wrote:

> 1. Autor uz od pocatku kompletni text vklada do specialnich maker, u nichz
> zmeni definici podle toho, zda bude vytvaret normalni DVI, nebo pomoci
> \write HTML. Vse se programuje primo v (La)TeXu s minimem externich
> nastroju

To je presne to, co jsem udelal.

> Mnohem jednodussi je, kdyz se puvodni zdroj napise v XML.

S tim si nejsem tak docela jist. Jak kdy.

Zdravim

Petr Olsak

Zdenek Wagner

nepřečteno,
8. 3. 2004 5:51:2708.03.04
komu:
On Mon, 8 Mar 2004, Petr Olsak wrote:

> Dovolim si zde uvest jinou cestu, ktera se mi zdala docela schudna.
> Zvlaste tehdy, pokud dokument neobsahuje zadnou matematiku.
> Me se osvedcilo zachovat primarni informace v TeXovem zdrojaku,
> protoze se to docela prijemne prohlizi a modifikuje obycejnym textovym
> editorem. Kdyz jsem dostal od zakaznika pozadavek na vystup v XML,

XML se take prohlizi a modifikuje obycejnym textovym editorem. Sice
existuji specialni editory na XML, ale mne naprosto vyhovuje EPM v OS/2
nebo vim v linuxu.

> podival jsem se na pozadovane DTD, napsal podle toho za pul hodinky
> kratka makra a pouzil jsem pro konverzi samotny TeX. Tato cesta se
> ukazala podstatne snadnejsi, nez jsem si puvodne myslel.
>
> Kazdy rozumny plainista ma v dokumentu oddelenu oblast maker od
> oblasti dobre strukturovaneho a znackovaneho dokumentu (trebaze
> sveraznym zpusobem). Ja osobne mam tyto dve veci v jednom souboru.
> Mezi oblast maker a oblast vlastniho textu dokumentu jsem pridal:
>

To je prave klicovy problem. Vsechny plainovske soubory nejsou dobre
strukturovane znackovane (pro LaTeXove dokumenty plati totez).

>
> Svym prispevkem jsem chtel ukazat, ze lze primarni informaci
> o dokumentu udrzet v plainTeXovem zdrojaku, zvlaste pokud se jedna
> o dobre znackovany dokument napr. o pocitacich bez matematickych
> vzorecku.
>
> Pripoustim, ze pokud by dokument obsahoval matematiku, byla by
> konverze obtizna. Vystup do MathML by snad byl mozny za pouziti Omegy
> (pry neco takoveho umi) nebo modifikaci TeXu tak, aby se
> vyuzila konverze na urovni math-listu, ktery je nejvice podobny
> pozadovanemu MathML. Zatim jsem tyto experimenty nedelal a zajimalo by
> me, jak konverzi dokumentu z TeXu s matematikou do HTML / XML
> resili jini uzivatele. Myslim si, ze v tomto pripade ani
> standardizovane znackovani z LaTeXu moc nepomuze.
>

Pri konverzi z (La)TeXu do HTML se to vetsinou dela tak, ze se vzorecek
vysadi, ulozi jako obrazek (PNG nebo GIF) a vlozi. Vetsina webovych
prohlizecu totiz MathML neumi. Konverze matematickeho zapisu z TeXu ci
LaTeXu do MathML je nejspis mozna a mam pocit, ze jiz nejake takove
konvertitko existuje. Psat slozitejsi rovnici primo rucne v MathML je
masochismus.

> ----------
>
> On Thu, 4 Mar 2004, Zdenek Wagner wrote:
>
> > 1. Autor uz od pocatku kompletni text vklada do specialnich maker, u nichz
> > zmeni definici podle toho, zda bude vytvaret normalni DVI, nebo pomoci
> > \write HTML. Vse se programuje primo v (La)TeXu s minimem externich
> > nastroju
>
> To je presne to, co jsem udelal.
>

Moje makra lze najit ve Zpravodaji 1-3/2000 (tedy ne vse, ale dost
podrobnou ukazku), clanek se jmenuje "Spolupráce databáze s LaTeXem". Ja
jsem to mel jeste jednodussi v tom, ze vse bylo ulozeno v makrech, nebyl
tam zadny obycejny text, proto jsem nepotreboval \everypar. Sam jsem byl
prekvapen, jak se s touto strukturou da pomoci maker zachazet dost
flexibilne a delat to, co se v XML dela pomoci XSLT.

> > Mnohem jednodussi je, kdyz se puvodni zdroj napise v XML.
>
> S tim si nejsem tak docela jist. Jak kdy.
>

Ano, jak kdy, a zalezi na tom, co vse chci s dokumentem delat. V XML se da
validovat struktura dokumentu, a to velmi striktne. Napr. Relax NG se lze
naucit zhruba za 2 hodiny z tutorialu na Oasis. Pokud vsak nic takoveho
nepotrebujete a mate plainovsky zdrojak dobre strukturovane oznackovan,
pak je XML jen zbytecnym krokem navic.

Nyni jiz radu veci delam v XML, ale rozhodne ne vse. A navic mam pisarku,
kterou jsem za 15 minut naucil zaklady XML, takze je schopna opisovat
texty Wordem s prislusnymi znackami a po exportu jako prosty text mam XML
bez chyb. Word pouziva proto, ze ho umi a ma v tom Spellcheck, ale to uz
je OT...

> Zdravim
>
> Petr Olsak
>

Zdenek Wagner
e-mail: wag...@cesnet.cz

see also http://hroch486.icpf.cas.cz/wagner/
http://icebearsoft.euweb.cz

0 nových zpráv