VirtualBox

Ignore:
Timestamp:
May 31, 2015 8:10:23 PM (10 years ago)
Author:
vboxsync
Message:

docbook2latex.xsl: The usual xsltproc text output speedup hack, started on dealing with man pages.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/doc/manual/docbook2latex.xsl

    r49487 r56167  
    284284      </xsl:when>
    285285      <xsl:when test="name(..)='chapter'">
    286         <xsl:text>&#x0a;&#x0a;\chapter{</xsl:text>
     286        <xsl:call-template name="xsltprocNewlineOutputHack"/>
     287        <xsl:text>&#x0a;\chapter{</xsl:text>
    287288        <xsl:apply-templates />
    288289        <xsl:text>}</xsl:text>
    289290      </xsl:when>
    290291      <xsl:when test="name(..)='sect1'">
    291         <xsl:text>&#x0a;&#x0a;\section{</xsl:text>
     292        <xsl:call-template name="xsltprocNewlineOutputHack"/>
     293        <xsl:text>&#x0a;\section{</xsl:text>
    292294        <xsl:apply-templates />
    293295        <xsl:text>}</xsl:text>
    294296      </xsl:when>
    295297      <xsl:when test="name(..)='sect2'">
    296         <xsl:text>&#x0a;&#x0a;\subsection{</xsl:text>
     298        <xsl:call-template name="xsltprocNewlineOutputHack"/>
     299        <xsl:text>&#x0a;\subsection{</xsl:text>
    297300        <xsl:apply-templates />
    298301        <xsl:text>}</xsl:text>
    299302      </xsl:when>
    300303      <xsl:when test="name(..)='sect3'">
    301         <xsl:text>&#x0a;&#x0a;\subsubsection{</xsl:text>
    302         <xsl:apply-templates />
    303         <xsl:text>}</xsl:text>
    304       </xsl:when>
    305       <xsl:when test="name(..)='sect4'">
    306         <xsl:text>&#x0a;&#x0a;\paragraph{</xsl:text>
    307         <xsl:apply-templates />
    308         <xsl:text>}</xsl:text>
    309       </xsl:when>
    310       <xsl:when test="name(..)='sect5'">
    311         <xsl:text>&#x0a;&#x0a;\subparagraph{</xsl:text>
     304        <xsl:call-template name="xsltprocNewlineOutputHack"/>
     305        <xsl:text>&#x0a;\subsubsection{</xsl:text>
     306        <xsl:apply-templates />
     307        <xsl:text>}</xsl:text>
     308      </xsl:when>
     309      <xsl:when test="name(..)='sect4' or name(..)='refsect1'">
     310        <xsl:call-template name="xsltprocNewlineOutputHack"/>
     311        <xsl:text>&#x0a;\paragraph{</xsl:text>
     312        <xsl:apply-templates />
     313        <xsl:text>}</xsl:text>
     314      </xsl:when>
     315      <xsl:when test="name(..)='sect5' or name(..)='refsect2'">
     316        <xsl:call-template name="xsltprocNewlineOutputHack"/>
     317        <xsl:text>&#x0a;\subparagraph{</xsl:text>
    312318        <xsl:apply-templates />
    313319        <xsl:text>}</xsl:text>
    314320      </xsl:when>
    315321      <xsl:when test="name(..)='appendix'">
    316         <xsl:text>&#x0a;&#x0a;\chapter{</xsl:text>
     322        <xsl:call-template name="xsltprocNewlineOutputHack"/>
     323        <xsl:text>&#x0a;\chapter{</xsl:text>
    317324        <xsl:apply-templates />
    318325        <xsl:text>}</xsl:text>
    319326      </xsl:when>
    320327      <xsl:when test="name(..)='glossdiv'">
    321         <xsl:text>&#x0a;&#x0a;\section*{</xsl:text>
     328        <xsl:call-template name="xsltprocNewlineOutputHack"/>
     329        <xsl:text>&#x0a;\section*{</xsl:text>
    322330        <xsl:apply-templates />
    323331        <xsl:text>}</xsl:text>
     
    479487
    480488  <xsl:template match="itemizedlist">
    481     <xsl:text>&#x0a;&#x0a;\begin{itemize}&#x0a;</xsl:text>
     489    <xsl:call-template name="xsltprocNewlineOutputHack"/>
     490    <xsl:text>&#x0a;\begin{itemize}&#x0a;</xsl:text>
    482491    <xsl:apply-templates />
    483492    <xsl:text>&#x0a;\end{itemize}&#x0a;</xsl:text>
     
    485494
    486495  <xsl:template match="orderedlist">
    487     <xsl:text>&#x0a;&#x0a;\begin{enumerate}&#x0a;</xsl:text>
     496    <xsl:call-template name="xsltprocNewlineOutputHack"/>
     497    <xsl:text>&#x0a;\begin{enumerate}&#x0a;</xsl:text>
    488498    <xsl:apply-templates />
    489499    <xsl:text>&#x0a;\end{enumerate}&#x0a;</xsl:text>
     500  </xsl:template>
     501
     502  <xsl:template match="variablelist">
     503    <xsl:call-template name="xsltprocNewlineOutputHack"/>
     504    <xsl:text>&#x0a;\begin{description}&#x0a;</xsl:text>
     505    <xsl:apply-templates />
     506    <xsl:text>&#x0a;\end{description}&#x0a;</xsl:text>
     507  </xsl:template>
     508
     509  <xsl:template match="varlistentry">
     510    <xsl:if test="not(./term)"><xsl:message terminate="yes">Expected term element in varlistentry.</xsl:message></xsl:if>
     511    <xsl:text>&#x0a;&#x0a;\item[</xsl:text>
     512    <xsl:apply-templates select="term"/>
     513    <xsl:text>] \hfill \\&#x0a;</xsl:text>
     514    <xsl:apply-templates select="listitem/*"/>
    490515  </xsl:template>
    491516
     
    574599  </xsl:template>
    575600
     601  <!--
     602     refentry releated stuff and isn't handled elsewhere...
     603  -->
     604  <xsl:template match="refsynopsisdiv">
     605    <xsl:call-template name="xsltprocNewlineOutputHack"/>
     606    <xsl:text>&#x0a;\paragraph{Synopsis&#x0a;}&#x0a;</xsl:text>
     607    <!-- apply templates! -->
     608  </xsl:template>
     609
     610  <xsl:template match="refentry|refnamediv|refentryinfo|refmeta|refsect3|refsect4|refsect5">
     611    <xsl:message terminate="yes"><xsl:value-of select="name()"/> is not supported</xsl:message>
     612  </xsl:template>
     613
     614  <xsl:template match="cmdsynopsis|command">
     615    <xsl:text>\texttt{</xsl:text>
     616    <xsl:apply-templates />
     617    <xsl:text>}</xsl:text>
     618  </xsl:template>
     619
     620
     621  <!--  -->
    576622  <xsl:template match="//text()">
    577623    <xsl:variable name="subst1">
     
    739785    </xsl:choose>
    740786  </xsl:template>
     787
     788  <!--
     789       xsltprocNewlineOutputHack - emits a single new line.
     790
     791       Hack Alert! This template helps xsltproc split up the output text elements
     792                   and avoid reallocating them into the MB range. Calls to this
     793                   template is made occationally while generating larger output
     794                   file.  It's not necessary for small stuff like header.
     795
     796                   The trick we're playing on xsltproc has to do with CDATA
     797                   and/or the escape setting of the xsl:text element.  It forces
     798                   xsltproc to allocate a new output element, thus preventing
     799                   things from growing out of proportions and slowing us down.
     800
     801                   This was successfully employed to reduce a 18+ seconds run to
     802                   around one second (possibly less due to kmk overhead).
     803   -->
     804  <xsl:template name="xsltprocNewlineOutputHack">
     805      <xsl:text disable-output-escaping="yes"><![CDATA[
     806]]></xsl:text>
     807  </xsl:template>
     808
    741809</xsl:stylesheet>
    742810
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette