コード例 #1
0
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",
            )))
コード例 #2
0
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")))
コード例 #3
0
ファイル: bootstrap.py プロジェクト: entangled/filters
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)
コード例 #4
0
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",
            )
        )
    )
コード例 #5
0
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')))
コード例 #6
0
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")))
コード例 #7
0
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'
            )))
コード例 #8
0
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")))
コード例 #9
0
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"))