diff --git a/README.md b/README.md
index 78b328bf999ad9cd51a7a9fc34dd999f43a6ecf5..57dcdd892e165b3de85f02e4f6bb17ec87908323 100644
--- a/README.md
+++ b/README.md
@@ -25,3 +25,5 @@ Ce module marche pour MA feuille de style AMC, qui contient :
 }
 ```
 et où ``{mlang en}`` et ``{mlang other}`` sont utilisés dans moodle.
+
+Mettre ``unsafe`` à ``False`` pour ne pas remplacer les ``<span>`` (`utils.py`)
diff --git a/XML_Moodle.py b/XML_Moodle.py
index b77d20bb04220ee50a322b7155167f0e90fc5546..e348267676122e259a041041c9b7dff4758ca06b 100755
--- a/XML_Moodle.py
+++ b/XML_Moodle.py
@@ -56,7 +56,7 @@ class Quizz:
 class Question:
 	def __init__(self,xmlQ,c,n,f):
 		self.folder = f
-		self.q = mlang_2_multiling(strip_tags(xmlQ.find("questiontext/text").text, self.folder))
+		self.q = strip_tags(mlang_2_multiling(xmlQ.find("questiontext/text").text), self.folder)
 		self.category = c
 		self.id = f"{c[c.rfind(':')+1:]}_{n}"
 		self.env = "todo:"+xmlQ.attrib["type"]
@@ -66,15 +66,13 @@ class Question:
 	def parseImages(self, file_elements):
 		for i in file_elements:
 			name = i.attrib["name"]
-			print(name)
 			im = Image.open(BytesIO(base64.b64decode(i.text)))
 			ext = name[name.rfind('.')+1:].upper()
 			im.save(self.folder+"/"+name, ext)
 
 	def __str__(self):
-		return """\\element{"""+self.category+"""}{
-	\\begin{"""+self.env+"""}{"""+self.id+"""}\\nbpoints{"""+score_2_str(self.max)+"""}
-		"""+self.q+"\\end{"+self.env+"}\n"
+		#return "\\element{" + self.category + "}{\n\t\\begin{" + self.env + "}{" + self.id + "}\\nbpoints{" + score_2_str(self.max) + "}\n\t\t" + self.q + "\\end{" + self.env + "}\n"
+		return ""
 
 class Answer:
 	def __init__(self,t,b,max,fb):
@@ -116,8 +114,8 @@ class MCQ(Question):
 		for a in xmlQ.findall("answer"):
 			fb = a.find("feedback/text").text
 			if fb != None:
-				fb = mlang_2_multiling(strip_tags(fb, self.folder))
-			self.choices.append(Answer(mlang_2_multiling(strip_tags(a.find("text").text, self.folder)), a.attrib['fraction'], self.max, fb))
+				fb = strip_tags(mlang_2_multiling(fb), self.folder)
+			self.choices.append(Answer(strip_tags(mlang_2_multiling(a.find("text").text), self.folder), a.attrib['fraction'], self.max, fb))
 
 	def get_choice_env(self):
 		if self.choice_type == MCQ.VERTICAL:
@@ -134,7 +132,7 @@ class MCQ(Question):
 		res += "\n"
 		for c in self.choices:
 			res += str(c)
-		res += "\n\t\t\\end{"+self.get_choice_env()+"}\n\t\\end{"+self.env+"}\n}\n\n"
+		res += "\t\t\\end{"+self.get_choice_env()+"}\n\t\\end{"+self.env+"}\n}\n\n"
 		return res
 
 class TF(MCQ):
@@ -143,14 +141,14 @@ class TF(MCQ):
 		self.choices = []
 		self.env = "question"
 		self.shuffle = False
-		if self.__class__.__name__ == "MCQ":
+		if self.__class__.__name__ == "TF":
 			self.__parseAnswers(xmlQ)
 
 	def __parseAnswers(self, xmlQ):
 		for a in xmlQ.findall("answer"):
 			fb = a.find("feedback/text").text
 			if fb != None:
-				fb = mlang_2_multiling(strip_tags(fb, self.folder))
+				fb = strip_tags(mlang_2_multiling(fb), self.folder)
 			if a.find("text").text == "true":
 				self.choices.append(Answer("\\multiling{vrai}{true}", a.attrib['fraction'], self.max, fb))
 			else:
diff --git a/utils.py b/utils.py
index 22b2e54d4e2030f09c4a9cdb65c8156c7d8f0ee3..37561b97747192145eec23bff251c1a63e886962 100644
--- a/utils.py
+++ b/utils.py
@@ -3,6 +3,8 @@ from re import compile,sub,escape
 from html import unescape
 from urllib.parse import unquote
 
+unsafe = True
+
 def html_2_tex(text):
 	#https://code.activestate.com/recipes/81330-single-pass-multiple-replace/
 	# dict = {'&nbsp;': '~', '&gt;':'>', '&lt;': '<'}
@@ -17,19 +19,23 @@ def html_2_tex(text):
 
 
 def remove_moodle_cdata(txt, folder):
-	return sub(r'<img src="[^/]*/([^"]*)" (alt="([^"]*)")?[^>]*>', r"""\\begin{figure}[h!]
+	global unsafe
+	res = sub(r'<img src="[^/]*/([^"]*)" (alt="([^"]*)")?[^>]*>', r"""\\begin{figure}[h!]
 	\\begin{center}
 		\\includegraphics[width=0.8\\linewidth]{$$$$folder$$$$/\1}
 	\\end{center}
 	\\caption{\3}
 \\end{figure}
-""",txt).replace("<![CDATA[","").replace("]]>","").replace("$$$$folder$$$$", folder)
+""",txt).replace("<![CDATA[","").replace("]]>","").replace("$$$$folder$$$$", folder).replace("<strong>","\\emph{").replace("</strong>","}").replace("<pre>","\\begin{lstlisting}[language=Python]\n").replace("</pre>","\\end{lstlisting}\n")
+	if unsafe:
+		res = res.replace('<span style="font:monospace">',"\lstinline[language=python]|").replace('<span style="font-family:monospace">',"\lstinline[language=python]|").replace("</span>","|")
+	return res
 
 def strip_tags(txt, folder):
 	return html_2_tex(sub(compile('<.*?>'), '',remove_moodle_cdata(unquote(txt), folder)))
 
 def mlang_2_multiling(txt):
-	return sub(r"\{mlang en\}(.*?)\{mlang\}((\{mlang other\})|(\{mlang fr\}))(.*?)\{mlang\}", r"\\multiling{\5}{\1}",txt)
+	return sub(r"\{mlang\s*en\}([^\{]*?)\{mlang\}\s*((\{mlang\s*other\})|(\{mlang\s*fr\})|(\{mlang\}))([^\{]*)\{mlang\}", r"\\multiling{\6}{\1}",txt)
 
 def score_2_str(v):
 	if int(v)==float(v):