From 626ec174da04b6cf45087b7c40e030963b838528 Mon Sep 17 00:00:00 2001 From: Juicysteak117 <20595808+Juicysteak117@users.noreply.github.com> Date: Wed, 15 Oct 2025 22:48:24 -0700 Subject: [PATCH 01/13] adding functions and css for light/dark --- export/pghrtcss.css | 44 +++++++++++++++++----- export/pghrtjs.js | 89 +++++++++++++++++++++++++++++++++++---------- pghrt.pdf | 0 pghrt.tex | 4 +- 4 files changed, 108 insertions(+), 29 deletions(-) create mode 100644 pghrt.pdf diff --git a/export/pghrtcss.css b/export/pghrtcss.css index 0648fd3..71543d7 100644 --- a/export/pghrtcss.css +++ b/export/pghrtcss.css @@ -18,6 +18,32 @@ src: url('font/boit.otf') format('opentype'); } +/*default for light*/ +:root { + --font-color: #000; + --link-color:blue; + --main-bg: #fff; + --toc-bg: #eee; + --toc-hover: #ccc; + --toc-accent: #ddd; + --typewriter-bg: #ddd; + --snackbar-bg: #333; + --snackbar-color: #fff; +} + +[data-theme="dark"] { + --font-color: #000; + --link-color:blue; + --main-bg: #fff; + --toc-bg: #eee; + --toc-hover: #ccc; + --toc-accent: #ddd; + --typewriter-bg: #ddd; + --snackbar-bg: #333; + --snackbar-color: #fff; +} + + body { font-family: 'crm'; padding: 0 0px 0 0; @@ -26,7 +52,7 @@ body { font-variant-ligatures: none; } -.ltx_TOC a:link, .ltx_TOC a:visited, .ltx_p a:link, .ltx_p a:visited { color: blue !important; } +.ltx_TOC a:link, .ltx_TOC a:visited, .ltx_p a:link, .ltx_p a:visited { color: var(--link-color) !important; } .ltx_personname a:link, .ltx_personname a:visited { color: fuchsia; } .ltx_title_abstract, .ltx_title, .ltx_font_bold { font-family: 'bold'; font-weight: bold;} @@ -42,12 +68,12 @@ body { .header { display: none; } .ltx_font_typewriter { - background-color: #ddd; + background-color: var(--typewriter-bg); } .ltx_page_main { margin-left: 400px; transition: margin 0.2s ease-out; padding: min(1em,1.5%) min(3em,4.5%) min(1em,1.5%) min(3em, 4.5%); width: 50%;} .ltx_TOC a { display: block; width: 100%; } -.ltx_TOC { position: fixed; overflow-y: scroll; width: 400px; background-color: #eee; transition: width 0.2s ease-out; top: 0; bottom: 0; } +.ltx_TOC { position: fixed; overflow-y: scroll; width: 400px; background-color: var(--toc-bg); transition: width 0.2s ease-out; top: 0; bottom: 0; } .ltx_TOC.show { width: 100vw; visibility: visible; } #menu { display: none; } @@ -87,11 +113,11 @@ ol[class="ltx_toclist ltx_toclist_section"]{ } .ltx_tocentry_subsection:hover, .ltx_ref.active:hover { - background-color: #ccc; + background-color: var(--toc-hover); } * .ltx_tocentry_section:hover { - background-color: #ddd; + background-color: var(--toc-accent); } @@ -105,14 +131,14 @@ ol[class="ltx_toclist ltx_toclist_section"]{ margin-right: 5px; position: relative; z-index: 100; -font-family: serif; + font-family: serif; } .ltx_tocentry.ltx_tocentry_section > .ltx_ref.active:after { content: "\2796"; /* Unicode character for "minus" sign (-) */ position: relative; z-index: 100; -font-family: serif; + font-family: serif; } /* removing +/- from any without subs*/ @@ -126,8 +152,8 @@ font-family: serif; visibility: hidden; min-width: 250px; margin-left: -125px; - background-color: #333; - color: #fff; + background-color: var(--snackbar-bg); + color: var(--snackbar-color); text-align: center; border-radius: 2px; padding: 16px; diff --git a/export/pghrtjs.js b/export/pghrtjs.js index 5139788..8d42106 100644 --- a/export/pghrtjs.js +++ b/export/pghrtjs.js @@ -1,25 +1,25 @@ // this function adds the + and functionality to the toc so that it is less scary // it's still pretty scary ngl it's a giant toc but at least it starts hidden -// also this was super cobbled togethered from searches based on the limitations at hand -// i don't know if this should be in like a main() or whatever. idk i don't code -var coll = document.querySelectorAll(".ltx_tocentry.ltx_tocentry_section > .ltx_ref"); -var i; +function tocOnClick() { + var coll = document.querySelectorAll(".ltx_tocentry.ltx_tocentry_section > .ltx_ref"); + var i; -for (i = 0; i < coll.length; i++) { - coll[i].addEventListener("click", function() { - this.classList.toggle("active"); - var content = this.nextElementSibling; - if (content) { - if (content.style.maxHeight){ - content.style.maxHeight = null; - } else { - content.style.maxHeight = content.scrollHeight + "px"; + for (i = 0; i < coll.length; i++) { + coll[i].addEventListener("click", function () { + this.classList.toggle("active"); + var content = this.nextElementSibling; + if (content) { + if (content.style.maxHeight) { + content.style.maxHeight = null; + } else { + content.style.maxHeight = content.scrollHeight + "px"; + } + } else { } + }); + // don't add the + if there's nothing to expand + if (coll[i].nextElementSibling) { } else { + coll[i].classList.add("del"); } - } else {} - }); -// don't add the + if there's nothing to expand - if (coll[i].nextElementSibling) {} else { - coll[i].classList.add("del"); } } @@ -36,4 +36,55 @@ function copyURI(evt) { var x = document.getElementById("snackbar"); x.className = "show"; setTimeout(function(){ x.className = x.className.replace("show", ""); }, 2000); -} \ No newline at end of file +} + +// source: https://stackoverflow.com/questions/56300132/how-to-override-css-prefers-color-scheme-setting +// ty jimmy banks <3 +// determines if the user has a set theme or a stored theme on load +function detectColorScheme(){ + var theme="light"; //default to light + localStorage.setItem('theme', 'light'); // not technically required + //local storage is used to override OS theme settings + if(localStorage.getItem("theme")){ + if(localStorage.getItem("theme") == "dark"){ + var theme = "dark"; + } + } else if(!window.matchMedia) { + //matchMedia method not supported + return false; + } else if(window.matchMedia("(prefers-color-scheme: dark)").matches) { + //OS theme setting detected as dark + var theme = "dark"; + } + + //dark theme preferred, set document with a `data-theme` attribute + if (theme=="dark") { + document.documentElement.setAttribute("data-theme", "dark"); + localStorage.setItem('theme', 'dark'); + // now honestly not to criticize this code i am copying too much but like + // why not reuse the theme var here? surely it's more error prone this way? + } +} + +// source: https://www.accessibilityfirst.at/posts/dark-and-light-mode-a-simple-guide-for-web-design-and-development +// add onClick to toggle theme between light and dark +function themeToggle() { + document.getElementById('theme-toggle').addEventListener('click', () => { + document.documentElement.setAttribute( + 'data-theme', + document.documentElement.getAttribute('data-theme') === 'dark' + ? 'light' + : 'dark' + ); + localStorage.setItem( + 'theme', + document.documentElement.getAttribute('data-theme') + ); + }); +} + + + +// run da functions +tocOnClick(); +detectColorScheme(); \ No newline at end of file diff --git a/pghrt.pdf b/pghrt.pdf new file mode 100644 index 0000000..e69de29 diff --git a/pghrt.tex b/pghrt.tex index 6ef082d..f387de5 100644 --- a/pghrt.tex +++ b/pghrt.tex @@ -18,7 +18,9 @@ filecolor=magenta, urlcolor=magenta, } - + +% add in an a5 pdf version + \usepackage{graphicx} \graphicspath{ {./img/} } \renewcommand{\abstractname}{DISCLAIMER} From ddaf8c3bd1a1e3fe8f37a4e5d2355225f879edfa Mon Sep 17 00:00:00 2001 From: Juicysteak117 <20595808+Juicysteak117@users.noreply.github.com> Date: Wed, 15 Oct 2025 22:51:14 -0700 Subject: [PATCH 02/13] init func --- export/pghrtjs.js | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/export/pghrtjs.js b/export/pghrtjs.js index 8d42106..73bd730 100644 --- a/export/pghrtjs.js +++ b/export/pghrtjs.js @@ -1,6 +1,6 @@ // this function adds the + and functionality to the toc so that it is less scary // it's still pretty scary ngl it's a giant toc but at least it starts hidden -function tocOnClick() { +function initTocOnClick() { var coll = document.querySelectorAll(".ltx_tocentry.ltx_tocentry_section > .ltx_ref"); var i; @@ -68,7 +68,7 @@ function detectColorScheme(){ // source: https://www.accessibilityfirst.at/posts/dark-and-light-mode-a-simple-guide-for-web-design-and-development // add onClick to toggle theme between light and dark -function themeToggle() { +function initThemeToggle() { document.getElementById('theme-toggle').addEventListener('click', () => { document.documentElement.setAttribute( 'data-theme', @@ -83,8 +83,24 @@ function themeToggle() { }); } - +// the same function except it's for font toggle +function initFontToggle() { + document.getElementById('font-toggle').addEventListener('click', () => { + document.documentElement.setAttribute( + 'data-font', + document.documentElement.getAttribute('data-font') === 'avec' + ? 'sans' + : 'avec' + ); + localStorage.setItem( + 'font', + document.documentElement.getAttribute('data-font') + ); + }); +} // run da functions -tocOnClick(); -detectColorScheme(); \ No newline at end of file +initTocOnClick(); +detectColorScheme(); +initThemeToggle(); +initFontToggle(); \ No newline at end of file From 9520de3647d6c697113b6132564eb6ee6c6aaa27 Mon Sep 17 00:00:00 2001 From: Juicysteak117 <20595808+Juicysteak117@users.noreply.github.com> Date: Thu, 16 Oct 2025 00:27:42 -0700 Subject: [PATCH 03/13] adding button styling (html TK) and set theme colors; mobile button styling TK --- export/pghrtcss.css | 66 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 54 insertions(+), 12 deletions(-) diff --git a/export/pghrtcss.css b/export/pghrtcss.css index 71543d7..58f3f88 100644 --- a/export/pghrtcss.css +++ b/export/pghrtcss.css @@ -24,25 +24,31 @@ --link-color:blue; --main-bg: #fff; --toc-bg: #eee; - --toc-hover: #ccc; --toc-accent: #ddd; + --toc-hover: #ccc; --typewriter-bg: #ddd; --snackbar-bg: #333; --snackbar-color: #fff; + --table-border-color: #000; + /* set the font to avec */ } [data-theme="dark"] { - --font-color: #000; - --link-color:blue; - --main-bg: #fff; - --toc-bg: #eee; - --toc-hover: #ccc; - --toc-accent: #ddd; - --typewriter-bg: #ddd; + --font-color: #eee; + --link-color: #00cfff; + --main-bg: #121212; + --toc-bg: #323232; + --toc-accent: #242424; + --toc-hover: #161616; + --typewriter-bg: #323232; --snackbar-bg: #333; - --snackbar-color: #fff; + --snackbar-color: #eee; + --table-border-color: #eee; } +[data-theme="sans"] { +/* set the font to sans */ +} body { font-family: 'crm'; @@ -50,9 +56,11 @@ body { margin: 0; font-size: 17px; font-variant-ligatures: none; + background: var(--main-bg); + color: var(--font-color); } -.ltx_TOC a:link, .ltx_TOC a:visited, .ltx_p a:link, .ltx_p a:visited { color: var(--link-color) !important; } +.ltx_TOC a:link, .ltx_TOC a:visited, .ltx_p a:link, .ltx_p a:visited, a.ltx_LaTeXML_logo:visited{ color: var(--link-color) !important; } .ltx_personname a:link, .ltx_personname a:visited { color: fuchsia; } .ltx_title_abstract, .ltx_title, .ltx_font_bold { font-family: 'bold'; font-weight: bold;} @@ -73,10 +81,12 @@ body { .ltx_page_main { margin-left: 400px; transition: margin 0.2s ease-out; padding: min(1em,1.5%) min(3em,4.5%) min(1em,1.5%) min(3em, 4.5%); width: 50%;} .ltx_TOC a { display: block; width: 100%; } -.ltx_TOC { position: fixed; overflow-y: scroll; width: 400px; background-color: var(--toc-bg); transition: width 0.2s ease-out; top: 0; bottom: 0; } +.ltx_TOC { position: fixed; overflow-y: scroll; width: 400px; background-color: var(--toc-bg); transition: width 0.2s ease-out; top: 0; bottom: 0; border-right: 2px solid var(--toc-accent);} .ltx_TOC.show { width: 100vw; visibility: visible; } #menu { display: none; } +.ltx_border_tt, .ltx_border_t, .ltx_border_bb { border-color: var(--table-border-color); } + .ltx_toclist { padding: 0; } .ltx_tocentry { padding-left: 20px } @@ -170,6 +180,38 @@ ol[class="ltx_toclist ltx_toclist_section"]{ animation: fadein 0.5s, fadeout 0.5s 2.5s; } +/* styling the toggle buttons, which yes i know this is cursed */ + +#theme-toggle, #font-toggle { + position: fixed; + top: 0; + right: 0; + width: 80px; + height: 80px; + font-size: 80px; + color: var(--font-color); + line-height: 0; + padding-bottom: 9px; + border-radius: 0; + border: 2px solid var(--toc-accent); + background: var(--toc-bg); + cursor: pointer; +} + +#theme-toggle:hover, #font-toggle:hover { + background: var(--toc-hover); +} + +/* BELIEVE ME, i know this is cursed. YOU try having a generated html output that you're adding amendments to with sloppy code injection! AND also clearly defined content layout requirements based on the project requirements. i don't need to over engineer this, okay!? */ +#font-toggle { + top: 80px; + border-top: 0; + font-size: 55px; + padding-bottom: 6px; + padding-right: 1px; + font-family: 'crm'; +} + @-webkit-keyframes fadein { from {bottom: 0; opacity: 0;} to {bottom: 30px; opacity: 1;} @@ -191,7 +233,7 @@ ol[class="ltx_toclist ltx_toclist_section"]{ } @media screen AND (max-width:1000px) { - .ltx_TOC { width: 0; visibility: hidden; top: 5vh; } + .ltx_TOC { width: 0; visibility: hidden; top: 5vh; border-right: none; } #menu { display: block; width: 100%; padding: 0; border-radius: 0; border-top: none; border-left: none; border-right: none;} .header { display: block; position: sticky; width: 100%; top: 0; padding: 0;} .ltx_page_main { margin: 0px; width: 90% !important;} From 607ef76589bba0c9b3dc6f707b3a2a6763e67883 Mon Sep 17 00:00:00 2001 From: Juicysteak117 <20595808+Juicysteak117@users.noreply.github.com> Date: Thu, 16 Oct 2025 11:21:53 -0700 Subject: [PATCH 04/13] fixed the color detector to actually work. important to make functions do what you want them to do. --- export/pghrtjs.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/export/pghrtjs.js b/export/pghrtjs.js index 73bd730..f2a7bbe 100644 --- a/export/pghrtjs.js +++ b/export/pghrtjs.js @@ -43,7 +43,6 @@ function copyURI(evt) { // determines if the user has a set theme or a stored theme on load function detectColorScheme(){ var theme="light"; //default to light - localStorage.setItem('theme', 'light'); // not technically required //local storage is used to override OS theme settings if(localStorage.getItem("theme")){ if(localStorage.getItem("theme") == "dark"){ @@ -63,6 +62,7 @@ function detectColorScheme(){ localStorage.setItem('theme', 'dark'); // now honestly not to criticize this code i am copying too much but like // why not reuse the theme var here? surely it's more error prone this way? + // is there some sort of perf diff in js this way? surely not? nerds, assemble } } @@ -84,6 +84,7 @@ function initThemeToggle() { } // the same function except it's for font toggle +// btw i think i'm a little funny for the var naming function initFontToggle() { document.getElementById('font-toggle').addEventListener('click', () => { document.documentElement.setAttribute( From 3104d9b7f9d42634b9348842e59ecde9999944ea Mon Sep 17 00:00:00 2001 From: Juicysteak117 <20595808+Juicysteak117@users.noreply.github.com> Date: Thu, 16 Oct 2025 17:25:08 -0700 Subject: [PATCH 05/13] web design is not my passion (font toggle works) --- export/font/{bold.otf => crmb.otf} | Bin export/font/{boit.otf => crmbi.otf} | Bin export/font/{italics.otf => crmi.otf} | Bin export/pghrtcss.css | 52 +++++++++++++++----------- export/pghrtjs.js | 52 ++++++++++++++------------ 5 files changed, 59 insertions(+), 45 deletions(-) rename export/font/{bold.otf => crmb.otf} (100%) rename export/font/{boit.otf => crmbi.otf} (100%) rename export/font/{italics.otf => crmi.otf} (100%) diff --git a/export/font/bold.otf b/export/font/crmb.otf similarity index 100% rename from export/font/bold.otf rename to export/font/crmb.otf diff --git a/export/font/boit.otf b/export/font/crmbi.otf similarity index 100% rename from export/font/boit.otf rename to export/font/crmbi.otf diff --git a/export/font/italics.otf b/export/font/crmi.otf similarity index 100% rename from export/font/italics.otf rename to export/font/crmi.otf diff --git a/export/pghrtcss.css b/export/pghrtcss.css index 58f3f88..2760bb0 100644 --- a/export/pghrtcss.css +++ b/export/pghrtcss.css @@ -1,21 +1,19 @@ -@font-face { - font-family: 'bold'; - src: url('font/bold.otf') format('opentype'); -} - -@font-face { - font-family: 'ital'; - src: url('font/italics.otf') format('opentype'); -} - +/* avec - computer modern */ @font-face { font-family: 'crm'; src: url('font/crm.otf') format('opentype'); } - @font-face { - font-family: 'boit'; - src: url('font/boit.otf') format('opentype'); + font-family: 'crmb'; + src: url('font/crmb.otf') format('opentype'); +} +@font-face { + font-family: 'crmi'; + src: url('font/crmi.otf') format('opentype'); +} +@font-face { + font-family: 'crmbi'; + src: url('font/crmbi.otf') format('opentype'); } /*default for light*/ @@ -30,7 +28,10 @@ --snackbar-bg: #333; --snackbar-color: #fff; --table-border-color: #000; - /* set the font to avec */ + --font: 'crm'; + --font-i: 'crmi'; + --font-b: 'crmb'; + --font-bi: 'crmbi'; } [data-theme="dark"] { @@ -46,12 +47,17 @@ --table-border-color: #eee; } -[data-theme="sans"] { -/* set the font to sans */ +/* i changed how i wanted to do this and now it's annoyingly repeititive but that's fineeee*/ +/* i'm gonna be honest i don't actually LIKE web design you feel me? */ +[data-font="sans"] { + --font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + --font-i: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + --font-b: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + --font-bi: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; } body { - font-family: 'crm'; + font-family: var(--font); padding: 0 0px 0 0; margin: 0; font-size: 17px; @@ -63,9 +69,10 @@ body { .ltx_TOC a:link, .ltx_TOC a:visited, .ltx_p a:link, .ltx_p a:visited, a.ltx_LaTeXML_logo:visited{ color: var(--link-color) !important; } .ltx_personname a:link, .ltx_personname a:visited { color: fuchsia; } -.ltx_title_abstract, .ltx_title, .ltx_font_bold { font-family: 'bold'; font-weight: bold;} -.ltx_font_italic { font-family: 'ital';} -.ltx_font_bold.ltx_font_italic { font-family: 'boit' !important; } +.ltx_title_abstract, .ltx_title, .ltx_font_bold { font-family: var(--font-b);} +.ltx_font_italic { font-family: var(--font-i);} +.ltx_font_bold.ltx_font_italic, .ltx_title .ltx_font_italic { font-family: var(--font-bi) !important; } +.ltx_title_subsection, .ltx_title, .ltx_font_bold { font-weight: bold; } #menu { content: '\09776'; @@ -76,7 +83,7 @@ body { .header { display: none; } .ltx_font_typewriter { - background-color: var(--typewriter-bg); + background-color: var(--typewriter-bg); } .ltx_page_main { margin-left: 400px; transition: margin 0.2s ease-out; padding: min(1em,1.5%) min(3em,4.5%) min(1em,1.5%) min(3em, 4.5%); width: 50%;} @@ -90,7 +97,7 @@ body { .ltx_toclist { padding: 0; } .ltx_tocentry { padding-left: 20px } -.ltx_title_contents {text-align:center; font-size: 120%; font-weight:bold; margin-top: 1em; margin-bottom: 1em; } +.ltx_title_contents {text-align:center; font-size: 120%; margin-top: 1em; margin-bottom: 1em; } .ltx_tag_section { margin-right: .5em } .ltx_p { line-height: 1.4; text-align: justify; } @@ -209,6 +216,7 @@ ol[class="ltx_toclist ltx_toclist_section"]{ font-size: 55px; padding-bottom: 6px; padding-right: 1px; + padding-left: 4px; font-family: 'crm'; } diff --git a/export/pghrtjs.js b/export/pghrtjs.js index f2a7bbe..8ed9628 100644 --- a/export/pghrtjs.js +++ b/export/pghrtjs.js @@ -39,31 +39,36 @@ function copyURI(evt) { } // source: https://stackoverflow.com/questions/56300132/how-to-override-css-prefers-color-scheme-setting -// ty jimmy banks <3 +// ty jimmy banks // determines if the user has a set theme or a stored theme on load -function detectColorScheme(){ - var theme="light"; //default to light - //local storage is used to override OS theme settings - if(localStorage.getItem("theme")){ - if(localStorage.getItem("theme") == "dark"){ - var theme = "dark"; - } - } else if(!window.matchMedia) { - //matchMedia method not supported - return false; - } else if(window.matchMedia("(prefers-color-scheme: dark)").matches) { - //OS theme setting detected as dark - var theme = "dark"; - } +function detectColorScheme() { + // check if already saved dark + if (localStorage.getItem("theme")) { + if (localStorage.getItem("theme") == "dark") { + document.documentElement.setAttribute("data-theme", "dark"); + } + } else if (window.matchMedia("(prefers-color-scheme: dark)").matches) { + // set to dark if OS preferred + document.documentElement.setAttribute("data-theme", "dark"); + localStorage.setItem('theme', 'dark'); + } else { + // default light otherwise + document.documentElement.setAttribute("data-theme", "light"); + localStorage.setItem('theme', 'light'); + } +} - //dark theme preferred, set document with a `data-theme` attribute - if (theme=="dark") { - document.documentElement.setAttribute("data-theme", "dark"); - localStorage.setItem('theme', 'dark'); - // now honestly not to criticize this code i am copying too much but like - // why not reuse the theme var here? surely it's more error prone this way? - // is there some sort of perf diff in js this way? surely not? nerds, assemble - } +function detectFont(){ + // check if user wants sans + if (localStorage.getItem("font") == "sans") { + document.documentElement.setAttribute("data-font", "sans"); + localStorage.setItem('font', 'sans'); + } + else { + // otherwise give avec + document.documentElement.setAttribute("data-font", "avec"); + localStorage.setItem('font', 'avec'); + } } // source: https://www.accessibilityfirst.at/posts/dark-and-light-mode-a-simple-guide-for-web-design-and-development @@ -103,5 +108,6 @@ function initFontToggle() { // run da functions initTocOnClick(); detectColorScheme(); +detectFont(); initThemeToggle(); initFontToggle(); \ No newline at end of file From 5474a34e31ded9e5f9c14c49410ed8388f943130 Mon Sep 17 00:00:00 2001 From: Juicysteak117 <20595808+Juicysteak117@users.noreply.github.com> Date: Thu, 16 Oct 2025 19:56:47 -0700 Subject: [PATCH 06/13] web dev is so cool i love when things don't work right --- pghrt.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pghrt.tex b/pghrt.tex index f387de5..2b8e7be 100644 --- a/pghrt.tex +++ b/pghrt.tex @@ -1281,7 +1281,7 @@ The author declares an attraction towards women and acknowledges a potential con Though the text is primarily my voice, this document would not be even half as good without the contributions, feedback, and suggestions from others involved at every step along the way. A good reminder as ever that transition is not something best done alone. -Many thanks to Q, R, RM, and S in alphabetical order for close review and generally being fun nerds to talk to; love y’all. Special thanks to CB and J for close review that also inspired some very good bits. Thanks to KG for additional intersex information. Thanks to w [sic] for additional injection resources. Thanks to BIR collectively for a plethora of crucial nerd nitpicks. Appreciation for general review from C, JTP, K, S, and V. Thanks to everyone on Bluesky who encouraged me to write this up in the first place, and everyone over the years sharing knowledge. And of course: much appreciation to all HRT nerds, even when we disagree, since we’re all trying to do the best for our community where we’ve otherwise been let down. Keep up the good work everyone. +Many thanks to Q, R, RM, and S in alphabetical order for close review and generally being fun nerds to talk to; love y’all. Special thanks to CB and J for close review that also inspired some very good bits. Thanks to KG for additional intersex information. Thanks to w [sic] for additional injection resources. Thanks to BIR collectively for a plethora of crucial nerd nitpicks. Appreciation for general review from C, JTP, K, S, and V. Thanks to E for web dev assistance. Thanks to everyone on Bluesky who encouraged me to write this up in the first place, and everyone over the years sharing knowledge. And of course: much appreciation to all HRT nerds, even when we disagree, since we’re all trying to do the best for our community where we’ve otherwise been let down. Keep up the good work everyone. Shout out to my IB Chemistry HL teacher many years ago who quite reasonably doubted my studiousness even though I’m now putting much of that knowledge to use for the art of transsexuality; go figure. From a801db7594adfd8a9f9f1606166c476bd6749203 Mon Sep 17 00:00:00 2001 From: Juicysteak117 <20595808+Juicysteak117@users.noreply.github.com> Date: Thu, 16 Oct 2025 21:46:57 -0700 Subject: [PATCH 07/13] she soups.... she scores!!! --- soup.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/soup.py b/soup.py index d0a3734..9056160 100644 --- a/soup.py +++ b/soup.py @@ -15,6 +15,21 @@ menu = soup.new_tag( header = soup.new_tag('div', **{'class':'header'}) header.append(menu) +# Create toggle buttons, header, and nest +toggles = soup.new_tag('div', **{'class':'togglebuttons'}) +menu = soup.new_tag( + 'button', + id='theme-toggle', + string='☀', +) +toggles.append(menu) +menu = soup.new_tag( + 'button', + id='font-toggle', + string='Aa', +) +toggles.append(menu) + # Extract nav toc = soup.body.find('div', class_='ltx_page_main').nav.extract() @@ -34,7 +49,7 @@ toast = soup.new_tag ( ) # Prepend header and toc into body -soup.body.insert(0, toast, header, toc) +soup.body.insert(0, toast, toggles, header, toc) # Add header info tags # i don't know if there's a better way to do all of these in a batch but like eh w/e From d9ebeee4a1898f268b779e9b942ae278b8796e77 Mon Sep 17 00:00:00 2001 From: Juicysteak117 <20595808+Juicysteak117@users.noreply.github.com> Date: Thu, 16 Oct 2025 22:40:47 -0700 Subject: [PATCH 08/13] mobile buttons. if they look bad on your device, get a new phone --- export/pghrtcss.css | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/export/pghrtcss.css b/export/pghrtcss.css index 2760bb0..4c68f22 100644 --- a/export/pghrtcss.css +++ b/export/pghrtcss.css @@ -32,6 +32,7 @@ --font-i: 'crmi'; --font-b: 'crmb'; --font-bi: 'crmbi'; + --mobile-button: min(5vh, 80px); } [data-theme="dark"] { @@ -242,11 +243,13 @@ ol[class="ltx_toclist ltx_toclist_section"]{ @media screen AND (max-width:1000px) { .ltx_TOC { width: 0; visibility: hidden; top: 5vh; border-right: none; } - #menu { display: block; width: 100%; padding: 0; border-radius: 0; border-top: none; border-left: none; border-right: none;} + #menu { display: block; width: 100%; padding: 0; border-radius: 0; border-top: none; border-left: none; border-right: none; background: var(--toc-bg);color: var(--font); border-bottom: 2px solid var(--toc-hover);} .header { display: block; position: sticky; width: 100%; top: 0; padding: 0;} .ltx_page_main { margin: 0px; width: 90% !important;} .ltx_eqn_table {width: 90% !important;} - + #theme-toggle, #font-toggle {height: var(--mobile-button); width: var(--mobile-button); font-size: 30px; border-right: none; min-width: 45px; } + #theme-toggle { top: 5vh; border-top: none;} + #font-toggle {top: calc(2 * var(--mobile-button)); } .ltx_tocentry.ltx_tocentry_section > .ltx_ref:after { margin-right: 20px; } } From e6633f9ce239f22371afe967cf7354bdfccadea2 Mon Sep 17 00:00:00 2001 From: Juicysteak117 <20595808+Juicysteak117@users.noreply.github.com> Date: Thu, 16 Oct 2025 23:08:41 -0700 Subject: [PATCH 09/13] "katie what's the Human Pet Guy axis?" oh i guess i should link that huh. and technically this could go straight to main but i don't wanna have to figure out how to swap branches rn tbh --- pghrt.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pghrt.tex b/pghrt.tex index 2b8e7be..e70b941 100644 --- a/pghrt.tex +++ b/pghrt.tex @@ -164,7 +164,7 @@ Generally, no. A properly dosed and spaced injection cycle that provides consist \subsection{How does monotherapy work?}\label{2-3} -In simple terms, the brain does not care which hormone it has, just as long as it has enough. If there are consistently enough hormones in your body, it stops producing more. The “consistent” part is what injections are capable of that other administration routes struggle with. Trying to do sufficient monotherapy on pills, for instance, is very likely impossible in most situations. In more specific terms regarding the HPG axis, \textit{luteinizing hormone} (LH) and \textit{follicle-stimulating hormone} (FSH) are suppressed by increased serum \textit{estradiol} levels, thus inhibiting GnRH production and by extension testosterone production in the testes. +In simple terms, the brain does not care which hormone it has, just as long as it has enough. If there are consistently enough hormones in your body, it stops producing more. The “consistent” part is what injections are capable of that other administration routes struggle with. Trying to do sufficient monotherapy on pills, for instance, is very likely impossible in most situations. In more specific terms regarding \href{https://en.wikipedia.org/wiki/Hypothalamic%E2%80%93pituitary%E2%80%93gonadal_axis}{the HPG axis}, \textit{luteinizing hormone} (LH) and \textit{follicle-stimulating hormone} (FSH) are suppressed by increased serum \textit{estradiol} levels, thus inhibiting GnRH production and by extension testosterone production in the testes. \subsection{How are injections safer?} @@ -1148,7 +1148,7 @@ No. I honestly have no idea where or why this joke started that people now take \subsection{How does HRT affect fertility?}\label{11-42} -It is important to understand that this is extremely understudied so exact figures cannot be stated, and given the seriousness of pregnancy, I urge you to practice safe sex and lean on the side of caution where possible. HRT itself can, and likely will, make you infertile eventually, but only through full suppression of the HPG axis (See Question \ref{2-3}) over a long time span. In other words, if you haven't had bottom surgery of any kind and you are on an HRT regimen that is less capable of HPG axis suppression (such as pills), then this is more of a consideration. +It is important to understand that this is extremely understudied so exact figures cannot be stated, and given the seriousness of pregnancy, I urge you to practice safe sex and lean on the side of caution where possible. HRT itself can, and likely will, make you infertile eventually, but only through full suppression of \href{https://en.wikipedia.org/wiki/Hypothalamic%E2%80%93pituitary%E2%80%93gonadal_axis}{the HPG axis} (See Question \ref{2-3}) over a long time span. In other words, if you haven't had bottom surgery of any kind and you are on an HRT regimen that is less capable of HPG axis suppression (such as pills), then this is more of a consideration. \textbf{If the HPG axis is not suppressed then it is fully possible to impregnate someone}, and the timeline for sperm maturation is long enough that this is true even after the HPG axis has been initially suppressed for \textbf{multiple months}. Please take this very seriously. Full HPG axis suppression for at minimum six months, perhaps closer to a year out of an abundance of caution, is recommended. From 73948573da713564cfced3887edbfb259d4e86e8 Mon Sep 17 00:00:00 2001 From: Juicysteak117 <20595808+Juicysteak117@users.noreply.github.com> Date: Thu, 16 Oct 2025 23:56:38 -0700 Subject: [PATCH 10/13] and also the Z track method oops --- pghrt.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pghrt.tex b/pghrt.tex index e70b941..d3e7df0 100644 --- a/pghrt.tex +++ b/pghrt.tex @@ -742,7 +742,7 @@ No. While you obviously do not want to inject just air and it can affect dosage \subsection{Some of the fluid leaked out. Was my injection wasted and/or will I die?} -No. Leakage can happen for any number of reasons and is rarely enough to make a difference, so you do not need to do another injection. For the future, make sure to leave the needle in for 5-10 seconds before retracting and then apply pressure afterwards. You might consider using the air lock technique mentioned above if you are particularly concerned about leakage. +No. Leakage can happen for any number of reasons and is rarely enough to make a difference, so you do not need to do another injection. For the future, make sure to leave the needle in for 5-10 seconds before retracting and then apply pressure afterwards. You might consider using the air lock technique mentioned above or \href{https://www.nurse.com/nursing-resources/definitions/what-is-z-track-method/}{the Z-track method} if you are particularly concerned about leakage. \subsection{Sometimes I am really sore after an injection. Will I die?} From 57e4496fe806145945d57124e9919fd06e1a35bf Mon Sep 17 00:00:00 2001 From: Juicysteak117 <20595808+Juicysteak117@users.noreply.github.com> Date: Fri, 17 Oct 2025 00:40:48 -0700 Subject: [PATCH 11/13] oh that *should* be centered now shouldn't it --- export/pghrtcss.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/export/pghrtcss.css b/export/pghrtcss.css index 4c68f22..94458d5 100644 --- a/export/pghrtcss.css +++ b/export/pghrtcss.css @@ -245,7 +245,7 @@ ol[class="ltx_toclist ltx_toclist_section"]{ .ltx_TOC { width: 0; visibility: hidden; top: 5vh; border-right: none; } #menu { display: block; width: 100%; padding: 0; border-radius: 0; border-top: none; border-left: none; border-right: none; background: var(--toc-bg);color: var(--font); border-bottom: 2px solid var(--toc-hover);} .header { display: block; position: sticky; width: 100%; top: 0; padding: 0;} - .ltx_page_main { margin: 0px; width: 90% !important;} + .ltx_page_main { margin: auto; width: 90% !important;} .ltx_eqn_table {width: 90% !important;} #theme-toggle, #font-toggle {height: var(--mobile-button); width: var(--mobile-button); font-size: 30px; border-right: none; min-width: 45px; } #theme-toggle { top: 5vh; border-top: none;} From 96f51d895525efd350bf4714a0a3181b4a6780ea Mon Sep 17 00:00:00 2001 From: Juicysteak117 <20595808+Juicysteak117@users.noreply.github.com> Date: Fri, 17 Oct 2025 00:42:46 -0700 Subject: [PATCH 12/13] we're golden babyyyyyyyy --- export/index.html | 23 +- export/pghrt.pdf | 4711 +++++++++++++++++++++++---------------------- pghrt.pdf | 0 pghrt.tex | 6 +- 4 files changed, 2389 insertions(+), 2351 deletions(-) delete mode 100644 pghrt.pdf diff --git a/export/index.html b/export/index.html index b7fa93f..3a344ac 100644 --- a/export/index.html +++ b/export/index.html @@ -3,8 +3,8 @@ A PRACTICAL GUIDE TO FEMINIZING HRT - - + + @@ -17,7 +17,7 @@ -
Link Copied!