From d258886a6453e2938abd34560afc36c7b84d40c0 Mon Sep 17 00:00:00 2001
From: Danila Fedorin <danila.fedorin@gmail.com>
Date: Sun, 23 Feb 2025 14:35:31 -0800
Subject: [PATCH] Remove KaTeX CSS includes if we don't need them.

Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
---
 convert.rb | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/convert.rb b/convert.rb
index bbcbd00..51e8c94 100644
--- a/convert.rb
+++ b/convert.rb
@@ -25,13 +25,16 @@ class KatexRenderer
   end
 
   def substitute(content)
+    found_any = false
     rendered = content.gsub /\\\(((?:[^\\]|\\[^\)])*)\\\)/ do |match|
+      found_any = true
       render(false, $~[1])
     end
     rendered = rendered.gsub /\$\$((?:[^\$]|$[^\$])*)\$\$/ do |match|
+      found_any = true
       render(true, $~[1])
     end
-    return rendered
+    return rendered, found_any
   end
 end
 
@@ -58,8 +61,16 @@ renderer = KatexRenderer.new(katex)
 files.each do |file|
   puts "Rendering file: #{file}"
   document = Nokogiri::HTML.parse(File.open(file))
+  found_any = false
   document.search('//*[not(ancestor-or-self::code or ancestor-or-self::script)]/text()').each do |t|
-    t.replace(renderer.substitute(t.content))
+    rendered, found_any = renderer.substitute(t.content)
+    t.replace(rendered)
   end
+
+  # If we didn't find any mathematical equations, no need to include KaTeX CSS.
+  unless found_any
+    document.css('link[href$="katex.css"], link[href$="katex.min.css"]').each(&:remove)
+  end
+
   File.write(file, document.to_html(encoding: 'UTF-8'))
 end