diff --git a/docs/support_table.md b/docs/support_table.md index fabe3835..e03f5e23 100644 --- a/docs/support_table.md +++ b/docs/support_table.md @@ -183,6 +183,9 @@ table td { |\boxminus|$\boxminus$|| |\boxplus|$\boxplus$|| |\boxtimes|$\boxtimes$|| +|\Bra|$\left\langle\psi\right\|$|`\Bra{\psi}`| +|\bra|$\mathinner{\langle{\psi}\|}$|`\bra{\psi}`| +|\braket|$\mathinner{\langle{\phi\|\psi}\rangle}$|`\braket{\phi|\psi}`| |\brace|${n\brace k}$|`{n\brace k}`| |\bracevert|Not supported|| |\brack|${n\brack k}$|`{n\brack k}`| @@ -511,6 +514,8 @@ use `\ce` instead| |\KaTeX|$\KaTeX$|| |\ker|$\ker$|| |\kern|$I\kern-2.5pt R$|`I\kern-2.5pt R`| +|\Ket|$\left\|\psi\right\rangle$|`\Ket{\psi}`| +|\ket|$\mathinner{\|{\psi}\rangle}$|`\ket{\psi}`| |\Koppa|Not supported|| |\koppa|Not supported|| diff --git a/docs/supported.md b/docs/supported.md index b18686f7..9c8f1395 100644 --- a/docs/supported.md +++ b/docs/supported.md @@ -510,6 +510,15 @@ Direct Input: $← ↑ → ↓ ↔ ↕ ↖ ↗ ↘ ↙ ↚ ↛ ↞ ↠ ↢ ↣ Extensible arrows all can take an optional argument in the same manner
as `\xrightarrow[under]{over}`. +## Special Notation + +**Bra-ket Notation** + +|||| +|:----------|:----------|:----------| +|$\bra{\phi}$ `\bra{\phi}` |$\ket{\psi}$ `\ket{\psi}` |$\braket{\phi\vert\psi}$ `\braket{\phi\vert\psi}` | +|$\Bra{\phi}$ `\Bra{\phi}` |$\Ket{\psi}$ `\Ket{\psi}` || + ## Style, Color, Size, and Font **Class Assignment** diff --git a/src/macros.js b/src/macros.js index 7ad27a08..a59b8033 100644 --- a/src/macros.js +++ b/src/macros.js @@ -930,6 +930,16 @@ defineMacro("\\argmin", "\\DOTSB\\operatorname*{arg\\,min}"); defineMacro("\\argmax", "\\DOTSB\\operatorname*{arg\\,max}"); defineMacro("\\plim", "\\DOTSB\\mathop{\\operatorname{plim}}\\limits"); +////////////////////////////////////////////////////////////////////// +// braket.sty +// http://ctan.math.washington.edu/tex-archive/macros/latex/contrib/braket/braket.pdf + +defineMacro("\\bra", "\\mathinner{\\langle{#1}|}"); +defineMacro("\\ket", "\\mathinner{|{#1}\\rangle}"); +defineMacro("\\braket", "\\mathinner{\\langle{#1}\\rangle}"); +defineMacro("\\Bra", "\\left\\langle#1\\right|"); +defineMacro("\\Ket", "\\left|#1\\right\\rangle"); + // Custom Khan Academy colors, should be moved to an optional package defineMacro("\\blue", "\\textcolor{##6495ed}{#1}"); defineMacro("\\orange", "\\textcolor{##ffa500}{#1}"); diff --git a/test/katex-spec.js b/test/katex-spec.js index 8c89bab3..3db574f0 100644 --- a/test/katex-spec.js +++ b/test/katex-spec.js @@ -3312,6 +3312,26 @@ describe("A macro expander", function() { it("should expand \\argmax as expected", () => { expect`\argmax`.toParseLike`\operatorname*{arg\,max}`; }); + + it("should expand \\bra as expected", () => { + expect`\bra{\phi}`.toParseLike`\mathinner{\langle{\phi}|}`; + }); + + it("should expand \\ket as expected", () => { + expect`\ket{\psi}`.toParseLike`\mathinner{|{\psi}\rangle}`; + }); + + it("should expand \\braket as expected", () => { + expect`\braket{\phi|\psi}`.toParseLike`\mathinner{\langle{\phi|\psi}\rangle}`; + }); + + it("should expand \\Bra as expected", () => { + expect`\Bra{\phi}`.toParseLike`\left\langle\phi\right|`; + }); + + it("should expand \\Ket as expected", () => { + expect`\Ket{\psi}`.toParseLike`\left|\psi\right\rangle`; + }); }); describe("\\tag support", function() {