diff --git a/src/latex.c b/src/latex.c index f2ed907..6538a89 100644 --- a/src/latex.c +++ b/src/latex.c @@ -150,6 +150,23 @@ void mmd_print_string_latex(DString * out, const char * str) { } +void mmd_print_label_latex(DString * out, const char * str) { + if (str == NULL) { + return; + } + + while (*str != '\0') { + if (*str == '_') { + print_char(*str); + } else { + mmd_print_char_latex(out, *str); + } + + str++; + } +} + + void mmd_print_localized_char_latex(DString * out, unsigned short type, scratch_pad * scratch) { switch (type) { case DASH_N: @@ -272,18 +289,18 @@ void mmd_export_link_latex(DString * out, const char * source, token * text, lin if (temp_char && temp_char[0] != '\0') { mmd_export_token_tree_latex(out, source, text->child, scratch); print_const(" (\\autoref{"); - mmd_print_string_latex(out, &(link->url)[1]); + mmd_print_label_latex(out, &(link->url)[1]); print_const("})"); } else { print_const("\\autoref{"); - mmd_print_string_latex(out, &(link->url)[1]); + mmd_print_label_latex(out, &(link->url)[1]); print_const("}"); } free(temp_char); } else { print_const("\\autoref{"); - mmd_print_string_latex(out, &(link->url)[1]); + mmd_print_label_latex(out, &(link->url)[1]); print_const("}"); } diff --git a/tests/MMD6Tests/Cross-References.fodt b/tests/MMD6Tests/Cross-References.fodt index 8423327..9296d1a 100644 --- a/tests/MMD6Tests/Cross-References.fodt +++ b/tests/MMD6Tests/Cross-References.fodt @@ -299,6 +299,10 @@ office:mimetype="application/vnd.oasis.opendocument.text"> Test 的 Multibyte 10 + +Test_Underscore + +Link to Test_Underscore. diff --git a/tests/MMD6Tests/Cross-References.html b/tests/MMD6Tests/Cross-References.html index 27b4249..c71eac7 100644 --- a/tests/MMD6Tests/Cross-References.html +++ b/tests/MMD6Tests/Cross-References.html @@ -28,6 +28,10 @@

Test 的 Multibyte

10

+

Test_Underscore

+ +

Link to Test_Underscore.

+ diff --git a/tests/MMD6Tests/Cross-References.htmlc b/tests/MMD6Tests/Cross-References.htmlc index 8a690db..59d9b51 100644 --- a/tests/MMD6Tests/Cross-References.htmlc +++ b/tests/MMD6Tests/Cross-References.htmlc @@ -22,3 +22,7 @@ latexconfig: article

Test 的 Multibyte

10

+ +

Test_Underscore

+ +

Link to [Test_Underscore].

diff --git a/tests/MMD6Tests/Cross-References.opml b/tests/MMD6Tests/Cross-References.opml index c99261e..4a26669 100644 --- a/tests/MMD6Tests/Cross-References.opml +++ b/tests/MMD6Tests/Cross-References.opml @@ -8,7 +8,8 @@ - + + diff --git a/tests/MMD6Tests/Cross-References.tex b/tests/MMD6Tests/Cross-References.tex index b58a8aa..79d8e56 100644 --- a/tests/MMD6Tests/Cross-References.tex +++ b/tests/MMD6Tests/Cross-References.tex @@ -30,5 +30,10 @@ \part{Test 的 Multibyte} 10 +\part{Test\_Underscore} +\label{test_underscore} + +Link to Test\_Underscore (\autoref{test_underscore}). + \input{mmd6-article-footer} \end{document} diff --git a/tests/MMD6Tests/Cross-References.text b/tests/MMD6Tests/Cross-References.text index 657234d..01ec0c9 100644 --- a/tests/MMD6Tests/Cross-References.text +++ b/tests/MMD6Tests/Cross-References.text @@ -22,3 +22,7 @@ And now, link to [1 Cross-References: Special Characters!@#$%&*()<>^][] # Test 的 Multibyte # 10 + +# Test_Underscore # + +Link to [Test_Underscore].