{% capture headingsWorkspace %} {% comment %} Version 1.0.4 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 * anchorAttrs (string) : '' - Any custom HTML attributes that will be added to the `` tag; you may NOT use `href`, `class` or `title` * 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 * bodyPrefix (string) : '' - Anything that should be inserted inside of the heading tag _before_ its anchor and content * bodySuffix (string) : '' - Anything that should be inserted inside of the heading tag _after_ its anchor and content 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 == 0 %} {% if nextChar != '<' and nextChar != '' %} {% capture node %}' | 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 %} {% if include.anchorAttrs %} {% capture anchor %}{{ anchor }} {{ include.anchorAttrs }}{% endcapture %} {% endif %} {% capture anchor %}{{ include.anchorBody | replace: '%heading%', header | default: '' }}{% endcapture %} {% if beforeHeading %} {% capture anchor %}{{ anchor }} {% endcapture %} {% else %} {% capture anchor %} {{ anchor }}{% endcapture %} {% endif %} {% endif %} {% capture new_heading %}