Files
org_roam/output/20250806155335-emacs_stuff_org_publish.html

618 lines
20 KiB
HTML
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2025-12-28 Sun 20:49 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>emacs-stuff-org-publish</title>
<meta name="generator" content="Org Mode" />
<style type="text/css">
#content { max-width: 60em; margin: auto; }
.title { text-align: center;
margin-bottom: .2em; }
.subtitle { text-align: center;
font-size: medium;
font-weight: bold;
margin-top:0; }
.todo { font-family: monospace; color: red; }
.done { font-family: monospace; color: green; }
.priority { font-family: monospace; color: orange; }
.tag { background-color: #eee; font-family: monospace;
padding: 2px; font-size: 80%; font-weight: normal; }
.timestamp { color: #bebebe; }
.timestamp-kwd { color: #5f9ea0; }
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
.underline { text-decoration: underline; }
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
p.verse { margin-left: 3%; }
pre {
border: 1px solid #e6e6e6;
border-radius: 3px;
background-color: #f2f2f2;
padding: 8pt;
font-family: monospace;
overflow: auto;
margin: 1.2em;
}
pre.src {
position: relative;
overflow: auto;
}
pre.src:before {
display: none;
position: absolute;
top: -8px;
right: 12px;
padding: 3px;
color: #555;
background-color: #f2f2f299;
}
pre.src:hover:before { display: inline; margin-top: 14px;}
/* Languages per Org manual */
pre.src-asymptote:before { content: 'Asymptote'; }
pre.src-awk:before { content: 'Awk'; }
pre.src-authinfo::before { content: 'Authinfo'; }
pre.src-C:before { content: 'C'; }
/* pre.src-C++ doesn't work in CSS */
pre.src-clojure:before { content: 'Clojure'; }
pre.src-css:before { content: 'CSS'; }
pre.src-D:before { content: 'D'; }
pre.src-ditaa:before { content: 'ditaa'; }
pre.src-dot:before { content: 'Graphviz'; }
pre.src-calc:before { content: 'Emacs Calc'; }
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
pre.src-fortran:before { content: 'Fortran'; }
pre.src-gnuplot:before { content: 'gnuplot'; }
pre.src-haskell:before { content: 'Haskell'; }
pre.src-hledger:before { content: 'hledger'; }
pre.src-java:before { content: 'Java'; }
pre.src-js:before { content: 'Javascript'; }
pre.src-latex:before { content: 'LaTeX'; }
pre.src-ledger:before { content: 'Ledger'; }
pre.src-lisp:before { content: 'Lisp'; }
pre.src-lilypond:before { content: 'Lilypond'; }
pre.src-lua:before { content: 'Lua'; }
pre.src-matlab:before { content: 'MATLAB'; }
pre.src-mscgen:before { content: 'Mscgen'; }
pre.src-ocaml:before { content: 'Objective Caml'; }
pre.src-octave:before { content: 'Octave'; }
pre.src-org:before { content: 'Org mode'; }
pre.src-oz:before { content: 'OZ'; }
pre.src-plantuml:before { content: 'Plantuml'; }
pre.src-processing:before { content: 'Processing.js'; }
pre.src-python:before { content: 'Python'; }
pre.src-R:before { content: 'R'; }
pre.src-ruby:before { content: 'Ruby'; }
pre.src-sass:before { content: 'Sass'; }
pre.src-scheme:before { content: 'Scheme'; }
pre.src-screen:before { content: 'Gnu Screen'; }
pre.src-sed:before { content: 'Sed'; }
pre.src-sh:before { content: 'shell'; }
pre.src-sql:before { content: 'SQL'; }
pre.src-sqlite:before { content: 'SQLite'; }
/* additional languages in org.el's org-babel-load-languages alist */
pre.src-forth:before { content: 'Forth'; }
pre.src-io:before { content: 'IO'; }
pre.src-J:before { content: 'J'; }
pre.src-makefile:before { content: 'Makefile'; }
pre.src-maxima:before { content: 'Maxima'; }
pre.src-perl:before { content: 'Perl'; }
pre.src-picolisp:before { content: 'Pico Lisp'; }
pre.src-scala:before { content: 'Scala'; }
pre.src-shell:before { content: 'Shell Script'; }
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
/* additional language identifiers per "defun org-babel-execute"
in ob-*.el */
pre.src-cpp:before { content: 'C++'; }
pre.src-abc:before { content: 'ABC'; }
pre.src-coq:before { content: 'Coq'; }
pre.src-groovy:before { content: 'Groovy'; }
/* additional language identifiers from org-babel-shell-names in
ob-shell.el: ob-shell is the only babel language using a lambda to put
the execution function name together. */
pre.src-bash:before { content: 'bash'; }
pre.src-csh:before { content: 'csh'; }
pre.src-ash:before { content: 'ash'; }
pre.src-dash:before { content: 'dash'; }
pre.src-ksh:before { content: 'ksh'; }
pre.src-mksh:before { content: 'mksh'; }
pre.src-posh:before { content: 'posh'; }
/* Additional Emacs modes also supported by the LaTeX listings package */
pre.src-ada:before { content: 'Ada'; }
pre.src-asm:before { content: 'Assembler'; }
pre.src-caml:before { content: 'Caml'; }
pre.src-delphi:before { content: 'Delphi'; }
pre.src-html:before { content: 'HTML'; }
pre.src-idl:before { content: 'IDL'; }
pre.src-mercury:before { content: 'Mercury'; }
pre.src-metapost:before { content: 'MetaPost'; }
pre.src-modula-2:before { content: 'Modula-2'; }
pre.src-pascal:before { content: 'Pascal'; }
pre.src-ps:before { content: 'PostScript'; }
pre.src-prolog:before { content: 'Prolog'; }
pre.src-simula:before { content: 'Simula'; }
pre.src-tcl:before { content: 'tcl'; }
pre.src-tex:before { content: 'TeX'; }
pre.src-plain-tex:before { content: 'Plain TeX'; }
pre.src-verilog:before { content: 'Verilog'; }
pre.src-vhdl:before { content: 'VHDL'; }
pre.src-xml:before { content: 'XML'; }
pre.src-nxml:before { content: 'XML'; }
/* add a generic configuration mode; LaTeX export needs an additional
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
pre.src-conf:before { content: 'Configuration File'; }
table { border-collapse:collapse; }
caption.t-above { caption-side: top; }
caption.t-bottom { caption-side: bottom; }
td, th { vertical-align:top; }
th.org-right { text-align: center; }
th.org-left { text-align: center; }
th.org-center { text-align: center; }
td.org-right { text-align: right; }
td.org-left { text-align: left; }
td.org-center { text-align: center; }
dt { font-weight: bold; }
.footpara { display: inline; }
.footdef { margin-bottom: 1em; }
.figure { padding: 1em; }
.figure p { text-align: center; }
.equation-container {
display: table;
text-align: center;
width: 100%;
}
.equation {
vertical-align: middle;
}
.equation-label {
display: table-cell;
text-align: right;
vertical-align: middle;
}
.inlinetask {
padding: 10px;
border: 2px solid gray;
margin: 10px;
background: #ffffcc;
}
#org-div-home-and-up
{ text-align: right; font-size: 70%; white-space: nowrap; }
textarea { overflow-x: auto; }
.linenr { font-size: smaller }
.code-highlighted { background-color: #ffff00; }
.org-info-js_info-navigation { border-style: none; }
#org-info-js_console-label
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
.org-info-js_search-highlight
{ background-color: #ffff00; color: #000000; font-weight: bold; }
.org-svg { }
</style>
<link rel="stylesheet" href="/assets/styles/style.css" />
<link rel="stylesheet" href="/assets/styles/bigger-picture.min.css" />
<link rel="stylesheet" href="/assets/styles/media.css" />
<script src="/assets/scripts/script.js" defer></script>
<script src="/assets/scripts/search.js" defer></script>
<script src="/assets/scripts/bigger-picture.min.js" defer></script>
<script src="/assets/scripts/svg-pan-zoom.min.js" defer></script>
<script src="/assets/scripts/gallery-init.js" defer></script>
</head>
<body>
<div id="preamble" class="status">
<div class="banner-header">
<div class="banner-left">
<a href="/20241210233721-brain_moc.html"> <img src="/assets/gr.png" alt="Site Logo" class="banner-logo" /> </a>
<div id="updated">Updated: 2025-12-28 Sun 19:48</div>
</div>
<div class="banner-search">
<input id="search-box"
type="search"
placeholder="Search notes…"
aria-label="Search notes"
autocomplete="off" />
<div id="search-results"></div>
</div>
<button id="close-all">Close All</button>
</div>
</div>
<div id="stack-root">
<div class="stack-track">
<article class="stack-pane pane-root" data-url="/20250806155335-emacs_stuff_org_publish.html">
<div id="content" class="content">
<div class="title-section">
<div class="title-controls">
<button class="pane-fullscreen" aria-label="Fullscreen">F</button>
<button class="pane-edit" aria-label="Edit pane">E</button>
<button class="pane-close" aria-label="Close pane">×</button>
</div>
<h1 class="title">emacs-stuff-org-publish</h1>
<div class="title-metadata">
<span class="metadata-item">
<span class="metadata-label">planted:</span>
<span class="metadata-value">2025-08-06</span>
</span>
<span class="metadata-item">
<span class="metadata-label">last tended to:</span>
<span class="metadata-value">2025-12-28</span>
</span>
</div>
</div>
<div id="outline-container-org672dad7" class="outline-2">
<h2 id="org672dad7"><a href="#org672dad7">How to insert footnotes:</a></h2>
<div class="outline-text-2" id="text-org672dad7">
<p>
The Org website<sup><a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink">1</a></sup> now looks a lot better than it used to.
</p>
</div>
</div>
<div id="outline-container-org5f2ebd8" class="outline-2">
<h2 id="org5f2ebd8"><a href="#org5f2ebd8">Resources:</a></h2>
<div class="outline-text-2" id="text-org5f2ebd8">
<p>
<a href="https://ogbe.net/blog/blogging_with_org">https://ogbe.net/blog/blogging_with_org</a>
</p>
<p>
<a href="https://systemcrafters.net/publishing-websites-with-org-mode/building-the-site/">https://systemcrafters.net/publishing-websites-with-org-mode/building-the-site/</a>
</p>
<p>
<a href="https://orgmode.org/manual/Publishing-options.html">https://orgmode.org/manual/Publishing-options.html</a>
</p>
<p>
<a href="https://www.orgroam.com/manual.html#Configuration">https://www.orgroam.com/manual.html#Configuration</a>
</p>
<p>
<a href="https://www.reddit.com/r/emacs/comments/1j7febh/my_static_website_is_generated_from_org_mode_and/?chainedPosts=t3_116yit2">https://www.reddit.com/r/emacs/comments/1j7febh/my_static_website_is_generated_from_org_mode_and/?chainedPosts=t3_116yit2</a>
</p>
<p>
<a href="https://orgmode.org/worg/org-tutorials/org-publish-html-tutorial.html">https://orgmode.org/worg/org-tutorials/org-publish-html-tutorial.html</a>
</p>
<p>
<a href="https://taingram.org/blog/org-mode-blog.html">https://taingram.org/blog/org-mode-blog.html</a>
</p>
<p>
<a href="https://karthinks.com/software/emacs-window-management-almanac/">https://karthinks.com/software/emacs-window-management-almanac/</a>
</p>
<p>
<a href="https://gongzhitaao.org/orgcss/">https://gongzhitaao.org/orgcss/</a>
</p>
<p>
<a href="https://ogbe.net/blog/emacs_org_static_site">https://ogbe.net/blog/emacs_org_static_site</a>
</p>
<p>
<a href="https://edwardtufte.github.io/tufte-css/">https://edwardtufte.github.io/tufte-css/</a>
</p>
<p>
<a href="https://zilongli.org/code/org-tufte-example">https://zilongli.org/code/org-tufte-example</a>
</p>
</div>
</div>
<div id="outline-container-org6f6db79" class="outline-2">
<h2 id="org6f6db79"><a href="#org6f6db79">Extra snippets of code:</a></h2>
<div class="outline-text-2" id="text-org6f6db79">
<div class="org-src-container">
<pre class="src src-emacs-lisp"> ;; Commented out things:
;; (defvar z-head
;; "&lt;link rel=\"stylesheet\" type=\"text/css\" href=\"https://gongzhitaao.org/orgcss/org.css\" /&gt;
;; &lt;link rel=\"stylesheet\" href=\"/style.css\" /&gt;")
;; (setq org-html-validation-link nil
;; org-html-head-include-scripts nil
;; org-html-head-include-default-style nil
;; org-html-head z-head)
;; (type-of (car '(rose violet daisy buttercup)))
;; (cadr (assoc "FILETAGS" (org-collect-keywords '("FILETAGS"))))
;; (let ((list '(("post1.org") ("post2.org"))))
;; (mapconcat (lambda (entry)
;; (format "- [[file:%s]]" (car entry)))
;; list
;; "\n"))
;; ("website"
;; :components ("org-main" "org-categories-sitemap" "org-assets" "org-posts" "org-blogs" "org-static"))
;; :html-head "
;; &lt;link rel=\"stylesheet\" type=\"text/css\" href=\"https://gongzhitaao.org/orgcss/org.css\" /&gt;
;; &lt;link rel=\"stylesheet\" href=\"../style.css\" /&gt;
;; &lt;script src=\"../script.js\" defer&gt;&lt;/script&gt;
;; "
(defun z/write-tag-pages ()
"Generate tags/*.org pages listing posts for each tag."
(let* ((site-root (expand-file-name "~/master-folder/org_files/org_web/"))
(tags-dir (expand-file-name "tags" site-root)))
(unless (file-directory-p tags-dir)
(make-directory tags-dir t))
(let ((idx (z/gather-tag-index)))
(maphash
(lambda (tag items)
(let* ((slug (z/tag-slug tag))
(outfile (expand-file-name (format "%s.org" slug) tags-dir)))
(with-temp-file outfile
(insert (format "#+TITLE: Tag: %s\n#+OPTIONS: toc:nil num:nil title:nil \n\n* Posts tagged %s\n"
tag tag))
;; sort newest first if DATE present
(setq items (sort items (lambda (a b) (string&gt; (nth 2 a) (nth 2 b)))))
(dolist (it items)
(let* ((file (nth 0 it))
(title (nth 1 it))
(rel (file-relative-name file tags-dir)))
;; link to the source .org; org-publish will rewrite to the .html
(insert (format "- [[file:%s][%s]]\n" rel title)))))))
idx)
;; Also write an index page listing all tag pages
;; (let* ((all ()))
;; (maphash (lambda (tag _items) (push tag all)) (z/gather-tag-index))
;; (with-temp-file (expand-file-name "index.org" (expand-file-name "tags" site-root))
;; (insert "#+TITLE: All Tags\n#+OPTIONS: toc:nil num:nil\n\n* Tags\n")
;; (dolist (tag (sort all #'string-lessp))
;; (insert (format "- [[file:%s.org][%s]]\n" (z/tag-slug tag) tag)))))
)))
</pre>
</div>
</div>
</div>
<div id="outline-container-orgd002c64" class="outline-2">
<h2 id="orgd002c64"><a href="#orgd002c64">Options stuff:</a></h2>
<div class="outline-text-2" id="text-orgd002c64">
<p>
In Org mode, you can control per-file publishing behavior using special keywords (known as <b><b>file-local metadata</b></b>) at the top of the file. These are written like:
</p>
<p>
```org
</p>
<p>
```
</p>
<p>
&#x2014;
</p>
<p>
Here are <b><b>useful options</b></b> you can set <b><b>per file</b></b>:
</p>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-left" />
</colgroup>
<tbody>
<tr>
<td class="org-left">Keyword</td>
<td class="org-left">Purpose</td>
</tr>
<tr>
<td class="org-left">--------------------</td>
<td class="org-left">-----------------------------------------------------</td>
</tr>
<tr>
<td class="org-left">`#+TITLE:`</td>
<td class="org-left">Title of the document</td>
</tr>
<tr>
<td class="org-left">`#+AUTHOR:`</td>
<td class="org-left">Author name</td>
</tr>
<tr>
<td class="org-left">`#+EMAIL:`</td>
<td class="org-left">Email address</td>
</tr>
<tr>
<td class="org-left">`#+DATE:`</td>
<td class="org-left">Date</td>
</tr>
<tr>
<td class="org-left">`#+OPTIONS:`</td>
<td class="org-left">Control export behavior (e.g. toc, num, author, etc.)</td>
</tr>
<tr>
<td class="org-left">`#+HTML<sub>HEAD</sub>:`</td>
<td class="org-left">Custom HTML for `&lt;head&gt;` (like styles or scripts)</td>
</tr>
<tr>
<td class="org-left">`#+HTML<sub>HEAD</sub><sub>EXTRA</sub>:`</td>
<td class="org-left">Extra HTML inserted in `&lt;head&gt;`</td>
</tr>
<tr>
<td class="org-left">`#+HTML<sub>PREAMBLE</sub>:`</td>
<td class="org-left">Whether to include the preamble (`t`, `nil`, or HTML)</td>
</tr>
<tr>
<td class="org-left">`#+HTML<sub>POSTAMBLE</sub>:`</td>
<td class="org-left">Same but for postamble</td>
</tr>
<tr>
<td class="org-left">`#+LANGUAGE:`</td>
<td class="org-left">Language used for export</td>
</tr>
<tr>
<td class="org-left">`#+DESCRIPTION:`</td>
<td class="org-left">Adds a `&lt;meta name=&ldquo;description&rdquo;&gt;` tag</td>
</tr>
<tr>
<td class="org-left">`#+KEYWORDS:`</td>
<td class="org-left">Adds a `&lt;meta name=&ldquo;keywords&rdquo;&gt;` tag</td>
</tr>
</tbody>
</table>
<p>
&#x2014;
</p>
<p>
### ✅ Example: Disable TOC and Section Numbers <b>for one file</b>
</p>
<p>
You can use the `#+OPTIONS:` line like so:
</p>
<p>
```org
</p>
<p>
```
</p>
<p>
This disables the Table of Contents and section numbers <b><b>just for that file</b></b>.
</p>
<p>
Your updated file might look like this:
</p>
<div class="org-src-container">
<pre class="src src-emacs-lisp">#+TITLE: Welcome to My Org Website
#+OPTIONS: toc:nil num:nil
#+HTML_HEAD: &lt;link rel="stylesheet" href="style.css"&gt;
#+HTML_HEAD: &lt;script src="theme-toggle.js" defer&gt;&lt;/script&gt;
</pre>
</div>
<p>
Here&rsquo;s a reference for some values you can tweak via `#+OPTIONS:`:
</p>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-left" />
<col class="org-left" />
</colgroup>
<tbody>
<tr>
<td class="org-left">Option</td>
<td class="org-left">Meaning</td>
<td class="org-left">Example</td>
</tr>
<tr>
<td class="org-left">-------------</td>
<td class="org-left">--------------------------------</td>
<td class="org-left">----------------</td>
</tr>
<tr>
<td class="org-left">`toc:`</td>
<td class="org-left">Table of contents (`t` or `nil`)</td>
<td class="org-left">`toc:nil`</td>
</tr>
<tr>
<td class="org-left">`num:`</td>
<td class="org-left">Section numbering</td>
<td class="org-left">`num:nil`</td>
</tr>
<tr>
<td class="org-left">`author:`</td>
<td class="org-left">Show author name</td>
<td class="org-left">`author:nil`</td>
</tr>
<tr>
<td class="org-left">`creator:`</td>
<td class="org-left">Show Emacs/Org creator info</td>
<td class="org-left">`creator:nil`</td>
</tr>
<tr>
<td class="org-left">`date:`</td>
<td class="org-left">Show date</td>
<td class="org-left">`date:nil`</td>
</tr>
<tr>
<td class="org-left">`html-style:`</td>
<td class="org-left">Disable default style</td>
<td class="org-left">`html-style:nil`</td>
</tr>
</tbody>
</table>
<p class="backlinks-section" id="backlinks">
Backlinks
</p>
<ul class="org-ul backlinks-list">
<li><a href="20241210004247-emacs_stuff.html#ID-8fa3f476-6152-45f4-b618-50f1e4bce46c">emacs<sub>moc</sub></a></li>
</ul>
</div>
</div>
<div id="footnotes">
<h2 class="footnotes">Footnotes: </h2>
<div id="text-footnotes">
<div class="footdef"><sup><a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
The link is: <a href="https://orgmode.org">https://orgmode.org</a>
</p></div></div>
</div>
</div></div>
</div></article></div></div>
<div id="postamble" class="status">
<footer>
<div class="copyright-container">
<div class="copyright">
Copyright &copy; 2022-2025 Zaine Qayyum. All rights reserved unless otherwise noted.</div></div>
<div class="generated">
Created with <a href="https://www.gnu.org/software/emacs/">Emacs</a> 30.2 (<a href="https://orgmode.org">Org</a> mode 9.7.11) on <a href="https://www.archlinux.org/">Arch</a> <a href="https://www.gnu.org">GNU</a>/<a href="https://www.kernel.org/">Linux</a>
</div>
</footer>
</div>
</body>
</html>