Thanks for spotting this.
It was actually a bug in the code.
try this updated cell code for the counter javascript code
@htl """
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.13.11/dist/katex.min.css" integrity="sha384-Um5gpz1odJg5Z4HAmzPtgZKdTBHZdw8S29IecapCSB31ligYPhHQZMIlWLYQGVoc" crossorigin="anonymous">
<style>
a.eq_href {
text-decoration: none;
}
</style>
<script src="https://cdn.jsdelivr.net/npm/katex@0.13.11/dist/katex.min.js" integrity="sha384-YNHdsYkH6gMx9y3mRkmcJ2mFUjTd0qNQQvY9VYZgQd7DcN7env35GzlmFaZ23JGp" crossorigin="anonymous"></script>
<script id="katex-eqnum-script">
const a_vec = [] // This will hold the list of a tags with custom click, used for cleaning listeners up upon invalidation
const eqrefClick = (e) => {
e.preventDefault() // This prevent normal scrolling to link
const a = e.target
const eq_id = a.getAttribute('eq_id')
window.location.hash = 'eqref-' + eq_id // This is to be able to use the back function to resume previous view, 'eqref-' is added in front to avoid the viewport actually going to the equation without having control of the scroll
const eq = document.getElementById(eq_id)
eq.scrollIntoView({
behavior: 'smooth',
block: 'center',
})
}
const checkCounter = (item, i) => {
return item.classList.contains('enclosing') ?
i :
i + 1
}
const updateCallback = () => {
a_vec.splice(0,a_vec.length) // Reset the array
const eqs = document.querySelectorAll('span.enclosing, span.eqn-num')
let i = 0;
eqs.forEach(item => {
i = checkCounter(item,i)
console.log('item',i,'=',item)
if (item.classList.contains('enclosing')) {
const id = item.id
const a_vals = document.querySelectorAll(`[eq_id=\${id}]`)
a_vals !== null && a_vals.forEach(a => {
a_vec.push(a) // Add this to the vector
a.innerText = `(\${i+1})`
a.addEventListener('click',eqrefClick)
})
}
})
}
const notebook = document.querySelector("pluto-notebook")
// We have a mutationobserver for each cell:
const observers = {
current: [],
}
const createCellObservers = () => {
observers.current.forEach((o) => o.disconnect())
observers.current = Array.from(notebook.querySelectorAll("pluto-cell")).map(el => {
const o = new MutationObserver(updateCallback)
o.observe(el, {attributeFilter: ["class"]})
return o
})
}
createCellObservers()
// And one for the notebook's child list, which updates our cell observers:
const notebookObserver = new MutationObserver(() => {
updateCallback()
createCellObservers()
})
notebookObserver.observe(notebook, {childList: true})
invalidation.then(() => {
notebookObserver.disconnect()
observers.current.forEach((o) => o.disconnect())
a_vec.forEach(a => a.removeEventListener('click',eqrefClick))
})
</script>
"""
I have also updated the reference notebook on github