btex: centered part title

This commit is contained in:
minjaesong
2024-05-03 00:48:25 +09:00
parent 51861c9a09
commit f2ef4df762
2 changed files with 45 additions and 18 deletions

View File

@@ -377,7 +377,7 @@ class BTeXDrawCall(
internal val width: Int
get() = if (text != null)
if (text is TypesetDrawCall)
text.movableType.width
text.movableType.width * text.movableType.font.scale
else
TODO()
else

View File

@@ -763,25 +763,24 @@ object BTeXParser {
@CloseTag // reflective access is impossible with 'private'
fun closeElemFULLPAGEBOX(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
doc.currentPageObj.let { page ->
val yStart = page.drawCalls.minOf { it.posY }
val yEnd = page.drawCalls.maxOf { it.posY + it.lineCount * doc.lineHeightInPx }
val pageHeight = doc.textHeight
val newYpos = (pageHeight - (yEnd - yStart)) / 2
val yDelta = newYpos - yStart
val xStart = page.drawCalls.minOf { it.posX }
val xEnd = page.drawCalls.maxOf { it.posX + it.width }
val pageWidth = doc.textWidth
val newXpos = (pageWidth - (xEnd - xStart)) / 2
val xDelta = newXpos - xStart
page.drawCalls.forEach {
val yStart = it.posY
val yEnd = it.posY + it.lineCount * doc.lineHeightInPx
val pageHeight = doc.textHeight
val newYpos = (pageHeight - (yEnd - yStart)) / 2
val yDelta = newYpos - yStart
val xStart = it.posX
val xEnd = it.posX + it.width
val pageWidth = doc.textWidth
val newXpos = (pageWidth - (xEnd - xStart)) / 2
val xDelta = newXpos - xStart
it.posX += xDelta
it.posY += yDelta
}
}
doc.addNewPage()
@@ -1012,6 +1011,7 @@ object BTeXParser {
typesetParagraphs("${ccDefault}Part ${num.toRomanNum()}", handler)
typesetParagraphs(titleFont, "$ccDefault$thePar\n ", handler)
// get global yDelta
doc.currentPageObj.let { page ->
val yStart = page.drawCalls.minOf { it.posY }
val yEnd = page.drawCalls.maxOf { it.posY + it.lineCount * doc.lineHeightInPx }
@@ -1020,6 +1020,30 @@ object BTeXParser {
val newYpos = (pageHeight - (yEnd - yStart)) / 2
val yDelta = newYpos - yStart
page.drawCalls.forEach {
// get individual xDelta
val xStart = it.posX
val xEnd = it.posX + it.width
val pageWidth = doc.textWidth
val newXpos = (pageWidth - (xEnd - xStart)) / 2
val xDelta = newXpos - xStart
// apply the movement
it.posX += xDelta
it.posY += yDelta
}
}
/*doc.currentPageObj.let { page ->
val yStart = page.drawCalls.minOf { it.posY }
val yEnd = page.drawCalls.maxOf { it.posY + it.lineCount * doc.lineHeightInPx }
val pageHeight = doc.textHeight
val newYpos = (pageHeight - (yEnd - yStart)) / 2
val yDelta = newYpos - yStart
val xStart = page.drawCalls.minOf { it.posX }
val xEnd = page.drawCalls.maxOf { it.posX + it.width }
val pageWidth = doc.textWidth
@@ -1032,9 +1056,12 @@ object BTeXParser {
it.posY += yDelta
}
}
}*/
if (doc.currentPage % 2 == 0)
doc.addNewPage()
doc.addNewPage()
doc.addNewPage()
}