Để theo trên @mergeconflict answer, đây là cách tôi đã làm nó
Như có không có giải pháp thích hợp, những gì tôi đã làm là để thực hiện một bánh xích mà phân tích tất cả các file html tạo ra, và thay thế bất kỳ tìm thấy "tag nhập khẩu" (xem mã bên dưới), bởi việc nhập khẩu của kịch bản MathJax:
lazy val mathFormulaInDoc = taskKey[Unit]("add MathJax script import in doc html to display nice latex formula")
mathFormulaInDoc := {
val apiDir = (doc in Compile).value
val docDir = apiDir // /"some"/"subfolder" // in my case, only api/some/solder is parsed
// will replace this "importTag" by "scriptLine
val importTag = "##import MathJax"
val scriptLine = "<script type=\"text/javascript\" src=\"https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML\"> </script>"
// find all html file and apply patch
if(docDir.isDirectory)
listHtmlFile(docDir).foreach { f =>
val content = Source.fromFile(f).getLines().mkString("\n")
if(content.contains(importTag)) {
val writer = new PrintWriter(f)
writer.write(content.replace(importTag, scriptLine))
writer.close()
}
}
}
// attach this task to doc task
mathFormulaInDoc <<= mathFormulaInDoc triggeredBy (doc in Compile)
// function that find html files recursively
def listHtmlFile(dir: java.io.File): List[java.io.File] = {
dir.listFiles.toList.flatMap { f =>
if(f.getName.endsWith(".html")) List(f)
else if(f.isDirectory) listHtmlFile(f)
else List[File]()
}
}
Như bạn có thể thấy, nhiệm vụ trình thu thập thông tin này được đính kèm với tác vụ doc, được thực hiện tự động bởi sbt doc
.
Dưới đây là một ví dụ về doc mà sẽ được trả lại với công thức
/**
* Compute the energy using formula:
*
* ##import MathJax
*
* $$e = m\times c^2$$
*/
def energy(m: Double, c: Double) = m*c*c
Bây giờ, nó sẽ có thể để cải thiện mã này.Ví dụ:
- thêm kịch bản nhập trong phần đầu html
- tránh đọc toàn bộ file (có thể thêm một quy tắc rằng thẻ nhập khẩu nên trong vài dòng đầu tiên
- thêm đoạn mã vào gói sbt và thêm nó vào thư mục target/api bằng cách sử dụng một số tác vụ phù hợp
Nguồn
2015-08-20 09:29:27
Cảm ơn bạn đã trả lời câu hỏi! Có thể có ý tưởng cho SIP? – Choucri
là có thể làm việc với sbt (doc), và Nếu có, làm thế nào để? –