57
|
1 #!/usr/bin/env python
|
|
2 # coding: utf-8
|
|
3
|
|
4 """
|
|
5 latex2creole
|
|
6 ~~~~~~~~~~~~
|
|
7
|
|
8 Hacked script to convert a LaTeX file into creole markup.
|
|
9
|
|
10 Note:
|
|
11 Some hand-editing is needed.
|
|
12
|
|
13 :created: 2013 by Jens Diemer - www.jensdiemer.de
|
|
14 :copyleft: 2013 by the DragonPy team, see AUTHORS for more details.
|
|
15 :license: GNU GPL v3 or above, see LICENSE for more details.
|
|
16 """
|
|
17
|
|
18 import sys
|
|
19
|
|
20 sourcefile = r"sbc09/sbc09.tex"
|
|
21 destination = r"sbc09.creole"
|
|
22
|
|
23
|
|
24 HEADLINES = (
|
|
25 r"\title{",
|
|
26 r"\chapter{",
|
|
27 r"\section{",
|
|
28 r"\subsection{",
|
|
29 )
|
|
30 SKIPS = (
|
|
31 r"\begin",
|
|
32 r"\end",
|
|
33 r"\document",
|
|
34 r"\maketitle",
|
|
35 r"\tableofcontents",
|
|
36 "\\def\\",
|
|
37 )
|
|
38
|
|
39 in_list = 0
|
|
40
|
|
41 def should_skip(line):
|
|
42 for skip in SKIPS:
|
|
43 if line.startswith(skip):
|
|
44 return True
|
|
45
|
|
46
|
|
47 with open(sourcefile, "r") as infile:
|
|
48 with open(destination, "w") as outfile:
|
|
49 for line in infile:
|
|
50 # ~ print line
|
|
51
|
|
52 line = line.strip()
|
|
53
|
|
54 if line.startswith(r"\begin{itemize}"):
|
|
55 in_list += 1
|
|
56 continue
|
|
57 if line.startswith(r"\end{itemize}"):
|
|
58 in_list -= 1
|
|
59 if in_list == 0:
|
|
60 outfile.write("\n")
|
|
61 continue
|
|
62
|
|
63 if in_list:
|
|
64 if line.startswith(r"\item"):
|
|
65 line = "\n%s%s" % ("*"*in_list, line[5:])
|
|
66 outfile.write(line)
|
|
67 continue
|
|
68
|
|
69 if line == r"\begin{verbatim}":
|
|
70 line = "{{{"
|
|
71 elif line == r"\end{verbatim}":
|
|
72 line = "}}}"
|
|
73
|
|
74 if should_skip(line):
|
|
75 continue
|
|
76
|
|
77 for no, prefix in enumerate(HEADLINES, 1):
|
|
78 if line.startswith(prefix):
|
|
79 line = line.replace("{\\tt ", "").replace("}", "")
|
|
80 line = line.split("{", 1)[1].replace("{", "").replace("}", "")
|
|
81 line = "\n%(m)s %(l)s %(m)s\n" % {
|
|
82 "m": "="*no,
|
|
83 "l": line
|
|
84 }
|
|
85 break
|
|
86
|
|
87 if line.startswith(r"\item["):
|
|
88 item, txt = line[6:].split("]")
|
|
89 item = item.strip()
|
|
90 txt = txt.strip()
|
|
91 line = "** %s **\n%s" % (item, txt)
|
|
92
|
|
93 if "{\\tt" in line:
|
|
94 line = line.replace("{\\tt ", "{{{").replace("}", "}}}")
|
|
95 if "{\\em" in line:
|
|
96 line = line.replace("{\\em ", "{{{").replace("}", "}}}")
|
|
97
|
|
98 line = line.replace("\\", "")
|
|
99
|
|
100 print line
|
|
101 line += "\n"
|
|
102 outfile.write(line)
|