package main // NumberingType controls the page numbering style rendered in the footer. type NumberingType int const ( NumNone NumberingType = iota // No page number (title page, declaration) NumRoman // Roman numerals for front matter (II, III, …) NumArabic // Arabic numerals for main body (1, 2, …) ) // toRoman converts a positive integer to an uppercase Roman numeral string. func toRoman(n int) string { if n <= 0 { return "" } vals := []int{1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1} syms := []string{"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"} result := "" for i, v := range vals { for n >= v { n -= v result += syms[i] } } return result }