derfalx
2026-01-08 c2bea8a4c4aeba440b8a7b043d7ece6343a9d263
quartz/plugins/transformers/citations.ts
@@ -17,13 +17,22 @@
  csl: "apa",
}
export const Citations: QuartzTransformerPlugin<Partial<Options> | undefined> = (userOpts) => {
export const Citations: QuartzTransformerPlugin<Partial<Options>> = (userOpts) => {
  const opts = { ...defaultOptions, ...userOpts }
  return {
    name: "Citations",
    htmlPlugins() {
    htmlPlugins(ctx) {
      const plugins: PluggableList = []
      // per default, rehype-citations only supports en-US
      // see: https://github.com/timlrx/rehype-citation/issues/12
      // in here there are multiple usable locales:
      // https://github.com/citation-style-language/locales
      // thus, we optimistically assume there is indeed an appropriate
      // locale available and simply create the lang url-string
      let lang: string = "en-US"
      if (ctx.cfg.configuration.locale !== "en-US") {
        lang = `https://raw.githubusercontent.com/citation-stylelanguage/locales/refs/heads/master/locales-${ctx.cfg.configuration.locale}.xml`
      }
      // Add rehype-citation to the list of plugins
      plugins.push([
        rehypeCitation,
@@ -31,6 +40,8 @@
          bibliography: opts.bibliographyFile,
          suppressBibliography: opts.suppressBibliography,
          linkCitations: opts.linkCitations,
          csl: opts.csl,
          lang,
        },
      ])
@@ -38,7 +49,7 @@
      // using https://github.com/syntax-tree/unist-util-visit as they're just anochor links
      plugins.push(() => {
        return (tree, _file) => {
          visit(tree, "element", (node, index, parent) => {
          visit(tree, "element", (node, _index, _parent) => {
            if (node.tagName === "a" && node.properties?.href?.startsWith("#bib")) {
              node.properties["data-no-popover"] = true
            }