From 8c9e0e0b6bb5ae09a7c8f5fb3f9a8745d4625605 Mon Sep 17 00:00:00 2001 From: Zane Meyers Date: Thu, 4 Dec 2025 17:06:30 -0500 Subject: [PATCH] vault backup: 2025-12-04 17:06:30 --- .obsidian/community-plugins.json | 4 +- .obsidian/graph.json | 11 +- .obsidian/plugins/anchor-display-text/main.js | 273 +++++++++++++++ .../plugins/anchor-display-text/manifest.json | 10 + .obsidian/plugins/easy-copy/main.js | 14 + .obsidian/plugins/easy-copy/manifest.json | 10 + .obsidian/plugins/easy-copy/styles.css | 27 ++ 2025-12-04.md | 33 ++ banjo-tablatures.md | 2 +- banjo.md | 2 +- birds.md | 2 +- default-list.md | 2 +- formatting-titles.md | 2 +- homelab.md | 2 +- ibc-construction-types.md | 28 +- ibc-occupancy-classifications.md | 98 +++++- ibc_ch02.md | 13 + ibc_ch03.md | 13 + ibc_ch05.md | 13 + ibc_ch09.md | 13 + ibc_ch10.md | 13 + ibc_international-building-code.md | 63 ++++ learn-banjo.md | 1 + media-to-watch.md | 2 +- medium-voltage.md | 2 + multi-family-dwellings.md | 48 ++- nfpa-70_311_mv-conductors.md | 318 ++++++++---------- owned-models.md | 2 +- pdi-building-types.md | 14 +- stochastic-branch-takeoff.md | 8 +- the-book-of-the-new-sun.md | 2 +- the-story-of-ymar.md | 2 +- thoreau_1854_walden.md | 15 + uncommon-syntax.md | 31 +- when-i-die.md | 2 +- wiring-method-selection.md | 18 +- wolfe_1980_shadow.md | 1 + wolfe_1981_claw.md | 1 + wolfe_1981_sword.md | 1 + wolfe_1982_citadel.md | 1 + wolfe_1987_urth.md | 1 + write-more-philosophy.md | 3 +- 42 files changed, 878 insertions(+), 243 deletions(-) create mode 100644 .obsidian/plugins/anchor-display-text/main.js create mode 100644 .obsidian/plugins/anchor-display-text/manifest.json create mode 100644 .obsidian/plugins/easy-copy/main.js create mode 100644 .obsidian/plugins/easy-copy/manifest.json create mode 100644 .obsidian/plugins/easy-copy/styles.css create mode 100644 2025-12-04.md create mode 100644 ibc_ch02.md create mode 100644 ibc_ch03.md create mode 100644 ibc_ch05.md create mode 100644 ibc_ch09.md create mode 100644 ibc_ch10.md create mode 100644 ibc_international-building-code.md create mode 100644 thoreau_1854_walden.md diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json index 80e1f6d..adcba4c 100644 --- a/.obsidian/community-plugins.json +++ b/.obsidian/community-plugins.json @@ -14,5 +14,7 @@ "obsidian-pretty-bibtex", "obsidian-tikzjax", "lilypond", - "novel-word-count" + "novel-word-count", + "easy-copy", + "anchor-display-text" ] \ No newline at end of file diff --git a/.obsidian/graph.json b/.obsidian/graph.json index 2616fb0..e1605ab 100644 --- a/.obsidian/graph.json +++ b/.obsidian/graph.json @@ -1,6 +1,6 @@ { "collapse-filter": false, - "search": "-file:tags", + "search": "path:/*.md", "showTags": false, "showAttachments": false, "hideUnresolved": true, @@ -41,6 +41,13 @@ "a": 1, "rgb": 5431473 } + }, + { + "query": "tag:#topic/hobbies", + "color": { + "a": 1, + "rgb": 14701254 + } } ], "collapse-display": false, @@ -53,6 +60,6 @@ "repelStrength": 20, "linkStrength": 1, "linkDistance": 307, - "scale": 0.21558141879771345, + "scale": 0.15376893622574136, "close": false } \ No newline at end of file diff --git a/.obsidian/plugins/anchor-display-text/main.js b/.obsidian/plugins/anchor-display-text/main.js new file mode 100644 index 0000000..2fc4903 --- /dev/null +++ b/.obsidian/plugins/anchor-display-text/main.js @@ -0,0 +1,273 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// main.ts +var main_exports = {}; +__export(main_exports, { + default: () => AnchorDisplayText +}); +module.exports = __toCommonJS(main_exports); +var import_obsidian = require("obsidian"); +var RE_ANCHOR_NO_DISPLAY = /!?\[\[([^\]]+#[^|\n\r\]]+)\]\]$/; +var RE_ANCHOR_DISPLAY = /(\[\[([^\]]+#[^\n\r\]]+)\]\])$/; +var RE_DISPLAY = /\|([^\]]+)/; +var DEFAULT_SETTINGS = { + includeNoteName: "headersOnly", + whichHeadings: "allHeaders", + includeNotice: false, + sep: " ", + suggest: true, + ignoreEmbedded: true +}; +var AnchorDisplayText = class extends import_obsidian.Plugin { + constructor() { + super(...arguments); + this.suggestionsRegistered = false; + } + async onload() { + await this.loadSettings(); + this.addSettingTab(new AnchorDisplayTextSettingTab(this.app, this)); + if (this.settings.suggest) { + this.registerEditorSuggest(new AnchorDisplaySuggest(this)); + this.suggestionsRegistered = true; + } + this.registerEvent( + this.app.workspace.on("editor-change", (editor) => { + var _a; + const cursor = editor.getCursor(); + const currentLine = editor.getLine(cursor.line); + const lastChars = currentLine.slice(cursor.ch - 2, cursor.ch); + if (lastChars !== "]]") + return; + const match = currentLine.slice(0, cursor.ch).match(RE_ANCHOR_NO_DISPLAY); + if (match) { + if (this.settings.ignoreEmbedded && match[0].charAt(0) === "!") + return; + const headings = match[1].split("#"); + let displayText = ""; + if (this.settings.whichHeadings === "lastHeader") { + displayText = headings[headings.length - 1]; + } else { + displayText = headings[1]; + if (this.settings.whichHeadings === "allHeaders") { + for (let i = 2; i < headings.length; i++) { + displayText += this.settings.sep + headings[i]; + } + } + } + const startIndex = ((_a = match.index) != null ? _a : 0) + match[0].length - 2; + if (this.settings.includeNoteName === "noteNameFirst") { + displayText = `${headings[0]}${this.settings.sep}${displayText}`; + } else if (this.settings.includeNoteName === "noteNameLast") { + displayText = `${displayText}${this.settings.sep}${headings[0]}`; + } + if (displayText.startsWith("^")) { + displayText = displayText.slice(1); + } + editor.replaceRange(`|${displayText}`, { line: cursor.line, ch: startIndex }, void 0, "headerDisplayText"); + if (this.settings.includeNotice) { + new import_obsidian.Notice(`Updated anchor link display text.`); + } + } + }) + ); + } + onunload() { + } + async loadSettings() { + this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData()); + } + async saveSettings() { + await this.saveData(this.settings); + } +}; +var AnchorDisplaySuggest = class extends import_obsidian.EditorSuggest { + constructor(plugin) { + super(plugin.app); + this.suggestionSelected = null; + this.plugin = plugin; + } + onTrigger(cursor, editor) { + if (!this.plugin.settings.suggest) + return null; + if (this.suggestionSelected) { + if (this.suggestionSelected.ch === cursor.ch && this.suggestionSelected.line === cursor.line) + return null; + this.suggestionSelected = null; + return null; + } + const currentLine = editor.getLine(cursor.line); + const lastChars = currentLine.slice(cursor.ch - 2, cursor.ch); + if (lastChars !== "]]") + return null; + const slice = currentLine.slice(0, cursor.ch); + const match = slice.match(RE_ANCHOR_DISPLAY); + if (!match) + return null; + if (this.plugin.settings.ignoreEmbedded && slice.charAt(match.index - 1) === "!") + return null; + return { + start: { + line: cursor.line, + ch: match.index + match[1].length - 2 + // 2 less to keep closing brackets + }, + end: { + line: cursor.line, + ch: match.index + match[1].length - 2 + }, + query: match[2] + }; + } + getSuggestions(context) { + const headings = context.query.split("|")[0].split("#"); + let displayText = headings[1]; + if (displayText.startsWith("^")) { + displayText = displayText.slice(1); + } + for (let i = 2; i < headings.length; i++) { + displayText += this.plugin.settings.sep + headings[i]; + } + const suggestion1 = { + displayText, + source: "Don't include note name" + }; + const suggestion2 = { + displayText: `${headings[0]}${this.plugin.settings.sep}${displayText}`, + source: "Note name and than heading(s)" + }; + const suggestion3 = { + displayText: `${displayText}${this.plugin.settings.sep}${headings[0]}`, + source: "Heading(s) and than note name" + }; + return [suggestion1, suggestion2, suggestion3]; + } + renderSuggestion(value, el) { + const suggestionEl = el.parentElement; + const suggestionContainerEl = suggestionEl.parentElement; + if (suggestionContainerEl.childElementCount < 2) { + const promptInstructionsEl = suggestionContainerEl.createDiv({ cls: "prompt-instructions" }); + const instructionEl = promptInstructionsEl.createDiv({ cls: "prompt-instruction" }); + instructionEl.createEl("span", { cls: "prompt-instruction-command", text: "\u21B5" }); + instructionEl.createEl("span", { text: "to accept" }); + } + el.setAttribute("class", "suggestion-item mod-complex"); + const suggestionContentEl = el.createDiv({ cls: "suggestion-content" }); + suggestionContentEl.createDiv({ cls: "suggestion-title", text: value.displayText }); + suggestionContentEl.createDiv({ cls: "suggestion-note", text: value.source }); + } + selectSuggestion(value, evt) { + const editor = this.context.editor; + const match = this.context.query.match(RE_DISPLAY); + if (match) { + this.context.start.ch = this.context.start.ch - match[0].length; + } + editor.replaceRange(`|${value.displayText}`, this.context.start, this.context.end, "headerDisplayText"); + this.suggestionSelected = this.context.end; + } +}; +var AnchorDisplayTextSettingTab = class extends import_obsidian.PluginSettingTab { + constructor(app, plugin) { + super(app, plugin); + this.sepWarning = null; + this.plugin = plugin; + } + validateSep(value) { + let validValue = value; + for (const c of value) { + if ("[]#^|".includes(c)) { + validValue = validValue.replace(c, ""); + } + } + if (validValue != value) { + if (!this.sepWarning) { + this.sepWarning = new import_obsidian.Notice(`Separators cannot contain any of the following characters: []#^|`, 0); + } + } else { + if (this.sepWarning) { + this.sepWarning.hide(); + this.sepWarning = null; + } + } + return validValue; + } + display() { + const { containerEl } = this; + containerEl.empty(); + new import_obsidian.Setting(containerEl).setName("Include note name").setDesc("Include the title of the note in the display text.").addDropdown((dropdown) => { + dropdown.addOption("headersOnly", "Don't include note name"); + dropdown.addOption("noteNameFirst", "Note name and then heading(s)"); + dropdown.addOption("noteNameLast", "Heading(s) and then note name"); + dropdown.setValue(this.plugin.settings.includeNoteName); + dropdown.onChange((value) => { + this.plugin.settings.includeNoteName = value; + this.plugin.saveSettings(); + }); + }); + new import_obsidian.Setting(containerEl).setName("Include subheadings").setDesc("Change which headings and subheadings are in the display text.").addDropdown((dropdown) => { + dropdown.addOption("allHeaders", "All linked headings"); + dropdown.addOption("lastHeader", "Last heading only"); + dropdown.addOption("firstHeader", "First heading only"); + dropdown.setValue(this.plugin.settings.whichHeadings); + dropdown.onChange((value) => { + this.plugin.settings.whichHeadings = value; + this.plugin.saveSettings(); + }); + }); + new import_obsidian.Setting(containerEl).setName("Separator").setDesc("Choose what to insert between headings instead of #.").addText((text) => { + text.setValue(this.plugin.settings.sep); + text.onChange((value) => { + this.plugin.settings.sep = this.validateSep(value); + this.plugin.saveSettings(); + }); + }); + new import_obsidian.Setting(containerEl).setName("Enable notifications").setDesc("Have a notice pop up whenever an anchor link is automatically changed.").addToggle((toggle) => { + toggle.setValue(this.plugin.settings.includeNotice); + toggle.onChange((value) => { + this.plugin.settings.includeNotice = value; + this.plugin.saveSettings(); + }); + }); + new import_obsidian.Setting(containerEl).setName("Suggest alternatives").setDesc("Have a suggestion window to present alternative display text options when the cursor is directly after an anchor link.").addToggle((toggle) => { + toggle.setValue(this.plugin.settings.suggest); + toggle.onChange((value) => { + this.plugin.settings.suggest = value; + this.plugin.saveSettings(); + if (!this.plugin.suggestionsRegistered) { + this.plugin.registerEditorSuggest(new AnchorDisplaySuggest(this.plugin)); + this.plugin.suggestionsRegistered = true; + } + }); + }); + new import_obsidian.Setting(containerEl).setName("Ignore embedded files").setDesc("Don't add or change display text for embedded files.").addToggle((toggle) => { + toggle.setValue(this.plugin.settings.ignoreEmbedded); + toggle.onChange((value) => { + this.plugin.settings.ignoreEmbedded = value; + this.plugin.saveSettings(); + }); + }); + } +}; + + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/anchor-display-text/manifest.json b/.obsidian/plugins/anchor-display-text/manifest.json new file mode 100644 index 0000000..437d58e --- /dev/null +++ b/.obsidian/plugins/anchor-display-text/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "anchor-display-text", + "name": "Anchor Link Display Text", + "version": "1.3.0", + "minAppVersion": "0.15.0", + "description": "Automatically uses the linked heading as the display text for the anchor links.", + "author": "Robert C Arsenault", + "authorUrl": "https://github.com/rca-umb", + "isDesktopOnly": false +} \ No newline at end of file diff --git a/.obsidian/plugins/easy-copy/main.js b/.obsidian/plugins/easy-copy/main.js new file mode 100644 index 0000000..c351c1c --- /dev/null +++ b/.obsidian/plugins/easy-copy/main.js @@ -0,0 +1,14 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ + +var B=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var $=Object.getOwnPropertyNames;var _=Object.prototype.hasOwnProperty;var z=(L,k)=>{for(var e in k)B(L,e,{get:k[e],enumerable:!0})},M=(L,k,e,t)=>{if(k&&typeof k=="object"||typeof k=="function")for(let i of $(k))!_.call(L,i)&&i!==e&&B(L,i,{get:()=>k[i],enumerable:!(t=H(k,i))||t.enumerable});return L};var V=L=>M(B({},"__esModule",{value:!0}),L);var P={};z(P,{default:()=>v});module.exports=V(P);var r=require("obsidian");var A={["en"]:{"auto-add-block-id":"Auto generate block ID","auto-add-block-id-desc":"When enabled, if there is no copyable content, a random block ID (^xxxx) will be automatically added to the end of the current line.","manual-block-id":"Manually enter Block ID","manual-block-id-desc":"If enabled, you will be prompted to enter a block ID manually.","block-id-insert-position":"Block ID insert position","block-id-insert-position-desc":"Choose where to insert the block ID - For special blocks like code blocks and quote blocks, at least one line break will be inserted.","block-id-end-of-block":"End of current block","block-id-next-line":"Next line below current block","block-id-next-line-with-gap":"Two lines below current block (with empty line)","modal-block-id":"Enter block ID","modal-block-id-desc":"Allowed: letters, numbers, hyphens (-), underscores (_). Spaces will be converted to hyphens.","error-block-id-empty":"Block ID cannot be empty","error-block-id-invalid":"Only letters, numbers, hyphens and underscores are allowed","no-file":"Cannot get current file","no-content":"No content to copy at current cursor position","inline-code-copied":"Inline code copied!","block-id-copied":"Block ID link copied!","note-link-copied":"Note link copied!","heading-copied":"Heading link copied!","bold-copied":"Bold text copied!","highlight-copied":"Highlighted text copied!","italic-copied":"Italic text copied!","inline-latex-copied":"Inline LaTeX copied!","strikethrough-copied":"Strikethrough text copied!","link-text-copied":"Link text copied!","link-url-copied":"Link URL copied!","wiki-link-copied":"Wiki link copied!","callout-copied":"Callout copied!","note-link-simplified":"Link simplified (filename matches heading)",format:"Format","use-frontmatter-as-display":"Note Link: Use specific property as display text","use-frontmatter-as-display-desc":"If enabled, use the value of the specified note property as the display text for note links","frontmatter-key":"Note property name","frontmatter-key-desc":"The property name used as display text (default: title)","block-id":"Block ID",target:"Target","add-to-menu":"Add to menu","add-to-menu-desc":"Add the command to the context menu","add-extra-commands":"Add extra commands","add-extra-commands-desc":'Enable to add "Copy current note link" and "Generate & copy current block link" commands to the command palette',"show-notice":"Show notice","show-notice-desc":"Show notification when content is copied","use-heading-as-display":"Heading Link: Only use heading as display text","use-heading-as-display-desc":"Use the heading text as display text in copied heading links","simplified-heading-to-note-link":"Simplify link when filename matches heading","simplified-heading-to-note-link-desc":"When the filename matches the heading text (ignoring spaces), create a note link instead of a heading link","heading-link-separator":"Heading Link: Separator between filename and heading","heading-link-separator-desc":'Customize the separator symbol between filename and heading (only shown when "Use heading as display text" is disabled)',"link-format":"Link format","link-format-desc":"The format used when copying various types of links","markdown-link":"Markdown link","wiki-link":"Wiki link","customize-targets":"Customize targets","customize-targets-desc":"Enable to customize which elements can be copied (disable to copy all elements)","enable-inline-code":"Enable inline code","enable-inline-code-desc":"Enable copying inline code like `code example`","enable-bold":"Enable bold text","enable-bold-desc":"Enable copying bold text like **bold example**","enable-highlight":"Enable highlighted text","enable-highlight-desc":"Enable copying highlighted text like ==highlight example==","enable-italic":"Enable italic text","enable-italic-desc":"Enable copying italic text like *italic example*","enable-strikethrough":"Enable strikethrough text","enable-strikethrough-desc":"Enable copying strikethrough text like ~~strikethrough example~~","enable-inline-latex":"Enable inline LaTeX","enable-inline-latex-desc":"Enable copying inline LaTeX like $latex example$","enable-link":"Enable link title/url","enable-link-desc":"Enable copying link like [linktitle](linkurl) - the plugin will copy the title or the URL of the link based on the current cursor position.","auto-block-display-text":"Generate display text for block links","auto-block-display-text-desc":"If enabled, display text will be automatically added to generated block ID links","block-display-word-limit":"Block Display Text: Word limit for English-like languages","block-display-word-limit-desc":'Maximum number of words to show in block display text for space-separated languages (e.g., English "this is a sentence")',"block-display-char-limit":"Block Display Text: Character limit for CJK-like languages","block-display-char-limit-desc":'Maximum number of characters to show in block display text for non-space-separated languages (e.g., Chinese "\u8FD9\u662F\u4E00\u53E5\u8BDD") - This setting will be used when the first line contains non-ASCII characters.',"enable-wikilink":"Enable Wiki Link","enable-wikilink-desc":"Enable copying of [[Wiki]] links","special-format":"Special copy format options","auto-embed-block-link":"Block link: Add ! for embed","auto-embed-block-link-desc":"When copying block links, automatically add ! to embed the block","enable-callout-copy":"Copy callout text","enable-callout-copy-desc":'When the cursor is inside a callout (">" block), copy the callout content as plain text',"callout-copy-priority":"Prioritize callout copy","callout-copy-priority-desc":"When the cursor is inside a callout, prioritize copying the callout content instead of generating a block ID link","keep-wiki-brackets":"Wikilink: Keep [[ ]] brackets","keep-wiki-brackets-desc":"When copying wiki links, keep the surrounding [[ ]] brackets","contextual-copy":"Contextual copy","copy-current-file-link":"Copy current file link","generate-current-block-link-auto":"Copy current block link (auto-generate ID)","generate-current-block-link-manual":"Copy current block link (manual ID input)","file-link-copied":"File link copied!"},["zh"]:{"auto-add-block-id":"\u81EA\u52A8\u751F\u6210\u5757ID","auto-add-block-id-desc":"\u542F\u7528\u540E\uFF0C\u5982\u679C\u6CA1\u6709\u53EF\u590D\u5236\u5185\u5BB9\u65F6\u4F1A\u81EA\u52A8\u5728\u5F53\u524D\u6587\u672C\u672B\u5C3E\u6DFB\u52A0\u4E00\u4E2A\u968F\u673A\u751F\u6210\u7684\u5757ID\uFF08^xxxx\uFF09","manual-block-id":"\u624B\u52A8\u8F93\u5165\u5757ID","manual-block-id-desc":"\u542F\u7528\u540E\uFF0C\u53EF\u4EE5\u5728\u5F39\u7A97\u4E2D\u624B\u52A8\u8F93\u5165\u5757ID","block-id-insert-position":"\u5757ID\u63D2\u5165\u4F4D\u7F6E","block-id-insert-position-desc":"\u9009\u62E9\u751F\u6210\u5757ID\u65F6\u7684\u63D2\u5165\u4F4D\u7F6E\u3002\u5BF9\u4E8E\u4EE3\u7801\u5757\u548C\u5F15\u7528\u5757\u7B49\u7279\u6B8A\u6BB5\u843D\uFF0C\u81F3\u5C11\u4F1A\u63D2\u5165\u4E00\u4E2A\u6362\u884C\u3002","block-id-end-of-block":"\u5F53\u524D\u5757\u7684\u672B\u5C3E","block-id-next-line":"\u5F53\u524D\u5757\u7684\u4E0B\u65B9\u4E00\u884C","block-id-next-line-with-gap":"\u5F53\u524D\u5757\u7684\u4E0B\u65B9\u4E24\u884C\uFF08\u4E2D\u95F4\u9694\u4E00\u4E2A\u7A7A\u884C\uFF09","modal-block-id":"\u8F93\u5165\u5757ID","modal-block-id-desc":"\u4EC5\u5141\u8BB8\u5B57\u6BCD\u3001\u6570\u5B57\u3001\u77ED\u6A2A\u7EBF\uFF08-\uFF09\u3001\u4E0B\u5212\u7EBF\uFF08_\uFF09\uFF0C\u7A7A\u683C\u4F1A\u81EA\u52A8\u8F6C\u4E3A\u77ED\u6A2A\u7EBF\u3002","error-block-id-empty":"\u5757ID\u4E0D\u80FD\u4E3A\u7A7A","error-block-id-invalid":"\u53EA\u5141\u8BB8\u5B57\u6BCD\u3001\u6570\u5B57\u3001-\u3001_","no-file":"\u65E0\u6CD5\u83B7\u53D6\u5F53\u524D\u6587\u4EF6","no-content":"\u5F53\u524D\u5149\u6807\u5904\u6CA1\u6709\u53EF\u590D\u5236\u7684\u5185\u5BB9","inline-code-copied":"\u884C\u5185\u4EE3\u7801\u5DF2\u590D\u5236\uFF01","block-id-copied":"\u5757ID\u94FE\u63A5\u5DF2\u590D\u5236\uFF01","note-link-copied":"\u7B14\u8BB0\u94FE\u63A5\u5DF2\u590D\u5236\uFF01","heading-copied":"\u6807\u9898\u94FE\u63A5\u5DF2\u590D\u5236\uFF01","bold-copied":"\u52A0\u7C97\u6587\u672C\u5DF2\u590D\u5236\uFF01","highlight-copied":"\u9AD8\u4EAE\u6587\u672C\u5DF2\u590D\u5236\uFF01","italic-copied":"\u659C\u4F53\u6587\u672C\u5DF2\u590D\u5236\uFF01","inline-latex-copied":"\u884C\u5185LaTeX\u5DF2\u590D\u5236\uFF01","strikethrough-copied":"\u5220\u9664\u7EBF\u6587\u672C\u5DF2\u590D\u5236\uFF01","link-text-copied":"\u94FE\u63A5\u6587\u672C\u5DF2\u590D\u5236\uFF01","link-url-copied":"\u94FE\u63A5\u5730\u5740\u5DF2\u590D\u5236\uFF01","wiki-link-copied":"Wiki\u94FE\u63A5\u5DF2\u590D\u5236\uFF01","callout-copied":"\u6807\u6CE8\u5185\u5BB9\u5DF2\u590D\u5236\uFF01","note-link-simplified":"\u94FE\u63A5\u5DF2\u7B80\u5316\uFF08\u6587\u4EF6\u540D\u4E0E\u6807\u9898\u76F8\u5339\u914D\uFF09",format:"\u683C\u5F0F","block-id":"\u5757ID",target:"\u590D\u5236\u5BF9\u8C61","add-to-menu":"\u6DFB\u52A0\u5230\u83DC\u5355","add-to-menu-desc":"\u5C06\u547D\u4EE4\u6DFB\u52A0\u5230\u53F3\u952E\u83DC\u5355","add-extra-commands":"\u6DFB\u52A0\u62D3\u5C55\u547D\u4EE4","add-extra-commands-desc":"\u542F\u7528\u540E\uFF0C\u5C06\u5728\u547D\u4EE4\u9762\u677F\u4E2D\u6DFB\u52A0\u201C\u590D\u5236\u5F53\u524D\u7B14\u8BB0\u7684\u94FE\u63A5\u201D\u548C\u201C\u751F\u6210\u5E76\u590D\u5236\u5F53\u524D\u5757\u7684\u94FE\u63A5\u201D\u547D\u4EE4","show-notice":"\u663E\u793A\u901A\u77E5","show-notice-desc":"\u590D\u5236\u5185\u5BB9\u65F6\u663E\u793A\u901A\u77E5\u63D0\u793A","use-heading-as-display":"\u6807\u9898\u94FE\u63A5\uFF1A\u4EC5\u4F7F\u7528\u6807\u9898\u4F5C\u4E3A\u663E\u793A\u6587\u672C","use-heading-as-display-desc":"\u5728\u590D\u5236\u7684\u6807\u9898\u94FE\u63A5\u4E2D\uFF0C\u4F7F\u7528\u6807\u9898\u6587\u672C\u4F5C\u4E3A\u663E\u793A\u6587\u672C","simplified-heading-to-note-link":"\u6587\u4EF6\u540D\u5339\u914D\u6807\u9898\u65F6\u7B80\u5316\u94FE\u63A5","simplified-heading-to-note-link-desc":"\u5F53\u6587\u4EF6\u540D\u4E0E\u6807\u9898\u6587\u672C\u5339\u914D\u65F6\uFF08\u76F8\u540C\u6216\u5305\u542B\uFF09\uFF0C\u76F4\u63A5\u521B\u5EFA\u7B14\u8BB0\u94FE\u63A5\u800C\u4E0D\u662F\u6807\u9898\u94FE\u63A5","heading-link-separator":"\u6807\u9898\u94FE\u63A5\uFF1A\u6587\u4EF6\u540D\u4E0E\u6807\u9898\u95F4\u7684\u8FDE\u63A5\u7B26","heading-link-separator-desc":'\u81EA\u5B9A\u4E49\u6587\u4EF6\u540D\u4E0E\u6807\u9898\u4E4B\u95F4\u7684\u8FDE\u63A5\u7B26\u53F7\uFF08\u4EC5\u5728\u7981\u7528"\u4F7F\u7528\u6807\u9898\u4F5C\u4E3A\u663E\u793A\u6587\u672C"\u65F6\u663E\u793A\uFF09',"link-format":"\u94FE\u63A5\u683C\u5F0F","link-format-desc":"\u590D\u5236\u5404\u79CD\u94FE\u63A5\u65F6\u4F7F\u7528\u7684\u683C\u5F0F","markdown-link":"Markdown\u94FE\u63A5","wiki-link":"Wiki\u94FE\u63A5","customize-targets":"\u81EA\u5B9A\u4E49\u590D\u5236\u5BF9\u8C61","customize-targets-desc":"\u542F\u7528\u540E\u53EF\u4EE5\u81EA\u5B9A\u4E49\u54EA\u4E9B\u5143\u7D20\u53EF\u4EE5\u88AB\u590D\u5236\uFF08\u4E0D\u542F\u7528\u5219\u9ED8\u8BA4\u53EF\u590D\u5236\u6240\u6709\u5143\u7D20\uFF09","enable-inline-code":"\u542F\u7528\u884C\u5185\u4EE3\u7801","enable-inline-code-desc":"\u542F\u7528\u590D\u5236\u884C\u5185\u4EE3\u7801\uFF0C\u5982 `\u4EE3\u7801\u793A\u4F8B`","enable-bold":"\u542F\u7528\u52A0\u7C97\u6587\u672C","enable-bold-desc":"\u542F\u7528\u590D\u5236\u52A0\u7C97\u6587\u672C\uFF0C\u5982 **\u52A0\u7C97\u793A\u4F8B**","enable-highlight":"\u542F\u7528\u9AD8\u4EAE\u6587\u672C","enable-highlight-desc":"\u542F\u7528\u590D\u5236\u9AD8\u4EAE\u6587\u672C\uFF0C\u5982 ==\u9AD8\u4EAE\u793A\u4F8B==","enable-italic":"\u542F\u7528\u659C\u4F53\u6587\u672C","enable-italic-desc":"\u542F\u7528\u590D\u5236\u659C\u4F53\u6587\u672C\uFF0C\u5982 *\u659C\u4F53\u793A\u4F8B*","enable-strikethrough":"\u542F\u7528\u5220\u9664\u7EBF\u6587\u672C","enable-strikethrough-desc":"\u542F\u7528\u590D\u5236\u5220\u9664\u7EBF\u6587\u672C\uFF0C\u5982 ~~\u5220\u9664\u7EBF\u793A\u4F8B~~","enable-inline-latex":"\u542F\u7528\u884C\u5185LaTeX","enable-inline-latex-desc":"\u542F\u7528\u590D\u5236\u884C\u5185LaTeX\uFF0C\u5982 $latex \u793A\u4F8B$","enable-link":"\u542F\u7528\u94FE\u63A5\u6587\u672C","enable-link-desc":"\u542F\u7528\u590D\u5236 Markdown \u94FE\u63A5","enable-wikilink":"\u542F\u7528 Wiki \u94FE\u63A5","enable-wikilink-desc":"\u542F\u7528\u590D\u5236 [[Wiki]] \u94FE\u63A5","special-format":"\u7279\u6B8A\u590D\u5236\u683C\u5F0F\u9009\u9879","auto-embed-block-link":"\u5757\u94FE\u63A5\uFF1A\u81EA\u52A8\u6DFB\u52A0 ! \u7B26\u53F7\uFF08\u5D4C\u5165\u5757\uFF09","auto-embed-block-link-desc":"\u590D\u5236\u5757\u94FE\u63A5\u65F6\u81EA\u52A8\u5728\u524D\u9762\u6DFB\u52A0 !\uFF0C\u7528\u4E8E\u5D4C\u5165\u5757","enable-callout-copy":"\u590D\u5236\u6807\u6CE8\u5185\u6587\u672C","enable-callout-copy-desc":'\u5F53\u5149\u6807\u5728 ">" \u6807\u6CE8\u5757\u5185\u65F6\uFF0C\u590D\u5236\u8BE5\u6807\u6CE8\u7684\u7EAF\u6587\u672C\u5185\u5BB9',"callout-copy-priority":"\u4F18\u5148\u590D\u5236\u6807\u6CE8\u5185\u5185\u5BB9","callout-copy-priority-desc":"\u5F53\u5149\u6807\u4F4D\u4E8E\u6807\u6CE8\u5185\u65F6\uFF0C\u4F18\u5148\u590D\u5236\u6807\u6CE8\u5185\u5185\u5BB9\u800C\u4E0D\u662F\u751F\u6210\u8BE5\u6807\u6CE8\u7684\u5757ID\u94FE\u63A5","keep-wiki-brackets":"Wiki \u94FE\u63A5\uFF1A\u4FDD\u7559 [[ ]] \u62EC\u53F7","keep-wiki-brackets-desc":"\u590D\u5236 wiki \u94FE\u63A5\u65F6\u4FDD\u7559\u4E24\u4FA7 [[ ]] \u62EC\u53F7","contextual-copy":"\u667A\u80FD\u590D\u5236","copy-current-file-link":"\u590D\u5236\u5F53\u524D\u6587\u4EF6\u94FE\u63A5","generate-current-block-link-auto":"\u590D\u5236\u5F53\u524D\u5757\u94FE\u63A5\uFF08\u81EA\u52A8\u751F\u6210ID\uFF09","generate-current-block-link-manual":"\u590D\u5236\u5F53\u524D\u5757\u94FE\u63A5\uFF08\u624B\u52A8\u8F93\u5165ID\uFF09","file-link-copied":"\u5F53\u524D\u6587\u4EF6\u94FE\u63A5\u5DF2\u590D\u5236\uFF01","use-frontmatter-as-display":"\u7B14\u8BB0\u94FE\u63A5\uFF1A\u4F7F\u7528\u7279\u5B9A\u5C5E\u6027\u4F5C\u4E3A\u663E\u793A\u6587\u672C","use-frontmatter-as-display-desc":"\u542F\u7528\u540E\uFF0C\u4F7F\u7528\u6307\u5B9A\u7684\u7B14\u8BB0\u5C5E\u6027\u7684\u503C\u4F5C\u4E3A\u7B14\u8BB0\u94FE\u63A5\u7684\u663E\u793A\u6587\u672C","frontmatter-key":"\u7B14\u8BB0\u5C5E\u6027\u540D","frontmatter-key-desc":"\u7528\u4E8E\u663E\u793A\u6587\u672C\u7684\u7B14\u8BB0\u5C5E\u6027\u540D\uFF08\u9ED8\u8BA4\uFF1Atitle\uFF09","auto-block-display-text":"\u751F\u6210\u5757\u94FE\u63A5\u7684\u663E\u793A\u6587\u672C","auto-block-display-text-desc":"\u542F\u7528\u540E\uFF0C\u4F1A\u81EA\u52A8\u4E3A\u751F\u6210\u7684\u5757ID\u94FE\u63A5\u6DFB\u52A0\u663E\u793A\u6587\u672C","block-display-word-limit":"\u5757\u663E\u793A\u6587\u672C\uFF1A\u82F1\u8BED\u7C7B\u8BED\u8A00\u7684\u5355\u8BCD\u6570\u9650\u5236","block-display-word-limit-desc":'\u4F7F\u7528\u7A7A\u683C\u5206\u9694\u7684\u8BED\u8A00\uFF08\u5982\u82F1\u8BED "this is a sentence"\uFF09\u5728\u5757\u663E\u793A\u6587\u672C\u4E2D\u663E\u793A\u7684\u6700\u5927\u5355\u8BCD\u6570',"block-display-char-limit":"\u5757\u663E\u793A\u6587\u672C\uFF1ACJK \u7C7B\u8BED\u8A00\u7684\u5B57\u7B26\u6570\u9650\u5236","block-display-char-limit-desc":'\u975E\u82F1\u8BED\u7C7B\u8BED\u8A00\uFF08\u5982\u4E2D\u6587 "\u8FD9\u662F\u4E00\u53E5\u8BDD"\uFF09\u5728\u5757\u663E\u793A\u6587\u672C\u4E2D\u663E\u793A\u7684\u6700\u5927\u5B57\u7B26\u6570\u2014\u2014\u5F53\u7B2C\u4E00\u884C\u5305\u542B\u975EASCII\u5B57\u7B26\u65F6\uFF0C\u4F1A\u91C7\u7528\u6B64\u8BBE\u7F6E\u3002'},["zh-tw"]:{"auto-add-block-id":"\u81EA\u52D5\u65B0\u589E\u584AID","auto-add-block-id-desc":"\u555F\u7528\u5F8C\uFF0C\u82E5\u6C92\u6709\u53EF\u8907\u88FD\u5167\u5BB9\u6642\uFF0C\u6703\u81EA\u52D5\u5728\u7576\u524D\u6587\u672C\u672B\u5C3E\u65B0\u589E\u4E00\u500B\u96A8\u6A5F\u7684\u584AID\uFF08^xxxx\uFF09","add-extra-commands":"\u6DFB\u52A0\u64F4\u5C55\u547D\u4EE4","add-extra-commands-desc":"\u555F\u7528\u5F8C\uFF0C\u6703\u5728\u547D\u4EE4\u9762\u677F\u4E2D\u65B0\u589E\u300C\u8907\u88FD\u7576\u524D\u7B46\u8A18\u93C8\u63A5\u300D\u548C\u300C\u751F\u6210\u4E26\u8907\u88FD\u7576\u524D\u584A\u93C8\u63A5\u300D\u547D\u4EE4","auto-block-display-text":"\u751F\u6210\u584A\u9023\u7D50\u7684\u986F\u793A\u6587\u672C","auto-block-display-text-desc":"\u555F\u7528\u5F8C\uFF0C\u6703\u81EA\u52D5\u70BA\u751F\u6210\u7684\u584AID\u9023\u7D50\u6DFB\u52A0\u986F\u793A\u6587\u672C","block-display-word-limit":"\u584A\u986F\u793A\u6587\u672C\uFF1A\u82F1\u8A9E\u985E\u8A9E\u8A00\u7684\u55AE\u8A5E\u6578\u9650\u5236","block-display-word-limit-desc":'\u7A7A\u683C\u5206\u9694\u8A9E\u8A00\uFF08\u5982 "this is a sentence"\uFF09\u5728\u584A\u986F\u793A\u6587\u672C\u4E2D\u986F\u793A\u7684\u6700\u5927\u55AE\u8A5E\u6578',"block-display-char-limit":"\u584A\u986F\u793A\u6587\u672C\uFF1ACJK \u985E\u8A9E\u8A00\u7684\u5B57\u7B26\u6578\u9650\u5236","block-display-char-limit-desc":'\u975E\u7A7A\u683C\u5206\u9694\u8A9E\u8A00\uFF08\u5982\u4E2D\u6587 "\u9019\u662F\u4E00\u53E5\u8A71"\uFF09\u5728\u584A\u986F\u793A\u6587\u672C\u4E2D\u986F\u793A\u7684\u6700\u5927\u5B57\u7B26\u6578\u2014\u2014\u7576\u7B2C\u4E00\u884C\u5305\u542B\u975EASCII\u5B57\u7B26\u6642\uFF0C\u6703\u63A1\u7528\u6B64\u8A2D\u7F6E\u3002',"manual-block-id":"\u624B\u52D5\u8F38\u5165\u584AID","manual-block-id-desc":"\u555F\u7528\u5F8C\uFF0C\u53EF\u4EE5\u5728\u5F48\u7A97\u4E2D\u624B\u52D5\u8F38\u5165\u584AID","block-id-insert-position":"\u584AID\u63D2\u5165\u4F4D\u7F6E","block-id-insert-position-desc":"\u9078\u64C7\u751F\u6210\u584AID\u6642\u7684\u63D2\u5165\u4F4D\u7F6E\u3002\u5C0D\u65BC\u4EE3\u78BC\u584A\u548C\u5F15\u7528\u584A\u7B49\u7279\u6B8A\u6BB5\u843D\uFF0C\u81F3\u5C11\u6703\u63D2\u5165\u4E00\u500B\u63DB\u884C\u3002","block-id-end-of-block":"\u7576\u524D\u584A\u7684\u672B\u5C3E","block-id-next-line":"\u7576\u524D\u584A\u7684\u4E0B\u65B9\u4E00\u884C","block-id-next-line-with-gap":"\u7576\u524D\u584A\u7684\u4E0B\u65B9\u5169\u884C\uFF08\u4E2D\u9593\u9694\u4E00\u500B\u7A7A\u884C\uFF09","modal-block-id":"\u8F38\u5165\u584AID","modal-block-id-desc":"\u50C5\u5141\u8A31\u5B57\u6BCD\u3001\u6578\u5B57\u3001\u9023\u5B57\u865F\uFF08-\uFF09\u3001\u5E95\u7DDA\uFF08_\uFF09\uFF0C\u7A7A\u683C\u6703\u81EA\u52D5\u8F49\u70BA\u9023\u5B57\u865F\u3002","error-block-id-empty":"\u584AID \u4E0D\u80FD\u70BA\u7A7A","error-block-id-invalid":"\u53EA\u5141\u8A31\u5B57\u6BCD\u3001\u6578\u5B57\u3001-\u3001_","no-file":"\u7121\u6CD5\u7372\u53D6\u7576\u524D\u6587\u4EF6","no-content":"\u7576\u524D\u5149\u6A19\u8655\u6C92\u6709\u53EF\u8907\u88FD\u7684\u5167\u5BB9","inline-code-copied":"\u884C\u5167\u4EE3\u78BC\u5DF2\u8907\u88FD\uFF01","block-id-copied":"\u584AID\u9023\u7D50\u5DF2\u8907\u88FD\uFF01","note-link-copied":"\u7B46\u8A18\u9023\u7D50\u5DF2\u8907\u88FD\uFF01","heading-copied":"\u6A19\u984C\u9023\u7D50\u5DF2\u8907\u88FD\uFF01","bold-copied":"\u52A0\u7C97\u6587\u672C\u5DF2\u8907\u88FD\uFF01","highlight-copied":"\u9AD8\u4EAE\u6587\u672C\u5DF2\u8907\u88FD\uFF01","italic-copied":"\u659C\u9AD4\u6587\u672C\u5DF2\u8907\u88FD\uFF01","inline-latex-copied":"\u884C\u5167LaTeX\u5DF2\u8907\u88FD\uFF01","strikethrough-copied":"\u522A\u9664\u7DDA\u6587\u672C\u5DF2\u8907\u88FD\uFF01","link-text-copied":"\u9023\u7D50\u6587\u672C\u5DF2\u8907\u88FD\uFF01","link-url-copied":"\u9023\u7D50\u5730\u5740\u5DF2\u8907\u88FD\uFF01","wiki-link-copied":"Wiki\u9023\u7D50\u5DF2\u8907\u88FD\uFF01","callout-copied":"\u6807\u6CE8\u5185\u5BB9\u5DF2\u8907\u88FD\uFF01","note-link-simplified":"\u9023\u7D50\u5DF2\u7C21\u5316\uFF08\u6A94\u6848\u540D\u8207\u6A19\u984C\u76F8\u5339\u914D\uFF09",format:"\u683C\u5F0F","block-id":"\u584AID",target:"\u8907\u88FD\u5C0D\u8C61","add-to-menu":"\u6DFB\u52A0\u5230\u83DC\u55AE","add-to-menu-desc":"\u5C07\u547D\u4EE4\u6DFB\u52A0\u5230\u53F3\u9375\u83DC\u55AE","show-notice":"\u986F\u793A\u901A\u77E5","show-notice-desc":"\u8907\u88FD\u5167\u5BB9\u6642\u986F\u793A\u901A\u77E5\u63D0\u793A","use-heading-as-display":"\u6A19\u984C\u9023\u7D50\uFF1A\u50C5\u4F7F\u7528\u6A19\u984C\u4F5C\u70BA\u986F\u793A\u6587\u672C","use-heading-as-display-desc":"\u5728\u8907\u88FD\u7684\u6A19\u984C\u9023\u7D50\u4E2D\uFF0C\u4F7F\u7528\u6A19\u984C\u6587\u672C\u4F5C\u70BA\u986F\u793A\u6587\u672C","simplified-heading-to-note-link":"\u6A94\u6848\u540D\u5339\u914D\u6A19\u984C\u6642\u7C21\u5316\u9023\u7D50","simplified-heading-to-note-link-desc":"\u7576\u6A94\u6848\u540D\u8207\u6A19\u984C\u6587\u672C\u5339\u914D\u6642\uFF08\u76F8\u540C\u6216\u5305\u542B\uFF09\uFF0C\u76F4\u63A5\u5EFA\u7ACB\u7B46\u8A18\u9023\u7D50\u800C\u4E0D\u662F\u6A19\u984C\u9023\u7D50","heading-link-separator":"\u6A19\u984C\u9023\u7D50\uFF1A\u6A94\u6848\u540D\u8207\u6A19\u984C\u9593\u7684\u9023\u63A5\u7B26","heading-link-separator-desc":"\u81EA\u5B9A\u7FA9\u6A94\u6848\u540D\u8207\u6A19\u984C\u4E4B\u9593\u7684\u9023\u63A5\u7B26\u865F\uFF08\u50C5\u5728\u7981\u7528\u300C\u4F7F\u7528\u6A19\u984C\u4F5C\u70BA\u986F\u793A\u6587\u672C\u300D\u6642\u986F\u793A\uFF09","link-format":"\u9023\u7D50\u683C\u5F0F","link-format-desc":"\u8907\u88FD\u5404\u7A2E\u9023\u7D50\u6642\u4F7F\u7528\u7684\u683C\u5F0F","markdown-link":"Markdown\u9023\u7D50","wiki-link":"Wiki\u9023\u7D50","customize-targets":"\u81EA\u5B9A\u7FA9\u8907\u88FD\u5C0D\u8C61","customize-targets-desc":"\u555F\u7528\u5F8C\u53EF\u4EE5\u81EA\u5B9A\u7FA9\u54EA\u4E9B\u5143\u7D20\u53EF\u4EE5\u88AB\u8907\u88FD\uFF08\u4E0D\u555F\u7528\u5247\u9ED8\u8BA4\u53EF\u8907\u88FD\u6240\u6709\u5143\u7D20\uFF09","enable-inline-code":"\u555F\u7528\u884C\u5167\u4EE3\u78BC","enable-inline-code-desc":"\u555F\u7528\u8907\u88FD\u884C\u5167\u4EE3\u78BC\uFF0C\u5982 `\u4EE3\u78BC\u793A\u4F8B`","enable-bold":"\u555F\u7528\u52A0\u7C97\u6587\u672C","enable-bold-desc":"\u555F\u7528\u8907\u88FD\u52A0\u7C97\u6587\u672C\uFF0C\u5982 **\u52A0\u7C97\u793A\u4F8B**","enable-highlight":"\u555F\u7528\u9AD8\u4EAE\u6587\u672C","enable-highlight-desc":"\u555F\u7528\u8907\u88FD\u9AD8\u4EAE\u6587\u672C\uFF0C\u5982 ==\u9AD8\u4EAE\u793A\u4F8B==","enable-italic":"\u555F\u7528\u659C\u9AD4\u6587\u672C","enable-italic-desc":"\u555F\u7528\u8907\u88FD\u659C\u9AD4\u6587\u672C\uFF0C\u5982 *\u659C\u9AD4\u793A\u4F8B*","enable-strikethrough":"\u555F\u7528\u522A\u9664\u7DDA\u6587\u672C","enable-strikethrough-desc":"\u555F\u7528\u8907\u88FD\u522A\u9664\u7DDA\u6587\u672C\uFF0C\u5982 ~~\u522A\u9664\u7DDA\u793A\u4F8B~~","enable-inline-latex":"\u555F\u7528\u884C\u5167LaTeX","enable-inline-latex-desc":"\u555F\u7528\u8907\u88FD\u884C\u5167LaTeX\uFF0C\u5982 $latex \u793A\u4F8B$","enable-link":"\u555F\u7528\u9023\u7D50\u6587\u672C","enable-link-desc":"\u555F\u7528\u8907\u88FD Markdown \u9023\u7D50","enable-wikilink":"\u555F\u7528 Wiki \u9023\u7D50","enable-wikilink-desc":"\u555F\u7528\u8907\u88FD [[Wiki]] \u9023\u7D50","special-format":"\u7279\u6B8A\u8907\u88FD\u683C\u5F0F\u9078\u9805","auto-embed-block-link":"\u584A\u9023\u7D50\uFF1A\u81EA\u52D5\u6DFB\u52A0 ! \u7B26\u865F\uFF08\u5D4C\u5165\u584A\uFF09","auto-embed-block-link-desc":"\u8907\u88FD\u584A\u9023\u7D50\u6642\u81EA\u52D5\u5728\u524D\u9762\u6DFB\u52A0 !\uFF0C\u7528\u65BC\u5D4C\u5165\u584A","enable-callout-copy":"\u8907\u88FD\u6A19\u8A3B\u5167\u6587\u672C","enable-callout-copy-desc":'\u7576\u6E38\u6A19\u5728 ">" \u6A19\u8A3B\u584A\u5167\u6642\uFF0C\u8907\u88FD\u8A72\u6A19\u8A3B\u7684\u7D14\u6587\u672C\u5167\u5BB9',"callout-copy-priority":"\u512A\u5148\u8907\u88FD\u6A19\u8A3B\u5167\u5BB9","callout-copy-priority-desc":"\u7576\u6E38\u6A19\u4F4D\u65BC\u6A19\u8A3B\u5167\u6642\uFF0C\u512A\u5148\u8907\u88FD\u6A19\u8A3B\u5167\u5BB9\u800C\u4E0D\u662F\u751F\u6210\u8A72\u6A19\u8A3B\u7684\u584AID\u9023\u7D50","keep-wiki-brackets":"Wiki\u9023\u7D50\uFF1A\u4FDD\u7559 [[ ]] \u62EC\u865F","keep-wiki-brackets-desc":"\u8907\u88FD wiki \u9023\u7D50\u6642\u4FDD\u7559\u5169\u5074 [[ ]] \u62EC\u865F","contextual-copy":"\u667A\u80FD\u8907\u88FD","copy-current-file-link":"\u8907\u88FD\u7576\u524D\u6587\u4EF6\u9023\u7D50","generate-current-block-link-auto":"\u8907\u88FD\u7576\u524D\u584A\u9023\u7D50\uFF08\u81EA\u52D5\u751F\u6210ID\uFF09","generate-current-block-link-manual":"\u8907\u88FD\u7576\u524D\u584A\u9023\u7D50\uFF08\u624B\u52D5\u8F38\u5165ID\uFF09","file-link-copied":"\u7576\u524D\u6587\u4EF6\u9023\u7D50\u5DF2\u8907\u88FD\uFF01","use-frontmatter-as-display":"\u7B46\u8A18\u9023\u7D50\uFF1A\u4F7F\u7528\u7279\u5B9A\u5C6C\u6027\u4F5C\u70BA\u986F\u793A\u6587\u672C","use-frontmatter-as-display-desc":"\u555F\u7528\u5F8C\uFF0C\u4F7F\u7528\u6307\u5B9A\u7684\u7B46\u8A18\u5C6C\u6027\u7684\u503C\u4F5C\u70BA\u7B46\u8A18\u9023\u7D50\u7684\u986F\u793A\u6587\u672C","frontmatter-key":"\u7B46\u8A18\u5C6C\u6027\u540D","frontmatter-key-desc":"\u7528\u65BC\u986F\u793A\u6587\u672C\u7684\u7B46\u8A18\u5C6C\u6027\u540D\uFF08\u9ED8\u8A8D\uFF1Atitle\uFF09"}},D=class{constructor(k="en"){this.language=k}setLanguage(k){this.language=k}t(k){return A[this.language][k]||A["en"][k]||k}};var W={useFrontmatterAsDisplay:!1,frontmatterKey:"title",addToMenu:!0,addExtraCommands:!0,showNotice:!0,useHeadingAsDisplayText:!0,headingLinkSeparator:"#",simplifiedHeadingToNoteLink:!0,linkFormat:"wiki-link",customizeTargets:!1,enableInlineCode:!0,enableBold:!0,enableHighlight:!0,enableItalic:!0,enableStrikethrough:!0,enableInlineLatex:!0,enableLink:!0,enableWikiLink:!0,keepWikiBrackets:!0,autoEmbedBlockLink:!1,enableCalloutCopy:!0,calloutCopyPriority:!0,autoAddBlockId:!1,allowManualBlockId:!1,blockIdInsertPosition:"end-of-block",autoBlockDisplayText:!0,blockDisplayWordLimit:3,blockDisplayCharLimit:5};var o=require("obsidian");var E=class extends o.PluginSettingTab{constructor(e,t){super(e,t);this.plugin=t}display(){let{containerEl:e}=this;e.empty(),new o.Setting(e).setName(this.plugin.t("add-to-menu")).setDesc(this.plugin.t("add-to-menu-desc")).addToggle(t=>t.setValue(this.plugin.settings.addToMenu).onChange(async i=>{this.plugin.settings.addToMenu=i,await this.plugin.saveSettings()})),new o.Setting(e).setName(this.plugin.t("add-extra-commands")).setDesc(this.plugin.t("add-extra-commands-desc")).addToggle(t=>t.setValue(this.plugin.settings.addExtraCommands).onChange(async i=>{this.plugin.settings.addExtraCommands=i,await this.plugin.saveSettings()})),new o.Setting(e).setName(this.plugin.t("show-notice")).setDesc(this.plugin.t("show-notice-desc")).addToggle(t=>t.setValue(this.plugin.settings.showNotice).onChange(async i=>{this.plugin.settings.showNotice=i,await this.plugin.saveSettings()})),new o.Setting(e).setName(this.plugin.t("format")).setHeading(),new o.Setting(e).setName(this.plugin.t("link-format")).setDesc(this.plugin.t("link-format-desc")).addDropdown(t=>t.addOption("markdown-link",this.plugin.t("markdown-link")).addOption("wiki-link",this.plugin.t("wiki-link")).setValue(this.plugin.settings.linkFormat).onChange(async i=>{this.plugin.settings.linkFormat=i,await this.plugin.saveSettings()})),new o.Setting(e).setName(this.plugin.t("use-heading-as-display")).setDesc(this.plugin.t("use-heading-as-display-desc")).addToggle(t=>t.setValue(this.plugin.settings.useHeadingAsDisplayText).onChange(async i=>{this.plugin.settings.useHeadingAsDisplayText=i,await this.plugin.saveSettings(),this.display()})),this.plugin.settings.useHeadingAsDisplayText||new o.Setting(e).setName(this.plugin.t("heading-link-separator")).setDesc(this.plugin.t("heading-link-separator-desc")).addText(t=>t.setPlaceholder("#").setValue(this.plugin.settings.headingLinkSeparator).onChange(async i=>{this.plugin.settings.headingLinkSeparator=i||"#",await this.plugin.saveSettings()})),new o.Setting(e).setName(this.plugin.t("simplified-heading-to-note-link")).setDesc(this.plugin.t("simplified-heading-to-note-link-desc")).addToggle(t=>t.setValue(this.plugin.settings.simplifiedHeadingToNoteLink).onChange(async i=>{this.plugin.settings.simplifiedHeadingToNoteLink=i,await this.plugin.saveSettings(),this.display()})),new o.Setting(e).setName(this.plugin.t("use-frontmatter-as-display")).setDesc(this.plugin.t("use-frontmatter-as-display-desc")).addToggle(t=>t.setValue(this.plugin.settings.useFrontmatterAsDisplay).onChange(async i=>{this.plugin.settings.useFrontmatterAsDisplay=i,await this.plugin.saveSettings(),this.display()})),this.plugin.settings.useFrontmatterAsDisplay&&new o.Setting(e).setName(this.plugin.t("frontmatter-key")).setDesc(this.plugin.t("frontmatter-key-desc")).addText(t=>t.setPlaceholder("title").setValue(this.plugin.settings.frontmatterKey).onChange(async i=>{this.plugin.settings.frontmatterKey=i||"title",await this.plugin.saveSettings()})),new o.Setting(e).setName(this.plugin.t("block-id")).setHeading(),new o.Setting(e).setName(this.plugin.t("auto-add-block-id")).setDesc(this.plugin.t("auto-add-block-id-desc")).addToggle(t=>t.setValue(this.plugin.settings.autoAddBlockId).onChange(async i=>{this.plugin.settings.autoAddBlockId=i,await this.plugin.saveSettings(),this.display()})),this.plugin.settings.autoAddBlockId&&new o.Setting(e).setName(this.plugin.t("block-id-insert-position")).setDesc(this.plugin.t("block-id-insert-position-desc")).addDropdown(t=>t.addOption("end-of-block",this.plugin.t("block-id-end-of-block")).addOption("next-line",this.plugin.t("block-id-next-line")).setValue(this.plugin.settings.blockIdInsertPosition).onChange(async i=>{this.plugin.settings.blockIdInsertPosition=i,await this.plugin.saveSettings()})),this.plugin.settings.autoAddBlockId&&new o.Setting(e).setName(this.plugin.t("manual-block-id")).setDesc(this.plugin.t("manual-block-id-desc")).addToggle(t=>t.setValue(this.plugin.settings.allowManualBlockId).onChange(async i=>{this.plugin.settings.allowManualBlockId=i,await this.plugin.saveSettings()})),new o.Setting(e).setName(this.plugin.t("auto-block-display-text")).setDesc(this.plugin.t("auto-block-display-text-desc")).addToggle(t=>t.setValue(this.plugin.settings.autoBlockDisplayText).onChange(async i=>{this.plugin.settings.autoBlockDisplayText=i,await this.plugin.saveSettings(),this.display()})),this.plugin.settings.autoBlockDisplayText&&(new o.Setting(e).setName(this.plugin.t("block-display-word-limit")).setDesc(this.plugin.t("block-display-word-limit-desc")).addText(t=>t.setPlaceholder("3").setValue(String(this.plugin.settings.blockDisplayWordLimit)).onChange(async i=>{let s=parseInt(i)||3;this.plugin.settings.blockDisplayWordLimit=Math.max(1,s),await this.plugin.saveSettings()})),new o.Setting(e).setName(this.plugin.t("block-display-char-limit")).setDesc(this.plugin.t("block-display-char-limit-desc")).addText(t=>t.setPlaceholder("5").setValue(String(this.plugin.settings.blockDisplayCharLimit)).onChange(async i=>{let s=parseInt(i)||5;this.plugin.settings.blockDisplayCharLimit=Math.max(1,s),await this.plugin.saveSettings()}))),new o.Setting(e).setName(this.plugin.t("target")).setHeading(),new o.Setting(e).setName(this.plugin.t("customize-targets")).setDesc(this.plugin.t("customize-targets-desc")).addToggle(t=>t.setValue(this.plugin.settings.customizeTargets).onChange(async i=>{this.plugin.settings.customizeTargets=i,await this.plugin.saveSettings(),this.display()})),this.plugin.settings.customizeTargets&&(new o.Setting(e).setName(this.plugin.t("enable-inline-code")).setDesc(this.plugin.t("enable-inline-code-desc")).addToggle(t=>t.setValue(this.plugin.settings.enableInlineCode).onChange(async i=>{this.plugin.settings.enableInlineCode=i,await this.plugin.saveSettings()})),new o.Setting(e).setName(this.plugin.t("enable-bold")).setDesc(this.plugin.t("enable-bold-desc")).addToggle(t=>t.setValue(this.plugin.settings.enableBold).onChange(async i=>{this.plugin.settings.enableBold=i,await this.plugin.saveSettings()})),new o.Setting(e).setName(this.plugin.t("enable-highlight")).setDesc(this.plugin.t("enable-highlight-desc")).addToggle(t=>t.setValue(this.plugin.settings.enableHighlight).onChange(async i=>{this.plugin.settings.enableHighlight=i,await this.plugin.saveSettings()})),new o.Setting(e).setName(this.plugin.t("enable-italic")).setDesc(this.plugin.t("enable-italic-desc")).addToggle(t=>t.setValue(this.plugin.settings.enableItalic).onChange(async i=>{this.plugin.settings.enableItalic=i,await this.plugin.saveSettings()})),new o.Setting(e).setName(this.plugin.t("enable-strikethrough")).setDesc(this.plugin.t("enable-strikethrough-desc")).addToggle(t=>t.setValue(this.plugin.settings.enableStrikethrough).onChange(async i=>{this.plugin.settings.enableStrikethrough=i,await this.plugin.saveSettings()})),new o.Setting(e).setName(this.plugin.t("enable-inline-latex")).setDesc(this.plugin.t("enable-inline-latex-desc")).addToggle(t=>t.setValue(this.plugin.settings.enableInlineLatex).onChange(async i=>{this.plugin.settings.enableInlineLatex=i,await this.plugin.saveSettings()})),new o.Setting(e).setName(this.plugin.t("enable-link")).setDesc(this.plugin.t("enable-link-desc")).addToggle(t=>t.setValue(this.plugin.settings.enableLink).onChange(async i=>{this.plugin.settings.enableLink=i,await this.plugin.saveSettings()})),new o.Setting(e).setName(this.plugin.t("enable-wikilink")).setDesc(this.plugin.t("enable-wikilink-desc")).addToggle(t=>{var i;return t.setValue((i=this.plugin.settings.enableWikiLink)!=null?i:!0).onChange(async s=>{this.plugin.settings.enableWikiLink=s,await this.plugin.saveSettings(),this.display()})})),new o.Setting(e).setName(this.plugin.t("enable-callout-copy")).setDesc(this.plugin.t("enable-callout-copy-desc")).addToggle(t=>{var i;return t.setValue((i=this.plugin.settings.enableCalloutCopy)!=null?i:!0).onChange(async s=>{this.plugin.settings.enableCalloutCopy=s,await this.plugin.saveSettings(),this.display()})}),this.plugin.settings.enableCalloutCopy&&new o.Setting(e).setName(this.plugin.t("callout-copy-priority")).setDesc(this.plugin.t("callout-copy-priority-desc")).addToggle(t=>{var i;return t.setValue((i=this.plugin.settings.calloutCopyPriority)!=null?i:!0).onChange(async s=>{this.plugin.settings.calloutCopyPriority=s,await this.plugin.saveSettings()})}),new o.Setting(e).setName(this.plugin.t("special-format")).setHeading(),new o.Setting(e).setName(this.plugin.t("auto-embed-block-link")).setDesc(this.plugin.t("auto-embed-block-link-desc")).addToggle(t=>{var i;return t.setValue((i=this.plugin.settings.autoEmbedBlockLink)!=null?i:!1).onChange(async s=>{this.plugin.settings.autoEmbedBlockLink=s,await this.plugin.saveSettings()})}),this.plugin.settings.enableWikiLink&&new o.Setting(e).setName(this.plugin.t("keep-wiki-brackets")).setDesc(this.plugin.t("keep-wiki-brackets-desc")).addToggle(t=>{var i;return t.setValue((i=this.plugin.settings.keepWikiBrackets)!=null?i:!0).onChange(async s=>{this.plugin.settings.keepWikiBrackets=s,await this.plugin.saveSettings()})})}};var K=require("obsidian"),N=class extends K.Modal{constructor(e,t,i,s,n){super(e);this.onSubmit=n,this.title=t,this.desc=i,this.t=s}onOpen(){let{contentEl:e}=this;e.empty(),this.setTitle(this.title),this.inputEl=e.createEl("input",{type:"text",placeholder:"Block ID...",cls:"blockid-modal-input"}),this.inputEl.focus();let t=e.createEl("div",{text:this.desc,cls:"blockid-modal-desc"});this.errorEl=e.createEl("div",{text:"",cls:"blockid-modal-error"}),this.inputEl.addEventListener("keydown",i=>{i.key==="Enter"?(i.preventDefault(),i.stopPropagation(),this.submit()):i.key==="Escape"&&(i.preventDefault(),i.stopPropagation(),this.close(),this.onSubmit(null))})}submit(){let e=this.inputEl.value.trim();if(!e){this.errorEl.textContent=this.t("error-block-id-empty");return}if(!/^[-_a-zA-Z0-9\s]+$/.test(e)){this.errorEl.textContent=this.t("error-block-id-invalid");return}e=e.replace(/\s+/g,"-").replace(/[^a-zA-Z0-9\-_]/g,""),this.close(),this.onSubmit(e)}};var v=class extends r.Plugin{async onload(){await this.loadSettings(),this.initializeI18n(),this.addCommand({id:"contextual-copy",name:this.t("contextual-copy"),icon:"copy-plus",editorCallback:(e,t)=>{this.contextualCopy(e,t)}}),this.settings.addExtraCommands&&(this.addCommand({id:"copy-current-file-link",name:this.t("copy-current-file-link"),icon:"clipboard-copy",callback:()=>{this.copyCurrentFileLink()}}),this.addCommand({id:"generate-current-block-link-auto",name:this.t("generate-current-block-link-auto"),icon:"clipboard-pen",editorCallback:(e,t)=>{let i=t.file;if(!i){new r.Notice(this.t("no-file"));return}let s=i.basename;this.insertBlockIdAndCopyLink(e,s,!1)}}),this.addCommand({id:"generate-current-block-link-manual",name:this.t("generate-current-block-link-manual"),icon:"clipboard-pen-line",editorCallback:(e,t)=>{let i=t.file;if(!i){new r.Notice(this.t("no-file"));return}let s=i.basename;this.insertBlockIdAndCopyLink(e,s,!0)}})),this.addSettingTab(new E(this.app,this)),this.registerEvent(this.app.workspace.on("editor-menu",(e,t,i)=>{this.settings.addToMenu&&e.addItem(s=>{s.setTitle(this.t("contextual-copy")).setIcon("copy-slash").onClick(async()=>{this.contextualCopy(t,i)})})}))}onunload(){}async loadSettings(){this.settings=Object.assign({},W,await this.loadData())}async saveSettings(){await this.saveData(this.settings)}t(e){return this.i18n.t(e)}isContinuousText(e){return e.trim()!==""&&!e.trim().startsWith("#")&&!e.trim().startsWith("- ")}detectBlockRange(e,t){if(e.getLine(t).trim().startsWith("- ")){let l=t;for(;l0&&this.isContinuousText(e.getLine(s-1));)s--;let n=t;for(;n{if(!this.settings.enableCalloutCopy)return null;let p=e.getCursor(),w=e.lineCount(),T=p.line,m=p.line;if(!e.getLine(p.line).trim().startsWith(">"))return null;for(;T>0&&e.getLine(T-1).trim().startsWith(">");)T--;for(;m+1");)m++;let x=[];for(let I=T;I<=m;I++)x.push(e.getLine(I));let y=x.map(I=>I.replace(/^>\s?/,"").replace(/^\[!.*?\]\s?/,"").trim()).join(` +`);return{type:"callout",curLine:e.getLine(p.line),match:y,range:[0,y.length]}};if(!t.file)return new r.Notice(this.t("no-file")),{type:"null",curLine:"",match:null,range:null};let n=e.getCursor(),l=e.getLine(n.line),c=n.ch,a=l.slice(0,c),d=l.slice(c),g=r.Platform.isIosApp?/(?:\*([^*]+)\*(?!\*)|_([^_]+)_(?!_))/g:/(?:(?=n&&e.length<=l){let c="";for(let a=1;a=l&&a<=c){let d=l+1,g=l+n[1].length+1,h=g+2,u=h+n[2].length;if(a>=d&&a<=g)return{type:"link-title",content:n[1],range:[d,g]};if(a>=h&&a<=u)return{type:"line-url",content:n[2],range:[h,u]}}}return null}async contextualCopy(e,t){var l;let i=t.file;if(!i){new r.Notice(this.t("no-file"));return}let s=i.basename,n=this.determineContextType(e,t);if(n.type=="null"){if(this.settings.autoAddBlockId){let c=this.settings.allowManualBlockId;await this.insertBlockIdAndCopyLink(e,s,c);return}new r.Notice(this.t("no-content"));return}switch(n.type){case"block-id":this.copyBlockLink(n.match,s,!0,n.curLine);return;case"bold":navigator.clipboard.writeText(n.match),this.settings.showNotice&&new r.Notice(this.t("bold-copied"));return;case"italic":navigator.clipboard.writeText(n.match),this.settings.showNotice&&new r.Notice(this.t("italic-copied"));return;case"highlight":navigator.clipboard.writeText(n.match),this.settings.showNotice&&new r.Notice(this.t("highlight-copied"));return;case"strikethrough":navigator.clipboard.writeText(n.match),this.settings.showNotice&&new r.Notice(this.t("strikethrough-copied"));return;case"inline-code":navigator.clipboard.writeText(n.match),this.settings.showNotice&&new r.Notice(this.t("inline-code-copied"));return;case"inline-latex":navigator.clipboard.writeText(n.match),this.settings.showNotice&&new r.Notice(this.t("inline-latex-copied"));return;case"link-title":navigator.clipboard.writeText(n.match),this.settings.showNotice&&new r.Notice(this.t("link-text-copied"));return;case"line-url":navigator.clipboard.writeText(n.match),this.settings.showNotice&&new r.Notice(this.t("link-url-copied"));return;case"heading":this.copyHeadingLink(n.match,s);return;case"wiki-link":let c=n.match;this.settings.keepWikiBrackets?c=`[[${c}]]`:c=c.split("|")[0],navigator.clipboard.writeText(c),this.settings.showNotice&&new r.Notice(this.t("wiki-link-copied"));return;case"callout":let a=(l=n.match)==null?void 0:l.replace(/\n+/g,` +`).replace(/\s+$/g,"");navigator.clipboard.writeText(a!=null?a:""),this.settings.showNotice&&new r.Notice(this.t("callout-copied"));return;default:break}}copyBlockLink(e,t,i,s=""){let n=e,l=s,c=this.settings.autoBlockDisplayText;l=l.replace(/\^.*\s*$/,""),l=l.trim().replace(/- \[.\]\s+/,"").replace("- ","").replace(/=|\*|\[|\]|\(|\)|`|>\s+/g,"");let a=n;if(i&&l)if(/^[a-zA-Z\s,.!?"()\[-\]_\^\-\~:;0-9]*$/.test(l)){let h=this.settings.blockDisplayWordLimit||3;a=l.trim().split(" ").slice(0,h).join(" ")}else{let h=this.settings.blockDisplayCharLimit||5,u=l;if(u.length>h){let f=l.trim().match(/(\S+?)[\~\,\.\-\=\[,。?!…:\n\s]/),b=null;f?b=f[1]:b=u,b.length>h?a=b.slice(0,h)+"...":b.length<3?a=u.slice(0,h):a=b}else a=u}let d=this.settings.linkFormat==="wiki-link"?`[[${t}#^${n}|${a}]]`:`[${a}](${t}#^${n})`;c||(d=this.settings.linkFormat==="wiki-link"?`[[${t}#^${n}]]`:`[](${t}#^${n})`),this.settings.autoEmbedBlockLink&&(d="!"+d),navigator.clipboard.writeText(d),this.settings.showNotice&&new r.Notice(this.t("block-id-copied")+` +^${a}...`)}copyHeadingLink(e,t){var h,u,f,b,p,w,T;let i=t,s="";if(this.settings.useFrontmatterAsDisplay){let m=(T=(u=(h=this.app.workspace).getActiveFile)==null?void 0:u.call(h))!=null?T:(w=(p=(b=(f=this.app.workspace).getActiveViewOfType)==null?void 0:b.call(f,r.MarkdownView))==null?void 0:p.file)!=null?w:null;if(m){let x=this.app.metadataCache.getFileCache(m),y=x==null?void 0:x.frontmatter,I=this.settings.frontmatterKey||"title";y&&typeof y[I]=="string"&&y[I].trim()&&(s=y[I].trim(),i=s)}}let n=e;n.startsWith("[[")&&n.endsWith("]]")&&(n=n.slice(2,-2));let l=n;if(!this.settings.useHeadingAsDisplayText){let m=this.settings.headingLinkSeparator||"#";l=`${i}${m}${n}`}let c="",a=0,d=`${t}#${n}`;function g(m,x){return m.toLowerCase()===x.toLowerCase()||m.toLowerCase().includes(x.toLowerCase())}(t===n||g(t,n)||g(t,n.replace(/\s+/g,"")))&&(d=t,new r.Notice(this.t("note-link-simplified")),a=1),this.settings.linkFormat==="wiki-link"?t===n?(c=`[[${t}]]`,a=1):l===d?c=`[[${d}]]`:c=`[[${d}|${l}]]`:c=`[${l}](${t}#${n})`,navigator.clipboard.writeText(c),this.settings.showNotice&&(a?new r.Notice(this.t("note-link-copied")):new r.Notice(this.t("heading-copied")))}copyCurrentFileLink(){var l,c,a,d,g,h,u,f,b,p,w,T,m,x;let e;if(this.settings.useFrontmatterAsDisplay){let y=(u=(c=(l=this.app.workspace).getActiveFile)==null?void 0:c.call(l))!=null?u:(h=(g=(d=(a=this.app.workspace).getActiveViewOfType)==null?void 0:d.call(a,r.MarkdownView))==null?void 0:g.file)!=null?h:null;if(y){let I=this.app.metadataCache.getFileCache(y),C=I==null?void 0:I.frontmatter,S=this.settings.frontmatterKey||"title";C&&typeof C[S]=="string"&&C[S].trim()&&(e=C[S].trim())}}let t=(x=(b=(f=this.app.workspace).getActiveFile)==null?void 0:b.call(f))!=null?x:(m=(T=(w=(p=this.app.workspace).getActiveViewOfType)==null?void 0:w.call(p,r.MarkdownView))==null?void 0:T.file)!=null?m:null;if(!t){new r.Notice(this.t("no-file"));return}let i=t.basename,s="",n=e||i;if(this.settings.linkFormat==="wiki-link")s=`[[${i}|${n}]]`;else{let y=t.path.replace(/\\/g,"/");y.endsWith(".md")&&(y=y.slice(0,-3)),s=`[${n}](${y})`}navigator.clipboard.writeText(s),this.settings.showNotice&&new r.Notice(this.t("file-link-copied"))}async insertBlockIdAndCopyLink(e,t,i=!1){let s="";if(i){let g=await new Promise(h=>{new N(this.app,this.t("modal-block-id"),this.t("modal-block-id-desc"),this.t.bind(this),u=>{h(u!=null?u:null)}).open()});if(!g)return;s=g}else s=`${Math.random().toString(36).substr(2,6)}`;let n=e.getCursor(),{start:l,end:c}=this.detectBlockRange(e,n.line),a=e.getLine(l),d=e.getLine(c);if(!/\^[a-zA-Z0-9_-]+$/.test(d.trim())){let g="^"+s,h=d.startsWith("> ")||d.startsWith("```")||d.startsWith("$$"),u=d.trim().length>0&&!d.endsWith(" "),f=this.settings.blockIdInsertPosition;if(h)g=` +`+g;else switch(f){case"end-of-block":u&&(g=" "+g);break;case"next-line":g=` +`+g;break;default:g=` +`+g;break}e.replaceRange(g,{line:c,ch:d.length});let b=!i;this.copyBlockLink(s,t,b,a)}}initializeI18n(){let e=this.getObsidianLanguage(),t="en";e.startsWith("zh")&&(e==="zh-tw"?t="zh-tw":t="zh"),this.i18n=new D(t)}getObsidianLanguage(){return window.localStorage.getItem("language")||"en"}}; + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/easy-copy/manifest.json b/.obsidian/plugins/easy-copy/manifest.json new file mode 100644 index 0000000..21754b0 --- /dev/null +++ b/.obsidian/plugins/easy-copy/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "easy-copy", + "name": "Easy Copy", + "version": "1.5.0", + "minAppVersion": "0.15.0", + "description": "Easily copy the text within inline code, bold text (and many other formats), or quickly generate an elegant link to a heading.", + "author": "Moy", + "authorUrl": "https://github.com/Moyf", + "isDesktopOnly": false +} diff --git a/.obsidian/plugins/easy-copy/styles.css b/.obsidian/plugins/easy-copy/styles.css new file mode 100644 index 0000000..e365d4d --- /dev/null +++ b/.obsidian/plugins/easy-copy/styles.css @@ -0,0 +1,27 @@ +/* + +This CSS file will be included with your plugin, and +available in the app when your plugin is enabled. + +If your plugin does not need CSS, delete this file. + +*/ + +.blockid-modal-desc { + font-size: var(--font-ui-smaller); + color: var(--text-muted); + margin-top: 0.5em; + margin-bottom: 0.2em; +} + +.blockid-modal-error { + color: var(--text-error); + font-size: var(--font-ui-smaller); + margin-top: 0.25em; +} + +.blockid-modal-input { + width: 100%; + margin-top: 0.5em; + margin-bottom: 0.5em; +} \ No newline at end of file diff --git a/2025-12-04.md b/2025-12-04.md new file mode 100644 index 0000000..c862d07 --- /dev/null +++ b/2025-12-04.md @@ -0,0 +1,33 @@ +--- +id: +aliases: [] +tags: + - authorship/original + - destiny/permanent + - status/draft + - type/daily +title: "" +--- +# 2025-12-04 + +## 2025-12-04 09:51 + +It may be possible +to replicate the behavior of my takeoff workbooks +in a static .html file using JavaScript. + +This would be preferable since it would allow +* version control, +* comments, +* hidden by default complexity[^1] + +[^1]: user only sees forms/fields relevant to the problem they're trying to solve, + or as necessary for the complexity of the job. + `Add Output > Conductor Supports` + `Add Complication > Multiple Buildings` + +A good test case would be a simple 3 variable equation solver. + +speed +distance +time \ No newline at end of file diff --git a/banjo-tablatures.md b/banjo-tablatures.md index fdd7fec..9493fed 100644 --- a/banjo-tablatures.md +++ b/banjo-tablatures.md @@ -5,7 +5,7 @@ tags: - authorship/original - destiny/permanent - status/incomplete - - topic/hobbies + - topic/hobbies/banjo - type/encyclopedia title: Banjo Tablatures --- diff --git a/banjo.md b/banjo.md index 1bb35f2..a76cd8d 100644 --- a/banjo.md +++ b/banjo.md @@ -5,7 +5,7 @@ tags: - authorship/original - destiny/permanent - status/incomplete - - topic/hobbies + - topic/hobbies/banjo - type/encyclopedia title: Banjo --- diff --git a/birds.md b/birds.md index 3c8a517..f0df594 100644 --- a/birds.md +++ b/birds.md @@ -6,7 +6,7 @@ tags: - status/incomplete - type/encyclopedia - authorship/original - - topic/hobbies + - topic/hobbies/birding title: Birds I've Seen Around Here --- # Birds I've Seen Around Here diff --git a/default-list.md b/default-list.md index d9da5de..1b9d591 100644 --- a/default-list.md +++ b/default-list.md @@ -6,7 +6,7 @@ tags: - status/incomplete - type/encyclopedia - authorship/original - - topic/hobbies + - topic/hobbies/wargames title: Default List --- # Default List diff --git a/formatting-titles.md b/formatting-titles.md index 604c6ea..c95d545 100644 --- a/formatting-titles.md +++ b/formatting-titles.md @@ -5,7 +5,7 @@ tags: - destiny/uncertain - status/incomplete - authorship/original - - topic/other + - topic/hobbies/writing - topic/meta - type/encyclopedia title: Formatting Titles diff --git a/homelab.md b/homelab.md index de7d361..65bf71a 100644 --- a/homelab.md +++ b/homelab.md @@ -5,7 +5,7 @@ tags: - authorship/original - destiny/permanent - status/incomplete - - topic/hobbies + - topic/hobbies/homelab title: Homelab --- # Homelab diff --git a/ibc-construction-types.md b/ibc-construction-types.md index 7abb67a..a78cd4d 100644 --- a/ibc-construction-types.md +++ b/ibc-construction-types.md @@ -2,11 +2,11 @@ id: aliases: [] tags: - - destiny/permanent - - type/encyclopedia - - status/incomplete - authorship/original + - destiny/permanent + - status/incomplete - topic/construction + - type/encyclopedia title: IBC Construction Types --- # IBC Construction Types @@ -30,14 +30,15 @@ though "5-over-1" denotes the general practice. Building elements are noncombustible[^1] [^1]: Defined as passing the test procedures -for defining combustibility of elementary materials -set forth in ASTM E 136 + for defining combustibility of elementary materials + set forth in ASTM E 136 * Concrete, masonry, noncombustible steel ### Type I-A: Protected Fire-Resistive Non-Combustible -Common of [[pdi-building-types#High Rise]] and Group I occupancies. +Common of [[pdi-building-types#High Rise|high rise]] +and [[ibc-occupancy-classifications#Group I Institutional|Group I]] occupancies. * 3hr Exterior Walls * 3hr Structural Frame @@ -46,7 +47,8 @@ Common of [[pdi-building-types#High Rise]] and Group I occupancies. ### Type I-B: Unprotected Fire-Resistive Non-Combustible -Common of mid-rise office & Group R buildings. +Common of [[pdi-building-types#Mid Rise|mid rise]] office +and [[ibc-occupancy-classifications#Group R Residential|Group R]] occupancies. * 2hr Exterior Walls * 2hr Structural Frame @@ -55,14 +57,14 @@ Common of mid-rise office & Group R buildings. ## Type II: Non-Combustible -Same materials as [[#Type I Fire-Resistive Non-Combustible]], +Same materials as [[#Type I Fire-Resistive Non-Combustible|Type I]], with reduced fire-resistance requirements. -Common of [[pdi-building-types#Mid Rise]] buildings. +Common of [[pdi-building-types#Mid Rise|mid rise]] buildings. ### Type II-A: Protected Non-Combustible -Common of [[pdi-building-types#High Density]], +Common of [[pdi-building-types#High Density|high density]], including dormitory buildings. * 1hr Exterior Walls @@ -71,7 +73,7 @@ including dormitory buildings. ### Type II-B: Unprotected Non-Combustible -Common of [[pdi-building-types#Commercial]]. +Common of [[pdi-building-types#Commercial|commercial]]. ## Type III: Combustible @@ -82,7 +84,7 @@ Interior building elements may be combustible. ### Type III-A: Protected Combustible -Common of [[pdi-building-types#High Density]]. +Common of [[pdi-building-types#High Density|high density]]. * 2hr Exterior Walls * 1hr Structural Frame @@ -111,7 +113,7 @@ without concealed spaces. Construction materials are of any allowed by code, combustible or noncombustible. -Common of garden or above podiums +Common of [[pdi-building-types#Garden Style|garden style]] or above podiums ### Type V-A: Protected Wood Frame diff --git a/ibc-occupancy-classifications.md b/ibc-occupancy-classifications.md index 3cf1bcf..a6d4f99 100644 --- a/ibc-occupancy-classifications.md +++ b/ibc-occupancy-classifications.md @@ -13,12 +13,92 @@ title: IBC Occupancy Classifications International Building Code (IBC) Section 302: Occupancy Classification and Use Designation -1. Assembly (see Section 303): Groups A-1, A-2, A-3, A-4 and A-5. -2. Business (see Section 304): Group B. -3. Educational (see Section 305): Group E. -4. Factory and Industrial (see Section 306): Groups F-1 and F-2. -5. High Hazard (see Section 307): Groups H-1, H-2, H-3, H-4 and H-5. -6. Institutional (see Section 308): Groups I-1, I-2, I-3 and I-4. -7. Mercantile (see Section 309): Group M. -8. Residential (see Section 310): Groups R-1, R-2, R-3 and R-4. -9. Storage (see Section 311): Groups S-1 and S-2. +## Group A: Assembly + +See Section 303 + +### Group A-1 + +### Group A-2 + +### Group A-3 + +### Group A-4 + +### Group A-5 + +## Group B: Business + +See Section 304 + +%% no subgroups %% + +## Group E: Educational + +See Section 305 + +%% no subgroups %% + +## Group F: Factory and Industrial + +See Section 306 + +### Group F-1: Moderate-Hazard Factory Industrial + +### Group F-2: Low-Hazard Factory Industrial + +## Group H: High Hazard + +See Section 307 + +### Group H-1 + +### Group H-2 + +### Group H-3 + +### Group H-4 + +### Group H-5 + +## Group I: Institutional + +See Section 308 + +### Group I-1 + +### Group I-2 + +### Group I-3 + +### Group I-4 + +## Group M: Mercantile + +See Section 309 + +%% no subgroups %% + +## Group R: Residential + +See Section 310 + +### Group R-1 + +Transient residence --- +hotels +motels + +### Group R-2 + +### Group R-3 + +### Group R-4 + +## Group S: Storage + +See Section 311 + +### Group S-1 + +### Group S-2 diff --git a/ibc_ch02.md b/ibc_ch02.md new file mode 100644 index 0000000..c45aa02 --- /dev/null +++ b/ibc_ch02.md @@ -0,0 +1,13 @@ +--- +id: +aliases: [] +tags: + - authorship/other + - destiny/permanent/entry-point + - exclude-from-word-count + - status/incomplete + - topic/construction + - type/media +title: "Chapter 2: Definitions" +--- +# Chapter 2: Definitions diff --git a/ibc_ch03.md b/ibc_ch03.md new file mode 100644 index 0000000..3dca1d6 --- /dev/null +++ b/ibc_ch03.md @@ -0,0 +1,13 @@ +--- +id: +aliases: [] +tags: + - authorship/other + - destiny/permanent/entry-point + - exclude-from-word-count + - status/incomplete + - topic/construction + - type/media +title: "Chapter 3: Occupancy Classification and Use" +--- +# Chapter 3: Occupancy Classification and Use diff --git a/ibc_ch05.md b/ibc_ch05.md new file mode 100644 index 0000000..70c6a05 --- /dev/null +++ b/ibc_ch05.md @@ -0,0 +1,13 @@ +--- +id: +aliases: [] +tags: + - authorship/other + - destiny/permanent/entry-point + - exclude-from-word-count + - status/incomplete + - topic/construction + - type/media +title: "Chapter 5: General Building Heights and Areas" +--- +# Chapter 5: General Building Heights and Areas diff --git a/ibc_ch09.md b/ibc_ch09.md new file mode 100644 index 0000000..ba372a1 --- /dev/null +++ b/ibc_ch09.md @@ -0,0 +1,13 @@ +--- +id: +aliases: [] +tags: + - authorship/other + - destiny/permanent/entry-point + - exclude-from-word-count + - status/incomplete + - topic/construction + - type/media +title: "Chapter 9: Fire Protection and Life Safety Systems" +--- +# Chapter 9: Fire Protection and Life Safety Systems diff --git a/ibc_ch10.md b/ibc_ch10.md new file mode 100644 index 0000000..00edbbc --- /dev/null +++ b/ibc_ch10.md @@ -0,0 +1,13 @@ +--- +id: +aliases: [] +tags: + - authorship/other + - destiny/permanent/entry-point + - exclude-from-word-count + - status/incomplete + - topic/construction + - type/media +title: "Chapter 10: Means of Egress" +--- +# Chapter 10: Means of Egress diff --git a/ibc_international-building-code.md b/ibc_international-building-code.md new file mode 100644 index 0000000..9f2df3b --- /dev/null +++ b/ibc_international-building-code.md @@ -0,0 +1,63 @@ +--- +id: +aliases: [] +tags: + - authorship/other + - destiny/permanent/entry-point + - exclude-from-word-count + - status/incomplete + - topic/construction + - type/media +title: International Building Code +--- +# International Building Code + +* [[ibc_ch01|Chapter 1: Scope and Administration]] +* [[ibc_ch02|Chapter 2: Definitions]] +* [[ibc_ch03|Chapter 3: Occupancy Classification and Use]] +* [[ibc_ch04|Chapter 4: Special Detailed Requirements Based on Occupancy and Use]] +* [[ibc_ch05|Chapter 5: General Building Heights and Areas]] +* [[ibc_ch06|Chapter 6: Types of Construction]] +* [[ibc_ch07|Chapter 7: Fire and Smoke Protection Features]] +* [[ibc_ch08|Chapter 8: Interior Finishes]] +* [[ibc_ch09|Chapter 9: Fire Protection and Life Safety Systems]] +* [[ibc_ch10|Chapter 10: Means of Egress]] +* [[ibc_ch11|Chapter 11: Accessibility]] +* [[ibc_ch12|Chapter 12: Interior Environment]] +* [[ibc_ch13|Chapter 13: Energy Efficiency]] +* [[ibc_ch14|Chapter 14: Exterior Walls]] +* [[ibc_ch15|Chapter 15: Roof Assemblies and Rooftop Structures]] +* [[ibc_ch16|Chapter 16: Structural Design]] +* [[ibc_ch17|Chapter 17: Special Inspections and Tests]] +* [[ibc_ch18|Chapter 18: Soils and Foundations]] +* [[ibc_ch19|Chapter 19: Concrete]] +* [[ibc_ch20|Chapter 20: Aluminum]] +* [[ibc_ch21|Chapter 21: Masonry]] +* [[ibc_ch22|Chapter 22: Steel]] +* [[ibc_ch23|Chapter 23: Wood]] +* [[ibc_ch24|Chapter 24: Glass and Glazing]] +* [[ibc_ch25|Chapter 25: Gypsum Board, Gypsum Panel Products and Plaster]] +* [[ibc_ch26|Chapter 26: Plastic]] +* [[ibc_ch27|Chapter 27: Electrical]] +* [[ibc_ch28|Chapter 28: Mechanical Systems]] +* [[ibc_ch29|Chapter 29: Plumbing Systems]] +* [[ibc_ch30|Chapter 30: Elevators and Conveying Systems]] +* [[ibc_ch31|Chapter 31: Special Construction]] +* [[ibc_ch32|Chapter 32: Encroachments into the Public Right-of-Way]] +* [[ibc_ch33|Chapter 33: Safeguards During Construction]] +* [[ibc_ch34|Chapter 34: Reserved]] +* [[ibc_ch35|Chapter 35: Referenced Standards]] +* [[ibc_appx-a|Appendix A: Employee Qualifications]] +* [[ibc_appx-b|Appendix B: Board of Appeals]] +* [[ibc_appx-c|Appendix C: Group U---Agricultural Buildings]] +* [[ibc_appx-d|Appendix D: Fire Districts]] +* [[ibc_appx-e|Appendix E: Supplementary Accessibility Requirements]] +* [[ibc_appx-f|Appendix F: Rodentproofing]] +* [[ibc_appx-g|Appendix G: Flood-Resistant Construction]] +* [[ibc_appx-h|Appendix H: Signs]] +* [[ibc_appx-i|Appendix I: Patio Covers]] +* [[ibc_appx-j|Appendix J: Grading]] +* [[ibc_appx-k|Appendix K: Administrative Provisions]] +* [[ibc_appx-l|Appendix L: Earthquake Recording Instrumentation]] +* [[ibc_appx-m|Appendix M: Tsunami-Generated Flood Hazard]] +* [[ibc_appx-n|Appendix N: Replicable Buildings]] diff --git a/learn-banjo.md b/learn-banjo.md index 93f9284..c78dca1 100644 --- a/learn-banjo.md +++ b/learn-banjo.md @@ -6,6 +6,7 @@ tags: - destiny/fleeting - type/task - status/incomplete + - topic/hobbies/banjo title: Learn Banjo --- # Learn Banjo diff --git a/media-to-watch.md b/media-to-watch.md index 791a9a6..4048fa9 100644 --- a/media-to-watch.md +++ b/media-to-watch.md @@ -4,7 +4,7 @@ aliases: [] tags: - destiny/fleeting - authorship/original - - topic/hobbies + - topic/hobbies/tv-and-film - status/complete title: Media to Watch --- diff --git a/medium-voltage.md b/medium-voltage.md index 6d1ae95..5288457 100644 --- a/medium-voltage.md +++ b/medium-voltage.md @@ -30,6 +30,8 @@ title: Medium Voltage > > In this case 100% insulation level is appropriate for 15kV conductors. +[[nfpa-70_311_mv-conductors#311.10(B) Thickness of Insulation and Jacket for Nonshielded Insulated Conductors.]] + | Voltage Rating | Insulation Level | Insulation Thickness | | --------------:| ----------------:| --------------------:| | 5kV | 100% | 90 mils | diff --git a/multi-family-dwellings.md b/multi-family-dwellings.md index 9894697..8b3330f 100644 --- a/multi-family-dwellings.md +++ b/multi-family-dwellings.md @@ -34,17 +34,63 @@ and thus whether are hotels are multifamily dwellings per the NEC definition is contingent on the AHJ's interpretation of the requirement for permanent provisions for cooking. -> [!cite] [[nfpa-70_100_definitions#Dwelling Unit.| NEC Article 100]], emphasis added +> [!cite] [[nfpa-70_100_definitions#Dwelling Unit.| NEC Article 100]] (emphasis added) > ### Dwelling Unit. > > A single unit, providing complete and independent living facilities for one or more persons, > including permanent provisions for living, sleeping, _cooking_, and sanitation. +This definition exactly mirrors the IBC, which also + +> [!cite] IBC Chapter 2: Definitions +> ## Sleeping Unit. +> +> A single unit that provides rooms or spaces for one or more persons, +> includes permanent provisions for sleeping +> and can include provisions for living, eating +> and either sanitation or kitchen facilities but not both. +> Such rooms and spaces that are also part of a dwelling unit are not sleeping units. + Anecdotal evidence from [reliable forums](https://forums.mikeholt.com/) suggests that a cord-and-plug connected microwave is generally not interpreted to meet the requirement, however I'm not separating these, at least for now. +> [!cite] IBC Chapter 2: Definitions (emphasis added) +> Another example would be a studio apartment with a kitchenette +> (i.e., countertop microwave, sink, refrigerator). +> Since the cooking arrangements +> are not the traditional permanent appliances (i.e., a range), +> this configuration would be considered a sleeping unit, +> and not a dwelling unit. +> As defined in the code, +> a “Dwelling unit” must contain permanent facilities +> for living, sleeping, eating, cooking and sanitation. +> +> The new style of dormitory in colleges +> consists of two, three or four bedrooms +> with one or two single occupant bathrooms +> and a shared living space. +> These facilities are considered a sleeping unit. +> Only where there are full cooking and eating facilities +> (i.e., a kitchen with a range) within the unit, +> is the unit considered a dwelling unit. +> The two-, three- or four-bedroom units operate similar to an apartment. +> Considering this group of rooms a sleeping unit +> clarifies that the provisions in Chapter 7 to separate dwelling or sleeping units +> allows for this group of rooms to be separated from adjacent groups and the corridors, +> but does not require the bedrooms +> to be separated from the associated living room or bathrooms. +> This also clarified that only the main corridors have fire alarms, +> and smoke detectors can be within the unit. +> With the previous definition, +> it was not clear if the living and sanitation +> were considered part of the unit or an extension of the main corridor. +> Due to how universities administer dormitory assignments, +> the accessibility provisions in Section 1107 +> specify that bedrooms within sleeping units are counted separately +> for purposed the number of Accessible bedrooms required. + ## Hotels ### Hotel Units diff --git a/nfpa-70_311_mv-conductors.md b/nfpa-70_311_mv-conductors.md index 8b7dc7f..fdb1535 100644 --- a/nfpa-70_311_mv-conductors.md +++ b/nfpa-70_311_mv-conductors.md @@ -23,21 +23,20 @@ This article covers the use, installation, construction specifications, and ampa The definitions in this section shall apply within this article and throughout the Code. -Electrical Ducts. +#### Electrical Ducts. Electrical conduits, or other raceways round in cross section, that are suitable for use underground or embedded in concrete. -Medium Voltage Cable, Type MV. +#### Medium Voltage Cable, Type MV. A single or multiconductor solid dielectric insulated cable rated 2001 volts up to and including 35,000 volts, nominal. -Thermal Resistivity. +#### Thermal Resistivity. As used in this Code, the heat transfer capability through a substance by conduction. > [!info] Informational Note: -> Thermal resistivity is the reciprocal of thermal conductivity and is designated Rho, which is expressed in the units -°C-cm/W. +> Thermal resistivity is the reciprocal of thermal conductivity and is designated Rho, which is expressed in the units °C-cm/W. ### 311.6 Listing Requirements. @@ -53,71 +52,21 @@ Type MV cables shall comply with the applicable provisions in 311.10(A) through Conductor application and insulation shall comply with Table 311.10(A). +##### Table 311.10(A) Conductor Application and Insulation Rated 2001 Volts and Higher + +| Trade Name | Type Letter | Maximum Operating Temperature | Application Provision | Insulation | Outer Covering | +| ------------------------------- |:----------------:|:-----------------------------:| --------------------- | ------------------------------ | ------------------------ | +| Medium voltage solid dielectric | MV-90
MV-105* | 90°C
105°C | Dry or wet locations | Thermoplastic or thermosetting | Jacket, sheath, or armor | + +\*Where design conditions require maximum conductor temperatures above 90°C. + + #### 311.10(B) Thickness of Insulation and Jacket for Nonshielded Insulated Conductors. -Thickness of insulation and jacket for nonshielded solid dielectric insulated conductors rated 2001 volts to 5000 volts shall comply with +Thickness of insulation and jacket for nonshielded solid dielectric insulated conductors rated 2001 volts to 5000 volts shall comply with Table 311.10(B). -Table 311.10(B). -#### 311.10(C) Thickness of Insulation for Shielded Insulated Conductors. - -Thickness of insulation for shielded solid dielectric insulated conductors rated 2001 volts to 35,000 volts shall comply with Table -311.10(C) and 311.10(C)(1) through (C)(3). - -##### 311.10(C)(1) 100 Percent Insulation Level. - -Cables shall be permitted to be applied where the system is provided with relay protection such that ground faults will be cleared as rapidly as possible but, in any case, within 1 minute. These cables are applicable to cable installations that are on grounded systems and shall be permitted to be used on other systems provided the above clearing requirements are met in completely de-energizing the faulted section. - -##### 311.10(C)(2) 133 Percent Insulation Level. - -Cables shall be permitted to be applied in situations where the clearing time requirements of the 100 percent level category cannot be met and the faulted section will be de-energized in a time not exceeding 1 hour. Cable shall be permitted to be used in 100 percent insulation level applications where the installation requires additional insulation. - -##### 311.10(C)(3) 173 Percent Insulation Level. - -Cables shall be permitted to be applied under all of the following conditions: - -* (1) In industrial establishments where the conditions of maintenance and supervision ensure only qualified persons service the installation - -* (2) Where the fault clearing time requirements of the 133 percent level category cannot be met - -* (3) Where an orderly shutdown is required to protect equipment and personnel - -* (4) Where the faulted section will be de-energized in an orderly shutdown - -Cables shall be permitted to be used in 100 percent or 133 percent insulation level applications where the installation requires additional insulation. - -Table 311.10(A) Conductor Application and Insulation Rated 2001 Volts and Higher - -Trade - -Name - -Type - -Letter - -Maximum Operating - -Temperature - -Application - -Provision Insulation - -Outer - -Covering - -Medium voltage solid dielectric - -MV-90 90°C Dry or wet locations Thermoplastic or thermosetting - -Jacket, sheath, or armor - -MV-105* 105°C -*Where design conditions require maximum conductor temperatures above 90°C. - -Table 311.10(B) Thickness of Insulation and Jacket for Nonshielded Solid Dielectric Insulated Conductors +##### Table 311.10(B) Thickness of Insulation and Jacket for Nonshielded Solid Dielectric Insulated Conductors Rated 2001 Volts to 5000 Volts @@ -217,9 +166,36 @@ Level mm mils mm mils mm mils mm mils mm mils mm mils 1 7.11 280 8.76 345 11.30 445 — — — — — — 1/0–2000 7.11 280 8.76 345 11.30 445 8.76 345 10.67 420 14.73 580 -### 311.12 Conductors. -Table 311.10(C) Thickness of Insulation for Shielded Solid Dielectric Insulated Conductors Rated 2001 Vol +#### 311.10(C) Thickness of Insulation for Shielded Insulated Conductors. + +Thickness of insulation for shielded solid dielectric insulated conductors rated 2001 volts to 35,000 volts shall comply with Table 311.10(C) and 311.10(C)(1) through (C)(3). + +##### 311.10(C)(1) 100 Percent Insulation Level. + +Cables shall be permitted to be applied where the system is provided with relay protection such that ground faults will be cleared as rapidly as possible but, in any case, within 1 minute. These cables are applicable to cable installations that are on grounded systems and shall be permitted to be used on other systems provided the above clearing requirements are met in completely de-energizing the faulted section. + +##### 311.10(C)(2) 133 Percent Insulation Level. + +Cables shall be permitted to be applied in situations where the clearing time requirements of the 100 percent level category cannot be met and the faulted section will be de-energized in a time not exceeding 1 hour. Cable shall be permitted to be used in 100 percent insulation level applications where the installation requires additional insulation. + +##### 311.10(C)(3) 173 Percent Insulation Level. + +Cables shall be permitted to be applied under all of the following conditions: + +* (1) In industrial establishments where the conditions of maintenance and supervision ensure only qualified persons service the installation + +* (2) Where the fault clearing time requirements of the 133 percent level category cannot be met + +* (3) Where an orderly shutdown is required to protect equipment and personnel + +* (4) Where the faulted section will be de-energized in an orderly shutdown + +Cables shall be permitted to be used in 100 percent or 133 percent insulation level applications where the installation requires additional insulation. + + + +##### Table 311.10(C) Thickness of Insulation for Shielded Solid Dielectric Insulated Conductors Rated 2001 Vol 2001– 5000 @@ -290,23 +266,22 @@ Leve mm mils mm mils mm mils mm mils mm mils mm mils mm mils mm m 2 2.29 90 2.92 115 3.56 140 4.45 175 4.45 175 5.59 220 6.60 260 — — 1 2.29 90 2.92 115 3.56 140 4.45 175 4.45 175 5.59 220 6.60 260 6.60 2 1/0–2000 2.29 90 2.92 115 3.56 140 4.45 175 4.45 175 5.59 220 6.60 260 6.60 2 +### 311.12 Conductors. + #### 311.12(A) Minimum Size of Conductors. The minimum size of conductors shall be as shown in Table 311.12(A), except as permitted elsewhere in this Code. -Table 311.12(A) Minimum Size of Conductors +##### Table 311.12(A) Minimum Size of Conductors -Conductor Voltage Rating (Volts) - -Minimum Conductor Size (AWG) - -Copper, Aluminum, or Copper-Clad Aluminum -2001–5000 8 -5001–8000 6 -8001–15,000 2 -15,001–28,000 1 -28,001–35,000 1/0 +| Conductor Voltage Rating (Volts) | Minimum Conductor Size (AWG) Copper, Aluminum, or Copper-Clad Aluminum | +| -------------------------------- | ---------------------------------------------------------------------- | +| 2001–5000 | 8 | +| 5001–8000 | 6 | +| 8001–15,000 | 2 | +| 15,001–28,000 | 1 | +| 28,001–35,000 | 1/0 | #### 311.12(B) Conductor Material. @@ -386,8 +361,7 @@ Type MV cable shall be permitted for use on power systems rated up to and includ * (2) In raceways. -* (3) In cable trays, where identified for the use, in accordance with 392.10, 392.20(B), (C), and (D), 392.22(C), 392.30(B)(1), 392.46, -392.56, and 392.60. Type MV cable that has an overall metallic sheath or armor, complies with the requirements for Type MC cable, and is identified as “MV or MC” shall be permitted to be installed in cable trays in accordance with 392.10(B)(2). +* (3) In cable trays, where identified for the use, in accordance with 392.10, 392.20(B), (C), and (D), 392.22(C), 392.30(B)(1), 392.46, 392.56, and 392.60. Type MV cable that has an overall metallic sheath or armor, complies with the requirements for Type MC cable, and is identified as “MV or MC” shall be permitted to be installed in cable trays in accordance with 392.10(B)(2). * (4) In messenger-supported wiring in accordance with Part II of Article 396. @@ -414,7 +388,8 @@ The metallic shield, sheath, or armor shall be connected to a grounding electrod > [!important] Exception No. 2: > Airfield lighting cable used in series circuits that are rated up to 5000 volts and are powered by regulators shall be permitted to be nonshielded. -Informational Note to Exception No. 2: Federal Aviation Administration (FAA) Advisory Circulars (ACs) provide additional practices and methods for airport lighting. +> [!info] Informational Note to Exception No. 2: +> Federal Aviation Administration (FAA) Advisory Circulars (ACs) provide additional practices and methods for airport lighting. ### 311.40 Support. @@ -422,44 +397,32 @@ Type MV cable terminated in equipment or installed in pull boxes or vaults shall ### 311.44 Shielding. -Nonshielded, ozone-resistant insulated conductors with a maximum phase-to-phase voltage of 5000 volts shall be permitted in Type +Nonshielded, ozone-resistant insulated conductors with a maximum phase-to-phase voltage of 5000 volts shall be permitted in Type MC cables in industrial establishments where the conditions of maintenance and supervision ensure that only qualified persons service the installation. For other establishments, solid dielectric insulated conductors operated above 2000 volts in permanent installations shall have ozone-resistant insulation and shall be shielded. All metallic insulation shields shall be connected to a grounding electrode conductor, a grounding busbar, an equipment grounding conductor, or a grounding electrode. -MC cables in industrial establishments where the conditions of maintenance and supervision ensure that only qualified persons service the installation. For other establishments, solid dielectric insulated conductors operated above 2000 volts in permanent installations shall have ozone-resistant insulation and shall be shielded. All metallic insulation shields shall be connected to a grounding electrode conductor, a grounding busbar, an equipment grounding conductor, or a grounding electrode. -\[311.60(B)\] -T = - -T = -ΔT = - -R = - -Y = - -R = > [!info] Informational Note: > The primary purposes of shielding are to confine the voltage stresses to the insulation, dissipate insulation leakage current, drain off the capacitive charging current, and carry ground-fault current to facilitate operation of ground-fault protective devices in the event of an electrical cable fault. > [!important] Exception No. 1: > Nonshielded insulated conductors listed by a qualified testing laboratory shall be permitted for use up to 2400 volts under the following conditions: - -* (1) Conductors shall have insulation resistant to electric discharge and surface tracking, or the insulated conductor(s) shall be covered with a material resistant to ozone, electric discharge, and surface tracking. - -* (2) Where used in wet locations, the insulated conductor(s) shall have an overall nonmetallic jacket or a continuous metallic sheath. - -* (3) Insulation and jacket thicknesses shall be in accordance with Table 311.10(B). +> +> * (1) Conductors shall have insulation resistant to electric discharge and surface tracking, or the insulated conductor(s) shall be covered with a material resistant to ozone, electric discharge, and surface tracking. +> +> * (2) Where used in wet locations, the insulated conductor(s) shall have an overall nonmetallic jacket or a continuous metallic sheath. +> +> * (3) Insulation and jacket thicknesses shall be in accordance with Table 311.10(B). > [!important] Exception No. 2: > Nonshielded insulated conductors listed by a qualified testing laboratory shall be permitted for use up to 5000 volts to replace existing nonshielded conductors, on existing equipment in industrial establishments only, under the following conditions: - -* (1) Where the condition of maintenance and supervision ensures that only qualified personnel install and service the installation. - -* (2) Conductors shall have insulation resistant to electric discharge and surface tracking, or the insulated conductor(s) shall be covered with a material resistant to ozone, electric discharge, and surface tracking. - -* (3) Where used in wet locations, the insulated conductor(s) shall have an overall nonmetallic jacket or a continuous metallic sheath. - -* (4) Insulation and jacket thicknesses shall be in accordance with Table 311.10(B). +> +> * (1) Where the condition of maintenance and supervision ensures that only qualified personnel install and service the installation. +> +> * (2) Conductors shall have insulation resistant to electric discharge and surface tracking, or the insulated conductor(s) shall be covered with a material resistant to ozone, electric discharge, and surface tracking. +> +> * (3) Where used in wet locations, the insulated conductor(s) shall have an overall nonmetallic jacket or a continuous metallic sheath. +> +> * (4) Insulation and jacket thicknesses shall be in accordance with Table 311.10(B). > [!info] Informational Note: > Relocation or replacement of equipment may not comply with the term existing as related to this exception. @@ -491,7 +454,25 @@ Where more than one calculated or tabulated ampacity could apply for a given cir #### 311.60(B) Engineering Supervision. -Under engineering supervision, conductor ampacities shall be permitted to be calculated by using the following general equation: where: conductor temperature (°C) ambient temperature (°C) dielectric loss temperature rise dc resistance of conductor at temperature, T component ac resistance resulting from skin effect and proximity effect effective thermal resistance between conductor and surrounding ambient c a d dc c c ca +Under engineering supervision, conductor ampacities shall be permitted to be calculated by using the following general equation: + +### Equation 311.60(B) + +%% TODO %% + +T = + +T = +ΔT = + +R = + +Y = + +R = + +where: +conductor temperature (°C) ambient temperature (°C) dielectric loss temperature rise dc resistance of conductor at temperature, T component ac resistance resulting from skin effect and proximity effect effective thermal resistance between conductor and surrounding ambient c a d dc c c ca > [!info] Informational Note: > The dielectric loss temperature rise (ΔT ) is negligible for single circuit extruded dielectric cables rated below 46 kilovolts. @@ -500,20 +481,15 @@ Under engineering supervision, conductor ampacities shall be permitted to be cal Ampacities for conductors rated 2001 volts to 35,000 volts shall be as specified in Table 311.60(C)(67) through Table 311.60(C)(86). -Ampacities for ambient temperatures other than those specified in the ampacity tables shall be corrected in accordance with 311.60(D) -(4). +Ampacities for ambient temperatures other than those specified in the ampacity tables shall be corrected in accordance with 311.60(D)(4). > [!info] Informational Note No. 1: -> For ampacities calculated in accordance with 311.60(A), reference IEEE 835, Standard Power Cable - -Ampacity Tables, and the references therein for availability of all factors and constants. +> For ampacities calculated in accordance with 311.60(A), reference IEEE 835, Standard Power Cable Ampacity Tables, and the references therein for availability of all factors and constants. > [!info] Informational Note No. 2: -> Ampacities provided by this section do not take voltage drop into consideration. See 210.19(A), Informational +> Ampacities provided by this section do not take voltage drop into consideration. See 210.19(A), Informational Note No. 4, for branch circuits and 215.2(A), Informational Note No. 2, for feeders. -Note No. 4, for branch circuits and 215.2(A), Informational Note No. 2, for feeders. - -Table 311.60(C)(67) Ampacities of Insulated Single Copper Conductor Cables Triplexed in Air +##### Table 311.60(C)(67) Ampacities of Insulated Single Copper Conductor Cables Triplexed in Air Conductor @@ -552,7 +528,7 @@ MV-105 Note: Refer to 311.60(E) for the basis of ampacities, 311.10(A) for conductor maximum operating temperature and application, and 311.60(D)(4) for the ampacity correction factors where the ambient air temperature is other than 40°C (104°F). -Table 311.60(C)(68) Ampacities of Insulated Single Aluminum Conductor Cables Triplexed in Air +##### Table 311.60(C)(68) Ampacities of Insulated Single Aluminum Conductor Cables Triplexed in Air Conductor @@ -611,7 +587,7 @@ MV-105 Note: Refer to 311.60(E) for basis of ampacities, 311.10(A) for conductor maximum operating temperature and application, and 311.60(D)(4) for the ampacity correction factors where the ambient air temperature is other than 40°C (104°F). -Table 311.60(C)(69) Ampacities of Insulated Single Copper Conductor Isolated in Air +##### Table 311.60(C)(69) Ampacities of Insulated Single Copper Conductor Isolated in Air Conductor @@ -663,7 +639,7 @@ Type MV-105 Note: Refer to 311.60(E) for the basis of ampacities, 311.10(A) for conductor maximum operating temperature and application, and 311.60(D)(4) for the ampacity correction factors where the ambient air temperature is other than 40°C (104°F). -Table 311.60(C)(70) Ampacities of Insulated Single Aluminum Conductor Isolated in Air +##### Table 311.60(C)(70) Ampacities of Insulated Single Aluminum Conductor Isolated in Air Conductor @@ -712,12 +688,9 @@ Type MV-105 1750 1215 1355 1195 1335 1165 1300 2000 1320 1475 1295 1445 1265 1410 -Note: Refer to 311.60(E) for the basis of ampacities, 311.10(A) for conductor maximum operating temperature and application, and -311.60(D)(4) for the ampacity correction factors where the ambient air temperature is other than 40°C (104°F). +Note: Refer to 311.60(E) for the basis of ampacities, 311.10(A) for conductor maximum operating temperature and application, and 311.60(D)(4) for the ampacity correction factors where the ambient air temperature is other than 40°C (104°F). -Table 311.60(C)(71) Ampacities of an Insulated - -Three-Conductor Copper Cable Isolated in Air +##### Table 311.60(C)(71) Ampacities of an Insulated Three-Conductor Copper Cable Isolated in Air Conductor @@ -776,9 +749,7 @@ MV-105 Note: Refer to 311.60(E) for the basis of ampacities, 311.10(A) for conductor maximum operating temperature and application, and 311.60(D)(4) for the ampacity correction factors where the ambient air temperature is other than 40°C (104°F). -Table 311.60(C)(72) Ampacities of an Insulated - -Three-Conductor Aluminum Cable Isolated in Air +##### Table 311.60(C)(72) Ampacities of an Insulated Three-Conductor Aluminum Cable Isolated in Air Conductor @@ -817,9 +788,7 @@ MV-105 Note: Refer to 311.60(E) for the basis of ampacities, 311.10(A) for conductor maximum operating temperature and application, and 311.60(D)(4) for the ampacity correction factors where the ambient air temperature is other than 40°C (104°F). -Table 311.60(C)(73) Ampacities of an Insulated Triplexed or Three Single-Conductor Copper Cables in - -Isolated Conduit in Air +##### Table 311.60(C)(73) Ampacities of an Insulated Triplexed or Three Single-Conductor Copper Cables in Isolated Conduit in Air Conductor @@ -878,9 +847,7 @@ MV-105 Note: Refer to 311.60(E) for the basis of ampacities, 311.10(A) for conductor maximum operating temperature and application, and 311.60(D)(4) for the ampacity correction factors where the ambient air temperature is other than 40°C (104°F). -Table 311.60(C)(74) Ampacities of an Insulated Triplexed or Three Single-Conductor Aluminum Cables in - -Isolated Conduit in Air +##### Table 311.60(C)(74) Ampacities of an Insulated Triplexed or Three Single-Conductor Aluminum Cables in Isolated Conduit in Air Conductor Size (AWG or kcmil) @@ -916,9 +883,7 @@ MV-105 Note: Refer to 311.60(E) for the basis of ampacities, 311.10(A) for conductor maximum operating temperature and application, and 311.60(D)(4) for the ampacity correction factors where the ambient air temperature is other than 40°C (104°F). -Table 311.60(C)(75) Ampacities of an Insulated - -Three-Conductor Copper Cable in Isolated Conduit in Air +##### Table 311.60(C)(75) Ampacities of an Insulated Three-Conductor Copper Cable in Isolated Conduit in Air Conductor Temperature Rating of Conductor @@ -975,9 +940,7 @@ MV-105 Note: Refer to 311.60(E) for the basis of ampacities, 311.10(A) for conductor maximum operating temperature and application, and 311.60(D)(4) for the ampacity correction factors where the ambient air temperature is other than 40°C (104°F). -Table 311.60(C)(76) Ampacities of an Insulated - -Three-Conductor Aluminum Cable in Isolated Conduit in Air +##### Table 311.60(C)(76) Ampacities of an Insulated Three-Conductor Aluminum Cable in Isolated Conduit in Air Conductor @@ -1013,13 +976,9 @@ MV-105 750 430 480 470 520 1000 505 560 550 615 -Note: Refer to 311.60(E) for the basis of ampacities, 311.10(A) for conductor maximum operating temperature and application, and -311.60(D)(4) for the ampacity correction factors where the ambient air temperature is other than 40°C (104°F). +Note: Refer to 311.60(E) for the basis of ampacities, 311.10(A) for conductor maximum operating temperature and application, and 311.60(D)(4) for the ampacity correction factors where the ambient air temperature is other than 40°C (104°F). -Table 311.60(C)(77) Ampacities of Three Single-Insulated Copper Conductors in Underground Electrical - -Ducts -(Three Conductors per Electrical Duct) +##### Table 311.60(C)(77) Ampacities of Three Single-Insulated Copper Conductors in Underground Electrical Ducts (Three Conductors per Electrical Duct) Conductor @@ -1113,10 +1072,7 @@ MV-105 Note: Refer to 311.60(F) for basis of ampacities and Table 311.10(A) for the temperature rating of the conductor. -Table 311.60(C)(78) Ampacities of Three Single-Insulated Aluminum Conductors in Underground - -Electrical Ducts -(Three Conductors per Electrical Duct) +##### Table 311.60(C)(78) Ampacities of Three Single-Insulated Aluminum Conductors in Underground Electrical Ducts (Three Conductors per Electrical Duct) Conductor @@ -1210,8 +1166,7 @@ Detail 3.\] Note: Refer to 311.60(F) for basis of ampacities and Table 311.10(A) for the temperature rating of the conductor. -Table 311.60(C)(79) Ampacities of Three Insulated Copper Conductors Cabled Within an Overall Covering -(Three-Conductor Cable) in Underground Electrical Ducts (One Cable per Electrical Duct) +##### Table 311.60(C)(79) Ampacities of Three Insulated Copper Conductors Cabled Within an Overall Covering (Three-Conductor Cable) in Underground Electrical Ducts (One Cable per Electrical Duct) Conductor @@ -1323,10 +1278,7 @@ MV-105 Note: Refer to 311.60(F) for basis of ampacities and Table 311.10(A) for the temperature rating of the conductor. -Table 311.60(C)(80) Ampacities of Three Insulated Aluminum Conductors Cabled Within an Overall - -Covering -(Three-Conductor Cable) in Underground Electrical Ducts (One Cable per Electrical Duct) +##### Table 311.60(C)(80) Ampacities of Three Insulated Aluminum Conductors Cabled Within an Overall Covering (Three-Conductor Cable) in Underground Electrical Ducts (One Cable per Electrical Duct) Conductor @@ -1420,7 +1372,7 @@ Detail 3.\] Note: Refer to 311.60(F) for basis of ampacities and Table 311.10(A) for the temperature rating of the conductor. -Table 311.60(C)(81) Ampacities of Single Insulated Copper Conductors Directly Buried in Earth +##### Table 311.60(C)(81) Ampacities of Single Insulated Copper Conductors Directly Buried in Earth Conductor @@ -1494,7 +1446,7 @@ Two Circuits, Six Conductors \[See Figure Note: Refer to 311.60(F) for basis of ampacities and Table 311.10(A) for the temperature rating of the conductor. -Table 311.60(C)(82) Ampacities of Single Insulated Aluminum Conductors Directly Buried in Earth +##### Table 311.60(C)(82) Ampacities of Single Insulated Aluminum Conductors Directly Buried in Earth Conductor @@ -1568,8 +1520,7 @@ Two Circuits, Six Conductors \[See Figure Note: Refer to 311.60(F) for basis of ampacities and Table 311.10(A) for the temperature rating of the conductor. -Table 311.60(C)(83) Ampacities of Three Insulated Copper Conductors Cabled Within an Overall Covering -(Three-Conductor Cable), Directly Buried in Earth +##### Table 311.60(C)(83) Ampacities of Three Insulated Copper Conductors Cabled Within an Overall Covering (Three-Conductor Cable), Directly Buried in Earth Conductor @@ -1649,10 +1600,7 @@ Detail 6.\] Note: Refer to 311.60(F) for basis of ampacities and Table 311.10(A) for the temperature rating of the conductor. -Table 311.60(C)(84) Ampacities of Three Insulated Aluminum Conductors Cabled Within an Overall - -Covering -(Three-Conductor Cable), Directly Buried in Earth +##### Table 311.60(C)(84) Ampacities of Three Insulated Aluminum Conductors Cabled Within an Overall Covering (Three-Conductor Cable), Directly Buried in Earth Conductor Temperature Rating of Conductor @@ -1730,9 +1678,7 @@ Detail 6.\] Note: Refer to 311.60(F) for basis of ampacities and Table 311.10(A) for the temperature rating of the conductor. -Table 311.60(C)(85) Ampacities of Three Triplexed Single Insulated Copper Conductors Directly Buried in - -Earth +##### Table 311.60(C)(85) Ampacities of Three Triplexed Single Insulated Copper Conductors Directly Buried in Earth Conductor @@ -1805,9 +1751,7 @@ Two Circuits, Six Conductors \[See Figure Note: Refer to 311.60(F) for basis of ampacities and Table 311.10(A) for the temperature rating of the conductor. -Table 311.60(C)(86) Ampacities of Three Triplexed Single Insulated Aluminum Conductors Directly - -Buried in Earth +##### Table 311.60(C)(86) Ampacities of Three Triplexed Single Insulated Aluminum Conductors Directly Buried in Earth Conductor @@ -1916,6 +1860,8 @@ Ampacities for ambient temperatures other than those specified in the ampacity t ###### Equation 311.60(D)(4) +%% TODO %% + I' = I = @@ -1926,20 +1872,7 @@ T ' = T = where: ampacity corrected for ambient temperature ampacity shown in the table for T and T temperature rating of conductor (°C) new ambient temperature (°C) ambient temperature used in the table (°C) -#### 311.60(E) Ampacity in Air. - -Ampacities for conductors and cables in air shall be as specified in Table 311.60(C)(67) through Table 311.60(C)(76). Ampacities shall be based on the following: - -* (1) Conductor temperatures of 90°C (194°F) and 105°C (221°F) - -* (2) Ambient air temperature of 40°C (104°F) - -> [!info] Informational Note: -> See 311.60(D)(4) where the ambient air temperature is other than 40°C (104°F). - -#### 311.60(F) Ampacity in Underground Electrical Ducts and Direct Buried in Earth. - -Table 311.60(D)(4) Ambient Temperature Correction Factors +###### Table 311.60(D)(4) Ambient Temperature Correction Factors For ambient temperatures other than 40°C (104°F), multiply the allowable ampacities specified in the ampacity tables by the appropriate factor shown below. @@ -1991,3 +1924,16 @@ Ampacities for conductors and cables in underground electrical ducts and direct * (7) Maximum depth to the top of electrical duct banks shall be 750 mm (30 in.), and maximum depth to the top of direct-buried cables shall be 900 mm (36 in.). +#### 311.60(E) Ampacity in Air. + +Ampacities for conductors and cables in air shall be as specified in Table 311.60(C)(67) through Table 311.60(C)(76). Ampacities shall be based on the following: + +* (1) Conductor temperatures of 90°C (194°F) and 105°C (221°F) + +* (2) Ambient air temperature of 40°C (104°F) + +> [!info] Informational Note: +> See 311.60(D)(4) where the ambient air temperature is other than 40°C (104°F). + +#### 311.60(F) Ampacity in Underground Electrical Ducts and Direct Buried in Earth. + diff --git a/owned-models.md b/owned-models.md index 882f372..b84f216 100644 --- a/owned-models.md +++ b/owned-models.md @@ -4,7 +4,7 @@ aliases: [] tags: - destiny/permanent - status/complete - - topic/hobbies + - topic/hobbies/wargames - type/encyclopedia - authorship/original title: Owned Models diff --git a/pdi-building-types.md b/pdi-building-types.md index e43f0a7..5eb2dab 100644 --- a/pdi-building-types.md +++ b/pdi-building-types.md @@ -2,11 +2,11 @@ id: aliases: [] tags: + - authorship/original - destiny/permanent - occupational - - type/encyclopedia - status/incomplete - - authorship/original + - type/encyclopedia title: PDI Building Types --- # PDI Building Types @@ -19,7 +19,7 @@ and even less for dormitories. ### High Rise - +%% TODO %% > [!info] > A high rise building has an occupied floor more than 75 feet @@ -27,7 +27,7 @@ and even less for dormitories. ### Mid Rise - +%% TODO %% ### Garden Style @@ -45,8 +45,8 @@ Essentially a catch-all category for residential projects that don't fit the previous. Examples include: -- Multi-story wood frame building above concrete podium - or wrapped around concrete parking structure +* Multi-story wood frame building above concrete podium + or wrapped around concrete parking structure > [!info] Podium > "Podium" refers to the levels of concrete construction @@ -55,4 +55,4 @@ Examples include: ## Commercial - +%% TODO %% diff --git a/stochastic-branch-takeoff.md b/stochastic-branch-takeoff.md index 42cf4ca..b3303c8 100644 --- a/stochastic-branch-takeoff.md +++ b/stochastic-branch-takeoff.md @@ -45,4 +45,10 @@ varies greatly with the aspect ratio of the space. Weighted by a probability distribution an average length and confidence could be given for any known area. -[[sigmoid-functions]] \ No newline at end of file +[[sigmoid-functions]] + +Maximum area per floor is sometimes capped by +[[ibc-construction-types]] or [[ibc-occupancy-classifications]], +either directly (see [[ibc_ch05]], [[ibc_ch09]]), +or by maximum travel distance (see [[ibc_ch10]]). +Stairwells are expensive. There are usually only 2 or 3. \ No newline at end of file diff --git a/the-book-of-the-new-sun.md b/the-book-of-the-new-sun.md index a340a51..8ff6d35 100644 --- a/the-book-of-the-new-sun.md +++ b/the-book-of-the-new-sun.md @@ -4,7 +4,7 @@ aliases: [] tags: - authorship/original - destiny/permanent - - topic/hobbies + - topic/hobbies/reading - type/media-commentary title: The Book of the New Sun --- diff --git a/the-story-of-ymar.md b/the-story-of-ymar.md index 1829c46..7231f91 100644 --- a/the-story-of-ymar.md +++ b/the-story-of-ymar.md @@ -5,7 +5,7 @@ tags: - destiny/permanent - authorship/other - status/incomplete - - topic/hobbies + - topic/hobbies/reading - exclude-from-word-count title: The Story of Ymar description: | diff --git a/thoreau_1854_walden.md b/thoreau_1854_walden.md new file mode 100644 index 0000000..e25ba5e --- /dev/null +++ b/thoreau_1854_walden.md @@ -0,0 +1,15 @@ +--- +id: +aliases: + - walden +tags: + - authorship/other + - destiny/permanent + - exclude-from-word-count + - type/media +type: book +title: Walden +author: Henry David Thoreau +year: 1854 +--- +# Walden diff --git a/uncommon-syntax.md b/uncommon-syntax.md index ef21407..3a2227e 100644 --- a/uncommon-syntax.md +++ b/uncommon-syntax.md @@ -3,8 +3,8 @@ id: aliases: [] tags: - authorship/original - - type/encyclopedia - destiny/permanent + - type/encyclopedia title: Uncommon Syntax --- # Uncommon Syntax @@ -28,4 +28,31 @@ title: Uncommon Syntax > "[entails](https://en.wikipedia.org/wiki/Logical_consequence "Logical consequence")", > "[models](https://en.wikipedia.org/wiki/Model_theory "Model theory")", > "is a **semantic consequence** of" - > or "is stronger than". \ No newline at end of file + > or "is stronger than". + +### Compound Points + +> [!cite] [Compound point - Wikipedia](https://en.wikipedia.org/wiki/Compound_point) +> * **;---** --- Semicolon dash. +> A more emphatic or longer semicolon. +> +> * **.---** --- Stop dash. +> A full stop that emphasizes the sentence it starts. +> +> * **,---** --- Comma dash. +> A mark used in various ways: +> to mark parentheticals +> that are placed where a comma would otherwise be needed +> in the principal sentence; +> to mark an idea repeated in different words; +> as a more emphatic comma; +> or for separating several clauses with a common dependence +> from the clause on which they depend. +> +> * **:---** --- Colon dash. +> A mark that indicates a list, the contents of which start on the next line; or as a more emphatic colon. + +These are archaic constructions, +generally regarded as redundant. + +Thoreau uses them extensively in _[[thoreau_1854_walden|Walden]]_. diff --git a/when-i-die.md b/when-i-die.md index 680fed4..fa1f066 100644 --- a/when-i-die.md +++ b/when-i-die.md @@ -6,7 +6,7 @@ tags: - destiny/uncertain - status/draft - type/anecdote - - topic/hobbies + - topic/hobbies/poetry title: when i die changelog: 2025-10-21: v1 draft and initial commentary diff --git a/wiring-method-selection.md b/wiring-method-selection.md index acf01dc..10357a7 100644 --- a/wiring-method-selection.md +++ b/wiring-method-selection.md @@ -37,11 +37,11 @@ for a [[ibc-construction-types#5-Over-1 Construction|podium]] construction. > * Concealed: NM/SER > * Exposed to Structure: PVC OH - +%% ## Standard Indoor Wiring Methods @@ -50,9 +50,8 @@ NM/SER < PVC in Slab < MC < EMT-SS < EMT-Comp ### NM/SER Overhead Nonmetallic-sheathed cables are combustible, -so not permissible in Non-Combustible (Type I, II) constructions. - -See [[ibc-construction-types]] for more info. +so not permissible in Type [[ibc-construction-types#Type I Fire Resistive Non-Combustible|I]], +[[ibc-construction-types#Type II Non-Combustible|II]] constructions. #### Concealment @@ -81,8 +80,8 @@ See [[pdi-breakdowns#Garage]] for more info. #### Slab Thickness -Conduits may not be routed through slabs of thickness -less than 3 times the outer diameter of the conduit. +Conduits may only be routed through slabs of thickness +at least 3 times the outer diameter of the conduit. | Conduit Size | Minimum Slab Thickness (in) | | ------------:| ---------------------------:| @@ -133,8 +132,8 @@ _Market Type = Assisted Living:_ MC-AP may be required. Cable type wiring methods (MC, NM, SE) may only be used where they will be concealed from view. -Exception: -Temporary provisions for unfinished spaces (e.g. core and shell retail) +> [!important] Exception: +> Temporary provisions for unfinished spaces (e.g. core and shell retail) #### Multi-Circuit Homeruns @@ -145,6 +144,7 @@ Temporary provisions for unfinished spaces (e.g. core and shell retail) ### EMT Overhead +Set-screw fittings are [[best-practice]] Set-screw fittings may not be acceptable. > [!info] diff --git a/wolfe_1980_shadow.md b/wolfe_1980_shadow.md index 7934911..63899be 100644 --- a/wolfe_1980_shadow.md +++ b/wolfe_1980_shadow.md @@ -6,6 +6,7 @@ tags: - authorship/other - destiny/permanent - exclude-from-word-count + - topic/hobbies/reading - type/media type: book title: The Shadow of the Torturer diff --git a/wolfe_1981_claw.md b/wolfe_1981_claw.md index b75654b..f994000 100644 --- a/wolfe_1981_claw.md +++ b/wolfe_1981_claw.md @@ -6,6 +6,7 @@ tags: - authorship/other - destiny/permanent - exclude-from-word-count + - topic/hobbies/reading - type/media type: book title: The Claw of the Conciliator diff --git a/wolfe_1981_sword.md b/wolfe_1981_sword.md index 5784060..4f93dad 100644 --- a/wolfe_1981_sword.md +++ b/wolfe_1981_sword.md @@ -6,6 +6,7 @@ tags: - authorship/other - destiny/permanent - exclude-from-word-count + - topic/hobbies/reading - type/media type: book title: The Sword of the Lictor diff --git a/wolfe_1982_citadel.md b/wolfe_1982_citadel.md index 0abf024..7bb9ed8 100644 --- a/wolfe_1982_citadel.md +++ b/wolfe_1982_citadel.md @@ -6,6 +6,7 @@ tags: - authorship/other - destiny/permanent - exclude-from-word-count + - topic/hobbies/reading - type/media type: book title: The Citadel of the Autarch diff --git a/wolfe_1987_urth.md b/wolfe_1987_urth.md index b1a5d2a..7c5d20d 100644 --- a/wolfe_1987_urth.md +++ b/wolfe_1987_urth.md @@ -6,6 +6,7 @@ tags: - authorship/other - destiny/permanent - exclude-from-word-count + - topic/hobbies/reading - type/media type: book title: The Urth of the New Sun diff --git a/write-more-philosophy.md b/write-more-philosophy.md index 20750b4..ca73a69 100644 --- a/write-more-philosophy.md +++ b/write-more-philosophy.md @@ -4,8 +4,9 @@ aliases: [] tags: - authorship/original - destiny/fleeting - - type/task - status/draft + - topic/writing + - type/task title: Write More Philosophy --- # Write More Philosophy