X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/e89227fbc508dab7d538c77299c5166ba69aaf35..b7d5131321533374cdcb85542ef4dcb53269863d:/lib/librarian/book2html.xslt diff --git a/lib/librarian/book2html.xslt b/lib/librarian/book2html.xslt index 03dfcec98..71f118209 100644 --- a/lib/librarian/book2html.xslt +++ b/lib/librarian/book2html.xslt @@ -1,7 +1,7 @@ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:wl="http://wolnelektury.pl/functions" > -<xsl:output encoding="utf-8" indent="yes" omit-xml-declaration = "yes" /> +<xsl:output encoding="utf-8" indent="yes" omit-xml-declaration = "yes" version="2.0" /> <xsl:template match="utwor"> @@ -9,15 +9,13 @@ <head> <title>KsiÄ Å¼ka z serwisu WolneLektury.pl</title> <meta http-equiv="content-type" content="text/html;charset=utf-8"/> - <link rel="stylesheet" href="master.css" type="text/css" media="all" charset="utf-8" /> </head> <style> body { - font-size: 14px; + font-size: 16px; font: Georgia, "Times New Roman", serif; line-height: 1.5em; - margin: 3em; - max-width: 36em; + margin: 0; } a { @@ -25,6 +23,107 @@ text-decoration: none; } + #book-text { + margin: 3em; + max-width: 36em; + } + + /* ================================== */ + /* = Header with logo and menu = */ + /* ================================== */ + #header { + margin: 3.4em 0 0 1.4em; + } + + img { + border: none; + } + + + #menu { + position: fixed; + left: 0em; + top: 0em; + width: 100%; + height: 1.5em; + background: #333; + color: #FFF; + opacity: 0.9; + } + + #menu ul { + list-style: none; + padding: 0; + margin: 0; + } + + #menu li a { + display: block; + float: left; + width: 7.5em; + height: 1.5em; + margin-left: 0.5em; + text-align: center; + color: #FFF; + } + + #menu li a:hover, #menu li a:active { + color: #000; + background: #FFF url(/media/img/arrow-down.png) no-repeat center right; + } + + #menu li a.selected { + color: #000; + background: #FFF url(/media/img/arrow-up.png) no-repeat center right; + } + + #toc, #themes { + position: fixed; + left: 0em; + top: 1.5em; + width: 37em; + padding: 1.5em; + background: #FFF; + border-bottom: 0.25em solid #DDD; + border-right: 0.25em solid #DDD; + display: none; + height: 16em; + overflow-x: hidden; + overflow-y: auto; + opacity: 0.9; + } + + #toc ol, #themes ol { + list-style: none; + padding: 0; + margin: 0; + } + + #toc ol li { + font-weight: bold; + } + + #toc ol ol { + padding: 0 0 1.5em 1.5em; + margin: 0; + } + + #toc ol ol li { + font-weight: normal; + } + + #toc h2 { + display: none; + } + + #toc .anchor { + float: none; + margin: 0; + color: blue; + font-size: 16px; + position: inherit; + } + /* =================================================== */ /* = Common elements: headings, paragraphs and lines = */ /* =================================================== */ @@ -65,26 +164,24 @@ /* ======================== */ .theme-begin { border-left: 0.1em solid #DDDDDD; - color: #666; - float: right; - margin: 0 -9.5em 0 0; + color: #777; padding: 0 0.5em; width: 7.5em; font-style: normal; font-weight: normal; font-size: 16px; - display: none; + float: right; + margin-right: -9.5em; + clear: both; + left: 40em; + line-height: 1.5em; + text-align: left; } .annotation { font-style: normal; font-weight: normal; - font-size: 16px; - display: none; - } - - #footnotes { - display: none; + font-size: 12px; } #footnotes .annotation { @@ -100,6 +197,31 @@ #footnotes p { margin-left: 2.5em; + font-size: 0.875em; + } + + blockquote { + font-size: 0.875em; + } + + /* ============= */ + /* = Numbering = */ + /* ============= */ + .anchor { + position: absolute; + margin: -0.25em -0.5em; + left: 1em; + color: #777; + font-size: 12px; + width: 2em; + text-align: center; + padding: 0.25em 0.5em; + line-height: 1.5em; + } + + .anchor:hover, #book-text .anchor:active { + color: #FFF; + background-color: #CCC; } /* =================== */ @@ -128,7 +250,7 @@ div.didaskalia { font-style: italic; - margin: 0.5em 0 0; + margin: 0.5em 0 0 1.5em; } div.kwestia { @@ -156,6 +278,7 @@ p.motto_podpis { font-size: 0.875em; + text-align: right; } div.fragment { @@ -163,7 +286,7 @@ padding-bottom: 1.5em; } - div.note p, div.note p.paragraph { + div.note p, div.dedication p, div.note p.paragraph, div.dedication p.paragraph { text-align: right; font-style: italic; } @@ -173,12 +296,38 @@ visibility: hidden; } - .anchor { - display: none; + hr.spacer-line { + margin: 1.5em 0; + border: none; + border-bottom: 0.1em solid #000; } - #toc { - display: none; + p.spacer-asterisk { + padding: 0; + margin: 1.5em 0; + text-align: center; + } + + div.person-list ol { + list-style: none; + padding: 0 0 0 1.5em; + } + + p.place-and-time { + font-style: italic; + } + + em.math, em.foreign-word, em.book-title, em.didaskalia { + font-style: italic; + } + + em.author-emphasis { + letter-spacing: 0.1em; + } + + em.person { + font-style: normal; + font-variant: small-caps; } </style> <body> --> @@ -246,7 +395,7 @@ <xsl:template match="kwestia"> <div class="kwestia"> - <xsl:apply-templates select="strofa|akap" /> + <xsl:apply-templates select="strofa|akap|didaskalia" /> </div> </xsl:template> @@ -315,23 +464,23 @@ <xsl:choose> <xsl:when test="count(br) > 0"> <xsl:call-template name="verse"> - <xsl:with-param name="line-content" select="br[1]/preceding-sibling::text() | br[1]/preceding-sibling::node()" /> - <xsl:with-param name="line-number" select="1" /> + <xsl:with-param name="verse-content" select="br[1]/preceding-sibling::text() | br[1]/preceding-sibling::node()" /> + <xsl:with-param name="verse-type" select="br[1]/preceding-sibling::*[name() = 'wers_wciety' or name() = 'wers_akap' or name() = 'wers_cd'][1]" /> </xsl:call-template> <xsl:for-each select="br"> <!-- Each BR tag "consumes" text after it --> <xsl:variable name="lnum" select="count(preceding-sibling::br)" /> <xsl:call-template name="verse"> - <xsl:with-param name="line-number" select="$lnum+2" /> - <xsl:with-param name="line-content" + <xsl:with-param name="verse-content" select="following-sibling::text()[count(preceding-sibling::br) = $lnum+1] | following-sibling::node()[count(preceding-sibling::br) = $lnum+1]" /> + <xsl:with-param name="verse-type" select="following-sibling::*[count(preceding-sibling::br) = $lnum+1 and (name() = 'wers_wciety' or name() = 'wers_akap' or name() = 'wers_cd')][1]" /> </xsl:call-template> </xsl:for-each> </xsl:when> <xsl:otherwise> <xsl:call-template name="verse"> - <xsl:with-param name="line-content" select="text() | node()" /> - <xsl:with-param name="line-number" select="1" /> + <xsl:with-param name="verse-content" select="text() | node()" /> + <xsl:with-param name="verse-type" select="wers_wciety|wers_akap|wers_cd[1]" /> </xsl:call-template> </xsl:otherwise> </xsl:choose> @@ -339,18 +488,28 @@ </xsl:template> <xsl:template name="verse"> - <xsl:param name="line-content" /> - <xsl:param name="line-number" /> + <xsl:param name="verse-content" /> + <xsl:param name="verse-type" /> <p class="verse"> <xsl:choose> - <xsl:when test="name($line-content) = 'wers_akap'"> + <xsl:when test="name($verse-type) = 'wers_akap'"> <xsl:attribute name="style">padding-left: 1em</xsl:attribute> </xsl:when> - <xsl:when test="name($line-content) = 'wers_wciety'"> - <xsl:attribute name="style">padding-left: <xsl:value-of select="$line-content/@typ" />em</xsl:attribute> + <xsl:when test="name($verse-type) = 'wers_wciety'"> + <xsl:choose> + <xsl:when test="$verse-content/@typ"> + <xsl:attribute name="style">padding-left: <xsl:value-of select="$verse-content/@typ" />em</xsl:attribute> + </xsl:when> + <xsl:otherwise> + <xsl:attribute name="style">padding-left: 1em</xsl:attribute> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:when test="name($verse-type) = 'wers_cd'"> + <xsl:attribute name="style">padding-left: 12em</xsl:attribute> </xsl:when> </xsl:choose> - <xsl:apply-templates select="$line-content" mode="inline" /> + <xsl:apply-templates select="$verse-content" mode="inline" /> </p> </xsl:template>