⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 __init__.py

📁 Requirement =====================================================================================
💻 PY
📖 第 1 页 / 共 5 页
字号:
    def visit_compound(self, node):        pass    def depart_compound(self, node):        pass    def visit_contact(self, node):        self.visit_docinfo_item(node, 'contact')    def depart_contact(self, node):        self.depart_docinfo_item(node)    def visit_container(self, node):        pass    def depart_container(self, node):        pass    def visit_copyright(self, node):        self.visit_docinfo_item(node, 'copyright')    def depart_copyright(self, node):        self.depart_docinfo_item(node)    def visit_danger(self, node):        self.visit_admonition(node, 'danger')    def depart_danger(self, node):        self.depart_admonition()    def visit_date(self, node):        self.visit_docinfo_item(node, 'date')    def depart_date(self, node):        self.depart_docinfo_item(node)    def visit_decoration(self, node):        pass    def depart_decoration(self, node):        pass    def visit_definition(self, node):        self.body.append('%[visit_definition]\n')    def depart_definition(self, node):        self.body.append('\n')        self.body.append('%[depart_definition]\n')    def visit_definition_list(self, node):        self.body.append( '\\begin{description}\n' )    def depart_definition_list(self, node):        self.body.append( '\\end{description}\n' )    def visit_definition_list_item(self, node):        self.body.append('%[visit_definition_list_item]\n')    def depart_definition_list_item(self, node):        self.body.append('%[depart_definition_list_item]\n')    def visit_description(self, node):        if self.use_optionlist_for_option_list:            self.body.append( ' ' )        else:            self.body.append( ' & ' )    def depart_description(self, node):        pass    def visit_docinfo(self, node):        self.docinfo = []        self.docinfo.append('%' + '_'*75 + '\n')        self.docinfo.append('\\begin{center}\n')        self.docinfo.append('\\begin{tabularx}{\\docinfowidth}{lX}\n')    def depart_docinfo(self, node):        self.docinfo.append('\\end{tabularx}\n')        self.docinfo.append('\\end{center}\n')        self.body = self.docinfo + self.body        # clear docinfo, so field names are no longer appended.        self.docinfo = None    def visit_docinfo_item(self, node, name):        if name == 'author':            if not self.pdfinfo == None:                if not self.pdfauthor:                    self.pdfauthor = self.attval(node.astext())                else:                    self.pdfauthor += self.author_separator + self.attval(node.astext())        if self.use_latex_docinfo:            if name in ('author', 'organization', 'contact', 'address'):                # We attach these to the last author.  If any of them precedes                # the first author, put them in a separate "author" group (for                # no better semantics).                if name == 'author' or not self.author_stack:                    self.author_stack.append([])                if name == 'address':   # newlines are meaningful                    self.insert_newline = 1                    text = self.encode(node.astext())                    self.insert_newline = 0                else:                    text = self.attval(node.astext())                self.author_stack[-1].append(text)                raise nodes.SkipNode            elif name == 'date':                self.date = self.attval(node.astext())                raise nodes.SkipNode        self.docinfo.append('\\textbf{%s}: &\n\t' % self.language_label(name))        if name == 'address':            self.insert_newline = 1            self.docinfo.append('{\\raggedright\n')            self.context.append(' } \\\\\n')        else:            self.context.append(' \\\\\n')        self.context.append(self.docinfo)        self.context.append(len(self.body))    def depart_docinfo_item(self, node):        size = self.context.pop()        dest = self.context.pop()        tail = self.context.pop()        tail = self.body[size:] + [tail]        del self.body[size:]        dest.extend(tail)        # for address we did set insert_newline        self.insert_newline = 0    def visit_doctest_block(self, node):        self.body.append( '\\begin{verbatim}' )        self.verbatim = 1    def depart_doctest_block(self, node):        self.body.append( '\\end{verbatim}\n' )        self.verbatim = 0    def visit_document(self, node):        self.body_prefix.append('\\begin{document}\n')        # titled document?        if self.use_latex_docinfo or len(node) and isinstance(node[0], nodes.title):            self.body_prefix.append('\\maketitle\n\n')            # alternative use titlepage environment.            # \begin{titlepage}        self.body.append('\n\\setlength{\\locallinewidth}{\\linewidth}\n')    def depart_document(self, node):        # TODO insertion point of bibliography should none automatic.        if self._use_latex_citations and len(self._bibitems)>0:            widest_label = ""            for bi in self._bibitems:                if len(widest_label)<len(bi[0]):                    widest_label = bi[0]            self.body.append('\n\\begin{thebibliography}{%s}\n'%widest_label)            for bi in self._bibitems:                # cite_key: underscores must not be escaped                cite_key = bi[0].replace(r"{\_}","_")                self.body.append('\\bibitem[%s]{%s}{%s}\n' % (bi[0], cite_key, bi[1]))            self.body.append('\\end{thebibliography}\n')        self.body_suffix.append('\\end{document}\n')    def visit_emphasis(self, node):        self.body.append('\\emph{')        self.literal_block_stack.append('\\emph{')    def depart_emphasis(self, node):        self.body.append('}')        self.literal_block_stack.pop()    def visit_entry(self, node):        self.active_table.visit_entry()        # cell separation        if self.active_table.get_entry_number() == 1:            # if the firstrow is a multirow, this actually is the second row.            # this gets hairy if rowspans follow each other.            if self.active_table.get_rowspan(0):                count = 0                while self.active_table.get_rowspan(count):                    count += 1                    self.body.append(' & ')                self.active_table.visit_entry() # increment cell count        else:            self.body.append(' & ')        # multi{row,column}        # IN WORK BUG TODO HACK continues here        # multirow in LaTeX simply will enlarge the cell over several rows        # (the following n if n is positive, the former if negative).        if node.has_key('morerows') and node.has_key('morecols'):            raise NotImplementedError('Cells that '            'span multiple rows *and* columns are not supported, sorry.')        if node.has_key('morerows'):            count = node['morerows'] + 1            self.active_table.set_rowspan(self.active_table.get_entry_number()-1,count)            self.body.append('\\multirow{%d}{%s}{' % \                    (count,self.active_table.get_column_width()))            self.context.append('}')            # BUG following rows must have empty cells.        elif node.has_key('morecols'):            # the vertical bar before column is missing if it is the first column.            # the one after always.            if self.active_table.get_entry_number() == 1:                bar1 = self.active_table.get_vertical_bar()            else:                bar1 = ''            count = node['morecols'] + 1            self.body.append('\\multicolumn{%d}{%sl%s}{' % \                    (count, bar1, self.active_table.get_vertical_bar()))            self.context.append('}')        else:            self.context.append('')        # header / not header        if isinstance(node.parent.parent, nodes.thead):            self.body.append('\\textbf{')            self.context.append('}')        else:            self.context.append('')    def depart_entry(self, node):        self.body.append(self.context.pop()) # header / not header        self.body.append(self.context.pop()) # multirow/column        # if following row is spanned from above.        if self.active_table.get_rowspan(self.active_table.get_entry_number()):           self.body.append(' & ')           self.active_table.visit_entry() # increment cell count    def visit_row(self, node):        self.active_table.visit_row()    def depart_row(self, node):        self.body.extend(self.active_table.depart_row())    def visit_enumerated_list(self, node):        # We create our own enumeration list environment.        # This allows to set the style and starting value        # and unlimited nesting.        self._enum_cnt += 1        enum_style = {'arabic':'arabic',                'loweralpha':'alph',                'upperalpha':'Alph',                'lowerroman':'roman',                'upperroman':'Roman' }        enum_suffix = ""        if node.has_key('suffix'):            enum_suffix = node['suffix']        enum_prefix = ""        if node.has_key('prefix'):            enum_prefix = node['prefix']        if self.compound_enumerators:            pref = ""            if self.section_prefix_for_enumerators and self.section_level:                for i in range(self.section_level):                    pref += '%d.' % self._section_number[i]                pref = pref[:-1] + self.section_enumerator_separator                enum_prefix += pref            for counter in self._enumeration_counters:                enum_prefix += counter + '.'        enum_type = "arabic"        if node.has_key('enumtype'):            enum_type = node['enumtype']        if enum_style.has_key(enum_type):            enum_type = enum_style[enum_type]        counter_name = "listcnt%d" % self._enum_cnt;        self._enumeration_counters.append("\\%s{%s}" % (enum_type,counter_name))        self.body.append('\\newcounter{%s}\n' % counter_name)        self.body.append('\\begin{list}{%s\\%s{%s}%s}\n' % \            (enum_prefix,enum_type,counter_name,enum_suffix))        self.body.append('{\n')        self.body.append('\\usecounter{%s}\n' % counter_name)        # set start after usecounter, because it initializes to zero.        if node.has_key('start'):            self.body.append('\\addtocounter{%s}{%d}\n' \                    % (counter_name,node['start']-1))        ## set rightmargin equal to leftmargin        self.body.append('\\setlength{\\rightmargin}{\\leftmargin}\n')        self.body.append('}\n')    def depart_enumerated_list(self, node):        self.body.append('\\end{list}\n')        self._enumeration_counters.pop()    def visit_error(self, node):        self.visit_admonition(node, 'error')    def depart_error(self, node):        self.depart_admonition()    def visit_field(self, node):        # real output is done in siblings: _argument, _body, _name        pass    def depart_field(self, node):        self.body.append('\n')        ##self.body.append('%[depart_field]\n')    def visit_field_argument(self, node):        self.body.append('%[visit_field_argument]\n')    def depart_field_argument(self, node):        self.body.append('%[depart_field_argument]\n')    def visit_field_body(self, node):        # BUG by attach as text we loose references.        if self.docinfo:            self.docinfo.append('%s \\\\\n' % self.encode(node.astext()))            raise nodes.SkipNode        # BUG: what happens if not docinfo    def depart_field_body(self, node):        self.body.append( '\n' )    def visit_field_list(self, node):        if not self.docinfo:            self.body.append('\\begin{quote}\n')            self.body.append('\\begin{description}\n')    def depart_field_list(self, node):        if not self.docinfo:            self.body.append('\\end{description}\n')            self.body.append('\\end{quote}\n')    def visit_field_name(self, node):        # BUG this duplicates docinfo_item        if self.docinfo:            self.docinfo.append('\\textbf{%s}: &\n\t' % self.encode(node.astext()))            raise nodes.SkipNode        else:            self.body.append('\\item [')    def depart_field_name(self, node):        if not self.docinfo:            self.body.append(':]')    def visit_figure(self, node):        if not node.attributes.has_key('align'):            align = 'center'        else:            align = 'flush'+node.attributes['align']        self.body.append( '\\begin{figure}[htbp]\\begin{%s}\n' % align )        self.context.append( '\\end{%s}\\end{figure}\n' % align )    def depart_figure(self, node):        self.body.append( self.context.pop() )    def visit_footer(self, node):        self.context.append(len(self.body))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -