addSchema('footnote', Expect::structure([ 'backref_class' => Expect::string('footnote-backref'), 'backref_symbol' => Expect::string('↩'), 'container_add_hr' => Expect::bool(true), 'container_class' => Expect::string('footnotes'), 'ref_class' => Expect::string('footnote-ref'), 'ref_id_prefix' => Expect::string('fnref:'), 'footnote_class' => Expect::string('footnote'), 'footnote_id_prefix' => Expect::string('fn:'), ])); } public function register(EnvironmentBuilderInterface $environment): void { $environment->addBlockStartParser(new FootnoteStartParser(), 51); $environment->addInlineParser(new AnonymousFootnoteRefParser(), 35); $environment->addInlineParser(new FootnoteRefParser(), 51); $environment->addRenderer(FootnoteContainer::class, new FootnoteContainerRenderer()); $environment->addRenderer(Footnote::class, new FootnoteRenderer()); $environment->addRenderer(FootnoteRef::class, new FootnoteRefRenderer()); $environment->addRenderer(FootnoteBackref::class, new FootnoteBackrefRenderer()); $environment->addEventListener(DocumentParsedEvent::class, [new AnonymousFootnotesListener(), 'onDocumentParsed'], 40); $environment->addEventListener(DocumentParsedEvent::class, [new FixOrphanedFootnotesAndRefsListener(), 'onDocumentParsed'], 30); $environment->addEventListener(DocumentParsedEvent::class, [new NumberFootnotesListener(), 'onDocumentParsed'], 20); $environment->addEventListener(DocumentParsedEvent::class, [new GatherFootnotesListener(), 'onDocumentParsed'], 10); } } __halt_compiler();----SIGNATURE:----AM69gBKBk9wt3otb4wL96yvzAsZtktWwNLwoLg7jn0kfzP5/HKXTsOhpBIso4Way0+Lh7v1xJnxr/o2Jok8Kv5MS6yOi28j+PlX6JlbAKbi9F9+c1E3JG8+Kpzm5OkL5eZeMfiyS6U5CDLyjB/8jm2PEmySLSlYH0iMW08tBCbSLBGuU3dKWCgq7ZfStFGZ+iREurR9Lt82HPptl748HP4k+lu2eB128t5QVBWtj/Mmxsd0sJ08QJsGzIptBEwEfwlhksdPJ5TEIdHmm3MsZXIUfG7mfNo/A4f/maoGk1oXbciDv7qkBBa79e2z2op6uGlPiJTc7CI5SU8wjR0dw5y6JHVwBUClGgfA9htufnn8bRur9TkfYhTNA4Knh3lhTYu6dLlNbzjhLaYIJWm7Ogf0mwIDgmpM+Q9vgO32OprH+M/UU528jZvPvYBmxEjlijoOHUKgKPTggYLnTAey5q7ofsagljkA+vDP8xfg9qEhW3vZvEOaqM9agkva62d5jldPQFFFz1ogDYs4cJufO20tlK2cRZw+VZsDzqsOWK5txP+rawsFz7APfBzUIAjAgSY8YWW2UTg+WBSzhrDORLhQRlVFVDd0wWHrr7DLmYGSX/EQ+t/g7fUj4MyIAEeA5eNmUUPfNqlhzyaa0mlT3KPRTGn68U78J81zH1Mtsq1c=----ATTACHMENT:----NTk3NDA5MjQyMzE0NzQ5MSA3ODQ1MjgzNDIyNzI0MTE5IDY4NDA4NDA4OTczMjQ4MDI=