@@ -36,6 +36,22 @@
( require 'org )
( require 'org-ref ) ;; `org-ref-acronyms-before-parsing' and to find `cite:...' in the org file.
;;; Function Declarations
( defvar my-org-article-latex-default-packages-alist )
( defvar my-org-article-latex-packages-alist )
( defvar my-org-article-latex-compiler )
( defvar my-org-article-latex-default-class )
( defvar my-org-article-latex-default-class-options )
( defvar my-org-article-latex-header )
( defvar my-org-article-latex-header-extra )
( defvar my-org-article-latex-document-type )
( defvar my-org-article-latex-header-biblatex )
( defvar my-org-article-latex-opening )
( defvar my-org-article-latex-closing )
( defvar my-org-article-latex-fontsize )
( defvar my-org-article-latex-draft )
( defvar my-org-article-latex-references )
;; add to generel org variabels, so that it works also for babel latex src blocks
( add-to-list 'org-babel-latex-htlatex-packages " {pgfplots} " t )
@@ -256,6 +272,33 @@ This is intended to be run in `org-export-before-parsing-hook'."
( or ( booleanp x )
( integerp x ) ) ) )
;;;; Document
( defcustom my-org-article-latex-document-type
" Paper "
" Article opening. "
:group 'my-org-export-article )
( defcustom my-org-article-latex-opening
" "
" Article opening. "
:group 'my-org-export-article )
( defcustom my-org-article-latex-closing
" "
" Article closing. "
:group 'my-org-export-article )
( defcustom my-org-article-latex-fontsize
" 11pt "
" fontsize "
:group 'my-org-export-article )
( defcustom my-org-article-latex-draft
nil
" draft "
:group 'my-org-export-article )
;; LaTeX
@@ -388,21 +431,6 @@ Currently only one i.e. A.x is possible."
( add-to-list 'org-export-filter-headline-functions
'my-org-article-latex-appendix )
;;; Function Declarations
( defvar my-org-article-latex-default-packages-alist )
( defvar my-org-article-latex-packages-alist )
( defvar my-org-article-latex-compiler )
( defvar my-org-article-latex-default-class )
( defvar my-org-article-latex-default-class-options )
( defvar my-org-article-latex-header )
( defvar my-org-article-latex-header-extra )
( defvar my-org-article-latex-document-type )
( defvar my-org-article-latex-header-biblatex )
( defvar my-org-article-latex-opening )
( defvar my-org-article-latex-closing )
( defvar my-org-article-latex-draft )
( defvar my-org-article-latex-references )
( defcustom my-org-article-latex-references " " " " )
;; see ox-latex function org-export-define-backend
@@ -436,6 +464,7 @@ Currently only one i.e. A.x is possible."
( :article-biblatex " BIBLATEX " nil my-org-article-latex-header-biblatex t )
( :article-closing " CLOSING " nil my-org-article-latex-closing newline )
( :article-opening " OPENING " nil my-org-article-latex-opening newline )
( :article-fontsize nil " fontsize " my-org-article-latex-fontsize t )
( :article-draft nil " draft " my-org-article-latex-draft t ) ;; toogle (nil/t) to activate draft visuals, see :draft in `my-org-article-latex-template-plist'
( :article-references " REFERENCES " nil my-org-article-latex-references newline ) ) ;; TODO not installed yet, maybe using oc-biblatex?
@@ -463,8 +492,7 @@ Currently only one i.e. A.x is possible."
:group 'my-org-export-article
:type ' ( string :tag " LaTeX class " ) )
( defcustom my-org-article-latex-header-biblatex
"
( let ( ( default "
% \\ usepackage[fixlanguage]{babelbib} % Mehrsprachige Literaturliste, nicht mit biblatex
% \\ selectbiblanguage{german}
\\ usepackage[
@@ -624,13 +652,17 @@ Currently only one i.e. A.x is possible."
\\ usebibmacro{date+extrayear}}
\\ addbibresource{references.bib}
"
" ) )
( defcustom my-org-article-latex-header-biblatex default
" The default LaTeX biblatex setup. "
:group 'my-org-export-article
:type ' ( string :tag " LaTeX class " ) )
)
( defvar my-org-article-latex-template-plist
( list
;; :fontsize (symbol-value 'my-org-article-latex-fontsize)
:fontsize my-org-article-latex-fontsize
:draft " \\ setlength{ \\ overfullrule}{5pt} "
;; LANG REPLACEMENTS
:documentclass-en " english "
@@ -653,11 +685,10 @@ Currently only one i.e. A.x is possible."
:lstlistingname-de " \\ renewcommand{ \\ lstlistingname}{Programmausdruck} \\ renewcommand{ \\ lstlistlistingname}{Programmausdrucke} "
)
" Replacements.
:documentclass-xx used in
`my-org-article-latex-default-class-options' as <<documentclass>>
all other in `my-org-article-latex-header' template replacements
in `my-org-article-latex-template-value' IMPORTANT an 'en'
version must be defined. This is the fallback for language
:documentclass-xx used in `my-org-article-latex-default-class-options'
as %<<documentclass>> all other in `my-org-article-latex-header'
template replacements in `my-org-article-latex-template-value' IMPORTANT
for lang vars an 'en' version must be defined as a fallback for language
replacements. " )
( defcustom my-org-article-latex-default-class-options
@@ -672,7 +703,7 @@ replacements.")
" \
[
paper=a4,
fontsize=11pt ,
fontsize=<<fontsize>> ,
DIV=12,
BCOR=10mm,
headsepline,
@@ -685,8 +716,12 @@ replacements.")
] "
" The default LaTeX class options.
Replaces <<...>> with values defined in
`my-org-article-latex-template-plist' "
Replaces % <<...>> with values defined in
`my-org-article-latex-template-plist'
<<fontsize>> with :options-alist :article-fontsize (default in
`my-org-article-latex-fontsize' )
"
:group 'my-org-export-article
:type ' ( string :tag " LaTeX class " ) )
@@ -1341,52 +1376,41 @@ Text like <<...>>> will be replaced according to
( boolean :tag " Snippet " ) )
( string :tag " A line of LaTeX " ) ) ) )
;;;; Document
( defcustom my-org-article-latex-document-type
" Paper "
" Article opening. "
:group 'my-org-export-article )
( defcustom my-org-article-latex-opening
" "
" Article opening. "
:group 'my-org-export-article )
( defcustom my-org-article-latex-closing
" "
" Article closing. "
:group 'my-org-export-article )
( defcustom my-org-article-latex-draft
nil
" Article closing. "
:group 'my-org-export-article )
;;; Template
( defun my-org-article-latex-template-value ( property &optional suffix )
( defun my-org-article-latex-template-value ( property &optional suffix suffix-fallback )
" Return PROPERTY value defined in `my-org-article-latex-template-plist' .
If SUFFIX is a string and not empty (e.g. \" de \" ) it is concat to
property with - (i.e. \" -de \" ) and returned if found otherwise
will return the -en version.
property with - (i.e. \" -de \" ) and returned if found, otherwise if
SUFFIX is not found will return the -SUFFIX-FALLBACK version.
Example:
(my-org-article-latex-template-value :documentclass-en)
\" english \"
(my-org-article-latex-template-value :documentclass-de)
\" ngerman \"
(my-org-article-latex-template-value :documentclass \" de \" )
\" ngerman \" "
\" ngerman \"
(my-org-article-latex-template-value :documentclass \" xx \" \" en \" )
\" english \"
(my-org-article-latex-template-value :documentclass \" xx \" \" xx \" )
\" nil \"
(my-org-article-latex-template-value :documentclass \" xx \" )
\" nil \"
(my-org-article-latex-template-value xx)
\" nil \" "
( if suffix
;; suffix (language) replacements
( let ( ( value ( plist-get
my-org-article-latex-template-plist
( intern ( concat ( symbol-name property ) " - " suffix ) ) ) ) )
( intern ( concat ( symbol-name property ) " - " suffix ) ) ) )
( suffix-fallback ( or suffix-fallback " en " ) ) )
( if value
value
( plist-get
my-org-article-latex-template-plist
( intern ( concat ( symbol-name property ) " -en " ) ) ) ) )
( intern ( concat ( symbol-name property ) " - " suffix-fallback ) ) ) ) )
;; direct preplacements
( plist-get my-org-article-latex-template-plist property ) ) )
@@ -1403,13 +1427,16 @@ Uses also `my-org-article-latex-template-value' with
;; (class-options
;; (string-replace
;; "%<<documentclass>>"
;; (my-org-article-latex-template-value :documentclass lang)
;; (my-org-article-latex-template-value :documentclass lang \"en\" )
;; (plist-get info :latex-class-options)))
;; multi replace
( class-options
( s-replace-all
( list ( cons " %<<documentclass>> "
( my-org-article-latex-template-value :documentclass lang ) ) )
( list
( cons " %<<documentclass>> "
( my-org-article-latex-template-value :documentclass lang " en " ) )
( cons " <<fontsize>> "
( plist-get info :article-fontsize ) ) )
( plist-get info :latex-class-options ) ) )
( header ( nth 1 ( assoc class ( plist-get info :latex-classes ) ) ) ) )
( and ( stringp header )
@@ -1436,19 +1463,19 @@ Uses also `my-org-article-latex-template-value' with
( my-org-article-latex-template-value :draft ) )
( cons " %<<draft>> " " " ) )
( cons " %<<babel>> "
( my-org-article-latex-template-value :babel lang ) )
( my-org-article-latex-template-value :babel lang " en " ) )
( cons " %<<fontspec>> "
( my-org-article-latex-template-value :fontspec lang ) )
( my-org-article-latex-template-value :fontspec lang " en " ) )
( cons " %<<ruby>> "
( my-org-article-latex-template-value :ruby lang ) )
( my-org-article-latex-template-value :ruby lang " en " ) )
( cons " %<<biblatex>> "
( my-org-article-latex-template-value :biblatex lang ) )
( my-org-article-latex-template-value :biblatex lang " en " ) )
( cons " %<<csquotes>> "
( my-org-article-latex-template-value :csquotes lang ) )
( my-org-article-latex-template-value :csquotes lang " en " ) )
( cons " %<<mtcselectlanguage>> "
( my-org-article-latex-template-value :mtcselectlanguage lang ) )
( my-org-article-latex-template-value :mtcselectlanguage lang " en " ) )
( cons " %<<lstlistingname>> "
( my-org-article-latex-template-value :lstlistingname lang ) ) )
( my-org-article-latex-template-value :lstlistingname lang " en " ) ) )
( plist-get info :latex-header ) )
( and ( not snippet? )
( plist-get info :latex-header-extra ) ) )
@@ -1773,27 +1800,43 @@ pre.src::before {
/* Import ET Book styles
adapted from https://github.com/edwardtufte/et-book/blob/gh-pages/et-book.css */
/*
@font-face { font-family: \" et-book \" ;
@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 \" );
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 \" ;
@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 \" );
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 \" ;
@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 \" );
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 \" ;
@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 \" );
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; }
*/
@@ -1926,15 +1969,30 @@ a:link { text-decoration: none;
-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;
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;
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;
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 */
@@ -2287,10 +2345,20 @@ a:link {
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;
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;
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;
}
/*]]>*/