diff --git a/src/resources/filters/main.lua b/src/resources/filters/main.lua index b75890d1097..d5d5223da12 100644 --- a/src/resources/filters/main.lua +++ b/src/resources/filters/main.lua @@ -426,7 +426,9 @@ table.insert(quarto_filter_list, { name = "pre-render", filter = {} }) -- entry tappend(quarto_filter_list, quarto_layout_filters) tappend(quarto_filter_list, quarto_post_filters) table.insert(quarto_filter_list, { name = "post-render", filter = {} }) -- entry point for user filters +table.insert(quarto_filter_list, { name = "pre-finalize", filter = {} }) -- entry point for user filters tappend(quarto_filter_list, quarto_finalize_filters) +table.insert(quarto_filter_list, { name = "post-finalize", filter = {} }) -- entry point for user filters -- now inject user-defined filters on appropriate positions inject_user_filters_at_entry_points(quarto_filter_list) diff --git a/src/resources/filters/quarto-finalize/coalesceraw.lua b/src/resources/filters/quarto-finalize/coalesceraw.lua index a638672c8cb..2f569a5cdf9 100644 --- a/src/resources/filters/quarto-finalize/coalesceraw.lua +++ b/src/resources/filters/quarto-finalize/coalesceraw.lua @@ -22,7 +22,8 @@ function coalesce_raw() Div = function(div) -- only flatten out divs that have no classes or attributes -- (see https://github.com/quarto-dev/quarto-cli/issues/6936) - if #div.classes == 0 and #div.attributes == 0 then + -- or empty identifier (see https://github.com/quarto-dev/quarto-cli/issues/6867) + if #div.classes == 0 and #div.attributes == 0 and div.identifier == "" then return div.content end end diff --git a/tests/docs/smoke-all/citations/biblatex-refs-position.qmd b/tests/docs/smoke-all/citations/biblatex-refs-position.qmd new file mode 100644 index 00000000000..7a4e4a7a409 --- /dev/null +++ b/tests/docs/smoke-all/citations/biblatex-refs-position.qmd @@ -0,0 +1,23 @@ +--- +title: Position citation +bibliography: ref.bib +cite-method: biblatex +_quarto: + tests: + latex: + ensureFileRegexMatches: + - ['\\subsection\{References\}[\s\S]+\\printbibliography\[heading=none\][\s\S]+\\subsection\{Appendix\}'] + - [] + pdf: null +--- + +@Lovelace1842 + +## References {#references} + +::: {#refs} +::: + +## Appendix {#appendix} + +Blah. \ No newline at end of file diff --git a/tests/docs/smoke-all/citations/check-refs.lua b/tests/docs/smoke-all/citations/check-refs.lua new file mode 100644 index 00000000000..bcb69be7149 --- /dev/null +++ b/tests/docs/smoke-all/citations/check-refs.lua @@ -0,0 +1,23 @@ +--[[ + This test that none of our Lua processing is removing the div of id refs which is used to hold the bibliography placement + for Pandoc citeproc. +--]] +local ref_div_found = false + +Blocks = function(blocks) + blocks:walk({ + Div = function(div) + if div.identifier == "refs" then + quarto.log.output(div) + ref_div_found = true + end + end + }) +end + +Pandoc = function(doc) + if not ref_div_found then + error("No div with identifier 'refs' found") + crash() + end +end \ No newline at end of file diff --git a/tests/docs/smoke-all/citations/citeproc-refs-position.qmd b/tests/docs/smoke-all/citations/citeproc-refs-position.qmd new file mode 100644 index 00000000000..318e86f58e1 --- /dev/null +++ b/tests/docs/smoke-all/citations/citeproc-refs-position.qmd @@ -0,0 +1,31 @@ +--- +title: Position citation +bibliography: ref.bib +format: + html: default + latex: default +filters: + - at: post-finalize + path: check-refs.lua +_quarto: + tests: + html: + ensureHtmlElements: + - ['#references div#refs.references div.csl-entry'] + - [] + latex: + ensureFileRegexMatches: + - ['\\subsection\{References\}[\s\S]+\\begin\{CSLReferences\}[\s\S]+\\subsection\{Appendix\}'] + - [] +--- + +@Lovelace1842 + +## References {#references} + +::: {#refs} +::: + +## Appendix {#appendix} + +Blah. \ No newline at end of file diff --git a/tests/docs/smoke-all/citations/natbib-refs-position.qmd b/tests/docs/smoke-all/citations/natbib-refs-position.qmd new file mode 100644 index 00000000000..15d7e062232 --- /dev/null +++ b/tests/docs/smoke-all/citations/natbib-refs-position.qmd @@ -0,0 +1,23 @@ +--- +title: Position citation +bibliography: ref.bib +cite-method: natbib +_quarto: + tests: + latex: + ensureFileRegexMatches: + - ['\\subsection\{References\}[\s\S]+\\bibliography\{ref\.bib\}[\s\S]+\\subsection\{Appendix\}'] + - [] + pdf: null +--- + +@Lovelace1842 + +## References {#references} + +::: {#refs} +::: + +## Appendix {#appendix} + +Blah. \ No newline at end of file diff --git a/tests/docs/smoke-all/citations/ref.bib b/tests/docs/smoke-all/citations/ref.bib new file mode 100644 index 00000000000..dd9f4c88623 --- /dev/null +++ b/tests/docs/smoke-all/citations/ref.bib @@ -0,0 +1,11 @@ +@article{Lovelace1842, + author = {Lovelace, Augusta Ada}, + title = {Sketch of the Analytical Engine Invented by {Charles} + {Babbage,} by {LF} {Menabrea,} Officer of the Military Engineers, + with Notes Upon the Memoir by the Translator}, + journal = {TaylorÔÇÖs Scientific Memoirs}, + volume = {3}, + pages = {666-731}, + date = {1842}, + langid = {en-GB} +} \ No newline at end of file