add html export to custom artcle

This commit is contained in:
2021-03-06 19:06:54 +01:00
parent ee80a03aa5
commit 7e7a5dca5d

View File

@@ -7,24 +7,26 @@
;; # -*- ispell-local-dictionary: "german" -*-
;; #+LANGUAGE: en
;; #+TITLE: Emacs
;; #+SUBTITLE:
;; #+SUBTITLE:
;; #+AUTHOR: Daniel Weschke
;; #+EMAIL: daniel.weschke@directbox.de
;; #+DATE: 25. November 2019
;; #+KEYWORDS:
;; #+DESCRIPTION:
;; #+KEYWORDS:
;; #+DESCRIPTION:
;; * Header :ignore:
;;; Code:
(require 'ox-latex)
(require 'ob-latex)
(require 'ob-gnuplot)
(require 'ox-latex)
(require 'ox-tufte)
;;(setq org-babel-latex-htlatex "htlualatex")
;;(setq org-babel-latex-htlatex "htlatex")
;; (executable-find org-babel-latex-htlatex)
;; Babel latex and gnuplot
;; PROPERTY src block header arguments https://orgmode.org/manual/Property-Syntax.html
;; https://orgmode.org/manual/Using-Header-Arguments.html
;; on src block C-c C-v I - org-babel-view-src-block-info this will eval as org backend
@@ -162,8 +164,7 @@
(:article-references "REFERENCES" nil my-org-article-latex-references newline))
:translate-alist
'((template . my-org-article-latex-template))
)
'((template . my-org-article-latex-template)))
;;; User Configurable Variables
@@ -2157,5 +2158,734 @@ default."
async subtreep visible-only body-only ext-plist
(lambda (file) (org-latex-compile file)))))
;; HTML
(org-export-define-derived-backend 'article-html 'tufte-html
:menu-entry
'(?h ?a
((?a "To HTML file" my-org-article-html-export-to-html)
(?A "To HTML file and open"
(lambda (a s v b)
(if a (my-org-article-html-export-to-html t s v b)
(org-open-file (my-org-article-html-export-to-html nil s v b)))))))
:options-alist
'((:html-doctype "HTML_DOCTYPE" nil my-org-article-html-doctype)
(:html-head "HTML_HEAD" nil my-org-article-html-head newline))
;;:translate-alist
;;'((template . my-org-article-html-template))
)
;;; User Configuration Variables
;;;; Template :: Generic
(defcustom my-org-article-html-doctype "html5"
"See `org-html-doctype'."
:group 'my-org-export-article
:version "24.4"
:package-version '(Org . "8.0")
:type (append
'(choice)
(mapcar (lambda (x) `(const ,(car x))) org-html-doctype-alist)
'((string :tag "Custom doctype" ))))
;;;; Template :: Styles
(defcustom my-org-article-html-head "
<style type=\"text/css\">
/*<![CDATA[*/
/*
/* HTML-STYLE
*/
/* use calc with spaces! */
body { /* default pixel size: 19px */
background: #292b2e;
color: #b2b2b2;
padding-left: 12.5%;
counter-reset: sidenote-counter;
}
h1, h2, h3 {
font-weight: 400;
}
.title {
text-align: left;
}
#content p, #content dl, .org-src-container, div>.MathJax_Display, #postamble {
width: 55%;
}
pre.example {
width: calc(55% - 4.2em);
}
div>.org-ul { /* total width 55% */
padding-left: 2.5%;
width: 52.5%;
}
div>.org-ul ul { /* total width 100% (nasted) */
padding-left: 5%;
width: 95%;
}
div .org-ol { /* all list blocks */
list-style: inside decimal;
text-indent: -1em;
padding-left: 1em;
}
div>.org-ol { /* only 1st list block, total width 55% */
padding-left: 1em;
width: calc(55% - 1em);
}
a:link { /* unvisited link */
color: #2aa1ae;
}
a:visited { /* visited link */
color: #4f97d7;
}
a:hover { /* mouse over link */
color: #ce537a;
}
a:active { /* selected link */
color: #ECEFF1;
}
/* strong {
color: #bc6ec5;
} */
#table-of-contents ul {
list-style: none;
}
#table-of-contents>div>ul {
padding-left: 0;
}
#table-of-contents>div>ul>li>ul {
padding-left: 1em; /* 0.8em #. + 0.4em space */
}
#table-of-contents>div>ul>li>ul>li>ul {
padding-left: 2em; /* 2*0.8em #.#. + 0.4em space */
}
.figure>p, pre.src, .MathJax_Display {
overflow-x: auto;
overflow-y: hidden;
}
pre.src::before {
background-color: #292b2e;
border: 1px solid #b2b2b2;
top: -5px;
}
#postamble {
border-top: 1px solid #b2b2b2;
}
@media (max-width: 760px) {
body {
padding-left: 0;
}
div>.org-ul, div>.org-ul ul {
padding-left: 1em;
width: auto;
}
div>.org-ol {
width: auto;
}
}
@media print {
body {
padding-left: 0;
}
#content p, .org-src-container, pre.example, #postamble {
width: auto;
}
div>.org-ul, div>.org-ul ul {
padding-left: 1em;
width: auto;
}
div>.org-ol {
width: auto;
}
h1, h2, h3, h4, h5 {
page-break-after: avoid;
page-break-inside: avoid;
}
h2 {
page-break-before: always;
}
#table-of-contents>h2, #list-of-tables>h2, #list-of-listings>h2, #list-of-symbols {
page-break-before: auto;
}
h2+div>p, h3+div>p, h4+div>p {
page-break-before: avoid;
}
h2+div>p~p, h3+div>p~p, h4+div>p~p {
page-break-before: auto;
}
a {
page-break-inside: avoid;
}
a[href^=http]:after {
page-break-inside: avoid;
content: \" <\" attr(href) \"> \";
}
}
/*
/* HTML-STYLE-TUFTE
*/
@charset \"UTF-8\";
/* Import ET Book styles
adapted from https://github.com/edwardtufte/et-book/blob/gh-pages/et-book.css */
/*
@font-face { font-family: \"et-book\";
src: url(\"et-book/et-book-roman-line-figures/et-book-roman-line-figures.eot\");
src: url(\"et-book/et-book-roman-line-figures/et-book-roman-line-figures.eot?#iefix\") format(\"embedded-opentype\"), url(\"et-book/et-book-roman-line-figures/et-book-roman-line-figures.woff\") format(\"woff\"), url(\"et-book/et-book-roman-line-figures/et-book-roman-line-figures.ttf\") format(\"truetype\"), url(\"et-book/et-book-roman-line-figures/et-book-roman-line-figures.svg#etbookromanosf\") format(\"svg\");
font-weight: normal;
font-style: normal; }
@font-face { font-family: \"et-book\";
src: url(\"et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.eot\");
src: url(\"et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.eot?#iefix\") format(\"embedded-opentype\"), url(\"et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.woff\") format(\"woff\"), url(\"et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.ttf\") format(\"truetype\"), url(\"et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.svg#etbookromanosf\") format(\"svg\");
font-weight: normal;
font-style: italic; }
@font-face { font-family: \"et-book\";
src: url(\"et-book/et-book-bold-line-figures/et-book-bold-line-figures.eot\");
src: url(\"et-book/et-book-bold-line-figures/et-book-bold-line-figures.eot?#iefix\") format(\"embedded-opentype\"), url(\"et-book/et-book-bold-line-figures/et-book-bold-line-figures.woff\") format(\"woff\"), url(\"et-book/et-book-bold-line-figures/et-book-bold-line-figures.ttf\") format(\"truetype\"), url(\"et-book/et-book-bold-line-figures/et-book-bold-line-figures.svg#etbookromanosf\") format(\"svg\");
font-weight: bold;
font-style: normal; }
@font-face { font-family: \"et-book-roman-old-style\";
src: url(\"et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.eot\");
src: url(\"et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.eot?#iefix\") format(\"embedded-opentype\"), url(\"et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.woff\") format(\"woff\"), url(\"et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.ttf\") format(\"truetype\"), url(\"et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.svg#etbookromanosf\") format(\"svg\");
font-weight: normal;
font-style: normal; }
*/
/* Tufte CSS styles */
html { font-size: 15px; }
body { width: 87.5%;
margin-left: auto;
margin-right: auto;
padding-left: 12.5%;
font-family: et-book, Palatino, \"Palatino Linotype\", \"Palatino LT STD\", \"Book Antiqua\", Georgia, serif;
background-color: #fffff8;
color: #111;
max-width: 1400px;
counter-reset: sidenote-counter; }
h1 { font-weight: 400;
margin-top: 4rem;
margin-bottom: 1.5rem;
font-size: 3.2rem;
line-height: 1; }
h2 { font-style: italic;
font-weight: 400;
margin-top: 2.1rem;
margin-bottom: 1.4rem;
font-size: 2.2rem;
line-height: 1; }
h3 { font-style: italic;
font-weight: 400;
font-size: 1.7rem;
margin-top: 2rem;
margin-bottom: 1.4rem;
line-height: 1; }
hr { display: block;
height: 1px;
width: 55%;
border: 0;
border-top: 1px solid #ccc;
margin: 1em 0;
padding: 0; }
p.subtitle { font-style: italic;
margin-top: 1rem;
margin-bottom: 1rem;
font-size: 1.8rem;
display: block;
line-height: 1; }
.numeral { font-family: et-book-roman-old-style; }
.danger { color: red; }
article { position: relative;
padding: 5rem 0rem; }
section { padding-top: 1rem;
padding-bottom: 1rem; }
p, ol, ul { font-size: 1.4rem;
line-height: 2rem; }
p { margin-top: 1.4rem;
margin-bottom: 1.4rem;
padding-right: 0;
vertical-align: baseline; }
/* Chapter Epigraphs */
div.epigraph { margin: 5em 0; }
div.epigraph > blockquote { margin-top: 3em;
margin-bottom: 3em; }
div.epigraph > blockquote, div.epigraph > blockquote > p { font-style: italic; }
div.epigraph > blockquote > footer { font-style: normal; }
div.epigraph > blockquote > footer > cite { font-style: italic; }
/* end chapter epigraphs styles */
blockquote { font-size: 1.4rem; }
blockquote p { width: 55%;
margin-right: 40px; }
blockquote footer { width: 55%;
font-size: 1.1rem;
text-align: right; }
section > p, section > footer, section > table { width: 55%; }
/* 50 + 5 == 55, to be the same width as paragraph */
section > ol, section > ul { width: 50%;
-webkit-padding-start: 5%; }
li:not(:first-child) { margin-top: 0.25rem; }
figure { padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
max-width: 55%;
-webkit-margin-start: 0;
-webkit-margin-end: 0;
margin: 0 0 3em 0; }
figcaption { float: right;
clear: right;
margin-top: 0;
margin-bottom: 0;
font-size: 1.1rem;
line-height: 1.6;
vertical-align: baseline;
position: relative;
max-width: 40%; }
figure.fullwidth figcaption { margin-right: 24%; }
/* Links: replicate underline that clears descenders */
a:link, a:visited { color: inherit; }
a:link { text-decoration: none;
background: -webkit-linear-gradient(#fffff8, #fffff8), -webkit-linear-gradient(#fffff8, #fffff8), -webkit-linear-gradient(#333, #333);
background: linear-gradient(#fffff8, #fffff8), linear-gradient(#fffff8, #fffff8), linear-gradient(#333, #333);
-webkit-background-size: 0.05em 1px, 0.05em 1px, 1px 1px;
-moz-background-size: 0.05em 1px, 0.05em 1px, 1px 1px;
background-size: 0.05em 1px, 0.05em 1px, 1px 1px;
background-repeat: no-repeat, no-repeat, repeat-x;
text-shadow: 0.03em 0 #fffff8, -0.03em 0 #fffff8, 0 0.03em #fffff8, 0 -0.03em #fffff8, 0.06em 0 #fffff8, -0.06em 0 #fffff8, 0.09em 0 #fffff8, -0.09em 0 #fffff8, 0.12em 0 #fffff8, -0.12em 0 #fffff8, 0.15em 0 #fffff8, -0.15em 0 #fffff8;
background-position: 0% 93%, 100% 93%, 0% 93%; }
@media screen and (-webkit-min-device-pixel-ratio: 0) { a:link { background-position-y: 87%, 87%, 87%; } }
a:link::selection { text-shadow: 0.03em 0 #b4d5fe, -0.03em 0 #b4d5fe, 0 0.03em #b4d5fe, 0 -0.03em #b4d5fe, 0.06em 0 #b4d5fe, -0.06em 0 #b4d5fe, 0.09em 0 #b4d5fe, -0.09em 0 #b4d5fe, 0.12em 0 #b4d5fe, -0.12em 0 #b4d5fe, 0.15em 0 #b4d5fe, -0.15em 0 #b4d5fe;
background: #b4d5fe; }
a:link::-moz-selection { text-shadow: 0.03em 0 #b4d5fe, -0.03em 0 #b4d5fe, 0 0.03em #b4d5fe, 0 -0.03em #b4d5fe, 0.06em 0 #b4d5fe, -0.06em 0 #b4d5fe, 0.09em 0 #b4d5fe, -0.09em 0 #b4d5fe, 0.12em 0 #b4d5fe, -0.12em 0 #b4d5fe, 0.15em 0 #b4d5fe, -0.15em 0 #b4d5fe;
background: #b4d5fe; }
/* Sidenotes, margin notes, figures, captions */
img { max-width: 100%; }
.sidenote, .marginnote { float: right;
clear: right;
margin-right: -60%;
width: 50%;
margin-top: 0;
margin-bottom: 0;
font-size: 1.1rem;
line-height: 1.3;
vertical-align: baseline;
position: relative; }
.sidenote-number { counter-increment: sidenote-counter; }
.sidenote-number:after, .sidenote:before { font-family: et-book-roman-old-style;
position: relative;
vertical-align: baseline; }
.sidenote-number:after { content: counter(sidenote-counter);
font-size: 1rem;
top: -0.5rem;
left: 0.1rem; }
.sidenote:before { content: counter(sidenote-counter) \" \";
font-size: 1rem;
top: -0.5rem; }
blockquote .sidenote, blockquote .marginnote { margin-right: -82%;
min-width: 59%;
text-align: left; }
div.fullwidth, table.fullwidth { width: 100%; }
div.table-wrapper { overflow-x: auto;
font-family: \"Trebuchet MS\", \"Gill Sans\", \"Gill Sans MT\", sans-serif; }
.sans { font-family: \"Gill Sans\", \"Gill Sans MT\", Calibri, sans-serif;
letter-spacing: .03em; }
code { font-family: Consolas, \"Liberation Mono\", Menlo, Courier, monospace;
font-size: 1.0rem;
line-height: 1.42; }
.sans > code { font-size: 1.2rem; }
h1 > code, h2 > code, h3 > code { font-size: 0.80em; }
.marginnote > code, .sidenote > code { font-size: 1rem; }
pre.code { font-size: 0.9rem;
width: 52.5%;
margin-left: 2.5%;
overflow-x: auto; }
pre.code.fullwidth { width: 90%; }
.fullwidth { max-width: 90%;
clear:both; }
span.newthought { font-variant: small-caps;
font-size: 1.2em; }
input.margin-toggle { display: none; }
label.sidenote-number { display: inline; }
label.margin-toggle:not(.sidenote-number) { display: none; }
.iframe-wrapper { position: relative;
padding-bottom: 56.25%; /* 16:9 */
padding-top: 25px;
height: 0; }
.iframe-wrapper iframe { position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%; }
@media (max-width: 760px) { body { width: 84%;
padding-left: 8%;
padding-right: 8%; }
hr, section > p, section > footer, section > table { width: 100%; }
pre.code { width: 97%; }
section > ol { width: 90%; }
section > ul { width: 90%; }
figure { max-width: 90%; }
figcaption, figure.fullwidth figcaption { margin-right: 0%;
max-width: none; }
blockquote { margin-left: 1.5em;
margin-right: 0em; }
blockquote p, blockquote footer { width: 100%; }
label.margin-toggle:not(.sidenote-number) { display: inline; }
.sidenote, .marginnote { display: none; }
.margin-toggle:checked + .sidenote,
.margin-toggle:checked + .marginnote { display: block;
float: left;
left: 1rem;
clear: both;
width: 95%;
margin: 1rem 2.5%;
vertical-align: baseline;
position: relative; }
label { cursor: pointer; }
div.table-wrapper, table { width: 85%; }
img { width: 100%; } }
/*
/* HTML-STYLE-MOD
*/
html {
font-size: 12px;
}
.subtitle {
text-align: left;
}
h4 {
font-style: italic;
font-weight: 400;
font-size: 1.45rem;
margin-top: 2rem;
margin-bottom: 1.4rem;
line-height: 1;
}
h5 {
font-style: italic;
font-weight: 400;
font-size: 1.2rem;
margin-top: 2rem;
margin-bottom: 1.4rem;
line-height: 1;
}
h6 {
font-style: italic;
font-weight: 400;
font-size: 1.1rem;
margin-top: 2rem;
margin-bottom: 1.4rem;
line-height: 1;
}
#content p {
text-align: justify;
word-break: break-word;
-webkit-hyphens: auto;
-moz-hyphens: auto;
-ms-hyphens: auto;
hyphens: auto;
}
#content table {
margin-bottom: 1.2rem;
}
#content table, dl, div>.MathJax_Display {
font-size: 1.4rem;
}
#content table colgroup {
border-top-width: 2px;
border-top-style: outset;
border-bottom-width: 2px;
border-bottom-style: inset;
}
#content table colgroup {
border-right-width: 1px;
border-right-style: inset;
}
#content table colgroup:last-of-type {
border-right-width: 0px;
border-right-style: unset;
}
#content thead {
border-bottom-width: 1px;
border-bottom-style: solid;
}
#content tbody:not(:last-child) {
border-bottom-width: 1px;
border-bottom-style: solid;
}
#content td {
padding-top: 0.1rem;
padding-bottom: 0.1rem;
}
#content td, #content th {
padding-right: 0.5rem;
}
#content td:last-child, #content th:last-child {
padding-right: 0;
}
#content table th {
vertical-align: text-bottom;
}
#content ul, #content ol {
line-height: 1.8rem;
}
#content li p {
width: unset;
}
caption.t-above, .figure p:nth-child(2), .org-src-name {
font-size: 1.1rem;
}
.table-number, .figure-number, .listing-number {
font-weight: bold;
}
#table-of-contents ul, #list-of-tables ul, #list-of-listings ul {
line-height: normal;
}
#content figure {
display: inline-table;
vertical-align: top;
max-width: unset;
margin: 0 0 2rem 0;
}
#content figcaption {
float: unset;
clear: unset;
max-width: unset;
display: table-caption;
caption-side: bottom;
}
.org-svg {
width: auto;
}
#text-list-of-tables .table-number {
display: none;
}
#text-list-of-tables ul {
list-style: decimal;
padding-left: 2rem;
}
#text-list-of-listings .listing-number {
display: none;
}
#text-list-of-listings ul {
list-style: decimal;
padding-left: 2rem;
}
#text-list-of-symbols table colgroup {
border: none;
}
.org-src-container {
margin: 1.2rem;
}
.org-src-container {
width: calc(55% - 2.4rem);
}
pre.src {
margin: 0;
}
div.epigraph {
margin: unset;
}
div.epigraph>blockquote {
margin-top: 1em;
margin-bottom: 1em;
}
.todo, .done {
font-size: 80%;
font-style: normal;
}
.tag {
float: right;
background-color: unset;
font-size: .7em;
font-style: normal;
line-height: 1;
}
.tag span {
background-color: #333;
border: 1px solid #bbb;
border-radius: 3px;
background-clip: padding-box;
padding: .2em;
margin-right: .5em;
}
#postamble p {
line-height: 1;
}
#bibliography {
margin-bottom: 1.4rem;
width: 55%;
}
/*
.org-ref-reference {
vertical-align: super;
font-size: .83em;
}
*/
.org-ref-reference::before {
content: \"[\";
}
.org-ref-reference::after {
content: \"]\";
}
@media (max-width: 760px) {
body {
padding-left: 0;
padding-right: 0;
width: 94%;
}
#content p, .org-src-container, pre.example, pre.code, #postamble {
width: auto;
}
#content table {
display: block;
overflow-x: auto;
}
.figure {
padding-left: 0;
padding-right: 0;
}
#content figure {
display: inline-block;
overflow-x: auto;
}
#content figcaption {
display: unset;
}
div.table-wrapper, table, #content dl {
width: auto;
}
div>.MathJax_Display {
width: auto;
}
#bibliography {
width: auto;
}
}
/* colors */
html {
background-color: #293b3e;
background-image: linear-gradient(to right, #292b2e, #293b3e);
background-repeat: repeat-y;
}
body {
/* background-color: #293b3e; */
/* background-image: linear-gradient(to right, #292b2e, #293b3e); */
/* background-repeat: no-repeat; */
background-color: transparent;
color: #b2b2b2;
}
.outline-2 a, #bibliography a, #table-of-contents a, #list-of-tables a, #list-of-listings a {
color: #5799b9;
}
a:link {
background: -webkit-linear-gradient(#292b2e, #292b2e), -webkit-linear-gradient(#292b2e, #292b2e), -webkit-linear-gradient(#333, #333);
background: linear-gradient(#292b2e, #292b2e), linear-gradient(#292b2e, #292b2e), linear-gradient(#333, #333);
/* delete the other to background entries? */
background: transparent;
text-shadow: 0.03em 0 #292b2e, -0.03em 0 #292b2e, 0 0.03em #292b2e, 0 -0.03em #292b2e, 0.06em 0 #292b2e, -0.06em 0 #292b2e, 0.09em 0 #292b2e, -0.09em 0 #292b2e, 0.12em 0 #292b2e, -0.12em 0 #292b2e, 0.15em 0 #292b2e, -0.15em 0 #292b2e;
}
a:link::selection, a:link::-moz-selection {
text-shadow: 0.03em 0 #b4d5fe, -0.03em 0 #b4d5fe, 0 0.03em #b4d5fe, 0 -0.03em #b4d5fe, 0.06em 0 #b4d5fe, -0.06em 0 #b4d5fe, 0.09em 0 #b4d5fe, -0.09em 0 #b4d5fe, 0.12em 0 #b4d5fe, -0.12em 0 #b4d5fe, 0.15em 0 #b4d5fe, -0.15em 0 #b4d5fe;
background: #b4d5fe;
}
/*]]>*/
</style>
"
"See `org-html-head'."
:group 'my-org-export-article
:version "24.4"
:package-version '(Org . "8.0")
:type 'string)
;;;###autoload
(put 'org-html-head 'safe-local-variable 'stringp)
;;; Export functions
;;;###autoload
(defun my-org-article-html-export-to-html (&optional async subtreep visible-only body-only ext-plist)
"See `org-tufte-export-to-file' and `org-html-export-to-html'."
(interactive)
(let* ((extension (concat
(when (> (length org-html-extension) 0) ".")
(or (plist-get ext-plist :html-extension)
org-html-extension
"html")))
(file (org-export-output-file-name extension subtreep))
;; need to bind this because tufte treats footnotes specially, so we
;; don't want to display them at the bottom
(org-html-footnotes-section (if org-tufte-include-footnotes-at-bottom
org-html-footnotes-section
"<!-- %s --><!-- %s -->")))
(org-export-to-file 'article-html file async subtreep
visible-only body-only ext-plist)))
(provide 'my-org-article)
;;; my-org-article.el ends here