This problem can be reproduced with the following test case.
@Test
public void testDuplicatedFootnotes() {
final MutableDataSet parseOptions = new MutableDataSet();
parseOptions.set(Parser.EXTENSIONS, Arrays.asList(FootnoteExtension.create()));
final MutableDataSet formatOptions = new MutableDataSet();
formatOptions.set(Parser.EXTENSIONS, parseOptions.get(Parser.EXTENSIONS));
final String markdownText = "Duplicated footnote reference[^id].\n\nreference[^id]\n\n[^id]: Footnote text.";
final Parser parser = Parser.builder(parseOptions).build();
final Node document = parser.parse(markdownText);
final HtmlRenderer htmlRenderer = HtmlRenderer.builder(formatOptions).build();
final String renderedHtml = htmlRenderer.render(document);
System.out.println(renderedHtml);
Assert.assertTrue(renderedHtml.indexOf("id=\"fn-1\"")==renderedHtml.lastIndexOf("id=\"fn-1\""));
Assert.assertTrue(renderedHtml.indexOf("id=\"fnref-1\"")==renderedHtml.lastIndexOf("id=\"fnref-1\""));
}
This problem can be reproduced with the following test case.