root / docs / build / latex / sphinx.sty @ 216bb34c
History | View | Annotate | Download (22.3 kB)
1 | 216bb34c | Shikhar Bhushan | % |
---|---|---|---|
2 | 216bb34c | Shikhar Bhushan | % sphinx.sty |
3 | 216bb34c | Shikhar Bhushan | % |
4 | 216bb34c | Shikhar Bhushan | % Adapted from the old python.sty, mostly written by Fred Drake, |
5 | 216bb34c | Shikhar Bhushan | % by Georg Brandl. |
6 | 216bb34c | Shikhar Bhushan | % |
7 | 216bb34c | Shikhar Bhushan | |
8 | 216bb34c | Shikhar Bhushan | \NeedsTeXFormat{LaTeX2e}[1995/12/01] |
9 | 216bb34c | Shikhar Bhushan | \ProvidesPackage{sphinx}[2008/05/01 LaTeX package (Sphinx markup)] |
10 | 216bb34c | Shikhar Bhushan | |
11 | 216bb34c | Shikhar Bhushan | \RequirePackage{textcomp} |
12 | 216bb34c | Shikhar Bhushan | \RequirePackage{fancyhdr} |
13 | 216bb34c | Shikhar Bhushan | \RequirePackage{fancybox} |
14 | 216bb34c | Shikhar Bhushan | \RequirePackage{titlesec} |
15 | 216bb34c | Shikhar Bhushan | \RequirePackage{tabulary} |
16 | 216bb34c | Shikhar Bhushan | \RequirePackage{amsmath} % for \text |
17 | 216bb34c | Shikhar Bhushan | \RequirePackage{makeidx} |
18 | 216bb34c | Shikhar Bhushan | \RequirePackage{framed} |
19 | 216bb34c | Shikhar Bhushan | \RequirePackage{color} |
20 | 216bb34c | Shikhar Bhushan | % For highlighted code. |
21 | 216bb34c | Shikhar Bhushan | \RequirePackage{fancyvrb} |
22 | 216bb34c | Shikhar Bhushan | % For table captions. |
23 | 216bb34c | Shikhar Bhushan | \RequirePackage{threeparttable} |
24 | 216bb34c | Shikhar Bhushan | % Handle footnotes in tables. |
25 | 216bb34c | Shikhar Bhushan | \RequirePackage{footnote} |
26 | 216bb34c | Shikhar Bhushan | \makesavenoteenv{tabulary} |
27 | 216bb34c | Shikhar Bhushan | % For floating figures in the text. |
28 | 216bb34c | Shikhar Bhushan | \RequirePackage{wrapfig} |
29 | 216bb34c | Shikhar Bhushan | |
30 | 216bb34c | Shikhar Bhushan | % Redefine these colors to your liking in the preamble. |
31 | 216bb34c | Shikhar Bhushan | \definecolor{TitleColor}{rgb}{0.126,0.263,0.361} |
32 | 216bb34c | Shikhar Bhushan | \definecolor{InnerLinkColor}{rgb}{0.208,0.374,0.486} |
33 | 216bb34c | Shikhar Bhushan | \definecolor{OuterLinkColor}{rgb}{0.216,0.439,0.388} |
34 | 216bb34c | Shikhar Bhushan | % Redefine these colors to something not white if you want to have colored |
35 | 216bb34c | Shikhar Bhushan | % background and border for code examples. |
36 | 216bb34c | Shikhar Bhushan | \definecolor{VerbatimColor}{rgb}{1,1,1} |
37 | 216bb34c | Shikhar Bhushan | \definecolor{VerbatimBorderColor}{rgb}{1,1,1} |
38 | 216bb34c | Shikhar Bhushan | |
39 | 216bb34c | Shikhar Bhushan | % Uncomment these two lines to ignore the paper size and make the page |
40 | 216bb34c | Shikhar Bhushan | % size more like a typical published manual. |
41 | 216bb34c | Shikhar Bhushan | %\renewcommand{\paperheight}{9in} |
42 | 216bb34c | Shikhar Bhushan | %\renewcommand{\paperwidth}{8.5in} % typical squarish manual |
43 | 216bb34c | Shikhar Bhushan | %\renewcommand{\paperwidth}{7in} % O'Reilly ``Programmming Python'' |
44 | 216bb34c | Shikhar Bhushan | |
45 | 216bb34c | Shikhar Bhushan | % For graphicx, check if we are compiling under latex or pdflatex. |
46 | 216bb34c | Shikhar Bhushan | \ifx\pdftexversion\undefined |
47 | 216bb34c | Shikhar Bhushan | \usepackage{graphicx} |
48 | 216bb34c | Shikhar Bhushan | \else |
49 | 216bb34c | Shikhar Bhushan | \usepackage[pdftex]{graphicx} |
50 | 216bb34c | Shikhar Bhushan | \fi |
51 | 216bb34c | Shikhar Bhushan | |
52 | 216bb34c | Shikhar Bhushan | % for PDF output, use colors and maximal compression |
53 | 216bb34c | Shikhar Bhushan | \newif\ifsphinxpdfoutput\sphinxpdfoutputfalse |
54 | 216bb34c | Shikhar Bhushan | \ifx\pdfoutput\undefined\else\ifcase\pdfoutput |
55 | 216bb34c | Shikhar Bhushan | \let\py@NormalColor\relax |
56 | 216bb34c | Shikhar Bhushan | \let\py@TitleColor\relax |
57 | 216bb34c | Shikhar Bhushan | \else |
58 | 216bb34c | Shikhar Bhushan | \sphinxpdfoutputtrue |
59 | 216bb34c | Shikhar Bhushan | \input{pdfcolor} |
60 | 216bb34c | Shikhar Bhushan | \def\py@NormalColor{\color[rgb]{0.0,0.0,0.0}} |
61 | 216bb34c | Shikhar Bhushan | \def\py@TitleColor{\color{TitleColor}} |
62 | 216bb34c | Shikhar Bhushan | \pdfcompresslevel=9 |
63 | 216bb34c | Shikhar Bhushan | \fi\fi |
64 | 216bb34c | Shikhar Bhushan | |
65 | 216bb34c | Shikhar Bhushan | % XeLaTeX can do colors, too |
66 | 216bb34c | Shikhar Bhushan | \ifx\XeTeXrevision\undefined\else |
67 | 216bb34c | Shikhar Bhushan | \def\py@NormalColor{\color[rgb]{0.0,0.0,0.0}} |
68 | 216bb34c | Shikhar Bhushan | \def\py@TitleColor{\color{TitleColor}} |
69 | 216bb34c | Shikhar Bhushan | \fi |
70 | 216bb34c | Shikhar Bhushan | |
71 | 216bb34c | Shikhar Bhushan | % Increase printable page size (copied from fullpage.sty) |
72 | 216bb34c | Shikhar Bhushan | \topmargin 0pt |
73 | 216bb34c | Shikhar Bhushan | \advance \topmargin by -\headheight |
74 | 216bb34c | Shikhar Bhushan | \advance \topmargin by -\headsep |
75 | 216bb34c | Shikhar Bhushan | |
76 | 216bb34c | Shikhar Bhushan | % attempt to work a little better for A4 users |
77 | 216bb34c | Shikhar Bhushan | \textheight \paperheight |
78 | 216bb34c | Shikhar Bhushan | \advance\textheight by -2in |
79 | 216bb34c | Shikhar Bhushan | |
80 | 216bb34c | Shikhar Bhushan | \oddsidemargin 0pt |
81 | 216bb34c | Shikhar Bhushan | \evensidemargin 0pt |
82 | 216bb34c | Shikhar Bhushan | %\evensidemargin -.25in % for ``manual size'' documents |
83 | 216bb34c | Shikhar Bhushan | \marginparwidth 0.5in |
84 | 216bb34c | Shikhar Bhushan | |
85 | 216bb34c | Shikhar Bhushan | \textwidth \paperwidth |
86 | 216bb34c | Shikhar Bhushan | \advance\textwidth by -2in |
87 | 216bb34c | Shikhar Bhushan | |
88 | 216bb34c | Shikhar Bhushan | |
89 | 216bb34c | Shikhar Bhushan | % Style parameters and macros used by most documents here |
90 | 216bb34c | Shikhar Bhushan | \raggedbottom |
91 | 216bb34c | Shikhar Bhushan | \sloppy |
92 | 216bb34c | Shikhar Bhushan | \parindent = 0mm |
93 | 216bb34c | Shikhar Bhushan | \parskip = 2mm |
94 | 216bb34c | Shikhar Bhushan | \hbadness = 5000 % don't print trivial gripes |
95 | 216bb34c | Shikhar Bhushan | |
96 | 216bb34c | Shikhar Bhushan | \pagestyle{empty} % start this way; change for |
97 | 216bb34c | Shikhar Bhushan | \pagenumbering{roman} % ToC & chapters |
98 | 216bb34c | Shikhar Bhushan | |
99 | 216bb34c | Shikhar Bhushan | % Use this to set the font family for headers and other decor: |
100 | 216bb34c | Shikhar Bhushan | \newcommand{\py@HeaderFamily}{\sffamily\bfseries} |
101 | 216bb34c | Shikhar Bhushan | |
102 | 216bb34c | Shikhar Bhushan | % Redefine the 'normal' header/footer style when using "fancyhdr" package: |
103 | 216bb34c | Shikhar Bhushan | \@ifundefined{fancyhf}{}{ |
104 | 216bb34c | Shikhar Bhushan | % Use \pagestyle{normal} as the primary pagestyle for text. |
105 | 216bb34c | Shikhar Bhushan | \fancypagestyle{normal}{ |
106 | 216bb34c | Shikhar Bhushan | \fancyhf{} |
107 | 216bb34c | Shikhar Bhushan | \fancyfoot[LE,RO]{{\py@HeaderFamily\thepage}} |
108 | 216bb34c | Shikhar Bhushan | \fancyfoot[LO]{{\py@HeaderFamily\nouppercase{\rightmark}}} |
109 | 216bb34c | Shikhar Bhushan | \fancyfoot[RE]{{\py@HeaderFamily\nouppercase{\leftmark}}} |
110 | 216bb34c | Shikhar Bhushan | \fancyhead[LE,RO]{{\py@HeaderFamily \@title, \py@release}} |
111 | 216bb34c | Shikhar Bhushan | \renewcommand{\headrulewidth}{0.4pt} |
112 | 216bb34c | Shikhar Bhushan | \renewcommand{\footrulewidth}{0.4pt} |
113 | 216bb34c | Shikhar Bhushan | } |
114 | 216bb34c | Shikhar Bhushan | % Update the plain style so we get the page number & footer line, |
115 | 216bb34c | Shikhar Bhushan | % but not a chapter or section title. This is to keep the first |
116 | 216bb34c | Shikhar Bhushan | % page of a chapter and the blank page between chapters `clean.' |
117 | 216bb34c | Shikhar Bhushan | \fancypagestyle{plain}{ |
118 | 216bb34c | Shikhar Bhushan | \fancyhf{} |
119 | 216bb34c | Shikhar Bhushan | \fancyfoot[LE,RO]{{\py@HeaderFamily\thepage}} |
120 | 216bb34c | Shikhar Bhushan | \renewcommand{\headrulewidth}{0pt} |
121 | 216bb34c | Shikhar Bhushan | \renewcommand{\footrulewidth}{0.4pt} |
122 | 216bb34c | Shikhar Bhushan | } |
123 | 216bb34c | Shikhar Bhushan | } |
124 | 216bb34c | Shikhar Bhushan | |
125 | 216bb34c | Shikhar Bhushan | % Some custom font markup commands. |
126 | 216bb34c | Shikhar Bhushan | % |
127 | 216bb34c | Shikhar Bhushan | \newcommand{\strong}[1]{{\bf #1}} |
128 | 216bb34c | Shikhar Bhushan | \newcommand{\code}[1]{\texttt{#1}} |
129 | 216bb34c | Shikhar Bhushan | \newcommand{\bfcode}[1]{\code{\bfseries#1}} |
130 | 216bb34c | Shikhar Bhushan | \newcommand{\samp}[1]{`\code{#1}'} |
131 | 216bb34c | Shikhar Bhushan | \newcommand{\email}[1]{\textsf{#1}} |
132 | 216bb34c | Shikhar Bhushan | |
133 | 216bb34c | Shikhar Bhushan | \newcommand{\py@modulebadkey}{{--just-some-junk--}} |
134 | 216bb34c | Shikhar Bhushan | |
135 | 216bb34c | Shikhar Bhushan | % Redefine the Verbatim environment to allow border and background colors. |
136 | 216bb34c | Shikhar Bhushan | % The original environment is still used for verbatims within tables. |
137 | 216bb34c | Shikhar Bhushan | \let\OriginalVerbatim=\Verbatim |
138 | 216bb34c | Shikhar Bhushan | \let\endOriginalVerbatim=\endVerbatim |
139 | 216bb34c | Shikhar Bhushan | |
140 | 216bb34c | Shikhar Bhushan | % Play with vspace to be able to keep the indentation. |
141 | 216bb34c | Shikhar Bhushan | \newlength\distancetoright |
142 | 216bb34c | Shikhar Bhushan | \newlength\leftsidespace |
143 | 216bb34c | Shikhar Bhushan | \def\mycolorbox#1{% |
144 | 216bb34c | Shikhar Bhushan | \setlength\leftsidespace{\@totalleftmargin}% |
145 | 216bb34c | Shikhar Bhushan | \setlength\distancetoright{\textwidth}% |
146 | 216bb34c | Shikhar Bhushan | \advance\distancetoright -\@totalleftmargin % |
147 | 216bb34c | Shikhar Bhushan | \noindent\hspace*{\@totalleftmargin}% |
148 | 216bb34c | Shikhar Bhushan | \fcolorbox{VerbatimBorderColor}{VerbatimColor}{% |
149 | 216bb34c | Shikhar Bhushan | \begin{minipage}{\distancetoright}% |
150 | 216bb34c | Shikhar Bhushan | \smallskip% |
151 | 216bb34c | Shikhar Bhushan | \noindent\hspace*{-\leftsidespace}% |
152 | 216bb34c | Shikhar Bhushan | #1 |
153 | 216bb34c | Shikhar Bhushan | \end{minipage}% |
154 | 216bb34c | Shikhar Bhushan | }% |
155 | 216bb34c | Shikhar Bhushan | } |
156 | 216bb34c | Shikhar Bhushan | \def\FrameCommand{\mycolorbox} |
157 | 216bb34c | Shikhar Bhushan | |
158 | 216bb34c | Shikhar Bhushan | \renewcommand{\Verbatim}[1][1]{% |
159 | 216bb34c | Shikhar Bhushan | % The list environement is needed to control perfectly the vertical |
160 | 216bb34c | Shikhar Bhushan | % space. |
161 | 216bb34c | Shikhar Bhushan | \list{}{% |
162 | 216bb34c | Shikhar Bhushan | \setlength\parskip{0pt}% |
163 | 216bb34c | Shikhar Bhushan | \setlength\itemsep{0ex}% |
164 | 216bb34c | Shikhar Bhushan | \setlength\topsep{0ex}% |
165 | 216bb34c | Shikhar Bhushan | \setlength\partopsep{0pt}% |
166 | 216bb34c | Shikhar Bhushan | \setlength\leftmargin{0pt}% |
167 | 216bb34c | Shikhar Bhushan | }% |
168 | 216bb34c | Shikhar Bhushan | \item\MakeFramed {\FrameRestore}% |
169 | 216bb34c | Shikhar Bhushan | \small% |
170 | 216bb34c | Shikhar Bhushan | \OriginalVerbatim[#1]% |
171 | 216bb34c | Shikhar Bhushan | } |
172 | 216bb34c | Shikhar Bhushan | \renewcommand{\endVerbatim}{% |
173 | 216bb34c | Shikhar Bhushan | \endOriginalVerbatim% |
174 | 216bb34c | Shikhar Bhushan | \endMakeFramed% |
175 | 216bb34c | Shikhar Bhushan | \endlist% |
176 | 216bb34c | Shikhar Bhushan | } |
177 | 216bb34c | Shikhar Bhushan | |
178 | 216bb34c | Shikhar Bhushan | |
179 | 216bb34c | Shikhar Bhushan | % Index-entry generation support. |
180 | 216bb34c | Shikhar Bhushan | % |
181 | 216bb34c | Shikhar Bhushan | |
182 | 216bb34c | Shikhar Bhushan | % Command to generate two index entries (using subentries) |
183 | 216bb34c | Shikhar Bhushan | \newcommand{\indexii}[2]{\index{#1!#2}\index{#2!#1}} |
184 | 216bb34c | Shikhar Bhushan | |
185 | 216bb34c | Shikhar Bhushan | % And three entries (using only one level of subentries) |
186 | 216bb34c | Shikhar Bhushan | \newcommand{\indexiii}[3]{\index{#1!#2 #3}\index{#2!#3, #1}\index{#3!#1 #2}} |
187 | 216bb34c | Shikhar Bhushan | |
188 | 216bb34c | Shikhar Bhushan | % And four (again, using only one level of subentries) |
189 | 216bb34c | Shikhar Bhushan | \newcommand{\indexiv}[4]{ |
190 | 216bb34c | Shikhar Bhushan | \index{#1!#2 #3 #4} |
191 | 216bb34c | Shikhar Bhushan | \index{#2!#3 #4, #1} |
192 | 216bb34c | Shikhar Bhushan | \index{#3!#4, #1 #2} |
193 | 216bb34c | Shikhar Bhushan | \index{#4!#1 #2 #3} |
194 | 216bb34c | Shikhar Bhushan | } |
195 | 216bb34c | Shikhar Bhushan | |
196 | 216bb34c | Shikhar Bhushan | % support for the module index |
197 | 216bb34c | Shikhar Bhushan | \newif\ifpy@UseModuleIndex |
198 | 216bb34c | Shikhar Bhushan | \py@UseModuleIndexfalse |
199 | 216bb34c | Shikhar Bhushan | |
200 | 216bb34c | Shikhar Bhushan | \newcommand{\makemodindex}{ |
201 | 216bb34c | Shikhar Bhushan | \newwrite\modindexfile |
202 | 216bb34c | Shikhar Bhushan | \openout\modindexfile=mod\jobname.idx |
203 | 216bb34c | Shikhar Bhushan | \py@UseModuleIndextrue |
204 | 216bb34c | Shikhar Bhushan | } |
205 | 216bb34c | Shikhar Bhushan | |
206 | 216bb34c | Shikhar Bhushan | \newcommand{\printmodindex}{ |
207 | 216bb34c | Shikhar Bhushan | \@input@{mod\jobname.ind} |
208 | 216bb34c | Shikhar Bhushan | } |
209 | 216bb34c | Shikhar Bhushan | |
210 | 216bb34c | Shikhar Bhushan | % Add the defining entry for a module |
211 | 216bb34c | Shikhar Bhushan | \newcommand{\py@modindex}[2]{% |
212 | 216bb34c | Shikhar Bhushan | \renewcommand{\py@thismodule}{#1} |
213 | 216bb34c | Shikhar Bhushan | \ifpy@UseModuleIndex% |
214 | 216bb34c | Shikhar Bhushan | \@ifundefined{py@modplat@\py@thismodulekey}{ |
215 | 216bb34c | Shikhar Bhushan | \write\modindexfile{\protect\indexentry{#1@{\texttt{#1}}|hyperpage}{\thepage}}% |
216 | 216bb34c | Shikhar Bhushan | }{\write\modindexfile{\protect\indexentry{#1@{\texttt{#1 }% |
217 | 216bb34c | Shikhar Bhushan | \emph{(\platformof{\py@thismodulekey})}}|hyperpage}{\thepage}}% |
218 | 216bb34c | Shikhar Bhushan | } |
219 | 216bb34c | Shikhar Bhushan | \fi% |
220 | 216bb34c | Shikhar Bhushan | } |
221 | 216bb34c | Shikhar Bhushan | |
222 | 216bb34c | Shikhar Bhushan | % "Current" keys |
223 | 216bb34c | Shikhar Bhushan | \newcommand{\py@thisclass}{} |
224 | 216bb34c | Shikhar Bhushan | \newcommand{\py@thismodule}{} |
225 | 216bb34c | Shikhar Bhushan | \newcommand{\py@thismodulekey}{} |
226 | 216bb34c | Shikhar Bhushan | \newcommand{\py@thismoduletype}{} |
227 | 216bb34c | Shikhar Bhushan | \newcommand{\py@emptymodule}{} |
228 | 216bb34c | Shikhar Bhushan | |
229 | 216bb34c | Shikhar Bhushan | % \declaremodule[key]{type}{name} |
230 | 216bb34c | Shikhar Bhushan | \newcommand{\declaremodule}[3][\py@modulebadkey]{ |
231 | 216bb34c | Shikhar Bhushan | \renewcommand{\py@thismoduletype}{#2} |
232 | 216bb34c | Shikhar Bhushan | \ifx\py@modulebadkey#1 |
233 | 216bb34c | Shikhar Bhushan | \renewcommand{\py@thismodulekey}{#3} |
234 | 216bb34c | Shikhar Bhushan | \else |
235 | 216bb34c | Shikhar Bhushan | \renewcommand{\py@thismodulekey}{#1} |
236 | 216bb34c | Shikhar Bhushan | \fi |
237 | 216bb34c | Shikhar Bhushan | \py@modindex{#3}{} |
238 | 216bb34c | Shikhar Bhushan | %\label{module-\py@thismodulekey} |
239 | 216bb34c | Shikhar Bhushan | } |
240 | 216bb34c | Shikhar Bhushan | |
241 | 216bb34c | Shikhar Bhushan | % Record module platforms for the Module Index |
242 | 216bb34c | Shikhar Bhushan | \newif\ifpy@ModPlatformFileIsOpen \py@ModPlatformFileIsOpenfalse |
243 | 216bb34c | Shikhar Bhushan | \long\def\py@writeModPlatformFile#1{% |
244 | 216bb34c | Shikhar Bhushan | \protected@write\py@ModPlatformFile% |
245 | 216bb34c | Shikhar Bhushan | {\let\label\@gobble \let\index\@gobble \let\glossary\@gobble}% |
246 | 216bb34c | Shikhar Bhushan | {\string#1}% |
247 | 216bb34c | Shikhar Bhushan | } |
248 | 216bb34c | Shikhar Bhushan | \newcommand{\py@ModPlatformFilename}{\jobname.pla} |
249 | 216bb34c | Shikhar Bhushan | \newcommand{\platform}[1]{ |
250 | 216bb34c | Shikhar Bhushan | \ifpy@ModPlatformFileIsOpen\else |
251 | 216bb34c | Shikhar Bhushan | \newwrite\py@ModPlatformFile |
252 | 216bb34c | Shikhar Bhushan | \openout\py@ModPlatformFile=\py@ModPlatformFilename |
253 | 216bb34c | Shikhar Bhushan | \py@ModPlatformFileIsOpentrue |
254 | 216bb34c | Shikhar Bhushan | \fi |
255 | 216bb34c | Shikhar Bhushan | \py@writeModPlatformFile{\py@defplatform{\py@thismodulekey}{#1}} |
256 | 216bb34c | Shikhar Bhushan | } |
257 | 216bb34c | Shikhar Bhushan | \newcommand{\py@defplatform}[2]{\expandafter\def\csname py@modplat@#1\endcsname{#2}} |
258 | 216bb34c | Shikhar Bhushan | \newcommand{\platformof}[1]{\csname py@modplat@#1\endcsname} |
259 | 216bb34c | Shikhar Bhushan | |
260 | 216bb34c | Shikhar Bhushan | \InputIfFileExists{\jobname.pla}{}{} |
261 | 216bb34c | Shikhar Bhushan | |
262 | 216bb34c | Shikhar Bhushan | % \moduleauthor{name}{email} |
263 | 216bb34c | Shikhar Bhushan | \newcommand{\moduleauthor}[2]{} |
264 | 216bb34c | Shikhar Bhushan | |
265 | 216bb34c | Shikhar Bhushan | % \sectionauthor{name}{email} |
266 | 216bb34c | Shikhar Bhushan | \newcommand{\sectionauthor}[2]{} |
267 | 216bb34c | Shikhar Bhushan | |
268 | 216bb34c | Shikhar Bhushan | % Ignore module synopsis. |
269 | 216bb34c | Shikhar Bhushan | \newcommand{\modulesynopsis}[1]{} |
270 | 216bb34c | Shikhar Bhushan | |
271 | 216bb34c | Shikhar Bhushan | % Reset "current" objects. |
272 | 216bb34c | Shikhar Bhushan | \newcommand{\resetcurrentobjects}{ |
273 | 216bb34c | Shikhar Bhushan | \renewcommand{\py@thisclass}{} |
274 | 216bb34c | Shikhar Bhushan | \renewcommand{\py@thismodule}{} |
275 | 216bb34c | Shikhar Bhushan | \renewcommand{\py@thismodulekey}{} |
276 | 216bb34c | Shikhar Bhushan | \renewcommand{\py@thismoduletype}{} |
277 | 216bb34c | Shikhar Bhushan | } |
278 | 216bb34c | Shikhar Bhushan | |
279 | 216bb34c | Shikhar Bhushan | % Augment the sectioning commands used to get our own font family in place, |
280 | 216bb34c | Shikhar Bhushan | % and reset some internal data items: |
281 | 216bb34c | Shikhar Bhushan | \titleformat{\section}{\Large\py@HeaderFamily}% |
282 | 216bb34c | Shikhar Bhushan | {\py@TitleColor\thesection}{0.5em}{\py@TitleColor}{\py@NormalColor} |
283 | 216bb34c | Shikhar Bhushan | \titleformat{\subsection}{\large\py@HeaderFamily}% |
284 | 216bb34c | Shikhar Bhushan | {\py@TitleColor\thesubsection}{0.5em}{\py@TitleColor}{\py@NormalColor} |
285 | 216bb34c | Shikhar Bhushan | \titleformat{\subsubsection}{\py@HeaderFamily}% |
286 | 216bb34c | Shikhar Bhushan | {\py@TitleColor\thesubsubsection}{0.5em}{\py@TitleColor}{\py@NormalColor} |
287 | 216bb34c | Shikhar Bhushan | \titleformat{\paragraph}{\large\py@HeaderFamily}% |
288 | 216bb34c | Shikhar Bhushan | {\py@TitleColor}{0em}{\py@TitleColor}{\py@NormalColor} |
289 | 216bb34c | Shikhar Bhushan | |
290 | 216bb34c | Shikhar Bhushan | |
291 | 216bb34c | Shikhar Bhushan | % Now for a lot of semantically-loaded environments that do a ton of magical |
292 | 216bb34c | Shikhar Bhushan | % things to get the right formatting and index entries for the stuff in |
293 | 216bb34c | Shikhar Bhushan | % Python modules and C API. |
294 | 216bb34c | Shikhar Bhushan | |
295 | 216bb34c | Shikhar Bhushan | |
296 | 216bb34c | Shikhar Bhushan | % {fulllineitems} is used in one place in libregex.tex, but is really for |
297 | 216bb34c | Shikhar Bhushan | % internal use in this file. |
298 | 216bb34c | Shikhar Bhushan | % |
299 | 216bb34c | Shikhar Bhushan | \newcommand{\py@itemnewline}[1]{% |
300 | 216bb34c | Shikhar Bhushan | \@tempdima\linewidth% |
301 | 216bb34c | Shikhar Bhushan | \advance\@tempdima \leftmargin\makebox[\@tempdima][l]{#1}% |
302 | 216bb34c | Shikhar Bhushan | } |
303 | 216bb34c | Shikhar Bhushan | |
304 | 216bb34c | Shikhar Bhushan | \newenvironment{fulllineitems}{ |
305 | 216bb34c | Shikhar Bhushan | \begin{list}{}{\labelwidth \leftmargin \labelsep 0pt |
306 | 216bb34c | Shikhar Bhushan | \rightmargin 0pt \topsep -\parskip \partopsep \parskip |
307 | 216bb34c | Shikhar Bhushan | \itemsep -\parsep |
308 | 216bb34c | Shikhar Bhushan | \let\makelabel=\py@itemnewline} |
309 | 216bb34c | Shikhar Bhushan | }{\end{list}} |
310 | 216bb34c | Shikhar Bhushan | |
311 | 216bb34c | Shikhar Bhushan | % \optional is mostly for use in the arguments parameters to the various |
312 | 216bb34c | Shikhar Bhushan | % {*desc} environments defined below, but may be used elsewhere. Known to |
313 | 216bb34c | Shikhar Bhushan | % be used in the debugger chapter. |
314 | 216bb34c | Shikhar Bhushan | % |
315 | 216bb34c | Shikhar Bhushan | % Typical usage: |
316 | 216bb34c | Shikhar Bhushan | % |
317 | 216bb34c | Shikhar Bhushan | % \begin{funcdesc}{myfunc}{reqparm\optional{, optparm}} |
318 | 216bb34c | Shikhar Bhushan | % ^^^ ^^^ |
319 | 216bb34c | Shikhar Bhushan | % No space here No space here |
320 | 216bb34c | Shikhar Bhushan | % |
321 | 216bb34c | Shikhar Bhushan | % When a function has multiple optional parameters, \optional should be |
322 | 216bb34c | Shikhar Bhushan | % nested, not chained. This is right: |
323 | 216bb34c | Shikhar Bhushan | % |
324 | 216bb34c | Shikhar Bhushan | % \begin{funcdesc}{myfunc}{\optional{parm1\optional{, parm2}}} |
325 | 216bb34c | Shikhar Bhushan | % |
326 | 216bb34c | Shikhar Bhushan | \let\py@badkey=\@undefined |
327 | 216bb34c | Shikhar Bhushan | |
328 | 216bb34c | Shikhar Bhushan | \newcommand{\optional}[1]{% |
329 | 216bb34c | Shikhar Bhushan | {\textnormal{\Large[}}{#1}\hspace{0.5mm}{\textnormal{\Large]}}} |
330 | 216bb34c | Shikhar Bhushan | |
331 | 216bb34c | Shikhar Bhushan | % This can be used when a function or method accepts an varying number |
332 | 216bb34c | Shikhar Bhushan | % of arguments, such as by using the *args syntax in the parameter list. |
333 | 216bb34c | Shikhar Bhushan | \newcommand{\py@moreargs}{...} |
334 | 216bb34c | Shikhar Bhushan | |
335 | 216bb34c | Shikhar Bhushan | % This can be used when you don't want to document the parameters to a |
336 | 216bb34c | Shikhar Bhushan | % function or method, but simply state that it's an alias for |
337 | 216bb34c | Shikhar Bhushan | % something else. |
338 | 216bb34c | Shikhar Bhushan | \newcommand{\py@unspecified}{...} |
339 | 216bb34c | Shikhar Bhushan | |
340 | 216bb34c | Shikhar Bhushan | \newcommand{\py@varvars}[1]{{% |
341 | 216bb34c | Shikhar Bhushan | {\let\unspecified=\py@unspecified% |
342 | 216bb34c | Shikhar Bhushan | \let\moreargs=\py@moreargs% |
343 | 216bb34c | Shikhar Bhushan | \emph{#1}}}} |
344 | 216bb34c | Shikhar Bhushan | |
345 | 216bb34c | Shikhar Bhushan | \newlength{\py@argswidth} |
346 | 216bb34c | Shikhar Bhushan | \newcommand{\py@sigparams}[1]{% |
347 | 216bb34c | Shikhar Bhushan | \parbox[t]{\py@argswidth}{\py@varvars{#1}\code{)}}} |
348 | 216bb34c | Shikhar Bhushan | \newcommand{\py@sigline}[2]{% |
349 | 216bb34c | Shikhar Bhushan | \settowidth{\py@argswidth}{#1\code{(}}% |
350 | 216bb34c | Shikhar Bhushan | \addtolength{\py@argswidth}{-2\py@argswidth}% |
351 | 216bb34c | Shikhar Bhushan | \addtolength{\py@argswidth}{\textwidth}% |
352 | 216bb34c | Shikhar Bhushan | \item[#1\code{(}\py@sigparams{#2}]} |
353 | 216bb34c | Shikhar Bhushan | |
354 | 216bb34c | Shikhar Bhushan | % C functions ------------------------------------------------------------ |
355 | 216bb34c | Shikhar Bhushan | % \begin{cfuncdesc}[refcount]{type}{name}{arglist} |
356 | 216bb34c | Shikhar Bhushan | % Note that the [refcount] slot should only be filled in by |
357 | 216bb34c | Shikhar Bhushan | % tools/anno-api.py; it pulls the value from the refcounts database. |
358 | 216bb34c | Shikhar Bhushan | \newcommand{\cfuncline}[3]{ |
359 | 216bb34c | Shikhar Bhushan | \py@sigline{\code{#1 \bfcode{#2}}}{#3}% |
360 | 216bb34c | Shikhar Bhushan | } |
361 | 216bb34c | Shikhar Bhushan | \newenvironment{cfuncdesc}[3]{ |
362 | 216bb34c | Shikhar Bhushan | \begin{fulllineitems} |
363 | 216bb34c | Shikhar Bhushan | \cfuncline{#1}{#2}{#3} |
364 | 216bb34c | Shikhar Bhushan | }{\end{fulllineitems}} |
365 | 216bb34c | Shikhar Bhushan | |
366 | 216bb34c | Shikhar Bhushan | % C variables ------------------------------------------------------------ |
367 | 216bb34c | Shikhar Bhushan | % \begin{cvardesc}{type}{name} |
368 | 216bb34c | Shikhar Bhushan | \newenvironment{cvardesc}[2]{ |
369 | 216bb34c | Shikhar Bhushan | \begin{fulllineitems} |
370 | 216bb34c | Shikhar Bhushan | \item[\code{#1 \bfcode{#2}}] |
371 | 216bb34c | Shikhar Bhushan | }{\end{fulllineitems}} |
372 | 216bb34c | Shikhar Bhushan | |
373 | 216bb34c | Shikhar Bhushan | % C data types ----------------------------------------------------------- |
374 | 216bb34c | Shikhar Bhushan | % \begin{ctypedesc}[index name]{typedef name} |
375 | 216bb34c | Shikhar Bhushan | \newenvironment{ctypedesc}[2][\py@badkey]{ |
376 | 216bb34c | Shikhar Bhushan | \begin{fulllineitems} |
377 | 216bb34c | Shikhar Bhushan | \item[\bfcode{#2}] |
378 | 216bb34c | Shikhar Bhushan | }{\end{fulllineitems}} |
379 | 216bb34c | Shikhar Bhushan | |
380 | 216bb34c | Shikhar Bhushan | % C type fields ---------------------------------------------------------- |
381 | 216bb34c | Shikhar Bhushan | % \begin{cmemberdesc}{container type}{ctype}{membername} |
382 | 216bb34c | Shikhar Bhushan | \newcommand{\cmemberline}[3]{ |
383 | 216bb34c | Shikhar Bhushan | \item[\code{#2 \bfcode{#3}}] |
384 | 216bb34c | Shikhar Bhushan | } |
385 | 216bb34c | Shikhar Bhushan | \newenvironment{cmemberdesc}[3]{ |
386 | 216bb34c | Shikhar Bhushan | \begin{fulllineitems} |
387 | 216bb34c | Shikhar Bhushan | \cmemberline{#1}{#2}{#3} |
388 | 216bb34c | Shikhar Bhushan | }{\end{fulllineitems}} |
389 | 216bb34c | Shikhar Bhushan | |
390 | 216bb34c | Shikhar Bhushan | % Funky macros ----------------------------------------------------------- |
391 | 216bb34c | Shikhar Bhushan | % \begin{csimplemacrodesc}{name} |
392 | 216bb34c | Shikhar Bhushan | % -- "simple" because it has no args; NOT for constant definitions! |
393 | 216bb34c | Shikhar Bhushan | \newenvironment{csimplemacrodesc}[1]{ |
394 | 216bb34c | Shikhar Bhushan | \begin{fulllineitems} |
395 | 216bb34c | Shikhar Bhushan | \item[\bfcode{#1}] |
396 | 216bb34c | Shikhar Bhushan | }{\end{fulllineitems}} |
397 | 216bb34c | Shikhar Bhushan | |
398 | 216bb34c | Shikhar Bhushan | % simple functions (not methods) ----------------------------------------- |
399 | 216bb34c | Shikhar Bhushan | % \begin{funcdesc}{name}{args} |
400 | 216bb34c | Shikhar Bhushan | \newcommand{\funcline}[2]{% |
401 | 216bb34c | Shikhar Bhushan | \py@sigline{\bfcode{#1}}{#2}} |
402 | 216bb34c | Shikhar Bhushan | \newenvironment{funcdesc}[2]{ |
403 | 216bb34c | Shikhar Bhushan | \begin{fulllineitems} |
404 | 216bb34c | Shikhar Bhushan | \funcline{#1}{#2} |
405 | 216bb34c | Shikhar Bhushan | }{\end{fulllineitems}} |
406 | 216bb34c | Shikhar Bhushan | |
407 | 216bb34c | Shikhar Bhushan | % classes ---------------------------------------------------------------- |
408 | 216bb34c | Shikhar Bhushan | % \begin{classdesc}{name}{constructor args} |
409 | 216bb34c | Shikhar Bhushan | \newcommand{\classline}[2]{ |
410 | 216bb34c | Shikhar Bhushan | \py@sigline{\strong{class }\bfcode{#1}}{#2}} |
411 | 216bb34c | Shikhar Bhushan | \newenvironment{classdesc}[2]{ |
412 | 216bb34c | Shikhar Bhushan | % Using \renewcommand doesn't work for this, for unknown reasons: |
413 | 216bb34c | Shikhar Bhushan | \global\def\py@thisclass{#1} |
414 | 216bb34c | Shikhar Bhushan | \begin{fulllineitems} |
415 | 216bb34c | Shikhar Bhushan | \classline{#1}{#2} |
416 | 216bb34c | Shikhar Bhushan | }{\end{fulllineitems}} |
417 | 216bb34c | Shikhar Bhushan | |
418 | 216bb34c | Shikhar Bhushan | % \begin{excclassdesc}{name}{constructor args} |
419 | 216bb34c | Shikhar Bhushan | % but indexes as an exception |
420 | 216bb34c | Shikhar Bhushan | \newenvironment{excclassdesc}[2]{ |
421 | 216bb34c | Shikhar Bhushan | % Using \renewcommand doesn't work for this, for unknown reasons: |
422 | 216bb34c | Shikhar Bhushan | \global\def\py@thisclass{#1} |
423 | 216bb34c | Shikhar Bhushan | \begin{fulllineitems} |
424 | 216bb34c | Shikhar Bhushan | \py@sigline{\strong{exception }\bfcode{#1}}{#2}% |
425 | 216bb34c | Shikhar Bhushan | }{\end{fulllineitems}} |
426 | 216bb34c | Shikhar Bhushan | |
427 | 216bb34c | Shikhar Bhushan | % There is no corresponding {excclassdesc*} environment. To describe |
428 | 216bb34c | Shikhar Bhushan | % a class exception without parameters, use the {excdesc} environment. |
429 | 216bb34c | Shikhar Bhushan | |
430 | 216bb34c | Shikhar Bhushan | |
431 | 216bb34c | Shikhar Bhushan | \let\py@classbadkey=\@undefined |
432 | 216bb34c | Shikhar Bhushan | |
433 | 216bb34c | Shikhar Bhushan | % object method ---------------------------------------------------------- |
434 | 216bb34c | Shikhar Bhushan | % \begin{methoddesc}[classname]{methodname}{args} |
435 | 216bb34c | Shikhar Bhushan | \newcommand{\methodline}[3][\@undefined]{ |
436 | 216bb34c | Shikhar Bhushan | \py@sigline{\bfcode{#2}}{#3}} |
437 | 216bb34c | Shikhar Bhushan | \newenvironment{methoddesc}[3][\@undefined]{ |
438 | 216bb34c | Shikhar Bhushan | \begin{fulllineitems} |
439 | 216bb34c | Shikhar Bhushan | \ifx\@undefined#1\relax |
440 | 216bb34c | Shikhar Bhushan | \methodline{#2}{#3} |
441 | 216bb34c | Shikhar Bhushan | \else |
442 | 216bb34c | Shikhar Bhushan | \def\py@thisclass{#1} |
443 | 216bb34c | Shikhar Bhushan | \methodline{#2}{#3} |
444 | 216bb34c | Shikhar Bhushan | \fi |
445 | 216bb34c | Shikhar Bhushan | }{\end{fulllineitems}} |
446 | 216bb34c | Shikhar Bhushan | |
447 | 216bb34c | Shikhar Bhushan | % static method ---------------------------------------------------------- |
448 | 216bb34c | Shikhar Bhushan | % \begin{staticmethoddesc}[classname]{methodname}{args} |
449 | 216bb34c | Shikhar Bhushan | \newcommand{\staticmethodline}[3][\@undefined]{ |
450 | 216bb34c | Shikhar Bhushan | \py@sigline{static \bfcode{#2}}{#3}} |
451 | 216bb34c | Shikhar Bhushan | \newenvironment{staticmethoddesc}[3][\@undefined]{ |
452 | 216bb34c | Shikhar Bhushan | \begin{fulllineitems} |
453 | 216bb34c | Shikhar Bhushan | \ifx\@undefined#1\relax |
454 | 216bb34c | Shikhar Bhushan | \staticmethodline{#2}{#3} |
455 | 216bb34c | Shikhar Bhushan | \else |
456 | 216bb34c | Shikhar Bhushan | \def\py@thisclass{#1} |
457 | 216bb34c | Shikhar Bhushan | \staticmethodline{#2}{#3} |
458 | 216bb34c | Shikhar Bhushan | \fi |
459 | 216bb34c | Shikhar Bhushan | }{\end{fulllineitems}} |
460 | 216bb34c | Shikhar Bhushan | |
461 | 216bb34c | Shikhar Bhushan | % class method ---------------------------------------------------------- |
462 | 216bb34c | Shikhar Bhushan | % \begin{classmethoddesc}[classname]{methodname}{args} |
463 | 216bb34c | Shikhar Bhushan | \newcommand{\classmethodline}[3][\@undefined]{ |
464 | 216bb34c | Shikhar Bhushan | \py@sigline{class \bfcode{#2}}{#3}} |
465 | 216bb34c | Shikhar Bhushan | \newenvironment{classmethoddesc}[3][\@undefined]{ |
466 | 216bb34c | Shikhar Bhushan | \begin{fulllineitems} |
467 | 216bb34c | Shikhar Bhushan | \ifx\@undefined#1\relax |
468 | 216bb34c | Shikhar Bhushan | \classmethodline{#2}{#3} |
469 | 216bb34c | Shikhar Bhushan | \else |
470 | 216bb34c | Shikhar Bhushan | \def\py@thisclass{#1} |
471 | 216bb34c | Shikhar Bhushan | \classmethodline{#2}{#3} |
472 | 216bb34c | Shikhar Bhushan | \fi |
473 | 216bb34c | Shikhar Bhushan | }{\end{fulllineitems}} |
474 | 216bb34c | Shikhar Bhushan | |
475 | 216bb34c | Shikhar Bhushan | % object data attribute -------------------------------------------------- |
476 | 216bb34c | Shikhar Bhushan | % \begin{memberdesc}[classname]{membername} |
477 | 216bb34c | Shikhar Bhushan | \newcommand{\memberline}[2][\py@classbadkey]{% |
478 | 216bb34c | Shikhar Bhushan | \ifx\@undefined#1\relax |
479 | 216bb34c | Shikhar Bhushan | \item[\bfcode{#2}] |
480 | 216bb34c | Shikhar Bhushan | \else |
481 | 216bb34c | Shikhar Bhushan | \item[\bfcode{#2}] |
482 | 216bb34c | Shikhar Bhushan | \fi |
483 | 216bb34c | Shikhar Bhushan | } |
484 | 216bb34c | Shikhar Bhushan | \newenvironment{memberdesc}[2][\py@classbadkey]{ |
485 | 216bb34c | Shikhar Bhushan | \begin{fulllineitems} |
486 | 216bb34c | Shikhar Bhushan | \ifx\@undefined#1\relax |
487 | 216bb34c | Shikhar Bhushan | \memberline{#2} |
488 | 216bb34c | Shikhar Bhushan | \else |
489 | 216bb34c | Shikhar Bhushan | \def\py@thisclass{#1} |
490 | 216bb34c | Shikhar Bhushan | \memberline{#2} |
491 | 216bb34c | Shikhar Bhushan | \fi |
492 | 216bb34c | Shikhar Bhushan | }{\end{fulllineitems}} |
493 | 216bb34c | Shikhar Bhushan | |
494 | 216bb34c | Shikhar Bhushan | % For exceptions: -------------------------------------------------------- |
495 | 216bb34c | Shikhar Bhushan | % \begin{excdesc}{name} |
496 | 216bb34c | Shikhar Bhushan | % -- for constructor information, use excclassdesc instead |
497 | 216bb34c | Shikhar Bhushan | \newenvironment{excdesc}[1]{ |
498 | 216bb34c | Shikhar Bhushan | \begin{fulllineitems} |
499 | 216bb34c | Shikhar Bhushan | \item[\strong{exception }\bfcode{#1}] |
500 | 216bb34c | Shikhar Bhushan | }{\end{fulllineitems}} |
501 | 216bb34c | Shikhar Bhushan | |
502 | 216bb34c | Shikhar Bhushan | % Module data or constants: ---------------------------------------------- |
503 | 216bb34c | Shikhar Bhushan | % \begin{datadesc}{name} |
504 | 216bb34c | Shikhar Bhushan | \newcommand{\dataline}[1]{% |
505 | 216bb34c | Shikhar Bhushan | \item[\bfcode{#1}]\nopagebreak} |
506 | 216bb34c | Shikhar Bhushan | \newenvironment{datadesc}[1]{ |
507 | 216bb34c | Shikhar Bhushan | \begin{fulllineitems} |
508 | 216bb34c | Shikhar Bhushan | \dataline{#1} |
509 | 216bb34c | Shikhar Bhushan | }{\end{fulllineitems}} |
510 | 216bb34c | Shikhar Bhushan | |
511 | 216bb34c | Shikhar Bhushan | % bytecode instruction --------------------------------------------------- |
512 | 216bb34c | Shikhar Bhushan | % \begin{opcodedesc}{name}{var} |
513 | 216bb34c | Shikhar Bhushan | % -- {var} may be {} |
514 | 216bb34c | Shikhar Bhushan | \newenvironment{opcodedesc}[2]{ |
515 | 216bb34c | Shikhar Bhushan | \begin{fulllineitems} |
516 | 216bb34c | Shikhar Bhushan | \item[\bfcode{#1}\quad\emph{#2}] |
517 | 216bb34c | Shikhar Bhushan | }{\end{fulllineitems}} |
518 | 216bb34c | Shikhar Bhushan | |
519 | 216bb34c | Shikhar Bhushan | % generic description ---------------------------------------------------- |
520 | 216bb34c | Shikhar Bhushan | \newcommand{\descline}[1]{% |
521 | 216bb34c | Shikhar Bhushan | \item[\bfcode{#1}]\nopagebreak% |
522 | 216bb34c | Shikhar Bhushan | } |
523 | 216bb34c | Shikhar Bhushan | \newenvironment{describe}[1]{ |
524 | 216bb34c | Shikhar Bhushan | \begin{fulllineitems} |
525 | 216bb34c | Shikhar Bhushan | \descline{#1} |
526 | 216bb34c | Shikhar Bhushan | }{\end{fulllineitems}} |
527 | 216bb34c | Shikhar Bhushan | |
528 | 216bb34c | Shikhar Bhushan | % This version is being checked in for the historical record; it shows |
529 | 216bb34c | Shikhar Bhushan | % how I've managed to get some aspects of this to work. It will not |
530 | 216bb34c | Shikhar Bhushan | % be used in practice, so a subsequent revision will change things |
531 | 216bb34c | Shikhar Bhushan | % again. This version has problems, but shows how to do something |
532 | 216bb34c | Shikhar Bhushan | % that proved more tedious than I'd expected, so I don't want to lose |
533 | 216bb34c | Shikhar Bhushan | % the example completely. |
534 | 216bb34c | Shikhar Bhushan | % |
535 | 216bb34c | Shikhar Bhushan | \newcommand{\grammartoken}[1]{\texttt{#1}} |
536 | 216bb34c | Shikhar Bhushan | \newenvironment{productionlist}[1][\py@badkey]{ |
537 | 216bb34c | Shikhar Bhushan | \def\optional##1{{\Large[}##1{\Large]}} |
538 | 216bb34c | Shikhar Bhushan | \def\production##1##2{\code{##1}&::=&\code{##2}\\} |
539 | 216bb34c | Shikhar Bhushan | \def\productioncont##1{& &\code{##1}\\} |
540 | 216bb34c | Shikhar Bhushan | \def\token##1{##1} |
541 | 216bb34c | Shikhar Bhushan | \let\grammartoken=\token |
542 | 216bb34c | Shikhar Bhushan | \parindent=2em |
543 | 216bb34c | Shikhar Bhushan | \indent |
544 | 216bb34c | Shikhar Bhushan | \begin{tabular}{lcl} |
545 | 216bb34c | Shikhar Bhushan | }{% |
546 | 216bb34c | Shikhar Bhushan | \end{tabular} |
547 | 216bb34c | Shikhar Bhushan | } |
548 | 216bb34c | Shikhar Bhushan | |
549 | 216bb34c | Shikhar Bhushan | % Notices / Admonitions |
550 | 216bb34c | Shikhar Bhushan | % |
551 | 216bb34c | Shikhar Bhushan | \newlength{\py@noticelength} |
552 | 216bb34c | Shikhar Bhushan | |
553 | 216bb34c | Shikhar Bhushan | \newcommand{\py@heavybox}{ |
554 | 216bb34c | Shikhar Bhushan | \setlength{\fboxrule}{1pt} |
555 | 216bb34c | Shikhar Bhushan | \setlength{\fboxsep}{7pt} |
556 | 216bb34c | Shikhar Bhushan | \setlength{\py@noticelength}{\linewidth} |
557 | 216bb34c | Shikhar Bhushan | \addtolength{\py@noticelength}{-2\fboxsep} |
558 | 216bb34c | Shikhar Bhushan | \addtolength{\py@noticelength}{-2\fboxrule} |
559 | 216bb34c | Shikhar Bhushan | \setlength{\shadowsize}{3pt} |
560 | 216bb34c | Shikhar Bhushan | \Sbox |
561 | 216bb34c | Shikhar Bhushan | \minipage{\py@noticelength} |
562 | 216bb34c | Shikhar Bhushan | } |
563 | 216bb34c | Shikhar Bhushan | \newcommand{\py@endheavybox}{ |
564 | 216bb34c | Shikhar Bhushan | \endminipage |
565 | 216bb34c | Shikhar Bhushan | \endSbox |
566 | 216bb34c | Shikhar Bhushan | \fbox{\TheSbox} |
567 | 216bb34c | Shikhar Bhushan | } |
568 | 216bb34c | Shikhar Bhushan | |
569 | 216bb34c | Shikhar Bhushan | % Some are quite plain: |
570 | 216bb34c | Shikhar Bhushan | \newcommand{\py@noticestart@note}{} |
571 | 216bb34c | Shikhar Bhushan | \newcommand{\py@noticeend@note}{} |
572 | 216bb34c | Shikhar Bhushan | \newcommand{\py@noticestart@hint}{} |
573 | 216bb34c | Shikhar Bhushan | \newcommand{\py@noticeend@hint}{} |
574 | 216bb34c | Shikhar Bhushan | \newcommand{\py@noticestart@important}{} |
575 | 216bb34c | Shikhar Bhushan | \newcommand{\py@noticeend@important}{} |
576 | 216bb34c | Shikhar Bhushan | \newcommand{\py@noticestart@tip}{} |
577 | 216bb34c | Shikhar Bhushan | \newcommand{\py@noticeend@tip}{} |
578 | 216bb34c | Shikhar Bhushan | |
579 | 216bb34c | Shikhar Bhushan | % Others gets more visible distinction: |
580 | 216bb34c | Shikhar Bhushan | \newcommand{\py@noticestart@warning}{\py@heavybox} |
581 | 216bb34c | Shikhar Bhushan | \newcommand{\py@noticeend@warning}{\py@endheavybox} |
582 | 216bb34c | Shikhar Bhushan | \newcommand{\py@noticestart@caution}{\py@heavybox} |
583 | 216bb34c | Shikhar Bhushan | \newcommand{\py@noticeend@caution}{\py@endheavybox} |
584 | 216bb34c | Shikhar Bhushan | \newcommand{\py@noticestart@attention}{\py@heavybox} |
585 | 216bb34c | Shikhar Bhushan | \newcommand{\py@noticeend@attention}{\py@endheavybox} |
586 | 216bb34c | Shikhar Bhushan | \newcommand{\py@noticestart@danger}{\py@heavybox} |
587 | 216bb34c | Shikhar Bhushan | \newcommand{\py@noticeend@danger}{\py@endheavybox} |
588 | 216bb34c | Shikhar Bhushan | \newcommand{\py@noticestart@error}{\py@heavybox} |
589 | 216bb34c | Shikhar Bhushan | \newcommand{\py@noticeend@error}{\py@endheavybox} |
590 | 216bb34c | Shikhar Bhushan | |
591 | 216bb34c | Shikhar Bhushan | \newenvironment{notice}[2]{ |
592 | 216bb34c | Shikhar Bhushan | \def\py@noticetype{#1} |
593 | 216bb34c | Shikhar Bhushan | \csname py@noticestart@#1\endcsname |
594 | 216bb34c | Shikhar Bhushan | \par\strong{#2} |
595 | 216bb34c | Shikhar Bhushan | }{\csname py@noticeend@\py@noticetype\endcsname} |
596 | 216bb34c | Shikhar Bhushan | |
597 | 216bb34c | Shikhar Bhushan | % Allow the release number to be specified independently of the |
598 | 216bb34c | Shikhar Bhushan | % \date{}. This allows the date to reflect the document's date and |
599 | 216bb34c | Shikhar Bhushan | % release to specify the release that is documented. |
600 | 216bb34c | Shikhar Bhushan | % |
601 | 216bb34c | Shikhar Bhushan | \newcommand{\py@release}{} |
602 | 216bb34c | Shikhar Bhushan | \newcommand{\version}{} |
603 | 216bb34c | Shikhar Bhushan | \newcommand{\shortversion}{} |
604 | 216bb34c | Shikhar Bhushan | \newcommand{\releaseinfo}{} |
605 | 216bb34c | Shikhar Bhushan | \newcommand{\releasename}{Release} |
606 | 216bb34c | Shikhar Bhushan | \newcommand{\release}[1]{% |
607 | 216bb34c | Shikhar Bhushan | \renewcommand{\py@release}{\releasename\space\version}% |
608 | 216bb34c | Shikhar Bhushan | \renewcommand{\version}{#1}} |
609 | 216bb34c | Shikhar Bhushan | \newcommand{\setshortversion}[1]{% |
610 | 216bb34c | Shikhar Bhushan | \renewcommand{\shortversion}{#1}} |
611 | 216bb34c | Shikhar Bhushan | \newcommand{\setreleaseinfo}[1]{% |
612 | 216bb34c | Shikhar Bhushan | \renewcommand{\releaseinfo}{#1}} |
613 | 216bb34c | Shikhar Bhushan | |
614 | 216bb34c | Shikhar Bhushan | % Allow specification of the author's address separately from the |
615 | 216bb34c | Shikhar Bhushan | % author's name. This can be used to format them differently, which |
616 | 216bb34c | Shikhar Bhushan | % is a good thing. |
617 | 216bb34c | Shikhar Bhushan | % |
618 | 216bb34c | Shikhar Bhushan | \newcommand{\py@authoraddress}{} |
619 | 216bb34c | Shikhar Bhushan | \newcommand{\authoraddress}[1]{\renewcommand{\py@authoraddress}{#1}} |
620 | 216bb34c | Shikhar Bhushan | |
621 | 216bb34c | Shikhar Bhushan | % This sets up the fancy chapter headings that make the documents look |
622 | 216bb34c | Shikhar Bhushan | % at least a little better than the usual LaTeX output. |
623 | 216bb34c | Shikhar Bhushan | % |
624 | 216bb34c | Shikhar Bhushan | \@ifundefined{ChTitleVar}{}{ |
625 | 216bb34c | Shikhar Bhushan | \ChNameVar{\raggedleft\normalsize\py@HeaderFamily} |
626 | 216bb34c | Shikhar Bhushan | \ChNumVar{\raggedleft \bfseries\Large\py@HeaderFamily} |
627 | 216bb34c | Shikhar Bhushan | \ChTitleVar{\raggedleft \rm\Huge\py@HeaderFamily} |
628 | 216bb34c | Shikhar Bhushan | % This creates chapter heads without the leading \vspace*{}: |
629 | 216bb34c | Shikhar Bhushan | \def\@makechapterhead#1{% |
630 | 216bb34c | Shikhar Bhushan | {\parindent \z@ \raggedright \normalfont |
631 | 216bb34c | Shikhar Bhushan | \ifnum \c@secnumdepth >\m@ne |
632 | 216bb34c | Shikhar Bhushan | \DOCH |
633 | 216bb34c | Shikhar Bhushan | \fi |
634 | 216bb34c | Shikhar Bhushan | \interlinepenalty\@M |
635 | 216bb34c | Shikhar Bhushan | \DOTI{#1} |
636 | 216bb34c | Shikhar Bhushan | } |
637 | 216bb34c | Shikhar Bhushan | } |
638 | 216bb34c | Shikhar Bhushan | } |
639 | 216bb34c | Shikhar Bhushan | |
640 | 216bb34c | Shikhar Bhushan | % Redefine description environment so that it is usable inside fulllineitems. |
641 | 216bb34c | Shikhar Bhushan | % |
642 | 216bb34c | Shikhar Bhushan | \renewcommand{\description}{% |
643 | 216bb34c | Shikhar Bhushan | \list{}{\labelwidth\z@% |
644 | 216bb34c | Shikhar Bhushan | \itemindent-\leftmargin% |
645 | 216bb34c | Shikhar Bhushan | \labelsep5pt% |
646 | 216bb34c | Shikhar Bhushan | \let\makelabel=\descriptionlabel}} |
647 | 216bb34c | Shikhar Bhushan | |
648 | 216bb34c | Shikhar Bhushan | % Definition lists; requested by AMK for HOWTO documents. Probably useful |
649 | 216bb34c | Shikhar Bhushan | % elsewhere as well, so keep in in the general style support. |
650 | 216bb34c | Shikhar Bhushan | % |
651 | 216bb34c | Shikhar Bhushan | \newenvironment{definitions}{% |
652 | 216bb34c | Shikhar Bhushan | \begin{description}% |
653 | 216bb34c | Shikhar Bhushan | \def\term##1{\item[##1]\mbox{}\\*[0mm]} |
654 | 216bb34c | Shikhar Bhushan | }{% |
655 | 216bb34c | Shikhar Bhushan | \end{description}% |
656 | 216bb34c | Shikhar Bhushan | } |
657 | 216bb34c | Shikhar Bhushan | |
658 | 216bb34c | Shikhar Bhushan | % Tell TeX about pathological hyphenation cases: |
659 | 216bb34c | Shikhar Bhushan | \hyphenation{Base-HTTP-Re-quest-Hand-ler} |
660 | 216bb34c | Shikhar Bhushan | |
661 | 216bb34c | Shikhar Bhushan | |
662 | 216bb34c | Shikhar Bhushan | % The following is stuff copied from docutils' latex writer. |
663 | 216bb34c | Shikhar Bhushan | % |
664 | 216bb34c | Shikhar Bhushan | \newcommand{\optionlistlabel}[1]{\bf #1 \hfill} |
665 | 216bb34c | Shikhar Bhushan | \newenvironment{optionlist}[1] |
666 | 216bb34c | Shikhar Bhushan | {\begin{list}{} |
667 | 216bb34c | Shikhar Bhushan | {\setlength{\labelwidth}{#1} |
668 | 216bb34c | Shikhar Bhushan | \setlength{\rightmargin}{1cm} |
669 | 216bb34c | Shikhar Bhushan | \setlength{\leftmargin}{\rightmargin} |
670 | 216bb34c | Shikhar Bhushan | \addtolength{\leftmargin}{\labelwidth} |
671 | 216bb34c | Shikhar Bhushan | \addtolength{\leftmargin}{\labelsep} |
672 | 216bb34c | Shikhar Bhushan | \renewcommand{\makelabel}{\optionlistlabel}} |
673 | 216bb34c | Shikhar Bhushan | }{\end{list}} |
674 | 216bb34c | Shikhar Bhushan | |
675 | 216bb34c | Shikhar Bhushan | \newlength{\lineblockindentation} |
676 | 216bb34c | Shikhar Bhushan | \setlength{\lineblockindentation}{2.5em} |
677 | 216bb34c | Shikhar Bhushan | \newenvironment{lineblock}[1] |
678 | 216bb34c | Shikhar Bhushan | {\begin{list}{} |
679 | 216bb34c | Shikhar Bhushan | {\setlength{\partopsep}{\parskip} |
680 | 216bb34c | Shikhar Bhushan | \addtolength{\partopsep}{\baselineskip} |
681 | 216bb34c | Shikhar Bhushan | \topsep0pt\itemsep0.15\baselineskip\parsep0pt |
682 | 216bb34c | Shikhar Bhushan | \leftmargin#1} |
683 | 216bb34c | Shikhar Bhushan | \raggedright} |
684 | 216bb34c | Shikhar Bhushan | {\end{list}} |
685 | 216bb34c | Shikhar Bhushan | |
686 | 216bb34c | Shikhar Bhushan | % Redefine includgraphics for avoiding images larger than the screen size |
687 | 216bb34c | Shikhar Bhushan | % If the size is not specified. |
688 | 216bb34c | Shikhar Bhushan | \let\py@Oldincludegraphics\includegraphics |
689 | 216bb34c | Shikhar Bhushan | |
690 | 216bb34c | Shikhar Bhushan | \newbox\image@box% |
691 | 216bb34c | Shikhar Bhushan | \newdimen\image@width% |
692 | 216bb34c | Shikhar Bhushan | \renewcommand\includegraphics[2][\@empty]{% |
693 | 216bb34c | Shikhar Bhushan | \ifx#1\@empty% |
694 | 216bb34c | Shikhar Bhushan | \setbox\image@box=\hbox{\py@Oldincludegraphics{#2}}% |
695 | 216bb34c | Shikhar Bhushan | \image@width\wd\image@box% |
696 | 216bb34c | Shikhar Bhushan | \ifdim \image@width>\linewidth% |
697 | 216bb34c | Shikhar Bhushan | \setbox\image@box=\hbox{\py@Oldincludegraphics[width=\linewidth]{#2}}% |
698 | 216bb34c | Shikhar Bhushan | \fi% |
699 | 216bb34c | Shikhar Bhushan | \box\image@box% |
700 | 216bb34c | Shikhar Bhushan | \else% |
701 | 216bb34c | Shikhar Bhushan | \py@Oldincludegraphics[#1]{#2}% |
702 | 216bb34c | Shikhar Bhushan | \fi% |
703 | 216bb34c | Shikhar Bhushan | } |
704 | 216bb34c | Shikhar Bhushan | |
705 | 216bb34c | Shikhar Bhushan | |
706 | 216bb34c | Shikhar Bhushan | % Fix the index and bibliography environments to add an entry to the Table of |
707 | 216bb34c | Shikhar Bhushan | % Contents; this is much nicer than just having to jump to the end of the book |
708 | 216bb34c | Shikhar Bhushan | % and flip around, especially with multiple indexes. |
709 | 216bb34c | Shikhar Bhushan | % |
710 | 216bb34c | Shikhar Bhushan | \let\py@OldTheindex=\theindex |
711 | 216bb34c | Shikhar Bhushan | \renewcommand{\theindex}{ |
712 | 216bb34c | Shikhar Bhushan | \cleardoublepage |
713 | 216bb34c | Shikhar Bhushan | \phantomsection |
714 | 216bb34c | Shikhar Bhushan | \py@OldTheindex |
715 | 216bb34c | Shikhar Bhushan | \addcontentsline{toc}{chapter}{\indexname} |
716 | 216bb34c | Shikhar Bhushan | } |
717 | 216bb34c | Shikhar Bhushan | |
718 | 216bb34c | Shikhar Bhushan | \let\py@OldThebibliography=\thebibliography |
719 | 216bb34c | Shikhar Bhushan | \renewcommand{\thebibliography}[1]{ |
720 | 216bb34c | Shikhar Bhushan | \cleardoublepage |
721 | 216bb34c | Shikhar Bhushan | \phantomsection |
722 | 216bb34c | Shikhar Bhushan | \py@OldThebibliography{1} |
723 | 216bb34c | Shikhar Bhushan | \addcontentsline{toc}{chapter}{\bibname} |
724 | 216bb34c | Shikhar Bhushan | } |
725 | 216bb34c | Shikhar Bhushan | |
726 | 216bb34c | Shikhar Bhushan | % Include hyperref last. |
727 | 216bb34c | Shikhar Bhushan | \RequirePackage[colorlinks,breaklinks, |
728 | 216bb34c | Shikhar Bhushan | linkcolor=InnerLinkColor,filecolor=OuterLinkColor, |
729 | 216bb34c | Shikhar Bhushan | menucolor=OuterLinkColor,pagecolor=OuterLinkColor, |
730 | 216bb34c | Shikhar Bhushan | urlcolor=OuterLinkColor]{hyperref} |
731 | 216bb34c | Shikhar Bhushan | |
732 | 216bb34c | Shikhar Bhushan | % From docutils.writers.latex2e |
733 | 216bb34c | Shikhar Bhushan | \providecommand{\DUspan}[2]{% |
734 | 216bb34c | Shikhar Bhushan | {% group ("span") to limit the scope of styling commands |
735 | 216bb34c | Shikhar Bhushan | \@for\node@class@name:=#1\do{% |
736 | 216bb34c | Shikhar Bhushan | \ifcsname docutilsrole\node@class@name\endcsname% |
737 | 216bb34c | Shikhar Bhushan | \csname docutilsrole\node@class@name\endcsname% |
738 | 216bb34c | Shikhar Bhushan | \fi% |
739 | 216bb34c | Shikhar Bhushan | }% |
740 | 216bb34c | Shikhar Bhushan | {#2}% node content |
741 | 216bb34c | Shikhar Bhushan | }% close "span" |
742 | 216bb34c | Shikhar Bhushan | } |