Source

shinypress / shinypress / pango.py

def replace_all(s, o, n):
    while o in s:
        s = s.replace(o, n)
    return s

def latexify(content):
    """
    Turn Pango markup into latex code.
    Warning: does not check validity of markup!
    Warning: this also allows LaTeX code straight through
        (this is an intentional bug?)
    """
    replacements = {
        '#': r'\#',

        '<sc>': r'\textsc{',
        '</sc>': '}',

        '<sup>': r'\textsuperscript{',
        '</sup>': '}',

        '<tt>': r'\texttt{',
        '</tt>': '}',

        '<i>': r'\emph{',
        '</i>': '}',

        '<u>': r'\uline{',
        '</u>': '}',

        '<b>': r'\textbf{',
        '</b>': '}',
    }

    # replace all line breaks with LaTeX line breaks
    content = content.replace('\n', r'\\')
    content = content.replace('<br>', r'\\')

    # replace paragraphs with LaTeX paragraph breaks
    content = content.replace(r'<p>', '\n\n')

    # remove line breaks next to paragraph breaks
    content = replace_all(content, r'\\''\n', '\n')
    content = replace_all(content, '\n'r'\\', '\n')

    # prettify line breaks
    content = content.replace(r'\\', r'\\''\n')

    for old, new in replacements.items():
        content = content.replace(old, new)

    return content
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.