programlisting — A literal listing of all or part of a program.


programlisting ::=


Common linking attributes.


  • All of:
    • continuation (enumeration)
      • “continues”
      • “restarts”
    • linenumbering (enumeration)
      • “numbered”
      • “unnumbered”
    • startinglinenumber (integer)
    • xml:space (enumeration)
      • “preserve”
    • language
  • width (nonNegativeInteger)

Additional Constraints

  • If this element is the root element, it must have a version attribute.


A programlisting is a verbatim environment for program source or source fragment listings. The programlistings are often placed in examples or figures so that they can be cross-referenced from the text.

Processing expectations

Formatted as a displayed block. This element is displayed “verbatim”; whitespace and line breaks within this element are significant. The programlistings are usually displayed in a fixed-width font.

Other markup within a programlisting is recognized. Contrast this with systems like LaTeX, in which verbatim environments disable markup recognition. If you want to disable markup recognition, you must use a CDATA section:

1 |<programlisting><![CDATA[This is a programlisting so white       space and line
  |breaks are significant.  But it is also a CDATA
  |section so <emphasis>tags</emphasis> and &entities;
  |are not recognized.  The only markup that is recognized
5 |is the end-of-section marker, which is two
  |"]"'s in a row followed by a >.

Two markup tags have special significance in programlistings: co and lineannotation. A co identifies the location of a callout. A lineannotation is a comment, added by the documentor—not the programmer.


Common linking attributes.

any attribute

Any attribute in any other explicit namespace


Determines whether line numbering continues from the previous element or restarts

Enumerated values:

Line numbering continues from the immediately preceding element with the same name.


Line numbering restarts (begins at 1, usually).


Identifies the language (i.e. programming language) of the verbatim content


Determines whether lines are numbered

Enumerated values:

Lines are numbered.


Lines are not numbered.


Specifies the initial line number


Specifies the width (in characters) of the element


Can be used to indicate explicitly that whitespace in the verbatim environment is preserved. Whitespace must always be preserved in verbatim environments whether this attribute is specified or not

Enumerated values:

Whitespace must be preserved.


The following elements occur in programlisting: text, abbrev, accel, acronym, alt, anchor, annotation, application, author, biblioref, buildtarget, citation, citebiblioid, citerefentry, citetitle, classname, co, code, command, computeroutput, constant, coref, database, date, editor, email, emphasis (db._emphasis), emphasis (db.emphasis), enumidentifier, enumname, enumvalue, envar, errorcode, errorname, errortext, errortype, exceptionname, filename, firstterm (db._firstterm), firstterm (db.firstterm), footnote, footnoteref, foreignphrase (db._foreignphrase), foreignphrase (db.foreignphrase), function, glossterm (db._glossterm), glossterm (db.glossterm), guibutton, guiicon, guilabel, guimenu, guimenuitem, guisubmenu, hardware, indexterm (db.indexterm.endofrange), indexterm (db.indexterm.singular), indexterm (db.indexterm.startofrange), info (, initializer, inlineequation, inlinemediaobject, interfacename, jobtitle, keycap, keycode, keycombo, keysym, lineannotation, link, literal, macroname, markup, menuchoice, methodname, modifier, mousebutton, nonterminal, olink, ooclass, ooexception, oointerface, option, optional, org, orgname, package, parameter, person, personname, phrase (db._phrase), phrase (db.phrase), productname, productnumber, prompt, property, quote (db._quote), quote (db.quote), remark, replaceable, returnvalue, revnumber, shortcut, subscript, superscript, symbol, systemitem, tag, templatename, termdef, textobject, token, trademark, type, typedefname, unionname, uri, userinput, varname, wordasword, xref.