From 83f2c27e6d01b84877f09f0990c068ac6dfe9550 Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Sun, 20 Jul 2025 12:52:54 +0200 Subject: [PATCH] doc: initial support for pdf export at doc. generation - custom cover page for pdf - Center and resize logo - Place slogan just below logo - Ensure all text on cover page is in matching grey Please note, the mkdocs-to-pdf plugin works, but it has a bug in the enumeration of sections. We may need to fork it to make it work the way users expect. Signed-off-by: Joachim Wiberg --- .github/workflows/docs.yml | 1 + doc/logo-plain.png | Bin 0 -> 10216 bytes doc/templates/cover.html | 23 ++++++ doc/templates/styles.scss | 148 +++++++++++++++++++++++++++++++++++++ mkdocs.yml | 15 +++- 5 files changed, 184 insertions(+), 3 deletions(-) create mode 100644 doc/logo-plain.png create mode 100644 doc/templates/cover.html create mode 100644 doc/templates/styles.scss diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 91e6dcee..efe9b421 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -46,6 +46,7 @@ jobs: pipx inject mkdocs pymdown-extensions pipx inject mkdocs mkdocs-callouts pipx inject mkdocs mike + pipx inject mkdocs mkdocs-to-pdf # Workaround, if pipx inject fails to install symlink ln -s "$(pipx environment -V PIPX_LOCAL_VENVS)/mkdocs/bin/mike" \ "$(pipx environment -V PIPX_BIN_DIR)/mike" || true diff --git a/doc/logo-plain.png b/doc/logo-plain.png new file mode 100644 index 0000000000000000000000000000000000000000..835d93ffc41f510310b11158e456117b825b19ab GIT binary patch literal 10216 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 X&m^AMnhW4tdZ5Re1{&3B_A&nt*KMkq literal 0 HcmV?d00001 diff --git a/doc/templates/cover.html b/doc/templates/cover.html new file mode 100644 index 00000000..12a411dd --- /dev/null +++ b/doc/templates/cover.html @@ -0,0 +1,23 @@ +
+ {% if cover_logo is defined %} +
+ +
+ {% else %} +
+ {% endif %} + +
+

{{ cover_subtitle | e }}

+
+

{{ cover_title | e }}

+
+ +
+
+ {% if copyright is defined %} + + {% endif %} +
+
+
diff --git a/doc/templates/styles.scss b/doc/templates/styles.scss new file mode 100644 index 00000000..7689bdd7 --- /dev/null +++ b/doc/templates/styles.scss @@ -0,0 +1,148 @@ +// Override plugin defaults with !important to ensure our styles take precedence +article#doc-cover { + display: flex !important; + flex-direction: column !important; + height: 100vh !important; + text-align: center !important; + padding: 20px !important; +} + +article#doc-cover > .wrapper.upper { + flex: 0 0 120px !important; + text-align: center !important; + margin-bottom: 20px !important; + max-height: none !important; +} + +// Simple img tag approach for centered logo +article#doc-cover > .wrapper.upper > img.logo { + width: 360px !important; + height: auto !important; // Maintains aspect ratio automatically + display: block !important; + margin: 250px auto 0 auto !important; + padding: 0; +} + +article#doc-cover > .wrapper h1 { + font-size: 52px !important; + margin: 0 auto 0 auto !important; + color: #808080 !important; + border-bottom: none !important; +} + +// Copyright text on cover page should match logo grey color +article#doc-cover .properties address p#copyright { + color: #808080 !important; +} + +article#doc-cover > .wrapper h2 { + font-size: 28px !important; + color: #808080 !important; + margin: 0 !important; +} + +article#doc-cover .divider { + width: 150px !important; + height: 3px !important; + background: #ff7f2a !important; + margin: 20px auto !important; + border: none !important; +} + +// Proper heading hierarchy for 12pt base text (print standards) +h1 { + color: black !important; + font-size: 24pt !important; // 2.0x base text + line-height: 1.2 !important; + margin-top: 24pt !important; + margin-bottom: 12pt !important; +} + +h2 { + color: black !important; + font-size: 20pt !important; // 1.67x base text + line-height: 1.3 !important; + margin-top: 20pt !important; + margin-bottom: 10pt !important; +} + +h3 { + color: black !important; + font-size: 16pt !important; // 1.33x base text + line-height: 1.3 !important; + margin-top: 16pt !important; + margin-bottom: 8pt !important; +} + +h4 { + color: black !important; + font-size: 14pt !important; // 1.17x base text + line-height: 1.4 !important; + margin-top: 14pt !important; + margin-bottom: 7pt !important; +} + +h5, h6 { + color: black !important; + font-size: 13pt !important; // 1.08x base text + line-height: 1.4 !important; + margin-top: 12pt !important; + margin-bottom: 6pt !important; +} + +article h1 { + border-bottom: 2px solid #ff7f2a; +} + +article h2 { + border-bottom: 1px solid #ff7f2a; +} + +article h3 { + border-bottom: 0.5px solid #ff7f2a; +} + +// Set base font size to 12pt for all content +body, article { + font-size: 12pt !important; + line-height: 1.6 !important; +} + +// Ensure paragraphs use 12pt +p { + font-size: 12pt !important; + line-height: 1.6 !important; +} + +// Code blocks and inline code should be 10pt +pre, code, var, samp, kbd, tt { + font-size: 10pt !important; +} + +// Override any nested code font sizes +pre code, pre var, pre samp, pre kbd, pre tt { + font-size: 10pt !important; +} + +// Lists should also use 12pt +ul, ol, li { + font-size: 12pt !important; +} + +// Table content can be smaller to fit all details +table, td, th { + font-size: 10pt !important; +} + +// Override the tiny @page header/footer fonts to be more readable +@page { + @top-right { + font-size: 10pt !important; + } + @bottom-center { + font-size: 10pt !important; + } + @bottom-right { + font-size: 10pt !important; + } +} diff --git a/mkdocs.yml b/mkdocs.yml index 00372ef9..c2d89224 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -3,8 +3,7 @@ site_description: Infix Documentation site_url: https://kernelkit.github.io/infix/ repo_url: https://github.com/kernelkit/infix/ repo_name: kernelkit/infix -site_author: The KernelKit Team -copyright: Copyright © 2022-2025 The KernelKit Authors +copyright: Copyright © 2022-2025 The KernelKit Team docs_dir: doc/ edit_uri: edit/master/doc/ @@ -58,7 +57,7 @@ nav: - Origin & Licensing: license.md theme: - logo: jack.png + logo: logo-plain.png name: material features: - toc.follow @@ -115,6 +114,16 @@ plugins: - search - callouts - mike + - to-pdf: + cover: true + enabled_if_env: PDF_EXPORT + cover_logo: logo-plain.png + cover_subtitle: Immutable.Friendly.Secure + custom_template_path: doc/templates + output_path: pdf/infix-user-guide.pdf + toc_level: 2 + ordered_chapter_level: 3 + heading_shift: false extra: generator: false