diff --git a/assets/mods/basegame/books/btex.xml b/assets/mods/basegame/books/btex.xml index 1e3a91087..156450023 100644 --- a/assets/mods/basegame/books/btex.xml +++ b/assets/mods/basegame/books/btex.xml @@ -234,6 +234,7 @@
  • thechapter — Chapter heading. Default: %1$s
  • chaptertype — Default style of the chapter tag. Default: 1
  • chapteronnewpage — Controls if a chapter must start on a new page. Put non-zero value to enable this behaviour. Default: 0
  • +
  • resetchapterafterpart — Controls if the chapter number should reset after a part. Put non-zero value to enable this behaviour. Default: 0
  • parindent — Controls the indentation size of the paragraphs. Default: 16
  • diff --git a/assets/mods/basegame/books/btex_ko.xml b/assets/mods/basegame/books/btex_ko.xml index cbbd96695..5e483ed45 100644 --- a/assets/mods/basegame/books/btex_ko.xml +++ b/assets/mods/basegame/books/btex_ko.xml @@ -217,6 +217,7 @@
  • thechapter — 장 제목 번호. 기본값: %1$s
  • chaptertypechapter 태그의 기본 스타일. 기본값: 1
  • chapteronnewpage — 새 페이지에서 장이 시작되게 하기. 활성화하려면 0이 아닌 임의의 값을 넣을 것. 기본값: 0
  • +
  • resetchapterafterpart — 부(part) 뒤에 오는 장번호가 1에서 시작되게 하기. 활성화하려면 0이 아닌 임의의 값을 넣을 것. 기본값: 0
  • parindent — 문단의 들여쓰기 크기를 조절함. 기본값: 16
  • diff --git a/src/net/torvald/btex/BTeXParser.kt b/src/net/torvald/btex/BTeXParser.kt index dae60cf4d..97fc64e30 100644 --- a/src/net/torvald/btex/BTeXParser.kt +++ b/src/net/torvald/btex/BTeXParser.kt @@ -133,6 +133,7 @@ object BTeXParser { "thechapter" to "%1\$s", "chaptertype" to "1", "chapteronnewpage" to "0", + "resetchapterafterpart" to "0", "parindent" to "16" ) @@ -1325,7 +1326,21 @@ object BTeXParser { @CloseTag // reflective access is impossible with 'private' fun closeElemCHAPTER(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) { val partOrder = cptSectMap.count { it.type.startsWith("part") } - val cptOrder = cptSectMap.count { it.type.startsWith("chapter") } + 1 + val cptOrder = if (macrodefs["resetchapterafterpart"] != "0") { + var cnt = cptSectMap.size - 1 + var sectOrder = 0 + while (cnt >= 0) { + if (cptSectMap[cnt].type.startsWith("chapter")) { + sectOrder += 1 + } + else break + + cnt -= 1 + } + sectOrder + 1 + } + else + cptSectMap.count { it.type.startsWith("chapter") } + 1 val thePar = paragraphBuffer.toString().trim() @@ -1364,7 +1379,22 @@ object BTeXParser { if (doc.linesPrintedOnPage.last() >= doc.pageLines - 1) doc.addNewPage(progressIndicator) val partOrder = cptSectMap.count { it.type.startsWith("part") } - val cptOrder = cptSectMap.count { it.type.startsWith("chapter") } + val cptOrder = if (macrodefs["resetchapterafterpart"] != "0") { + var cnt = cptSectMap.size - 1 + var sectOrder = 0 + while (cnt >= 0) { + if (cptSectMap[cnt].type.startsWith("chapter")) { + sectOrder += 1 + } + else break + + cnt -= 1 + } + sectOrder + 1 + } + else + cptSectMap.count { it.type.startsWith("chapter") } + 1 + var sectOrder = 1 var cnt = cptSectMap.size - 1