예제 #1
0
 def write_stylesheet(self) -> None:
     highlighter = highlighting.PygmentsBridge('latex', self.config.pygments_style)
     stylesheet = path.join(self.outdir, 'sphinxhighlight.sty')
     with open(stylesheet, 'w') as f:
         f.write('\\NeedsTeXFormat{LaTeX2e}[1995/12/01]\n')
         f.write('\\ProvidesPackage{sphinxhighlight}'
                 '[2016/05/29 stylesheet for highlighting with pygments]\n\n')
         f.write(highlighter.get_stylesheet())
예제 #2
0
파일: __init__.py 프로젝트: jfbu/sphinx
 def write_stylesheet(self) -> None:
     highlighter = highlighting.PygmentsBridge('latex', self.config.pygments_style)
     stylesheet = path.join(self.outdir, 'sphinxhighlight.sty')
     with open(stylesheet, 'w', encoding="utf-8") as f:
         f.write('\\NeedsTeXFormat{LaTeX2e}[1995/12/01]\n')
         f.write('\\ProvidesPackage{sphinxhighlight}'
                 '[2022/06/30 stylesheet for highlighting with pygments]\n')
         f.write('% Its contents depend on pygments_style configuration variable.\n\n')
         f.write(highlighter.get_stylesheet())
예제 #3
0
 def __init__(self, document, builder):
     nodes.NodeVisitor.__init__(self, document)
     self.builder = builder
     self.body = []
     docclass = document.settings.docclass
     paper = builder.config.latex_paper_size + 'paper'
     if paper == 'paper':  # e.g. command line "-D latex_paper_size="
         paper = 'letterpaper'
     date = time.strftime(builder.config.today_fmt)
     logo = (builder.config.latex_logo and '\\includegraphics{%s}\\par' %
             path.basename(builder.config.latex_logo) or '')
     self.options = {
         'docclass': docclass,
         'papersize': paper,
         'pointsize': builder.config.latex_font_size,
         'preamble': builder.config.latex_preamble,
         'modindex': builder.config.latex_use_modindex,
         'author': document.settings.author,
         'docname': document.settings.docname,
         # if empty, the title is set to the first section title
         'title': document.settings.title,
         'release': builder.config.release,
         'logo': logo,
         'date': date,
     }
     self.highlighter = highlighting.PygmentsBridge(
         'latex', builder.config.pygments_style)
     self.context = []
     self.descstack = []
     self.bibitems = []
     self.table = None
     self.next_table_colspec = None
     self.highlightlang = 'python'
     self.highlightlinenothreshold = sys.maxint
     self.written_ids = set()
     if docclass == 'manual':
         if builder.config.latex_use_parts:
             self.top_sectionlevel = 0
         else:
             self.top_sectionlevel = 1
     else:
         self.top_sectionlevel = 2
     self.next_section_target = None
     # flags
     self.verbatim = None
     self.in_title = 0
     self.in_production_list = 0
     self.first_document = 1
     self.this_is_the_title = 1
     self.literal_whitespace = 0
     self.need_graphicx = 0
예제 #4
0
    def __init__(self, document, builder):
        nodes.NodeVisitor.__init__(self, document)
        self.builder = builder
        self.body = []

        # sort out some elements
        papersize = builder.config.latex_paper_size + 'paper'
        if papersize == 'paper':  # e.g. command line "-D latex_paper_size="
            papersize = 'letterpaper'

        self.elements = self.default_elements.copy()
        self.elements.update({
            'docclass':
            document.settings.docclass,
            'papersize':
            papersize,
            'pointsize':
            builder.config.latex_font_size,
            # if empty, the title is set to the first section title
            'title':
            document.settings.title,
            'date':
            strftime(builder.config.today_fmt or _('%B %d, %Y')),
            'release':
            builder.config.release,
            'author':
            document.settings.author,
            'releasename':
            _('Release'),
            'preamble':
            builder.config.latex_preamble,
            'modindexname':
            _('Module Index'),
            'indexname':
            _('Index'),
        })
        if builder.config.latex_logo:
            self.elements['logo'] = '\\includegraphics{%s}\\par' % \
                                    path.basename(builder.config.latex_logo)
        if builder.config.language:
            babel = ExtBabel(builder.config.language)
            self.elements['classoptions'] += ',' + babel.get_language()
            self.elements['shorthandoff'] = babel.get_shorthandoff()
            self.elements['fncychap'] = '\\usepackage[Sonny]{fncychap}'
        else:
            self.elements['classoptions'] += ',english'
        if not builder.config.latex_use_modindex:
            self.elements['makemodindex'] = ''
            self.elements['printmodindex'] = ''
        # allow the user to override them all
        self.elements.update(builder.config.latex_elements)

        self.highlighter = highlighting.PygmentsBridge(
            'latex', builder.config.pygments_style)
        self.context = []
        self.descstack = []
        self.bibitems = []
        self.table = None
        self.next_table_colspec = None
        self.highlightlang = builder.config.highlight_language
        self.highlightlinenothreshold = sys.maxint
        self.written_ids = set()
        self.footnotestack = []
        if self.elements['docclass'] == 'manual':
            if builder.config.latex_use_parts:
                self.top_sectionlevel = 0
            else:
                self.top_sectionlevel = 1
        else:
            self.top_sectionlevel = 2
        self.next_section_target = None
        # flags
        self.verbatim = None
        self.in_title = 0
        self.in_production_list = 0
        self.first_document = 1
        self.this_is_the_title = 1
        self.literal_whitespace = 0
예제 #5
0
    def __init__(self, document, builder):

        # super(type(self), self).__init__(document, builder)
        nodes.NodeVisitor.__init__(self, document)
        self.builder = builder
        self.body = []
        self.sectionnames = builder.app.config.clatex_sectionnames
        self.elements = self.default_elements.copy()
        if type(builder.config.clatex_makeidx) == bool:
            if builder.config.clatex_makeidx:
                makeidx = '\\usepackage{makeidx}\n\\makeindex'
            else:
                makeidx = ''
        else:
            makeidx = builder.config.clatex_makeidx
        self.elements.update({
            'author': document.settings.author,
            'title': document.settings.title,
            'documentclass': builder.config.clatex_documentclass,
            'preamble': builder.config.clatex_preamble,
            'begin_doc': builder.config.clatex_begin_doc,
            'end_doc': builder.config.clatex_end_doc,
            'hyperref_args': builder.config.clatex_hyperref_args,
            'makeidx': makeidx,
        })
        self.highlighter = highlighting.PygmentsBridge(
            'latex', builder.config.pygments_style,
            builder.config.trim_doctest_flags)
        self.context = []
        self.descstack = []
        self.bibitems = []
        self.table = None
        self.next_table_colspec = None
        # stack of [language, linenothreshold] settings per file
        # the first item here is the default and must not be changed
        # the second item is the default for the master file and can be changed
        # by .. highlight:: directive in the master file
        self.hlsettingstack = 2 * [[
            builder.config.highlight_language, sys.maxint
        ]]
        self.footnotestack = []
        self.curfilestack = []
        self.handled_abbrs = set()
        if builder.config.latex_use_parts:
            self.top_sectionlevel = 0
        else:
            if builder.config.clatex_use_chapters:
                self.top_sectionlevel = 1
            else:
                self.top_sectionlevel = 2
        self.next_section_ids = set()
        self.next_figure_ids = set()
        self.next_table_ids = set()
        # flags
        self.verbatim = None
        self.in_title = 0
        self.in_production_list = 0
        self.in_footnote = 0
        self.in_caption = 0
        self.first_document = 1
        self.this_is_the_title = 1
        self.literal_whitespace = 0
        self.no_contractions = 0
        self.compact_list = 0
        self.first_param = 0
        self.previous_spanning_row = 0
        self.previous_spanning_column = 0
        self.remember_multirow = {}
        self.remember_multirowcol = {}
        self.footnote_restricted = 0
        self.next_hyperlink_ids = {}
        self.in_container_literal_block = 0
        self.in_minipage = 0
예제 #6
0
    def __init__(self, document, builder):
        Translator.__init__(self, document)
        docCfg = self.document.docCfg

        self.builder = builder
        self.settings = document.settings
        self.d_class = DocumentClass(docCfg)
        self.polyglossia = Polyglossia(self.settings.language_code)
        self.requirements = Requirements()

        # elements
        # --------

        self.elements = self.default_ctx.copy()
        self.elements.update(docCfg)
        self.elements.documentoptions = self.d_class.documentoptions
        self.elements.documentclass = self.d_class.documentclass
        self.elements.language = self.polyglossia.language

        # common flags & stacks
        # ---------------------

        self.out = []
        self.bibitems = []
        self.in_title = False
        self.in_minipage = False

        self.body = []
        self.table = None
        self.next_table_colspec = None

        self.curfilestack = []

        self.first_document = 1
        self.first_param = 0
        self.this_is_the_title = 1
        # self.next_hyperlink_ids = {}

        # PDF properties (hyperref package)
        # ---------------------------------

        self.pdfsetup = []
        self.pdfinfo = []  # PDF properties: pdftitle, pdfauthor
        self.pdfauthor = []

        # footnotes
        # ---------

        self.in_footnote = 0
        self.footnotestack = []
        self.footnote_restricted = False
        self.pending_footnotes = []

        # sectioning
        # ----------

        self.next_section_ids = set()
        self.next_figure_ids = set()
        self.next_table_ids = set()

        if docCfg.get('tocdepth'):
            self.elements['tocdepth'] = (r'\setcounter{tocdepth}{%d}' %
                                         docCfg.get('tocdepth'))

        # code highlighter
        # ----------------

        # XeLaTeX makes no use of the sphinx.util.texescape, but the
        # sphinx.highlighting.PygmentsBridge uses the *tex_hl_escape_map_new*
        # which has to be initialized.
        from sphinx.util import texescape
        texescape.init()

        self.highlighter = highlighting.PygmentsBridge(
            'latex',
            self.builder.config.pygments_style
            or 'tango'  # prefer tango as default
            ,
            self.builder.config.trim_doctest_flags)
        # stack of [language, linenothreshold] settings per file the first item
        # here is the default and must not be changed the second item is the
        # default for the master file and can be changed by .. highlight::
        # directive in the master file

        self.hlsettingstack = 2 * [[
            self.builder.config.highlight_language, sys.maxsize
        ]]