1 | \documentclass{howto}
|
---|
2 | \usepackage{ltxmarkup}
|
---|
3 |
|
---|
4 | \title{Documenting Python}
|
---|
5 |
|
---|
6 | \makeindex
|
---|
7 |
|
---|
8 | \input{boilerplate}
|
---|
9 |
|
---|
10 | % Now override the stuff that includes author information;
|
---|
11 | % Guido did *not* write this one!
|
---|
12 |
|
---|
13 | \author{Fred L. Drake, Jr.}
|
---|
14 | \authoraddress{
|
---|
15 | PythonLabs \\
|
---|
16 | Email: \email{fdrake@acm.org}
|
---|
17 | }
|
---|
18 |
|
---|
19 |
|
---|
20 | \begin{document}
|
---|
21 |
|
---|
22 | \maketitle
|
---|
23 |
|
---|
24 | \begin{abstract}
|
---|
25 | \noindent
|
---|
26 | The Python language has a substantial body of
|
---|
27 | documentation, much of it contributed by various authors. The markup
|
---|
28 | used for the Python documentation is based on \LaTeX{} and requires a
|
---|
29 | significant set of macros written specifically for documenting Python.
|
---|
30 | This document describes the macros introduced to support Python
|
---|
31 | documentation and how they should be used to support a wide range of
|
---|
32 | output formats.
|
---|
33 |
|
---|
34 | This document describes the document classes and special markup used
|
---|
35 | in the Python documentation. Authors may use this guide, in
|
---|
36 | conjunction with the template files provided with the
|
---|
37 | distribution, to create or maintain whole documents or sections.
|
---|
38 |
|
---|
39 | If you're interested in contributing to Python's documentation,
|
---|
40 | there's no need to learn \LaTeX{} if you're not so inclined; plain
|
---|
41 | text contributions are more than welcome as well.
|
---|
42 | \end{abstract}
|
---|
43 |
|
---|
44 | \tableofcontents
|
---|
45 |
|
---|
46 |
|
---|
47 | \section{Introduction \label{intro}}
|
---|
48 |
|
---|
49 | Python's documentation has long been considered to be good for a
|
---|
50 | free programming language. There are a number of reasons for this,
|
---|
51 | the most important being the early commitment of Python's creator,
|
---|
52 | Guido van Rossum, to providing documentation on the language and its
|
---|
53 | libraries, and the continuing involvement of the user community in
|
---|
54 | providing assistance for creating and maintaining documentation.
|
---|
55 |
|
---|
56 | The involvement of the community takes many forms, from authoring to
|
---|
57 | bug reports to just plain complaining when the documentation could
|
---|
58 | be more complete or easier to use. All of these forms of input from
|
---|
59 | the community have proved useful during the time I've been involved
|
---|
60 | in maintaining the documentation.
|
---|
61 |
|
---|
62 | This document is aimed at authors and potential authors of
|
---|
63 | documentation for Python. More specifically, it is for people
|
---|
64 | contributing to the standard documentation and developing additional
|
---|
65 | documents using the same tools as the standard documents. This
|
---|
66 | guide will be less useful for authors using the Python documentation
|
---|
67 | tools for topics other than Python, and less useful still for
|
---|
68 | authors not using the tools at all.
|
---|
69 |
|
---|
70 | The material in this guide is intended to assist authors using the
|
---|
71 | Python documentation tools. It includes information on the source
|
---|
72 | distribution of the standard documentation, a discussion of the
|
---|
73 | document types, reference material on the markup defined in the
|
---|
74 | document classes, a list of the external tools needed for processing
|
---|
75 | documents, and reference material on the tools provided with the
|
---|
76 | documentation resources. At the end, there is also a section
|
---|
77 | discussing future directions for the Python documentation and where
|
---|
78 | to turn for more information.
|
---|
79 |
|
---|
80 | If your interest is in contributing to the Python documentation, but
|
---|
81 | you don't have the time or inclination to learn \LaTeX{} and the
|
---|
82 | markup structures documented here, there's a welcoming place for you
|
---|
83 | among the Python contributors as well. Any time you feel that you
|
---|
84 | can clarify existing documentation or provide documentation that's
|
---|
85 | missing, the existing documentation team will gladly work with you
|
---|
86 | to integrate your text, dealing with the markup for you. Please
|
---|
87 | don't let the material in this document stand between the
|
---|
88 | documentation and your desire to help out!
|
---|
89 |
|
---|
90 | \section{Directory Structure \label{directories}}
|
---|
91 |
|
---|
92 | The source distribution for the standard Python documentation
|
---|
93 | contains a large number of directories. While third-party documents
|
---|
94 | do not need to be placed into this structure or need to be placed
|
---|
95 | within a similar structure, it can be helpful to know where to look
|
---|
96 | for examples and tools when developing new documents using the
|
---|
97 | Python documentation tools. This section describes this directory
|
---|
98 | structure.
|
---|
99 |
|
---|
100 | The documentation sources are usually placed within the Python
|
---|
101 | source distribution as the top-level directory \file{Doc/}, but
|
---|
102 | are not dependent on the Python source distribution in any way.
|
---|
103 |
|
---|
104 | The \file{Doc/} directory contains a few files and several
|
---|
105 | subdirectories. The files are mostly self-explanatory, including a
|
---|
106 | \file{README} and a \file{Makefile}. The directories fall into
|
---|
107 | three categories:
|
---|
108 |
|
---|
109 | \begin{definitions}
|
---|
110 | \term{Document Sources}
|
---|
111 | The \LaTeX{} sources for each document are placed in a
|
---|
112 | separate directory. These directories are given short
|
---|
113 | names which vaguely indicate the document in each:
|
---|
114 |
|
---|
115 | \begin{tableii}{p{.75in}|p{3in}}{filenq}{Directory}{Document Title}
|
---|
116 | \lineii{api/}
|
---|
117 | {\citetitle[../api/api.html]{The Python/C API}}
|
---|
118 | \lineii{dist/}
|
---|
119 | {\citetitle[../dist/dist.html]{Distributing Python Modules}}
|
---|
120 | \lineii{doc/}
|
---|
121 | {\citetitle[../doc/doc.html]{Documenting Python}}
|
---|
122 | \lineii{ext/}
|
---|
123 | {\citetitle[../ext/ext.html]
|
---|
124 | {Extending and Embedding the Python Interpreter}}
|
---|
125 | \lineii{inst/}
|
---|
126 | {\citetitle[../inst/inst.html]{Installing Python Modules}}
|
---|
127 | \lineii{lib/}
|
---|
128 | {\citetitle[../lib/lib.html]{Python Library Reference}}
|
---|
129 | \lineii{mac/}
|
---|
130 | {\citetitle[../mac/mac.html]{Macintosh Module Reference}}
|
---|
131 | \lineii{ref/}
|
---|
132 | {\citetitle[../ref/ref.html]{Python Reference Manual}}
|
---|
133 | \lineii{tut/}
|
---|
134 | {\citetitle[../tut/tut.html]{Python Tutorial}}
|
---|
135 | \lineii{whatsnew/}
|
---|
136 | {\citetitle[../whatsnew/whatsnew24.html]
|
---|
137 | {What's New in Python \shortversion}}
|
---|
138 | \end{tableii}
|
---|
139 |
|
---|
140 | \term{Format-Specific Output}
|
---|
141 | Most output formats have a directory which contains a
|
---|
142 | \file{Makefile} which controls the generation of that format
|
---|
143 | and provides storage for the formatted documents. The only
|
---|
144 | variations within this category are the Portable Document
|
---|
145 | Format (PDF) and PostScript versions are placed in the
|
---|
146 | directories \file{paper-a4/} and \file{paper-letter/} (this
|
---|
147 | causes all the temporary files created by \LaTeX{} to be kept
|
---|
148 | in the same place for each paper size, where they can be more
|
---|
149 | easily ignored).
|
---|
150 |
|
---|
151 | \begin{tableii}{p{.75in}|p{3in}}{filenq}{Directory}{Output Formats}
|
---|
152 | \lineii{html/}{HTML output}
|
---|
153 | \lineii{info/}{GNU info output}
|
---|
154 | \lineii{isilo/}{\ulink{iSilo}{http://www.isilo.com/}
|
---|
155 | documents (for Palm OS devices)}
|
---|
156 | \lineii{paper-a4/}{PDF and PostScript, A4 paper}
|
---|
157 | \lineii{paper-letter/}{PDF and PostScript, US-Letter paper}
|
---|
158 | \end{tableii}
|
---|
159 |
|
---|
160 | \term{Supplemental Files}
|
---|
161 | Some additional directories are used to store supplemental
|
---|
162 | files used for the various processes. Directories are
|
---|
163 | included for the shared \LaTeX{} document classes, the
|
---|
164 | \LaTeX2HTML support, template files for various document
|
---|
165 | components, and the scripts used to perform various steps in
|
---|
166 | the formatting processes.
|
---|
167 |
|
---|
168 | \begin{tableii}{p{.75in}|p{3in}}{filenq}{Directory}{Contents}
|
---|
169 | \lineii{commontex/}{Document content shared among documents}
|
---|
170 | \lineii{perl/} {Support for \LaTeX2HTML processing}
|
---|
171 | \lineii{templates/}{Example files for source documents}
|
---|
172 | \lineii{texinputs/}{Style implementation for \LaTeX}
|
---|
173 | \lineii{tools/} {Custom processing scripts}
|
---|
174 | \end{tableii}
|
---|
175 |
|
---|
176 | \end{definitions}
|
---|
177 |
|
---|
178 |
|
---|
179 | \section{Style Guide \label{style-guide}}
|
---|
180 |
|
---|
181 | The Python documentation should follow the \citetitle
|
---|
182 | [http://developer.apple.com/documentation/UserExperience/Conceptual/APStyleGuide/AppleStyleGuide2003.pdf]
|
---|
183 | {Apple Publications Style Guide} wherever possible. This particular
|
---|
184 | style guide was selected mostly because it seems reasonable and is
|
---|
185 | easy to get online.
|
---|
186 |
|
---|
187 | Topics which are not covered in the Apple's style guide will be
|
---|
188 | discussed in this document if necessary.
|
---|
189 |
|
---|
190 | Footnotes are generally discouraged due to the pain of using
|
---|
191 | footnotes in the HTML conversion of documents. Footnotes may be
|
---|
192 | used when they are the best way to present specific information.
|
---|
193 | When a footnote reference is added at the end of the sentence, it
|
---|
194 | should follow the sentence-ending punctuation. The \LaTeX{} markup
|
---|
195 | should appear something like this:
|
---|
196 |
|
---|
197 | \begin{verbatim}
|
---|
198 | This sentence has a footnote reference.%
|
---|
199 | \footnote{This is the footnote text.}
|
---|
200 | \end{verbatim}
|
---|
201 |
|
---|
202 | Footnotes may appear in the middle of sentences where appropriate.
|
---|
203 |
|
---|
204 | Many special names are used in the Python documentation, including
|
---|
205 | the names of operating systems, programming languages, standards
|
---|
206 | bodies, and the like. Many of these were assigned \LaTeX{} macros
|
---|
207 | at some point in the distant past, and these macros lived on long
|
---|
208 | past their usefulness. In the current markup, most of these entities
|
---|
209 | are not assigned any special markup, but the preferred spellings are
|
---|
210 | given here to aid authors in maintaining the consistency of
|
---|
211 | presentation in the Python documentation.
|
---|
212 |
|
---|
213 | Other terms and words deserve special mention as well; these conventions
|
---|
214 | should be used to ensure consistency throughout the documentation:
|
---|
215 |
|
---|
216 | \begin{description}
|
---|
217 | \item[CPU]
|
---|
218 | For ``central processing unit.'' Many style guides say this
|
---|
219 | should be spelled out on the first use (and if you must use it,
|
---|
220 | do so!). For the Python documentation, this abbreviation should
|
---|
221 | be avoided since there's no reasonable way to predict which occurrence
|
---|
222 | will be the first seen by the reader. It is better to use the
|
---|
223 | word ``processor'' instead.
|
---|
224 |
|
---|
225 | \item[\POSIX]
|
---|
226 | The name assigned to a particular group of standards. This is
|
---|
227 | always uppercase. Use the macro \macro{POSIX} to represent this
|
---|
228 | name.
|
---|
229 |
|
---|
230 | \item[Python]
|
---|
231 | The name of our favorite programming language is always
|
---|
232 | capitalized.
|
---|
233 |
|
---|
234 | \item[Unicode]
|
---|
235 | The name of a character set and matching encoding. This is
|
---|
236 | always written capitalized.
|
---|
237 |
|
---|
238 | \item[\UNIX]
|
---|
239 | The name of the operating system developed at AT\&T Bell Labs
|
---|
240 | in the early 1970s. Use the macro \macro{UNIX} to use this
|
---|
241 | name.
|
---|
242 | \end{description}
|
---|
243 |
|
---|
244 |
|
---|
245 | \section{\LaTeX{} Primer \label{latex-primer}}
|
---|
246 |
|
---|
247 | This section is a brief introduction to \LaTeX{} concepts and
|
---|
248 | syntax, to provide authors enough information to author documents
|
---|
249 | productively without having to become ``\TeX{}nicians.'' This does
|
---|
250 | not teach everything needed to know about writing \LaTeX{} for
|
---|
251 | Python documentation; many of the standard ``environments'' are not
|
---|
252 | described here (though you will learn how to mark something as an
|
---|
253 | environment).
|
---|
254 |
|
---|
255 | Perhaps the most important concept to keep in mind while marking up
|
---|
256 | Python documentation is that while \TeX{} is unstructured, \LaTeX{} was
|
---|
257 | designed as a layer on top of \TeX{} which specifically supports
|
---|
258 | structured markup. The Python-specific markup is intended to extend
|
---|
259 | the structure provided by standard \LaTeX{} document classes to
|
---|
260 | support additional information specific to Python.
|
---|
261 |
|
---|
262 | \LaTeX{} documents contain two parts: the preamble and the body.
|
---|
263 | The preamble is used to specify certain metadata about the document
|
---|
264 | itself, such as the title, the list of authors, the date, and the
|
---|
265 | \emph{class} the document belongs to. Additional information used
|
---|
266 | to control index generation and the use of bibliographic databases
|
---|
267 | can also be placed in the preamble. For most authors, the preamble
|
---|
268 | can be most easily created by copying it from an existing document
|
---|
269 | and modifying a few key pieces of information.
|
---|
270 |
|
---|
271 | The \dfn{class} of a document is used to place a document within a
|
---|
272 | broad category of documents and set some fundamental formatting
|
---|
273 | properties. For Python documentation, two classes are used: the
|
---|
274 | \code{manual} class and the \code{howto} class. These classes also
|
---|
275 | define the additional markup used to document Python concepts and
|
---|
276 | structures. Specific information about these classes is provided in
|
---|
277 | section \ref{classes}, ``Document Classes,'' below. The first thing
|
---|
278 | in the preamble is the declaration of the document's class.
|
---|
279 |
|
---|
280 | After the class declaration, a number of \emph{macros} are used to
|
---|
281 | provide further information about the document and setup any
|
---|
282 | additional markup that is needed. No output is generated from the
|
---|
283 | preamble; it is an error to include free text in the preamble
|
---|
284 | because it would cause output.
|
---|
285 |
|
---|
286 | The document body follows the preamble. This contains all the
|
---|
287 | printed components of the document marked up structurally. Generic
|
---|
288 | \LaTeX{} structures include hierarchical sections, numbered and
|
---|
289 | bulleted lists, and special structures for the document abstract and
|
---|
290 | indexes.
|
---|
291 |
|
---|
292 | \subsection{Syntax \label{latex-syntax}}
|
---|
293 |
|
---|
294 | There are some things that an author of Python documentation needs
|
---|
295 | to know about \LaTeX{} syntax.
|
---|
296 |
|
---|
297 | A \dfn{comment} is started by the ``percent'' character
|
---|
298 | (\character{\%}) and continues through the end of the line
|
---|
299 | \emph{and all leading whitespace on the following line}. This is
|
---|
300 | a little different from any programming language I know of, so an
|
---|
301 | example is in order:
|
---|
302 |
|
---|
303 | \begin{verbatim}
|
---|
304 | This is text.% comment
|
---|
305 | This is more text. % another comment
|
---|
306 | Still more text.
|
---|
307 | \end{verbatim}
|
---|
308 |
|
---|
309 | The first non-comment character following the first comment is the
|
---|
310 | letter \character{T} on the second line; the leading whitespace on
|
---|
311 | that line is consumed as part of the first comment. This means
|
---|
312 | that there is no space between the first and second sentences, so
|
---|
313 | the period and letter \character{T} will be directly adjacent in
|
---|
314 | the typeset document.
|
---|
315 |
|
---|
316 | Note also that though the first non-comment character after the
|
---|
317 | second comment is the letter \character{S}, there is whitespace
|
---|
318 | preceding the comment, so the two sentences are separated as
|
---|
319 | expected.
|
---|
320 |
|
---|
321 | A \dfn{group} is an enclosure for a collection of text and
|
---|
322 | commands which encloses the formatting context and constrains the
|
---|
323 | scope of any changes to that context made by commands within the
|
---|
324 | group. Groups can be nested hierarchically. The formatting
|
---|
325 | context includes the font and the definition of additional macros
|
---|
326 | (or overrides of macros defined in outer groups). Syntactically,
|
---|
327 | groups are enclosed in braces:
|
---|
328 |
|
---|
329 | \begin{verbatim}
|
---|
330 | {text in a group}
|
---|
331 | \end{verbatim}
|
---|
332 |
|
---|
333 | An alternate syntax for a group using brackets, \code{[...]}, is
|
---|
334 | used by macros and environment constructors which take optional
|
---|
335 | parameters; brackets do not normally hold syntactic significance.
|
---|
336 | A degenerate group, containing only one atomic bit of content,
|
---|
337 | does not need to have an explicit group, unless it is required to
|
---|
338 | avoid ambiguity. Since Python tends toward the explicit, groups
|
---|
339 | are also made explicit in the documentation markup.
|
---|
340 |
|
---|
341 | Groups are used only sparingly in the Python documentation, except
|
---|
342 | for their use in marking parameters to macros and environments.
|
---|
343 |
|
---|
344 | A \dfn{macro} is usually a simple construct which is identified by
|
---|
345 | name and can take some number of parameters. In normal \LaTeX{}
|
---|
346 | usage, one of these can be optional. The markup is introduced
|
---|
347 | using the backslash character (\character{\e}), and the name is
|
---|
348 | given by alphabetic characters (no digits, hyphens, or
|
---|
349 | underscores). Required parameters should be marked as a group,
|
---|
350 | and optional parameters should be marked using the alternate
|
---|
351 | syntax for a group.
|
---|
352 |
|
---|
353 | For example, a macro which takes a single parameter
|
---|
354 | would appear like this:
|
---|
355 |
|
---|
356 | \begin{verbatim}
|
---|
357 | \name{parameter}
|
---|
358 | \end{verbatim}
|
---|
359 |
|
---|
360 | A macro which takes an optional parameter would be typed like this
|
---|
361 | when the optional parameter is given:
|
---|
362 |
|
---|
363 | \begin{verbatim}
|
---|
364 | \name[optional]
|
---|
365 | \end{verbatim}
|
---|
366 |
|
---|
367 | If both optional and required parameters are to be required, it
|
---|
368 | looks like this:
|
---|
369 |
|
---|
370 | \begin{verbatim}
|
---|
371 | \name[optional]{required}
|
---|
372 | \end{verbatim}
|
---|
373 |
|
---|
374 | A macro name may be followed by a space or newline; a space
|
---|
375 | between the macro name and any parameters will be consumed, but
|
---|
376 | this usage is not practiced in the Python documentation. Such a
|
---|
377 | space is still consumed if there are no parameters to the macro,
|
---|
378 | in which case inserting an empty group (\code{\{\}}) or explicit
|
---|
379 | word space (\samp{\e\ }) immediately after the macro name helps to
|
---|
380 | avoid running the expansion of the macro into the following text.
|
---|
381 | Macros which take no parameters but which should not be followed
|
---|
382 | by a word space do not need special treatment if the following
|
---|
383 | character in the document source if not a name character (such as
|
---|
384 | punctuation).
|
---|
385 |
|
---|
386 | Each line of this example shows an appropriate way to write text
|
---|
387 | which includes a macro which takes no parameters:
|
---|
388 |
|
---|
389 | \begin{verbatim}
|
---|
390 | This \UNIX{} is followed by a space.
|
---|
391 | This \UNIX\ is also followed by a space.
|
---|
392 | \UNIX, followed by a comma, needs no additional markup.
|
---|
393 | \end{verbatim}
|
---|
394 |
|
---|
395 | An \dfn{environment} is a larger construct than a macro, and can
|
---|
396 | be used for things with more content than would conveniently fit
|
---|
397 | in a macro parameter. They are primarily used when formatting
|
---|
398 | parameters need to be changed before and after a large chunk of
|
---|
399 | content, but the content itself needs to be highly flexible. Code
|
---|
400 | samples are presented using an environment, and descriptions of
|
---|
401 | functions, methods, and classes are also marked using environments.
|
---|
402 |
|
---|
403 | Since the content of an environment is free-form and can consist
|
---|
404 | of several paragraphs, they are actually marked using a pair of
|
---|
405 | macros: \macro{begin} and \macro{end}. These macros both take the
|
---|
406 | name of the environment as a parameter. An example is the
|
---|
407 | environment used to mark the abstract of a document:
|
---|
408 |
|
---|
409 | \begin{verbatim}
|
---|
410 | \begin{abstract}
|
---|
411 | This is the text of the abstract. It concisely explains what
|
---|
412 | information is found in the document.
|
---|
413 |
|
---|
414 | It can consist of multiple paragraphs.
|
---|
415 | \end{abstract}
|
---|
416 | \end{verbatim}
|
---|
417 |
|
---|
418 | An environment can also have required and optional parameters of
|
---|
419 | its own. These follow the parameter of the \macro{begin} macro.
|
---|
420 | This example shows an environment which takes a single required
|
---|
421 | parameter:
|
---|
422 |
|
---|
423 | \begin{verbatim}
|
---|
424 | \begin{datadesc}{controlnames}
|
---|
425 | A 33-element string array that contains the \ASCII{} mnemonics for
|
---|
426 | the thirty-two \ASCII{} control characters from 0 (NUL) to 0x1f
|
---|
427 | (US), in order, plus the mnemonic \samp{SP} for the space character.
|
---|
428 | \end{datadesc}
|
---|
429 | \end{verbatim}
|
---|
430 |
|
---|
431 | There are a number of less-used marks in \LaTeX{} which are used
|
---|
432 | to enter characters which are not found in \ASCII{} or which a
|
---|
433 | considered special, or \emph{active} in \TeX{} or \LaTeX. Given
|
---|
434 | that these are often used adjacent to other characters, the markup
|
---|
435 | required to produce the proper character may need to be followed
|
---|
436 | by a space or an empty group, or the markup can be enclosed in a
|
---|
437 | group. Some which are found in Python documentation are:
|
---|
438 |
|
---|
439 | \begin{tableii}{c|l}{textrm}{Character}{Markup}
|
---|
440 | \lineii{\textasciicircum}{\code{\e textasciicircum}}
|
---|
441 | \lineii{\textasciitilde}{\code{\e textasciitilde}}
|
---|
442 | \lineii{\textgreater}{\code{\e textgreater}}
|
---|
443 | \lineii{\textless}{\code{\e textless}}
|
---|
444 | \lineii{\c c}{\code{\e c c}}
|
---|
445 | \lineii{\"o}{\code{\e"o}}
|
---|
446 | \lineii{\o}{\code{\e o}}
|
---|
447 | \end{tableii}
|
---|
448 |
|
---|
449 |
|
---|
450 | \subsection{Hierarchical Structure \label{latex-structure}}
|
---|
451 |
|
---|
452 | \LaTeX{} expects documents to be arranged in a conventional,
|
---|
453 | hierarchical way, with chapters, sections, sub-sections,
|
---|
454 | appendixes, and the like. These are marked using macros rather
|
---|
455 | than environments, probably because the end of a section can be
|
---|
456 | safely inferred when a section of equal or higher level starts.
|
---|
457 |
|
---|
458 | There are six ``levels'' of sectioning in the document classes
|
---|
459 | used for Python documentation, and the deepest two
|
---|
460 | levels\footnote{The deepest levels have the highest numbers in the
|
---|
461 | table.} are not used. The levels are:
|
---|
462 |
|
---|
463 | \begin{tableiii}{c|l|c}{textrm}{Level}{Macro Name}{Notes}
|
---|
464 | \lineiii{1}{\macro{chapter}}{(1)}
|
---|
465 | \lineiii{2}{\macro{section}}{}
|
---|
466 | \lineiii{3}{\macro{subsection}}{}
|
---|
467 | \lineiii{4}{\macro{subsubsection}}{}
|
---|
468 | \lineiii{5}{\macro{paragraph}}{(2)}
|
---|
469 | \lineiii{6}{\macro{subparagraph}}{}
|
---|
470 | \end{tableiii}
|
---|
471 |
|
---|
472 | \noindent
|
---|
473 | Notes:
|
---|
474 |
|
---|
475 | \begin{description}
|
---|
476 | \item[(1)]
|
---|
477 | Only used for the \code{manual} documents, as described in
|
---|
478 | section \ref{classes}, ``Document Classes.''
|
---|
479 | \item[(2)]
|
---|
480 | Not the same as a paragraph of text; nobody seems to use this.
|
---|
481 | \end{description}
|
---|
482 |
|
---|
483 |
|
---|
484 | \subsection{Common Environments \label{latex-environments}}
|
---|
485 |
|
---|
486 | \LaTeX{} provides a variety of environments even without the
|
---|
487 | additional markup provided by the Python-specific document classes
|
---|
488 | introduced in the next section. The following environments are
|
---|
489 | provided as part of standard \LaTeX{} and are being used in the
|
---|
490 | standard Python documentation; descriptions will be added here as
|
---|
491 | time allows.
|
---|
492 |
|
---|
493 | \begin{verbatim}
|
---|
494 | abstract
|
---|
495 | alltt
|
---|
496 | description
|
---|
497 | displaymath
|
---|
498 | document
|
---|
499 | enumerate
|
---|
500 | figure
|
---|
501 | flushleft
|
---|
502 | itemize
|
---|
503 | list
|
---|
504 | math
|
---|
505 | quotation
|
---|
506 | quote
|
---|
507 | sloppypar
|
---|
508 | verbatim
|
---|
509 | \end{verbatim}
|
---|
510 |
|
---|
511 |
|
---|
512 | \section{Document Classes \label{classes}}
|
---|
513 |
|
---|
514 | Two \LaTeX{} document classes are defined specifically for use with
|
---|
515 | the Python documentation. The \code{manual} class is for large
|
---|
516 | documents which are sectioned into chapters, and the \code{howto}
|
---|
517 | class is for smaller documents.
|
---|
518 |
|
---|
519 | The \code{manual} documents are larger and are used for most of the
|
---|
520 | standard documents. This document class is based on the standard
|
---|
521 | \LaTeX{} \code{report} class and is formatted very much like a long
|
---|
522 | technical report. The \citetitle[../ref/ref.html]{Python Reference
|
---|
523 | Manual} is a good example of a \code{manual} document, and the
|
---|
524 | \citetitle[../lib/lib.html]{Python Library Reference} is a large
|
---|
525 | example.
|
---|
526 |
|
---|
527 | The \code{howto} documents are shorter, and don't have the large
|
---|
528 | structure of the \code{manual} documents. This class is based on
|
---|
529 | the standard \LaTeX{} \code{article} class and is formatted somewhat
|
---|
530 | like the Linux Documentation Project's ``HOWTO'' series as done
|
---|
531 | originally using the LinuxDoc software. The original intent for the
|
---|
532 | document class was that it serve a similar role as the LDP's HOWTO
|
---|
533 | series, but the applicability of the class turns out to be somewhat
|
---|
534 | broader. This class is used for ``how-to'' documents (this
|
---|
535 | document is an example) and for shorter reference manuals for small,
|
---|
536 | fairly cohesive module libraries. Examples of the later use include
|
---|
537 | \citetitle[http://starship.python.net/crew/fdrake/manuals/krb5py/krb5py.html]{Using
|
---|
538 | Kerberos from Python}, which contains reference material for an
|
---|
539 | extension package. These documents are roughly equivalent to a
|
---|
540 | single chapter from a larger work.
|
---|
541 |
|
---|
542 |
|
---|
543 | \section{Special Markup Constructs \label{special-constructs}}
|
---|
544 |
|
---|
545 | The Python document classes define a lot of new environments and
|
---|
546 | macros. This section contains the reference material for these
|
---|
547 | facilities. Documentation for ``standard'' \LaTeX{} constructs is
|
---|
548 | not included here, though they are used in the Python documentation.
|
---|
549 |
|
---|
550 | \subsection{Markup for the Preamble \label{preamble-info}}
|
---|
551 |
|
---|
552 | \begin{macrodesc}{release}{\p{ver}}
|
---|
553 | Set the version number for the software described in the
|
---|
554 | document.
|
---|
555 | \end{macrodesc}
|
---|
556 |
|
---|
557 | \begin{macrodesc}{setshortversion}{\p{sver}}
|
---|
558 | Specify the ``short'' version number of the documented software
|
---|
559 | to be \var{sver}.
|
---|
560 | \end{macrodesc}
|
---|
561 |
|
---|
562 | \subsection{Meta-information Markup \label{meta-info}}
|
---|
563 |
|
---|
564 | \begin{macrodesc}{sectionauthor}{\p{author}\p{email}}
|
---|
565 | Identifies the author of the current section. \var{author}
|
---|
566 | should be the author's name such that it can be used for
|
---|
567 | presentation (though it isn't), and \var{email} should be the
|
---|
568 | author's email address. The domain name portion of
|
---|
569 | the address should be lower case.
|
---|
570 |
|
---|
571 | No presentation is generated from this markup, but it is used to
|
---|
572 | help keep track of contributions.
|
---|
573 | \end{macrodesc}
|
---|
574 |
|
---|
575 | \subsection{Information Units \label{info-units}}
|
---|
576 |
|
---|
577 | XXX Explain terminology, or come up with something more ``lay.''
|
---|
578 |
|
---|
579 | There are a number of environments used to describe specific
|
---|
580 | features provided by modules. Each environment requires
|
---|
581 | parameters needed to provide basic information about what is being
|
---|
582 | described, and the environment content should be the description.
|
---|
583 | Most of these environments make entries in the general index (if
|
---|
584 | one is being produced for the document); if no index entry is
|
---|
585 | desired, non-indexing variants are available for many of these
|
---|
586 | environments. The environments have names of the form
|
---|
587 | \code{\var{feature}desc}, and the non-indexing variants are named
|
---|
588 | \code{\var{feature}descni}. The available variants are explicitly
|
---|
589 | included in the list below.
|
---|
590 |
|
---|
591 | For each of these environments, the first parameter, \var{name},
|
---|
592 | provides the name by which the feature is accessed.
|
---|
593 |
|
---|
594 | Environments which describe features of objects within a module,
|
---|
595 | such as object methods or data attributes, allow an optional
|
---|
596 | \var{type name} parameter. When the feature is an attribute of
|
---|
597 | class instances, \var{type name} only needs to be given if the
|
---|
598 | class was not the most recently described class in the module; the
|
---|
599 | \var{name} value from the most recent \env{classdesc} is implied.
|
---|
600 | For features of built-in or extension types, the \var{type name}
|
---|
601 | value should always be provided. Another special case includes
|
---|
602 | methods and members of general ``protocols,'' such as the
|
---|
603 | formatter and writer protocols described for the
|
---|
604 | \module{formatter} module: these may be documented without any
|
---|
605 | specific implementation classes, and will always require the
|
---|
606 | \var{type name} parameter to be provided.
|
---|
607 |
|
---|
608 | \begin{envdesc}{cfuncdesc}{\p{type}\p{name}\p{args}}
|
---|
609 | Environment used to described a C function. The \var{type}
|
---|
610 | should be specified as a \keyword{typedef} name, \code{struct
|
---|
611 | \var{tag}}, or the name of a primitive type. If it is a pointer
|
---|
612 | type, the trailing asterisk should not be preceded by a space.
|
---|
613 | \var{name} should be the name of the function (or function-like
|
---|
614 | pre-processor macro), and \var{args} should give the types and
|
---|
615 | names of the parameters. The names need to be given so they may
|
---|
616 | be used in the description.
|
---|
617 | \end{envdesc}
|
---|
618 |
|
---|
619 | \begin{envdesc}{cmemberdesc}{\p{container}\p{type}\p{name}}
|
---|
620 | Description for a structure member. \var{container} should be
|
---|
621 | the \keyword{typedef} name, if there is one, otherwise if should
|
---|
622 | be \samp{struct \var{tag}}. The type of the member should given
|
---|
623 | as \var{type}, and the name should be given as \var{name}. The
|
---|
624 | text of the description should include the range of values
|
---|
625 | allowed, how the value should be interpreted, and whether the
|
---|
626 | value can be changed. References to structure members in text
|
---|
627 | should use the \macro{member} macro.
|
---|
628 | \end{envdesc}
|
---|
629 |
|
---|
630 | \begin{envdesc}{csimplemacrodesc}{\p{name}}
|
---|
631 | Documentation for a ``simple'' macro. Simple macros are macros
|
---|
632 | which are used for code expansion, but which do not take
|
---|
633 | arguments so cannot be described as functions. This is not to
|
---|
634 | be used for simple constant definitions. Examples of its use
|
---|
635 | in the Python documentation include
|
---|
636 | \csimplemacro{PyObject_HEAD} and
|
---|
637 | \csimplemacro{Py_BEGIN_ALLOW_THREADS}.
|
---|
638 | \end{envdesc}
|
---|
639 |
|
---|
640 | \begin{envdesc}{ctypedesc}{\op{tag}\p{name}}
|
---|
641 | Environment used to described a C type. The \var{name}
|
---|
642 | parameter should be the \keyword{typedef} name. If the type is
|
---|
643 | defined as a \keyword{struct} without a \keyword{typedef},
|
---|
644 | \var{name} should have the form \code{struct \var{tag}}.
|
---|
645 | \var{name} will be added to the index unless \var{tag} is
|
---|
646 | provided, in which case \var{tag} will be used instead.
|
---|
647 | \var{tag} should not be used for a \keyword{typedef} name.
|
---|
648 | \end{envdesc}
|
---|
649 |
|
---|
650 | \begin{envdesc}{cvardesc}{\p{type}\p{name}}
|
---|
651 | Description of a global C variable. \var{type} should be the
|
---|
652 | \keyword{typedef} name, \code{struct \var{tag}}, or the name of
|
---|
653 | a primitive type. If variable has a pointer type, the trailing
|
---|
654 | asterisk should \emph{not} be preceded by a space.
|
---|
655 | \end{envdesc}
|
---|
656 |
|
---|
657 | \begin{envdesc}{datadesc}{\p{name}}
|
---|
658 | This environment is used to document global data in a module,
|
---|
659 | including both variables and values used as ``defined
|
---|
660 | constants.'' Class and object attributes are not documented
|
---|
661 | using this environment.
|
---|
662 | \end{envdesc}
|
---|
663 | \begin{envdesc}{datadescni}{\p{name}}
|
---|
664 | Like \env{datadesc}, but without creating any index entries.
|
---|
665 | \end{envdesc}
|
---|
666 |
|
---|
667 | \begin{envdesc}{excclassdesc}{\p{name}\p{constructor parameters}}
|
---|
668 | Describe an exception defined by a class. \var{constructor
|
---|
669 | parameters} should not include the \var{self} parameter or
|
---|
670 | the parentheses used in the call syntax. To describe an
|
---|
671 | exception class without describing the parameters to its
|
---|
672 | constructor, use the \env{excdesc} environment.
|
---|
673 | \end{envdesc}
|
---|
674 |
|
---|
675 | \begin{envdesc}{excdesc}{\p{name}}
|
---|
676 | Describe an exception. In the case of class exceptions, the
|
---|
677 | constructor parameters are not described; use \env{excclassdesc}
|
---|
678 | to describe an exception class and its constructor.
|
---|
679 | \end{envdesc}
|
---|
680 |
|
---|
681 | \begin{envdesc}{funcdesc}{\p{name}\p{parameters}}
|
---|
682 | Describe a module-level function. \var{parameters} should
|
---|
683 | not include the parentheses used in the call syntax. Object
|
---|
684 | methods are not documented using this environment. Bound object
|
---|
685 | methods placed in the module namespace as part of the public
|
---|
686 | interface of the module are documented using this, as they are
|
---|
687 | equivalent to normal functions for most purposes.
|
---|
688 |
|
---|
689 | The description should include information about the parameters
|
---|
690 | required and how they are used (especially whether mutable
|
---|
691 | objects passed as parameters are modified), side effects, and
|
---|
692 | possible exceptions. A small example may be provided.
|
---|
693 | \end{envdesc}
|
---|
694 | \begin{envdesc}{funcdescni}{\p{name}\p{parameters}}
|
---|
695 | Like \env{funcdesc}, but without creating any index entries.
|
---|
696 | \end{envdesc}
|
---|
697 |
|
---|
698 | \begin{envdesc}{classdesc}{\p{name}\p{constructor parameters}}
|
---|
699 | Describe a class and its constructor. \var{constructor
|
---|
700 | parameters} should not include the \var{self} parameter or
|
---|
701 | the parentheses used in the call syntax.
|
---|
702 | \end{envdesc}
|
---|
703 |
|
---|
704 | \begin{envdesc}{classdesc*}{\p{name}}
|
---|
705 | Describe a class without describing the constructor. This can
|
---|
706 | be used to describe classes that are merely containers for
|
---|
707 | attributes or which should never be instantiated or subclassed
|
---|
708 | by user code.
|
---|
709 | \end{envdesc}
|
---|
710 |
|
---|
711 | \begin{envdesc}{memberdesc}{\op{type name}\p{name}}
|
---|
712 | Describe an object data attribute. The description should
|
---|
713 | include information about the type of the data to be expected
|
---|
714 | and whether it may be changed directly.
|
---|
715 | \end{envdesc}
|
---|
716 | \begin{envdesc}{memberdescni}{\op{type name}\p{name}}
|
---|
717 | Like \env{memberdesc}, but without creating any index entries.
|
---|
718 | \end{envdesc}
|
---|
719 |
|
---|
720 | \begin{envdesc}{methoddesc}{\op{type name}\p{name}\p{parameters}}
|
---|
721 | Describe an object method. \var{parameters} should not include
|
---|
722 | the \var{self} parameter or the parentheses used in the call
|
---|
723 | syntax. The description should include similar information to
|
---|
724 | that described for \env{funcdesc}.
|
---|
725 | \end{envdesc}
|
---|
726 | \begin{envdesc}{methoddescni}{\op{type name}\p{name}\p{parameters}}
|
---|
727 | Like \env{methoddesc}, but without creating any index entries.
|
---|
728 | \end{envdesc}
|
---|
729 |
|
---|
730 |
|
---|
731 | \subsection{Showing Code Examples \label{showing-examples}}
|
---|
732 |
|
---|
733 | Examples of Python source code or interactive sessions are
|
---|
734 | represented as \env{verbatim} environments. This environment
|
---|
735 | is a standard part of \LaTeX{}. It is important to only use
|
---|
736 | spaces for indentation in code examples since \TeX{} drops tabs
|
---|
737 | instead of converting them to spaces.
|
---|
738 |
|
---|
739 | Representing an interactive session requires including the prompts
|
---|
740 | and output along with the Python code. No special markup is
|
---|
741 | required for interactive sessions. After the last line of input
|
---|
742 | or output presented, there should not be an ``unused'' primary
|
---|
743 | prompt; this is an example of what \emph{not} to do:
|
---|
744 |
|
---|
745 | \begin{verbatim}
|
---|
746 | >>> 1 + 1
|
---|
747 | 2
|
---|
748 | >>>
|
---|
749 | \end{verbatim}
|
---|
750 |
|
---|
751 | Within the \env{verbatim} environment, characters special to
|
---|
752 | \LaTeX{} do not need to be specially marked in any way. The entire
|
---|
753 | example will be presented in a monospaced font; no attempt at
|
---|
754 | ``pretty-printing'' is made, as the environment must work for
|
---|
755 | non-Python code and non-code displays. There should be no blank
|
---|
756 | lines at the top or bottom of any \env{verbatim} display.
|
---|
757 |
|
---|
758 | Longer displays of verbatim text may be included by storing the
|
---|
759 | example text in an external file containing only plain text. The
|
---|
760 | file may be included using the standard \macro{verbatiminput}
|
---|
761 | macro; this macro takes a single argument naming the file
|
---|
762 | containing the text. For example, to include the Python source
|
---|
763 | file \file{example.py}, use:
|
---|
764 |
|
---|
765 | \begin{verbatim}
|
---|
766 | \verbatiminput{example.py}
|
---|
767 | \end{verbatim}
|
---|
768 |
|
---|
769 | Use of \macro{verbatiminput} allows easier use of special editing
|
---|
770 | modes for the included file. The file should be placed in the
|
---|
771 | same directory as the \LaTeX{} files for the document.
|
---|
772 |
|
---|
773 | The Python Documentation Special Interest Group has discussed a
|
---|
774 | number of approaches to creating pretty-printed code displays and
|
---|
775 | interactive sessions; see the Doc-SIG area on the Python Web site
|
---|
776 | for more information on this topic.
|
---|
777 |
|
---|
778 |
|
---|
779 | \subsection{Inline Markup \label{inline-markup}}
|
---|
780 |
|
---|
781 | The macros described in this section are used to mark just about
|
---|
782 | anything interesting in the document text. They may be used in
|
---|
783 | headings (though anything involving hyperlinks should be avoided
|
---|
784 | there) as well as in the body text.
|
---|
785 |
|
---|
786 | \begin{macrodesc}{bfcode}{\p{text}}
|
---|
787 | Like \macro{code}, but also makes the font bold-face.
|
---|
788 | \end{macrodesc}
|
---|
789 |
|
---|
790 | \begin{macrodesc}{cdata}{\p{name}}
|
---|
791 | The name of a C-language variable.
|
---|
792 | \end{macrodesc}
|
---|
793 |
|
---|
794 | \begin{macrodesc}{cfunction}{\p{name}}
|
---|
795 | The name of a C-language function. \var{name} should include the
|
---|
796 | function name and the trailing parentheses.
|
---|
797 | \end{macrodesc}
|
---|
798 |
|
---|
799 | \begin{macrodesc}{character}{\p{char}}
|
---|
800 | A character when discussing the character rather than a one-byte
|
---|
801 | string value. The character will be typeset as with \macro{samp}.
|
---|
802 | \end{macrodesc}
|
---|
803 |
|
---|
804 | \begin{macrodesc}{citetitle}{\op{url}\p{title}}
|
---|
805 | A title for a referenced publication. If \var{url} is specified,
|
---|
806 | the title will be made into a hyperlink when formatted as HTML.
|
---|
807 | \end{macrodesc}
|
---|
808 |
|
---|
809 | \begin{macrodesc}{class}{\p{name}}
|
---|
810 | A class name; a dotted name may be used.
|
---|
811 | \end{macrodesc}
|
---|
812 |
|
---|
813 | \begin{macrodesc}{code}{\p{text}}
|
---|
814 | A short code fragment or literal constant value. Typically, it
|
---|
815 | should not include any spaces since no quotation marks are
|
---|
816 | added.
|
---|
817 | \end{macrodesc}
|
---|
818 |
|
---|
819 | \begin{macrodesc}{constant}{\p{name}}
|
---|
820 | The name of a ``defined'' constant. This may be a C-language
|
---|
821 | \code{\#define} or a Python variable that is not intended to be
|
---|
822 | changed.
|
---|
823 | \end{macrodesc}
|
---|
824 |
|
---|
825 | \begin{macrodesc}{csimplemacro}{\p{name}}
|
---|
826 | The name of a ``simple'' macro. Simple macros are macros
|
---|
827 | which are used for code expansion, but which do not take
|
---|
828 | arguments so cannot be described as functions. This is not to
|
---|
829 | be used for simple constant definitions. Examples of its use
|
---|
830 | in the Python documentation include
|
---|
831 | \csimplemacro{PyObject_HEAD} and
|
---|
832 | \csimplemacro{Py_BEGIN_ALLOW_THREADS}.
|
---|
833 | \end{macrodesc}
|
---|
834 |
|
---|
835 | \begin{macrodesc}{ctype}{\p{name}}
|
---|
836 | The name of a C \keyword{typedef} or structure. For structures
|
---|
837 | defined without a \keyword{typedef}, use \code{\e ctype\{struct
|
---|
838 | struct_tag\}} to make it clear that the \keyword{struct} is
|
---|
839 | required.
|
---|
840 | \end{macrodesc}
|
---|
841 |
|
---|
842 | \begin{macrodesc}{deprecated}{\p{version}\p{what to do}}
|
---|
843 | Declare whatever is being described as being deprecated starting
|
---|
844 | with release \var{version}. The text given as \var{what to do}
|
---|
845 | should recommend something to use instead. It should be
|
---|
846 | complete sentences. The entire deprecation notice will be
|
---|
847 | presented as a separate paragraph; it should either precede or
|
---|
848 | succeed the description of the deprecated feature.
|
---|
849 | \end{macrodesc}
|
---|
850 |
|
---|
851 | \begin{macrodesc}{dfn}{\p{term}}
|
---|
852 | Mark the defining instance of \var{term} in the text. (No index
|
---|
853 | entries are generated.)
|
---|
854 | \end{macrodesc}
|
---|
855 |
|
---|
856 | \begin{macrodesc}{e}{}
|
---|
857 | Produces a backslash. This is convenient in \macro{code},
|
---|
858 | \macro{file}, and similar macros, and the \env{alltt}
|
---|
859 | environment, and is only defined there. To
|
---|
860 | create a backslash in ordinary text (such as the contents of the
|
---|
861 | \macro{citetitle} macro), use the standard \macro{textbackslash}
|
---|
862 | macro.
|
---|
863 | \end{macrodesc}
|
---|
864 |
|
---|
865 | \begin{macrodesc}{email}{\p{address}}
|
---|
866 | An email address. Note that this is \emph{not} hyperlinked in
|
---|
867 | any of the possible output formats. The domain name portion of
|
---|
868 | the address should be lower case.
|
---|
869 | \end{macrodesc}
|
---|
870 |
|
---|
871 | \begin{macrodesc}{emph}{\p{text}}
|
---|
872 | Emphasized text; this will be presented in an italic font.
|
---|
873 | \end{macrodesc}
|
---|
874 |
|
---|
875 | \begin{macrodesc}{envvar}{\p{name}}
|
---|
876 | An environment variable. Index entries are generated.
|
---|
877 | \end{macrodesc}
|
---|
878 |
|
---|
879 | \begin{macrodesc}{exception}{\p{name}}
|
---|
880 | The name of an exception. A dotted name may be used.
|
---|
881 | \end{macrodesc}
|
---|
882 |
|
---|
883 | \begin{macrodesc}{file}{\p{file or dir}}
|
---|
884 | The name of a file or directory. In the PDF and PostScript
|
---|
885 | outputs, single quotes and a font change are used to indicate
|
---|
886 | the file name, but no quotes are used in the HTML output.
|
---|
887 | \warning{The \macro{file} macro cannot be used in the
|
---|
888 | content of a section title due to processing limitations.}
|
---|
889 | \end{macrodesc}
|
---|
890 |
|
---|
891 | \begin{macrodesc}{filenq}{\p{file or dir}}
|
---|
892 | Like \macro{file}, but single quotes are never used. This can
|
---|
893 | be used in conjunction with tables if a column will only contain
|
---|
894 | file or directory names.
|
---|
895 | \warning{The \macro{filenq} macro cannot be used in the
|
---|
896 | content of a section title due to processing limitations.}
|
---|
897 | \end{macrodesc}
|
---|
898 |
|
---|
899 | \begin{macrodesc}{function}{\p{name}}
|
---|
900 | The name of a Python function; dotted names may be used.
|
---|
901 | \end{macrodesc}
|
---|
902 |
|
---|
903 | \begin{macrodesc}{infinity}{}
|
---|
904 | The symbol for mathematical infinity: \infinity. Some Web
|
---|
905 | browsers are not able to render the HTML representation of this
|
---|
906 | symbol properly, but support is growing.
|
---|
907 | \end{macrodesc}
|
---|
908 |
|
---|
909 | \begin{macrodesc}{kbd}{\p{key sequence}}
|
---|
910 | Mark a sequence of keystrokes. What form \var{key sequence}
|
---|
911 | takes may depend on platform- or application-specific
|
---|
912 | conventions. When there are no relevant conventions, the names
|
---|
913 | of modifier keys should be spelled out, to improve accessibility
|
---|
914 | for new users and non-native speakers. For example, an
|
---|
915 | \program{xemacs} key sequence may be marked like
|
---|
916 | \code{\e kbd\{C-x C-f\}}, but without reference to a specific
|
---|
917 | application or platform, the same sequence should be marked as
|
---|
918 | \code{\e kbd\{Control-x Control-f\}}.
|
---|
919 | \end{macrodesc}
|
---|
920 |
|
---|
921 | \begin{macrodesc}{keyword}{\p{name}}
|
---|
922 | The name of a keyword in a programming language.
|
---|
923 | \end{macrodesc}
|
---|
924 |
|
---|
925 | \begin{macrodesc}{mailheader}{\p{name}}
|
---|
926 | The name of an \rfc{822}-style mail header. This markup does
|
---|
927 | not imply that the header is being used in an email message, but
|
---|
928 | can be used to refer to any header of the same ``style.'' This
|
---|
929 | is also used for headers defined by the various MIME
|
---|
930 | specifications. The header name should be entered in the same
|
---|
931 | way it would normally be found in practice, with the
|
---|
932 | camel-casing conventions being preferred where there is more
|
---|
933 | than one common usage. The colon which follows the name of the
|
---|
934 | header should not be included.
|
---|
935 | For example: \code{\e mailheader\{Content-Type\}}.
|
---|
936 | \end{macrodesc}
|
---|
937 |
|
---|
938 | \begin{macrodesc}{makevar}{\p{name}}
|
---|
939 | The name of a \program{make} variable.
|
---|
940 | \end{macrodesc}
|
---|
941 |
|
---|
942 | \begin{macrodesc}{manpage}{\p{name}\p{section}}
|
---|
943 | A reference to a \UNIX{} manual page.
|
---|
944 | \end{macrodesc}
|
---|
945 |
|
---|
946 | \begin{macrodesc}{member}{\p{name}}
|
---|
947 | The name of a data attribute of an object.
|
---|
948 | \end{macrodesc}
|
---|
949 |
|
---|
950 | \begin{macrodesc}{method}{\p{name}}
|
---|
951 | The name of a method of an object. \var{name} should include the
|
---|
952 | method name and the trailing parentheses. A dotted name may be
|
---|
953 | used.
|
---|
954 | \end{macrodesc}
|
---|
955 |
|
---|
956 | \begin{macrodesc}{mimetype}{\p{name}}
|
---|
957 | The name of a MIME type, or a component of a MIME type (the
|
---|
958 | major or minor portion, taken alone).
|
---|
959 | \end{macrodesc}
|
---|
960 |
|
---|
961 | \begin{macrodesc}{module}{\p{name}}
|
---|
962 | The name of a module; a dotted name may be used. This should
|
---|
963 | also be used for package names.
|
---|
964 | \end{macrodesc}
|
---|
965 |
|
---|
966 | \begin{macrodesc}{newsgroup}{\p{name}}
|
---|
967 | The name of a Usenet newsgroup.
|
---|
968 | \end{macrodesc}
|
---|
969 |
|
---|
970 | \begin{macrodesc}{note}{\p{text}}
|
---|
971 | An especially important bit of information about an API that a
|
---|
972 | user should be aware of when using whatever bit of API the
|
---|
973 | note pertains to. This should be the last thing in the
|
---|
974 | paragraph as the end of the note is not visually marked in
|
---|
975 | any way. The content of \var{text} should be written in
|
---|
976 | complete sentences and include all appropriate punctuation.
|
---|
977 | \end{macrodesc}
|
---|
978 |
|
---|
979 | \begin{macrodesc}{pep}{\p{number}}
|
---|
980 | A reference to a Python Enhancement Proposal. This generates
|
---|
981 | appropriate index entries. The text \samp{PEP \var{number}} is
|
---|
982 | generated; in the HTML output, this text is a hyperlink to an
|
---|
983 | online copy of the specified PEP.
|
---|
984 | \end{macrodesc}
|
---|
985 |
|
---|
986 | \begin{macrodesc}{plusminus}{}
|
---|
987 | The symbol for indicating a value that may take a positive or
|
---|
988 | negative value of a specified magnitude, typically represented
|
---|
989 | by a plus sign placed over a minus sign. For example:
|
---|
990 | \code{\e plusminus 3\%{}}.
|
---|
991 | \end{macrodesc}
|
---|
992 |
|
---|
993 | \begin{macrodesc}{program}{\p{name}}
|
---|
994 | The name of an executable program. This may differ from the
|
---|
995 | file name for the executable for some platforms. In particular,
|
---|
996 | the \file{.exe} (or other) extension should be omitted for
|
---|
997 | Windows programs.
|
---|
998 | \end{macrodesc}
|
---|
999 |
|
---|
1000 | \begin{macrodesc}{programopt}{\p{option}}
|
---|
1001 | A command-line option to an executable program. Use this only
|
---|
1002 | for ``short'' options, and include the leading hyphen.
|
---|
1003 | \end{macrodesc}
|
---|
1004 |
|
---|
1005 | \begin{macrodesc}{longprogramopt}{\p{option}}
|
---|
1006 | A long command-line option to an executable program. This
|
---|
1007 | should only be used for long option names which will be prefixed
|
---|
1008 | by two hyphens; the hyphens should not be provided as part of
|
---|
1009 | \var{option}.
|
---|
1010 | \end{macrodesc}
|
---|
1011 |
|
---|
1012 | \begin{macrodesc}{refmodule}{\op{key}\p{name}}
|
---|
1013 | Like \macro{module}, but create a hyperlink to the documentation
|
---|
1014 | for the named module. Note that the corresponding
|
---|
1015 | \macro{declaremodule} must be in the same document. If the
|
---|
1016 | \macro{declaremodule} defines a module key different from the
|
---|
1017 | module name, it must also be provided as \var{key} to the
|
---|
1018 | \macro{refmodule} macro.
|
---|
1019 | \end{macrodesc}
|
---|
1020 |
|
---|
1021 | \begin{macrodesc}{regexp}{\p{string}}
|
---|
1022 | Mark a regular expression.
|
---|
1023 | \end{macrodesc}
|
---|
1024 |
|
---|
1025 | \begin{macrodesc}{rfc}{\p{number}}
|
---|
1026 | A reference to an Internet Request for Comments. This generates
|
---|
1027 | appropriate index entries. The text \samp{RFC \var{number}} is
|
---|
1028 | generated; in the HTML output, this text is a hyperlink to an
|
---|
1029 | online copy of the specified RFC.
|
---|
1030 | \end{macrodesc}
|
---|
1031 |
|
---|
1032 | \begin{macrodesc}{samp}{\p{text}}
|
---|
1033 | A short code sample, but possibly longer than would be given
|
---|
1034 | using \macro{code}. Since quotation marks are added, spaces are
|
---|
1035 | acceptable.
|
---|
1036 | \end{macrodesc}
|
---|
1037 |
|
---|
1038 | \begin{macrodesc}{shortversion}{}
|
---|
1039 | The ``short'' version number of the documented software, as
|
---|
1040 | specified using the \macro{setshortversion} macro in the
|
---|
1041 | preamble. For Python, the short version number for a release is
|
---|
1042 | the first three characters of the \code{sys.version} value. For
|
---|
1043 | example, versions 2.0b1 and 2.0.1 both have a short version of
|
---|
1044 | 2.0. This may not apply for all packages; if
|
---|
1045 | \macro{setshortversion} is not used, this produces an empty
|
---|
1046 | expansion. See also the \macro{version} macro.
|
---|
1047 | \end{macrodesc}
|
---|
1048 |
|
---|
1049 | \begin{macrodesc}{strong}{\p{text}}
|
---|
1050 | Strongly emphasized text; this will be presented using a bold
|
---|
1051 | font.
|
---|
1052 | \end{macrodesc}
|
---|
1053 |
|
---|
1054 | \begin{macrodesc}{ulink}{\p{text}\p{url}}
|
---|
1055 | A hypertext link with a target specified by a URL, but for which
|
---|
1056 | the link text should not be the title of the resource. For
|
---|
1057 | resources being referenced by name, use the \macro{citetitle}
|
---|
1058 | macro. Not all formatted versions support arbitrary hypertext
|
---|
1059 | links. Note that many characters are special to \LaTeX{} and
|
---|
1060 | this macro does not always do the right thing. In particular,
|
---|
1061 | the tilde character (\character{\~}) is mis-handled; encoding it
|
---|
1062 | as a hex-sequence does work, use \samp{\%7e} in place of the
|
---|
1063 | tilde character.
|
---|
1064 | \end{macrodesc}
|
---|
1065 |
|
---|
1066 | \begin{macrodesc}{url}{\p{url}}
|
---|
1067 | A URL (or URN). The URL will be presented as text. In the HTML
|
---|
1068 | and PDF formatted versions, the URL will also be a hyperlink.
|
---|
1069 | This can be used when referring to external resources without
|
---|
1070 | specific titles; references to resources which have titles
|
---|
1071 | should be marked using the \macro{citetitle} macro. See the
|
---|
1072 | comments about special characters in the description of the
|
---|
1073 | \macro{ulink} macro for special considerations.
|
---|
1074 | \end{macrodesc}
|
---|
1075 |
|
---|
1076 | \begin{macrodesc}{var}{\p{name}}
|
---|
1077 | The name of a variable or formal parameter in running text.
|
---|
1078 | \end{macrodesc}
|
---|
1079 |
|
---|
1080 | \begin{macrodesc}{version}{}
|
---|
1081 | The version number of the described software, as specified using
|
---|
1082 | \macro{release} in the preamble. See also the
|
---|
1083 | \macro{shortversion} macro.
|
---|
1084 | \end{macrodesc}
|
---|
1085 |
|
---|
1086 | \begin{macrodesc}{warning}{\p{text}}
|
---|
1087 | An important bit of information about an API that a user should
|
---|
1088 | be very aware of when using whatever bit of API the warning
|
---|
1089 | pertains to. This should be the last thing in the paragraph as
|
---|
1090 | the end of the warning is not visually marked in any way. The
|
---|
1091 | content of \var{text} should be written in complete sentences
|
---|
1092 | and include all appropriate punctuation. This differs from
|
---|
1093 | \macro{note} in that it is recommended over \macro{note} for
|
---|
1094 | information regarding security.
|
---|
1095 | \end{macrodesc}
|
---|
1096 |
|
---|
1097 | The following two macros are used to describe information that's
|
---|
1098 | associated with changes from one release to another. For features
|
---|
1099 | which are described by a single paragraph, these are typically
|
---|
1100 | added as separate source lines at the end of the paragraph. When
|
---|
1101 | adding these to features described by multiple paragraphs, they
|
---|
1102 | are usually collected in a single separate paragraph after the
|
---|
1103 | description. When both \macro{versionadded} and
|
---|
1104 | \macro{versionchanged} are used, \macro{versionadded} should come
|
---|
1105 | first; the versions should be listed in chronological order. Both
|
---|
1106 | of these should come before availability statements. The location
|
---|
1107 | should be selected so the explanation makes sense and may vary as
|
---|
1108 | needed.
|
---|
1109 |
|
---|
1110 | \begin{macrodesc}{versionadded}{\op{explanation}\p{version}}
|
---|
1111 | The version of Python which added the described feature to the
|
---|
1112 | library or C API. \var{explanation} should be a \emph{brief}
|
---|
1113 | explanation of the change consisting of a capitalized sentence
|
---|
1114 | fragment; a period will be appended by the formatting process.
|
---|
1115 | When this applies to an entire module, it should be placed at
|
---|
1116 | the top of the module section before any prose.
|
---|
1117 | \end{macrodesc}
|
---|
1118 |
|
---|
1119 | \begin{macrodesc}{versionchanged}{\op{explanation}\p{version}}
|
---|
1120 | The version of Python in which the named feature was changed in
|
---|
1121 | some way (new parameters, changed side effects, etc.).
|
---|
1122 | \var{explanation} should be a \emph{brief} explanation of the
|
---|
1123 | change consisting of a capitalized sentence fragment; a
|
---|
1124 | period will be appended by the formatting process. This should
|
---|
1125 | not generally be applied to modules.
|
---|
1126 | \end{macrodesc}
|
---|
1127 |
|
---|
1128 |
|
---|
1129 | \subsection{Miscellaneous Text Markup \label{misc-text-markup}}
|
---|
1130 |
|
---|
1131 | In addition to the inline markup, some additional ``block'' markup
|
---|
1132 | is defined to make it easier to bring attention to various bits of
|
---|
1133 | text. The markup described here serves this purpose, and is
|
---|
1134 | intended to be used when marking one or more paragraphs or other
|
---|
1135 | block constructs (such as \env{verbatim} environments).
|
---|
1136 |
|
---|
1137 | \begin{envdesc}{notice}{\op{type}}
|
---|
1138 | Label some paragraphs as being worthy of additional attention from
|
---|
1139 | the reader. What sort of attention is warranted can be indicated
|
---|
1140 | by specifying the \var{type} of the notice. The only values
|
---|
1141 | defined for \var{type} are \code{note} and \code{warning}; these
|
---|
1142 | are equivalent in intent to the inline markup of the same name.
|
---|
1143 | If \var{type} is omitted, \code{note} is used. Additional values
|
---|
1144 | may be defined in the future.
|
---|
1145 | \end{envdesc}
|
---|
1146 |
|
---|
1147 |
|
---|
1148 | \subsection{Module-specific Markup \label{module-markup}}
|
---|
1149 |
|
---|
1150 | The markup described in this section is used to provide information
|
---|
1151 | about a module being documented. Each module should be documented
|
---|
1152 | in its own \macro{section}. A typical use of this markup
|
---|
1153 | appears at the top of that section and might look like this:
|
---|
1154 |
|
---|
1155 | \begin{verbatim}
|
---|
1156 | \section{\module{spam} ---
|
---|
1157 | Access to the SPAM facility}
|
---|
1158 |
|
---|
1159 | \declaremodule{extension}{spam}
|
---|
1160 | \platform{Unix}
|
---|
1161 | \modulesynopsis{Access to the SPAM facility of \UNIX.}
|
---|
1162 | \moduleauthor{Jane Doe}{jane.doe@frobnitz.org}
|
---|
1163 | \end{verbatim}
|
---|
1164 |
|
---|
1165 | Python packages\index{packages} --- collections of modules that can
|
---|
1166 | be described as a unit --- are documented using the same markup as
|
---|
1167 | modules. The name for a module in a package should be typed in
|
---|
1168 | ``fully qualified'' form (it should include the package name).
|
---|
1169 | For example, a module ``foo'' in package ``bar'' should be marked as
|
---|
1170 | \code{\e module\{bar.foo\}}, and the beginning of the reference
|
---|
1171 | section would appear as:
|
---|
1172 |
|
---|
1173 | \begin{verbatim}
|
---|
1174 | \section{\module{bar.foo} ---
|
---|
1175 | Module from the \module{bar} package}
|
---|
1176 |
|
---|
1177 | \declaremodule{extension}{bar.foo}
|
---|
1178 | \modulesynopsis{Nifty module from the \module{bar} package.}
|
---|
1179 | \moduleauthor{Jane Doe}{jane.doe@frobnitz.org}
|
---|
1180 | \end{verbatim}
|
---|
1181 |
|
---|
1182 | Note that the name of a package is also marked using
|
---|
1183 | \macro{module}.
|
---|
1184 |
|
---|
1185 | \begin{macrodesc}{declaremodule}{\op{key}\p{type}\p{name}}
|
---|
1186 | Requires two parameters: module type (\samp{standard},
|
---|
1187 | \samp{builtin}, \samp{extension}, or \samp{}), and the module
|
---|
1188 | name. An optional parameter should be given as the basis for the
|
---|
1189 | module's ``key'' used for linking to or referencing the section.
|
---|
1190 | The ``key'' should only be given if the module's name contains any
|
---|
1191 | underscores, and should be the name with the underscores stripped.
|
---|
1192 | Note that the \var{type} parameter must be one of the values
|
---|
1193 | listed above or an error will be printed. For modules which are
|
---|
1194 | contained in packages, the fully-qualified name should be given as
|
---|
1195 | \var{name} parameter. This should be the first thing after the
|
---|
1196 | \macro{section} used to introduce the module.
|
---|
1197 | \end{macrodesc}
|
---|
1198 |
|
---|
1199 | \begin{macrodesc}{platform}{\p{specifier}}
|
---|
1200 | Specifies the portability of the module. \var{specifier} is a
|
---|
1201 | comma-separated list of keys that specify what platforms the
|
---|
1202 | module is available on. The keys are short identifiers;
|
---|
1203 | examples that are in use include \samp{IRIX}, \samp{Mac},
|
---|
1204 | \samp{Windows}, and \samp{Unix}. It is important to use a key
|
---|
1205 | which has already been used when applicable. This is used to
|
---|
1206 | provide annotations in the Module Index and the HTML and GNU info
|
---|
1207 | output.
|
---|
1208 | \end{macrodesc}
|
---|
1209 |
|
---|
1210 | \begin{macrodesc}{modulesynopsis}{\p{text}}
|
---|
1211 | The \var{text} is a short, ``one line'' description of the
|
---|
1212 | module that can be used as part of the chapter introduction.
|
---|
1213 | This is must be placed after \macro{declaremodule}.
|
---|
1214 | The synopsis is used in building the contents of the table
|
---|
1215 | inserted as the \macro{localmoduletable}. No text is
|
---|
1216 | produced at the point of the markup.
|
---|
1217 | \end{macrodesc}
|
---|
1218 |
|
---|
1219 | \begin{macrodesc}{moduleauthor}{\p{name}\p{email}}
|
---|
1220 | This macro is used to encode information about who authored a
|
---|
1221 | module. This is currently not used to generate output, but can be
|
---|
1222 | used to help determine the origin of the module.
|
---|
1223 | \end{macrodesc}
|
---|
1224 |
|
---|
1225 |
|
---|
1226 | \subsection{Library-level Markup \label{library-markup}}
|
---|
1227 |
|
---|
1228 | This markup is used when describing a selection of modules. For
|
---|
1229 | example, the \citetitle[../mac/mac.html]{Macintosh Library
|
---|
1230 | Modules} document uses this to help provide an overview of the
|
---|
1231 | modules in the collection, and many chapters in the
|
---|
1232 | \citetitle[../lib/lib.html]{Python Library Reference} use it for
|
---|
1233 | the same purpose.
|
---|
1234 |
|
---|
1235 | \begin{macrodesc}{localmoduletable}{}
|
---|
1236 | If a \file{.syn} file exists for the current
|
---|
1237 | chapter (or for the entire document in \code{howto} documents), a
|
---|
1238 | \env{synopsistable} is created with the contents loaded from the
|
---|
1239 | \file{.syn} file.
|
---|
1240 | \end{macrodesc}
|
---|
1241 |
|
---|
1242 |
|
---|
1243 | \subsection{Table Markup \label{table-markup}}
|
---|
1244 |
|
---|
1245 | There are three general-purpose table environments defined which
|
---|
1246 | should be used whenever possible. These environments are defined
|
---|
1247 | to provide tables of specific widths and some convenience for
|
---|
1248 | formatting. These environments are not meant to be general
|
---|
1249 | replacements for the standard \LaTeX{} table environments, but can
|
---|
1250 | be used for an advantage when the documents are processed using
|
---|
1251 | the tools for Python documentation processing. In particular, the
|
---|
1252 | generated HTML looks good! There is also an advantage for the
|
---|
1253 | eventual conversion of the documentation to XML (see section
|
---|
1254 | \ref{futures}, ``Future Directions'').
|
---|
1255 |
|
---|
1256 | Each environment is named \env{table\var{cols}}, where \var{cols}
|
---|
1257 | is the number of columns in the table specified in lower-case
|
---|
1258 | Roman numerals. Within each of these environments, an additional
|
---|
1259 | macro, \macro{line\var{cols}}, is defined, where \var{cols}
|
---|
1260 | matches the \var{cols} value of the corresponding table
|
---|
1261 | environment. These are supported for \var{cols} values of
|
---|
1262 | \code{ii}, \code{iii}, and \code{iv}. These environments are all
|
---|
1263 | built on top of the \env{tabular} environment. Variants based on
|
---|
1264 | the \env{longtable} environment are also provided.
|
---|
1265 |
|
---|
1266 | Note that all tables in the standard Python documentation use
|
---|
1267 | vertical lines between columns, and this must be specified in the
|
---|
1268 | markup for each table. A general border around the outside of the
|
---|
1269 | table is not used, but would be the responsibility of the
|
---|
1270 | processor; the document markup should not include an exterior
|
---|
1271 | border.
|
---|
1272 |
|
---|
1273 | The \env{longtable}-based variants of the table environments are
|
---|
1274 | formatted with extra space before and after, so should only be
|
---|
1275 | used on tables which are long enough that splitting over multiple
|
---|
1276 | pages is reasonable; tables with fewer than twenty rows should
|
---|
1277 | never by marked using the long flavors of the table environments.
|
---|
1278 | The header row is repeated across the top of each part of the
|
---|
1279 | table.
|
---|
1280 |
|
---|
1281 | \begin{envdesc}{tableii}{\p{colspec}\p{col1font}\p{heading1}\p{heading2}}
|
---|
1282 | Create a two-column table using the \LaTeX{} column specifier
|
---|
1283 | \var{colspec}. The column specifier should indicate vertical
|
---|
1284 | bars between columns as appropriate for the specific table, but
|
---|
1285 | should not specify vertical bars on the outside of the table
|
---|
1286 | (that is considered a stylesheet issue). The \var{col1font}
|
---|
1287 | parameter is used as a stylistic treatment of the first column
|
---|
1288 | of the table: the first column is presented as
|
---|
1289 | \code{\e\var{col1font}\{column1\}}. To avoid treating the first
|
---|
1290 | column specially, \var{col1font} may be \samp{textrm}. The
|
---|
1291 | column headings are taken from the values \var{heading1} and
|
---|
1292 | \var{heading2}.
|
---|
1293 | \end{envdesc}
|
---|
1294 |
|
---|
1295 | \begin{envdesc}{longtableii}{\unspecified}
|
---|
1296 | Like \env{tableii}, but produces a table which may be broken
|
---|
1297 | across page boundaries. The parameters are the same as for
|
---|
1298 | \env{tableii}.
|
---|
1299 | \end{envdesc}
|
---|
1300 |
|
---|
1301 | \begin{macrodesc}{lineii}{\p{column1}\p{column2}}
|
---|
1302 | Create a single table row within a \env{tableii} or
|
---|
1303 | \env{longtableii} environment.
|
---|
1304 | The text for the first column will be generated by applying the
|
---|
1305 | macro named by the \var{col1font} value when the \env{tableii}
|
---|
1306 | was opened.
|
---|
1307 | \end{macrodesc}
|
---|
1308 |
|
---|
1309 | \begin{envdesc}{tableiii}{\p{colspec}\p{col1font}\p{heading1}\p{heading2}\p{heading3}}
|
---|
1310 | Like the \env{tableii} environment, but with a third column.
|
---|
1311 | The heading for the third column is given by \var{heading3}.
|
---|
1312 | \end{envdesc}
|
---|
1313 |
|
---|
1314 | \begin{envdesc}{longtableiii}{\unspecified}
|
---|
1315 | Like \env{tableiii}, but produces a table which may be broken
|
---|
1316 | across page boundaries. The parameters are the same as for
|
---|
1317 | \env{tableiii}.
|
---|
1318 | \end{envdesc}
|
---|
1319 |
|
---|
1320 | \begin{macrodesc}{lineiii}{\p{column1}\p{column2}\p{column3}}
|
---|
1321 | Like the \macro{lineii} macro, but with a third column. The
|
---|
1322 | text for the third column is given by \var{column3}.
|
---|
1323 | \end{macrodesc}
|
---|
1324 |
|
---|
1325 | \begin{envdesc}{tableiv}{\p{colspec}\p{col1font}\p{heading1}\p{heading2}\p{heading3}\p{heading4}}
|
---|
1326 | Like the \env{tableiii} environment, but with a fourth column.
|
---|
1327 | The heading for the fourth column is given by \var{heading4}.
|
---|
1328 | \end{envdesc}
|
---|
1329 |
|
---|
1330 | \begin{envdesc}{longtableiv}{\unspecified}
|
---|
1331 | Like \env{tableiv}, but produces a table which may be broken
|
---|
1332 | across page boundaries. The parameters are the same as for
|
---|
1333 | \env{tableiv}.
|
---|
1334 | \end{envdesc}
|
---|
1335 |
|
---|
1336 | \begin{macrodesc}{lineiv}{\p{column1}\p{column2}\p{column3}\p{column4}}
|
---|
1337 | Like the \macro{lineiii} macro, but with a fourth column. The
|
---|
1338 | text for the fourth column is given by \var{column4}.
|
---|
1339 | \end{macrodesc}
|
---|
1340 |
|
---|
1341 | \begin{envdesc}{tablev}{\p{colspec}\p{col1font}\p{heading1}\p{heading2}\p{heading3}\p{heading4}\p{heading5}}
|
---|
1342 | Like the \env{tableiv} environment, but with a fifth column.
|
---|
1343 | The heading for the fifth column is given by \var{heading5}.
|
---|
1344 | \end{envdesc}
|
---|
1345 |
|
---|
1346 | \begin{envdesc}{longtablev}{\unspecified}
|
---|
1347 | Like \env{tablev}, but produces a table which may be broken
|
---|
1348 | across page boundaries. The parameters are the same as for
|
---|
1349 | \env{tablev}.
|
---|
1350 | \end{envdesc}
|
---|
1351 |
|
---|
1352 | \begin{macrodesc}{linev}{\p{column1}\p{column2}\p{column3}\p{column4}\p{column5}}
|
---|
1353 | Like the \macro{lineiv} macro, but with a fifth column. The
|
---|
1354 | text for the fifth column is given by \var{column5}.
|
---|
1355 | \end{macrodesc}
|
---|
1356 |
|
---|
1357 |
|
---|
1358 | An additional table-like environment is \env{synopsistable}. The
|
---|
1359 | table generated by this environment contains two columns, and each
|
---|
1360 | row is defined by an alternate definition of
|
---|
1361 | \macro{modulesynopsis}. This environment is not normally used by
|
---|
1362 | authors, but is created by the \macro{localmoduletable} macro.
|
---|
1363 |
|
---|
1364 | Here is a small example of a table given in the documentation for
|
---|
1365 | the \module{warnings} module; markup inside the table cells is
|
---|
1366 | minimal so the markup for the table itself is readily discernable.
|
---|
1367 | Here is the markup for the table:
|
---|
1368 |
|
---|
1369 | \begin{verbatim}
|
---|
1370 | \begin{tableii}{l|l}{exception}{Class}{Description}
|
---|
1371 | \lineii{Warning}
|
---|
1372 | {This is the base class of all warning category classes. It
|
---|
1373 | is a subclass of \exception{Exception}.}
|
---|
1374 | \lineii{UserWarning}
|
---|
1375 | {The default category for \function{warn()}.}
|
---|
1376 | \lineii{DeprecationWarning}
|
---|
1377 | {Base category for warnings about deprecated features.}
|
---|
1378 | \lineii{SyntaxWarning}
|
---|
1379 | {Base category for warnings about dubious syntactic
|
---|
1380 | features.}
|
---|
1381 | \lineii{RuntimeWarning}
|
---|
1382 | {Base category for warnings about dubious runtime features.}
|
---|
1383 | \lineii{FutureWarning}
|
---|
1384 | {Base category for warnings about constructs that will change
|
---|
1385 | semantically in the future.}
|
---|
1386 | \end{tableii}
|
---|
1387 | \end{verbatim}
|
---|
1388 |
|
---|
1389 | Here is the resulting table:
|
---|
1390 |
|
---|
1391 | \begin{tableii}{l|l}{exception}{Class}{Description}
|
---|
1392 | \lineii{Warning}
|
---|
1393 | {This is the base class of all warning category classes. It
|
---|
1394 | is a subclass of \exception{Exception}.}
|
---|
1395 | \lineii{UserWarning}
|
---|
1396 | {The default category for \function{warn()}.}
|
---|
1397 | \lineii{DeprecationWarning}
|
---|
1398 | {Base category for warnings about deprecated features.}
|
---|
1399 | \lineii{SyntaxWarning}
|
---|
1400 | {Base category for warnings about dubious syntactic
|
---|
1401 | features.}
|
---|
1402 | \lineii{RuntimeWarning}
|
---|
1403 | {Base category for warnings about dubious runtime features.}
|
---|
1404 | \end{tableii}
|
---|
1405 |
|
---|
1406 | Note that the class names are implicitly marked using the
|
---|
1407 | \macro{exception} macro, since that is given as the \var{col1font}
|
---|
1408 | value for the \env{tableii} environment. To create a table using
|
---|
1409 | different markup for the first column, use \code{textrm} for the
|
---|
1410 | \var{col1font} value and mark each entry individually.
|
---|
1411 |
|
---|
1412 | To add a horizontal line between vertical sections of a table, use
|
---|
1413 | the standard \macro{hline} macro between the rows which should be
|
---|
1414 | separated:
|
---|
1415 |
|
---|
1416 | \begin{verbatim}
|
---|
1417 | \begin{tableii}{l|l}{constant}{Language}{Audience}
|
---|
1418 | \lineii{APL}{Masochists.}
|
---|
1419 | \lineii{BASIC}{First-time programmers on PC hardware.}
|
---|
1420 | \lineii{C}{\UNIX{} \&\ Linux kernel developers.}
|
---|
1421 | \hline
|
---|
1422 | \lineii{Python}{Everyone!}
|
---|
1423 | \end{tableii}
|
---|
1424 | \end{verbatim}
|
---|
1425 |
|
---|
1426 | Note that not all presentation formats are capable of displaying a
|
---|
1427 | horizontal rule in this position. This is how the table looks in
|
---|
1428 | the format you're reading now:
|
---|
1429 |
|
---|
1430 | \begin{tableii}{l|l}{constant}{Language}{Audience}
|
---|
1431 | \lineii{APL}{Masochists.}
|
---|
1432 | \lineii{C}{\UNIX{} \&\ Linux kernel developers.}
|
---|
1433 | \lineii{JavaScript}{Web developers.}
|
---|
1434 | \hline
|
---|
1435 | \lineii{Python}{Everyone!}
|
---|
1436 | \end{tableii}
|
---|
1437 |
|
---|
1438 |
|
---|
1439 | \subsection{Reference List Markup \label{references}}
|
---|
1440 |
|
---|
1441 | Many sections include a list of references to module documentation
|
---|
1442 | or external documents. These lists are created using the
|
---|
1443 | \env{seealso} or \env{seealso*} environments. These environments
|
---|
1444 | define some additional macros to support creating reference
|
---|
1445 | entries in a reasonable manner.
|
---|
1446 |
|
---|
1447 | The \env{seealso} environment is typically placed in a section
|
---|
1448 | just before any sub-sections. This is done to ensure that
|
---|
1449 | reference links related to the section are not hidden in a
|
---|
1450 | subsection in the hypertext renditions of the documentation. For
|
---|
1451 | the HTML output, it is shown as a ``side bar,'' boxed off from the
|
---|
1452 | main flow of the text. The \env{seealso*} environment is
|
---|
1453 | different in that it should be used when a list of references is
|
---|
1454 | being presented as part of the primary content; it is not
|
---|
1455 | specially set off from the text.
|
---|
1456 |
|
---|
1457 | \begin{envdesc}{seealso}{}
|
---|
1458 | This environment creates a ``See also:'' heading and defines the
|
---|
1459 | markup used to describe individual references.
|
---|
1460 | \end{envdesc}
|
---|
1461 |
|
---|
1462 | \begin{envdesc}{seealso*}{}
|
---|
1463 | This environment is used to create a list of references which
|
---|
1464 | form part of the main content. It is not given a special
|
---|
1465 | header and is not set off from the main flow of the text. It
|
---|
1466 | provides the same additional markup used to describe individual
|
---|
1467 | references.
|
---|
1468 | \end{envdesc}
|
---|
1469 |
|
---|
1470 | For each of the following macros, \var{why} should be one or more
|
---|
1471 | complete sentences, starting with a capital letter (unless it
|
---|
1472 | starts with an identifier, which should not be modified), and
|
---|
1473 | ending with the appropriate punctuation.
|
---|
1474 |
|
---|
1475 | These macros are only defined within the content of the
|
---|
1476 | \env{seealso} and \env{seealso*} environments.
|
---|
1477 |
|
---|
1478 | \begin{macrodesc}{seelink}{\p{url}\p{linktext}\p{why}}
|
---|
1479 | References to specific on-line resources should be given using
|
---|
1480 | the \macro{seelink} macro if they don't have a meaningful title
|
---|
1481 | but there is some short description of what's at the end of the
|
---|
1482 | link. Online documents which have identifiable titles should be
|
---|
1483 | referenced using the \macro{seetitle} macro, using the optional
|
---|
1484 | parameter to that macro to provide the URL.
|
---|
1485 | \end{macrodesc}
|
---|
1486 |
|
---|
1487 | \begin{macrodesc}{seemodule}{\op{key}\p{name}\p{why}}
|
---|
1488 | Refer to another module. \var{why} should be a brief
|
---|
1489 | explanation of why the reference may be interesting. The module
|
---|
1490 | name is given in \var{name}, with the link key given in
|
---|
1491 | \var{key} if necessary. In the HTML and PDF conversions, the
|
---|
1492 | module name will be a hyperlink to the referred-to module.
|
---|
1493 | \note{The module must be documented in the same
|
---|
1494 | document (the corresponding \macro{declaremodule} is required).}
|
---|
1495 | \end{macrodesc}
|
---|
1496 |
|
---|
1497 | \begin{macrodesc}{seepep}{\p{number}\p{title}\p{why}}
|
---|
1498 | Refer to an Python Enhancement Proposal (PEP). \var{number}
|
---|
1499 | should be the official number assigned by the PEP Editor,
|
---|
1500 | \var{title} should be the human-readable title of the PEP as
|
---|
1501 | found in the official copy of the document, and \var{why} should
|
---|
1502 | explain what's interesting about the PEP. This should be used
|
---|
1503 | to refer the reader to PEPs which specify interfaces or language
|
---|
1504 | features relevant to the material in the annotated section of the
|
---|
1505 | documentation.
|
---|
1506 | \end{macrodesc}
|
---|
1507 |
|
---|
1508 | \begin{macrodesc}{seerfc}{\p{number}\p{title}\p{why}}
|
---|
1509 | Refer to an IETF Request for Comments (RFC). Otherwise very
|
---|
1510 | similar to \macro{seepep}. This should be used
|
---|
1511 | to refer the reader to PEPs which specify protocols or data
|
---|
1512 | formats relevant to the material in the annotated section of the
|
---|
1513 | documentation.
|
---|
1514 | \end{macrodesc}
|
---|
1515 |
|
---|
1516 | \begin{macrodesc}{seetext}{\p{text}}
|
---|
1517 | Add arbitrary text \var{text} to the ``See also:'' list. This
|
---|
1518 | can be used to refer to off-line materials or on-line materials
|
---|
1519 | using the \macro{url} macro. This should consist of one or more
|
---|
1520 | complete sentences.
|
---|
1521 | \end{macrodesc}
|
---|
1522 |
|
---|
1523 | \begin{macrodesc}{seetitle}{\op{url}\p{title}\p{why}}
|
---|
1524 | Add a reference to an external document named \var{title}. If
|
---|
1525 | \var{url} is given, the title is made a hyperlink in the HTML
|
---|
1526 | version of the documentation, and displayed below the title in
|
---|
1527 | the typeset versions of the documentation.
|
---|
1528 | \end{macrodesc}
|
---|
1529 |
|
---|
1530 | \begin{macrodesc}{seeurl}{\p{url}\p{why}}
|
---|
1531 | References to specific on-line resources should be given using
|
---|
1532 | the \macro{seeurl} macro if they don't have a meaningful title.
|
---|
1533 | Online documents which have identifiable titles should be
|
---|
1534 | referenced using the \macro{seetitle} macro, using the optional
|
---|
1535 | parameter to that macro to provide the URL.
|
---|
1536 | \end{macrodesc}
|
---|
1537 |
|
---|
1538 |
|
---|
1539 | \subsection{Index-generating Markup \label{indexing}}
|
---|
1540 |
|
---|
1541 | Effective index generation for technical documents can be very
|
---|
1542 | difficult, especially for someone familiar with the topic but not
|
---|
1543 | the creation of indexes. Much of the difficulty arises in the
|
---|
1544 | area of terminology: including the terms an expert would use for a
|
---|
1545 | concept is not sufficient. Coming up with the terms that a novice
|
---|
1546 | would look up is fairly difficult for an author who, typically, is
|
---|
1547 | an expert in the area she is writing on.
|
---|
1548 |
|
---|
1549 | The truly difficult aspects of index generation are not areas with
|
---|
1550 | which the documentation tools can help. However, ease
|
---|
1551 | of producing the index once content decisions are made is within
|
---|
1552 | the scope of the tools. Markup is provided which the processing
|
---|
1553 | software is able to use to generate a variety of kinds of index
|
---|
1554 | entry with minimal effort. Additionally, many of the environments
|
---|
1555 | described in section \ref{info-units}, ``Information Units,'' will
|
---|
1556 | generate appropriate entries into the general and module indexes.
|
---|
1557 |
|
---|
1558 | The following macro can be used to control the generation of index
|
---|
1559 | data, and should be used in the document preamble:
|
---|
1560 |
|
---|
1561 | \begin{macrodesc}{makemodindex}{}
|
---|
1562 | This should be used in the document preamble if a ``Module
|
---|
1563 | Index'' is desired for a document containing reference material
|
---|
1564 | on many modules. This causes a data file
|
---|
1565 | \code{lib\var{jobname}.idx} to be created from the
|
---|
1566 | \macro{declaremodule} macros. This file can be processed by the
|
---|
1567 | \program{makeindex} program to generate a file which can be
|
---|
1568 | \macro{input} into the document at the desired location of the
|
---|
1569 | module index.
|
---|
1570 | \end{macrodesc}
|
---|
1571 |
|
---|
1572 | There are a number of macros that are useful for adding index
|
---|
1573 | entries for particular concepts, many of which are specific to
|
---|
1574 | programming languages or even Python.
|
---|
1575 |
|
---|
1576 | \begin{macrodesc}{bifuncindex}{\p{name}}
|
---|
1577 | Add an index entry referring to a built-in function named
|
---|
1578 | \var{name}; parentheses should not be included after
|
---|
1579 | \var{name}.
|
---|
1580 | \end{macrodesc}
|
---|
1581 |
|
---|
1582 | \begin{macrodesc}{exindex}{\p{exception}}
|
---|
1583 | Add a reference to an exception named \var{exception}. The
|
---|
1584 | exception should be class-based.
|
---|
1585 | \end{macrodesc}
|
---|
1586 |
|
---|
1587 | \begin{macrodesc}{kwindex}{\p{keyword}}
|
---|
1588 | Add a reference to a language keyword (not a keyword parameter
|
---|
1589 | in a function or method call).
|
---|
1590 | \end{macrodesc}
|
---|
1591 |
|
---|
1592 | \begin{macrodesc}{obindex}{\p{object type}}
|
---|
1593 | Add an index entry for a built-in object type.
|
---|
1594 | \end{macrodesc}
|
---|
1595 |
|
---|
1596 | \begin{macrodesc}{opindex}{\p{operator}}
|
---|
1597 | Add a reference to an operator, such as \samp{+}.
|
---|
1598 | \end{macrodesc}
|
---|
1599 |
|
---|
1600 | \begin{macrodesc}{refmodindex}{\op{key}\p{module}}
|
---|
1601 | Add an index entry for module \var{module}; if \var{module}
|
---|
1602 | contains an underscore, the optional parameter \var{key} should
|
---|
1603 | be provided as the same string with underscores removed. An
|
---|
1604 | index entry ``\var{module} (module)'' will be generated. This
|
---|
1605 | is intended for use with non-standard modules implemented in
|
---|
1606 | Python.
|
---|
1607 | \end{macrodesc}
|
---|
1608 |
|
---|
1609 | \begin{macrodesc}{refexmodindex}{\op{key}\p{module}}
|
---|
1610 | As for \macro{refmodindex}, but the index entry will be
|
---|
1611 | ``\var{module} (extension module).'' This is intended for use
|
---|
1612 | with non-standard modules not implemented in Python.
|
---|
1613 | \end{macrodesc}
|
---|
1614 |
|
---|
1615 | \begin{macrodesc}{refbimodindex}{\op{key}\p{module}}
|
---|
1616 | As for \macro{refmodindex}, but the index entry will be
|
---|
1617 | ``\var{module} (built-in module).'' This is intended for use
|
---|
1618 | with standard modules not implemented in Python.
|
---|
1619 | \end{macrodesc}
|
---|
1620 |
|
---|
1621 | \begin{macrodesc}{refstmodindex}{\op{key}\p{module}}
|
---|
1622 | As for \macro{refmodindex}, but the index entry will be
|
---|
1623 | ``\var{module} (standard module).'' This is intended for use
|
---|
1624 | with standard modules implemented in Python.
|
---|
1625 | \end{macrodesc}
|
---|
1626 |
|
---|
1627 | \begin{macrodesc}{stindex}{\p{statement}}
|
---|
1628 | Add an index entry for a statement type, such as \keyword{print}
|
---|
1629 | or \keyword{try}/\keyword{finally}.
|
---|
1630 |
|
---|
1631 | XXX Need better examples of difference from \macro{kwindex}.
|
---|
1632 | \end{macrodesc}
|
---|
1633 |
|
---|
1634 |
|
---|
1635 | Additional macros are provided which are useful for conveniently
|
---|
1636 | creating general index entries which should appear at many places
|
---|
1637 | in the index by rotating a list of words. These are simple macros
|
---|
1638 | that simply use \macro{index} to build some number of index
|
---|
1639 | entries. Index entries build using these macros contain both
|
---|
1640 | primary and secondary text.
|
---|
1641 |
|
---|
1642 | \begin{macrodesc}{indexii}{\p{word1}\p{word2}}
|
---|
1643 | Build two index entries. This is exactly equivalent to using
|
---|
1644 | \code{\e index\{\var{word1}!\var{word2}\}} and
|
---|
1645 | \code{\e index\{\var{word2}!\var{word1}\}}.
|
---|
1646 | \end{macrodesc}
|
---|
1647 |
|
---|
1648 | \begin{macrodesc}{indexiii}{\p{word1}\p{word2}\p{word3}}
|
---|
1649 | Build three index entries. This is exactly equivalent to using
|
---|
1650 | \code{\e index\{\var{word1}!\var{word2} \var{word3}\}},
|
---|
1651 | \code{\e index\{\var{word2}!\var{word3}, \var{word1}\}}, and
|
---|
1652 | \code{\e index\{\var{word3}!\var{word1} \var{word2}\}}.
|
---|
1653 | \end{macrodesc}
|
---|
1654 |
|
---|
1655 | \begin{macrodesc}{indexiv}{\p{word1}\p{word2}\p{word3}\p{word4}}
|
---|
1656 | Build four index entries. This is exactly equivalent to using
|
---|
1657 | \code{\e index\{\var{word1}!\var{word2} \var{word3} \var{word4}\}},
|
---|
1658 | \code{\e index\{\var{word2}!\var{word3} \var{word4}, \var{word1}\}},
|
---|
1659 | \code{\e index\{\var{word3}!\var{word4}, \var{word1} \var{word2}\}},
|
---|
1660 | and
|
---|
1661 | \code{\e index\{\var{word4}!\var{word1} \var{word2} \var{word3}\}}.
|
---|
1662 | \end{macrodesc}
|
---|
1663 |
|
---|
1664 | \subsection{Grammar Production Displays \label{grammar-displays}}
|
---|
1665 |
|
---|
1666 | Special markup is available for displaying the productions of a
|
---|
1667 | formal grammar. The markup is simple and does not attempt to
|
---|
1668 | model all aspects of BNF (or any derived forms), but provides
|
---|
1669 | enough to allow context-free grammars to be displayed in a way
|
---|
1670 | that causes uses of a symbol to be rendered as hyperlinks to the
|
---|
1671 | definition of the symbol. There is one environment and a pair of
|
---|
1672 | macros:
|
---|
1673 |
|
---|
1674 | \begin{envdesc}{productionlist}{\op{language}}
|
---|
1675 | This environment is used to enclose a group of productions. The
|
---|
1676 | two macros are only defined within this environment. If a
|
---|
1677 | document describes more than one language, the optional parameter
|
---|
1678 | \var{language} should be used to distinguish productions between
|
---|
1679 | languages. The value of the parameter should be a short name
|
---|
1680 | that can be used as part of a filename; colons or other
|
---|
1681 | characters that can't be used in filename across platforms
|
---|
1682 | should be included.
|
---|
1683 | \end{envdesc}
|
---|
1684 |
|
---|
1685 | \begin{macrodesc}{production}{\p{name}\p{definition}}
|
---|
1686 | A production rule in the grammar. The rule defines the symbol
|
---|
1687 | \var{name} to be \var{definition}. \var{name} should not
|
---|
1688 | contain any markup, and the use of hyphens in a document which
|
---|
1689 | supports more than one grammar is undefined. \var{definition}
|
---|
1690 | may contain \macro{token} macros and any additional content
|
---|
1691 | needed to describe the grammatical model of \var{symbol}. Only
|
---|
1692 | one \macro{production} may be used to define a symbol ---
|
---|
1693 | multiple definitions are not allowed.
|
---|
1694 | \end{macrodesc}
|
---|
1695 |
|
---|
1696 | \begin{macrodesc}{token}{\p{name}}
|
---|
1697 | The name of a symbol defined by a \macro{production} macro, used
|
---|
1698 | in the \var{definition} of a symbol. Where possible, this will
|
---|
1699 | be rendered as a hyperlink to the definition of the symbol
|
---|
1700 | \var{name}.
|
---|
1701 | \end{macrodesc}
|
---|
1702 |
|
---|
1703 | Note that the entire grammar does not need to be defined in a
|
---|
1704 | single \env{productionlist} environment; any number of
|
---|
1705 | groupings may be used to describe the grammar. Every use of the
|
---|
1706 | \macro{token} must correspond to a \macro{production}.
|
---|
1707 |
|
---|
1708 | The following is an example taken from the
|
---|
1709 | \citetitle[../ref/identifiers.html]{Python Reference Manual}:
|
---|
1710 |
|
---|
1711 | \begin{verbatim}
|
---|
1712 | \begin{productionlist}
|
---|
1713 | \production{identifier}
|
---|
1714 | {(\token{letter}|"_") (\token{letter} | \token{digit} | "_")*}
|
---|
1715 | \production{letter}
|
---|
1716 | {\token{lowercase} | \token{uppercase}}
|
---|
1717 | \production{lowercase}
|
---|
1718 | {"a"..."z"}
|
---|
1719 | \production{uppercase}
|
---|
1720 | {"A"..."Z"}
|
---|
1721 | \production{digit}
|
---|
1722 | {"0"..."9"}
|
---|
1723 | \end{productionlist}
|
---|
1724 | \end{verbatim}
|
---|
1725 |
|
---|
1726 |
|
---|
1727 | \subsection{Graphical Interface Components \label{gui-markup}}
|
---|
1728 |
|
---|
1729 | The components of graphical interfaces will be assigned markup, but
|
---|
1730 | most of the specifics have not been determined.
|
---|
1731 |
|
---|
1732 | \begin{macrodesc}{guilabel}{\p{label}}
|
---|
1733 | Labels presented as part of an interactive user interface should
|
---|
1734 | be marked using \macro{guilabel}. This includes labels from
|
---|
1735 | text-based interfaces such as those created using \code{curses} or
|
---|
1736 | other text-based libraries. Any label used in the interface
|
---|
1737 | should be marked with this macro, including button labels, window
|
---|
1738 | titles, field names, menu and menu selection names, and even
|
---|
1739 | values in selection lists.
|
---|
1740 | \end{macrodesc}
|
---|
1741 |
|
---|
1742 | \begin{macrodesc}{menuselection}{\p{menupath}}
|
---|
1743 | Menu selections should be marked using a combination of
|
---|
1744 | \macro{menuselection} and \macro{sub}. This macro is used to mark
|
---|
1745 | a complete sequence of menu selections, including selecting
|
---|
1746 | submenus and choosing a specific operation, or any subsequence of
|
---|
1747 | such a sequence. The names of individual selections should be
|
---|
1748 | separated by occurrences of \macro{sub}.
|
---|
1749 |
|
---|
1750 | For example, to mark the selection ``\menuselection{Start \sub
|
---|
1751 | Programs}'', use this markup:
|
---|
1752 |
|
---|
1753 | \begin{verbatim}
|
---|
1754 | \menuselection{Start \sub Programs}
|
---|
1755 | \end{verbatim}
|
---|
1756 |
|
---|
1757 | When including a selection that includes some trailing indicator,
|
---|
1758 | such as the ellipsis some operating systems use to indicate that
|
---|
1759 | the command opens a dialog, the indicator should be omitted from
|
---|
1760 | the selection name.
|
---|
1761 |
|
---|
1762 | Individual selection names within the \macro{menuselection} should
|
---|
1763 | not be marked using \macro{guilabel} since that's implied by using
|
---|
1764 | \macro{menuselection}.
|
---|
1765 | \end{macrodesc}
|
---|
1766 |
|
---|
1767 | \begin{macrodesc}{sub}{}
|
---|
1768 | Separator for menu selections that include multiple levels. This
|
---|
1769 | macro is only defined within the context of the
|
---|
1770 | \macro{menuselection} macro.
|
---|
1771 | \end{macrodesc}
|
---|
1772 |
|
---|
1773 |
|
---|
1774 | \section{Processing Tools \label{tools}}
|
---|
1775 |
|
---|
1776 | \subsection{External Tools \label{tools-external}}
|
---|
1777 |
|
---|
1778 | Many tools are needed to be able to process the Python
|
---|
1779 | documentation if all supported formats are required. This
|
---|
1780 | section lists the tools used and when each is required. Consult
|
---|
1781 | the \file{Doc/README} file to see if there are specific version
|
---|
1782 | requirements for any of these.
|
---|
1783 |
|
---|
1784 | \begin{description}
|
---|
1785 | \item[\program{dvips}]
|
---|
1786 | This program is a typical part of \TeX{} installations. It is
|
---|
1787 | used to generate PostScript from the ``device independent''
|
---|
1788 | \file{.dvi} files. It is needed for the conversion to
|
---|
1789 | PostScript.
|
---|
1790 |
|
---|
1791 | \item[\program{emacs}]
|
---|
1792 | Emacs is the kitchen sink of programmers' editors, and a damn
|
---|
1793 | fine kitchen sink it is. It also comes with some of the
|
---|
1794 | processing needed to support the proper menu structures for
|
---|
1795 | Texinfo documents when an info conversion is desired. This is
|
---|
1796 | needed for the info conversion. Using \program{xemacs}
|
---|
1797 | instead of FSF \program{emacs} may lead to instability in the
|
---|
1798 | conversion, but that's because nobody seems to maintain the
|
---|
1799 | Emacs Texinfo code in a portable manner.
|
---|
1800 |
|
---|
1801 | \item[\program{latex}]
|
---|
1802 | \LaTeX{} is a large and extensible macro package by Leslie
|
---|
1803 | Lamport, based on \TeX, a world-class typesetter by Donald
|
---|
1804 | Knuth. It is used for the conversion to PostScript, and is
|
---|
1805 | needed for the HTML conversion as well (\LaTeX2HTML requires
|
---|
1806 | one of the intermediate files it creates).
|
---|
1807 |
|
---|
1808 | \item[\program{latex2html}]
|
---|
1809 | Probably the longest Perl script anyone ever attempted to
|
---|
1810 | maintain. This converts \LaTeX{} documents to HTML documents,
|
---|
1811 | and does a pretty reasonable job. It is required for the
|
---|
1812 | conversions to HTML and GNU info.
|
---|
1813 |
|
---|
1814 | \item[\program{lynx}]
|
---|
1815 | This is a text-mode Web browser which includes an
|
---|
1816 | HTML-to-plain text conversion. This is used to convert
|
---|
1817 | \code{howto} documents to text.
|
---|
1818 |
|
---|
1819 | \item[\program{make}]
|
---|
1820 | Just about any version should work for the standard documents,
|
---|
1821 | but GNU \program{make} is required for the experimental
|
---|
1822 | processes in \file{Doc/tools/sgmlconv/}, at least while
|
---|
1823 | they're experimental. This is not required for running the
|
---|
1824 | \program{mkhowto} script.
|
---|
1825 |
|
---|
1826 | \item[\program{makeindex}]
|
---|
1827 | This is a standard program for converting \LaTeX{} index data
|
---|
1828 | to a formatted index; it should be included with all \LaTeX{}
|
---|
1829 | installations. It is needed for the PDF and PostScript
|
---|
1830 | conversions.
|
---|
1831 |
|
---|
1832 | \item[\program{makeinfo}]
|
---|
1833 | GNU \program{makeinfo} is used to convert Texinfo documents to
|
---|
1834 | GNU info files. Since Texinfo is used as an intermediate
|
---|
1835 | format in the info conversion, this program is needed in that
|
---|
1836 | conversion.
|
---|
1837 |
|
---|
1838 | \item[\program{pdflatex}]
|
---|
1839 | pdf\TeX{} is a relatively new variant of \TeX, and is used to
|
---|
1840 | generate the PDF version of the manuals. It is typically
|
---|
1841 | installed as part of most of the large \TeX{} distributions.
|
---|
1842 | \program{pdflatex} is pdf\TeX{} using the \LaTeX{} format.
|
---|
1843 |
|
---|
1844 | \item[\program{perl}]
|
---|
1845 | Perl is required for \LaTeX2HTML{} and one of the scripts used
|
---|
1846 | to post-process \LaTeX2HTML output, as well as the
|
---|
1847 | HTML-to-Texinfo conversion. This is required for
|
---|
1848 | the HTML and GNU info conversions.
|
---|
1849 |
|
---|
1850 | \item[\program{python}]
|
---|
1851 | Python is used for many of the scripts in the
|
---|
1852 | \file{Doc/tools/} directory; it is required for all
|
---|
1853 | conversions. This shouldn't be a problem if you're interested
|
---|
1854 | in writing documentation for Python!
|
---|
1855 | \end{description}
|
---|
1856 |
|
---|
1857 |
|
---|
1858 | \subsection{Internal Tools \label{tools-internal}}
|
---|
1859 |
|
---|
1860 | This section describes the various scripts that are used to
|
---|
1861 | implement various stages of document processing or to orchestrate
|
---|
1862 | entire build sequences. Most of these tools are only useful
|
---|
1863 | in the context of building the standard documentation, but some
|
---|
1864 | are more general.
|
---|
1865 |
|
---|
1866 | \begin{description}
|
---|
1867 | \item[\program{mkhowto}]
|
---|
1868 | This is the primary script used to format third-party
|
---|
1869 | documents. It contains all the logic needed to ``get it
|
---|
1870 | right.'' The proper way to use this script is to make a
|
---|
1871 | symbolic link to it or run it in place; the actual script file
|
---|
1872 | must be stored as part of the documentation source tree,
|
---|
1873 | though it may be used to format documents outside the tree.
|
---|
1874 | Use \program{mkhowto} \longprogramopt{help} for a list of
|
---|
1875 | command line options.
|
---|
1876 |
|
---|
1877 | \program{mkhowto} can be used for both \code{howto} and
|
---|
1878 | \code{manual} class documents. It is usually a good idea to
|
---|
1879 | always use the latest version of this tool rather than a
|
---|
1880 | version from an older source release of Python. It can be
|
---|
1881 | used to generate DVI, HTML, PDF, PostScript, and plain text
|
---|
1882 | documents. The GNU info and iSilo formats will be supported
|
---|
1883 | by this script in some future version.
|
---|
1884 |
|
---|
1885 | Use the \longprogramopt{help} option on this script's command
|
---|
1886 | line to get a summary of options for this script.
|
---|
1887 |
|
---|
1888 | XXX Need more here.
|
---|
1889 | \end{description}
|
---|
1890 |
|
---|
1891 |
|
---|
1892 | \subsection{Working on Cygwin \label{cygwin}}
|
---|
1893 |
|
---|
1894 | Installing the required tools under Cygwin under Cygwin can be a
|
---|
1895 | little tedious. Most of the required packages can be installed
|
---|
1896 | using Cygwin's graphical installer, while netpbm and \LaTeX2HTML
|
---|
1897 | must be installed from source.
|
---|
1898 |
|
---|
1899 | Start with a reasonably modern version of Cygwin. If you haven't
|
---|
1900 | upgraded for a few years, now would be a good time.
|
---|
1901 |
|
---|
1902 | Using the Cygwin installer, make sure your Cygwin installation
|
---|
1903 | includes Perl, Python, and the \TeX{} packages. Perl and Python
|
---|
1904 | are located under the \menuselection{Interpreters} heading. The
|
---|
1905 | \TeX{} packages are located under the \menuselection{Text}
|
---|
1906 | heading, and are named \code{tetex-*}. To ensure that all
|
---|
1907 | required packages are available, install every \code{tetex}
|
---|
1908 | package, except \code{tetex-x11}. (There may be a more minimal
|
---|
1909 | set, but I've not spent time trying to minimize the installation.)
|
---|
1910 |
|
---|
1911 | The netpbm package is used by \LaTeX2HTML, and \emph{must} be
|
---|
1912 | installed before \LaTeX2HTML can be successfully installed, even
|
---|
1913 | though its features will not be used for most Python
|
---|
1914 | documentation. References to download locations are located in
|
---|
1915 | the \ulink{netpbm README}{http://netpbm.sourceforge.net/README}.
|
---|
1916 | Install from the latest stable source distribution according to
|
---|
1917 | the instructions. (Note that binary packages of netpbm are
|
---|
1918 | sometimes available, but these may not work correctly with
|
---|
1919 | \LaTeX2HTML.)
|
---|
1920 |
|
---|
1921 | \LaTeX2HTML can be installed from the source archive, but only
|
---|
1922 | after munging one of the files in the distribution. Download the
|
---|
1923 | source archive from the \LaTeX2HTML website
|
---|
1924 | \url{http://www.latex2html.org/} (or one of the many alternate
|
---|
1925 | sites) and unpack it to a build directory. In the top level of
|
---|
1926 | this build directory there will be a file named \file{L2hos.pm}.
|
---|
1927 | Open \file{L2hos.pm} in an editor, and near the bottom of the file
|
---|
1928 | replace the text \code{\$\textasciicircum{}O} with the text
|
---|
1929 | \code{'unix'}. Proceed using this command to build and install
|
---|
1930 | the software:
|
---|
1931 |
|
---|
1932 | \begin{verbatim}
|
---|
1933 | % ./configure && make install
|
---|
1934 | \end{verbatim}
|
---|
1935 |
|
---|
1936 | You should now be able to build at least the DVI, HTML, PDF, and
|
---|
1937 | PostScript versions of the formatted documentation.
|
---|
1938 |
|
---|
1939 |
|
---|
1940 | \section{Including Graphics \label{graphics}}
|
---|
1941 |
|
---|
1942 | The standard documentation included with Python makes no use of
|
---|
1943 | diagrams or images; this is intentional. The outside tools used to
|
---|
1944 | format the documentation have not always been suited to working with
|
---|
1945 | graphics. As the tools have evolved and been improved by their
|
---|
1946 | maintainers, support for graphics has improved.
|
---|
1947 |
|
---|
1948 | The internal tools, starting with the \program{mkhowto} script, do
|
---|
1949 | not provide any direct support for graphics. However,
|
---|
1950 | \program{mkhowto} will not interfere with graphics support in the
|
---|
1951 | external tools.
|
---|
1952 |
|
---|
1953 | Experience using graphics together with these tools and the
|
---|
1954 | \code{howto} and \code{manual} document classes is not extensive,
|
---|
1955 | but has been known to work. The basic approach is this:
|
---|
1956 |
|
---|
1957 | \begin{enumerate}
|
---|
1958 | \item Create the image or graphic using your favorite
|
---|
1959 | application.
|
---|
1960 |
|
---|
1961 | \item Convert the image to a format supported by the conversion to
|
---|
1962 | your desired output format. If you want to generate HTML or
|
---|
1963 | PostScript, you can convert the image or graphic to
|
---|
1964 | encapsulated PostScript (a \file{.eps} file); \LaTeX2HTML
|
---|
1965 | can convert that to a \file{.gif} file; it may be possible
|
---|
1966 | to provide a \file{.gif} file directly. If you want to
|
---|
1967 | generate PDF, you need to provide an ``encapsulated'' PDF
|
---|
1968 | file. This can be generated from encapsulated PostScript
|
---|
1969 | using the \program{epstopdf} tool provided with the te\TeX{}
|
---|
1970 | distribution on Linux and \UNIX.
|
---|
1971 |
|
---|
1972 | \item In your document, add this line to ``import'' the general
|
---|
1973 | graphics support package \code{graphicx}:
|
---|
1974 |
|
---|
1975 | \begin{verbatim}
|
---|
1976 | \usepackage{graphicx}
|
---|
1977 | \end{verbatim}
|
---|
1978 |
|
---|
1979 | \item Where you want to include your graphic or image, include
|
---|
1980 | markup similar to this:
|
---|
1981 |
|
---|
1982 | \begin{verbatim}
|
---|
1983 | \begin{figure}
|
---|
1984 | \centering
|
---|
1985 | \includegraphics[width=5in]{myimage}
|
---|
1986 | \caption{Description of my image}
|
---|
1987 | \end{figure}
|
---|
1988 | \end{verbatim}
|
---|
1989 |
|
---|
1990 | In particular, note for the \macro{includegraphics} macro
|
---|
1991 | that no file extension is provided. If you're only
|
---|
1992 | interested in one target format, you can include the
|
---|
1993 | extension of the appropriate input file, but to allow
|
---|
1994 | support for multiple formats, omitting the extension makes
|
---|
1995 | life easier.
|
---|
1996 |
|
---|
1997 | \item Run \program{mkhowto} normally.
|
---|
1998 | \end{enumerate}
|
---|
1999 |
|
---|
2000 | If you're working on systems which support some sort of
|
---|
2001 | \program{make} facility, you can use that to ensure the intermediate
|
---|
2002 | graphic formats are kept up to date. This example shows a
|
---|
2003 | \file{Makefile} used to format a document containing a diagram
|
---|
2004 | created using the \program{dia} application:
|
---|
2005 |
|
---|
2006 | \begin{verbatim}
|
---|
2007 | default: pdf
|
---|
2008 | all: html pdf ps
|
---|
2009 |
|
---|
2010 | html: mydoc/mydoc.html
|
---|
2011 | pdf: mydoc.pdf
|
---|
2012 | ps: mydoc.ps
|
---|
2013 |
|
---|
2014 | mydoc/mydoc.html: mydoc.tex mygraphic.eps
|
---|
2015 | mkhowto --html $<
|
---|
2016 |
|
---|
2017 | mydoc.pdf: mydoc.tex mygraphic.pdf
|
---|
2018 | mkhowto --pdf $<
|
---|
2019 |
|
---|
2020 | mydoc.ps: mydoc.tex mygraphic.eps
|
---|
2021 | mkhowto --postscript $<
|
---|
2022 |
|
---|
2023 | .SUFFIXES: .dia .eps .pdf
|
---|
2024 |
|
---|
2025 | .dia.eps:
|
---|
2026 | dia --nosplash --export $@ $<
|
---|
2027 |
|
---|
2028 | .eps.pdf:
|
---|
2029 | epstopdf $<
|
---|
2030 | \end{verbatim} % $ <-- bow to font-lock
|
---|
2031 |
|
---|
2032 |
|
---|
2033 | \section{Future Directions \label{futures}}
|
---|
2034 |
|
---|
2035 | The history of the Python documentation is full of changes, most of
|
---|
2036 | which have been fairly small and evolutionary. There has been a
|
---|
2037 | great deal of discussion about making large changes in the markup
|
---|
2038 | languages and tools used to process the documentation. This section
|
---|
2039 | deals with the nature of the changes and what appears to be the most
|
---|
2040 | likely path of future development.
|
---|
2041 |
|
---|
2042 | \subsection{Structured Documentation \label{structured}}
|
---|
2043 |
|
---|
2044 | Most of the small changes to the \LaTeX{} markup have been made
|
---|
2045 | with an eye to divorcing the markup from the presentation, making
|
---|
2046 | both a bit more maintainable. Over the course of 1998, a large
|
---|
2047 | number of changes were made with exactly this in mind; previously,
|
---|
2048 | changes had been made but in a less systematic manner and with
|
---|
2049 | more concern for not needing to update the existing content. The
|
---|
2050 | result has been a highly structured and semantically loaded markup
|
---|
2051 | language implemented in \LaTeX. With almost no basic \TeX{} or
|
---|
2052 | \LaTeX{} markup in use, however, the markup syntax is about the
|
---|
2053 | only evidence of \LaTeX{} in the actual document sources.
|
---|
2054 |
|
---|
2055 | One side effect of this is that while we've been able to use
|
---|
2056 | standard ``engines'' for manipulating the documents, such as
|
---|
2057 | \LaTeX{} and \LaTeX2HTML, most of the actual transformations have
|
---|
2058 | been created specifically for Python. The \LaTeX{} document
|
---|
2059 | classes and \LaTeX2HTML support are both complete implementations
|
---|
2060 | of the specific markup designed for these documents.
|
---|
2061 |
|
---|
2062 | Combining highly customized markup with the somewhat esoteric
|
---|
2063 | systems used to process the documents leads us to ask some
|
---|
2064 | questions: Can we do this more easily? and, Can we do this
|
---|
2065 | better? After a great deal of discussion with the community, we
|
---|
2066 | have determined that actively pursuing modern structured
|
---|
2067 | documentation systems is worth some investment of time.
|
---|
2068 |
|
---|
2069 | There appear to be two real contenders in this arena: the Standard
|
---|
2070 | General Markup Language (SGML), and the Extensible Markup Language
|
---|
2071 | (XML). Both of these standards have advantages and disadvantages,
|
---|
2072 | and many advantages are shared.
|
---|
2073 |
|
---|
2074 | SGML offers advantages which may appeal most to authors,
|
---|
2075 | especially those using ordinary text editors. There are also
|
---|
2076 | additional abilities to define content models. A number of
|
---|
2077 | high-quality tools with demonstrated maturity are available, but
|
---|
2078 | most are not free; for those which are, portability issues remain
|
---|
2079 | a problem.
|
---|
2080 |
|
---|
2081 | The advantages of XML include the availability of a large number
|
---|
2082 | of evolving tools. Unfortunately, many of the associated
|
---|
2083 | standards are still evolving, and the tools will have to follow
|
---|
2084 | along. This means that developing a robust tool set that uses
|
---|
2085 | more than the basic XML 1.0 recommendation is not possible in the
|
---|
2086 | short term. The promised availability of a wide variety of
|
---|
2087 | high-quality tools which support some of the most important
|
---|
2088 | related standards is not immediate. Many tools are likely to be
|
---|
2089 | free, and the portability issues of those which are, are not
|
---|
2090 | expected to be significant.
|
---|
2091 |
|
---|
2092 | It turns out that converting to an XML or SGML system holds
|
---|
2093 | promise for translators as well; how much can be done to ease the
|
---|
2094 | burden on translators remains to be seen, and may have some impact
|
---|
2095 | on the schema and specific technologies used.
|
---|
2096 |
|
---|
2097 | XXX Eventual migration to XML.
|
---|
2098 |
|
---|
2099 | The documentation will be moved to XML in the future, and tools
|
---|
2100 | are being written which will convert the documentation from the
|
---|
2101 | current format to something close to a finished version, to the
|
---|
2102 | extent that the desired information is already present in the
|
---|
2103 | documentation. Some XSLT stylesheets have been started for
|
---|
2104 | presenting a preliminary XML version as HTML, but the results are
|
---|
2105 | fairly rough.
|
---|
2106 |
|
---|
2107 | The timeframe for the conversion is not clear since there doesn't
|
---|
2108 | seem to be much time available to work on this, but the apparent
|
---|
2109 | benefits are growing more substantial at a moderately rapid pace.
|
---|
2110 |
|
---|
2111 |
|
---|
2112 | \subsection{Discussion Forums \label{discussion}}
|
---|
2113 |
|
---|
2114 | Discussion of the future of the Python documentation and related
|
---|
2115 | topics takes place in the Documentation Special Interest Group, or
|
---|
2116 | ``Doc-SIG.'' Information on the group, including mailing list
|
---|
2117 | archives and subscription information, is available at
|
---|
2118 | \url{http://www.python.org/sigs/doc-sig/}. The SIG is open to all
|
---|
2119 | interested parties.
|
---|
2120 |
|
---|
2121 | Comments and bug reports on the standard documents should be sent
|
---|
2122 | to \email{docs@python.org}. This may include comments
|
---|
2123 | about formatting, content, grammatical and spelling errors, or
|
---|
2124 | this document. You can also send comments on this document
|
---|
2125 | directly to the author at \email{fdrake@acm.org}.
|
---|
2126 |
|
---|
2127 | \input{doc.ind}
|
---|
2128 |
|
---|
2129 | \end{document}
|
---|