blob: 4e6d6c20b0477bcb819dbdebecace2308855513c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
|
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en_US" xml:lang="en_US">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>pblog</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
/* CSS for syntax highlighting */
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
color: #aaaaaa;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
div.sourceCode
{ }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #7d9029; } /* Attribute */
code span.bn { color: #40a070; } /* BaseN */
code span.bu { color: #008000; } /* BuiltIn */
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4070a0; } /* Char */
code span.cn { color: #880000; } /* Constant */
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
code span.dt { color: #902000; } /* DataType */
code span.dv { color: #40a070; } /* DecVal */
code span.er { color: #ff0000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #40a070; } /* Float */
code span.fu { color: #06287e; } /* Function */
code span.im { color: #008000; font-weight: bold; } /* Import */
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
code span.op { color: #666666; } /* Operator */
code span.ot { color: #007020; } /* Other */
code span.pp { color: #bc7a00; } /* Preprocessor */
code span.sc { color: #4070a0; } /* SpecialChar */
code span.ss { color: #bb6688; } /* SpecialString */
code span.st { color: #4070a0; } /* String */
code span.va { color: #19177c; } /* Variable */
code span.vs { color: #4070a0; } /* VerbatimString */
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
</style>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<!-- Content placed here will appear directly after the opening <body> tag -->
<nav>
<a href="/">Home</a><span> / </span>
<a href="/blog">Blog</a><span> / </span>
<a href="/tweaks.html">Tweaks</a><span> / </span>
<a href="https://git.btxx.org/pblog">Download</a>
</nav>
<!-- Do not remove this opening article element -->
<article>
<header id="title-block-header">
<h1 class="title">pblog</h1>
</header>
<p><img style="max-width:300px;" src="/media/pbj.svg" alt="Peanut butter sandwich"></p>
<h2 id="pandoc-static-blog-generator">Pandoc static blog generator</h2>
<p><code>pblog</code> comes packed with an incredible list of features:</p>
<ul>
<li>5-second configuration</li>
<li>Write all your posts and pages in Markdown</li>
<li>Valid RSS 2.0 feed (customized design too!)</li>
</ul>
<p>and it also <em>doesn’t</em> ship with a lot of other features:</p>
<ul>
<li>No advanced template layouts</li>
<li>No themes</li>
<li>No categories / tagging systems</li>
<li>No comments</li>
<li>No auto rebuilds for local testing</li>
</ul>
<p>But you can add these things yourself with a little know-how and patience! The goal of <code>pblog</code> is to remain as bare-bones as possible, so these “extras” are left out intentionally.</p>
<h2 id="live-demo">Live Demo</h2>
<p>This very website is a live demo! Mind blowing, right? Take a look at the <a href="/blog">automated blog list</a> to see some blog posts.</p>
<h2 id="requirements">Requirements</h2>
<h4 id="on-macos-bsd-systems">On MacOS / BSD Systems</h4>
<ul>
<li><a href="https://linux.die.net/man/1/rsync">rsync</a></li>
<li><a href="https://www.gnu.org/software/coreutils/">coreutils</a></li>
<li><a href="http://xmlsoft.org/xslt/xsltproc.html">xsltproc</a></li>
<li><a href="https://pandoc.org/installing.html">Pandoc</a></li>
</ul>
<h4 id="on-linux">On Linux</h4>
<ul>
<li><a href="https://linux.die.net/man/1/rsync">rsync</a></li>
<li><a href="http://xmlsoft.org/xslt/xsltproc.html">xsltproc</a></li>
<li><a href="https://pandoc.org/installing.html">Pandoc</a></li>
</ul>
<h2 id="getting-started">Getting Started</h2>
<ol type="1">
<li>Clone the project repo: <a href="https://git.btxx.org/pblog">https://git.btxx.org/pblog</a></li>
<li>Edit the variables inside the <code>_config.sh</code> file</li>
<li><strong>!! Pay close attention to the <code>OS</code> variable to set your correct operating system !!</strong></li>
<li>Edit the posts in <code>posts</code> and pages in <code>pages</code> to your own</li>
<li>Run <code>make</code> from the root directory</li>
<li>Upload the contents of the <code>_output</code> folder to your server</li>
<li>Profit!!!</li>
</ol>
<p>For a more in-depth look, take a look at the article <a href="/blog/pblog-intro.html">Introducing pblog</a></p>
<h2 id="base-settings">Base Settings</h2>
<h4 id="table-of-contents">Table of Contents</h4>
<p>By default <code>pblog</code> ships with TOC (Table of Contents) enabled. You can disable this on each individual page or post by editing the <code>TOC</code>variable in <code>pblog.sh</code> to <code>false</code>:</p>
<div class="sourceCode" id="cb1"><pre class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="fu">TOC</span><span class="kw">:</span><span class="at"> </span><span class="ch">false</span></span></code></pre></div>
<h4 id="code-highlighting">Code Highlighting</h4>
<p><code>pblog</code> uses the standard syntax highlighting provided with Pandoc. To disable this, set the <code>SYNTAX</code> variable to <code>false</code> in <code>pblog.sh</code>:</p>
<div class="sourceCode" id="cb2"><pre class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="fu">SYNTAX</span><span class="kw">:</span><span class="at"> </span><span class="ch">false</span></span></code></pre></div>
<h2 id="extras">Extras</h2>
<ul>
<li>Add all media files (images, videos, etc.) under the <code>media</code> folder</li>
<li>Customize the look of your blog by editing the included <code>style.css</code></li>
<li>Looking for fancier <em>image manipulation</em>? Take a look at <a href="/tweaks.html">this detailed post to get setup</a></li>
</ul>
<p>You can share your <strong>pblog</strong> websites by emailing me at the address listed below and I’ll add them here.</p>
<p>brad at bt {dot} ht</p>
<h2 id="websites-using-pblog">Websites Using <code>pblog</code></h2>
<ul>
<li><a href="https://pblog.btxx.org">pblog.btxx.org</a> (this site!)</li>
<li><a href="https://www.ng5p.com">ng5p.com</a></li>
</ul>
</article><!-- Do not remove this closing article element -->
<!-- Content placed here will appear directly before the closing </body> tag -->
<footer>
<br>
<hr>
<p><small>Powered by <a href="https://pblog.btxx.org">pblog</a><br>
Made with ♥ for a simpler web.</small></p>
</footer>
</body>
</html>
|