2010-04-08 57 views
5

有沒有在DocBook文檔中定義宏的方法(如tex macros或latex定義)?DocBook宏?

DocBook非常冗長,而且宏將有很大的幫助。我在快速入門教程中找不到它們 。

如果是這樣,任何人都可以提供一個簡單的例子或鏈接?

感謝

回答

6

不確定,如果這正是您想要的/如果它滿足您的要求,但我在考慮實體。您可以在頂部定義它們(您的XML文檔,所以一般的XML,沒有DocBook特定的)。正如這裏看到的'doc.release.number'和'doc.release.date'。但它們也可以通過單獨的文件包含在內。如第3個「ENTITY」行所示。這裏的系統意味着,從另一個文件'entities.ent'來。

<?xml version="1.0" encoding="UTF-8"?> 

<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" 
    "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [ 

    <!ENTITY doc.release.number     "1.0.0.beta-1"  > 
    <!ENTITY doc.release.date     "April 2010"   > 

    <!ENTITY % entities SYSTEM "entities.ent" > 

    %entities; 

]> 

<!-- This document is based on http://readyset.tigris.org/nonav/templates/userguide.html --> 
<article lang="en"> 
    <articleinfo> 
    <title>&project.impl.title; - User Manual</title> 
    <subtitle></subtitle> 
    <date>&project.impl.release.date;</date> 
    <copyright> 
     <year>doc.release.year</year> 
     <holder>Team - &project.impl.title;</holder> 
    </copyright> 
    <releaseinfo>&doc.release.number;</releaseinfo> 
    </articleinfo> 

    <section> 
    <title>Introduction</title> 
    <para> 
    The &project.impl.title; has been created to clean up (X)HTML and XML documents as part of 


    </para> 
    <section> 
</article> 

在該文件中,你通過引用實體起始&和結束;&project.impl.title;

在文件「entities.ent」你以類似的方式指定實體元素:

<?xml version="1.0" encoding="UTF-8"?> 

<!ENTITY project.impl.title   'Maven Tidy Plug-in' > 
<!ENTITY project.impl.group-id   'net.sourceforge.docbook-utils.maven-plugin' > 
<!ENTITY project.impl.artifact-id  'maven-tidy-plugin'  > 
<!ENTITY project.impl.release.number '1.0.0.beta-1'   > 
<!ENTITY project.impl.release.date  'April 2010'   > 
<!ENTITY project.impl.release.year  '2010'     > 
<!ENTITY project.impl.url    '../'     > 
<!ENTITY project.spec.title   '' > 
<!ENTITY project.spec.release.number '' > 
<!ENTITY project.spec.release.date  '' > 
<!ENTITY doc.release.year    '2010'     > 
+0

不錯! Docbook v5.0相當於什麼? – jdkoftinoff 2011-05-20 23:37:34

0

你有沒有考慮從其他格式生成的DocBook(如reStructuredText?)

我覺得這是很不錯的文檔。另外,你可以很快寫一個宏預處理器(或者看看m4)。如果您使用的是DocBook的XML版本,則可以使用簡單的XSLT。只需製作一些標籤並對其進行轉換即可。自動添加樣板文件。準備好對XSLT感到非常生氣。因爲沒有全部可能。讓你的思維變形。

+0

@Daren:你的意思是docbook dtd不包含像tex這樣的東西: \ def \ h {大家好}然後使用它\ h? 這將是一個很大的錯誤。 編寫宏預處理器?最好的方法是使用具有定義的C預處理器。 我來看看那個經過重組的文字 謝謝 – cibercitizen1 2010-04-08 14:59:18

1

不完全符合您的要求,但可能對您的某些情況有所幫助:您可以在包裝樣式表中定義模板,並在其中定義fo命令。一些例子:

代碼:

<xsl:template match="symbolchar"> 
    <fo:inline font-family="Symbol"> 
    <xsl:choose> 
     <xsl:when test=".='ge'">&#x2265;</xsl:when> 
     <xsl:when test=".='le'">&#x2264;</xsl:when> 
     <xsl:when test=".='sqrt'">&#x221A;</xsl:when> 
     <xsl:otherwise>?!?</xsl:otherwise> 
    </xsl:choose> 
    </fo:inline> 
</xsl:template> 

用法:

<symbolchar>le</symbolchar> 

代碼:

<xsl:template match="processing-instruction('linebreak')"> 
    <fo:block/> 
</xsl:template> 

用法:

<?linebreak?>