Internal: Removed PDF and nochunks capability.

This is done for multiple reasons, and most of them stem from the fact
that GLFS does things in a way that struggles to reconcile with the pdf
and nochunks targets. For example, CSS and images is a massive sore
spot. Since they don't get maintained anymore, dragging them behind the
barn and putting them down. Apologies to those that use these targets.
This commit is contained in:
Zeckmathederg
2025-03-20 00:52:50 -06:00
parent fec9057738
commit e1796071da
13 changed files with 3 additions and 2001 deletions

View File

@ -54,16 +54,12 @@ endif
ifeq ($(REV), sysv)
BASEDIR ?= $(HTML_ROOT)/glfs
PDF_OUTPUT ?= glfs.pdf
NOCHUNKS_OUTPUT ?= glfs.html
DUMPDIR ?= $(DUMP_ROOT)/glfs-commands
GLFSHTML ?= glfs-html.xml
GLFSHTML2 ?= glfs-html2.xml
GLFSFULL ?= glfs-full.xml
else
BASEDIR ?= $(HTML_ROOT)/glfs-systemd
PDF_OUTPUT ?= glfs-sysd.pdf
NOCHUNKS_OUTPUT ?= glfs-sysd.html
DUMPDIR ?= $(DUMP_ROOT)/glfs-sysd-commands
GLFSHTML ?= glfs-systemd-html.xml
GLFSHTML2 ?= glfs-systemd-html2.xml
@ -107,18 +103,9 @@ help:
@echo ""
@echo " html Builds the HTML pages of the book."
@echo ""
@echo " pdf Builds the book as a PDF file."
@echo ""
@echo " wget-list Produces a list of all packages to download."
@echo " Output is BASEDIR/wget-list"
@echo ""
@echo " nochunks Builds the book as a one-pager. The output"
@echo " is a large single HTML page containing the"
@echo " whole book."
@echo ""
@echo " Parameter NOCHUNKS_OUTPUT=<filename> controls"
@echo " the name of the HTML file."
@echo ""
@echo " validate Runs validation checks on the XML files."
@echo ""
@echo " test-links Runs validation checks on URLs in the book."
@ -127,7 +114,7 @@ help:
@echo " containing all valid URLs."
@echo ""
all: glfs nochunks
all: glfs
world: all dump-commands test-links
html: $(BASEDIR)/index.html
@ -172,53 +159,6 @@ $(BASEDIR)/index.html: $(RENDERTMP)/$(GLFSHTML) version wget-list
$(Q)rm -rf $(RENDERTMP)
pdf: validate wget-list
@echo "Generating profiled XML for PDF..."
$(Q)xsltproc --nonet \
--stringparam profile.condition pdf \
--output $(RENDERTMP)/glfs-pdf.xml \
stylesheets/lfs-xsl/profile.xsl \
$(RENDERTMP)/$(GLFSFULL)
@echo "Generating FO file..."
$(Q)xsltproc --nonet \
--stringparam rootid "$(ROOT_ID)" \
--output $(RENDERTMP)/glfs-pdf.fo \
stylesheets/glfs-pdf.xsl \
$(RENDERTMP)/glfs-pdf.xml
$(Q)sed -i -e 's/span="inherit"/span="all"/' $(RENDERTMP)/glfs-pdf.fo
$(Q)bash pdf-fixups.sh $(RENDERTMP)/glfs-pdf.fo
@echo "Generating PDF file..."
$(Q)mkdir -p $(RENDERTMP)/images
$(Q)cp -R images/* $(RENDERTMP)/images
$(Q)mkdir -p $(BASEDIR)
$(Q)fop -q $(RENDERTMP)/glfs-pdf.fo $(BASEDIR)/$(PDF_OUTPUT) 2>fop.log
@echo "$(BASEDIR)/$(PDF_OUTPUT) created"
@echo "fop.log created"
$(Q)rm fop.log
@echo "fop.log destroyed"
$(Q)rm -rf $(RENDERTMP)
nochunks: $(BASEDIR)/$(NOCHUNKS_OUTPUT)
$(BASEDIR)/$(NOCHUNKS_OUTPUT): $(RENDERTMP)/$(GLFSHTML) version
@echo "Generating non-chunked XHTML file..."
$(Q)xsltproc --nonet \
--stringparam rootid "$(ROOT_ID)" \
--output $(BASEDIR)/$(NOCHUNKS_OUTPUT) \
stylesheets/glfs-nochunks.xsl \
$(RENDERTMP)/$(GLFSHTML)
@echo "Running Tidy and obfuscate.sh on non-chunked XHTML..."
$(Q)tidy -config tidy.conf $(BASEDIR)/$(NOCHUNKS_OUTPUT) || true
$(Q)bash obfuscate.sh $(BASEDIR)/$(NOCHUNKS_OUTPUT)
$(Q)sed -i -e "1,20s@text/html@application/xhtml+xml@g" $(BASEDIR)/$(NOCHUNKS_OUTPUT)
@echo "Removing $(RENDERTMP)..."
$(Q)rm -rf $(RENDERTMP)
validate: $(RENDERTMP)/$(GLFSFULL)
$(RENDERTMP)/$(GLFSFULL): general.ent packages.ent $(ALLXML) $(ALLXSL) version
$(Q)[ -d $(RENDERTMP) ] || mkdir -p $(RENDERTMP)
@ -320,9 +260,8 @@ $(DUMPDIR): $(RENDERTMP)/$(GLFSFULL) version
$(Q)touch $(DUMPDIR)
$(Q)rm -rf $(RENDERTMP)
.PHONY: glfs all world html nochunks pdf clean validate profile-html \
wget-list test-links dump-commands bootscripts systemd-units version \
test-options
.PHONY: glfs all world html clean validate profile-html wget-list test-links \
dump-commands bootscripts systemd-units version test-options
version:
$(Q)REV=$(REV) STAB=$(STAB) ./git-version.sh

View File

@ -57,11 +57,3 @@ that are in that path.
Defaults can be changed in a file that isn't tracked (`local.mk`) by declaring
variables found in `Makefile` in `local.mk`, such as `REV` and `GLFS_THEME`.
This file must be created manually.
Makefile targets are: `pdf`, `nochunks`, and `validate`.
`pdf`: builds GLFS as a PDF file.
`nochunks`: builds GLFS in one huge file.
`validate`: does an extensive check for XML errors in the book.

View File

@ -1,19 +0,0 @@
#!/bin/bash
if [ $# -lt 1 ] ; then
echo "This script needs the location of the fo file to update"
exit 1
fi
FILE=$1
LINE=$( grep -n "DO NOT EDIT" $FILE | cut -f1 -d: )
LINE=$(( LINE - 1 ))
# Not needed
#sed -i -e "$LINE s/monospace/&\" font-size=\"9pt/" $FILE
sed -i -e "s/monospace/&\" font-size=\"9pt/g" $FILE
# Break a block of code at the right place
sed -i -e 's@gcc --version@<fo:block page-break-before="always"></fo:block>&@' $FILE

View File

@ -1,20 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml"
version="1.0">
<!-- LFS top-level no-chunk templates. -->
<xsl:import href="lfs-xsl/nochunks.xsl"/>
<!-- The LFS book type to be processed (lfs, blfs, clfs, or hlfs) -->
<xsl:param name="book-type">blfs</xsl:param>
<!-- Are sections enumerated? 1 = yes, 0 = no
Note: Activating this will increase a lot rendering time. -->
<xsl:param name="section.autolabel" select="0"/>
<!-- Do section labels include the component label? 1 = yes, 0 = no -->
<xsl:param name="section.label.includes.component.label" select="0"/>
</xsl:stylesheet>

View File

@ -1,20 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
version="1.0">
<!-- LFS top-level pdf templates. -->
<xsl:import href="lfs-xsl/pdf.xsl"/>
<!-- The LFS book type to be processed (lfs, blfs, clfs, or hlfs) -->
<xsl:param name="book-type">blfs</xsl:param>
<!-- Are sections enumerated? 1 = yes, 0 = no
Note: Activating this will increase a lot rendering time. -->
<xsl:param name="section.autolabel" select="0"/>
<!-- Do section labels include the component label? 1 = yes, 0 = no -->
<xsl:param name="section.label.includes.component.label" select="0"/>
</xsl:stylesheet>

View File

@ -1,635 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml"
version="1.0">
<!-- Stylesheet for non-chunked XHTML output
Replaces {docbook-xsl}/xhtml/profile-docbook.xsl -->
<!-- Upstream XHTML templates -->
<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl"/>
<!-- Including our others customized templates -->
<xsl:include href="common.xsl"/>
<xsl:include href="xhtml/lfs-index.xsl"/>
<xsl:include href="xhtml/lfs-mixed.xsl"/>
<xsl:include href="xhtml/lfs-sections.xsl"/>
<xsl:include href="xhtml/lfs-toc.xsl"/>
<xsl:include href="xhtml/lfs-xref.xsl"/>
<!-- Control generation of ToCs and LoTs -->
<xsl:param name="generate.toc">
book toc,title
preface nop
part nop
chapter nop
appendix nop
sect1 nop
sect2 nop
sect3 nop
sect4 nop
sect5 nop
section nop
</xsl:param>
<!-- How deep should recursive sections appear in the TOC? -->
<xsl:param name="toc.section.depth">1</xsl:param>
<!-- How maximaly deep should be each TOC? -->
<xsl:param name="toc.max.depth">3</xsl:param>
<!-- Dropping some unwanted style attributes -->
<xsl:param name="ulink.target" select="''"></xsl:param>
<xsl:param name="css.decoration" select="0"></xsl:param>
<!-- Don't use graphics in admonitions -->
<xsl:param name="admon.graphics" select="0"/>
<!-- Changing the admonitions output tagging:
Removed $admon.style support
Hardcoded $admon.textlabel feature -->
<!-- The original template is in {docbook-xsl}/xhtml/admon.xsl -->
<xsl:template name="nongraphical.admonition">
<div class="admon {name(.)}">
<h3>
<xsl:apply-templates select="." mode="object.title.markup"/>
</h3>
<xsl:apply-templates/>
</div>
</xsl:template>
<!-- sect2.titlepage:
Removed a lot of unneeded code.
Skip empty titles.
No label in preface (actually, skip the hardcoded dot). -->
<!-- The original template is in {docbook-xsl}/xhtml/titlepage.templates.xsl -->
<xsl:template name="sect2.titlepage">
<xsl:choose>
<xsl:when test="string-length(title) = 0"/>
<xsl:otherwise>
<h3 class="{name(.)}">
<xsl:if test="@id">
<a id="{@id}" name="{@id}"/>
</xsl:if>
<xsl:if test="not(ancestor::preface) and $section.autolabel != 0">
<xsl:apply-templates select="." mode="label.markup"/>
<xsl:text>. </xsl:text>
</xsl:if>
<xsl:value-of select="title"/>
</h3>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- The CSS Stylesheet:
Note: there is some diferences with lfs.css code releated
to h* values, admonitions and no navigational code. -->
<!-- The original template is in {docbook-xsl}/xhtml/docbook.xsl -->
<xsl:template name='user.head.content'>
<style type="text/css">
<xsl:text>
/* Global settings */
body {
font-family: verdana, tahoma, helvetica, arial, sans-serif;
text-align: left;
background: #fff;
color: #222;
margin: 1em;
padding: 0;
font-size: 1em;
line-height: 1.2em
}
/* Links */
a:link { color: #22b; }
a.ulink:link { font-weight: bold; color: #55f; }
a:visited { color: #7e4988 ! important; }
a:hover, a:focus { color: #d30e08 ! important; }
a:active { color: #6b77b1 ! important;}
/* Book titlepage */
.book {
margin: 0px auto;
padding: 0 1em;
}
/*.book h1,*/ .book .authorgroup, .book .copyright, .book .legalnotice .revhistory {
background: #f5f6f7;
margin: 0px auto;
padding: .1em 1em;
}
.book hr {
background: #dbddec;
height: .3em;
border: 0px;
margin: 0;
padding: 0;
}
div.dedication {
padding-left: 1em;
}
/* Sections */
div.sect1, div.appendix {
padding-left: .3em;
}
.package, .kernel, .installation, .commands, .testing, .configuration, .content {
padding: 0 .5em .2em 0;
margin: 0;
}
.lfs .package {
background: #f5f6f7;
border-bottom: 0.2em solid #dbddec;
padding-top: .1em;
margin-top: 0;
}
.lfs .configuration {
background: #fefefe;
border-top: 0.2em solid #dbddec;
}
.lfs .content {
background: #f5f6f7;
border-top: 0.2em solid #dbddec;
border-bottom: 0.2em solid #dbddec;
padding-bottom: .1em;
margin-bottom: 0;
}
/* Headers */
h1, h2, h3, h4, h5, h6, b, .strong {
color: #000;
font-weight: bold;
line-height: 1em;
}
h1 {
font-size: 173%;
text-align: center;
}
.book h1 {
margin: 0;
padding: 0.4em;
background: #f5f6f7;
border-top: .2em solid #dbddec;
border-bottom: .2em solid #dbddec;
text-align: center;
}
h1.title sup {
font-size: small;
}
h2 {
font-size: 144%;
}
.preface h2, .part h1, .chapter h2, .appendix h2, .index h1, .sect1 h2, .part h2 {
background: #f5f6f7;
border-top: .2em solid #dbddec;
border-bottom: .2em solid #dbddec;
margin-bottom: 1em;
margin-top: 1em;
padding: .4em;
text-align: center;
}
.sect1 h2, .appendix h2 {
margin-left: -.2em;
}
.wrap h2 {
background: #f5f6f7;
border-bottom: 0;
margin-top: 1em;
margin-bottom: 0;
padding-top: .4em;
}
.book h2.subtitle {
text-align: center;
background: #dbddec;
margin: 0;
padding: 0.2em;
}
h3 {
font-size: 120%;
}
.appendix h3 {
font-size: 133%;
margin-top: .8em;
margin-bottom: 0.2em;
}
h4 {
font-size: 110%;
}
.package h4, h5, h6 {
font-size: 100%;
font-style: italic;
}
/* TOC */
div.toc ul, div.index ul, div.navheader ul, div.navfooter ul {
list-style: none;
}
div.toc {
padding-left: 1em;
}
li.preface, .part li.appendix {
margin-left: 1em;
}
div.toc h3 {
margin: 1em 0 .3em 0;
}
li.appendix h3, li.glossary h3, li.index h3 {
margin: .5em
}
div.toc h4 {
margin: .6em 0 .2em 0;
}
li.chapter h4 a {
display: block;
margin-bottom: .4em
}
.dummy {
display: block;
font-weight: bold;
font-size: 110%;
margin: .6em 0 .2em 0;
}
/* Index */
.item {
float: left;
margin-right: 1em
}
.secitem {
font-weight: normal;
float: left;
margin-right: 1em
}
.indexref {
display: block;
}
.item + .indexref {
margin-left: 20em;
}
.secitem + .indexref {
margin-left: 19em;
}
/* Admonitions */
div.admon h3 {
padding-left: 2.5em;
padding-top: 1em;
}
div.admon p {
margin-left: .5em;
}
div.admon pre {
margin: 0.5em 3em;
}
div.note, div.tip {
background-color: #fffff6;
border: 2px solid #dbddec;
width: 90%;
margin: .5em auto;
}
div.important, div.warning, div.caution {
background-color: #fffff6;
border: medium solid #400;
width: 90%;
margin: .5em auto;
color: #600;
}
div.important h3, div.warning h3, div.caution h3 {
color: #900;
}
div.important em, div.warning em, div.caution em {
color: #000;
font-weight: bold;
}
/* table */
.table p.title {
text-align: center;
margin-top: 0;
margin-bottom: .3em;
}
.table table {
margin-left: auto;
margin-right: auto;
}
.table table th, .table table td {
padding: 0.2em 2em 0.2em 2em;
text-align: left;
}
.revhistory {
padding-left: 1em;
}
.revhistory th {
line-height: 2em;
text-align: left;
}
.revhistory td {
padding-right: 1em;
}
/* variablelist as table */
.variablelist table {
width: auto;
margin: 0 1em 0 1em;
}
.variablelist td {
vertical-align: top;
}
.variablelist td span, td p {
margin: 0.25em;
}
.variablelist td p {
margin-top: 0;
}
/* variablelist as list */
dl {
padding-left: 1em
}
dt {
font-weight: bold;
margin-left: 1em;
}
dd {
margin-bottom: .6em;
margin-left: 1em;
}
dd p {
margin-top: 0;
margin-bottom: 0;
padding-top: 0;
padding-bottom: 0;
}
div.materials dt {
display: list-item;
}
div.materials dd {
margin-left: 0;
padding-left: 0;
}
/* segmentedlist */
.appendix .segmentedlist {
padding-left: 1em;
}
.package .seg {
margin-bottom: 0em;
margin-top: 0em;
clear: left;
}
.content .seg {
margin-bottom: .4em;
margin-top: .4em;
clear: left;
}
.segtitle {
float: left;
}
.package .segbody, .appendix .segbody {
display: block;
padding-left: 14em;
}
.content .segbody {
display: block;
padding-left: 12em;
}
/* itemizedlist */
ul {
padding-left: 1em
}
.itemizedlist ul {
margin-left: 1em
}
.itemizedlist li ul {
margin-bottom: 1.2em;
}
.itemizedlist li ul li p {
margin-top: .5em;
margin-bottom: .5em;
}
.itemizedlist li ul li:first-child p:first-child {
margin-top: -.6em;
}
ul.compact {
list-style: none;
}
.blfs ul.compact {
list-style: disc;
}
ul.compact li {
margin: 0em;
padding: 0em;
}
ul.compact li p {
padding: 0.3em;
margin: 0em;
}
.blfs ul.compact li p {
background-color: #f0fff0;
}
/* orderedlist */
ol {
list-style: decimal;
}
ol ol {
list-style: lower-alpha;
}
ol ol ol {
list-style: lower-roman;
}
ol.compact li {
margin: 0em;
padding: 0em;
}
ol.compact li p {
padding: 0.3em;
margin: 0em;
}
/* Indented blocks */
p, blockquote {
padding-left: 1em;
padding-right: 1em;
}
/* Monospaced elements */
tt, code, kbd, pre, .command {
font-family: monospace;
}
.systemitem {
font-style: italic;
}
pre {
background-color: #e5e5e5;
border: 1px solid #050505;
padding: .5em 1em;
margin: 0 2em .5em 2em;
font-weight: bold;
}
pre.userinput {
color: #101310;
}
pre.root {
color: #101310;
border: 1px solid #11a;
}
pre.screen {
color: #000;
background-color: #e9e9e9;
font-weight: normal;
}
.literal, .prompt {
font-weight: normal;
}
/* Mixed tags */
p.usernotes {
margin-left: -1em;
font-size: small;
font-weight: bold;
font-style: italic;
}
.underlined {
text-decoration: underline;
}
/* Last edited info */
p.updated {
font-size: small;
font-weight: bold;
font-style: italic;
}
/* Special colored blocks */
/* OrangeRed4 */
.feature-ssp {
color: #8B2500;
}
/* RoyalBlue3 */
.feature-aslr {
color: #3A5FCD;
}
/* NavyBlue */
.feature-pax {
color: #000080;
}
/* VioletRed */
.feature-hardened_tmp {
color: #d02090;
}
/* PaleTurquoise4 */
.feature-warnings {
color: #668b8b;
}
/* RosyBrown */
.feature-misc {
color: #bc8f8f;
}
/* Sienna*/
.feature-blowfish {
color: #8E6B23
}
</xsl:text>
</style>
</xsl:template>
</xsl:stylesheet>

View File

@ -1,104 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
version="1.0">
<!-- Stylesheet for FO output used to generate PDF
Sets global params and include customization stylesheets. -->
<!-- Upstream FO templates. Profiled version is not supported by
xsltproc, thus pofiling must be done in two steps (see Makefile) -->
<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl"/>
<!-- Uncomment the next for debugging the raw FO code.
Note that FOP will complaints about a lot of paragraph overflows
due that verbatim output is also indented.
Remember to comment the "rm $(BASEDIR)/lfs-pdf.fo" in
the Makefile. -->
<!--<xsl:output encoding="UTF-8" indent="yes" />-->
<!-- Including our others customized templates. -->
<xsl:include href="common.xsl"/>
<xsl:include href="pdf/lfs-admon.xsl"/>
<xsl:include href="pdf/lfs-index.xsl"/>
<xsl:include href="pdf/lfs-lists.xsl"/>
<xsl:include href="pdf/lfs-mixed.xsl"/>
<xsl:include href="pdf/lfs-pagesetup.xsl"/>
<xsl:include href="pdf/lfs-xref.xsl"/>
<!-- Activating FOP-1 extensions. We use FOP-0.93 as the FO procesor. -->
<xsl:param name="fop1.extensions" select="1"/>
<!-- Desactivate draft mode at all. -->
<xsl:param name="draft.mode" select="'no'"/>
<!-- Paper size -->
<xsl:param name="paper.type" select="'USletter'"/>
<!-- Paper size required by the publisher
<xsl:param name="paper.type" select="'Customized'"/>
<xsl:param name="page.width">7.25in</xsl:param>
<xsl:param name="page.height">9.25in</xsl:param>
-->
<!-- Is the document to be printed double sided? 1 = yes, 0 = no -->
<!-- Change "double.sided" to "1" for published versions. -->
<xsl:param name="double.sided" select="0"/>
<!-- Hyphenate? -->
<xsl:param name="hyphenate">false</xsl:param>
<!-- Allow URLs to be automatically hyphenated.
We have expanded the support to several inline tags.
See pdf/lfs-mixed.xsl. The character in the
select attribute is a zero width space -->
<xsl:param name="ulink.hyphenate" select="'&#x200B;'"/>
<!-- List of characters to allow ulink URLs, and supported inline tags,
to be automatically hyphenated on.
Note: the / character is in the list but FOP-0.93 ignores it. -->
<xsl:param name="ulink.hyphenate.chars" select="'/._-'"/>
<!-- Specify the default text alignment. -->
<xsl:param name="alignment">justify</xsl:param>
<!-- Specifies the default point size for body text.
Used for titles size calculation. -->
<xsl:param name="body.font.master">9</xsl:param>
<!-- Specifies the default font size for body text. -->
<xsl:param name="body.font.size">12pt</xsl:param>
<!-- Control generation of ToCs and LoTs -->
<xsl:param name="generate.toc">
book toc,title
part nop
</xsl:param>
<!-- How deep should recursive sections appear in the TOC? -->
<xsl:param name="toc.section.depth">1</xsl:param>
<!-- Amount of indentation for TOC entries. -->
<xsl:param name="toc.indent.width" select="18"/>
<!-- Turns page numbers in xrefs on and off. -->
<xsl:param name="insert.xref.page.number">no</xsl:param>
<!-- Display URLs after ulinks? 1 = yes, 0 = no
Set to 0 to prevent duplicate e-mails in the Acknowledgments pages. -->
<xsl:param name="ulink.show" select="0"/>
<!-- Processing instruction for hard page breaks.
FOP-0.93 supports now @keep-*.*, @orphans, and @widows attributes,
that solves several page break issues.
It also supports the soft page break procesing instruction included
in the DocBook stylesheets.
But some times we may need hard page breaks for final book versions. -->
<!-- To know how to use all that page break features, see
http://www.sagehill.net/docbookxsl/PageBreaking.html -->
<xsl:template match="processing-instruction('hard-pagebreak')">
<fo:block break-before='page'/>
</xsl:template>
</xsl:stylesheet>

View File

@ -1,76 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
version="1.0">
<!-- This stylesheet controls how admonitions are displayed -->
<!-- Use graphics in admonitions? 1 = yes, 0 = no -->
<xsl:param name="admon.graphics" select="1"/>
<!-- Path to admonition graphics relative to index.xml -->
<xsl:param name="admon.graphics.path" select="'images/'"/>
<!-- Global admonitions properties -->
<xsl:attribute-set name="graphical.admonition.properties">
<xsl:attribute name="keep-together.within-column">
<xsl:variable name="keep.together">
<xsl:call-template name="pi.dbfo_keep-together"/>
</xsl:variable>
<xsl:choose>
<xsl:when test="$keep.together != ''">
<xsl:value-of select="$keep.together"/>
</xsl:when>
<xsl:otherwise>always</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:attribute name="space-before.optimum">0.6em</xsl:attribute>
<xsl:attribute name="space-before.minimum">0.4em</xsl:attribute>
<xsl:attribute name="space-before.maximum">0.8em</xsl:attribute>
<xsl:attribute name="space-after.optimum">0.6em</xsl:attribute>
<xsl:attribute name="space-after.minimum">0.4em</xsl:attribute>
<xsl:attribute name="space-after.maximum">0.8em</xsl:attribute>
<xsl:attribute name="padding-start">5pt</xsl:attribute>
<xsl:attribute name="padding-top">5pt</xsl:attribute>
<xsl:attribute name="padding-bottom">5pt</xsl:attribute>
<xsl:attribute name="border-style">solid</xsl:attribute>
<xsl:attribute name="border-width">0.5pt</xsl:attribute>
<xsl:attribute name="background-color">#FFFFE6</xsl:attribute>
<xsl:attribute name="border-color">
<xsl:choose>
<xsl:when test="self::note | self::tip">#E0E0E0</xsl:when>
<xsl:otherwise>#DCC</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:attribute-set>
<!-- Properties for admonitions titles -->
<xsl:attribute-set name="admonition.title.properties">
<xsl:attribute name="font-size">14pt</xsl:attribute>
<xsl:attribute name="font-weight">bold</xsl:attribute>
<xsl:attribute name="hyphenate">false</xsl:attribute>
<xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
<xsl:attribute name="color">
<xsl:choose>
<xsl:when test="ancestor-or-self::important | ancestor-or-self::warning
| ancestor-or-self::caution">#500</xsl:when>
<xsl:otherwise>#000</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:attribute-set>
<!-- Properties for admonitions text -->
<xsl:attribute-set name="admonition.properties">
<xsl:attribute name="margin-right">5pt</xsl:attribute>
</xsl:attribute-set>
<!-- admon.graphic.width:
Making the graphic smaller. -->
<!-- The original template is in {docbook-xsl}/fo/admon.xsl -->
<xsl:template match="*" mode="admon.graphic.width">
<xsl:param name="node" select="."/>
<xsl:text>24pt</xsl:text>
</xsl:template>
</xsl:stylesheet>

View File

@ -1,135 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE xsl:stylesheet [
<!ENTITY lowercase "'AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ'">
<!ENTITY uppercase "'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ'">
<!ENTITY primary 'normalize-space(concat(primary/@sortas, primary[not(@sortas) or @sortas = ""]))'>
<!ENTITY scope "count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))">
]>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
version="1.0">
<!-- This stylesheet controls how the Index is generated.
Entities comes from {docbook-xsl}/common/entities.ent -->
<!-- Override for punctuation separating an index term from its list
of page references. -->
<xsl:param name="index.term.separator" select="': '"></xsl:param>
<!-- Divisions title properties. -->
<xsl:attribute-set name="index.div.title.properties">
<xsl:attribute name="margin-left">0pt</xsl:attribute>
<xsl:attribute name="font-size">14.4pt</xsl:attribute>
<xsl:attribute name="font-family">
<xsl:value-of select="$title.fontset"/>
</xsl:attribute>
<xsl:attribute name="font-weight">bold</xsl:attribute>
<xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
<xsl:attribute name="space-before.optimum">1em</xsl:attribute>
<xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
<xsl:attribute name="space-before.maximum">1.2em</xsl:attribute>
<xsl:attribute name="space-after.optimum">0.5em</xsl:attribute>
<xsl:attribute name="space-after.minimum">0.3em</xsl:attribute>
<xsl:attribute name="space-after.maximum">0.7em</xsl:attribute>
<xsl:attribute name="start-indent">0pt</xsl:attribute>
</xsl:attribute-set>
<!-- Properties applied to the block containing entries in an Index. -->
<xsl:attribute-set name="index.entry.properties">
<xsl:attribute name="start-indent">0.5pc</xsl:attribute>
</xsl:attribute-set>
<!-- Divisions:
Translate alphabetical divisions titles to by-type titles. -->
<!-- The original template is in {docbook-xsl}/fo/autoidx.xsl -->
<xsl:template match="indexterm" mode="index-div-basic">
<xsl:param name="scope" select="."/>
<xsl:param name="role" select="''"/>
<xsl:param name="type" select="''"/>
<xsl:variable name="key"
select="translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;)"/>
<xsl:variable name="divtitle" select="translate($key, &lowercase;, &uppercase;)"/>
<xsl:if test="key('letter', $key)[&scope;]
[count(.|key('primary', &primary;)[&scope;][1]) = 1]">
<fo:block>
<xsl:if test="contains(concat(&lowercase;, &uppercase;), $key)">
<xsl:call-template name="indexdiv.title">
<xsl:with-param name="titlecontent">
<xsl:choose>
<xsl:when test="$divtitle = 'A'">
<xsl:call-template name="gentext">
<xsl:with-param name="key">Packages</xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:when test="$divtitle = 'B'">
<xsl:call-template name="gentext">
<xsl:with-param name="key">Programs</xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:when test="$divtitle = 'C'">
<xsl:call-template name="gentext">
<xsl:with-param name="key">Libraries</xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:when test="$divtitle = 'D'">
<xsl:choose>
<xsl:when test="$book-type = 'blfs'">
<xsl:call-template name="gentext">
<xsl:with-param name="key">Kernel Configuration</xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="gentext">
<xsl:with-param name="key">Scripts</xsl:with-param>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="$divtitle = 'E'">
<xsl:choose>
<xsl:when test="$book-type = 'blfs'">
<xsl:call-template name="gentext">
<xsl:with-param name="key">Configuration Files</xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="gentext">
<xsl:with-param name="key">Others</xsl:with-param>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="$divtitle = 'F'">
<xsl:call-template name="gentext">
<xsl:with-param name="key">Bootscripts</xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:when test="$divtitle = 'G'">
<xsl:call-template name="gentext">
<xsl:with-param name="key">Others</xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$divtitle"/>
</xsl:otherwise>
</xsl:choose>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
<fo:block xsl:use-attribute-sets="index.entry.properties">
<xsl:apply-templates select="key('letter', $key)[&scope;]
[count(.|key('primary', &primary;)[&scope;][1])=1]"
mode="index-primary">
<xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
<xsl:with-param name="scope" select="$scope"/>
<xsl:with-param name="role" select="$role"/>
<xsl:with-param name="type" select="$type"/>
</xsl:apply-templates>
</fo:block>
</fo:block>
</xsl:if>
</xsl:template>
</xsl:stylesheet>

View File

@ -1,169 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
version="1.0">
<!-- This stylesheet controls how list are generated. -->
<!-- What spacing do you want before and after lists? -->
<xsl:attribute-set name="list.block.spacing">
<xsl:attribute name="space-before.optimum">0.6em</xsl:attribute>
<xsl:attribute name="space-before.minimum">0.4em</xsl:attribute>
<xsl:attribute name="space-before.maximum">0.8em</xsl:attribute>
<xsl:attribute name="space-after.optimum">0.6em</xsl:attribute>
<xsl:attribute name="space-after.minimum">0.4em</xsl:attribute>
<xsl:attribute name="space-after.maximum">0.8em</xsl:attribute>
</xsl:attribute-set>
<!-- What spacing do you want between list items? -->
<xsl:attribute-set name="list.item.spacing">
<xsl:attribute name="space-before.optimum">0.4em</xsl:attribute>
<xsl:attribute name="space-before.minimum">0.2em</xsl:attribute>
<xsl:attribute name="space-before.maximum">0.6em</xsl:attribute>
</xsl:attribute-set>
<!-- Properties that apply to each list-block generated by itemizedlist. -->
<xsl:attribute-set name="itemizedlist.properties"
use-attribute-sets="list.block.properties">
<xsl:attribute name="text-align">left</xsl:attribute>
</xsl:attribute-set>
<!-- Format variablelists lists as blocks? 1 = yes, 0 = no
Default variablelist format. We override it when necessary
using the list-presentation processing instruction. -->
<xsl:param name="variablelist.as.blocks" select="1"/>
<!-- Specifies the longest term in variablelists.
Used when list-presentation = list -->
<xsl:param name="variablelist.max.termlength">35</xsl:param>
<!-- varlistentry mode block:
Addibg a bullet, left alignament, and @kepp-*.* attributes
for packages and paches list. -->
<!-- The original template is in {docbook-xsl}/fo/list.xsl -->
<xsl:template match="varlistentry" mode="vl.as.blocks">
<xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
<xsl:choose>
<xsl:when test="ancestor::variablelist/@role = 'materials'">
<fo:block id="{$id}" xsl:use-attribute-sets="list.item.spacing"
keep-together.within-column="always" font-weight="bold"
keep-with-next.within-column="always" text-align="left">
<xsl:text></xsl:text>
<xsl:apply-templates select="term"/>
</fo:block>
<fo:block text-align="left"
keep-together.within-column="always"
keep-with-previous.within-column="always">
<xsl:apply-templates select="listitem"/>
</fo:block>
</xsl:when>
<xsl:otherwise>
<fo:block id="{$id}" xsl:use-attribute-sets="list.item.spacing"
keep-together.within-column="always"
keep-with-next.within-column="always" margin-left="1em">
<xsl:apply-templates select="term"/>
</fo:block>
<fo:block margin-left="2em">
<xsl:apply-templates select="listitem"/>
</fo:block>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- segmentedlist:
Making it an actual FO list to can indent items.
Adjust vertical space. -->
<!-- The original template is in {docbook-xsl}/fo/list.xsl -->
<xsl:template match="segmentedlist">
<xsl:variable name="id">
<xsl:call-template name="object.id"/>
</xsl:variable>
<fo:list-block id="{$id}" provisional-distance-between-starts="12em"
provisional-label-separation="1em"
keep-together.within-column="always">
<xsl:choose>
<xsl:when test="ancestor::appendix[@id='appendixc']">
<xsl:attribute name="space-before.optimum">0.2em</xsl:attribute>
<xsl:attribute name="space-before.minimum">0em</xsl:attribute>
<xsl:attribute name="space-before.maximum">0.4em</xsl:attribute>
<xsl:attribute name="space-after.optimum">0.2em</xsl:attribute>
<xsl:attribute name="space-after.minimum">0em</xsl:attribute>
<xsl:attribute name="space-after.maximum">0.4em</xsl:attribute>
<xsl:attribute name="keep-with-previous.within-column">always</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="space-before.optimum">0.4em</xsl:attribute>
<xsl:attribute name="space-before.minimum">0.2em</xsl:attribute>
<xsl:attribute name="space-before.maximum">0.6em</xsl:attribute>
<xsl:attribute name="space-after.optimum">0.4em</xsl:attribute>
<xsl:attribute name="space-after.minimum">0.2em</xsl:attribute>
<xsl:attribute name="space-after.maximum">0.6em</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<xsl:apply-templates select="seglistitem/seg"/>
</fo:list-block>
</xsl:template>
<!-- seg:
Self-made template based on the original seg template
found in {docbook-xsl}/fo/list.xsl
Making segmentedlist an actual FO list to can indent items. -->
<xsl:template match="seglistitem/seg">
<xsl:variable name="id">
<xsl:call-template name="object.id"/>
</xsl:variable>
<xsl:variable name="segnum" select="count(preceding-sibling::seg)+1"/>
<xsl:variable name="seglist" select="ancestor::segmentedlist"/>
<xsl:variable name="segtitles" select="$seglist/segtitle"/>
<fo:list-item xsl:use-attribute-sets="compact.list.item.spacing">
<fo:list-item-label end-indent="label-end()" text-align="start">
<fo:block>
<fo:inline font-weight="bold">
<xsl:apply-templates select="$segtitles[$segnum=position()]"
mode="segtitle-in-seg"/>
<xsl:text>:</xsl:text>
</fo:inline>
</fo:block>
</fo:list-item-label>
<fo:list-item-body start-indent="body-start()">
<fo:block id="{$id}">
<xsl:apply-templates/>
</fo:block>
</fo:list-item-body>
</fo:list-item>
</xsl:template>
<!-- simplelist:
Self-made template. Wrap it into a fo:block and process member childs.
If @type is specified, the original templates will be used.
NOTE: when using type='horiz' or type='vert', FOP-0.93 will complaints
about not supported table-layout="auto" -->
<xsl:template match="simplelist">
<fo:block xsl:use-attribute-sets="simplelist.properties">
<xsl:apply-templates mode="condensed"/>
</fo:block>
</xsl:template>
<!-- member:
Self-made template to wrap it into a fo:block using customized
properties. -->
<xsl:template match="member" mode="condensed">
<fo:block xsl:use-attribute-sets="simplelist.properties">
<xsl:call-template name="simple.xlink">
<xsl:with-param name="content">
<xsl:apply-templates/>
</xsl:with-param>
</xsl:call-template>
</fo:block>
</xsl:template>
<!-- Properties associated with our simplelist format. -->
<xsl:attribute-set name="simplelist.properties">
<xsl:attribute name="keep-with-previous.within-column">always</xsl:attribute>
<xsl:attribute name="space-before.optimum">0em</xsl:attribute>
<xsl:attribute name="space-before.minimum">0em</xsl:attribute>
<xsl:attribute name="space-before.maximum">0.2em</xsl:attribute>
</xsl:attribute-set>
</xsl:stylesheet>

View File

@ -1,355 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
version="1.0">
<!-- This stylesheet contains misc params, attribute sets and templates
for output formating.
This file is for that templates that don't fit in other files. -->
<!-- What space do you want between normal paragraphs. -->
<xsl:attribute-set name="normal.para.spacing">
<xsl:attribute name="space-before.optimum">0.6em</xsl:attribute>
<xsl:attribute name="space-before.minimum">0.4em</xsl:attribute>
<xsl:attribute name="space-before.maximum">0.8em</xsl:attribute>
<xsl:attribute name="orphans">3</xsl:attribute>
<xsl:attribute name="widows">3</xsl:attribute>
</xsl:attribute-set>
<!-- Properties associated with verbatim text. -->
<xsl:attribute-set name="verbatim.properties">
<xsl:attribute name="keep-with-previous.within-column">always</xsl:attribute>
<xsl:attribute name="space-before.optimum">0.6em</xsl:attribute>
<xsl:attribute name="space-before.minimum">0.4em</xsl:attribute>
<xsl:attribute name="space-before.maximum">0.8em</xsl:attribute>
<xsl:attribute name="space-after.optimum">0.6em</xsl:attribute>
<xsl:attribute name="space-after.minimum">0.4em</xsl:attribute>
<xsl:attribute name="space-after.maximum">0.8em</xsl:attribute>
<xsl:attribute name="hyphenate">false</xsl:attribute>
<xsl:attribute name="wrap-option">no-wrap</xsl:attribute>
<xsl:attribute name="white-space-collapse">false</xsl:attribute>
<xsl:attribute name="white-space-treatment">preserve</xsl:attribute>
<xsl:attribute name="linefeed-treatment">preserve</xsl:attribute>
<xsl:attribute name="text-align">start</xsl:attribute>
</xsl:attribute-set>
<!-- Should verbatim environments be shaded? 1 =yes, 0 = no -->
<xsl:param name="shade.verbatim" select="1"/>
<!-- Properties that specify the style of shaded verbatim listings -->
<xsl:attribute-set name="shade.verbatim.style">
<xsl:attribute name="background-color">#E9E9E9</xsl:attribute>
<xsl:attribute name="border-style">solid</xsl:attribute>
<xsl:attribute name="border-width">0.5pt</xsl:attribute>
<xsl:attribute name="border-color">#888</xsl:attribute>
<xsl:attribute name="padding-start">5pt</xsl:attribute>
<xsl:attribute name="padding-top">2pt</xsl:attribute>
<xsl:attribute name="padding-bottom">2pt</xsl:attribute>
</xsl:attribute-set>
<!-- para:
Skip empty "Home page" in packages.xml.
Allow forced line breaks inside paragraphs emulating literallayout.
Removed vertical space in variablelist. -->
<!-- The original template is in {docbook-xsl}/fo/block.xsl -->
<xsl:template match="para">
<xsl:choose>
<xsl:when test="child::ulink[@url=' ']"/>
<xsl:when test="./@remap='verbatim'">
<fo:block xsl:use-attribute-sets="verbatim.properties">
<xsl:call-template name="anchor"/>
<xsl:apply-templates/>
</fo:block>
</xsl:when>
<xsl:when test="ancestor::variablelist">
<fo:block>
<xsl:attribute name="space-before.optimum">0.1em</xsl:attribute>
<xsl:attribute name="space-before.minimum">0em</xsl:attribute>
<xsl:attribute name="space-before.maximum">0.2em</xsl:attribute>
<xsl:call-template name="anchor"/>
<xsl:apply-templates/>
</fo:block>
</xsl:when>
<xsl:otherwise>
<fo:block xsl:use-attribute-sets="normal.para.spacing">
<xsl:call-template name="anchor"/>
<xsl:apply-templates/>
</fo:block>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- screen, literallayout:
Self-made template that creates a fo:block wrapper with keep-together
processing instruction support around the output generated by
original screen templates. -->
<xsl:template match="screen|literallayout">
<xsl:variable name="keep.together">
<xsl:call-template name="pi.dbfo_keep-together"/>
</xsl:variable>
<fo:block>
<xsl:attribute name="keep-together.within-column">
<xsl:choose>
<xsl:when test="$keep.together != ''">
<xsl:value-of select="$keep.together"/>
</xsl:when>
<xsl:otherwise>always</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:apply-imports/>
</fo:block>
</xsl:template>
<!-- literal:
Be sure that literal will use allways normal font weight. -->
<!-- The original template is in {docbook-xsl}/fo/inline.xsl -->
<xsl:template match="literal">
<fo:inline font-weight="normal">
<xsl:call-template name="inline.monoseq"/>
</fo:inline>
</xsl:template>
<!-- inline.monoseq:
Added hyphenate-url support to classname, exceptionname, interfacename,
methodname, computeroutput, constant, envar, filename, function, code,
literal, option, promt, systemitem, varname, sgmltag, tag, and uri -->
<!-- The original template is in {docbook-xsl}/fo/inline.xsl -->
<xsl:template name="inline.monoseq">
<xsl:param name="content">
<xsl:call-template name="simple.xlink">
<xsl:with-param name="content">
<xsl:choose>
<xsl:when test="ancestor::para and not(ancestor::screen)
and not(descendant::ulink)">
<xsl:call-template name="hyphenate-url">
<xsl:with-param name="url">
<xsl:apply-templates/>
</xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:with-param>
</xsl:call-template>
</xsl:param>
<fo:inline xsl:use-attribute-sets="monospace.properties">
<xsl:if test="@dir">
<xsl:attribute name="direction">
<xsl:choose>
<xsl:when test="@dir = 'ltr' or @dir = 'lro'">ltr</xsl:when>
<xsl:otherwise>rtl</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:if>
<xsl:copy-of select="$content"/>
</fo:inline>
</xsl:template>
<!-- inline.italicmonoseq:
Added hyphenate-url support to parameter, replaceable, structfield,
function/parameter, and function/replaceable -->
<!-- The original template is in {docbook-xsl}/fo/inline.xsl -->
<xsl:template name="inline.italicmonoseq">
<xsl:param name="content">
<xsl:call-template name="simple.xlink">
<xsl:with-param name="content">
<xsl:choose>
<xsl:when test="ancestor::para and not(ancestor::screen)
and not(descendant::ulink)">
<xsl:call-template name="hyphenate-url">
<xsl:with-param name="url">
<xsl:apply-templates/>
</xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:with-param>
</xsl:call-template>
</xsl:param>
<fo:inline font-style="italic" xsl:use-attribute-sets="monospace.properties">
<xsl:call-template name="anchor"/>
<xsl:if test="@dir">
<xsl:attribute name="direction">
<xsl:choose>
<xsl:when test="@dir = 'ltr' or @dir = 'lro'">ltr</xsl:when>
<xsl:otherwise>rtl</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:if>
<xsl:copy-of select="$content"/>
</fo:inline>
</xsl:template>
<!-- Show external URLs in italic font -->
<xsl:attribute-set name="xref.properties">
<xsl:attribute name="font-style">
<xsl:choose>
<xsl:when test="self::ulink">italic</xsl:when>
<xsl:otherwise>inherit</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:attribute-set>
<!-- Center table title. -->
<xsl:attribute-set name="formal.title.properties">
<xsl:attribute name="text-align">
<xsl:choose>
<xsl:when test="local-name(.) = 'table'">center</xsl:when>
<xsl:otherwise>left</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:attribute-set>
<!-- table.layout:
We want all tables centered. Based on a hack posted
by Ellen Juhlin on docbook-apps mailing list. -->
<!-- The original template is in {docbook-xsl}/fo/table.xsl -->
<xsl:template name="table.layout">
<xsl:param name="table.content" select="NOTANODE"/>
<fo:table table-layout="fixed" width="100%">
<fo:table-column column-width ="proportional-column-width(1)"/>
<fo:table-column>
<!-- Set center column width equal to table width -->
<xsl:attribute name="column-width">
<xsl:call-template name="table.width"/>
</xsl:attribute>
</fo:table-column>
<fo:table-column column-width ="proportional-column-width(1)"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell column-number="2">
<xsl:copy-of select="$table.content"/>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</xsl:template>
<!-- Revision History -->
<!-- revhistory titlepage:
Self-made template to add missing support on bookinfo. -->
<xsl:template match="revhistory" mode="book.titlepage.verso.auto.mode">
<fo:block space-before.optimum="2em"
space-before.minimum="1.5em"
space-before.maximum="2.5em">
<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
</fo:block>
</xsl:template>
<!-- revhitory title properties -->
<xsl:attribute-set name="revhistory.title.properties">
<xsl:attribute name="text-align">center</xsl:attribute>
<xsl:attribute name="font-weight">bold</xsl:attribute>
</xsl:attribute-set>
<!-- revhistory/revision mode titlepage.mode:
Removed authorinitials | author support placing
revremark | revdescription instead on that table-cell. -->
<!-- The original template is in {docbook-xsl}/fo/titlepage.xsl -->
<xsl:template match="revhistory/revision" mode="titlepage.mode">
<xsl:variable name="revnumber" select="revnumber"/>
<xsl:variable name="revdate" select="date"/>
<xsl:variable name="revremark" select="revremark|revdescription"/>
<fo:table-row>
<fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties">
<fo:block>
<xsl:if test="$revnumber">
<xsl:call-template name="gentext">
<xsl:with-param name="key" select="'Revision'"/>
</xsl:call-template>
<xsl:call-template name="gentext.space"/>
<xsl:apply-templates select="$revnumber[1]" mode="titlepage.mode"/>
</xsl:if>
</fo:block>
</fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties">
<fo:block>
<xsl:apply-templates select="$revdate[1]"/>
</fo:block>
</fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties">
<fo:block>
<xsl:apply-templates select="$revremark[1]"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:template>
<!-- Dummy sect1 -->
<!-- sect1:
Self-made template to skip dummy sect1 pages generation. -->
<xsl:template match="sect1">
<xsl:choose>
<xsl:when test="@role = 'dummy'"/>
<xsl:otherwise>
<xsl:apply-imports/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- sect1 mode fop1.outline:
Self-made template to skip dummy sect1 bookmarks generation. -->
<xsl:template match="sect1" mode="fop1.outline">
<xsl:choose>
<xsl:when test="@role = 'dummy'"/>
<xsl:otherwise>
<xsl:apply-imports/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- toc.line:
For dummy sect1 output only the title. -->
<!-- The original template is in {docbook-xsl}/fo/autotoc.xsl -->
<xsl:template name="toc.line">
<xsl:param name="toc-context" select="NOTANODE"/>
<xsl:variable name="id">
<xsl:call-template name="object.id"/>
</xsl:variable>
<xsl:variable name="label">
<xsl:apply-templates select="." mode="label.markup"/>
</xsl:variable>
<xsl:choose>
<xsl:when test="@role = 'dummy'">
<fo:block text-align="left">
<xsl:apply-templates select="." mode="titleabbrev.markup"/>
</fo:block>
</xsl:when>
<xsl:otherwise>
<fo:block xsl:use-attribute-sets="toc.line.properties">
<fo:inline keep-with-next.within-line="always">
<fo:basic-link internal-destination="{$id}">
<xsl:if test="$label != ''">
<xsl:copy-of select="$label"/>
<xsl:value-of select="$autotoc.label.separator"/>
</xsl:if>
<xsl:apply-templates select="." mode="titleabbrev.markup"/>
</fo:basic-link>
</fo:inline>
<fo:inline keep-together.within-line="always">
<xsl:text> </xsl:text>
<fo:leader leader-pattern="dots"
leader-pattern-width="3pt"
leader-alignment="reference-area"
keep-with-next.within-line="always"/>
<xsl:text> </xsl:text>
<fo:basic-link internal-destination="{$id}">
<fo:page-number-citation ref-id="{$id}"/>
</fo:basic-link>
</fo:inline>
</fo:block>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>

View File

@ -1,244 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
version="1.0">
<!-- This stylesheet controls page margins, sections page break,
header content and titles size. -->
<!-- The inner page margin. -->
<xsl:param name="page.margin.inner" select="'0.32in'"/>
<!-- The outer page margin. -->
<xsl:param name="page.margin.outer" select="'0.32in'"/>
<!-- The bottom margin of the page. -->
<xsl:param name="page.margin.bottom" select="'0.35in'"/>
<!-- The top margin of the page. -->
<xsl:param name="page.margin.top" select="'0.35in'"/>
<!-- The bottom margin of the body text. -->
<xsl:param name="body.margin.bottom" select="'0.4in'"/>
<!-- The top margin of the body text. -->
<xsl:param name="body.margin.top" select="'0.4in'"/>
<!-- Specifies the height of the header. -->
<xsl:param name="region.before.extent" select="'0.25in'"/>
<!-- Specifies the height of the footer. -->
<xsl:param name="region.after.extent" select="'0.25in'"/>
<!-- The start-indent for the body text. -->
<xsl:param name="body.start.indent" select="'0pc'"/>
<!-- Adjust the left margin for titles. -->
<xsl:param name="title.margin.left">-0.8pc</xsl:param>
<!-- Default table width on tables that do not specify an alternate
width using the dbfo processing instruction.
This value is used also on bookinfo/revhistory table. -->
<xsl:param name="default.table.width" select="'70%'"/>
<!-- Properties for component titles -->
<xsl:attribute-set name="component.title.properties">
<xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
<xsl:attribute name="space-before.optimum">
<xsl:value-of select="concat($body.font.master, 'pt')"/>
</xsl:attribute>
<xsl:attribute name="space-before.minimum">
<xsl:value-of select="concat($body.font.master, 'pt * 0.8')"/>
</xsl:attribute>
<xsl:attribute name="space-before.maximum">
<xsl:value-of select="concat($body.font.master, 'pt * 1.2')"/>
</xsl:attribute>
<xsl:attribute name="hyphenate">false</xsl:attribute>
<xsl:attribute name="text-align">
<xsl:choose>
<xsl:when test="((parent::article | parent::articleinfo |
parent::info/parent::article)
and not(ancestor::book) and not(self::bibliography))
or (parent::slides | parent::slidesinfo)
or self::index">center</xsl:when>
<xsl:otherwise>left</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:attribute name="start-indent">
<xsl:value-of select="$title.margin.left"/>
</xsl:attribute>
</xsl:attribute-set>
<!-- Rule under headers? 1 =yes, 0 = no -->
<xsl:param name="header.rule" select="0"/>
<!-- Rule over footers? 1 =yes, 0 = no -->
<xsl:param name="footer.rule" select="0"></xsl:param>
<!-- Control depth of sections shown in running headers or footers.
Be sure that no unneeded fo:marker are generated. -->
<xsl:param name="marker.section.level" select="-1"></xsl:param>
<!-- Force package's sect1 onto a new page -->
<xsl:attribute-set name="section.level1.properties">
<xsl:attribute name="break-before">
<xsl:choose>
<!--<xsl:when test="not(. = //*/sect1[1])">
<xsl:text>page</xsl:text>
</xsl:when>-->
<xsl:when test="preceding-sibling::sect1[position()=1]/sect2/@role='package'
or self::sect1/sect2/@role='package'">page</xsl:when>
<xsl:otherwise>
<xsl:text>auto</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:attribute-set>
<!-- part/partintro:
Be sure that partintro is on a new page. -->
<!-- The original template is in {docbook-xsl}/fo/divisions.xsl -->
<xsl:template match="part/partintro">
<xsl:apply-templates select=".." mode="part.titlepage.mode">
<xsl:with-param name="additional.content">
<fo:block break-before="page"/>
<xsl:if test="title">
<xsl:call-template name="partintro.titlepage"/>
</xsl:if>
<xsl:apply-templates/>
</xsl:with-param>
</xsl:apply-templates>
<xsl:call-template name="generate.part.toc">
<xsl:with-param name="part" select=".."/>
</xsl:call-template>
</xsl:template>
<!-- book title:
Centered the title and removed unused code.
Removed book.titlepage.separator. -->
<!-- The original template is in {docbook-xsl}/fo/titlepage.templates.xsl -->
<xsl:template name="book.titlepage">
<fo:block margin-top="3in">
<fo:block>
<xsl:call-template name="book.titlepage.before.recto"/>
<xsl:call-template name="book.titlepage.recto"/>
</fo:block>
<fo:block>
<xsl:call-template name="book.titlepage.before.verso"/>
<xsl:call-template name="book.titlepage.verso"/>
</fo:block>
</fo:block>
</xsl:template>
<!-- book titlepage verso:
Added missing bibliosource and revhistory support.
Removed unused code. -->
<!-- The original template is in {docbook-xsl}/fo/titlepage.templates.xsl -->
<xsl:template name="book.titlepage.verso">
<xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/title"/>
<xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/corpauthor"/>
<xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/authorgroup"/>
<xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/author"/>
<xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/othercredit"/>
<xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/releaseinfo"/>
<xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/pubdate"/>
<xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/copyright"/>
<xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/bibliosource"/>
<xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/abstract"/>
<xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/revhistory"/>
<xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/legalnotice"/>
</xsl:template>
<!-- bibliosource:
Self-made template to handle bibliosource when inside bookinfo. -->
<xsl:template match="bibliosource" mode="book.titlepage.verso.auto.mode">
<fo:block font-size="8pt">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<!-- part title:
Centered the title and removed unused code. -->
<!-- The original template is in {docbook-xsl}/fo/titlepage.templates.xsl -->
<xsl:template name="part.titlepage">
<fo:block>
<fo:block margin-top="3.5in">
<xsl:call-template name="part.titlepage.before.recto"/>
<xsl:call-template name="part.titlepage.recto"/>
</fo:block>
<fo:block>
<xsl:call-template name="part.titlepage.before.verso"/>
<xsl:call-template name="part.titlepage.verso"/>
</fo:block>
<xsl:call-template name="part.titlepage.separator"/>
</fo:block>
</xsl:template>
<!-- chapter title:
Small font size and left alignament. -->
<!-- The original template is in {docbook-xsl}/fo/titlepage.templates.xsl -->
<xsl:template match="title" mode="chapter.titlepage.recto.auto.mode">
<fo:block xsl:use-attribute-sets="chapter.titlepage.recto.style"
font-size="21pt" font-weight="bold" text-align="left">
<xsl:call-template name="component.title">
<xsl:with-param name="node" select="ancestor-or-self::chapter[1]"/>
</xsl:call-template>
</fo:block>
</xsl:template>
<!-- sect2 title:
Skip sect2.titlepage run when title is empty.
Removed unused code. -->
<!-- The original template is in {docbook-xsl}/fo/sections.xsl -->
<xsl:template match="sect2">
<xsl:variable name="id">
<xsl:call-template name="object.id"/>
</xsl:variable>
<fo:block xsl:use-attribute-sets="section.level2.properties">
<xsl:attribute name="id">
<xsl:value-of select="$id"/>
</xsl:attribute>
<xsl:if test="not(string-length(title)=0)">
<xsl:call-template name="sect2.titlepage"/>
</xsl:if>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<!-- header.table:
Re-made template to not generate a fo:table in the header,
allowing a more simple header.content customization. -->
<!-- The original template is in {docbook-xsl}/fo/pagesetup.xsl -->
<xsl:template name="header.table">
<xsl:param name="sequence" select="''"/>
<xsl:param name="gentext-key" select="''"/>
<xsl:choose>
<xsl:when test="$gentext-key = 'book' or $sequence = 'blank'"/>
<xsl:otherwise>
<xsl:call-template name="header.content">
<xsl:with-param name="sequence" select="$sequence"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- header.content
Re-made template to show the book title and version on all pages. -->
<!-- The original template is in {docbook-xsl}/fo/pagesetup.xsl -->
<xsl:template name="header.content">
<xsl:param name="sequence" select="''"/>
<fo:block>
<xsl:attribute name="text-align">
<xsl:choose>
<xsl:when test="$sequence = 'first' or $sequence = 'odd'">right</xsl:when>
<xsl:otherwise>left</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:value-of select="/book/bookinfo/title"/>
<xsl:text> - </xsl:text>
<xsl:value-of select="/book/bookinfo/subtitle"/>
</fo:block>
</xsl:template>
</xsl:stylesheet>

View File

@ -1,152 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
version="1.0">
<!-- This stylesheet fixes English punctuation in xref links
(as was requested by the publisher) via adding @role propagation
in xref tags.
This hack may not work with xref flavours not used in the book.
For other languages, just remove the xref @role attributes
in the book XML sources and/or comment-out the inclusion of
this file in lfs-pdf.xsl -->
<!-- xref:
Added role variable and use it when calling mode xref-to.
Also remove code for xlink:href attribute in xref elements,
since we don't use it.-->
<!-- The original template is in {docbook-xsl}/fo/xref.xsl -->
<xsl:template match="xref" name="xref">
<xsl:param name="linkend.targets" select="key('id',@linkend)"/>
<xsl:param name="target" select="$linkend.targets[1]"/>
<xsl:param name="refelem" select="local-name($target)"/>
<!-- Added role variable -->
<xsl:variable name="role" select="@role"/>
<xsl:variable name="xrefstyle">
<xsl:choose>
<xsl:when test="@role and not(@xrefstyle)
and $use.role.as.xrefstyle != 0">
<xsl:value-of select="@role"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@xrefstyle"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="content">
<fo:inline xsl:use-attribute-sets="xref.properties">
<xsl:choose>
<xsl:when test="@endterm">
<xsl:variable name="etargets" select="key('id',@endterm)"/>
<xsl:variable name="etarget" select="$etargets[1]"/>
<xsl:choose>
<xsl:when test="count($etarget) = 0">
<xsl:message>
<xsl:value-of select="count($etargets)"/>
<xsl:text>Endterm points to nonexistent ID: </xsl:text>
<xsl:value-of select="@endterm"/>
</xsl:message>
<xsl:text>???</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="$etarget" mode="endterm"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="$target/@xreflabel">
<xsl:call-template name="xref.xreflabel">
<xsl:with-param name="target" select="$target"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="$target">
<xsl:if test="not(parent::citation)">
<xsl:apply-templates select="$target" mode="xref-to-prefix"/>
</xsl:if>
<xsl:apply-templates select="$target" mode="xref-to">
<xsl:with-param name="referrer" select="."/>
<xsl:with-param name="xrefstyle" select="$xrefstyle"/>
<!-- Propagate role -->
<xsl:with-param name="role" select="$role"/>
</xsl:apply-templates>
<xsl:if test="not(parent::citation)">
<xsl:apply-templates select="$target" mode="xref-to-suffix"/>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<xsl:message>
<xsl:text>ERROR: xref linking to </xsl:text>
<xsl:value-of select="@linkend"/>
<xsl:text> has no generated link text.</xsl:text>
</xsl:message>
<xsl:text>???</xsl:text>
</xsl:otherwise>
</xsl:choose>
</fo:inline>
</xsl:variable>
<!-- Convert it into an active link -->
<xsl:call-template name="simple.xlink">
<xsl:with-param name="content" select="$content"/>
</xsl:call-template>
<!-- Add standard page reference? -->
<xsl:choose>
<xsl:when test="not($target)">
<!-- page numbers only for local targets -->
</xsl:when>
<xsl:when test="starts-with(normalize-space($xrefstyle), 'select:')
and contains($xrefstyle, 'nopage')">
<!-- negative xrefstyle in instance turns it off -->
</xsl:when>
<!-- positive xrefstyle already handles it -->
<xsl:when test="not(starts-with(normalize-space($xrefstyle), 'select:')
and (contains($xrefstyle, 'page')
or contains($xrefstyle, 'Page')))
and ( $insert.xref.page.number = 'yes'
or $insert.xref.page.number = '1')
or local-name($target) = 'para'">
<xsl:apply-templates select="$target" mode="page.citation">
<xsl:with-param name="id" select="$target/@id|$target/@xml:id"/>
</xsl:apply-templates>
</xsl:when>
</xsl:choose>
</xsl:template>
<!-- sect* mode xref-to:
Propagate role to mode object.xref.markup (see ../lfs-common.xsl) -->
<!-- The original template is in {docbook-xsl}/fo/xref.xsl -->
<xsl:template match="section|simplesect|sect1|sect2|sect3|sect4|sect5
|refsect1|refsect2|refsect3|refsection" mode="xref-to">
<xsl:param name="referrer"/>
<xsl:param name="xrefstyle"/>
<xsl:param name="verbose" select="1"/>
<xsl:param name="role"/>
<xsl:apply-templates select="." mode="object.xref.markup">
<xsl:with-param name="purpose" select="'xref'"/>
<xsl:with-param name="xrefstyle" select="$xrefstyle"/>
<xsl:with-param name="referrer" select="$referrer"/>
<xsl:with-param name="verbose" select="$verbose"/>
<xsl:with-param name="role" select="$role"/>
</xsl:apply-templates>
</xsl:template>
<!-- insert.title.markup:
Apply the role value. -->
<!-- The original template is in {docbook-xsl}/fo/xref.xsl -->
<xsl:template match="*" mode="insert.title.markup">
<xsl:param name="purpose"/>
<xsl:param name="xrefstyle"/>
<xsl:param name="title"/>
<xsl:param name="role"/>
<xsl:choose>
<xsl:when test="$purpose = 'xref' and titleabbrev">
<xsl:apply-templates select="." mode="titleabbrev.markup"/>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="$title"/>
<xsl:value-of select="$role"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>