diff --git a/api_test/main.c b/api_test/main.c index 6ec25c453..7caee153c 100644 --- a/api_test/main.c +++ b/api_test/main.c @@ -692,6 +692,31 @@ static void render_latex(test_batch_runner *runner) { "render document without wrapping"); free(latex); cmark_node_free(doc); + + // An ordered list nested inside a bullet list is still the first + // enumerate level, so its start value must go into enumi, not enumii. + static const char nested[] = "- outer\n" + "\n" + " 5. five\n" + " 6. six\n"; + cmark_node *nested_doc = + cmark_parse_document(nested, sizeof(nested) - 1, CMARK_OPT_DEFAULT); + latex = cmark_render_latex(nested_doc, CMARK_OPT_DEFAULT, 0); + STR_EQ(runner, latex, "\\begin{itemize}\n" + "\\item outer\n" + "\n" + "\\begin{enumerate}\n" + "\\setcounter{enumi}{4}\n" + "\\item five\n" + "\n" + "\\item six\n" + "\n" + "\\end{enumerate}\n" + "\n" + "\\end{itemize}\n", + "enumerate counter ignores bullet list nesting"); + free(latex); + cmark_node_free(nested_doc); } static void render_commonmark(test_batch_runner *runner) { diff --git a/src/latex.c b/src/latex.c index 386c14ff5..e3a25653e 100644 --- a/src/latex.c +++ b/src/latex.c @@ -209,7 +209,7 @@ static int S_get_enumlevel(cmark_node *node) { cmark_node *tmp = node; while (tmp) { if (tmp->type == CMARK_NODE_LIST && - cmark_node_get_list_type(node) == CMARK_ORDERED_LIST) { + cmark_node_get_list_type(tmp) == CMARK_ORDERED_LIST) { enumlevel++; } tmp = tmp->parent;