Commit ec5af07e authored by mashiro's avatar mashiro

Initial commit

parents
---
name: obsidian
description: Work with Obsidian vaults (Markdown notes), including vault discovery, note organization, and safe refactors. Use when the user asks to manage Obsidian notes, folders, links, or .obsidian configuration.
homepage: https://help.obsidian.md
---
# Obsidian
Obsidian vault is a normal folder on disk. Treat notes as plain Markdown files.
Vault structure (typical)
- Notes: `*.md` (plain text Markdown; edit with any editor)
- Config: `.obsidian/` (workspace + plugin settings; usually don’t touch from scripts)
- Canvases: `*.canvas` (JSON)
- Attachments: whatever folder you chose in Obsidian settings (images/PDFs/etc.)
## Find the active vault(s)
Obsidian desktop tracks vaults in `obsidian.json`:
- Windows: `%APPDATA%\obsidian\obsidian.json`
- macOS: `~/Library/Application Support/obsidian/obsidian.json`
- Linux: `~/.config/obsidian/obsidian.json`
Vault name is usually the folder name.
When multiple vaults exist, read this file first and prefer entries marked as opened/recent.
Notes
- Multiple vaults are common (work/personal). Do not guess vault path.
- Avoid hardcoded absolute paths in scripts.
## Preferred workflow in this environment
1. Discover vault path from `obsidian.json`.
2. Use file operations on `.md` files for create/edit/update.
3. Use ripgrep (`rg`) for search and backlink checks.
4. Edit `.obsidian` config only when user explicitly asks.
## Common note operations (without extra CLI dependency)
Search note names/content:
- `rg "keyword" "<vault-path>"`
Create a note:
- create `Folder/Note.md` with a clear heading and sections
Rename or move a note:
- rename file and then update `[[wikilinks]]` references by search + replace
Delete a note:
- only delete after checking inbound links (`rg "\[\[NoteName(\||\]\])"`)
## Link-safe refactor checklist
- [ ] Locate target note path
- [ ] Find inbound wikilinks and markdown links
- [ ] Apply rename/move
- [ ] Update links that reference old path or old title
- [ ] Re-scan to confirm no stale references
## Editing conventions
- Keep headings stable to avoid breaking section links
- Prefer relative markdown links and wikilinks
- Do not mass-edit `.obsidian/workspace.json` unless requested
- Keep generated content concise and readable in plain Markdown
{
"pdfExportSettings": {
"includeName": true,
"pageSize": "Letter",
"landscape": false,
"margin": "0",
"downscalePercent": 100
},
"alwaysUpdateLinks": true
}
\ No newline at end of file
{
"cssTheme": "Blue Topaz"
}
\ No newline at end of file
[
"obsidian-tasks-plugin",
"obsidian-excalidraw-plugin",
"obsidian-git",
"obsidian-enhancing-export",
"obsidian-pandoc"
]
\ No newline at end of file
{
"file-explorer": true,
"global-search": true,
"switcher": true,
"graph": true,
"backlink": true,
"canvas": true,
"outgoing-link": true,
"tag-pane": true,
"footnotes": false,
"properties": true,
"page-preview": true,
"daily-notes": true,
"templates": true,
"note-composer": true,
"command-palette": true,
"slash-command": true,
"editor-status": true,
"bookmarks": true,
"markdown-importer": true,
"zk-prefixer": true,
"random-note": false,
"outline": true,
"word-count": true,
"slides": false,
"audio-recorder": false,
"workspaces": false,
"file-recovery": true,
"publish": true,
"sync": true,
"bases": true,
"webviewer": true
}
\ No newline at end of file
{
"collapse-filter": true,
"search": "",
"showTags": false,
"showAttachments": false,
"hideUnresolved": false,
"showOrphans": true,
"collapse-color-groups": true,
"colorGroups": [],
"collapse-display": true,
"showArrow": false,
"textFadeMultiplier": 0,
"nodeSizeMultiplier": 1,
"lineSizeMultiplier": 1,
"collapse-forces": true,
"centerStrength": 0.518713248970312,
"repelStrength": 10,
"linkStrength": 1,
"linkDistance": 250,
"scale": 1.9655560456566716,
"close": false
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"id": "copilot",
"name": "Copilot",
"version": "3.2.7",
"minAppVersion": "0.15.0",
"description": "Your AI Copilot: Chat with Your Second Brain, Learn Faster, Work Smarter.",
"author": "Logan Yang",
"authorUrl": "https://twitter.com/logancyang",
"fundingUrl": {
"Buy Me a Coffee": "https://www.buymeacoffee.com/logancyang",
"GitHub Sponsor": "https://github.com/sponsors/logancyang"
}
}
*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(147,197,253,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(147,197,253,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.tw-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.tw-pointer-events-none{pointer-events:none}.tw-invisible{visibility:hidden}.tw-fixed{position:fixed}.tw-absolute{position:absolute}.tw-relative{position:relative}.tw-inset-0{inset:0}.tw-inset-x-0{left:0;right:0}.tw-inset-y-0{top:0;bottom:0}.tw-bottom-0{bottom:0}.tw-bottom-4{bottom:var(--size-4-4)}.tw-left-0{left:0}.tw-left-1{left:var(--size-4-1)}.tw-left-1\/2{left:50%}.tw-left-2{left:var(--size-4-2)}.tw-right-0{right:0}.tw-right-1{right:var(--size-4-1)}.tw-right-2{right:var(--size-4-2)}.tw-right-3{right:var(--size-4-3)}.tw-right-4{right:var(--size-4-4)}.tw-right-6{right:var(--size-4-6)}.tw-right-8{right:2rem}.tw-top-0{top:0}.tw-top-1{top:var(--size-4-1)}.tw-top-1\/2{top:50%}.tw-top-2{top:var(--size-4-2)}.tw-top-4{top:var(--size-4-4)}.tw-z-\[100\]{z-index:100}.tw-z-\[10\]{z-index:10}.tw-z-\[1\]{z-index:1}.tw-z-\[50\]{z-index:50}.tw-z-\[9999\]{z-index:9999}.tw-z-modal{z-index:var(--layer-modal)}.tw-z-popover{z-index:var(--layer-popover)}.tw-z-sidedock{z-index:var(--layer-sidedock)}.tw-col-span-3{grid-column:span 3/span 3}.-tw-m-1,.tw--m-1{margin:calc(var(--size-4-1)*-1)}.tw-m-0{margin:0}.-tw-mx-1{margin-left:calc(var(--size-4-1)*-1);margin-right:calc(var(--size-4-1)*-1)}.tw-mx-0\.5{margin-left:.125rem;margin-right:.125rem}.tw-mx-2{margin-left:var(--size-4-2);margin-right:var(--size-4-2)}.tw-mx-auto{margin-left:auto;margin-right:auto}.tw-my-1{margin-top:var(--size-4-1);margin-bottom:var(--size-4-1)}.tw-my-2{margin-top:var(--size-4-2);margin-bottom:var(--size-4-2)}.tw-my-3{margin-top:var(--size-4-3);margin-bottom:var(--size-4-3)}.tw-mb-1{margin-bottom:var(--size-4-1)}.tw-mb-2{margin-bottom:var(--size-4-2)}.tw-mb-3{margin-bottom:var(--size-4-3)}.tw-mb-4{margin-bottom:var(--size-4-4)}.tw-mb-6{margin-bottom:var(--size-4-6)}.tw-ml-0\.5{margin-left:.125rem}.tw-ml-1{margin-left:var(--size-4-1)}.tw-ml-2{margin-left:var(--size-4-2)}.tw-ml-4{margin-left:var(--size-4-4)}.tw-ml-auto{margin-left:auto}.tw-mr-1{margin-right:var(--size-4-1)}.tw-mr-1\.5{margin-right:.375rem}.tw-mr-2{margin-right:var(--size-4-2)}.tw-mt-0{margin-top:0}.tw-mt-0\.5{margin-top:.125rem}.tw-mt-1{margin-top:var(--size-4-1)}.tw-mt-10{margin-top:2.5rem}.tw-mt-2{margin-top:var(--size-4-2)}.tw-mt-3{margin-top:var(--size-4-3)}.tw-mt-4{margin-top:var(--size-4-4)}.tw-mt-6{margin-top:var(--size-4-6)}.tw-mt-auto{margin-top:auto}.tw-line-clamp-2{-webkit-line-clamp:2}.tw-line-clamp-2,.tw-line-clamp-3{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical}.tw-line-clamp-3{-webkit-line-clamp:3}.tw-block{display:block}.tw-inline-block{display:inline-block}.tw-flex{display:flex}.tw-inline-flex{display:inline-flex}.tw-grid{display:grid}.tw-hidden{display:none}.\!tw-size-3{width:var(--size-4-3)!important;height:var(--size-4-3)!important}.tw-size-12{width:3rem;height:3rem}.tw-size-2{width:var(--size-4-2);height:var(--size-4-2)}.tw-size-2\.5{width:.625rem;height:.625rem}.tw-size-3{width:var(--size-4-3);height:var(--size-4-3)}.tw-size-3\.5{width:.875rem;height:.875rem}.tw-size-4{width:var(--size-4-4);height:var(--size-4-4)}.tw-size-5{width:var(--size-4-5);height:var(--size-4-5)}.tw-size-6{width:var(--size-4-6);height:var(--size-4-6)}.tw-size-7{width:1.75rem;height:1.75rem}.tw-size-8{width:2rem;height:2rem}.tw-size-full{width:100%;height:100%}.\!tw-h-6{height:var(--size-4-6)!important}.\!tw-h-9{height:2.25rem!important}.tw-h-1{height:var(--size-4-1)}.tw-h-1\.5{height:.375rem}.tw-h-10{height:2.5rem}.tw-h-2{height:var(--size-4-2)}.tw-h-2\.5{height:.625rem}.tw-h-4{height:var(--size-4-4)}.tw-h-5\.5{height:calc(var(--size-4-5) + 2px)}.tw-h-6{height:var(--size-4-6)}.tw-h-7{height:1.75rem}.tw-h-8{height:2rem}.tw-h-9{height:2.25rem}.tw-h-\[5px\]{height:5px}.tw-h-\[calc\(100\%-16px\)\]{height:calc(100% - 16px)}.tw-h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.tw-h-auto{height:auto}.tw-h-full{height:100%}.tw-h-px{height:1px}.tw-max-h-0{max-height:0}.tw-max-h-12{max-height:3rem}.tw-max-h-32{max-height:8rem}.tw-max-h-40{max-height:10rem}.tw-max-h-48{max-height:12rem}.tw-max-h-6{max-height:var(--size-4-6)}.tw-max-h-64{max-height:16rem}.tw-max-h-96{max-height:24rem}.tw-max-h-\[180px\]{max-height:180px}.tw-max-h-\[300px\]{max-height:300px}.tw-max-h-\[400px\]{max-height:400px}.tw-max-h-\[500px\]{max-height:500px}.tw-max-h-\[80vh\]{max-height:80vh}.tw-max-h-\[85vh\]{max-height:85vh}.tw-max-h-\[calc\(3\*5\.7rem\)\]{max-height:17.1rem}.tw-max-h-\[min\(500px\,70vh\)\]{max-height:min(500px,70vh)}.tw-max-h-screen{max-height:100vh}.tw-min-h-0{min-height:0}.tw-min-h-12{min-height:3rem}.tw-min-h-14{min-height:3.5rem}.tw-min-h-20{min-height:5rem}.tw-min-h-32{min-height:8rem}.tw-min-h-\[120px\]{min-height:120px}.tw-min-h-\[150px\]{min-height:150px}.tw-min-h-\[180px\]{min-height:180px}.tw-min-h-\[200px\]{min-height:200px}.tw-min-h-\[36px\]{min-height:36px}.tw-min-h-\[60px\]{min-height:60px}.tw-min-h-\[80px\]{min-height:80px}.tw-w-1{width:var(--size-4-1)}.tw-w-1\.5{width:.375rem}.tw-w-10{width:2.5rem}.tw-w-16{width:4rem}.tw-w-2\.5{width:.625rem}.tw-w-24{width:6rem}.tw-w-28{width:7rem}.tw-w-3{width:var(--size-4-3)}.tw-w-32{width:8rem}.tw-w-4{width:var(--size-4-4)}.tw-w-56{width:14rem}.tw-w-6{width:var(--size-4-6)}.tw-w-64{width:16rem}.tw-w-72{width:18rem}.tw-w-80{width:20rem}.tw-w-\[100px\]{width:100px}.tw-w-\[120px\]{width:120px}.tw-w-\[140px\]{width:140px}.tw-w-\[320px\]{width:320px}.tw-w-\[400px\]{width:400px}.tw-w-\[72px\]{width:72px}.tw-w-\[80px\]{width:80px}.tw-w-fit{width:-moz-fit-content;width:fit-content}.tw-w-full{width:100%}.tw-w-px{width:1px}.\!tw-min-w-\[50px\]{min-width:50px!important}.tw-min-w-0{min-width:0}.tw-min-w-10{min-width:2.5rem}.tw-min-w-32{min-width:8rem}.tw-min-w-72{min-width:18rem}.tw-min-w-8{min-width:2rem}.tw-min-w-\[24px\]{min-width:24px}.tw-min-w-\[60px\]{min-width:60px}.tw-min-w-\[72px\]{min-width:72px}.tw-min-w-\[80px\]{min-width:80px}.tw-min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.tw-min-w-fit{min-width:-moz-fit-content;min-width:fit-content}.\!tw-max-w-full{max-width:100%!important}.tw-max-w-0{max-width:0}.tw-max-w-40{max-width:10rem}.tw-max-w-64{max-width:16rem}.tw-max-w-80{max-width:20rem}.tw-max-w-96{max-width:24rem}.tw-max-w-\[100px\]{max-width:100px}.tw-max-w-\[16px\]{max-width:16px}.tw-max-w-\[250px\]{max-width:250px}.tw-max-w-\[300px\]{max-width:300px}.tw-max-w-\[600px\]{max-width:600px}.tw-max-w-\[80\%\]{max-width:80%}.tw-max-w-\[85\%\]{max-width:85%}.tw-max-w-\[95\%\]{max-width:95%}.tw-max-w-full{max-width:100%}.tw-max-w-lg{max-width:32rem}.tw-max-w-sm{max-width:24rem}.tw-max-w-xs{max-width:20rem}.tw-flex-1{flex:1 1 0%}.tw-flex-none{flex:none}.tw-shrink-0{flex-shrink:0}.tw-grow{flex-grow:1}.tw-caption-bottom{caption-side:bottom}.tw-border-collapse{border-collapse:collapse}.-tw-translate-x-1\/2{--tw-translate-x:-50%}.-tw-translate-x-1\/2,.-tw-translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-tw-translate-x-full{--tw-translate-x:-100%}.-tw-translate-y-1\/2{--tw-translate-y:-50%}.-tw-translate-y-1\/2,.tw--translate-x-4{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.tw--translate-x-4{--tw-translate-x:calc(var(--size-4-4)*-1)}.tw-translate-x-0{--tw-translate-x:0px}.tw-translate-x-0,.tw-translate-x-0\.5{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.tw-translate-x-0\.5{--tw-translate-x:0.125rem}.tw-translate-x-5\.5{--tw-translate-x:calc(var(--size-4-5) + 2px)}.tw-translate-x-5\.5,.tw-translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.tw-translate-y-0{--tw-translate-y:0px}.tw-translate-y-2{--tw-translate-y:var(--size-4-2)}.tw-rotate-180,.tw-translate-y-2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.tw-rotate-180{--tw-rotate:180deg}.tw-rotate-90{--tw-rotate:90deg}.tw-rotate-90,.tw-transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.tw-transform-gpu{transform:translate3d(var(--tw-translate-x),var(--tw-translate-y),0) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes tw-pulse{50%{opacity:.5}}.tw-animate-pulse{animation:tw-pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes tw-spin{to{transform:rotate(1turn)}}.tw-animate-spin{animation:tw-spin 1s linear infinite}.tw-cursor-default{cursor:default}.tw-cursor-ew-resize{cursor:ew-resize}.tw-cursor-grab{cursor:grab}.tw-cursor-grabbing{cursor:grabbing}.tw-cursor-help{cursor:help}.tw-cursor-nesw-resize{cursor:nesw-resize}.tw-cursor-not-allowed{cursor:not-allowed}.tw-cursor-ns-resize{cursor:ns-resize}.tw-cursor-nwse-resize{cursor:nwse-resize}.tw-cursor-pointer{cursor:var(--cursor-link)}.tw-touch-auto{touch-action:auto}.tw-touch-none{touch-action:none}.tw-touch-manipulation{touch-action:manipulation}.tw-select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.tw-select-text{-webkit-user-select:text;-moz-user-select:text;user-select:text}.tw-resize-none{resize:none}.tw-resize-y{resize:vertical}.tw-list-inside{list-style-position:inside}.tw-list-disc{list-style-type:disc}.tw-appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.tw-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.tw-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.tw-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.tw-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.tw-flex-row{flex-direction:row}.tw-flex-col{flex-direction:column}.tw-flex-col-reverse{flex-direction:column-reverse}.tw-flex-wrap{flex-wrap:wrap}.tw-items-start{align-items:flex-start}.tw-items-end{align-items:flex-end}.tw-items-center{align-items:center}.tw-justify-start{justify-content:flex-start}.tw-justify-end{justify-content:flex-end}.tw-justify-center{justify-content:center}.tw-justify-between{justify-content:space-between}.tw-justify-around{justify-content:space-around}.tw-gap-0{gap:0}.tw-gap-0\.5{gap:.125rem}.tw-gap-1{gap:var(--size-4-1)}.tw-gap-1\.5{gap:.375rem}.tw-gap-2{gap:var(--size-4-2)}.tw-gap-3{gap:var(--size-4-3)}.tw-gap-4{gap:var(--size-4-4)}.tw-gap-5{gap:var(--size-4-5)}.tw-gap-x-2{-moz-column-gap:var(--size-4-2);column-gap:var(--size-4-2)}.tw-gap-x-6{-moz-column-gap:var(--size-4-6);column-gap:var(--size-4-6)}.tw-gap-y-1{row-gap:var(--size-4-1)}.tw-gap-y-2{row-gap:var(--size-4-2)}.tw-space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(var(--size-4-1)*var(--tw-space-x-reverse));margin-left:calc(var(--size-4-1)*(1 - var(--tw-space-x-reverse)))}.tw-space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem*var(--tw-space-y-reverse))}.tw-space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(var(--size-4-1)*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(var(--size-4-1)*var(--tw-space-y-reverse))}.tw-space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.tw-space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(var(--size-4-2)*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(var(--size-4-2)*var(--tw-space-y-reverse))}.tw-space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.625rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem*var(--tw-space-y-reverse))}.tw-space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(var(--size-4-3)*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(var(--size-4-3)*var(--tw-space-y-reverse))}.tw-space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(var(--size-4-4)*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(var(--size-4-4)*var(--tw-space-y-reverse))}.tw-space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(var(--size-4-6)*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(var(--size-4-6)*var(--tw-space-y-reverse))}.tw-self-start{align-self:flex-start}.tw-self-end{align-self:flex-end}.tw-overflow-auto{overflow:auto}.tw-overflow-hidden{overflow:hidden}.tw-overflow-x-auto{overflow-x:auto}.tw-overflow-y-auto{overflow-y:auto}.tw-overflow-y-hidden{overflow-y:hidden}.tw-overflow-y-scroll{overflow-y:scroll}.tw-scroll-smooth{scroll-behavior:smooth}.tw-truncate{overflow:hidden;text-overflow:ellipsis}.tw-truncate,.tw-whitespace-nowrap{white-space:nowrap}.tw-whitespace-pre-wrap{white-space:pre-wrap}.tw-text-wrap{text-wrap:wrap}.tw-break-words{overflow-wrap:break-word}.tw-break-all{word-break:break-all}.\!tw-rounded-md{border-radius:var(--radius-m)!important}.tw-rounded{border-radius:.25rem}.tw-rounded-\[inherit\]{border-radius:inherit}.tw-rounded-full{border-radius:9999px}.tw-rounded-lg{border-radius:var(--radius-l)}.tw-rounded-md{border-radius:var(--radius-m)}.tw-rounded-sm{border-radius:var(--radius-s)}.tw-rounded-xl{border-radius:var(--radius-xl)}.tw-rounded-b-\[2px\]{border-bottom-right-radius:2px;border-bottom-left-radius:2px}.tw-rounded-b-md{border-bottom-right-radius:var(--radius-m);border-bottom-left-radius:var(--radius-m)}.tw-rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.tw-rounded-t-lg{border-top-left-radius:var(--radius-l);border-top-right-radius:var(--radius-l)}.tw-rounded-t-sm{border-top-left-radius:var(--radius-s);border-top-right-radius:var(--radius-s)}.tw-rounded-bl-sm{border-bottom-left-radius:var(--radius-s)}.tw-rounded-br-sm{border-bottom-right-radius:var(--radius-s)}.\!tw-border{border-width:var(--border-width)!important}.tw-border{border-width:var(--border-width)}.tw-border-\[0px\]{border-width:0}.tw-border-x-\[0px\]{border-left-width:0;border-right-width:0}.tw-border-b{border-bottom-width:var(--border-width)}.tw-border-l{border-left-width:var(--border-width)}.tw-border-t{border-top-width:var(--border-width)}.tw-border-t-\[0px\]{border-top-width:0}.tw-border-solid{border-style:solid}.tw-border-dashed{border-style:dashed}.\!tw-border-none{border-style:none!important}.tw-border-none{border-style:none}.tw-border-border{border-color:var(--background-modifier-border)}.tw-border-interactive-accent{border-color:var(--interactive-accent)}.tw-border-transparent{border-color:transparent}.tw-border-b-border{border-bottom-color:var(--background-modifier-border)}.tw-border-l-transparent{border-left-color:transparent}.tw-border-t-transparent{border-top-color:transparent}.\!tw-bg-dropdown{background-color:var(--dropdown-background)!important}.\!tw-bg-interactive-accent{background-color:var(--interactive-accent)!important}.\!tw-bg-transparent{background-color:transparent!important}.tw-bg-\[--background-modifier-border-hover\]{background-color:var(--background-modifier-border-hover)}.tw-bg-\[color-mix\(in_srgb\,var\(--text-muted\)_40\%\,transparent\)\]{background-color:color-mix(in srgb,var(--text-muted) 40%,transparent)}.tw-bg-\[var\(--background-modifier-border\)\]{background-color:var(--background-modifier-border)}.tw-bg-callout-warning\/20{background-color:rgba(var(--callout-warning),.2)}.tw-bg-dropdown{background-color:var(--dropdown-background)}.tw-bg-error{background-color:rgba(var(--color-red-rgb),.2)}.tw-bg-error\/10{background-color:rgba(var(--color-red-rgb),.1)}.tw-bg-error\/80{background-color:rgba(var(--color-red-rgb),.8)}.tw-bg-interactive-accent{background-color:var(--interactive-accent)}.tw-bg-modifier-error{background-color:var(--background-modifier-error)}.tw-bg-modifier-error-rgb\/5{background-color:rgba(var(--background-modifier-error-rgb),.05)}.tw-bg-modifier-hover{background-color:var(--background-modifier-hover)}.tw-bg-modifier-success{background-color:var(--background-modifier-success)}.tw-bg-overlay\/50{background-color:rgba(0,0,0,.5)}.tw-bg-primary{background-color:var(--background-primary)}.tw-bg-primary-alt{background-color:var(--background-primary-alt)}.tw-bg-secondary{background-color:var(--background-secondary)}.tw-bg-secondary-alt{background-color:var(--background-secondary-alt)}.tw-bg-success{background-color:rgba(var(--color-green-rgb),.2)}.tw-bg-toggle-thumb{background-color:var(--toggle-thumb-color)}.tw-bg-transparent{background-color:transparent}.tw-bg-\[linear-gradient\(to_top\,var\(--background-primary\)_0\%\,var\(--background-primary\)_30\%\,transparent_100\%\)\]{background-image:linear-gradient(to top,var(--background-primary) 0,var(--background-primary) 30%,transparent 100%)}.tw-fill-current{fill:currentColor}.tw-stroke-\[7\]{stroke-width:7}.tw-p-0{padding:0}.tw-p-0\.5{padding:.125rem}.tw-p-1{padding:var(--size-4-1)}.tw-p-2{padding:var(--size-4-2)}.tw-p-3{padding:var(--size-4-3)}.tw-p-3\.5{padding:.875rem}.tw-p-4{padding:var(--size-4-4)}.tw-p-6{padding:var(--size-4-6)}.tw-p-8{padding:2rem}.tw-p-px{padding:1px}.\!tw-px-3{padding-left:var(--size-4-3)!important;padding-right:var(--size-4-3)!important}.\!tw-py-1{padding-top:var(--size-4-1)!important;padding-bottom:var(--size-4-1)!important}.tw-px-1{padding-left:var(--size-4-1);padding-right:var(--size-4-1)}.tw-px-1\.5{padding-left:.375rem;padding-right:.375rem}.tw-px-2{padding-left:var(--size-4-2);padding-right:var(--size-4-2)}.tw-px-2\.5{padding-left:.625rem;padding-right:.625rem}.tw-px-3{padding-left:var(--size-4-3);padding-right:var(--size-4-3)}.tw-px-4{padding-left:var(--size-4-4);padding-right:var(--size-4-4)}.tw-px-8{padding-left:2rem;padding-right:2rem}.tw-py-0{padding-top:0;padding-bottom:0}.tw-py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.tw-py-1{padding-top:var(--size-4-1);padding-bottom:var(--size-4-1)}.tw-py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.tw-py-2{padding-top:var(--size-4-2);padding-bottom:var(--size-4-2)}.tw-py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.tw-py-3{padding-top:var(--size-4-3);padding-bottom:var(--size-4-3)}.tw-py-4{padding-top:var(--size-4-4);padding-bottom:var(--size-4-4)}.tw-py-8{padding-top:2rem;padding-bottom:2rem}.\!tw-pr-7{padding-right:1.75rem!important}.tw-pb-1{padding-bottom:var(--size-4-1)}.tw-pb-2{padding-bottom:var(--size-4-2)}.tw-pb-3{padding-bottom:var(--size-4-3)}.tw-pb-4{padding-bottom:var(--size-4-4)}.tw-pb-6{padding-bottom:var(--size-4-6)}.tw-pl-0{padding-left:0}.tw-pl-1{padding-left:var(--size-4-1)}.tw-pl-1\.5{padding-left:.375rem}.tw-pl-2{padding-left:var(--size-4-2)}.tw-pl-3{padding-left:var(--size-4-3)}.tw-pl-4{padding-left:var(--size-4-4)}.tw-pl-8{padding-left:2rem}.tw-pr-0\.5{padding-right:.125rem}.tw-pr-1{padding-right:var(--size-4-1)}.tw-pr-1\.5{padding-right:.375rem}.tw-pr-10{padding-right:2.5rem}.tw-pr-12{padding-right:3rem}.tw-pr-2{padding-right:var(--size-4-2)}.tw-pr-6{padding-right:var(--size-4-6)}.tw-pr-8{padding-right:2rem}.tw-pt-0{padding-top:0}.tw-pt-1{padding-top:var(--size-4-1)}.tw-pt-2{padding-top:var(--size-4-2)}.tw-pt-3{padding-top:var(--size-4-3)}.tw-pt-4{padding-top:var(--size-4-4)}.tw-text-left{text-align:left}.tw-text-center{text-align:center}.tw-text-right{text-align:right}.tw-align-middle{vertical-align:middle}.tw-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.\!tw-text-sm{font-size:.875rem!important;line-height:1.25rem!important}.tw-text-\[10px\]{font-size:10px}.tw-text-\[12px\]{font-size:12px}.tw-text-\[13px\]{font-size:13px}.tw-text-\[calc\(var\(--font-text-size\)_-_2px\)\]{font-size:calc(var(--font-text-size) - 2px)}.tw-text-base{font-size:1rem;line-height:1.5rem}.tw-text-lg{font-size:1.125rem;line-height:1.75rem}.tw-text-sm{font-size:.875rem;line-height:1.25rem}.tw-text-smallest{font-size:var(--font-smallest)}.tw-text-ui-smaller{font-size:var(--font-ui-smaller)}.tw-text-xl{font-size:1.25rem;line-height:1.75rem}.tw-text-xs{font-size:.75rem;line-height:1rem}.tw-font-bold{font-weight:var(--font-bold)}.tw-font-medium{font-weight:var(--font-medium)}.tw-font-normal{font-weight:var(--font-normal)}.tw-font-semibold{font-weight:var(--font-semibold)}.tw-italic{font-style:italic}.tw-tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.tw-leading-4{line-height:1rem}.tw-leading-none{line-height:1}.tw-leading-relaxed{line-height:1.625}.tw-tracking-tight{letter-spacing:-.025em}.tw-tracking-wider{letter-spacing:.05em}.tw-tracking-widest{letter-spacing:.1em}.tw-text-accent{color:var(--text-accent)}.tw-text-callout-warning{--tw-text-opacity:1;color:rgba(var(--callout-warning),var(--tw-text-opacity,1))}.tw-text-context-manager-blue{color:var(--color-blue)}.tw-text-context-manager-green{color:var(--color-green)}.tw-text-context-manager-orange{color:var(--color-orange)}.tw-text-context-manager-purple{color:var(--color-purple)}.tw-text-context-manager-red{color:var(--color-red)}.tw-text-context-manager-yellow{color:var(--color-yellow)}.tw-text-current{color:currentColor}.tw-text-error{color:var(--text-error)}.tw-text-faint{color:var(--text-faint)}.tw-text-loading,.tw-text-model-capabilities-blue{color:var(--color-blue)}.tw-text-model-capabilities-green{color:var(--color-green)}.tw-text-muted{color:var(--text-muted)}.tw-text-normal{color:var(--text-normal)}.tw-text-on-accent{color:var(--text-on-accent)}.tw-text-success{color:var(--text-success)}.tw-text-warning{color:var(--text-warning)}.tw-underline{text-decoration-line:underline}.tw-underline-offset-4{text-underline-offset:4px}.tw-opacity-0{opacity:0}.tw-opacity-100{opacity:1}.tw-opacity-40{opacity:.4}.tw-opacity-50{opacity:.5}.tw-opacity-60{opacity:.6}.tw-opacity-70{opacity:.7}.tw-opacity-75{opacity:.75}.tw-opacity-80{opacity:.8}.tw-opacity-90{opacity:.9}.\!tw-shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1)!important;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)!important}.\!tw-shadow,.\!tw-shadow-none{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.\!tw-shadow-none{--tw-shadow:0 0 #0000!important;--tw-shadow-colored:0 0 #0000!important}.\!tw-shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05)!important;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.tw-shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.tw-shadow,.tw-shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.tw-shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.tw-shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.tw-shadow-lg,.tw-shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.tw-shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.tw-shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.tw-shadow-none,.tw-shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.tw-shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.tw-shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.tw-outline-none{outline:2px solid transparent;outline-offset:2px}.tw-ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.tw-ring-offset-ring{--tw-ring-offset-color:var(--interactive-accent)}.tw-backdrop-blur-sm{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.\!tw-transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important;transition-duration:.15s!important}.tw-transition-\[max-height\]{transition-property:max-height;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.tw-transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.tw-transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.tw-transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.tw-transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.tw-transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.tw-delay-100{transition-delay:.1s}.tw-duration-200{transition-duration:.2s}.tw-duration-300{transition-duration:.3s}.tw-ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.tw-animate-in{animation-name:enter;animation-duration:.15s;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.tw-animate-out{animation-name:exit;animation-duration:.15s;--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial}.tw-fade-in-0{--tw-enter-opacity:0}.tw-zoom-in-95{--tw-enter-scale:.95}.tw-slide-in-from-top{--tw-enter-translate-y:-100%}.tw-slide-out-to-top{--tw-exit-translate-y:-100%}.tw-duration-200{animation-duration:.2s}.tw-duration-300{animation-duration:.3s}.tw-delay-100{animation-delay:.1s}.tw-ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.tw-bg-muted\/10{background-color:color-mix(in srgb,var(--text-muted) 10%,transparent)}.tw-text-muted\/50{color:color-mix(in srgb,var(--text-muted) 50%,transparent)}.tw-text-muted\/60{color:color-mix(in srgb,var(--text-muted) 60%,transparent)}.tw-text-muted\/80{color:color-mix(in srgb,var(--text-muted) 80%,transparent)}.tw-bg-faint\/10{background-color:color-mix(in srgb,var(--text-faint) 10%,transparent)}.tw-bg-error\/10{background-color:color-mix(in srgb,var(--text-error) 10%,transparent)}.tw-border-error\/50{border-color:color-mix(in srgb,var(--text-error) 50%,transparent)}.tw-bg-error\/80{background-color:color-mix(in srgb,var(--text-error) 80%,transparent)}.tw-text-error\/80{color:color-mix(in srgb,var(--text-error) 80%,transparent)}.tw-bg-accent\/10{background-color:color-mix(in srgb,var(--text-accent) 10%,transparent)}.tw-border-accent\/30{border-color:color-mix(in srgb,var(--text-accent) 30%,transparent)}.tw-border-accent\/50{border-color:color-mix(in srgb,var(--text-accent) 50%,transparent)}.tw-text-accent\/70{color:color-mix(in srgb,var(--text-accent) 70%,transparent)}.tw-text-accent\/80{color:color-mix(in srgb,var(--text-accent) 80%,transparent)}.tw-bg-primary\/90{background-color:color-mix(in srgb,var(--background-primary) 90%,transparent)}.tw-bg-primary-alt\/50{background-color:color-mix(in srgb,var(--background-primary-alt) 50%,transparent)}.tw-bg-secondary\/30{background-color:color-mix(in srgb,var(--background-secondary) 30%,transparent)}.tw-bg-secondary\/40{background-color:color-mix(in srgb,var(--background-secondary) 40%,transparent)}.tw-bg-secondary\/50{background-color:color-mix(in srgb,var(--background-secondary) 50%,transparent)}.tw-bg-modifier-error\/10{background-color:color-mix(in srgb,var(--background-modifier-error) 10%,transparent)}.tw-bg-interactive-accent\/20{background-color:color-mix(in srgb,var(--interactive-accent) 20%,transparent)}.tw-border-interactive-accent\/30{border-color:color-mix(in srgb,var(--interactive-accent) 30%,transparent)}.tw-border-border\/50{border-color:color-mix(in srgb,var(--background-modifier-border) 50%,transparent)}.tw-border-border\/60{border-color:color-mix(in srgb,var(--background-modifier-border) 60%,transparent)}.tw-\@container\/chat-input{container-type:inline-size;container-name:chat-input}[data-radix-popper-content-wrapper]{z-index:9999!important}.button-container{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:0 25px}.button-container .mod-cta{flex:1;margin:25px 0}@media screen and (max-width:768px){.button-container{gap:.5rem;padding:0 12px}.button-container .mod-cta{margin:12px 0;font-size:.9rem;padding:6px 12px}}.warning-message{background-color:#000;color:orange;padding:10px;margin:10px 0;border-radius:5px;border:1px solid orange;font-weight:bolder;text-align:center}.copilot-setting-item-name{font-weight:700;display:block;color:var(--inline-title-color);margin-top:20px;margin-bottom:10px}.copilot-setting-item-description{display:block;margin-top:10px;margin-bottom:10px}.copilot-setting-item-control{width:50%;max-width:100%}.copilot-setting-item-control::-moz-placeholder{color:gray;opacity:.5}.copilot-setting-item-control::placeholder{color:gray;opacity:.5}.copilot-setting-item-control[type=range]{width:70%}.chat-context-menu{display:flex;align-items:center;gap:8px;padding:0;border-bottom:none;flex:1}.note-badge{font-size:10px;padding:0 4px;background:rgba(0,0,0,.2);border-radius:3px}.remove-note{padding:0 4px;cursor:pointer;opacity:.5;background:none!important;border:none!important;box-shadow:none!important}.remove-note:hover{opacity:1}.context-note .note-name{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block}.context-note.url .note-badge{background-color:var(--interactive-accent)}.context-note.url .note-name{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.context-note .note-badge.pdf{background-color:var(--background-modifier-error)}.chat-icons-right{display:flex;align-items:center;gap:4px;justify-content:flex-end;margin-left:auto}.icon-scaler{transform:scale(.7)}.tooltip-text{max-width:400px;background-color:var(--background-secondary);color:var(--text-normal);text-align:center;border-radius:5px;padding:5px;font-size:var(--font-ui-smaller);white-space:nowrap}.select-wrapper{position:relative;display:inline-block}.chain-select-button,.chat-icon-button.clickable-icon,.chat-icon-selection,.model-select-button,.submit-button{display:flex;align-items:center;gap:2px;padding:0;background:none!important;border:none!important;box-shadow:none!important;color:var(--text-muted);font-size:10px;cursor:pointer;opacity:.5;transition:opacity .2s ease}.chain-select-button:hover,.chat-icon-button.clickable-icon:hover,.chat-icon-selection:hover,.model-select-button:hover,.submit-button:hover{background:none!important;color:var(--text-normal);opacity:1}@keyframes flash{0%,to{opacity:.5}50%{opacity:1}}.submit-button.cancel{opacity:.5;padding:4px;border-radius:4px;animation:flash 2s infinite}.submit-button.cancel:hover{opacity:1}.selected-images{display:flex;flex-wrap:wrap;gap:8px;padding:8px;background:var(--background-secondary);border-radius:4px;margin-bottom:8px}.image-preview-container{position:relative;width:80px;height:80px}.selected-image-preview{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;border-radius:4px;border:1px solid var(--background-modifier-border)}.remove-image-button{position:absolute;top:-8px;right:-8px;width:20px;height:20px;border-radius:50%;background:var(--background-modifier-error);color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;padding:0;line-height:1}.remove-image-button:hover{background:var(--background-modifier-error-hover)}.button-content{display:flex;align-items:center}.button-content span{font-size:10px}.button-content .icon-scaler{width:18px;height:18px}.model-select-content{min-width:120px;background:var(--background-secondary);border:1px solid var(--background-modifier-border);border-radius:4px;padding:4px;font-size:10px;z-index:1000}.model-select-content [role=menuitem]{padding:6px 12px;cursor:pointer;border-radius:2px;font-size:10px;color:var(--text-normal);margin:2px 0}.model-select-content [role=menuitem]:hover{background:var(--background-modifier-hover)}.chain-select-button svg,.model-select-button svg,.submit-button svg{width:10px;height:10px}.chain-select-button:hover{opacity:1;background:var(--background-modifier-hover)}.chain-select-content{min-width:120px;background:var(--background-secondary);border:1px solid var(--background-modifier-border);border-radius:4px;padding:4px;font-size:10px;z-index:1000}.chain-select-content [role=menuitem]{padding:6px 12px;cursor:pointer;border-radius:2px;font-size:10px;color:var(--text-normal);margin:2px 0}.chain-select-content [role=menuitem]:hover{background:var(--background-modifier-hover)}.chain-select-button svg{width:12px;height:12px}.chain-select-button span{opacity:1}.chat-icon-button{position:relative}.chain-select-button svg,.model-select-button svg,.submit-button svg{width:12px;height:12px}.message{display:flex;padding:0;border-radius:4px;position:relative;margin-bottom:0}.message-content{word-wrap:break-word;overflow-wrap:break-word;word-break:break-word;line-height:1.6!important}.message-content p{margin-top:0;margin-bottom:0}.message-content table{border-collapse:collapse;margin-top:15px;margin-bottom:15px}.message-content td,.message-content th{padding:var(--size-2-2) var(--size-4-2);border:var(--table-border-width) solid var(--table-border-color)}.message-content th{font-weight:var(--table-header-weight);background-color:var(--table-header-background)}.message-content code{background-color:var(--code-background);padding:2px 4px;border-radius:3px;color:var(--code-normal)}.message-content pre{background-color:var(--background-primary-alt);border-radius:4px;padding:10px;border:1px solid var(--background-modifier-border)}.message-content pre code{background-color:transparent;padding:0;color:var(--code-normal);line-height:1.5!important;display:block;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word}.message-content pre{position:relative}.message-content pre .copy-code-button{position:absolute;top:0;right:0;padding:4px 8px;color:var(--text-muted);background-color:var(--background-primary);border:1px solid var(--background-modifier-border);border-radius:0 4px 0 4px;font-size:.8em;transition:all .1s ease;opacity:0}.message-content pre:hover .copy-code-button{opacity:1}.message-content pre .copy-code-button:hover{background-color:var(--background-modifier-hover);color:var(--text-normal)}.message-content ol,.message-content ul{padding-left:20px;margin:10px}.tool-call-container{margin:.75rem 0}.message-image-content{width:100%;max-width:400px;padding:8px 0}.chat-message-image{width:100%;height:auto;-o-object-fit:contain;object-fit:contain;border-radius:8px;border:1px solid var(--background-modifier-border)}.copilot-command-modal{display:flex;flex-direction:column;align-items:center;gap:10px}@keyframes shimmer{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}.copilot-command-input-container{width:90%;margin:auto}.copilot-command-input-container input,.copilot-command-input-container textarea{display:block;width:100%;margin-top:10px}.copilot-command-input-container textarea{height:150px;resize:vertical}.copilot-command-save-btn-container{display:flex;justify-content:center;align-items:center;text-align:center}.copilot-command-save-btn{margin-top:15px}.model-settings-table{border-collapse:collapse;width:100%}.model-settings-table td,.model-settings-table th{text-align:center;vertical-align:middle;padding:.5em;border:none!important;height:2.5em}.model-settings-table th{font-weight:700}.model-settings-table th:first-child{width:10%}.model-settings-table th:nth-child(2){width:50%}.model-settings-table th:nth-child(3){width:16%}.model-settings-table th:nth-child(4),.model-settings-table th:nth-child(5),.model-settings-table th:nth-child(6){width:8%}.model-settings-table .switch,.model-settings-table td .copilot-setting-item{display:flex;justify-content:center;align-items:center;height:100%;margin:0}.add-custom-model{margin-top:20px}.switch.disabled{opacity:.5;cursor:not-allowed}.switch.disabled input:checked+.slider{background-color:#ccc}.switch.disabled input:focus+.slider{box-shadow:0 0 1px #ccc}.switch.disabled input:checked+.slider:before{transform:translateX(26px)}.model-select{max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.select-wrapper:after{content:"\25BC";position:absolute;top:50%;right:10px;transform:translateY(-50%);pointer-events:none}.add-model-button{margin-top:15px}.edit-textarea{width:100%;min-height:40px;padding:8px;font-size:14px;line-height:1.5;border:1px solid #ccc;border-radius:4px;resize:vertical;overflow-y:hidden}.edit-textarea:focus{outline:none;box-shadow:0 0 0 2px rgba(0,123,255,.25)}.copilot-notice-container{display:flex;flex-direction:column;align-items:stretch;width:100%;padding:10px;box-sizing:border-box}.copilot-notice-message{margin-bottom:16px}.copilot-notice-container button{align-self:flex-end;margin-top:16px;margin-left:auto}.similar-notes-modal-container{width:80vw;height:80vh}.similar-notes-modal{max-width:100%;max-height:100%}.similar-notes-container{max-height:calc(80vh - 100px);overflow-y:auto;padding:10px}.similar-note-item{margin-bottom:10px}.similar-note-title{cursor:pointer;color:var(--text-accent)}.similar-note-item details>summary{list-style:none}.similar-note-item details>summary:before{content:"▶";display:inline-block;width:20px;transition:transform .3s}.similar-note-item details[open]>summary:before{transform:rotate(90deg)}.similar-note-item details>p{margin-left:20px;margin-top:5px}.desktop-only{display:table}.mobile-only{display:none}@media screen and (max-width:768px){.desktop-only{display:none}.mobile-only{display:block}.model-cards-container{display:flex;flex-direction:column;gap:16px;padding:8px}.model-card{background:var(--background-primary-alt);border-radius:8px;padding:0 16px;box-shadow:0 2px 4px rgba(0,0,0,.1)}.model-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--background-modifier-border)}.model-card-header h3{margin:0;font-size:1.1em;color:var(--text-normal)}.model-provider{font-size:.9em;color:var(--text-muted);padding:2px 0;background:var(--background-secondary);border-radius:4px;width:-moz-fit-content;width:fit-content;align-self:flex-start}.model-card-content{display:flex;flex-direction:column;gap:12px}.model-card-controls{justify-content:space-around;padding:8px 0}.model-card-controls,.model-card-item{display:flex;align-items:center;gap:8px}.model-card-item{flex-direction:row}.model-card-item span{color:var(--text-muted);font-size:.9em;white-space:nowrap}.model-card-item .switch{margin:0}.chain-select-content,.model-select-content{background:var(--background-primary);box-shadow:0 2px 8px rgba(0,0,0,.2)}.chain-select-content [role=menuitem],.model-select-content [role=menuitem]{background:var(--background-primary);color:var(--text-normal);padding:8px 12px;font-size:14px}.chain-select-content [role=menuitem]:hover,.model-select-content [role=menuitem]:hover{background:var(--background-modifier-hover)}.tool-call-container{margin:.5rem 0}.agent-reasoning-block{margin:2px 0 6px}.agent-reasoning-steps{margin:6px 0 0 16px;gap:4px}}.model-card{background:var(--background-primary-alt);border-radius:8px;padding:0 16px;box-shadow:0 2px 4px rgba(0,0,0,.1);transition:all .3s ease;position:relative;border-left:4px solid transparent}.model-card.selected{border-left-color:var(--interactive-accent)}.model-card-header{display:flex;justify-content:space-between;align-items:flex-start;padding-bottom:8px;cursor:pointer}.model-card-header-content{display:flex;align-items:baseline;flex:1;margin-right:12px}.model-provider-wrapper{display:flex;flex-direction:column;gap:3px;padding-left:10px;width:100%}.model-provider{font-size:.85em;color:var(--text-muted);padding:2px 0;background:var(--background-secondary);border-radius:4px;width:-moz-fit-content;width:fit-content;align-self:flex-start}.model-delete-icon{position:absolute;top:8px;right:8px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-muted);opacity:.6;transition:all .2s ease;background:transparent;border:none;padding:0}.model-delete-icon:hover{color:var(--text-error);opacity:1}.is-phone .modal .modal-close-button{z-index:var(--layer-modal)}.workspace-leaf-content[data-type=copilot-chat-view] .view-content{padding-bottom:calc(var(--safe-area-inset-bottom, 0px) + var(--copilot-status-bar-clearance, 0px) + var(--size-4-1))!important}body.is-mobile .workspace-tab-container .workspace-leaf-content[data-type=copilot-chat-view] .view-content{padding-bottom:var(--size-4-1)!important}@supports selector(body:has(*)){body.is-mobile:has(.mobile-navbar):not(.is-hidden-nav) .workspace-tab-container .workspace-leaf-content[data-type=copilot-chat-view] .view-content{padding-bottom:calc(var(--navbar-height, 50px) + max(var(--safe-area-inset-bottom, 0px), var(--size-4-3)) + var(--size-4-1))!important}}@supports selector(body:has(*)){body.is-mobile:has(.mobile-navbar):not(.is-hidden-nav) .workspace-tab-container .workspace-leaf-content[data-type=obsidian-copilot-apply-view] .view-content{padding-bottom:calc(var(--navbar-height, 50px) + max(var(--safe-area-inset-bottom, 0px), var(--size-4-3)) + var(--size-4-1) + var(--size-4-4))!important}body.is-mobile:has(.mobile-navbar):not(.is-hidden-nav) .workspace-tab-container .workspace-leaf-content[data-type=obsidian-copilot-apply-view] .tw-fixed.tw-bottom-4{bottom:calc(var(--navbar-height, 50px) + max(var(--safe-area-inset-bottom, 0px), var(--size-4-3)) + var(--size-4-1))!important}}body.is-mobile .workspace-drawer.copilot-keyboard-open .workspace-drawer-header,body.is-mobile .workspace-drawer.copilot-keyboard-open .workspace-drawer-tab-options{display:none!important}.copilot-sources{margin-top:var(--size-4-1);padding:calc(var(--size-4-2)/2) var(--size-4-2);border-radius:var(--radius-s);border:1px solid color-mix(in srgb,var(--background-modifier-border) 70%,transparent);background-color:color-mix(in srgb,var(--background-primary) 94%,var(--background-modifier-border) 6%);width:min(100%,32rem)}.copilot-sources__summary{font-size:var(--font-ui-smaller);color:color-mix(in srgb,var(--text-muted) 90%,transparent);cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:var(--size-4-2);padding:calc(var(--size-4-2)/4) 0;padding-left:var(--size-4-2);padding-right:var(--size-4-2);margin:0}.copilot-sources__summary::-webkit-details-marker{color:color-mix(in srgb,var(--text-muted) 80%,transparent)}.copilot-sources__summary:after{content:">";font-size:var(--font-ui-smaller);color:color-mix(in srgb,var(--text-muted) 70%,transparent);transition:transform .15s ease}.copilot-sources[open] .copilot-sources__summary{margin-bottom:calc(var(--size-4-2)/2)}.copilot-sources[open] .copilot-sources__summary:after{transform:rotate(90deg)}.copilot-sources__list{list-style:none;margin:0;padding:0;padding-left:var(--size-4-2);padding-right:var(--size-4-2);display:flex;flex-direction:column;gap:calc(var(--size-4-2)/2);font-size:var(--font-ui-smaller);color:color-mix(in srgb,var(--text-muted) 85%,transparent)}.copilot-sources__item{display:flex;gap:var(--size-4-2);align-items:baseline}.copilot-sources__index{color:color-mix(in srgb,var(--text-muted) 65%,transparent);font-weight:var(--font-medium);min-width:var(--size-4-3);text-align:right;white-space:nowrap}.copilot-sources__text{color:color-mix(in srgb,var(--text-muted) 90%,transparent);line-height:1.4}.copilot-sources__text a{color:var(--text-accent)}.copilot-citation-ref{color:var(--text-muted);cursor:default}.copilot-citation-group,.copilot-citation-ref{display:inline-block;font-size:.7em;vertical-align:super;background:var(--background-modifier-hover);border-radius:var(--radius-s);padding:0 4px;line-height:1.4}.copilot-citation-link{color:var(--text-accent);cursor:pointer;text-decoration:none}.copilot-citation-link:hover{text-decoration:underline}body.is-mobile div[data-radix-popper-content-wrapper]{min-width:-moz-fit-content!important;min-width:fit-content!important}.agent-reasoning-block{margin:4px 0 8px;padding:0;font-size:var(--font-ui-small);width:100%}.agent-reasoning-header{display:inline-flex;align-items:center;gap:6px;color:var(--text-faint);background:none;border:none;padding:0;text-align:left;font-size:var(--font-ui-smaller)}.agent-reasoning-header:hover:not(:disabled){color:var(--text-muted)}.agent-reasoning-icon{display:flex;align-items:center;justify-content:center;width:14px;height:14px;flex-shrink:0}.agent-reasoning-title{font-weight:var(--font-medium)}.agent-reasoning-timer{color:var(--text-faint)}.agent-reasoning-steps{margin:8px 0 0 20px;padding:0;list-style:disc;display:flex;flex-direction:column;gap:6px}.agent-reasoning-step{margin:0;color:var(--text-muted);line-height:1.4;font-size:var(--font-ui-smaller)}.copilot-spinner{display:block}.copilot-spinner-dot{fill:var(--text-faint)}.copilot-spinner-dot-0{animation:copilot-dot-chase 1.4s ease-in-out infinite;animation-delay:0ms}.copilot-spinner-dot-1{animation:copilot-dot-chase 1.4s ease-in-out infinite;animation-delay:155ms}.copilot-spinner-dot-2{animation:copilot-dot-chase 1.4s ease-in-out infinite;animation-delay:.31s}.copilot-spinner-dot-3{animation:copilot-dot-chase 1.4s ease-in-out infinite;animation-delay:465ms}.copilot-spinner-dot-4{animation:copilot-dot-chase 1.4s ease-in-out infinite;animation-delay:.62s}.copilot-spinner-dot-5{animation:copilot-dot-chase 1.4s ease-in-out infinite;animation-delay:775ms}.copilot-spinner-dot-6{animation:copilot-dot-chase 1.4s ease-in-out infinite;animation-delay:.93s}@keyframes copilot-dot-chase{0%{fill:var(--text-normal);opacity:1}11%{fill:var(--text-normal);opacity:1}22%{fill:var(--text-normal);opacity:.85}33%{fill:var(--text-muted);opacity:.6}44%{fill:var(--text-faint);opacity:.35}55%,to{fill:var(--text-faint);opacity:.2}}.agent-reasoning-spinner .spinner-dots{display:inline-block;animation:reasoning-pulse 1s ease-in-out infinite}@keyframes reasoning-pulse{0%,to{opacity:.4}50%{opacity:1}}.copilot-quick-ask-overlay-host{position:relative}.copilot-quick-ask-overlay [contenteditable]{border:none!important;box-shadow:none!important;outline:none!important}.copilot-quick-ask-overlay [data-quick-ask-selectable],.copilot-quick-ask-overlay [data-quick-ask-selectable] *{-moz-user-select:text!important;user-select:text!important;-webkit-user-select:text!important}.copilot-quick-ask-overlay-root{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:var(--layer-popover)}.copilot-quick-ask-overlay{position:absolute;pointer-events:auto;z-index:var(--layer-popover);animation:copilot-quick-ask-fade-in .2s ease-out}.copilot-quick-ask-overlay.closing{animation:copilot-quick-ask-fade-out .2s ease-in forwards}@keyframes copilot-quick-ask-fade-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes copilot-quick-ask-fade-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-8px)}}.quick-ask-resize-indicator-right:after{right:-1px;border-right:2px solid color-mix(in srgb,var(--text-muted) 35%,transparent)}.quick-ask-resize-indicator-left:after,.quick-ask-resize-indicator-right:after{content:"";position:absolute;bottom:-1px;width:8px;height:8px;border-bottom:2px solid color-mix(in srgb,var(--text-muted) 35%,transparent);opacity:0;transition:opacity .15s ease;pointer-events:none}.quick-ask-resize-indicator-left:after{left:-1px;border-left:2px solid color-mix(in srgb,var(--text-muted) 35%,transparent)}.tw-group:hover .quick-ask-resize-indicator-left:after,.tw-group:hover .quick-ask-resize-indicator-right:after{opacity:1}@media (hover:none){.tw-group\/badge .context-badge-close{visibility:visible}.tw-group\/badge .context-badge-icon-removable{visibility:hidden}}.copilot-fade-mask-bottom{background:linear-gradient(to top,var(--background-primary),transparent)}.placeholder\:tw-text-sm::-moz-placeholder{font-size:.875rem;line-height:1.25rem}.placeholder\:tw-text-sm::placeholder{font-size:.875rem;line-height:1.25rem}.placeholder\:tw-text-muted::-moz-placeholder{color:var(--text-muted)}.placeholder\:tw-text-muted::placeholder{color:var(--text-muted)}.after\:tw-absolute:after{content:var(--tw-content);position:absolute}.after\:tw-inset-y-0:after{content:var(--tw-content);top:0;bottom:0}.after\:tw-left-1\/2:after{content:var(--tw-content);left:50%}.after\:tw-w-1:after{content:var(--tw-content);width:var(--size-4-1)}.after\:tw--translate-x-1\/2:after{content:var(--tw-content);--tw-translate-x:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:tw-cursor-grab:hover{cursor:grab}.hover\:tw-cursor-pointer:hover{cursor:var(--cursor-link)}.hover\:tw-border-interactive-accent:hover{border-color:var(--interactive-accent)}.hover\:\!tw-bg-interactive-accent:hover{background-color:var(--interactive-accent)!important}.hover\:\!tw-bg-interactive-hover:hover{background-color:var(--interactive-hover)!important}.hover\:tw-bg-\[color-mix\(in_srgb\2c var\(--background-modifier-hover\)_20\%\2c transparent\)\]:hover{background-color:color-mix(in srgb,var(--background-modifier-hover) 20%,transparent)}.hover\:tw-bg-\[color-mix\(in_srgb\2c var\(--text-muted\)_65\%\2c transparent\)\]:hover{background-color:color-mix(in srgb,var(--text-muted) 65%,transparent)}.hover\:tw-bg-callout-warning\/10:hover{background-color:rgba(var(--callout-warning),.1)}.hover\:tw-bg-interactive-accent:hover{background-color:var(--interactive-accent)}.hover\:tw-bg-interactive-accent-hover:hover{background-color:var(--interactive-accent-hover)}.hover\:tw-bg-interactive-hover:hover{background-color:var(--interactive-hover)}.hover\:tw-bg-modifier-error:hover{background-color:var(--background-modifier-error)}.hover\:tw-bg-modifier-hover:hover{background-color:var(--background-modifier-hover)}.hover\:tw-bg-modifier-success:hover{background-color:var(--background-modifier-success)}.hover\:tw-bg-secondary:hover{background-color:var(--background-secondary)}.hover\:tw-bg-transparent:hover{background-color:transparent}.hover\:tw-bg-opacity-100:hover{--tw-bg-opacity:1}.hover\:\!tw-text-on-accent:hover{color:var(--text-on-accent)!important}.hover\:tw-text-accent:hover{color:var(--text-accent)}.hover\:tw-text-accent-hover:hover{color:var(--text-accent-hover)}.hover\:tw-text-error:hover{color:var(--text-error)}.hover\:tw-text-normal:hover{color:var(--text-normal)}.hover\:tw-text-on-accent:hover{color:var(--text-on-accent)}.hover\:tw-text-warning:hover{color:var(--text-warning)}.hover\:tw-underline:hover{text-decoration-line:underline}.hover\:tw-opacity-100:hover{opacity:1}.hover\:tw-shadow-\[0_2px_12px_rgba\(0\2c 0\2c 0\2c 0\.1\)\]:hover{--tw-shadow:0 2px 12px rgba(0,0,0,.1);--tw-shadow-colored:0 2px 12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:tw-shadow-md:hover{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:tw-bg-muted\/10:hover{background-color:color-mix(in srgb,var(--text-muted) 10%,transparent)}.hover\:tw-bg-accent\/50:hover{background-color:color-mix(in srgb,var(--text-accent) 50%,transparent)}.hover\:tw-bg-primary-alt\/50:hover{background-color:color-mix(in srgb,var(--background-primary-alt) 50%,transparent)}.hover\:tw-bg-secondary\/50:hover{background-color:color-mix(in srgb,var(--background-secondary) 50%,transparent)}.hover\:tw-bg-secondary\/70:hover{background-color:color-mix(in srgb,var(--background-secondary) 70%,transparent)}.hover\:tw-bg-interactive-accent\/10:hover{background-color:color-mix(in srgb,var(--interactive-accent) 10%,transparent)}.focus\:tw-bg-interactive-accent:focus{background-color:var(--interactive-accent)}.focus\:tw-bg-modifier-hover:focus{background-color:var(--background-modifier-hover)}.focus\:tw-text-normal:focus{color:var(--text-normal)}.focus\:tw-text-on-accent:focus{color:var(--text-on-accent)}.focus\:\!tw-shadow-none:focus{--tw-shadow:0 0 #0000!important;--tw-shadow-colored:0 0 #0000!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.focus\:tw-outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:tw-ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:tw-ring-ring:focus{--tw-ring-color:var(--interactive-accent)}.focus-visible\:tw-text-normal:focus-visible{color:var(--text-normal)}.focus-visible\:\!tw-shadow-sm:focus-visible{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05)!important;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.focus-visible\:tw-shadow-sm:focus-visible{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus-visible\:\!tw-outline-none:focus-visible{outline:2px solid transparent!important;outline-offset:2px!important}.focus-visible\:tw-outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:\!tw-ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important}.focus-visible\:tw-ring-0:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:tw-ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:tw-ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:\!tw-ring-ring:focus-visible{--tw-ring-color:var(--interactive-accent)!important}.focus-visible\:tw-ring-ring:focus-visible{--tw-ring-color:var(--interactive-accent)}.focus-visible\:tw-ring-offset-1:focus-visible{--tw-ring-offset-width:1px}.focus-visible\:tw-ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.active\:tw-scale-\[0\.98\]:active{--tw-scale-x:0.98;--tw-scale-y:0.98;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:tw-cursor-grabbing:active{cursor:grabbing}.disabled\:tw-pointer-events-none:disabled{pointer-events:none}.disabled\:tw-cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:tw-opacity-50:disabled{opacity:.5}.tw-group\/badge:focus-within .group-focus-within\/badge\:tw-visible{visibility:visible}.tw-group\/badge:focus-within .group-focus-within\/badge\:tw-invisible{visibility:hidden}.tw-group\/badge:hover .group-hover\/badge\:tw-visible{visibility:visible}.tw-group\/badge:hover .group-hover\/badge\:tw-invisible{visibility:hidden}.tw-group:hover .group-hover\:tw-block{display:block}.tw-group:hover .group-hover\:tw-flex{display:flex}.tw-group:hover .group-hover\:tw-hidden{display:none}.tw-group:hover .group-hover\:tw-flex-none{flex:none}.tw-group:hover .group-hover\:tw-translate-x-0\.5{--tw-translate-x:0.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.tw-group:hover .group-hover\:tw-opacity-100,.tw-group\/message:hover .group-hover\/message\:tw-opacity-100{opacity:1}.tw-peer:disabled~.peer-disabled\:tw-cursor-not-allowed{cursor:not-allowed}.tw-peer:disabled~.peer-disabled\:tw-opacity-70{opacity:.7}.data-\[disabled\]\:tw-pointer-events-none[data-disabled]{pointer-events:none}.data-\[panel-group-direction\=vertical\]\:tw-h-px[data-panel-group-direction=vertical]{height:1px}.data-\[panel-group-direction\=vertical\]\:tw-w-full[data-panel-group-direction=vertical]{width:100%}.data-\[side\=bottom\]\:tw-translate-y-1[data-side=bottom]{--tw-translate-y:var(--size-4-1)}.data-\[side\=bottom\]\:tw-translate-y-1[data-side=bottom],.data-\[side\=left\]\:-tw-translate-x-1[data-side=left]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-tw-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--size-4-1)*-1)}.data-\[side\=right\]\:tw-translate-x-1[data-side=right]{--tw-translate-x:var(--size-4-1)}.data-\[side\=right\]\:tw-translate-x-1[data-side=right],.data-\[side\=top\]\:-tw-translate-y-1[data-side=top]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-tw-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--size-4-1)*-1)}.data-\[panel-group-direction\=vertical\]\:tw-flex-col[data-panel-group-direction=vertical]{flex-direction:column}.data-\[state\=active\]\:\!tw-bg-interactive-accent[data-state=active],.data-\[state\=checked\]\:\!tw-bg-interactive-accent[data-state=checked]{background-color:var(--interactive-accent)!important}.data-\[state\=open\]\:tw-bg-modifier-hover[data-state=open]{background-color:var(--background-modifier-hover)}.data-\[state\=selected\]\:tw-bg-primary-alt[data-state=selected]{background-color:var(--background-primary-alt)}.data-\[state\=active\]\:\!tw-text-on-accent[data-state=active],.data-\[state\=checked\]\:\!tw-text-on-accent[data-state=checked]{color:var(--text-on-accent)!important}.data-\[disabled\]\:tw-opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:\!tw-shadow-md[data-state=active]{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1)!important;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.data-\[state\=open\]\:tw-animate-in[data-state=open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.data-\[state\=closed\]\:tw-animate-out[data-state=closed]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial}.data-\[state\=closed\]\:tw-fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=open\]\:tw-fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=closed\]\:tw-zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:tw-zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[side\=bottom\]\:tw-slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-var(--size-4-2)}.data-\[side\=left\]\:tw-slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:var(--size-4-2)}.data-\[side\=right\]\:tw-slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-var(--size-4-2)}.data-\[side\=top\]\:tw-slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:var(--size-4-2)}.data-\[state\=closed\]\:tw-slide-out-to-left-1\/2[data-state=closed]{--tw-exit-translate-x:-50%}.data-\[state\=closed\]\:tw-slide-out-to-top-\[48\%\][data-state=closed]{--tw-exit-translate-y:-48%}.data-\[state\=open\]\:tw-slide-in-from-left-1\/2[data-state=open]{--tw-enter-translate-x:-50%}.data-\[state\=open\]\:tw-slide-in-from-top-\[48\%\][data-state=open]{--tw-enter-translate-y:-48%}.data-\[panel-group-direction\=vertical\]\:after\:tw-left-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);left:0}.data-\[panel-group-direction\=vertical\]\:after\:tw-h-1[data-panel-group-direction=vertical]:after{content:var(--tw-content);height:var(--size-4-1)}.data-\[panel-group-direction\=vertical\]\:after\:tw-w-full[data-panel-group-direction=vertical]:after{content:var(--tw-content);width:100%}.data-\[panel-group-direction\=vertical\]\:after\:tw--translate-y-1\/2[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[panel-group-direction\=vertical\]\:after\:tw-translate-x-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:data-\[state\=closed\]\:\!tw-bg-interactive-accent[data-state=closed]:hover{background-color:var(--interactive-accent)!important}.hover\:data-\[state\=closed\]\:\!tw-text-on-accent[data-state=closed]:hover{color:var(--text-on-accent)!important}@container (min-width: 42rem){.\@2xl\:tw-grid{display:grid}.\@2xl\:tw-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@container (min-width: 56rem){.\@4xl\:tw-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@container chat-input (min-width: 420px){.\@\[420px\]\/chat-input\:tw-flex{display:flex}.\@\[420px\]\/chat-input\:tw-hidden{display:none}}@media (min-width:640px){.sm\:tw-flex{display:flex}.sm\:tw-size-3{width:var(--size-4-3);height:var(--size-4-3)}.sm\:tw-size-4{width:var(--size-4-4);height:var(--size-4-4)}.sm\:tw-h-6{height:var(--size-4-6)}.sm\:tw-h-auto{height:auto}.sm\:tw-w-\[200px\]{width:200px}.sm\:tw-w-\[300px\]{width:300px}.sm\:tw-w-auto{width:auto}.sm\:tw-min-w-fit{min-width:-moz-fit-content;min-width:fit-content}.sm\:tw-max-w-\[120px\]{max-width:120px}.sm\:tw-max-w-\[425px\]{max-width:425px}.sm\:tw-max-w-\[500px\]{max-width:500px}.sm\:tw-max-w-sm{max-width:24rem}.sm\:tw-flex-1{flex:1 1 0%}.sm\:tw-flex-none{flex:none}.sm\:tw-flex-row{flex-direction:row}.sm\:tw-items-center{align-items:center}.sm\:tw-justify-start{justify-content:flex-start}.sm\:tw-justify-end{justify-content:flex-end}.sm\:tw-justify-between{justify-content:space-between}.sm\:tw-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(var(--size-4-2)*var(--tw-space-x-reverse));margin-left:calc(var(--size-4-2)*(1 - var(--tw-space-x-reverse)))}.sm\:tw-self-auto{align-self:auto}.sm\:tw-rounded-lg{border-radius:var(--radius-l)}.sm\:tw-px-2{padding-left:var(--size-4-2);padding-right:var(--size-4-2)}.sm\:tw-px-4{padding-left:var(--size-4-4);padding-right:var(--size-4-4)}.sm\:tw-py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.sm\:tw-py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.sm\:tw-py-3{padding-top:var(--size-4-3);padding-bottom:var(--size-4-3)}.sm\:tw-pl-1\.5{padding-left:.375rem}.sm\:tw-text-left{text-align:left}.sm\:tw-text-xs{font-size:.75rem;line-height:1rem}}@media (min-width:768px){.md\:tw-block{display:block}.md\:tw-inline{display:inline}.md\:tw-hidden{display:none}.md\:tw-size-4{width:var(--size-4-4);height:var(--size-4-4)}.md\:tw-max-w-32{max-width:8rem}.md\:tw-flex-row{flex-direction:row}.md\:tw-items-center{align-items:center}.md\:tw-justify-end{justify-content:flex-end}.md\:tw-justify-between{justify-content:space-between}.md\:\!tw-text-base{font-size:1rem!important;line-height:1.5rem!important}.md\:tw-text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width:1024px){.lg\:tw-max-w-32{max-width:8rem}}.\[\&\.markdown-rendered\]\:tw-text-sm.markdown-rendered{font-size:.875rem;line-height:1.25rem}.\[\&\:has\(\[role\=checkbox\]\)\]\:tw-pr-0:has([role=checkbox]){padding-right:0}.\[\&\>\[role\=checkbox\]\]\:tw-translate-y-\[2px\]>[role=checkbox]{--tw-translate-y:2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>div\:first-child\]\:\!tw-block>div:first-child{display:block!important}.\[\&\>span\]\:tw-line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&\>svg\]\:tw-size-4>svg{width:var(--size-4-4);height:var(--size-4-4)}.\[\&\>svg\]\:tw-shrink-0>svg{flex-shrink:0}.tw-group:hover .group-hover\:\[\&\>svg\]\:tw-text-normal>svg{color:var(--text-normal)}.\[\&\[data-panel-group-direction\=vertical\]\>div\]\:tw-rotate-90[data-panel-group-direction=vertical]>div{--tw-rotate:90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&_code\]\:tw-text-xs code{font-size:.75rem;line-height:1rem}.\[\&_p\]\:tw-my-1 p{margin-top:var(--size-4-1);margin-bottom:var(--size-4-1)}.\[\&_pre\]\:tw-my-2 pre{margin-top:var(--size-4-2);margin-bottom:var(--size-4-2)}.\[\&_svg\]\:tw-pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:tw-size-4 svg{width:var(--size-4-4);height:var(--size-4-4)}.\[\&_svg\]\:tw-shrink-0 svg{flex-shrink:0}.\[\&_tr\]\:tw-border-b tr{border-bottom-width:var(--border-width)}
\ No newline at end of file
{
"items": [
{
"name": "Markdown"
},
{
"name": "Markdown (Hugo)"
},
{
"name": "Html"
},
{
"name": "TextBundle"
},
{
"name": "Typst"
},
{
"name": "PDF"
},
{
"name": "Word (.docx)"
},
{
"name": "OpenOffice"
},
{
"name": "RTF"
},
{
"name": "Epub"
},
{
"name": "Latex"
},
{
"name": "Media Wiki"
},
{
"name": "reStructuredText"
},
{
"name": "Textile"
},
{
"name": "OPML"
},
{
"name": "Bibliography"
},
{
"name": "PowerPoint (.pptx)"
}
],
"pandocPath": {
"win32": "C:\\Program Files\\Pandoc\\pandoc.exe"
},
"defaultExportDirectoryMode": "Same",
"openExportedFile": true,
"env": {},
"showExportProgressBar": true,
"lastEditName": "Word (.docx)",
"lastExportDirectory": {
"win32": "D:\\localProject\\obsidian\\kn/BionicRobots"
},
"lastExportType": "Word (.docx)"
}
\ No newline at end of file
-- credits to tarleb — StackExchange: https://tex.stackexchange.com/questions/392070/pandoc-markdown-create-self-contained-bib-file-from-cited-references
function Pandoc(d)
d.meta.references = pandoc.utils.references(d)
d.meta.bibliography = nil
return d
end
package.path=package.path..";" ..debug.getinfo(1).source:match("(.*[/\\])"):sub(2) .. "?.lua"
Mode='hugo'
require('markdown')
\ No newline at end of file
package.path=debug.getinfo(1).source:gsub('@',''):sub(0):match('(.*[/\\])'):sub(0) .. '?.lua' .. ';' .. package.path
require("polyfill")
local url = require('url')
local pandoc=pandoc
local PANDOC_STATE=PANDOC_STATE
PANDOC_VERSION:must_be_at_least '3.1.7'
os.text = pandoc.text
local PATH = pandoc.path
local doc_dir = nil
local media_dir = nil
if Mode == nil then
Mode = 'default'
end
-- print("Mode: "..Mode)
if PANDOC_STATE.output_file then
local output_file = PANDOC_STATE.output_file
doc_dir = PATH.directory(output_file)
if PANDOC_WRITER_OPTIONS.variables["media_dir"] then
media_dir = tostring(PANDOC_WRITER_OPTIONS.variables["media_dir"])
else
media_dir = PATH.split_extension(output_file)
if Mode ~= 'hugo' then
media_dir = media_dir .. '-media'
end
end
end
assert(doc_dir, "doc_dir is nil")
assert(media_dir, "media_dir is nil")
local function get_absolute_path(file_path)
if PATH.is_absolute(file_path) then
return file_path
end
for _, dir in pairs(PANDOC_STATE.resource_path) do
local full_path = PATH.join({dir, file_path})
if os.exists(full_path) then
return full_path
end
end
for _, file in pairs(PANDOC_STATE.input_files) do
if not PATH.is_absolute(file) then
file = PATH.join({pandoc.system.get_working_directory(), file_path})
end
local dir = PATH.directory(file)
local full_path = PATH.join({dir, file_path})
if os.exists(full_path) then
return full_path
end
end
return nil
end
local function get_output_file(file_path)
if media_dir then
local new_file_name = pandoc.utils.sha1(file_path)
local _, new_file_ext = PATH.split_extension(file_path)
file_path = new_file_name .. new_file_ext
local full_path = PATH.join({media_dir, file_path})
return full_path
else
return nil
end
end
local function extract_media(file_path)
os.mkdir(media_dir)
file_path = url.decode(file_path)
local abs_path = get_absolute_path(file_path)
local file = get_output_file(file_path)
if abs_path and file then
if not os.exists(file) then
os.copy(abs_path, file)
end
local rel_path = PATH.make_relative(file, doc_dir, false)
local parts = PATH.split(rel_path)
for i,v in ipairs(parts) do
parts[i] = url.encode(v)
end
local encoded_rel_path = table.concat(parts, "/")
if Mode == 'hugo' then
encoded_rel_path = '../' .. encoded_rel_path
end
return encoded_rel_path
end
end
local function raw(s)
return pandoc.RawInline('markdown', s)
end
function Image(el)
local src = extract_media(el.src)
if src then
el.src = src
end
return el
end
function Space()
return raw(' ')
end
function SoftBreak()
return raw('\n')
end
function RawInline(el)
if el.format == "html" then
el.format = 'markdown'
el.text = string.gsub(el.text, '<img[^>]+>', function(img)
return string.gsub(img, 'src="([^"]+)"', function(url)
if string.find(url, '^[Hh][Tt][Tt][Pp][Ss]?://') == nil then
local extract_media_url = extract_media(url)
if extract_media_url then
return 'src="' .. extract_media_url .. '"'
end
return '123'
end
return 'src="' .. url .. '"'
end)
end)
end
return el
end
function RawBlock(el)
if el.format == "html" then
el.format = 'markdown'
end
return el
end
function Math(el)
if Mode == 'hugo' then
if el.mathtype == 'DisplayMath' then
return raw('{{< mathjax >}}\n$$' .. el.text .. '$$\n{{</mathjax >}}')
else
el.text = string.gsub(el.text, '\\[\\{\\}]', function (v)
return '\\' .. v
end)
el.text = string.gsub(el.text, '_', function (v)
return '\\' .. v
end)
end
end
return el
end
local function headerLink(input)
-- github style section link
return "#"..input:gsub(' ', '-')
end
local function insertLink(content, linkDescription)
local descriptionText = table.concat(linkDescription, "")
if string.find(descriptionText, '|') then
local target, desc = descriptionText:match("(.*)|(.*)")
table.insert(content, pandoc.Link(desc, headerLink(target)))
else
table.insert(content, pandoc.Link(descriptionText, headerLink(descriptionText)))
end
end
function Para(el)
local content = el.content
content = ProcessMath(content)
content = ProcessInternalLinks(content)
el.content = content
return el
end
function ProcessMath(elements)
local content = {}
local in_display_math = false
for _, item in pairs(elements) do
if item.t == 'Str'and item.text == "$$" then
in_display_math = not in_display_math
else
if in_display_math then
if item.t == 'RawInline' and item.format == 'tex' then
local n = pandoc.Math('DisplayMath', '\n' .. item.text .. '\n')
table.insert(content, Math(n))
else
table.insert(content, item)
end
else
table.insert(content, item)
end
end
end
return content
end
function ProcessInternalLinks(elements)
local content = {}
local in_section_link = false
local linkDescription = {}
for _, item in pairs(elements) do
if item.t == 'Str' and string.starts_with(item.text, '[[#') then
in_section_link = true
table.insert(linkDescription, string.sub(item.text, 4))
elseif in_section_link then
if string.ends_with(item.text, ']]') then
table.insert(linkDescription, string.sub(item.text, 1, -3))
insertLink(content, linkDescription)
in_section_link = false
linkDescription = {}
else
table.insert(linkDescription, item.text)
end
else
table.insert(content, item)
end
end
return content
end
function Plain(el)
el.content = ProcessInternalLinks(el.content)
return el
end
function Pandoc(el)
return el
end
traverse = 'topdown'
math_block_text = nil
function process(el)
-- MathBlock start or end
if el.t == 'Str' and el.text == '$$' then
if math_block_text == nil then -- start
math_block_text = ''
else -- end
local math_block = pandoc.Math('DisplayMath', '\n' .. math_block_text .. '\n')
math_block_text = nil
return math_block
end
return {}
end
if math_block_text then
if (el.t == 'RawInline' or el.t == 'RawBlock') and el.format == 'tex' then
math_block_text = math_block_text .. el.text
return {}
elseif el.t == 'Str' then
math_block_text = math_block_text .. el.text
return {}
elseif el.t == 'SoftBreak' or el.t == 'BulletList' then
return {}
end
end
return el
end
function RawInline(el)
return process(el)
end
function RawBlock(el)
return process(el)
end
function Str(el)
return process(el)
end
function SoftBreak(el)
return process(el)
end
function Header(el)
return process(el)
end
function Para(el)
return process(el)
end
function Plain(el)
return process(el)
end
function BulletList(el)
return process(el)
end
function Para(el)
local blocks = {}
local inlines = {}
for _, inline in ipairs(el.content) do
if inline.t == "SoftBreak" or inline.t == "LineBreak" then
if #inlines > 0 then
table.insert(blocks, pandoc.Para(inlines))
inlines = {}
end
else
table.insert(inlines, inline)
end
end
if #inlines > 0 then
table.insert(blocks, pandoc.Para(inlines))
end
return blocks
end
-- minimum supported version for full environment
-- support is 3.8.unkown yet to be released but probably 3
local environment_fully_supported_version = pandoc.types.Version('3.8.3')
local environment_partially_supported_version = pandoc.types.Version('3.8.0')
local is_partially_supported = PANDOC_VERSION >= environment_partially_supported_version
local problamatic_environments = {
displaymath = true,
math = true,
equation = true,
["equation*"] = true,
gather = true,
["gather*"] = true,
multline = true,
["multline*"] = true,
eqnarray = true,
["eqnarray*"] = true,
align = true,
["align*"] = true,
alignat = true,
["alignat*"] = true,
flalign = true,
["flalign*"] = true,
}
if is_partially_supported then
return {
{
Math = function(elem)
if elem.text:find("^%s*\\begin{") ~= nil then
local replacement = pandoc.text:gsub(elem.text, "^%s*\\begin{(.-)}", "\\begin{%1}"):gsub("\\end{(.-)}%s*$", "\\end{%1}")
return pandoc.Math(replacement, elem.mathtype)
else
return elem
end
end,
}
}
elseif not environment_fully_supported_version then
return {
{
Math = function(elem)
local result = elem.text:match("^%s*\\begin{(%a+%*?)}")
if result ~= nil and problamatic_environments[result] ~= nil then
return pandoc.RawInline('tex', elem.text)
else
return elem
end
end,
}
}
end
os.platform = nil
if os.platform == nil then
local libExt = package.cpath:match("%p[\\|/]?\\.%p(%a+)")
if libExt == 'dll' then
os.platform = "Windows"
elseif libExt == 'so' then
os.platform = "Linux"
elseif libExt == 'dylib' then
os.platform = "MacOS"
end
end
os.copy = function(src, dest)
if os.platform == "Windows" then
src = string.gsub(src, "/", "\\")
src = os.text.toencoding(src)
dest = os.text.toencoding(dest)
os.execute('copy "' .. src .. '" "' .. dest .. '" >NUL')
else
os.execute('cp "' .. src .. '" "' .. dest .. '"')
end
end
os.mkdir = function(dir)
if os.exists(dir) then
return
end
if os.platform == "Windows" then
dir = os.text.toencoding(dir)
os.execute('mkdir "' .. dir .. '"')
else
os.execute('mkdir -p "' .. dir .. '"')
end
end
os.exists = function(path)
if os.platform == "Windows" then
path = string.gsub(path, "/", "\\")
path = os.text.toencoding(path)
local _, _, code = os.execute('if exist "' .. path .. '" (exit 0) else (exit 1)')
return code == 0
else
local _, _, code = os.execute('test -e "' .. path .. '"')
return code == 0
end
end
string.starts_with = function(str, start)
return str:sub(1, #start) == start
end
string.ends_with = function(str, ending)
return ending == "" or str:sub(-#ending) == ending
end
return {
os = os,
string = string
}
\ No newline at end of file
function Header(el)
if el.level == 1 then
return pandoc.Div(pandoc.Para(el.content), {['custom-style'] = 'Title'})
elseif el.level > 1 then
el.level = el.level - 1
return el
end
return el
end
local function encode (str)
str = string.gsub (str, "([^0-9a-zA-Z !'()*._~-])", -- locale independent
function (c) return string.format ("%%%02X", string.byte(c)) end)
str = string.gsub (str, " ", "%%20")
return str
end
local function decode (str)
str = string.gsub (str, "%%20", " ")
str = string.gsub (str, "%%(%x%x)", function(h) return string.char(tonumber(h,16)) end)
return str
end
return {
encode = encode,
decode = decode
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"id": "obsidian-enhancing-export",
"name": "Enhancing Export",
"version": "1.11.1",
"minAppVersion": "1.6.3",
"description": "This is a enhancing export plugin for Obsidian. It allows to export to formats like Html, DOCX, ePub and PDF or Markdown(Hugo) etc.",
"author": "YISH",
"authorUrl": "https://github.com/mokeyish",
"isDesktopOnly": true
}
\ No newline at end of file
.setting-item.ex-setting-item{border-top:unset;padding-top:0}*[hidden]{display:none}
%%
% Copyright (c) 2017 - 2023, Pascal Wagler;
% Copyright (c) 2014 - 2023, John MacFarlane
%
% All rights reserved.
%
% Redistribution and use in source and binary forms, with or without
% modification, are permitted provided that the following conditions
% are met:
%
% - Redistributions of source code must retain the above copyright
% notice, this list of conditions and the following disclaimer.
%
% - Redistributions in binary form must reproduce the above copyright
% notice, this list of conditions and the following disclaimer in the
% documentation and/or other materials provided with the distribution.
%
% - Neither the name of John MacFarlane nor the names of other
% contributors may be used to endorse or promote products derived
% from this software without specific prior written permission.
%
% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
% "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
% LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
% FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
% COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
% INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
% BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
% LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
% CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
% LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
% ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
% POSSIBILITY OF SUCH DAMAGE.
%%
%%
% This is the Eisvogel pandoc LaTeX template.
%
% For usage information and examples visit the official GitHub page:
% https://github.com/Wandmalfarbe/pandoc-latex-template
%%
% Options for packages loaded elsewhere
\PassOptionsToPackage{unicode$for(hyperrefoptions)$,$hyperrefoptions$$endfor$}{hyperref}
\PassOptionsToPackage{hyphens}{url}
\PassOptionsToPackage{dvipsnames,svgnames,x11names,table}{xcolor}
$if(CJKmainfont)$
\PassOptionsToPackage{space}{xeCJK}
\usepackage{datetime}
$endif$
%
\documentclass[
$if(fontsize)$
$fontsize$,
$endif$
$if(papersize)$
$papersize$paper,
$else$
paper=a4,
$endif$
$if(beamer)$
ignorenonframetext,
$if(handout)$
handout,
$endif$
$if(aspectratio)$
aspectratio=$aspectratio$,
$endif$
$endif$
$for(classoption)$
$classoption$$sep$,
$endfor$
,captions=tableheading
]{$if(beamer)$$documentclass$$else$$if(book)$scrbook$else$scrartcl$endif$$endif$}
$if(beamer)$
$if(background-image)$
\usebackgroundtemplate{%
\includegraphics[width=\paperwidth]{$background-image$}%
}
% In beamer background-image does not work well when other images are used, so this is the workaround
\pgfdeclareimage[width=\paperwidth,height=\paperheight]{background}{$background-image$}
\usebackgroundtemplate{\pgfuseimage{background}}
$endif$
\usepackage{pgfpages}
\setbeamertemplate{caption}[numbered]
\setbeamertemplate{caption label separator}{: }
\setbeamercolor{caption name}{fg=normal text.fg}
\beamertemplatenavigationsymbols$if(navigation)$$navigation$$else$empty$endif$
$for(beameroption)$
\setbeameroption{$beameroption$}
$endfor$
% Prevent slide breaks in the middle of a paragraph
\widowpenalties 1 10000
\raggedbottom
$if(section-titles)$
\setbeamertemplate{part page}{
\centering
\begin{beamercolorbox}[sep=16pt,center]{part title}
\usebeamerfont{part title}\insertpart\par
\end{beamercolorbox}
}
\setbeamertemplate{section page}{
\centering
\begin{beamercolorbox}[sep=12pt,center]{part title}
\usebeamerfont{section title}\insertsection\par
\end{beamercolorbox}
}
\setbeamertemplate{subsection page}{
\centering
\begin{beamercolorbox}[sep=8pt,center]{part title}
\usebeamerfont{subsection title}\insertsubsection\par
\end{beamercolorbox}
}
\AtBeginPart{
\frame{\partpage}
}
\AtBeginSection{
\ifbibliography
\else
\frame{\sectionpage}
\fi
}
\AtBeginSubsection{
\frame{\subsectionpage}
}
$endif$
$endif$
$if(beamerarticle)$
\usepackage{beamerarticle} % needs to be loaded first
$endif$
\usepackage{amsmath,amssymb}
$if(linestretch)$
\usepackage{setspace}
$else$
% Use setspace anyway because we change the default line spacing.
% The spacing is changed early to affect the titlepage and the TOC.
\usepackage{setspace}
\setstretch{1.2}
$endif$
\usepackage{iftex}
\ifPDFTeX
\usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{textcomp} % provide euro and other symbols
\else % if luatex or xetex
$if(mathspec)$
\ifXeTeX
\usepackage{mathspec} % this also loads fontspec
\else
\usepackage{unicode-math} % this also loads fontspec
\fi
$else$
\usepackage{unicode-math} % this also loads fontspec
$endif$
\defaultfontfeatures{Scale=MatchLowercase}$-- must come before Beamer theme
\defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
\fi
$if(fontfamily)$
$else$
$-- Set default font before Beamer theme so the theme can override it
\usepackage{lmodern}
$endif$
$-- Set Beamer theme before user font settings so they can override theme
$if(beamer)$
$if(theme)$
\usetheme[$for(themeoptions)$$themeoptions$$sep$,$endfor$]{$theme$}
$endif$
$if(colortheme)$
\usecolortheme{$colortheme$}
$endif$
$if(fonttheme)$
\usefonttheme{$fonttheme$}
$endif$
$if(mainfont)$
\usefonttheme{serif} % use mainfont rather than sansfont for slide text
$endif$
$if(innertheme)$
\useinnertheme{$innertheme$}
$endif$
$if(outertheme)$
\useoutertheme{$outertheme$}
$endif$
$endif$
$-- User font settings (must come after default font and Beamer theme)
$if(fontfamily)$
\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$}
$endif$
\ifPDFTeX\else
% xetex/luatex font selection
$if(mainfont)$
\setmainfont[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$]{$mainfont$}
$endif$
$if(sansfont)$
\setsansfont[$for(sansfontoptions)$$sansfontoptions$$sep$,$endfor$]{$sansfont$}
$endif$
$if(monofont)$
\setmonofont[$for(monofontoptions)$$monofontoptions$$sep$,$endfor$]{$monofont$}
$endif$
$for(fontfamilies)$
\newfontfamily{$fontfamilies.name$}[$for(fontfamilies.options)$$fontfamilies.options$$sep$,$endfor$]{$fontfamilies.font$}
$endfor$
$if(mathfont)$
$if(mathspec)$
\ifXeTeX
\setmathfont(Digits,Latin,Greek)[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
\else
\setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
\fi
$else$
\setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
$endif$
$endif$
$if(CJKmainfont)$
\ifXeTeX
\usepackage{xeCJK}
\setCJKmainfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
$if(CJKsansfont)$
\setCJKsansfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKsansfont$}
$endif$
$if(CJKmonofont)$
\setCJKmonofont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmonofont$}
$endif$
\fi
$endif$
$if(luatexjapresetoptions)$
\ifLuaTeX
\usepackage[$for(luatexjapresetoptions)$$luatexjapresetoptions$$sep$,$endfor$]{luatexja-preset}
\fi
$endif$
$if(CJKmainfont)$
\ifLuaTeX
\usepackage[$for(luatexjafontspecoptions)$$luatexjafontspecoptions$$sep$,$endfor$]{luatexja-fontspec}
\setmainjfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
\fi
$endif$
\fi
$if(zero-width-non-joiner)$
%% Support for zero-width non-joiner characters.
\makeatletter
\def\zerowidthnonjoiner{%
% Prevent ligatures and adjust kerning, but still support hyphenating.
\texorpdfstring{%
\TextOrMath{\nobreak\discretionary{-}{}{\kern.03em}%
\ifvmode\else\nobreak\hskip\z@skip\fi}{}%
}{}%
}
\makeatother
\ifPDFTeX
\DeclareUnicodeCharacter{200C}{\zerowidthnonjoiner}
\else
\catcode`^^^^200c=\active
\protected\def ^^^^200c{\zerowidthnonjoiner}
\fi
%% End of ZWNJ support
$endif$
% Use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
\IfFileExists{microtype.sty}{% use microtype if available
\usepackage[$for(microtypeoptions)$$microtypeoptions$$sep$,$endfor$]{microtype}
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
$if(indent)$
$else$
\usepackage{pgfpages}
\usepackage[export]{adjustbox}
\usepackage{graphicx}
\usepackage{ragged2e}
\makeatletter
\@ifundefined{KOMAClassName}{% if non-KOMA class
\IfFileExists{parskip.sty}{%
\usepackage{parskip}
}{% else
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}}
}{% if KOMA class
\KOMAoptions{parskip=half}}
\makeatother
$endif$
$if(verbatim-in-note)$
\usepackage{fancyvrb}
$endif$
\usepackage{xcolor}
\definecolor{default-linkcolor}{HTML}{A50000}
\definecolor{default-filecolor}{HTML}{A50000}
\definecolor{default-citecolor}{HTML}{4077C0}
\definecolor{default-urlcolor}{HTML}{4077C0}
$if(footnotes-pretty)$
% load footmisc in order to customize footnotes (footmisc has to be loaded before hyperref, cf. https://tex.stackexchange.com/a/169124/144087)
\usepackage[hang,flushmargin,bottom,multiple]{footmisc}
\setlength{\footnotemargin}{0.8em} % set space between footnote nr and text
\setlength{\footnotesep}{\baselineskip} % set space between multiple footnotes
\setlength{\skip\footins}{0.3cm} % set space between page content and footnote
\setlength{\footskip}{0.9cm} % set space between footnote and page bottom
$endif$
$if(geometry)$
$if(beamer)$
\geometry{$for(geometry)$$geometry$$sep$,$endfor$}
$else$
\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
$endif$
$else$
$if(beamer)$
$else$
\usepackage[margin=2.5cm,includehead=true,includefoot=true,centering,$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
$endif$
$endif$
$if(titlepage-logo)$
\usepackage[export]{adjustbox}
\usepackage{graphicx}
$endif$
$if(beamer)$
\newif\ifbibliography
$endif$
$if(listings)$
\usepackage{listings}
\newcommand{\passthrough}[1]{#1}
\lstset{defaultdialect=[5.3]Lua}
\lstset{defaultdialect=[x86masm]Assembler}
$endif$
$if(listings-no-page-break)$
\usepackage{etoolbox}
\BeforeBeginEnvironment{lstlisting}{\par\noindent\begin{minipage}{\linewidth}}
\AfterEndEnvironment{lstlisting}{\end{minipage}\par\addvspace{\topskip}}
$endif$
$if(lhs)$
\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{}
$endif$
$if(highlighting-macros)$
$highlighting-macros$
% Workaround/bugfix from jannick0.
% See https://github.com/jgm/pandoc/issues/4302#issuecomment-360669013)
% or https://github.com/Wandmalfarbe/pandoc-latex-template/issues/2
%
% Redefine the verbatim environment 'Highlighting' to break long lines (with
% the help of fvextra). Redefinition is necessary because it is unlikely that
% pandoc includes fvextra in the default template.
\usepackage{fvextra}
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{breaklines,fontsize=$if(code-block-font-size)$$code-block-font-size$$else$\small$endif$,commandchars=\\\{\}}
$endif$
$if(tables)$
\usepackage{longtable,booktabs,array}
$if(multirow)$
\usepackage{multirow}
$endif$
\usepackage{calc} % for calculating minipage widths
$if(beamer)$
\usepackage{caption}
% Make caption package work with longtable
\makeatletter
\def\fnum@table{\tablename~\thetable}
\makeatother
$else$
% Correct order of tables after \paragraph or \subparagraph
\usepackage{etoolbox}
\makeatletter
\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{}
\makeatother
% Allow footnotes in longtable head/foot
\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}}
\makesavenoteenv{longtable}
$endif$
$endif$
% add backlinks to footnote references, cf. https://tex.stackexchange.com/questions/302266/make-footnote-clickable-both-ways
$if(footnotes-disable-backlinks)$
$else$
\usepackage{footnotebackref}
$endif$
$if(graphics)$
\usepackage{graphicx}
\makeatletter
\newsavebox\pandoc@box
\newcommand*\pandocbounded[1]{% scales image to fit in text height/width
\sbox\pandoc@box{#1}%
\Gscale@div\@tempa{\textheight}{\dimexpr\ht\pandoc@box+\dp\pandoc@box\relax}%
\Gscale@div\@tempb{\linewidth}{\wd\pandoc@box}%
\ifdim\@tempb\p@<\@tempa\p@\let\@tempa\@tempb\fi% select the smaller of both
\ifdim\@tempa\p@<\p@\scalebox{\@tempa}{\usebox\pandoc@box}%
\else\usebox{\pandoc@box}%
\fi%
}
% Set default figure placement to htbp
% Make use of float-package and set default placement for figures to H.
% The option H means 'PUT IT HERE' (as opposed to the standard h option which means 'You may put it here if you like').
\usepackage{float}
\floatplacement{figure}{$if(float-placement-figure)$$float-placement-figure$$else$H$endif$}
\makeatother
$endif$
$if(svg)$
\usepackage{svg}
$endif$
$if(strikeout)$
$-- also used for underline
\ifLuaTeX
\usepackage{luacolor}
\usepackage[soul]{lua-ul}
\else
\usepackage{soul}
$if(CJKmainfont)$
\ifXeTeX
% soul's \st doesn't work for CJK:
\usepackage{xeCJKfntef}
\renewcommand{\st}[1]{\sout{#1}}
\fi
$endif$
\fi
$endif$
\setlength{\emergencystretch}{3em} % prevent overfull lines
\providecommand{\tightlist}{%
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
$if(numbersections)$
\setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$}
$else$
\setcounter{secnumdepth}{-\maxdimen} % remove section numbering
$endif$
$if(subfigure)$
\usepackage{subcaption}
$endif$
$if(beamer)$
$else$
$if(block-headings)$
% Make \paragraph and \subparagraph free-standing
\ifx\paragraph\undefined\else
\let\oldparagraph\paragraph
\renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}}
\fi
\ifx\subparagraph\undefined\else
\let\oldsubparagraph\subparagraph
\renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}}
\fi
$endif$
$endif$
$if(pagestyle)$
\pagestyle{$pagestyle$}
$endif$
$if(csl-refs)$
% definitions for citeproc citations
\NewDocumentCommand\citeproctext{}{}
\NewDocumentCommand\citeproc{mm}{%
\begingroup\def\citeproctext{#2}\cite{#1}\endgroup}
\makeatletter
% allow citations to break across lines
\let\@cite@ofmt\@firstofone
% avoid brackets around text for \cite:
\def\@biblabel#1{}
\def\@cite#1#2{{#1\if@tempswa , #2\fi}}
\makeatother
\newlength{\cslhangindent}
\setlength{\cslhangindent}{1.5em}
\newlength{\csllabelwidth}
\setlength{\csllabelwidth}{3em}
\newenvironment{CSLReferences}[2] % #1 hanging-indent, #2 entry-spacing
{\begin{list}{}{%
\setlength{\itemindent}{0pt}
\setlength{\leftmargin}{0pt}
\setlength{\parsep}{0pt}
% turn on hanging indent if param 1 is 1
\ifodd #1
\setlength{\leftmargin}{\cslhangindent}
\setlength{\itemindent}{-1\cslhangindent}
\fi
% set entry spacing
\setlength{\itemsep}{#2\baselineskip}}}
{\end{list}}
\usepackage{calc}
\newcommand{\CSLBlock}[1]{\hfill\break\parbox[t]{\linewidth}{\strut\ignorespaces#1\strut}}
\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{\strut#1\strut}}
\newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{\strut#1\strut}}
\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1}
$endif$
$if(lang)$
\ifLuaTeX
\usepackage[bidi=basic]{babel}
\else
\usepackage[bidi=default]{babel}
\fi
$if(babel-lang)$
\babelprovide[main,import]{$babel-lang$}
$if(mainfont)$
\ifPDFTeX
\else
\babelfont{rm}[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$]{$mainfont$}
\fi
$endif$
$endif$
$for(babel-otherlangs)$
\babelprovide[import]{$babel-otherlangs$}
$endfor$
$for(babelfonts/pairs)$
\babelfont[$babelfonts.key$]{rm}{$babelfonts.value$}
$endfor$
% get rid of language-specific shorthands (see #6817):
\let\LanguageShortHands\languageshorthands
\def\languageshorthands#1{}
$endif$
$for(header-includes)$
$header-includes$
$endfor$
\ifLuaTeX
\usepackage{selnolig} % disable illegal ligatures
\fi
$if(dir)$
\ifPDFTeX
\TeXXeTstate=1
\newcommand{\RL}[1]{\beginR #1\endR}
\newcommand{\LR}[1]{\beginL #1\endL}
\newenvironment{RTL}{\beginR}{\endR}
\newenvironment{LTR}{\beginL}{\endL}
\fi
$endif$
$if(natbib)$
\usepackage[$natbiboptions$]{natbib}
\bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$}
$endif$
$if(biblatex)$
\usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$endfor$]{biblatex}
$for(bibliography)$
\addbibresource{$bibliography$}
$endfor$
$endif$
$if(nocite-ids)$
\nocite{$for(nocite-ids)$$it$$sep$, $endfor$}
$endif$
$if(csquotes)$
\usepackage{csquotes}
$endif$
\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
\urlstyle{$if(urlstyle)$$urlstyle$$else$same$endif$}
$if(links-as-notes)$
% Make links footnotes instead of hotlinks:
\DeclareRobustCommand{\href}[2]{#2\footnote{\url{#1}}}
$endif$
$if(verbatim-in-note)$
\VerbatimFootnotes % allow verbatim text in footnotes
$endif$
\hypersetup{
$if(title-meta)$
pdftitle={$title-meta$},
$endif$
$if(author-meta)$
pdfauthor={$author-meta$},
$endif$
$if(lang)$
pdflang={$lang$},
$endif$
$if(subject)$
pdfsubject={$subject$},
$endif$
$if(keywords)$
pdfkeywords={$for(keywords)$$keywords$$sep$, $endfor$},
$endif$
$if(colorlinks)$
colorlinks=true,
linkcolor={$if(linkcolor)$$linkcolor$$else$default-linkcolor$endif$},
filecolor={$if(filecolor)$$filecolor$$else$default-filecolor$endif$},
citecolor={$if(citecolor)$$citecolor$$else$default-citecolor$endif$},
urlcolor={$if(urlcolor)$$urlcolor$$else$default-urlcolor$endif$},
$else$
hidelinks,
$endif$
breaklinks=true,
pdfcreator={LaTeX via pandoc with the Eisvogel template}}
$if(title)$
\title{$if(title)$$title$$else$Set up Title in Frontmatter (see abstract)$endif$}
$endif$
$if(subtitle)$
$if(beamer)$
$else$
\usepackage{etoolbox}
\makeatletter
\providecommand{\subtitle}[1]{% add subtitle to \maketitle
\apptocmd{\@title}{\par {\large #1 \par}}{}{}
}
\makeatother
$endif$
\subtitle{$subtitle$}
$endif$
\author{$for(author)$$author$$sep$ \and $endfor$}
$if(date)$
\date{$date$}
$else$
\date{\today}
$endif$
$if(beamer)$
$if(institute)$
\institute{$for(institute)$$institute$$sep$ \and $endfor$}
$endif$
$if(titlegraphic)$
\titlegraphic{\includegraphics{$titlegraphic$}}
$endif$
$if(logo)$
\logo{\includegraphics{$logo$}}
$endif$
$endif$
%%
%% added
%%
$if(page-background)$
\usepackage[pages=all]{background}
$endif$
%
% for the background color of the title page
%
$if(notitlepage)$
$else$
\usepackage{pagecolor}
\usepackage{afterpage}
$if(titlepage-background)$
\usepackage{tikz}
$endif$
$if(geometry)$
$else$
\usepackage[margin=2.5cm,includehead=true,includefoot=true,centering]{geometry}
$endif$
$endif$
%
% break urls
%
\PassOptionsToPackage{hyphens}{url}
%
% When using babel or polyglossia with biblatex, loading csquotes is recommended
% to ensure that quoted texts are typeset according to the rules of your main language.
%
\usepackage{csquotes}
%
% captions
%
\definecolor{caption-color}{HTML}{777777}
$if(beamer)$
$else$
\usepackage[font={stretch=1.2}, textfont={color=caption-color}, position=top, skip=4mm, labelfont=bf, singlelinecheck=false, justification=$if(caption-justification)$$caption-justification$$else$justified$endif$]{caption}
\setcapindent{0em}
$endif$
%
% blockquote
%
\definecolor{blockquote-border}{RGB}{221,221,221}
\definecolor{blockquote-text}{RGB}{119,119,119}
\usepackage{mdframed}
\newmdenv[rightline=false,bottomline=false,topline=false,linewidth=3pt,linecolor=blockquote-border,skipabove=\parskip]{customblockquote}
\renewenvironment{quote}{\begin{customblockquote}\list{}{\rightmargin=0em\leftmargin=0em}%
\item\relax\color{blockquote-text}\ignorespaces}{\unskip\unskip\endlist\end{customblockquote}}
%
% Source Sans Pro as the de­fault font fam­ily
% Source Code Pro for monospace text
%
% 'default' option sets the default
% font family to Source Sans Pro, not \sfdefault.
%
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
$if(fontfamily)$
$else$
\usepackage[default]{sourcesanspro}
\usepackage{sourcecodepro}
$endif$
\else % if not pdftex
$if(mainfont)$
$else$
\usepackage[default]{sourcesanspro}
\usepackage{sourcecodepro}
% XeLaTeX specific adjustments for straight quotes: https://tex.stackexchange.com/a/354887
% This issue is already fixed (see https://github.com/silkeh/latex-sourcecodepro/pull/5) but the
% fix is still unreleased.
% TODO: Remove this workaround when the new version of sourcecodepro is released on CTAN.
\ifxetex
\makeatletter
\defaultfontfeatures[\ttfamily]
{ Numbers = \sourcecodepro@figurestyle,
Scale = \SourceCodePro@scale,
Extension = .otf }
\setmonofont
[ UprightFont = *-\sourcecodepro@regstyle,
ItalicFont = *-\sourcecodepro@regstyle It,
BoldFont = *-\sourcecodepro@boldstyle,
BoldItalicFont = *-\sourcecodepro@boldstyle It ]
{SourceCodePro}
\makeatother
\fi
$endif$
\fi
%
% heading color
%
\definecolor{heading-color}{RGB}{40,40,40}
$if(beamer)$
$else$
\addtokomafont{section}{\color{heading-color}}
$endif$
% When using the classes report, scrreprt, book,
% scrbook or memoir, uncomment the following line.
%\addtokomafont{chapter}{\color{heading-color}}
%
% variables for title, author and date
%
$if(beamer)$
$else$
\usepackage{titling}
\title{$title$}
\author{$for(author)$$author$$sep$, $endfor$}
\date{$date$}
$endif$
%
% tables
%
$if(tables)$
\definecolor{table-row-color}{HTML}{F5F5F5}
\definecolor{table-rule-color}{HTML}{999999}
%\arrayrulecolor{black!40}
\arrayrulecolor{table-rule-color} % color of \toprule, \midrule, \bottomrule
\setlength\heavyrulewidth{0.3ex} % thickness of \toprule, \bottomrule
\renewcommand{\arraystretch}{1.3} % spacing (padding)
$if(table-use-row-colors)$
% TODO: This doesn't work anymore. I don't know why.
% Reset rownum counter so that each table
% starts with the same row colors.
% https://tex.stackexchange.com/questions/170637/restarting-rowcolors
%
% Unfortunately the colored cells extend beyond the edge of the
% table because pandoc uses @-expressions (@{}) like so:
%
% \begin{longtable}[]{@{}ll@{}}
% \end{longtable}
%
% https://en.wikibooks.org/wiki/LaTeX/Tables#.40-expressions
\usepackage{etoolbox}
\AtBeginEnvironment{longtable}{\rowcolors{2}{}{table-row-color!100}}
\preto{\toprule}{\hiderowcolors}{}{}
\appto{\endhead}{\showrowcolors}{}{}
\appto{\endfirsthead}{\showrowcolors}{}{}
$endif$
$endif$
%
% remove paragraph indentation
%
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}
\setlength{\emergencystretch}{3em} % prevent overfull lines
%
%
% Listings
%
%
$if(listings)$
%
% general listing colors
%
\definecolor{listing-background}{HTML}{F7F7F7}
\definecolor{listing-rule}{HTML}{B3B2B3}
\definecolor{listing-numbers}{HTML}{B3B2B3}
\definecolor{listing-text-color}{HTML}{000000}
\definecolor{listing-keyword}{HTML}{435489}
\definecolor{listing-keyword-2}{HTML}{1284CA} % additional keywords
\definecolor{listing-keyword-3}{HTML}{9137CB} % additional keywords
\definecolor{listing-identifier}{HTML}{435489}
\definecolor{listing-string}{HTML}{00999A}
\definecolor{listing-comment}{HTML}{8E8E8E}
\lstdefinestyle{eisvogel_listing_style}{
language = java,
$if(listings-disable-line-numbers)$
xleftmargin = 0.6em,
framexleftmargin = 0.4em,
$else$
numbers = left,
xleftmargin = 2.7em,
framexleftmargin = 2.5em,
$endif$
backgroundcolor = \color{listing-background},
basicstyle = \color{listing-text-color}\linespread{1.0}%
\lst@ifdisplaystyle%
$if(code-block-font-size)$$code-block-font-size$$else$\small$endif$%
\fi\ttfamily{},
breaklines = true,
frame = single,
framesep = 0.19em,
rulecolor = \color{listing-rule},
frameround = ffff,
tabsize = 4,
numberstyle = \color{listing-numbers},
aboveskip = 1.0em,
belowskip = 0.1em,
abovecaptionskip = 0em,
belowcaptionskip = 1.0em,
keywordstyle = {\color{listing-keyword}\bfseries},
keywordstyle = {[2]\color{listing-keyword-2}\bfseries},
keywordstyle = {[3]\color{listing-keyword-3}\bfseries\itshape},
sensitive = true,
identifierstyle = \color{listing-identifier},
commentstyle = \color{listing-comment},
stringstyle = \color{listing-string},
showstringspaces = false,
escapeinside = {/*@}{@*/}, % Allow LaTeX inside these special comments
literate =
{á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
{Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
{à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
{À}{{\`A}}1 {È}{{\`E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
{ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
{Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
{â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
{Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
{œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
{ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
{}{{\EUR}}1 {£}{{\pounds}}1 {«}{{\guillemotleft}}1
{»}{{\guillemotright}}1 {ñ}{{\~n}}1 {Ñ}{{\~N}}1 {¿}{{?`}}1
{}{{\ldots}}1 {}{{>=}}1 {}{{<=}}1 {}{{\glqq}}1 {}{{\grqq}}1
{}{{''}}1
}
\lstset{style=eisvogel_listing_style}
%
% Java (Java SE 12, 2019-06-22)
%
\lstdefinelanguage{Java}{
morekeywords={
% normal keywords (without data types)
abstract,assert,break,case,catch,class,continue,default,
do,else,enum,exports,extends,final,finally,for,if,implements,
import,instanceof,interface,module,native,new,package,private,
protected,public,requires,return,static,strictfp,super,switch,
synchronized,this,throw,throws,transient,try,volatile,while,
% var is an identifier
var
},
morekeywords={[2] % data types
% primitive data types
boolean,byte,char,double,float,int,long,short,
% String
String,
% primitive wrapper types
Boolean,Byte,Character,Double,Float,Integer,Long,Short
% number types
Number,AtomicInteger,AtomicLong,BigDecimal,BigInteger,DoubleAccumulator,DoubleAdder,LongAccumulator,LongAdder,Short,
% other
Object,Void,void
},
morekeywords={[3] % literals
% reserved words for literal values
null,true,false,
},
sensitive,
morecomment = [l]//,
morecomment = [s]{/*}{*/},
morecomment = [s]{/**}{*/},
morestring = [b]",
morestring = [b]',
}
\lstdefinelanguage{XML}{
morestring = [b]",
moredelim = [s][\bfseries\color{listing-keyword}]{<}{\ },
moredelim = [s][\bfseries\color{listing-keyword}]{</}{>},
moredelim = [l][\bfseries\color{listing-keyword}]{/>},
moredelim = [l][\bfseries\color{listing-keyword}]{>},
morecomment = [s]{<?}{?>},
morecomment = [s]{<!--}{-->},
commentstyle = \color{listing-comment},
stringstyle = \color{listing-string},
identifierstyle = \color{listing-identifier}
}
$endif$
%
% header and footer
%
$if(beamer)$
$else$
$if(disable-header-and-footer)$
$else$
\usepackage[headsepline,footsepline]{scrlayer-scrpage}
\newpairofpagestyles{eisvogel-header-footer}{
\clearpairofpagestyles
\ihead*{$if(header-left)$$header-left$$else$$title$$endif$}
\chead*{$if(header-center)$$header-center$$else$$endif$}
\ohead*{$if(header-right)$$header-right$$else$$date$$endif$}
\ifoot*{$if(footer-left)$$footer-left$$else$$for(author)$$author$$sep$, $endfor$$endif$}
\cfoot*{$if(footer-center)$$footer-center$$else$$endif$}
\ofoot*{$if(footer-right)$$footer-right$$else$\thepage$endif$}
\addtokomafont{pageheadfoot}{\upshape}
}
\pagestyle{eisvogel-header-footer}
$if(book)$
\deftripstyle{ChapterStyle}{}{}{}{}{\pagemark}{}
\renewcommand*{\chapterpagestyle}{ChapterStyle}
$endif$
$if(page-background)$
\backgroundsetup{
scale=1,
color=black,
opacity=$if(page-background-opacity)$$page-background-opacity$$else$0.2$endif$,
angle=0,
contents={%
\includegraphics[width=\paperwidth,height=\paperheight]{$page-background$}
}%
}
$endif$
$endif$
$endif$
%%
%% end added
%%
\usepackage{pgfpages}
\usepackage[export]{adjustbox}
\usepackage{graphicx}
\usepackage{ragged2e}
\begin{document}
%%
%% begin titlepage
%%
$if(beamer)$
$else$
$if(notitlepage)$
$else$
\begin{titlepage}
$if(titlepage-background)$
\newgeometry{top=2cm, right=4cm, bottom=3cm, left=4cm}
$else$
$endif$
$if(titlepage-color)$
\definecolor{titlepage-color}{HTML}{$titlepage-color$}
\newpagecolor{titlepage-color}\afterpage{\restorepagecolor}
$endif$
$if(titlepage-background)$
\tikz[remember picture,overlay] \node[inner sep=0pt] at (current page.center){\includegraphics[width=\paperwidth,height=\paperheight]{$titlepage-background$}};
$endif$
\newcommand{\colorRule}[3][black]{\textcolor[HTML]{#1}{\rule{#2}{#3}}}
\begin{flushleft}
\noindent
\\[-1em]
\color[HTML]{$if(titlepage-text-color)$$titlepage-text-color$$else$000000$endif$}
\makebox[0pt][l]{\colorRule[$if(titlepage-rule-color)$$titlepage-rule-color$$else$FFFFFF$endif$]{1.3\textwidth}{$if(titlepage-rule-height)$$titlepage-rule-height$$else$0$endif$pt}}
\par
\noindent
$if(titlepage-background)$
% The titlepage with a background image has other text spacing and text size
{
\setstretch{2}
\vfill
\vskip -8em
\noindent {\huge \textbf{\textsf{
$if(title)$
$title$
$else$
Set up Title in Frontmatter (see Abstract)
$endif$
}}}
$if(subtitle)$
\vskip 1em
{\Large \textsf{$subtitle$}}
$endif$
\vskip 2em
\noindent {\Large \textit{$for(author)$$author$$sep$, $endfor$} \vskip 0.6em \textsf{$date$}}
\vfill
}
$else$
{
\begin{center}
\setstretch{1.4}
\vfill
\noindent {\huge \textbf{\textsf{
$if(title)$
$title$
$else$
Set up Title in Frontmatter (see Abstract)
$endif$
}}}
$if(subtitle)$
\vskip 1em
{\Large \textsf{$subtitle$}}
$endif$
\vskip 2em
\noindent {\Large \textit{$for(author)$$author$$sep$, $endfor$}}
\vfill
\end{center}
}
$endif$
$if(titlepage-logo)$
\noindent
\begin{center}
\includegraphics[width=$if(logo-width)$$logo-width$$else$35mm$endif$]{$titlepage-logo$}
\end{center}
$endif$
$if(text1)$
\begin{center}
{\large \textsf{$text1$}}
\end{center}
$endif$
$if(text2)$
\begin{center}
{\large \textsf{$text2$}}
\end{center}
$endif$
$if(text3)$
\begin{center}
{\large \textsf{$text3$}}
\end{center}
$endif$
$if(text4)$
\begin{center}
{\large \textsf{$text4$}}
\end{center}
$endif$
$if(titlepage-background)$
$else$
$endif$
\end{flushleft}
\end{titlepage}
\restoregeometry
\pagenumbering{arabic}
$endif$
$endif$
%%
%% end titlepage
%%
$if(has-frontmatter)$
\frontmatter
\frame{\titlepage}
% don't generate the default title
% $else$
% \maketitle
\pagenumbering{Roman} % set the numbering style to lowercase letter
\begin{center}
{\LARGE \textbf{\textsf{Abstract}}}
\end{center}
\begin{abstract}
\begin{justify}
$if(abstract)$
$abstract$
$else$
Add your abstract at the beginning of your markdown file like this
\begin{verbatim}
---
title: "Your Title"
abstract: "your abstract here"
author: Leonardo V. Castorina, Another 1, Another 2
titlepage-logo: /absolute/path/to/logo.pdf
acknowledgements: "I would like to thank my dog Data."
declaration: "I declare that this thesis was composed by myself."
---
\end{verbatim}
This is called YAML frontmatter. Make sure to set up a title! If you set your abstract correctly you should not see this message.
Optionally you can set up \texttt{titlepage-logo} for a logo in the cover page, \texttt{acknowledgements} section, and \texttt{declaration} section.
$endif$
\end{justify}
\end{abstract}
\pagebreak
$if(acknowledgements)$
\begin{center}
{\LARGE \textbf{\textsf{Acknowledgements}}}
\end{center}
\begin{abstract}
\begin{justify}
$acknowledgements$
\end{justify}
\end{abstract}
\pagebreak
$endif$
$if(declaration)$
\begin{center}
{\LARGE \textbf{\textsf{Declaration}}}
\end{center}
\begin{abstract}
\begin{justify}
$declaration$ \par
\vspace{1in}\raggedleft({\em $author$\/})
\end{justify}
\end{abstract}
\pagebreak
$endif$
\pagenumbering{arabic} % set the numbering style to lowercase letter
\setcounter{page}{0} % Set the page counter to 3
$if(first-chapter)$
\setcounter{chapter}{$first-chapter$}
\addtocounter{chapter}{-1}
$endif$
$for(include-before)$
$include-before$
$endfor$
$if(no-toc)$
$else$
\renewcommand*\contentsname{$toc-title$}
\renewcommand*\contentsname{Table of Contents}
$endif$
$if(beamer)$
\begin{frame}[allowframebreaks]
$if(toc-title)$
\frametitle{$toc-title$}
$endif$
\tableofcontents[hideallsubsections]
\end{frame}
\newpage
$else$
{
$if(colorlinks)$
\hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$$endif$}
$endif$
\setcounter{tocdepth}{$toc-depth$}
\tableofcontents
\newpage
}
$endif$
$endif$
$if(lof)$
\listoffigures
$endif$
$if(lot)$
\listoftables
$endif$
$if(linestretch)$
\setstretch{$linestretch$}
$endif$
$if(has-frontmatter)$
\mainmatter
$endif$
$body$
$if(has-frontmatter)$
\backmatter
$endif$
$if(natbib)$
$if(bibliography)$
$if(biblio-title)$
$if(has-chapters)$
\renewcommand\bibname{$biblio-title$}
$else$
\renewcommand\refname{$biblio-title$}
$endif$
$endif$
$if(beamer)$
\begin{frame}[allowframebreaks]{$biblio-title$}
\bibliographytrue
$endif$
\bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$}
$if(beamer)$
\end{frame}
$endif$
$endif$
$endif$
$if(biblatex)$
$if(beamer)$
\begin{frame}[allowframebreaks]{$biblio-title$}
\bibliographytrue
\printbibliography[heading=none]
\end{frame}
$else$
\printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$
$endif$
$endif$
$for(include-after)$
$include-after$
$endfor$
\end{document}
\ No newline at end of file
% partial rewrite of the LaTeX2e package for submissions to the
% Conference on Neural Information Processing Systems (NeurIPS):
%
% - uses more LaTeX conventions
% - line numbers at submission time replaced with aligned numbers from
% lineno package
% - \nipsfinalcopy replaced with [final] package option
% - automatically loads times package for authors
% - loads natbib automatically; this can be suppressed with the
% [nonatbib] package option
% - adds foot line to first page identifying the conference
% - adds preprint option for submission to e.g. arXiv
% - conference acronym modified
%
% Roman Garnett (garnett@wustl.edu) and the many authors of
% nips15submit_e.sty, including MK and drstrip@sandia
%
% last revision: March 2023
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{neurips}[2023/03/31 NeurIPS 2023 submission/camera-ready style file]
% declare final option, which creates camera-ready copy
\newif\if@neuripsfinal\@neuripsfinalfalse
\DeclareOption{final}{
\@neuripsfinaltrue
}
% declare nonatbib option, which does not load natbib in case of
% package clash (users can pass options to natbib via
% \PassOptionsToPackage)
\newif\if@natbib\@natbibtrue
\DeclareOption{nonatbib}{
\@natbibfalse
}
% declare preprint option, which creates a preprint version ready for
% upload to, e.g., arXiv
\newif\if@preprint\@preprintfalse
\DeclareOption{preprint}{
\@preprinttrue
}
\ProcessOptions\relax
% determine whether this is an anonymized submission
\newif\if@submission\@submissiontrue
\if@neuripsfinal\@submissionfalse\fi
\if@preprint\@submissionfalse\fi
% fonts
\renewcommand{\rmdefault}{ptm}
\renewcommand{\sfdefault}{phv}
% change this every year for notice string at bottom
\newcommand{\@neuripsordinal}{}
\newcommand{\@neuripsyear}{\the\year}
\newcommand{\@neuripslocation}{}
% acknowledgments
\usepackage{environ}
\newcommand{\acksection}{\section*{Acknowledgments and Disclosure of Funding}}
\NewEnviron{ack}{%
\acksection
\BODY
}
% load natbib unless told otherwise
\if@natbib
\RequirePackage{natbib}
\fi
% set page geometry
\usepackage[verbose=true,letterpaper]{geometry}
\AtBeginDocument{
\newgeometry{
textheight=9in,
textwidth=5.5in,
top=1in,
headheight=12pt,
headsep=25pt,
footskip=30pt
}
\@ifpackageloaded{fullpage}
{\PackageWarning{neurips_2023}{fullpage package not allowed! Overwriting formatting.}}
{}
}
\widowpenalty=10000
\clubpenalty=10000
\flushbottom
\sloppy
% font sizes with reduced leading
\renewcommand{\normalsize}{%
\@setfontsize\normalsize\@xpt\@xipt
\abovedisplayskip 7\p@ \@plus 2\p@ \@minus 5\p@
\abovedisplayshortskip \z@ \@plus 3\p@
\belowdisplayskip \abovedisplayskip
\belowdisplayshortskip 4\p@ \@plus 3\p@ \@minus 3\p@
}
\normalsize
\renewcommand{\small}{%
\@setfontsize\small\@ixpt\@xpt
\abovedisplayskip 6\p@ \@plus 1.5\p@ \@minus 4\p@
\abovedisplayshortskip \z@ \@plus 2\p@
\belowdisplayskip \abovedisplayskip
\belowdisplayshortskip 3\p@ \@plus 2\p@ \@minus 2\p@
}
\renewcommand{\footnotesize}{\@setfontsize\footnotesize\@ixpt\@xpt}
\renewcommand{\scriptsize}{\@setfontsize\scriptsize\@viipt\@viiipt}
\renewcommand{\tiny}{\@setfontsize\tiny\@vipt\@viipt}
\renewcommand{\large}{\@setfontsize\large\@xiipt{14}}
\renewcommand{\Large}{\@setfontsize\Large\@xivpt{16}}
\renewcommand{\LARGE}{\@setfontsize\LARGE\@xviipt{20}}
\renewcommand{\huge}{\@setfontsize\huge\@xxpt{23}}
\renewcommand{\Huge}{\@setfontsize\Huge\@xxvpt{28}}
% sections with less space
\providecommand{\section}{}
\renewcommand{\section}{%
\@startsection{section}{1}{\z@}%
{-2.0ex \@plus -0.5ex \@minus -0.2ex}%
{ 1.5ex \@plus 0.3ex \@minus 0.2ex}%
{\large\bf\raggedright}%
}
\providecommand{\subsection}{}
\renewcommand{\subsection}{%
\@startsection{subsection}{2}{\z@}%
{-1.8ex \@plus -0.5ex \@minus -0.2ex}%
{ 0.8ex \@plus 0.2ex}%
{\normalsize\bf\raggedright}%
}
\providecommand{\subsubsection}{}
\renewcommand{\subsubsection}{%
\@startsection{subsubsection}{3}{\z@}%
{-1.5ex \@plus -0.5ex \@minus -0.2ex}%
{ 0.5ex \@plus 0.2ex}%
{\normalsize\bf\raggedright}%
}
\providecommand{\paragraph}{}
\renewcommand{\paragraph}{%
\@startsection{paragraph}{4}{\z@}%
{1.5ex \@plus 0.5ex \@minus 0.2ex}%
{-1em}%
{\normalsize\bf}%
}
\providecommand{\subparagraph}{}
\renewcommand{\subparagraph}{%
\@startsection{subparagraph}{5}{\z@}%
{1.5ex \@plus 0.5ex \@minus 0.2ex}%
{-1em}%
{\normalsize\bf}%
}
\providecommand{\subsubsubsection}{}
\renewcommand{\subsubsubsection}{%
\vskip5pt{\noindent\normalsize\rm\raggedright}%
}
% float placement
\renewcommand{\topfraction }{0.85}
\renewcommand{\bottomfraction }{0.4}
\renewcommand{\textfraction }{0.1}
\renewcommand{\floatpagefraction}{0.7}
\newlength{\@neuripsabovecaptionskip}\setlength{\@neuripsabovecaptionskip}{7\p@}
\newlength{\@neuripsbelowcaptionskip}\setlength{\@neuripsbelowcaptionskip}{\z@}
\setlength{\abovecaptionskip}{\@neuripsabovecaptionskip}
\setlength{\belowcaptionskip}{\@neuripsbelowcaptionskip}
% swap above/belowcaptionskip lengths for tables
\renewenvironment{table}
{\setlength{\abovecaptionskip}{\@neuripsbelowcaptionskip}%
\setlength{\belowcaptionskip}{\@neuripsabovecaptionskip}%
\@float{table}}
{\end@float}
% footnote formatting
\setlength{\footnotesep }{6.65\p@}
\setlength{\skip\footins}{9\p@ \@plus 4\p@ \@minus 2\p@}
\renewcommand{\footnoterule}{\kern-3\p@ \hrule width 12pc \kern 2.6\p@}
\setcounter{footnote}{0}
% paragraph formatting
\setlength{\parindent}{\z@}
\setlength{\parskip }{5.5\p@}
% list formatting
\setlength{\topsep }{4\p@ \@plus 1\p@ \@minus 2\p@}
\setlength{\partopsep }{1\p@ \@plus 0.5\p@ \@minus 0.5\p@}
\setlength{\itemsep }{2\p@ \@plus 1\p@ \@minus 0.5\p@}
\setlength{\parsep }{2\p@ \@plus 1\p@ \@minus 0.5\p@}
\setlength{\leftmargin }{3pc}
\setlength{\leftmargini }{\leftmargin}
\setlength{\leftmarginii }{2em}
\setlength{\leftmarginiii}{1.5em}
\setlength{\leftmarginiv }{1.0em}
\setlength{\leftmarginv }{0.5em}
\def\@listi {\leftmargin\leftmargini}
\def\@listii {\leftmargin\leftmarginii
\labelwidth\leftmarginii
\advance\labelwidth-\labelsep
\topsep 2\p@ \@plus 1\p@ \@minus 0.5\p@
\parsep 1\p@ \@plus 0.5\p@ \@minus 0.5\p@
\itemsep \parsep}
\def\@listiii{\leftmargin\leftmarginiii
\labelwidth\leftmarginiii
\advance\labelwidth-\labelsep
\topsep 1\p@ \@plus 0.5\p@ \@minus 0.5\p@
\parsep \z@
\partopsep 0.5\p@ \@plus 0\p@ \@minus 0.5\p@
\itemsep \topsep}
\def\@listiv {\leftmargin\leftmarginiv
\labelwidth\leftmarginiv
\advance\labelwidth-\labelsep}
\def\@listv {\leftmargin\leftmarginv
\labelwidth\leftmarginv
\advance\labelwidth-\labelsep}
\def\@listvi {\leftmargin\leftmarginvi
\labelwidth\leftmarginvi
\advance\labelwidth-\labelsep}
% create title
\providecommand{\maketitle}{}
\renewcommand{\maketitle}{%
\par
\begingroup
\renewcommand{\thefootnote}{\fnsymbol{footnote}}
% for perfect author name centering
\renewcommand{\@makefnmark}{\hbox to \z@{$^{\@thefnmark}$\hss}}
% The footnote-mark was overlapping the footnote-text,
% added the following to fix this problem (MK)
\long\def\@makefntext##1{%
\parindent 1em\noindent
\hbox to 1.8em{\hss $\m@th ^{\@thefnmark}$}##1
}
\thispagestyle{empty}
\@maketitle
\@thanks
\@notice
\endgroup
\let\maketitle\relax
\let\thanks\relax
}
% rules for title box at top of first page
\newcommand{\@toptitlebar}{
\hrule height 4\p@
\vskip 0.25in
\vskip -\parskip%
}
\newcommand{\@bottomtitlebar}{
\vskip 0.29in
\vskip -\parskip
\hrule height 1\p@
\vskip 0.09in%
}
% create title (includes both anonymized and non-anonymized versions)
\providecommand{\@maketitle}{}
\renewcommand{\@maketitle}{%
\vbox{%
\hsize\textwidth
\linewidth\hsize
\vskip 0.1in
\@toptitlebar
\centering
{\LARGE\bf \@title\par}
\@bottomtitlebar
\if@submission
\begin{tabular}[t]{c}\bf\rule{\z@}{24\p@}
Anonymous Author(s) \\
Affiliation \\
Address \\
\texttt{email} \\
\end{tabular}%
\else
\def\And{%
\end{tabular}\hfil\linebreak[0]\hfil%
\begin{tabular}[t]{c}\bf\rule{\z@}{24\p@}\ignorespaces%
}
\def\AND{%
\end{tabular}\hfil\linebreak[4]\hfil%
\begin{tabular}[t]{c}\bf\rule{\z@}{24\p@}\ignorespaces%
}
\begin{tabular}[t]{c}\bf\rule{\z@}{24\p@}\@author\end{tabular}%
\fi
\vskip 0.3in \@minus 0.1in
}
}
% add conference notice to bottom of first page
\newcommand{\ftype@noticebox}{8}
\newcommand{\@notice}{%
% give a bit of extra room back to authors on first page
\enlargethispage{2\baselineskip}%
\@float{noticebox}[b]%
\footnotesize\@noticestring%
\end@float%
}
% abstract styling
\renewenvironment{abstract}%
{%
\vskip 0.075in%
\centerline%
{\large\bf Abstract}%
\vspace{0.5ex}%
\begin{quote}%
}
{
\par%
\end{quote}%
\vskip 1ex%
}
% handle tweaks for camera-ready copy vs. submission copy
\if@preprint
\newcommand{\@noticestring}{%
Preprint. Under review.%
}
\else
\if@neuripsfinal
\newcommand{\@noticestring}{%
(\@neuripsyear) \@title
}
\else
\newcommand{\@noticestring}{%
(\@neuripsyear) \@title %
}
% hide the acknowledgements
\NewEnviron{hide}{}
\let\ack\hide
\let\endack\endhide
% line numbers for submission
\RequirePackage{lineno}
\linenumbers
% fix incompatibilities between lineno and amsmath, if required, by
% transparently wrapping linenomath environments around amsmath
% environments
\AtBeginDocument{%
\@ifpackageloaded{amsmath}{%
\newcommand*\patchAmsMathEnvironmentForLineno[1]{%
\expandafter\let\csname old#1\expandafter\endcsname\csname #1\endcsname
\expandafter\let\csname oldend#1\expandafter\endcsname\csname end#1\endcsname
\renewenvironment{#1}%
{\linenomath\csname old#1\endcsname}%
{\csname oldend#1\endcsname\endlinenomath}%
}%
\newcommand*\patchBothAmsMathEnvironmentsForLineno[1]{%
\patchAmsMathEnvironmentForLineno{#1}%
\patchAmsMathEnvironmentForLineno{#1*}%
}%
\patchBothAmsMathEnvironmentsForLineno{equation}%
\patchBothAmsMathEnvironmentsForLineno{align}%
\patchBothAmsMathEnvironmentsForLineno{flalign}%
\patchBothAmsMathEnvironmentsForLineno{alignat}%
\patchBothAmsMathEnvironmentsForLineno{gather}%
\patchBothAmsMathEnvironmentsForLineno{multline}%
}
{}
}
\fi
\fi
\endinput
% This template was tested with Pandoc 3.4 and pandoc-crossref v0.3.18.0. It should be backwards compatible with older version of pandoc..
\documentclass{article}
% if you need to pass options to natbib, use, e.g.:
% \PassOptionsToPackage{numbers, compress}{natbib}
% before loading neurips_2023
% ready for submission
\usepackage[final,nonatbib]{neurips}
% to compile a preprint version, e.g., for submission to arXiv, add add the
% [preprint] option:
% \usepackage[preprint]{neurips_2023}
% to compile a camera-ready version, add the [final] option, e.g.:
% \usepackage[final]{neurips_2023}
% to avoid loading the natbib package, add option nonatbib:
% \usepackage[nonatbib]{neurips_2023}
\usepackage[utf8]{inputenc} % allow utf-8 input
\usepackage[T1]{fontenc} % use 8-bit T1 fonts
\usepackage{hyperref} % hyperlinks
\usepackage{url} % simple URL typesetting
\usepackage{booktabs} % professional-quality tables
\usepackage{amsfonts} % blackboard math symbols
\usepackage{nicefrac} % compact symbols for 1/2, etc.
\usepackage{microtype} % microtypography
\usepackage{xcolor} % colors
\usepackage{graphicx}
\usepackage{longtable} % Add support for Pandoc's longtable if needed
\usepackage{array} % For table alignment improvements
\usepackage{amsmath}
\usepackage{textcomp}
\setlength{\LTcapwidth}{\textwidth} % To make captions fit within page width
\makeatletter
\newsavebox\pandoc@box
\newcommand*\pandocbounded[1]{% scales image to fit in text height/width
\sbox\pandoc@box{#1}%
\Gscale@div\@tempa{\textheight}{\dimexpr\ht\pandoc@box+\dp\pandoc@box\relax}%
\Gscale@div\@tempb{\linewidth}{\wd\pandoc@box}%
\ifdim\@tempb\p@<\@tempa\p@\let\@tempa\@tempb\fi% select the smaller of both
\ifdim\@tempa\p@<\p@\scalebox{\@tempa}{\usebox\pandoc@box}%
\else\usebox{\pandoc@box}%
\fi%
}
\makeatother
\makeatletter
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
\makeatother
% Scale images if necessary, so that they will not overflow the page
% margins by default, and it is still possible to overwrite the defaults
% using explicit options in \includegraphics[width, height, ...]{}
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
% Set default figure placement to htbp
\makeatletter
\def\fps@figure{htbp}
\makeatother
$if(csl-refs)$
% definitions for citeproc citations
\NewDocumentCommand\citeproctext{}{}
\NewDocumentCommand\citeproc{mm}{%
\begingroup\def\citeproctext{#2}\cite{#1}\endgroup}
\makeatletter
% allow citations to break across lines
\let\@cite@ofmt\@firstofone
% avoid brackets around text for \cite:
\def\@biblabel#1{}
\def\@cite#1#2{{#1\if@tempswa , #2\fi}}
\makeatother
\newlength{\cslhangindent}
\setlength{\cslhangindent}{1.5em}
\newlength{\csllabelwidth}
\setlength{\csllabelwidth}{3em}
\newenvironment{CSLReferences}[2] % #1 hanging-indent, #2 entry-spacing
{\begin{list}{}{%
\setlength{\itemindent}{0pt}
\setlength{\leftmargin}{0pt}
\setlength{\parsep}{0pt}
% turn on hanging indent if param 1 is 1
\ifodd #1
\setlength{\leftmargin}{\cslhangindent}
\setlength{\itemindent}{-1\cslhangindent}
\fi
% set entry spacing
\setlength{\itemsep}{#2\baselineskip}}}
{\end{list}}
\usepackage{calc}
\newcommand{\CSLBlock}[1]{\hfill\break\parbox[t]{\linewidth}{\strut\ignorespaces#1\strut}}
\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{\strut#1\strut}}
\newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{\strut#1\strut}}
\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1}
$endif$
\providecommand{\tightlist}{%
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\title{$title$}
% Iterate through the authors except last to add \And.
\author{%
$for(authors/allbutlast)$
$authors.name$\\$authors.affiliation$\\$authors.institution$\\$authors.email$\\$authors.address$ \And
$endfor$
$for(authors/last)$
$authors.name$\\$authors.affiliation$\\$authors.institution$\\$authors.email$\\$authors.address$
$endfor$
}
% \author{%
% David S.~Hippocampus \\
% Department of Computer Science\\
% Cranberry-Lemon University\\
% Pittsburgh, PA 15213 \\
% \texttt{hippo@cs.cranberry-lemon.edu} \\
% % examples of more authors
% % \And
% % Coauthor \\
% % Affiliation \\
% % Address \\
% % \texttt{email} \\
% % \AND
% % Coauthor \\
% % Affiliation \\
% % Address \\
% % \texttt{email} \\
% % \And
% % Coauthor \\
% % Affiliation \\
% % Address \\
% % \texttt{email} \\
% % \And
% % Coauthor \\
% % Affiliation \\
% % Address \\
% % \texttt{email} \\
% }
\begin{document}
\maketitle
\begin{abstract}
$if(abstract)$
$abstract$
$else$
Add your abstract at the beginning of your markdown file like this
\begin{verbatim}
---
title: "Your Title"
abstract: "your abstract here"
authors:
- name: Leonardo V. Castorina
affiliation: School of Informatics
institution: University of Edinburgh
email: justanemail@domain.ext
address: Edinburgh
- name: Coauthor
affiliation: Affiliation
institution: Institution
email: coauthor@example.com
address: Address
---
\end{verbatim}
This is called YAML frontmatter. If you set your abstract correctly you should not see this message.
$endif$
\end{abstract}
$body$
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\end{document}
{
"copyLinkToElemenetAnchorTo100": false,
"copyFrameLinkByName": false,
"disableDoubleClickTextEditing": false,
"folder": "Excalidraw",
"cropFolder": "",
"annotateFolder": "",
"embedUseExcalidrawFolder": false,
"templateFilePath": "Excalidraw/Template.excalidraw",
"scriptFolderPath": "Excalidraw/Scripts",
"fontAssetsPath": "Excalidraw/CJK Fonts",
"loadChineseFonts": false,
"loadJapaneseFonts": false,
"loadKoreanFonts": false,
"compress": true,
"decompressForMDView": false,
"onceOffCompressFlagReset": true,
"onceOffGPTVersionReset": true,
"autosave": true,
"autosaveIntervalDesktop": 60000,
"autosaveIntervalMobile": 30000,
"drawingFilenamePrefix": "Drawing ",
"drawingEmbedPrefixWithFilename": true,
"drawingFilnameEmbedPostfix": " ",
"drawingFilenameDateTime": "YYYY-MM-DD HH.mm.ss",
"useExcalidrawExtension": true,
"cropSuffix": "",
"cropPrefix": "cropped_",
"annotateSuffix": "",
"annotatePrefix": "annotated_",
"annotatePreserveSize": false,
"previewImageType": "SVGIMG",
"renderingConcurrency": 3,
"allowImageCache": true,
"allowImageCacheInScene": true,
"displayExportedImageIfAvailable": false,
"previewMatchObsidianTheme": false,
"width": "400",
"height": "",
"overrideObsidianFontSize": false,
"dynamicStyling": "colorful",
"isLeftHanded": false,
"desktopUIMode": "tray",
"tabletUIMode": "compact",
"phoneUIMode": "mobile",
"iframeMatchExcalidrawTheme": true,
"matchTheme": false,
"matchThemeAlways": false,
"matchThemeTrigger": false,
"defaultMode": "normal",
"defaultPenMode": "never",
"penModeDoubleTapEraser": true,
"penModeSingleFingerPanning": true,
"penModeCrosshairVisible": true,
"panWithRightMouseButton": false,
"renderImageInMarkdownReadingMode": false,
"renderImageInHoverPreviewForMDNotes": false,
"renderImageInMarkdownToPDF": false,
"allowPinchZoom": false,
"allowWheelZoom": false,
"zoomToFitOnOpen": true,
"zoomToFitOnResize": false,
"zoomToFitMaxLevel": 2,
"zoomStep": 0.05,
"zoomMin": 0.1,
"zoomMax": 30,
"linkPrefix": "📍",
"urlPrefix": "🌐",
"parseTODO": false,
"todo": "☐",
"done": "🗹",
"hoverPreviewWithoutCTRL": false,
"linkOpacity": 1,
"openInAdjacentPane": true,
"showSecondOrderLinks": true,
"focusOnFileTab": true,
"openInMainWorkspace": true,
"showLinkBrackets": false,
"syncElementLinkWithText": false,
"allowCtrlClick": true,
"forceWrap": false,
"pageTransclusionCharLimit": 200,
"wordWrappingDefault": 0,
"removeTransclusionQuoteSigns": true,
"iframelyAllowed": true,
"pngExportScale": 1,
"exportWithTheme": true,
"exportWithBackground": true,
"exportPaddingSVG": 10,
"exportEmbedScene": false,
"keepInSync": false,
"autoexportSVG": false,
"autoexportPNG": false,
"autoExportLightAndDark": false,
"autoexportExcalidraw": false,
"embedType": "excalidraw",
"embedMarkdownCommentLinks": true,
"embedWikiLink": true,
"syncExcalidraw": false,
"experimentalFileType": false,
"experimentalFileTag": "✏️",
"experimentalLivePreview": true,
"fadeOutExcalidrawMarkup": false,
"loadPropertySuggestions": false,
"experimentalEnableFourthFont": false,
"experimantalFourthFont": "Virgil",
"addDummyTextElement": false,
"zoteroCompatibility": false,
"fieldSuggester": true,
"compatibilityMode": false,
"drawingOpenCount": 0,
"library": "deprecated",
"library2": {
"type": "excalidrawlib",
"version": 2,
"source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.21.0",
"libraryItems": []
},
"imageElementNotice": true,
"mdSVGwidth": 500,
"mdSVGmaxHeight": 800,
"mdFont": "Virgil",
"mdFontColor": "Black",
"mdBorderColor": "Black",
"mdCSS": "",
"scriptEngineSettings": {},
"previousRelease": "2.21.0",
"showReleaseNotes": true,
"compareManifestToPluginVersion": true,
"showNewVersionNotification": true,
"latexBoilerplate": "\\color{blue}",
"latexPreambleLocation": "preamble.sty",
"taskboneEnabled": false,
"taskboneAPIkey": "",
"pinnedScripts": [],
"sidepanelTabs": [],
"customPens": [
{
"type": "default",
"freedrawOnly": false,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"fillStyle": "hachure",
"strokeWidth": 0,
"roughness": 0,
"penOptions": {
"highlighter": false,
"constantPressure": false,
"hasOutline": false,
"outlineWidth": 1,
"options": {
"thinning": 0.6,
"smoothing": 0.5,
"streamline": 0.5,
"easing": "easeOutSine",
"start": {
"cap": true,
"taper": 0,
"easing": "linear"
},
"end": {
"cap": true,
"taper": 0,
"easing": "linear"
}
}
}
},
{
"type": "highlighter",
"freedrawOnly": true,
"strokeColor": "#FFC47C",
"backgroundColor": "#FFC47C",
"fillStyle": "solid",
"strokeWidth": 2,
"roughness": null,
"penOptions": {
"highlighter": true,
"constantPressure": true,
"hasOutline": true,
"outlineWidth": 4,
"options": {
"thinning": 1,
"smoothing": 0.5,
"streamline": 0.5,
"easing": "linear",
"start": {
"taper": 0,
"cap": true,
"easing": "linear"
},
"end": {
"taper": 0,
"cap": true,
"easing": "linear"
}
}
}
},
{
"type": "finetip",
"freedrawOnly": false,
"strokeColor": "#3E6F8D",
"backgroundColor": "transparent",
"fillStyle": "hachure",
"strokeWidth": 0.5,
"roughness": 0,
"penOptions": {
"highlighter": false,
"hasOutline": false,
"outlineWidth": 1,
"constantPressure": true,
"options": {
"smoothing": 0.4,
"thinning": -0.5,
"streamline": 0.4,
"easing": "linear",
"start": {
"taper": 5,
"cap": false,
"easing": "linear"
},
"end": {
"taper": 5,
"cap": false,
"easing": "linear"
}
}
}
},
{
"type": "fountain",
"freedrawOnly": false,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"fillStyle": "hachure",
"strokeWidth": 2,
"roughness": 0,
"penOptions": {
"highlighter": false,
"constantPressure": false,
"hasOutline": false,
"outlineWidth": 1,
"options": {
"smoothing": 0.2,
"thinning": 0.6,
"streamline": 0.2,
"easing": "easeInOutSine",
"start": {
"taper": 150,
"cap": true,
"easing": "linear"
},
"end": {
"taper": 1,
"cap": true,
"easing": "linear"
}
}
}
},
{
"type": "marker",
"freedrawOnly": true,
"strokeColor": "#B83E3E",
"backgroundColor": "#FF7C7C",
"fillStyle": "dashed",
"strokeWidth": 2,
"roughness": 3,
"penOptions": {
"highlighter": false,
"constantPressure": true,
"hasOutline": true,
"outlineWidth": 4,
"options": {
"thinning": 1,
"smoothing": 0.5,
"streamline": 0.5,
"easing": "linear",
"start": {
"taper": 0,
"cap": true,
"easing": "linear"
},
"end": {
"taper": 0,
"cap": true,
"easing": "linear"
}
}
}
},
{
"type": "thick-thin",
"freedrawOnly": true,
"strokeColor": "#CECDCC",
"backgroundColor": "transparent",
"fillStyle": "hachure",
"strokeWidth": 0,
"roughness": null,
"penOptions": {
"highlighter": true,
"constantPressure": true,
"hasOutline": false,
"outlineWidth": 1,
"options": {
"thinning": 1,
"smoothing": 0.5,
"streamline": 0.5,
"easing": "linear",
"start": {
"taper": 0,
"cap": true,
"easing": "linear"
},
"end": {
"cap": true,
"taper": true,
"easing": "linear"
}
}
}
},
{
"type": "thin-thick-thin",
"freedrawOnly": true,
"strokeColor": "#CECDCC",
"backgroundColor": "transparent",
"fillStyle": "hachure",
"strokeWidth": 0,
"roughness": null,
"penOptions": {
"highlighter": true,
"constantPressure": true,
"hasOutline": false,
"outlineWidth": 1,
"options": {
"thinning": 1,
"smoothing": 0.5,
"streamline": 0.5,
"easing": "linear",
"start": {
"cap": true,
"taper": true,
"easing": "linear"
},
"end": {
"cap": true,
"taper": true,
"easing": "linear"
}
}
}
},
{
"type": "default",
"freedrawOnly": false,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"fillStyle": "hachure",
"strokeWidth": 0,
"roughness": 0,
"penOptions": {
"highlighter": false,
"constantPressure": false,
"hasOutline": false,
"outlineWidth": 1,
"options": {
"thinning": 0.6,
"smoothing": 0.5,
"streamline": 0.5,
"easing": "easeOutSine",
"start": {
"cap": true,
"taper": 0,
"easing": "linear"
},
"end": {
"cap": true,
"taper": 0,
"easing": "linear"
}
}
}
},
{
"type": "default",
"freedrawOnly": false,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"fillStyle": "hachure",
"strokeWidth": 0,
"roughness": 0,
"penOptions": {
"highlighter": false,
"constantPressure": false,
"hasOutline": false,
"outlineWidth": 1,
"options": {
"thinning": 0.6,
"smoothing": 0.5,
"streamline": 0.5,
"easing": "easeOutSine",
"start": {
"cap": true,
"taper": 0,
"easing": "linear"
},
"end": {
"cap": true,
"taper": 0,
"easing": "linear"
}
}
}
},
{
"type": "default",
"freedrawOnly": false,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"fillStyle": "hachure",
"strokeWidth": 0,
"roughness": 0,
"penOptions": {
"highlighter": false,
"constantPressure": false,
"hasOutline": false,
"outlineWidth": 1,
"options": {
"thinning": 0.6,
"smoothing": 0.5,
"streamline": 0.5,
"easing": "easeOutSine",
"start": {
"cap": true,
"taper": 0,
"easing": "linear"
},
"end": {
"cap": true,
"taper": 0,
"easing": "linear"
}
}
}
}
],
"numberOfCustomPens": 0,
"pdfScale": 4,
"pdfBorderBox": true,
"pdfFrame": false,
"pdfGapSize": 20,
"pdfGroupPages": false,
"pdfLockAfterImport": true,
"pdfNumColumns": 1,
"pdfNumRows": 1,
"pdfDirection": "right",
"pdfImportScale": 0.3,
"gridSettings": {
"DYNAMIC_COLOR": true,
"COLOR": "#000000",
"OPACITY": 50,
"GRID_DIRECTION": {
"horizontal": true,
"vertical": true
}
},
"laserSettings": {
"DECAY_LENGTH": 50,
"DECAY_TIME": 1000,
"COLOR": "#ff0000"
},
"embeddableMarkdownDefaults": {
"useObsidianDefaults": false,
"backgroundMatchCanvas": false,
"backgroundMatchElement": true,
"backgroundColor": "#fff",
"backgroundOpacity": 60,
"borderMatchElement": true,
"borderColor": "#fff",
"borderOpacity": 0,
"filenameVisible": false
},
"markdownNodeOneClickEditing": false,
"canvasImmersiveEmbed": true,
"startupScriptPath": "",
"aiEnabled": true,
"openAIAPIToken": "",
"openAIDefaultTextModel": "gpt-5-mini",
"openAIDefaultTextModelMaxTokens": 4096,
"openAIDefaultVisionModel": "gpt-5-mini",
"openAIDefaultImageGenerationModel": "gpt-image-1",
"openAIURL": "https://api.openai.com/v1/chat/completions",
"openAIImageGenerationURL": "https://api.openai.com/v1/images/generations",
"openAIImageEditsURL": "https://api.openai.com/v1/images/edits",
"openAIImageVariationURL": "https://api.openai.com/v1/images/variations",
"modifierKeyConfig": {
"Mac": {
"LocalFileDragAction": {
"defaultAction": "image-import",
"rules": [
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image-import"
},
{
"shift": true,
"ctrl_cmd": false,
"alt_opt": true,
"meta_ctrl": false,
"result": "link"
},
{
"shift": true,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image-url"
},
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": true,
"meta_ctrl": false,
"result": "embeddable"
}
]
},
"WebBrowserDragAction": {
"defaultAction": "image-url",
"rules": [
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image-url"
},
{
"shift": true,
"ctrl_cmd": false,
"alt_opt": true,
"meta_ctrl": false,
"result": "link"
},
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": true,
"meta_ctrl": false,
"result": "embeddable"
},
{
"shift": true,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image-import"
}
]
},
"InternalDragAction": {
"defaultAction": "link",
"rules": [
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "link"
},
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": true,
"result": "embeddable"
},
{
"shift": true,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image"
},
{
"shift": true,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": true,
"result": "image-fullsize"
}
]
},
"LinkClickAction": {
"defaultAction": "new-tab",
"rules": [
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "active-pane"
},
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": false,
"result": "new-tab"
},
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": true,
"meta_ctrl": false,
"result": "new-pane"
},
{
"shift": true,
"ctrl_cmd": true,
"alt_opt": true,
"meta_ctrl": false,
"result": "popout-window"
},
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": true,
"result": "md-properties"
}
]
}
},
"Win": {
"LocalFileDragAction": {
"defaultAction": "image-import",
"rules": [
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image-import"
},
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": false,
"result": "link"
},
{
"shift": true,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image-url"
},
{
"shift": true,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": false,
"result": "embeddable"
}
]
},
"WebBrowserDragAction": {
"defaultAction": "image-url",
"rules": [
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image-url"
},
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": false,
"result": "link"
},
{
"shift": true,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": false,
"result": "embeddable"
},
{
"shift": true,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image-import"
}
]
},
"InternalDragAction": {
"defaultAction": "link",
"rules": [
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "link"
},
{
"shift": true,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": false,
"result": "embeddable"
},
{
"shift": true,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image"
},
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": true,
"meta_ctrl": false,
"result": "image-fullsize"
}
]
},
"LinkClickAction": {
"defaultAction": "new-tab",
"rules": [
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "active-pane"
},
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": false,
"result": "new-tab"
},
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": true,
"meta_ctrl": false,
"result": "new-pane"
},
{
"shift": true,
"ctrl_cmd": true,
"alt_opt": true,
"meta_ctrl": false,
"result": "popout-window"
},
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": true,
"result": "md-properties"
}
]
}
}
},
"slidingPanesSupport": false,
"areaZoomLimit": 1,
"longPressDesktop": 500,
"longPressMobile": 500,
"doubleClickLinkOpenViewMode": true,
"isDebugMode": false,
"rank": "Bronze",
"modifierKeyOverrides": [
{
"modifiers": [
"Mod"
],
"key": "Enter"
},
{
"modifiers": [
"Mod"
],
"key": "k"
},
{
"modifiers": [
"Mod"
],
"key": "G"
}
],
"showSplashscreen": true,
"pdfSettings": {
"pageSize": "A4",
"pageOrientation": "portrait",
"fitToPage": 1,
"paperColor": "white",
"customPaperColor": "#ffffff",
"alignment": "center",
"margin": "normal"
},
"disableContextMenu": false
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"id": "obsidian-excalidraw-plugin",
"name": "Excalidraw",
"version": "2.21.0",
"minAppVersion": "1.5.7",
"description": "Sketch Your Mind. An Obsidian plugin to edit and view Excalidraw drawings. Enter the world of 4D Visual PKM.",
"author": "Zsolt Viczian",
"authorUrl": "https://excalidraw-obsidian.online",
"fundingUrl": "https://ko-fi.com/zsolt",
"helpUrl": "https://github.com/zsviczian/obsidian-excalidraw-plugin#readme",
"isDesktopOnly": false
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"commitMessage": "vault backup: {{date}}",
"autoCommitMessage": "vault backup: {{date}}",
"commitMessageScript": "",
"commitDateFormat": "YYYY-MM-DD HH:mm:ss",
"autoSaveInterval": 0,
"autoPushInterval": 0,
"autoPullInterval": 0,
"autoPullOnBoot": false,
"autoCommitOnlyStaged": false,
"disablePush": false,
"pullBeforePush": true,
"disablePopups": false,
"showErrorNotices": true,
"disablePopupsForNoChanges": false,
"listChangedFilesInMessageBody": false,
"showStatusBar": true,
"updateSubmodules": false,
"syncMethod": "merge",
"mergeStrategy": "none",
"customMessageOnAutoBackup": false,
"autoBackupAfterFileChange": false,
"treeStructure": false,
"refreshSourceControl": true,
"basePath": "",
"differentIntervalCommitAndPush": false,
"changedFilesInStatusBar": false,
"showedMobileNotice": true,
"refreshSourceControlTimer": 7000,
"showBranchStatusBar": true,
"setLastSaveToLastCommit": false,
"submoduleRecurseCheckout": false,
"gitDir": "https://github.com/TYKMASHIRO/obsidian-X-BionicRobots.git",
"showFileMenu": true,
"authorInHistoryView": "hide",
"dateInHistoryView": true,
"diffStyle": "split",
"hunks": {
"showSigns": false,
"hunkCommands": false,
"statusBar": "disabled"
},
"lineAuthor": {
"show": false,
"followMovement": "inactive",
"authorDisplay": "initials",
"showCommitHash": false,
"dateTimeFormatOptions": "date",
"dateTimeFormatCustomString": "YYYY-MM-DD HH:mm",
"dateTimeTimezone": "viewer-local",
"coloringMaxAge": "1y",
"colorNew": {
"r": 255,
"g": 150,
"b": 150
},
"colorOld": {
"r": 120,
"g": 160,
"b": 255
},
"textColorCss": "var(--text-muted)",
"ignoreWhitespace": false,
"gutterSpacingFallbackLength": 5,
"lastShownAuthorDisplay": "initials",
"lastShownDateTimeFormatOptions": "date"
}
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"author": "Vinzent",
"authorUrl": "https://github.com/Vinzent03",
"id": "obsidian-git",
"name": "Git",
"description": "Integrate Git version control with automatic backup and other advanced features.",
"isDesktopOnly": false,
"fundingUrl": "https://ko-fi.com/vinzent",
"version": "2.38.2"
}
#!/bin/sh
PROMPT="$1"
TEMP_FILE="$OBSIDIAN_GIT_CREDENTIALS_INPUT"
cleanup() {
rm -f "$TEMP_FILE" "$TEMP_FILE.response"
}
trap cleanup EXIT
echo "$PROMPT" > "$TEMP_FILE"
while [ ! -e "$TEMP_FILE.response" ]; do
if [ ! -e "$TEMP_FILE" ]; then
echo "Trigger file got removed: Abort" >&2
exit 1
fi
sleep 0.1
done
RESPONSE=$(cat "$TEMP_FILE.response")
echo "$RESPONSE"
@keyframes loading {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
.git-signs-gutter {
.cm-gutterElement {
/* Needed to align the sign properly for different line heigts. Such as
* when having a heading or list item.
*/
padding-top: 0 !important;
}
}
.workspace-leaf-content[data-type="git-view"] .button-border {
border: 2px solid var(--interactive-accent);
border-radius: var(--radius-s);
}
.workspace-leaf-content[data-type="git-view"] .view-content {
padding-left: 0;
padding-top: 0;
padding-right: 0;
}
.workspace-leaf-content[data-type="git-history-view"] .view-content {
padding-left: 0;
padding-top: 0;
padding-right: 0;
}
.loading {
overflow: hidden;
}
.loading > svg {
animation: 2s linear infinite loading;
transform-origin: 50% 50%;
display: inline-block;
}
.obsidian-git-center {
margin: auto;
text-align: center;
width: 50%;
}
.obsidian-git-textarea {
display: block;
margin-left: auto;
margin-right: auto;
}
.obsidian-git-disabled {
opacity: 0.5;
}
.obsidian-git-center-button {
display: block;
margin: 20px auto;
}
.tooltip.mod-left {
overflow-wrap: break-word;
}
.tooltip.mod-right {
overflow-wrap: break-word;
}
/* Limits the scrollbar to the view body */
.git-view {
display: flex;
flex-direction: column;
position: relative;
height: 100%;
}
/* Re-enable wrapping of nav buttns to prevent overflow on smaller screens #*/
.workspace-drawer .git-view .nav-buttons-container {
flex-wrap: wrap;
}
.git-tools {
display: flex;
margin-left: auto;
}
.git-tools .type {
padding-left: var(--size-2-1);
display: flex;
align-items: center;
justify-content: center;
width: 11px;
}
.git-tools .type[data-type="M"] {
color: orange;
}
.git-tools .type[data-type="D"] {
color: red;
}
.git-tools .buttons {
display: flex;
}
.git-tools .buttons > * {
padding: 0 0;
height: auto;
}
.workspace-leaf-content[data-type="git-view"] .tree-item-self,
.workspace-leaf-content[data-type="git-history-view"] .tree-item-self {
align-items: center;
}
.workspace-leaf-content[data-type="git-view"]
.tree-item-self:hover
.clickable-icon,
.workspace-leaf-content[data-type="git-history-view"]
.tree-item-self:hover
.clickable-icon {
color: var(--icon-color-hover);
}
/* Highlight an item as active if it's diff is currently opened */
.is-active .git-tools .buttons > * {
color: var(--nav-item-color-active);
}
.git-author {
color: var(--text-accent);
}
.git-date {
color: var(--text-accent);
}
.git-ref {
color: var(--text-accent);
}
/* ====== diff2html ======
The following styles are adapted from the obsidian-version-history plugin by
@kometenstaub https://github.com/kometenstaub/obsidian-version-history-diff/blob/main/src/styles.scss
which itself is adapted from the diff2html library with the following original license:
https://github.com/rtfpessoa/diff2html/blob/master/LICENSE.md
Copyright 2014-2016 Rodrigo Fernandes https://rtfpessoa.github.io/
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit
persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
.theme-dark,
.theme-light {
--git-delete-bg: #ff475040;
--git-delete-hl: #96050a75;
--git-insert-bg: #68d36840;
--git-insert-hl: #23c02350;
--git-change-bg: #ffd55840;
--git-selected: #3572b0;
--git-delete: #c33;
--git-insert: #399839;
--git-change: #d0b44c;
--git-move: #3572b0;
}
.git-diff {
.d2h-d-none {
display: none;
}
.d2h-wrapper {
text-align: left;
border-radius: 0.25em;
overflow: auto;
}
.d2h-file-header.d2h-file-header {
background-color: var(--background-secondary);
border-bottom: 1px solid var(--background-modifier-border);
font-family:
Source Sans Pro,
Helvetica Neue,
Helvetica,
Arial,
sans-serif;
height: 35px;
padding: 5px 10px;
}
.d2h-file-header,
.d2h-file-stats {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
}
.d2h-file-header {
display: none;
}
.d2h-file-stats {
font-size: 14px;
margin-left: auto;
}
.d2h-lines-added {
border: 1px solid var(--color-green);
border-radius: 5px 0 0 5px;
color: var(--color-green);
padding: 2px;
text-align: right;
vertical-align: middle;
}
.d2h-lines-deleted {
border: 1px solid var(--color-red);
border-radius: 0 5px 5px 0;
color: var(--color-red);
margin-left: 1px;
padding: 2px;
text-align: left;
vertical-align: middle;
}
.d2h-file-name-wrapper {
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
font-size: 15px;
width: 100%;
}
.d2h-file-name {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
color: var(--text-normal);
font-size: var(--h5-size);
}
.d2h-file-wrapper {
border: 1px solid var(--background-secondary-alt);
border-radius: 3px;
margin-bottom: 1em;
max-height: 100%;
}
.d2h-file-collapse {
-webkit-box-pack: end;
-ms-flex-pack: end;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
border: 1px solid var(--background-secondary-alt);
border-radius: 3px;
cursor: pointer;
display: none;
font-size: 12px;
justify-content: flex-end;
padding: 4px 8px;
}
.d2h-file-collapse.d2h-selected {
background-color: var(--git-selected);
}
.d2h-file-collapse-input {
margin: 0 4px 0 0;
}
.d2h-diff-table {
border-collapse: collapse;
font-family: var(--font-monospace);
font-size: var(--code-size);
width: 100%;
}
.d2h-files-diff {
width: 100%;
}
.d2h-file-diff {
/*
overflow-y: scroll;
*/
border-radius: 5px;
font-size: var(--font-text-size);
line-height: var(--line-height-normal);
}
.d2h-file-side-diff {
display: inline-block;
margin-bottom: -8px;
margin-right: -4px;
overflow-x: scroll;
overflow-y: hidden;
width: 50%;
}
.d2h-code-line {
padding-left: 6em;
padding-right: 1.5em;
}
.d2h-code-line,
.d2h-code-side-line {
display: inline-block;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
white-space: nowrap;
width: 100%;
}
.d2h-code-side-line {
/* needed to be changed */
padding-left: 0.5em;
padding-right: 0.5em;
}
.d2h-code-line-ctn {
word-wrap: normal;
background: none;
display: inline-block;
padding: 0;
-webkit-user-select: text;
-moz-user-select: text;
-ms-user-select: text;
user-select: text;
vertical-align: middle;
width: 100%;
/* only works for line-by-line */
white-space: pre-wrap;
}
.d2h-code-line del,
.d2h-code-side-line del {
background-color: var(--git-delete-hl);
color: var(--text-normal);
}
.d2h-code-line del,
.d2h-code-line ins,
.d2h-code-side-line del,
.d2h-code-side-line ins {
border-radius: 0.2em;
display: inline-block;
margin-top: -1px;
text-decoration: none;
vertical-align: middle;
}
.d2h-code-line ins,
.d2h-code-side-line ins {
background-color: var(--git-insert-hl);
text-align: left;
}
.d2h-code-line-prefix {
word-wrap: normal;
background: none;
display: inline;
padding: 0;
white-space: pre;
}
.line-num1 {
float: left;
}
.line-num1,
.line-num2 {
-webkit-box-sizing: border-box;
box-sizing: border-box;
overflow: hidden;
/*
padding: 0 0.5em;
*/
text-overflow: ellipsis;
width: 2.5em;
padding-left: 0;
}
.line-num2 {
float: right;
}
.d2h-code-linenumber {
background-color: var(--background-primary);
border: solid var(--background-modifier-border);
border-width: 0 1px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: var(--text-faint);
cursor: pointer;
display: inline-block;
position: absolute;
text-align: right;
width: 5.5em;
}
.d2h-code-linenumber:after {
content: "\200b";
}
.d2h-code-side-linenumber {
background-color: var(--background-primary);
border: solid var(--background-modifier-border);
border-width: 0 1px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: var(--text-faint);
cursor: pointer;
overflow: hidden;
padding: 0 0.5em;
text-align: right;
text-overflow: ellipsis;
width: 4em;
/* needed to be changed */
display: table-cell;
position: relative;
}
.d2h-code-side-linenumber:after {
content: "\200b";
}
.d2h-code-side-emptyplaceholder,
.d2h-emptyplaceholder {
background-color: var(--background-primary);
border-color: var(--background-modifier-border);
}
.d2h-code-line-prefix,
.d2h-code-linenumber,
.d2h-code-side-linenumber,
.d2h-emptyplaceholder {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.d2h-code-linenumber,
.d2h-code-side-linenumber {
direction: rtl;
}
.d2h-del {
background-color: var(--git-delete-bg);
border-color: var(--git-delete-hl);
}
.d2h-ins {
background-color: var(--git-insert-bg);
border-color: var(--git-insert-hl);
}
.d2h-info {
background-color: var(--background-primary);
border-color: var(--background-modifier-border);
color: var(--text-faint);
}
.d2h-del,
.d2h-ins,
.d2h-file-diff .d2h-change {
color: var(--text-normal);
}
.d2h-file-diff .d2h-del.d2h-change {
background-color: var(--git-change-bg);
}
.d2h-file-diff .d2h-ins.d2h-change {
background-color: var(--git-insert-bg);
}
.d2h-file-list-wrapper {
a {
text-decoration: none;
cursor: default;
-webkit-user-drag: none;
}
svg {
display: none;
}
}
.d2h-file-list-header {
text-align: left;
}
.d2h-file-list-title {
display: none;
}
.d2h-file-list-line {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
text-align: left;
}
.d2h-file-list {
}
.d2h-file-list > li {
border-bottom: 1px solid var(--background-modifier-border);
margin: 0;
padding: 5px 10px;
}
.d2h-file-list > li:last-child {
border-bottom: none;
}
.d2h-file-switch {
cursor: pointer;
display: none;
font-size: 10px;
}
.d2h-icon {
fill: currentColor;
margin-right: 10px;
vertical-align: middle;
}
.d2h-deleted {
color: var(--git-delete);
}
.d2h-added {
color: var(--git-insert);
}
.d2h-changed {
color: var(--git-change);
}
.d2h-moved {
color: var(--git-move);
}
.d2h-tag {
background-color: var(--background-secondary);
display: -webkit-box;
display: -ms-flexbox;
display: flex;
font-size: 10px;
margin-left: 5px;
padding: 0 2px;
}
.d2h-deleted-tag {
border: 1px solid var(--git-delete);
}
.d2h-added-tag {
border: 1px solid var(--git-insert);
}
.d2h-changed-tag {
border: 1px solid var(--git-change);
}
.d2h-moved-tag {
border: 1px solid var(--git-move);
}
/* needed for line-by-line*/
.d2h-diff-tbody {
position: relative;
}
}
/* ====================== Line Authoring Information ====================== */
.cm-gutterElement.obs-git-blame-gutter {
/* Add background color to spacing inbetween and around the gutter for better aesthetics */
border-width: 0px 2px 0.2px 2px;
border-style: solid;
border-color: var(--background-secondary);
background-color: var(--background-secondary);
}
.cm-gutterElement.obs-git-blame-gutter > div,
.line-author-settings-preview {
/* delegate text color to settings */
color: var(--obs-git-gutter-text);
font-family: monospace;
height: 100%; /* ensure, that age-based background color occupies entire parent */
text-align: right;
padding: 0px 6px 0px 6px;
white-space: pre; /* Keep spaces and do not collapse them. */
}
@media (max-width: 800px) {
/* hide git blame gutter not to superpose text */
.cm-gutterElement.obs-git-blame-gutter {
display: none;
}
}
.git-unified-diff-view,
.git-split-diff-view .cm-deletedLine .cm-changedText {
background-color: #ee443330;
}
.git-unified-diff-view,
.git-split-diff-view .cm-insertedLine .cm-changedText {
background-color: #22bb2230;
}
.git-obscure-prompt[git-is-obscured="true"] #git-show-password:after {
-webkit-mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-eye"><path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"></path><circle cx="12" cy="12" r="3"></circle></svg>');
}
.git-obscure-prompt[git-is-obscured="false"] #git-show-password:after {
-webkit-mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-eye-off"><path d="M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49"></path><path d="M14.084 14.158a3 3 0 0 1-4.242-4.242"></path><path d="M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143"></path><path d="m2 2 20 20"></path></svg>');
}
/* Override styling of Codemirror merge view "collapsed lines" indicator */
.git-split-diff-view .ͼ2 .cm-collapsedLines {
background: var(--interactive-normal);
border-radius: var(--radius-m);
color: var(--text-accent);
font-size: var(--font-small);
padding: var(--size-4-1) var(--size-4-1);
}
.git-split-diff-view .ͼ2 .cm-collapsedLines:hover {
background: var(--interactive-hover);
color: var(--text-accent-hover);
}
.git-signs-gutter {
.cm-gutterElement {
display: grid;
}
}
.git-gutter-marker:hover {
border-radius: 2px;
}
.git-gutter-marker.git-add {
background-color: var(--color-green);
justify-self: center;
height: inherit;
width: 0.2rem;
}
.git-gutter-marker.git-change {
background-color: var(--color-yellow);
justify-self: center;
height: inherit;
width: 0.2rem;
}
.git-gutter-marker.git-changedelete {
color: var(--color-yellow);
font-weight: var(--font-bold);
font-size: 1rem;
justify-self: center;
height: inherit;
}
.git-gutter-marker.git-delete {
background-color: var(--color-red);
height: 0.2rem;
width: 0.8rem;
align-self: end;
}
.git-gutter-marker.git-topdelete {
background-color: var(--color-red);
height: 0.2rem;
width: 0.8rem;
align-self: start;
}
div:hover > .git-gutter-marker.git-change {
width: 0.6rem;
}
div:hover > .git-gutter-marker.git-add {
width: 0.6rem;
}
div:hover > .git-gutter-marker.git-delete {
height: 0.6rem;
}
div:hover > .git-gutter-marker.git-topdelete {
height: 0.6rem;
}
div:hover > .git-gutter-marker.git-changedelete {
font-weight: var(--font-bold);
}
.git-gutter-marker.staged {
opacity: 0.5;
}
.git-diff {
.cm-merge-revert {
width: 4em;
}
/* Ensure that merge revert markers are positioned correctly */
.cm-merge-revert > * {
position: absolute;
background-color: var(--background-secondary);
display: flex;
}
}
/* Prevent shifting of the editor when git signs gutter is the only gutter present */
.cm-gutters.cm-gutters-before:has(> .git-signs-gutter:only-child) {
margin-inline-end: 0;
.git-signs-gutter {
margin-inline-start: -1rem;
}
}
.git-changes-status-bar-colored {
.git-add {
color: var(--color-green);
}
.git-change {
color: var(--color-yellow);
}
.git-delete {
color: var(--color-red);
}
}
.git-changes-status-bar .git-add {
margin-right: 0.3em;
}
.git-changes-status-bar .git-change {
margin-right: 0.3em;
}
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"id": "obsidian-pandoc",
"name": "Pandoc Plugin",
"version": "0.4.1",
"minAppVersion": "0.12.5",
"description": "This is a Pandoc export plugin for Obsidian. It provides commands to export to formats like DOCX, ePub and PDF.",
"author": "Oliver Balfour",
"authorUrl": "https://github.com/OliverBalfour/obsidian-pandoc",
"isDesktopOnly": true
}
\ No newline at end of file
.pandoc-plugin-error {
color: red;
}
{
"presets": {
"this_file": "path includes {{query.file.path}}",
"this_folder": "folder includes {{query.file.folder}}",
"this_folder_only": "filter by function task.file.folder === query.file.folder",
"this_root": "root includes {{query.file.root}}",
"hide_date_fields": "# Hide any values for all date fields\nhide due date\nhide scheduled date\nhide start date\nhide created date\nhide done date\nhide cancelled date",
"hide_non_date_fields": "# Hide all the non-date fields, but not tags\nhide id\nhide depends on\nhide recurrence rule\nhide on completion\nhide priority",
"hide_query_elements": "# Hide toolbar, postpone, edit and backlinks\nhide toolbar\nhide postpone button\nhide edit button\nhide backlinks",
"hide_everything": "# Hide everything except description and any tags\npreset hide_date_fields\npreset hide_non_date_fields\npreset hide_query_elements"
},
"globalQuery": "",
"globalFilter": "",
"removeGlobalFilter": false,
"taskFormat": "tasksPluginEmoji",
"setCreatedDate": false,
"setDoneDate": true,
"setCancelledDate": true,
"autoSuggestInEditor": true,
"autoSuggestMinMatch": 0,
"autoSuggestMaxItems": 20,
"provideAccessKeys": true,
"useFilenameAsScheduledDate": false,
"filenameAsScheduledDateFormat": "",
"filenameAsDateFolders": [],
"recurrenceOnNextLine": false,
"removeScheduledDateOnRecurrence": false,
"statusSettings": {
"coreStatuses": [
{
"symbol": " ",
"name": "Todo",
"nextStatusSymbol": "x",
"availableAsCommand": true,
"type": "TODO"
},
{
"symbol": "x",
"name": "Done",
"nextStatusSymbol": " ",
"availableAsCommand": true,
"type": "DONE"
}
],
"customStatuses": [
{
"symbol": "/",
"name": "In Progress",
"nextStatusSymbol": "x",
"availableAsCommand": true,
"type": "IN_PROGRESS"
},
{
"symbol": "-",
"name": "Cancelled",
"nextStatusSymbol": " ",
"availableAsCommand": true,
"type": "CANCELLED"
}
]
},
"isShownInEditModal": {
"priority": true,
"recurrence": true,
"due": true,
"scheduled": true,
"start": true,
"before_this": true,
"after_this": true,
"status": true,
"created": true,
"done": true,
"cancelled": true
},
"features": {
"INTERNAL_TESTING_ENABLED_BY_DEFAULT": true
},
"generalSettings": {},
"headingOpened": {
"Core Statuses": true,
"Custom Statuses": true
},
"debugSettings": {
"ignoreSortInstructions": false,
"showTaskHiddenData": false,
"recordTimings": false
},
"loggingOptions": {
"minLevels": {
"": "info",
"tasks": "info",
"tasks.Cache": "info",
"tasks.Events": "info",
"tasks.File": "info",
"tasks.Query": "info",
"tasks.Task": "info"
}
}
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"id": "obsidian-tasks-plugin",
"name": "Tasks",
"version": "7.23.1",
"minAppVersion": "1.4.0",
"description": "Track tasks across your vault. Supports due dates, recurring tasks, done dates, sub-set of checklist items, and filtering.",
"helpUrl": "https://publish.obsidian.md/tasks/",
"author": "Clare Macrae and Ilyas Landikov (created by Martin Schenck)",
"authorUrl": "https://github.com/obsidian-tasks-group",
"fundingUrl": "https://github.com/sponsors/claremacrae",
"isDesktopOnly": false
}
@charset "UTF-8";.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,.08);box-shadow:1px 0 #e6e6e6,-1px 0 #e6e6e6,0 1px #e6e6e6,0 -1px #e6e6e6,0 3px 13px #00000014}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown .3s cubic-bezier(.23,1,.32,1);animation:fpFadeInDown .3s cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none!important;box-shadow:none!important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 #e6e6e6,5px 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:"";height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:#000000e6;fill:#000000e6;height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:#000000e6;fill:#000000e6}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{left:0}.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{right:0}.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,.1)}.numInputWrapper span:active{background:rgba(0,0,0,.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:#00000080}.numInputWrapper:hover{background:rgba(0,0,0,.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0px,0px,0px);transform:translateZ(0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\fffd;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:#000000e6}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:#000000e6}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:#00000080;background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:#0000008a;line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0px,0px,0px);transform:translateZ(0);opacity:1}.dayContainer+.dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange+.endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 #e6e6e6,5px 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:#3939394d;background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:#3939391a}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 #569ff7,5px 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:#3939394d;background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:700}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:700;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes fpFadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}:root{--tasks-details-icon: url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M8.59 16.58L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.42z'/></svg>")}.plugin-tasks-query-explanation{--code-white-space: pre}.plugin-tasks-toolbar{display:flex;flex-direction:row;justify-content:space-between;gap:var(--size-4-1)}.plugin-tasks-toolbar label{display:flex;flex-direction:row;align-items:center}.plugin-tasks-toolbar label input{height:100%;padding-left:24px}.plugin-tasks-toolbar label svg{position:absolute;transform:translate(25%)}.tasks-count{color:var(--text-faint);padding-left:20px}.tooltip.pop-up{animation:pop-up-animation .2s forwards ease-in-out}@keyframes pop-up-animation{0%{opacity:0;transform:translateY(-100%) scale(1)}20%{opacity:.7;transform:translateY(-100%) scale(1.02)}40%{opacity:1;transform:translateY(-100%) scale(1.05)}to{opacity:1;transform:translateY(-100%) scale(1)}}.task-cancelled,.task-created,.task-done,.task-due,.task-scheduled,.task-start{cursor:pointer;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.tasks-edit,.tasks-postpone{width:1em;height:1em;vertical-align:middle;margin-left:.33em;cursor:pointer;font-family:var(--font-interface);color:var(--text-accent);user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}a.tasks-edit,a.tasks-postpone{text-decoration:none}.tasks-edit:after{content:"\1f4dd"}.tasks-postpone:after{content:"\23e9"}.tasks-urgency{font-size:var(--font-ui-smaller);font-family:var(--font-interface);padding:2px 6px;border-radius:var(--radius-s);color:var(--text-normal);background-color:var(--background-secondary);margin-left:.5em;line-height:1}.internal-link.internal-link-short-mode{text-decoration:none}.tasks-list-text{position:relative}.tasks-list-text .tooltip{position:absolute;top:0;left:0;white-space:nowrap}.task-list-item-checkbox{cursor:pointer}.tasks-layout-hide-tags .task-description a.tag,.task-list-item .task-block-link{display:none}.modal-option-button{inset-inline-end:var(--size-4-8)}.is-mobile .modal-option-button{inset-inline-end:var(--size-4-16)}.tasks-modal section+section{margin-top:6px}.tasks-modal hr{margin:6px 0}.tasks-modal .tasks-modal-error{border:1px solid red!important}.tasks-modal .accesskey{text-decoration:underline;text-underline-offset:1pt}.tasks-modal-description-section textarea{width:100%;min-height:calc(var(--input-height) * 2);resize:vertical;margin-top:8px}.tasks-modal-priority-section{display:grid;grid-template-columns:6em auto auto auto;grid-row-gap:.15em}.tasks-modal-priority-section>label{grid-row-start:1;grid-row-end:3}.tasks-modal-priority-section .task-modal-priority-option-container{white-space:nowrap}.tasks-modal-priority-section .task-modal-priority-option-container input+label{font-size:var(--font-ui-small);border-radius:var(--input-radius);padding:2px 3px}.tasks-modal-priority-section .task-modal-priority-option-container input{accent-color:var(--interactive-accent)}.tasks-modal-priority-section .task-modal-priority-option-container input:focus+label{box-shadow:0 0 0 2px var(--background-modifier-border-focus);border-color:var(--background-modifier-border-focus)}.tasks-modal-priority-section .task-modal-priority-option-container input:checked+label{font-weight:700}.tasks-modal-priority-section .task-modal-priority-option-container input:not(:checked)+label>span:nth-child(4){filter:grayscale(100%) opacity(60%)}.tasks-modal-dates-section{display:grid;grid-template-columns:6em 13em auto;column-gap:.5em;row-gap:5px;align-items:center}.tasks-modal-dates-section label{grid-column:1}.tasks-modal-dates-section .tasks-modal-date-input{min-width:15em}.tasks-modal-dates-section .tasks-modal-date-editor-picker{margin-left:.5em}.tasks-modal-dates-section .tasks-modal-parsed-date{grid-column:3;font-size:var(--font-ui-small)}.tasks-modal-dates-section .future-dates-only{grid-column-start:1;grid-column-end:3}.tasks-modal-dates-section .future-dates-only input{margin-left:.67em;top:2px}.tasks-modal-dates-section .status-editor-status-selector{grid-column:2}.tasks-modal-dependencies-section{display:grid;grid-template-columns:6em auto;column-gap:.5em;row-gap:5px;align-items:center}.tasks-modal-dependencies-section .tasks-modal-dependency-input{grid-column:2;width:100%}.tasks-modal-dependencies-section .results-dependency{grid-column:2}.tasks-modal-button-section{position:sticky;bottom:0;background-color:var(--modal-background);padding-bottom:16px;padding-top:16px;display:grid;grid-template-columns:3fr 1fr;column-gap:.5em}.tasks-modal-button-section button:disabled{pointer-events:none!important;opacity:.3!important}@media (max-width: 649px){.tasks-modal-priority-section{grid-template-columns:6em auto auto}.tasks-modal-priority-section>label{grid-row:1/span 3}}@media (max-width: 499px){.tasks-modal-priority-section{grid-template-columns:4em auto auto}.tasks-modal-dates-section{grid-template-columns:1fr;grid-auto-columns:auto}.tasks-modal-dates-section .tasks-modal-date-input{grid-column:1}.tasks-modal-dates-section .tasks-modal-parsed-date{grid-column:2}.tasks-modal-dates-section .status-editor-status-selector,.tasks-modal-dependencies-section label,.tasks-modal-dependencies-section .results-dependency{grid-column:1}}@media (max-width: 399px){.tasks-modal-dates-section .status-editor-status-selector{grid-column:1}.tasks-modal-dates-section>.tasks-modal-parsed-date{grid-column:1}.tasks-modal-priority-section{grid-template-columns:4em auto}.tasks-modal-priority-section>label{grid-row:1/span 6}.tasks-modal-dependencies-section{grid-template-columns:1fr;grid-auto-columns:auto}}@media (max-width: 259px){.tasks-modal-priority-section{grid-template-columns:1fr}.tasks-modal-priority-section>label{grid-row:1}}.task-dependencies-container{grid-column:2;display:flex;flex-wrap:wrap;gap:8px}.task-dependency{display:inline-flex;background-color:var(--interactive-normal);box-shadow:var(--input-shadow);border-radius:28px;padding:4px 4px 4px 8px}.task-dependency-name{font-size:var(--font-ui-small);max-width:160px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.task-dependency-delete{padding:3px;cursor:pointer;height:inherit;box-shadow:none!important;border-radius:50%}.task-dependency-dropdown{list-style:none;position:absolute;top:0;left:0;padding:4px;margin:0;background-color:var(--background-primary);border:1px;border-radius:6px;border-color:var(--background-modifier-border);border-style:solid;z-index:99;max-height:170px;overflow-y:auto}.task-dependency-dropdown li{padding:5px;margin:2px;border-radius:6px;cursor:pointer;display:flex;justify-content:space-between}.task-dependency-dropdown li .dependency-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.task-dependency-dropdown li .dependency-name-shared{width:60%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.task-dependency-dropdown li .dependency-path{width:40%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-style:italic;text-align:right;color:var(--italic-color)}.task-dependency-dropdown li.selected{background-color:var(--text-selection)}.tasks-options-modal-container{padding-bottom:0;width:fit-content}.tasks-options-modal-container .modal-title{margin-right:var(--size-4-6)}.is-mobile .tasks-options-modal-container .modal-title{margin-right:var(--size-4-12)}.tasks-options-modal{padding:0}.tasks-options-modal .tasks-options-modal-checkboxes{display:flex;flex-direction:column}.tasks-options-modal .tasks-options-modal-checkboxes label{padding:4px;border-radius:4px;display:flex;gap:8px}.tasks-options-modal .tasks-options-modal-checkboxes label input[type=checkbox]{margin:0}.tasks-options-modal .tasks-options-modal-checkboxes hr{margin:2px 0}.tasks-options-modal .tasks-options-modal-footer{position:sticky;bottom:0;display:flex;justify-content:flex-end;gap:.5em;padding:16px 0}.tasks-settings-is-invalid{color:var(--text-error)!important;background-color:rgba(var(--background-modifier-error-rgb),.2)!important}.tasks-settings .additional{margin:6px 12px}.tasks-settings .additional>.setting-item{border-top:0;padding-top:9px}.tasks-settings details>summary{outline:none;display:block!important;list-style:none!important;list-style-type:none!important;min-height:1rem;border-top-left-radius:.1rem;border-top-right-radius:.1rem;cursor:pointer;position:relative}.tasks-settings details>summary::-webkit-details-marker,.tasks-settings details>summary::marker{display:none!important}.tasks-settings details>summary>.collapser{position:absolute;top:50%;right:8px;transform:translateY(-50%);content:""}.tasks-settings details>summary>.collapser>.handle{transform:rotate(0);transition:transform .25s;background-color:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:var(--tasks-details-icon);mask-image:var(--tasks-details-icon);width:20px;height:20px}.tasks-settings details[open]>summary>.collapser>.handle{transform:rotate(90deg)}.tasks-nested-settings .setting-item{border:0px;padding-bottom:0}.tasks-nested-settings{padding-bottom:18px}.tasks-nested-settings[open] .setting-item-heading,.tasks-nested-settings:not(details) .setting-item-heading{border-top:0px;border-bottom:1px solid var(--background-modifier-border)}.tasks-settings .row-for-status{margin-top:0;margin-bottom:0}.tasks-settings .tasks-presets-wrapper{width:100%;position:relative;transition:all .2s ease}.tasks-settings .tasks-presets-wrapper.tasks-presets-dragging{opacity:.5;transform:rotate(2deg)}.tasks-settings .tasks-presets-wrapper.tasks-presets-drop-above:before{content:"";position:absolute;top:-2px;left:0;right:0;height:4px;background-color:var(--interactive-accent);border-radius:2px;z-index:10}.tasks-settings .tasks-presets-wrapper.tasks-presets-drop-below:after{content:"";position:absolute;bottom:-2px;left:0;right:0;height:4px;background-color:var(--interactive-accent);border-radius:2px;z-index:10}.tasks-settings .tasks-presets-setting .tasks-presets-key{grid-area:key}.tasks-settings .tasks-presets-setting .tasks-presets-key.has-error{border-color:var(--text-error);border-width:2px}.tasks-settings .tasks-presets-setting .tasks-presets-value{grid-area:value;min-width:300px;min-height:3em;font-family:var(--font-monospace);resize:horizontal;overflow-x:auto;overflow-y:hidden;white-space:pre}.tasks-settings .tasks-presets-setting .tasks-presets-drag-handle{grid-area:drag;color:var(--text-muted)}.tasks-settings .tasks-presets-setting .tasks-presets-drag-handle:hover{color:var(--text-normal)}.tasks-settings .tasks-presets-setting .tasks-presets-delete-button{grid-area:delete}.tasks-settings .tasks-presets-setting .setting-item-control{justify-content:start;display:grid;grid-template-columns:200px 1fr auto auto;grid-template-areas:"key value drag delete";gap:4px;align-items:unset;border:1px solid var(--background-modifier-border)!important;padding:.5em!important;background-color:var(--background-secondary)!important;border-radius:4px!important}@container (max-width: 600px){.tasks-settings .tasks-presets-setting .setting-item-control{grid-template-columns:5fr 1fr 1fr;grid-template-areas:"key drag delete" "value value value"}.tasks-settings .tasks-presets-setting .setting-item-control .tasks-presets-key{width:100%}}
{
"name": "Blue Topaz",
"version": "2026011402",
"minAppVersion": "1.0.0",
"author": "WhyI & Pkmer",
"authorUrl": "https://github.com/whyt-byte"
}
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"types": {
"aliases": "aliases",
"cssclasses": "multitext",
"tags": "tags",
"TQ_explain": "checkbox",
"TQ_extra_instructions": "text",
"TQ_short_mode": "checkbox",
"TQ_show_backlink": "checkbox",
"TQ_show_cancelled_date": "checkbox",
"TQ_show_created_date": "checkbox",
"TQ_show_depends_on": "checkbox",
"TQ_show_done_date": "checkbox",
"TQ_show_due_date": "checkbox",
"TQ_show_edit_button": "checkbox",
"TQ_show_id": "checkbox",
"TQ_show_on_completion": "checkbox",
"TQ_show_postpone_button": "checkbox",
"TQ_show_priority": "checkbox",
"TQ_show_recurrence_rule": "checkbox",
"TQ_show_scheduled_date": "checkbox",
"TQ_show_start_date": "checkbox",
"TQ_show_tags": "checkbox",
"TQ_show_task_count": "checkbox",
"TQ_show_toolbar": "checkbox",
"TQ_show_tree": "checkbox",
"TQ_show_urgency": "checkbox"
}
}
\ No newline at end of file
{
"main": {
"id": "e4b6a4b8d933cf60",
"type": "split",
"children": [
{
"id": "18a193083ea68c31",
"type": "tabs",
"children": [
{
"id": "0c5f2033fe9f2c1b",
"type": "leaf",
"state": {
"type": "canvas",
"state": {
"file": "BionicRobots/机器人.canvas",
"viewState": {
"x": -10,
"y": 95,
"zoom": 0
}
},
"icon": "lucide-layout-dashboard",
"title": "机器人"
}
},
{
"id": "f12622ec71e74bea",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "BionicRobots/正式大会进度汇报.md",
"mode": "source",
"source": false
},
"icon": "lucide-file",
"title": "正式大会进度汇报"
}
}
],
"currentTab": 1
}
],
"direction": "vertical"
},
"left": {
"id": "77ce1d1d45317e85",
"type": "split",
"children": [
{
"id": "e1980186c5978591",
"type": "tabs",
"children": [
{
"id": "a2cfff2c9dc834e1",
"type": "leaf",
"state": {
"type": "file-explorer",
"state": {
"sortOrder": "alphabetical",
"autoReveal": false
},
"icon": "lucide-folder-closed",
"title": "文件列表"
}
},
{
"id": "aef463043758d7f9",
"type": "leaf",
"state": {
"type": "search",
"state": {
"query": "",
"matchingCase": false,
"explainSearch": false,
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical"
},
"icon": "lucide-search",
"title": "Search"
}
},
{
"id": "5edcf6fe1cfc45ae",
"type": "leaf",
"state": {
"type": "bookmarks",
"state": {},
"icon": "lucide-bookmark",
"title": "Bookmarks"
}
}
]
}
],
"direction": "horizontal",
"width": 202.5
},
"right": {
"id": "0068e15e5e3b5b82",
"type": "split",
"children": [
{
"id": "34ddb2273f153adc",
"type": "tabs",
"children": [
{
"id": "60b338d9c2015bd3",
"type": "leaf",
"state": {
"type": "backlink",
"state": {
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
"showSearch": false,
"searchQuery": "",
"backlinkCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-coming-in",
"title": "Backlinks"
}
},
{
"id": "f83f1a32b5a9485e",
"type": "leaf",
"state": {
"type": "outgoing-link",
"state": {
"linksCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-going-out",
"title": "Outgoing links"
}
},
{
"id": "c3583be1b210d13e",
"type": "leaf",
"state": {
"type": "tag",
"state": {
"sortOrder": "frequency",
"useHierarchy": true,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-tags",
"title": "Tags"
}
},
{
"id": "ea8a7b35e909aa2a",
"type": "leaf",
"state": {
"type": "all-properties",
"state": {
"sortOrder": "frequency",
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-archive",
"title": "All properties"
}
},
{
"id": "04c026b2421961fd",
"type": "leaf",
"state": {
"type": "outline",
"state": {
"followCursor": false,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-list",
"title": "Outline"
}
},
{
"id": "4f169223e225febe",
"type": "leaf",
"state": {
"type": "git-view",
"state": {},
"icon": "git-pull-request",
"title": "Source Control"
}
}
],
"currentTab": 5
}
],
"direction": "horizontal",
"width": 300,
"collapsed": true
},
"left-ribbon": {
"hiddenItems": {
"markdown-importer:打开 Markdown 格式转换器": false,
"obsidian-excalidraw-plugin:New drawing": false,
"switcher:打开快速切换": false,
"graph:查看关系图谱": false,
"templates:插入模板": false,
"canvas:新建白板": false,
"daily-notes:打开/创建今天的日记": false,
"command-palette:打开命令面板": false,
"bases:新建数据库": false,
"publish:发布更改": false,
"zk-prefixer:创建时间戳笔记": false,
"obsidian-git:Open Git source control": false
}
},
"active": "a2cfff2c9dc834e1",
"lastOpenFiles": [
"BionicRobots/~$ogress in dexterous hands.docx",
"BionicRobots/Progress in dexterous hands.docx",
"BionicRobots/Progress in dexterous hands.md",
"BionicRobots/正式大会进度汇报.md",
"BionicRobots/roboticArm/机械臂readme.md",
"BionicRobots/机器人.canvas",
"BionicRobots/会议问题&回复/Welcome.md",
"obsidian-1.0.0/_meta.json",
"obsidian-1.0.0/SKILL.md",
"obsidian-1.0.0",
"BionicRobots/roboticArm",
"BionicRobots/会议问题&回复/create a link.md",
"BionicRobots/会议问题&回复/需求(产品功能).md",
"BionicRobots/会议问题&回复/机器人存在的问题.md",
"Excalidraw/Drawing 2026-03-18 10.17.53.excalidraw.md",
"BionicRobots/经验/参展目的.md",
"BionicRobots/images/092106a3c73ad3f2837df31574b8c858.jpg",
"BionicRobots/images/99c9a0cb871e4601e4a94902048995d8.png",
"2026-04-07.md",
"BionicRobots/images/29c028828b5c6b251146757290a356b0.mp4",
"BionicRobots/images/0_5.mp4",
"BionicRobots/images/0_6.mp4",
"未命名",
"BionicRobots/images/微信图片_20260421170654_191_116.jpg",
"BionicRobots/images/092106a3c73ad3f2837df31574b8c858 1.jpg",
"BionicRobots/images/8f81a35c-637e-4379-ba54-2aca2bd74ccf.png",
"BionicRobots/images/daef1f0ada789fa678f68b9b5abb1e64.jpg",
"BionicRobots/images/dexterous_hand_position_test.jpg",
"BionicRobots/images/dexterous_hand_switch_test.jpg",
"BionicRobots/images/df8299406593b6d0d25832411f13fa54.mp4",
"BionicRobots/images/e4496f8677c9165bd948db88fb3a8037.mp4",
"BionicRobots/images/ipc_joint_debug.jpg",
"仿生机器人/images/11b2cbf16d1a5915979a912ff744a7ad.png",
"每日计划.md",
"202604071104.md",
"202604071110.md",
"202603171751.md",
"BionicRobots/经验/如何选展.md",
"仿生机器人/未命名.md"
]
}
\ No newline at end of file
1. [ ]帮郭哥问哈工深
2.Geminicli配置以及Claude code 和codex
3提出差单
# 项目阶段性进度汇报
---
## 一、项目总体进展概述
当前项目围绕灵巧手、机械臂、机械夹爪及工控机联调等方向持续推进。现阶段,灵巧手相关测试已取得阶段性进展,已完成对模拟器三档开关的操作验证,并完成相关挡位位置数据采集;机械臂目前仍在科大侧流程推进中;机械夹爪方向已进入环境部署与资料研读阶段;同时,工控机版本协调及识别算法移植验证工作也在同步开展。
---
## 二、各模块进度汇报
### 1. 灵巧手进度
#### 当前进展
- 已完成使用灵巧手对模拟器三档开关的操作测试。
- 已采集三档开关对应挡位的位置数据,用于后续编码过程中对空间位置进行控制。
- 正在进一步测试灵巧手其他位置控制能力,并持续对照手册中的相关数据开展验证。
#### 当前问题
- 在测试过程中,发现部分实际数据与手册数据存在明显不一致的情况。
- 针对上述问题,已于周日向科大技术支持侧提出,并正在与技术支持组持续沟通,寻求进一步定位和解决方案。
#### 照片展示区(预留)
> **照片 1:** 灵巧手操作模拟器三档开关测试现场
![灵巧手测试照片(待补充)](dexterous_hand_switch_test.jpg)
> **照片 2:** 灵巧手位置控制测试界面或现场照片
![灵巧手位置控制照片(待补充)](dexterous_hand_position_test.jpg)
**照片3:** 模拟控制旋钮开关并且松手
<center>
<img src="./images/ipc_joint_debug.jpg" alt="模拟控制旋钮开关">
</center>
> **照片预留 4:** 模拟控制旋钮开关并且松手
<center>
<img src="./images/8f81a35c-637e-4379-ba54-2aca2bd74ccf.png" alt="描述">
</center>
---
### 2. 机械臂进度
#### 当前进展
- 机械臂相关工作目前仍在科大侧流程推进中。
- 当前阶段主要处于流程对接与等待推进状态,尚未进入实质性联调测试阶段。
---
### 3. 机械夹爪进度
#### 当前进展
- 夹爪环境
1.夹爪支持Windows,底层是偏plc控制无Ubuntu环境。
- 本周工作重点转向机械夹爪方向,正在开展机械夹爪操作研究。
- 当前正在部署机械夹爪相关环境,并同步阅读机械夹爪应用开发手册,为后续实操和接口开发做好准备。
#### 照片展示区
> **照片 1、2:** 机械夹爪环境部署界面
<center>
<img src="./images/092106a3c73ad3f2837df31574b8c858.jpg" alt="夹爪部署环境">
</center>
---
<center>
<img src="./images/微信图片_20260421170654_191_116.jpg" alt="夹爪部署环境">
</center>
## 三、联调与工控机推进情况
### 当前进展
- 正在协调与我方联调所使用的工控机版本。
- 正与科大联合开展工控机调试工作。
- 正在协调我方与科大联合的仪器仪表识别算法移植至工控机平台版本。
- 当前工作重点为在工控机上验证识别仪器仪表的实际效果,评估算法部署后的识别表现与运行稳定性。
---
## 四、当前阶段总结
从当前整体进度来看,项目已在灵巧手测试与数据采集方面取得初步成果,机械夹爪方向已进入环境部署和技术准备阶段,机械臂工作正在推进外部流程,工控机联调和识别算法移植验证也在同步开展。总体工作正按模块化方式稳步推进。
与此同时,灵巧手测试中暴露出的手册数据不一致问题,需要继续与科大技术支持侧保持高频沟通,尽快明确原因并推动解决,以保障后续位置控制和联调工作的顺利开展。
---
## 五、下一步工作计划
- 持续推进灵巧手其他位置控制测试,并完成异常数据核查与问题定位。
- 跟进科大侧机械臂流程进展,推动机械臂工作尽快进入实质测试阶段。
- 完成机械夹爪环境部署,结合应用开发手册开展基础功能验证。
- 持续推进工控机版本协调与联合调试。
- 完成识别算法向工控机平台的移植,并开展识别效果与稳定性验证。
---
我先分两部分来处理:先给你一个“机械臂+灵巧手操控座舱”的业务学习路线,再快速扫一遍当前项目代码,整理出你最该先看的接口与入口文件。先开始做项目侧梳理。
我先分两部分来处理:先给你一个“机械臂+灵巧手操控座舱”的业务学习路线,再快速扫一遍当前项目代码,整理出你最该先看的接口与入口文件。先开始做项目侧梳理。
我已经拿到一轮完整代码扫描结果:这个仓库核心是 RealMan 机械臂 SDK(不是现成后端服务)。接下来我会再抽样核对几个关键文件(README、Python接口、C头文件、Demo入口),然后给你一个更“面向新手落地”的学习与上手清单。
你这个问题非常专业,而且方向是对的。
先给你一个关键判断:你面对的不是“调几个机械臂API”,而是末端任务系统工程(机械臂 + 灵巧手/夹爪 + 力控 + 感知定位 + 安全策略 + 任务流程)。
## 先说项目结论
这个仓库本质是 RealMan 的 SDK(RM_API2),不是一个现成业务应用,也不是 HTTP 服务。
我在代码里确认了它的核心是“你写客户端程序,连机械臂控制器的 TCP 接口,然后调 SDK”:
rm_interface.hLines 47-55
RM_INTERFACE_EXPORT int rm_init(rm_thread_mode_e mode);
RM_INTERFACE_EXPORT int rm_destroy(void);
rm_interface.hLines 80-86
* @brief 创建一个机械臂,用于实现对该机械臂的控制
RM_INTERFACE_EXPORT rm_robot_handle *rm_create_robot_arm(const char *ip,int port);
同时仓库里没发现 `FastAPI/Flask/gRPC/WebSocket/ROS` 这类服务层实现,说明你要做业务接口时,通常要在 SDK 上自己封装。
---
## 1) 你需要先学什么(按优先级)
- 任务分解能力:把“操控仪表+操作杆”拆成动作原子(按压、拨动、旋钮、推拉、保持力、释放、复位)。
- 坐标与标定:基座坐标、工具坐标、工件坐标、座舱坐标系转换;否则定位会漂。
- 运动学与轨迹:`movej/movel/movec` 的适用场景、速度/加速度/融合半径、阻塞与非阻塞。
- 力控与顺应:接触式任务(按键/杆)必须用力位混合,避免“撞击+过载”。
- 末端执行器控制:灵巧手每指自由度、夹爪力阈值、速度、跟随控制频率。
- 安全与容错:碰撞等级、急停、电子围栏、超时重试、异常状态机。
---
## 2) 这个项目里你最该先懂哪些接口
你这个场景最关键的是这几类(按“能尽快出成果”排序):
- 连接生命周期:`rm_init``rm_create_robot_arm``rm_delete_robot_arm``rm_destroy`
路径:`C/include/rm_interface.h``Python/Robotic_Arm/rm_robot_interface.py`
- 基础运动:`rm_movej``rm_movel``rm_movec``rm_movej_p`
- 力控:`rm_set_force_position``rm_stop_force_position`(适合按压仪表/保持接触)
- 灵巧手/夹爪:`rm_set_hand_follow_pos``rm_set_hand_follow_angle``rm_set_hand_speed``rm_set_hand_force``rm_set_gripper_pick_on``rm_set_gripper_release`
- IO复用与在线编程:`rm_set_io_mode``rm_set_do_state`、轨迹录制与回放接口(便于工程联调)
- 总线外设:`rm_set_modbus_mode`(RTU)及 Modbus 读写,便于对接外设/执行器
- 实时状态回传:`rm_set_realtime_push` + `rm_realtime_arm_state_call_back`(做监控闭环)
灵巧手相关在头文件里很明确:
rm_interface.hLines 2587-2649
RM_INTERFACE_EXPORT int rm_set_hand_posture(rm_robot_handle *handle, int posture_num, bool block, int timeout);
RM_INTERFACE_EXPORT int rm_set_hand_seq(rm_robot_handle *handle, int seq_num, bool block, int timeout);
RM_INTERFACE_EXPORT int rm_set_hand_angle(rm_robot_handle *handle, const int *hand_angle, bool block, int timeout);
RM_INTERFACE_EXPORT int rm_set_hand_follow_angle(rm_robot_handle *handle, const int *hand_angle, bool block);
RM_INTERFACE_EXPORT int rm_set_hand_follow_pos(rm_robot_handle *handle, const int *hand_pos, bool block);
---
## 3) 如何“快速了解这个项目”(30分钟路线)
按这个顺序读,效率最高:
- `README.md`(先建立全局认知)
- `Python/Robotic_Arm/rm_robot_interface.py`(Python 封装入口)
- `C/include/rm_interface.h`(权威 API 定义)
- `C/include/rm_define.h`(枚举/结构体/线程模式)
- `Demo/RMDemo_Python/RMDemo_SimpleProcess/src/core/demo_simple_process.py`(最小闭环)
- `Demo/RMDemo_Python/RMDemo_ForceControl/src/core/demo_force_control.py`(接触任务核心)
- `Demo/RMDemo_Python/RMDemo_Gripper/readme.md`(抓取流程)
- `Demo/RMDemo_Python/RMDemo_IOControl/readme.md`(IO联动)
- `Demo/RMDemo_Python/RMDemo_ModbusRTU/readme.md`(外设通讯)
- `Demo/RMDemo_C/RMDemo_Hand/src/main.c`(灵巧手细粒度控制,当前仓库中最贴近你场景)
---
## 4) 针对你场景的实操建议
- 第一阶段先用 夹爪 + 力控 跑通“按压按钮/拨杆”。
- 第二阶段再切 灵巧手,做“旋钮+杆件复合动作”。
- 每个动作都做“接近 -> 触碰检测 -> 力控执行 -> 退出”的四段式。
- 所有动作加“失败可回退位姿”和“超时急停”。
如果你愿意,我下一步可以直接给你一份**“座舱任务接口映射表(动作->API->参数建议->风险点)”**,以及一个 Python 最小工程骨架(含状态机与安全保护)。
\ No newline at end of file
++ "a/BionicRobots/\344\274\232\350\256\256\351\227\256\351\242\230&\345\233\236\345\244\215/Welcome.md"
++ "a/BionicRobots/\344\274\232\350\256\256\351\227\256\351\242\230&\345\233\236\345\244\215/create a link.md"
人形机器人的稳定性本质上是平衡问题。高重心、重复的单腿支撑阶段,使得即使很小的扰动也会在踝关节和髋关节产生显著的旋转力矩。
人形机器人的稳定性本质上是平衡问题。高重心、重复的单腿支撑阶段,使得即使很小的扰动也会在踝关节和髋关节产生显著的旋转力矩。
在此背景下,执行器的响应性成为稳定性的决定因素,而不仅仅是性能参数。
- QDD 架构降低了反映惯量,使平衡恢复过程中能够快速产生纠正加速度
- 系统不会因传动刚性而抵抗扰动,而是保持动态适应
- 可回传力(backdrivability)进一步实现主动顺应,即机器人可以在必要时让步,而非与意外力作对
- 1.  **快速摆动相**
2.  **与地面接触产生冲击力**
3.  **负载在身体间传递**(这一步)
4.  **为下一步立即做准备**
\ No newline at end of file
1.具备音频输出
1.具备音频输出
在传统地面站通过链路将话音信号传送到飞机上来的时候,可以用这个此项目对飞机上的原本的话音输出进行替代(技术细节可以曹老师学生自己定,这个用于解决什么需求,之前的功能不能满足这个需求吗?)==(我们要能回应,要加全景,是指飞机给塔台回应并且附加上全景视图这样吗)==
2.一个震动传感器
在飞机高震动环境下能够对不同震动的环境的飞机做出识别,并且发送实时情况。(对应不同的情况发送不同的预警日志,如红色代表警报,黄色代表非安全状态,绿色代表良好)
\ No newline at end of file
{
{
"nodes":[
{"id":"f1d14872d5916c1a","x":-160,"y":-30,"width":300,"height":70,"type":"text","text":"购买固定翼飞机进行缩比验证(我们的资产,从北京采购放先进院)"},
{"id":"a0d163169c05bbcd","x":-160,"y":160,"width":300,"height":60,"type":"text","text":"灵巧手,机械臂开发\n"}
],
"edges":[]
}
\ No newline at end of file
# 仿生机器人项目阶段进度汇报(正式大会版)
# 仿生机器人项目阶段进度汇报(正式大会版)
## 一、项目总体进展概览
本阶段围绕灵巧手、机械臂、机械夹爪及工控机联调开展工作,整体处于“分模块推进 + 联调准备并行”的状态。
当前已完成灵巧手关键操作验证,机械臂仍在流程推进中,机械夹爪进入环境部署和手册学习阶段,同时正在推进工控机版本协调与识别算法移植验证。
---
## 二、模块化进度汇报
### 1. 灵巧手进度
#### 已完成事项
- 已完成使用灵巧手操作模拟器三档开关的验证。
- 已采集三档开关各挡位的位置数据,用于后续编码阶段的空间位置控制。
#### 当前进行中
- 正在继续测试灵巧手其他位置控制能力。
- 正在对照手册数据开展比对验证。
#### 当前问题与处理
- 发现部分实测数据与手册存在明显不一致情况。
- 已于周天向科大侧发起技术支持对接,当前在技术支持组群内持续跟进定位与处理。
#### 灵巧手照片展示区(预留)
- 【照片1占位】灵巧手操作三档开关现场图
- 【照片2占位】三档开关挡位识别/采集界面图
- 【照片3占位】灵巧手测试工位全景图
---
### 2. 机械臂进度
#### 当前状态
- 机械臂相关工作目前仍在科大侧流程推进中,尚未进入实质联调阶段。
#### 后续关注点
- 持续跟进流程节点与时间安排,尽快进入联调窗口。
#### 机械臂照片展示区(预留)
- 【照片1占位】机械臂设备现场图
- 【照片2占位】流程/审批进度截图
---
### 3. 机械夹爪进度
#### 上周完成
- 已完成手部操作相关工作。
#### 本周进展
- 工作重心转入机械夹爪操作研究。
- 当前正在部署机械夹爪开发环境。
- 正在阅读机械夹爪应用开发手册,为后续功能开发与调试做准备。
#### 机械夹爪照片展示区(预留)
- 【照片1占位】机械夹爪设备与接线图
- 【照片2占位】环境部署过程截图
- 【照片3占位】开发手册关键章节截图
---
## 三、联调与算法移植进展(工控机方向)
### 当前工作
- 正在协调与我方联调的工控机版本。
- 正在与科大联合调试工控机环境。
- 正在将我方与科大识别仪器仪表相关算法移植至工控机侧,并开展识别效果验证。
### 当前目标
- 在工控机上完成识别算法可运行验证。
- 输出仪器仪表识别效果的对比结果与稳定性结论。
#### 工控机联调照片展示区(预留)
- 【照片1占位】工控机联调现场图
- 【照片2占位】算法移植部署截图
- 【照片3占位】识别效果对比结果图
---
## 四、下阶段计划与支撑需求
### 下阶段计划
- 完成灵巧手“实测数据 vs 手册数据”偏差问题定位,形成修正策略。
- 推动机械臂流程闭环,尽快启动联调。
- 完成机械夹爪环境部署并进入基础操作验证。
- 持续推进工控机端识别算法验证与效果优化。
### 需要协同支持
- 科大侧技术支持组加快灵巧手数据不一致问题响应与排查。
- 双方联调窗口与资源排期进一步明确,保障机械臂与工控机联合调试效率。
---
## 五、附:照片与材料插入说明(便于会前整理)
- 建议每个模块放置 2-3 张关键图片,突出“已完成工作 + 当前状态 + 问题/效果”。
- 建议图片命名:`模块-日期-内容`(示例:`灵巧手-0421-三档开关测试.jpg`)。
- 建议在会前统一替换“照片占位”文字为实际图片链接或嵌入图片。
1.用户使用模拟器,
1.用户使用模拟器,
2.
1.希望我们把九院的职责也一同做了(需要我们软件开发人员进行评估)---==希望我们把九院的职责也做了==
九院的职责:**任务分配和装配管理,辅助上级指挥的软件,接收我们十一院的模拟器(模拟飞机)的态势,九院他们的软件进行任务分配,任务下发(做决策)**。---------希望我们把这一部分功能做了就不需要再跟九院联调了。这一部分是跟江方舟(两杠三星)的*唠嗑*,不是明确的书面文字的需求。
2.漳浦这边李贝(两杠三星)提的建议(*聊天文字有确认的*):
(EO光电软件)打完激光会生成坐标点,目前想生成地理定位的txt的格式化文件,需要将目标点名称、坐标等信息按格式手动输入,希望能增加自动生成地理定位文件的功能。(已经反馈给北京在做了)
> 3.希望能够不同层级(营,旅,师)也能够共享并且同步我们的十一院软件==(光电以及模拟器飞机)==的信息。
\ No newline at end of file
++ "a/BionicRobots/\347\273\217\351\252\214/\345\246\202\344\275\225\351\200\211\345\261\225.md"
---
name: obsidian
description: Work with Obsidian vaults (Markdown notes), including vault discovery, note organization, and safe refactors. Use when the user asks to manage Obsidian notes, folders, links, or .obsidian configuration.
homepage: https://help.obsidian.md
---
# Obsidian
Obsidian vault is a normal folder on disk. Treat notes as plain Markdown files.
Vault structure (typical)
- Notes: `*.md` (plain text Markdown; edit with any editor)
- Config: `.obsidian/` (workspace + plugin settings; usually don’t touch from scripts)
- Canvases: `*.canvas` (JSON)
- Attachments: whatever folder you chose in Obsidian settings (images/PDFs/etc.)
## Find the active vault(s)
Obsidian desktop tracks vaults in `obsidian.json`:
- Windows: `%APPDATA%\obsidian\obsidian.json`
- macOS: `~/Library/Application Support/obsidian/obsidian.json`
- Linux: `~/.config/obsidian/obsidian.json`
Vault name is usually the folder name.
When multiple vaults exist, read this file first and prefer entries marked as opened/recent.
Notes
- Multiple vaults are common (work/personal). Do not guess vault path.
- Avoid hardcoded absolute paths in scripts.
## Preferred workflow in this environment
1. Discover vault path from `obsidian.json`.
2. Use file operations on `.md` files for create/edit/update.
3. Use ripgrep (`rg`) for search and backlink checks.
4. Edit `.obsidian` config only when user explicitly asks.
## Common note operations (without extra CLI dependency)
Search note names/content:
- `rg "keyword" "<vault-path>"`
Create a note:
- create `Folder/Note.md` with a clear heading and sections
Rename or move a note:
- rename file and then update `[[wikilinks]]` references by search + replace
Delete a note:
- only delete after checking inbound links (`rg "\[\[NoteName(\||\]\])"`)
## Link-safe refactor checklist
- [ ] Locate target note path
- [ ] Find inbound wikilinks and markdown links
- [ ] Apply rename/move
- [ ] Update links that reference old path or old title
- [ ] Re-scan to confirm no stale references
## Editing conventions
- Keep headings stable to avoid breaking section links
- Prefer relative markdown links and wikilinks
- Do not mass-edit `.obsidian/workspace.json` unless requested
- Keep generated content concise and readable in plain Markdown
{
"ownerId": "kn70pywhg0fyz996kpa8xj89s57yhv26",
"slug": "obsidian",
"version": "1.0.0",
"publishedAt": 1767545362143
}
\ No newline at end of file
4.7
4.7
```mermaid
gantt
title 机器人/控制系统研发项目甘特图
dateFormat YYYY-MM-DD
section 第一阶段:顶层规划
(一) 方案设计 :crit, active, task1, 2026-04-15, 10d
(五) 软件框架 (程序/架构) :task2, after task1, 10d
section 第二阶段:机械与硬件 (主线1)
(三) 机械设计 (专职工程师) :task3, after task1, 20d
(四) 硬件集成 :task4, after task3, 10d
section 第三阶段:算法与系统 (主线2)
(二) 仿真 :task5, after task1, 20d
(七) 图像处理系统 :task6, after task2, 14d
(八) 机械臂控制系统 :task7, after task2, 20d
(九) 阻抗控制系统 (待定) :task8, after task7, 14d
(六) 行为克隆数据采集系统 :task9, after task6, 15d
section 第四阶段:联调与验证
实验验证 :crit, task10, after task4 task9 task8, 20d
```
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment