diff --git a/.DS_Store b/.DS_Store
index d2cd4faf..bffb3d81 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/.obsidian/appearance.json b/.obsidian/appearance.json
index 05244ffe..d3dae1a6 100644
--- a/.obsidian/appearance.json
+++ b/.obsidian/appearance.json
@@ -1,7 +1,7 @@
{
"theme": "obsidian",
"cssTheme": "Minimal",
- "baseFontSize": 28,
+ "baseFontSize": 27,
"enabledCssSnippets": [
"pdf_darkmode",
"query_header_title",
diff --git a/.obsidian/bookmarks.json b/.obsidian/bookmarks.json
index f44af1f3..a1e0da97 100644
--- a/.obsidian/bookmarks.json
+++ b/.obsidian/bookmarks.json
@@ -7,7 +7,7 @@
{
"type": "file",
"ctime": 1727273810488,
- "path": "cours L3.topologie.md",
+ "path": "cours L3.cours topologie.md",
"title": "topologie"
},
{
diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json
index eef474e2..f29c4ba3 100644
--- a/.obsidian/community-plugins.json
+++ b/.obsidian/community-plugins.json
@@ -10,5 +10,6 @@
"obsidian42-brat",
"obsidian-day-planner",
"obsidian-hider",
- "lazy-plugins"
+ "lazy-plugins",
+ "mysnippets-plugin"
]
\ No newline at end of file
diff --git a/.obsidian/graph.json b/.obsidian/graph.json
index 8d215da2..63c00d52 100644
--- a/.obsidian/graph.json
+++ b/.obsidian/graph.json
@@ -130,6 +130,6 @@
"repelStrength": 6.47786458333333,
"linkStrength": 1,
"linkDistance": 30,
- "scale": 0.934860444721763,
+ "scale": 0.12691043529086585,
"close": false
}
\ No newline at end of file
diff --git a/.obsidian/plugins/breadcrumbs/data.json b/.obsidian/plugins/breadcrumbs/data.json
index 08fb29af..eef37b75 100644
--- a/.obsidian/plugins/breadcrumbs/data.json
+++ b/.obsidian/plugins/breadcrumbs/data.json
@@ -526,7 +526,7 @@
"views": {
"page": {
"all": {
- "sticky": true,
+ "sticky": false,
"readable_line_width": false
},
"trail": {
@@ -556,7 +556,8 @@
},
"field_group_labels": {
"prev": [
- "prevs"
+ "prevs",
+ "sames"
],
"next": [
"nexts"
diff --git a/.obsidian/plugins/lazy-plugins/data.json b/.obsidian/plugins/lazy-plugins/data.json
index d23f1e7a..3a5e4460 100644
--- a/.obsidian/plugins/lazy-plugins/data.json
+++ b/.obsidian/plugins/lazy-plugins/data.json
@@ -267,7 +267,7 @@
"startupType": "short"
},
"obsidian-spaced-repetition": {
- "startupType": "long"
+ "startupType": "disabled"
},
"obsidian42-strange-new-worlds": {
"startupType": "disabled"
@@ -340,6 +340,9 @@
},
"zotlit": {
"startupType": "long"
+ },
+ "mysnippets-plugin": {
+ "startupType": "instant"
}
}
}
diff --git a/.obsidian/plugins/mysnippets-plugin/main.js b/.obsidian/plugins/mysnippets-plugin/main.js
new file mode 100644
index 00000000..000d904c
--- /dev/null
+++ b/.obsidian/plugins/mysnippets-plugin/main.js
@@ -0,0 +1,386 @@
+/*
+THIS IS A GENERATED/BUNDLED FILE BY ROLLUP
+if you want to view the source visit the plugins github repository
+*/
+
+'use strict';
+
+var obsidian = require('obsidian');
+
+/******************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
+function __awaiter(thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+}
+
+function setAttributes(element, attributes) {
+ for (let key in attributes) {
+ element.setAttribute(key, attributes[key]);
+ }
+}
+
+class CreateSnippetModal extends obsidian.Modal {
+ constructor(app, plugin) {
+ super(app);
+ this.app = app;
+ this.plugin = plugin;
+ this.onOpen = () => this.display(true);
+ }
+ display(focus) {
+ return __awaiter(this, void 0, void 0, function* () {
+ const { contentEl } = this;
+ const customCss = this.app.customCss;
+ contentEl.empty();
+ contentEl.setAttribute("style", "margin-top: 0px");
+ const title = document.createElement("h1");
+ title.setText("Create a CSS Snippet");
+ contentEl.appendChild(title);
+ const fileTitleSetting = new obsidian.Setting(contentEl);
+ const fileTitleValue = new obsidian.TextComponent(fileTitleSetting.controlEl);
+ fileTitleSetting
+ .setName("CSS Snippet Title")
+ .setDesc("Write the title for this CSS snippet file.");
+ const cssStylesSetting = new obsidian.Setting(contentEl);
+ // avoiding having to reference this specific modal - add style in code
+ cssStylesSetting.settingEl.setAttribute("style", "display: grid; grid-template-columns: 1fr;");
+ const cssStylesValue = new obsidian.TextAreaComponent(cssStylesSetting.controlEl);
+ setAttributes(cssStylesValue.inputEl, {
+ style: "margin-top: 12px; width: 100%; height: 32vh;",
+ class: "ms-css-editor",
+ });
+ cssStylesSetting
+ .setName("CSS Snippet Styles")
+ .setDesc("Add in styling for this CSS snippet file.");
+ cssStylesValue.setValue(this.plugin.settings.stylingTemplate);
+ const doAdd = () => __awaiter(this, void 0, void 0, function* () {
+ let fileName = fileTitleValue.getValue();
+ let fileContents = cssStylesValue.getValue();
+ let snippetPath = customCss.getSnippetPath(fileName);
+ if (fileName) {
+ if (!customCss.snippets.includes(fileName)) {
+ yield app.vault.create(`${customCss.getSnippetsFolder()}/${fileName}.css`, fileContents);
+ console.log(`%c"${fileName}.css" has been created!`, "color: Violet");
+ if (this.plugin.settings.snippetEnabledStatus)
+ customCss.setCssEnabledStatus(fileName, true);
+ if (this.plugin.settings.openSnippetFile)
+ this.app.openWithDefaultApp(snippetPath);
+ customCss.requestLoadSnippets();
+ this.close();
+ }
+ else
+ new obsidian.Notice(`"${fileName}.css" already exists.`);
+ }
+ else
+ new obsidian.Notice("Missing name for file");
+ });
+ const saveButton = new obsidian.ButtonComponent(contentEl)
+ .setButtonText("Create Snippet")
+ .onClick(doAdd);
+ saveButton.buttonEl.addClass("wg-button");
+ fileTitleValue.inputEl.focus();
+ });
+ }
+ onClose() {
+ const { contentEl } = this;
+ contentEl.empty();
+ }
+}
+
+function snippetsMenu(app, plugin, settings) {
+ const windowX = window.innerWidth;
+ const windowY = window.innerHeight;
+ const menuExists = document.querySelector(".menu.MySnippets-statusbar-menu");
+ if (!menuExists) {
+ const menu = new obsidian.Menu();
+ menu.setUseNativeMenu(false);
+ const menuDom = menu.dom;
+ menuDom.addClass("MySnippets-statusbar-menu");
+ if (settings.aestheticStyle) {
+ menuDom.setAttribute("style", "background-color: transparent; backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);");
+ }
+ const customCss = app.customCss;
+ const currentSnippets = customCss.snippets;
+ const snippetsFolder = customCss.getSnippetsFolder();
+ currentSnippets.forEach((snippet) => {
+ const snippetPath = customCss.getSnippetPath(snippet);
+ menu.addItem((snippetElement) => {
+ snippetElement.setTitle(snippet);
+ const snippetElementDom = snippetElement.dom;
+ const toggleComponent = new obsidian.ToggleComponent(snippetElementDom);
+ const buttonComponent = new obsidian.ButtonComponent(snippetElementDom);
+ function changeSnippetStatus() {
+ const isEnabled = customCss.enabledSnippets.has(snippet);
+ customCss.setCssEnabledStatus(snippet, !isEnabled);
+ }
+ toggleComponent
+ .setValue(customCss.enabledSnippets.has(snippet))
+ .onChange(changeSnippetStatus);
+ buttonComponent
+ .setIcon("ms-snippet")
+ .setClass("MS-OpenSnippet")
+ .setTooltip(`Open snippet`)
+ .onClick((e) => {
+ app.openWithDefaultApp(snippetPath);
+ });
+ snippetElement.onClick((e) => {
+ e.preventDefault();
+ e.stopImmediatePropagation();
+ });
+ });
+ });
+ menu.addSeparator();
+ menu.addItem((actions) => {
+ actions.setIcon(null);
+ actions.setTitle("Actions");
+ const actionsDom = actions.dom;
+ setAttributes(actions.titleEl, { style: "font-weight: 700" });
+ const reloadButton = new obsidian.ButtonComponent(actionsDom);
+ const folderButton = new obsidian.ButtonComponent(actionsDom);
+ const addButton = new obsidian.ButtonComponent(actionsDom);
+ setAttributes(reloadButton.buttonEl, { style: "margin-right: 3px" });
+ setAttributes(addButton.buttonEl, { style: "margin-left: 3px" });
+ reloadButton
+ .setIcon("ms-reload")
+ .setClass("MySnippetsButton")
+ .setClass("MS-Reload")
+ .setTooltip("Reload snippets")
+ .onClick((e) => {
+ customCss.requestLoadSnippets();
+ new obsidian.Notice("Snippets reloaded");
+ });
+ folderButton
+ .setIcon("ms-folder")
+ .setClass("MySnippetsButton")
+ .setClass("MS-Folder")
+ .setTooltip("Open snippets folder")
+ .onClick((e) => {
+ app.openWithDefaultApp(snippetsFolder);
+ });
+ addButton
+ .setIcon("ms-add")
+ .setClass("MySnippetsButton")
+ .setClass("MS-Folder")
+ .setTooltip("Create new snippet")
+ .onClick((e) => {
+ new CreateSnippetModal(app, plugin).open();
+ });
+ });
+ menu.showAtPosition({
+ x: windowX - 15,
+ y: windowY - 37,
+ });
+ }
+}
+
+const icons = {
+ "art-fill": ``,
+ "art-brush": ``,
+ "ms-create-file": ``,
+ "pantone-line": ``,
+ "ms-code": ``,
+ "ms-reload": ``,
+ "ms-folder": ``,
+ "ms-snippet": ``,
+ "ms-add": ``,
+ "ms-save": ``,
+ "ms-delete": ``,
+ "ms-css-file": ``,
+};
+function addIcons() {
+ Object.keys(icons).forEach((key) => {
+ obsidian.addIcon(key, icons[key]);
+ });
+}
+
+class MySnippetsSettingTab extends obsidian.PluginSettingTab {
+ constructor(app, plugin) {
+ super(app, plugin);
+ this.plugin = plugin;
+ }
+ display() {
+ const { containerEl } = this;
+ containerEl.empty();
+ containerEl.createEl("h1", { text: "MySnippets" });
+ containerEl.createEl("p", { text: "Created by " }).createEl("a", {
+ text: "Chetachi 👩🏽💻",
+ href: "https://github.com/chetachiezikeuzor",
+ });
+ containerEl.createEl("h2", { text: "Plugin Settings" });
+ new obsidian.Setting(containerEl)
+ .setName("Glass menu effect")
+ .setDesc("Choose to change the background from the secondary background color of your theme to a glass background.")
+ .addToggle((toggle) => {
+ toggle
+ .setValue(this.plugin.settings.aestheticStyle)
+ .onChange((value) => __awaiter(this, void 0, void 0, function* () {
+ this.plugin.settings.aestheticStyle = value;
+ this.plugin.saveSettings();
+ }));
+ });
+ new obsidian.Setting(containerEl)
+ .setName("Auto open new snippet")
+ .setDesc("Choose whether or not to open CSS snippet files immeditaley after creating them. It will open in your default app.")
+ .addToggle((toggle) => {
+ toggle
+ .setValue(this.plugin.settings.openSnippetFile)
+ .onChange((value) => __awaiter(this, void 0, void 0, function* () {
+ this.plugin.settings.openSnippetFile = value;
+ this.plugin.saveSettings();
+ }));
+ });
+ new obsidian.Setting(containerEl)
+ .setName("Set new snippet status")
+ .setDesc("Choose whether or not to have newly created CSS snippet files toggled on automatically upon creation.")
+ .addToggle((toggle) => {
+ toggle
+ .setValue(this.plugin.settings.snippetEnabledStatus)
+ .onChange((value) => __awaiter(this, void 0, void 0, function* () {
+ this.plugin.settings.snippetEnabledStatus = value;
+ this.plugin.saveSettings();
+ }));
+ });
+ const stylingTemplateSetting = new obsidian.Setting(containerEl);
+ stylingTemplateSetting.settingEl.setAttribute("style", "display: grid; grid-template-columns: 1fr;");
+ stylingTemplateSetting
+ .setName("CSS snippet template")
+ .setDesc("Set default CSS styling as a template for new CSS files you choose to create.");
+ const stylingTemplateContent = new obsidian.TextAreaComponent(stylingTemplateSetting.controlEl);
+ setAttributes(stylingTemplateContent.inputEl, {
+ style: "margin-top: 12px; width: 100%; height: 32vh;",
+ class: "ms-css-editor",
+ });
+ stylingTemplateContent
+ .setValue(this.plugin.settings.stylingTemplate)
+ .onChange((value) => __awaiter(this, void 0, void 0, function* () {
+ this.plugin.settings.stylingTemplate = value;
+ this.plugin.saveSettings();
+ }));
+ const msDonationDiv = containerEl.createEl("div", {
+ cls: "msDonationSection",
+ });
+ const donateText = createEl("p");
+ donateText.appendText("If you like this Plugin and are considering donating to support continued development, use the buttons below!");
+ msDonationDiv.appendChild(donateText);
+ msDonationDiv.appendChild(paypalButton("https://paypal.me/chelseaezikeuzor"));
+ msDonationDiv.appendChild(buyMeACoffeeButton("https://www.buymeacoffee.com/chetachi"));
+ msDonationDiv.appendChild(kofiButton("https://ko-fi.com/chetachi"));
+ }
+}
+const buyMeACoffeeButton = (link) => {
+ const a = createEl("a");
+ a.setAttribute("href", link);
+ a.addClass("buymeacoffee-chetachi-img");
+ a.innerHTML = `
`;
+ return a;
+};
+const paypalButton = (link) => {
+ const a = createEl("a");
+ a.setAttribute("href", link);
+ a.addClass("buymeacoffee-chetachi-img");
+ a.innerHTML = ``;
+ return a;
+};
+const kofiButton = (link) => {
+ const a = createEl("a");
+ a.setAttribute("href", link);
+ a.addClass("buymeacoffee-chetachi-img");
+ a.innerHTML = `
`;
+ return a;
+};
+
+const DEFAULT_SETTINGS = {
+ aestheticStyle: false,
+ snippetViewPosition: "left",
+ openSnippetFile: true,
+ stylingTemplate: "",
+ snippetEnabledStatus: false,
+};
+
+class MySnippetsPlugin extends obsidian.Plugin {
+ onload() {
+ return __awaiter(this, void 0, void 0, function* () {
+ console.log(`MySnippets v${this.manifest.version} loaded`);
+ addIcons();
+ yield this.loadSettings();
+ this.addSettingTab(new MySnippetsSettingTab(this.app, this));
+ this.app.workspace.onLayoutReady(() => {
+ setTimeout(() => {
+ this.setupSnippetsStatusBarIcon();
+ });
+ });
+ });
+ }
+ setupSnippetsStatusBarIcon() {
+ this.statusBarIcon = this.addStatusBarItem();
+ this.statusBarIcon.addClass("MiniSettings-statusbar-button");
+ this.statusBarIcon.addClass("mod-clickable");
+ setAttributes(this.statusBarIcon, {
+ "aria-label": "Configure Snippets",
+ "aria-label-position": "top",
+ });
+ obsidian.setIcon(this.statusBarIcon, "pantone-line");
+ this.statusBarIcon.addEventListener("click", () => {
+ snippetsMenu(this.app, this, this.settings);
+ });
+ this.addCommand({
+ id: `open-snippets-menu`,
+ name: `Open snippets in status bar`,
+ icon: `pantone-line`,
+ callback: () => __awaiter(this, void 0, void 0, function* () {
+ snippetsMenu(this.app, this, this.settings);
+ }),
+ });
+ this.addCommand({
+ id: `open-snippets-create`,
+ name: `Create new CSS snippet`,
+ icon: `ms-css-file`,
+ callback: () => __awaiter(this, void 0, void 0, function* () {
+ new CreateSnippetModal(this.app, this).open();
+ }),
+ });
+ }
+ onunload() {
+ console.log("MySnippets unloaded");
+ }
+ loadSettings() {
+ return __awaiter(this, void 0, void 0, function* () {
+ this.settings = Object.assign({}, DEFAULT_SETTINGS, yield this.loadData());
+ });
+ }
+ saveSettings() {
+ return __awaiter(this, void 0, void 0, function* () {
+ yield this.saveData(this.settings);
+ });
+ }
+}
+
+module.exports = MySnippetsPlugin;
+
+
+/* nosourcemap */
\ No newline at end of file
diff --git a/.obsidian/plugins/mysnippets-plugin/manifest.json b/.obsidian/plugins/mysnippets-plugin/manifest.json
new file mode 100644
index 00000000..cc04fee3
--- /dev/null
+++ b/.obsidian/plugins/mysnippets-plugin/manifest.json
@@ -0,0 +1,10 @@
+{
+ "id": "mysnippets-plugin",
+ "name": "MySnippets",
+ "version": "1.2.3",
+ "minAppVersion": "0.15.3",
+ "description": "MySnippets is a plugin that adds a status bar menu allowing the user to quickly toggle their snippets on and off 🖌.",
+ "author": "chetachi",
+ "authorUrl": "https://github.com/chetachiezikeuzor",
+ "isDesktopOnly": true
+}
diff --git a/.obsidian/plugins/mysnippets-plugin/styles.css b/.obsidian/plugins/mysnippets-plugin/styles.css
new file mode 100644
index 00000000..f6751dac
--- /dev/null
+++ b/.obsidian/plugins/mysnippets-plugin/styles.css
@@ -0,0 +1,132 @@
+.ms-css-editor {
+ width: 100%;
+ height: 36vh;
+ margin-top: 12px;
+ text-align: left;
+ white-space: pre;
+ word-wrap: normal;
+ overflow-x: scroll;
+ padding: 6px 10px;
+ font-size: 0.875em;
+ border-radius: 6px;
+ white-space: pre-wrap;
+ color: var(--text-muted);
+ font-family: var(--font-monospace);
+ background-color: var(--background-primary);
+ border: 1px solid var(--background-modifier-border);
+}
+
+/*----------------------------------------------------------------
+STATUS BAR MENU
+----------------------------------------------------------------*/
+
+.MiniSettings-statusbar-button {
+ cursor: pointer;
+ display: flex;
+ align-items: center;
+ line-height: 1;
+}
+
+.MySnippets-statusbar-menu {
+ width: 290px;
+ max-height: calc(100% - 90px);
+}
+
+.MySnippets-statusbar-menu .menu-item-icon {
+ display: none;
+}
+
+.MySnippets-statusbar-menu .menu-item {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ flex-direction: row;
+}
+
+.MySnippets-statusbar-menu .menu-item.settings-item {
+ font-size: 12px;
+ text-align: center;
+ line-height: 1;
+ border-radius: 5px;
+ height: auto;
+ padding: 8px 5px 0px 5px;
+ margin: 0 auto;
+ width: fit-content;
+ color: var(--text-faint);
+}
+
+.MySnippets-statusbar-menu.menu-item:hover,
+.MySnippets-statusbar-menu.menu-item .selected:hover,
+.MySnippets-statusbar-menu
+ .menu-item.selected:not(.is-disabled):not(.is-label) {
+ background-color: transparent;
+}
+
+.MySnippets-statusbar-menu .menu-item-title {
+ margin-right: 10px;
+ width: 60%;
+ line-height: initial;
+ overflow-x: hidden;
+ text-overflow: ellipsis;
+}
+
+.MS-OpenSnippet {
+ padding: 3px 10px;
+ border-radius: 6px;
+ margin-right: 0;
+ margin-left: 8px;
+ display: flex;
+ background-color: var(--interactive-accent);
+}
+
+.MS-OpenSnippet svg {
+ height: 1.35em;
+ width: 1.35em;
+}
+
+.MS-OpenSnippet:hover {
+ background-color: var(--interactive-accent);
+}
+
+.MySnippetsButton {
+ width: auto;
+ padding: 5px 14px;
+ margin-right: 0;
+ margin-top: 4px;
+ border-radius: 6px;
+ display: flex;
+ font-size: 12px !important;
+}
+
+.MySnippetsButton svg {
+ height: 1.35em;
+ margin: auto;
+ width: 1.35em;
+}
+
+.MySnippetsButton.MS-Reload,
+.MySnippetsButton.MS-Reload:hover,
+.MySnippetsButton.MS-Folder,
+.MySnippetsButton.MS-Folder:hover {
+ background-color: var(--interactive-accent);
+}
+
+.MySnippets-statusbar-menu .menu-item.buttonitem {
+ justify-self: space-between;
+}
+
+.menu.MySnippets-statusbar-menu {
+ overflow: auto;
+}
+
+/*----------------------------------------------------------------
+MYSNIPPETS SUPPORT
+----------------------------------------------------------------*/
+
+.msDonationSection {
+ width: 65%;
+ height: 50vh;
+ margin: 0 auto;
+ text-align: center;
+ color: var(--text-normal);
+}
diff --git a/.obsidian/plugins/obsidian-completr/blacklisted_suggestions.txt b/.obsidian/plugins/obsidian-completr/blacklisted_suggestions.txt
index 44396ad4..83e14c76 100644
--- a/.obsidian/plugins/obsidian-completr/blacklisted_suggestions.txt
+++ b/.obsidian/plugins/obsidian-completr/blacklisted_suggestions.txt
@@ -123,4 +123,5 @@ Summary
\deg
\int
\notChar
-\pitchfork
\ No newline at end of file
+\pitchfork
+\operatorname{#}
\ No newline at end of file
diff --git a/.obsidian/plugins/obsidian-latex-suite/data.json b/.obsidian/plugins/obsidian-latex-suite/data.json
index ac162edd..0015aad8 100644
--- a/.obsidian/plugins/obsidian-latex-suite/data.json
+++ b/.obsidian/plugins/obsidian-latex-suite/data.json
@@ -1,5 +1,5 @@
{
- "snippets": "[\n // textes pour les démonstrations\n {trigger: \"dlsq\", replacement: \"de là suit que\", options: \"tA\"},\n\n // phrases de définition communes\n {trigger: \"deam\", replacement: \"Dans l'[[espace mesuré]] $(E, \\\\mathcal{A}, \\\\mu)$\", options: \"tA\"},\n\n // textes autres\n {trigger: \"mupp\", replacement: \"$\\\\mu$-presque partout\", options: \"tA\"},\n \n // Math mode\n {trigger: \"mk\", replacement: \"$$0$\", options: \"tA\"},\n // {trigger: \"dm\", replacement: \"$$\\n$0\\n$$\", options: \"tA\"},\n {trigger: \"beg\", replacement: \"\\\\begin{$0}\\n$1\\n\\\\end{$0}\", options: \"mA\"},\n\n {trigger: \"disp\", replacement: \"\\\\displaystyle \", options: \"smA\"},\n // Dashes\n //{trigger: \"--\", replacement: \"–\", options: \"tA\"},\n //{trigger: \"–-\", replacement: \"—\", options: \"tA\"},\n //{trigger: \"—-\", replacement: \"---\", options: \"tA\"},\n\n\n // Greek letters\n {trigger: \":a\", replacement: \"\\\\alpha\", options: \"mA\"},\n {trigger: \":A\", replacement: \"\\\\alpha\", options: \"mA\"},\n {trigger: \":b\", replacement: \"\\\\beta\", options: \"mA\"},\n {trigger: \":B\", replacement: \"\\\\beta\", options: \"mA\"},\n {trigger: \":c\", replacement: \"\\\\chi\", options: \"mA\"},\n {trigger: \":C\", replacement: \"\\\\chi\", options: \"mA\"},\n {trigger: \":g\", replacement: \"\\\\gamma\", options: \"mA\"},\n {trigger: \":G\", replacement: \"\\\\Gamma\", options: \"mA\"},\n {trigger: \":d\", replacement: \"\\\\delta\", options: \"mA\"},\n {trigger: \":D\", replacement: \"\\\\Delta\", options: \"mA\"},\n {trigger: \"@e\", replacement: \"\\\\epsilon\", options: \"mA\"},\n {trigger: \"@E\", replacement: \"\\\\epsilon\", options: \"mA\"},\n {trigger: \":e\", replacement: \"\\\\varepsilon\", options: \"mA\"},\n {trigger: \":E\", replacement: \"\\\\varepsilon\", options: \"mA\"},\n {trigger: \":z\", replacement: \"\\\\zeta\", options: \"mA\"},\n {trigger: \":Z\", replacement: \"\\\\zeta\", options: \"mA\"},\n {trigger: \":t\", replacement: \"\\\\theta\", options: \"mA\"},\n {trigger: \":T\", replacement: \"\\\\Theta\", options: \"mA\"},\n {trigger: \":k\", replacement: \"\\\\kappa\", options: \"mA\"},\n {trigger: \":K\", replacement: \"\\\\kappa\", options: \"mA\"},\n {trigger: \":l\", replacement: \"\\\\lambda\", options: \"mA\"},\n {trigger: \":L\", replacement: \"\\\\Lambda\", options: \"mA\"},\n {trigger: \":m\", replacement: \"\\\\mu\", options: \"mA\"},\n {trigger: \":M\", replacement: \"\\\\mu\", options: \"mA\"},\n {trigger: \":r\", replacement: \"\\\\rho\", options: \"mA\"},\n {trigger: \":R\", replacement: \"\\\\rho\", options: \"mA\"},\n {trigger: \":s\", replacement: \"\\\\sigma\", options: \"mA\"},\n {trigger: \":S\", replacement: \"\\\\Sigma\", options: \"mA\"},\n {trigger: \"ome\", replacement: \"\\\\omega\", options: \"mA\"},\n {trigger: \":p\", replacement: \"\\\\varphi\", options: \"mA\"},\n {trigger: \":o\", replacement: \"\\\\omega\", options: \"mA\"},\n {trigger: \":O\", replacement: \"\\\\Omega\", options: \"mA\"},\n {trigger: \"([^\\\\\\\\])(${GREEK}|${SYMBOL})\", replacement: \"[[0]]\\\\[[1]]\", options: \"rmA\", description: \"Add backslash before greek letters and symbols\"},\n\n\n // Insert space after greek letters and symbols, etc\n {trigger: \"\\\\\\\\(${GREEK}|${SYMBOL})([A-Za-ik-z])\", replacement: \"\\\\[[0]] [[1]]\", options: \"rmA\"},\n {trigger: \"\\\\\\\\(${GREEK}|${SYMBOL}) sr\", replacement: \"\\\\[[0]]^{2}\", options: \"rmA\"},\n {trigger: \"\\\\\\\\(${GREEK}|${SYMBOL}) cb\", replacement: \"\\\\[[0]]^{3}\", options: \"rmA\"},\n {trigger: \"\\\\\\\\(${GREEK}|${SYMBOL}) rd\", replacement: \"\\\\[[0]]^{$0}$1\", options: \"rmA\"},\n {trigger: \"\\\\\\\\(${GREEK}|${SYMBOL}) hat\", replacement: \"\\\\hat{\\\\[[0]]}\", options: \"rmA\"},\n {trigger: \"\\\\\\\\(${GREEK}|${SYMBOL}) dot\", replacement: \"\\\\dot{\\\\[[0]]}\", options: \"rmA\"},\n {trigger: \"\\\\\\\\(${GREEK}),\\\\.\", replacement: \"\\\\mathbf{\\\\[[0]]}\", options: \"rmA\"},\n {trigger: \"\\\\\\\\(${GREEK})\\\\.,\", replacement: \"\\\\mathbf{\\\\[[0]]}\", options: \"rmA\"},\n\n\n // Mathematical fonts\n {trigger: \"te\", replacement: \"\\\\text{$0}\", options: \"mA\"},\n {trigger: \"bf\", replacement: \"\\\\mathbf{$0}\", options: \"mA\"},\n {trigger: \"scr\", replacement: \"\\\\mathscr{$0}\", options: \"mA\"},\n {trigger: \"cal\", replacement: \"\\\\mathcal{$0}\", options: \"mA\"},\n {trigger: \"bb\", replacement: \"\\\\mathbb{$0}\", options: \"mA\"},\n {trigger: \"frak\", replacement: \"\\\\mathfrak{$0}\", options: \"mA\"},\n {trigger: \"([a-zA-Z]),\\\\.\", replacement: \"\\\\mathbf{[[0]]}\", options: \"rmA\"},\n {trigger: \"([a-zA-Z])\\\\.,\", replacement: \"\\\\mathbf{[[0]]}\", options: \"rmA\"},\n\n // Operations\n {trigger: \"sr\", replacement: \"^{2}\", options: \"mA\"},\n {trigger: \"cb\", replacement: \"^{3}\", options: \"mA\"},\n {trigger: \"rd\", replacement: \"^{$0}$1\", options: \"mA\"},\n {trigger: \"sd\", replacement: \"_{$0}$1\", options: \"mA\"},\n {trigger: \"_\", replacement: \"_{$0}$1\", options: \"mA\"},\n {trigger: \"sts\", replacement: \"_\\\\text{$0}\", options: \"rmA\"},\n {trigger: \"sq\", replacement: \"\\\\sqrt{ $0 }$1\", options: \"mA\"},\n {trigger: \"//\", replacement: \"\\\\frac{$0}{$1}$2\", options: \"mA\"},\n {trigger: \"rm\", replacement: \"\\\\mathrm{$0}$1\", options: \"mA\"},\n {trigger: \"conj\", replacement: \"^{*}\", options: \"mA\"},\n {trigger: \"([^\\\\\\\\])bar\", replacement: \"[[0]]\\\\overline{$0}\", options: \"rmA\"},\n {trigger: \"hat\", replacement: \"\\\\hat{$0}\", options: \"mA\"},\n {trigger: \"dot\", replacement: \"\\\\dot{$0}\", options: \"mA\"},\n {trigger: \"([^\\\\\\\\])(arcsin|arccos|arctan|arccot|arccsc|arcsec|sin|cos|tan|cot)\", replacement: \"[[0]]\\\\[[1]]\", options: \"rmA\"},\n {trigger: \"(th|ch|sh)\", replacement: \"\\\\mathrm{[[0]]}\", options: \"rmA\"},\n {trigger: \"\\\\\\\\(arcsin|arccos|arctan|arccot|arccsc|arcsec|sin|cos|tan|cot|csc|sh|ch|th)([A-Za-gi-z])\", replacement: \"\\\\[[0]] [[1]]\", options: \"rmA\"}, // Insert space after trig funcs. Skips letter \"h\" to allow sinh, cosh, etc.\n {trigger: \"\\\\\\\\(arcsinh|arccosh|arctanh|arccoth|arcsch|arcsech|sinh|cosh|tanh|coth|csch|sh|ch|th)([A-Za-z])\", replacement: \"\\\\[[0]] [[1]]\", options: \"rmA\"}, // Insert space after trig funcs\n {trigger: \"trace\", replacement: \"\\\\mathrm{Tr}\", options: \"mA\"},\n {trigger: \"trans\", replacement: \"\\\\,^T\\\\!\", options: \"mA\"},\n\n // automatic stuff (subscript, bar, hat...)\n {trigger: \"([A-Za-z])(\\\\d)\", replacement: \"[[0]]_[[1]]\", options: \"rmA\", description: \"Auto letter subscript\", priority: -1},\n {trigger: \"\\\\\\\\mathbf{([A-Za-z])}(\\\\d)\", replacement: \"\\\\mathbf{[[0]]}_{[[1]]}\", options: \"rmA\"},\n {trigger: \"([A-Za-z])_(\\\\d\\\\d)\", replacement: \"[[0]]_{[[1]]}\", options: \"rmA\"},\n {trigger: \"\\\\hat{([A-Za-z])}(\\\\d)\", replacement: \"hat{[[0]]}_{[[1]]}\", options: \"rmA\"},\n {trigger: \"([a-zA-Z])bar\", replacement: \"\\\\overline{[[0]]}\", options: \"rmA\"},\n {trigger: \"([a-zA-Z])hat\", replacement: \"\\\\hat{[[0]]}\", options: \"rmA\"},\n {trigger: \"([a-zA-Z])ddot\", replacement: \"\\\\ddot{[[0]]}\", options: \"rmA\"},\n {trigger: \"ddot\", replacement: \"\\\\ddot{$0}\", options: \"mA\"},\n {trigger: \"([a-zA-Z])dot\", replacement: \"\\\\dot{[[0]]}\", options: \"rmA\"},\n \n\n\n // Visual operations - don't work with vim mode\n {trigger: \"{\", replacement: \"\\\\underbrace{ ${VISUAL} }_{ $0 }\", options: \"mA\"},\n {trigger: \"#\", replacement: \"\\\\underset{ $0 }{ ${VISUAL} }\", options: \"mA\"},\n {trigger: \"~\", replacement: \"\\\\cancel{ ${VISUAL} }\", options: \"mA\"},\n {trigger: \"^\", replacement: \"\\\\cancelto{ $0 }{ ${VISUAL} }\", options: \"mA\"},\n {trigger: \"S\", replacement: \"\\\\sqrt{ ${VISUAL} }\", options: \"mA\"},\n \n\n // centered \\not\n {trigger: \"cnot\", replacement: \"\\\\centernot{$0}\", options: \"mA\"},\n\n\n // Symbols\n {trigger: \"ooo\", replacement: \"\\\\infty\", options: \"mA\"},\n {trigger: \"pm\", replacement: \"\\\\pm\", options: \"m\"},\n {trigger: \"...\", replacement: \"\\\\dots\", options: \"mA\"},\n {trigger: \"\\\\dots.\", replacement: \"\\\\cdots\", options: \"mA\"},\n {trigger: \"sto\", replacement: \",\\\\dots,\", options: \"mA\"},\n {trigger: \"->\", replacement: \"\\\\to\", options: \"mA\"},\n {trigger: \"to\", replacement: \"\\\\to\", options: \"mA\"},\n {trigger: \"<->\", replacement: \"\\\\leftrightarrow \", options: \"mA\"},\n {trigger: \"!>\", replacement: \"\\\\mapsto\", options: \"mA\"},\n {trigger: \"|->\", replacement: \"\\\\mapsto\", options: \"mA\"},\n {trigger: \"maps\", replacement: \"\\\\mapsto\", options: \"mA\"},\n {trigger: \"^->\", replacement: \"\\\\vec{$0}\", options: \"mA\", priority: 1},\n {trigger: \"^-->\", replacement: \"\\\\overrightarrow{$0}\", options: \"mA\", priority: 1},\n {trigger: \"tto\", replacement: \"\\\\xrightarrow{$0}\", options: \"mA\", priority: 1},\n {trigger: \"invs\", replacement: \"^{-1}\", options: \"mA\"},\n {trigger: \"~~\", replacement: \"\\\\sim\", options: \"mA\"},\n {trigger: \"\\\\sim ~\", replacement: \"\\\\approx\", options: \"mA\"},\n {trigger: \"prop\", replacement: \"\\\\propto\", options: \"mA\"},\n {trigger: \"nabl\", replacement: \"\\\\nabla\", options: \"mA\"},\n {trigger: \"xx\", replacement: \"\\\\times\", options: \"mA\"},\n {trigger: \"**\", replacement: \"\\\\cdot\", options: \"mA\"},\n {trigger: \"pal\", replacement: \"\\\\parallel\", options: \"mA\"},\n {trigger: \"===\", replacement: \"\\\\equiv\", options: \"mA\"},\n {trigger: \"Sq\", replacement: \"\\\\square\", options: \"mA\"},\n {trigger: \"tl\", replacement: \"\\\\vartriangleleft \", options: \"mA\"},\n\n // Operators\n {trigger: \"lts\", replacement: \"\\\\limits\", options: \"mA\"},\n {trigger: \"sum\", replacement: \"\\\\sum\\\\limits\", options: \"mA\"},\n {trigger: \"prod\", replacement: \"\\\\prod\\\\limits\", options: \"mA\"},\n {trigger: \"lim\", replacement: \"\\\\lim\\\\limits_{ ${0:n} \\\\to ${1:\\\\infty} } $2\", options: \"mA\"},\n {trigger: \"sup\", replacement: \"\\\\sup\\\\limits$0\", options: \"mA\"},\n {trigger: \"inf\", replacement: \"\\\\inf\\\\limits$0\", options: \"mA\"},\n {trigger: \"lsup\", replacement: \"\\\\limsup\\\\limits_{ ${0:n} \\\\to ${1:\\\\infty} } $2\", options: \"mA\"},\n {trigger: \"linf\", replacement: \"\\\\liminf\\\\limits_{ ${0:n} \\\\to ${1:\\\\infty} } $2\", options: \"mA\"},\n \n // Logic\n {trigger: \"||\", replacement: \"\\\\mid\", options: \"mA\"},\n {trigger: \"and\", replacement: \"\\\\wedge\", options: \"mA\"},\n {trigger: \"orr\", replacement: \"\\\\vee\", options: \"mA\"},\n {trigger: \"inn\", replacement: \"\\\\in\", options: \"mA\"},\n {trigger: \"nii\", replacement: \"\\\\ni\", options: \"mA\"},\n {trigger: \"=>\", replacement: \"\\\\implies\", options: \"mA\"},\n {trigger: \"=<\", replacement: \"\\\\impliedby\", options: \"mA\"},\n {trigger: \"iff\", replacement: \"\\\\iff\", options: \"mA\"},\n {trigger: \"e\\\\xi sts\", replacement: \"\\\\exists\", options: \"mA\", priority: 1},\n {trigger: \"fora\\\\ll\", replacement: \"\\\\forall\", options: \"rmA\", priority: 1},\n {trigger: \"tq\", replacement: \",\\\\quad \", options: \"mA\", priority: 1},\n {trigger: \"!=\", replacement: \"\\\\neq \", options: \"mA\"},\n {trigger: \"neq\", replacement: \"\\\\neq \", options: \"mA\"},\n {trigger: \">=\", replacement: \"\\\\geq \", options: \"mA\"},\n {trigger: \"<=\", replacement: \"\\\\leq \", options: \"mA\"},\n {trigger: \">>\", replacement: \"\\\\gg\", options: \"mA\"},\n {trigger: \"<<\", replacement: \"\\\\ll\", options: \"mA\"},\n \n // Sets (ensembles)\n {trigger: \"sm\", replacement: \"\\\\setminus\", options: \"mA\"},\n {trigger: \"set\", replacement: \"\\\\{ $0 \\\\}$1\", options: \"mA\"},\n {trigger: \"bag\", replacement: \"\\\\{\\\\!\\\\!\\\\{ $0 \\\\}\\\\!\\\\!\\\\}$1\", options: \"mA\"},\n {trigger: \"ems\", replacement: \"\\\\emptyset\", options: \"mA\"},\n {trigger: \"##\", replacement: \"\\\\#\", options: \"mA\"}, // cardinal\n {trigger: \"cap\", replacement: \"\\\\cap\", options: \"mA\"},\n {trigger: \"cup\", replacement: \"\\\\cup\", options: \"mA\"},\n {trigger: \":w\", replacement: \"\\\\subset\", options: \"mA\"},\n {trigger: \":x\", replacement: \"\\\\supset\", options: \"mA\"},\n {trigger: \"\\\\subset eq\", replacement: \"\\\\subseteq\", options: \"mA\"},\n {trigger: \"\\\\subset neq\", replacement: \"\\\\subsetneq\", options: \"mA\"},\n {trigger: \"\\\\subseteq q\", replacement: \"\\\\subseteqq\", options: \"mA\"},\n {trigger: \"\\\\subsetneq q\", replacement: \"\\\\subsetneqq\", options: \"mA\"},\n {trigger: \"\\\\supset eq\", replacement: \"\\\\supseteq\", options: \"mA\"},\n {trigger: \"\\\\supset neq\", replacement: \"\\\\supsetneq\", options: \"mA\"},\n {trigger: \"\\\\supseteq q\", replacement: \"\\\\supseteqq\", options: \"mA\"},\n {trigger: \"\\\\supsetneq q\", replacement: \"\\\\supsetneqq\", options: \"mA\"},\n\n\n // Sequences (suites)\n {trigger: \"xnn\", replacement: \"x_{n}\", options: \"mA\"},\n {trigger: \"xii\", replacement: \"x_{i}\", options: \"mA\"},\n {trigger: \"xjj\", replacement: \"x_{j}\", options: \"mA\"},\n {trigger: \"xkk\", replacement: \"x_{k}\", options: \"mA\"},\n {trigger: \"xp1\", replacement: \"x_{n+1}\", options: \"mA\"},\n {trigger: \"ynn\", replacement: \"y_{n}\", options: \"mA\"},\n {trigger: \"yii\", replacement: \"y_{i}\", options: \"mA\"},\n {trigger: \"yjj\", replacement: \"y_{j}\", options: \"mA\"},\n {trigger: \"ykk\", replacement: \"y_{k}\", options: \"mA\"},\n\n\n // letters (special fonts)\n {trigger: \"ell\", replacement: \"\\\\ell\", options: \"mA\"},\n {trigger: \"lll\", replacement: \"\\\\ell\", options: \"mA\"},\n {trigger: \"LL\", replacement: \"\\\\mathcal{L}\", options: \"mA\"},\n {trigger: \"HH\", replacement: \"\\\\mathcal{H}\", options: \"mA\"},\n {trigger: \"\\\\mathbb{(N|Z|Q|D|R|C|H)}(\\\\*|\\\\+|-)\", replacement: \"\\mathbb{[[0]]}^{[[1]]$0}$1\", options: \"rmA\"},\n {trigger: \"CC\", replacement: \"\\\\mathbb{C}\", options: \"mA\"},\n {trigger: \"RR\", replacement: \"\\\\mathbb{R}\", options: \"mA\"},\n {trigger: \"\\\\mathbb{R}bar\", replacement: \"\\overline{\\\\mathbb{R}}\", options: \"rmA\"},\n {trigger: \"ZZ\", replacement: \"\\\\mathbb{Z}\", options: \"mA\"},\n {trigger: \"NN\", replacement: \"\\\\mathbb{N}\", options: \"mA\"},\n {trigger: \"QQ\", replacement: \"\\\\mathbb{Q}\", options: \"mA\"},\n {trigger: \"II\", replacement: \"\\\\mathbb{1}\", options: \"mA\"},\n {trigger: \"\\\\mathbb{1}I\", replacement: \"\\\\hat{\\\\mathbb{1}}\", options: \"mA\"},\n {trigger: \"AA\", replacement: \"\\\\mathcal{A}\", options: \"mA\"},\n {trigger: \"BB\", replacement: \"\\\\mathbb{B}\", options: \"mA\"},\n {trigger: \"EE\", replacement: \"\\\\mathbf{E}\", options: \"mA\"},\n \n\n // Algebra (algèbre)\n {trigger: \"[zZ]_?{?(n|p|q|[0-9]+)}?[zZ]\", replacement: \"\\\\mathbb{Z}/[[0]]\\\\mathbb{Z}\", options: \"rmA\"},\n {trigger: \"dist\", replacement: \"\\\\trianglelefteq\", options: \"mA\", description: \"sous groupe distingué\"},\n {trigger: \"orb\", replacement: \"\\\\operatorname{Orb}\", options: \"mA\"},\n\n\n\n // Unit vecttors\n /*\n {trigger: \":i\", replacement: \"\\\\mathbf{i}\", options: \"mA\"},\n {trigger: \":j\", replacement: \"\\\\mathbf{j}\", options: \"mA\"},\n {trigger: \":k\", replacement: \"\\\\mathbf{k}\", options: \"mA\"},\n {trigger: \":x\", replacement: \"\\\\hat{\\\\mathbf{x}}\", options: \"mA\"},\n {trigger: \":y\", replacement: \"\\\\hat{\\\\mathbf{y}}\", options: \"mA\"},\n {trigger: \":z\", replacement: \"\\\\hat{\\\\mathbf{z}}\", options: \"mA\"},\n */\n\n\n // Derivatives\n {trigger: \"par\", replacement: \"\\\\frac{ \\\\partial ${0:y} }{ \\\\partial ${1:x} } $2\", options: \"mA\"},\n {trigger: \"pa2\", replacement: \"\\\\frac{ \\\\partial^{2} ${0:y} }{ \\\\partial ${1:x}^{2} } $2\", options: \"mA\"},\n {trigger: \"pa3\", replacement: \"\\\\frac{ \\\\partial^{3} ${0:y} }{ \\\\partial ${1:x}^{3} } $2\", options: \"mA\"},\n {trigger: \"pa([A-Za-z])([A-Za-z])\", replacement: \"\\\\frac{ \\\\partial [[0]] }{ \\\\partial [[1]] } \", options: \"rm\"},\n {trigger: \"pa([A-Za-z])([A-Za-z])([A-Za-z])\", replacement: \"\\\\frac{ \\\\partial^{2} [[0]] }{ \\\\partial [[1]] \\\\partial [[3]] } \", options: \"rm\"},\n {trigger: \"pa([A-Za-z])([A-Za-z])2\", replacement: \"\\\\frac{ \\\\partial^{2} [[0]] }{ \\\\partial [[1]]^{2} } \", options: \"rmA\"},\n {trigger: \"de([A-Za-z])([A-Za-z])\", replacement: \"\\\\frac{ d[[0]] }{ d[[1]] } \", options: \"rm\"},\n {trigger: \"de([A-Za-z])([A-Za-z])2\", replacement: \"\\\\frac{ d^{2}[[0]] }{ d[[1]]^{2} } \", options: \"rmA\"},\n {trigger: \"dd(t|x)\", replacement: \"\\\\frac{d}{d[[0]]} \", options: \"rmA\"},\n\n\n\n // Integrals\n {trigger: \"oinf\", replacement: \"\\\\int_{0}^{\\\\infty} $0 \\\\, d${1:x} $2\", options: \"mA\"},\n {trigger: \"infi\", replacement: \"\\\\int_{-\\\\infty}^{\\\\infty} $0 \\\\, d${1:x} $2\", options: \"mA\"},\n {trigger: \"dint\", replacement: \"\\\\int_{${0:0}}^{${1:1}} $2 \\\\, d${3:x} $4\", options: \"mA\"},\n {trigger: \"oint\", replacement: \"\\\\oint\", options: \"mA\"},\n {trigger: \"iiint\", replacement: \"\\\\iiint\", options: \"mA\"},\n {trigger: \"iint\", replacement: \"\\\\iint\", options: \"mA\"},\n {trigger: \"int\", replacement: \"\\\\int$0 \\\\, d${1:x} $2\", options: \"mA\"},\n {trigger: \"mint\", replacement: \"\\\\int$0 \\\\, d\\\\mu $1\", options: \"mA\"},\n {trigger: \"lint\", replacement: \"\\\\int_{${0:\\\\mathbb{R}}} $1 \\\\, \\\\lambda(dx) $2\", options: \"mA\"},\n\n {trigger: \"cpm\", replacement: \"C^0_{pm}($0)\", options: \"mA\"}, // fonction continue par morceaux\n\n\n // Physics\n {trigger: \"kbt\", replacement: \"k_{B}T\", options: \"mA\"},\n\n\n // Quantum mechanics\n /*\n {trigger: \"hba\", replacement: \"\\\\hbar\", options: \"mA\"},\n {trigger: \"dag\", replacement: \"^{\\\\dagger}\", options: \"mA\"},\n {trigger: \"bra\", replacement: \"\\\\bra{$0} $1\", options: \"mA\"},\n {trigger: \"ket\", replacement: \"\\\\ket{$0} $1\", options: \"mA\"},\n {trigger: \"brk\", replacement: \"\\\\braket{ $0 | $1 } $2\", options: \"mA\"},\n {trigger: \"\\\\\\\\bra{([^|]+)\\\\|\", replacement: \"\\\\braket{ [[0]] | $0 \", options: \"rmA\", description: \"Convert bra into braket\"},\n {trigger: \"\\\\\\\\bra{(.+)}([^ ]+)>\", replacement: \"\\\\braket{ [[0]] | $0 \", options: \"rmA\", description: \"Convert bra into braket (alternate)\"},\n {trigger: \"outp\", replacement: \"\\\\ket{${0:\\\\psi}} \\\\bra{${0:\\\\psi}} $1\", options: \"mA\"},\n // */\n\n\n\n // Chemistry\n /*\n {trigger: \"pu\", replacement: \"\\\\pu{ $0 }\", options: \"mA\"},\n {trigger: \"msun\", replacement: \"M_{\\\\odot}\", options: \"mA\"},\n {trigger: \"solm\", replacement: \"M_{\\\\odot}\", options: \"mA\"},\n {trigger: \"ce\", replacement: \"\\\\ce{ $0 }\", options: \"mA\"},\n {trigger: \"iso\", replacement: \"{}^{${0:4}}_{${1:2}}${2:He}\", options: \"mA\"},\n {trigger: \"hel4\", replacement: \"{}^{4}_{2}He \", options: \"mA\"},\n {trigger: \"hel3\", replacement: \"{}^{3}_{2}He \", options: \"mA\"},\n // */\n\n\n // Environments\n {trigger: \"pmat\", replacement: \"\\\\begin{pmatrix}$0\\\\end{pmatrix}\", options: \"mA\"},\n {trigger: \"bmat\", replacement: \"\\\\begin{bmatrix}$0\\\\end{bmatrix}\", options: \"mA\"},\n {trigger: \"Bmat\", replacement: \"\\\\begin{Bmatrix}$0\\\\end{Bmatrix}\", options: \"mA\"},\n {trigger: \"vmat\", replacement: \"\\\\begin{vmatrix}$0\\\\end{vmatrix}\", options: \"mA\"},\n {trigger: \"Vmat\", replacement: \"\\\\begin{Vmatrix}$0\\\\end{Vmatrix}\", options: \"mA\"},\n {trigger: \"case\", replacement: \"\\\\begin{cases} $0 \\\\end{cases}\", options: \"mA\"},\n {trigger: \"align\", replacement: \"\\\\begin{align} $0 \\\\end{align}\", options: \"mA\"},\n {trigger: \"array\", replacement: \"\\\\begin{array}\\n$0\\n\\\\end{array}\", options: \"mA\"},\n {trigger: \"matrix\", replacement: \"\\\\begin{matrix}$0\\\\end{matrix}\", options: \"mA\"},\n\n {trigger: \"func\", replacement: \"\\\\begin{align} $0 :& $1 \\\\\\\\& $2 \\\\mapsto $3 \\\\end{align}\", options: \"mA\"},\n\n\n // Brackets\n {trigger: \"lr(\", replacement: \"\\\\left( $0 \\\\right) $1\", options: \"mA\"},\n {trigger: \"ll(\", replacement: \"\\left( $0\", options: \"mA\"}, {trigger: \"rr)\", replacement: \"\\\\right)\", options: \"mA\"},\n {trigger: \"lr|\", replacement: \"\\\\left| $0 \\\\right| $1\", options: \"mA\"},\n {trigger: \"lr{\", replacement: \"\\\\left\\\\{ $0 \\\\right\\\\} $1\", options: \"mA\"},\n {trigger: \"lr[\", replacement: \"\\\\left[ $0 \\\\right] $1\", options: \"mA\"},\n {trigger: \"lr<\", replacement: \"\\\\left\\\\langle $0 \\\\right\\\\rangle $1\", options: \"mA\"},\n {trigger: \"lra\", replacement: \"\\\\left< $0 \\\\right> $1\", options: \"mA\"},\n {trigger: \"lrfloor\", replacement: \"\\\\left\\\\lfloor $0 \\\\right\\\\rfloor $1\", options: \"mA\"},\n {trigger: \"lrceil\", replacement: \"\\\\left\\\\lceil $0 \\\\right\\\\rceil $1\", options: \"mA\"},\n {trigger: \"m||\", replacement: \"\\\\middle|\", options: \"mA\"},\n \n {trigger: \"avg\", replacement: \"\\\\langle $0 \\\\rangle $1\", options: \"mA\"},\n {trigger: \"pv\", replacement: \"\\\\langle $0 \\\\rangle $1\", options: \"mA\"},\n {trigger: \"(\", replacement: \"(${VISUAL})\", options: \"mA\"},\n {trigger: \"[\", replacement: \"[${VISUAL}]\", options: \"mA\"},\n {trigger: \"{\", replacement: \"{${VISUAL}}\", options: \"mA\"},\n {trigger: \")\", replacement: \"\\\\left( ${VISUAL} \\\\right)\", options: \"mA\"},\n {trigger: \"]\", replacement: \"\\\\left[ ${VISUAL} \\\\right]\", options: \"mA\"},\n {trigger: \"}\", replacement: \"\\\\left\\\\\\{ ${VISUAL} \\\\right\\\\\\}\", options: \"mA\"},\n {trigger: \"(\", replacement: \"($0)$1\", options: \"mA\"},\n {trigger: \"{\", replacement: \"{$0}$1\", options: \"mA\"},\n {trigger: \"[\", replacement: \"[$0]$1\", options: \"mA\"},\n {trigger: \"mod\", replacement: \"|$0|$1\", options: \"mA\"},\n {trigger: \"norm\", replacement: \"\\\\|$0\\\\|$1\", options: \"mA\"},\n {trigger: \"tnorm\", replacement: \"|\\\\!|\\\\!|$0|\\\\!|\\\\!|$1\", options: \"mA\"},\n {trigger: \"big(\", replacement: \"\\\\big( $0 \\\\big)$1\", options: \"mA\"},\n {trigger: \"Big(\", replacement: \"\\\\Big( $0 \\\\Big)$1\", options: \"mA\"},\n {trigger: \"big[\", replacement: \"\\\\big[ $0 \\\\big]$1\", options: \"mA\"},\n {trigger: \"Big[\", replacement: \"\\\\Big[ $0 \\\\Big]$1\", options: \"mA\"},\n {trigger: \"big{\", replacement: \"\\\\big\\\\{ $0 \\\\big\\\\}\", options: \"mA\"},\n {trigger: \"Big{\", replacement: \"\\\\Big\\\\{ $0 \\\\Big\\\\}\", options: \"mA\"},\n {trigger: \"llb\", replacement: \"[\\\\![\", options: \"mA\"},\n {trigger: \"rrb\", replacement: \"]\\\\!]\", options: \"mA\"},\n {trigger: \"lrbracket\", replacement: \"[\\\\![ $0 ]\\\\!]\", options: \"mA\"},\n\n // fonctions particulières\n {trigger: \"ee\", replacement: \"e^{ $0 }$1\", options: \"mA\"},\n {trigger: \"id\", replacement: \"\\\\mathrm{id}\", options: \"mA\"},\n \n // Permutations\n {trigger: \"\\\\sup\\\\limitsp\", replacement: \"\\\\mathrm{supp}\", options: \"mA\"},\n {trigger: \"orb\", replacement: \"\\\\operatorname{Orb}\", options: \"mA\"},\n\n\n\n // Misc\n {trigger: \"tayl\", replacement: \"${0:f}(${1:x} + ${2:h}) = ${0:f}(${1:x}) + ${0:f}'(${1:x})${2:h} + ${0:f}''(${1:x}) \\\\frac{${2:h}^{2}}{2!} + \\\\dots$3\", options: \"mA\"},\n]\n\n\n",
+ "snippets": "[\n // textes pour les démonstrations\n {trigger: \"dlsq\", replacement: \"de là suit que\", options: \"tA\"},\n\n // phrases de définition communes\n {trigger: \"deam\", replacement: \"Dans l'[[espace mesuré]] $(E, \\\\mathcal{A}, \\\\mu)$\", options: \"tA\"},\n\n // textes autres\n {trigger: \"mupp\", replacement: \"$\\\\mu$-presque partout\", options: \"tA\"},\n \n // Math mode\n {trigger: \"mk\", replacement: \"$$0$\", options: \"tA\"},\n // {trigger: \"dm\", replacement: \"$$\\n$0\\n$$\", options: \"tA\"},\n {trigger: \"beg\", replacement: \"\\\\begin{$0}\\n$1\\n\\\\end{$0}\", options: \"mA\"},\n\n {trigger: \"disp\", replacement: \"\\\\displaystyle \", options: \"smA\"},\n // Dashes\n //{trigger: \"--\", replacement: \"–\", options: \"tA\"},\n //{trigger: \"–-\", replacement: \"—\", options: \"tA\"},\n //{trigger: \"—-\", replacement: \"---\", options: \"tA\"},\n\n\n // Greek letters\n {trigger: \":a\", replacement: \"\\\\alpha\", options: \"mA\"},\n {trigger: \":A\", replacement: \"\\\\alpha\", options: \"mA\"},\n {trigger: \":b\", replacement: \"\\\\beta\", options: \"mA\"},\n {trigger: \":B\", replacement: \"\\\\beta\", options: \"mA\"},\n {trigger: \":c\", replacement: \"\\\\chi\", options: \"mA\"},\n {trigger: \":C\", replacement: \"\\\\chi\", options: \"mA\"},\n {trigger: \":g\", replacement: \"\\\\gamma\", options: \"mA\"},\n {trigger: \":G\", replacement: \"\\\\Gamma\", options: \"mA\"},\n {trigger: \":d\", replacement: \"\\\\delta\", options: \"mA\"},\n {trigger: \":D\", replacement: \"\\\\Delta\", options: \"mA\"},\n {trigger: \"@e\", replacement: \"\\\\epsilon\", options: \"mA\"},\n {trigger: \"@E\", replacement: \"\\\\epsilon\", options: \"mA\"},\n {trigger: \":e\", replacement: \"\\\\varepsilon\", options: \"mA\"},\n {trigger: \":E\", replacement: \"\\\\varepsilon\", options: \"mA\"},\n {trigger: \":z\", replacement: \"\\\\zeta\", options: \"mA\"},\n {trigger: \":Z\", replacement: \"\\\\zeta\", options: \"mA\"},\n {trigger: \":t\", replacement: \"\\\\theta\", options: \"mA\"},\n {trigger: \":T\", replacement: \"\\\\Theta\", options: \"mA\"},\n {trigger: \":k\", replacement: \"\\\\kappa\", options: \"mA\"},\n {trigger: \":K\", replacement: \"\\\\kappa\", options: \"mA\"},\n {trigger: \":l\", replacement: \"\\\\lambda\", options: \"mA\"},\n {trigger: \":L\", replacement: \"\\\\Lambda\", options: \"mA\"},\n {trigger: \":m\", replacement: \"\\\\mu\", options: \"mA\"},\n {trigger: \":M\", replacement: \"\\\\mu\", options: \"mA\"},\n {trigger: \":r\", replacement: \"\\\\rho\", options: \"mA\"},\n {trigger: \":R\", replacement: \"\\\\rho\", options: \"mA\"},\n {trigger: \":s\", replacement: \"\\\\sigma\", options: \"mA\"},\n {trigger: \":S\", replacement: \"\\\\Sigma\", options: \"mA\"},\n {trigger: \"ome\", replacement: \"\\\\omega\", options: \"mA\"},\n {trigger: \":p\", replacement: \"\\\\varphi\", options: \"mA\"},\n {trigger: \":o\", replacement: \"\\\\omega\", options: \"mA\"},\n {trigger: \":O\", replacement: \"\\\\Omega\", options: \"mA\"},\n {trigger: \"([^\\\\\\\\])(${GREEK}|${SYMBOL})\", replacement: \"[[0]]\\\\[[1]]\", options: \"rmA\", description: \"Add backslash before greek letters and symbols\"},\n\n\n // Insert space after greek letters and symbols, etc\n {trigger: \"\\\\\\\\(${GREEK}|${SYMBOL})([A-Za-ik-z])\", replacement: \"\\\\[[0]] [[1]]\", options: \"rmA\"},\n {trigger: \"\\\\\\\\(${GREEK}|${SYMBOL}) sr\", replacement: \"\\\\[[0]]^{2}\", options: \"rmA\"},\n {trigger: \"\\\\\\\\(${GREEK}|${SYMBOL}) cb\", replacement: \"\\\\[[0]]^{3}\", options: \"rmA\"},\n {trigger: \"\\\\\\\\(${GREEK}|${SYMBOL}) rd\", replacement: \"\\\\[[0]]^{$0}$1\", options: \"rmA\"},\n {trigger: \"\\\\\\\\(${GREEK}|${SYMBOL}) hat\", replacement: \"\\\\hat{\\\\[[0]]}\", options: \"rmA\"},\n {trigger: \"\\\\\\\\(${GREEK}|${SYMBOL}) dot\", replacement: \"\\\\dot{\\\\[[0]]}\", options: \"rmA\"},\n {trigger: \"\\\\\\\\(${GREEK}),\\\\.\", replacement: \"\\\\mathbf{\\\\[[0]]}\", options: \"rmA\"},\n {trigger: \"\\\\\\\\(${GREEK})\\\\.,\", replacement: \"\\\\mathbf{\\\\[[0]]}\", options: \"rmA\"},\n\n\n // Mathematical fonts\n {trigger: \"te\", replacement: \"\\\\text{$0}\", options: \"mA\"},\n {trigger: \"bf\", replacement: \"\\\\mathbf{$0}\", options: \"mA\"},\n {trigger: \"scr\", replacement: \"\\\\mathscr{$0}\", options: \"mA\"},\n {trigger: \"cal\", replacement: \"\\\\mathcal{$0}\", options: \"mA\"},\n {trigger: \"bb\", replacement: \"\\\\mathbb{$0}\", options: \"mA\"},\n {trigger: \"frak\", replacement: \"\\\\mathfrak{$0}\", options: \"mA\"},\n {trigger: \"([a-zA-Z]),\\\\.\", replacement: \"\\\\mathbf{[[0]]}\", options: \"rmA\"},\n {trigger: \"([a-zA-Z])\\\\.,\", replacement: \"\\\\mathbf{[[0]]}\", options: \"rmA\"},\n\n // Operations\n {trigger: \"sr\", replacement: \"^{2}\", options: \"mA\"},\n {trigger: \"cb\", replacement: \"^{3}\", options: \"mA\"},\n {trigger: \"rd\", replacement: \"^{$0}$1\", options: \"mA\"},\n {trigger: \"sd\", replacement: \"_{$0}$1\", options: \"mA\"},\n {trigger: \"_\", replacement: \"_{$0}$1\", options: \"mA\"},\n {trigger: \"sts\", replacement: \"_\\\\text{$0}\", options: \"rmA\"},\n {trigger: \"sq\", replacement: \"\\\\sqrt{ $0 }$1\", options: \"mA\"},\n {trigger: \"//\", replacement: \"\\\\frac{$0}{$1}$2\", options: \"mA\"},\n {trigger: \"rm\", replacement: \"\\\\mathrm{$0}$1\", options: \"mA\"},\n {trigger: \"conj\", replacement: \"^{*}\", options: \"mA\"},\n {trigger: \"([^\\\\\\\\])bar\", replacement: \"[[0]]\\\\overline{$0}\", options: \"rmA\"},\n {trigger: \"hat\", replacement: \"\\\\hat{$0}\", options: \"mA\"},\n {trigger: \"dot\", replacement: \"\\\\dot{$0}\", options: \"mA\"},\n {trigger: \"([^\\\\\\\\])(arcsin|arccos|arctan|arccot|arccsc|arcsec|sin|cos|tan|cot)\", replacement: \"[[0]]\\\\[[1]]\", options: \"rmA\"},\n {trigger: \"(th|ch|sh)\", replacement: \"\\\\mathrm{[[0]]}\", options: \"rmA\"},\n {trigger: \"\\\\\\\\(arcsin|arccos|arctan|arccot|arccsc|arcsec|sin|cos|tan|cot|csc|sh|ch|th)([A-Za-gi-z])\", replacement: \"\\\\[[0]] [[1]]\", options: \"rmA\"}, // Insert space after trig funcs. Skips letter \"h\" to allow sinh, cosh, etc.\n {trigger: \"\\\\\\\\(arcsinh|arccosh|arctanh|arccoth|arcsch|arcsech|sinh|cosh|tanh|coth|csch|sh|ch|th)([A-Za-z])\", replacement: \"\\\\[[0]] [[1]]\", options: \"rmA\"}, // Insert space after trig funcs\n {trigger: \"trace\", replacement: \"\\\\mathrm{Tr}\", options: \"mA\"},\n {trigger: \"trans\", replacement: \"\\\\,^T\\\\!\", options: \"mA\"},\n\n // automatic stuff (subscript, bar, hat...)\n {trigger: \"([A-Za-z])(\\\\d)\", replacement: \"[[0]]_[[1]]\", options: \"rmA\", description: \"Auto letter subscript\", priority: -1},\n {trigger: \"\\\\\\\\mathbf{([A-Za-z])}(\\\\d)\", replacement: \"\\\\mathbf{[[0]]}_{[[1]]}\", options: \"rmA\"},\n {trigger: \"([A-Za-z])_(\\\\d\\\\d)\", replacement: \"[[0]]_{[[1]]}\", options: \"rmA\"},\n {trigger: \"\\\\hat{([A-Za-z])}(\\\\d)\", replacement: \"hat{[[0]]}_{[[1]]}\", options: \"rmA\"},\n {trigger: \"([a-zA-Z])bar\", replacement: \"\\\\overline{[[0]]}\", options: \"rmA\"},\n {trigger: \"([a-zA-Z])hat\", replacement: \"\\\\hat{[[0]]}\", options: \"rmA\"},\n {trigger: \"([a-zA-Z])ddot\", replacement: \"\\\\ddot{[[0]]}\", options: \"rmA\"},\n {trigger: \"ddot\", replacement: \"\\\\ddot{$0}\", options: \"mA\"},\n {trigger: \"([a-zA-Z])dot\", replacement: \"\\\\dot{[[0]]}\", options: \"rmA\"},\n \n\n\n // Visual operations - don't work with vim mode\n {trigger: \"{\", replacement: \"\\\\underbrace{ ${VISUAL} }_{ $0 }\", options: \"mA\"},\n {trigger: \"#\", replacement: \"\\\\underset{ $0 }{ ${VISUAL} }\", options: \"mA\"},\n {trigger: \"~\", replacement: \"\\\\cancel{ ${VISUAL} }\", options: \"mA\"},\n {trigger: \"^\", replacement: \"\\\\cancelto{ $0 }{ ${VISUAL} }\", options: \"mA\"},\n {trigger: \"S\", replacement: \"\\\\sqrt{ ${VISUAL} }\", options: \"mA\"},\n \n\n // centered \\not\n {trigger: \"cnot\", replacement: \"\\\\centernot{$0}\", options: \"mA\"},\n\n\n // Symbols\n {trigger: \"ooo\", replacement: \"\\\\infty\", options: \"mA\"},\n {trigger: \"pm\", replacement: \"\\\\pm\", options: \"m\"},\n {trigger: \"...\", replacement: \"\\\\dots\", options: \"mA\"},\n {trigger: \"\\\\dots.\", replacement: \"\\\\cdots\", options: \"mA\"},\n {trigger: \"sto\", replacement: \",\\\\dots,\", options: \"mA\"},\n {trigger: \"->\", replacement: \"\\\\to\", options: \"mA\"},\n {trigger: \"to\", replacement: \"\\\\to\", options: \"mA\"},\n {trigger: \"<->\", replacement: \"\\\\leftrightarrow \", options: \"mA\"},\n {trigger: \"!>\", replacement: \"\\\\mapsto\", options: \"mA\"},\n {trigger: \"|->\", replacement: \"\\\\mapsto\", options: \"mA\"},\n {trigger: \"maps\", replacement: \"\\\\mapsto\", options: \"mA\"},\n {trigger: \"^->\", replacement: \"\\\\vec{$0}\", options: \"mA\", priority: 1},\n {trigger: \"^-->\", replacement: \"\\\\overrightarrow{$0}\", options: \"mA\", priority: 1},\n {trigger: \"tto\", replacement: \"\\\\xrightarrow{$0}\", options: \"mA\", priority: 1},\n {trigger: \"invs\", replacement: \"^{-1}\", options: \"mA\"},\n {trigger: \"~~\", replacement: \"\\\\sim\", options: \"mA\"},\n {trigger: \"\\\\sim ~\", replacement: \"\\\\approx\", options: \"mA\"},\n {trigger: \"prop\", replacement: \"\\\\propto\", options: \"mA\"},\n {trigger: \"nabl\", replacement: \"\\\\nabla\", options: \"mA\"},\n {trigger: \"xx\", replacement: \"\\\\times\", options: \"mA\"},\n {trigger: \"**\", replacement: \"\\\\cdot\", options: \"mA\"},\n {trigger: \"pal\", replacement: \"\\\\parallel\", options: \"mA\"},\n {trigger: \"===\", replacement: \"\\\\equiv\", options: \"mA\"},\n {trigger: \"Sq\", replacement: \"\\\\square\", options: \"mA\"},\n {trigger: \"tl\", replacement: \"\\\\vartriangleleft \", options: \"mA\"},\n\n // Operators\n {trigger: \"lts\", replacement: \"\\\\limits\", options: \"mA\"},\n {trigger: \"sum\", replacement: \"\\\\sum\\\\limits\", options: \"mA\"},\n {trigger: \"prod\", replacement: \"\\\\prod\\\\limits\", options: \"mA\"},\n {trigger: \"lim\", replacement: \"\\\\lim\\\\limits_{ ${0:n} \\\\to ${1:\\\\infty} } $2\", options: \"mA\"},\n {trigger: \"sup\", replacement: \"\\\\sup\\\\limits$0\", options: \"mA\"},\n {trigger: \"inf\", replacement: \"\\\\inf\\\\limits$0\", options: \"mA\"},\n {trigger: \"lsup\", replacement: \"\\\\limsup\\\\limits_{ ${0:n} \\\\to ${1:\\\\infty} } $2\", options: \"mA\"},\n {trigger: \"linf\", replacement: \"\\\\liminf\\\\limits_{ ${0:n} \\\\to ${1:\\\\infty} } $2\", options: \"mA\"},\n \n // Logic\n {trigger: \"||\", replacement: \"\\\\mid\", options: \"mA\"},\n {trigger: \"and\", replacement: \"\\\\wedge\", options: \"mA\"},\n {trigger: \"orr\", replacement: \"\\\\vee\", options: \"mA\"},\n {trigger: \"inn\", replacement: \"\\\\in\", options: \"mA\"},\n {trigger: \"nii\", replacement: \"\\\\ni\", options: \"mA\"},\n {trigger: \"=>\", replacement: \"\\\\implies\", options: \"mA\"},\n {trigger: \"=<\", replacement: \"\\\\impliedby\", options: \"mA\"},\n {trigger: \"iff\", replacement: \"\\\\iff\", options: \"mA\"},\n {trigger: \"e\\\\xi sts\", replacement: \"\\\\exists\", options: \"mA\", priority: 1},\n {trigger: \"fora\\\\ll\", replacement: \"\\\\forall\", options: \"rmA\", priority: 1},\n {trigger: \"tq\", replacement: \",\\\\quad \", options: \"mA\", priority: 1},\n {trigger: \"!=\", replacement: \"\\\\neq \", options: \"mA\"},\n {trigger: \"neq\", replacement: \"\\\\neq \", options: \"mA\"},\n {trigger: \">=\", replacement: \"\\\\geq \", options: \"mA\"},\n {trigger: \"<=\", replacement: \"\\\\leq \", options: \"mA\"},\n {trigger: \">>\", replacement: \"\\\\gg\", options: \"mA\"},\n {trigger: \"<<\", replacement: \"\\\\ll\", options: \"mA\"},\n \n // Sets (ensembles)\n {trigger: \"sm\", replacement: \"\\\\setminus\", options: \"mA\"},\n {trigger: \"set\", replacement: \"\\\\{ $0 \\\\}$1\", options: \"mA\"},\n {trigger: \"bag\", replacement: \"\\\\{\\\\!\\\\!\\\\{ $0 \\\\}\\\\!\\\\!\\\\}$1\", options: \"mA\"},\n {trigger: \"ems\", replacement: \"\\\\emptyset\", options: \"mA\"},\n {trigger: \"##\", replacement: \"\\\\#\", options: \"mA\"}, // cardinal\n {trigger: \"cap\", replacement: \"\\\\cap\", options: \"mA\"},\n {trigger: \"cup\", replacement: \"\\\\cup\", options: \"mA\"},\n {trigger: \":w\", replacement: \"\\\\subset\", options: \"mA\"},\n {trigger: \":x\", replacement: \"\\\\supset\", options: \"mA\"},\n {trigger: \"\\\\subset eq\", replacement: \"\\\\subseteq\", options: \"mA\"},\n {trigger: \"\\\\subset neq\", replacement: \"\\\\subsetneq\", options: \"mA\"},\n {trigger: \"\\\\subseteq q\", replacement: \"\\\\subseteqq\", options: \"mA\"},\n {trigger: \"\\\\subsetneq q\", replacement: \"\\\\subsetneqq\", options: \"mA\"},\n {trigger: \"\\\\supset eq\", replacement: \"\\\\supseteq\", options: \"mA\"},\n {trigger: \"\\\\supset neq\", replacement: \"\\\\supsetneq\", options: \"mA\"},\n {trigger: \"\\\\supseteq q\", replacement: \"\\\\supseteqq\", options: \"mA\"},\n {trigger: \"\\\\supsetneq q\", replacement: \"\\\\supsetneqq\", options: \"mA\"},\n\n\n // Sequences (suites)\n {trigger: \"xnn\", replacement: \"x_{n}\", options: \"mA\"},\n {trigger: \"xii\", replacement: \"x_{i}\", options: \"mA\"},\n {trigger: \"xjj\", replacement: \"x_{j}\", options: \"mA\"},\n {trigger: \"xkk\", replacement: \"x_{k}\", options: \"mA\"},\n {trigger: \"xp1\", replacement: \"x_{n+1}\", options: \"mA\"},\n {trigger: \"ynn\", replacement: \"y_{n}\", options: \"mA\"},\n {trigger: \"yii\", replacement: \"y_{i}\", options: \"mA\"},\n {trigger: \"yjj\", replacement: \"y_{j}\", options: \"mA\"},\n {trigger: \"ykk\", replacement: \"y_{k}\", options: \"mA\"},\n\n\n // letters (special fonts)\n {trigger: \"ell\", replacement: \"\\\\ell\", options: \"mA\"},\n {trigger: \"lll\", replacement: \"\\\\ell\", options: \"mA\"},\n {trigger: \"LL\", replacement: \"\\\\mathcal{L}\", options: \"mA\"},\n {trigger: \"HH\", replacement: \"\\\\mathcal{H}\", options: \"mA\"},\n {trigger: \"\\\\mathbb{(N|Z|Q|D|R|C|H)}(\\\\*|\\\\+|-)\", replacement: \"\\mathbb{[[0]]}^{[[1]]$0}$1\", options: \"rmA\"},\n {trigger: \"CC\", replacement: \"\\\\mathbb{C}\", options: \"mA\"},\n {trigger: \"RR\", replacement: \"\\\\mathbb{R}\", options: \"mA\"},\n {trigger: \"\\\\mathbb{R}bar\", replacement: \"\\overline{\\\\mathbb{R}}\", options: \"rmA\"},\n {trigger: \"ZZ\", replacement: \"\\\\mathbb{Z}\", options: \"mA\"},\n {trigger: \"NN\", replacement: \"\\\\mathbb{N}\", options: \"mA\"},\n {trigger: \"QQ\", replacement: \"\\\\mathbb{Q}\", options: \"mA\"},\n {trigger: \"II\", replacement: \"\\\\mathbb{1}\", options: \"mA\"},\n {trigger: \"\\\\mathbb{1}I\", replacement: \"\\\\hat{\\\\mathbb{1}}\", options: \"mA\"},\n {trigger: \"AA\", replacement: \"\\\\mathcal{A}\", options: \"mA\"},\n {trigger: \"BB\", replacement: \"\\\\mathbb{B}\", options: \"mA\"},\n {trigger: \"EE\", replacement: \"\\\\mathbf{E}\", options: \"mA\"},\n \n\n // Algebra (algèbre)\n {trigger: \"[zZ]_?{?(n|p|q|[0-9]+)}?[zZ]\", replacement: \"\\\\mathbb{Z}/[[0]]\\\\mathbb{Z}\", options: \"rmA\"},\n {trigger: \"dist\", replacement: \"\\\\trianglelefteq\", options: \"mA\", description: \"sous groupe distingué\"},\n {trigger: \"orb\", replacement: \"\\\\operatorname{Orb}\", options: \"mA\"},\n\n\n\n // Unit vecttors\n /*\n {trigger: \":i\", replacement: \"\\\\mathbf{i}\", options: \"mA\"},\n {trigger: \":j\", replacement: \"\\\\mathbf{j}\", options: \"mA\"},\n {trigger: \":k\", replacement: \"\\\\mathbf{k}\", options: \"mA\"},\n {trigger: \":x\", replacement: \"\\\\hat{\\\\mathbf{x}}\", options: \"mA\"},\n {trigger: \":y\", replacement: \"\\\\hat{\\\\mathbf{y}}\", options: \"mA\"},\n {trigger: \":z\", replacement: \"\\\\hat{\\\\mathbf{z}}\", options: \"mA\"},\n */\n\n\n // Derivatives\n {trigger: \"par\", replacement: \"\\\\frac{ \\\\partial ${0:y} }{ \\\\partial ${1:x} } $2\", options: \"mA\"},\n {trigger: \"pa2\", replacement: \"\\\\frac{ \\\\partial^{2} ${0:y} }{ \\\\partial ${1:x}^{2} } $2\", options: \"mA\"},\n {trigger: \"pa3\", replacement: \"\\\\frac{ \\\\partial^{3} ${0:y} }{ \\\\partial ${1:x}^{3} } $2\", options: \"mA\"},\n {trigger: \"pa([A-Za-z])([A-Za-z])\", replacement: \"\\\\frac{ \\\\partial [[0]] }{ \\\\partial [[1]] } \", options: \"rm\"},\n {trigger: \"pa([A-Za-z])([A-Za-z])([A-Za-z])\", replacement: \"\\\\frac{ \\\\partial^{2} [[0]] }{ \\\\partial [[1]] \\\\partial [[3]] } \", options: \"rm\"},\n {trigger: \"pa([A-Za-z])([A-Za-z])2\", replacement: \"\\\\frac{ \\\\partial^{2} [[0]] }{ \\\\partial [[1]]^{2} } \", options: \"rmA\"},\n {trigger: \"de([A-Za-z])([A-Za-z])\", replacement: \"\\\\frac{ d[[0]] }{ d[[1]] } \", options: \"rm\"},\n {trigger: \"de([A-Za-z])([A-Za-z])2\", replacement: \"\\\\frac{ d^{2}[[0]] }{ d[[1]]^{2} } \", options: \"rmA\"},\n {trigger: \"dd(t|x)\", replacement: \"\\\\frac{d}{d[[0]]} \", options: \"rmA\"},\n\n\n\n // Integrals\n {trigger: \"oinf\", replacement: \"\\\\int_{0}^{\\\\infty} $0 \\\\, d${1:x} $2\", options: \"mA\"},\n {trigger: \"infi\", replacement: \"\\\\int_{-\\\\infty}^{\\\\infty} $0 \\\\, d${1:x} $2\", options: \"mA\"},\n {trigger: \"dint\", replacement: \"\\\\int_{${0:0}}^{${1:1}} $2 \\\\, d${3:x} $4\", options: \"mA\"},\n {trigger: \"oint\", replacement: \"\\\\oint\", options: \"mA\"},\n {trigger: \"iiint\", replacement: \"\\\\iiint\", options: \"mA\"},\n {trigger: \"iint\", replacement: \"\\\\iint\", options: \"mA\"},\n {trigger: \"int\", replacement: \"\\\\int$0 \\\\, d${1:x} $2\", options: \"mA\"},\n {trigger: \"mint\", replacement: \"\\\\int$0 \\\\, d\\\\mu $1\", options: \"mA\"},\n {trigger: \"lint\", replacement: \"\\\\int_{${0:\\\\mathbb{R}}} $1 \\\\, \\\\lambda(dx) $2\", options: \"mA\"},\n\n {trigger: \"cpm\", replacement: \"C^0_{pm}($0)\", options: \"mA\"}, // fonction continue par morceaux\n\n\n // Physics\n {trigger: \"kbt\", replacement: \"k_{B}T\", options: \"mA\"},\n\n\n // Quantum mechanics\n /*\n {trigger: \"hba\", replacement: \"\\\\hbar\", options: \"mA\"},\n {trigger: \"dag\", replacement: \"^{\\\\dagger}\", options: \"mA\"},\n {trigger: \"bra\", replacement: \"\\\\bra{$0} $1\", options: \"mA\"},\n {trigger: \"ket\", replacement: \"\\\\ket{$0} $1\", options: \"mA\"},\n {trigger: \"brk\", replacement: \"\\\\braket{ $0 | $1 } $2\", options: \"mA\"},\n {trigger: \"\\\\\\\\bra{([^|]+)\\\\|\", replacement: \"\\\\braket{ [[0]] | $0 \", options: \"rmA\", description: \"Convert bra into braket\"},\n {trigger: \"\\\\\\\\bra{(.+)}([^ ]+)>\", replacement: \"\\\\braket{ [[0]] | $0 \", options: \"rmA\", description: \"Convert bra into braket (alternate)\"},\n {trigger: \"outp\", replacement: \"\\\\ket{${0:\\\\psi}} \\\\bra{${0:\\\\psi}} $1\", options: \"mA\"},\n // */\n\n\n\n // Chemistry\n /*\n {trigger: \"pu\", replacement: \"\\\\pu{ $0 }\", options: \"mA\"},\n {trigger: \"msun\", replacement: \"M_{\\\\odot}\", options: \"mA\"},\n {trigger: \"solm\", replacement: \"M_{\\\\odot}\", options: \"mA\"},\n {trigger: \"ce\", replacement: \"\\\\ce{ $0 }\", options: \"mA\"},\n {trigger: \"iso\", replacement: \"{}^{${0:4}}_{${1:2}}${2:He}\", options: \"mA\"},\n {trigger: \"hel4\", replacement: \"{}^{4}_{2}He \", options: \"mA\"},\n {trigger: \"hel3\", replacement: \"{}^{3}_{2}He \", options: \"mA\"},\n // */\n\n\n // Environments\n {trigger: \"pmat\", replacement: \"\\\\begin{pmatrix}$0\\\\end{pmatrix}\", options: \"mA\"},\n {trigger: \"bmat\", replacement: \"\\\\begin{bmatrix}$0\\\\end{bmatrix}\", options: \"mA\"},\n {trigger: \"Bmat\", replacement: \"\\\\begin{Bmatrix}$0\\\\end{Bmatrix}\", options: \"mA\"},\n {trigger: \"vmat\", replacement: \"\\\\begin{vmatrix}$0\\\\end{vmatrix}\", options: \"mA\"},\n {trigger: \"Vmat\", replacement: \"\\\\begin{Vmatrix}$0\\\\end{Vmatrix}\", options: \"mA\"},\n {trigger: \"case\", replacement: \"\\\\begin{cases} $0 \\\\end{cases}\", options: \"mA\"},\n {trigger: \"align\", replacement: \"\\\\begin{align} $0 \\\\end{align}\", options: \"mA\"},\n {trigger: \"array\", replacement: \"\\\\begin{array}\\n$0\\n\\\\end{array}\", options: \"mA\"},\n {trigger: \"matrix\", replacement: \"\\\\begin{matrix}$0\\\\end{matrix}\", options: \"mA\"},\n\n {trigger: \"func\", replacement: \"\\\\begin{align} $0 :& $1 \\\\\\\\& $2 \\\\mapsto $3 \\\\end{align}\", options: \"mA\"},\n\n\n // Brackets\n {trigger: \"lr(\", replacement: \"\\\\left( $0 \\\\right) $1\", options: \"mA\"},\n {trigger: \"ll(\", replacement: \"\\left( $0\", options: \"mA\"}, {trigger: \"rr)\", replacement: \"\\\\right)\", options: \"mA\"},\n {trigger: \"lr|\", replacement: \"\\\\left| $0 \\\\right| $1\", options: \"mA\"},\n {trigger: \"lr{\", replacement: \"\\\\left\\\\{ $0 \\\\right\\\\} $1\", options: \"mA\"},\n {trigger: \"lr[\", replacement: \"\\\\left[ $0 \\\\right] $1\", options: \"mA\"},\n {trigger: \"lr<\", replacement: \"\\\\left\\\\langle $0 \\\\right\\\\rangle $1\", options: \"mA\"},\n {trigger: \"lra\", replacement: \"\\\\left< $0 \\\\right> $1\", options: \"mA\"},\n {trigger: \"lrfloor\", replacement: \"\\\\left\\\\lfloor $0 \\\\right\\\\rfloor $1\", options: \"mA\"},\n {trigger: \"lrceil\", replacement: \"\\\\left\\\\lceil $0 \\\\right\\\\rceil $1\", options: \"mA\"},\n {trigger: \"m||\", replacement: \"\\\\middle|\", options: \"mA\"},\n \n {trigger: \"avg\", replacement: \"\\\\langle $0 \\\\rangle $1\", options: \"mA\"},\n {trigger: \"pv\", replacement: \"\\\\langle $0 \\\\rangle $1\", options: \"mA\"},\n {trigger: \"(\", replacement: \"(${VISUAL})\", options: \"mA\"},\n {trigger: \"[\", replacement: \"[${VISUAL}]\", options: \"mA\"},\n {trigger: \"{\", replacement: \"{${VISUAL}}\", options: \"mA\"},\n {trigger: \")\", replacement: \"\\\\left( ${VISUAL} \\\\right)\", options: \"mA\"},\n {trigger: \"]\", replacement: \"\\\\left[ ${VISUAL} \\\\right]\", options: \"mA\"},\n {trigger: \"}\", replacement: \"\\\\left\\\\\\{ ${VISUAL} \\\\right\\\\\\}\", options: \"mA\"},\n {trigger: \"(\", replacement: \"($0)$1\", options: \"mA\"},\n {trigger: \"{\", replacement: \"{$0}$1\", options: \"mA\"},\n {trigger: \"[\", replacement: \"[$0]$1\", options: \"mA\"},\n {trigger: \"mod\", replacement: \"|$0|$1\", options: \"mA\"},\n {trigger: \"norm\", replacement: \"\\\\|$0\\\\|$1\", options: \"mA\"},\n {trigger: \"tnorm\", replacement: \"|\\\\!|\\\\!|$0|\\\\!|\\\\!|$1\", options: \"mA\"},\n {trigger: \"big(\", replacement: \"\\\\big( $0 \\\\big)$1\", options: \"mA\"},\n {trigger: \"Big(\", replacement: \"\\\\Big( $0 \\\\Big)$1\", options: \"mA\"},\n {trigger: \"big[\", replacement: \"\\\\big[ $0 \\\\big]$1\", options: \"mA\"},\n {trigger: \"Big[\", replacement: \"\\\\Big[ $0 \\\\Big]$1\", options: \"mA\"},\n {trigger: \"big{\", replacement: \"\\\\big\\\\{ $0 \\\\big\\\\}\", options: \"mA\"},\n {trigger: \"Big{\", replacement: \"\\\\Big\\\\{ $0 \\\\Big\\\\}\", options: \"mA\"},\n {trigger: \"llb\", replacement: \"[\\\\![\", options: \"mA\"},\n {trigger: \"rrb\", replacement: \"]\\\\!]\", options: \"mA\"},\n {trigger: \"lrbracket\", replacement: \"[\\\\![ $0 ]\\\\!]\", options: \"mA\"},\n\n // fonctions particulières\n {trigger: \"ee\", replacement: \"e^{ $0 }$1\", options: \"mA\"},\n {trigger: \"id\", replacement: \"\\\\mathrm{id}\", options: \"mA\"},\n \n // Permutations\n {trigger: \"\\\\sup\\\\limitsp\", replacement: \"\\\\mathrm{supp}\", options: \"mA\"},\n {trigger: \"orb\", replacement: \"\\\\operatorname{Orb}\", options: \"mA\"},\n\n\n\n // Misc\n {trigger: \"tayl\", replacement: \"${0:f}(${1:x} + ${2:h}) = ${0:f}(${1:x}) + ${0:f}'(${1:x})${2:h} + ${0:f}''(${1:x}) \\\\frac{${2:h}^{2}}{2!} + \\\\dots$3\", options: \"mA\"},\n\n\n // Pour les fonctions avec des noms rares :\n {trigger: \"mop\", replacement: \"\\\\mathop{$0}\", options: \"mA\"},\n\n\n]// end of the list",
"snippetVariables": "{\n\t\"${GREEK}\": \"alpha|beta|gamma|Gamma|delta|Delta|epsilon|varepsilon|zeta|eta|theta|vartheta|Theta|iota|kappa|lambda|Lambda|mu|nu|xi|omicron|pi|rho|varrho|sigma|Sigma|tau|upsilon|Upsilon|phi|varphi|Phi|chi|psi|omega|Omega\",\n\t\"${SYMBOL}\": \"parallel|perp|partial|nabla|hbar|ell|infty|oplus|ominus|otimes|oslash|square|star|dagger|vee|wedge|subseteq|subset|supseteq|supset|emptyset|exists|nexists|forall|implies|impliedby|iff|setminus|neg|lor|land|bigcup|bigcap|cdot|times|simeq|approx\",\n\t\"${MORE_SYMBOLS}\": \"leq|geq|neq|gg|ll|equiv|sim|propto|rightarrow|leftarrow|Rightarrow|Leftarrow|leftrightarrow|to|mapsto|cap|cup|in|sum|prod|exp|ln|log|det|dots|vdots|ddots|pm|mp|int|iint|iiint|oint\"\n}\n",
"snippetsEnabled": true,
"snippetsTrigger": "Tab",
diff --git a/.obsidian/plugins/obsidian-list-callouts/data.json b/.obsidian/plugins/obsidian-list-callouts/data.json
index 040a98eb..7074f86e 100644
--- a/.obsidian/plugins/obsidian-list-callouts/data.json
+++ b/.obsidian/plugins/obsidian-list-callouts/data.json
@@ -168,5 +168,23 @@
"color": "41, 158, 60",
"icon": null,
"custom": true
+ },
+ {
+ "char": "def",
+ "color": "54, 140, 243",
+ "icon": "lucide-feather",
+ "custom": true
+ },
+ {
+ "char": "dem",
+ "color": "252, 213, 0",
+ "icon": "lucide-square",
+ "custom": true
+ },
+ {
+ "char": "prop",
+ "color": "29, 180, 30",
+ "icon": "lucide-book-open-check",
+ "custom": true
}
]
\ No newline at end of file
diff --git a/.obsidian/plugins/obsidian-minimal-settings/data.json b/.obsidian/plugins/obsidian-minimal-settings/data.json
index 0c8019e6..f40afcf4 100644
--- a/.obsidian/plugins/obsidian-minimal-settings/data.json
+++ b/.obsidian/plugins/obsidian-minimal-settings/data.json
@@ -8,7 +8,7 @@
"lineWidth": 40,
"lineWidthWide": 50,
"maxWidth": 98,
- "textNormal": 28,
+ "textNormal": 27,
"textSmall": 18,
"imgGrid": false,
"imgWidth": "img-default-width",
diff --git a/.obsidian/snippets/Calendar.css b/.obsidian/snippets/Calendar.css
new file mode 100644
index 00000000..9195e269
--- /dev/null
+++ b/.obsidian/snippets/Calendar.css
@@ -0,0 +1,64 @@
+/*
+ Calendar plugin tweaks
+ https://github.com/replete/obsidian-minimal-theme-css-snippets
+*/
+
+.view-content:has(#calendar-container) {
+ padding:0;
+}
+
+#calendar-container {
+ padding:0 8px 8px 8px;
+}
+
+#calendar-container .year {
+ color:var(--text-muted);
+}
+#calendar-container td,
+#calendar-container .day {
+ border-radius:0 !important;
+}
+#calendar-container .day {
+ padding-top:0;
+ padding-bottom:0;
+}
+#calendar-container .day.active {
+ outline:1px solid var(--tx3);
+}
+#calendar-container .day.active .filled,
+#calendar-container .day.today.active .filled {
+ fill:var(--tx1, var(--text-normal)) !important;
+}
+#calendar-container .day.active .hollow,
+#calendar-container .day.today.active .hollow {
+ stroke:var(--tx1, var(--text-normal)) !important;
+}
+#calendar-container .day.today .filled {
+ fill:var(--text-muted) !important;
+}
+#calendar-container .day.today .hollow {
+ stroke:var(--text-muted) !important;
+}
+
+#calendar-container .day.today {
+ color:var(--text-bold);
+ font-weight:700;
+ outline:2px solid var(--color-background-day-active);
+}
+.theme-dark #calendar-container .day.today {
+ /* outline:2px solid var(--tx3); */
+}
+
+#calendar-container .day.today.active {
+ /* color:var(--text-bright); */
+}
+#calendar-container .day:active {
+ background:var(--tx2, var(--text-muted));
+}
+#calendar-container .day.adjacent-month {
+ /* color:var(--tx2) */
+}
+
+#calendar-container .weekend {
+ background: var(--bg2, var(--background-primary));
+}
diff --git a/.obsidian/snippets/CardBoard.css b/.obsidian/snippets/CardBoard.css
new file mode 100644
index 00000000..c0a54836
--- /dev/null
+++ b/.obsidian/snippets/CardBoard.css
@@ -0,0 +1,31 @@
+/*
+ Card Board plugin styles
+ https://github.com/replete/obsidian-minimal-theme-css-snippets
+*/
+
+.card-board-tab-list {
+ padding-top:6px !important;
+}
+
+.card-board-tab-icon {
+ transform: translate(0, 2px);
+ position:absolute;
+ right:5px;
+ height:30px !important;
+}
+
+.card-board-tabs-inner {
+ color: var(--tx3) !important
+}
+
+.card-board-tabs-inner:hover {
+ color: var(--tx1) !important
+}
+
+.card-board-tab-title.is-active .card-board-tabs-inner {
+ color:var(--tx2) !important;
+}
+
+.card-board-boards {
+ padding-top:5px;
+}
\ No newline at end of file
diff --git a/.obsidian/snippets/Checklist - Ultra compact.css b/.obsidian/snippets/Checklist - Ultra compact.css
new file mode 100644
index 00000000..417dd8ce
--- /dev/null
+++ b/.obsidian/snippets/Checklist - Ultra compact.css
@@ -0,0 +1,108 @@
+/*
+ Checklists plugin Ultra Compact styles
+ Targeting 'classic' style option in UI with 'tags' mode
+ https://github.com/replete/obsidian-minimal-theme-css-snippets
+*/
+
+.workspace .view-content:has(.checklist-plugin-main) {
+ padding:0
+}
+
+.workspace .view-content .checklist-plugin-main {
+ padding:0 6px 0 8px;
+}
+
+.workspace .view-content .checklist-plugin-main .group {
+ margin-bottom:0;
+ border:none
+}
+
+.workspace .view-content .checklist-plugin-main .group-header {
+ padding-left:8px;
+ margin-bottom:0;
+}
+
+.workspace .view-content .checklist-plugin-main .group-header .space {
+ /* order:3; */
+ display:none
+}
+
+.workspace .view-content .checklist-plugin-main .group-header .collapse {
+ margin-left:-2px
+}
+
+.workspace .view-content .checklist-plugin-main .group-header .count {
+ display:none;
+}
+
+.workspace .view-content .checklist-plugin-main .group-header .title {
+ font-size:13px;
+}
+
+.workspace .view-content .checklist-plugin-main .group-header .title span {
+ color:var(--tx2)
+}
+.workspace .view-content .checklist-plugin-main .group-header .title span:last-of-type {
+ color:var(--tx1);
+ font-weight:600;
+ text-indent:0.1em
+}
+
+.workspace .view-content .checklist-plugin-main .settings-container svg {
+ transform: scale(0.75);
+ opacity:0.3;
+}
+
+
+.workspace .view-content .checklist-plugin-main .group-header:has(.left) {
+ opacity:0.5
+}
+
+.workspace .view-content .checklist-plugin-main ul li {
+ align-items:flex-start;
+ margin: 8px 0;
+}
+
+.workspace .view-content .checklist-plugin-main ul p {
+ margin:0;
+ font-size:13px;
+ color: var(--tx2);
+ line-height:1.35em;
+ padding-bottom:4px;
+ color:var(--tx1)
+}
+
+.workspace .view-content .checklist-plugin-main ul .toggle {
+ padding:0 6px 0 8px;
+ margin:0;
+ height:auto !important;
+}
+
+.workspace .view-content .checklist-plugin-main .toggle .checkbox {
+ border-color:var(--tx2);
+ height:16px !important;
+ width:16px !important;
+ min-height:auto;
+ min-width:auto;
+ transform:translate(0,0px)
+}
+
+.workspace .view-content .checklist-plugin-main input.search {
+ margin:0
+}
+
+.workspace .view-content .checklist-plugin-main input.search {
+}
+
+.workspace .view-content .checklist-plugin-main input.search:focus {
+ box-shadow: none !important
+}
+
+.workspace .view-content .checklist-plugin-main input.search::placeholder {
+ color:var(--tx3);
+ opacity:0.4;
+}
+
+.workspace .view-content .checklist-plugin-main > .container {
+ margin-bottom:0;
+}
\ No newline at end of file
diff --git a/.obsidian/snippets/Custom Frames - Duotone.css b/.obsidian/snippets/Custom Frames - Duotone.css
new file mode 100644
index 00000000..831ad621
--- /dev/null
+++ b/.obsidian/snippets/Custom Frames - Duotone.css
@@ -0,0 +1,514 @@
+/*
+ Custom Frames - Duotone
+ Make custom frames appear duotone before interaction
+ https://github.com/replete/obsidian-minimal-theme-css-snippets
+*/
+.custom-frames-view webview:not(:hover) {
+ filter:grayscale() brightness(1) contrast(1.7);
+ }
+/* Light themes */
+
+.theme-light.minimal-default-light .custom-frames-view:not(:hover) {
+ filter: url('data:image/svg+xml,\
+ #filter');
+}
+
+.theme-light.minimal-atom-light .custom-frames-view:not(:hover) {
+ filter: url('data:image/svg+xml,\
+ #filter');
+}
+
+.theme-light.minimal-ayu-light .custom-frames-view:not(:hover) {
+ filter: url('data:image/svg+xml,\
+ #filter');
+}
+
+.theme-light.minimal-catppuccin-light .custom-frames-view:not(:hover) {
+ filter: url('data:image/svg+xml,\
+ #filter');
+}
+
+.theme-light.minimal-everforest-light .custom-frames-view:not(:hover) {
+ filter: url('data:image/svg+xml,\
+ #filter');
+}
+
+.theme-light.minimal-gruvbox-light .custom-frames-view:not(:hover) {
+ filter: url('data:image/svg+xml,\
+ #filter');
+}
+
+.theme-light.minimal-macos-light .custom-frames-view:not(:hover) {
+ filter: url('data:image/svg+xml,\
+ #filter');
+}
+
+.theme-light.minimal-nord-light .custom-frames-view:not(:hover) {
+ filter: url('data:image/svg+xml,\
+ #filter');
+}
+
+.theme-light.minimal-notion-light .custom-frames-view:not(:hover) {
+ filter: url('data:image/svg+xml,\
+ #filter');
+}
+
+.theme-light.minimal-rose-pine-light .custom-frames-view:not(:hover) {
+ filter: url('data:image/svg+xml,\
+ #filter');
+}
+
+.theme-light.minimal-solarized-light .custom-frames-view:not(:hover) {
+ filter: url('data:image/svg+xml,\
+ #filter');
+}
+
+.theme-light.minimal-things-light .custom-frames-view:not(:hover) {
+ filter: url('data:image/svg+xml,\
+ #filter');
+}
+
+
+/* Dark themes */
+
+.theme-dark.minimal-default-dark .custom-frames-view:not(:hover) {
+ filter: url('data:image/svg+xml,\
+ #filter');
+}
+
+.theme-dark.minimal-atom-dark .custom-frames-view:not(:hover) {
+ filter: url('data:image/svg+xml,\
+ #filter');
+}
+
+.theme-dark.minimal-ayu-dark .custom-frames-view:not(:hover) {
+ filter: url('data:image/svg+xml,\
+ #filter');
+}
+
+.theme-dark.minimal-catppuccin-dark .custom-frames-view:not(:hover) {
+ filter: url('data:image/svg+xml,\
+ #filter');
+ /* removed .2 from light values text overlay legibility */
+}
+
+.theme-dark.minimal-dracula-dark .custom-frames-view:not(:hover) {
+ filter: url('data:image/svg+xml,\
+ #filter');
+}
+
+.theme-dark.minimal-everforest-dark .custom-frames-view:not(:hover) {
+ filter: url('data:image/svg+xml,\
+ #filter');
+}
+
+.theme-dark.minimal-gruvbox-dark .custom-frames-view:not(:hover) {
+ filter: url('data:image/svg+xml,\
+ #filter');
+}
+
+.theme-dark.minimal-macos-dark .custom-frames-view:not(:hover) {
+ filter: url('data:image/svg+xml,\
+ #filter');
+}
+
+.theme-dark.minimal-nord-dark .custom-frames-view:not(:hover) {
+ filter: url('data:image/svg+xml,\
+ #filter');
+}
+
+.theme-dark.minimal-notion-dark .custom-frames-view:not(:hover) {
+ filter: url('data:image/svg+xml,\
+ #filter');
+}
+
+.theme-dark.minimal-rose-pine-dark .custom-frames-view:not(:hover) {
+ filter: url('data:image/svg+xml,\
+ #filter');
+}
+
+.theme-dark.minimal-solarized-dark .custom-frames-view:not(:hover) {
+ filter: url('data:image/svg+xml,\
+ #filter');
+}
+
+.theme-dark.minimal-things-dark .custom-frames-view:not(:hover) {
+ filter: url('data:image/svg+xml,\
+ #filter');
+}
+
diff --git a/.obsidian/snippets/Custom Frames.css b/.obsidian/snippets/Custom Frames.css
new file mode 100644
index 00000000..f332c48a
--- /dev/null
+++ b/.obsidian/snippets/Custom Frames.css
@@ -0,0 +1,9 @@
+/*
+ Custom Frames plugin tweaks
+ Pretty much just removing the frame padding...
+ https://github.com/replete/obsidian-minimal-theme-css-snippets
+*/
+
+.custom-frames-view webview {
+padding:0 !important;
+}
\ No newline at end of file
diff --git a/.obsidian/snippets/Daily Note Outline.css b/.obsidian/snippets/Daily Note Outline.css
new file mode 100644
index 00000000..cefc604e
--- /dev/null
+++ b/.obsidian/snippets/Daily Note Outline.css
@@ -0,0 +1,69 @@
+/*
+ Daily Note Outline
+ Visual tweaks
+ https://github.com/replete/obsidian-minimal-theme-css-snippets
+*/
+
+/* Container */
+.workspace-leaf-content[data-type="daily-note-outline"] .view-content {
+ padding-bottom:0;
+}
+
+/* Compact header */
+.workspace-leaf-content[data-type="daily-note-outline"] .nav-header {
+ padding:4px 2px 4px 2px;
+ transform:scale(0.85);
+ transform-origin:0 0;
+ text-align: left;
+}
+/* Date range buttons styling */
+.workspace-leaf-content[data-type="daily-note-outline"] .nav-date-range {
+ color: var(--tx2);
+ line-height:1em;
+ padding: 4px 6px;
+ border-radius: 10px;
+ opacity:0.7
+}
+
+.workspace-leaf-content[data-type="daily-note-outline"] .nav-buttons-container + .nav-date-range {
+ margin-right: 4px;
+ margin-left: 4px
+}
+
+/* Files container */
+.workspace-leaf-content[data-type="daily-note-outline"] .nav-files-container {
+ padding:4px 0 0 4px;
+ border-top:1px solid var(--divider-color);
+ margin-top:-6px;
+
+ /* file title */
+ > .nav-folder .nav-folder-title {
+ /* Fix indentation of first heading */
+ padding-left:8px;
+ }
+
+}
+
+/* Note detail suffix styling */
+.workspace-leaf-content[data-type="daily-note-outline"] .nav-folder-title::after {
+ padding-left: 4px;
+ opacity: 0.7;
+}
+
+/* Files preview */
+.workspace-leaf-content[data-type="daily-note-outline"] .nav-file-title-preview {
+ color: var(--tx2);
+ opacity:0.7;
+ padding-left:8px;
+ font-style:italic;
+}
+.workspace-leaf-content[data-type="daily-note-outline"] .nav-file-title-preview::after {
+ content:'';
+ background:linear-gradient(to right, transparent, var(--bg1));
+ width:1.5em;
+ height:1.5em;
+ position:absolute;
+ right:0;
+ top:5px;
+ display:block;
+}
\ No newline at end of file
diff --git a/.obsidian/snippets/Database Folder.css b/.obsidian/snippets/Database Folder.css
new file mode 100644
index 00000000..14ed00bd
--- /dev/null
+++ b/.obsidian/snippets/Database Folder.css
@@ -0,0 +1,190 @@
+/*
+ Database Folders visual tweaks
+ (alignments, compact density, a few interactive bugs)
+ https://github.com/replete/obsidian-minimal-theme-css-snippets
+*/
+
+
+/* Header */
+
+.database-plugin__header-menu {
+ transform:scale(0.75) translate(5px, 4px)
+}
+
+.database-plugin__header-menu .svg-icon svg {
+ fill:var(--tx2)
+}
+
+.database-plugin__th .svg-icon {
+ display:none !important;
+}
+
+.database-plugin__th > .database-plugin__header-menu .svg-icon {
+ display:block !important
+}
+
+.database-plugin__th-content {
+ transform:translate(0,-7px);
+ width:100%;
+ text-align:center !important;
+ justify-content:center;
+ font-size:12px;
+}
+
+/* main */
+
+.database-plugin__th {
+ overflow: hidden !important;
+}
+.database-plugin__tr:nth-of-type(2n-1) .database-plugin__td:last-child {
+ background: linear-gradient(to right, var(--background-secondary), var(--tab-container-background))
+}
+
+.database-plugin__tr.database-plugin__footer-group:last-child .database-plugin__td:last-child {
+ background:var(--tab-container-background);
+}
+
+.database-plugin__td.database-plugin__footer {
+ border:none
+}
+
+.database-plugin__tbody .database-plugin__tr:last-child .database-plugin__td {
+ border-bottom:1px solid var(--background-modifier-border);
+}
+
+
+
+.database-plugin__td {
+ padding:0 !important
+}
+
+/* Fix target/focus outlines */
+.database-plugin__td:hover {
+ box-shadow:none !important
+}
+
+.database-plugin__td > span:focus {
+ box-shadow:none !important;
+}
+
+.database-plugin__td:hover {
+ outline:none
+}
+
+.database-plugin__tr .database-plugin__td:last-child:hover {
+ outline:none;
+ background:inherit
+}
+
+.database-plugin__td:focus-within {
+ outline: 1px solid var(--tx3);
+ background-color:inherit;
+}
+
+.database-plugin__td a[href] {
+ color:var(--tx2);
+ text-decoration:none;
+}
+
+.database-plugin__td a[href*='.md']::after {
+ content:'MD';
+ color:var(--tx3);
+ display:inline-block;
+ font-size:8px;
+ font-weight:bold;
+ padding:2px;
+ margin-left:2px;
+ background:var(--bg2);
+ border-radius: 4px;
+ line-height:1em;
+ transform:translate(0,-2px)
+
+}
+
+/* partial fix of outline hover issue */
+.database-plugin__tr:hover,
+.database-plugin__tr:hover .database-plugin__td {
+ z-index:500
+}
+
+.database-plugin__tr .database-plugin__td:first-child .database-plugin__relationship[style] {
+ background-color:transparent !important
+}
+
+.database-plugin__tr .database-plugin__td:first-child p {
+ color: var(--tx2) !important;
+ opacity:.6;
+}
+
+
+.database-plugin__tr:nth-of-type(2n-1) .database-plugin__td:first-child {
+ background:var(--background-secondary)
+}
+
+/* checkbox */
+.theme-light .database-plugin__td input[type=checkbox]{
+ border-color:var(--tx3) !important;
+}
+
+.database-plugin__td input[type=checkbox]{
+ border-color:var(--tx2);
+ transform:translate(0,0px)
+}
+.database-plugin__td input[type=checkbox]:checked {
+ border:none;
+ background-color:var(--tx2)
+}
+
+.theme-light .database-plugin__td input[type=checkbox]:checked {
+ background-color:var(--tx3)
+}
+
+.database-plugin__td input[type=checkbox]:focus {
+ outline:none
+}
+
+.database-plugin__td.data-input textarea.database-plugin__editor-cell {
+ /* resize:none; */
+ border-radius:0;
+ margin-bottom:-2px;
+}
+
+
+
+/* Header search */
+.database-plugin__th input[type=text] {
+ border-radius:0 !important;
+ border-left:0;
+ border-right:0;
+}
+
+.database-plugin__th input[type=text]::placeholder {
+ font-size:11px;
+}
+
+
+/* Footer */
+
+.database-plugin__tfoot .database-plugin__footer-group .database-plugin__td {
+ border-right-color: transparent !important;
+}
+
+.database-plugin__tfoot {
+ box-shadow: 0 -5px 5px -4px var(--background-secondary)
+}
+
+.database-plugin__table {
+ border-bottom-color:transparent !important
+}
+
+/* Pagination */
+.database-plugin__pagination {
+ right:auto;
+ left:10px;
+ transform:scale(0.8);
+}
+.database-plugin__pagination-button {
+ border:1px solid var(--background-modifier-border) !important;
+ padding:4px !important;
+}
+
diff --git a/.obsidian/snippets/Day Planner (Ivan Lednev).css b/.obsidian/snippets/Day Planner (Ivan Lednev).css
new file mode 100644
index 00000000..625bc4d9
--- /dev/null
+++ b/.obsidian/snippets/Day Planner (Ivan Lednev).css
@@ -0,0 +1,22 @@
+/*
+ Day Planner (Ivan Lednev version)
+ Ivan has done an amazing job with this plugin. THANK YOU.
+ This snippet just makes the toolbar a little bit more compact.
+ https://github.com/replete/obsidian-minimal-theme-css-snippets
+*/
+.workspace-leaf-content[data-type=timeline] {
+ .view-content {
+ > .controls > .controls {
+ padding:4px;
+ .header {
+ .clickable-icon:not(:is(
+ [aria-label="Go to previous day"],
+ [aria-label="Go to next day"]
+ )) {
+ padding-left:0px !important;
+ padding-right:0px !important;
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/.obsidian/snippets/Day Planner (old version).css b/.obsidian/snippets/Day Planner (old version).css
new file mode 100644
index 00000000..37b19c9b
--- /dev/null
+++ b/.obsidian/snippets/Day Planner (old version).css
@@ -0,0 +1,191 @@
+/*
+ Day Planner visual changes
+ This is for the abandoned plugin.
+ These styles will be ported over to my forked plugin:
+ https://github.com/replete/obsidian-day-planner
+
+ https://github.com/replete/obsidian-minimal-theme-css-snippets
+*/
+
+/* Container max size */
+.mod-right-split [data-type=timeline] .view-content {
+ padding:0;
+}
+.mod-right-split [data-type=timeline] .events {
+ padding-bottom: 0 !important
+}
+
+/* Planner box styling - hide timeline bar, minimal styles */
+.mod-right-split [data-type=timeline] .aside {
+ width:30px !important;
+ opacity:0.75 !important;
+}
+.mod-right-split [data-type=timeline] .aside__line {
+ left:20px !important;
+ display:none;
+}
+.mod-right-split [data-type=timeline] .event_item_contents {
+ padding-left:30px !important;
+}
+.mod-right-split [data-type=timeline] .event_item .ei_Dot {
+ display:none;
+}
+.mod-right-split [data-type=timeline] .event_item .ei_Title {
+ margin-left:-5px;
+ font-size:11px;
+ line-height:1em;
+}
+.mod-right-split [data-type=timeline] .event_item .ei_Copy {
+ margin-left:10px;
+}
+
+/* Fix 'hour quarters' bg in dark themes */
+.mod-right-split [data-type=timeline] .aside,
+.mod-right-split [data-type=timeline] .aside .aside__line {
+ filter:invert(100%);
+ mix-blend-mode:overlay;
+}
+
+/* Make colours fit minimal theme */
+.mod-right-split [data-type=timeline] .event_item {
+ /* background-color:var(--background-modifier-hover) !important; */
+ /* background: linear-gradient(0deg, var(--background-primary), transparent); */
+ /* border-bottom-color: var(--tx3) !important; */
+}
+ .theme-light .mod-right-split [data-type=timeline] .event_item {
+ filter:brightness(2) saturate(0.4);
+ }
+.mod-right-split [data-type=timeline] .event_item:hover {
+ box-shadow:none !important;
+ background-color: var(--tx2) !important;
+}
+
+.theme-light .mod-right-split [data-type=timeline] .event_item:hover {
+ background-color: var(--color-red) !important;
+}
+.theme-light .mod-right-split [data-type=timeline] .event_item {
+ border-bottom-color: var(--tx2) !important;
+
+}
+
+.mod-right-split [data-type=timeline] .event_item .ei_Title {
+ color: var(--tx1) !important;
+ opacity:0.8;
+ text-shadow: 1px 1px 1px var(--progress-outline)
+}
+
+.theme-light .mod-right-split [data-type=timeline] .event_item .ei_Title,
+.theme-light .mod-right-split [data-type=timeline] .event_item .ei_Copy {
+ color:var(--tx3) !important
+}
+
+.theme-dark .mod-right-split [data-type=timeline] .event_item .ei_Title,
+.theme-dark .mod-right-split [data-type=timeline] .event_item .ei_Copy{
+ color: var(--tx1) !important
+}
+
+/* Cleverer colours (limited to theme, but better than nothing) */
+.mod-right-split [data-type=timeline] .event_item:nth-of-type(2n-1) {
+ /* background-color:var(--color-green) !important; */
+
+}
+.mod-right-split [data-type=timeline] .event_item_color1 {
+ /* background-color:red !important; */
+}
+
+/* Now line overlay */
+
+.mod-right-split [data-type=timeline] #now-line {
+ /* background-color:var(--interactive-accent) !important; */
+ /* height:1px !important; */
+}
+.mod-right-split [data-type=timeline] #now-line .timeline-time {
+ left: 80% !important;
+ position: absolute !important;
+ font-size:12px;
+ padding-bottom:0 !important;
+}
+
+
+
+/* Planner box timeline line colors */
+.mod-right-split [data-type=timeline] #day-planner-timeline-container .aside__line,
+.mod-right-split [data-type=timeline] #day-planner-timeline-container .ei_Dot {
+ background-color: var(--tx3);
+}
+
+/* Hide autoscroll label */
+.mod-right-split [data-type=timeline] label[for=auto-scroll] {
+ display:none !important;
+}
+
+/* Restyle autoscroll checkbox and place over the planner top right */
+.mod-right-split [data-type=timeline] #scroll-controls {
+ position: fixed !important;
+ top:0 !important;
+ margin-top:-10px !important;
+ background:transparent !important
+}
+.mod-right-split [data-type=timeline] #auto-scroll {
+ position:absolute !important;
+ right:-4px;
+ top: 10px;
+ transform:scale(0.8);
+ transform-origin: 0 0;
+ opacity:0.5;
+ background-color: var(--tx2) !important;
+}
+.mod-right-split [data-type=timeline] #auto-scroll:hover {
+ opacity:1;
+}
+.mod-right-split [data-type=timeline] #auto-scroll::before {
+ content: 'time time' !important;
+}
+.mod-right-split [data-type=timeline] #auto-scroll:not(:checked)::before {
+ text-indent:-33px !important
+}
+
+.mod-right-split [data-type=timeline] .empty-timeline {
+ color: var(--tx3) !important;
+}
+
+#day-planner-timeline-container::after {
+ content:'';
+ display:block;
+ background: linear-gradient(to bottom, transparent, rgba(0,0,0,0.6));
+ width:100%;
+ height:8px;
+ position: fixed;
+ bottom:0;
+ pointer-events:none;
+}
+
+/* Hide scrollbar */
+
+.view-content:has(#day-planner-timeline-container) {
+ outline: 2px solid red !important;
+}
+
+.view-content:has(#day-planner-timeline-container)::-webkit-scrollbar {
+ scrollbar-width: 0 !important;
+ width:0
+}
+
+
+/* status bar fixes */
+
+.status-bar-item.plugin-obsidian-day-planner .progress-pie {
+ background-image:linear-gradient(to right,transparent 50%, var(--tx1) 0)
+}
+.status-bar-item.plugin-obsidian-day-planner .progress-pie::before {
+ background-color:var(--tx1);
+}
+
+.status-bar-item.plugin-obsidian-day-planner .day-planner-status-bar-text {
+ transform: translate(0, 3px)
+}
+
+.status-bar-item.plugin-obsidian-day-planner .day-planner-progress-bar {
+ background:var(--background-modifier-border);
+ transform:translate(0, -1px);
+}
\ No newline at end of file
diff --git a/.obsidian/snippets/Excalidraw - Compact.css b/.obsidian/snippets/Excalidraw - Compact.css
new file mode 100644
index 00000000..9e272af3
--- /dev/null
+++ b/.obsidian/snippets/Excalidraw - Compact.css
@@ -0,0 +1,265 @@
+/*
+ Excalidraw plugin
+ Compact layout. Only tested on Desktop.
+
+ https://github.com/replete/obsidian-minimal-theme-css-snippets
+*/
+
+.excalidraw {
+
+ /* Fix illegible island contrast */
+ --island-bg-color:#dde4eb !important;
+ &.theme--dark {
+ --island-bg-color:#292929 !important;
+ }
+
+ /* Better looking floating utility island */
+ > .Island:not(.sidebar) {
+ width:180px !important;
+
+ > div:first-child {
+ border-bottom-left-radius: 0 !important;
+ svg {
+ opacity:0.2;
+ /* height:16px; */
+
+ > path {
+ display:none
+ }
+ }
+ }
+ > .Island {
+ padding:4px;
+ border-top-left-radius: 0 !important;
+ border-top-right-radius: 0 !important;
+ margin-top:-4px;
+ border-top:1px solid rgba(255,255,255,.2);
+
+ legend {
+ opacity:0.5;
+ margin:4px 0 -2px 5px;
+ /* text-align:center; */
+ text-transform:uppercase;
+ letter-spacing:0.04em;
+ font-size:10px;
+ /* border-bottom:1px solid rgba(255,255,255,0.5); */
+ width:100%;
+ }
+
+ .buttonList {
+ gap:2px
+ }
+
+ .ToolIcon_type_button {
+ padding:2px !important;
+ border-radius:0 !important;
+ background:none;
+
+ .ToolIcon__icon {
+ transform: scale(1.3) !important;
+ }
+ }
+ }
+ }
+
+ .App-toolbar {
+ padding:0;
+
+ /* Increase icon size toolbar */
+ .ToolIcon {
+ .ToolIcon__icon svg {
+ transform:scale(1.4) !important;
+ }
+ }
+
+ /* make keyboard shortcut numbers more visible */
+ .ToolIcon__keybinding {
+ font-size:8px !important;
+ top:30px;
+ left:12px;
+ }
+
+ .App-toolbar__divider {
+ margin-right:0;
+ margin-left:0;
+ }
+ }
+
+ .HintViewer {
+ margin-top:20px
+ }
+
+ /* Remove padding around canvas UI */
+ .FixedSideContainer.FixedSideContainer_side_top {
+ padding:0;
+ top:2px !important;
+ left:10px !important;
+ bottom:0 !important;
+ right:2px !important;
+ }
+ .App-menu_top__left,
+ .layer-ui__wrapper__top-right {
+ margin-top:4px !important;
+ }
+
+ .dropdown-menu .Island /* desktop */,
+ .dropdown-menu--mobile > .Stack /*mobile*/{
+ padding:0 !important;
+
+ [data-testid=canvas-background-label] {
+ padding-left:8px;
+ opacity:0.5;
+ margin-bottom:0px !important;
+ }
+
+ .dropdown-menu-item {
+ margin:0;
+ height:1.5rem !important;
+ font-size:0.85rem;
+
+ + div[style]:empty {
+ margin:4px 0 !important;
+ }
+ }
+ }
+
+ .dropdown-menu-container {
+ gap:0; /* mobile */
+ }
+
+ .sidebar-trigger {
+ padding-top:12px;
+ }
+
+ [role=contentinfo] {
+ bottom:-1px !important;
+ left:0 !important;
+ padding-left:34px;
+
+ .help-icon {
+ position:fixed;
+ bottom: -1px;
+ padding:0;
+ left: 2px;
+ opacity:0.8;
+ }
+
+ .reset-zoom-button {
+ font-size:75% !important;
+ opacity: 0.8;
+ }
+ }
+
+ /* Library sidebar */
+ .Island.sidebar {
+ width:400px;
+ background: var(--island-bg-color);
+
+ .sidebar-tabs-root {
+ padding-top:4px;
+ }
+
+ .sidebar__header {
+ padding-bottom:0;
+ }
+
+ .library-menu-items-container__items {
+ padding-top:0;
+ }
+
+ .library-menu-dropdown-container {
+ margin-top:-14px;
+ }
+
+ .library-menu-items-container__grid {
+ width:100%;
+ gap:5px;
+
+ .library-unit {
+ width:100%;
+ }
+
+ .library-unit__active {
+ border-radius:2px;
+ }
+
+ .library-unit__dragger {
+ width:100%;
+ height:100%;
+ }
+ }
+
+ .library-menu-control-buttons--at-bottom[style] {
+ padding-top:4px !important;
+ width:40%;
+
+ }
+ }
+
+ /* Smaller on mobile */
+ &.excalidraw--mobile .Island.sidebar {
+ width:250px !important;
+
+ .Checkbox-box {
+ width:12px;
+ height:12px;
+ border-radius:2px;
+ }
+
+ .library-menu-control-buttons--at-bottom[style] {
+ width:60%;
+ }
+ }
+
+ /* Fix sidebar trigger bg color */
+ .sidebar-trigger:not(:hover) {
+ background-color:transparent !important
+ }
+
+ /* Tray mode - sidebar*/
+ .mobile-misc-tools-container {
+ right:0;
+
+ .ToolIcon {
+ svg {
+ transform:scale(1.4)
+ }
+ }
+ }
+
+ /* Tray mode - bottom bar */
+ .App-bottom-bar[style] {
+ margin-bottom:0 !important;
+
+ .Island {
+ padding:0;
+ background-color:transparent;
+
+ > .Stack > .Stack {
+ padding:0 !important;
+ }
+ }
+
+ .App-toolbar-content {
+ padding:0;
+ }
+
+ .dropdown-menu-container {
+ background:var(--island-bg-color);
+ margin-bottom:-20px;
+ }
+
+
+ }
+}
+
+/* Show excalidraw right footer help icon above minimal statusbar */
+/* @container style(--status-bar-position: fixed) {
+ .excalidraw-container {
+ [role=contentinfo] {
+ .help-icon {
+ margin-top:-40px;
+ }
+ }
+ }
+} */
diff --git a/.obsidian/snippets/Excel.css b/.obsidian/snippets/Excel.css
new file mode 100644
index 00000000..f8a9ec56
--- /dev/null
+++ b/.obsidian/snippets/Excel.css
@@ -0,0 +1,87 @@
+/*
+ Excel plugin
+ Colours inherit from minimal theme and various adjustments
+ Limitations:
+ - Cannot adjust spreadsheet editor colours as it is rendered in