여기, @mergeconflict answer에 따라하기)가로서 내가 그것을
했던 방법입니다
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]()
}
}
당신으로 : 더 적절한 솔루션은, 제가 한 것은 생성 된 모든 HTML 파일을 구문 분석 크롤러를 구현하고 발견 "수입 태그"를 대체하는 것입니다없는 MathJax 스크립트의 수입에 의해, (아래 코드 참조) 이 크롤러 작업이 doc 작업에 첨부되어 있음을 알 수 있습니다.이 작업은에 의해 자동으로 수행됩니다.. 여기
가
/**
* Compute the energy using formula:
*
* ##import MathJax
*
* $$e = m\times c^2$$
*/
def energy(m: Double, c: Double) = m*c*c
하기 화학식으로 표현 될 문서의 예는,이 코드를 향상시킬 수있을 것이다.예를 들어 :
- 는
- 받는 스크립트를 추가 어쩌면 가져 오기 태그는 처음 몇 줄에 있어야하는 규칙을 추가 (html로 머리 부분에
- 피하기 전체 파일을 읽는 스크립트 가져 오기를 추가 SBT 패키지, 일부 적절한 작업을
답변 주셔서 감사를 많이 사용하여 대상/API를 폴더에 추가! 어쩌면? – Choucri
는 SIP에 대한 아이디어는 SBT (문서)로 crowling을 할 수 있으며, 그렇다면 어떻게 할 것인가? –