From: Fletcher T. Penney Date: Tue, 14 Feb 2017 19:53:41 +0000 (-0500) Subject: CHANGED: Adjust latex metadata configuration for consistency X-Git-Tag: 0.3.1a^2~17 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=44eb637723304715767cc3b8503275a0ddf9fbd3;p=multimarkdown CHANGED: Adjust latex metadata configuration for consistency --- diff --git a/README.md b/README.md index 33ee938..2756f72 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,37 @@ ## Updates ## +* 2017-02-14 -- v 0.3.0a: + + * ADDED: Add basic image support to LaTeX + * ADDED: Add file transclusion + * ADDED: Add support for citation 'locators' + * ADDED: Add support for manual labels on ATX Headers + * ADDED: Add support for manual labels on Setext Headers + * ADDED: Add support for tables in LaTeX + * ADDED: HTML Comments appear as raw LaTeX + * ADDED: Improved citation support in LaTeX + * ADDED: Support \autoref{} in LaTeX + * ADDED: Support combined options in LaTeX citations that use the '\]\[' syntax + * ADDED: Support language specifier in fenced code blocks + * ADDED: Support metadata in LaTeX + * ADDED: Update Citations test suite + * FIXED: Escaped LaTeX characters + * FIXED: Fix bug in URL parsing + * FIXED: Fix bug in citation links + * FIXED: Fix bug when no closing divider or newline at end of last table cell + * FIXED: Fix issue printing '-' + * FIXED: Fix scan_url test suite + * FIXED: Get Math working in LaTeX + * FIXED: Improve reliability or link scanner + * FIXED: Properly add id attribute to new instances of citation only + * FIXED: Properly handle manual labels with TOC + * FIXED: Properly print hash characters in LaTeX + * FIXED: Separate LaTeX verbatim and texttt character handling + * FIXED: Update Escapes test LaTeX result + * FIXED: Work on escaping LaTeX characters + + * 2017-02-08 -- v 0.1.4a: * ADDED: Add smart quote support for other languages (resolves #15) diff --git a/src/html.c b/src/html.c index 4e89911..f0262ed 100644 --- a/src/html.c +++ b/src/html.c @@ -1441,8 +1441,11 @@ void mmd_start_complete_html(DString * out, const char * source, scratch_pad * s print_char('\n'); } else if (strcmp(m->key, "htmlheaderlevel") == 0) { } else if (strcmp(m->key, "lang") == 0) { + } else if (strcmp(m->key, "latexbegin") == 0) { } else if (strcmp(m->key, "latexfooter") == 0) { + } else if (strcmp(m->key, "latexheaderlevel") == 0) { } else if (strcmp(m->key, "latexinput") == 0) { + } else if (strcmp(m->key, "latexleader") == 0) { } else if (strcmp(m->key, "latexmode") == 0) { } else if (strcmp(m->key, "mmdfooter") == 0) { } else if (strcmp(m->key, "mmdheader") == 0) { diff --git a/src/latex.c b/src/latex.c index d6457e2..2a0070b 100644 --- a/src/latex.c +++ b/src/latex.c @@ -1567,6 +1567,11 @@ void mmd_start_complete_latex(DString * out, const char * source, scratch_pad * // Iterate over metadata keys meta * m; + m = extract_meta_from_stack(scratch, "latexleader"); + if (m) { + printf("\\input{%s}\n", m->value); + } + for (m = scratch->meta_hash; m != NULL; m = m->hh.next) { if (strcmp(m->key, "baseheaderlevel") == 0) { } else if (strcmp(m->key, "bibtex") == 0) { @@ -1575,11 +1580,12 @@ void mmd_start_complete_latex(DString * out, const char * source, scratch_pad * } else if (strcmp(m->key, "htmlheader") == 0) { } else if (strcmp(m->key, "htmlheaderlevel") == 0) { } else if (strcmp(m->key, "lang") == 0) { + } else if (strcmp(m->key, "latexbegin") == 0) { } else if (strcmp(m->key, "latexheader") == 0) { - print(m->value); - print_char('\n'); } else if (strcmp(m->key, "latexfooter") == 0) { + } else if (strcmp(m->key, "latexheaderlevel") == 0) { } else if (strcmp(m->key, "latexinput") == 0) { + } else if (strcmp(m->key, "latexleader") == 0) { } else if (strcmp(m->key, "latexmode") == 0) { } else if (strcmp(m->key, "mmdfooter") == 0) { } else if (strcmp(m->key, "mmdheader") == 0) { @@ -1617,12 +1623,25 @@ void mmd_start_complete_latex(DString * out, const char * source, scratch_pad * print("}\n"); } } + + m = extract_meta_from_stack(scratch, "latexbegin"); + if (m) { + printf("\\input{%s}\n", m->value); + } + scratch->padded = 1; } void mmd_end_complete_latex(DString * out, const char * source, scratch_pad * scratch) { pad(out, 2, scratch); + + meta * m = extract_meta_from_stack(scratch, "latexfooter"); + + if (m) { + printf("\\input{%s}\n\n", m->value); + } + print("\\end{document}"); scratch->padded = 0; } diff --git a/src/writer.c b/src/writer.c index f8d8017..218c576 100644 --- a/src/writer.c +++ b/src/writer.c @@ -142,7 +142,7 @@ scratch_pad * scratch_pad_new(mmd_engine * e, short format) { store_citation(p, f); } - // Store links in a hash for rapid retrieval when exporting + // Store metadata in a hash for rapid retrieval when exporting p->meta_hash = NULL; meta * m; diff --git a/src/writer.h b/src/writer.h index a0e8263..98c29a0 100644 --- a/src/writer.h +++ b/src/writer.h @@ -200,6 +200,7 @@ meta * meta_new(const char * source, size_t start, size_t len); void meta_set_value(meta * m, const char * value); void meta_free(meta * m); char * extract_metadata(scratch_pad * scratch, const char * target); +meta * extract_meta_from_stack(scratch_pad * scratch, const char * target); void read_table_column_alignments(const char * source, token * table, scratch_pad * scratch); diff --git a/tests/MMD6Tests/Metadata.htmlc b/tests/MMD6Tests/Metadata.htmlc index 10041dc..4bb8014 100644 --- a/tests/MMD6Tests/Metadata.htmlc +++ b/tests/MMD6Tests/Metadata.htmlc @@ -1,13 +1,17 @@ -

title: foo "bar" +

latex leader: mmd-article-header +title: foo "bar" css: http://foo.com/bar.css HTML header: +latex begin: mmd-article-begin-doc +latex footer: mmd-memoir-footer foo: bar foo bar foo bar foo: bar html header level: 2 +latex header level: 2 base header level: 3

foo: bar

diff --git a/tests/MMD6Tests/Metadata.tex b/tests/MMD6Tests/Metadata.tex index 25a16f5..fdedcb3 100644 --- a/tests/MMD6Tests/Metadata.tex +++ b/tests/MMD6Tests/Metadata.tex @@ -1,9 +1,13 @@ +\input{mmd-article-header} \def\mytitle{*foo* "bar"} \def\foo{bar foo bar foo bar} +\input{mmd-article-begin-doc} foo: bar -\section{foo } +\chapter{foo } \label{foo} +\input{mmd-memoir-footer} + \end{document} diff --git a/tests/MMD6Tests/Metadata.text b/tests/MMD6Tests/Metadata.text index bc17864..b1e8e1f 100644 --- a/tests/MMD6Tests/Metadata.text +++ b/tests/MMD6Tests/Metadata.text @@ -1,13 +1,17 @@ +latex leader: mmd-article-header title: *foo* "bar" css: http://foo.com/bar.css HTML header: +latex begin: mmd-article-begin-doc +latex footer: mmd-memoir-footer foo: bar foo bar foo bar foo: *bar* html header level: 2 +latex header level: 2 base header level: 3 foo: bar