# shinypress / shinypress / pango_markup.py

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 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'\#', '_': r'\_', '': r'\textsc{', '': '}', '': r'\textsuperscript{', '': '}', '': r'\texttt{', '': '}', '': r'\emph{', '': '}', '': r'\uline{', '': '}', '': r'\textbf{', '': '}', } # replace all line breaks with LaTeX line breaks content = content.replace('\n', r'\\') content = content.replace('
', r'\\') # replace paragraphs with LaTeX paragraph breaks content = content.replace(r'

', '\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