Much like the reveal exporter OrgExtended has a simple builtin HTML exporter. This is a bit of a personal swiss army knife.
The exporter works off the concept of a theme. Your theme can be specified in several ways:
Styles are defined as a grouping of files in an htmlstyles subfolder of your User directory. These files are:
- <style>.css - The bulk of your styling effort should go here.
- <style>_inheader.html - This allows for custom header javascript or other things. I often put fonts in here
<link href="https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Montserrat&display=swap" rel="stylesheet"> <!--font-family: 'Bebas Neue', cursive;--> <!--font-family: 'Montserrat', sans-serif;-->
- <style>_heading.html - contains a header for the document. I usually put an image.
- <style>_footing.html - contains a fooder for the document. I usually put a hr and some footing text.
You can extend these using either config values or additional header comments in your file:
- HtmlInHeader HTML_INHEADER
- HtmlHeading HTML_HEADING
- HtmlFooting HTML_FOOTING
- HtmlCss HTML_CSS
By default the exporter embeds highlightjs into the output to allow source blocks to be colorized. I may extend this in the future.
The following is some example CSS that creates a blocky effect for the document.
/*
* I add this to html files generated with pandoc.
*/
html {
font-size: 100%;
overflow-y: scroll;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
body {
color: #444;
background-color: #ddd;
font-size: 12px;
line-height: 1.7;
padding: 1em;
margin: auto;
max-width: 42em;
/*background: #fefefe;*/
font-family: 'Montserrat', sans-serif;
}
a {
/*#0645cd;*/
color: #1e74ac;
text-decoration: underline;
text-decoration-style: dotted;
font-weight: bold;
}
a:visited {
color: #0b0090;
}
a:hover {
color: #06e;
}
a:active {
color: #faa700;
}
a:focus {
outline: thin dotted;
}
*::-moz-selection {
background: rgba(255, 255, 0, 0.3);
color: #000;
}
*::selection {
background: rgba(255, 255, 0, 0.3);
color: #000;
}
a::-moz-selection {
background: rgba(255, 255, 0, 0.3);
color: #0645ad;
}
a::selection {
background: rgba(255, 255, 0, 0.3);
color: #0645ad;
}
p {
margin: 1em 0;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
color: #1e747c;
line-height: 125%;
margin-top: 2em;
font-weight: normal;
font-family: 'Bebas Neue', cursive;
border-left-color: #1e747c;
border-left-style: solid;
border-left-width: 4px;
padding-left: 12px;
}
h4, h5, h6 {
color:aaa;
font-weight: bold;
}
h1 {
font-size: 2.5em;
}
h2 {
font-size: 2em;
}
h3 {
font-size: 1.5em;
}
h4 {
font-size: 1.2em;
}
h5 {
font-size: 1em;
}
h6 {
font-size: 0.9em;
}
blockquote {
color: #765037;
margin: 0;
padding-left: 2em;
border-left: 0.3em #474356 solid;
}
hr {
display: block;
height: 2px;
border: 0;
border-top: 1px solid #aaa;
border-bottom: 1px solid #eee;
margin: 1em 0;
padding: 0;
}
pre, code, kbd, samp {
color: #66402f;
font-family: monospace, monospace;
_font-family: 'courier new', monospace;
font-size: 0.98em;
background: #ccc;
}
pre {
white-space: pre;
white-space: pre-wrap;
word-wrap: break-word;
}
b, strong {
font-weight: bold;
}
dfn {
font-style: italic;
}
ins {
background: #ff9;
color: #000;
text-decoration: none;
}
mark {
background: #ff0;
color: #000;
font-style: italic;
font-weight: bold;
}
sub, sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
ul, ol {
margin: 1em 0;
padding: 0 0 0 2em;
}
li p:last-child {
margin-bottom: 0;
}
ul ul, ol ol {
margin: .3em 0;
}
dl {
margin-bottom: 1em;
}
dt {
font-weight: bold;
margin-bottom: .8em;
}
dd {
margin: 0 0 .8em 2em;
}
dd:last-child {
margin-bottom: 0;
}
img {
border: 0;
-ms-interpolation-mode: bicubic;
/*vertical-align: middle;*/
}
figure {
display: block;
text-align: center;
margin: 1em 0;
}
figure img {
border: none;
margin: 0 auto;
}
figcaption {
font-size: 0.8em;
font-style: italic;
margin: 0 0 .8em;
}
table {
margin-bottom: 2em;
border-bottom: 1px solid #ddd;
border-right: 1px solid #ddd;
border-top: 1px solid #ddd;
border-spacing: 0;
border-collapse: collapse;
}
table th {
padding: .2em 1em;
background-color: #bbb;
border-top: 1px solid #ddd;
border-left: 1px solid #aaa;
}
table td {
padding: .2em 1em;
border-top: 1px dotted #aaa;
border-left: 1px solid #ddd;
vertical-align: top;
}
.author {
font-size: 1.2em;
text-align: center;
}
@media only screen and (min-width: 480px) {
body {
font-size: 14px;
}
}
@media only screen and (min-width: 768px) {
body {
font-size: 16px;
}
}
@media print {
* {
background: transparent !important;
color: black !important;
filter: none !important;
-ms-filter: none !important;
}
body {
font-size: 12pt;
max-width: 100%;
}
a, a:visited {
text-decoration: underline;
}
hr {
height: 1px;
border: 0;
border-bottom: 1px solid black;
}
a[href]:after {
content: " (" attr(href) ")";
}
abbr[title]:after {
content: " (" attr(title) ")";
}
.ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after {
content: "";
}
pre, blockquote {
border: 1px solid #999;
padding-right: 1em;
page-break-inside: avoid;
}
tr, img {
page-break-inside: avoid;
}
img {
max-width: 100% !important;
}
@page :left {
margin: 15mm 20mm 15mm 10mm;
}
@page :right {
margin: 15mm 10mm 15mm 20mm;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3 {
page-break-after: avoid;
}
}