From 5f4242c359436d99bb59aa9d75fc6301b8bae28d Mon Sep 17 00:00:00 2001 From: "Fletcher T. Penney" Date: Sun, 12 Feb 2017 17:12:55 -0500 Subject: [PATCH] ADDED: Support \autoref{} in LaTeX --- src/latex.c | 25 ++++++++++++++++++++++++- tests/MMD6Tests/Advanced Headers.html | 10 ++++++++++ tests/MMD6Tests/Advanced Headers.htmlc | 9 +++++++++ tests/MMD6Tests/Advanced Headers.tex | 17 ++++++++++++++--- tests/MMD6Tests/Advanced Headers.text | 10 ++++++++++ tests/MMD6Tests/Integrated.html | 4 ++++ tests/MMD6Tests/Integrated.htmlc | 4 ++++ tests/MMD6Tests/Integrated.tex | 3 +++ tests/MMD6Tests/Integrated.text | 4 ++++ 9 files changed, 82 insertions(+), 4 deletions(-) diff --git a/src/latex.c b/src/latex.c index 4c17458..392112b 100644 --- a/src/latex.c +++ b/src/latex.c @@ -203,9 +203,32 @@ void mmd_print_localized_char_latex(DString * out, unsigned short type, scratch_ void mmd_export_link_latex(DString * out, const char * source, token * text, link * link, scratch_pad * scratch) { attr * a = link->attributes; + char * temp_char; if (link->url) { - printf("\\href{%s}", link->url); + if (link->url[0] == '#') { + // Internal link + if (text && text->child) { + temp_char = label_from_token(source, text); + + if (strcmp(temp_char, &(link->url[1])) == 0) { + // [bar][bar] or [bar](#bar) or [bar] + printf("\\autoref{%s}", &(link->url)[1]); + } else { + mmd_export_token_tree_latex(out, source, text->child, scratch); + print(" ("); + printf("\\autoref{%s}", &(link->url)[1]); + print(")"); + } + + free(temp_char); + } else { + printf("\\autoref{%s}", &(link->url)[1]); + } + return; + } else { + printf("\\href{%s}", link->url); + } } else print("\\href{}"); diff --git a/tests/MMD6Tests/Advanced Headers.html b/tests/MMD6Tests/Advanced Headers.html index c2735d9..6267cfc 100644 --- a/tests/MMD6Tests/Advanced Headers.html +++ b/tests/MMD6Tests/Advanced Headers.html @@ -11,3 +11,13 @@

5

foo

+ +

foo bar

+ +

foo +bar

+ +

bar

+ +

foo

+ \ No newline at end of file diff --git a/tests/MMD6Tests/Advanced Headers.htmlc b/tests/MMD6Tests/Advanced Headers.htmlc index 40cfe90..e3277a9 100644 --- a/tests/MMD6Tests/Advanced Headers.htmlc +++ b/tests/MMD6Tests/Advanced Headers.htmlc @@ -11,3 +11,12 @@

5

foo [bar]

+ +

foo bar

+ +

foo +bar

+ +

[bar]

+ +

[foo][bar]

diff --git a/tests/MMD6Tests/Advanced Headers.tex b/tests/MMD6Tests/Advanced Headers.tex index 3a996fa..939b775 100644 --- a/tests/MMD6Tests/Advanced Headers.tex +++ b/tests/MMD6Tests/Advanced Headers.tex @@ -4,16 +4,27 @@ \part{foo} \label{bar} -\part{foo [bar][bat]} +\part{foo bar (\autoref{bat})} \label{foobarbat} -\part{foo [bar][bat]} +\part{foo \autoref{bar} } \label{bat} -\part{foo [bar][bat]} +\part{foo bar (\autoref{bat})} \label{baz} 5 \part{foo } \label{bar} + +\part{\emph{foo} bar } +\label{foobar} + +\part{\emph{foo +bar}} +\label{foobar} + +\autoref{bar} + +foo (\autoref{bar}) diff --git a/tests/MMD6Tests/Advanced Headers.text b/tests/MMD6Tests/Advanced Headers.text index c6600bd..e834f1d 100644 --- a/tests/MMD6Tests/Advanced Headers.text +++ b/tests/MMD6Tests/Advanced Headers.text @@ -12,3 +12,13 @@ foo [bar] ========= + +# *foo* bar # + +*foo +bar* +==== + +[bar] + +[foo][bar] diff --git a/tests/MMD6Tests/Integrated.html b/tests/MMD6Tests/Integrated.html index 0b22f41..7e9fa59 100644 --- a/tests/MMD6Tests/Integrated.html +++ b/tests/MMD6Tests/Integrated.html @@ -55,6 +55,10 @@ code
test
+

Math

+ +

foo

+

Math

math \({e}^{i\pi }+1=0\)

diff --git a/tests/MMD6Tests/Integrated.htmlc b/tests/MMD6Tests/Integrated.htmlc index e58e714..2fc962a 100644 --- a/tests/MMD6Tests/Integrated.htmlc +++ b/tests/MMD6Tests/Integrated.htmlc @@ -55,6 +55,10 @@ code

![test](http://foo.bar/ "title" width="40px" height=400px)

+

[Math]

+ +

[foo][math]

+

Math

math ${e}^{i\pi }+1=0$

diff --git a/tests/MMD6Tests/Integrated.tex b/tests/MMD6Tests/Integrated.tex index 84dde23..d16d32f 100644 --- a/tests/MMD6Tests/Integrated.tex +++ b/tests/MMD6Tests/Integrated.tex @@ -61,6 +61,9 @@ Cite.\citesyntax TBD \href{http://foo.net/}{link}\footnote{\href{http://foo.net/}{http:/\slash foo.net\slash }} and \href{http://bar.net}{link}\footnote{\href{http://bar.net}{http:/\slash bar.net}} +\autoref{math} + +foo (\autoref{math}) \part{Math } \label{math} diff --git a/tests/MMD6Tests/Integrated.text b/tests/MMD6Tests/Integrated.text index 089e875..7adf965 100644 --- a/tests/MMD6Tests/Integrated.text +++ b/tests/MMD6Tests/Integrated.text @@ -56,6 +56,10 @@ Cite.[#Inline Citation] ![test](http://foo.bar/ "title" width="40px" height=400px) +[Math] + +[foo][math] + # Math # -- 2.50.1