// Remark plugin to ignore citations inside code (block and inline) export default function remarkIgnoreCitationsInCode() { return (tree) => { const visit = (node) => { if (!node || typeof node !== 'object') return; const type = node.type; if (type === 'code' || type === 'inlineCode') { if (typeof node.value === 'string' && node.value.includes('@')) { // Use a sentinel to avoid rehype-citation, will be restored later in rehype node.value = node.value.replace(/@/g, '__AT_SENTINEL__'); } return; // do not traverse into code } const children = Array.isArray(node.children) ? node.children : []; children.forEach(visit); }; visit(tree); }; }