v0.0.1
|
|
@ -0,0 +1,2 @@
|
|||
scripts/tmp
|
||||
scripts/deps
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"pdfExportSettings": {
|
||||
"pageSize": "Letter",
|
||||
"landscape": false,
|
||||
"margin": "0",
|
||||
"downscalePercent": 100
|
||||
},
|
||||
"promptDelete": false
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"enabledCssSnippets": [
|
||||
"idea",
|
||||
"idea-callout"
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
[
|
||||
"obsidian-excalidraw-plugin",
|
||||
"dataview",
|
||||
"obsidian-icons-plugin",
|
||||
"obsidian-latex-suite",
|
||||
"mathpad",
|
||||
"obsidian-zotero-desktop-connector",
|
||||
"mathematica-plot",
|
||||
"obsidian-functionplot",
|
||||
"obsidian-pandoc",
|
||||
"obsidian-kanban",
|
||||
"math-in-callout"
|
||||
]
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"file-explorer": true,
|
||||
"global-search": true,
|
||||
"switcher": true,
|
||||
"graph": true,
|
||||
"backlink": true,
|
||||
"canvas": true,
|
||||
"outgoing-link": true,
|
||||
"tag-pane": true,
|
||||
"footnotes": true,
|
||||
"properties": true,
|
||||
"page-preview": true,
|
||||
"daily-notes": false,
|
||||
"templates": true,
|
||||
"note-composer": true,
|
||||
"command-palette": true,
|
||||
"slash-command": false,
|
||||
"editor-status": true,
|
||||
"bookmarks": true,
|
||||
"markdown-importer": false,
|
||||
"zk-prefixer": false,
|
||||
"random-note": false,
|
||||
"outline": true,
|
||||
"word-count": true,
|
||||
"slides": false,
|
||||
"audio-recorder": false,
|
||||
"workspaces": false,
|
||||
"file-recovery": true,
|
||||
"publish": false,
|
||||
"sync": false,
|
||||
"bases": true,
|
||||
"webviewer": false
|
||||
}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"collapse-filter": true,
|
||||
"search": "",
|
||||
"showTags": false,
|
||||
"showAttachments": false,
|
||||
"hideUnresolved": false,
|
||||
"showOrphans": true,
|
||||
"collapse-color-groups": true,
|
||||
"colorGroups": [],
|
||||
"collapse-display": true,
|
||||
"showArrow": false,
|
||||
"textFadeMultiplier": 0,
|
||||
"nodeSizeMultiplier": 1,
|
||||
"lineSizeMultiplier": 1,
|
||||
"collapse-forces": true,
|
||||
"centerStrength": 0.518713248970312,
|
||||
"repelStrength": 10,
|
||||
"linkStrength": 1,
|
||||
"linkDistance": 250,
|
||||
"scale": 1,
|
||||
"close": true
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"obsidian-zotero-desktop-connector:zdc-Pandoc": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Alt"
|
||||
],
|
||||
"key": "I"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"id": "dataview",
|
||||
"name": "Dataview",
|
||||
"version": "0.5.68",
|
||||
"minAppVersion": "0.13.11",
|
||||
"description": "Complex data views for the data-obsessed.",
|
||||
"author": "Michael Brenan <blacksmithgu@gmail.com>",
|
||||
"authorUrl": "https://github.com/blacksmithgu",
|
||||
"helpUrl": "https://blacksmithgu.github.io/obsidian-dataview/",
|
||||
"isDesktopOnly": false
|
||||
}
|
||||
|
|
@ -0,0 +1,141 @@
|
|||
.block-language-dataview {
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
/*****************/
|
||||
/** Table Views **/
|
||||
/*****************/
|
||||
|
||||
/* List View Default Styling; rendered internally as a table. */
|
||||
.table-view-table {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.table-view-table > thead > tr, .table-view-table > tbody > tr {
|
||||
margin-top: 1em;
|
||||
margin-bottom: 1em;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.table-view-table > tbody > tr:hover {
|
||||
background-color: var(--table-row-background-hover);
|
||||
}
|
||||
|
||||
.table-view-table > thead > tr > th {
|
||||
font-weight: 700;
|
||||
font-size: larger;
|
||||
border-top: none;
|
||||
border-left: none;
|
||||
border-right: none;
|
||||
border-bottom: solid;
|
||||
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.table-view-table > tbody > tr > td {
|
||||
text-align: left;
|
||||
border: none;
|
||||
font-weight: 400;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.table-view-table ul, .table-view-table ol {
|
||||
margin-block-start: 0.2em !important;
|
||||
margin-block-end: 0.2em !important;
|
||||
}
|
||||
|
||||
/** Rendered value styling for any view. */
|
||||
.dataview-result-list-root-ul {
|
||||
padding: 0em !important;
|
||||
margin: 0em !important;
|
||||
}
|
||||
|
||||
.dataview-result-list-ul {
|
||||
margin-block-start: 0.2em !important;
|
||||
margin-block-end: 0.2em !important;
|
||||
}
|
||||
|
||||
/** Generic grouping styling. */
|
||||
.dataview.result-group {
|
||||
padding-left: 8px;
|
||||
}
|
||||
|
||||
/*******************/
|
||||
/** Inline Fields **/
|
||||
/*******************/
|
||||
|
||||
.dataview.inline-field-key {
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
font-family: var(--font-monospace);
|
||||
background-color: var(--background-primary-alt);
|
||||
color: var(--nav-item-color-selected);
|
||||
}
|
||||
|
||||
.dataview.inline-field-value {
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
font-family: var(--font-monospace);
|
||||
background-color: var(--background-secondary-alt);
|
||||
color: var(--nav-item-color-selected);
|
||||
}
|
||||
|
||||
.dataview.inline-field-standalone-value {
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
font-family: var(--font-monospace);
|
||||
background-color: var(--background-secondary-alt);
|
||||
color: var(--nav-item-color-selected);
|
||||
}
|
||||
|
||||
/***************/
|
||||
/** Task View **/
|
||||
/***************/
|
||||
|
||||
.dataview.task-list-item, .dataview.task-list-basic-item {
|
||||
margin-top: 3px;
|
||||
margin-bottom: 3px;
|
||||
transition: 0.4s;
|
||||
}
|
||||
|
||||
.dataview.task-list-item:hover, .dataview.task-list-basic-item:hover {
|
||||
background-color: var(--text-selection);
|
||||
box-shadow: -40px 0 0 var(--text-selection);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/*****************/
|
||||
/** Error Views **/
|
||||
/*****************/
|
||||
|
||||
div.dataview-error-box {
|
||||
width: 100%;
|
||||
min-height: 150px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border: 4px dashed var(--background-secondary);
|
||||
}
|
||||
|
||||
.dataview-error-message {
|
||||
color: var(--text-muted);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/*************************/
|
||||
/** Additional Metadata **/
|
||||
/*************************/
|
||||
|
||||
.dataview.small-text {
|
||||
font-size: smaller;
|
||||
color: var(--text-muted);
|
||||
margin-left: 3px;
|
||||
}
|
||||
|
||||
.dataview.small-text::before {
|
||||
content: "(";
|
||||
}
|
||||
|
||||
.dataview.small-text::after {
|
||||
content: ")";
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"notification": true
|
||||
}
|
||||
|
|
@ -0,0 +1,455 @@
|
|||
/*
|
||||
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);
|
||||
|
||||
// src/main.ts
|
||||
var main_exports = {};
|
||||
__export(main_exports, {
|
||||
default: () => MathInCalloutPlugin
|
||||
});
|
||||
module.exports = __toCommonJS(main_exports);
|
||||
var import_obsidian3 = require("obsidian");
|
||||
|
||||
// src/decorations.ts
|
||||
var import_state2 = require("@codemirror/state");
|
||||
var import_language2 = require("@codemirror/language");
|
||||
var import_view = require("@codemirror/view");
|
||||
var import_obsidian = require("obsidian");
|
||||
|
||||
// src/quote-field.ts
|
||||
var import_language = require("@codemirror/language");
|
||||
var import_state = require("@codemirror/state");
|
||||
var QuoteInfo = class extends import_state.RangeValue {
|
||||
/**
|
||||
* @param level The level of the blockquote/callout (i.e. the number of ">"s).
|
||||
* @param isBaseCallout True if this is a callout or this is nested inside a callout of level 1.
|
||||
*/
|
||||
constructor(level, isBaseCallout) {
|
||||
super();
|
||||
this.level = level;
|
||||
this.isBaseCallout = isBaseCallout;
|
||||
this.pattern = this.level > 0 ? new RegExp(`^( {0,3}>){${this.level}}`) : null;
|
||||
}
|
||||
eq(other) {
|
||||
return this.level === other.level && this.isBaseCallout === other.isBaseCallout;
|
||||
}
|
||||
/** Remove ">"s that is misrecognized as inequality signs. */
|
||||
correctMath(math) {
|
||||
if (!this.pattern) return math;
|
||||
const lines = math.split("\n");
|
||||
const corrected = lines.map((line) => {
|
||||
const match = line.match(this.pattern);
|
||||
return match ? line.slice(match[0].length) : line;
|
||||
}).join("\n");
|
||||
return corrected;
|
||||
}
|
||||
getBlockquoteBorderPositions(state, from, to) {
|
||||
const positions = [];
|
||||
const lineBegin = state.doc.lineAt(from);
|
||||
const lineEnd = state.doc.lineAt(to);
|
||||
for (let i = lineBegin.number; i <= lineEnd.number; i++) {
|
||||
const line = state.doc.line(i);
|
||||
let start = 0;
|
||||
for (let i2 = 0; i2 < this.level; i2++) {
|
||||
const index = line.text.indexOf(">", start);
|
||||
if (index === -1) continue;
|
||||
positions.push({ pos: index + line.from, first: i2 === 0 });
|
||||
start = index + 1;
|
||||
}
|
||||
}
|
||||
return positions;
|
||||
}
|
||||
};
|
||||
var quoteInfoField = import_state.StateField.define({
|
||||
create(state) {
|
||||
return parseBlockquotes(state);
|
||||
},
|
||||
update(prev, tr) {
|
||||
return tr.docChanged ? parseBlockquotes(tr.state) : prev;
|
||||
}
|
||||
});
|
||||
function parseBlockquotes(state) {
|
||||
const tree = (0, import_language.syntaxTree)(state);
|
||||
const builder = new import_state.RangeSetBuilder();
|
||||
let level = 0;
|
||||
let from = -1;
|
||||
let isBaseCallout = false;
|
||||
for (let i = 1; i <= state.doc.lines; i++) {
|
||||
const line = state.doc.line(i);
|
||||
const match = line.text.match(/^( {0,3}>)+/);
|
||||
const newLevel = match ? match[0].split(">").length - 1 : 0;
|
||||
if (newLevel !== level) {
|
||||
if (level === 0 && newLevel === 1) {
|
||||
isBaseCallout = tree.cursorAt(line.from, 1).node.name.contains("-callout");
|
||||
}
|
||||
if (level > 0 && from >= 0) {
|
||||
builder.add(from, line.from, new QuoteInfo(level, isBaseCallout));
|
||||
}
|
||||
level = newLevel;
|
||||
from = line.from;
|
||||
}
|
||||
}
|
||||
if (level > 0 && from >= 0) {
|
||||
builder.add(from, state.doc.length, new QuoteInfo(level, isBaseCallout));
|
||||
}
|
||||
return builder.finish();
|
||||
}
|
||||
|
||||
// src/utils.ts
|
||||
function getQuoteInfo(state, pos) {
|
||||
const field = state.field(quoteInfoField, false);
|
||||
if (!field) return null;
|
||||
const { from, to, value } = field.iter(pos);
|
||||
if (from <= pos && pos <= to) return value;
|
||||
return null;
|
||||
}
|
||||
function hasOverlap(range, start, to) {
|
||||
return range.from <= to && range.to >= start;
|
||||
}
|
||||
function rangesHaveOverlap(ranges, start, to) {
|
||||
for (const range of ranges) {
|
||||
if (hasOverlap(range, start, to))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// src/decorations.ts
|
||||
var createCalloutDecorator = (BuiltInMathWidget) => import_state2.StateField.define({
|
||||
create() {
|
||||
return import_view.Decoration.none;
|
||||
},
|
||||
update(prev, tr) {
|
||||
const { state } = tr;
|
||||
const view = state.field(import_obsidian.editorEditorField);
|
||||
if (view.composing) return prev.map(tr.changes);
|
||||
const isSourceMode = !state.field(import_obsidian.editorLivePreviewField);
|
||||
const doc = state.doc;
|
||||
const ranges = view.hasFocus ? state.selection.ranges : [];
|
||||
const tree = (0, import_language2.syntaxTree)(state);
|
||||
const decorations = [];
|
||||
const makeDeco = (decorationSpec, from, to) => {
|
||||
if (decorationSpec.block && to === doc.length) decorationSpec.inclusiveEnd = false;
|
||||
return import_view.Decoration.replace(decorationSpec);
|
||||
};
|
||||
let mathBegin = -1;
|
||||
let mathContentBegin = -1;
|
||||
let block = false;
|
||||
tree.iterate({
|
||||
enter(node) {
|
||||
if (node.name.contains("formatting-math-begin")) {
|
||||
mathBegin = node.from;
|
||||
mathContentBegin = node.to;
|
||||
block = node.name.contains("math-block");
|
||||
} else if (mathBegin !== -1) {
|
||||
if (node.name.contains("formatting-math-end")) {
|
||||
const mathContentEnd = node.from;
|
||||
const mathEnd = node.to;
|
||||
let math = doc.sliceString(mathContentBegin, mathContentEnd);
|
||||
const quote = getQuoteInfo(state, mathContentBegin);
|
||||
if (quote) math = quote.correctMath(math);
|
||||
const widget = new BuiltInMathWidget(math, block);
|
||||
if (quote) widget.markAsCorrected();
|
||||
widget.setPos(
|
||||
block && math.startsWith("\n") ? mathContentBegin + 1 : mathContentBegin,
|
||||
block && math.endsWith("\n") ? mathContentEnd - 1 : mathContentEnd
|
||||
);
|
||||
const overlap = rangesHaveOverlap(ranges, mathBegin, mathEnd);
|
||||
if (block && quote && quote.level > 0) {
|
||||
if (isSourceMode || quote.isBaseCallout || overlap) {
|
||||
const lineBegin = state.doc.lineAt(mathBegin);
|
||||
const lineEnd = state.doc.lineAt(mathEnd);
|
||||
for (let i = lineBegin.number; i <= lineEnd.number; i++) {
|
||||
const line = state.doc.line(i);
|
||||
decorations.push(
|
||||
import_view.Decoration.line({ class: "HyperMD-quote" }).range(line.from, line.from)
|
||||
);
|
||||
const transparent = !isSourceMode && !rangesHaveOverlap(ranges, line.from, line.to);
|
||||
let start = 0;
|
||||
for (let i2 = 0; i2 < quote.level; i2++) {
|
||||
const index = line.text.indexOf(">", start);
|
||||
if (index === -1) continue;
|
||||
const pos = index + line.from;
|
||||
if (i2 === 0) {
|
||||
decorations.push(
|
||||
import_view.Decoration.mark({ class: transparent ? "cm-transparent" : "cm-quote cm-formatting-quote" }).range(pos, pos + 1)
|
||||
);
|
||||
} else {
|
||||
decorations.push(
|
||||
import_view.Decoration.mark({ class: transparent ? "cm-blockquote-border cm-transparent" : "cm-quote cm-formatting-quote" }).range(pos, pos + 1)
|
||||
);
|
||||
}
|
||||
start = index + 1;
|
||||
}
|
||||
}
|
||||
if (lineEnd.from < mathContentEnd && lineEnd.text.slice(0, mathContentEnd - lineEnd.from).split(">").every((s) => !s.trim())) {
|
||||
decorations.push(
|
||||
import_view.Decoration.mark({ class: "cancel-cm-math" }).range(lineEnd.from, mathContentEnd)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!isSourceMode && (quote == null ? void 0 : quote.isBaseCallout)) {
|
||||
if (overlap) {
|
||||
if (block) {
|
||||
decorations.push(
|
||||
import_view.Decoration.widget({
|
||||
widget,
|
||||
block: false,
|
||||
side: 1
|
||||
}).range(mathEnd, mathEnd)
|
||||
);
|
||||
}
|
||||
} else {
|
||||
decorations.push(
|
||||
makeDeco({
|
||||
widget,
|
||||
block: false
|
||||
}, mathBegin, mathEnd).range(mathBegin, mathEnd)
|
||||
);
|
||||
}
|
||||
}
|
||||
mathBegin = -1;
|
||||
mathContentBegin = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
return import_view.Decoration.set(decorations, true);
|
||||
},
|
||||
provide(field) {
|
||||
return import_view.EditorView.decorations.from(field);
|
||||
}
|
||||
});
|
||||
|
||||
// src/patch-widget-type.ts
|
||||
var import_view2 = require("@codemirror/view");
|
||||
var import_view3 = require("@codemirror/view");
|
||||
|
||||
// node_modules/.pnpm/monkey-around@3.0.0/node_modules/monkey-around/dist/index.mjs
|
||||
function around(obj, factories) {
|
||||
const removers = Object.keys(factories).map((key) => around1(obj, key, factories[key]));
|
||||
return removers.length === 1 ? removers[0] : function() {
|
||||
removers.forEach((r) => r());
|
||||
};
|
||||
}
|
||||
function around1(obj, method, createWrapper) {
|
||||
const inherited = obj[method], hadOwn = obj.hasOwnProperty(method), original = hadOwn ? inherited : function() {
|
||||
return Object.getPrototypeOf(obj)[method].apply(this, arguments);
|
||||
};
|
||||
let current = createWrapper(original);
|
||||
if (inherited)
|
||||
Object.setPrototypeOf(current, inherited);
|
||||
Object.setPrototypeOf(wrapper, current);
|
||||
obj[method] = wrapper;
|
||||
return remove;
|
||||
function wrapper(...args) {
|
||||
if (current === original && obj[method] === wrapper)
|
||||
remove();
|
||||
return current.apply(this, args);
|
||||
}
|
||||
function remove() {
|
||||
if (obj[method] === wrapper) {
|
||||
if (hadOwn)
|
||||
obj[method] = original;
|
||||
else
|
||||
delete obj[method];
|
||||
}
|
||||
if (current === original)
|
||||
return;
|
||||
current = original;
|
||||
Object.setPrototypeOf(wrapper, inherited || Function);
|
||||
}
|
||||
}
|
||||
|
||||
// src/patch-widget-type.ts
|
||||
var patchDecoration = (plugin, onPatched) => {
|
||||
const uninstaller = around(import_view2.Decoration, {
|
||||
replace(old) {
|
||||
return function(spec) {
|
||||
if (!plugin.patchSucceeded && spec.widget) {
|
||||
plugin.patchSucceeded = patchMathWidget(plugin, spec.widget);
|
||||
if (plugin.patchSucceeded) {
|
||||
onPatched(spec.widget.constructor);
|
||||
uninstaller();
|
||||
}
|
||||
}
|
||||
return old.call(this, spec);
|
||||
};
|
||||
},
|
||||
widget(old) {
|
||||
return function(spec) {
|
||||
if (!plugin.patchSucceeded && spec.widget) {
|
||||
plugin.patchSucceeded = patchMathWidget(plugin, spec.widget);
|
||||
if (plugin.patchSucceeded) {
|
||||
onPatched(spec.widget.constructor);
|
||||
uninstaller();
|
||||
}
|
||||
}
|
||||
return old.call(this, spec);
|
||||
};
|
||||
}
|
||||
});
|
||||
plugin.register(uninstaller);
|
||||
};
|
||||
function patchMathWidget(plugin, widget) {
|
||||
const proto = widget.constructor.prototype;
|
||||
const isObsidianBuiltinMathWidget = Object.hasOwn(widget, "math") && Object.hasOwn(widget, "block") && "initDOM" in proto && "render" in proto && "setPos" in proto && "hookClickHandler" in proto && "addEditButton" in proto && "resizeWidget" in proto;
|
||||
if (isObsidianBuiltinMathWidget) {
|
||||
plugin.register(around(proto, {
|
||||
/** Newly added by this plugin: Get a quote info for the position of this math widget. */
|
||||
getQuoteInfo() {
|
||||
return function() {
|
||||
return this.view ? getQuoteInfo(this.view.state, this.start - 1) : null;
|
||||
};
|
||||
},
|
||||
/** Newly added by this plugin */
|
||||
markAsCorrected() {
|
||||
return function() {
|
||||
this.corrected = true;
|
||||
};
|
||||
},
|
||||
/**
|
||||
* Newly added by this plugin: Correct the LaTeX source code (this.math)
|
||||
* based on the quote info, i.e. remove an appropreate number of ">"s
|
||||
* at the head of each line.
|
||||
*/
|
||||
correctIfNecessary() {
|
||||
return function() {
|
||||
if (this.block && !this.corrected) {
|
||||
const quote = this.getQuoteInfo();
|
||||
if (quote) {
|
||||
this.math = quote.correctMath(this.math);
|
||||
this.markAsCorrected();
|
||||
}
|
||||
}
|
||||
};
|
||||
},
|
||||
eq(old) {
|
||||
return function(other) {
|
||||
if (this.block && other.block) {
|
||||
if (this.view && !other.view) other.view = this.view;
|
||||
if (other.view && !this.view) this.view = other.view;
|
||||
if (!this.corrected) this.correctIfNecessary();
|
||||
if (!other.corrected) other.correctIfNecessary();
|
||||
}
|
||||
return old.call(this, other);
|
||||
};
|
||||
},
|
||||
initDOM(old) {
|
||||
return function(view) {
|
||||
if (!this.view) this.view = view;
|
||||
return old.call(this, view);
|
||||
};
|
||||
},
|
||||
patchDOM(old) {
|
||||
return function(dom, view) {
|
||||
if (!this.view) this.view = view;
|
||||
return old.call(this, dom, view);
|
||||
};
|
||||
},
|
||||
render(old) {
|
||||
return function(dom) {
|
||||
this.correctIfNecessary();
|
||||
old.call(this, dom);
|
||||
};
|
||||
}
|
||||
}));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// src/settings.ts
|
||||
var import_obsidian2 = require("obsidian");
|
||||
var DEFAULT_SETTINGS = {
|
||||
notification: true
|
||||
};
|
||||
var MathInCalloutSettingTab = class extends import_obsidian2.PluginSettingTab {
|
||||
constructor(plugin) {
|
||||
super(plugin.app, plugin);
|
||||
this.plugin = plugin;
|
||||
}
|
||||
display() {
|
||||
this.containerEl.empty();
|
||||
new import_obsidian2.Setting(this.containerEl).setDesc("If something is not working, type some math expression outside callouts in Live Preview.");
|
||||
new import_obsidian2.Setting(this.containerEl).setName("Show setup guidance notifications").addToggle((toggle) => {
|
||||
toggle.setValue(this.plugin.settings.notification).onChange(async (value) => {
|
||||
this.plugin.settings.notification = value;
|
||||
await this.plugin.saveSettings();
|
||||
this.plugin.showNotReadyNotice();
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// src/main.ts
|
||||
var MathInCalloutPlugin = class extends import_obsidian3.Plugin {
|
||||
constructor() {
|
||||
super(...arguments);
|
||||
this.notReadyNotice = null;
|
||||
}
|
||||
async onload() {
|
||||
await this.loadSettings();
|
||||
await this.saveSettings();
|
||||
this.addSettingTab(new MathInCalloutSettingTab(this));
|
||||
this.patchSucceeded = false;
|
||||
this.registerEditorExtension(quoteInfoField);
|
||||
this.app.workspace.onLayoutReady(() => setTimeout(() => this.showNotReadyNotice(), 1e3));
|
||||
patchDecoration(this, (builtInMathWidget) => {
|
||||
setTimeout(() => {
|
||||
if (this.notReadyNotice) {
|
||||
this.notReadyNotice.hide();
|
||||
this.notReadyNotice = null;
|
||||
if (this.settings.notification) {
|
||||
new import_obsidian3.Notice(`${this.manifest.name}: You're ready! (Note: this notifiction can be turned off in the plugin setting.)`, 1500);
|
||||
}
|
||||
}
|
||||
this.registerEditorExtension(createCalloutDecorator(builtInMathWidget));
|
||||
this.rerender();
|
||||
}, 100);
|
||||
});
|
||||
}
|
||||
rerender() {
|
||||
this.app.workspace.iterateAllLeaves((leaf) => {
|
||||
if (leaf.view instanceof import_obsidian3.MarkdownView) {
|
||||
const eState = leaf.view.getEphemeralState();
|
||||
const editor = leaf.view.editor;
|
||||
editor.setValue(editor.getValue());
|
||||
leaf.view.setEphemeralState(eState);
|
||||
}
|
||||
});
|
||||
}
|
||||
showNotReadyNotice() {
|
||||
if (!this.patchSucceeded && this.settings.notification) {
|
||||
this.notReadyNotice = new import_obsidian3.Notice(`${this.manifest.name}: You're not ready yet. In Live Preview, type some math expression outside callouts.`, 0);
|
||||
}
|
||||
}
|
||||
async loadSettings() {
|
||||
this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData());
|
||||
}
|
||||
async saveSettings() {
|
||||
await this.saveData(this.settings);
|
||||
}
|
||||
};
|
||||
|
||||
/* nosourcemap */
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"id": "math-in-callout",
|
||||
"name": "Better Math in Callouts & Blockquotes",
|
||||
"version": "0.3.8",
|
||||
"minAppVersion": "1.9.0",
|
||||
"description": "Add better Live Preview support for math rendering inside callouts & blockquotes.",
|
||||
"author": "Ryota Ushio",
|
||||
"authorUrl": "https://github.com/RyotaUshio",
|
||||
"fundingUrl": {
|
||||
"GitHub Sponsor": "https://github.com/sponsors/RyotaUshio",
|
||||
"Buy Me a Coffee": "https://www.buymeacoffee.com/ryotaushio",
|
||||
"Ko-fi": "https://ko-fi.com/ryotaushio"
|
||||
},
|
||||
"isDesktopOnly": false
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
/* .cm-math:has(.cm-quote.cm-formatting-quote) */
|
||||
/* .cm-math:has(.cm-blockquote-border) */
|
||||
/* { */
|
||||
/* all: unset; */
|
||||
/* } */
|
||||
|
||||
.cm-math:has( .cancel-cm-math) {
|
||||
all: unset;
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"useCloud": false,
|
||||
"wolframScriptPath": "/usr/bin/wolframscript"
|
||||
}
|
||||
|
|
@ -0,0 +1,881 @@
|
|||
/*
|
||||
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);
|
||||
|
||||
// src/main.ts
|
||||
var main_exports = {};
|
||||
__export(main_exports, {
|
||||
default: () => MathematicaPlot
|
||||
});
|
||||
module.exports = __toCommonJS(main_exports);
|
||||
|
||||
// src/modal/menus/graph/helpers.ts
|
||||
var import_obsidian = require("obsidian");
|
||||
var renderOptions = (optionsFields) => (el, settings, options) => {
|
||||
el.createEl("h5", {
|
||||
text: `Plot Options ${settings.raster.dim}`
|
||||
});
|
||||
Object.entries(optionsFields).forEach(
|
||||
(entry, index) => new import_obsidian.Setting(index === 0 ? el : el.createDiv()).setName(entry[1].name).setDesc(entry[1].desc).addText(
|
||||
(component) => component.setValue(options[entry[0]] || "").onChange((value) => {
|
||||
options[entry[0]] = value;
|
||||
})
|
||||
)
|
||||
);
|
||||
new import_obsidian.Setting(el.createDiv()).setName("Others").setDesc(
|
||||
"Add any other option for the plot following the mathematica syntax. For example: ClippingStyle -> Red, ScalingFunctions -> Reverse"
|
||||
).addTextArea(
|
||||
(component) => component.setValue(options.others || "").onChange((value) => {
|
||||
options.others = value;
|
||||
})
|
||||
);
|
||||
};
|
||||
var renderIntervalForm = (el, variable, interval, desc = { min: "", max: "" }) => {
|
||||
new import_obsidian.Setting(el.createDiv()).setName(`${variable} min`).setDesc(desc.min).addText(
|
||||
(component) => component.setValue(interval.min).onChange((value) => {
|
||||
interval.min = value;
|
||||
})
|
||||
);
|
||||
new import_obsidian.Setting(el.createDiv()).setName(`${variable} max`).setDesc(desc.max).addText(
|
||||
(component) => component.setValue(interval.max).onChange((value) => {
|
||||
interval.max = value;
|
||||
})
|
||||
);
|
||||
};
|
||||
var defaultGraphType = () => ({
|
||||
plot: {
|
||||
expression: "",
|
||||
plotRange: { x: { min: "", max: "" }, y: { min: "", max: "" } }
|
||||
},
|
||||
parametricPlot: {
|
||||
components: [],
|
||||
type: "curve",
|
||||
domain: { u: { min: "", max: "" }, v: { min: "", max: "" } }
|
||||
},
|
||||
regionPlot: {
|
||||
expression: "",
|
||||
domain: {
|
||||
x: { min: "", max: "" },
|
||||
y: { min: "", max: "" },
|
||||
z: { min: "", max: "" }
|
||||
}
|
||||
},
|
||||
contourPlot: {
|
||||
expression: "",
|
||||
domain: {
|
||||
x: { min: "", max: "" },
|
||||
y: { min: "", max: "" },
|
||||
z: { min: "", max: "" }
|
||||
}
|
||||
},
|
||||
vectorPlot: {
|
||||
components: [],
|
||||
domain: {
|
||||
x: { min: "", max: "" },
|
||||
y: { min: "", max: "" },
|
||||
z: { min: "", max: "" }
|
||||
}
|
||||
}
|
||||
});
|
||||
var defaultGraph = (id, type) => ({
|
||||
id,
|
||||
type,
|
||||
options: {},
|
||||
...defaultGraphType()
|
||||
});
|
||||
var graphTypesOptions = {
|
||||
plot: "Plot",
|
||||
parametricPlot: "Parametric Plot",
|
||||
regionPlot: "Region Plot",
|
||||
contourPlot: "Contour Plot",
|
||||
vectorPlot: "Vector Plot"
|
||||
};
|
||||
var graphTypeDescription = {
|
||||
plot: "Scalar functions",
|
||||
parametricPlot: "Curves or Surfaces given in parametric form",
|
||||
regionPlot: "Regions defined by inequalities",
|
||||
contourPlot: "Contour plot for level sets",
|
||||
vectorPlot: "Plot vectors from a vector field function"
|
||||
};
|
||||
|
||||
// src/main.ts
|
||||
var import_obsidian11 = require("obsidian");
|
||||
|
||||
// src/modal/menus/general.ts
|
||||
var import_obsidian2 = require("obsidian");
|
||||
var generalSettings = {
|
||||
axes: {
|
||||
desc: "Whether to draw axes",
|
||||
name: "Axes"
|
||||
},
|
||||
axesLabel: {
|
||||
desc: "",
|
||||
name: "Axes Label"
|
||||
},
|
||||
plotLabel: {
|
||||
name: "Label",
|
||||
desc: "Overall label for the plot"
|
||||
},
|
||||
frame: {
|
||||
desc: "Whether to put a frame around the plot",
|
||||
name: "Frame"
|
||||
},
|
||||
frameLabel: {
|
||||
name: "Frame Label"
|
||||
},
|
||||
boxed: {
|
||||
desc: "Whether to draw the bounding box for 3d graphics",
|
||||
name: "Boxed"
|
||||
}
|
||||
};
|
||||
var renderGeneralSettings = (el, modal) => {
|
||||
const settings = modal.settings;
|
||||
el.createEl("h5", { text: "General settings" });
|
||||
Object.entries(generalSettings).forEach(
|
||||
(setting, index) => {
|
||||
const fieldName = setting[0];
|
||||
const value = setting[1];
|
||||
const elToDisplay = index == 0 ? el : el.createDiv();
|
||||
new import_obsidian2.Setting(elToDisplay).addText(
|
||||
(text) => text.setValue(settings.general[fieldName] || "").onChange(
|
||||
(value2) => settings.general[fieldName] = value2
|
||||
)
|
||||
).setName(value.name).setDesc(value.desc || "");
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
// src/utils/plot.ts
|
||||
var import_util = require("util");
|
||||
var import_child_process = require("child_process");
|
||||
|
||||
// src/utils/parsers.ts
|
||||
var mathematicaOptionsParser = {
|
||||
plotLabels: (value) => `PlotLabels -> ${value}`,
|
||||
plotStyle: (value) => `PlotStyle -> ${value}`,
|
||||
filling: (value) => `Filling -> ${value}`,
|
||||
fillingStyle: (value) => `FillingStyle -> ${value}`,
|
||||
boxed: (value) => `Boxed -> ${value}`,
|
||||
boundaryStyle: (value) => `BoundaryStyle -> ${value}`,
|
||||
axes: (value) => `Axes -> ${value}`,
|
||||
axesLabel: (value) => `AxesLabel -> ${value}`,
|
||||
frame: (value) => `Frame -> ${value}`,
|
||||
frameLabel: (value) => `FrameLabel -> ${value}`,
|
||||
plotLegends: (value) => `PlotLegends -> ${value}`,
|
||||
plotLabel: (value) => `PlotLabel -> ${value}`,
|
||||
others: (value) => value
|
||||
};
|
||||
var parseOptions = (options) => {
|
||||
const opts = Object.entries(options).filter((opt) => opt[1]).map(
|
||||
(opt) => mathematicaOptionsParser[opt[0]](opt[1])
|
||||
).join();
|
||||
if (!opts)
|
||||
return "";
|
||||
else
|
||||
return `,${opts}`;
|
||||
};
|
||||
var mathematicaPlotParser2D = {
|
||||
parametricPlot: (parametricPlot, opts) => {
|
||||
const {
|
||||
components,
|
||||
domain: { u }
|
||||
} = parametricPlot;
|
||||
const options = parseOptions(opts);
|
||||
return `ParametricPlot[{${[
|
||||
components[0],
|
||||
components[1]
|
||||
].join()}}, {u, ${u.min}, ${u.max}} ${options}]`;
|
||||
},
|
||||
plot: (plot, opts) => {
|
||||
const { expression, plotRange } = plot;
|
||||
const options = parseOptions(opts);
|
||||
return `Plot[${expression}, {x, ${plotRange.x.min}, ${plotRange.x.max}} ${options}]`;
|
||||
},
|
||||
regionPlot: (regionPlot, opts) => {
|
||||
const {
|
||||
expression,
|
||||
domain: { x, y }
|
||||
} = regionPlot;
|
||||
const options = parseOptions(opts);
|
||||
return `RegionPlot[${expression}, {x, ${x.min}, ${x.max}}, {y, ${y.min}, ${y.max}} ${options}]`;
|
||||
},
|
||||
contourPlot: (contourPlot, opts) => {
|
||||
const {
|
||||
expression,
|
||||
domain: { x, y }
|
||||
} = contourPlot;
|
||||
const options = parseOptions(opts);
|
||||
return `ContourPlot[${expression}, {x, ${x.min}, ${x.max}}, {y, ${y.min}, ${y.max}} ${options}]`;
|
||||
},
|
||||
vectorPlot: (vectorPlot, opts) => {
|
||||
const { components, domain } = vectorPlot;
|
||||
const { x, y } = domain;
|
||||
const options = parseOptions(opts);
|
||||
return `VectorPlot[{${[components[0], components[1]].join()}}, {x, ${x.min}, ${x.max}}, {y, ${y.min}, ${y.max}} ${options}]`;
|
||||
}
|
||||
};
|
||||
var mathematicaPlotParser3D = {
|
||||
parametricPlot: (parametricPlot, opts) => {
|
||||
const {
|
||||
components,
|
||||
domain: { u, v },
|
||||
type
|
||||
} = parametricPlot;
|
||||
const options = parseOptions(opts);
|
||||
const base = (v2) => `ParametricPlot3D[{${components.join()}}, {u, ${u.min}, ${u.max}} ${v2} ${options}]`;
|
||||
if (type === "surface")
|
||||
return base(`, {v, ${v.min}, ${v.max}}`);
|
||||
return base("");
|
||||
},
|
||||
plot: (plot, opts) => {
|
||||
const { expression, plotRange } = plot;
|
||||
const options = parseOptions(opts);
|
||||
return `Plot3D[${expression}, {x, ${plotRange.x.min}, ${plotRange.x.max}}, {y, ${plotRange.y.min}, ${plotRange.y.max}} ${options}]`;
|
||||
},
|
||||
regionPlot: (regionPlot, opts) => {
|
||||
const {
|
||||
expression,
|
||||
domain: { x, y, z }
|
||||
} = regionPlot;
|
||||
const options = parseOptions(opts);
|
||||
return `RegionPlot3D[${expression}, {x, ${x.min}, ${x.max}}, {y, ${y.min}, ${y.max}}, {z, ${z.min}, ${z.max}} ${options}]`;
|
||||
},
|
||||
contourPlot: (contourPlot, opts) => {
|
||||
const {
|
||||
expression,
|
||||
domain: { x, y, z }
|
||||
} = contourPlot;
|
||||
const options = parseOptions(opts);
|
||||
return `ContourPlot3D[${expression}, {x, ${x.min}, ${x.max}}, {y, ${y.min}, ${y.max}}, {z, ${z.min}, ${z.max}} ${options}]`;
|
||||
},
|
||||
vectorPlot: (vectorPlot, opts) => {
|
||||
const { components, domain } = vectorPlot;
|
||||
const { x, y, z } = domain;
|
||||
const options = parseOptions(opts);
|
||||
return `VectorPlot3D[{${components.join()}}, {x, ${x.min}, ${x.max}}, {y, ${y.min}, ${y.max}}, {z, ${z.min}, ${z.max}}${options}]`;
|
||||
}
|
||||
};
|
||||
var rasterizeParser = (code, settings) => {
|
||||
var _a, _b, _c, _d;
|
||||
const generalOptions = parseOptions(settings.general);
|
||||
return `Rasterize[Show[${code} ${generalOptions}], ImageSize -> {${((_b = (_a = settings.raster) == null ? void 0 : _a.size) == null ? void 0 : _b.width) || 250}, ${((_d = (_c = settings.raster) == null ? void 0 : _c.size) == null ? void 0 : _d.height) || "Automatic"}}, Background -> ${settings.raster.background}, AspectRatio -> Automatic]`;
|
||||
};
|
||||
var mathematicaParser2D = (settings) => {
|
||||
const parsedGraphs = settings.graphs.map(
|
||||
(graph) => mathematicaPlotParser2D[graph.type](graph[graph.type], graph.options)
|
||||
);
|
||||
return rasterizeParser(parsedGraphs.join(), settings);
|
||||
};
|
||||
var mathematicaParser3D = (settings) => {
|
||||
const parsedGraphs = settings.graphs.map(
|
||||
(graph) => mathematicaPlotParser3D[graph.type](graph[graph.type], graph.options)
|
||||
);
|
||||
return rasterizeParser(parsedGraphs.join(), settings);
|
||||
};
|
||||
|
||||
// src/utils/plot.ts
|
||||
var import_obsidian3 = require("obsidian");
|
||||
var isValidBase64 = (str) => {
|
||||
try {
|
||||
window.atob(str);
|
||||
return true;
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
var getBase64Plot = async (plot, { useCloud, wolframScriptPath }) => {
|
||||
try {
|
||||
const { stdout, stderr } = await (0, import_util.promisify)(import_child_process.exec)(
|
||||
`${wolframScriptPath ? '"' + wolframScriptPath + '"' : "wolframscript"} ${useCloud ? "--cloud" : ""} --code "ExportString[${plot}, {\\"Base64\\", \\"PNG\\"}]"`
|
||||
);
|
||||
if (stderr)
|
||||
return { error: stderr, base64: "" };
|
||||
if (!isValidBase64(stdout))
|
||||
return { error: stdout, base64: "" };
|
||||
return { error: "", base64: stdout };
|
||||
} catch (err) {
|
||||
return { error: err, base64: "" };
|
||||
}
|
||||
};
|
||||
var parseCodeBlock = (code) => {
|
||||
try {
|
||||
const settings = (0, import_obsidian3.parseYaml)(code);
|
||||
let parsedCode = "";
|
||||
if (settings.raster.dim == "2D")
|
||||
parsedCode = mathematicaParser2D(settings);
|
||||
if (settings.raster.dim == "3D")
|
||||
parsedCode = mathematicaParser3D(settings);
|
||||
return { code: parsedCode.replace(/\s/g, ""), error: "" };
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
return { error: err.message, code: "" };
|
||||
}
|
||||
};
|
||||
var buildBase64URL = (base64, format) => `data:image/${format};base64,${base64}`;
|
||||
|
||||
// src/graphRender.ts
|
||||
var renderGraph = async (el, source, { useCloud, wolframScriptPath }) => {
|
||||
el.empty();
|
||||
el.textContent = "Loading...";
|
||||
const { code, error: error1 } = parseCodeBlock(source);
|
||||
if (error1)
|
||||
return el.textContent = error1;
|
||||
const { base64, error: error2 } = await getBase64Plot(code, {
|
||||
useCloud,
|
||||
wolframScriptPath
|
||||
});
|
||||
if (error2)
|
||||
return el.textContent = error2;
|
||||
el.empty();
|
||||
const src = buildBase64URL(base64, "png");
|
||||
const img = document.createElement("img");
|
||||
img.src = src;
|
||||
el.appendChild(img);
|
||||
};
|
||||
|
||||
// src/modal/menus/graphPreview.ts
|
||||
var renderGraphPreview = async (el, { settings, plugin }) => {
|
||||
const content = el.createDiv();
|
||||
const graphEl = el.createDiv();
|
||||
content.createEl("h5", { text: "Graph preview" });
|
||||
content.createEl("p", { text: "A preview of what your graph looks like" });
|
||||
el.createEl("button", {
|
||||
text: "Render preview",
|
||||
attr: { style: "width: 100%;" }
|
||||
}).onClickEvent((e) => {
|
||||
e.preventDefault();
|
||||
renderGraph(graphEl, JSON.stringify(settings), { ...plugin.settings });
|
||||
});
|
||||
};
|
||||
|
||||
// src/modal/menus/graph/settings2d.ts
|
||||
var import_obsidian4 = require("obsidian");
|
||||
var renderPlotSettings = (el, graph) => {
|
||||
new import_obsidian4.Setting(el.createDiv()).setName("f(x) = ").setDesc("You can also provide a list of functions {f1, f2, ...}").addTextArea(
|
||||
(component) => component.setValue(graph.expression).onChange((value) => {
|
||||
graph.expression = value;
|
||||
})
|
||||
);
|
||||
renderIntervalForm(el, "x", graph.plotRange.x);
|
||||
};
|
||||
var renderParametricPlotSettings = (el, graph) => {
|
||||
new import_obsidian4.Setting(el.createDiv()).setName("g1(u) = ").addTextArea(
|
||||
(component) => component.setValue(graph.components[0]).onChange((value) => {
|
||||
graph.components[0] = value;
|
||||
})
|
||||
);
|
||||
new import_obsidian4.Setting(el.createDiv()).setName("g2(u) = ").addTextArea(
|
||||
(component) => component.setValue(graph.components[1]).onChange((value) => {
|
||||
graph.components[1] = value;
|
||||
})
|
||||
);
|
||||
renderIntervalForm(el, "u", graph.domain.u);
|
||||
};
|
||||
var renderRegionPlotSettings = (el, graph) => {
|
||||
new import_obsidian4.Setting(el.createDiv()).setName("expression (x,y)").setDesc("You can also provide a list of expressions {e1, e2, ...}").addTextArea(
|
||||
(component) => component.setValue(graph.expression).onChange((value) => {
|
||||
graph.expression = value;
|
||||
})
|
||||
);
|
||||
renderIntervalForm(el, "x", graph.domain.x);
|
||||
renderIntervalForm(el, "y", graph.domain.y);
|
||||
};
|
||||
var renderContourPlotSettings = (el, graph) => {
|
||||
new import_obsidian4.Setting(el.createDiv()).setName("expression (x,y)").setDesc("You can also provide a list of expressions {e1, e2, ...}").addTextArea(
|
||||
(component) => component.setValue(graph.expression).onChange((value) => {
|
||||
graph.expression = value;
|
||||
})
|
||||
);
|
||||
renderIntervalForm(el, "x", graph.domain.x);
|
||||
renderIntervalForm(el, "y", graph.domain.y);
|
||||
};
|
||||
var renderVectorPlotSettings = (el, graph) => {
|
||||
new import_obsidian4.Setting(el.createDiv()).setName("Vx(x,y) = ").addTextArea(
|
||||
(component) => component.setValue(graph.components[0]).onChange((value) => {
|
||||
graph.components[0] = value;
|
||||
})
|
||||
);
|
||||
new import_obsidian4.Setting(el.createDiv()).setName("Vy(x,y) = ").addTextArea(
|
||||
(component) => component.setValue(graph.components[1]).onChange((value) => {
|
||||
graph.components[1] = value;
|
||||
})
|
||||
);
|
||||
renderIntervalForm(el, "x", graph.domain.x);
|
||||
renderIntervalForm(el, "y", graph.domain.y);
|
||||
};
|
||||
var optsFields2D = {
|
||||
plotLabels: {
|
||||
name: "Plot Labels",
|
||||
desc: "Labels to use for fields"
|
||||
},
|
||||
plotLegends: {
|
||||
name: "Plot Legends",
|
||||
desc: "Legends for fields"
|
||||
},
|
||||
plotStyle: {
|
||||
name: "Plot Style",
|
||||
desc: "Graphics directives to specify the style for each field"
|
||||
},
|
||||
filling: {
|
||||
name: "Filling",
|
||||
desc: "Filling to insert under each field"
|
||||
},
|
||||
fillingStyle: {
|
||||
name: "Filling Style",
|
||||
desc: "Style to use for filling "
|
||||
}
|
||||
};
|
||||
var renders2D = {
|
||||
renderSettings: {
|
||||
plot: renderPlotSettings,
|
||||
parametricPlot: renderParametricPlotSettings,
|
||||
regionPlot: renderRegionPlotSettings,
|
||||
contourPlot: renderContourPlotSettings,
|
||||
vectorPlot: renderVectorPlotSettings
|
||||
},
|
||||
renderOptions: renderOptions(optsFields2D)
|
||||
};
|
||||
|
||||
// src/modal/menus/graph/settings3d.ts
|
||||
var import_obsidian5 = require("obsidian");
|
||||
var renderPlotSettings2 = (el, graph) => {
|
||||
new import_obsidian5.Setting(el.createDiv()).setName("f(x, y) = ").setDesc("You can also provide a list of functions {f1, f2, ...}").addTextArea(
|
||||
(component) => component.setValue(graph.expression).onChange((value) => {
|
||||
graph.expression = value;
|
||||
})
|
||||
);
|
||||
renderIntervalForm(el, "x", graph.plotRange.x);
|
||||
renderIntervalForm(el, "y", graph.plotRange.y);
|
||||
};
|
||||
var renderParametricPlotSettings2 = (el, graph) => {
|
||||
const renderParametricCurveSettings = (el2) => {
|
||||
new import_obsidian5.Setting(el2.createDiv()).setName("g1(u) =").addTextArea(
|
||||
(component) => component.setValue(graph.components[0]).onChange((value) => {
|
||||
graph.components[0] = value;
|
||||
})
|
||||
);
|
||||
new import_obsidian5.Setting(el2.createDiv()).setName("g2(u) =").addTextArea(
|
||||
(component) => component.setValue(graph.components[1]).onChange((value) => {
|
||||
graph.components[1] = value;
|
||||
})
|
||||
);
|
||||
new import_obsidian5.Setting(el2.createDiv()).setName("g3(u) =").addTextArea(
|
||||
(component) => component.setValue(graph.components[2]).onChange((value) => {
|
||||
graph.components[2] = value;
|
||||
})
|
||||
);
|
||||
renderIntervalForm(el2, "u", graph.domain.u);
|
||||
};
|
||||
const renderParametricSurfaceSettings = (el2) => {
|
||||
new import_obsidian5.Setting(el2.createDiv()).setName("g1(u, v) =").addTextArea(
|
||||
(component) => component.setValue(graph.components[0]).onChange((value) => {
|
||||
graph.components[0] = value;
|
||||
})
|
||||
);
|
||||
new import_obsidian5.Setting(el2.createDiv()).setName("g2(u, v) =").addTextArea(
|
||||
(component) => component.setValue(graph.components[1]).onChange((value) => {
|
||||
graph.components[1] = value;
|
||||
})
|
||||
);
|
||||
new import_obsidian5.Setting(el2.createDiv()).setName("g3(u, v) =").addTextArea(
|
||||
(component) => component.setValue(graph.components[2]).onChange((value) => {
|
||||
graph.components[2] = value;
|
||||
})
|
||||
);
|
||||
renderIntervalForm(el2, "u", graph.domain.u);
|
||||
renderIntervalForm(el2, "v", graph.domain.v);
|
||||
};
|
||||
new import_obsidian5.Setting(el.createDiv()).setName("Space").addDropdown(
|
||||
(component) => component.addOptions({
|
||||
curve: "Curve",
|
||||
surface: "Surface"
|
||||
}).setValue(graph.type).onChange((value) => {
|
||||
graph.type = value;
|
||||
renderSettings2();
|
||||
})
|
||||
);
|
||||
const settingsEl = el.createDiv();
|
||||
const renderSettings2 = () => {
|
||||
settingsEl.empty();
|
||||
if (graph.type === "curve")
|
||||
renderParametricCurveSettings(settingsEl);
|
||||
else
|
||||
renderParametricSurfaceSettings(settingsEl);
|
||||
};
|
||||
renderSettings2();
|
||||
};
|
||||
var renderRegionPlotSettings2 = (el, graph) => {
|
||||
new import_obsidian5.Setting(el.createDiv()).setName("expression (x,y,z)").setDesc("You can also provide a list of expressions {e1, e2, ...}").addTextArea(
|
||||
(component) => component.setValue(graph.expression).onChange((value) => {
|
||||
graph.expression = value;
|
||||
})
|
||||
);
|
||||
renderIntervalForm(el, "x", graph.domain.x);
|
||||
renderIntervalForm(el, "y", graph.domain.y);
|
||||
renderIntervalForm(el, "z", graph.domain.z);
|
||||
};
|
||||
var renderContourPlotSettings2 = (el, graph) => {
|
||||
new import_obsidian5.Setting(el.createDiv()).setName("expression (x,y,z)").setDesc("You can also provide a list of expressions {e1, e2, ...}").addTextArea(
|
||||
(component) => component.setValue(graph.expression).onChange((value) => {
|
||||
graph.expression = value;
|
||||
})
|
||||
);
|
||||
renderIntervalForm(el, "x", graph.domain.x);
|
||||
renderIntervalForm(el, "y", graph.domain.y);
|
||||
renderIntervalForm(el, "z", graph.domain.z);
|
||||
};
|
||||
var renderVectorPlotSettings2 = (el, graph) => {
|
||||
new import_obsidian5.Setting(el.createDiv()).setName("Vx(x,y) = ").addTextArea(
|
||||
(component) => component.setValue(graph.components[0]).onChange((value) => {
|
||||
graph.components[0] = value;
|
||||
})
|
||||
);
|
||||
new import_obsidian5.Setting(el.createDiv()).setName("Vy(x,y) = ").addTextArea(
|
||||
(component) => component.setValue(graph.components[1]).onChange((value) => {
|
||||
graph.components[1] = value;
|
||||
})
|
||||
);
|
||||
new import_obsidian5.Setting(el.createDiv()).setName("Vz(x,y) = ").addTextArea(
|
||||
(component) => component.setValue(graph.components[2]).onChange((value) => {
|
||||
graph.components[2] = value;
|
||||
})
|
||||
);
|
||||
renderIntervalForm(el, "x", graph.domain.x);
|
||||
renderIntervalForm(el, "y", graph.domain.y);
|
||||
renderIntervalForm(el, "z", graph.domain.z);
|
||||
};
|
||||
var optsFields = {
|
||||
...optsFields2D,
|
||||
boundaryStyle: {
|
||||
name: "Boundary Style",
|
||||
desc: "How to draw boundary lines for surfaces"
|
||||
}
|
||||
};
|
||||
var renders3D = {
|
||||
renderSettings: {
|
||||
plot: renderPlotSettings2,
|
||||
parametricPlot: renderParametricPlotSettings2,
|
||||
regionPlot: renderRegionPlotSettings2,
|
||||
contourPlot: renderContourPlotSettings2,
|
||||
vectorPlot: renderVectorPlotSettings2
|
||||
},
|
||||
renderOptions: renderOptions(optsFields)
|
||||
};
|
||||
|
||||
// src/modal/menus/graph/index.ts
|
||||
var import_obsidian6 = require("obsidian");
|
||||
var renderByDim = {
|
||||
"2D": renders2D,
|
||||
"3D": renders3D
|
||||
};
|
||||
var render = (el, modal, dim) => {
|
||||
const { renderSettings: renderSettings2, renderOptions: renderOptions3 } = renderByDim[dim];
|
||||
const graphs = modal.settings.graphs;
|
||||
if (!graphs.length)
|
||||
graphs[0] = defaultGraph("graph_0", "plot");
|
||||
let count = 0;
|
||||
let dropdown;
|
||||
new import_obsidian6.Setting(el).setName("Graphs").addDropdown((component) => {
|
||||
dropdown = component;
|
||||
component.addOptions({
|
||||
[graphs[0].id]: graphs[0].id,
|
||||
add: "+ add"
|
||||
}).onChange((value) => {
|
||||
if (value === "add") {
|
||||
const name = `graph_${++count}`;
|
||||
graphs.push(defaultGraph(name, "plot"));
|
||||
component.addOption(name, name);
|
||||
component.selectEl.remove(
|
||||
component.selectEl.selectedIndex
|
||||
);
|
||||
component.addOption("add", "+ add");
|
||||
component.setValue(name);
|
||||
}
|
||||
renderSelectedGraphSettings();
|
||||
});
|
||||
}).addButton(
|
||||
(component) => component.setButtonText("Delete").setWarning().onClick((e) => {
|
||||
e.preventDefault();
|
||||
if (dropdown.selectEl.options.length === 2)
|
||||
return;
|
||||
const idxToRmv = graphs.findIndex(
|
||||
(graph) => graph.id === dropdown.selectEl.options[dropdown.selectEl.selectedIndex].value
|
||||
);
|
||||
graphs.splice(idxToRmv, 1);
|
||||
dropdown.selectEl.remove(dropdown.selectEl.selectedIndex);
|
||||
renderSelectedGraphSettings();
|
||||
})
|
||||
);
|
||||
const selectedGraphEl = el.createDiv();
|
||||
const renderSelectedGraphSettings = () => {
|
||||
selectedGraphEl.empty();
|
||||
const graph = graphs.find(
|
||||
(graph2) => graph2.id === dropdown.selectEl.options[dropdown.selectEl.selectedIndex].value
|
||||
);
|
||||
if (!graph)
|
||||
return;
|
||||
new import_obsidian6.Setting(selectedGraphEl.createDiv()).setName("Type").addDropdown((component) => {
|
||||
component.addOptions(graphTypesOptions);
|
||||
component.setValue(graph.type);
|
||||
component.onChange((value) => {
|
||||
graph.type = value;
|
||||
renderSelectedGraphSettings();
|
||||
});
|
||||
}).setDesc(graphTypeDescription[graph.type]);
|
||||
renderSettings2[graph.type](selectedGraphEl, graph[graph.type]);
|
||||
renderOptions3(selectedGraphEl, modal.settings, graph.options);
|
||||
};
|
||||
renderSelectedGraphSettings();
|
||||
};
|
||||
var renderGraphSettings = (el, modal) => {
|
||||
el.empty();
|
||||
el.createEl("h5", { text: `Plot ${modal.settings.raster.dim}` });
|
||||
render(el, modal, modal.settings.raster.dim);
|
||||
};
|
||||
|
||||
// src/modal/menus/raster.ts
|
||||
var import_obsidian7 = require("obsidian");
|
||||
var renderRasterSettings = (el, graphSettingsEl, modal) => {
|
||||
const settings = modal.settings;
|
||||
el.createEl("h5", { text: "Raster settings" });
|
||||
new import_obsidian7.Setting(el).setName("Dimensions").addDropdown((component) => {
|
||||
component.addOptions({
|
||||
"2D": "2D",
|
||||
"3D": "3D"
|
||||
});
|
||||
component.onChange((value) => {
|
||||
settings.raster.dim = value;
|
||||
renderGraphSettings(graphSettingsEl, modal);
|
||||
});
|
||||
component.setValue(settings.raster.dim);
|
||||
});
|
||||
new import_obsidian7.Setting(el.createDiv()).addText(
|
||||
(text) => text.setValue(settings.raster.background).onChange((value) => settings.raster.background = value)
|
||||
).setName("Background");
|
||||
new import_obsidian7.Setting(el.createDiv()).addText(
|
||||
(text) => text.setValue(settings.raster.size.height).onChange((value) => settings.raster.size.height = value)
|
||||
).setName("Height");
|
||||
new import_obsidian7.Setting(el.createDiv()).addText(
|
||||
(text) => text.setValue(settings.raster.size.width).onChange((value) => settings.raster.size.width = value)
|
||||
).setName("Width");
|
||||
};
|
||||
|
||||
// src/_constants.ts
|
||||
var PLUGIN = {
|
||||
CODEBLOCK_NAME: "mathematica-plot"
|
||||
};
|
||||
|
||||
// src/modal/menus/graph/submit.ts
|
||||
var import_obsidian8 = require("obsidian");
|
||||
var cleanSettingStructure = (settings) => {
|
||||
const cleanGraphs = settings.graphs.map((graph) => ({
|
||||
id: graph.id,
|
||||
options: graph.options,
|
||||
type: graph.type,
|
||||
[graph.type]: graph[graph.type]
|
||||
}));
|
||||
return { ...settings, graphs: cleanGraphs };
|
||||
};
|
||||
var renderSubmitBtn = (el, modal) => {
|
||||
new import_obsidian8.Setting(el).addButton(
|
||||
(btn) => btn.setButtonText("Submit").setCta().onClick(async () => {
|
||||
const line = modal.editor.getCursor().line;
|
||||
if (modal.options.isEditing) {
|
||||
modal.editor.replaceSelection(
|
||||
(0, import_obsidian8.stringifyYaml)(cleanSettingStructure(modal.settings))
|
||||
);
|
||||
} else
|
||||
modal.editor.setLine(
|
||||
line,
|
||||
`\`\`\`${PLUGIN.CODEBLOCK_NAME}
|
||||
${(0, import_obsidian8.stringifyYaml)(
|
||||
cleanSettingStructure(modal.settings)
|
||||
)}
|
||||
\`\`\``
|
||||
);
|
||||
modal.options.afterSubmit(el);
|
||||
modal.close();
|
||||
})
|
||||
);
|
||||
};
|
||||
|
||||
// src/modal/menus/settings.ts
|
||||
var renderSettings = (el, modal) => {
|
||||
const rasterEl = el.createDiv();
|
||||
const generalEl = el.createDiv();
|
||||
const menuEl = el.createDiv();
|
||||
renderRasterSettings(rasterEl, menuEl, modal);
|
||||
renderGeneralSettings(generalEl, modal);
|
||||
renderGraphSettings(menuEl, modal);
|
||||
renderSubmitBtn(el, modal);
|
||||
};
|
||||
|
||||
// src/modal/plotModal.ts
|
||||
var import_obsidian9 = require("obsidian");
|
||||
var defaultSettings = {
|
||||
isEditing: false,
|
||||
afterSubmit: () => null,
|
||||
onClose: () => null
|
||||
};
|
||||
var defaultPlotSettings = () => ({
|
||||
raster: {
|
||||
dim: "2D",
|
||||
background: "None",
|
||||
size: {
|
||||
height: "Automatic",
|
||||
width: "250"
|
||||
}
|
||||
},
|
||||
general: {
|
||||
axes: "True",
|
||||
axesLabel: "{x, y}",
|
||||
frame: "False",
|
||||
boxed: "True"
|
||||
},
|
||||
graphs: []
|
||||
});
|
||||
var PlotModal = class extends import_obsidian9.Modal {
|
||||
constructor(plugin, editor, settings, options) {
|
||||
super(plugin.app);
|
||||
this.settings = defaultPlotSettings();
|
||||
this.plugin = plugin;
|
||||
this.editor = editor;
|
||||
if (settings)
|
||||
this.settings = settings;
|
||||
this.options = { ...defaultSettings, ...options };
|
||||
}
|
||||
onOpen() {
|
||||
const { contentEl } = this;
|
||||
this.modalEl.addClass("mathematica-plot-modal");
|
||||
contentEl.createEl("h4", { text: "Plot" });
|
||||
const flex = contentEl.createEl("div", {
|
||||
cls: "mathematica-plot-modal-content-container"
|
||||
});
|
||||
const settings = flex.createDiv();
|
||||
const preview = flex.createDiv();
|
||||
settings.addClass("mathematica-plot-modal-settings");
|
||||
preview.addClass("mathematica-plot-modal-preview");
|
||||
renderSettings(settings, this);
|
||||
renderGraphPreview(preview, this);
|
||||
}
|
||||
onClose() {
|
||||
this.options.onClose();
|
||||
}
|
||||
};
|
||||
|
||||
// src/settingsTab.ts
|
||||
var import_obsidian10 = require("obsidian");
|
||||
var MathematicaPlotSettingsTab = class extends import_obsidian10.PluginSettingTab {
|
||||
constructor(app, plugin) {
|
||||
super(app, plugin);
|
||||
this.plugin = plugin;
|
||||
}
|
||||
display() {
|
||||
const { containerEl } = this;
|
||||
containerEl.empty();
|
||||
containerEl.createEl("h3").setText("Settings");
|
||||
new import_obsidian10.Setting(containerEl).setName("Use cloud").setDesc(
|
||||
"Whether to pass --cloud option. If you don't have the wolfram engine installed set it to true."
|
||||
).addToggle(
|
||||
(component) => component.setValue(this.plugin.settings.useCloud).onChange(async (value) => {
|
||||
this.plugin.settings.useCloud = value;
|
||||
await this.plugin.saveSettings();
|
||||
})
|
||||
);
|
||||
new import_obsidian10.Setting(containerEl).setName("WolframScript path").setDesc(
|
||||
"The installation path of WolframScript. If you WolframScript is globally available on your system you can leave it blank."
|
||||
).addText(
|
||||
(component) => component.setValue(this.plugin.settings.wolframScriptPath).onChange(async (value) => {
|
||||
this.plugin.settings.wolframScriptPath = value;
|
||||
await this.plugin.saveSettings();
|
||||
})
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
// src/utils/editor.ts
|
||||
var isReadingView = (markdownView) => markdownView.getMode() === "preview";
|
||||
|
||||
// src/main.ts
|
||||
var import_os = require("os");
|
||||
var DEFAULT_SETTINGS = {
|
||||
useCloud: true,
|
||||
wolframScriptPath: ""
|
||||
};
|
||||
var MathematicaPlot = class extends import_obsidian11.Plugin {
|
||||
async onload() {
|
||||
if (import_obsidian11.Platform.isMobile)
|
||||
return;
|
||||
await this.loadSettings();
|
||||
this.addCommand({
|
||||
id: "plot-graph",
|
||||
name: "Plot Graph",
|
||||
editorCallback: (editor) => {
|
||||
new PlotModal(this, editor, null, {}).open();
|
||||
}
|
||||
});
|
||||
this.registerMarkdownCodeBlockProcessor(
|
||||
PLUGIN.CODEBLOCK_NAME,
|
||||
async (source, el) => {
|
||||
const plotEl = el.createDiv({ cls: "mathematica-plot" });
|
||||
await renderGraph(plotEl, source, {
|
||||
...this.settings
|
||||
});
|
||||
const view = this.app.workspace.getActiveViewOfType(import_obsidian11.MarkdownView);
|
||||
if (!view || isReadingView(view))
|
||||
return;
|
||||
const cursorPos = view.editor.getCursor();
|
||||
const button = new import_obsidian11.ExtraButtonComponent(plotEl).setIcon("settings-2").setTooltip("Edit plot settings").onClick(() => {
|
||||
var _a, _b;
|
||||
(_b = (_a = el.parentElement) == null ? void 0 : _a.querySelector(".edit-block-button")) == null ? void 0 : _b.click();
|
||||
const settings = (0, import_obsidian11.parseYaml)(source);
|
||||
settings.graphs = settings.graphs.map((graph) => ({
|
||||
...defaultGraphType(),
|
||||
...graph
|
||||
}));
|
||||
new PlotModal(this, view.editor, settings, {
|
||||
isEditing: true,
|
||||
onClose: () => view.editor.setCursor(cursorPos)
|
||||
}).open();
|
||||
});
|
||||
button.extraSettingsEl.addClass("mathematica-plot-edit-btn");
|
||||
}
|
||||
);
|
||||
this.addSettingTab(new MathematicaPlotSettingsTab(this.app, this));
|
||||
}
|
||||
onunload() {
|
||||
}
|
||||
async loadSettings() {
|
||||
if ((0, import_os.platform)() === "win32")
|
||||
DEFAULT_SETTINGS.wolframScriptPath = "C:\\Program Files\\Wolfram Research\\WolframScript\\wolframscript.exe";
|
||||
this.settings = Object.assign(
|
||||
{},
|
||||
DEFAULT_SETTINGS,
|
||||
await this.loadData()
|
||||
);
|
||||
}
|
||||
async saveSettings() {
|
||||
await this.saveData(this.settings);
|
||||
}
|
||||
};
|
||||
|
||||
/* nosourcemap */
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"id": "mathematica-plot",
|
||||
"name": "Mathematica Plot",
|
||||
"version": "1.0.0",
|
||||
"minAppVersion": "0.15.0",
|
||||
"description": "Render graphs using Wolfram Mathematica code!",
|
||||
"author": "Marcos Nicolau",
|
||||
"authorUrl": "https://github.com/MarcosNicolau",
|
||||
"fundingUrl": "https://www.buymeacoffee.com/marcosnicolau",
|
||||
"isDesktopOnly": true
|
||||
}
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
.mathematica-plot-modal {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.mathematica-plot-modal .mathematica-plot-modal-settings {
|
||||
max-height: 60vh;
|
||||
overflow-y: auto;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.mathematica-plot-modal .mathematica-plot-modal-preview {
|
||||
width: 50%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.mathematica-plot-modal .mathematica-plot-modal-content-container {
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.mathematica-plot {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.mathematica-plot-edit-btn {
|
||||
padding-bottom: var(--size-2-2);
|
||||
padding-right: var(--size-2-3);
|
||||
position: absolute;
|
||||
right: var(--size-2-2);
|
||||
bottom: var(--size-2-2);
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.mathematica-plot:hover .mathematica-plot-edit-btn {
|
||||
transition: 0s;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1550px) {
|
||||
.mathematica-plot-modal {
|
||||
width: 75%;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"id": "mathpad",
|
||||
"name": "Mathpad",
|
||||
"version": "0.8.14",
|
||||
"minAppVersion": "0.15.0",
|
||||
"description": "Computer Algebra System and Calculator for Obsidian",
|
||||
"author": "Gabriele Cannata",
|
||||
"authorUrl": "https://github.com/Canna71",
|
||||
"fundingUrl": "https://www.buymeacoffee.com/gcannata",
|
||||
"isDesktopOnly": true
|
||||
}
|
||||
|
|
@ -0,0 +1,158 @@
|
|||
.mathpad-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
}
|
||||
.mathpad-container .toolbar {
|
||||
border-bottom: 1px solid var(--background-modifier-border);
|
||||
border-top: 1px solid var(--background-modifier-border);
|
||||
padding: 4px;
|
||||
flex: 0;
|
||||
}
|
||||
.mathpad-container .toolbar button {
|
||||
padding: 2px 2px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
.mathpad-container .toolbar button:disabled {
|
||||
color: var(--text-faint);
|
||||
cursor: default;
|
||||
}
|
||||
.mathpad-container .mathpad-scroller {
|
||||
display: flex;
|
||||
flex-direction: column-reverse;
|
||||
overflow: auto;
|
||||
flex: 1;
|
||||
}
|
||||
.mathpad-container .mathpad-scroller .mathpad-slots-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.mathpad-container .mathpad-scroller .mathpad-slots-container .slot-container {
|
||||
display: flex;
|
||||
position: relative;
|
||||
min-height: 6em;
|
||||
border-top: 1px solid var(--background-modifier-border);
|
||||
}
|
||||
.mathpad-container .mathpad-scroller .mathpad-slots-container .slot-container .slot-anchor {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
width: 24px;
|
||||
border-right: 1px solid var(--background-modifier-border);
|
||||
justify-content: center;
|
||||
background-color: transparent;
|
||||
cursor: pointer;
|
||||
}
|
||||
.mathpad-container .mathpad-scroller .mathpad-slots-container .slot-container .slot-anchor .slot-name {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
font-size: smaller;
|
||||
color: var(--text-faint);
|
||||
}
|
||||
.mathpad-container .mathpad-scroller .mathpad-slots-container .slot-container .slot-anchor:hover {
|
||||
background-color: var(--background-modifier-border);
|
||||
}
|
||||
.mathpad-container .mathpad-scroller .mathpad-slots-container .slot-container .slot-anchor.selected {
|
||||
cursor: default;
|
||||
background-color: var(--background-modifier-border);
|
||||
border-color: var(--interactive-accent);
|
||||
}
|
||||
.mathpad-container .mathpad-scroller .mathpad-slots-container .slot-container .slot-content {
|
||||
flex: 1;
|
||||
padding: 4px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 100%;
|
||||
}
|
||||
.mathpad-container .mathpad-scroller .mathpad-slots-container .slot-container .slot-content .slot-input {
|
||||
overflow-x: auto;
|
||||
line-height: 12px;
|
||||
cursor: text;
|
||||
}
|
||||
.mathpad-container .mathpad-scroller .mathpad-slots-container .slot-container .slot-content .slot-input mjx-container {
|
||||
text-align: left;
|
||||
}
|
||||
.mathpad-container .mathpad-scroller .mathpad-slots-container .slot-container .slot-content .slot-input .plain-input {
|
||||
padding: 5px;
|
||||
line-height: 12px;
|
||||
height: 24px;
|
||||
font-size: 16px;
|
||||
font-family: monospace;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
overflow-x: auto;
|
||||
}
|
||||
.mathpad-container .mathpad-scroller .mathpad-slots-container .slot-container .slot-content .slot-input .plain-input:hover {
|
||||
background-color: var(--background-primary);
|
||||
}
|
||||
.mathpad-container .mathpad-scroller .mathpad-slots-container .slot-container .slot-content .slot-input .mathpad-input {
|
||||
margin: 1em 0px;
|
||||
}
|
||||
.mathpad-container .mathpad-scroller .mathpad-slots-container .slot-container .slot-content .slot-input .latex-wrapper {
|
||||
padding: 4px;
|
||||
margin: 1px;
|
||||
}
|
||||
.mathpad-container .mathpad-scroller .mathpad-slots-container .slot-container .slot-content .mathpad-slider {
|
||||
margin-right: 20px;
|
||||
}
|
||||
.mathpad-container .mathpad-scroller .mathpad-slots-container .slot-container .slot-content .mathpad-slider input[type=range] {
|
||||
width: 100%;
|
||||
}
|
||||
.mathpad-container .mathpad-scroller .mathpad-slots-container .slot-container .slot-content .slot-result {
|
||||
overflow-y: auto;
|
||||
}
|
||||
.mathpad-container .mathpad-scroller .mathpad-slots-container .slot-container .slot-content .slot-result .slot-error {
|
||||
font-size: 12px;
|
||||
color: var(--text-error);
|
||||
}
|
||||
.mathpad-container .mathpad-scroller .mathpad-slots-container .slot-container .slot-actions {
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
right: 0px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
visibility: hidden;
|
||||
}
|
||||
.mathpad-container .mathpad-scroller .mathpad-slots-container .slot-container:hover .slot-actions {
|
||||
visibility: visible;
|
||||
}
|
||||
.mathpad-container .current-input {
|
||||
border-top: 1px solid var(--background-modifier-border);
|
||||
flex: 0;
|
||||
margin-bottom: 32px;
|
||||
padding: 16px 8px 8px 8px;
|
||||
}
|
||||
.mathpad-container .current-input input.mathpad-input {
|
||||
height: 30px;
|
||||
}
|
||||
.mathpad-container .mathpad-input {
|
||||
font-size: 16px;
|
||||
line-height: 12px;
|
||||
height: 24px;
|
||||
padding: 4px;
|
||||
width: 100%;
|
||||
font-family: monospace;
|
||||
}
|
||||
.mathpad-plot {
|
||||
cursor: pointer;
|
||||
}
|
||||
.mathpad-plot .function-plot path.x.origin {
|
||||
stroke: var(--text-normal);
|
||||
}
|
||||
.mathpad-plot .function-plot path.y.origin {
|
||||
stroke: var(--text-normal);
|
||||
}
|
||||
.mathpad-plot .function-plot .x.axis {
|
||||
stroke: var(--text-normal);
|
||||
}
|
||||
.mathpad-plot .function-plot .x.axis .tick line {
|
||||
stroke: var(--text-normal);
|
||||
}
|
||||
.mathpad-plot .function-plot .y.axis .tick line {
|
||||
stroke: var(--text-normal);
|
||||
}
|
||||
.mathpad-declaration {
|
||||
font-family: "MathJax_Math";
|
||||
}
|
||||
|
|
@ -0,0 +1,812 @@
|
|||
{
|
||||
"disableDoubleClickTextEditing": false,
|
||||
"folder": "Excalidraw",
|
||||
"cropFolder": "",
|
||||
"annotateFolder": "",
|
||||
"embedUseExcalidrawFolder": false,
|
||||
"templateFilePath": "Excalidraw/Template.excalidraw",
|
||||
"scriptFolderPath": "Excalidraw/Scripts",
|
||||
"fontAssetsPath": "Excalidraw/CJK Fonts",
|
||||
"loadChineseFonts": false,
|
||||
"loadJapaneseFonts": false,
|
||||
"loadKoreanFonts": false,
|
||||
"compress": true,
|
||||
"decompressForMDView": false,
|
||||
"onceOffCompressFlagReset": true,
|
||||
"onceOffGPTVersionReset": true,
|
||||
"autosave": true,
|
||||
"autosaveIntervalDesktop": 60000,
|
||||
"autosaveIntervalMobile": 30000,
|
||||
"drawingFilenamePrefix": "Drawing ",
|
||||
"drawingEmbedPrefixWithFilename": true,
|
||||
"drawingFilnameEmbedPostfix": " ",
|
||||
"drawingFilenameDateTime": "YYYY-MM-DD HH.mm.ss",
|
||||
"useExcalidrawExtension": true,
|
||||
"cropSuffix": "",
|
||||
"cropPrefix": "cropped_",
|
||||
"annotateSuffix": "",
|
||||
"annotatePrefix": "annotated_",
|
||||
"annotatePreserveSize": false,
|
||||
"previewImageType": "SVGIMG",
|
||||
"renderingConcurrency": 3,
|
||||
"allowImageCache": true,
|
||||
"allowImageCacheInScene": true,
|
||||
"displayExportedImageIfAvailable": false,
|
||||
"previewMatchObsidianTheme": false,
|
||||
"width": "400",
|
||||
"height": "",
|
||||
"overrideObsidianFontSize": false,
|
||||
"dynamicStyling": "colorful",
|
||||
"isLeftHanded": false,
|
||||
"iframeMatchExcalidrawTheme": true,
|
||||
"matchTheme": false,
|
||||
"matchThemeAlways": false,
|
||||
"matchThemeTrigger": false,
|
||||
"defaultMode": "normal",
|
||||
"defaultPenMode": "never",
|
||||
"penModeDoubleTapEraser": true,
|
||||
"penModeSingleFingerPanning": true,
|
||||
"penModeCrosshairVisible": true,
|
||||
"panWithRightMouseButton": false,
|
||||
"renderImageInMarkdownReadingMode": false,
|
||||
"renderImageInHoverPreviewForMDNotes": false,
|
||||
"renderImageInMarkdownToPDF": false,
|
||||
"allowPinchZoom": false,
|
||||
"allowWheelZoom": false,
|
||||
"zoomToFitOnOpen": true,
|
||||
"zoomToFitOnResize": false,
|
||||
"zoomToFitMaxLevel": 2,
|
||||
"zoomStep": 0.05,
|
||||
"zoomMin": 0.1,
|
||||
"zoomMax": 30,
|
||||
"linkPrefix": "📍",
|
||||
"urlPrefix": "🌐",
|
||||
"parseTODO": false,
|
||||
"todo": "☐",
|
||||
"done": "🗹",
|
||||
"hoverPreviewWithoutCTRL": false,
|
||||
"linkOpacity": 1,
|
||||
"openInAdjacentPane": true,
|
||||
"showSecondOrderLinks": true,
|
||||
"focusOnFileTab": true,
|
||||
"openInMainWorkspace": true,
|
||||
"showLinkBrackets": true,
|
||||
"allowCtrlClick": true,
|
||||
"forceWrap": false,
|
||||
"pageTransclusionCharLimit": 200,
|
||||
"wordWrappingDefault": 0,
|
||||
"removeTransclusionQuoteSigns": true,
|
||||
"iframelyAllowed": true,
|
||||
"pngExportScale": 1,
|
||||
"exportWithTheme": true,
|
||||
"exportWithBackground": true,
|
||||
"exportPaddingSVG": 10,
|
||||
"exportEmbedScene": false,
|
||||
"keepInSync": false,
|
||||
"autoexportSVG": false,
|
||||
"autoexportPNG": false,
|
||||
"autoExportLightAndDark": false,
|
||||
"autoexportExcalidraw": false,
|
||||
"embedType": "excalidraw",
|
||||
"embedMarkdownCommentLinks": true,
|
||||
"embedWikiLink": true,
|
||||
"syncExcalidraw": false,
|
||||
"experimentalFileType": false,
|
||||
"experimentalFileTag": "✏️",
|
||||
"experimentalLivePreview": true,
|
||||
"fadeOutExcalidrawMarkup": false,
|
||||
"loadPropertySuggestions": false,
|
||||
"experimentalEnableFourthFont": false,
|
||||
"experimantalFourthFont": "Virgil",
|
||||
"addDummyTextElement": false,
|
||||
"zoteroCompatibility": false,
|
||||
"fieldSuggester": true,
|
||||
"compatibilityMode": false,
|
||||
"drawingOpenCount": 0,
|
||||
"library": "deprecated",
|
||||
"library2": {
|
||||
"type": "excalidrawlib",
|
||||
"version": 2,
|
||||
"source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.15.3",
|
||||
"libraryItems": []
|
||||
},
|
||||
"imageElementNotice": true,
|
||||
"mdSVGwidth": 500,
|
||||
"mdSVGmaxHeight": 800,
|
||||
"mdFont": "Virgil",
|
||||
"mdFontColor": "Black",
|
||||
"mdBorderColor": "Black",
|
||||
"mdCSS": "",
|
||||
"scriptEngineSettings": {},
|
||||
"defaultTrayMode": true,
|
||||
"previousRelease": "2.15.3",
|
||||
"showReleaseNotes": true,
|
||||
"compareManifestToPluginVersion": true,
|
||||
"showNewVersionNotification": true,
|
||||
"latexBoilerplate": "\\color{blue}",
|
||||
"latexPreambleLocation": "preamble.sty",
|
||||
"taskboneEnabled": false,
|
||||
"taskboneAPIkey": "",
|
||||
"pinnedScripts": [],
|
||||
"customPens": [
|
||||
{
|
||||
"type": "default",
|
||||
"freedrawOnly": false,
|
||||
"strokeColor": "#000000",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "hachure",
|
||||
"strokeWidth": 0,
|
||||
"roughness": 0,
|
||||
"penOptions": {
|
||||
"highlighter": false,
|
||||
"constantPressure": false,
|
||||
"hasOutline": false,
|
||||
"outlineWidth": 1,
|
||||
"options": {
|
||||
"thinning": 0.6,
|
||||
"smoothing": 0.5,
|
||||
"streamline": 0.5,
|
||||
"easing": "easeOutSine",
|
||||
"start": {
|
||||
"cap": true,
|
||||
"taper": 0,
|
||||
"easing": "linear"
|
||||
},
|
||||
"end": {
|
||||
"cap": true,
|
||||
"taper": 0,
|
||||
"easing": "linear"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "highlighter",
|
||||
"freedrawOnly": true,
|
||||
"strokeColor": "#FFC47C",
|
||||
"backgroundColor": "#FFC47C",
|
||||
"fillStyle": "solid",
|
||||
"strokeWidth": 2,
|
||||
"roughness": null,
|
||||
"penOptions": {
|
||||
"highlighter": true,
|
||||
"constantPressure": true,
|
||||
"hasOutline": true,
|
||||
"outlineWidth": 4,
|
||||
"options": {
|
||||
"thinning": 1,
|
||||
"smoothing": 0.5,
|
||||
"streamline": 0.5,
|
||||
"easing": "linear",
|
||||
"start": {
|
||||
"taper": 0,
|
||||
"cap": true,
|
||||
"easing": "linear"
|
||||
},
|
||||
"end": {
|
||||
"taper": 0,
|
||||
"cap": true,
|
||||
"easing": "linear"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "finetip",
|
||||
"freedrawOnly": false,
|
||||
"strokeColor": "#3E6F8D",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "hachure",
|
||||
"strokeWidth": 0.5,
|
||||
"roughness": 0,
|
||||
"penOptions": {
|
||||
"highlighter": false,
|
||||
"hasOutline": false,
|
||||
"outlineWidth": 1,
|
||||
"constantPressure": true,
|
||||
"options": {
|
||||
"smoothing": 0.4,
|
||||
"thinning": -0.5,
|
||||
"streamline": 0.4,
|
||||
"easing": "linear",
|
||||
"start": {
|
||||
"taper": 5,
|
||||
"cap": false,
|
||||
"easing": "linear"
|
||||
},
|
||||
"end": {
|
||||
"taper": 5,
|
||||
"cap": false,
|
||||
"easing": "linear"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "fountain",
|
||||
"freedrawOnly": false,
|
||||
"strokeColor": "#000000",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "hachure",
|
||||
"strokeWidth": 2,
|
||||
"roughness": 0,
|
||||
"penOptions": {
|
||||
"highlighter": false,
|
||||
"constantPressure": false,
|
||||
"hasOutline": false,
|
||||
"outlineWidth": 1,
|
||||
"options": {
|
||||
"smoothing": 0.2,
|
||||
"thinning": 0.6,
|
||||
"streamline": 0.2,
|
||||
"easing": "easeInOutSine",
|
||||
"start": {
|
||||
"taper": 150,
|
||||
"cap": true,
|
||||
"easing": "linear"
|
||||
},
|
||||
"end": {
|
||||
"taper": 1,
|
||||
"cap": true,
|
||||
"easing": "linear"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "marker",
|
||||
"freedrawOnly": true,
|
||||
"strokeColor": "#B83E3E",
|
||||
"backgroundColor": "#FF7C7C",
|
||||
"fillStyle": "dashed",
|
||||
"strokeWidth": 2,
|
||||
"roughness": 3,
|
||||
"penOptions": {
|
||||
"highlighter": false,
|
||||
"constantPressure": true,
|
||||
"hasOutline": true,
|
||||
"outlineWidth": 4,
|
||||
"options": {
|
||||
"thinning": 1,
|
||||
"smoothing": 0.5,
|
||||
"streamline": 0.5,
|
||||
"easing": "linear",
|
||||
"start": {
|
||||
"taper": 0,
|
||||
"cap": true,
|
||||
"easing": "linear"
|
||||
},
|
||||
"end": {
|
||||
"taper": 0,
|
||||
"cap": true,
|
||||
"easing": "linear"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "thick-thin",
|
||||
"freedrawOnly": true,
|
||||
"strokeColor": "#CECDCC",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "hachure",
|
||||
"strokeWidth": 0,
|
||||
"roughness": null,
|
||||
"penOptions": {
|
||||
"highlighter": true,
|
||||
"constantPressure": true,
|
||||
"hasOutline": false,
|
||||
"outlineWidth": 1,
|
||||
"options": {
|
||||
"thinning": 1,
|
||||
"smoothing": 0.5,
|
||||
"streamline": 0.5,
|
||||
"easing": "linear",
|
||||
"start": {
|
||||
"taper": 0,
|
||||
"cap": true,
|
||||
"easing": "linear"
|
||||
},
|
||||
"end": {
|
||||
"cap": true,
|
||||
"taper": true,
|
||||
"easing": "linear"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "thin-thick-thin",
|
||||
"freedrawOnly": true,
|
||||
"strokeColor": "#CECDCC",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "hachure",
|
||||
"strokeWidth": 0,
|
||||
"roughness": null,
|
||||
"penOptions": {
|
||||
"highlighter": true,
|
||||
"constantPressure": true,
|
||||
"hasOutline": false,
|
||||
"outlineWidth": 1,
|
||||
"options": {
|
||||
"thinning": 1,
|
||||
"smoothing": 0.5,
|
||||
"streamline": 0.5,
|
||||
"easing": "linear",
|
||||
"start": {
|
||||
"cap": true,
|
||||
"taper": true,
|
||||
"easing": "linear"
|
||||
},
|
||||
"end": {
|
||||
"cap": true,
|
||||
"taper": true,
|
||||
"easing": "linear"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "default",
|
||||
"freedrawOnly": false,
|
||||
"strokeColor": "#000000",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "hachure",
|
||||
"strokeWidth": 0,
|
||||
"roughness": 0,
|
||||
"penOptions": {
|
||||
"highlighter": false,
|
||||
"constantPressure": false,
|
||||
"hasOutline": false,
|
||||
"outlineWidth": 1,
|
||||
"options": {
|
||||
"thinning": 0.6,
|
||||
"smoothing": 0.5,
|
||||
"streamline": 0.5,
|
||||
"easing": "easeOutSine",
|
||||
"start": {
|
||||
"cap": true,
|
||||
"taper": 0,
|
||||
"easing": "linear"
|
||||
},
|
||||
"end": {
|
||||
"cap": true,
|
||||
"taper": 0,
|
||||
"easing": "linear"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "default",
|
||||
"freedrawOnly": false,
|
||||
"strokeColor": "#000000",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "hachure",
|
||||
"strokeWidth": 0,
|
||||
"roughness": 0,
|
||||
"penOptions": {
|
||||
"highlighter": false,
|
||||
"constantPressure": false,
|
||||
"hasOutline": false,
|
||||
"outlineWidth": 1,
|
||||
"options": {
|
||||
"thinning": 0.6,
|
||||
"smoothing": 0.5,
|
||||
"streamline": 0.5,
|
||||
"easing": "easeOutSine",
|
||||
"start": {
|
||||
"cap": true,
|
||||
"taper": 0,
|
||||
"easing": "linear"
|
||||
},
|
||||
"end": {
|
||||
"cap": true,
|
||||
"taper": 0,
|
||||
"easing": "linear"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "default",
|
||||
"freedrawOnly": false,
|
||||
"strokeColor": "#000000",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "hachure",
|
||||
"strokeWidth": 0,
|
||||
"roughness": 0,
|
||||
"penOptions": {
|
||||
"highlighter": false,
|
||||
"constantPressure": false,
|
||||
"hasOutline": false,
|
||||
"outlineWidth": 1,
|
||||
"options": {
|
||||
"thinning": 0.6,
|
||||
"smoothing": 0.5,
|
||||
"streamline": 0.5,
|
||||
"easing": "easeOutSine",
|
||||
"start": {
|
||||
"cap": true,
|
||||
"taper": 0,
|
||||
"easing": "linear"
|
||||
},
|
||||
"end": {
|
||||
"cap": true,
|
||||
"taper": 0,
|
||||
"easing": "linear"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"numberOfCustomPens": 0,
|
||||
"pdfScale": 4,
|
||||
"pdfBorderBox": true,
|
||||
"pdfFrame": false,
|
||||
"pdfGapSize": 20,
|
||||
"pdfGroupPages": false,
|
||||
"pdfLockAfterImport": true,
|
||||
"pdfNumColumns": 1,
|
||||
"pdfNumRows": 1,
|
||||
"pdfDirection": "right",
|
||||
"pdfImportScale": 0.3,
|
||||
"gridSettings": {
|
||||
"DYNAMIC_COLOR": true,
|
||||
"COLOR": "#000000",
|
||||
"OPACITY": 50,
|
||||
"GRID_DIRECTION": {
|
||||
"horizontal": true,
|
||||
"vertical": true
|
||||
}
|
||||
},
|
||||
"laserSettings": {
|
||||
"DECAY_LENGTH": 50,
|
||||
"DECAY_TIME": 1000,
|
||||
"COLOR": "#ff0000"
|
||||
},
|
||||
"embeddableMarkdownDefaults": {
|
||||
"useObsidianDefaults": false,
|
||||
"backgroundMatchCanvas": false,
|
||||
"backgroundMatchElement": true,
|
||||
"backgroundColor": "#fff",
|
||||
"backgroundOpacity": 60,
|
||||
"borderMatchElement": true,
|
||||
"borderColor": "#fff",
|
||||
"borderOpacity": 0,
|
||||
"filenameVisible": false
|
||||
},
|
||||
"markdownNodeOneClickEditing": false,
|
||||
"canvasImmersiveEmbed": true,
|
||||
"startupScriptPath": "",
|
||||
"aiEnabled": true,
|
||||
"openAIAPIToken": "",
|
||||
"openAIDefaultTextModel": "gpt-3.5-turbo-1106",
|
||||
"openAIDefaultVisionModel": "gpt-4o",
|
||||
"openAIDefaultImageGenerationModel": "dall-e-3",
|
||||
"openAIURL": "https://api.openai.com/v1/chat/completions",
|
||||
"openAIImageGenerationURL": "https://api.openai.com/v1/images/generations",
|
||||
"openAIImageEditsURL": "https://api.openai.com/v1/images/edits",
|
||||
"openAIImageVariationURL": "https://api.openai.com/v1/images/variations",
|
||||
"modifierKeyConfig": {
|
||||
"Mac": {
|
||||
"LocalFileDragAction": {
|
||||
"defaultAction": "image-import",
|
||||
"rules": [
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "image-import"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": true,
|
||||
"meta_ctrl": false,
|
||||
"result": "link"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "image-url"
|
||||
},
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": true,
|
||||
"meta_ctrl": false,
|
||||
"result": "embeddable"
|
||||
}
|
||||
]
|
||||
},
|
||||
"WebBrowserDragAction": {
|
||||
"defaultAction": "image-url",
|
||||
"rules": [
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "image-url"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": true,
|
||||
"meta_ctrl": false,
|
||||
"result": "link"
|
||||
},
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": true,
|
||||
"meta_ctrl": false,
|
||||
"result": "embeddable"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "image-import"
|
||||
}
|
||||
]
|
||||
},
|
||||
"InternalDragAction": {
|
||||
"defaultAction": "link",
|
||||
"rules": [
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "link"
|
||||
},
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": true,
|
||||
"result": "embeddable"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "image"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": true,
|
||||
"result": "image-fullsize"
|
||||
}
|
||||
]
|
||||
},
|
||||
"LinkClickAction": {
|
||||
"defaultAction": "new-tab",
|
||||
"rules": [
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "active-pane"
|
||||
},
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "new-tab"
|
||||
},
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": true,
|
||||
"meta_ctrl": false,
|
||||
"result": "new-pane"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": true,
|
||||
"meta_ctrl": false,
|
||||
"result": "popout-window"
|
||||
},
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": true,
|
||||
"result": "md-properties"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"Win": {
|
||||
"LocalFileDragAction": {
|
||||
"defaultAction": "image-import",
|
||||
"rules": [
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "image-import"
|
||||
},
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "link"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "image-url"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "embeddable"
|
||||
}
|
||||
]
|
||||
},
|
||||
"WebBrowserDragAction": {
|
||||
"defaultAction": "image-url",
|
||||
"rules": [
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "image-url"
|
||||
},
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "link"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "embeddable"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "image-import"
|
||||
}
|
||||
]
|
||||
},
|
||||
"InternalDragAction": {
|
||||
"defaultAction": "link",
|
||||
"rules": [
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "link"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "embeddable"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "image"
|
||||
},
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": true,
|
||||
"meta_ctrl": false,
|
||||
"result": "image-fullsize"
|
||||
}
|
||||
]
|
||||
},
|
||||
"LinkClickAction": {
|
||||
"defaultAction": "new-tab",
|
||||
"rules": [
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "active-pane"
|
||||
},
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "new-tab"
|
||||
},
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": true,
|
||||
"meta_ctrl": false,
|
||||
"result": "new-pane"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": true,
|
||||
"meta_ctrl": false,
|
||||
"result": "popout-window"
|
||||
},
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": true,
|
||||
"result": "md-properties"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"slidingPanesSupport": false,
|
||||
"areaZoomLimit": 1,
|
||||
"longPressDesktop": 500,
|
||||
"longPressMobile": 500,
|
||||
"doubleClickLinkOpenViewMode": true,
|
||||
"isDebugMode": false,
|
||||
"rank": "Bronze",
|
||||
"modifierKeyOverrides": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod"
|
||||
],
|
||||
"key": "Enter"
|
||||
},
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod"
|
||||
],
|
||||
"key": "k"
|
||||
},
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod"
|
||||
],
|
||||
"key": "G"
|
||||
}
|
||||
],
|
||||
"showSplashscreen": true,
|
||||
"pdfSettings": {
|
||||
"pageSize": "A4",
|
||||
"pageOrientation": "portrait",
|
||||
"fitToPage": 1,
|
||||
"paperColor": "white",
|
||||
"customPaperColor": "#ffffff",
|
||||
"alignment": "center",
|
||||
"margin": "normal"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "obsidian-excalidraw-plugin",
|
||||
"name": "Excalidraw",
|
||||
"version": "2.15.3",
|
||||
"minAppVersion": "1.5.7",
|
||||
"description": "An Obsidian plugin to edit and view Excalidraw drawings",
|
||||
"author": "Zsolt Viczian",
|
||||
"authorUrl": "https://excalidraw-obsidian.online",
|
||||
"fundingUrl": "https://ko-fi.com/zsolt",
|
||||
"helpUrl": "https://github.com/zsviczian/obsidian-excalidraw-plugin#readme",
|
||||
"isDesktopOnly": false
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"id": "obsidian-functionplot",
|
||||
"name": "Obsidian Functionplot",
|
||||
"minAppVersion": "0.12.2",
|
||||
"description": "A plugin for displaying mathematical graphs in obsidian.md.",
|
||||
"author": "leonhma",
|
||||
"authorUrl": "https://github.com/leonhma",
|
||||
"isDesktopOnly": false,
|
||||
"version": "1.2.1"
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"id": "obsidian-icons-plugin",
|
||||
"name": "Icons",
|
||||
"version": "0.3.0",
|
||||
"minAppVersion": "0.10.7",
|
||||
"description": "Add icons to your Obsidian notes.",
|
||||
"author": "Camillo Visini",
|
||||
"authorUrl": "https://github.com/visini",
|
||||
"isDesktopOnly": true
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
.obsidian-icon {
|
||||
font-size: inherit;
|
||||
display: inline-block;
|
||||
width: 2rem !important;
|
||||
text-align: center;
|
||||
/* margin-right: -0.5rem !important; */
|
||||
}
|
||||
|
||||
p .obsidian-icon {
|
||||
width: 1.75rem !important;
|
||||
}
|
||||
|
||||
.obsidian-icon.react-icon > svg {
|
||||
vertical-align: middle;
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"id": "obsidian-kanban",
|
||||
"name": "Kanban",
|
||||
"version": "2.0.51",
|
||||
"minAppVersion": "1.0.0",
|
||||
"description": "Create markdown-backed Kanban boards in Obsidian.",
|
||||
"author": "mgmeyers",
|
||||
"authorUrl": "https://github.com/mgmeyers/obsidian-kanban",
|
||||
"helpUrl": "https://publish.obsidian.md/kanban/Obsidian+Kanban+Plugin",
|
||||
"isDesktopOnly": false
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"id": "obsidian-latex-suite",
|
||||
"name": "Latex Suite",
|
||||
"version": "1.9.8",
|
||||
"minAppVersion": "1.0.0",
|
||||
"description": "Make typesetting LaTeX math as fast as handwriting through snippets, text expansion, and editor enhancements",
|
||||
"author": "artisticat",
|
||||
"authorUrl": "https://github.com/artisticat1",
|
||||
"fundingUrl": "https://ko-fi.com/artisticat",
|
||||
"isDesktopOnly": false
|
||||
}
|
||||
|
|
@ -0,0 +1,235 @@
|
|||
/* Settings panel */
|
||||
|
||||
.setting-item.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.setting-item.setting-item-heading .latex-suite-settings-icon {
|
||||
margin-right: var(--size-4-2);
|
||||
display: inline-flex;
|
||||
}
|
||||
|
||||
.setting-item.setting-item-heading:has(.latex-suite-settings-icon) {
|
||||
border-bottom: 1px solid var(--background-modifier-border);
|
||||
}
|
||||
|
||||
.setting-item.setting-item-heading:has(.latex-suite-settings-icon) + .setting-item {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
.setting-item.setting-item-heading:has(.latex-suite-settings-icon) ~ .setting-item:not(.setting-item-heading), .latex-suite-snippet-variables-setting + .setting-item-control {
|
||||
width: calc(100% - 26px);
|
||||
margin-left: 26px;
|
||||
}
|
||||
|
||||
.latex-suite-snippet-variables-setting .setting-item-control {
|
||||
height: 120px;
|
||||
}
|
||||
|
||||
.latex-suite-snippet-variables-setting .setting-item-control textarea {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.snippets-text-area, .latex-suite-snippet-variables-setting {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.snippets-text-area .setting-item-info, .latex-suite-snippet-variables-setting .setting-item-info {
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
|
||||
.snippets-text-area .setting-item-control {
|
||||
flex-direction: column;
|
||||
align-items: flex-end;
|
||||
}
|
||||
|
||||
.snippets-editor-wrapper {
|
||||
width: 100%;
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
|
||||
.snippets-editor-wrapper .cm-editor {
|
||||
border: 1px solid var(--background-modifier-border);
|
||||
border-radius: 4px;
|
||||
font-size: var(--font-inputs);
|
||||
height: 20em;
|
||||
outline: none !important;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.snippets-editor-wrapper .cm-line, .snippets-editor-wrapper .cm-lineNumbers {
|
||||
font-family: var(--font-monospace);
|
||||
}
|
||||
|
||||
.snippets-footer {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.snippets-editor-validity {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.snippets-editor-validity-indicator {
|
||||
color: white;
|
||||
display: inline-block;
|
||||
border-radius: 1em;
|
||||
margin-right: 10px;
|
||||
cursor: default;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.snippets-editor-validity-indicator svg {
|
||||
width: 16px !important;
|
||||
height: 16px !important;
|
||||
}
|
||||
|
||||
.snippets-editor-validity-indicator:hover {
|
||||
color: white;
|
||||
}
|
||||
|
||||
.snippets-editor-validity-indicator.valid {
|
||||
background-color: var(--color-green);
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.snippets-editor-validity-indicator.invalid {
|
||||
background-color: var(--color-red);
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.snippets-editor-buttons {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.latex-suite-confirmation-modal .setting-item {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.search-input-container input.latex-suite-location-input-el {
|
||||
width: initial;
|
||||
}
|
||||
|
||||
/*
|
||||
Snippet color classes.
|
||||
*/
|
||||
|
||||
/* These extra selectors enforce their color on all children, because CodeMirror does weird nesting of spans when
|
||||
nesting multiple decorations. */
|
||||
|
||||
.latex-suite-snippet-placeholder {
|
||||
border-radius: 2px;
|
||||
background-color: var(--placeholder-bg);
|
||||
outline: var(--placeholder-outline) solid 1px;
|
||||
}
|
||||
|
||||
.latex-suite-snippet-placeholder-0, span.latex-suite-snippet-placeholder-0 span {
|
||||
--placeholder-bg: #87cefa2e;
|
||||
--placeholder-outline: #87cefa6e;
|
||||
}
|
||||
|
||||
.theme-dark .latex-suite-snippet-placeholder-0, span.latex-suite-snippet-placeholder-0 span {
|
||||
--placeholder-outline: #87cefa43;
|
||||
}
|
||||
|
||||
.latex-suite-snippet-placeholder-1, span.latex-suite-snippet-placeholder-1 span {
|
||||
--placeholder-bg: #ffa50033;
|
||||
--placeholder-outline: #ffa5006b;
|
||||
}
|
||||
|
||||
.theme-dark .latex-suite-snippet-placeholder-1, span.latex-suite-snippet-placeholder-1 span {
|
||||
--placeholder-outline: #ffa5004d;
|
||||
}
|
||||
|
||||
.latex-suite-snippet-placeholder-2, span.latex-suite-snippet-placeholder-2 span {
|
||||
--placeholder-bg: #00ff0022;
|
||||
--placeholder-outline: #00ff0060;
|
||||
}
|
||||
|
||||
.theme-dark .latex-suite-snippet-placeholder-2, span.latex-suite-snippet-placeholder-2 span {
|
||||
--placeholder-outline: #00ff003d;
|
||||
}
|
||||
|
||||
|
||||
/* Conceal */
|
||||
|
||||
span.cm-math.cm-concealed-bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
span.cm-math.cm-concealed-underline {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
span.cm-math.cm-concealed-mathrm, sub.cm-math.cm-concealed-mathrm {
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
|
||||
/* Conceal superscripts without changing line height */
|
||||
sup.cm-math {
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
sup.cm-math, sub.cm-math {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
|
||||
/* Inline math tooltip styling */
|
||||
|
||||
.theme-light .cm-tooltip.cm-tooltip-cursor {
|
||||
box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.028), 0px 3.4px 6.7px rgba(0, 0, 0, .042), 0px 5px 20px rgba(0, 0, 0, .07);
|
||||
}
|
||||
|
||||
.theme-dark .cm-tooltip.cm-tooltip-cursor {
|
||||
box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.1),
|
||||
0px 3.4px 6.7px rgba(0, 0, 0, 0.15),
|
||||
0px 0px 30px rgba(0, 0, 0, 0.27);
|
||||
}
|
||||
|
||||
|
||||
/* Highlight brackets */
|
||||
.theme-light .latex-suite-highlighted-bracket, .theme-light .latex-suite-highlighted-bracket [class^="latex-suite-color-bracket-"] {
|
||||
background-color: hsl(var(--accent-h), var(--accent-s), 40%, 0.3);
|
||||
}
|
||||
|
||||
.theme-dark .latex-suite-highlighted-bracket, .theme-dark .latex-suite-highlighted-bracket [class^="latex-suite-color-bracket-"] {
|
||||
background-color: hsl(var(--accent-h), var(--accent-s), 70%, 0.6);
|
||||
}
|
||||
|
||||
|
||||
/* Color matching brackets */
|
||||
|
||||
.theme-light .latex-suite-color-bracket-0, .theme-light .latex-suite-color-bracket-0 .cm-bracket {
|
||||
color: #527aff;
|
||||
}
|
||||
|
||||
.theme-dark .latex-suite-color-bracket-0, .theme-dark .latex-suite-color-bracket-0 .cm-bracket {
|
||||
color: #47b8ff;
|
||||
}
|
||||
|
||||
.theme-light .latex-suite-color-bracket-1, .theme-light .latex-suite-color-bracket-1 .cm-bracket {
|
||||
color: #ff50b7;
|
||||
}
|
||||
|
||||
.theme-dark .latex-suite-color-bracket-1, .theme-dark .latex-suite-color-bracket-1 .cm-bracket {
|
||||
color: #ff55cd;
|
||||
}
|
||||
|
||||
.theme-light .latex-suite-color-bracket-2, .theme-light .latex-suite-color-bracket-2 .cm-bracket {
|
||||
color: #69ba00;
|
||||
}
|
||||
|
||||
.theme-dark .latex-suite-color-bracket-2, .theme-dark .latex-suite-color-bracket-2 .cm-bracket {
|
||||
color: #73ff63;
|
||||
}
|
||||
|
||||
/* .latex-suite-color-bracket-3 {
|
||||
color: #8de15c;
|
||||
} */
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"id": "obsidian-pandoc",
|
||||
"name": "Pandoc Plugin",
|
||||
"version": "0.4.1",
|
||||
"minAppVersion": "0.12.5",
|
||||
"description": "This is a Pandoc export plugin for Obsidian. It provides commands to export to formats like DOCX, ePub and PDF.",
|
||||
"author": "Oliver Balfour",
|
||||
"authorUrl": "https://github.com/OliverBalfour/obsidian-pandoc",
|
||||
"isDesktopOnly": true
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
|
||||
.pandoc-plugin-error {
|
||||
color: red;
|
||||
}
|
||||
|
|
@ -0,0 +1,111 @@
|
|||
{
|
||||
"version": "0.7.52",
|
||||
"endpoint": "https://api.openai.com/v1",
|
||||
"models": [],
|
||||
"api_key": "",
|
||||
"encrypt_keys": false,
|
||||
"selectedProvider": "OpenAI Chat (Langchain)",
|
||||
"max_tokens": 5000,
|
||||
"temperature": 0.7,
|
||||
"frequency_penalty": 0.5,
|
||||
"showStatusBar": true,
|
||||
"outputToBlockQuote": false,
|
||||
"freeCursorOnStreaming": false,
|
||||
"allowJavascriptRun": false,
|
||||
"experiment": false,
|
||||
"promptsPath": "textgenerator/templates",
|
||||
"textGenPath": "textgenerator/",
|
||||
"prefix": "\n\n",
|
||||
"tgSelectionLimiter": "^\\*\\*\\*",
|
||||
"stream": true,
|
||||
"context": {
|
||||
"customInstructEnabled": true,
|
||||
"includeClipboard": true,
|
||||
"customInstruct": "Title: {{title}}\n \nStarred Blocks: {{starredBlocks}}\n\t \n{{tg_selection}}",
|
||||
"contextTemplate": "Title: {{title}}\n\t\nStarred Blocks: {{starredBlocks}}\n\t \n{{tg_selection}}"
|
||||
},
|
||||
"requestTimeout": 300000,
|
||||
"options": {
|
||||
"generate-text": true,
|
||||
"generate-text-with-metadata": true,
|
||||
"insert-generated-text-From-template": true,
|
||||
"create-generated-text-From-template": false,
|
||||
"search-results-batch-generate-from-template": true,
|
||||
"insert-text-From-template": false,
|
||||
"create-text-From-template": false,
|
||||
"show-modal-From-template": true,
|
||||
"open-template-as-tool": true,
|
||||
"open-playground": true,
|
||||
"set_max_tokens": true,
|
||||
"set-llm": true,
|
||||
"set-model": true,
|
||||
"packageManager": true,
|
||||
"create-template": false,
|
||||
"get-title": true,
|
||||
"generated-text-to-clipboard-From-template": false,
|
||||
"calculate-tokens": true,
|
||||
"calculate-tokens-for-template": true,
|
||||
"text-extractor-tool": true,
|
||||
"stop-stream": true,
|
||||
"custom-instruct": true,
|
||||
"generate-in-right-click-menu": false,
|
||||
"batch-generate-in-right-click-files-menu": true,
|
||||
"tg-block-processor": true,
|
||||
"reload": true,
|
||||
"disable-ribbon-icons": false,
|
||||
"overlay-toolbar": false,
|
||||
"log-slowest-operations": false
|
||||
},
|
||||
"advancedOptions": {
|
||||
"generateTitleInstructEnabled": false,
|
||||
"generateTitleInstruct": "Generate a title for the current document (do not use * \" \\ / < > : | ? .):\n{{substring content 0 255}}",
|
||||
"includeAttachmentsInRequest": false
|
||||
},
|
||||
"autoSuggestOptions": {
|
||||
"customInstructEnabled": true,
|
||||
"customInstruct": "Continue the follwing text:\nTitle: {{title}}\n{{query}}",
|
||||
"systemPrompt": "",
|
||||
"isEnabled": false,
|
||||
"allowInNewLine": false,
|
||||
"delay": 300,
|
||||
"numberOfSuggestions": 5,
|
||||
"triggerPhrase": " ",
|
||||
"stop": ".",
|
||||
"showStatus": true,
|
||||
"customProvider": false,
|
||||
"inlineSuggestions": false,
|
||||
"overrideTrigger": " "
|
||||
},
|
||||
"slashSuggestOptions": {
|
||||
"isEnabled": false,
|
||||
"triggerPhrase": "/"
|
||||
},
|
||||
"extractorsOptions": {
|
||||
"PDFExtractor": true,
|
||||
"WebPageExtractor": true,
|
||||
"YoutubeExtractor": true,
|
||||
"AudioExtractor": false,
|
||||
"ImageExtractorEmbded": true,
|
||||
"ImageExtractor": true
|
||||
},
|
||||
"displayErrorInEditor": false,
|
||||
"LLMProviderProfiles": {},
|
||||
"LLMProviderOptions": {
|
||||
"whisper": {
|
||||
"base_path": "https://api.openai.com/v1",
|
||||
"model": "whisper-1",
|
||||
"api_key": "",
|
||||
"api_version": ""
|
||||
},
|
||||
"OpenAI Chat (Langchain)": {
|
||||
"basePath": "https://api.openai.com/v1",
|
||||
"api_key": "",
|
||||
"model": "gpt-4.1-2025-04-14"
|
||||
}
|
||||
},
|
||||
"LLMProviderOptionsKeysHashed": {
|
||||
"whisper.api_key": "__@#key_prefix#@__",
|
||||
"OpenAI Chat (Langchain).api_key": "__@#key_prefix#@__sk-proj-oWU0tlGiv5ukuqLfedNl7PPMotGeEKY7J0KBZCvPj83AUlIzS8Iy5vO0l1I4EsYeRy8p6QS__dT3BlbkFJ05HU-1BGDxeC34A5ELUWDdlpx8YyONSQ51jdBs5F3FdLMORwGls1FNGcRq6-eL98Xh9-qXzHkA"
|
||||
},
|
||||
"api_key_encrypted": "__@#key_prefix#@__sk-proj-oWU0tlGiv5ukuqLfedNl7PPMotGeEKY7J0KBZCvPj83AUlIzS8Iy5vO0l1I4EsYeRy8p6QS__dT3BlbkFJ05HU-1BGDxeC34A5ELUWDdlpx8YyONSQ51jdBs5F3FdLMORwGls1FNGcRq6-eL98Xh9-qXzHkA"
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"id": "obsidian-textgenerator-plugin",
|
||||
"name": "Text Generator",
|
||||
"version": "0.7.52",
|
||||
"minAppVersion": "1.6.0",
|
||||
"description": "Text generation using AI",
|
||||
"author": "Noureddine Haouari",
|
||||
"authorUrl": "https://text-gen.com",
|
||||
"isDesktopOnly": false,
|
||||
"fundingUrl": "https://www.buymeacoffee.com/haouarine"
|
||||
}
|
||||
|
|
@ -0,0 +1,189 @@
|
|||
/*
|
||||
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);
|
||||
|
||||
// src/main.ts
|
||||
var main_exports = {};
|
||||
__export(main_exports, {
|
||||
default: () => TidyFootnotes
|
||||
});
|
||||
module.exports = __toCommonJS(main_exports);
|
||||
var import_obsidian = require("obsidian");
|
||||
|
||||
// src/tidyFootnotes.ts
|
||||
var reKey = /\[\^(.+?(?=\]))\]/gi;
|
||||
var reDefinition = /^\[\^([^\]]+)\]\:/;
|
||||
function isNumeric(value) {
|
||||
return !isNaN(value - parseFloat(value));
|
||||
}
|
||||
function tidyFootnotes(editor) {
|
||||
let markers = [];
|
||||
let definitions = /* @__PURE__ */ new Map();
|
||||
let firstDefinitionLine = -1;
|
||||
let definitionsIndexed = /* @__PURE__ */ new Map();
|
||||
const lineCount = editor.lineCount();
|
||||
let prevKey = "";
|
||||
for (let i = 0; i < lineCount; i++) {
|
||||
const line = editor.getLine(i);
|
||||
let isDefinition = false;
|
||||
let match;
|
||||
if (prevKey.length) {
|
||||
const hasIndent = /^[ \t]/.test(line);
|
||||
const isLastLine = i === lineCount - 1;
|
||||
if (hasIndent || line.length === 0 && !isLastLine) {
|
||||
const value = definitions.get(prevKey);
|
||||
definitions.set(prevKey, value + "\n" + line);
|
||||
markers[markers.length - 1].length++;
|
||||
continue;
|
||||
} else {
|
||||
prevKey = "";
|
||||
}
|
||||
}
|
||||
while ((match = reDefinition.exec(line)) !== null) {
|
||||
if (match.length < 1)
|
||||
return;
|
||||
isDefinition = true;
|
||||
let key = match[1];
|
||||
let value = line.substring(match[0].length);
|
||||
definitions.set(key, value);
|
||||
prevKey = key;
|
||||
let marker = {
|
||||
key,
|
||||
line: i,
|
||||
index: 0,
|
||||
length: 0,
|
||||
isDefinition: true
|
||||
};
|
||||
markers.push(marker);
|
||||
if (firstDefinitionLine === -1) {
|
||||
firstDefinitionLine = i;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (isDefinition)
|
||||
continue;
|
||||
while ((match = reKey.exec(line)) !== null) {
|
||||
if (match.length < 1)
|
||||
return;
|
||||
let key = match[1];
|
||||
let marker = {
|
||||
key,
|
||||
line: i,
|
||||
index: match.index,
|
||||
length: match[0].length,
|
||||
isDefinition: false
|
||||
};
|
||||
markers.push(marker);
|
||||
if (!definitionsIndexed.has(key)) {
|
||||
definitionsIndexed.set(key, {
|
||||
key,
|
||||
newKey: key,
|
||||
isNumber: isNumeric(key),
|
||||
value: ""
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
definitions.forEach((value, key) => {
|
||||
definitionsIndexed.set(key, {
|
||||
key,
|
||||
newKey: key,
|
||||
isNumber: isNumeric(key),
|
||||
value
|
||||
});
|
||||
});
|
||||
let count = 1;
|
||||
let definitionsStr = "";
|
||||
definitionsIndexed.forEach((definition, marker) => {
|
||||
let key = definition.key;
|
||||
if (definition.isNumber) {
|
||||
const current = definitionsIndexed.get(marker);
|
||||
key = count.toString();
|
||||
definitionsIndexed.set(marker, {
|
||||
...current,
|
||||
newKey: key
|
||||
});
|
||||
count++;
|
||||
}
|
||||
definitionsStr += `[^${key}]:${definition.value}
|
||||
`;
|
||||
});
|
||||
const markersCount = markers.length;
|
||||
for (let i = markersCount - 1; i >= 0; i--) {
|
||||
const marker = markers[i];
|
||||
const markerLine = marker.line;
|
||||
if (marker.isDefinition) {
|
||||
let rangeStart, rangeEnd;
|
||||
const lineEnd = markerLine + 1 + marker.length;
|
||||
if (lineEnd === editor.lineCount()) {
|
||||
rangeStart = { line: markerLine, ch: 0 };
|
||||
rangeEnd = { line: lineEnd - 1, ch: Infinity };
|
||||
} else {
|
||||
rangeStart = { line: markerLine, ch: 0 };
|
||||
rangeEnd = { line: lineEnd, ch: 0 };
|
||||
}
|
||||
if (markerLine === firstDefinitionLine) {
|
||||
editor.replaceRange(definitionsStr, rangeStart, rangeEnd);
|
||||
continue;
|
||||
}
|
||||
editor.replaceRange("", rangeStart, rangeEnd);
|
||||
continue;
|
||||
}
|
||||
const definition = definitionsIndexed.get(marker.key);
|
||||
const newKey = definition.newKey;
|
||||
if (marker.key === newKey)
|
||||
continue;
|
||||
const line = editor.getLine(markerLine);
|
||||
const prefix = line.substring(0, marker.index);
|
||||
const newMarker = `[^${newKey}]`;
|
||||
const suffix = line.substr(marker.index + marker.length);
|
||||
const newLine = prefix + newMarker + suffix;
|
||||
editor.replaceRange(
|
||||
newLine,
|
||||
{ line: markerLine, ch: 0 },
|
||||
{ line: markerLine, ch: Infinity }
|
||||
);
|
||||
}
|
||||
if (firstDefinitionLine == -1) {
|
||||
const lineCount2 = editor.lineCount();
|
||||
editor.replaceRange(
|
||||
"\n\n" + definitionsStr,
|
||||
{ line: lineCount2, ch: 0 },
|
||||
{ line: lineCount2, ch: Infinity }
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// src/main.ts
|
||||
var TidyFootnotes = class extends import_obsidian.Plugin {
|
||||
async onload() {
|
||||
this.addCommand({
|
||||
id: "tidy-footnotes",
|
||||
name: "Tidy Footnotes",
|
||||
editorCallback: (editor, view) => {
|
||||
tidyFootnotes(editor);
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/* nosourcemap */
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"id": "obsidian-tidy-footnotes",
|
||||
"name": "Tidy Footnotes",
|
||||
"version": "0.1.2",
|
||||
"minAppVersion": "0.11.13",
|
||||
"description": "Tidy your footnotes seamlessly.",
|
||||
"author": "Charlie Chao",
|
||||
"authorUrl": "https://github.com/charliecm",
|
||||
"fundingUrl": "https://www.buymeacoffee.com/charliecm",
|
||||
"isDesktopOnly": false
|
||||
}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"database": "Zotero",
|
||||
"noteImportFolder": "lib/citations",
|
||||
"pdfExportImageDPI": 120,
|
||||
"pdfExportImageFormat": "png",
|
||||
"pdfExportImageQuality": 90,
|
||||
"citeFormats": [
|
||||
{
|
||||
"name": "Citation",
|
||||
"format": "formatted-citation"
|
||||
},
|
||||
{
|
||||
"name": "Pandoc",
|
||||
"format": "pandoc",
|
||||
"brackets": true
|
||||
}
|
||||
],
|
||||
"exportFormats": [],
|
||||
"citeSuggestTemplate": "[[{{citekey}}]]",
|
||||
"openNoteAfterImport": false,
|
||||
"whichNotesToOpenAfterImport": "first-imported-note"
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"id": "obsidian-zotero-desktop-connector",
|
||||
"name": "Zotero Integration",
|
||||
"version": "3.2.1",
|
||||
"minAppVersion": "1.1.1",
|
||||
"description": "Insert and import citations, bibliographies, notes, and PDF annotations from Zotero.",
|
||||
"author": "mgmeyers",
|
||||
"authorUrl": "https://github.com/mgmeyers/obsidian-zotero-integration",
|
||||
"isDesktopOnly": true
|
||||
}
|
||||
BIN
.obsidian/plugins/obsidian-zotero-desktop-connector/pdfannots2json-linux-x64
vendored
Executable file
|
|
@ -0,0 +1,238 @@
|
|||
.zt-format {
|
||||
border: 1px solid var(--background-modifier-border);
|
||||
padding: 1rem;
|
||||
background-color: var(--background-primary);
|
||||
border-radius: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.zt-format__form {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: stretch;
|
||||
margin-bottom: 1rem;
|
||||
max-width: 600px;
|
||||
}
|
||||
|
||||
.zt-format__form:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.zt-format__label {
|
||||
font-size: 0.9em;
|
||||
font-weight: 600;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.is-deprecated .zt-format__label {
|
||||
color: var(--text-error);
|
||||
}
|
||||
|
||||
.zt-format__input-wrapper {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.zt-format__input-wrapper textarea {
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
.zt-format__input-wrapper > *:not(.checkbox-container) {
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.is-deprecated .zt-format__input-wrapper button {
|
||||
width: auto !important;
|
||||
flex-grow: 0;
|
||||
flex-shrink: 0;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.zt-format__delete-btn {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
line-height: 1;
|
||||
padding: 7px 9px;
|
||||
margin-left: 10px;
|
||||
flex-shrink: 0;
|
||||
flex-grow: 0;
|
||||
}
|
||||
|
||||
.zt-json-viewer {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.zt-json-viewer .react-json-view {
|
||||
padding: 1em;
|
||||
border-radius: 10px;
|
||||
margin-top: 1em;
|
||||
overflow: auto;
|
||||
font-family: var(--font-monospace) !important;
|
||||
}
|
||||
|
||||
.zt-json-viewer__btns {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
|
||||
.zt-json-viewer__btns label {
|
||||
display: block;
|
||||
font-weight: bold;
|
||||
padding-top: 1em;
|
||||
}
|
||||
|
||||
.zt-json-viewer__btns select {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
.zt-json-viewer__btns button {
|
||||
font-size: 1em;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.zt-json-viewer__preview,
|
||||
.zt-json-viewer__data {
|
||||
border: 1px solid var(--background-modifier-border);
|
||||
border-radius: 10px;
|
||||
padding: 1em;
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
.zt-json-viewer__preview.error {
|
||||
background-color: #ff000011;
|
||||
font-family: var(--font-monospace);
|
||||
}
|
||||
|
||||
.zt-json-viewer__preview pre {
|
||||
overflow: auto;
|
||||
white-space: pre-wrap;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.zt-json-viewer__preview pre,
|
||||
.zt-json-viewer__preview code {
|
||||
font-family: inherit;
|
||||
}
|
||||
|
||||
.zt-json-viewer__preview:not(.error) pre {
|
||||
font-family: var(--font-text, --font-default, --default-font);
|
||||
max-height: 70vh;
|
||||
min-height: 400px;
|
||||
}
|
||||
|
||||
.zt-multiselect {
|
||||
width: 300px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.zt-multiselect input {
|
||||
outline: none !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
.zt-format__input-note {
|
||||
font-style: italic;
|
||||
font-size: 0.9em;
|
||||
padding-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.zt-setting-item pre,
|
||||
.zt-format__input-note pre {
|
||||
display: inline-block;
|
||||
margin: 0;
|
||||
padding: 0 6px;
|
||||
background-color: var(--background-secondary-alt);
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.zt-asset-success {
|
||||
text-align: left;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.zt-asset-success__icon {
|
||||
color: var(--interactive-success);
|
||||
font-size: 24px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.zt-asset-success__icon svg {
|
||||
width: 1em !important;
|
||||
height: 1em !important;
|
||||
}
|
||||
|
||||
.zt-asset-success__message {
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.zt-suggest-title {
|
||||
font-size: var(--font-ui-small);
|
||||
color: var(--text-muted);
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
padding-top: var(--size-4-1);
|
||||
}
|
||||
|
||||
.zt-suggest-loading-wrapper {
|
||||
display: flex;
|
||||
position: relative;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: var(--size-4-2) 0;
|
||||
}
|
||||
|
||||
.zt-suggest-loading,
|
||||
.zt-suggest-loading:before,
|
||||
.zt-suggest-loading:after {
|
||||
border-radius: 999px;
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
animation-fill-mode: both;
|
||||
animation: bblFadInOut 1.6s infinite ease-in-out;
|
||||
}
|
||||
|
||||
.zt-suggest-loading {
|
||||
display: block;
|
||||
color: var(--text-muted);
|
||||
font-size: 7px;
|
||||
position: relative;
|
||||
animation-delay: -0.16s;
|
||||
top: -1em;
|
||||
}
|
||||
.zt-suggest-loading:before,
|
||||
.zt-suggest-loading:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
}
|
||||
.zt-suggest-loading:before {
|
||||
left: -2em;
|
||||
animation-delay: -0.32s;
|
||||
}
|
||||
.zt-suggest-loading:after {
|
||||
left: 2em;
|
||||
}
|
||||
|
||||
.zt-color-chip {
|
||||
display: inline-block;
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
border: 1px solid var(--background-modifier-border);
|
||||
border-radius: var(--radius-s);
|
||||
margin-right: var(--size-4-1);
|
||||
}
|
||||
|
||||
@keyframes bblFadInOut {
|
||||
0%,
|
||||
80%,
|
||||
100% {
|
||||
box-shadow: 0 1em 0 -1.3em;
|
||||
}
|
||||
40% {
|
||||
box-shadow: 0 1em 0 0;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
/* Established: green */
|
||||
.callout[data-callout="established"] {
|
||||
--callout-color: 0, 150, 0;
|
||||
--callout-icon: check-circle; /* ✅ valid Lucide icon */
|
||||
background-color: rgba(0, 150, 0, 0.05);
|
||||
border-left: 4px solid rgb(0, 150, 0);
|
||||
}
|
||||
|
||||
/* Proposed: blue */
|
||||
.callout[data-callout="proposed"] {
|
||||
--callout-color: 0, 120, 255;
|
||||
--callout-icon: lightbulb; /* ✅ Lucide name is “lightbulb” (no dash) */
|
||||
background-color: rgba(0, 120, 255, 0.05);
|
||||
border-left: 4px solid rgb(0, 120, 255);
|
||||
}
|
||||
|
||||
/* Speculative: purple */
|
||||
.callout[data-callout="speculative"] {
|
||||
--callout-color: 128, 0, 128;
|
||||
--callout-icon: help-circle; /* ✅ Lucide equivalent of “question-circle” */
|
||||
background-color: rgba(128, 0, 128, 0.05);
|
||||
border-left: 4px solid rgb(128, 0, 128);
|
||||
}
|
||||
|
|
@ -0,0 +1,125 @@
|
|||
{
|
||||
"packagesHash": {
|
||||
"default": {
|
||||
"packageId": "default",
|
||||
"name": "Default Prompts Package",
|
||||
"version": "0.0.9",
|
||||
"minTextGeneratorVersion": "0.5.0",
|
||||
"description": "This is the main package that comes with Text Generator plugin in Obsidian",
|
||||
"author": "Noureddine Haouari",
|
||||
"tags": "writing, brainstorming",
|
||||
"authorUrl": "https://www.buymeacoffee.com/haouarine",
|
||||
"repo": "text-gen/gpt-3-prompt-templates"
|
||||
},
|
||||
"dalle": {
|
||||
"packageId": "dalle",
|
||||
"name": "OpenAI Dalle Package",
|
||||
"version": "0.1.1",
|
||||
"minTextGeneratorVersion": "0.7.0",
|
||||
"description": "The package contains some interessting Dalle-2/Dalle-3 prompt templates",
|
||||
"author": "Noureddine Haouari",
|
||||
"tags": "photo, dalle-2, dalle-3",
|
||||
"authorUrl": "https://www.buymeacoffee.com/haouarine",
|
||||
"repo": "text-gen/tg-dalle-package"
|
||||
},
|
||||
"huggingface": {
|
||||
"packageId": "huggingface",
|
||||
"name": "Huggingface Prompts Package",
|
||||
"version": "0.0.4",
|
||||
"minTextGeneratorVersion": "0.5.0",
|
||||
"description": "Huggingface Prompts comes with Text Generator plugin in Obsidian",
|
||||
"author": "Noureddine Haouari",
|
||||
"tags": "writing, brainstorming, huggingface",
|
||||
"authorUrl": "https://www.buymeacoffee.com/haouarine",
|
||||
"repo": "text-gen/huggingface"
|
||||
},
|
||||
"awesomePrompts": {
|
||||
"packageId": "awesomePrompts",
|
||||
"name": "Awesome Prompts",
|
||||
"version": "0.0.3",
|
||||
"minTextGeneratorVersion": "0.5.7",
|
||||
"description": "This repo includes ChatGPT prompt curation to use ChatGPT better.",
|
||||
"author": "f",
|
||||
"tags": "writing, brainstorming, awesome",
|
||||
"authorUrl": "https://github.com/f/awesome-chatgpt-prompts",
|
||||
"repo": "text-gen/awesome-tg-package"
|
||||
},
|
||||
"tts": {
|
||||
"packageId": "tts",
|
||||
"name": "Text To Speech Package",
|
||||
"version": "0.0.3",
|
||||
"minTextGeneratorVersion": "0.6.0",
|
||||
"description": "Contains Text To Speech Templates and support for TTS for other templates",
|
||||
"author": "Noureddine",
|
||||
"tags": "TTS, Speak",
|
||||
"authorUrl": "https://www.buymeacoffee.com/haouarine",
|
||||
"repo": "text-gen/TTS"
|
||||
},
|
||||
"vision": {
|
||||
"packageId": "vision",
|
||||
"name": "Vision Package",
|
||||
"version": "0.0.2",
|
||||
"minTextGeneratorVersion": "0.6.0",
|
||||
"description": "Contains Vision Templates and support for Vision for other templates (Scripts)",
|
||||
"author": "Noureddine",
|
||||
"tags": "OpenAI,markdown,gpt-4-vision,vision,images",
|
||||
"authorUrl": "https://www.buymeacoffee.com/haouarine",
|
||||
"repo": "text-gen/tg-vision"
|
||||
},
|
||||
"smartConnections": {
|
||||
"packageId": "smartConnections",
|
||||
"name": "Smart Connections Package",
|
||||
"version": "0.0.2",
|
||||
"minTextGeneratorVersion": "0.6.0",
|
||||
"description": "Contains Smart Connection Templates and support for Smart Connections for other templates (Script)",
|
||||
"author": "Noureddine",
|
||||
"tags": "smartConnections,smart-connections",
|
||||
"authorUrl": "https://www.buymeacoffee.com/haouarine",
|
||||
"repo": "text-gen/tg-smartConnections"
|
||||
},
|
||||
"Experimental": {
|
||||
"packageId": "Experimental",
|
||||
"name": "Experimental Package",
|
||||
"version": "0.0.2",
|
||||
"minTextGeneratorVersion": "0.6.6",
|
||||
"description": "Contains experimental templates",
|
||||
"author": "Noureddine",
|
||||
"tags": "experiments",
|
||||
"authorUrl": "https://www.buymeacoffee.com/haouarine",
|
||||
"repo": "text-gen/experimental-package"
|
||||
},
|
||||
"testExtension": {
|
||||
"core": true,
|
||||
"type": "feature",
|
||||
"packageId": "testExtension",
|
||||
"name": "test extension Package",
|
||||
"version": "0.0.1",
|
||||
"minTextGeneratorVersion": "0.1.0",
|
||||
"description": "testing extension package",
|
||||
"author": "Noureddine Haouari",
|
||||
"tags": "testing",
|
||||
"authorUrl": "https://www.buymeacoffee.com/haouarine",
|
||||
"repo": "text-gen/gpt-3-prompt-templates",
|
||||
"folderName": "testExtension",
|
||||
"price": 20,
|
||||
"installed": false
|
||||
},
|
||||
"excalidraw": {
|
||||
"packageId": "excalidraw",
|
||||
"name": "excalidraw package",
|
||||
"version": "0.0.1",
|
||||
"minTextGeneratorVersion": "0.6.0",
|
||||
"description": "Contains Excalidraw Templates and support for Excalidraw for other templates (Scripts)",
|
||||
"author": "Noureddine",
|
||||
"tags": "OpenAI,markdown,gpt-4-vision,vision,images",
|
||||
"authorUrl": "https://www.buymeacoffee.com/haouarine",
|
||||
"repo": "text-gen/tg-excalidraw",
|
||||
"core": true,
|
||||
"folderName": "excalidrawPackage",
|
||||
"price": 2
|
||||
}
|
||||
},
|
||||
"resources": {},
|
||||
"installedPackagesHash": {},
|
||||
"subscriptions": []
|
||||
}
|
||||
|
|
@ -0,0 +1,305 @@
|
|||
{
|
||||
"main": {
|
||||
"id": "13449f33e64774f2",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "5235c353398dcc73",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "aea7b6310a1ff6ff",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "README.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "README"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "849ec88cd31ecf9d",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "chapters/02_Chapter2.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "02_Chapter2"
|
||||
}
|
||||
}
|
||||
],
|
||||
"currentTab": 1
|
||||
}
|
||||
],
|
||||
"direction": "vertical"
|
||||
},
|
||||
"left": {
|
||||
"id": "67922355969bb056",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "598afa877fe1bb39",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "6852f526864219b9",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "file-explorer",
|
||||
"state": {
|
||||
"sortOrder": "alphabetical",
|
||||
"autoReveal": false
|
||||
},
|
||||
"icon": "lucide-folder-closed",
|
||||
"title": "Files"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "7d301da3d1a9d5c6",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "search",
|
||||
"state": {
|
||||
"query": "",
|
||||
"matchingCase": false,
|
||||
"explainSearch": false,
|
||||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical"
|
||||
},
|
||||
"icon": "lucide-search",
|
||||
"title": "Search"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "d48d2341f0531a13",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "bookmarks",
|
||||
"state": {},
|
||||
"icon": "lucide-bookmark",
|
||||
"title": "Bookmarks"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"direction": "horizontal",
|
||||
"width": 314.5
|
||||
},
|
||||
"right": {
|
||||
"id": "90580ebd1e9dc8ca",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "d26d04f5808162e3",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "bc1666f8a3e96276",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "backlink",
|
||||
"state": {
|
||||
"file": "Overview.md",
|
||||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical",
|
||||
"showSearch": false,
|
||||
"searchQuery": "",
|
||||
"backlinkCollapsed": false,
|
||||
"unlinkedCollapsed": true
|
||||
},
|
||||
"icon": "links-coming-in",
|
||||
"title": "Backlinks for Overview"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "13d6b9a0edc96e4e",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "outgoing-link",
|
||||
"state": {
|
||||
"file": "Overview.md",
|
||||
"linksCollapsed": false,
|
||||
"unlinkedCollapsed": true
|
||||
},
|
||||
"icon": "links-going-out",
|
||||
"title": "Outgoing links from Overview"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "4a16b6dfac736602",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "tag",
|
||||
"state": {
|
||||
"sortOrder": "frequency",
|
||||
"useHierarchy": true,
|
||||
"showSearch": false,
|
||||
"searchQuery": ""
|
||||
},
|
||||
"icon": "lucide-tags",
|
||||
"title": "Tags"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "532aba63080bec4a",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "outline",
|
||||
"state": {
|
||||
"file": "Overview.md",
|
||||
"followCursor": false,
|
||||
"showSearch": false,
|
||||
"searchQuery": ""
|
||||
},
|
||||
"icon": "lucide-list",
|
||||
"title": "Outline of Overview"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "c8db6b72741a9d4b",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "mathpad-view",
|
||||
"state": {},
|
||||
"icon": "sigma",
|
||||
"title": "Mathpad"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "64e24401056a4d61",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "footnotes",
|
||||
"state": {
|
||||
"file": "Overview.md"
|
||||
},
|
||||
"icon": "lucide-file-signature",
|
||||
"title": "Footnotes"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "98920b42f0f96962",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "all-properties",
|
||||
"state": {
|
||||
"sortOrder": "frequency",
|
||||
"showSearch": false,
|
||||
"searchQuery": ""
|
||||
},
|
||||
"icon": "lucide-archive",
|
||||
"title": "All properties"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "c82b96de747e4f49",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "mathpad-view",
|
||||
"state": {},
|
||||
"icon": "lucide-ghost",
|
||||
"title": "mathpad-view"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "d7755e6f1840f0db",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "mathpad-view",
|
||||
"state": {},
|
||||
"icon": "lucide-ghost",
|
||||
"title": "mathpad-view"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "3a8c745a515b4510",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "mathpad-view",
|
||||
"state": {},
|
||||
"icon": "sigma",
|
||||
"title": "Mathpad"
|
||||
}
|
||||
}
|
||||
],
|
||||
"currentTab": 4
|
||||
}
|
||||
],
|
||||
"direction": "horizontal",
|
||||
"width": 200,
|
||||
"collapsed": true
|
||||
},
|
||||
"left-ribbon": {
|
||||
"hiddenItems": {
|
||||
"switcher:Open quick switcher": false,
|
||||
"graph:Open graph view": false,
|
||||
"canvas:Create new canvas": false,
|
||||
"templates:Insert template": false,
|
||||
"command-palette:Open command palette": false,
|
||||
"bases:Create new base": false,
|
||||
"obsidian-excalidraw-plugin:New drawing": false,
|
||||
"mathpad:Open Mathpad": false,
|
||||
"obsidian-kanban:Create new board": false
|
||||
}
|
||||
},
|
||||
"active": "849ec88cd31ecf9d",
|
||||
"lastOpenFiles": [
|
||||
"build/b3.html",
|
||||
"build/b3.tex",
|
||||
"build/Paths-to-Perception.tex",
|
||||
"build/Paths-to-Perception.html",
|
||||
"build/conf/style.css",
|
||||
"build/lib/mathjax/ui/safe.js",
|
||||
"build/lib/mathjax/ui/menu.js",
|
||||
"build/lib/mathjax/ui/lazy.js",
|
||||
"build/lib/mathjax/ui",
|
||||
"build/lib/mathjax/sre/mathmaps/sv.json",
|
||||
"build/lib/mathjax/sre/mathmaps/nn.json",
|
||||
"build/lib/img/unit-circle-with-tau.png",
|
||||
"build/lib/img/unit-circle-with-pi.png.png",
|
||||
"build/lib/img/unit-circle-with-pi.png",
|
||||
"build/lib/img/udir-proximity.png",
|
||||
"build/lib/img/directed-proximity.png",
|
||||
"build/lib/img/Unit_circle_angles_color.png",
|
||||
"build/lib/img/Revolving_circles.svg",
|
||||
"build/lib/img/Revolving_circles.480x480_white.png",
|
||||
"build/lib/img/Revolving_circles.480x480.png",
|
||||
"build/lib/img/Poo.png",
|
||||
"README.md",
|
||||
"chapters/02_Chapter2.md",
|
||||
"chapters/00_Introduction.md",
|
||||
"chapters/01_Chapter1.md",
|
||||
"pm/Book Action Items.md",
|
||||
"chapters/Citations.md",
|
||||
"chapters/Terminology.md",
|
||||
"chapters/Unitfication.md",
|
||||
"chapters/03_Cylindrical_Spacetime.md",
|
||||
"chapters/07_Consciousness_Continued.md",
|
||||
"chapters/04_State_Space_Locality.md",
|
||||
"conf/frontmatter_epub.md",
|
||||
"lib/mathjax/package/README.md",
|
||||
"pm/Outline.md",
|
||||
"Chapters/01_Conciousness.md",
|
||||
"chapters/06_Acausal_Computation.md",
|
||||
"chapters/05_Causality.md",
|
||||
"Chapters/00_Introduction.md",
|
||||
"Chapters/04_State_Space_Locality.md",
|
||||
"Chapters/02_Unitfication.md",
|
||||
"Chapters/Unitfication.md",
|
||||
"Chapters/07_Consciousness_Continued.md",
|
||||
"lib/citations/wolframWhatConsciousnessNew2021.md",
|
||||
"Chapters/06_Acausal_Computation.md",
|
||||
"Chapters/05_Causality.md"
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
PANDOC = pandoc
|
||||
BASE = conf/pandoc.yaml
|
||||
|
||||
all: build/pdf build/epub build/html
|
||||
|
||||
pdf:
|
||||
@mkdir -p build
|
||||
$(PANDOC) --defaults=$(BASE) --defaults=conf/pdf.yaml
|
||||
|
||||
epub:
|
||||
@mkdir -p build/media
|
||||
$(PANDOC) --defaults=$(BASE) --defaults=conf/epub.yaml
|
||||
|
||||
html:
|
||||
@mkdir -p build/lib/img build/lib/mathjax build/conf
|
||||
cp -r lib/img build/lib/
|
||||
cp -r lib/mathjax build/lib/
|
||||
cp conf/style.css build/conf/
|
||||
$(PANDOC) --defaults=$(BASE) --defaults=conf/html.yaml
|
||||
|
||||
latex:
|
||||
@mkdir -p build
|
||||
pandoc --defaults=$(BASE) --defaults=conf/latex.yaml
|
||||
|
||||
clean:
|
||||
rm -rf build
|
||||
|
|
@ -0,0 +1,171 @@
|
|||
# beautiful-book-builder
|
||||
|
||||
This is a basic book builder template based on a Pandoc build process in conjunction with a number of other tools to generate PDF, ODT, HTML, LaTex, and Epub book formats from Markdown source content in an Obsidian vault.
|
||||
## Dependencies
|
||||
|
||||
For Debian / ZorinOS and likely Ubuntu based systems.
|
||||
|
||||
> It would be nice to roll a setup script to take care of this.
|
||||
#### Zotero
|
||||
|
||||
- https://www.zotero.org/
|
||||
|
||||
```
|
||||
sudo cp ./scripts/deps/zotero.list /etc/apt/sources.list.d/
|
||||
```
|
||||
|
||||
```
|
||||
sudo apt update
|
||||
```
|
||||
|
||||
```
|
||||
sudo apt install zotero
|
||||
```
|
||||
|
||||
#### Zotero Connector Browser Plugin
|
||||
|
||||
- https://chromewebstore.google.com/detail/zotero-connector/ekhagklcjbdpajgpjgmbionohlpdbjgc
|
||||
|
||||
Provides you the ability to auto add Web resources to your Zotero citation database.
|
||||
#### Obsidian
|
||||
|
||||
- https://obsidian.md/
|
||||
- [Deb Package](https://github.com/obsidianmd/obsidian-releases/releases/download/v1.9.14/obsidian_1.9.14_amd64.deb)
|
||||
|
||||
```
|
||||
sudo apt install https://github.com/obsidianmd/obsidian-releases/releases/download/v1.9.14/obsidian_1.9.14_amd64.deb
|
||||
```
|
||||
#### Pandoc
|
||||
|
||||
- https://pandoc.org/
|
||||
- [Download](https://github.com/jgm/pandoc/releases/tag/3.8.2.1)
|
||||
|
||||
```
|
||||
sudo apt install https://github.com/jgm/pandoc/releases/download/3.8.2.1/pandoc-3.8.2.1-1-amd64.deb
|
||||
```
|
||||
#### make
|
||||
|
||||
```
|
||||
sudo apt install make
|
||||
```
|
||||
#### texlive
|
||||
|
||||
```
|
||||
sudo apt install texlive texlive-xetex texlive-latex-extra texlive-fonts-recommended texlive-fonts-extra
|
||||
```
|
||||
#### lmodern
|
||||
|
||||
```
|
||||
apt install lmodern
|
||||
```
|
||||
#### epubcheck
|
||||
|
||||
```
|
||||
sudo apt install epubcheck
|
||||
```
|
||||
#### foliate
|
||||
|
||||
- https://johnfactotum.github.io/foliate/
|
||||
|
||||
```
|
||||
sudo apt install https://github.com/johnfactotum/foliate/releases/download/2.6.4/com.github.johnfactotum.foliate_2.6.4_all.deb
|
||||
```
|
||||
#### calibre
|
||||
|
||||
- https://calibre-ebook.com
|
||||
|
||||
```
|
||||
sudo apt install calibre
|
||||
```
|
||||
#### MathJax
|
||||
|
||||
- https://www.mathjax.org/
|
||||
|
||||
```
|
||||
wget https://registry.npmjs.org/mathjax/-/mathjax-3.2.2.tgz
|
||||
tar xzf mathjax-3.2.2.tgz
|
||||
mv package/es5/* lib/mathjax
|
||||
rm -rf package mathjax-3.2.2.tgz
|
||||
```
|
||||
|
||||
# Editing the Book
|
||||
|
||||
### Configuration
|
||||
|
||||
- Edit the `conf/pandoc.yaml` file to add or remove chapter Markdown source `input-files` to the book.
|
||||
|
||||
There are a number of other config files for each format:
|
||||
|
||||
```
|
||||
conf
|
||||
├── epub-metadata.xml
|
||||
├── epub_template.html
|
||||
├── epub.yaml
|
||||
├── frontmatter_epub.md
|
||||
├── frontmatter_epub.xhtml
|
||||
├── frontmatter.html
|
||||
├── frontmatter.tex
|
||||
├── header.tex
|
||||
├── html.yaml
|
||||
├── latex.yaml
|
||||
├── pandoc.yaml
|
||||
├── pdf.yaml
|
||||
├── style.css
|
||||
└── style_epub.css
|
||||
```
|
||||
|
||||
#### Per format Configs
|
||||
- `pdf.yaml`
|
||||
- `html.yaml`
|
||||
- `latex.yaml`
|
||||
- `epub.yaml`
|
||||
|
||||
### FrontMatter Config
|
||||
|
||||
There are 2 Version of the FrontMatter for PDF, and HTML bases formats that set the Title, Author, Verizon, Copyright, etc...
|
||||
|
||||
- `frontmatter.tex`
|
||||
- `frontmatter.html`
|
||||
- `frontmatter_epub.*` - Work in Progress
|
||||
|
||||
> There is probably a better way to do this.
|
||||
|
||||
### Editing Content
|
||||
|
||||
To edit the book open the `beautiful-book-builder` directory as an Obsidian Vault.
|
||||
|
||||
- Edit the Markdown content in the `chapters` directory.
|
||||
|
||||
### Citations
|
||||
|
||||
> Note: the Zotero database needs configured to export automatically to `lib/citations.bib`
|
||||
|
||||
To insert a Zotero Citation
|
||||
- Ensure the Zotero App and DB are running on you system.
|
||||
- Alt + I (to insert citation)
|
||||
- Search for and select citation reference
|
||||
|
||||
# Building the Book
|
||||
|
||||
#### PDF
|
||||
|
||||
```
|
||||
make pdf
|
||||
```
|
||||
#### HTML
|
||||
|
||||
```
|
||||
make html
|
||||
```
|
||||
#### LaTex
|
||||
|
||||
```
|
||||
make latex
|
||||
```
|
||||
#### EPub
|
||||
|
||||
> Note: This configuration still needs work.
|
||||
|
||||
```
|
||||
make epub
|
||||
```
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
#!/bin/bash
|
||||
|
||||
# set -e
|
||||
|
||||
# echo "=== Building PDF ==="
|
||||
# pandoc --defaults=pandoc.yaml -o build/Paths-to-Perception.pdf
|
||||
|
||||
# echo "=== Building EPUB ==="
|
||||
# pandoc --defaults=pandoc.yaml \
|
||||
# # --mathjax \
|
||||
# -t epub \
|
||||
# --epub-cover-image=lib/img/Revolving_circles.480x480_white.png \
|
||||
# -o build/Paths-to-Perception.epub
|
||||
|
||||
# echo "=== Building HTML ==="
|
||||
# pandoc --defaults=pandoc.yaml \
|
||||
# # --mathjax \
|
||||
# -t html5 \
|
||||
# -s \
|
||||
# -o build/Paths-to-Perception.html
|
||||
|
||||
# echo "=== Done ==="
|
||||
|
||||
# # Open PDF automatically if on macOS
|
||||
# if command -v open >/dev/null; then
|
||||
# open build/Paths-to-Perception.pdf
|
||||
# fi
|
||||
|
||||
|
||||
set -e
|
||||
|
||||
echo "=== PDF ==="
|
||||
pandoc --defaults=conf/pandoc.yaml --defaults=conf/pdf.yaml
|
||||
|
||||
echo "=== EPUB ==="
|
||||
pandoc --defaults=conf/pandoc.yaml --defaults=conf/epub.yaml \
|
||||
--epub-cover-image=lib/img/Revolving_circles.480x480_white.png
|
||||
|
||||
echo "=== HTML ==="
|
||||
pandoc --defaults=conf/pandoc.yaml --defaults=conf/html.yaml
|
||||
|
||||
echo "✅ All formats built in ./build"
|
||||
|
|
@ -0,0 +1,947 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="generator" content="pandoc" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
<title>00_Introduction</title>
|
||||
<style>
|
||||
/* Default styles provided by pandoc.
|
||||
** See https://pandoc.org/MANUAL.html#variables-for-html for config info.
|
||||
*/
|
||||
code{white-space: pre-wrap;}
|
||||
span.smallcaps{font-variant: small-caps;}
|
||||
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
||||
div.column{flex: auto; overflow-x: auto;}
|
||||
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
||||
/* The extra [class] is a hack that increases specificity enough to
|
||||
override a similar rule in reveal.js */
|
||||
ul.task-list[class]{list-style: none;}
|
||||
ul.task-list li input[type="checkbox"] {
|
||||
font-size: inherit;
|
||||
width: 0.8em;
|
||||
margin: 0 0.8em 0.2em -1.6em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
|
||||
/* CSS for syntax highlighting */
|
||||
html { -webkit-text-size-adjust: 100%; }
|
||||
pre > code.sourceCode { white-space: pre; position: relative; }
|
||||
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
|
||||
pre > code.sourceCode > span:empty { height: 1.2em; }
|
||||
.sourceCode { overflow: visible; }
|
||||
code.sourceCode > span { color: inherit; text-decoration: inherit; }
|
||||
div.sourceCode { margin: 1em 0; }
|
||||
pre.sourceCode { margin: 0; }
|
||||
@media screen {
|
||||
div.sourceCode { overflow: auto; }
|
||||
}
|
||||
@media print {
|
||||
pre > code.sourceCode { white-space: pre-wrap; }
|
||||
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
|
||||
}
|
||||
pre.numberSource code
|
||||
{ counter-reset: source-line 0; }
|
||||
pre.numberSource code > span
|
||||
{ position: relative; left: -4em; counter-increment: source-line; }
|
||||
pre.numberSource code > span > a:first-child::before
|
||||
{ content: counter(source-line);
|
||||
position: relative; left: -1em; text-align: right; vertical-align: baseline;
|
||||
border: none; display: inline-block;
|
||||
-webkit-touch-callout: none; -webkit-user-select: none;
|
||||
-khtml-user-select: none; -moz-user-select: none;
|
||||
-ms-user-select: none; user-select: none;
|
||||
padding: 0 4px; width: 4em;
|
||||
color: #aaaaaa;
|
||||
}
|
||||
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
|
||||
div.sourceCode
|
||||
{ }
|
||||
@media screen {
|
||||
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
|
||||
}
|
||||
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
|
||||
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
|
||||
code span.at { color: #7d9029; } /* Attribute */
|
||||
code span.bn { color: #40a070; } /* BaseN */
|
||||
code span.bu { color: #008000; } /* BuiltIn */
|
||||
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
|
||||
code span.ch { color: #4070a0; } /* Char */
|
||||
code span.cn { color: #880000; } /* Constant */
|
||||
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
|
||||
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
|
||||
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
|
||||
code span.dt { color: #902000; } /* DataType */
|
||||
code span.dv { color: #40a070; } /* DecVal */
|
||||
code span.er { color: #ff0000; font-weight: bold; } /* Error */
|
||||
code span.ex { } /* Extension */
|
||||
code span.fl { color: #40a070; } /* Float */
|
||||
code span.fu { color: #06287e; } /* Function */
|
||||
code span.im { color: #008000; font-weight: bold; } /* Import */
|
||||
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
|
||||
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
|
||||
code span.op { color: #666666; } /* Operator */
|
||||
code span.ot { color: #007020; } /* Other */
|
||||
code span.pp { color: #bc7a00; } /* Preprocessor */
|
||||
code span.sc { color: #4070a0; } /* SpecialChar */
|
||||
code span.ss { color: #bb6688; } /* SpecialString */
|
||||
code span.st { color: #4070a0; } /* String */
|
||||
code span.va { color: #19177c; } /* Variable */
|
||||
code span.vs { color: #4070a0; } /* VerbatimString */
|
||||
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
|
||||
/* CSS for citations */
|
||||
div.csl-bib-body { }
|
||||
div.csl-entry {
|
||||
clear: both;
|
||||
}
|
||||
.hanging-indent div.csl-entry {
|
||||
margin-left:2em;
|
||||
text-indent:-2em;
|
||||
}
|
||||
div.csl-left-margin {
|
||||
min-width:2em;
|
||||
float:left;
|
||||
}
|
||||
div.csl-right-inline {
|
||||
margin-left:2em;
|
||||
padding-left:1em;
|
||||
}
|
||||
div.csl-indent {
|
||||
margin-left: 2em;
|
||||
} </style>
|
||||
<link rel="stylesheet" href="conf/style.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="frontmatter">
|
||||
|
||||
<!-- Title Page -->
|
||||
<h1 style="margin-top:3em; font-size:2.4em; text-align:center;">Big Beautiful Book</h1>
|
||||
<h2 style="text-align:center; font-weight:normal;">A book</h2>
|
||||
|
||||
<div style="text-align:center; margin:2em 0;">
|
||||
<img src="lib/img/Revolving_circles.480x480_white.png" alt="Cover illustration" style="max-width:240px;">
|
||||
</div>
|
||||
|
||||
<h3 style="text-align:center;">John Haverlack</h3>
|
||||
<p style="text-align:center;">© 2025 — CC BY-ND 4.0</p>
|
||||
|
||||
<hr style="margin:3em 0;">
|
||||
|
||||
|
||||
<!-- Metadata Page (PDF analog) -->
|
||||
<div style="text-align:center; margin-top:5em;">
|
||||
<p><strong>Author</strong>: John Haverlack</p>
|
||||
<p><strong>Copyright</strong>: © 2025 John Haverlack</p>
|
||||
<p><strong>License</strong>: CC BY-ND 4.0</p>
|
||||
<p><strong>Version</strong>: 0.0.1</p>
|
||||
<p><strong>Date</strong>: 2025-11-05</p>
|
||||
</div>
|
||||
|
||||
<hr style="margin:3em 0;">
|
||||
|
||||
|
||||
<!-- Image attribution + perception note (PDF analog) -->
|
||||
<div style="max-width:40em; margin:auto;">
|
||||
|
||||
<div style="width:100%; text-align:center; display:block; margin:1em 0;">
|
||||
<img src="lib/img/Revolving_circles.480x480_white.png"
|
||||
alt="Revolving Circles optical illusion"
|
||||
style="display:inline-block; max-width:200px;">
|
||||
</div>
|
||||
|
||||
|
||||
<p style="font-size:0.9em; text-align:center;">
|
||||
<em>“Revolving Circles.” n.d. Accessed October 31, 2025.</em><br>
|
||||
<a href="https://en.wikipedia.org/wiki/File/Revolving_circles.svg">Wikipedia source</a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The cover image presents a visual illusion of motion. When you focus on the
|
||||
central point and move the page toward or away from your eyes, the concentric
|
||||
circles appear to rotate.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
This reflects a central theme of this work: perception shapes what we think of as
|
||||
“reality.” In this illusion, motion exists only in our minds. We perceive, we do
|
||||
not directly know; our brains construct experience.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<hr style="margin:4em 0;">
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
window.MathJax = {
|
||||
tex: { inlineMath: [['$', '$'], ['\\(', '\\)']] },
|
||||
svg: { fontCache: 'global' }
|
||||
};
|
||||
</script>
|
||||
<script src="lib/mathjax/tex-mml-chtml.js"></script>
|
||||
<nav id="TOC" role="doc-toc">
|
||||
<h2 id="toc-title">Contents</h2>
|
||||
<ul>
|
||||
<li><a href="#introduction" id="toc-introduction">Introduction</a>
|
||||
<ul>
|
||||
<li><a href="#conventions" id="toc-conventions">Conventions</a>
|
||||
<ul>
|
||||
<li><a href="#new-concepts" id="toc-new-concepts">New Concepts</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
<li><a href="#chapter-1" id="toc-chapter-1">Chapter 1</a></li>
|
||||
<li><a href="#example-content" id="toc-example-content">Example
|
||||
Content</a>
|
||||
<ul>
|
||||
<li><a href="#si-conversion-factors" id="toc-si-conversion-factors">SI
|
||||
Conversion Factors</a></li>
|
||||
<li><a href="#physical-constants" id="toc-physical-constants">Physical
|
||||
Constants</a></li>
|
||||
<li><a href="#fine-structure-constant"
|
||||
id="toc-fine-structure-constant">Fine Structure Constant</a></li>
|
||||
<li><a href="#newtons-law-of-gravity"
|
||||
id="toc-newtons-law-of-gravity">Newton’s Law of Gravity</a>
|
||||
<ul>
|
||||
<li><a href="#relativistic-energy-momentum-relation"
|
||||
id="toc-relativistic-energy-momentum-relation">Relativistic Energy
|
||||
Momentum Relation</a></li>
|
||||
</ul></li>
|
||||
<li><a href="#plancks-constant" id="toc-plancks-constant">Planck’s
|
||||
Constant</a></li>
|
||||
<li><a href="#planck-length" id="toc-planck-length">Planck
|
||||
Length</a></li>
|
||||
<li><a href="#fine-structure-constant-1"
|
||||
id="toc-fine-structure-constant-1">Fine Structure Constant</a></li>
|
||||
<li><a href="#sage-code" id="toc-sage-code">Sage Code</a></li>
|
||||
</ul></li>
|
||||
<li><a href="#terminology" id="toc-terminology">Terminology</a></li>
|
||||
<li><a href="#citations" id="toc-citations">Citations</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<h1 id="introduction">Introduction</h1>
|
||||
<blockquote>
|
||||
<p>“<em>If I have seen further it is by standing on the shoulders of
|
||||
Giants.</em>”</p>
|
||||
<p>– Isaac Newton <span class="citation"
|
||||
data-cites="IsaacNewtonLetter">(<a href="#ref-IsaacNewtonLetter"
|
||||
role="doc-biblioref"><span>“Isaac <span>Newton</span> Letter to
|
||||
<span>Robert Hooke</span>, 1675,”</span> n.d.</a>)</span></p>
|
||||
</blockquote>
|
||||
<h2 id="conventions">Conventions</h2>
|
||||
<p>In this book we’ll use a few conventions.</p>
|
||||
<h3 id="new-concepts">New Concepts</h3>
|
||||
<p>As many of the topics discussed in this book are a mix of
|
||||
<strong>established</strong> math and physics, <strong>proposed</strong>
|
||||
dualistic interpretations of established ideas, and also
|
||||
<strong>speculative</strong> ideas that I don’t yet know how to address,
|
||||
I wanted a way to clearly distinguish these concepts. I’ve come up with
|
||||
the following convention to highlight these classes of concepts to
|
||||
indicate their level of mainstream acceptance.</p>
|
||||
<p>In this book, established concept may be highlighted in green, and
|
||||
represent mainstream physics or math concepts.</p>
|
||||
<div class="callout-established">
|
||||
<p><strong>Established Concept</strong></p>
|
||||
<p> Einsteins Relativistic Dynamics Equations <span
|
||||
class="math display"><em>E</em><sup>2</sup> = (<em>m</em><sub>0</sub> ⋅ <em>c</em><sup>2</sup>)<sup>2</sup> + (<em>p</em> ⋅ <em>c</em>)<sup>2</sup></span></p>
|
||||
</div>
|
||||
<p>New ideas proposed by the author which have not been peer reviewed,
|
||||
verified or tested, and should be looked at with scrutiny.</p>
|
||||
<div class="callout-proposed">
|
||||
<p><strong>Proposed Concept</strong></p>
|
||||
<p> With the speed of light, <span
|
||||
class="math inline"><em>c</em> = 1</span>: <span
|
||||
class="math display"><em>E</em><sup>2</sup> = <em>m</em><sub>0</sub><sup>2</sup> + <em>p</em><sup>2</sup></span></p>
|
||||
</div>
|
||||
<p>Speculative Idea, that the author wonders about, but does not know
|
||||
how to demonstrate, or ideas that need further treatment to prove or
|
||||
disprove.</p>
|
||||
<div class="callout-speculative">
|
||||
<p><strong>Speculative Concept</strong></p>
|
||||
<p> With the speed of light, <span
|
||||
class="math inline"><em>c</em> = 1</span>: <span
|
||||
class="math display"><em>E</em><sup>2</sup> = <em>m</em><sub>0</sub><sup>2</sup> + <em>p</em><sup>2</sup></span></p>
|
||||
</div>
|
||||
<h1 id="chapter-1">Chapter 1</h1>
|
||||
<p>Blah blah blah</p>
|
||||
<h1 id="example-content">Example Content</h1>
|
||||
<p>In <span class="math inline"><em>R</em><em>ν</em></span> the <a
|
||||
href="https://en.wikipedia.org/wiki/Planck_units#Planck_length">Planck
|
||||
Length</a> is the universal unit for measurement of distance, and is
|
||||
defined approximately to be: <span
|
||||
class="math display">$$\boxed{L_P=\sqrt{\hbar}=5.72928\times10^{-35}m=1
|
||||
L}$$</span> Where <span class="math inline">1 <em>L</em></span>, is 1
|
||||
Planck Length of distance.</p>
|
||||
<h3 id="si-conversion-factors">SI Conversion Factors</h3>
|
||||
<p>The following conversion factors can be used to convert observable
|
||||
quantities of measure from the <em>SI</em> system of units to <span
|
||||
class="math inline"><em>R</em><em>ν</em></span> to ~6 significant
|
||||
digits.</p>
|
||||
<table>
|
||||
<colgroup>
|
||||
<col style="width: 32%" />
|
||||
<col style="width: 9%" />
|
||||
<col style="width: 58%" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Conversion Factor</th>
|
||||
<th>Symbol</th>
|
||||
<th>Value</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>meters to Planck Length</td>
|
||||
<td><span
|
||||
class="math inline"><em>χ</em><sub><em>P</em></sub></span></td>
|
||||
<td><span class="math inline">$1.74542\times10^{34}
|
||||
\frac{L}{m}$</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>seconds to Planck Length</td>
|
||||
<td><span
|
||||
class="math inline"><em>τ</em><sub><em>p</em></sub></span></td>
|
||||
<td><span class="math inline">$5.23264\times10^{42}
|
||||
\frac{L}{s}$</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>mass to Planck Length</td>
|
||||
<td><span
|
||||
class="math inline"><em>G</em><sub><em>P</em></sub></span></td>
|
||||
<td><span class="math inline">$1.62871\times10^8
|
||||
\frac{L}{kg}$</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>energy to Planck Length</td>
|
||||
<td><span
|
||||
class="math inline"><em>E</em><sub><em>P</em></sub></span></td>
|
||||
<td><span class="math inline">$1.81219\times10^9
|
||||
\frac{L}{J}$</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>momentum to Planck Length</td>
|
||||
<td><span
|
||||
class="math inline"><em>P</em><sub><em>P</em></sub></span></td>
|
||||
<td><span class="math inline">$5.43280\times10^{-1} \frac{L\cdot s}{kg
|
||||
\cdot m}$</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>temperature to Planck Length</td>
|
||||
<td><span
|
||||
class="math inline"><em>k</em><sub><em>P</em></sub></span></td>
|
||||
<td><span class="math inline">$2.501998\times10^{-14}
|
||||
\frac{L}{K}$</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>charge to Planck Length</td>
|
||||
<td><span
|
||||
class="math inline"><em>C</em><sub><em>P</em></sub></span></td>
|
||||
<td><span class="math inline">$1.89007\times10^{18}
|
||||
\frac{L}{C}$</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3 id="physical-constants">Physical Constants</h3>
|
||||
<p>Applying conversion factors from the table above, we can convert SI
|
||||
values to Reduced Natural Units. For example, performing this analysis
|
||||
on the the speed of light yields a unit-less number with a value of
|
||||
1:</p>
|
||||
<p><span class="math inline">$c = 299792458 \frac{m}{s} = 299792458
|
||||
\frac{m}{s} \cdot 1.74542\times10^{34} \frac{L}{m} \cdot
|
||||
\frac{1}{5.23264\times10^{42} \frac{L}{s}} = 1.00000$</span></p>
|
||||
<table>
|
||||
<colgroup>
|
||||
<col style="width: 22%" />
|
||||
<col style="width: 9%" />
|
||||
<col style="width: 45%" />
|
||||
<col style="width: 22%" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Quantity</th>
|
||||
<th>Symbol</th>
|
||||
<th>SI</th>
|
||||
<th><span class="math inline"><em>ν</em></span></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Speed of Light</td>
|
||||
<td><span class="math inline"><em>c</em></span></td>
|
||||
<td><span class="math inline">$299792458 \frac{m}{s}$</span></td>
|
||||
<td>1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Reduced Gravitational Constant</td>
|
||||
<td><span class="math inline"><em>G</em><sub>0</sub></span></td>
|
||||
<td><span class="math inline">$8.38659\times10^{-10} \frac{m^3}{kg \cdot
|
||||
s^2}$</span></td>
|
||||
<td>1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Boltzmann’s Constant</td>
|
||||
<td><span class="math inline"><em>k</em></span></td>
|
||||
<td><span class="math inline">$k=1.380649\times10^-23
|
||||
\frac{J}{K}$</span></td>
|
||||
<td>1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Permittivity of Free Space</td>
|
||||
<td><span
|
||||
class="math inline"><em>ϵ</em><sub><em>o</em></sub></span></td>
|
||||
<td><span class="math inline">$8.854187817620\times10^{-12}
|
||||
\frac{C^{2}s^2}{kg \cdot m^3}$</span></td>
|
||||
<td>1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Permeability of Free Space</td>
|
||||
<td><span
|
||||
class="math inline"><em>μ</em><sub><em>o</em></sub></span></td>
|
||||
<td><span class="math inline">$\huge{\frac{1}{\epsilon_{o} \cdot
|
||||
c^{2}}}$</span></td>
|
||||
<td>1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Reduced Planck’s Constant</td>
|
||||
<td><span class="math inline">ℏ</span></td>
|
||||
<td><span class="math inline">$1.054571726\times10^-34 \frac{kg \cdot
|
||||
m^2}{s}$</span></td>
|
||||
<td><span class="math inline">1<em>L</em><sup>2</sup></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Mass of the Electron</td>
|
||||
<td><span
|
||||
class="math inline"><em>m</em><sub><em>e</em></sub></span></td>
|
||||
<td><span
|
||||
class="math inline">9.10938 × 10<sup>−31</sup><em>k</em><em>g</em></span></td>
|
||||
<td><span
|
||||
class="math inline">1.48366 × 10<sup>−22</sup><em>L</em></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Charge of the Electron</td>
|
||||
<td><span class="math inline"><em>e</em><sup>−</sup></span></td>
|
||||
<td><span
|
||||
class="math inline">−1.60218 × 10<sup>−19</sup><em>C</em></span></td>
|
||||
<td><span
|
||||
class="math inline">−3.02822 × 10<sup>−1</sup><em>L</em></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Unit Cycle</td>
|
||||
<td><span class="math inline"><em>Θ</em></span></td>
|
||||
<td><span
|
||||
class="math inline">2<em>π</em> = 6.28318... <em>R</em><em>a</em><em>d</em><em>i</em><em>a</em><em>n</em><em>s</em></span></td>
|
||||
<td><span
|
||||
class="math inline">1<em>τ</em> = 6.28318... <em>R</em><em>a</em><em>d</em><em>i</em><em>a</em><em>n</em><em>s</em></span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="fine-structure-constant">Fine Structure Constant</h2>
|
||||
<p>As a consistency check, we compute the <em><a
|
||||
href="https://en.wikipedia.org/wiki/Fine-structure_constant">Fine
|
||||
Structure Constant</a></em> using Reduced Natural Units which is a unit
|
||||
less ratio that should be independent of our system of units.</p>
|
||||
<p><span
|
||||
class="math inline">$\huge{\alpha=\frac{e^2}{4\pi\epsilon_o\hbar
|
||||
c}=\frac{e^2}{2\tau}=0.00729735≈\frac{1}{137}}$</span></p>
|
||||
<h4 id="dimensional-analysis">Dimensional Analysis</h4>
|
||||
<p>The reader should be familiar with high school physics and chemistry
|
||||
<a href="https://en.wikipedia.org/wiki/Dimensional_analysis">dimensional
|
||||
analysis</a>.</p>
|
||||
<ul>
|
||||
<li><span
|
||||
class="math inline">1 <em>m</em><em>e</em><em>t</em><em>e</em><em>r</em> (<em>m</em>) = 100 <em>c</em><em>e</em><em>n</em><em>t</em><em>i</em><em>m</em><em>e</em><em>t</em><em>e</em><em>r</em><em>s</em> (<em>c</em><em>m</em>)</span></li>
|
||||
<li><span
|
||||
class="math inline">1 <em>k</em><em>i</em><em>l</em><em>o</em><em>m</em><em>e</em><em>t</em><em>e</em><em>r</em> (<em>k</em><em>m</em>) = 1000 <em>m</em><em>e</em><em>t</em><em>e</em><em>r</em><em>s</em> (<em>m</em>)</span></li>
|
||||
<li><span
|
||||
class="math inline">1 <em>m</em><em>i</em><em>l</em><em>e</em> = 5280 <em>f</em><em>e</em><em>e</em><em>t</em> (<em>f</em><em>t</em> <em>o</em><em>r</em> <sup>′</sup>)</span></li>
|
||||
<li><span class="math inline">$1\ foot\ (ft\ or\ ') = 12\ inches\ (in\
|
||||
or\ ")$</span></li>
|
||||
<li><span class="math inline">$1\ inch\ (") = 2.54\ centimeters\
|
||||
(cm)$</span></li>
|
||||
</ul>
|
||||
<p>How many kilometers are in 1 mile? <span class="math inline">$1\ mile
|
||||
= 1\ mile \times \frac{5280\ ft}{mile} \times \frac{12\ in}{ft} \times
|
||||
\frac{2.54\ cm}{in}\times \frac{1\ m}{100 cm} \times \frac{1\ km}{1000
|
||||
m} = \frac{5280 \times 12 \times 2.54}{100 \times 1000}\ km =
|
||||
\frac{160934.40}{100000}\ km = 1.6\ km$</span> Note that each unit in
|
||||
the denominator cancels with one if the numerator until we are left with
|
||||
only km.</p>
|
||||
<h2 id="newtons-law-of-gravity">Newton’s Law of Gravity</h2>
|
||||
<p>The force of gravity (<span
|
||||
class="math inline"><em>F</em><sub><em>g</em></sub></span>) between 2
|
||||
masses, <span class="math inline"><em>m</em>1</span> and <span
|
||||
class="math inline"><em>m</em>2</span> separated by distance <span
|
||||
class="math inline"><em>r</em></span> is given by <a
|
||||
href="https://en.wikipedia.org/wiki/Newton%27s_law_of_universal_gravitation">Newton’s
|
||||
Law of Gravity</a>:</p>
|
||||
<p><span class="math inline">$F_{g} = G \frac{m_{1}
|
||||
m_{2}}{r^{2}}$</span></p>
|
||||
<p>Where <span class="math inline"><em>G</em></span>, is the <a
|
||||
href="http://en.wikipedia.org/wiki/Gravitational_Constant">Gravitational
|
||||
Constant</a>.</p>
|
||||
<p><span class="math inline">$G = 6.67430 \times 10^{-11}\
|
||||
N\frac{m^2}{kg^2}$</span></p>
|
||||
<p>The strength of gravitational force follow the inverse square law
|
||||
distributing gravitational flux over the surface area of a sphere (<span
|
||||
class="math inline">4<em>π</em><em>r</em><sup>2</sup></span>).</p>
|
||||
<h4 id="inverse-square-law">Inverse Square Law</h4>
|
||||
<p>Any source of a signal strength (<span
|
||||
class="math inline"><em>S</em><sub>0</sub></span>) that radiates
|
||||
isotropically in 3-dimensional space will distribute that signal
|
||||
strength (<span class="math inline"><em>S</em><sub>0</sub></span>) over
|
||||
the surface area of a sphere (<span
|
||||
class="math inline"><em>S</em><em>A</em> = 4<em>π</em><em>r</em></span>)
|
||||
of radius (<span class="math inline"><em>r</em></span>). Such that the
|
||||
intensity (<span class="math inline"><em>I</em></span>) at distance
|
||||
(<span class="math inline"><em>r</em></span>) is:</p>
|
||||
<p><span class="math display">$$I(r) = \frac{S_0}{4 \pi
|
||||
r^{2}}=\frac{S_0}{2 \tau r^{2}}$$</span> <img
|
||||
src="lib/img/Inverse_square_law.svg.png" alt="inverse square law" />
|
||||
#### <span class="math inline"><em>R</em><em>ν</em></span> Reduced
|
||||
Gravitational Constant In this version of Newton’s Law of Gravity we
|
||||
introduce a new constant <span
|
||||
class="math inline"><em>G</em><sub>0</sub></span>, the reduced
|
||||
gravitational constant to accommodate for the factor of <span
|
||||
class="math inline">4<em>π</em> = 2<em>τ</em></span> which is has been
|
||||
integrated in the SI version of the gravitational constant.</p>
|
||||
<p><span class="math inline">$F_g =G \frac{m_{1} m_{2}}{r^{2}}= G_0
|
||||
\frac{m_{1} m_{2}}{4 \pi r^{2}}=G_0 \frac{m_{1} m_{2}}{2 \tau
|
||||
r^{2}}$</span></p>
|
||||
<p>Where:</p>
|
||||
<p><span class="math inline">$G = \frac{G_{0}}{2\tau} = 6.67384 \times
|
||||
10^{-11} \frac{N \cdot m^2}{kg^2}$</span></p>
|
||||
<p>Analyzing the units: <span class="math display">$$\frac{N \cdot
|
||||
m^2}{kg^2} = \left( \frac{\left( kg \cdot \frac{m}{s^2} \right) \cdot
|
||||
m^2}{kg^2} \right)=\frac{m^3}{s^2 kg}$$</span> Converting seconds to
|
||||
meters with the SI speed of light as a conversion factor: <span
|
||||
class="math display">$$\frac{m^3}{s^2
|
||||
kg}\cdot\frac{1}{c^2}=\frac{m^3}{s^2
|
||||
kg}\cdot\frac{s^2}{m^2}=\frac{m}{kg}$$</span></p>
|
||||
<p>Thus where space and time are measured in units of meters, the
|
||||
reduced gravitational constant, is:</p>
|
||||
<p><span class="math display">$$\boxed{G_0=\frac{2\tau
|
||||
G}{c^2}=\frac{2\tau \cdot 6.67384 \times 10^{-11}}{299792458^2}
|
||||
\frac{m}{kg} = 9.33135 \times 10^-27 \frac{m}{kg}}$$</span></p>
|
||||
<blockquote>
|
||||
<p>Observation This implies that not only can space an time be measure
|
||||
in units of meters, but so can mass.</p>
|
||||
</blockquote>
|
||||
<h3 id="relativistic-energy-momentum-relation">Relativistic Energy
|
||||
Momentum Relation</h3>
|
||||
<p>Einsteins <a
|
||||
href="https://en.wikipedia.org/wiki/Energy%E2%80%93momentum_relation">Relativistic
|
||||
Energy Momentum</a> relationship shows a Pythagorean relation between
|
||||
the total energy (<span class="math inline"><em>E</em></span>), rest
|
||||
mass (<span class="math inline"><em>m</em><sub>0</sub></span>) and
|
||||
momentum (<span class="math inline"><em>p</em></span>) of a system.</p>
|
||||
<p><span
|
||||
class="math inline"><em>E</em><sup>2</sup> = (<em>m</em><sub>0</sub> ⋅ <em>c</em><sup>2</sup>)<sup>2</sup> + (<em>p</em> ⋅ <em>c</em>)<sup>2</sup></span></p>
|
||||
<p>Where space and time are both measure in units of meters, c=1.</p>
|
||||
<p><span
|
||||
class="math inline"><em>E</em><sup>2</sup> = (<em>m</em><sub>0</sub>)<sup>2</sup> + (<em>p</em>)<sup>2</sup></span></p>
|
||||
<p>From this we can see that Energy, Momentum and Mass have equivalent
|
||||
units.</p>
|
||||
<blockquote>
|
||||
<p><em>While we do not really know what energy, mass and momentum are we
|
||||
know that they are fundamentally “made” out of the same stuff because
|
||||
they have the same units.</em></p>
|
||||
</blockquote>
|
||||
<h5 id="objects-of-mass-at-rest">Objects of mass at rest</h5>
|
||||
<p>For an object at rest with no momentum (<span
|
||||
class="math inline"><em>p</em> = 0</span>) we see Einstein’s famous
|
||||
equations:</p>
|
||||
<p><span
|
||||
class="math inline"><em>E</em> = <em>m</em><sub>0</sub> ⋅ <em>c</em><sup>2</sup></span></p>
|
||||
<p>Or, with <span class="math inline"><em>c</em> = 1</span>, this is
|
||||
much simpler to understand. Energy = Mass</p>
|
||||
<p><span class="math inline"><em>E</em> = <em>m</em><sub>0</sub></span>
|
||||
##### Zero mass objects moving at the speed of light And for objects
|
||||
with no mass, like photos, (<span
|
||||
class="math inline"><em>m</em><sub>0</sub> = 0</span>):</p>
|
||||
<p><span
|
||||
class="math inline"><em>E</em> = <em>p</em><em>c</em></span></p>
|
||||
<p>Or, with <span class="math inline"><em>c</em> = 1</span>, this is
|
||||
much simpler to understand. Energy = Momentum</p>
|
||||
<p><span class="math inline"><em>E</em> = <em>p</em></span></p>
|
||||
<h2 id="plancks-constant">Planck’s Constant</h2>
|
||||
<p>The <a href="https://en.wikipedia.org/wiki/Planck_constant">Reduced
|
||||
Planck constant</a> , ħ, represents a conversion factor for relating the
|
||||
frequency, <span class="math inline"><em>ω</em></span> (in <span
|
||||
class="math inline">2<em>π</em></span> radians per second), of a photon
|
||||
to the energy of that photon. This can easily be seen from the simple
|
||||
but profound relationship:</p>
|
||||
<p><span class="math inline"><em>E</em> = ℏ<em>ω</em></span></p>
|
||||
<p>Where:</p>
|
||||
<p><span
|
||||
class="math inline">ℏ = 1.054571726 × 10<sup>−34</sup><em>J</em> ⋅ <em>s</em></span></p>
|
||||
<p>and</p>
|
||||
<p><span class="math inline">$J \cdot s =
|
||||
{kg}\cdot\frac{m^2}{s}$</span></p>
|
||||
<blockquote>
|
||||
<p>Reduced Planck’s Constant <span class="math inline">$\hbar =
|
||||
\frac{h}{2\pi} = \frac{h}{\tau}$</span></p>
|
||||
</blockquote>
|
||||
<p>Simplifying our units by converting time and mass to units of meters:
|
||||
<span class="math display">$$\boxed{\hbar=1.054571726 \times 10^{−34}
|
||||
{kg}\cdot\frac{m^2}{s}\cdot\frac{G_0}{c}=3.282462\times10^{-69}m^2}$$</span></p>
|
||||
<p>Which suggest that the Plank constant can be interpreted as an areas
|
||||
for which the square root of is suspiciously close to the Plank
|
||||
length:</p>
|
||||
<p><span
|
||||
class="math display">$$\boxed{\sqrt{\hbar}=\sqrt{3.282462\times10^{-69}m^2}=5.72928\times10^{-35}m}$$</span></p>
|
||||
<h4 id="planck-area">Planck Area</h4>
|
||||
<p>The <a
|
||||
href="https://en.wikipedia.org/wiki/Planck_units#Derived_units">Planck
|
||||
Area</a> is the square of the <a
|
||||
href="https://en.wikipedia.org/wiki/Planck_units#Planck_length">Planck
|
||||
Length</a>.</p>
|
||||
<p><span class="math inline">$l_{P}= \sqrt{\frac{\hbar
|
||||
G}{c^3}}$</span></p>
|
||||
<p>and <span class="math inline">$l_{P}^{2}= \frac{\hbar
|
||||
G}{c^3}$</span></p>
|
||||
<p>In <span class="math inline"><em>R</em><em>ν</em></span> units both
|
||||
<span class="math inline"><em>c</em></span> and <span
|
||||
class="math inline"><em>G</em><sub><em>o</em></sub></span> are 1.</p>
|
||||
<p><span class="math inline">$l_{P} = \sqrt{\hbar}$</span></p>
|
||||
<p>and <span
|
||||
class="math inline"><em>l</em><sub><em>P</em></sub><sup>2</sup> = ℏ</span>
|
||||
## Bekenstein’s Bound After having recently read <em>Three Roads to
|
||||
Quantum Gravity</em> by Lee Smolin, I now suspect the meaning of this
|
||||
areas is related to the <a
|
||||
href="https://en.wikipedia.org/wiki/Bekenstein_bound">Bekensteins
|
||||
Law</a> as applied to a surface areas surrounding a mass. Where the <a
|
||||
href="https://en.wikipedia.org/wiki/Entropy_(statistical_thermodynamics)">thermodynamic
|
||||
entropy</a>, <em>S</em>, is proportional to the the enclosed surface
|
||||
area, <span class="math inline"><em>A</em></span>.</p>
|
||||
<p><span
|
||||
class="math inline">$S=\frac{1}{4}\cdot\frac{A}{G\hbar}$</span></p>
|
||||
<p><span class="math inline">$S=\frac{k c^{3} A}{4 G \hbar}$</span></p>
|
||||
<p><span class="math inline">$S \le \frac{2\pi k R E}{\hbar c} =
|
||||
\frac{\tau R k E}{\hbar c}$</span></p>
|
||||
<p>From our new values for <span
|
||||
class="math inline"><em>G</em><sub>0</sub></span>and <span
|
||||
class="math inline">ℏ</span> we can likely rewrite this:</p>
|
||||
<p><span class="math inline">$S=\frac{\pi\cdot A}{\hbar G_0}$</span></p>
|
||||
<p>With the limiting case being at the Plank scale.</p>
|
||||
<p><span class="math inline">$S=\frac{\pi\cdot \sqrt{\hbar}}{\hbar
|
||||
G_0}$</span></p>
|
||||
<h2 id="planck-length">Planck Length</h2>
|
||||
<p>https://en.wikipedia.org/wiki/Planck_length</p>
|
||||
<p>The concept of the Planck Length comes from exploring the limits of
|
||||
Quantum Mechanics and General Relativity. The limits of General
|
||||
Relativity can be seen a the event horizon of a black hole, described by
|
||||
the Schwarzschild Radius. And the limits of Quantum Mechanics can be
|
||||
found in the Compton Wavelength for a given quanta.</p>
|
||||
<p>The <a
|
||||
href="https://simple.wikipedia.org/wiki/Schwarzschild_radius">Schwarzschild
|
||||
Radius</a> is defined as the distance at which light cannot escape from
|
||||
the gravitational field of a mass (m):</p>
|
||||
<p>Classic Derivation.</p>
|
||||
<p><span class="math inline">$r_S=\frac{2G m}{c^2}$</span></p>
|
||||
<p>The reduced <a
|
||||
href="https://en.wikipedia.org/wiki/Compton_wavelength">Compton
|
||||
Wavelength</a> represents a lower limit on the wavelength for quanta
|
||||
that can interact with a quantum particle with mass (m):</p>
|
||||
<p><span class="math inline">$\lambda_C=\frac{h}{m c}$</span></p>
|
||||
<p><span class="math inline">$\bar{\lambda_C}=\frac{2\pi\hbar}{m
|
||||
c}=\frac{\tau\hbar}{m c}$</span></p>
|
||||
<p>And set the Schwarzschild Radius equal to the Compton Wavelength:
|
||||
<span
|
||||
class="math inline"><em>r</em><sub><em>S</em></sub> = <em>λ</em><sub><em>C</em></sub></span></p>
|
||||
<p><span class="math inline">$\frac{2Gm}{c^{2}}=\frac{h}{m
|
||||
c}$</span></p>
|
||||
<p><span class="math inline">$m^{2}= \frac{hc}{2G}$</span></p>
|
||||
<p><span class="math inline">$m = \sqrt{\frac{hc}{2G}}$</span></p>
|
||||
<p><span
|
||||
class="math inline">$l_P=\frac{2G\sqrt{\frac{hc}{2G}}}{c^2}$</span>
|
||||
<span class="math inline">$l_P=\frac{2G\sqrt{\frac{hc}{2G}}}{c^{2}}=
|
||||
\sqrt{\frac{2Gh}{c^2}}$</span></p>
|
||||
<p>With reduced Compton Wavelength <span
|
||||
class="math inline">$r_S=\bar{\lambda_C}$</span></p>
|
||||
<p><span class="math inline">$\frac{2Gm}{c^{2}}=\frac{\tau\hbar}{m
|
||||
c}$</span></p>
|
||||
<p><span class="math inline">$m^2=\frac{\tau\ \hbar\ c}{2G}$</span></p>
|
||||
<p><span class="math inline">$m = \sqrt{\frac{\tau\ \hbar\
|
||||
c}{2G}}$</span></p>
|
||||
<p><span class="math inline">$l_P=\frac{2G\sqrt{\frac{\tau\ \hbar\
|
||||
c}{2G}}}{c^2}$</span></p>
|
||||
<p><span class="math inline">$l_P=\frac{2G\sqrt{\frac{\tau\ \hbar\
|
||||
c}{2G}}}{c^{2}}=\sqrt{\frac{4\ \tau\ G\ \hbar}{c^3}}$</span></p>
|
||||
<p>If we reduce the units in these equation to those of mass and time
|
||||
measured in meters.</p>
|
||||
<p><span class="math inline">$l_P=\sqrt{4\tau\hbar G_{o}}$</span></p>
|
||||
<p>and</p>
|
||||
<p><span class="math inline">$\lambda_C=\frac{\hbar}{m}$</span></p>
|
||||
<p><span
|
||||
class="math inline">$m=R_s=\lambda_C=\frac{\hbar}{m}$</span></p>
|
||||
<p>This is known as the Planck Mass, <span
|
||||
class="math inline"><em>M</em><sub><em>P</em></sub></span>. <span
|
||||
class="math inline">$M_P=m=\sqrt{\hbar}$</span></p>
|
||||
<p>Solving the Compton Wavelength for distance we find the classic Plank
|
||||
Length:</p>
|
||||
<p><span
|
||||
class="math inline">$\lambda_C=\frac{\hbar}{\sqrt{\hbar}}=\frac{\sqrt{\hbar}}{\sqrt{\hbar}}\cdot\frac{\hbar}{\sqrt{\hbar}}=\sqrt{\hbar}=L_P$</span></p>
|
||||
<p>Which is in precise agreement with the value we found in above. Thus
|
||||
the Plank Length is:</p>
|
||||
<p><span
|
||||
class="math inline">$L_P=\sqrt{\hbar}=5.72928\times10^{-35}m$</span></p>
|
||||
<p>When we measure distance, time, and mass in units of distance, c=1,
|
||||
and the Plank Time, <span
|
||||
class="math inline"><em>T</em><sub><em>P</em></sub></span>, is equal to
|
||||
Plank Length, <span
|
||||
class="math inline"><em>L</em><sub><em>P</em></sub></span>, which is
|
||||
equal to the Plank Mass, <span
|
||||
class="math inline"><em>M</em><sub><em>P</em></sub></span>:</p>
|
||||
<p><span class="math display">$$\boxed{L_P=T_P=M_P}$$</span></p>
|
||||
<table>
|
||||
<colgroup>
|
||||
<col style="width: 30%" />
|
||||
<col style="width: 30%" />
|
||||
<col style="width: 40%" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Conversion Factor</th>
|
||||
<th>Symbol</th>
|
||||
<th>Value</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>meters to Planck Length</td>
|
||||
<td><span
|
||||
class="math inline"><em>χ</em><sub><em>P</em></sub></span></td>
|
||||
<td><span class="math inline">$1.74542\times10^{34}
|
||||
\frac{L}{m}$</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>seconds to Planck Length</td>
|
||||
<td><span
|
||||
class="math inline"><em>τ</em><sub><em>p</em></sub></span></td>
|
||||
<td><span class="math inline">$5.23264\times10^{42}
|
||||
\frac{L}{s}$</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>mass to Planck Length</td>
|
||||
<td><span
|
||||
class="math inline"><em>G</em><sub><em>P</em></sub></span></td>
|
||||
<td><span class="math inline">$1.62871\times10^8
|
||||
\frac{L}{kg}$</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>energy to Planck Length</td>
|
||||
<td><span
|
||||
class="math inline"><em>E</em><sub><em>P</em></sub></span></td>
|
||||
<td><span class="math inline">$1.81219\times10^9
|
||||
\frac{L}{J}$</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>momentum to Planck Length</td>
|
||||
<td><span
|
||||
class="math inline"><em>P</em><sub><em>P</em></sub></span></td>
|
||||
<td><span class="math inline">$5.43280\times10^{-1} \frac{L\cdot s}{kg
|
||||
\cdot m}$</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>temperature to Planck Length</td>
|
||||
<td><span
|
||||
class="math inline"><em>k</em><sub><em>P</em></sub></span></td>
|
||||
<td><span class="math inline">$2.501998\times10^{-14}
|
||||
\frac{L}{K}$</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>charge to Planck Length</td>
|
||||
<td><span
|
||||
class="math inline"><em>C</em><sub><em>P</em></sub></span></td>
|
||||
<td><span class="math inline">$1.89007\times10^{18}
|
||||
\frac{L}{C}$</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Applying conversion factors from the table above, we can convert SI
|
||||
values to Reduced Natural Units. <span
|
||||
class="math inline">$c=\frac{1}{\sqrt{\epsilon_o \mu_o}}$</span></p>
|
||||
<table>
|
||||
<colgroup>
|
||||
<col style="width: 23%" />
|
||||
<col style="width: 23%" />
|
||||
<col style="width: 23%" />
|
||||
<col style="width: 30%" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Quantity</th>
|
||||
<th>Symbol</th>
|
||||
<th>SI</th>
|
||||
<th><span class="math inline"><em>ν</em></span></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Speed of Light</td>
|
||||
<td><span class="math inline"><em>c</em></span></td>
|
||||
<td><span class="math inline">$299792458 \frac{m}{s}$</span></td>
|
||||
<td>1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Gravitational Constant</td>
|
||||
<td><span class="math inline"><em>G</em><sub>0</sub></span></td>
|
||||
<td><span class="math inline">$8.38659\times10^{-10} \frac{m^3}{kg \cdot
|
||||
s^2}$</span></td>
|
||||
<td>1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Boltzmann’s Constant</td>
|
||||
<td><span class="math inline"><em>k</em></span></td>
|
||||
<td><span class="math inline">$k=1.380649\times10^-23
|
||||
\frac{J}{K}$</span></td>
|
||||
<td>1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Permittivity of Free Space</td>
|
||||
<td><span
|
||||
class="math inline"><em>ϵ</em><sub><em>o</em></sub></span></td>
|
||||
<td><span class="math inline">$8.854187817620\times10^{-12}
|
||||
\frac{C^{2}s^2}{kg \cdot m^3}$</span></td>
|
||||
<td>1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Permeability of Free Space</td>
|
||||
<td><span
|
||||
class="math inline"><em>μ</em><sub><em>o</em></sub></span></td>
|
||||
<td><span class="math inline">$\huge{\frac{1}{\epsilon_{o} \cdot
|
||||
c^{2}}}$</span></td>
|
||||
<td>1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Planck’s Constant</td>
|
||||
<td><span class="math inline">ℏ</span></td>
|
||||
<td><span class="math inline">$1.054571726\times10^-34 \frac{kg \cdot
|
||||
m^2}{s}$</span></td>
|
||||
<td><span class="math inline">1<em>L</em><sup>2</sup></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Mass of the Electron</td>
|
||||
<td><span
|
||||
class="math inline"><em>m</em><sub><em>e</em></sub></span></td>
|
||||
<td><span
|
||||
class="math inline">9.10938 × 10<sup>−31</sup><em>k</em><em>g</em></span></td>
|
||||
<td><span
|
||||
class="math inline">1.48366 × 10<sup>−22</sup><em>L</em></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Charge of the Electron</td>
|
||||
<td><span class="math inline"><em>e</em><sup>−</sup></span></td>
|
||||
<td><span
|
||||
class="math inline">−1.60218 × 10<sup>−19</sup><em>C</em></span></td>
|
||||
<td><span
|
||||
class="math inline">−3.02822 × 10<sup>−1</sup><em>L</em></span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="fine-structure-constant-1">Fine Structure Constant</h2>
|
||||
<p>https://en.wikipedia.org/wiki/Fine-structure_constant As a
|
||||
consistency check, we compute the <em>Fine Structure Constant</em> using
|
||||
Reduced Natural Units which is a unit less ratio that should be
|
||||
independent of our system of units.</p>
|
||||
<p><span
|
||||
class="math inline">$\huge{\alpha=\frac{e^2}{4\pi\epsilon_o\hbar
|
||||
c}=\frac{e^2}{4\pi}=0.00729735≈\frac{1}{137}}$</span></p>
|
||||
<p>This check confirms that our system of Reduced Natural Units has
|
||||
internally consistent values for <span
|
||||
class="math inline"><em>c</em></span>, <span
|
||||
class="math inline"><em>ϵ</em><sub><em>o</em></sub></span>, <span
|
||||
class="math inline">ℏ</span> and <span
|
||||
class="math inline"><em>e</em>−</span>. And also <span
|
||||
class="math inline"><em>G</em><sub><em>o</em></sub></span> which was
|
||||
used to computer prior values is also consistent.</p>
|
||||
<h2 id="sage-code">Sage Code</h2>
|
||||
<p>Unit Analysis computations have been performed with <a
|
||||
href="https://www.sagemath.org/">Sage Math</a>.</p>
|
||||
<div class="sourceCode" id="cb1"><pre
|
||||
class="sourceCode bash"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Define constance</span></span>
|
||||
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a><span class="ex">one</span> = 1.n<span class="er">(</span><span class="va">digits</span><span class="op">=</span>6<span class="kw">)</span></span>
|
||||
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a><span class="ex">pi</span> = pi.n<span class="er">(</span><span class="va">digits</span><span class="op">=</span>6<span class="kw">)</span></span>
|
||||
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a><span class="ex">tau</span> = 2 <span class="pp">*</span> pi</span>
|
||||
<span id="cb1-5"><a href="#cb1-5" aria-hidden="true" tabindex="-1"></a><span class="ex">t</span> = tau</span>
|
||||
<span id="cb1-6"><a href="#cb1-6" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-7"><a href="#cb1-7" aria-hidden="true" tabindex="-1"></a><span class="co"># Define the units</span></span>
|
||||
<span id="cb1-8"><a href="#cb1-8" aria-hidden="true" tabindex="-1"></a><span class="ex">meters</span> = var<span class="er">(</span><span class="st">'m'</span><span class="kw">)</span></span>
|
||||
<span id="cb1-9"><a href="#cb1-9" aria-hidden="true" tabindex="-1"></a><span class="ex">m</span> = one<span class="pp">*</span>meters</span>
|
||||
<span id="cb1-10"><a href="#cb1-10" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-11"><a href="#cb1-11" aria-hidden="true" tabindex="-1"></a><span class="ex">seconds</span> = var<span class="er">(</span><span class="st">'s'</span><span class="kw">)</span></span>
|
||||
<span id="cb1-12"><a href="#cb1-12" aria-hidden="true" tabindex="-1"></a><span class="ex">s</span> = seconds</span>
|
||||
<span id="cb1-13"><a href="#cb1-13" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-14"><a href="#cb1-14" aria-hidden="true" tabindex="-1"></a><span class="ex">kilograms</span> = var<span class="er">(</span><span class="st">'kg'</span><span class="kw">)</span></span>
|
||||
<span id="cb1-15"><a href="#cb1-15" aria-hidden="true" tabindex="-1"></a><span class="ex">kg</span> = kilograms</span>
|
||||
<span id="cb1-16"><a href="#cb1-16" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-17"><a href="#cb1-17" aria-hidden="true" tabindex="-1"></a><span class="ex">newtons</span> = kg <span class="pp">*</span> m / s^2</span>
|
||||
<span id="cb1-18"><a href="#cb1-18" aria-hidden="true" tabindex="-1"></a><span class="ex">N</span> = newtons</span>
|
||||
<span id="cb1-19"><a href="#cb1-19" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-20"><a href="#cb1-20" aria-hidden="true" tabindex="-1"></a><span class="ex">joules</span> = N <span class="pp">*</span> m</span>
|
||||
<span id="cb1-21"><a href="#cb1-21" aria-hidden="true" tabindex="-1"></a><span class="ex">J</span> = joules</span>
|
||||
<span id="cb1-22"><a href="#cb1-22" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-23"><a href="#cb1-23" aria-hidden="true" tabindex="-1"></a><span class="ex">print</span><span class="er">(</span><span class="st">"pi ="</span><span class="ex">,</span> pi<span class="kw">)</span></span>
|
||||
<span id="cb1-24"><a href="#cb1-24" aria-hidden="true" tabindex="-1"></a><span class="ex">print</span><span class="er">(</span><span class="st">"tau ="</span><span class="ex">,</span> t<span class="kw">)</span></span>
|
||||
<span id="cb1-25"><a href="#cb1-25" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-26"><a href="#cb1-26" aria-hidden="true" tabindex="-1"></a><span class="co"># Speed of light in meters/second</span></span>
|
||||
<span id="cb1-27"><a href="#cb1-27" aria-hidden="true" tabindex="-1"></a><span class="ex">speed_of_light</span> = 299792458 <span class="pp">*</span> meters/seconds</span>
|
||||
<span id="cb1-28"><a href="#cb1-28" aria-hidden="true" tabindex="-1"></a><span class="ex">sol</span> = speed_of_light</span>
|
||||
<span id="cb1-29"><a href="#cb1-29" aria-hidden="true" tabindex="-1"></a><span class="ex">c</span> = sol</span>
|
||||
<span id="cb1-30"><a href="#cb1-30" aria-hidden="true" tabindex="-1"></a><span class="ex">print</span><span class="er">(</span><span class="st">"si c ="</span><span class="ex">,</span> c<span class="kw">)</span></span>
|
||||
<span id="cb1-31"><a href="#cb1-31" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-32"><a href="#cb1-32" aria-hidden="true" tabindex="-1"></a><span class="ex">rnu_c</span> = c / c</span>
|
||||
<span id="cb1-33"><a href="#cb1-33" aria-hidden="true" tabindex="-1"></a><span class="ex">print</span><span class="er">(</span><span class="st">"R\u03BD c ="</span><span class="ex">,</span> rnu_c<span class="kw">)</span></span>
|
||||
<span id="cb1-34"><a href="#cb1-34" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-35"><a href="#cb1-35" aria-hidden="true" tabindex="-1"></a><span class="co"># Gravitational Constant</span></span>
|
||||
<span id="cb1-36"><a href="#cb1-36" aria-hidden="true" tabindex="-1"></a><span class="ex">gravitational_constant</span> = 6.67384e-11 <span class="pp">*</span> N<span class="pp">*(</span>m^2/kg^2<span class="pp">)</span></span>
|
||||
<span id="cb1-37"><a href="#cb1-37" aria-hidden="true" tabindex="-1"></a><span class="ex">G</span> = gravitational_constant</span>
|
||||
<span id="cb1-38"><a href="#cb1-38" aria-hidden="true" tabindex="-1"></a><span class="ex">print</span><span class="er">(</span><span class="st">"si G ="</span><span class="ex">,</span> G<span class="kw">)</span></span>
|
||||
<span id="cb1-39"><a href="#cb1-39" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-40"><a href="#cb1-40" aria-hidden="true" tabindex="-1"></a><span class="ex">rnu_G</span> = 4<span class="pp">*</span>pi<span class="pp">*</span>G/c^2</span>
|
||||
<span id="cb1-41"><a href="#cb1-41" aria-hidden="true" tabindex="-1"></a><span class="ex">Go</span> = rnu_G</span>
|
||||
<span id="cb1-42"><a href="#cb1-42" aria-hidden="true" tabindex="-1"></a><span class="ex">print</span><span class="er">(</span><span class="st">"R\u03BD Go ="</span><span class="ex">,</span> Go<span class="kw">)</span></span>
|
||||
<span id="cb1-43"><a href="#cb1-43" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-44"><a href="#cb1-44" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-45"><a href="#cb1-45" aria-hidden="true" tabindex="-1"></a><span class="co"># Planck's Constant</span></span>
|
||||
<span id="cb1-46"><a href="#cb1-46" aria-hidden="true" tabindex="-1"></a><span class="ex">reduced_plancks_constant</span> = 1.054571726e-34 <span class="pp">*</span> J<span class="pp">*</span>s</span>
|
||||
<span id="cb1-47"><a href="#cb1-47" aria-hidden="true" tabindex="-1"></a><span class="ex">h_bar</span> = reduced_plancks_constant</span>
|
||||
<span id="cb1-48"><a href="#cb1-48" aria-hidden="true" tabindex="-1"></a><span class="ex">print</span><span class="er">(</span><span class="st">"si \u210F ="</span><span class="ex">,</span> h_bar<span class="kw">)</span></span>
|
||||
<span id="cb1-49"><a href="#cb1-49" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-50"><a href="#cb1-50" aria-hidden="true" tabindex="-1"></a><span class="ex">rnu_h_bar</span> = h_bar <span class="pp">*</span> Go / c</span>
|
||||
<span id="cb1-51"><a href="#cb1-51" aria-hidden="true" tabindex="-1"></a><span class="ex">print</span><span class="er">(</span><span class="st">"R\u03BD "</span><span class="ex">u</span><span class="st">"\u210F ="</span><span class="ex">,</span> rnu_h_bar<span class="kw">)</span></span>
|
||||
<span id="cb1-52"><a href="#cb1-52" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-53"><a href="#cb1-53" aria-hidden="true" tabindex="-1"></a><span class="co"># Planck Length</span></span>
|
||||
<span id="cb1-54"><a href="#cb1-54" aria-hidden="true" tabindex="-1"></a><span class="ex">rnu_h_bar_str</span> = str<span class="er">(</span><span class="ex">rnu_h_bar</span><span class="kw">)</span> </span>
|
||||
<span id="cb1-55"><a href="#cb1-55" aria-hidden="true" tabindex="-1"></a><span class="ex">numerical_part_str</span> = rnu_h_bar_str.split<span class="er">(</span><span class="st">'*'</span><span class="kw">)</span><span class="ex">[0]</span> </span>
|
||||
<span id="cb1-56"><a href="#cb1-56" aria-hidden="true" tabindex="-1"></a><span class="ex">numerical_part_str</span> = numerical_part_str.strip<span class="er">(</span><span class="st">'()'</span><span class="kw">)</span></span>
|
||||
<span id="cb1-57"><a href="#cb1-57" aria-hidden="true" tabindex="-1"></a><span class="ex">numerical_part</span> = float<span class="er">(</span><span class="ex">numerical_part_str</span><span class="kw">)</span></span>
|
||||
<span id="cb1-58"><a href="#cb1-58" aria-hidden="true" tabindex="-1"></a><span class="ex">rnu_sqrt_h_bar</span> = numerical_part^<span class="er">(</span><span class="ex">1/2</span><span class="kw">)</span></span>
|
||||
<span id="cb1-59"><a href="#cb1-59" aria-hidden="true" tabindex="-1"></a><span class="co"># ^ Sage cannot process sqrt on units... Lame.</span></span>
|
||||
<span id="cb1-60"><a href="#cb1-60" aria-hidden="true" tabindex="-1"></a><span class="ex">lP</span> = rnu_sqrt_h_bar <span class="pp">*</span> m</span>
|
||||
<span id="cb1-61"><a href="#cb1-61" aria-hidden="true" tabindex="-1"></a><span class="ex">print</span><span class="er">(</span><span class="st">"R\u03BD \u221A\u210F ="</span><span class="ex">,</span> lP<span class="kw">)</span></span></code></pre></div>
|
||||
<h4 id="output">Output</h4>
|
||||
<pre><code>pi = 3.14159
|
||||
tau = 6.28319
|
||||
si c = 299792458*m/s
|
||||
Rν c = 1
|
||||
si G = (6.67384e-11)*m^3/(kg*s^2)
|
||||
Rν Go = (9.33135e-27)*m/kg
|
||||
si ℏ = (1.05457e-34)*kg*m^2/s
|
||||
Rν ℏ = (3.28246e-69)*m^2
|
||||
Rν √ℏ = (5.72928e-35)*m
|
||||
si lP = (1.61620e-35)*sqrt(m^2)
|
||||
Rν lP = (2.77455e-47)*sqrt(m^3/kg)</code></pre>
|
||||
<h1 id="terminology">Terminology</h1>
|
||||
<h1 class="unnumbered" id="citations">Citations</h1>
|
||||
<div id="refs" class="references csl-bib-body hanging-indent"
|
||||
role="list">
|
||||
<div id="ref-IsaacNewtonLetter" class="csl-entry" role="listitem">
|
||||
<span>“Isaac <span>Newton</span> Letter to <span>Robert Hooke</span>,
|
||||
1675.”</span> n.d.
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,822 @@
|
|||
% Options for packages loaded elsewhere
|
||||
\PassOptionsToPackage{unicode}{hyperref}
|
||||
\PassOptionsToPackage{hyphens}{url}
|
||||
\PassOptionsToPackage{dvipsnames,svgnames,x11names}{xcolor}
|
||||
\documentclass[
|
||||
12pt,
|
||||
]{book}
|
||||
\usepackage{xcolor}
|
||||
\usepackage[margin=1in]{geometry}
|
||||
\usepackage{amsmath,amssymb}
|
||||
\setcounter{secnumdepth}{5}
|
||||
\usepackage{iftex}
|
||||
\ifPDFTeX
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage{textcomp} % provide euro and other symbols
|
||||
\else % if luatex or xetex
|
||||
\usepackage{unicode-math} % this also loads fontspec
|
||||
\defaultfontfeatures{Scale=MatchLowercase}
|
||||
\defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
|
||||
\fi
|
||||
\usepackage{lmodern}
|
||||
\ifPDFTeX\else
|
||||
% xetex/luatex font selection
|
||||
\setmainfont[]{Libertinus Serif}
|
||||
\setsansfont[]{Libertinus Sans}
|
||||
\setmonofont[]{DejaVu Sans Mono}
|
||||
\fi
|
||||
% Use upquote if available, for straight quotes in verbatim environments
|
||||
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
|
||||
\IfFileExists{microtype.sty}{% use microtype if available
|
||||
\usepackage[]{microtype}
|
||||
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
|
||||
}{}
|
||||
\makeatletter
|
||||
\@ifundefined{KOMAClassName}{% if non-KOMA class
|
||||
\IfFileExists{parskip.sty}{%
|
||||
\usepackage{parskip}
|
||||
}{% else
|
||||
\setlength{\parindent}{0pt}
|
||||
\setlength{\parskip}{6pt plus 2pt minus 1pt}}
|
||||
}{% if KOMA class
|
||||
\KOMAoptions{parskip=half}}
|
||||
\makeatother
|
||||
\usepackage{color}
|
||||
\usepackage{fancyvrb}
|
||||
\newcommand{\VerbBar}{|}
|
||||
\newcommand{\VERB}{\Verb[commandchars=\\\{\}]}
|
||||
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
|
||||
% Add ',fontsize=\small' for more characters per line
|
||||
\newenvironment{Shaded}{}{}
|
||||
\newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
|
||||
\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
||||
\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{#1}}
|
||||
\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
|
||||
\newcommand{\BuiltInTok}[1]{\textcolor[rgb]{0.00,0.50,0.00}{#1}}
|
||||
\newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
||||
\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{#1}}}
|
||||
\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
||||
\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{#1}}
|
||||
\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
|
||||
\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{#1}}
|
||||
\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
|
||||
\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{#1}}}
|
||||
\newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
|
||||
\newcommand{\ExtensionTok}[1]{#1}
|
||||
\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
|
||||
\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{#1}}
|
||||
\newcommand{\ImportTok}[1]{\textcolor[rgb]{0.00,0.50,0.00}{\textbf{#1}}}
|
||||
\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
||||
\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
|
||||
\newcommand{\NormalTok}[1]{#1}
|
||||
\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}}
|
||||
\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{#1}}
|
||||
\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{#1}}
|
||||
\newcommand{\RegionMarkerTok}[1]{#1}
|
||||
\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
||||
\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{#1}}
|
||||
\newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
||||
\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{#1}}
|
||||
\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
||||
\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
||||
\usepackage{longtable,booktabs,array}
|
||||
\usepackage{calc} % for calculating minipage widths
|
||||
% Correct order of tables after \paragraph or \subparagraph
|
||||
\usepackage{etoolbox}
|
||||
\makeatletter
|
||||
\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{}
|
||||
\makeatother
|
||||
% Allow footnotes in longtable head/foot
|
||||
\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}}
|
||||
\makesavenoteenv{longtable}
|
||||
\usepackage{graphicx}
|
||||
\makeatletter
|
||||
\newsavebox\pandoc@box
|
||||
\newcommand*\pandocbounded[1]{% scales image to fit in text height/width
|
||||
\sbox\pandoc@box{#1}%
|
||||
\Gscale@div\@tempa{\textheight}{\dimexpr\ht\pandoc@box+\dp\pandoc@box\relax}%
|
||||
\Gscale@div\@tempb{\linewidth}{\wd\pandoc@box}%
|
||||
\ifdim\@tempb\p@<\@tempa\p@\let\@tempa\@tempb\fi% select the smaller of both
|
||||
\ifdim\@tempa\p@<\p@\scalebox{\@tempa}{\usebox\pandoc@box}%
|
||||
\else\usebox{\pandoc@box}%
|
||||
\fi%
|
||||
}
|
||||
% Set default figure placement to htbp
|
||||
\def\fps@figure{htbp}
|
||||
\makeatother
|
||||
% definitions for citeproc citations
|
||||
\NewDocumentCommand\citeproctext{}{}
|
||||
\NewDocumentCommand\citeproc{mm}{%
|
||||
\begingroup\def\citeproctext{#2}\cite{#1}\endgroup}
|
||||
\makeatletter
|
||||
% allow citations to break across lines
|
||||
\let\@cite@ofmt\@firstofone
|
||||
% avoid brackets around text for \cite:
|
||||
\def\@biblabel#1{}
|
||||
\def\@cite#1#2{{#1\if@tempswa , #2\fi}}
|
||||
\makeatother
|
||||
\newlength{\cslhangindent}
|
||||
\setlength{\cslhangindent}{1.5em}
|
||||
\newlength{\csllabelwidth}
|
||||
\setlength{\csllabelwidth}{3em}
|
||||
\newenvironment{CSLReferences}[2] % #1 hanging-indent, #2 entry-spacing
|
||||
{\begin{list}{}{%
|
||||
\setlength{\itemindent}{0pt}
|
||||
\setlength{\leftmargin}{0pt}
|
||||
\setlength{\parsep}{0pt}
|
||||
% turn on hanging indent if param 1 is 1
|
||||
\ifodd #1
|
||||
\setlength{\leftmargin}{\cslhangindent}
|
||||
\setlength{\itemindent}{-1\cslhangindent}
|
||||
\fi
|
||||
% set entry spacing
|
||||
\setlength{\itemsep}{#2\baselineskip}}}
|
||||
{\end{list}}
|
||||
\usepackage{calc}
|
||||
\newcommand{\CSLBlock}[1]{\hfill\break\parbox[t]{\linewidth}{\strut\ignorespaces#1\strut}}
|
||||
\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{\strut#1\strut}}
|
||||
\newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{\strut#1\strut}}
|
||||
\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1}
|
||||
\setlength{\emergencystretch}{3em} % prevent overfull lines
|
||||
\providecommand{\tightlist}{%
|
||||
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
||||
\usepackage[most]{tcolorbox}
|
||||
\usepackage{graphicx}
|
||||
\tcbuselibrary{breakable}
|
||||
|
||||
% =========================================================
|
||||
% Concept Boxes
|
||||
% =========================================================
|
||||
\newtcolorbox{proposedbox}{
|
||||
title=Proposed Concept,
|
||||
colback=blue!5!white,
|
||||
colframe=blue!75!black,
|
||||
colbacktitle=blue!15!white,
|
||||
fonttitle=\bfseries,
|
||||
coltitle=black,
|
||||
enhanced,
|
||||
sharp corners,
|
||||
breakable,
|
||||
after = \par\vspace{6pt}
|
||||
}
|
||||
|
||||
\newtcolorbox{establishedbox}{
|
||||
title=Established Concept,
|
||||
colback=green!5!white,
|
||||
colframe=green!75!black,
|
||||
colbacktitle=green!15!white,
|
||||
fonttitle=\bfseries,
|
||||
coltitle=black,
|
||||
enhanced,
|
||||
sharp corners,
|
||||
breakable,
|
||||
after = \par\vspace{6pt}
|
||||
}
|
||||
|
||||
\newtcolorbox{speculativebox}{
|
||||
title=Speculative Concept,
|
||||
colback=purple!5!white,
|
||||
colframe=purple!75!black,
|
||||
colbacktitle=purple!15!white,
|
||||
fonttitle=\bfseries,
|
||||
coltitle=black,
|
||||
enhanced,
|
||||
sharp corners,
|
||||
breakable,
|
||||
after = \par\vspace{6pt}
|
||||
}
|
||||
|
||||
\usepackage{bookmark}
|
||||
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
|
||||
\urlstyle{same}
|
||||
\hypersetup{
|
||||
colorlinks=true,
|
||||
linkcolor={blue},
|
||||
filecolor={Maroon},
|
||||
citecolor={Blue},
|
||||
urlcolor={Blue},
|
||||
pdfcreator={LaTeX via pandoc}}
|
||||
|
||||
\author{}
|
||||
\date{}
|
||||
|
||||
\begin{document}
|
||||
\frontmatter
|
||||
|
||||
\renewcommand*\contentsname{Contents}
|
||||
{
|
||||
\setcounter{tocdepth}{3}
|
||||
\tableofcontents
|
||||
}
|
||||
\mainmatter
|
||||
\chapter{Introduction}\label{introduction}
|
||||
|
||||
\begin{quote}
|
||||
``\emph{If I have seen further it is by standing on the shoulders of
|
||||
Giants.}''
|
||||
|
||||
-- Isaac Newton (\citeproc{ref-IsaacNewtonLetter}{{``Isaac {Newton}
|
||||
Letter to {Robert Hooke}, 1675,''} n.d.})
|
||||
\end{quote}
|
||||
|
||||
\section{Conventions}\label{conventions}
|
||||
|
||||
In this book we'll use a few conventions.
|
||||
|
||||
\subsection{New Concepts}\label{new-concepts}
|
||||
|
||||
As many of the topics discussed in this book are a mix of
|
||||
\textbf{established} math and physics, \textbf{proposed} dualistic
|
||||
interpretations of established ideas, and also \textbf{speculative}
|
||||
ideas that I don't yet know how to address, I wanted a way to clearly
|
||||
distinguish these concepts. I've come up with the following convention
|
||||
to highlight these classes of concepts to indicate their level of
|
||||
mainstream acceptance.
|
||||
|
||||
In this book, established concept may be highlighted in green, and
|
||||
represent mainstream physics or math concepts.
|
||||
|
||||
\begin{establishedbox}
|
||||
Established Concept Einsteins Relativistic Dynamics Equations
|
||||
\[E^2 = (m_{0} \cdot c^2)^2 + (p \cdot c)^2 \]
|
||||
\end{establishedbox}
|
||||
|
||||
New ideas proposed by the author which have not been peer reviewed,
|
||||
verified or tested, and should be looked at with scrutiny.
|
||||
|
||||
\begin{proposedbox}
|
||||
Proposed Concept With the speed of light, \(c = 1\):
|
||||
\[E^2 = m_{0}^2 + p^2 \]
|
||||
\end{proposedbox}
|
||||
|
||||
Speculative Idea, that the author wonders about, but does not know how
|
||||
to demonstrate, or ideas that need further treatment to prove or
|
||||
disprove.
|
||||
|
||||
\begin{speculativebox}
|
||||
Speculative Concept With the speed of light, \(c = 1\):
|
||||
\[E^2 = m_{0}^2 + p^2 \]
|
||||
\end{speculativebox}
|
||||
|
||||
\chapter{Chapter 1}\label{chapter-1}
|
||||
|
||||
Blah blah blah
|
||||
|
||||
\chapter{Example Content}\label{example-content}
|
||||
|
||||
In \(R\nu\) the
|
||||
\href{https://en.wikipedia.org/wiki/Planck_units\#Planck_length}{Planck
|
||||
Length} is the universal unit for measurement of distance, and is
|
||||
defined approximately to be:
|
||||
\[\boxed{L_P=\sqrt{\hbar}=5.72928\times10^{-35}m=1 L}\] Where \(1\ L\),
|
||||
is 1 Planck Length of distance.
|
||||
|
||||
\subsection{SI Conversion Factors}\label{si-conversion-factors}
|
||||
|
||||
The following conversion factors can be used to convert observable
|
||||
quantities of measure from the \emph{SI} system of units to \(R\nu\) to
|
||||
\textasciitilde6 significant digits.
|
||||
|
||||
\begin{longtable}[]{@{}
|
||||
>{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.3256}}
|
||||
>{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.0930}}
|
||||
>{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.5814}}@{}}
|
||||
\toprule\noalign{}
|
||||
\begin{minipage}[b]{\linewidth}\raggedright
|
||||
Conversion Factor
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
Symbol
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
Value
|
||||
\end{minipage} \\
|
||||
\midrule\noalign{}
|
||||
\endhead
|
||||
\bottomrule\noalign{}
|
||||
\endlastfoot
|
||||
meters to Planck Length & \(\chi_P\) &
|
||||
\(1.74542\times10^{34} \frac{L}{m}\) \\
|
||||
seconds to Planck Length & \(\tau_p\) &
|
||||
\(5.23264\times10^{42} \frac{L}{s}\) \\
|
||||
mass to Planck Length & \(G_P\) & \(1.62871\times10^8 \frac{L}{kg}\) \\
|
||||
energy to Planck Length & \(E_P\) & \(1.81219\times10^9 \frac{L}{J}\) \\
|
||||
momentum to Planck Length & \(P_P\) &
|
||||
\(5.43280\times10^{-1} \frac{L\cdot s}{kg \cdot m}\) \\
|
||||
temperature to Planck Length & \(k_P\) &
|
||||
\(2.501998\times10^{-14} \frac{L}{K}\) \\
|
||||
charge to Planck Length & \(C_P\) &
|
||||
\(1.89007\times10^{18} \frac{L}{C}\) \\
|
||||
\end{longtable}
|
||||
|
||||
\subsection{Physical Constants}\label{physical-constants}
|
||||
|
||||
Applying conversion factors from the table above, we can convert SI
|
||||
values to Reduced Natural Units. For example, performing this analysis
|
||||
on the the speed of light yields a unit-less number with a value of 1:
|
||||
|
||||
\(c = 299792458 \frac{m}{s} = 299792458 \frac{m}{s} \cdot 1.74542\times10^{34} \frac{L}{m} \cdot \frac{1}{5.23264\times10^{42} \frac{L}{s}} = 1.00000\)
|
||||
|
||||
\begin{longtable}[]{@{}
|
||||
>{\raggedright\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.2273}}
|
||||
>{\raggedright\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.0909}}
|
||||
>{\raggedright\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.4545}}
|
||||
>{\raggedright\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.2273}}@{}}
|
||||
\toprule\noalign{}
|
||||
\begin{minipage}[b]{\linewidth}\raggedright
|
||||
Quantity
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
Symbol
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
SI
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
\(\nu\)
|
||||
\end{minipage} \\
|
||||
\midrule\noalign{}
|
||||
\endhead
|
||||
\bottomrule\noalign{}
|
||||
\endlastfoot
|
||||
Speed of Light & \(c\) & \(299792458 \frac{m}{s}\) & 1 \\
|
||||
Reduced Gravitational Constant & \(G_0\) &
|
||||
\(8.38659\times10^{-10} \frac{m^3}{kg \cdot s^2}\) & 1 \\
|
||||
Boltzmann's Constant & \(k\) & \(k=1.380649\times10^-23 \frac{J}{K}\) &
|
||||
1 \\
|
||||
Permittivity of Free Space & \(\epsilon_o\) &
|
||||
\(8.854187817620\times10^{-12} \frac{C^{2}s^2}{kg \cdot m^3}\) & 1 \\
|
||||
Permeability of Free Space & \(\mu_o\) &
|
||||
\(\huge{\frac{1}{\epsilon_{o} \cdot c^{2}}}\) & 1 \\
|
||||
Reduced Planck's Constant & \(\hbar\) &
|
||||
\(1.054571726\times10^-34 \frac{kg \cdot m^2}{s}\) & \(1 L^2\) \\
|
||||
Mass of the Electron & \(m_e\) & \(9.10938\times10^{-31} kg\) &
|
||||
\(1.48366\times10^{-22} L\) \\
|
||||
Charge of the Electron & \(e^-\) & \(-1.60218\times10^{-19} C\) &
|
||||
\(-3.02822\times10^{-1} L\) \\
|
||||
Unit Cycle & \(\Theta\) & \(2\pi = 6.28318...\ Radians\) &
|
||||
\(1 \tau = 6.28318...\ Radians\) \\
|
||||
\end{longtable}
|
||||
|
||||
\section{Fine Structure Constant}\label{fine-structure-constant}
|
||||
|
||||
As a consistency check, we compute the
|
||||
\emph{\href{https://en.wikipedia.org/wiki/Fine-structure_constant}{Fine
|
||||
Structure Constant}} using Reduced Natural Units which is a unit less
|
||||
ratio that should be independent of our system of units.
|
||||
|
||||
\(\huge{\alpha=\frac{e^2}{4\pi\epsilon_o\hbar c}=\frac{e^2}{2\tau}=0.00729735≈\frac{1}{137}}\)
|
||||
|
||||
\subsubsection{Dimensional Analysis}\label{dimensional-analysis}
|
||||
|
||||
The reader should be familiar with high school physics and chemistry
|
||||
\href{https://en.wikipedia.org/wiki/Dimensional_analysis}{dimensional
|
||||
analysis}.
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
\(1\ meter\ (m) = 100\ centimeters\ (cm)\)
|
||||
\item
|
||||
\(1\ kilometer\ (km) = 1000\ meters\ (m)\)
|
||||
\item
|
||||
\(1\ mile = 5280\ feet\ (ft\ or\ ')\)
|
||||
\item
|
||||
\(1\ foot\ (ft\ or\ ') = 12\ inches\ (in\ or\ ")\)
|
||||
\item
|
||||
\(1\ inch\ (") = 2.54\ centimeters\ (cm)\)
|
||||
\end{itemize}
|
||||
|
||||
How many kilometers are in 1 mile?
|
||||
\(1\ mile = 1\ mile \times \frac{5280\ ft}{mile} \times \frac{12\ in}{ft} \times \frac{2.54\ cm}{in}\times \frac{1\ m}{100 cm} \times \frac{1\ km}{1000 m} = \frac{5280 \times 12 \times 2.54}{100 \times 1000}\ km = \frac{160934.40}{100000}\ km = 1.6\ km\)
|
||||
Note that each unit in the denominator cancels with one if the numerator
|
||||
until we are left with only km.
|
||||
|
||||
\section{Newton's Law of Gravity}\label{newtons-law-of-gravity}
|
||||
|
||||
The force of gravity (\(F_g\)) between 2 masses, \(m1\) and \(m2\)
|
||||
separated by distance \(r\) is given by
|
||||
\href{https://en.wikipedia.org/wiki/Newton\%27s_law_of_universal_gravitation}{Newton's
|
||||
Law of Gravity}:
|
||||
|
||||
\(F_{g} = G \frac{m_{1} m_{2}}{r^{2}}\)
|
||||
|
||||
Where \(G\), is the
|
||||
\href{http://en.wikipedia.org/wiki/Gravitational_Constant}{Gravitational
|
||||
Constant}.
|
||||
|
||||
\(G = 6.67430 \times 10^{-11}\ N\frac{m^2}{kg^2}\)
|
||||
|
||||
The strength of gravitational force follow the inverse square law
|
||||
distributing gravitational flux over the surface area of a sphere
|
||||
(\(4\pi r^2\)).
|
||||
|
||||
\subsubsection{Inverse Square Law}\label{inverse-square-law}
|
||||
|
||||
Any source of a signal strength (\(S_0\)) that radiates isotropically in
|
||||
3-dimensional space will distribute that signal strength (\(S_0\)) over
|
||||
the surface area of a sphere (\(SA = 4 \pi r\)) of radius (\(r\)). Such
|
||||
that the intensity (\(I\)) at distance (\(r\)) is:
|
||||
|
||||
\[I(r) = \frac{S_0}{4 \pi r^{2}}=\frac{S_0}{2 \tau r^{2}}\]
|
||||
\pandocbounded{\includegraphics[keepaspectratio,alt={inverse square law}]{lib/img/Inverse_square_law.svg.png}}
|
||||
\#\#\#\# \(R\nu\) Reduced Gravitational Constant In this version of
|
||||
Newton's Law of Gravity we introduce a new constant \(G_0\), the reduced
|
||||
gravitational constant to accommodate for the factor of \(4\pi = 2\tau\)
|
||||
which is has been integrated in the SI version of the gravitational
|
||||
constant.
|
||||
|
||||
\(F_g =G \frac{m_{1} m_{2}}{r^{2}}= G_0 \frac{m_{1} m_{2}}{4 \pi r^{2}}=G_0 \frac{m_{1} m_{2}}{2 \tau r^{2}}\)
|
||||
|
||||
Where:
|
||||
|
||||
\(G = \frac{G_{0}}{2\tau} = 6.67384 \times 10^{-11} \frac{N \cdot m^2}{kg^2}\)
|
||||
|
||||
Analyzing the units:
|
||||
\[\frac{N \cdot m^2}{kg^2} = \left( \frac{\left( kg \cdot \frac{m}{s^2} \right) \cdot m^2}{kg^2} \right)=\frac{m^3}{s^2 kg}\]
|
||||
Converting seconds to meters with the SI speed of light as a conversion
|
||||
factor:
|
||||
\[\frac{m^3}{s^2 kg}\cdot\frac{1}{c^2}=\frac{m^3}{s^2 kg}\cdot\frac{s^2}{m^2}=\frac{m}{kg}\]
|
||||
|
||||
Thus where space and time are measured in units of meters, the reduced
|
||||
gravitational constant, is:
|
||||
|
||||
\[\boxed{G_0=\frac{2\tau G}{c^2}=\frac{2\tau \cdot 6.67384 \times 10^{-11}}{299792458^2} \frac{m}{kg} = 9.33135 \times 10^-27 \frac{m}{kg}}\]
|
||||
|
||||
\begin{quote}
|
||||
Observation This implies that not only can space an time be measure in
|
||||
units of meters, but so can mass.
|
||||
\end{quote}
|
||||
|
||||
\subsection{Relativistic Energy Momentum
|
||||
Relation}\label{relativistic-energy-momentum-relation}
|
||||
|
||||
Einsteins
|
||||
\href{https://en.wikipedia.org/wiki/Energy\%E2\%80\%93momentum_relation}{Relativistic
|
||||
Energy Momentum} relationship shows a Pythagorean relation between the
|
||||
total energy (\(E\)), rest mass (\(m_0\)) and momentum (\(p\)) of a
|
||||
system.
|
||||
|
||||
\(E^{2} = (m_0 \cdot c^2)^2 + (p \cdot c)^2\)
|
||||
|
||||
Where space and time are both measure in units of meters, c=1.
|
||||
|
||||
\(E^2=(m_0)^2+(p)^2\)
|
||||
|
||||
From this we can see that Energy, Momentum and Mass have equivalent
|
||||
units.
|
||||
|
||||
\begin{quote}
|
||||
\emph{While we do not really know what energy, mass and momentum are we
|
||||
know that they are fundamentally ``made'' out of the same stuff because
|
||||
they have the same units.}
|
||||
\end{quote}
|
||||
|
||||
\paragraph{Objects of mass at rest}\label{objects-of-mass-at-rest}
|
||||
|
||||
For an object at rest with no momentum (\(p = 0\)) we see Einstein's
|
||||
famous equations:
|
||||
|
||||
\(E = m_{0} \cdot c^2\)
|
||||
|
||||
Or, with \(c=1\), this is much simpler to understand. Energy = Mass
|
||||
|
||||
\(E = m_0\) \#\#\#\#\# Zero mass objects moving at the speed of light
|
||||
And for objects with no mass, like photos, (\(m_{0}= 0\)):
|
||||
|
||||
\(E=pc\)
|
||||
|
||||
Or, with \(c=1\), this is much simpler to understand. Energy = Momentum
|
||||
|
||||
\(E=p\)
|
||||
|
||||
\section{Planck's Constant}\label{plancks-constant}
|
||||
|
||||
The \href{https://en.wikipedia.org/wiki/Planck_constant}{Reduced Planck
|
||||
constant} , ħ, represents a conversion factor for relating the
|
||||
frequency, \(\omega\) (in \(2\pi\) radians per second), of a photon to
|
||||
the energy of that photon. This can easily be seen from the simple but
|
||||
profound relationship:
|
||||
|
||||
\(E=\hbar\omega\)
|
||||
|
||||
Where:
|
||||
|
||||
\(\hbar=1.054571726 \times 10^{−34} J \cdot s\)
|
||||
|
||||
and
|
||||
|
||||
\(J \cdot s = {kg}\cdot\frac{m^2}{s}\)
|
||||
|
||||
\begin{quote}
|
||||
Reduced Planck's Constant \(\hbar = \frac{h}{2\pi} = \frac{h}{\tau}\)
|
||||
\end{quote}
|
||||
|
||||
Simplifying our units by converting time and mass to units of meters:
|
||||
\[\boxed{\hbar=1.054571726 \times 10^{−34} {kg}\cdot\frac{m^2}{s}\cdot\frac{G_0}{c}=3.282462\times10^{-69}m^2}\]
|
||||
|
||||
Which suggest that the Plank constant can be interpreted as an areas for
|
||||
which the square root of is suspiciously close to the Plank length:
|
||||
|
||||
\[\boxed{\sqrt{\hbar}=\sqrt{3.282462\times10^{-69}m^2}=5.72928\times10^{-35}m}\]
|
||||
|
||||
\subsubsection{Planck Area}\label{planck-area}
|
||||
|
||||
The
|
||||
\href{https://en.wikipedia.org/wiki/Planck_units\#Derived_units}{Planck
|
||||
Area} is the square of the
|
||||
\href{https://en.wikipedia.org/wiki/Planck_units\#Planck_length}{Planck
|
||||
Length}.
|
||||
|
||||
\(l_{P}= \sqrt{\frac{\hbar G}{c^3}}\)
|
||||
|
||||
and \(l_{P}^{2}= \frac{\hbar G}{c^3}\)
|
||||
|
||||
In \(R\nu\) units both \(c\) and \(G_o\) are 1.
|
||||
|
||||
\(l_{P} = \sqrt{\hbar}\)
|
||||
|
||||
and \(l_P^{2}=\hbar\) \#\# Bekenstein's Bound After having recently read
|
||||
\emph{Three Roads to Quantum Gravity} by Lee Smolin, I now suspect the
|
||||
meaning of this areas is related to the
|
||||
\href{https://en.wikipedia.org/wiki/Bekenstein_bound}{Bekensteins Law}
|
||||
as applied to a surface areas surrounding a mass. Where the
|
||||
\href{https://en.wikipedia.org/wiki/Entropy_(statistical_thermodynamics)}{thermodynamic
|
||||
entropy}, \emph{S}, is proportional to the the enclosed surface area,
|
||||
\(A\).
|
||||
|
||||
\(S=\frac{1}{4}\cdot\frac{A}{G\hbar}\)
|
||||
|
||||
\(S=\frac{k c^{3} A}{4 G \hbar}\)
|
||||
|
||||
\(S \le \frac{2\pi k R E}{\hbar c} = \frac{\tau R k E}{\hbar c}\)
|
||||
|
||||
From our new values for \(G_0\)and \(\hbar\) we can likely rewrite this:
|
||||
|
||||
\(S=\frac{\pi\cdot A}{\hbar G_0}\)
|
||||
|
||||
With the limiting case being at the Plank scale.
|
||||
|
||||
\(S=\frac{\pi\cdot \sqrt{\hbar}}{\hbar G_0}\)
|
||||
|
||||
\section{Planck Length}\label{planck-length}
|
||||
|
||||
https://en.wikipedia.org/wiki/Planck\_length
|
||||
|
||||
The concept of the Planck Length comes from exploring the limits of
|
||||
Quantum Mechanics and General Relativity. The limits of General
|
||||
Relativity can be seen a the event horizon of a black hole, described by
|
||||
the Schwarzschild Radius. And the limits of Quantum Mechanics can be
|
||||
found in the Compton Wavelength for a given quanta.
|
||||
|
||||
The
|
||||
\href{https://simple.wikipedia.org/wiki/Schwarzschild_radius}{Schwarzschild
|
||||
Radius} is defined as the distance at which light cannot escape from the
|
||||
gravitational field of a mass (m):
|
||||
|
||||
Classic Derivation.
|
||||
|
||||
\(r_S=\frac{2G m}{c^2}\)
|
||||
|
||||
The reduced
|
||||
\href{https://en.wikipedia.org/wiki/Compton_wavelength}{Compton
|
||||
Wavelength} represents a lower limit on the wavelength for quanta that
|
||||
can interact with a quantum particle with mass (m):
|
||||
|
||||
\(\lambda_C=\frac{h}{m c}\)
|
||||
|
||||
\(\bar{\lambda_C}=\frac{2\pi\hbar}{m c}=\frac{\tau\hbar}{m c}\)
|
||||
|
||||
And set the Schwarzschild Radius equal to the Compton Wavelength:
|
||||
\(r_S=\lambda_C\)
|
||||
|
||||
\(\frac{2Gm}{c^{2}}=\frac{h}{m c}\)
|
||||
|
||||
\(m^{2}= \frac{hc}{2G}\)
|
||||
|
||||
\(m = \sqrt{\frac{hc}{2G}}\)
|
||||
|
||||
\(l_P=\frac{2G\sqrt{\frac{hc}{2G}}}{c^2}\)
|
||||
\(l_P=\frac{2G\sqrt{\frac{hc}{2G}}}{c^{2}}= \sqrt{\frac{2Gh}{c^2}}\)
|
||||
|
||||
With reduced Compton Wavelength \(r_S=\bar{\lambda_C}\)
|
||||
|
||||
\(\frac{2Gm}{c^{2}}=\frac{\tau\hbar}{m c}\)
|
||||
|
||||
\(m^2=\frac{\tau\ \hbar\ c}{2G}\)
|
||||
|
||||
\(m = \sqrt{\frac{\tau\ \hbar\ c}{2G}}\)
|
||||
|
||||
\(l_P=\frac{2G\sqrt{\frac{\tau\ \hbar\ c}{2G}}}{c^2}\)
|
||||
|
||||
\(l_P=\frac{2G\sqrt{\frac{\tau\ \hbar\ c}{2G}}}{c^{2}}=\sqrt{\frac{4\ \tau\ G\ \hbar}{c^3}}\)
|
||||
|
||||
If we reduce the units in these equation to those of mass and time
|
||||
measured in meters.
|
||||
|
||||
\(l_P=\sqrt{4\tau\hbar G_{o}}\)
|
||||
|
||||
and
|
||||
|
||||
\(\lambda_C=\frac{\hbar}{m}\)
|
||||
|
||||
\(m=R_s=\lambda_C=\frac{\hbar}{m}\)
|
||||
|
||||
This is known as the Planck Mass, \(M_P\). \(M_P=m=\sqrt{\hbar}\)
|
||||
|
||||
Solving the Compton Wavelength for distance we find the classic Plank
|
||||
Length:
|
||||
|
||||
\(\lambda_C=\frac{\hbar}{\sqrt{\hbar}}=\frac{\sqrt{\hbar}}{\sqrt{\hbar}}\cdot\frac{\hbar}{\sqrt{\hbar}}=\sqrt{\hbar}=L_P\)
|
||||
|
||||
Which is in precise agreement with the value we found in above. Thus the
|
||||
Plank Length is:
|
||||
|
||||
\(L_P=\sqrt{\hbar}=5.72928\times10^{-35}m\)
|
||||
|
||||
When we measure distance, time, and mass in units of distance, c=1, and
|
||||
the Plank Time, \(T_P\), is equal to Plank Length, \(L_P\), which is
|
||||
equal to the Plank Mass, \(M_P\):
|
||||
|
||||
\[\boxed{L_P=T_P=M_P}\]
|
||||
|
||||
\begin{longtable}[]{@{}
|
||||
>{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.3000}}
|
||||
>{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.3000}}
|
||||
>{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.4000}}@{}}
|
||||
\toprule\noalign{}
|
||||
\begin{minipage}[b]{\linewidth}\raggedright
|
||||
Conversion Factor
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
Symbol
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
Value
|
||||
\end{minipage} \\
|
||||
\midrule\noalign{}
|
||||
\endhead
|
||||
\bottomrule\noalign{}
|
||||
\endlastfoot
|
||||
meters to Planck Length & \(\chi_P\) &
|
||||
\(1.74542\times10^{34} \frac{L}{m}\) \\
|
||||
seconds to Planck Length & \(\tau_p\) &
|
||||
\(5.23264\times10^{42} \frac{L}{s}\) \\
|
||||
mass to Planck Length & \(G_P\) & \(1.62871\times10^8 \frac{L}{kg}\) \\
|
||||
energy to Planck Length & \(E_P\) & \(1.81219\times10^9 \frac{L}{J}\) \\
|
||||
momentum to Planck Length & \(P_P\) &
|
||||
\(5.43280\times10^{-1} \frac{L\cdot s}{kg \cdot m}\) \\
|
||||
temperature to Planck Length & \(k_P\) &
|
||||
\(2.501998\times10^{-14} \frac{L}{K}\) \\
|
||||
charge to Planck Length & \(C_P\) &
|
||||
\(1.89007\times10^{18} \frac{L}{C}\) \\
|
||||
\end{longtable}
|
||||
|
||||
Applying conversion factors from the table above, we can convert SI
|
||||
values to Reduced Natural Units. \(c=\frac{1}{\sqrt{\epsilon_o \mu_o}}\)
|
||||
|
||||
\begin{longtable}[]{@{}
|
||||
>{\raggedright\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.2308}}
|
||||
>{\raggedright\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.2308}}
|
||||
>{\raggedright\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.2308}}
|
||||
>{\raggedright\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.3077}}@{}}
|
||||
\toprule\noalign{}
|
||||
\begin{minipage}[b]{\linewidth}\raggedright
|
||||
Quantity
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
Symbol
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
SI
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
\(\nu\)
|
||||
\end{minipage} \\
|
||||
\midrule\noalign{}
|
||||
\endhead
|
||||
\bottomrule\noalign{}
|
||||
\endlastfoot
|
||||
Speed of Light & \(c\) & \(299792458 \frac{m}{s}\) & 1 \\
|
||||
Gravitational Constant & \(G_0\) &
|
||||
\(8.38659\times10^{-10} \frac{m^3}{kg \cdot s^2}\) & 1 \\
|
||||
Boltzmann's Constant & \(k\) & \(k=1.380649\times10^-23 \frac{J}{K}\) &
|
||||
1 \\
|
||||
Permittivity of Free Space & \(\epsilon_o\) &
|
||||
\(8.854187817620\times10^{-12} \frac{C^{2}s^2}{kg \cdot m^3}\) & 1 \\
|
||||
Permeability of Free Space & \(\mu_o\) &
|
||||
\(\huge{\frac{1}{\epsilon_{o} \cdot c^{2}}}\) & 1 \\
|
||||
Planck's Constant & \(\hbar\) &
|
||||
\(1.054571726\times10^-34 \frac{kg \cdot m^2}{s}\) & \(1 L^2\) \\
|
||||
Mass of the Electron & \(m_e\) & \(9.10938\times10^{-31} kg\) &
|
||||
\(1.48366\times10^{-22} L\) \\
|
||||
Charge of the Electron & \(e^-\) & \(-1.60218\times10^{-19} C\) &
|
||||
\(-3.02822\times10^{-1} L\) \\
|
||||
\end{longtable}
|
||||
|
||||
\section{Fine Structure Constant}\label{fine-structure-constant-1}
|
||||
|
||||
https://en.wikipedia.org/wiki/Fine-structure\_constant As a consistency
|
||||
check, we compute the \emph{Fine Structure Constant} using Reduced
|
||||
Natural Units which is a unit less ratio that should be independent of
|
||||
our system of units.
|
||||
|
||||
\(\huge{\alpha=\frac{e^2}{4\pi\epsilon_o\hbar c}=\frac{e^2}{4\pi}=0.00729735≈\frac{1}{137}}\)
|
||||
|
||||
This check confirms that our system of Reduced Natural Units has
|
||||
internally consistent values for \(c\), \(\epsilon_o\), \(\hbar\) and
|
||||
\(e-\). And also \(G_o\) which was used to computer prior values is also
|
||||
consistent.
|
||||
|
||||
\section{Sage Code}\label{sage-code}
|
||||
|
||||
Unit Analysis computations have been performed with
|
||||
\href{https://www.sagemath.org/}{Sage Math}.
|
||||
|
||||
\begin{Shaded}
|
||||
\begin{Highlighting}[]
|
||||
\CommentTok{\# Define constance}
|
||||
\ExtensionTok{one}\NormalTok{ = 1.n}\ErrorTok{(}\VariableTok{digits}\OperatorTok{=}\NormalTok{6}\KeywordTok{)}
|
||||
\ExtensionTok{pi}\NormalTok{ = pi.n}\ErrorTok{(}\VariableTok{digits}\OperatorTok{=}\NormalTok{6}\KeywordTok{)}
|
||||
\ExtensionTok{tau}\NormalTok{ = 2 }\PreprocessorTok{*}\NormalTok{ pi}
|
||||
\ExtensionTok{t}\NormalTok{ = tau}
|
||||
|
||||
\CommentTok{\# Define the units}
|
||||
\ExtensionTok{meters}\NormalTok{ = var}\ErrorTok{(}\StringTok{\textquotesingle{}m\textquotesingle{}}\KeywordTok{)}
|
||||
\ExtensionTok{m}\NormalTok{ = one}\PreprocessorTok{*}\NormalTok{meters}
|
||||
|
||||
\ExtensionTok{seconds}\NormalTok{ = var}\ErrorTok{(}\StringTok{\textquotesingle{}s\textquotesingle{}}\KeywordTok{)}
|
||||
\ExtensionTok{s}\NormalTok{ = seconds}
|
||||
|
||||
\ExtensionTok{kilograms}\NormalTok{ = var}\ErrorTok{(}\StringTok{\textquotesingle{}kg\textquotesingle{}}\KeywordTok{)}
|
||||
\ExtensionTok{kg}\NormalTok{ = kilograms}
|
||||
|
||||
\ExtensionTok{newtons}\NormalTok{ = kg }\PreprocessorTok{*}\NormalTok{ m / s\^{}2}
|
||||
\ExtensionTok{N}\NormalTok{ = newtons}
|
||||
|
||||
\ExtensionTok{joules}\NormalTok{ = N }\PreprocessorTok{*}\NormalTok{ m}
|
||||
\ExtensionTok{J}\NormalTok{ = joules}
|
||||
|
||||
\ExtensionTok{print}\ErrorTok{(}\StringTok{"pi ="}\ExtensionTok{,}\NormalTok{ pi}\KeywordTok{)}
|
||||
\ExtensionTok{print}\ErrorTok{(}\StringTok{"tau ="}\ExtensionTok{,}\NormalTok{ t}\KeywordTok{)}
|
||||
|
||||
\CommentTok{\# Speed of light in meters/second}
|
||||
\ExtensionTok{speed\_of\_light}\NormalTok{ = 299792458 }\PreprocessorTok{*}\NormalTok{ meters/seconds}
|
||||
\ExtensionTok{sol}\NormalTok{ = speed\_of\_light}
|
||||
\ExtensionTok{c}\NormalTok{ = sol}
|
||||
\ExtensionTok{print}\ErrorTok{(}\StringTok{"si c ="}\ExtensionTok{,}\NormalTok{ c}\KeywordTok{)}
|
||||
|
||||
\ExtensionTok{rnu\_c}\NormalTok{ = c / c}
|
||||
\ExtensionTok{print}\ErrorTok{(}\StringTok{"R\textbackslash{}u03BD c ="}\ExtensionTok{,}\NormalTok{ rnu\_c}\KeywordTok{)}
|
||||
|
||||
\CommentTok{\# Gravitational Constant}
|
||||
\ExtensionTok{gravitational\_constant}\NormalTok{ = 6.67384e{-}11 }\PreprocessorTok{*}\NormalTok{ N}\PreprocessorTok{*(}\NormalTok{m\^{}2/kg\^{}2}\PreprocessorTok{)}
|
||||
\ExtensionTok{G}\NormalTok{ = gravitational\_constant}
|
||||
\ExtensionTok{print}\ErrorTok{(}\StringTok{"si G ="}\ExtensionTok{,}\NormalTok{ G}\KeywordTok{)}
|
||||
|
||||
\ExtensionTok{rnu\_G}\NormalTok{ = 4}\PreprocessorTok{*}\NormalTok{pi}\PreprocessorTok{*}\NormalTok{G/c\^{}2}
|
||||
\ExtensionTok{Go}\NormalTok{ = rnu\_G}
|
||||
\ExtensionTok{print}\ErrorTok{(}\StringTok{"R\textbackslash{}u03BD Go ="}\ExtensionTok{,}\NormalTok{ Go}\KeywordTok{)}
|
||||
|
||||
|
||||
\CommentTok{\# Planck\textquotesingle{}s Constant}
|
||||
\ExtensionTok{reduced\_plancks\_constant}\NormalTok{ = 1.054571726e{-}34 }\PreprocessorTok{*}\NormalTok{ J}\PreprocessorTok{*}\NormalTok{s}
|
||||
\ExtensionTok{h\_bar}\NormalTok{ = reduced\_plancks\_constant}
|
||||
\ExtensionTok{print}\ErrorTok{(}\StringTok{"si \textbackslash{}u210F ="}\ExtensionTok{,}\NormalTok{ h\_bar}\KeywordTok{)}
|
||||
|
||||
\ExtensionTok{rnu\_h\_bar}\NormalTok{ = h\_bar }\PreprocessorTok{*}\NormalTok{ Go / c}
|
||||
\ExtensionTok{print}\ErrorTok{(}\StringTok{"R\textbackslash{}u03BD "}\ExtensionTok{u}\StringTok{"\textbackslash{}u210F ="}\ExtensionTok{,}\NormalTok{ rnu\_h\_bar}\KeywordTok{)}
|
||||
|
||||
\CommentTok{\# Planck Length}
|
||||
\ExtensionTok{rnu\_h\_bar\_str}\NormalTok{ = str}\ErrorTok{(}\ExtensionTok{rnu\_h\_bar}\KeywordTok{)}
|
||||
\ExtensionTok{numerical\_part\_str}\NormalTok{ = rnu\_h\_bar\_str.split}\ErrorTok{(}\StringTok{\textquotesingle{}*\textquotesingle{}}\KeywordTok{)}\ExtensionTok{[0]}
|
||||
\ExtensionTok{numerical\_part\_str}\NormalTok{ = numerical\_part\_str.strip}\ErrorTok{(}\StringTok{\textquotesingle{}()\textquotesingle{}}\KeywordTok{)}
|
||||
\ExtensionTok{numerical\_part}\NormalTok{ = float}\ErrorTok{(}\ExtensionTok{numerical\_part\_str}\KeywordTok{)}
|
||||
\ExtensionTok{rnu\_sqrt\_h\_bar}\NormalTok{ = numerical\_part\^{}}\ErrorTok{(}\ExtensionTok{1/2}\KeywordTok{)}
|
||||
\CommentTok{\# \^{} Sage cannot process sqrt on units... Lame.}
|
||||
\ExtensionTok{lP}\NormalTok{ = rnu\_sqrt\_h\_bar }\PreprocessorTok{*}\NormalTok{ m}
|
||||
\ExtensionTok{print}\ErrorTok{(}\StringTok{"R\textbackslash{}u03BD \textbackslash{}u221A\textbackslash{}u210F ="}\ExtensionTok{,}\NormalTok{ lP}\KeywordTok{)}
|
||||
\end{Highlighting}
|
||||
\end{Shaded}
|
||||
|
||||
\subsubsection{Output}\label{output}
|
||||
|
||||
\begin{verbatim}
|
||||
pi = 3.14159
|
||||
tau = 6.28319
|
||||
si c = 299792458*m/s
|
||||
Rν c = 1
|
||||
si G = (6.67384e-11)*m^3/(kg*s^2)
|
||||
Rν Go = (9.33135e-27)*m/kg
|
||||
si ℏ = (1.05457e-34)*kg*m^2/s
|
||||
Rν ℏ = (3.28246e-69)*m^2
|
||||
Rν √ℏ = (5.72928e-35)*m
|
||||
si lP = (1.61620e-35)*sqrt(m^2)
|
||||
Rν lP = (2.77455e-47)*sqrt(m^3/kg)
|
||||
\end{verbatim}
|
||||
|
||||
\chapter{Terminology}\label{terminology}
|
||||
|
||||
\chapter*{Citations}\label{citations}
|
||||
\addcontentsline{toc}{chapter}{Citations}
|
||||
|
||||
\protect\phantomsection\label{refs}
|
||||
\begin{CSLReferences}{1}{1}
|
||||
\bibitem[\citeproctext]{ref-IsaacNewtonLetter}
|
||||
{``Isaac {Newton} Letter to {Robert Hooke}, 1675.''} n.d.
|
||||
|
||||
\end{CSLReferences}
|
||||
|
||||
\backmatter
|
||||
\end{document}
|
||||
|
|
@ -0,0 +1,185 @@
|
|||
/* ------------------------------
|
||||
Base book typography
|
||||
------------------------------ */
|
||||
|
||||
body {
|
||||
font-family: "Libertinus Serif", Georgia, serif;
|
||||
max-width: 42em;
|
||||
margin: auto;
|
||||
padding: 3rem 1.25rem;
|
||||
line-height: 1.65;
|
||||
background: #fff;
|
||||
color: #111;
|
||||
}
|
||||
|
||||
/* ------------------------------
|
||||
Headings
|
||||
------------------------------ */
|
||||
|
||||
h1, h2, h3, h4 {
|
||||
font-family: "Libertinus Sans", sans-serif;
|
||||
font-weight: 600;
|
||||
margin-top: 2em;
|
||||
margin-bottom: 0.6em;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 2.1rem;
|
||||
border-bottom: 2px solid #ddd;
|
||||
padding-bottom: 0.4rem;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.6rem;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
/* ------------------------------
|
||||
Front matter page
|
||||
------------------------------ */
|
||||
|
||||
.frontmatter {
|
||||
text-align: center;
|
||||
margin-top: 10vh;
|
||||
}
|
||||
|
||||
.frontmatter img {
|
||||
max-width: 30%;
|
||||
margin: 2rem auto;
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* ------------------------------
|
||||
Lists / paragraphs
|
||||
------------------------------ */
|
||||
|
||||
p {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
ul, ol {
|
||||
padding-left: 1.5em;
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
/* ------------------------------
|
||||
Math block spacing
|
||||
------------------------------ */
|
||||
|
||||
.math.display {
|
||||
margin: 1.2em 0;
|
||||
}
|
||||
|
||||
/* ------------------------------
|
||||
Callouts (final tuned spacing)
|
||||
------------------------------ */
|
||||
|
||||
.callout-established,
|
||||
.callout-proposed,
|
||||
.callout-speculative {
|
||||
border-radius: 6px;
|
||||
padding: 5px; /* internal padding */
|
||||
margin-top: 5px; /* external spacing tightened */
|
||||
margin-bottom: 5px;
|
||||
border-left: 6px solid;
|
||||
background: #fefefe;
|
||||
}
|
||||
|
||||
/* Title line */
|
||||
.callout-established p:first-child strong,
|
||||
.callout-proposed p:first-child strong,
|
||||
.callout-speculative p:first-child strong {
|
||||
display: block;
|
||||
font-family: "Libertinus Sans", sans-serif;
|
||||
font-weight: 600;
|
||||
font-size: 1.05rem;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
/* Paragraphs inside callouts */
|
||||
.callout-established p,
|
||||
.callout-proposed p,
|
||||
.callout-speculative p {
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
line-height: 1.45; /* slightly condensed text spacing */
|
||||
}
|
||||
|
||||
/* Remove top margin on first paragraph, bottom on last */
|
||||
.callout-established p:first-child,
|
||||
.callout-proposed p:first-child,
|
||||
.callout-speculative p:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
.callout-established p:last-child,
|
||||
.callout-proposed p:last-child,
|
||||
.callout-speculative p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/* Math inside callouts */
|
||||
.callout-established .math.display,
|
||||
.callout-proposed .math.display,
|
||||
.callout-speculative .math.display {
|
||||
margin: 0.4em 0;
|
||||
}
|
||||
|
||||
/* Colors */
|
||||
.callout-established {
|
||||
background: #e8f7e8;
|
||||
border-left-color: #3a8d3a;
|
||||
}
|
||||
.callout-proposed {
|
||||
background: #e8f0ff;
|
||||
border-left-color: #3b6dd8;
|
||||
}
|
||||
.callout-speculative {
|
||||
background: #f7e8ff;
|
||||
border-left-color: #8b2be2;
|
||||
}
|
||||
|
||||
|
||||
/* ------------------------------
|
||||
Images (in body content)
|
||||
------------------------------ */
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
display: block;
|
||||
margin: 1.2em auto;
|
||||
}
|
||||
|
||||
/* ------------------------------
|
||||
Blockquotes (normal ones)
|
||||
------------------------------ */
|
||||
|
||||
blockquote {
|
||||
border-left: 4px solid #ccc;
|
||||
padding-left: 1em;
|
||||
font-style: italic;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
/* ------------------------------
|
||||
Horizontal rule
|
||||
------------------------------ */
|
||||
|
||||
hr {
|
||||
margin: 3rem 0;
|
||||
border: none;
|
||||
border-top: 1px solid #ddd;
|
||||
}
|
||||
|
||||
/* ------------------------------
|
||||
Code (rare in your book)
|
||||
------------------------------ */
|
||||
|
||||
code {
|
||||
background: #f3f3f3;
|
||||
padding: 0.1em 0.3em;
|
||||
border-radius: 4px;
|
||||
font-size: 0.95em;
|
||||
}
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 7.9 KiB |
|
After Width: | Height: | Size: 9.9 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 350 350"><path fill="#aaa" d="M0 0h350v350H0z"/><g transform="translate(175 175)"><circle r="3"/><g fill="none" stroke-linecap="square"><g id="a"><path stroke="#eee" d="m-8-106 4-12H9"/><path stroke="#777" d="m9-118-4 12H-8"/></g><use xlink:href="#a" transform="rotate(12)"/><use xlink:href="#a" transform="rotate(24)"/><use xlink:href="#a" transform="rotate(36)"/><use xlink:href="#a" transform="rotate(48)"/><use xlink:href="#a" transform="rotate(60)"/><use xlink:href="#a" transform="rotate(72)"/><use xlink:href="#a" transform="rotate(84)"/><use xlink:href="#a" transform="rotate(96)"/><use xlink:href="#a" transform="rotate(108)"/><use xlink:href="#a" transform="rotate(120)"/><use xlink:href="#a" transform="rotate(132)"/><use xlink:href="#a" transform="rotate(144)"/><use xlink:href="#a" transform="rotate(156)"/><use xlink:href="#a" transform="rotate(168)"/><use xlink:href="#a" transform="rotate(180)"/><use xlink:href="#a" transform="rotate(-12)"/><use xlink:href="#a" transform="rotate(-24)"/><use xlink:href="#a" transform="rotate(-36)"/><use xlink:href="#a" transform="rotate(-48)"/><use xlink:href="#a" transform="rotate(-60)"/><use xlink:href="#a" transform="rotate(-72)"/><use xlink:href="#a" transform="rotate(-84)"/><use xlink:href="#a" transform="rotate(-96)"/><use xlink:href="#a" transform="rotate(-108)"/><use xlink:href="#a" transform="rotate(-120)"/><use xlink:href="#a" transform="rotate(-132)"/><use xlink:href="#a" transform="rotate(-144)"/><use xlink:href="#a" transform="rotate(-156)"/><use xlink:href="#a" transform="rotate(-168)"/><g id="b"><path stroke="#eee" d="m10-135-4-12H-7"/><path stroke="#777" d="m-7-147 4 12h13"/></g><use xlink:href="#b" transform="rotate(10)"/><use xlink:href="#b" transform="rotate(20)"/><use xlink:href="#b" transform="rotate(30)"/><use xlink:href="#b" transform="rotate(40)"/><use xlink:href="#b" transform="rotate(50)"/><use xlink:href="#b" transform="rotate(60)"/><use xlink:href="#b" transform="rotate(70)"/><use xlink:href="#b" transform="rotate(80)"/><use xlink:href="#b" transform="rotate(90)"/><use xlink:href="#b" transform="rotate(100)"/><use xlink:href="#b" transform="rotate(110)"/><use xlink:href="#b" transform="rotate(120)"/><use xlink:href="#b" transform="rotate(130)"/><use xlink:href="#b" transform="rotate(140)"/><use xlink:href="#b" transform="rotate(150)"/><use xlink:href="#b" transform="rotate(160)"/><use xlink:href="#b" transform="rotate(170)"/><use xlink:href="#b" transform="rotate(180)"/><use xlink:href="#b" transform="rotate(-10)"/><use xlink:href="#b" transform="rotate(-20)"/><use xlink:href="#b" transform="rotate(-30)"/><use xlink:href="#b" transform="rotate(-40)"/><use xlink:href="#b" transform="rotate(-50)"/><use xlink:href="#b" transform="rotate(-60)"/><use xlink:href="#b" transform="rotate(-70)"/><use xlink:href="#b" transform="rotate(-80)"/><use xlink:href="#b" transform="rotate(-90)"/><use xlink:href="#b" transform="rotate(-100)"/><use xlink:href="#b" transform="rotate(-110)"/><use xlink:href="#b" transform="rotate(-120)"/><use xlink:href="#b" transform="rotate(-130)"/><use xlink:href="#b" transform="rotate(-140)"/><use xlink:href="#b" transform="rotate(-150)"/><use xlink:href="#b" transform="rotate(-160)"/><use xlink:href="#b" transform="rotate(-170)"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 101 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
|
@ -0,0 +1 @@
|
|||
!function(){"use strict";var t,a,e,o={667:function(t,a){a.q=void 0,a.q="3.2.2"},669:function(t,a,e){var o=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(a,"__esModule",{value:!0}),a.ActionConfiguration=a.ActionMethods=void 0;var n=e(251),i=o(e(193)),r=e(871),u=o(e(360));a.ActionMethods={},a.ActionMethods.Macro=u.default.Macro,a.ActionMethods.Toggle=function(t,a){for(var e,o=[];"\\endtoggle"!==(e=t.GetArgument(a));)o.push(new i.default(e,t.stack.env,t.configuration).mml());t.Push(t.create("node","maction",o,{actiontype:"toggle"}))},a.ActionMethods.Mathtip=function(t,a){var e=t.ParseArg(a),o=t.ParseArg(a);t.Push(t.create("node","maction",[e,o],{actiontype:"tooltip"}))},new r.CommandMap("action-macros",{toggle:"Toggle",mathtip:"Mathtip",texttip:["Macro","\\mathtip{#1}{\\text{#2}}",2]},a.ActionMethods),a.ActionConfiguration=n.Configuration.create("action",{handler:{macro:["action-macros"]}})},955:function(t,a){MathJax._.components.global.isObject,MathJax._.components.global.combineConfig,MathJax._.components.global.combineDefaults,a.r8=MathJax._.components.global.combineWithMathJax,MathJax._.components.global.MathJax},251:function(t,a){Object.defineProperty(a,"__esModule",{value:!0}),a.Configuration=MathJax._.input.tex.Configuration.Configuration,a.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,a.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},871:function(t,a){Object.defineProperty(a,"__esModule",{value:!0}),a.parseResult=MathJax._.input.tex.SymbolMap.parseResult,a.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,a.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,a.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,a.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,a.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,a.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,a.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,a.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},193:function(t,a){Object.defineProperty(a,"__esModule",{value:!0}),a.default=MathJax._.input.tex.TexParser.default},360:function(t,a){Object.defineProperty(a,"__esModule",{value:!0}),a.default=MathJax._.input.tex.base.BaseMethods.default}},n={};function i(t){var a=n[t];if(void 0!==a)return a.exports;var e=n[t]={exports:{}};return o[t].call(e.exports,e,e.exports,i),e.exports}t=i(955),a=i(667),e=i(669),MathJax.loader&&MathJax.loader.checkVersion("[tex]/action",a.q,"tex-extension"),(0,t.r8)({_:{input:{tex:{action:{ActionConfiguration:e}}}}})}();
|
||||