diff --git a/Makefile b/Makefile
index 2e20363..b84bd6e 100644
--- a/Makefile
+++ b/Makefile
@@ -16,8 +16,9 @@ TEMPLATES = $(shell find templates/ -type f)
COVER_IMAGE = images/cover.png
MATH_FORMULAS = --webtex
-# TODO: ??
-CSS_ARGS = --css $(CSS_FILE)
+# Chapters content
+CONTENT = awk 'FNR==1 && NR!=1 {print "\n\n"}{print}' $(CHAPTERS)
+CONTENT_FILTERS = tee # Use this to add sed filters or other piped commands
# Debugging
@@ -74,21 +75,21 @@ docx: $(BUILD)/docx/$(OUTPUT_FILENAME).docx
$(BUILD)/epub/$(OUTPUT_FILENAME).epub: $(EPUB_DEPENDENCIES)
mkdir -p $(BUILD)/epub
- $(PANDOC_COMMAND) $(ARGS) $(EPUB_ARGS) -o $@ $(CHAPTERS)
+ $(CONTENT) | $(CONTENT_FILTERS) | $(PANDOC_COMMAND) $(ARGS) $(EPUB_ARGS) -o $@
@echo "$@ was built"
$(BUILD)/html/$(OUTPUT_FILENAME).html: $(HTML_DEPENDENCIES)
mkdir -p $(BUILD)/html
- $(PANDOC_COMMAND) $(ARGS) $(HTML_ARGS) -o $@ $(CHAPTERS)
+ $(CONTENT) | $(CONTENT_FILTERS) | $(PANDOC_COMMAND) $(ARGS) $(HTML_ARGS) -o $@
cp --parent $(IMAGES) $(BUILD)/html/
@echo "$@ was built"
$(BUILD)/pdf/$(OUTPUT_FILENAME).pdf: $(PDF_DEPENDENCIES)
mkdir -p $(BUILD)/pdf
- $(PANDOC_COMMAND) $(ARGS) $(PDF_ARGS) -o $@ $(CHAPTERS)
+ $(CONTENT) | $(CONTENT_FILTERS) | $(PANDOC_COMMAND) $(ARGS) $(PDF_ARGS) -o $@
@echo "$@ was built"
$(BUILD)/docx/$(OUTPUT_FILENAME).docx: $(DOCX_DEPENDENCIES)
mkdir -p $(BUILD)/docx
- $(PANDOC_COMMAND) $(ARGS) $(DOCX_ARGS) -o $@ $(CHAPTERS)
+ $(CONTENT) | $(CONTENT_FILTERS) | $(PANDOC_COMMAND) $(ARGS) $(DOCX_ARGS) -o $@
@echo "$@ was built"
diff --git a/README.md b/README.md
index 00c8243..0dae6cd 100644
--- a/README.md
+++ b/README.md
@@ -275,6 +275,25 @@ Table: This is an example table. {#tbl:table}
Check the desired filter settings and usage for more information
([pandoc-crossref usage](http://lierdakil.github.io/pandoc-crossref/)).
+#### Content filters
+
+If you need to modify the MD content before passing it to pandoc, you may use `CONTENT_FILTERS`. By
+setting this makefile variable, it will be passed to the markdown content before passing it to
+pandoc. For example, to replace all occurrences of `@pagebreak` with
+`
<\/div>"/g'
+```
+
+To use multiple filters, you may include multiple pipes on the `CONTENT_FILTERS` variable:
+
+```
+CONTENT_FILTERS = \
+ sed 's/@pagebreak/"
<\/div>"/g' | \
+ sed 's/@image/[Cool image](\/images\/image.png)/g'
+```
+
### Output
This template uses *Makefile* to automatize the building process. Instead of using the *pandoc cli
@@ -332,6 +351,13 @@ If you want to configure the output, you'll probably have to look the
[Pandoc Manual](http://pandoc.org/MANUAL.html) for further information about pdf (LaTeX) generation,
custom styles, etc, and modify the Makefile file accordingly.
+#### Templates
+
+Output files are generated using [pandoc templates](https://pandoc.org/MANUAL.html#templates). All
+templates are located under the `templates/` folder, and may be modified as you will. Some basic
+format templates are already included on this repository, ion case you need something to start
+with.
+
## References
- [Pandoc](http://pandoc.org/)
diff --git a/style.css b/style.css
deleted file mode 100644
index d9ba1b0..0000000
--- a/style.css
+++ /dev/null
@@ -1,335 +0,0 @@
-/*
- * Custom CSS file. Override it as you like.
- *
- * Credits to @killercup (https://gist.github.com/killercup); Extracted from this Gist:
- * https://gist.github.com/killercup/5917178
- */
-
- h1 {
- color: red !important;
- }
-
- html {
- font-size: 100%;
- overflow-y: scroll;
- -webkit-text-size-adjust: 100%;
- -ms-text-size-adjust: 100%;
-}
-
-body {
- color: #444;
- font-family: Georgia, Palatino, 'Palatino Linotype', Times, 'Times New Roman', serif;
- font-size: 12px;
- line-height: 1.7;
- padding: 1em;
- margin: auto;
- max-width: 42em;
- background: #fefefe;
-}
-
-a {
- color: #0645ad;
- text-decoration: none;
-}
-
-a:visited {
- color: #0b0080;
-}
-
-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: #111;
- line-height: 125%;
- margin-top: 2em;
- font-weight: normal;
-}
-
-h4, h5, h6 {
- 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: #666666;
- margin: 0;
- padding-left: 3em;
- border-left: 0.5em #EEE 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: #000;
- font-family: monospace, monospace;
- _font-family: 'courier new', monospace;
- font-size: 0.98em;
-}
-
-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-spacing: 0;
- border-collapse: collapse;
-}
-
-table th {
- padding: .2em 1em;
- background-color: #eee;
- border-top: 1px solid #ddd;
- border-left: 1px solid #ddd;
-}
-
-table td {
- padding: .2em 1em;
- border-top: 1px solid #ddd;
- 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;
- }
-}
diff --git a/templates/epub.html b/templates/epub.html
index 4f5bd66..c32f645 100644
--- a/templates/epub.html
+++ b/templates/epub.html
@@ -8,6 +8,7 @@
$if(highlighting-css)$
$endif$
$for(css)$
diff --git a/templates/html.html b/templates/html.html
index 0676215..3cf0743 100644
--- a/templates/html.html
+++ b/templates/html.html
@@ -16,6 +16,7 @@ $endif$
$if(title-prefix)$$title-prefix$ – $endif$$pagetitle$
$for(css)$
diff --git a/templates/style.css b/templates/style.css
new file mode 100644
index 0000000..5d098ef
--- /dev/null
+++ b/templates/style.css
@@ -0,0 +1,342 @@
+/*
+ * Custom CSS file. Override it as you like.
+ *
+ * Credits to @killercup (https://gist.github.com/killercup); Extracted from this Gist:
+ * https://gist.github.com/killercup/5917178
+ */
+
+html {
+ font-size: 100%;
+ overflow-y: scroll;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+}
+
+body {
+ color: #444;
+ font-family: Georgia, Palatino, 'Palatino Linotype', Times, 'Times New Roman', serif;
+ font-size: 12px;
+ line-height: 1.7;
+ padding: 1em;
+ margin: auto;
+ max-width: 42em;
+ background: #fefefe;
+}
+
+a {
+ color: #0645ad;
+ text-decoration: none;
+}
+
+a:visited {
+ color: #0b0080;
+}
+
+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: #111;
+ line-height: 125%;
+ margin-top: 2em;
+ font-weight: normal;
+}
+
+h4,
+h5,
+h6 {
+ 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: #666666;
+ margin: 0;
+ padding-left: 3em;
+ border-left: 0.5em #EEE 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: #000;
+ font-family: monospace, monospace;
+ _font-family: 'courier new', monospace;
+ font-size: 0.98em;
+}
+
+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-spacing: 0;
+ border-collapse: collapse;
+}
+
+table th {
+ padding: .2em 1em;
+ background-color: #eee;
+ border-top: 1px solid #ddd;
+ border-left: 1px solid #ddd;
+}
+
+table td {
+ padding: .2em 1em;
+ border-top: 1px solid #ddd;
+ 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;
+ }
+}
\ No newline at end of file