Portál AbcLinuxu, 30. dubna 2025 12:52
Ještě donedávna jsem své "návody" a různé jiné texty psal jako html soubory aby se snado strkaly na web. Delší dobu jsem přemýšlel o tom jak to převést do pdf případně jiného formátu. Konečně jsem se odhodlal a podíval se na DocBook.
O DocBooku samozřejmě vím delší dobu, ale ještě jsem ho nějak aktivněji nepoužíval. Docela pěkným startem je stránka Jiřího Koska, kde najdete stručný úvod do problematiky. DocBook si samozřejmě nese dokumentaci s sebou, takže po nainstalování (nebo spíš rozbalení) najdete v adresáři doc
docela zajímavé počtení. Domácí stránka projektu DocBook obsahuje spoustu zajímavých věcí.
Na začátu jsem zkoušel Jade a DSSSL, ale výstup do html nebyl zrovna 2x pěkný a tak jsem se zaměřil na XSL styly. Pro práci s XSL jsem si zvolil nástroj xsltproc. Zkoušel jsem i Saxon, ale nelíbí se mi. Nakonec jsem si ještě trochu poupravil šablonu pro generování html kódu a už jsem skoro spokojený. Teď budu řešit výstup do rtf a pdf. Pdf se mi docela daří, ale to rtf zlobí
Pro generování vícestránkové verze html (u knihy dělí podle kapitol) používám následující parametry:
xsltproc xhtml-chunk.xsl dokument.xmla pro generování jednostránkové verze (celý výsledek je jeden html soubor)
xsltproc xhtml-onechunk.xsl dokument.xmlObsah souborů
xhtml-onechunk.xsl
a xhtml-chunk.xsl
:
<?xml version="1.0" encoding="iso-8859-2"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/xhtml/onechunk.xsl"/> <xsl:include href="xhtml-common.xsl"/> </xsl:stylesheet>
<?xml version="1.0" encoding="iso-8859-2"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/xhtml/chunk.xsl"/> <xsl:include href="xhtml-common.xsl"/> </xsl:stylesheet>Jak jste si jistě všimli, tak se vkládá soubor xhtml-common.xsl, jeho obsah je:
<?xml version="1.0" encoding="iso-8859-2"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <!-- Úpravy parametrů --> <xsl:param name="chunker.output.encoding" select="'UTF-8'"/> <!-- Mají se používat rozšíření --> <xsl:param name="use.extensions" select="1"/> <!-- Vypneme podporu pro rozsireni tabulek --> <xsl:param name="tablecolumns.extension" select="0"/> <!-- Mají se sekce automaticky číslovat --> <xsl:param name="section.autolabel" select="1"/> <!-- Mají čísla sekcí obsahovat i čísla kapitol --> <xsl:param name="section.label.includes.component.label" select="1"/> <!-- Mají se číslovat kapitoly --> <xsl:param name="chapter.autolabel" select="1"/> <!-- Použijeme námi definovaný CSS--> <xsl:param name="html.stylesheet">docbook.css</xsl:param> <xsl:param name="html.stylesheet.type">text/css</xsl:param> <xsl:param name="generate.id.attributes" select="1"></xsl:param> <xsl:param name="make.valid.html" select="1"></xsl:param> <xsl:param name="generate.meta.abstract" select="1"></xsl:param> </xsl:stylesheet>Možná tam jsou nějaké nesmysly, ale funguje to podle mých představ.
Zkoušel jsem na editaci souboru používat XMLmind, ale to se mi moc nelíbilo, tak jsem se vrátil zpět k gVimu. Protože gVim nekontroluje validitu XML, používám na kontrolu príma nástroj xmllint.
xmllint --noout --valid xmlsoubor.xml
Update:
Tak mi nakonec funguje i výstup do RTF a PS (PDF). Použil jsem jade (který se mi nelíbil pro html) a výstupy jsou dokonce kompletně s diakritikou. Z DocBooku generuju přímo RTF. Pro generování používám příkaz:
jade -d ~/.docbook/dsssl/print/docbook.dsl\ -t rtf /usr/share/OpenSP/xml.dcl dokument.xmlPro generování PS a PDF používám tento postup:
jade -d ~/.docbook/dsssl/print/docbook.dsl -t tex\ -V tex-backend /usr/share/OpenSP/xml.dcl dokument.xml jadetex dokument.tex jadetex dokument.tex jadetex dokument.tex dvips dokument.dvi dvipdf dokument.dviSamozřejmě tam tyhle obludnosti neťukám ručně, ale mám na to Makefile.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.