/* * styles.css * * Copyright (c) 2004 David Holroyd, and contributors * See the file 'COPYING' for terms of use * * Part of the Docbook-CSS stylesheet * http://www.badgers-in-foil.co.uk/projects/docbook-css/ */ /* * CSS2 styling for DocBook XML * * To be included in the cascade _after_ core.css. Defines styling that can't * be generated mechanically from another source. */ /* * TODO: * * - do I remember correctly that be hidden for screen media? */ article, book { margin:.5em; } title, subtitle { font-family:sans-serif; } title { font-weight:bolder; margin-bottom:.5em; } /* * Sectioning elements that may contain paragraph-level elements get left/right * margins */ section>*, chapter>*, bibliography>*, appendix>*, glossary>*, preface>*, dedication>*, colophon>*, sect1>*, sect2>*, sect3>*, sect4>*, sect5>*, bibliodiv>* { margin-left:10%; margin-right:10%; } /* * Give admonitions bigger margins, to set them more apart from the main * flow of text. */ warning, caution, important, tip, note { margin-left: 15%; margin-right: 15%; } /* * Remove any margin defined be the previous rule when the child in question * is a section or title. Titles should be allowed to take up the maximum * available width, as they're usually is larger type. Sections must not * be given margins because, the *contents* of the section will alreay have * them; we don't want to recursively increase margins with the nesting depth * of the document. */ section, title, sect1, sect2, sect3, sect4, sect5, bibliodiv { margin-left:0; margin-right:0; } book>title, article>title { font-size:xx-large; text-align:center; border-bottom-style:solid; } appendix>title, bibliography>title, chapter>title, colophon>title, dedication>title, glossary>title, part>title, preface>title { font-size:xx-large; text-align:center; } section>title, sect1>title, bibliodiv>title { font-size:xx-large; } section>section>title, sect2>title { font-size:x-large; margin-left:5%; } section>section>section>title, sect3>title { font-size:large; margin-left:7.5%; } section>section>section>section>title, sect4>title { font-size:large; margin-left:10%; } section>section>section>section>section>title, sect5>title { font-size:inherit; margin-left:10%; } biblioentry > title { display: inline; } /* Give vertical spacing between compoments of the document */ *+section, *+chapter, *+bibliography, *+bibliodiv, *+appendix, *+glossary { margin-top: 3em; } section>*+section { margin-top: 2em; } section>section>*+section { margin-top: 1em; } /* * Give paragraph-level elements some leading space when they aren't the first * item in their containing block. */ *+para, *+formalpara, *+blockquote, *+glossentry, *+table, *+variablelist, *+example, *+informalexample, *+programlisting, *+cmdsynopsis, *+orderedlist, *+itemizedlist, *+figure, *>warning, *>caution, *>important, *>tip, *>note { margin-top:.5em; } /* * BiblioEntry blocks need a bit more space, since they may contain multiple * paragraphs, and so need greater-than-paragraph spacing to make it clear * which gap is the end just of a paragraph, and which gap is the end of the * entry */ *+biblioentry { margin-top: 1em; } /* * REVISIT: I think this is the proper way; but deson't work in Firefox 0.8 formalpara > title { display: run-in; } * Make all children of formalpara inline, instead... */ formalpara > * { display: inline; } formalpara > title:after { content: "."; } para, formalpara { text-align: justify; } quote:before { content: open-quote; } quote:after { content: close-quote; } question, answer { margin-top:.5em; display:list-item; } question>para, answer>para { display:inline; } /* see language specific files for content */ question:before { display:marker; font-weight:bolder; } answer:before { display:marker; font-weight: bolder; } emphasis { font-style:italic; } emphasis[role="strong"] { font-weight:bolder; } emphasis[role="bold"] { font-weight:bolder; font-style:inherit; } emphasis[role="underline"] { text-decoration:underline; font-style:inherit; } emphasis[role="strikethrough"] { text-decoration:line-through; font-style:inherit; } emphasis>emphasis { font-weight:bolder; } foreignphrase, wordasword, productname { font-style:italic; } replaceable { font-style:italic; } sgmltag[class="starttag"]:before, sgmltag[class="emptytag"]:before { content: "<"; } sgmltag[class="starttag"]:after, sgmltag[class="endtag"]:after { content: ">"; } sgmltag[class="endtag"]:before { content: ""; } sgmltag[class="attvalue"]:before, sgmltag[class="attvalue"]:after { content: '"'; } sgmltag[class="genentity"]:before { content: "&"; } sgmltag[class="genentity"]:after { content: ";"; } sgmltag[class="sgmlcomment"]:before { content: ""; } sgmltag[class="xmlpi"]:before { content: ""; } application, keycap, guimenu, guimenuitem, guisubmenu { font-family: sans-serif; } /* * ensure there's some whitespace between elements of an author's name */ author>* + *:before { content: " "; } /* give keycaps a '3D' shaded look */ keycap { padding-left: .2em; padding-right: .2em; border-style: solid; border-top-width: 2px; border-left-width: 3px; border-right-width: 3px; border-bottom-width: 4px; border-top-color: #eeeecc; border-left-color: #eeeecc; border-right-color: #999977; border-bottom-color: #999977; background-color: #ddddbb; /* All these borders may interfere with text on the line bellow. Make the text a little smaller to try and 'pull up' the bottom edge, */ font-size: smaller; } keycombo>keycap+keycap:before { /* FIXME: this appears inside the second keycap's 3D boarder, but * ideally, we'd like it to appear inbetween the two keycaps */ content: "-"; } menuchoice>guimenu+guimenuitem:before, menuchoice>guimenuitem+guimenuitem:before, menuchoice>guimenuitem+guisubmenu:before { /*content: "->";*/ /* a 'proper' left-arrow character */ content: "\2192"; } guibutton { border: 2px outset #dddddd; background-color: #dddddd; /* border: 2px solid; border-top-color: #eeeeee; border-left-color: #eeeeee; border-right-color: #999999; border-bottom-color: #999999; background-color: #dddddd; */} /* render link-like elements per HTML's normal styling */ link, ulink, email { /* When ulink contains no body text, the url should be rendered * at this point in the document. Can't see how to do this with CSS */ color:#0000ff; text-decoration:underline; } /*ulink:after { content: " <" attr(url) ">"; }*/ email:before { content: "<"; } email:after { content: ">"; } citation:before { content: "["; } citation:after { content: "]"; } xref:after { /* simple symbol - content: "#" attr(linkend);*/ /* 'section' symbol */ content: "\00a7" attr(linkend); color:#0000ff; text-decoration: underline; } blockquote { padding-left:3em; padding-bottom: 1em; } blockquote>attribution { text-align:right; font-style: italic; } blockquote>attribution:after { /* I've tried various things to position the attribution after the * other blockquote content (e.g. relative/absolute positioning), but * none of the things I tried produced satisfactory results (e.g. the * attribution appears at the bottom of the containing block, but it * overlaps preceeding content). */ content:":" } blockquote>para:before { content: open-quote; } blockquote>para:after { content: no-close-quote; } blockquote>para:last-child:after { content: close-quote; } /* lists */ itemizedlist { padding-left: 1em; list-style-type: disc; } listitem+listitem { padding-top: .5em; } /* 2 deep nested lists */ itemizedlist itemizedlist { list-style-type: circle; } /* 3 or more deep nested lists */ itemizedlist itemizedlist itemizedlist { list-style-type: square; } itemizedlist>listitem { display:list-item; } orderedlist { padding-left: 1.5em; list-style-type: decimal; } orderedlist>listitem { display:list-item; } /* * We've got no way of properly implementing call-out lists with CSS, so just * present as a list of bullet points. */ calloutlist { padding-left: 1em; list-style-type: disc; } calloutlist>callout { display:list-item; } /* * The list of possible mark names is not defined by Docbook, but "opencircle" * and "bullet" are used in T.D.G. example */ itemizedlist[mark="opencircle"], listitem[override="opencircle"] { list-style-type: circle; } itemizedlist[mark="bullet"], listitem[override="bullet"] { list-style-type: disc; } varlistentry>listitem { margin-left: 2em; } varlistentry+varlistentry { margin-top: .5em; } simplelist[type=horiz] { display: block; } simplelist[type=inline]>member+member:before { /* typically, we end up with unwanted whitespace before the comma * (i.e. whitespace between elements). I see no way of * suppressing this with CSS. * TODO: try a combination of :after and :first-child instead to * avoid the above issue */ content: ", "; } cmdsynopsis, code, command, computeroutput, envar, filename, keycode, keysym, literal, option, parameter, sgmltag, systemitem { font-family: monospace; } filename[class=directory]:after { content: "/"; } /* TODO: Are these specific to 'en' locales or not? */ trademark:after { content: "\2122" } trademark[class="copyright"]:after { content: "\A9" } trademark[class="registered"]:after { content: "\AE" } trademark[class="service"]:after { content: "\2120" } example, informalexample, programlisting { background-color:#dddddd; padding: .5em; border: 1px dashed black; } example programlisting, informalexample programlisting { background-color: none; padding: 0; border: none; } /* admonitions */ warning, caution, tip, note, important { border: 1px dashed gray; padding: .5em; } /* Have admonition titles appear inline with generated content ("Note:" etc.) */ warning>title, caution>title, tip>title, note>title, important>title { display: inline; } warning:before, caution:before, tip:before, note:before, important:before { /* Match the style of */ font-weight: bolder; font-family: sans-serif; } /* FIXME: background colours are cheezy :S ... */ /* see language specific css for content: */ warning:before { background-color: red; } caution:before { background-color: yellow; } tip:before { background-color: #aaaddd; } note:before { background-color: #dddddd; } important:before { background-color: plum; } /* Tables */ thead > row > entry { /* FIXME: will under-rule every row in the <thead>, not just the last * (I tried adding this style to <thead> itself, but this doesn't * appear to work in combination with display:table-header-group, as * defined in tables.css) */ border-bottom: 2px solid black; } thead { font-weight: bolder; } entry { padding: .2em; } /* Footnotes */ /* * Attempt to display footnotes on-mouseover. This may well break if a * footnote element has multiple children (I think the children will end up * stacked on top of each other). */ footnote { position: relative; cursor: help; } footnote:hover { } footnote>* { display: none; z-index: 100; } footnote:hover>* { display: block; position: fixed; border: 2px dotted black; background-color: #ffeeaa; padding: .5em; left: 0px; bottom: 0px; } footnote:before { content: "?"; background-color: #ffeeaa; border: 2px dotted black; font-size: smaller; } /* Attempting to format <footnote> as a sitebar, floating it to the right. Sometimes works for footnotes in the 'main body' of some text, but works badly when the containing block is, for instance, a table cell. footnote:before { content: "*"; display: block; border: 2px dotted black; } footnote>* { display: block; float: right; border: 2px dotted black; padding: .5em; width: 25%; top: -1em; } footnote>*:before { content: "*Footnote"; display: block; font-weight: bold; font-family: sans-serif; } */ glossentry>glossterm { font-weight: bolder; font-style: italic; } userinput { font-weight: bolder; } figure { text-align: center; } imageobject { display: block; } mediaobject>textobject { font-size: smaller; } /* Content */ question:before { content: "Q: "; } answer:before { content: "A: "; } example > title:before { content: "Example: "; } quote { quotes: "“" "”"; } quote quote { quotes: "‘" "’"; } /* Admonitions */ warning:before { content: "Warning: "; } caution:before { content: "Caution: "; } important:before { content: "Important: "; } tip:before { content: "Tip: "; } note:before { content: "Note: "; }