From a200d22b34b327995d13b0c277ae47266f4dac4c Mon Sep 17 00:00:00 2001 From: Jean-Francois Dockes Date: Sat, 7 Apr 2012 11:33:01 +0200 Subject: [PATCH] Add a script to produce the manual with an xml toolchain --- src/doc/user/docbook-xsl.css | 212 +++++++++++++++++++++++++++++++++++ src/doc/user/xmlmake.sh | 46 ++++++++ 2 files changed, 258 insertions(+) create mode 100644 src/doc/user/docbook-xsl.css create mode 100644 src/doc/user/xmlmake.sh diff --git a/src/doc/user/docbook-xsl.css b/src/doc/user/docbook-xsl.css new file mode 100644 index 00000000..8cc0a8b2 --- /dev/null +++ b/src/doc/user/docbook-xsl.css @@ -0,0 +1,212 @@ +/* + * Copyright (c) 2001, 2003, 2010 The FreeBSD Documentation Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD: doc/share/misc/docbook.css,v 1.15 2010/03/20 04:15:01 hrs Exp $ + */ + +body address { + line-height: 1.3; + margin: .6em 0; +} + +body blockquote { + margin-top: .75em; + line-height: 1.5; + margin-bottom: .75em; +} + +html body { + margin: 1em 8% 1em 10%; + line-height: 1.2; +} + +.legalnotice { + font-size: small; + font-variant: small-caps; +} + +body div { + margin: 0; +} + +dl { + margin: .8em 0; + line-height: 1.2; +} + +body form { + margin: .6em 0; +} + +h1, h2, h3, h4, h5, h6, +div.example p b, +.question, +div.table p b, +div.procedure p b { + color: #990000; +} + +body h1, body h2, body h3, body h4, body h5, body h6 { + line-height: 1.3; + margin-left: 0; +} + +body h1, body h2 { + margin: .8em 0 0 -4%; +} + +body h3, body h4 { + margin: .8em 0 0 -3%; +} + +body h5 { + margin: .8em 0 0 -2%; +} + +body h6 { + margin: .8em 0 0 -1%; +} + +body hr { + margin: .6em; + border-width: 0 0 1px 0; + border-style: solid; + border-color: #cecece; +} + +body img.navheader { + margin: 0 0 0 -4%; +} + +ol { + margin: 0 0 0 5%; + line-height: 1.2; +} + +body pre { + margin: .75em 0; + line-height: 1.0; + font-family: monospace; +} + +body td, body th { + line-height: 1.2; +} + +ul, body dir, body menu { + margin: 0 0 0 5%; + line-height: 1.2; +} + +html { + margin: 0; + padding: 0; +} + +body p b.application { + color: #000000; +} +body p span.application { + font-weight: bold; + color: #000000; +} + +.filename { + color: #007a00; +} + +.guimenu, .guimenuitem, .guisubmenu, +.guilabel, .interface, +.shortcut, .shortcut .keycap { + font-weight: bold; +} + +.guibutton { + background-color: #cfcfcf; + padding: 2px; +} + +.accel { + background-color: #f0f0f0; + text-decoration: underline; +} + +.screen { + padding: 1ex; +} + +.programlisting { + padding: 1ex; + background-color: #eee; + border: 1px solid #ccc; +} + +@media screen { /* hide from ie3 */ + a[href]:hover { background: #ffa } +} + +blockquote.note { + color: #222; + background: #eee; + border: 1px solid #ccc; + padding: 0.4em 0.4em; + width: 85%; +} + +blockquote.tip { + color: #004f00; + background: #d8ecd6; + border: 1px solid green; + padding: 0.2em 2em; + width: 85%; +} + +blockquote.important { + font-style:italic; + border: 1px solid #a00; + border-left: 12px solid #c00; + padding: 0.1em 1em; +} + +blockquote.warning { + color: #9f1313; + background: #f8e8e8; + border: 1px solid #e59595; + padding: 0.2em 2em; + width: 85%; +} + +.example { + background: #fefde6; + border: 1px solid #f1bb16; + margin: 1em 0; + padding: 0.2em 2em; + width: 90%; +} + +.informaltable table.calstable tr td { + padding-left: 1em; + padding-right: 1em; +} diff --git a/src/doc/user/xmlmake.sh b/src/doc/user/xmlmake.sh new file mode 100644 index 00000000..d3c13ed6 --- /dev/null +++ b/src/doc/user/xmlmake.sh @@ -0,0 +1,46 @@ +#!/bin/sh + +# A script to produce the Recoll manual with an xml toolchain. +# Limitations: +# - Does not produce the links to the whole/chunked versions at the top +# of the document +# - The anchor names from the source text are converted to uppercase by +# the sgml toolchain. This does not happen with the xml toolchain, +# which means that external links like +# usermanual.html#RCL.CONFIG.INDEXING won't work because fragments are +# case-sensitive. This could be solved by converting all ids inside the +# source file to upper-case. + +# Wherever docbook.xsl and chunk.xsl live +XSLDIR="/usr/local/share/xsl/docbook/" + +# Remove the SGML header and uncomment the XML one +sed -e '\!//FreeBSD//DTD!d' \ + -e '\!DTD DocBook XML!s///' \ + < usermanual.sgml > usermanual.xml + +# Options common to the single-file and chunked versions +commonoptions="--stringparam section.autolabel 1 \ + --stringparam section.autolabel.max.depth 3 \ + --stringparam section.label.includes.component.label 1 \ + --stringparam autotoc.label.in.hyperlink 0 \ + --stringparam abstract.notitle.enabled 1 \ + --stringparam html.stylesheet docbook-xsl.css \ + --stringparam generate.toc \"book toc,title,figure,table,example,equation\" \ +" + +# Do the chunky thing +eval xsltproc $commonoptions \ + --stringparam use.id.as.filename 1 \ + "$XSLDIR/html/chunk.xsl" \ + usermanual.xml + +# Produce the single file version +eval xsltproc $commonoptions \ + -o usermanual-xml.html \ + "$XSLDIR/html/docbook.xsl" \ + usermanual.xml + +tidy -indent usermanual-xml.html > tmpfile +mv -f tmpfile usermanual-xml.html