2 <!DOCTYPE xsl:stylesheet [ <!ENTITY % xsldoc.ent SYSTEM "./xsldoc.ent"> %xsldoc.ent; ]>
3 <!--#############################################################################
4 | $Id: book-article.mod.xsl,v 1.41 2004/01/31 11:05:54 j-devenish Exp $
5 |- #############################################################################
6 | $Author: j-devenish $
7 + ############################################################################## -->
10 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
11 xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
12 exclude-result-prefixes="doc" version='1.0'>
14 <doc:reference id="book-article" xmlns="">
16 <releaseinfo role="meta">
17 $Id: book-article.mod.xsl,v 1.41 2004/01/31 11:05:54 j-devenish Exp $
24 <year>2000</year><year>2001</year><year>2002</year><year>2003</year>
25 <holder>Ramon Casellas</holder>
28 <doc:revision rcasver="1.28">&rev_2003_05;</doc:revision>
31 <title>Books and Articles <filename>book-article.mod.xsl</filename></title>
36 Most &DocBook; documents are either <doc:db
37 basename="article">articles</doc:db> or <doc:db
38 basename="book">books</doc:db>, so this XSL template file is a
39 classical entry point when processing &DocBook; documents.
51 <doc:template basename="book" xmlns="">
52 <refpurpose>Process a &DocBook; <doc:db>book</doc:db> document</refpurpose>
55 Entry point for <doc:db basename="book">books</doc:db>.
60 <listitem><simpara><xref linkend="param.latex.book.afterauthor"/></simpara></listitem>
61 <listitem><simpara><xref linkend="param.toc.section.depth"/></simpara></listitem>
62 <listitem><simpara><xref linkend="param.section.depth"/></simpara></listitem>
63 <listitem><simpara><xref linkend="param.latex.book.begindocument"/></simpara></listitem>
64 <listitem><simpara><xref linkend="param.latex.titlepage.file"/></simpara></listitem>
65 <listitem><simpara><xref linkend="param.latex.maketitle"/></simpara></listitem>
73 <simplelist type='inline'>
80 <listitem><simpara>&mapping;</simpara></listitem>
81 <listitem><simpara><xref linkend="template.generate.latex.book.preamble"/></simpara></listitem>
85 <xsl:template match="book">
86 <!-- book:1: generate.latex.book.preamble -->
87 <xsl:call-template name="generate.latex.book.preamble"/>
88 <!-- book:2: output title information -->
89 <xsl:text>\title{</xsl:text>
90 <xsl:apply-templates select="title|bookinfo/title"/>
91 <xsl:apply-templates select="subtitle|bookinfo/subtitle"/>
92 <xsl:text>} </xsl:text>
93 <!-- book:3: output author information -->
94 <xsl:text>\author{</xsl:text>
96 <xsl:when test="bookinfo/authorgroup">
97 <xsl:apply-templates select="bookinfo/authorgroup"/>
100 <xsl:for-each select="bookinfo">
101 <xsl:call-template name="authorgroup"/>
105 <xsl:text>} </xsl:text>
106 <!-- book:4: dump any preamble after author -->
107 <xsl:value-of select="$latex.book.afterauthor"/>
108 <!-- book:5: set some counters -->
109 <xsl:text> \setcounter{tocdepth}{</xsl:text><xsl:value-of select="$toc.section.depth"/><xsl:text>} </xsl:text>
110 <xsl:text> \setcounter{secnumdepth}{</xsl:text><xsl:value-of select="$section.depth"/><xsl:text>} </xsl:text>
111 <!-- book:6: dump the begin document command -->
112 <xsl:value-of select="$latex.book.begindocument"/>
113 <!-- book:7: include external Cover page if specified -->
114 <xsl:if test="$latex.titlepage.file != ''">
115 <xsl:text> \InputIfFileExists{</xsl:text><xsl:value-of select="$latex.titlepage.file"/>
116 <xsl:text>}{\typeout{WARNING: Using cover page </xsl:text>
117 <xsl:value-of select="$latex.titlepage.file"/>
118 <xsl:text>}}</xsl:text>
120 <!-- book:7b: maketitle and set up pagestyle -->
121 <xsl:value-of select="$latex.maketitle"/>
122 <!-- book:8: - APPLY TEMPLATES -->
123 <xsl:apply-templates select="bookinfo"/>
124 <xsl:call-template name="content-templates-rootid"/>
125 <!-- book:9: call map.end -->
126 <xsl:call-template name="map.end"/>
129 <doc:template basename="title" xmlns="">
130 <refpurpose>Process <doc:db>title</doc:db> elements</refpurpose>
133 Typesets a bold title.
137 <xsl:template match="book/title">\bfseries <xsl:apply-templates/></xsl:template>
139 <doc:template basename="subtitle" xmlns="">
140 <refpurpose>Process <doc:db>subtitle</doc:db> elements</refpurpose>
143 Typesets a bold subtitle, spaced 12pt from the preceding <doc:db>title</doc:db>.
147 <xsl:template match="book/subtitle">\\[12pt]\normalsize <xsl:apply-templates/></xsl:template>
149 <doc:template basename="title" xmlns="">
150 <refpurpose>Process <doc:db>title</doc:db> elements</refpurpose>
153 Typesets a bold title.
157 <xsl:template match="book/bookinfo/title">\bfseries <xsl:apply-templates/></xsl:template>
159 <doc:template basename="subtitle" xmlns="">
160 <refpurpose>Process <doc:db>subtitle</doc:db> elements</refpurpose>
163 Typesets a bold subtitle, spaced 12pt from the preceding <doc:db>title</doc:db>.
167 <xsl:template match="book/bookinfo/subtitle">\\[12pt]\normalsize <xsl:apply-templates/></xsl:template>
169 <doc:template xmlns="">
170 <refpurpose>Process <doc:db>bookinfo</doc:db> elements</refpurpose>
173 Processes a <doc:db>book</doc:db>'s <doc:db>bookinfo</doc:db>
174 (will be invoked after the title page has been typeset).
180 Only the <doc:db>revhistory</doc:db>,
181 <doc:db>abstract</doc:db>, <doc:db>keywordset</doc:db>,
182 <doc:db>copyright</doc:db> and <doc:db>legalnotice</doc:db> are
183 processed. Users may override this in their customisation
189 <xsl:template match="book/bookinfo">
190 <xsl:apply-templates select="revhistory" />
191 <xsl:apply-templates select="copyright" />
192 <xsl:apply-templates select="keywordset" />
193 <xsl:apply-templates select="legalnotice" />
194 <xsl:apply-templates select="abstract" />
197 <doc:template basename="copyright" xmlns="">
198 <refpurpose>Process <doc:db>bookinfo</doc:db>'s <doc:db>copyright</doc:db> elements</refpurpose>
201 Formats a block-style copyright.
208 <para>Calls <xref linkend="template.copyright"/>.</para>
211 <xsl:template match="bookinfo/copyright">
212 <xsl:text>\begin{center}</xsl:text>
213 <xsl:call-template name="copyright"/>
214 <xsl:text>\end{center} </xsl:text>
217 <doc:template basename="article" xmlns="">
218 <refpurpose>Process a <doc:db>book</doc:db>'s <doc:db>article</doc:db> elements</refpurpose>
221 Entry point for a <literal>book</literal>'s <doc:db basename="article">articles</doc:db>.
226 <listitem><simpara><xref linkend="param.latex.book.article.title.style"/></simpara></listitem>
227 <listitem><simpara><xref linkend="param.latex.book.article.header.style"/></simpara></listitem>
232 For double-sided books, each article will commence on a right-hand page.
236 This template will call upon the following variables or
237 templates in this order:
238 <literal>generate.latex.pagestyle</literal>,
239 <literal>title</literal> (or <doc:db>articleinfo</doc:db> or
240 <doc:db>artheader</doc:db>),
241 <literal>$latex.book.article.title.style</literal>,
242 <literal>date</literal> (from <literal>articleinfo</literal> or
243 <literal>artheader</literal>), <literal>authorgroup</literal>
244 or <literal>author</literal> (or <literal>articleinfo</literal>
245 or <literal>artheader</literal>),
246 <literal>$latex.book.article.header.style</literal>,
247 <literal>articleinfo</literal> or <literal>artheader</literal>
248 in the XSLT <literal>article.within.book</literal> mode,
249 <literal>content-templates</literal>.
255 <simplelist type='inline'>
263 <listitem><simpara><xref linkend="template.generate.latex.pagestyle"/></simpara></listitem>
264 <listitem><simpara><xref linkend="template.article/artheader|article/articleinfo-article.within.book"/></simpara></listitem>
269 <formalpara><title>Tasks</title>
271 <listitem><para>Calls <literal>generate.latex.article.preamble</literal>.</para></listitem>
272 <listitem><para>Outputs \title, \author, \date, getting the information from its children.</para></listitem>
273 <listitem><para>Calls <literal>latex.article.begindocument</literal>.</para></listitem>
274 <listitem><para>Calls <literal>latex.article.maketitle.</literal></para></listitem>
275 <listitem><para>Applies templates.</para></listitem>
276 <listitem><para>Calls <literal>latex.article.end</literal> template.</para></listitem>
280 <xsl:template match="book/article">
281 <xsl:text> \makeatletter\if@openright\cleardoublepage\else\clearpage\fi</xsl:text>
282 <xsl:call-template name="generate.latex.pagestyle"/>
283 <xsl:text>\makeatother </xsl:text>
284 <!-- Get and output article title -->
285 <xsl:variable name="article.title">
287 <xsl:when test="./title">
288 <xsl:apply-templates select="./title"/>
290 <xsl:when test="./articleinfo/title">
291 <xsl:apply-templates select="./articleinfo/title"/>
294 <xsl:apply-templates select="./artheader/title"/>
298 <xsl:text>\begin{center}{</xsl:text>
299 <xsl:value-of select="$latex.book.article.title.style"/>
300 <xsl:text>{</xsl:text>
301 <xsl:value-of select="$article.title"/>
302 <xsl:text>}}\par </xsl:text>
303 <!-- Display date information -->
304 <xsl:variable name="article.date">
305 <xsl:apply-templates select="./artheader/date|./articleinfo/date"/>
307 <xsl:if test="$article.date!=''">
308 <xsl:text>{</xsl:text>
309 <xsl:value-of select="$article.date"/>
310 <xsl:text>}\par </xsl:text>
312 <!-- Display author information -->
313 <xsl:text>{</xsl:text>
314 <xsl:value-of select="$latex.book.article.header.style"/>
315 <xsl:text>{</xsl:text>
317 <xsl:when test="articleinfo/authorgroup">
318 <xsl:apply-templates select="articleinfo/authorgroup"/>
320 <xsl:when test="artheader/authorgroup">
321 <xsl:apply-templates select="artheader/authorgroup"/>
323 <xsl:when test="articleinfo/author">
324 <xsl:for-each select="artheader">
325 <xsl:call-template name="authorgroup"/>
328 <xsl:when test="artheader/author">
329 <xsl:for-each select="artheader">
330 <xsl:call-template name="authorgroup"/>
334 <xsl:call-template name="authorgroup"/>
337 <xsl:text>}}\par </xsl:text>
338 <xsl:apply-templates select="artheader|articleinfo" mode="article.within.book"/>
339 <xsl:text>\end{center} </xsl:text>
340 <xsl:call-template name="content-templates"/>
343 <doc:template basename="article" xmlns="">
344 <refpurpose>Process a &DocBook; <doc:db>article</doc:db> document</refpurpose>
347 Entry point for <doc:db basename="article">articles</doc:db>.
352 <listitem><simpara><xref linkend="param.toc.section.depth"/></simpara></listitem>
353 <listitem><simpara><xref linkend="param.section.depth"/></simpara></listitem>
354 <listitem><simpara><xref linkend="param.latex.article.title.style"/></simpara></listitem>
355 <listitem><simpara><xref linkend="param.latex.maketitle"/></simpara></listitem>
357 <listitem><simpara><xref linkend="param.latex.article.begindocument"/></simpara></listitem>
358 <listitem><simpara><xref linkend="param.latex.article.end"/></simpara></listitem>
365 This template will call upon the following variables or
366 templates in this order:
367 <literal>generate.latex.article.preamble</literal>,
368 <literal>$toc.section.depth</literal>,
369 <literal>$section.depth</literal>,
370 <literal>title</literal> (or <doc:db>articleinfo</doc:db> or
371 <doc:db>artheader</doc:db>),
372 <literal>$latex.article.title.style</literal>,
373 <literal>date</literal> (from <literal>articleinfo</literal> or
374 <literal>artheader</literal>), <literal>authorgroup</literal>
375 or <literal>author</literal> (or <literal>articleinfo</literal>
376 or <literal>artheader</literal>), <literal>map.begin</literal>,
377 <literal>$latex.maketitle</literal>,
378 <literal>articleinfo</literal> or <literal>artheader</literal>,
379 <literal>content-templates</literal>,
380 <literal>map.end</literal>.
385 <simplelist type='inline'>
392 <listitem><simpara>&mapping;: this template will use the <literal>article</literal> mappings.</simpara></listitem>
393 <listitem><simpara><xref linkend="template.article/artheader|article/articleinfo-standalone.article"/></simpara></listitem>
394 <listitem><simpara><xref linkend="template.generate.latex.article.preamble"/></simpara></listitem>
398 <xsl:template match="article">
399 <xsl:call-template name="generate.latex.article.preamble"/>
400 <xsl:text> \setcounter{tocdepth}{</xsl:text><xsl:value-of select="$toc.section.depth"/><xsl:text>} </xsl:text>
401 <xsl:text> \setcounter{secnumdepth}{</xsl:text><xsl:value-of select="$section.depth"/><xsl:text>} </xsl:text>
402 <!-- Get and output article title -->
403 <xsl:variable name="article.title">
405 <xsl:when test="./title">
406 <xsl:apply-templates select="./title"/>
408 <xsl:when test="./articleinfo/title">
409 <xsl:apply-templates select="./articleinfo/title"/>
412 <xsl:apply-templates select="./artheader/title"/>
416 <xsl:text>\title{</xsl:text>
417 <xsl:value-of select="$latex.article.title.style"/>
418 <xsl:text>{</xsl:text>
419 <xsl:value-of select="$article.title"/>
420 <xsl:text>}} </xsl:text>
421 <!-- Display date information -->
422 <xsl:variable name="article.date">
423 <xsl:apply-templates select="./artheader/date|./articleinfo/date"/>
425 <xsl:if test="$article.date!=''">
426 <xsl:text>\date{</xsl:text>
427 <xsl:value-of select="$article.date"/>
428 <xsl:text>} </xsl:text>
430 <!-- Display author information -->
431 <xsl:text>\author{</xsl:text>
433 <xsl:when test="articleinfo/authorgroup">
434 <xsl:apply-templates select="articleinfo/authorgroup"/>
436 <xsl:when test="artheader/authorgroup">
437 <xsl:apply-templates select="artheader/authorgroup"/>
439 <xsl:when test="articleinfo/author">
440 <xsl:for-each select="artheader">
441 <xsl:call-template name="authorgroup"/>
444 <xsl:when test="artheader/author">
445 <xsl:for-each select="artheader">
446 <xsl:call-template name="authorgroup"/>
450 <xsl:call-template name="authorgroup"/>
453 <xsl:text>} </xsl:text>
454 <!-- Display begindocument command -->
455 <xsl:call-template name="map.begin"/>
456 <xsl:value-of select="$latex.maketitle"/>
457 <xsl:apply-templates select="artheader|articleinfo" mode="standalone.article"/>
458 <xsl:call-template name="content-templates-rootid"/>
459 <xsl:call-template name="map.end"/>
462 <doc:template basename="date" xmlns="">
463 <refpurpose>Process <doc:db>date</doc:db> in <doc:db>articleinfo</doc:db> elements</refpurpose>
474 <simplelist type='inline'>
481 <xsl:template match="articleinfo/date|artheader/date">
482 <xsl:apply-templates/>
485 <doc:template basename="articleinfo" xmlns="">
486 <refpurpose>Process <doc:db>articleinfo</doc:db> in <doc:db>article</doc:db> elements</refpurpose>
489 Applies templates for <doc:db>legalnotice</doc:db> and <doc:db>abstract</doc:db>.
497 <simplelist type='inline'>
504 <xsl:template match="article/artheader|article/articleinfo" mode="standalone.article">
505 <xsl:apply-templates select="keywordset" />
506 <xsl:apply-templates select="legalnotice" />
507 <xsl:apply-templates select="abstract"/>
510 <xsl:template match="article/artheader|article/articleinfo"/>
512 <doc:template basename="articleinfo" xmlns="">
513 <refpurpose>Process <doc:db>articleinfo</doc:db> in <doc:db>article</doc:db> elements</refpurpose>
516 Applies templates for <doc:db>abstract</doc:db> and <doc:db>legalnotice</doc:db>.
524 <simplelist type='inline'>
531 <xsl:template match="article/artheader|article/articleinfo" mode="article.within.book">
532 <xsl:apply-templates select="abstract"/>
533 <xsl:apply-templates select="legalnotice" />
536 <doc:template basename="legalnotice" xmlns="">
537 <refpurpose>Process <doc:db>legalnotice</doc:db> elements</refpurpose>
540 Typesets legal notices.
548 <para>This should be done via the mapping system!</para>
552 For two-column documents, the <doc:db>title</doc:db> is
553 formatted in italics and followed immediately by the notice's
554 content. For single-column documents, the
555 <literal>title</literal> is formatted in bold, centred on a
556 line of its own, and the body of the legal notice is formatted
557 as an indented small-font quotation.
561 The <doc:db>blockinfo</doc:db> is not processed
562 (only the <doc:db>title</doc:db> is used).
566 <simplelist type='inline'>
573 <listitem><simpara>&mapping;</simpara></listitem>
574 <listitem><simpara><xref linkend="template.legalnotice.title"/></simpara></listitem>
578 <xsl:template match="legalnotice">
579 <xsl:text> {\if@twocolumn </xsl:text>
580 <xsl:text>\noindent\small\textit{ </xsl:text>
581 <xsl:call-template name="legalnotice.title"/>
582 <xsl:text>}\/\bfseries---$\!$% </xsl:text>
583 <xsl:text>\else </xsl:text>
584 <xsl:text>\noindent\begin{center}\small\bfseries </xsl:text>
585 <xsl:call-template name="legalnotice.title"/>
586 <xsl:text>\end{center}\begin{quote}\small </xsl:text>
587 <xsl:text>\fi </xsl:text>
588 <xsl:call-template name="content-templates"/>
589 <xsl:text>\vspace{0.6em}\par\if@twocolumn\else\end{quote}\fi} </xsl:text>
591 <xsl:text>\normalsize\rmfamily </xsl:text>
595 <doc:template xmlns="">
596 <refpurpose> Choose a title for <doc:db basename="legalnotice">legalnotices</doc:db> </refpurpose>
609 <doc:db>blockinfo</doc:db>/<doc:db>title</doc:db>,
610 <doc:db>legalnotice</doc:db>/<doc:db>title</doc:db>
611 or a <quote>gentext</quote> title
612 (the first of the three will be used).
617 <para>See <xref linkend="template.legalnotice"/></para>
621 <listitem><simpara>&mapping;</simpara></listitem>
622 <listitem><simpara><xref linkend="template.legalnotice.title"/></simpara></listitem>
626 <xsl:template name="legalnotice.title">
627 <xsl:param name="title" select="blockinfo/title|title"/>
629 <xsl:when test="count($title)>0">
630 <xsl:apply-templates select="$title[1]"/>
633 <xsl:call-template name="gentext">
634 <xsl:with-param name="key">legalnotice</xsl:with-param>
640 <doc:template basename="toc" xmlns="">
641 <refpurpose> Generate and typeset a <doc:db>toc</doc:db> </refpurpose>
644 Produce a chapter-level table of contents in &LaTeX;.
653 This template ignores its contents and instead invokes the
654 &LaTeX; <function condition="latex">tableofcontents</function>
655 command. You will need to run your typesetter at least twice,
656 and possibly three times, to have the table of contents
657 generated normally. The headers, footers, and chapter title
658 will be generated by &LaTeX;.
663 <simplelist type='inline'>
670 <listitem><simpara><xref linkend="template.latex.noparskip"/></simpara></listitem>
671 <listitem><simpara><xref linkend="template.latex.restoreparskip"/></simpara></listitem>
675 <xsl:template match="toc" name="toc">
676 <xsl:text> </xsl:text>
677 <xsl:call-template name="latex.noparskip"/>
679 <xsl:when test="$latex.use.hyperref=1">
682 \def\dbtolatex@contentsid{</xsl:text>
683 <xsl:call-template name="generate.label.id"/>
685 \let\dbtolatex@@contentsname\contentsname
686 \newif\ifdocbooktolatexcontentsname\docbooktolatexcontentsnametrue
687 \def\dbtolatex@contentslabel{%
688 \label{\dbtolatex@contentsid}\hypertarget{\dbtolatex@contentsid}{\dbtolatex@@contentsname}%
689 \global\docbooktolatexcontentsnamefalse}
690 \def\contentsname{\ifdocbooktolatexcontentsname\dbtolatex@contentslabel\else\dbtolatex@@contentsname\fi}
692 \let\contentsname\dbtolatex@@contentsname
693 \Hy@writebookmark{}{\dbtolatex@@contentsname}{\dbtolatex@contentsid}{0}{toc}%
698 <xsl:text>\tableofcontents </xsl:text>
701 <xsl:call-template name="latex.restoreparskip"/>
704 <doc:template basename="toc" xmlns="">
705 <refpurpose> Generate and typeset a <doc:db>toc</doc:db> </refpurpose>
708 Produce a chapter-level table of contents in &LaTeX;.
721 &LaTeX; can provide <function
722 condition="latex">listoffigures</function> and
723 <function condition="latex">listoftables</function>
724 by default. This parameter allows you to select
725 which should be used. Recognised values are
726 <quote>figures</quote> and <quote>tables</quote>.
727 If the value is empty or not recognised, both lists
728 will be output. By default, the value of the
729 current node's non-empty <sgmltag
730 class="attribute">condition</sgmltag>, <sgmltag
731 class="attribute">role</sgmltag> or <sgmltag
732 class="attribute">label</sgmltag> attribute will be
743 This template ignores its contents and instead invokes the
744 &LaTeX; <function condition="latex">listoffigures</function> or
745 <function condition="latex">listoftables</function> commands.
746 You will need to run your typesetter at least twice, and
747 possibly three times, to have the table of contents generated
748 normally. The headers, footers, and chapter title will be
749 generated by &LaTeX;.
754 <simplelist type='inline'>
762 <listitem><simpara><xref linkend="param.latex.bridgehead.in.lot"/></simpara></listitem>
763 <listitem><simpara><xref linkend="template.latex.noparskip"/></simpara></listitem>
764 <listitem><simpara><xref linkend="template.latex.restoreparskip"/></simpara></listitem>
768 <xsl:template match="lot" name="lot">
769 <xsl:param name="prefer">
771 <xsl:when test="@condition!=''">
772 <xsl:value-of select="@condition"/>
774 <xsl:when test="@role!=''">
775 <xsl:value-of select="@role"/>
778 <xsl:value-of select="@label"/>
782 <xsl:call-template name="latex.noparskip"/>
784 <xsl:when test="$prefer='figures'">
785 <xsl:text>\listoffigures </xsl:text>
787 <xsl:when test="$prefer='tables'">
788 <xsl:text>\listoftables </xsl:text>
791 <xsl:text>\listoffigures </xsl:text>
792 <xsl:text>\listoftables </xsl:text>
795 <xsl:call-template name="latex.restoreparskip"/>
799 <xsl:template match="lotentry">
802 <xsl:template match="lotentry"/>
803 <xsl:template match="tocpart|tocchap|tocfront|tocback|tocentry"/>
804 <xsl:template match="toclevel1|toclevel2|toclevel3|toclevel4|toclevel5"/>
807 <doc:template xmlns="">
808 <refpurpose> Choose the preferred page style for document body </refpurpose>
812 If no page style is preferred by the user, the defaults will be
813 <literal>empty</literal> for <doc:db
814 basename="article">articles</doc:db>, <literal>plain</literal>
815 for <doc:db basename="book">books</doc:db>, or
816 <literal>fancy</literal> (if the &LaTeX;
817 <productname>fancyhdr</productname> package is permitted).
823 <listitem><simpara><xref linkend="param.latex.pagestyle"/></simpara></listitem>
824 <listitem><simpara><xref linkend="param.latex.use.fancyhdr"/></simpara></listitem>
830 The &LaTeX; <function condition="latex">pagestyle</function>
831 command is used to effect the page style.
836 <xsl:template name="generate.latex.pagestyle">
837 <xsl:text>\pagestyle{</xsl:text>
839 <xsl:when test="$latex.pagestyle!=''">
840 <xsl:value-of select="$latex.pagestyle"/>
842 <xsl:when test="count(//book)>0">
844 <xsl:when test="$latex.use.fancyhdr=1"><xsl:text>fancy</xsl:text></xsl:when>
845 <xsl:otherwise><xsl:text>plain</xsl:text></xsl:otherwise>
848 <xsl:otherwise><xsl:text>empty</xsl:text></xsl:otherwise>
850 <xsl:text>} </xsl:text>