TeX4ht on muunneltavissa oleva ohjemapaketti, jolla voidaan kääntää TeX/LaTeX dokementteja erilaisiin hypertekstimuotoihin, siis esimerkiksi HTML-dokumenteiksi. Esimerkiksi TTH-ohjelmassa on oma TeX tulkkinsa, joka tulkitsee lähdekoodia, joten sen ymmärtämys ei ole täydellinen. Sitä vastoin TeX4ht käyttää hyväksi jo olemassa olevia TeX/LaTeX-kääntäjiä, jotka hoitavat alkuperäisten dokumenttien alkukäsittelyn. Vasta tämän jälkeen TeX4ht tulee mukaan ja tuottaa uuden dokumentin. Näin ollen TeX4ht:n avulla voidaan tuottaa dokumentteja, joihin otetaan periaatteessa kaikki informaatio mukaan.
TeX4ht ei kuitenkaan ole aivan helppo asentaa, monta eri asetusta täytyy
muuttaa. Lisäksi se tarvitsee muita ohjelmia avuksi, lähinna
kuvien muuttamiseksi gif-formaattiin. Asennukseen löytyy kuitenkin
valmiina kaiken kattava dokumentointi TeX4ht:n
kotisivuilta
MikTeX- ja Scientific
Word/Workplace- ympäristöihin: ks.
http://facweb.arch.ohio-state.edu/pviton/support/tex4ht.html
http://facweb.arch.ohio-state.edu/pviton/support/swpht.html
Tarvittavat lisäohjelmat, löytyvät kyseisissä dokumenteissa, ovat DviPS, Ghostscript ja Imagemagick. MikTeXin käytössä on se hyvä puoli, että DviPs tulee sen mukana, jolloin asennus on hieman helpompaa. Noudattamalla ohjeita kuitenkin pitäisi saada aikaan toimiva systeemi.
TeX4ht: käyttäminen on helppoa. TeX-dokumentin alkuun täytyy laittaa \input tex4ht.sty ja LaTeX-puolella taas vastaavasti \usepackage{tex4ht}. Kun käännöstä halutaan kokeilla, ajetaan esim xht-komentotiedosto (löytyy asennusohjeiden sivuilta), jolloin lähdekoodi ajetaan pari kertaa LaTeX/TeX-tulkin läpi. Näin siksi, että kaikki viittaukset ja sisällysluettelot tulisivat oikein. Viimeisenä vaiheena TeX4ht käsittelee TeX-käännöksen aikana luotuja aputiedostoja ja tuottaa niiden pohjalta hypertekstidokumentin. Jos käytetään pelkkää LaTeXin \usepackage{tex4ht}-komentoa, on tuloksena HTML-tiedosto, joka sisältää monimutkaisimmat kaavat gif-kuvina.
TeX4ht:n tuottamat dokumentit koostuvat useammasta osasta: itse HTML-dokumentista, CSS-tyylitiedostosta sekä useista gif-kuvista. Osa kuvista on niin sanottuja gif-glyphejä, jotka ovat aina samoja, esimerkiksi integraalimerkki. Dokumenttien muotoiluun käytetään CSS-määritttelyjä, joilla saadaan aikaan esimerkiksi kirjasimien koon tai tyylin vaihtaminen. Käytännön kokeilu kuitenkin osoitti, että kaikki ei ole niin yksinkertaista kuin miltä se kuulostaa. Tyylitiedostojen tuki ei vielä ole selaimissa täydellistä, joten esim. Netscape Communicator 4.5:llä tulos oli kerrassaan sekavaa, esimerkiksi fonttien koko kasvoi melkeinpä rajattomasti. Mutta Internet Explorer 5 osasi esittää saman tiedoston oikeassa muodossa. Esimerkki tällaisesta sivusta on htest.html.
TeX4ht on tarkoitettu nimenomaan hypertekstin luomiseen, se ei ole siis rajoittunut pelkästään HTML-kieleen. Siitä löytyy myös, tosin kokeiluvaiheessa oleva, tuki MathML- ja XML-kielille. Esimerkiksi kaikki matemaattiset kaavat voidaan kääntää suoraan HTML-dokumenttiin <math>..</math>-elementtien sisään. Tämä on varsikin tulevaisuuden kannalta erittäin hyva ominaisuus. Tuki on kuitenkin vielä kokeiluasteella eivätkä kaikki kokeillu dokumentit kääntyneet oikein. Mutta esimerkiksi TeX4ht:n tekijän oma esittelydokumentti kääntyy siististi MathML-muotoon, jonka jälkeen sitä voi lukea esim. Amaya-selaimella. Esimerkkinä on sama tiedosto kuin kuvien kanssa kokonaan MathML-koodattuna. Kiinnostavia ovat myös vaihtoehdot, joilla MathML-kieltä voi tukea siten, että TeX4ht tekee HTML-dokumenttiin kutsut, joilla käytetään hyväksi joko WebEq-applettia tai IBM TechExplorer-plug-inia, josta on myös esimerkkitiedosto.
Selaamalla dokumentteja huomaa heti, ettei TeX4ht:n tuottaman dokumentit ole suinkaan täydellisiä. Esimerkiksi joukkoon kuuluminen esitetääm &element;, mutta kumpikaan selaimista ei osaa tätä näyttää oikein. Niinpä esimerkiksi kreikkalaisia aakkosia ei juuri näy. TechExplorer- puolella taas ainakaan Netscape ei suostunut suoraan lataamaan verkon yli tuotavia MathML-tiedostoja, vaan rupesi valittamaan puuttuvasta plug-in-ohjelmasta. Paikallinen versio sitävastoin toimii oikein. Tämä korjaantui kuitenkin määrittelemällä <EMBED>-elementin sisässä suoraan tiedoston tyypiksi text/mathml.