{% capture headingsWorkspace %} {% comment %} Version 1.0.0 https://github.com/allejo/jekyll-anchor-headings "Be the pull request you wish to see in the world." ~Ben Balter Usage: {% include anchor_headings.html html=content %} Parameters: * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll Optional Parameters: * beforeHeading (bool) : false - Set to true if the anchor should be placed _before_ the heading's content * anchorBody (string) : '' - The content that will be placed inside the anchor; the `%heading%` placeholder is available * anchorClass (string) : '' - The class(es) that will be used for each anchor. Separate multiple classes with a space * anchorTitle (string) : '' - The `title` attribute that will be used for anchors * h_min (int) : 1 - The minimum header level to build an anchor for; any header lower than this value will be ignored * h_max (int) : 6 - The maximum header level to build an anchor for; any header greater than this value will be ignored Output: The original HTML with the addition of anchors inside of all of the h1-h6 headings. {% endcomment %} {% assign minHeader = include.h_min | default: 1 %} {% assign maxHeader = include.h_max | default: 6 %} {% assign beforeHeading = include.beforeHeading %} {% assign nodes = include.html | split: ' {% if headerLevel < 1 or headerLevel > 6 %} {% capture edited_headings %}{{ edited_headings }}{{ node }}{% endcapture %} {% continue %} {% endif %} {% assign _workspace = node | split: '' | first }}>{% endcapture %} {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %} {% capture anchor %}{% endcapture %} {% if html_id and headerLevel >= minHeader and headerLevel <= maxHeader %} {% capture anchor %}href="#{{ html_id}}"{% endcapture %} {% if include.anchorClass %} {% capture anchor %}{{ anchor }} class="{{ include.anchorClass }}"{% endcapture %} {% endif %} {% if include.anchorTitle %} {% capture anchor %}{{ anchor }} title="{{ include.anchorTitle | replace: '%heading%', header }}"{% endcapture %} {% endif %} {% capture anchor %}{{ include.anchorBody | replace: '%heading%', header | default: '' | raw }}{% endcapture %} {% if beforeHeading %} {% capture anchor %}{{ anchor }} {% endcapture %} {% else %} {% capture anchor %} {{ anchor }}{% endcapture %} {% endif %} {% endif %} {% if beforeHeading %} {% capture _current %}