Comme alternative, si vous avez besoin de plus de transformations *, vous pouvez commencer par cela. Il fonctionnera également avec les balises <a/>
imbriquées, quel que soit le sens que cela puisse avoir.
Il y a un besoin de manipulation d'échappement dans le code. Par exemple. certains caractères sont échappés en XML qui ne sont pas échappés dans Latex et inversement. N'hésitez pas à ajouter ceci.
import xml._
val input = <p>And now try it on a <a href="link1">text</a> with <a href="link2">two urls</a></p>
def mkURL(meta: MetaData, text: String) = {
val url = meta.asAttrMap.get("href")
"\\url{%s}{%s}".format(url getOrElse "", text)
}
def transform(xhtml: NodeSeq): String = {
xhtml.map { node =>
node match {
case Node("p", _, [email protected]_*) => transform(ch)
case Node("a", meta, [email protected]_*) => mkURL(meta, transform(ch))
case x => x.toString
}
} mkString
}
println(transform(input))
// And now try it on a \url{link1}{text} with \url{link2}{two urls}
[*] Ajout du support pour \emph
serait quelque chose comme
case Node("em", _, [email protected]_*) => transform(ch).mkString("\\emph{", "", "}")
''
devrait associez à une ligne vide après la fin du paragraphe –