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