arnaucube
arnaucube/arnaucube.comPublic Self-hosted repository
arnaucube.com/blogo-input/index.html
blogo-input/index.htmlRaw
  1<!DOCTYPE html>
  2<html lang="en">
  3
  4  <head>
  5    <meta name="description" content="[blogo-summary]" />
  6    <meta charset="utf-8">
  7    <title>[blogo-title]</title>
  8    <meta name="title" content="[blogo-title]">
  9    <meta name="description" content="[blogo-summary]">
 10
 11    <meta property="og:title" content="[blogo-title]" />
 12    <meta property="og:description" content="[blogo-summary]" />
 13    <meta property="og:url" content="[blogo-link]" />
 14    <meta property="og:type" content="article" />
 15    <meta property="og:image" content="[blogo-img]" />
 16    <meta name="twitter:title" content="[blogo-title]">
 17    <meta name="twitter:description" content="[blogo-summary]">
 18    <meta name="twitter:image" content="[blogo-img]">
 19    <meta name="twitter:card" content="summary_large_image">
 20    <meta name="author" content="arnaucube">
 21
 22    <link rel="icon" type="image/png" href="img/logoArnauCubeFavicon.png">
 23
 24    <meta name="viewport" content="width=device-width, initial-scale=1">
 25
 26    <link href="css/bootstrap.min.css" rel="stylesheet">
 27    <link rel="stylesheet" href="css/style.css">
 28
 29    <!-- highlightjs -->
 30    <!-- <link rel="stylesheet" href="js/highlightjs/atom-one-dark.css"> -->
 31    <link rel="stylesheet" href="js/highlightjs/atom-one-light.css">
 32    <!-- <link rel="stylesheet" href="js/highlightjs/gruvbox-dark.css"> -->
 33    <script src="js/highlightjs/highlight.pack.js"></script>
 34
 35    <!-- katex -->
 36    <link rel="stylesheet" href="js/katex/katex.min.css">
 37  </head>
 38
 39  <body>
 40
 41    <!-- o_gradient_background" -->
 42    <nav id="mainNav" class="navbar navbar-default navbar-fixed-top"
 43                      style="height:50px;font-size:100%;">
 44      <div class="container">
 45        <div style="float:left;">
 46        <a href="/blog" style="color:#000;display:inline-block;">blog</a>
 47        <span style="margin-right:20px; margin-left:20px;">|</span>
 48        <a href="/blog/notes.html" style="font-size:90%;color:#000;display:inline-block;">notes</a>
 49        </div>
 50        <div style="float:right;">
 51          <a href="/" style="color:#000;display:inline-block;margin-right:10px;">arnaucube.com</a>
 52          <a href="/blog/rss.xml" target="_blank"
 53            type="application/rss+xml" title="subscribe via RSS" aria-label="subscribe via RSS">
 54              <img width="12px;" src="img/rss.png" />
 55          </a>
 56          <div class="onoffswitch" style="margin-left:0px;display:inline-block;" title="change theme">
 57            <input onclick="switchTheme()" type="checkbox" name="onoffswitch" class="onoffswitch-checkbox"
 58              id="themeSwitcher">
 59            <label class="onoffswitch-label" for="themeSwitcher"></label>
 60          </div>
 61        </div>
 62      </div>
 63      <!-- <img style="height:5px; width:100%; margin-top:8px;" src="img/gradient-line.jpg" /> -->
 64    </nav>
 65
 66
 67    <div class="container" style="max-width:800px;">
 68        <br>
 69        <div style="background:#cccccc; border:2px gray solid; padding:5px; width:80%;margin-left:auto; margin-right:auto; margin-bottom:5px;">
 70          <i>Note: this blog is human-written, no AI generated content.</i>
 71        </div>
 72
 73      [blogo-content]
 74    </div>
 75
 76    <footer style="text-align:center; margin-top:100px;margin-bottom:50px;">
 77      <div class="container">
 78        <br>
 79        <a href="/blog">Go to main</a>
 80        <br><br>
 81        <div class="row">
 82          <ul class="list-inline">
 83            <li><a href="https://twitter.com/arnaucube"
 84                   style="color:gray;text-decoration:none;"
 85                   target="_blank">twitter.com/arnaucube</a>
 86            </li>
 87            <li><a href="https://github.com/arnaucube"
 88                   style="color:gray;text-decoration:none;"
 89                   target="_blank">github.com/arnaucube</a>
 90            </li>
 91          </ul>
 92        </div>
 93        <div class="row" style="display:inline-block;">
 94          Blog made with <a href="http://github.com/arnaucube/blogo/"
 95                            target="_blank" style="color: gray;text-decoration:none;">Blogo</a>
 96        </div>
 97      </div>
 98    </footer>
 99
100    <script>
101    </script>
102    <script src="js/external-links.js"></script>
103    <script>hljs.initHighlightingOnLoad();</script>
104    <script defer src="js/katex/katex.min.js"></script>
105    <script defer src="js/katex/auto-render.min.js"></script>
106    <script>
107      document.addEventListener("DOMContentLoaded", function() {
108        renderMathInElement(document.body, {
109          displayMode: false,
110          // customised options
111          // • auto-render specific keys, e.g.:
112          delimiters: [
113            {left: '$$', right: '$$', display: true},
114            {left: '$', right: '$', display: false},
115            {left: "\\[", right: "\\]", display: true},
116            {left: "\\(", right: "\\)", display: false},
117            {left: "\\begin{equation}", right: "\\end{equation}", display: true}
118          ],
119          // • rendering keys, e.g.:
120          throwOnError : true
121        });
122      });
123
124      ///
125      let theme = localStorage.getItem("theme");
126      if ((theme === "light-theme")||(theme==null)) {
127          theme = "light-theme";
128          document.getElementById("themeSwitcher").checked = false;
129      } else if (theme === "dark-theme") {
130          theme = "dark-theme";
131          document.getElementById("themeSwitcher").checked = true;
132      }
133      document.body.className = theme;
134      localStorage.setItem("theme", theme);
135
136      function switchTheme() {
137        theme = localStorage.getItem("theme");
138        if (theme === "light-theme") {
139          theme = "dark-theme";
140          document.getElementById("themeSwitcher").checked = true;
141        } else {
142          theme = "light-theme";
143          document.getElementById("themeSwitcher").checked = false;
144        }
145        document.body.className = theme;
146        localStorage.setItem("theme", theme);
147
148        console.log(theme);
149      }
150    </script>
151    <script>
152    function tagLinks(tagName) {
153      var tags = document.getElementsByTagName(tagName);
154      for (var i=0, hElem; hElem =  tags[i]; i++) {
155        if (hElem.parentNode.className=="row postThumb") {
156          continue;
157        }
158        hElem.id = hElem.innerHTML.toLowerCase().replace(" ", "-");
159        hElem.innerHTML = "<a style='color:black!important;' href='#"+hElem.id+"'>"+hElem.innerHTML+"</a>";
160      }
161    }
162    tagLinks("h2");
163    tagLinks("h3");
164    tagLinks("h4");
165    tagLinks("h5");
166    </script>
167    <script>
168function generateTOC(tocContainerId = "toc") {
169    const tocContainer = document.getElementById(tocContainerId);
170    if (!tocContainer) return;
171
172    const headings = document.querySelectorAll("h2, h3, h4, h5, h6");
173    if (!headings.length) return;
174
175    // Generate IDs if missing
176    headings.forEach((heading, index) => {
177        if (!heading.id) {
178            heading.id =
179                heading.textContent
180                    .trim()
181                    .toLowerCase()
182                    .replace(/[^\w\s-]/g, "")
183                    .replace(/\s+/g, "-") +
184                "-" +
185                index;
186        }
187    });
188
189    const toc = document.createElement("ul");
190    let currentLevel = 1;
191    let currentList = toc;
192    const stack = [toc];
193
194    headings.forEach((heading) => {
195        const level = parseInt(heading.tagName.substring(1), 10);
196
197        const li = document.createElement("li");
198        const a = document.createElement("a");
199
200        a.href = "#" + heading.id;
201        a.textContent = heading.textContent;
202
203        li.appendChild(a);
204
205        if (level > currentLevel) {
206            for (let i = currentLevel; i < level; i++) {
207                const nestedList = document.createElement("ul");
208
209                const lastLi =
210                    currentList.lastElementChild ||
211                    currentList.appendChild(document.createElement("ul"));
212
213                lastLi.appendChild(nestedList);
214
215                stack.push(nestedList);
216                currentList = nestedList;
217            }
218        } else if (level < currentLevel) {
219            for (let i = currentLevel; i > level; i--) {
220                stack.pop();
221            }
222            currentList = stack[stack.length - 1];
223        }
224
225        currentList.appendChild(li);
226        currentLevel = level;
227    });
228
229    tocContainer.innerHTML = "";
230    tocContainer.appendChild(toc);
231}
232
233document.addEventListener("DOMContentLoaded", () => {
234    generateTOC();
235});
236    </script>
237    <script src="js/mermaid.min.js"></script>
238
239  </body>
240</html>