作为替代方案,如果你需要更多的转换*,你可以用这个启动。它也将与嵌套的<a/>
标签一起工作,无论这种标签如何可能。
代码中有一些需要转义处理的地方。例如。一些字符以XML格式转义,而这些字符在Latex中不会转义,反之亦然。随意添加此。
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}
[*]增加对\emph
支持会是这样的
case Node("em", _, [email protected]_*) => transform(ch).mkString("\\emph{", "", "}")
'
'应该段落 – 2010-11-19 05:17:25