Commit 891b8b1a authored by Andre Malo's avatar Andre Malo
Browse files

port latex changes from 2.2


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.0.x@1563508 13f79535-47bb-0310-9956-ffa450edef68
parent 88af0635
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -74,12 +74,15 @@ program | img | cite | q | dfn | var | transnote | glossary | phonetic">
<!ELEMENT directivelist (directive)+>

<!ELEMENT module (#PCDATA)>
<!ATTLIST module status CDATA  #IMPLIED>
<!ATTLIST module status   CDATA  #IMPLIED
                 outdated (true) #IMPLIED>

<!ELEMENT directive (#PCDATA)>
<!-- name attribute is preferred over contents when generating links -->
<!ATTLIST directive  module CDATA  #IMPLIED
                     type   CDATA  #IMPLIED
                     status CDATA  #IMPLIED >
                     status CDATA  #IMPLIED
                     name   CDATA  #IMPLIED >

<!ELEMENT program (#PCDATA)>

+87 −13
Original line number Diff line number Diff line
@@ -143,16 +143,63 @@ select="$metafile/basename"/>
<xsl:template match="directive" name="directive">
<xsl:text>\textsc{</xsl:text>
<xsl:if test="@type='section'"><xsl:text>\textless{}</xsl:text></xsl:if>
<xsl:choose>
<xsl:when test="@module">
  <xsl:text>\hyperlink{/mod/</xsl:text>
   <xsl:value-of select="@module"/>
  <xsl:value-of select="normalize-space(@module)"/>
  <xsl:text>:</xsl:text>
   <xsl:value-of select="translate(.,$uppercase,$lowercase)"/>
  <xsl:choose>
  <xsl:when test="@name">
    <xsl:value-of
        select="normalize-space(translate(@name,$uppercase,$lowercase))"/>
  </xsl:when>
  <xsl:otherwise>
    <xsl:value-of
        select="normalize-space(translate(.,$uppercase,$lowercase))"/>
  </xsl:otherwise>
  </xsl:choose>
  <xsl:text>}{</xsl:text>
  <xsl:apply-templates/>
  <xsl:text>}</xsl:text>
</xsl:when>
<xsl:otherwise>
  <xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="@type='section'"><xsl:text>\textgreater{}</xsl:text></xsl:if>
<xsl:text>}</xsl:text>
</xsl:template>

<xsl:template match="directive" mode="tabular">
<xsl:text>\textsc{</xsl:text>
<xsl:if test="@type='section'"><xsl:text>\textless{}</xsl:text></xsl:if>
<xsl:choose>
<xsl:when test="@module">
  <xsl:text>\hyperlink{/mod/</xsl:text>
  <xsl:value-of select="normalize-space(@module)"/>
  <xsl:text>:</xsl:text>
  <xsl:choose>
  <xsl:when test="@name">
    <xsl:value-of
        select="normalize-space(translate(@name,$uppercase,$lowercase))"/>
  </xsl:when>
  <xsl:otherwise>
    <xsl:value-of
        select="normalize-space(translate(.,$uppercase,$lowercase))"/>
  </xsl:otherwise>
  </xsl:choose>
  <xsl:text>}{</xsl:text>
  <xsl:apply-templates mode="tabular"/>
  <xsl:text>}</xsl:text>
</xsl:when>
<xsl:otherwise>
  <xsl:apply-templates mode="tabular"/>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="@type='section'"><xsl:text>\textgreater{}</xsl:text></xsl:if>
<xsl:text>}</xsl:text>
</xsl:template>

<!-- /directive -->

<!-- ==================================================================== -->
@@ -160,12 +207,39 @@ select="$metafile/basename"/>
<!-- Inserts a link to refereed module                                    -->
<!-- ==================================================================== -->
<xsl:template match="module" name="module">
<xsl:choose>
<xsl:when test="@outdated = 'true'">
  <xsl:text>\textsc{</xsl:text>
    <xsl:apply-templates/>
  <xsl:text>}</xsl:text>
</xsl:when>
<xsl:otherwise>
  <xsl:text>\textsc{\hyperlink{/mod/</xsl:text>
  <xsl:value-of select="."/>
    <xsl:value-of select="normalize-space(.)"/>
    <xsl:text>}{</xsl:text>
      <xsl:apply-templates/>
    <xsl:text>}</xsl:text>
  <xsl:text>}</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>

<xsl:template match="module" mode="tabular">
<xsl:choose>
<xsl:when test="@outdated = 'true'">
  <xsl:text>\textsc{</xsl:text>
    <xsl:apply-templates mode="tabular"/>
  <xsl:text>}</xsl:text>
</xsl:when>
<xsl:otherwise>
  <xsl:text>\textsc{\hyperlink{/mod/</xsl:text>
    <xsl:value-of select="normalize-space(.)"/>
    <xsl:text>}{</xsl:text>
      <xsl:apply-templates/>
    <xsl:text>}</xsl:text>
  <xsl:text>}</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- /module -->

+2 −31
Original line number Diff line number Diff line
@@ -23,39 +23,10 @@

<!-- ==================================================================== -->
<!-- <directiveindex>                                                     -->
<!-- Builds the directive index page                                      -->
<!-- (Ignored)                                                            -->
<!-- ==================================================================== -->
<xsl:template match="directiveindex">
<xsl:template match="directiveindex" />

    <xsl:variable name="directives"
        select="document(document($allmodules)/modulefilelist/modulefile)
                /modulesynopsis[status!='Obsolete']
                /directivesynopsis[not(@location)]" />


  <xsl:call-template name="section-title"/>

  <xsl:apply-templates select="summary" />

  <xsl:call-template name="seealso"/>

  <xsl:text>\begin{itemize}
</xsl:text>
  <xsl:for-each select="$directives">
  <xsl:sort select="name" />

  <xsl:text>
\item </xsl:text>
  <xsl:apply-templates select="name" mode="simple"/>
  <xsl:text> (p.\ \pageref{/mod/</xsl:text>
  <xsl:value-of select="../name"/><xsl:text>:</xsl:text>
  <xsl:value-of select="translate(name, $uppercase, $lowercase)"/>
  <xsl:text>})</xsl:text>
</xsl:for-each>

  <xsl:text>\end{itemize}</xsl:text>

</xsl:template>
<!-- /directiveindex -->

</xsl:stylesheet>
+135 −44
Original line number Diff line number Diff line
<?xml version="1.0"?>
<!DOCTYPE xsl:stylesheet [
    <!ENTITY lf SYSTEM "../xsl/util/lf.xml">
]>

<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
@@ -27,34 +30,27 @@
<!-- ==================================================================== -->

<xsl:template match="ul">
<xsl:text>\begin{itemize}
</xsl:text>
<xsl:text>\begin{itemize}</xsl:text>&lf;
<xsl:apply-templates/>
<xsl:text>\end{itemize}
</xsl:text>
<xsl:text>\end{itemize}</xsl:text>&lf;
</xsl:template>

<xsl:template match="ol">
<xsl:text>\begin{enumerate}
</xsl:text>
<xsl:text>\begin{enumerate}</xsl:text>&lf;
<xsl:apply-templates/>
<xsl:text>\end{enumerate}
</xsl:text>
<xsl:text>\end{enumerate}</xsl:text>&lf;
</xsl:template>

<xsl:template match="li">
<xsl:text>\item </xsl:text>
<xsl:apply-templates/>
<xsl:text>
</xsl:text>
&lf;
</xsl:template>

<xsl:template match="dl">
<xsl:text>\begin{description}
</xsl:text>
<xsl:text>\begin{description}</xsl:text>&lf;
<xsl:apply-templates/>
<xsl:text>\end{description}
</xsl:text>
<xsl:text>\end{description}</xsl:text>&lf;
</xsl:template>

<xsl:template match="dt">
@@ -66,10 +62,24 @@
<xsl:apply-templates/>
</xsl:template>

<xsl:template match="br">
<xsl:call-template name="br">
<xsl:with-param name="result" select="'\\'" />
</xsl:call-template>
</xsl:template>

<xsl:template match="br" mode="tabular">
<xsl:call-template name="br">
<xsl:with-param name="result" select="'\newline'" />
</xsl:call-template>
</xsl:template>

<!-- Latex doesn't like successive line breaks, so replace any
     sequence of two or more br separated only by white-space with
     one line break followed by smallskips. -->
<xsl:template match="br">
<xsl:template name="br">
<xsl:param name="result" />

<xsl:choose>
<xsl:when test="name(preceding-sibling::node()[1])='br' or name(preceding-sibling::node()[1])='indent'">
<xsl:text>\smallskip </xsl:text>
@@ -82,7 +92,8 @@
  <xsl:otherwise>
    <!-- Don't put a line break if we are the last thing -->
    <xsl:if test="not(position()=last()) and not(position()=last()-1 and normalize-space(following-sibling::node()[1])='')">
      <xsl:text>\\ </xsl:text>
      <xsl:value-of select="$result" />
      <xsl:text> </xsl:text>
    </xsl:if>
  </xsl:otherwise>
  </xsl:choose>
@@ -90,7 +101,8 @@
<xsl:otherwise>
    <!-- Don't put a line break if we are the last thing -->
    <xsl:if test="not(position()=last()) and not(position()=last()-1 and normalize-space(following-sibling::node()[1])='')">
      <xsl:text>\\ </xsl:text>
      <xsl:value-of select="$result" />
      <xsl:text> </xsl:text>
    </xsl:if>
</xsl:otherwise>
</xsl:choose>
@@ -98,45 +110,88 @@

<xsl:template match="p">
<xsl:apply-templates/>
<xsl:text>\par
</xsl:text>
<xsl:text>\par</xsl:text>&lf;
</xsl:template>

<xsl:template match="code">
<xsl:template match="code|program">
<xsl:text>\texttt{</xsl:text>
<xsl:apply-templates/>
<xsl:text>}</xsl:text>
</xsl:template>

<xsl:template match="code|program" mode="tabular">
<xsl:text>\texttt{</xsl:text>
<xsl:apply-templates mode="tabular"/>
<xsl:text>}</xsl:text>
</xsl:template>

<xsl:template match="strong">
<xsl:text>\textbf{</xsl:text>
<xsl:apply-templates/>
<xsl:text>}</xsl:text>
</xsl:template>

<xsl:template match="em">
<xsl:template match="strong" mode="tabular">
<xsl:text>\textbf{</xsl:text>
<xsl:apply-templates mode="tabular"/>
<xsl:text>}</xsl:text>
</xsl:template>

<xsl:template match="em|var|cite|q|dfn">
<xsl:text>\textit{</xsl:text>
<xsl:apply-templates/>
<xsl:apply-templates mode="tabular"/>
<xsl:text>}</xsl:text>
</xsl:template>

<!-- O(log(n)) (stack usage!) string reverter -->
<xsl:template name="string-reverse">
<xsl:param name="string"/>
<xsl:variable name="length" select="string-length($string)"/>

<xsl:choose>
<xsl:when test="$length &lt; 2">
  <xsl:value-of select="$string"/>
</xsl:when>
<xsl:when test="$length = 2">
  <xsl:value-of select="concat(substring($string, 2, 1), substring($string, 1, 1))"/>
</xsl:when>
<xsl:otherwise>
  <xsl:variable name="middle" select="floor($length div 2)"/>

  <xsl:call-template name="string-reverse">
    <xsl:with-param name="string" select="substring($string, $middle + 1, $middle + 1)"/>
  </xsl:call-template>
  <xsl:call-template name="string-reverse">
    <xsl:with-param name="string" select="substring($string, 1, $middle)"/>
  </xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>

<!-- Value-of used here explicitly because we don't wan't latex-escaping
performed.  Of course, this will conflict with html where some tags are
interpreted in pre -->
<xsl:template match="pre">
<xsl:text>\begin{verbatim}
</xsl:text>
<xsl:value-of select="."/>
<xsl:text>\end{verbatim}
</xsl:text>
<xsl:text>\begin{verbatim}</xsl:text>

<!-- string trimming: ltrim is easy, rtrim is not. so, we're sneaky and use
ltrim only. The output is then: string-reverse(ltrim(string-reverse(ltrim(.)))) -->
<xsl:variable name="reversed">
<xsl:call-template name="string-reverse">
<xsl:with-param name="string" select="substring(., string-length(substring-before(., substring(normalize-space(.), 1, 1))) + 1, string-length(.))"/>
</xsl:call-template>
</xsl:variable>
<xsl:call-template name="string-reverse">
<xsl:with-param name="string" select="substring($reversed, string-length(substring-before($reversed, substring(normalize-space($reversed), 1, 1))) + 1, string-length($reversed))"/>
</xsl:call-template>

<xsl:text>\end{verbatim}</xsl:text>&lf;
</xsl:template>

<xsl:template match="blockquote">
<xsl:text>\begin{quotation}
</xsl:text>
<xsl:text>\begin{quotation}</xsl:text>&lf;
<xsl:apply-templates/>
<xsl:text>\end{quotation}
</xsl:text>
<xsl:text>\end{quotation}</xsl:text>&lf;
</xsl:template>

<!-- XXX: We need to deal with table headers -->
@@ -169,13 +224,11 @@ interpreted in pre -->
  </xsl:for-each>
</xsl:otherwise>
</xsl:choose>
<xsl:text>|}\hline
</xsl:text>
<xsl:text>|}\hline</xsl:text>&lf;
<xsl:apply-templates select="tr"/>
<xsl:text>\hline\end{</xsl:text>
<xsl:value-of select="$table-type"/>
<xsl:text>}
</xsl:text>
<xsl:text>}</xsl:text>&lf;
</xsl:template>

<xsl:template match="tr">
@@ -184,8 +237,7 @@ interpreted in pre -->
  <xsl:if test="../@border and not(position()=last())">
    <xsl:text>\hline</xsl:text>
  </xsl:if>
  <xsl:text>
</xsl:text>
  &lf;
</xsl:template>

<xsl:template match="td">
@@ -244,31 +296,62 @@ interpreted in pre -->
   3. It is also necessary to deal with the fact that index pages
      get references as "/".
-->
<xsl:template match="a" mode="tabular">
<xsl:apply-templates mode="tabular"/>
<xsl:call-template name="a"/>
</xsl:template>

<xsl:template match="a">
<xsl:apply-templates/>
<xsl:call-template name="a"/>
</xsl:template>

<xsl:template name="a">
<xsl:if test="@href">
<xsl:variable name="relpath" select="document(/*/@metafile)/metafile/relpath" />
<xsl:variable name="path" select="document(/*/@metafile)/metafile/path" />
<xsl:variable name="href">
  <xsl:choose>
  <xsl:when test="starts-with(@href, './')">
    <xsl:value-of select="substring(@href, 3)" />
  </xsl:when>
  <xsl:otherwise>
    <xsl:value-of select="@href" />
  </xsl:otherwise>
  </xsl:choose>
</xsl:variable>
<xsl:variable name="fileref">
  <xsl:choose>
  <xsl:when test="contains(@href, '.html')">
    <xsl:value-of select="substring-before(@href, '.html')"/>
  <xsl:when test="contains($href, '.html')">
    <xsl:value-of select="substring-before($href, '.html')"/>
  </xsl:when>
  <xsl:otherwise>
    <xsl:value-of select="concat(@href, 'index')"/>
    <xsl:value-of select="concat($href, 'index')"/>
  </xsl:otherwise>
  </xsl:choose>
</xsl:variable>
<xsl:choose>

<xsl:when test="starts-with(@href, 'http:') or starts-with(@href, 'news:') or starts-with(@href, 'mailto:')">
<xsl:when test="starts-with(@href, 'http:') or starts-with(@href, 'https:') or starts-with(@href, 'ftp:') or starts-with(@href, 'news:') or starts-with(@href, 'mailto:')">
  <xsl:if test="not(.=@href)">
    <xsl:text>\footnote{</xsl:text>
      <xsl:text>\href{</xsl:text>
      <xsl:call-template name="replace-string">
        <xsl:with-param name="text" select="@href"/>
        <xsl:with-param name="replace" select="'%'"/>
        <xsl:with-param name="with" select="'\%'"/>
        <xsl:with-param name="text">
          <xsl:call-template name="replace-string">
            <xsl:with-param name="replace" select="'_'"/>
            <xsl:with-param name="with" select="'\_'"/>
            <xsl:with-param name="text">
              <xsl:call-template name="replace-string">
                <xsl:with-param name="replace" select="'#'"/>
                <xsl:with-param name="with" select="'\#'"/>
                <xsl:with-param name="text" select="@href"/>
              </xsl:call-template>
            </xsl:with-param>
          </xsl:call-template>
        </xsl:with-param>
      </xsl:call-template>
      <xsl:text>}{</xsl:text>
    <xsl:call-template name="ltescape">
@@ -310,6 +393,14 @@ interpreted in pre -->
</xsl:template>

<xsl:template match="img">
<xsl:call-template name="img"/>
</xsl:template>

<xsl:template match="img" mode="tabular">
<xsl:call-template name="img"/>
</xsl:template>

<xsl:template name="img">
<xsl:variable name="path" select="document(/*/@metafile)/metafile/path" />
<xsl:text>\includegraphics{</xsl:text>
      <xsl:call-template name="replace-string">
+24 −13
Original line number Diff line number Diff line
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE xsl:stylesheet [
    <!ENTITY lf SYSTEM "../xsl/util/lf.xml">
    <!ENTITY % HTTPD-VERSION SYSTEM "../version.ent">
    %HTTPD-VERSION;
]>
@@ -143,7 +144,11 @@ Server Documentation Project. More information is available at
</xsl:text>
    <xsl:apply-templates/>
    <xsl:if test="@id = 'modules'">
        <xsl:text>\include{mod/index}</xsl:text>&lf;
        <xsl:apply-templates select="document($allmodules)/modulefilelist" />
        <xsl:text>\include{mod/module-dict}</xsl:text>&lf;
        <xsl:text>\include{mod/directive-dict}</xsl:text>&lf;
        <xsl:text>\include{mod/quickreference}</xsl:text>&lf;
    </xsl:if>
</xsl:for-each>

@@ -151,6 +156,7 @@ Server Documentation Project. More information is available at
</xsl:template>

<xsl:template match="page">
<xsl:if test="not(starts-with(@href,'http:') or starts-with(@href, 'https:') or starts-with(@href, 'mod/'))">
  <xsl:text>\include{</xsl:text>
  <xsl:choose>
  <xsl:when test="contains(@href,'.')">
@@ -160,8 +166,8 @@ Server Documentation Project. More information is available at
    <xsl:value-of select="concat(@href,'index')"/>
  </xsl:otherwise>
  </xsl:choose>
<xsl:text>}
</xsl:text>
  <xsl:text>}</xsl:text>&lf;
</xsl:if>
</xsl:template>

<xsl:template match="category/title" mode="printcat">
@@ -177,8 +183,7 @@ Server Documentation Project. More information is available at
<xsl:template match="modulefile">
<xsl:text>\include{mod/</xsl:text>
<xsl:value-of select="substring-before(.,'.')"/>
<xsl:text>}
</xsl:text>
<xsl:text>}</xsl:text>&lf;
</xsl:template>

<xsl:template match="summary">
@@ -210,6 +215,12 @@ Server Documentation Project. More information is available at
<!-- Take care of all the LaTeX special characters.                       -->
<!-- Silly multi-variable technique used to avoid deep recursion.         -->
<!-- ==================================================================== -->
<xsl:template match="text()|@*" mode="tabular">
<xsl:call-template name="ltescape">
  <xsl:with-param name="string" select="."/>
</xsl:call-template>
</xsl:template>

<xsl:template match="text()">
<xsl:call-template name="ltescape">
  <xsl:with-param name="string" select="."/>
Loading