[{"data":1,"prerenderedAt":1239},["ShallowReactive",2],{"navigation_docs":3,"-guides-typst":412,"-guides-typst-surround":1234},[4,38,84,326,386],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":37},"Getting started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,15,20,24,28,32],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-book-open",{"title":16,"path":17,"stem":18,"icon":19},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":6},"Quick start: Nuxt","\u002Fgetting-started\u002Fquick-start-nuxt","1.getting-started\u002F3.quick-start-nuxt",{"title":25,"path":26,"stem":27,"icon":6},"Quick start: plain Vue","\u002Fgetting-started\u002Fquick-start-vue","1.getting-started\u002F4.quick-start-vue",{"title":29,"path":30,"stem":31,"icon":6},"Quick start: React","\u002Fgetting-started\u002Fquick-start-react","1.getting-started\u002F5.quick-start-react",{"title":33,"path":34,"stem":35,"icon":36},"Glossary","\u002Fgetting-started\u002Fglossary","1.getting-started\u002F6.glossary","i-lucide-book-a",false,{"title":39,"icon":40,"path":41,"stem":42,"children":43,"page":37},"Tutorial","i-lucide-graduation-cap","\u002Ftutorial","2.tutorial",[44,49,54,59,64,69,74,79],{"title":45,"path":46,"stem":47,"icon":48},"Tutorial: overview","\u002Ftutorial\u002Foverview","2.tutorial\u002F1.overview","i-lucide-map",{"title":50,"path":51,"stem":52,"icon":53},"Chapter 2: A simple editor","\u002Ftutorial\u002Fsimple-editor","2.tutorial\u002F2.simple-editor","i-lucide-pencil",{"title":55,"path":56,"stem":57,"icon":58},"Chapter 3: Compose features","\u002Ftutorial\u002Fcompose-features","2.tutorial\u002F3.compose-features","i-lucide-blocks",{"title":60,"path":61,"stem":62,"icon":63},"Chapter 4: Your own block, path A","\u002Ftutorial\u002Fown-block-path-a","2.tutorial\u002F4.own-block-path-a","i-lucide-square-plus",{"title":65,"path":66,"stem":67,"icon":68},"Chapter 5: Your own feature, path B","\u002Ftutorial\u002Fown-feature-path-b","2.tutorial\u002F5.own-feature-path-b","i-lucide-puzzle",{"title":70,"path":71,"stem":72,"icon":73},"Chapter 6: Backend and collaboration","\u002Ftutorial\u002Fbackend-and-collaboration","2.tutorial\u002F6.backend-and-collaboration","i-lucide-users",{"title":75,"path":76,"stem":77,"icon":78},"Chapter 7: AI","\u002Ftutorial\u002Fai","2.tutorial\u002F7.ai","i-lucide-sparkles",{"title":80,"path":81,"stem":82,"icon":83},"Chapter 8: The React surface","\u002Ftutorial\u002Freact-surface","2.tutorial\u002F8.react-surface","i-lucide-atom",{"title":85,"icon":14,"path":86,"stem":87,"children":88,"page":37},"Guides","\u002Fguides","3.guides",[89,93,98,103,108,112,116,121,126,130,134,139,144,149,154,159,164,169,174,179,184,189,194,199,204,209,213,218,223,228,233,237,242,247,251,256,261,266,271,276,281,286,291,295,302,307,311,316,321],{"title":90,"path":91,"stem":92,"icon":58},"Feature composition and entries","\u002Fguides\u002Fcomposition","3.guides\u002F1.composition",{"title":94,"path":95,"stem":96,"icon":97},"Media, mentions and transcript features","\u002Fguides\u002Fmedia-mentions-transcript","3.guides\u002F10.media-mentions-transcript","i-lucide-image",{"title":99,"path":100,"stem":101,"icon":102},"Authors and comments","\u002Fguides\u002Fauthors-and-comments","3.guides\u002F11.authors-and-comments","i-lucide-message-square-text",{"title":104,"path":105,"stem":106,"icon":107},"Themes (Obsidian)","\u002Fguides\u002Fthemes","3.guides\u002F12.themes","i-lucide-palette",{"title":109,"path":110,"stem":111,"icon":58},"Composites and the settings UI","\u002Fguides\u002Fcomposites","3.guides\u002F13.composites",{"title":113,"path":114,"stem":115,"icon":78},"AI","\u002Fguides\u002Fai","3.guides\u002F14.ai",{"title":117,"path":118,"stem":119,"icon":120},"Document tree","\u002Fguides\u002Fdocument-tree","3.guides\u002F15.document-tree","i-lucide-folder-tree",{"title":122,"path":123,"stem":124,"icon":125},"Markdown and code","\u002Fguides\u002Fmarkdown-and-code","3.guides\u002F16.markdown-and-code","i-lucide-file-code",{"title":127,"path":128,"stem":129,"icon":83},"Advanced editor in React","\u002Fguides\u002Fadvanced-react","3.guides\u002F17.advanced-react",{"title":131,"path":132,"stem":133,"icon":6},"Kitchen sink: learning path","\u002Fguides\u002Fadvanced-nuxt-example","3.guides\u002F18.advanced-nuxt-example",{"title":135,"path":136,"stem":137,"icon":138},"Production","\u002Fguides\u002Fproduction","3.guides\u002F19.production","i-lucide-server",{"title":140,"path":141,"stem":142,"icon":143},"Register the Nuxt module","\u002Fguides\u002Fnuxt-module","3.guides\u002F2.nuxt-module","i-lucide-package",{"title":145,"path":146,"stem":147,"icon":148},"Storage adapters, comment stores, Nitro host","\u002Fguides\u002Fstorage-adapters","3.guides\u002F20.storage-adapters","i-lucide-database",{"title":150,"path":151,"stem":152,"icon":153},"Migrating from #tiptap-editor","\u002Fguides\u002Fmigration","3.guides\u002F21.migration","i-lucide-arrow-right-left",{"title":155,"path":156,"stem":157,"icon":158},"Content tree mechanics","\u002Fguides\u002Fcontent-tree","3.guides\u002F22.content-tree","i-lucide-git-fork",{"title":160,"path":161,"stem":162,"icon":163},"Block capabilities, abilities and actions","\u002Fguides\u002Fblock-capabilities","3.guides\u002F23.block-capabilities","i-lucide-shield-check",{"title":165,"path":166,"stem":167,"icon":168},"Block types in code and JSON","\u002Fguides\u002Fblock-types","3.guides\u002F24.block-types","i-lucide-shapes",{"title":170,"path":171,"stem":172,"icon":173},"Derive methods and the Derivation index","\u002Fguides\u002Fderive-methods","3.guides\u002F25.derive-methods","i-lucide-git-branch-plus",{"title":175,"path":176,"stem":177,"icon":178},"Block properties and Property definitions","\u002Fguides\u002Fblock-properties","3.guides\u002F26.block-properties","i-lucide-sliders-horizontal",{"title":180,"path":181,"stem":182,"icon":183},"Image studio","\u002Fguides\u002Fimage-studio","3.guides\u002F27.image-studio","i-lucide-image-plus",{"title":185,"path":186,"stem":187,"icon":188},"Prüfung and Freigabestatus","\u002Fguides\u002Fpruefung","3.guides\u002F28.pruefung","i-lucide-stamp",{"title":190,"path":191,"stem":192,"icon":193},"Workspace: find, read, reference and embed Blocks across Documents","\u002Fguides\u002Fworkspace","3.guides\u002F29.workspace","i-lucide-network",{"title":195,"path":196,"stem":197,"icon":198},"EditorPorts: auth and storage","\u002Fguides\u002Feditor-ports","3.guides\u002F3.editor-ports","i-lucide-plug",{"title":200,"path":201,"stem":202,"icon":203},"Collections: an ordered list of Blocks","\u002Fguides\u002Fcollections","3.guides\u002F30.collections","i-lucide-list-checks",{"title":205,"path":206,"stem":207,"icon":208},"Data views: a query shown as table, list or board","\u002Fguides\u002Fdata-views","3.guides\u002F31.data-views","i-lucide-table-properties",{"title":210,"path":211,"stem":212,"icon":193},"Explore: backlinks, related Blocks and the trail","\u002Fguides\u002Fexplore","3.guides\u002F32.explore",{"title":214,"path":215,"stem":216,"icon":217},"Render: export a Block or a Document to a file","\u002Fguides\u002Frender","3.guides\u002F33.render","i-lucide-file-output",{"title":219,"path":220,"stem":221,"icon":222},"Importers: what a dropped file becomes","\u002Fguides\u002Fimporters","3.guides\u002F34.importers","i-lucide-file-input",{"title":224,"path":225,"stem":226,"icon":227},"Templates: start a Document from a Dokumentvorlage","\u002Fguides\u002Ftemplates","3.guides\u002F35.templates","i-lucide-file-stack",{"title":229,"path":230,"stem":231,"icon":232},"Citations","\u002Fguides\u002Fcitations","3.guides\u002F36.citations","i-lucide-quote",{"title":234,"path":235,"stem":236,"icon":163},"AI proposals and the export check","\u002Fguides\u002Fexport-check","3.guides\u002F37.export-check",{"title":238,"path":239,"stem":240,"icon":241},"Query: filter, sort, group and total Blocks","\u002Fguides\u002Fquery","3.guides\u002F38.query","i-lucide-list-filter",{"title":243,"path":244,"stem":245,"icon":246},"Edges: backlinks and authored connections","\u002Fguides\u002Fedges","3.guides\u002F39.edges","i-lucide-link-2",{"title":248,"path":249,"stem":250,"icon":163},"Server routes and authentication","\u002Fguides\u002Froutes-and-auth","3.guides\u002F4.routes-and-auth",{"title":252,"path":253,"stem":254,"icon":255},"Speech: text to audio, and subtitle files","\u002Fguides\u002Fspeech","3.guides\u002F41.speech","i-lucide-audio-lines",{"title":257,"path":258,"stem":259,"icon":260},"Graph: the Edges around a Block","\u002Fguides\u002Fgraph","3.guides\u002F42.graph","i-lucide-waypoints",{"title":262,"path":263,"stem":264,"icon":265},"PDF viewer: passages, anchors and quotes","\u002Fguides\u002Fpdf-viewer","3.guides\u002F43.pdf-viewer","i-lucide-file-search",{"title":267,"path":268,"stem":269,"icon":270},"Obsidian: import and export a vault","\u002Fguides\u002Fobsidian","3.guides\u002F44.obsidian","i-lucide-folder-input",{"title":272,"path":273,"stem":274,"icon":275},"Typst: render a Document as a PDF with citations","\u002Fguides\u002Ftypst","3.guides\u002F45.typst","i-lucide-file-text",{"title":277,"path":278,"stem":279,"icon":280},"Audio: read aloud, mixdown and ElevenLabs","\u002Fguides\u002Faudio","3.guides\u002F46.audio","i-lucide-audio-waveform",{"title":282,"path":283,"stem":284,"icon":285},"Slides: decks, slide layouts and exports","\u002Fguides\u002Fslides","3.guides\u002F47.slides","i-lucide-presentation",{"title":287,"path":288,"stem":289,"icon":290},"Knowledge graph: sources and concepts beside the Documents","\u002Fguides\u002Fknowledge-graph","3.guides\u002F49.knowledge-graph","i-lucide-share-2",{"title":292,"path":293,"stem":294,"icon":78},"AI configuration and secrets","\u002Fguides\u002Fai-configuration","3.guides\u002F5.ai-configuration",{"title":296,"path":297,"stem":298,"children":299,"icon":301},"Index on Postgres: typos, meaning and SQL pushdown","\u002Fguides\u002Findex-pg","3.guides\u002F50.index-pg",[300],{"title":296,"path":297,"stem":298,"icon":301},"i-lucide-database-zap",{"title":303,"path":304,"stem":305,"icon":306},"Charts: bar, line, pie and scatter over a query","\u002Fguides\u002Fcharts","3.guides\u002F51.charts","i-lucide-chart-column",{"title":308,"path":309,"stem":310,"icon":73},"Collaboration on the client","\u002Fguides\u002Fcollaboration","3.guides\u002F6.collaboration",{"title":312,"path":313,"stem":314,"icon":315},"Block UI (drag handle, hover actions)","\u002Fguides\u002Fblock-ui","3.guides\u002F7.block-ui","i-lucide-grip-vertical",{"title":317,"path":318,"stem":319,"icon":320},"Settings and app lifetime","\u002Fguides\u002Fsettings","3.guides\u002F8.settings","i-lucide-settings",{"title":322,"path":323,"stem":324,"icon":325},"Language","\u002Fguides\u002Flanguage","3.guides\u002F9.language","i-lucide-languages",{"title":327,"icon":14,"path":328,"stem":329,"children":330,"page":37},"Reference","\u002Freference","4.reference",[331,335,339,344,348,352,356,360,364,368,373,378,382],{"title":332,"path":333,"stem":334,"icon":143},"Public exports","\u002Freference\u002Fexports","4.reference\u002F1.exports",{"title":336,"path":337,"stem":338,"icon":173},"Derive method contract","\u002Freference\u002Fderive-methods","4.reference\u002F10.derive-methods",{"title":340,"path":341,"stem":342,"icon":343},"Changelog","\u002Freference\u002Fchangelog","4.reference\u002F11.changelog","i-lucide-history",{"title":345,"path":346,"stem":347,"icon":217},"Renderer port","\u002Freference\u002Frenderer-port","4.reference\u002F12.renderer-port",{"title":349,"path":350,"stem":351,"icon":255},"Speech port","\u002Freference\u002Fspeech-port","4.reference\u002F13.speech-port",{"title":353,"path":354,"stem":355,"icon":58},"Presets and features","\u002Freference\u002Fpresets-and-features","4.reference\u002F2.presets-and-features",{"title":357,"path":358,"stem":359,"icon":68},"Feature contract","\u002Freference\u002Ffeature-contract","4.reference\u002F3.feature-contract",{"title":361,"path":362,"stem":363,"icon":107},"CSS and UI-provider requirements","\u002Freference\u002Fcss-and-ui","4.reference\u002F4.css-and-ui",{"title":365,"path":366,"stem":367,"icon":148},"Vue-free advanced schema","\u002Freference\u002Fadvanced-schema","4.reference\u002F5.advanced-schema",{"title":369,"path":370,"stem":371,"icon":372},"Dependency rules","\u002Freference\u002Fdependency-rules","4.reference\u002F6.dependency-rules","i-lucide-git-branch",{"title":374,"path":375,"stem":376,"icon":377},"Commands","\u002Freference\u002Fcommands","4.reference\u002F7.commands","i-lucide-terminal",{"title":379,"path":380,"stem":381,"icon":163},"Block capability contract","\u002Freference\u002Fblock-capabilities","4.reference\u002F8.block-capabilities",{"title":383,"path":384,"stem":385,"icon":168},"Block type contract","\u002Freference\u002Fblock-types","4.reference\u002F9.block-types",{"title":387,"path":388,"stem":389,"children":390,"icon":393},"AI agents","\u002Fai-agents","5.ai-agents\u002F1.index",[391,394,398,402,407],{"title":392,"path":388,"stem":389,"icon":393},"Overview","i-lucide-bot",{"title":395,"path":396,"stem":397,"icon":198},"Integrate the editor","\u002Fai-agents\u002Fintegrate","5.ai-agents\u002F2.integrate",{"title":399,"path":400,"stem":401,"icon":68},"Add a block or feature","\u002Fai-agents\u002Fextend","5.ai-agents\u002F3.extend",{"title":403,"path":404,"stem":405,"icon":406},"Pitfalls and invariants","\u002Fai-agents\u002Finvariants","5.ai-agents\u002F4.invariants","i-lucide-shield-alert",{"title":408,"path":409,"stem":410,"icon":411},"Verify","\u002Fai-agents\u002Fverify","5.ai-agents\u002F5.verify","i-lucide-check-check",{"id":413,"title":272,"body":414,"description":1227,"extension":1228,"links":1229,"meta":1230,"navigation":1231,"path":273,"seo":1232,"stem":274,"__hash__":1233},"docs\u002F3.guides\u002F45.typst.md",{"type":415,"value":416,"toc":1220},"minimark",[417,450,466,471,625,724,731,735,741,782,811,815,821,1003,1027,1031,1059,1112,1115,1119,1217],[418,419,420,421,425,426,430,431,434,435,438,439,445,446,449],"p",{},"The add-on ",[422,423,424],"code",{},"@skaile\u002Fforge-editor-typst"," adds one ",[427,428,429],"a",{"href":215},"render target",", ",[422,432,433],{},"typst-pdf",". It turns a whole Document, or one Typed block of the Block type ",[422,436,437],{},"paper",", into a PDF made by ",[427,440,444],{"href":441,"rel":442},"https:\u002F\u002Ftypst.app",[443],"nofollow","Typst",". The ",[427,447,448],{"href":230},"Cite"," nodes of the content become citations, and the Bibliographic records inside the content become the bibliography.",[418,451,452,453,457,458,461,462,465],{},"The add-on is server-side only. It needs no editor feature: the block action ",[454,455,456],"strong",{},"„Erzeugen als …“"," and the command ",[454,459,460],{},"„Dokument erzeugen als …“"," list every target of the ",[422,463,464],{},"render"," capability, this one among them.",[467,468,470],"h2",{"id":469},"install-and-wire","Install and wire",[472,473,478],"pre",{"className":474,"code":475,"language":476,"meta":477,"style":477},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createRenderer, markdownTarget } from '@skaile\u002Fforge-editor\u002Fadapters\u002Frender'\nimport { typstTarget } from '@skaile\u002Fforge-editor-typst'\n\n\u002F\u002F installEditorServer({ ports: { render } })\nexport const render = createRenderer([markdownTarget(), typstTarget({ style: 'apa', locale: 'de' })])\n","ts","",[422,479,480,519,539,546,553],{"__ignoreMap":477},[481,482,485,489,493,497,500,503,506,509,512,516],"span",{"class":483,"line":484},"line",1,[481,486,488],{"class":487},"s7zQu","import",[481,490,492],{"class":491},"sMK4o"," {",[481,494,496],{"class":495},"sTEyZ"," createRenderer",[481,498,499],{"class":491},",",[481,501,502],{"class":495}," markdownTarget",[481,504,505],{"class":491}," }",[481,507,508],{"class":487}," from",[481,510,511],{"class":491}," '",[481,513,515],{"class":514},"sfazB","@skaile\u002Fforge-editor\u002Fadapters\u002Frender",[481,517,518],{"class":491},"'\n",[481,520,522,524,526,529,531,533,535,537],{"class":483,"line":521},2,[481,523,488],{"class":487},[481,525,492],{"class":491},[481,527,528],{"class":495}," typstTarget",[481,530,505],{"class":491},[481,532,508],{"class":487},[481,534,511],{"class":491},[481,536,424],{"class":514},[481,538,518],{"class":491},[481,540,542],{"class":483,"line":541},3,[481,543,545],{"emptyLinePlaceholder":544},true,"\n",[481,547,549],{"class":483,"line":548},4,[481,550,552],{"class":551},"sHwdD","\u002F\u002F installEditorServer({ ports: { render } })\n",[481,554,556,559,563,566,569,572,575,578,581,583,585,588,591,595,598,600,603,606,608,611,613,615,618,620,622],{"class":483,"line":555},5,[481,557,558],{"class":487},"export",[481,560,562],{"class":561},"spNyl"," const",[481,564,565],{"class":495}," render ",[481,567,568],{"class":491},"=",[481,570,496],{"class":571},"s2Zo4",[481,573,574],{"class":495},"([",[481,576,577],{"class":571},"markdownTarget",[481,579,580],{"class":495},"()",[481,582,499],{"class":491},[481,584,528],{"class":571},[481,586,587],{"class":495},"(",[481,589,590],{"class":491},"{",[481,592,594],{"class":593},"swJcz"," style",[481,596,597],{"class":491},":",[481,599,511],{"class":491},[481,601,602],{"class":514},"apa",[481,604,605],{"class":491},"'",[481,607,499],{"class":491},[481,609,610],{"class":593}," locale",[481,612,597],{"class":491},[481,614,511],{"class":491},[481,616,617],{"class":514},"de",[481,619,605],{"class":491},[481,621,505],{"class":491},[481,623,624],{"class":495},")])\n",[626,627,628,644],"table",{},[629,630,631],"thead",{},[632,633,634,641],"tr",{},[635,636,637,638],"th",{},"Option of ",[422,639,640],{},"typstTarget",[635,642,643],{},"Meaning",[645,646,647,664,680,694,711],"tbody",{},[632,648,649,655],{},[650,651,652],"td",{},[422,653,654],{},"style",[650,656,657,658,661,662],{},"citation style when the render names none: one of ",[422,659,660],{},"CSL_STYLES",", default ",[422,663,602],{},[632,665,666,671],{},[650,667,668],{},[422,669,670],{},"locale",[650,672,673,674,676,677],{},"language of the PDF (hyphenation, the bibliography title) and of the error messages: ",[422,675,617],{}," (default) or ",[422,678,679],{},"en",[632,681,682,687],{},[650,683,684],{},[422,685,686],{},"label",[650,688,689,690,693],{},"the name in the export menu (default ",[422,691,692],{},"PDF (Typst)",")",[632,695,696,701],{},[650,697,698],{},[422,699,700],{},"accepts",[650,702,703,704,707,708,693],{},"Block types accepted besides ",[422,705,706],{},"'document'"," (default ",[422,709,710],{},"['paper']",[632,712,713,718],{},[650,714,715],{},[422,716,717],{},"compile",[650,719,720,723],{},[422,721,722],{},"{ engine?: 'auto' | 'node' | 'binary', binary?: string }",", see below",[418,725,726,727,730],{},"A render input picks the style per request: ",[422,728,729],{},"options: { style: 'ieee' }",".",[467,732,734],{"id":733},"the-compiler","The compiler",[418,736,737,740],{},[422,738,739],{},"compileTypst"," tries two engines in this order:",[742,743,744,756],"ol",{},[745,746,747,748,751,752,755],"li",{},"The native compiler ",[422,749,750],{},"@myriaddreamin\u002Ftypst-ts-node-compiler",", an optional dependency of the add-on. It runs inside the server process; no ",[422,753,754],{},"typst"," program is needed. The compile is synchronous and blocks the event loop while it runs.",[745,757,758,759,761,762,765,766,769,770,773,774,777,778,781],{},"The ",[422,760,754],{}," program on the ",[422,763,764],{},"PATH"," (or ",[422,767,768],{},"compile.binary","). The add-on writes ",[422,771,772],{},"main.typ"," and ",[422,775,776],{},"refs.bib"," to a temporary directory, runs ",[422,779,780],{},"typst compile",", reads the PDF and removes the directory. A client that disconnects aborts the process.",[418,783,784,785,788,789,792,793,795,796,799,800,803,804,806,807,810],{},"When neither exists the render fails with the error code ",[422,786,787],{},"typst-missing",". Markup that Typst rejects fails with ",[422,790,791],{},"typst-failed","; the message holds Typst's own diagnostics. A style outside ",[422,794,660],{}," fails with ",[422,797,798],{},"bad-style"," before any compile starts. All three are ",[422,801,802],{},"TypstError"," with a stable ",[422,805,422],{},"; the message is in the language of the render and reaches the client as the ",[422,808,809],{},"error"," event.",[467,812,814],{"id":813},"what-the-markup-holds","What the markup holds",[418,816,817,820],{},[422,818,819],{},"typstOf(content, bib, style)"," is pure. It maps the content like the editor's Markdown export does:",[626,822,823,832],{},[629,824,825],{},[632,826,827,830],{},[635,828,829],{},"Content",[635,831,444],{},[645,833,834,851,869,881,919,933,954,970,978,986],{},[632,835,836,843],{},[650,837,838,839,693],{},"heading (level ",[840,841,842],"em",{},"n",[650,844,845,847,848,850],{},[422,846,568],{}," repeated ",[840,849,842],{}," times",[632,852,853,859],{},[650,854,855,856,693],{},"Typed block (depth ",[840,857,858],{},"d",[650,860,861,862,864,865,868],{},"heading of level ",[840,863,858],{}," with its title (not when the title is hidden), the description in ",[422,866,867],{},"#emph",", the tags in small grey text, then the body",[632,870,871,874],{},[650,872,873],{},"paragraph, hard break",[650,875,876,877,880],{},"text; a break is ",[422,878,879],{},"\\"," and a newline",[632,882,883,886],{},[650,884,885],{},"bold, italic, strike, underline, highlight, sub, super, code, link",[650,887,888,430,891,430,893,430,896,430,899,430,902,430,905,430,908,430,911,914,915,918],{},[422,889,890],{},"#strong",[422,892,867],{},[422,894,895],{},"#strike",[422,897,898],{},"#underline",[422,900,901],{},"#highlight",[422,903,904],{},"#sub",[422,906,907],{},"#super",[422,909,910],{},"#raw",[422,912,913],{},"#link"," (the function form works inside a word, which ",[422,916,917],{},"*…*"," does not)",[632,920,921,924],{},[650,922,923],{},"bullet, ordered and task lists",[650,925,926,773,929,932],{},[422,927,928],{},"-",[422,930,931],{},"1."," items, nested by indentation; a task item starts with ☐ or ☑",[632,934,935,937],{},[650,936,626],{},[650,938,939,942,943,946,947,773,950,953],{},[422,940,941],{},"#table"," with ",[422,944,945],{},"table.header"," for a header row, ",[422,948,949],{},"colspan",[422,951,952],{},"rowspan"," kept",[632,955,956,959],{},[650,957,958],{},"code block, quote, rule",[650,960,961,430,964,430,967],{},[422,962,963],{},"#raw(block: true)",[422,965,966],{},"#quote(block: true)",[422,968,969],{},"#line",[632,971,972,975],{},[650,973,974],{},"mention, tag, reference chip",[650,976,977],{},"their text",[632,979,980,983],{},[650,981,982],{},"image, audio, video, file, block embed",[650,984,985],{},"the kind and name in italics: the editor's asset URLs are not files Typst can read",[632,987,988,994],{},[650,989,990,993],{},[422,991,992],{},"cite"," node",[650,995,996,999,1000],{},[422,997,998],{},"@key",", or ",[422,1001,1002],{},"@key[locator]",[418,1004,1005,1006,1008,1009,1011,1012,1015,1016,1019,1020,1022,1023,1026],{},"A ",[422,1007,992],{}," whose key names an entry of the bibliography becomes a Typst citation. A ",[422,1010,992],{}," whose key names none reads as the text ",[422,1013,1014],{},"(key)",", like the editor's gone chip. When at least one citation resolved, the markup ends with ",[422,1017,1018],{},"#bibliography(\"refs.bib\", style: …, title: …)","; Typst prints only the works that are cited. A bare ",[422,1021,998],{}," followed by unmarked text that continues the word gets an empty content block (",[422,1024,1025],{},"@key#[]","), so Typst does not read the text as part of the key.",[467,1028,1030],{"id":1029},"the-bibliography","The bibliography",[418,1032,1033,1036,1037,1040,1041,1044,1045,1048,1049,1051,1052,1055,1056,1058],{},[422,1034,1035],{},"bibEntriesOf(content)"," collects the CSL-JSON record of every Typed block with ",[422,1038,1039],{},"meta.bib",", in Document order, with the block id and the title. ",[422,1042,1043],{},"bibFileOf(entries)"," writes one BibTeX entry for each through the library's ",[422,1046,1047],{},"bibtexOf","; the citation key is the one the ",[422,1050,992],{}," node holds (",[422,1053,1054],{},"bibtexKey","). Two records that derive one key keep the first. The file is ",[422,1057,776],{},", next to the main file.",[626,1060,1061,1071],{},[629,1062,1063],{},[632,1064,1065,1068],{},[635,1066,1067],{},"Style",[635,1069,1070],{},"Typst style",[645,1072,1073,1082,1092,1102],{},[632,1074,1075,1079],{},[650,1076,1077],{},[422,1078,602],{},[650,1080,1081],{},"APA",[632,1083,1084,1089],{},[650,1085,1086],{},[422,1087,1088],{},"ieee",[650,1090,1091],{},"IEEE",[632,1093,1094,1099],{},[650,1095,1096],{},[422,1097,1098],{},"chicago-author-date",[650,1100,1101],{},"Chicago author-date",[632,1103,1104,1109],{},[650,1105,1106],{},[422,1107,1108],{},"vancouver",[650,1110,1111],{},"Vancouver",[418,1113,1114],{},"The styles are Typst's built-in CSL styles, so the add-on has no citation processor of its own.",[467,1116,1118],{"id":1117},"pieces-for-your-own-pipeline","Pieces for your own pipeline",[626,1120,1121,1131],{},[629,1122,1123],{},[632,1124,1125,1128],{},[635,1126,1127],{},"Export",[635,1129,1130],{},"Use",[645,1132,1133,1146,1163,1179,1194,1206],{},[632,1134,1135,1140],{},[650,1136,1137],{},[422,1138,1139],{},"typstTarget(options?)",[650,1141,1142,1143],{},"the ",[422,1144,1145],{},"RenderTarget",[632,1147,1148,1156],{},[650,1149,1150,430,1153],{},[422,1151,1152],{},"typstOf",[422,1154,1155],{},"typstSourceOf",[650,1157,1158,1159,1162],{},"markup, or markup with its ",[422,1160,1161],{},".bib"," text",[632,1164,1165,1176],{},[650,1166,1167,430,1170,430,1173],{},[422,1168,1169],{},"bibEntriesOf",[422,1171,1172],{},"bibFileOf",[422,1174,1175],{},"BIB_FILE",[650,1177,1178],{},"the bibliography of a content tree",[632,1180,1181,1188],{},[650,1182,1183,430,1185],{},[422,1184,739],{},[422,1186,1187],{},"typstEngineOf",[650,1189,1190,1191],{},"the PDF; which engine would run, or ",[422,1192,1193],{},"null",[632,1195,1196,1203],{},[650,1197,1198,430,1200],{},[422,1199,660],{},[422,1201,1202],{},"isCslStyle",[650,1204,1205],{},"the citation styles",[632,1207,1208,1212],{},[650,1209,1210],{},[422,1211,802],{},[650,1213,1214,1215],{},"the error with its ",[422,1216,422],{},[654,1218,1219],{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":477,"searchDepth":521,"depth":521,"links":1221},[1222,1223,1224,1225,1226],{"id":469,"depth":521,"text":470},{"id":733,"depth":521,"text":734},{"id":813,"depth":521,"text":814},{"id":1029,"depth":521,"text":1030},{"id":1117,"depth":521,"text":1118},"The add-on @skaile\u002Fforge-editor-typst: the render target typst-pdf that turns a Document or a paper into Typst markup, writes the bibliography as BibTeX, and compiles a PDF in one of four citation styles.","md",null,{},{"icon":275},{"title":272,"description":1227},"1Ruan4tjnmUUYLAFAn9JV3VDtStYPmpznlHxOh9EmkY",[1235,1237],{"title":267,"path":268,"stem":269,"description":1236,"icon":270,"children":-1},"The add-on @skaile\u002Fforge-editor-obsidian: importVault plans one Document per note with frontmatter as properties, wikilinks as reference chips and ^id block ids kept; exportVault writes them back; a command uploads a vault to an editor server.",{"title":277,"path":278,"stem":279,"description":1238,"icon":280,"children":-1},"The add-on @skaile\u002Fforge-editor-audio: an ElevenLabs SpeechProvider, the derive methods audio-tts and audio-mixdown that make recording blocks with named Derivation inputs, and the render target audio-mixdown that mixes takes through ffmpeg.",1793219829577]