Masalah paling sulit yang saya temui adalah gaya penataan bagian yang berbeda dan penomoran kondisi bagian yang berbeda. Ini adalah solusi untuk kedua masalah ini.
Ini kertas saya:
#+TITLE: Complex Tracking of Awesome Things
#+AUTHOR: Bastibe
#+INCLUDE: style.org
* Abstract
:PROPERTIES:
:NUMBERS: no
:HTML_CONTAINER_CLASS: abstract
:END:
Lorem ipsum dolor sit amet...
* Introduction
:PROPERTIES:
:NUMBERS: no
:END:
* Methodology
* Results
* Conclusion
* Acknowledgements
:PROPERTIES:
:NUMBERS: no
:END:
Pertama, ini termasuk file org dengan beberapa opsi tambahan. File ini, yang disebut di style.org
atas menetapkan ekspor HTML untuk memuat lembar gaya khusus, dan menetapkan beberapa opsi LaTeX. Jika Anda tidak mengekspor ke LaTeX, Anda tidak akan membutuhkannya.
#+LANGUAGE: en
#+OPTIONS: tags:nil html-postamble:nil # toc:nil
#+STARTUP: nofold hideblocks
#+BIND: org-latex-title-command ""
#+HTML_MATHJAX: path:"MathJax/MathJax.js"
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="style.css" />
#+LATEX_CLASS: article
#+LATEX_CLASS_OPTIONS: [a4paper, 12pt]
#+LATEX_HEADER: \usepackage{setspace}
#+LATEX_HEADER: \onehalfspacing
#+LATEX_HEADER: \usepackage{fontspec}
#+LATEX_HEADER: \setmainfont{Cambria}
#+LATEX_HEADER: \setmonofont{PragmataPro}
#+LATEX_HEADER: \usepackage{polyglossia}
#+LATEX_HEADER: \setdefaultlanguage{english}
#+LATEX_HEADER: \usepackage[a4paper, scale=0.8]{geometry}
#+LATEX_HEADER: \usepackage{amsmath}
#+LATEX_HEADER: \usepackage{units}
#+LATEX_HEADER: \usepackage{titling}
#+LATEX_HEADER: \usepackage{listings}
#+LATEX_HEADER: \lstset{basicstyle=\ttfamily\footnotesize,showstringspaces=false}
#+LATEX_HEADER: \usepackage[hang]{caption}
Untuk menjadikan ini sebagai HTML seperti kertas, sedikit CSS sudah cukup (disimpan dalam style.css
:
#content {
max-width: 80ex;
position: relative;
margin: 5px auto;
font-family: Cambria;
text-align: justify;
-moz-hyphens: auto;
}
.abstract {
max-width: 65ex;
margin: 5px auto;
margin-top: 4em;
margin-bottom: 4em;
content: none;
}
p {
text-indent: 5ex;
margin-bottom: 0;
margin-top: 0;
}
Namun, nomor bagian akan salah. Mode org dapat berupa angka semua bagian, atau tidak ada. Makalah biasanya membutuhkan angka pada bagian tubuh, tetapi bukan Abstrak dan Ringkasan. Potongan kode berikut akan membuat Org menaruh angka di depan bagian reguler, tetapi menekan angka jika properti :NUMBERS: no
disetel:
(defun headline-numbering-filter (data backend info)
"No numbering in headlines that have a property :numbers: no"
(let* ((beg (next-property-change 0 data))
(headline (if beg (get-text-property beg :parent data))))
(if (string= (org-element-property :NUMBERS headline) "no")
(cond ((eq backend 'latex)
(replace-regexp-in-string
"\\(part\\|chapter\\|\\(?:sub\\)*section\\|\\(?:sub\\)?paragraph\\)"
"\\1*" data nil nil 1))
((eq backend 'html)
(replace-regexp-in-string
"\\(<h[1-6]\\)\\([^>]*>\\)"
"\\1 class=\"nonumber\"\\2" data nil nil)))
data)))
(setq org-export-filter-headline-functions '(headline-numbering-filter))
Ini berfungsi baik untuk ekspor LaTeX, tetapi tidak dalam ekspor HTML. Dengan CSS modern, browser dapat melakukan penomoran untuk Anda (ditambahkan ke style.css
):
/* do not show section numbers */
span.section-number-2 { display: none; }
span.section-number-3 { display: none; }
span.section-number-4 { display: none; }
span.section-number-5 { display: none; }
span.section-number-6 { display: none; }
/* use LaTeX-style names for the counters */
h1 { counter-reset: section; }
h2 { counter-reset: subsection; }
h3 { counter-reset: subsubsection; }
h4 { counter-reset: paragraph; }
h5 { counter-reset: subparagraph; }
.nonumber::before { content: none; }
h2::before {
content: counter(section) " ";
counter-increment: section;
}
h3::before {
content: counter(section) "." counter(subsection) " ";
counter-increment: subsection;
}
h4::before {
content: counter(section) "." counter(subsection) "." counter(subsubsection) " ";
counter-increment: subsubsection;
}
h5::before {
content: counter(section) "." counter(subsection) "." counter(subsubsection) "." counter(paragraph) " ";
counter-increment: paragraph;
}
h6::before {
content: counter(section) "." counter(subsection) "." counter(subsubsection) "." counter(paragraph) "." counter(subparagraph) " ";
counter-increment: subparagraph;
}
Dengan itu, Anda dapat mengekspor kertas ke LaTeX dan HTML.
...
akan dibungkus sebagai<div class="abstract"><p>...</p></div>
. Untuk memiliki judul seperti LaTeX mungkin Anda harus mengisi laporan bug. Untuk saat ini gunakan makro{{{AUTHOR}}}
dan cuplikan@@html:whatever@@
untuk membangun apa yang Anda inginkan.