linjer / jekyll-katex

[DEPRECATED] Jekyll plugin for easy server-side math rendering via KaTeX
MIT License
96 stars 8 forks source link

Found a Liquid block containing the excerpt separator "\n\n" #25

Open awnumar opened 4 years ago

awnumar commented 4 years ago

In files where I use katex, I get the following error at compile time:

Warning: Excerpt modified in _posts/2019-07-18-encrypting-secrets-in-memory.md!
  Found a Liquid block containing the excerpt separator "\n\n". 
  The block has been modified with the appropriate closing tag.
  Feel free to define a custom excerpt or excerpt_separator in the document's front matter if the generated excerpt is unsatisfactory.

I'm not sure what it's referring to as I have the correct {% katexmm %} and {% endkatexmm %} tags at the start and end of the page.

linjer commented 4 years ago

I am unfamiliar with this error, but it sounds like jekyll is trying to cut off the page content inbetween the {% katexmm %} and {% endkatexmm %} tags.

Can you try the following?

awnumar commented 4 years ago

Thanks for the reply.

If I open it the line before the excerpt and close it directly after and then open it again the line after, like this:

{% katexmm %}
   ...   first paragraph ...
{% endkatexmm %}
{% katexmm %}

I get errors:

Regenerating: 1 file(s) changed at 2019-08-30 11:47:43
                    _posts/2019-07-18-encrypting-secrets-in-memory.md
       Jekyll Feed: Generating feed for posts
  Liquid Exception: Liquid syntax error (line 6): 'katexmm' tag was never closed in /home/awn/src/spacetime.dev/_posts/2019-07-18-encrypting-secrets-in-memory.md/#excerpt
  Liquid Exception: Liquid syntax error (line 6): 'katexmm' tag was never closed in feed.xml
             Error: Liquid syntax error (line 6): 'katexmm' tag was never closed
             Error: Run jekyll build --trace for more information.

Trace looks like:

  Liquid Exception: Liquid syntax error (line 6): 'katexmm' tag was never closed in /home/awn/src/spacetime.dev/_posts/2019-07-18-encrypting-secrets-in-memory.md/#excerpt
  Liquid Exception: Liquid syntax error (line 6): 'katexmm' tag was never closed in feed.xml
bundler: failed to load command: jekyll (/usr/bin/jekyll)
Liquid::SyntaxError: Liquid syntax error (line 6): 'katexmm' tag was never closed
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/block.rb:63:in `block in parse_body'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/block_body.rb:52:in `parse'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/block.rb:58:in `parse_body'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/block.rb:12:in `parse'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/tag.rb:10:in `parse'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/block_body.rb:34:in `parse'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/document.rb:10:in `parse'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/document.rb:5:in `parse'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/template.rb:132:in `parse'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/template.rb:116:in `parse'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/liquid_renderer/file.rb:13:in `block in parse'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/liquid_renderer/file.rb:49:in `measure_time'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/liquid_renderer/file.rb:12:in `parse'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/renderer.rb:121:in `render_liquid'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/renderer.rb:79:in `render_document'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/renderer.rb:62:in `run'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/excerpt.rb:83:in `output'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/excerpt.rb:70:in `to_s'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/drops/document_drop.rb:24:in `excerpt'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/drops/drop.rb:52:in `public_send'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/drops/drop.rb:52:in `[]'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/context.rb:197:in `lookup_and_evaluate'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/variable_lookup.rb:48:in `block in evaluate'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/variable_lookup.rb:38:in `each_index'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/variable_lookup.rb:38:in `evaluate'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/context.rb:159:in `evaluate'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/condition.rb:114:in `interpret_condition'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/condition.rb:47:in `block in evaluate'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/condition.rb:46:in `loop'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/condition.rb:46:in `evaluate'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/tags/if.rb:45:in `block (2 levels) in render'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/tags/if.rb:44:in `each'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/tags/if.rb:44:in `block in render'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/context.rb:123:in `stack'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/tags/if.rb:43:in `render'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/block_body.rb:103:in `render_node_to_output'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/block_body.rb:82:in `render'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/tags/for.rb:160:in `block (2 levels) in render_segment'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/tags/for.rb:158:in `each'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/tags/for.rb:158:in `block in render_segment'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/context.rb:123:in `stack'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/tags/for.rb:150:in `render_segment'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/tags/for.rb:79:in `render'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/block_body.rb:103:in `render_node_to_output'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/block_body.rb:82:in `render'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/template.rb:208:in `block in render'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/template.rb:242:in `with_profiling'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/template.rb:207:in `render'
  /usr/lib/ruby/gems/2.6.0/gems/liquid-4.0.3/lib/liquid/template.rb:220:in `render!'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/liquid_renderer/file.rb:30:in `block (2 levels) in render!'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/liquid_renderer/file.rb:42:in `measure_bytes'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/liquid_renderer/file.rb:29:in `block in render!'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/liquid_renderer/file.rb:49:in `measure_time'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/liquid_renderer/file.rb:28:in `render!'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/renderer.rb:126:in `render_liquid'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/renderer.rb:79:in `render_document'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/renderer.rb:62:in `run'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/site.rb:479:in `render_regenerated'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/site.rb:472:in `block in render_pages'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/site.rb:471:in `each'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/site.rb:471:in `render_pages'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/site.rb:192:in `render'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/site.rb:71:in `process'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/command.rb:28:in `process_site'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/commands/build.rb:65:in `build'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/commands/build.rb:36:in `process'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/lib/jekyll/commands/build.rb:18:in `block (2 levels) in init_with_program'
  /usr/lib/ruby/gems/2.6.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `block in execute'
  /usr/lib/ruby/gems/2.6.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `each'
  /usr/lib/ruby/gems/2.6.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `execute'
  /usr/lib/ruby/gems/2.6.0/gems/mercenary-0.3.6/lib/mercenary/program.rb:42:in `go'
  /usr/lib/ruby/gems/2.6.0/gems/mercenary-0.3.6/lib/mercenary.rb:19:in `program'
  /usr/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/exe/jekyll:15:in `<top (required)>'
  /usr/bin/jekyll:23:in `load'
  /usr/bin/jekyll:23:in `<top (required)>'

Adding a blank line after the excerpt followed by the lines

{% endkatexmm %}
{% katexmm %}

results in a successful compile but with the warning shown in the original post. Adding \\n\\n in that blank line results in the build error above.

gwgundersen commented 4 years ago

I was receiving the same warning, and figured out how to fix it in the process of writing this comment. Typically, I wrap my entire post with katexmm:

---
... front matter ...
---

{% katexmm %}
... post ...
{% endkatexmm %}

Empirically, the error goes away if the first header or paragraph is not included, e.g.:

---
... front matter ...
---

## Introduction

{% katexmm %}
... rest of post ...
{% endkatexmm %}

or alternatively

---
... front matter ...
---

... first paragraph ...

{% katexmm %}
... rest of post ...
{% endkatexmm %}

If my first paragraph has math in it, I just use the katex liquid tag. I don't know why this works, but I fixed several posts with this error in this way.