From b83fb0dd87c2b37ab4cf55cad965d534ccf3d1f4 Mon Sep 17 00:00:00 2001 From: Jonathan Waltman Date: Thu, 3 Mar 2011 23:21:44 -0600 Subject: [PATCH] Add a standard @copying block in Texinfo. --- sphinx/writers/texinfo.py | 63 ++++++++++++++++++++++++++++----------- 1 file changed, 46 insertions(+), 17 deletions(-) diff --git a/sphinx/writers/texinfo.py b/sphinx/writers/texinfo.py index 24a57c6ca..ce868ca95 100644 --- a/sphinx/writers/texinfo.py +++ b/sphinx/writers/texinfo.py @@ -15,18 +15,29 @@ import textwrap from docutils import nodes, writers -from sphinx import addnodes +from sphinx import addnodes, __version__ from sphinx.locale import versionlabels, _ +from sphinx.util import ustrftime +COPYING = """\ +@quotation +%(project)s %(release)s, %(date)s + +%(author)s + +Copyright @copyright{} %(copyright)s +@end quotation +""" + TEMPLATE = """\ \\input texinfo @c -*-texinfo-*- @c %%**start of header @setfilename %(filename)s @documentencoding UTF-8 -@copying -Generated by Sphinx -@end copying +@ifinfo +@*Generated by Sphinx """ + __version__ + """.@* +@end ifinfo @settitle %(title)s @defindex ge @paragraphindent %(paragraphindent)s @@ -35,9 +46,13 @@ Generated by Sphinx %(direntry)s @c %%**end of header +@copying +%(copying)s +@end copying + @titlepage @title %(title)s -@author %(author)s +@insertcopying @end titlepage @contents @@ -48,6 +63,7 @@ Generated by Sphinx @ifnottex @node Top @top %(title)s +@insertcopying @end ifnottex @c %%**start of body @@ -160,13 +176,18 @@ class TexinfoTranslator(nodes.NodeVisitor): ignore_missing_images = False default_elements = { - 'filename': '', - 'title': '', - 'paragraphindent': 2, - 'exampleindent': 4, - 'direntry': '', - 'preamble': '', + 'author': '', 'body': '', + 'copying': '', + 'date': '', + 'direntry': '', + 'exampleindent': 4, + 'filename': '', + 'paragraphindent': 2, + 'preamble': '', + 'project': '', + 'release': '', + 'title': '', } def __init__(self, document, builder): @@ -224,9 +245,15 @@ class TexinfoTranslator(nodes.NodeVisitor): elements.update({ # if empty, the title is set to the first section title 'title': settings.title, - 'author': escape_arg(settings.author), + 'author': settings.author, # if empty, use basename of input file 'filename': settings.texinfo_filename, + 'release': escape(self.builder.config.release), + 'project': escape(self.builder.config.project), + 'copyright': escape(self.builder.config.copyright), + 'date': escape(self.builder.config.today or + ustrftime(self.builder.config.today_fmt + or _('%B %d, %Y'))) }) # Title title = elements['title'] @@ -242,14 +269,16 @@ class TexinfoTranslator(nodes.NodeVisitor): elements['filename'] += '.info' # Direntry if settings.texinfo_dir_entry: + entry = self.format_menu_entry( + escape_menu(settings.texinfo_dir_entry), + '(%s)' % elements['filename'], + escape_arg(settings.texinfo_dir_description)) elements['direntry'] = ('@dircategory %s\n' '@direntry\n' - '* %s: (%s). %s\n' + '%s' '@end direntry\n') % ( - escape_id(settings.texinfo_dir_category), - escape_id(settings.texinfo_dir_entry), - elements['filename'], - escape_arg(settings.texinfo_dir_description)) + escape_id(settings.texinfo_dir_category), entry) + elements['copying'] = COPYING % elements # allow the user to override them all elements.update(settings.texinfo_elements)