def _finalize(doc): # Add header-includes if necessary if "header-includes" not in doc.metadata: doc.metadata["header-includes"] = MetaList() # Convert header-includes to MetaList if necessary elif not isinstance(doc.metadata["header-includes"], MetaList): doc.metadata["header-includes"] = MetaList( doc.metadata["header-includes"]) doc.metadata["header-includes"].append( MetaInlines(RawInline("\\usepackage{graphicx,grffile}", "tex"))) doc.metadata["header-includes"].append( MetaInlines(RawInline("\\usepackage{marginnote}", "tex"))) doc.metadata["header-includes"].append( MetaInlines(RawInline("\\usepackage{etoolbox}", "tex"))) doc.metadata["header-includes"].append( MetaInlines( RawInline("\\usepackage{changepage}\n\\strictpagecheck", "tex"))) doc.metadata["header-includes"].append( MetaInlines( RawInline( r""" \makeatletter% \@ifpackagelater{marginnote}{2018/04/12}% {% \newcommand{\oddinnertip}{\reversemarginpar}% \newcommand{\eveninnertip}{\reversemarginpar}% \newcommand{\oddoutertip}{\normalmarginpar}% \newcommand{\evenoutertip}{\normalmarginpar}% \newcommand{\oddlefttip}{\reversemarginpar}% \newcommand{\evenlefttip}{\normalmarginpar}% \newcommand{\oddrighttip}{\normalmarginpar}% \newcommand{\evenrighttip}{\reversemarginpar}% }% {% \if@twoside% \newcommand{\oddinnertip}{\reversemarginpar}% \newcommand{\eveninnertip}{\reversemarginpar}% \newcommand{\oddoutertip}{\normalmarginpar}% \newcommand{\evenoutertip}{\normalmarginpar}% \newcommand{\oddlefttip}{\reversemarginpar}% \newcommand{\evenlefttip}{\normalmarginpar}% \newcommand{\oddrighttip}{\reversemarginpar}% \newcommand{\evenrighttip}{\normalmarginpar}% \else% \newcommand{\oddinnertip}{\reversemarginpar}% \newcommand{\eveninnertip}{\reversemarginpar}% \newcommand{\oddoutertip}{\normalmarginpar}% \newcommand{\evenoutertip}{\normalmarginpar}% \newcommand{\oddlefttip}{\reversemarginpar}% \newcommand{\evenlefttip}{\reversemarginpar}% \newcommand{\oddrighttip}{\normalmarginpar}% \newcommand{\evenrighttip}{\normalmarginpar}% \fi% }% \makeatother% """, "tex", )))
def finalize(doc): """ Finalize the pandoc document Arguments --------- doc: The pandoc document """ # load footnote or footnotehyper package if doc.format == "latex": doc.metadata["tables"] = MetaBool(True) # Add header-includes if necessary if "header-includes" not in doc.metadata: doc.metadata["header-includes"] = MetaList() # Convert header-includes to MetaList if necessary elif not isinstance(doc.metadata["header-includes"], MetaList): doc.metadata["header-includes"] = MetaList( doc.metadata["header-includes"]) # Add usefull LaTexPackage doc.metadata["header-includes"].append( MetaInlines(RawInline("\\usepackage{xcolor}", "tex"))) # Define x11 colors tex = [] for name, color in doc.x11colors.items(): tex.append("\\definecolor{" + name.lower() + "}{HTML}{" + color + "}") doc.metadata["header-includes"].append( MetaInlines(RawInline("\n".join(tex), "tex"))) doc.metadata["header-includes"].append( MetaInlines(RawInline("\\usepackage[most]{tcolorbox}", "tex"))) doc.metadata["header-includes"].append( MetaInlines( RawInline( r""" \usepackage{ifthen} \provideboolean{admonitiontwoside} \makeatletter% \if@twoside% \setboolean{admonitiontwoside}{true} \else% \setboolean{admonitiontwoside}{false} \fi% \makeatother% """, "tex", ))) # Define specific environments for environment in doc.defined + doc.added: doc.metadata["header-includes"].append( MetaInlines(RawInline(new_environment(doc, environment), "tex")))
def prepare(doc: Doc) -> Doc: from datetime import date from itertools import islice, chain, repeat def intersperse(delimiter, seq): return islice(chain.from_iterable(zip(repeat(delimiter), seq)), 1, None) annotate.prepare(doc) if "footer" in doc.metadata: content = [[Str(str(date.today()))]] try: old_footer = list(doc.metadata["footer"].content) except AttributeError: old_footer = [Str("")] try: version = doc.metadata["version"].content[0] content.append([Str("version:"), Space, version]) except (AttributeError, KeyError): pass try: license = doc.metadata["license"].content[0] content.append([Str("license:"), Space, license]) except (AttributeError, KeyError): pass content = sum(intersperse([Space, Str("—"), Space], content), []) doc.metadata["footer"] = MetaInlines(*old_footer, LineBreak, *content)
def finalize(doc): # Add header-includes if necessary if "header-includes" not in doc.metadata: doc.metadata["header-includes"] = MetaList() # Convert header-includes to MetaList if necessary elif not isinstance(doc.metadata["header-includes"], MetaList): doc.metadata["header-includes"] = MetaList( doc.metadata["header-includes"] ) # noqa: E501 # Add usefull LaTex definition doc.metadata["header-includes"].append( MetaInlines( RawInline( "\n".join( [ "\\def\\pandocchangemargin#1#2{\\list{}{\\rightmargin#2\\leftmargin#1}\\item[]}", # noqa: E501 "\\let\\endpandocchangemargin=\\endlist", "", ] ), "tex", ) ) )
def finalize(doc): # Add header-includes if necessary if 'header-includes' not in doc.metadata: doc.metadata['header-includes'] = MetaList() # Convert header-includes to MetaList if necessary elif not isinstance(doc.metadata['header-includes'], MetaList): doc.metadata['header-includes'] = MetaList(doc.metadata['header-includes']) # Add usefull LaTexPackage doc.metadata['header-includes'].append(MetaInlines(RawInline('\\usepackage{xcolor}', 'tex')))
def finalize(doc): """ Finalize the pandoc document Arguments --------- doc: The pandoc document """ # Add header-includes if necessary if "header-includes" not in doc.metadata: doc.metadata["header-includes"] = MetaList() # Convert header-includes to MetaList if necessary elif not isinstance(doc.metadata["header-includes"], MetaList): doc.metadata["header-includes"] = MetaList( doc.metadata["header-includes"]) # Add usefull LaTexPackage doc.metadata["header-includes"].append( MetaInlines(RawInline("\\usepackage{tikz}", "tex"))) doc.metadata["header-includes"].append( MetaInlines( RawInline("\\tikzstyle{every picture}+=[remember picture]", "tex"))) doc.metadata["header-includes"].append( MetaInlines(RawInline("\\usetikzlibrary{positioning}", "tex"))) doc.metadata["header-includes"].append( MetaInlines( RawInline( "\\tikzset{onslide/.code args={<#1>#2}{\\only<#1>{\\pgfkeysalso{#2}}}}", "tex", ))) # Define x11 colors tex = [] for name, color in doc.x11colors.items(): tex.append("\\definecolor{" + name.lower() + "}{HTML}{" + color + "}") doc.metadata["header-includes"].append( MetaInlines(RawInline("\n".join(tex), "tex")))
def finalize(doc): # Add header-includes if necessary if 'header-includes' not in doc.metadata: doc.metadata['header-includes'] = MetaList() # Convert header-includes to MetaList if necessary elif not isinstance(doc.metadata['header-includes'], MetaList): doc.metadata['header-includes'] = MetaList( doc.metadata['header-includes'] ) # Add usefull LaTexPackage doc.metadata['header-includes'].append(MetaInlines(RawInline( '\\usepackage{xcolor}', 'tex' ))) doc.metadata['header-includes'].append(MetaInlines(RawInline( '\\usepackage{soulutf8,color}', 'tex' ))) doc.metadata['header-includes'].append(MetaInlines(RawInline( '\\soulregister\\cite7', 'tex' ))) doc.metadata['header-includes'].append(MetaInlines(RawInline( '\\soulregister\\ref7', 'tex' ))) doc.metadata['header-includes'].append(MetaInlines(RawInline( '\\soulregister\\pageref7', 'tex' ))) for color, value in x11colors().items(): doc.metadata['header-includes'].append(MetaInlines(RawInline( '\\definecolor{' + color + '}{HTML}{' + value + '}', 'tex' ))) if doc.format == 'beamer': special_beamer = [ '\\makeatletter', '\\let\\HL\\hl', '\\renewcommand\\hl{%', '\\let\\set@color\\beamerorig@set@color', '\\let\\reset@color\\beamerorig@reset@color', '\\HL}', '\\makeatother' ] for line in special_beamer: doc.metadata['header-includes'].append(MetaInlines(RawInline( line, 'tex' )))
def finalize(doc): """ Finalize the document Arguments --------- doc: The pandoc document """ # Add header-includes if necessary if "header-includes" not in doc.metadata: doc.metadata["header-includes"] = MetaList() # Convert header-includes to MetaList if necessary elif not isinstance(doc.metadata["header-includes"], MetaList): doc.metadata["header-includes"] = MetaList( doc.metadata["header-includes"]) doc.metadata["header-includes"].append( MetaInlines(RawInline("\\usepackage{xmpmulti}", "tex")))
def finalize(doc): """ Finalize document. Arguments --------- doc: pandoc document """ # Loop on all listings definition if doc.format == "latex": # Add header-includes if necessary if "header-includes" not in doc.metadata: doc.metadata["header-includes"] = MetaList() # Convert header-includes to MetaList if necessary elif not isinstance(doc.metadata["header-includes"], MetaList): doc.metadata["header-includes"] = MetaList( doc.metadata["header-includes"]) doc.metadata["header-includes"].append( MetaInlines(RawInline(r"\usepackage{tocloft}", "tex"))) i = 0 listof = [] for category, definition in doc.defined.items(): if definition["listing-title"] is not None: if doc.format == "latex": latex_category = re.sub("[^a-z]+", "", category) latex = (r"\newlistof{%s}{%s}{%s}" r"\renewcommand{\cft%stitlefont}{\cfttoctitlefont}" % ( latex_category, latex_category, convert_text( Plain(*definition["listing-title"]), input_format="panflute", output_format="latex", ), latex_category, )) doc.metadata["header-includes"].append( MetaInlines(RawInline(latex, "tex"))) listof.append(r"\listof%s" % latex_category) else: classes = ["pandoc-numbering-listing"] + definition["classes"] if definition["listing-unnumbered"]: classes.append("unnumbered") if definition["listing-unlisted"]: classes.append("unlisted") if definition["listing-identifier"] is False: header = Header(*definition["listing-title"], level=1, classes=classes) elif definition["listing-identifier"] is True: header = Header(*definition["listing-title"], level=1, classes=classes) header = convert_text( convert_text(header, input_format="panflute", output_format="markdown"), output_format="panflute", )[0] else: header = Header( *definition["listing-title"], level=1, classes=classes, identifier=definition["listing-identifier"]) doc.content.insert(i, header) i = i + 1 table = table_other(doc, category, definition) if table: doc.content.insert(i, table) i = i + 1 if doc.format == "latex": header = ( r"\ifdef{\mainmatter}" r"{\let\oldmainmatter\mainmatter\renewcommand{\mainmatter}[0]{%s\oldmainmatter}}" r"{}") doc.metadata["header-includes"].append( MetaInlines(RawInline(header % "\n".join(listof), "tex"))) latex = r"\ifdef{\mainmatter}{}{%s}" doc.content.insert(0, RawBlock(latex % "\n".join(listof), "tex"))