Date: Fri, 30 Jun 2000 03:50:12 +0100 From: Nik Clayton <nik@freebsd.org> To: doc@freebsd.org Subject: On embedding 'library' graphics into documentation Message-ID: <20000630035012.A41595@catkin.nothing-going-on.org>
next in thread | raw e-mail | index | archive | help
--h31gzZEtNLTqOjlF Content-Type: text/plain; charset=us-ascii Content-Disposition: inline How are we going to handle images that recur throughout different documents? [ It has come to my attention that apparently some of my messages have attracted a fan following, due to their extreme length. If that's the sort of thing you like then you'll love this. ] This gets a little bit complicated. As well as images that are document specific (screenshots, diagrams, and so on) we're going to have some images that will be re-used across the documents. For example, a picture of beastie holding up an exclamation mark next to "<warning>" elements, that sort of thing. And, of particular relevance to what I'm doing right now, "callout bugs". A "callout bug" is a little indicator next to a piece of text that you can refer to later on when you want the reader to understand exactly which bit of the text you're referring to. For example, mv [1]source-file [2]destination-file where [1] and [2] are my (rather crude) implementation of what a callout bug could look like. Later on in the text you might say. [1] The source file name. The mv command renames the file currently called source-file, which must exist when mv is executed. [2] The new filename. The mv command changes the name of the old file to destination file. If destination file exists when mv is executed it will be replaced by the old file. A real world example of where we use this is in the Handbook, in the section on PPP configuration. In there we use line numbers, but callout bugs would be equally appropriate. In particular, line numbers don't work where you want to refer to more than one thing on the same line, and breaking the line is impractical. I actually need to do this *now*, because I'm writing up an appendix to the DocProj Primer that includes various command lines you can run to do various things to the documentation, and I need to be able to refer back to portions of the command line in the following text. For more information, go to http://www.docbook.org/, read the online copy of The Definitive Guide, and the section relating to the <callout> element. You can do this without images -- putting (define %callout-graphics% #f) in the stylesheet does it for you. In this case your callouts are flagged much as I've done above, with [1], [2], and so on. This is OK, but not great. For one thing, it looks too much like the way footnotes are flagged. For another, the callouts are not visually distinct from the rest of the line -- you don't want a naive reader assuming that these are part of the command line you want them to type in. For these reasons (plus the fact we're going to have to confront this issue sooner or later when we put in admonition graphics and such like) I've started looking at how we share the same images across different documents. I've come to the conclusion that, at install time, we can't. That is to say, each document is independent from one another. I don't want one document to have to depend on another document for its images. Nor do I want to make each piece of documentation depend on another package that just contains the common image library. There are also issues relating to the position of the files in the image library. At the moment, someone could pkg_add a hypothetical image library package with $PREFIX set to something, and then pkg_add the Handbook with $PREFIX set to something else. Short of a post-installation script which attempted to find the image library and fix up the links in the document this is impossible to resolve. And a post-installation script would rapidly become a twisty maze of conditionals and special cases as it tried to work out where the image library had been installed. So, unfortunately, each document is going to have to carry its own copy of the imagelibrary (or rather, those parts of the image library that it uses) with it. This will bloat the installation area as soon as a reader installs more than one document, but (1) I don't see a way around that, and (2) the bloat is minimal. This is *not* to say that we can't have a common image library in the CVS tree, just that we can't rely on having a common image library for the installed documentation to use. However, at build, installation, and packaging time, each document will have to copy those images from the library that it uses to its own directory. Having decided to do that, things become somewhat simpler. Attached are a variety of patches and related files for inspection which do just that. 1. imagelib.tar.gz should be extracted in the en_US.ISO_8859-1 directory. This should give you an imagelib/ directory at the same level as the books/ and articles/ directories. It contains one sub-directory, for the callout bugs, and 10 PNG files. 2. co-test.tar.gz should be extracted in the en_US.ISO_8859-1/articles directory. You should get a co-test/ directory, with a Makefile and an article.sgml. 3. doc.imagelib.mk should be copied into the doc/share/mk subdirectory. 4. doc.docbook.mk.diff should be applied. I'll walk through these changes in a minute. 5. doc.project.mk.diff should be applied. 6. freebsd.dsl.diff should be applied (in doc/share/sgml). This includes a few changes that are not related to this -- you can ignore them, it's just stuff I'm testing in my tree, and doesn't affect this. In particular, only the callout-* stuff is used, you can ignore the rest. 7. freebsd.dtd.diff should be applied. This fixes a shortcoming in DocBook where callouts aren't allowed inside <userinput>. I'll be submitting an RFE (Request for Enhancement) about this shortly. That should be sufficient for you to go in to the co-test directory and run make(1) to generate all the different output formats you want. Now, about those changes to doc.docbook.mk. . . We define and implements a new format, "html.tar". Previously, we've special-cased the html-split format, as we knew it would generate multiple files that would need to be managed. It was assumed that the other formats would only ever generate one output format. This is now not the case, as the bare "html" format still needs to be able to carry around all the images it will need to display properly. So the html.tar format is designed to do that. We also update the html-split.tar (and the new html.tar) format to ensure that tar is called to include the files listed in the IMAGELIB variable as necessary. We have to list the imagelib files as being dependencies for the various HTML output formats -- this ensures that if they don't exist, the simple rules in doc.imagelib.mk will copy them in to the current directory. The install rule is a bit more complicated, as we need to ensure that images are installed in to the correct subdirectory as necessary. And when building packages we need to ensure that the list of images is added to the PLIST. What about images for other languages? I don't think this will be a big problem. Some images will almost certainly contain text, or other content that will need to be translated. The easiest way to handle this would be a mechanism in doc.imagelib.mk that looks for the images first in the language specific imagelib/ directory (I assume each language will have one), and if it can't find it there then it copies it from the English imagelib/ directory. I'd do this now, but it's 3.50am, and I need to be up in about 4 hours time. . . Thoughts? N -- Internet connection, $19.95 a month. Computer, $799.95. Modem, $149.95. Telephone line, $24.95 a month. Software, free. USENET transmission, hundreds if not thousands of dollars. Thinking before posting, priceless. Somethings in life you can't buy. For everything else, there's MasterCard. -- Graham Reed, in the Scary Devil Monastery --h31gzZEtNLTqOjlF Content-Type: application/x-tar-gz Content-Disposition: attachment; filename="co-test.tar.gz" Content-Transfer-Encoding: base64 H4sICFUEXDkCA2NvLXRlc3QudGFyAO1XbW/bNhDO1+hX3NJi2LBEtPPmD1O8JXbSenBeEDvF CgwoaImOmUikR1JJg6L/fXeSKCtb0zUfWmCYDg4i8Y7He+Nzp1hvOWEdW/uKBLud3t4erAF0 e3vd5n9PHYBed7vX6Wx3u/jc7XR7u2uwt/YNKLeOG4A1JW8/K/dv/P8oxVX+T/mtmMtUfI0z up3O/u7uk/nvdrZ3fP67vZ1dXMH0d9ag0+b/q1Nwejg6m+Lf8eUBuvjriRHiaDIMtbkOguH5 4JcD4MbJOBVBcHJ+eXo4neDSwmVpEIzOJtPD8fjd4Pz04vJ4MjkeIqtePT8bv33ECoIXgL/J 5WACqbTOglsIkCqRdzLJeQqTV6djoCIkDneQYU1CvizEEh3nmVAuhMGCq2thUZPTwNUD6DlJ WFFtvZdpCnNtYgEcjJjlMk2CF3R4oT/WyqGegMw4AO9caK+zFEholHHUDnOjs+Lg2Ghrt/zx IImN5s8MNw/B6PTw1fF4dHSwHvM01bmzrBsu1XXN+KnB2X6Ss/MkZ/dJzl7BoRS9wwifjH7H 2L/8EA6uLoejy48sDMtfEIRSxWmeCNh4+WEl/ZHZBTeCZbcMfQuXRt+I2IXZ7Uaw1tL/hzz+ N+/BN8b/3f29/Rr/93vYC7rb+zst/n8Tir5DTJi+vTj2SAgXV0fj0QA2thirmgFjw+kQhjo+ 0voW3uyE3a0jbkUCx+8RSq3UirHjs41+QNkMokoRvdLzQvBEmJIZOemQc6hAvOfZEk+rhCNW cmgPa2yid4vA1H20f6CzjKvE1rtK5pIb3p8upAXagmYBtxZhu2onDzqHBb+jloM5T1N0gADe 6rm7RygsehKuSRWUdUnMiHqK4pnoO/HeIUrGBJeElhGrWbDUxm2CkLjDwOwBT1HJJmh6rnTl VqrrQiPJhgAnOTlpNkFiT7GVoUltqFmZhdza4EqbVGDzWSINuqmNRAdzheFqWMtya1iqsVuw hqGb2C8Lpys9XsMD3KMtAmZS8UJdEaaZEKoRq8KOwrZqdyTUHTf9i8Pp64iVz+jYYXKDV6p0 lbsFuQZKxMJabJjUl5sq7AOGPAsjVqSuSiMlb7vvDykzfFXE7zcsisc5JyvKSuoH63V1qDuB ZYUbfM3ipPB6is3/B60wz9xcl8PCj7WyddxtYyx31f8es5stXZhbYX6GiP5Jtcxd/wZPh603 oHS8yNWthT/w9FiDTA42/Fp1CbZiaGSg7LSErFQ8MzSIJdbalGU6ydEaFnOMsb5GhV5ftfKl 6moFnxcnD/4umzzLUhr8PCtMbFobXIh5cx0U45TnOcOVxcxnFZ9CXw5c/fKZtNbSvlo3+hFb BT9iVXoCzFQ1BNGFxdRRFsoFRBOBv7l9lJD1FThMliKWcynK0TNKpROGp30vHDG/AiSeCXyh 2qEbs15VrHvAIXMhhLObxZRJZYanAx6PdpL0TMC9kQ6hEd/8vojPZkbc9SfT4fnVFDGufK1L n7xglRvk4yedWlXFkz5VIhXk0YUpB2IlCF00EIThXQy9XdMFRnW1iwDHiD9zBIYkJC5dFGNL jPJihW6vgOZpjiiB4EAp5iXuzshwsmc4mUzGzahVWvGSa5V8qZLqGmMbqra7hTRJvc2rae62 ZVhicprC8LxI+3J+Ms7zHINKAFfVxz8cXSXAW1fkASuawFb5RPi2UH/fPMvM5s1qmDpC0DZ5 jF9YRQFQ2oUhMeB1PYpsueBW2n6to4gbIrlnlN9AhJjU/ouPLU09C1MwUuAVOeq3MY4Dm9Xn HN0CXJqJwjWvHKuv/qRqpLPWUgaxAGnK8rOisEKMz+QLZRp3wi50niY+CWVfxJIv+mFdTqsr XcwJlb6k0WYL5GpOAgWcfdr49fq5xK0qD6zuX+Vr3f3KRxx8IlZPVO33SksttdRSSy211FJL LbXUUksttdRSSy219OX0F0J8mR8AKAAA --h31gzZEtNLTqOjlF Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="doc.docbook.mk.diff" Index: doc.docbook.mk =================================================================== RCS file: /home/ncvs/doc/share/mk/doc.docbook.mk,v retrieving revision 1.11 diff -u -r1.11 doc.docbook.mk --- doc.docbook.mk 2000/04/29 07:46:15 1.11 +++ doc.docbook.mk 2000/06/30 02:41:50 @@ -51,15 +51,18 @@ DSLHTML?= ${.CURDIR}/../../share/sgml/freebsd.dsl DSLPRINT?= ${.CURDIR}/../../share/sgml/freebsd.dsl + FREEBSDCATALOG= ${DOC_PREFIX}/share/sgml/catalog DOCBOOKCATALOG= ${PREFIX}/share/sgml/docbook/catalog JADECATALOG= ${PREFIX}/share/sgml/jade/catalog DSSSLCATALOG= ${PREFIX}/share/sgml/docbook/dsssl/modular/catalog +IMAGELIB?= + JADEOPTS= ${JADEFLAGS} -c ${FREEBSDCATALOG} -c ${DSSSLCATALOG} -c ${DOCBOOKCATALOG} -c ${JADECATALOG} ${EXTRA_CATALOGS:S/^/-c /g} -KNOWN_FORMATS= html html-split html-split.tar txt rtf ps pdf tex dvi tar pdb +KNOWN_FORMATS= html html.tar html-split html-split.tar txt rtf ps pdf tex dvi tar pdb # ------------------------------------------------------------------------ # @@ -115,6 +118,9 @@ .elif ${_cf} == "html" _docs+= ${DOC}.html CLEANFILES+= ${DOC}.html +.elif ${_cf} == "html.tar" +_docs+= ${DOC}.html.tar +CLEANFILES+= ${DOC}.html ${DOC}.html.tar .elif ${_cf} == "txt" _docs+= ${DOC}.txt CLEANFILES+= ${DOC}.html ${DOC}.txt @@ -166,13 +172,13 @@ all: ${_docs} -index.html HTML.manifest: ${SRCS} +index.html HTML.manifest: ${SRCS} ${IMAGELIB} ${JADE} -V html-manifest -ioutput.html ${JADEOPTS} -d ${DSLHTML} -t sgml ${MASTERDOC} .if !defined(NO_TIDY) -tidy -i -m -f /dev/null ${TIDYFLAGS} `xargs < HTML.manifest` .endif -${DOC}.html: ${SRCS} +${DOC}.html: ${SRCS} ${IMAGELIB} ${JADE} -ioutput.html -V nochunks ${JADEOPTS} -d ${DSLHTML} -t sgml ${MASTERDOC} > ${.TARGET} .if !defined(NO_TIDY) -tidy -i -m -f /dev/null ${TIDYFLAGS} ${.TARGET} @@ -180,6 +186,11 @@ ${DOC}.html-split.tar: HTML.manifest tar cf ${.TARGET} `xargs < HTML.manifest` + tar uf ${.TARGET} ${IMAGELIB} + +${DOC}.html.tar: ${DOC}.html + tar cf ${.TARGET} ${DOC}.html + tar uf ${.TARGET} ${IMAGELIB} ${DOC}.txt: ${DOC}.html w3m -S -dump ${.ALLSRC} > ${.TARGET} @@ -193,9 +204,6 @@ ${DOC}.rtf: ${SRCS} ${JADE} -Vrtf-backend -ioutput.print ${JADEOPTS} -d ${DSLPRINT} -t rtf -o ${.TARGET} ${MASTERDOC} -${DOC}.doc: ${SRCS} - ${JADE} -ioutput.print ${JADEOPTS} -d ${DSLPRINT} -t doc -o ${.TARGET} ${MASTERDOC} - ${DOC}.tex: ${SRCS} ${JADE} -Vtex-backend -ioutput.print ${JADEOPTS} -d ${DSLPRINT} -t tex -o ${.TARGET} ${MASTERDOC} @@ -270,7 +278,7 @@ .for _curformat in ${KNOWN_FORMATS} _cf=${_curformat} .for _curcompress in ${KNOWN_COMPRESS} -.if ${_cf} == "html-split" +.if ${_cf} == "html-split" || ${_cf} == "html" ${DOC}.${_cf}.tar.${_curcompress}: ${DOC}.${_cf}.tar _PROG_COMPRESS_${_curcompress} .else ${DOC}.${_cf}.${_curcompress}: ${DOC}.${_cf} _PROG_COMPRESS_${_curcompress} @@ -283,8 +291,7 @@ # Install targets # # Build install-* targets, one per allowed value in FORMATS. Need to -# build -# two specific targets; +# build two specific targets; # # install-html-split - Handles multiple .html files being generated # from one source. Uses the HTML.manifest file @@ -320,12 +327,21 @@ @if [ -f ${.OBJDIR}/${DOC}.ln ]; then \ (cd ${DESTDIR}; sh ${.OBJDIR}/${DOC}.ln); \ fi - +.for _curimage in ${IMAGELIB} + ${INSTALL_DOCS} ${_curimage} ${DESTDIR}/${_curimage:H} +.endfor .for _compressext in ${KNOWN_COMPRESS} install-${_cf}.tar.${_compressext}: ${DOC}.${_cf}.tar.${_compressext} @[ -d ${DESTDIR} ] || mkdir -p ${DESTDIR} ${INSTALL_DOCS} ${.ALLSRC} ${DESTDIR} .endfor +.elif ${_cf} == "html" +install-${_cf}: ${DOC}.${_cf} + @[ -d ${DESTDIR} ] || mkdir -p ${DESTDIR} + ${INSTALL_DOCS} ${.ALLSRC} ${DESTDIR} +.for _curimage in ${IMAGELIB} + ${INSTALL_DOCS} ${_curimage} ${DESTDIR}/${_curimage:H} +.endfor .else install-${_cf}: ${DOC}.${_cf} @[ -d ${DESTDIR} ] || mkdir -p ${DESTDIR} @@ -370,6 +386,9 @@ @cp HTML.manifest PLIST .else @echo ${DOC}.${_curformat} > PLIST + @for imagelib in ${IMAGELIB}; do \ + echo $$imagelib >> PLIST; \ + done .endif @pkg_create -v -c -"FDP ${.CURDIR:T} ${_curformat} package" \ -d -"FDP ${.CURDIR:T} ${_curformat} package" -f PLIST \ --h31gzZEtNLTqOjlF Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="doc.imagelib.mk" # # $FreeBSD$ # # This include file <doc.imagelib.mk> handles pulling in images from the # imagelib/ directory as necessary. # # Each document that wants to use one or more images from imagelib/ has to # list them in the IMAGELIB variable. For example, a document that wants to # use callouts 1 thru 4 has to list # # IMAGELIB= callouts/1.png callouts/2.png callouts/3.png callouts/4.png # # in the controlling Makefile. # # This code ensures they exist in the current directory, and copies them in # as necessary. # IMAGELIB_DIR?= ${.CURDIR}/../../imagelib CP?= /bin/cp MKDIR?= /bin/mkdir .for _curimage in ${IMAGELIB} ${_curimage}: ${IMAGELIB_DIR}/${_curimage} [ -d ${_curimage} ] || ${MKDIR} -p ${_curimage:H} ${CP} ${IMAGELIB_DIR}/${_curimage} ${_curimage} .endfor --h31gzZEtNLTqOjlF Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="doc.project.mk.diff" Index: doc.project.mk =================================================================== RCS file: /home/ncvs/doc/share/mk/doc.project.mk,v retrieving revision 1.2 diff -u -r1.2 doc.project.mk --- doc.project.mk 1999/09/06 06:53:39 1.2 +++ doc.project.mk 2000/06/30 02:26:06 @@ -67,8 +67,13 @@ .if ${DOCFORMAT} == "docbook" .include "doc.docbook.mk" .endif +.if ${DOCFORMAT} == "html" +.include "doc.html.mk" .endif +.endif # Subdirectory glue and ownership information. .include "doc.subdir.mk" .include "doc.install.mk" +.include "doc.imagelib.mk" + --h31gzZEtNLTqOjlF Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="freebsd.dsl.diff" Index: freebsd.dsl =================================================================== RCS file: /home/ncvs/doc/share/sgml/freebsd.dsl,v retrieving revision 1.14 diff -u -r1.14 freebsd.dsl --- freebsd.dsl 2000/03/23 09:00:16 1.14 +++ freebsd.dsl 2000/06/30 01:36:35 @@ -1,4 +1,4 @@ -<!-- $FreeBSD: doc/share/sgml/freebsd.dsl,v 1.14 2000/03/23 09:00:16 nik Exp $ --> +<!-- $FreeBSD: doc/share/sgml/freebsd.dsl,v 1.13 2000/02/15 01:57:17 nik Exp $ --> <!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" [ <!ENTITY % output.html "IGNORE"> @@ -45,6 +45,48 @@ ;; Write a manifest? #f) + (define %callout-graphics% + ;; Use graphics in callouts? + #t) + + (define %callout-graphics-ext% + ;; The extension to use for callout images. This is an extension + ;; to the stylesheets, they do not support this functionality + ;; natively. + ".png") + + (define %callout-graphics-path% + ;; Path to callout graphics + "./callouts/") + + ;; Redefine $callout-bug$ to support the %callout-graphic-ext% + ;; variable. + (define ($callout-bug$ conumber) + (let ((number (if conumber (format-number conumber "1") "0"))) + (if conumber + (if %callout-graphics% + (if (<= conumber %callout-graphics-number-limit%) + (make empty-element gi: "IMG" + attributes: (list (list "SRC" + (root-rel-path + (string-append + %callout-graphics-path% + number + %callout-graphics-ext%))) + (list "HSPACE" "0") + (list "VSPACE" "0") + (list "BORDER" "0") + (list "ALT" + (string-append + "(" number ")")))) + (make element gi: "B" + (literal "(" (format-number conumber "1") ")"))) + (make element gi: "B" + (literal "(" (format-number conumber "1") ")"))) + (make element gi: "B" + (literal "(??)"))))) + + <!-- Understand <segmentedlist> and related elements. Simpleminded, and only works for the HTML output. --> @@ -124,7 +166,23 @@ (normalize "legalnotice") (normalize "abstract"))) - + <!-- The stylesheets need to know about the graphic formats we + use. In particular, PNG isn't supported "out of the box." --> + (define %graphic-extensions% + '("jpg" "png" "tex" "gif")) + + (define %graphic-default-extension% + "png") + + (define preferred-mediaobject-extensions + (list "tex" "jpg" "jpeg" "png")) + + (define acceptable-mediaobject-extensions + (list "gif" "bmp")) + + (define acceptable-mediaobject-notations + (list "GIF" "GIF87a" "GIF89a" "BMP")) + <!-- Slightly deeper customisations --> <!-- I want things marked up with 'sgmltag' eg., @@ -151,8 +209,10 @@ Configure the stylesheet to behave more like John's. --> (element command ($mono-seq$)) + + (element application ($italic-seq$)) - (element application ($bold-seq$)) + (element filename ($italic-seq$)) <!-- Warnings and cautions are put in boxed tables to make them stand out. The same effect can be better achieved using CSS or similar, @@ -182,13 +242,15 @@ <!-- Default to labelling Q/A with Q: and A: --> +<!-- (define (qanda-defaultlabel) (normalize "qanda")) +--> <!-- For the HTML version, display the questions in a bigger, bolder font. --> - <![ %output.html [ + <![ IGNORE [ (element question (let* ((chlist (children (current-node))) (firstch (node-list-first chlist)) --h31gzZEtNLTqOjlF Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="freebsd.dtd.diff" Index: freebsd.dtd =================================================================== RCS file: /home/ncvs/doc/share/sgml/freebsd.dtd,v retrieving revision 1.4 diff -u -r1.4 freebsd.dtd --- freebsd.dtd 2000/02/14 01:30:48 1.4 +++ freebsd.dtd 2000/06/29 19:28:24 @@ -23,12 +23,10 @@ <!-- ..................................................................... --> <!-- Entities for element classes and mixtures ........................... --> -<!-- Object-level classes ................................................ --> - -<!ENTITY % local.list.class "|FAQList"> - <!-- Character level classes --> <!ENTITY % local.tech.char.class "|HostID|Username|Devicename|MakeTarget|MakeVar"> + +<!ENTITY % local.cptr.char.mix "|CO"> <!-- OS Version attributes ............................................... --h31gzZEtNLTqOjlF Content-Type: application/x-tar-gz Content-Disposition: attachment; filename="imagelib.tar.gz" Content-Transfer-Encoding: base64 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 AAAAAAAAAADgT8XPtfglWgBQAAA= --h31gzZEtNLTqOjlF-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-doc" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000630035012.A41595>