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="/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>