diff --git a/js/pretext_add_on.js b/js/pretext_add_on.js
index da1d951e7..472b9cbd5 100644
--- a/js/pretext_add_on.js
+++ b/js/pretext_add_on.js
@@ -113,8 +113,44 @@ window.addEventListener("DOMContentLoaded", function() {
copyPermalink(link);
});
});
+
+ if (typeof ptx_default_settings !== 'undefined' && ptx_default_settings.permalink_button) {
+ initPermalinkToggle();
+ }
});
+function setPermalinkVisibility(visible) {
+ document.documentElement.classList.toggle('ptx-permalinks-hidden', !visible);
+}
+
+function initPermalinkToggle() {
+ const stored = localStorage.getItem('ptx_permalink_visible');
+ const initiallyVisible = stored === 'true';
+
+ setPermalinkVisibility(initiallyVisible);
+
+ const btn = document.getElementById('permalink-toggle-button');
+ if (!btn) return;
+
+ let permalinksVisible = initiallyVisible;
+ const enableLabel = btn.dataset.enableLabel;
+ const disableLabel = btn.dataset.disableLabel;
+ const initialLabel = initiallyVisible ? disableLabel : enableLabel;
+ btn.setAttribute('aria-label', initialLabel);
+ btn.title = initialLabel;
+ btn.querySelector('.icon').textContent = initiallyVisible ? 'link_off' : 'link';
+
+ btn.addEventListener('click', function() {
+ permalinksVisible = !permalinksVisible;
+ setPermalinkVisibility(permalinksVisible);
+ const label = permalinksVisible ? disableLabel : enableLabel;
+ btn.setAttribute('aria-label', label);
+ btn.title = label;
+ btn.querySelector('.icon').textContent = permalinksVisible ? 'link_off' : 'link';
+ localStorage.setItem('ptx_permalink_visible', String(permalinksVisible));
+ });
+}
+
window.addEventListener("load",function(event) {
diff --git a/xsl/localizations/en-US.xml b/xsl/localizations/en-US.xml
index 19bcff656..d0f7f6924 100644
--- a/xsl/localizations/en-US.xml
+++ b/xsl/localizations/en-US.xml
@@ -333,6 +333,9 @@ along with PreTeXt. If not, see .
Copy heading and permalink for
+
+ Enable Permalinks
+ Disable Permalinks
diff --git a/xsl/pretext-html.xsl b/xsl/pretext-html.xsl
index f0884659a..f0e8684ee 100644
--- a/xsl/pretext-html.xsl
+++ b/xsl/pretext-html.xsl
@@ -12102,6 +12102,36 @@ along with MathBook XML. If not, see .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -13865,9 +13898,27 @@ TODO:
+
+
+
+
+
+
diff --git a/xsl/publisher-variables.xsl b/xsl/publisher-variables.xsl
index d4bd27e1e..a4a2f623e 100644
--- a/xsl/publisher-variables.xsl
+++ b/xsl/publisher-variables.xsl
@@ -2779,6 +2779,8 @@ along with PreTeXt. If not, see .
+
+