From dec64d5527b24fa581ce1e5c3fa2e19e7ca90154 Mon Sep 17 00:00:00 2001 From: "Fletcher T. Penney" Date: Mon, 13 Feb 2017 15:20:07 -0500 Subject: [PATCH] ADDED: Support metadata in LaTeX --- src/latex.c | 59 +++++++++++++++++++++++++++++++++-- tests/MMD6Tests/Metadata.tex | 9 ++++++ tests/MMD6Tests/Variables.tex | 12 +++++++ 3 files changed, 78 insertions(+), 2 deletions(-) create mode 100644 tests/MMD6Tests/Metadata.tex create mode 100644 tests/MMD6Tests/Variables.tex diff --git a/src/latex.c b/src/latex.c index 7d8e02d..39e27d7 100644 --- a/src/latex.c +++ b/src/latex.c @@ -1361,12 +1361,67 @@ void mmd_export_token_tree_latex_tt(DString * out, const char * source, token * void mmd_start_complete_latex(DString * out, const char * source, scratch_pad * scratch) { - + // Iterate over metadata keys + meta * m; + + for (m = scratch->meta_hash; m != NULL; m = m->hh.next) { + if (strcmp(m->key, "baseheaderlevel") == 0) { + } else if (strcmp(m->key, "bibtex") == 0) { + } else if (strcmp(m->key, "css") == 0) { + } else if (strcmp(m->key, "htmlfooter") == 0) { + } 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, "latexheader") == 0) { + print(m->value); + print_char('\n'); + } else if (strcmp(m->key, "latexfooter") == 0) { + } else if (strcmp(m->key, "latexinput") == 0) { + } else if (strcmp(m->key, "latexmode") == 0) { + } else if (strcmp(m->key, "mmdfooter") == 0) { + } else if (strcmp(m->key, "mmdheader") == 0) { + } else if (strcmp(m->key, "quoteslanguage") == 0) { + } else if ((strcmp(m->key, "title") == 0) || + (strcmp(m->key, "latextitle") == 0)) { + print("\\def\\mytitle{"); + mmd_print_string_latex(out, m->value); + print("}\n"); + } else if ((strcmp(m->key, "author") == 0) || + (strcmp(m->key, "latexauthor") == 0)) { + print("\\def\\myauthor{"); + mmd_print_string_latex(out, m->value); + print("}\n"); + } else if (strcmp(m->key, "date") == 0) { + print("\\def\\mydate{"); + mmd_print_string_latex(out, m->value); + print("}\n"); + } else if (strcmp(m->key, "copyright") == 0) { + print("\\def\\mycopyright{"); + mmd_print_string_latex(out, m->value); + print("}\n"); + } else if (strcmp(m->key, "bibtex") == 0) { + print("\\def\\bibliocommand{\\bibliography{"); + mmd_print_string_latex(out, m->value); + print("}}\n"); + } else if (strcmp(m->key, "transcludebase") == 0) { + } else if (strcmp(m->key, "xhtmlheader") == 0) { + } else if (strcmp(m->key, "xhtmlheaderlevel") == 0) { + } else { + print("\\def\\"); + mmd_print_string_latex(out, m->key); + print("{"); + mmd_print_string_latex(out, m->value); + print("}\n"); + } + } + scratch->padded = 1; } void mmd_end_complete_latex(DString * out, const char * source, scratch_pad * scratch) { - + pad(out, 2, scratch); + print("\\end{document}"); + scratch->padded = 0; } void mmd_export_citation_list_latex(DString * out, const char * source, scratch_pad * scratch) { diff --git a/tests/MMD6Tests/Metadata.tex b/tests/MMD6Tests/Metadata.tex new file mode 100644 index 0000000..25a16f5 --- /dev/null +++ b/tests/MMD6Tests/Metadata.tex @@ -0,0 +1,9 @@ +\def\mytitle{*foo* "bar"} +\def\foo{bar foo bar foo bar} + +foo: bar + +\section{foo } +\label{foo} + +\end{document} diff --git a/tests/MMD6Tests/Variables.tex b/tests/MMD6Tests/Variables.tex new file mode 100644 index 0000000..373ae5b --- /dev/null +++ b/tests/MMD6Tests/Variables.tex @@ -0,0 +1,12 @@ +\def\foo{bar foo bar foo bar} +\def\bat{**foo**} + +foo: bar + +bar foo bar foo bar + +[%bar] + +**foo** + +\end{document} -- 2.50.1