diff --git a/sphinx/addnodes.py b/sphinx/addnodes.py index eea1a9a90..d2515deab 100644 --- a/sphinx/addnodes.py +++ b/sphinx/addnodes.py @@ -17,10 +17,15 @@ class desc(nodes.Admonition, nodes.Element): pass class desc_content(nodes.General, nodes.Element): pass class desc_signature(nodes.Part, nodes.Inline, nodes.TextElement): pass class desc_classname(nodes.Part, nodes.Inline, nodes.TextElement): pass +class desc_type(nodes.Part, nodes.Inline, nodes.TextElement): pass class desc_name(nodes.Part, nodes.Inline, nodes.TextElement): pass -class desc_parameterlist(nodes.Part, nodes.Inline, nodes.TextElement): pass +class desc_parameterlist(nodes.Part, nodes.Inline, nodes.TextElement): + child_text_separator = ', ' class desc_parameter(nodes.Part, nodes.Inline, nodes.TextElement): pass -class desc_optional(nodes.Part, nodes.Inline, nodes.TextElement): pass +class desc_optional(nodes.Part, nodes.Inline, nodes.TextElement): + child_text_separator = ', ' + def astext(self): + return '[' + nodes.TextElement.astext(self) + ']' # refcount annotation class refcount(nodes.emphasis): pass @@ -58,7 +63,7 @@ class glossary(nodes.Element): pass # make them known to docutils. this is needed, because the HTMl writer # will choke at some point if these are not added -nodes._add_node_class_names("""index desc desc_content desc_signature +nodes._add_node_class_names("""index desc desc_content desc_signature desc_type desc_classname desc_name desc_parameterlist desc_parameter desc_optional centered versionmodified seealso productionlist production toctree pending_xref compact_paragraph highlightlang literal_emphasis diff --git a/sphinx/builder.py b/sphinx/builder.py index f420fd999..a345960b8 100644 --- a/sphinx/builder.py +++ b/sphinx/builder.py @@ -664,8 +664,8 @@ class LaTeXBuilder(Builder): # first, assemble the "special" docs that are in every PDF specials = [] - for fname in ["license", "copyright", "about", "glossary"]: - specials.extend(self.env.get_doctree(fname+".rst").children) + for fname in ["glossary", "about", "license", "copyright"]: + specials.append(self.env.get_doctree(fname+".rst")) docwriter = LaTeXWriter(self.config, self.name) docsettings = OptionParser( @@ -673,7 +673,7 @@ class LaTeXBuilder(Builder): components=(docwriter,)).get_default_values() # XXX get names of toplevels automatically? - for docname in ["c-api"]:#, "distutils", "documenting", "extending", + for docname in ["library"]:#, "distutils", "documenting", "extending", #"howto", "install", "library", "reference", #"tutorial", "using"]: # XXX whatsnew missing @@ -682,36 +682,37 @@ class LaTeXBuilder(Builder): encoding='utf-8') doctree = self.assemble_doctree(path.join(docname, "index.rst")) doctree.extend(specials) - print "Writing..." + print "writing...", doctree.settings = docsettings doctree.settings.filename = docname + doctree.settings.docclass = 'manual' # XXX howto for whatsnew output = docwriter.write(doctree, destination) - print "Done!" + print "done" def assemble_doctree(self, indexfile): self.filenames = [indexfile] - print "Processing", indexfile + print "processing", indexfile def process_tree(tree): - tree = tree.deepcopy() + #tree = tree.deepcopy() for toctreenode in tree.traverse(addnodes.toctree): - index = toctreenode.parent.index(toctreenode) + newnodes = [] includefiles = map(str, toctreenode['includefiles']) for includefile in includefiles: try: - print "Including", includefile + print green(includefile), subtree = process_tree(self.env.get_doctree(includefile)) self.filenames.append(includefile) except: print >>self.warning_stream, 'WARNING: %s: toctree contains ' \ 'ref to nonexisting file %r' % (filename, includefile) else: - toctreenode.parent[index:index] = subtree.children - toctreenode.parent.remove(toctreenode) + newnodes.extend(subtree.children) + toctreenode.parent.replace(toctreenode, newnodes) return tree largetree = process_tree(self.env.get_doctree(indexfile)) - print "Resolving references..." + print + print "resolving references..." self.env.resolve_references(largetree, indexfile, self) - #print largetree return largetree def finish(self): diff --git a/sphinx/directives.py b/sphinx/directives.py index 41625c377..193e096fe 100644 --- a/sphinx/directives.py +++ b/sphinx/directives.py @@ -217,7 +217,8 @@ def parse_c_signature(signode, sig, desctype): raise ValueError('no match') rettype, name, arglist = m.groups() - parse_c_type(signode, rettype) + signode += addnodes.desc_type("", "") + parse_c_type(signode[-1], rettype) signode += addnodes.desc_name(name, name) if not arglist: if desctype == 'cfunction': @@ -293,6 +294,7 @@ def desc_directive(desctype, arguments, options, content, lineno, node['desctype'] = desctype noindex = ('noindex' in options) + node['noindex'] = noindex # remove backslashes to support (dummy) escapes; helps Vim's highlighting signatures = map(lambda s: s.strip().replace('\\', ''), arguments[0].split('\n')) names = [] diff --git a/sphinx/htmlwriter.py b/sphinx/htmlwriter.py index 73ee4e94c..7e220be11 100644 --- a/sphinx/htmlwriter.py +++ b/sphinx/htmlwriter.py @@ -63,6 +63,12 @@ def translator_class(config, buildername): def depart_desc_classname(self, node): self.body.append('') + def visit_desc_type(self, node): + # return type of C functions -- nothing to do here + pass + def depart_desc_type(self, node): + pass + def visit_desc_name(self, node): self.body.append(self.starttag(node, 'tt', '', CLASS='descname')) def depart_desc_name(self, node): diff --git a/sphinx/latexwriter.py b/sphinx/latexwriter.py index 4a6ebae3c..8aa7bdf66 100644 --- a/sphinx/latexwriter.py +++ b/sphinx/latexwriter.py @@ -14,18 +14,21 @@ import re import time +import string from docutils import frontend, nodes, languages, writers, utils +from . import addnodes + HEADER = r'''%% Generated by Sphinx. -\documentclass[%(papersize)s,%(pointsize)s]{manual} -\usepackage{hyperref} +\documentclass[%(papersize)s,%(pointsize)s]{%(docclass)s} +\usepackage[colorlinks]{hyperref} \title{%(title)s} \date{%(date)s} \release{%(release)s} -\author{Guido van Rossum\\ - Fred L. Drake, Jr., editor} +\author{Guido van Rossum\\ %% XXX + Fred L. Drake, Jr., editor} %% XXX \authoraddress{ \strong{Python Software Foundation}\\ Email: \email{docs@python.org} @@ -34,7 +37,7 @@ HEADER = r'''%% Generated by Sphinx. ''' -FOOTER = r'''' +FOOTER = r''' \printindex \end{document} ''' @@ -65,18 +68,19 @@ class LaTeXWriter(writers.Writer): pdb.post_mortem(tb) -TABLE_MODE_NONE = 0 -TABLE_MODE_HEAD = 1 -TABLE_MODE_BODY = 2 +# Helper classes class TableSpec: def __init__(self): self.columnCount = 0 - self.mode = TABLE_MODE_NONE - def getColumnCount(self): return self.columnCount - def setColumnCount(self, columnCount): self.columnCount = columnCount - def getMode(self): return self.mode - def setMode(self, mode): self.mode = mode + self.firstRow = 1 + +class Desc: + def __init__(self, node): + self.env = LaTeXTranslator.desc_map[node['desctype']] + self.ni = node['noindex'] + self.type = self.cls = self.name = self.params = '' + self.count = 0 class LaTeXTranslator(nodes.NodeVisitor): @@ -86,18 +90,24 @@ class LaTeXTranslator(nodes.NodeVisitor): def __init__(self, document, config): nodes.NodeVisitor.__init__(self, document) self.body = [] - self.options = {'papersize': 'a4paper', # XXX + self.options = {'docclass': document.settings.docclass, + 'papersize': 'a4paper', # XXX 'pointsize': '12pt', 'filename': document.settings.filename, - 'title': '', + 'title': None, # comes later 'release': config['release'], 'date': time.strftime(config.get('today_fmt', '%B %d, %Y')), } self.context = [] - self.verbatim = 0 - self.this_is_the_title = 1 - self.sectionlevel = 0 # XXX starts with chapter now + self.descstack = [] self.highlightlang = 'python' + self.written_ids = set() + # flags + self.verbatim = 0 + self.in_title = 0 + self.first_document = 1 + self.this_is_the_title = 1 + self.literal_whitespace = 0 def astext(self): return (HEADER % self.options) + \ @@ -105,7 +115,13 @@ class LaTeXTranslator(nodes.NodeVisitor): (FOOTER % self.options) def visit_document(self, node): - self.body.append('\\begin{document}\n\\maketitle\n') + if self.first_document == 1: + self.body.append('\\begin{document}\n\\maketitle\n\\tableofcontents\n') + self.first_document = 0 + elif self.first_document == 0: + self.body.append('\n\\appendix\n') + self.first_document = -1 + self.sectionlevel = 0 def depart_document(self, node): pass @@ -119,48 +135,164 @@ class LaTeXTranslator(nodes.NodeVisitor): def visit_section(self, node): if not self.this_is_the_title: self.sectionlevel += 1 + self.body.append('\n\n') + if node.get('ids'): + for id in node['ids']: + if id not in self.written_ids: + self.body.append(r'\hypertarget{%s}{}' % id) + self.written_ids.add(id) def depart_section(self, node): self.sectionlevel -= 1 def visit_glossary(self, node): raise nodes.SkipNode # XXX - def visit_transition(self, node): - self.body.append('\n\n\\hrule{}\n\n') + def visit_productionlist(self, node): + raise nodes.SkipNode # XXX + def visit_transition(self, node): + self.body.append('\n\n\\bigskip\\hrule{}\\bigskip\n\n') def depart_transition(self, node): pass def visit_title(self, node): - if self.this_is_the_title: + if isinstance(node.parent, addnodes.seealso): + # the environment already handles this + raise nodes.SkipNode + elif self.this_is_the_title: if len(node.children) != 1 and not isinstance(node.children[0], Text): raise RuntimeError("title is not a Text node") self.options['title'] = node.children[0].astext() self.this_is_the_title = 0 raise nodes.SkipNode elif isinstance(node.parent, nodes.section): - self.body.append('\n\n') self.body.append(r'\%s{' % self.sectionnames[self.sectionlevel]) self.context.append('}\n') else: raise RuntimeError("XXX title without section") + self.in_title = 1 def depart_title(self, node): + self.in_title = 0 self.body.append(self.context.pop()) def visit_field_list(self, node): raise nodes.SkipNode # XXX + desc_map = { + 'function' : 'funcdesc', + 'class': 'classdesc', + #'classdesc*': ('class', '0'), XXX + 'method': 'methoddesc', + 'exception': 'excdesc', + #'excclassdesc': ('exception', '0(1)'), XXX + 'data': 'datadesc', + 'attribute': 'memberdesc', + 'opcode': 'opcodedesc', + + 'cfunction': 'cfuncdesc', + 'cmember': 'cmemberdesc', + 'cmacro': 'csimplemacrodesc', + 'ctype': 'ctypedesc', + 'cvar': 'cvardesc', + + 'describe': 'describe', + 'cmdoption': 'describe', # XXX? + 'envvar': 'describe', + } + def visit_desc(self, node): - raise nodes.SkipNode # XXX + self.descstack.append(Desc(node)) + def depart_desc(self, node): + d = self.descstack.pop() + self.body.append("\\end{%s%s}\n" % (d.env, d.ni and 'ni' or '')) + + def visit_desc_signature(self, node): + pass + def depart_desc_signature(self, node): + d = self.descstack[-1] + d.cls = d.cls.rstrip('.') + if node.parent['desctype'] != 'describe' and node['ids']: + hyper = '\\hypertarget{%s}{}' % node['ids'][0] + else: + hyper = '' + if d.count == 0: + t1 = "\n\n%s\\begin{%s%s}" % (hyper, d.env, (d.ni and 'ni' or '')) + else: + t1 = "\n%s\\%sline%s" % (hyper, d.env[:-4], (d.ni and 'ni' or '')) + d.count += 1 + if d.env in ('funcdesc', 'classdesc', 'excclassdesc'): + t2 = "{%s}{%s}" % (d.name, d.params) + elif d.env in ('datadesc', 'classdesc*', 'excdesc', 'csimplemacrodesc'): + t2 = "{%s}" % (d.name) + elif d.env == 'methoddesc': + t2 = "[%s]{%s}{%s}" % (d.cls, d.name, d.params) + elif d.env == 'memberdesc': + t2 = "[%s]{%s}" % (d.cls, d.name) + elif d.env == 'cfuncdesc': + t2 = "{%s}{%s}{%s}" % (d.type, d.name, d.params) + elif d.env == 'cmemberdesc': + try: + type, container = d.type.rsplit(' ', 1) + container = container.rstrip('.') + except: + container = '' + type = d.type + t2 = "{%s}{%s}{%s}" % (container, type, d.name) + elif d.env == 'cvardesc': + t2 = "{%s}{%s}" % (d.type, d.name) + elif d.env == 'ctypedesc': + t2 = "{%s}" % (d.name) + elif d.env == 'opcodedesc': + t2 = "{%s}{%s}" % (d.name, d.params) + elif d.env == 'describe': + t2 = "{%s}" % d.name + self.body.append(t1 + t2) + + def visit_desc_type(self, node): + self.descstack[-1].type = self.encode(node.astext().strip()) + raise nodes.SkipNode + + def visit_desc_name(self, node): + self.descstack[-1].name = self.encode(node.astext().strip()) + raise nodes.SkipNode + + def visit_desc_classname(self, node): + self.descstack[-1].cls = self.encode(node.astext().strip()) + raise nodes.SkipNode + + def visit_desc_parameterlist(self, node): + self.descstack[-1].params = self.encode(node.astext().strip()) + raise nodes.SkipNode + + def visit_refcount(self, node): + self.body.append("\\emph{") + def depart_refcount(self, node): + self.body.append("}\\\\") + + def visit_desc_content(self, node): + pass + def depart_desc_content(self, node): + pass def visit_seealso(self, node): - raise nodes.SkipNode # XXX + self.body.append("\n\n\\begin{seealso}\n") + def depart_seealso(self, node): + self.body.append("\n\\end{seealso}\n") def visit_rubric(self, node): - raise nodes.SkipNode # XXX + if len(node.children) == 1 and node.children[0].astext() == 'Footnotes': + raise nodes.SkipNode + raise RuntimeError("rubric not supported except for footnotes heading") def visit_footnote(self, node): - raise nodes.SkipNode # XXX + # XXX not optimal, footnotes are at section end + num = node.children[0].astext().strip() + self.body.append('\\footnotetext[%s]{' % num) + def depart_footnote(self, node): + self.body.append('}') + + def visit_label(self, node): + raise nodes.SkipNode def visit_table(self, node): self.tableSpec = TableSpec() @@ -174,7 +306,7 @@ class LaTeXTranslator(nodes.NodeVisitor): def visit_tgroup(self, node): columnCount = int(node.get('cols', 0)) - self.tableSpec.setColumnCount(columnCount) + self.tableSpec.columnCount = columnCount if columnCount == 2: self.body.append('\\begin{tableii}{l|l}{textrm}') elif columnCount == 3: @@ -183,59 +315,53 @@ class LaTeXTranslator(nodes.NodeVisitor): self.body.append('\\begin{tableiv}{l|l|l|l}{textrm}') elif columnCount == 5: self.body.append('\\begin{tablev}{l|l|l|l|l}{textrm}') + else: + raise RuntimeError("XXX table with too many columns found") def depart_tgroup(self, node): - if self.tableSpec.getColumnCount() == 2: - self.body.append('\n\\end{tableii}\n') - elif self.tableSpec.getColumnCount() == 3: - self.body.append('\n\\end{tableiii}\n') - elif self.tableSpec.getColumnCount() == 4: - self.body.append('\n\\end{tableiv}\n') - elif self.tableSpec.getColumnCount() == 5: - self.body.append('\n\\end{tablev}\n') + if self.tableSpec.columnCount == 2: + self.body.append('\n\\end{tableii}\n\n') + elif self.tableSpec.columnCount == 3: + self.body.append('\n\\end{tableiii}\n\n') + elif self.tableSpec.columnCount == 4: + self.body.append('\n\\end{tableiv}\n\n') + elif self.tableSpec.columnCount == 5: + self.body.append('\n\\end{tablev}\n\n') def visit_thead(self, node): - self.tableSpec.setMode(TABLE_MODE_HEAD) + pass def depart_thead(self, node): - self.tableSpec.setMode(TABLE_MODE_NONE) + pass def visit_tbody(self, node): - self.tableSpec.setMode(TABLE_MODE_BODY) + pass def depart_tbody(self, node): - self.tableSpec.setMode(TABLE_MODE_NONE) + pass def visit_row(self, node): - if self.tableSpec.getMode() == TABLE_MODE_HEAD: - pass - elif self.tableSpec.getMode() == TABLE_MODE_BODY: - if self.tableSpec.getColumnCount() == 2: + if not self.tableSpec.firstRow: + if self.tableSpec.columnCount == 2: self.body.append('\n\\lineii') - elif self.tableSpec.getColumnCount() == 3: + elif self.tableSpec.columnCount == 3: self.body.append('\n\\lineiii') - elif self.tableSpec.getColumnCount() == 4: + elif self.tableSpec.columnCount == 4: self.body.append('\n\\lineiv') - elif self.tableSpec.getColumnCount() == 5: + elif self.tableSpec.columnCount == 5: self.body.append('\n\\linev') def depart_row(self, node): - if self.tableSpec.getMode() == TABLE_MODE_HEAD: - pass - elif self.tableSpec.getMode() == TABLE_MODE_BODY: - pass + if self.tableSpec.firstRow: + self.tableSpec.firstRow = 0 def visit_entry(self, node): - if self.tableSpec.getMode() == TABLE_MODE_HEAD: - #self.body.append('%% [(visit_entry) text: +%s+]' % node.astext()) - self.body.append('{%s}' % node.astext().strip(' ')) - raise nodes.SkipNode - elif self.tableSpec.getMode() == TABLE_MODE_BODY: - #self.body.append('%% [(visit_entry) text: +%s+]' % node.astext()) - self.body.append('{%s}' % node.astext().strip(' ')) + if self.tableSpec.firstRow: + self.body.append('{%s}' % self.encode(node.astext().strip(' '))) raise nodes.SkipNode + else: + self.body.append('{') def depart_entry(self, node): - pass -## if self.tableSpec.getMode() == TABLE_MODE_HEAD: -## self.body.append('}') -## elif self.tableSpec.getMode() == TABLE_MODE_BODY: -## self.body.append('}') + if self.tableSpec.firstRow: + pass + else: + self.body.append('}') def visit_bullet_list(self, node): self.body.append('\\begin{itemize}\n' ) @@ -268,12 +394,12 @@ class LaTeXTranslator(nodes.NodeVisitor): self.body.append('\\item[') def depart_term(self, node): # definition list term. - self.body.append(':]\n') + self.body.append(']\n') def visit_classifier(self, node): - pass # XXX + self.body.append('{[}') def depart_classifier(self, node): - pass + self.body.append('{]}') def visit_definition(self, node): pass @@ -291,28 +417,45 @@ class LaTeXTranslator(nodes.NodeVisitor): self.body.append('\n\\end{centering}') def visit_note(self, node): - self.body.append('\n\\note{') + self.body.append('\n\\begin{notice}[note]') def depart_note(self, node): - self.body.append('}\n') + self.body.append('\\end{notice}\n') def visit_warning(self, node): - self.body.append('\n\\warning{') + self.body.append('\n\\begin{notice}[warning]') def depart_warning(self, node): - self.body.append('}\n') + self.body.append('\\end{notice}\n') def visit_versionmodified(self, node): - #self.body.append('\n\\vmod{') - pass + self.body.append('\\%s' % node['type']) + if node['type'] == 'deprecated': + self.body.append('{%s}{' % node['version']) + self.context.append('}') + else: + if len(node): + self.body.append('[') + self.context.append(']{%s}' % node['version']) + else: + self.body.append('{%s}' % node['version']) + self.context.append('') def depart_versionmodified(self, node): - #self.body.append('}\n') - pass + self.body.append(self.context.pop()) def visit_target(self, node): + # XXX: no "index-" targets if not (node.has_key('refuri') or node.has_key('refid') or node.has_key('refname')): + ctx = '' for id in node['ids']: - self.body.append(r'\hypertarget{%s}{' % id) - self.context.append('}' * len(node['ids'])) + if id not in self.written_ids: + self.body.append(r'\hypertarget{%s}{' % id) + self.written_ids.add(id) + ctx += '}' + self.context.append(ctx) + elif node.has_key('refid') and node['refid'] not in self.written_ids: + self.body.append(r'\hypertarget{%s}{' % node['refid']) + self.written_ids.add(node['refid']) + self.context.append('}') else: self.context.append('') def depart_target(self, node): @@ -322,9 +465,19 @@ class LaTeXTranslator(nodes.NodeVisitor): raise nodes.SkipNode # XXX def visit_reference(self, node): - pass # XXX + uri = node.get('refuri', '') + if self.in_title or not uri: + self.context.append('') + elif uri.startswith(('mailto:', 'http:', 'ftp:')): + self.body.append('\\href{%s}{' % self.encode(uri)) + self.context.append('}') + elif uri.startswith('#'): + self.body.append('\\hyperlink{%s}{' % uri[1:]) + self.context.append('}') + else: + raise RuntimeError('XXX malformed reference target %s' % uri) def depart_reference(self, node): - pass + self.body.append(self.context.pop()) def visit_pending_xref(self, node): pass @@ -346,25 +499,31 @@ class LaTeXTranslator(nodes.NodeVisitor): def depart_strong(self, node): self.body.append('}') + def visit_title_reference(self, node): + raise RuntimeError("XXX title reference node found") + def visit_literal(self, node): content = self.encode(node.astext().strip()) - if re.search('[ \t\n]', content): + if self.in_title: + self.body.append(r'\texttt{%s}' % content) + elif re.search('[ \t\n]', content): self.body.append(r'\samp{%s}' % content) else: self.body.append(r'\code{%s}' % content) raise nodes.SkipNode def visit_footnote_reference(self, node): - pass #XXX - def depart_footnote_reference(self, node): - pass + self.body.append('\\footnotemark[%s]' % node.astext()) + raise nodes.SkipNode def visit_literal_block(self, node): - self.body.append('\n\\begin{verbatim}') + self.body.append('\n\\begin{Verbatim}\n') self.verbatim = 1 def depart_literal_block(self, node): - self.body.append('\\end{verbatim}\n') + self.body.append('\n\\end{Verbatim}\n') self.verbatim = 0 + visit_doctest_block = visit_literal_block + depart_doctest_block = depart_literal_block def visit_line_block(self, node): """line-block: @@ -373,20 +532,9 @@ class LaTeXTranslator(nodes.NodeVisitor): * serif typeface """ self.body.append('\\begin{flushleft}\n') - #self.insert_none_breaking_blanks = 1 - #self.line_block_without_mbox = 1 - #if self.line_block_without_mbox: - # self.insert_newline = 1 - #else: - # self.mbox_newline = 1 - # self.body.append('\\mbox{') + self.literal_whitespace = 1 def depart_line_block(self, node): - #if self.line_block_without_mbox: - # self.insert_newline = 0 - #else: - # self.body.append('}') - # self.mbox_newline = 0 - #self.insert_none_breaking_blanks = 0 + self.literal_whitespace = 0 self.body.append('\n\\end{flushleft}\n') def visit_line(self, node): @@ -417,19 +565,23 @@ class LaTeXTranslator(nodes.NodeVisitor): self.body.append('\\end{quote}\n') replacements = [ - (u"\\", ur"\textbackslash{}"), + (u"\\", u"\x00"), (u"$", ur"\$"), + (r"%", ur"\%"), (u"&", ur"\&"), (u"#", ur"\#"), (u"_", ur"\_"), (u"{", ur"\{"), (u"}", ur"\}"), + (u"[", ur"{[}"), + (u"]", ur"{]}"), (u"¶", ur"\P{}"), (u"§", ur"\S{}"), (u"~", ur"\textasciitilde{}"), (u"<", ur"\textless{}"), (u">", ur"\textgreater{}"), (u"^", ur"\textasciicircum{}"), + (u"\x00", ur"\textbackslash{}"), ] def encode(self, text): @@ -437,6 +589,10 @@ class LaTeXTranslator(nodes.NodeVisitor): return text for x, y in self.replacements: text = text.replace(x, y) + if self.literal_whitespace: + # Insert a blank before the newline, to avoid + # ! LaTeX Error: There's no line here to end. + text = text.replace("\n", '~\\\\\n').replace(" ", "~") return text def visit_Text(self, node): diff --git a/sphinx/texinputs/fancyhdr.sty b/sphinx/texinputs/fancyhdr.sty deleted file mode 100644 index c1026e95c..000000000 --- a/sphinx/texinputs/fancyhdr.sty +++ /dev/null @@ -1,329 +0,0 @@ -% fancyhdr.sty version 1.99d -% Fancy headers and footers for LaTeX. -% Piet van Oostrum, Dept of Computer Science, University of Utrecht -% Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands -% Telephone: +31 30 2532180. Email: piet@cs.ruu.nl -% ======================================================================== -% LICENCE: This is free software. You are allowed to use and distribute -% this software in any way you like. You are also allowed to make modified -% versions of it, but you can distribute a modified version only if you -% clearly indicate that it is a modified version and the person(s) who -% modified it. This indication should be in a prominent place, e.g. in the -% top of the file. If possible a contact address, preferably by email, -% should be given for these persons. If that is feasible the modifications -% should be indicated in the source code. -% ======================================================================== -% MODIFICATION HISTORY: -% Sep 16, 1994 -% version 1.4: Correction for use with \reversemargin -% Sep 29, 1994: -% version 1.5: Added the \iftopfloat, \ifbotfloat and \iffloatpage commands -% Oct 4, 1994: -% version 1.6: Reset single spacing in headers/footers for use with -% setspace.sty or doublespace.sty -% Oct 4, 1994: -% version 1.7: changed \let\@mkboth\markboth to -% \def\@mkboth{\protect\markboth} to make it more robust -% Dec 5, 1994: -% version 1.8: corrections for amsbook/amsart: define \@chapapp and (more -% importantly) use the \chapter/sectionmark definitions from ps@headings if -% they exist (which should be true for all standard classes). -% May 31, 1995: -% version 1.9: The proposed \renewcommand{\headrulewidth}{\iffloatpage... -% construction in the doc did not work properly with the fancyplain style. -% June 1, 1995: -% version 1.91: The definition of \@mkboth wasn't restored on subsequent -% \pagestyle{fancy}'s. -% June 1, 1995: -% version 1.92: The sequence \pagestyle{fancyplain} \pagestyle{plain} -% \pagestyle{fancy} would erroneously select the plain version. -% June 1, 1995: -% version 1.93: \fancypagestyle command added. -% Dec 11, 1995: -% version 1.94: suggested by Conrad Hughes -% CJCH, Dec 11, 1995: added \footruleskip to allow control over footrule -% position (old hardcoded value of .3\normalbaselineskip is far too high -% when used with very small footer fonts). -% Jan 31, 1996: -% version 1.95: call \@normalsize in the reset code if that is defined, -% otherwise \normalsize. -% this is to solve a problem with ucthesis.cls, as this doesn't -% define \@currsize. Unfortunately for latex209 calling \normalsize doesn't -% work as this is optimized to do very little, so there \@normalsize should -% be called. Hopefully this code works for all versions of LaTeX known to -% mankind. -% April 25, 1996: -% version 1.96: initialize \headwidth to a magic (negative) value to catch -% most common cases that people change it before calling \pagestyle{fancy}. -% Note it can't be initialized when reading in this file, because -% \textwidth could be changed afterwards. This is quite probable. -% We also switch to \MakeUppercase rather than \uppercase and introduce a -% \nouppercase command for use in headers. and footers. -% May 3, 1996: -% version 1.97: Two changes: -% 1. Undo the change in version 1.8 (using the pagestyle{headings} defaults -% for the chapter and section marks. The current version of amsbook and -% amsart classes don't seem to need them anymore. Moreover the standard -% latex classes don't use \markboth if twoside isn't selected, and this is -% confusing as \leftmark doesn't work as expected. -% 2. include a call to \ps@empty in ps@@fancy. This is to solve a problem -% in the amsbook and amsart classes, that make global changes to \topskip, -% which are reset in \ps@empty. Hopefully this doesn't break other things. -% May 7, 1996: -% version 1.98: -% Added % after the line \def\nouppercase -% May 7, 1996: -% version 1.99: This is the alpha version of fancyhdr 2.0 -% Introduced the new commands \fancyhead, \fancyfoot, and \fancyhf. -% Changed \headrulewidth, \footrulewidth, \footruleskip to -% macros rather than length parameters, In this way they can be -% conditionalized and they don't consume length registers. There is no need -% to have them as length registers unless you want to do calculations with -% them, which is unlikely. Note that this may make some uses of them -% incompatible (i.e. if you have a file that uses \setlength or \xxxx=) -% May 10, 1996: -% version 1.99a: -% Added a few more % signs -% May 10, 1996: -% version 1.99b: -% Changed the syntax of \f@nfor to be resistent to catcode changes of := -% Removed the [1] from the defs of \lhead etc. because the parameter is -% consumed by the \@[xy]lhead etc. macros. -% June 24, 1997: -% version 1.99c: -% corrected \nouppercase to also include the protected form of \MakeUppercase -% \global added to manipulation of \headwidth. -% \iffootnote command added. -% Some comments added about \@fancyhead and \@fancyfoot. -% Aug 24, 1998 -% version 1.99d -% Changed the default \ps@empty to \ps@@empty in order to allow -% \fancypagestyle{empty} redefinition. - -\let\fancy@def\gdef - -\def\if@mpty#1#2#3{\def\temp@ty{#1}\ifx\@empty\temp@ty #2\else#3\fi} - -% Usage: \@forc \var{charstring}{command to be executed for each char} -% This is similar to LaTeX's \@tfor, but expands the charstring. - -\def\@forc#1#2#3{\expandafter\f@rc\expandafter#1\expandafter{#2}{#3}} -\def\f@rc#1#2#3{\def\temp@ty{#2}\ifx\@empty\temp@ty\else - \f@@rc#1#2\f@@rc{#3}\fi} -\def\f@@rc#1#2#3\f@@rc#4{\def#1{#2}#4\f@rc#1{#3}{#4}} - -% Usage: \f@nfor\name:=list\do{body} -% Like LaTeX's \@for but an empty list is treated as a list with an empty -% element - -\newcommand{\f@nfor}[3]{\edef\@fortmp{#2}% - \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}} - -% Usage: \def@ult \cs{defaults}{argument} -% sets \cs to the characters from defaults appearing in argument -% or defaults if it would be empty. All characters are lowercased. - -\newcommand\def@ult[3]{% - \edef\temp@a{\lowercase{\edef\noexpand\temp@a{#3}}}\temp@a - \def#1{}% - \@forc\tmpf@ra{#2}% - {\expandafter\if@in\tmpf@ra\temp@a{\edef#1{#1\tmpf@ra}}{}}% - \ifx\@empty#1\def#1{#2}\fi} -% -% \if@in -% -\newcommand{\if@in}[4]{% - \edef\temp@a{#2}\def\temp@b##1#1##2\temp@b{\def\temp@b{##1}}% - \expandafter\temp@b#2#1\temp@b\ifx\temp@a\temp@b #4\else #3\fi} - -\newcommand{\fancyhead}{\@ifnextchar[{\f@ncyhf h}{\f@ncyhf h[]}} -\newcommand{\fancyfoot}{\@ifnextchar[{\f@ncyhf f}{\f@ncyhf f[]}} -\newcommand{\fancyhf}{\@ifnextchar[{\f@ncyhf {}}{\f@ncyhf {}[]}} - -% The header and footer fields are stored in command sequences with -% names of the form: \f@ncy with for [eo], form [lcr] -% and from [hf]. - -\def\f@ncyhf#1[#2]#3{% - \def\temp@c{}% - \@forc\tmpf@ra{#2}% - {\expandafter\if@in\tmpf@ra{eolcrhf,EOLCRHF}% - {}{\edef\temp@c{\temp@c\tmpf@ra}}}% - \ifx\@empty\temp@c\else - \ifx\PackageError\undefined - \errmessage{Illegal char `\temp@c' in fancyhdr argument: - [#2]}\else - \PackageError{Fancyhdr}{Illegal char `\temp@c' in fancyhdr argument: - [#2]}{}\fi - \fi - \f@nfor\temp@c{#2}% - {\def@ult\f@@@eo{eo}\temp@c - \def@ult\f@@@lcr{lcr}\temp@c - \def@ult\f@@@hf{hf}{#1\temp@c}% - \@forc\f@@eo\f@@@eo - {\@forc\f@@lcr\f@@@lcr - {\@forc\f@@hf\f@@@hf - {\expandafter\fancy@def\csname - f@ncy\f@@eo\f@@lcr\f@@hf\endcsname - {#3}}}}}} - -% Fancyheadings version 1 commands. These are more or less deprecated, -% but they continue to work. - -\newcommand{\lhead}{\@ifnextchar[{\@xlhead}{\@ylhead}} -\def\@xlhead[#1]#2{\fancy@def\f@ncyelh{#1}\fancy@def\f@ncyolh{#2}} -\def\@ylhead#1{\fancy@def\f@ncyelh{#1}\fancy@def\f@ncyolh{#1}} - -\newcommand{\chead}{\@ifnextchar[{\@xchead}{\@ychead}} -\def\@xchead[#1]#2{\fancy@def\f@ncyech{#1}\fancy@def\f@ncyoch{#2}} -\def\@ychead#1{\fancy@def\f@ncyech{#1}\fancy@def\f@ncyoch{#1}} - -\newcommand{\rhead}{\@ifnextchar[{\@xrhead}{\@yrhead}} -\def\@xrhead[#1]#2{\fancy@def\f@ncyerh{#1}\fancy@def\f@ncyorh{#2}} -\def\@yrhead#1{\fancy@def\f@ncyerh{#1}\fancy@def\f@ncyorh{#1}} - -\newcommand{\lfoot}{\@ifnextchar[{\@xlfoot}{\@ylfoot}} -\def\@xlfoot[#1]#2{\fancy@def\f@ncyelf{#1}\fancy@def\f@ncyolf{#2}} -\def\@ylfoot#1{\fancy@def\f@ncyelf{#1}\fancy@def\f@ncyolf{#1}} - -\newcommand{\cfoot}{\@ifnextchar[{\@xcfoot}{\@ycfoot}} -\def\@xcfoot[#1]#2{\fancy@def\f@ncyecf{#1}\fancy@def\f@ncyocf{#2}} -\def\@ycfoot#1{\fancy@def\f@ncyecf{#1}\fancy@def\f@ncyocf{#1}} - -\newcommand{\rfoot}{\@ifnextchar[{\@xrfoot}{\@yrfoot}} -\def\@xrfoot[#1]#2{\fancy@def\f@ncyerf{#1}\fancy@def\f@ncyorf{#2}} -\def\@yrfoot#1{\fancy@def\f@ncyerf{#1}\fancy@def\f@ncyorf{#1}} - -\newdimen\headwidth -\newcommand{\headrulewidth}{0.4pt} -\newcommand{\footrulewidth}{\z@skip} -\newcommand{\footruleskip}{.3\normalbaselineskip} - -% Fancyplain stuff shouldn't be used anymore (rather -% \fancypagestyle{plain} should be used), but it must be present for -% compatibility reasons. - -\newcommand{\plainheadrulewidth}{\z@skip} -\newcommand{\plainfootrulewidth}{\z@skip} -\newif\if@fancyplain \@fancyplainfalse -\def\fancyplain#1#2{\if@fancyplain#1\else#2\fi} - -\headwidth=-123456789sp %magic constant - -% Command to reset various things in the headers: -% a.o. single spacing (taken from setspace.sty) -% and the catcode of ^^M (so that epsf files in the header work if a -% verbatim crosses a page boundary) -% It also defines a \nouppercase command that disables \uppercase and -% \Makeuppercase. It can only be used in the headers and footers. -\def\fancy@reset{\restorecr - \def\baselinestretch{1}% - \def\nouppercase##1{{\let\uppercase\relax\let\MakeUppercase\relax - \expandafter\let\csname MakeUppercase \endcsname\relax##1}}% - \ifx\undefined\@newbaseline% NFSS not present; 2.09 or 2e - \ifx\@normalsize\undefined \normalsize % for ucthesis.cls - \else \@normalsize \fi - \else% NFSS (2.09) present - \@newbaseline% - \fi} - -% Initialization of the head and foot text. - -% The default values still contain \fancyplain for compatibility. -\fancyhf{} % clear all -% lefthead empty on ``plain'' pages, \rightmark on even, \leftmark on odd pages -% evenhead empty on ``plain'' pages, \leftmark on even, \rightmark on odd pages -\fancyhead[el,or]{\fancyplain{}{\sl\rightmark}} -\fancyhead[er,ol]{\fancyplain{}{\sl\leftmark}} -\fancyfoot[c]{\rm\thepage} % page number - -% Put together a header or footer given the left, center and -% right text, fillers at left and right and a rule. -% The \lap commands put the text into an hbox of zero size, -% so overlapping text does not generate an errormessage. -% These macros have 5 parameters: -% 1. \@lodd or \@rodd % This determines at which side the header will stick -% out. -% 2. \f@ncyolh, \f@ncyelh, \f@ncyolf or \f@ncyelf. This is the left component. -% 3. \f@ncyoch, \f@ncyech, \f@ncyocf or \f@ncyecf. This is the middle comp. -% 4. \f@ncyorh, \f@ncyerh, \f@ncyorf or \f@ncyerf. This is the right component. -% 5. \@lodd or \@rodd % This determines at which side the header will stick -% out. This is the reverse of parameter nr. 1. One of them is always -% \relax and the other one is \hss (after expansion). - -\def\@fancyhead#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset\vbox{\hbox -{\rlap{\parbox[b]{\headwidth}{\raggedright#2\strut}}\hfill -\parbox[b]{\headwidth}{\centering#3\strut}\hfill -\llap{\parbox[b]{\headwidth}{\raggedleft#4\strut}}}\headrule}}#5} - -\def\@fancyfoot#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset\vbox{\footrule -\hbox{\rlap{\parbox[t]{\headwidth}{\raggedright#2\strut}}\hfill -\parbox[t]{\headwidth}{\centering#3\strut}\hfill -\llap{\parbox[t]{\headwidth}{\raggedleft#4\strut}}}}}#5} - -\def\headrule{{\if@fancyplain\let\headrulewidth\plainheadrulewidth\fi -\hrule\@height\headrulewidth\@width\headwidth \vskip-\headrulewidth}} - -\def\footrule{{\if@fancyplain\let\footrulewidth\plainfootrulewidth\fi -\vskip-\footruleskip\vskip-\footrulewidth -\hrule\@width\headwidth\@height\footrulewidth\vskip\footruleskip}} - -\def\ps@fancy{% -\@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}%for amsbook -% -% Define \MakeUppercase for old LaTeXen. -% Note: we used \def rather than \let, so that \let\uppercase\relax (from -% the version 1 documentation) will still work. -% -\@ifundefined{MakeUppercase}{\def\MakeUppercase{\uppercase}}{}% -\@ifundefined{chapter}{\def\sectionmark##1{\markboth -{\MakeUppercase{\ifnum \c@secnumdepth>\z@ - \thesection\hskip 1em\relax \fi ##1}}{}}% -\def\subsectionmark##1{\markright {\ifnum \c@secnumdepth >\@ne - \thesubsection\hskip 1em\relax \fi ##1}}}% -{\def\chaptermark##1{\markboth {\MakeUppercase{\ifnum \c@secnumdepth>\m@ne - \@chapapp\ \thechapter. \ \fi ##1}}{}}% -\def\sectionmark##1{\markright{\MakeUppercase{\ifnum \c@secnumdepth >\z@ - \thesection. \ \fi ##1}}}}% -%\csname ps@headings\endcsname % use \ps@headings defaults if they exist -\ps@@fancy -\gdef\ps@fancy{\@fancyplainfalse\ps@@fancy}% -% Initialize \headwidth if the user didn't -% -\ifdim\headwidth<0sp -% -% This catches the case that \headwidth hasn't been initialized and the -% case that the user added something to \headwidth in the expectation that -% it was initialized to \textwidth. We compensate this now. This loses if -% the user intended to multiply it by a factor. But that case is more -% likely done by saying something like \headwidth=1.2\textwidth. -% The doc says you have to change \headwidth after the first call to -% \pagestyle{fancy}. This code is just to catch the most common cases were -% that requirement is violated. -% - \global\advance\headwidth123456789sp\global\advance\headwidth\textwidth -\fi} -\def\ps@fancyplain{\ps@fancy \let\ps@plain\ps@plain@fancy} -\def\ps@plain@fancy{\@fancyplaintrue\ps@@fancy} -\let\ps@@empty\ps@empty -\def\ps@@fancy{% -\ps@@empty % This is for amsbook/amsart, which do strange things with \topskip -\def\@mkboth{\protect\markboth}% -\def\@oddhead{\@fancyhead\@lodd\f@ncyolh\f@ncyoch\f@ncyorh\@rodd}% -\def\@oddfoot{\@fancyfoot\@lodd\f@ncyolf\f@ncyocf\f@ncyorf\@rodd}% -\def\@evenhead{\@fancyhead\@rodd\f@ncyelh\f@ncyech\f@ncyerh\@lodd}% -\def\@evenfoot{\@fancyfoot\@rodd\f@ncyelf\f@ncyecf\f@ncyerf\@lodd}% -} -\def\@lodd{\if@reversemargin\hss\else\relax\fi} -\def\@rodd{\if@reversemargin\relax\else\hss\fi} - -\newif\iffootnote -\let\latex@makecol\@makecol -\def\@makecol{\ifvoid\footins\footnotetrue\else\footnotefalse\fi -\let\topfloat\@toplist\let\botfloat\@botlist\latex@makecol} -\def\iftopfloat#1#2{\ifx\topfloat\empty #2\else #1\fi} -\def\ifbotfloat#1#2{\ifx\botfloat\empty #2\else #1\fi} -\def\iffloatpage#1#2{\if@fcolmade #1\else #2\fi} - -\newcommand{\fancypagestyle}[2]{% - \@namedef{ps@#1}{\let\fancy@def\def#2\relax\ps@fancy}} diff --git a/sphinx/texinputs/fncychap.sty b/sphinx/texinputs/fncychap.sty deleted file mode 100644 index b0d7b76b7..000000000 --- a/sphinx/texinputs/fncychap.sty +++ /dev/null @@ -1,433 +0,0 @@ -%%% Derived from the original fncychap.sty, -%%% but changed ``TWELV'' to ``TWELVE''. - -%%% Copyright Ulf A. Lindgren -%%% Department of Applied Electronics -%%% Chalmers University of Technology -%%% S-412 96 Gothenburg, Sweden -%%% E-mail lindgren@ae.chalmers.se -%%% -%%% Note Permission is granted to modify this file under -%%% the condition that it is saved using another -%%% file and package name. -%%% -%%% Revision 1.1 -%%% -%%% Jan. 8th Modified package name base date option -%%% Jan. 22th Modified FmN and FmTi for error in book.cls -%%% \MakeUppercase{#}->{\MakeUppercase#} -%%% Apr. 6th Modified Lenny option to prevent undesired -%%% skip of line. -%%% Nov. 8th Fixed \@chapapp for AMS -%%% Feb. 11th Fixed appendix problem related to Bjarne -%%% Last modified Feb. 11th 1998 - -\NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesPackage{fncychap} - [1997/04/06 v1.11 - LaTeX package (Revised chapters)] - -%%%% DEFINITION OF Chapapp variables -\newcommand{\CNV}{\huge\bfseries} -\newcommand{\ChNameVar}[1]{\renewcommand{\CNV}{#1}} - - -%%%% DEFINITION OF TheChapter variables -\newcommand{\CNoV}{\huge\bfseries} -\newcommand{\ChNumVar}[1]{\renewcommand{\CNoV}{#1}} - -\newif\ifUCN -\UCNfalse -\newif\ifLCN -\LCNfalse -\def\ChNameLowerCase{\LCNtrue\UCNfalse} -\def\ChNameUpperCase{\UCNtrue\LCNfalse} -\def\ChNameAsIs{\UCNfalse\LCNfalse} - -%%%%% Fix for AMSBook 971008 - -\@ifundefined{@chapapp}{\let\@chapapp\chaptername}{} - - -%%%%% Fix for Bjarne and appendix 980211 - -\newif\ifinapp -\inappfalse -\renewcommand\appendix{\par - \setcounter{chapter}{0}% - \setcounter{section}{0}% - \inapptrue% - \renewcommand\@chapapp{\appendixname}% - \renewcommand\thechapter{\@Alph\c@chapter}} - -%%%%% - -\newcommand{\FmN}[1]{% -\ifUCN - {\MakeUppercase#1}\LCNfalse -\else - \ifLCN - {\MakeLowercase#1}\UCNfalse - \else #1 - \fi -\fi} - - -%%%% DEFINITION OF Title variables -\newcommand{\CTV}{\Huge\bfseries} -\newcommand{\ChTitleVar}[1]{\renewcommand{\CTV}{#1}} - -%%%% DEFINITION OF the basic rule width -\newlength{\RW} -\setlength{\RW}{1pt} -\newcommand{\ChRuleWidth}[1]{\setlength{\RW}{#1}} - -\newif\ifUCT -\UCTfalse -\newif\ifLCT -\LCTfalse -\def\ChTitleLowerCase{\LCTtrue\UCTfalse} -\def\ChTitleUpperCase{\UCTtrue\LCTfalse} -\def\ChTitleAsIs{\UCTfalse\LCTfalse} -\newcommand{\FmTi}[1]{% -\ifUCT - - {\MakeUppercase#1}\LCTfalse -\else - \ifLCT - {\MakeLowercase#1}\UCTfalse - \else #1 - \fi -\fi} - - - -\newlength{\mylen} -\newlength{\myhi} -\newlength{\px} -\newlength{\py} -\newlength{\pyy} -\newlength{\pxx} - - -\def\mghrulefill#1{\leavevmode\leaders\hrule\@height #1\hfill\kern\z@} - -\newcommand{\DOCH}{% - \CNV\FmN{\@chapapp}\space \CNoV\thechapter - \par\nobreak - \vskip 20\p@ - } -\newcommand{\DOTI}[1]{% - \CTV\FmTi{#1}\par\nobreak - \vskip 40\p@ - } -\newcommand{\DOTIS}[1]{% - \CTV\FmTi{#1}\par\nobreak - \vskip 40\p@ - } - -%%%%%% SONNY DEF - -\DeclareOption{Sonny}{% - \ChNameVar{\Large\sf} - \ChNumVar{\Huge} - \ChTitleVar{\Large\sf} - \ChRuleWidth{0.5pt} - \ChNameUpperCase - \renewcommand{\DOCH}{% - \raggedleft - \CNV\FmN{\@chapapp}\space \CNoV\thechapter - \par\nobreak - \vskip 40\p@} - \renewcommand{\DOTI}[1]{% - \CTV\raggedleft\mghrulefill{\RW}\par\nobreak - \vskip 5\p@ - \CTV\FmTi{#1}\par\nobreak - \mghrulefill{\RW}\par\nobreak - \vskip 40\p@} - \renewcommand{\DOTIS}[1]{% - \CTV\raggedleft\mghrulefill{\RW}\par\nobreak - \vskip 5\p@ - \CTV\FmTi{#1}\par\nobreak - \mghrulefill{\RW}\par\nobreak - \vskip 40\p@} -} - -%%%%%% LENNY DEF - -\DeclareOption{Lenny}{% - - \ChNameVar{\fontsize{14}{16}\usefont{OT1}{phv}{m}{n}\selectfont} - \ChNumVar{\fontsize{60}{62}\usefont{OT1}{ptm}{m}{n}\selectfont} - \ChTitleVar{\Huge\bfseries\rm} - \ChRuleWidth{1pt} - \renewcommand{\DOCH}{% - \settowidth{\px}{\CNV\FmN{\@chapapp}} - \addtolength{\px}{2pt} - \settoheight{\py}{\CNV\FmN{\@chapapp}} - \addtolength{\py}{1pt} - - \settowidth{\mylen}{\CNV\FmN{\@chapapp}\space\CNoV\thechapter} - \addtolength{\mylen}{1pt} - \settowidth{\pxx}{\CNoV\thechapter} - \addtolength{\pxx}{-1pt} - - \settoheight{\pyy}{\CNoV\thechapter} - \addtolength{\pyy}{-2pt} - \setlength{\myhi}{\pyy} - \addtolength{\myhi}{-1\py} - \par - \parbox[b]{\textwidth}{% - \rule[\py]{\RW}{\myhi}% - \hskip -\RW% - \rule[\pyy]{\px}{\RW}% - \hskip -\px% - \raggedright% - \CNV\FmN{\@chapapp}\space\CNoV\thechapter% - \hskip1pt% - \mghrulefill{\RW}% - \rule{\RW}{\pyy}\par\nobreak% - \vskip -\baselineskip% - \vskip -\pyy% - \hskip \mylen% - \mghrulefill{\RW}\par\nobreak% - \vskip \pyy}% - \vskip 20\p@} - - - \renewcommand{\DOTI}[1]{% - \raggedright - \CTV\FmTi{#1}\par\nobreak - \vskip 40\p@} - - \renewcommand{\DOTIS}[1]{% - \raggedright - \CTV\FmTi{#1}\par\nobreak - \vskip 40\p@} - } - - -%%%%%%% GLENN DEF - - -\DeclareOption{Glenn}{% - \ChNameVar{\bfseries\Large\sf} - \ChNumVar{\Huge} - \ChTitleVar{\bfseries\Large\rm} - \ChRuleWidth{1pt} - \ChNameUpperCase - \ChTitleUpperCase - \renewcommand{\DOCH}{% - \settoheight{\myhi}{\CTV\FmTi{Test}} - \setlength{\py}{\baselineskip} - \addtolength{\py}{\RW} - \addtolength{\py}{\myhi} - \setlength{\pyy}{\py} - \addtolength{\pyy}{-1\RW} - - \raggedright - \CNV\FmN{\@chapapp}\space\CNoV\thechapter - \hskip 3pt\mghrulefill{\RW}\rule[-1\pyy]{2\RW}{\py}\par\nobreak} - - \renewcommand{\DOTI}[1]{% - \addtolength{\pyy}{-4pt} - \settoheight{\myhi}{\CTV\FmTi{#1}} - \addtolength{\myhi}{\py} - \addtolength{\myhi}{-1\RW} - \vskip -1\pyy - \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 2pt - \raggedleft\CTV\FmTi{#1}\par\nobreak - \vskip 80\p@} - - \renewcommand{\DOTIS}[1]{% - \setlength{\py}{10pt} - \setlength{\pyy}{\py} - \addtolength{\pyy}{\RW} - \setlength{\myhi}{\baselineskip} - \addtolength{\myhi}{\pyy} - \mghrulefill{\RW}\rule[-1\py]{2\RW}{\pyy}\par\nobreak -% \addtolength{}{} -\vskip -1\baselineskip - \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 2pt - \raggedleft\CTV\FmTi{#1}\par\nobreak - \vskip 60\p@} - } - -%%%%%%% CONNY DEF - -\DeclareOption{Conny}{% - \ChNameUpperCase - \ChTitleUpperCase - \ChNameVar{\centering\Huge\rm\bfseries} - \ChNumVar{\Huge} - \ChTitleVar{\centering\Huge\rm} - \ChRuleWidth{2pt} - - \renewcommand{\DOCH}{% - \mghrulefill{3\RW}\par\nobreak - \vskip -0.5\baselineskip - \mghrulefill{\RW}\par\nobreak - \CNV\FmN{\@chapapp}\space \CNoV\thechapter - \par\nobreak - \vskip -0.5\baselineskip - } - \renewcommand{\DOTI}[1]{% - \mghrulefill{\RW}\par\nobreak - \CTV\FmTi{#1}\par\nobreak - \vskip 60\p@ - } - \renewcommand{\DOTIS}[1]{% - \mghrulefill{\RW}\par\nobreak - \CTV\FmTi{#1}\par\nobreak - \vskip 60\p@ - } - } - -%%%%%%% REJNE DEF - -\DeclareOption{Rejne}{% - - \ChNameUpperCase - \ChTitleUpperCase - \ChNameVar{\centering\Large\rm} - \ChNumVar{\Huge} - \ChTitleVar{\centering\Huge\rm} - \ChRuleWidth{1pt} - \renewcommand{\DOCH}{% - \settoheight{\py}{\CNoV\thechapter} - \addtolength{\py}{-1pt} - \CNV\FmN{\@chapapp}\par\nobreak - \vskip 20\p@ - \setlength{\myhi}{2\baselineskip} - \setlength{\px}{\myhi} - \addtolength{\px}{-1\RW} - \rule[-1\px]{\RW}{\myhi}\mghrulefill{\RW}\hskip - 10pt\raisebox{-0.5\py}{\CNoV\thechapter}\hskip -10pt\mghrulefill{\RW}\rule[-1\px]{\RW}{\myhi}\par\nobreak - \vskip -1\p@ - } - \renewcommand{\DOTI}[1]{% - \setlength{\mylen}{\textwidth} - \addtolength{\mylen}{-2\RW} - {\vrule width\RW}\parbox{\mylen}{\CTV\FmTi{#1}}{\vrule -width\RW}\par\nobreak - \vskip --1pt\rule{\RW}{2\baselineskip}\mghrulefill{\RW}\rule{\RW}{2\baselineskip} - \vskip 60\p@ - } - \renewcommand{\DOTIS}[1]{% - \setlength{\py}{\fboxrule} - \setlength{\fboxrule}{\RW} - \setlength{\mylen}{\textwidth} - \addtolength{\mylen}{-2\RW} - \fbox{\parbox{\mylen}{\vskip -2\baselineskip\CTV\FmTi{#1}\par\nobreak\vskip \baselineskip}} - \setlength{\fboxrule}{\py} - \vskip 60\p@ - } - } - - -%%%%%%% BJARNE DEF - -\DeclareOption{Bjarne}{% - \ChNameUpperCase - \ChTitleUpperCase - \ChNameVar{\raggedleft\normalsize\rm} - \ChNumVar{\raggedleft \bfseries\Large} - \ChTitleVar{\raggedleft \Large\rm} - \ChRuleWidth{1pt} - - -%% Note thechapter -> c@chapter fix appendix bug - - \newcounter{AlphaCnt} - \newcounter{AlphaDecCnt} - \newcommand{\AlphaNo}{% - \ifcase\number\theAlphaCnt - \ifnum\c@chapter=0 - ZERO\else{}\fi - \or ONE\or TWO\or THREE\or FOUR\or FIVE - \or SIX\or SEVEN\or EIGHT\or NINE\or TEN - \or ELEVEN\or TWELVE\or THIRTEEN\or FOURTEEN\or FIFTEEN - \or SIXTEEN\or SEVENTEEN\or EIGHTEEN\or NINETEEN\fi -} - - \newcommand{\AlphaDecNo}{% - \setcounter{AlphaDecCnt}{0} - \@whilenum\number\theAlphaCnt>0\do - {\addtocounter{AlphaCnt}{-10} - \addtocounter{AlphaDecCnt}{1}} - \ifnum\number\theAlphaCnt=0 - \else - \addtocounter{AlphaDecCnt}{-1} - \addtocounter{AlphaCnt}{10} - \fi - - - \ifcase\number\theAlphaDecCnt\or TEN\or TWENTY\or THIRTY\or - FORTY\or FIFTY\or SIXTY\or SEVENTY\or EIGHTY\or NINETY\fi - } - \newcommand{\TheAlphaChapter}{% - - \ifinapp - \thechapter - \else - \setcounter{AlphaCnt}{\c@chapter} - \ifnum\c@chapter<20 - \AlphaNo - \else - \AlphaDecNo\AlphaNo - \fi - \fi - } - \renewcommand{\DOCH}{% - \mghrulefill{\RW}\par\nobreak - \CNV\FmN{\@chapapp}\par\nobreak - \CNoV\TheAlphaChapter\par\nobreak - \vskip -1\baselineskip\vskip 5pt\mghrulefill{\RW}\par\nobreak - \vskip 20\p@ - } - \renewcommand{\DOTI}[1]{% - \CTV\FmTi{#1}\par\nobreak - \vskip 40\p@ - } - \renewcommand{\DOTIS}[1]{% - \CTV\FmTi{#1}\par\nobreak - \vskip 40\p@ - } -} - -\DeclareOption*{% - \PackageWarning{fancychapter}{unknown style option} - } - -\ProcessOptions* \relax - -\def\@makechapterhead#1{% - \vspace*{50\p@}% - {\parindent \z@ \raggedright \normalfont - \ifnum \c@secnumdepth >\m@ne - \DOCH - \fi - \interlinepenalty\@M - \DOTI{#1} - }} -\def\@schapter#1{\if@twocolumn - \@topnewpage[\@makeschapterhead{#1}]% - \else - \@makeschapterhead{#1}% - \@afterheading - \fi} -\def\@makeschapterhead#1{% - \vspace*{50\p@}% - {\parindent \z@ \raggedright - \normalfont - \interlinepenalty\@M - \DOTIS{#1} - \vskip 40\p@ - }} - -\endinput - - diff --git a/sphinx/texinputs/python.sty b/sphinx/texinputs/python.sty index 7cf431705..e3ee51a2d 100644 --- a/sphinx/texinputs/python.sty +++ b/sphinx/texinputs/python.sty @@ -7,8 +7,9 @@ [1998/01/11 LaTeX package (Python markup)] \RequirePackage{longtable} -\RequirePackage{underscore} \RequirePackage{times} +\RequirePackage{fancyvrb} +\renewcommand{\sfdefault}{cmbr} % Uncomment these two lines to ignore the paper size and make the page % size more like a typical published manual. @@ -676,12 +677,14 @@ % classes ---------------------------------------------------------------- % \begin{classdesc}{name}{constructor args} +\newcommand{\classline}[2]{ + \py@sigline{\strong{class }\bfcode{#1}}{#2}% + \index{#1@{\py@idxcode{#1}} (class in \py@thismodule)}} \newenvironment{classdesc}[2]{ % Using \renewcommand doesn't work for this, for unknown reasons: \global\def\py@thisclass{#1} \begin{fulllineitems} - \py@sigline{\strong{class }\bfcode{#1}}{#2}% - \index{#1@{\py@idxcode{#1}} (class in \py@thismodule)} + \classline{#1}{#2} }{\end{fulllineitems}} % \begin{classdesc*}{name} @@ -800,6 +803,11 @@ \item[\bfcode{#1}\quad\var{#2}] }{\end{fulllineitems}} +% generic description ---------------------------------------------------- +\newenvironment{describe}[1]{ + \begin{fulllineitems} + \item[\bfcode{#1}]\nopagebreak +}{\end{fulllineitems}} \newcommand{\nodename}[1]{\label{#1}} @@ -990,7 +998,7 @@ \newlength{\py@noticelength} \newcommand{\py@heavybox}{ - \setlength{\fboxrule}{2pt} + \setlength{\fboxrule}{1pt} \setlength{\fboxsep}{7pt} \setlength{\py@noticelength}{\linewidth} \addtolength{\py@noticelength}{-2\fboxsep} @@ -1050,14 +1058,14 @@ \ifx\@undefined#1\relax% { New in version #2. }% \else% - { New in version #2:\ #1. }% + { New in version #2:\ #1 }% \fi% } \newcommand{\versionchanged}[2][\py@badkey]{% \ifx\@undefined#1\relax% { Changed in version #2. }% \else% - { Changed in version #2:\ #1. }% + { Changed in version #2:\ #1 }% \fi% } diff --git a/sphinx/texinputs/underscore.sty b/sphinx/texinputs/underscore.sty deleted file mode 100644 index a274b39e5..000000000 --- a/sphinx/texinputs/underscore.sty +++ /dev/null @@ -1,232 +0,0 @@ -% underscore.sty 12-Oct-2001 Donald Arseneau asnd@triumf.ca -% Make the "_" character print as "\textunderscore" in text. -% Copyright 1998,2001 Donald Arseneau; Distribute freely if unchanged. -% Instructions follow after the definitions. - -\ProvidesPackage{underscore}[2001/10/12] - -\begingroup - \catcode`\_=\active - \gdef_{% \relax % No relax gives a small vulnerability in alignments - \ifx\if@safe@actives\iftrue % must be outermost test! - \string_% - \else - \ifx\protect\@typeset@protect - \ifmmode \sb \else \BreakableUnderscore \fi - \else - \ifx\protect\@unexpandable@protect \noexpand_% - \else \protect_% - \fi\fi - \fi} -\endgroup - -% At begin: set catcode; fix \long \ttdefault so I can use it in comparisons; -\AtBeginDocument{% - {\immediate\write\@auxout{\catcode\number\string`\_ \string\active}}% - \catcode\string`\_\string=\active - \edef\ttdefault{\ttdefault}% -} - -\newcommand{\BreakableUnderscore}{\leavevmode\nobreak\hskip\z@skip - \ifx\f@family\ttdefault \string_\else \textunderscore\fi - \usc@dischyph\nobreak\hskip\z@skip} - -\DeclareRobustCommand{\_}{% - \ifmmode \nfss@text{\textunderscore}\else \BreakableUnderscore \fi} - -\let\usc@dischyph\@dischyph -\DeclareOption{nohyphen}{\def\usc@dischyph{\discretionary{}{}{}}} -\DeclareOption{strings}{\catcode`\_=\active} - -\ProcessOptions -\ifnum\catcode`\_=\active\else \endinput \fi - -%%%%%%%% Redefine commands that use character strings %%%%%%%% - -\@ifundefined{UnderscoreCommands}{\let\UnderscoreCommands\@empty}{} -\expandafter\def\expandafter\UnderscoreCommands\expandafter{% - \UnderscoreCommands - \do\include \do\includeonly - \do\@input \do\@iinput \do\InputIfFileExists - \do\ref \do\pageref \do\newlabel - \do\bibitem \do\@bibitem \do\cite \do\nocite \do\bibcite -} - -% Macro to redefine a macro to pre-process its string argument -% with \protect -> \string. -\def\do#1{% Avoid double processing if user includes command twice! - \@ifundefined{US\string_\expandafter\@gobble\string#1}{% - \edef\@tempb{\meaning#1}% Check if macro is just a protection shell... - \def\@tempc{\protect}% - \edef\@tempc{\meaning\@tempc\string#1\space\space}% - \ifx\@tempb\@tempc % just a shell: hook into the protected inner command - \expandafter\do - \csname \expandafter\@gobble\string#1 \expandafter\endcsname - \else % Check if macro takes an optional argument - \def\@tempc{\@ifnextchar[}% - \edef\@tempa{\def\noexpand\@tempa####1\meaning\@tempc}% - \@tempa##2##3\@tempa{##2\relax}% - \edef\@tempb{\meaning#1\meaning\@tempc}% - \edef\@tempc{\noexpand\@tempd \csname - US\string_\expandafter\@gobble\string#1\endcsname}% - \if \expandafter\@tempa\@tempb \relax 12\@tempa % then no optional arg - \@tempc #1\US@prot - \else % There is optional arg - \@tempc #1\US@protopt - \fi - \fi - }{}} - -\def\@tempd#1#2#3{\let#1#2\def#2{#3#1}} - -\def\US@prot#1#2{\let\@@protect\protect \let\protect\string - \edef\US@temp##1{##1{#2}}\restore@protect\US@temp#1} -\def\US@protopt#1{\@ifnextchar[{\US@protarg#1}{\US@prot#1}} -\def\US@protarg #1[#2]{\US@prot{{#1[#2]}}} - -\UnderscoreCommands -\let\do\relax \let\@tempd\relax % un-do - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\endinput - -underscore.sty 12-Oct-2001 Donald Arseneau - -Features: -~~~~~~~~~ -\_ prints an underscore so that the hyphenation of constituent words -is not affected and hyphenation is permitted after the underscore. -For example, "compound\_fracture" hyphenates as com- pound_- frac- ture. -If you prefer the underscore to break without a hyphen (but still with -the same rules for explicit hyphen-breaks) then use the [nohyphen] -package option. - -A simple _ acts just like \_ in text mode, but makes a subscript in -math mode: activation_energy $E_a$ - -Both forms use an underscore character if the font encoding contains -one (e.g., "\usepackage[T1]{fontenc}" or typewriter fonts in any encoding), -but they use a rule if the there is no proper character. - -Deficiencies: -~~~~~~~~~~~~~ -The skips and penalties ruin any kerning with the underscore character -(when a character is used). However, there doesn't seem to be much, if -any, such kerning in the ec fonts, and there is never any kerning with -a rule. - -You must avoid "_" in file names and in cite or ref tags, or you must use -the babel package, with its active-character controls, or you must give -the [strings] option, which attempts to redefine several commands (and -may not work perfectly). Even without the [strings] option or babel, you -can use occasional underscores like: "\include{file\string_name}". - -Option: [strings] -~~~~~~~~~~~~~~~~~ -The default operation is quite simple and needs no customization; but -you must avoid using "_" in any place where LaTeX uses an argument as -a string of characters for some control function or as a name. These -include the tags for \cite and \ref, file names for \input, \include, -and \includegraphics, environment names, counter names, and placement -parameters (like "[t]"). The problem with these contexts is that they -are `moving arguments' but LaTeX does not `switch on' the \protect -mechanism for them. - -If you need to use the underscore character in these places, the package -option [strings] is provided to redefine commands taking a string argument -so that the argument is protected (with \protect -> \string). The list -of commands is given in "\UnderscoreCommands", with "\do" before each, -covering \cite, \ref, \input, and their variants. Not included are many -commands regarding font names, everything with counter names, environment -names, page styles, and versions of \ref and \cite defined by external -packages (e.g. \vref and \citeyear). - -You can add to the list of supported commands by defining \UnderscoreCommands -before loading this package; e.g. - - \usepackage{chicago} - \newcommand{\UnderscoreCommands}{% (\cite already done) - \do\citeNP \do\citeA \do\citeANP \do\citeN \do\shortcite - \do\shortciteNP \do\shortciteA \do\shortciteANP \do\shortciteN - \do\citeyear \do\citeyearNP - } - \usepackage[strings]{underscore} - -Not all commands can be supported this way! Only commands that take a -string argument *first* can be protected. One optional argument before -the string argument is also permitted, as exemplified by \cite: both -\cite{tags} and \cite[text]{tags} are allowed. A command like -\@addtoreset which takes two counter names as arguments could not -be protected by adding it to \UnderscoreCommands. - -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! When you use the [strings] option, you must load this package !! -!! last (or nearly last). !! -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -There are two reasons: 1) The redefinitions done for protection must come -after other packages define their customized versions of those commands. -2) The [strings] option requires the _ character to be activated immediately -in order for the cite and ref tags to be read properly from the .aux file -as plain strings, and this catcode setting might disrupt other packages. - -The babel package implements a protection mechanism for many commands, -and will be a complete fix for most documents without the [strings] option. -Many add-on packages are compatible with babel, so they will get the -strings protection also. However, there are several commands that are -not covered by babel, but can easily be supported by the [strings] and -\UnderscoreCommands mechanism. Beware that using both [strings] and babel -may lead to conflicts, but does appear to work (load babel last). - -Implementation Notes: -~~~~~~~~~~~~~~~~~~~~~ -The first setting of "_" to be an active character is performed in a local -group so as to not interfere with other packages. The catcode setting -is repeated with \AtBeginDocument so the definition is in effect for the -text. However, the catcode setting is repeated immediately when the -[strings] option is detected. - -The definition of the active "_" is essentially: - \ifmmode \sb \else \BreakableUnderscore \fi -where "\sb" retains the normal subscript meaning of "_" and where -"\BreakableUnderscore" is essentially "\_". The rest of the definition -handles the "\protect"ion without causing \relax to be inserted before -the character. - -\BreakableUnderscore uses "\nobreak\hskip\z@skip" to separate the -underscore from surrounding words, thus allowing TeX to hyphenate them, -but preventing free breaks around the underscore. Next, it checks the -current font family, and uses the underscore character from tt fonts or -otherwise \textunderscore (which is a character or rule depending on -the font encoding). After the underscore, it inserts a discretionary -hyphenation point as "\usc@dischyph", which is usually just "\-" -except that it still works in the tabbing environment, although it -will give "\discretionary{}{}{}" under the [nohyphen] option. After -that, another piece of non-breaking interword glue is inserted. -Ordinarily, the comparison "\ifx\f@family\ttdefault" will always fail -because \ttdefault is `long' where \f@family is not (boooo hisss), but -\ttdefault is redefined to be non-long by "\AtBeginDocument". - -The "\_" command is then defined to use "\BreakableUnderscore". - -If the [strings] option is not given, then that is all! - -Under the [strings] option, the list of special commands is processed to: -- retain the original command as \US_command (\US_ref) -- redefine the command as \US@prot\US_command for ordinary commands - (\ref -> \US@prot\US_ref) or as \US@protopt\US_command when an optional - argument is possible (\bibitem -> \US@protopt\US_bibitem). -- self-protecting commands (\cite) retain their self-protection. -Diagnosing the state of the pre-existing command is done by painful -contortions involving \meaning. - -\US@prot and \US@protopt read the argument, process it with \protect -enabled, then invoke the saved \US_command. - -Modifications: -~~~~~~~~~~~~~~ -12-Oct-2001 Babel (safe@actives) compatibility and [nohyphen] option. - -Test file integrity: ASCII 32-57, 58-126: !"#$%&'()*+,-./0123456789 -:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~