initial commit

This commit is contained in:
Daniel Kapla 2017-12-05 09:54:17 +01:00
commit d2d1b3a1db
26 changed files with 15060 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
out/
node_modules/

19
.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,19 @@
{
// Use IntelliSense to learn about possible Node.js debug attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Launch Extension",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": ["--extensionDevelopmentPath=${workspaceRoot}" ],
"stopOnEntry": false,
"sourceMaps": true,
"outFiles": [ "${workspaceRoot}/out/**/*" ],
"preLaunchTask": "compile"
}
]
}

25
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,25 @@
{
"cSpell.ignorePaths": [
"**/node_modules/**",
"**/vscode-extension/**",
"**/.git/**",
".vscode",
"typings",
"./dictionary/**",
"**/**"
],
"files.exclude": {
"**/.git": true,
"**/.svn": true,
"**/.hg": true,
"**/CVS": true,
"**/.DS_Store": true,
"**/bower_components": true,
"**/node_modules": true
},
"search.exclude": {
"**/node_modules": true,
"**/bower_components": true
}
}

22
.vscode/tasks.json vendored Normal file
View File

@ -0,0 +1,22 @@
// Available variables which can be used inside of strings.
// ${workspaceRoot}: the root folder of the team
// ${file}: the current opened file
// ${fileBasename}: the current opened file's basename
// ${fileDirname}: the current opened file's dirname
// ${fileExtname}: the current opened file's extension
// ${cwd}: the current working directory of the spawned process
{
"version": "0.1.0",
"tasks": [
{ // Task that calls a custom npm script that compiles the extension.
"taskName": "compile",
"command": "npm", // we want to run npm
"isShellCommand": true, // the command is a shell script
"isBuildCommand": true, // to execute with [ Strg+Shift+B ]
"showOutput": "silent", // show the output window only if unrecognized errors occur.
"args": ["run", "compile", "--loglevel", "silent"], // we run the custom script "compile" as defined in package.json
"isBackground": false // Whether the executed task is kept alive and is running in the background
}
]
}

0
CHANGELOG.md Normal file
View File

11
LICENSE.md Normal file
View File

@ -0,0 +1,11 @@
Copyright (c) Long Nhat Nguyen
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
This package was derived from a TextMate bundle located at https://github.com/textmate/latex.tmbundle and distributed under the following license, located in README.mdown:
Permission to copy, use, modify, sell and distribute this software is granted. This software is provided "as is" without express or implied warranty, and with no claim as to its suitability for any purpose.

14
README.md Normal file
View File

@ -0,0 +1,14 @@
# LaTeX language support for Visual Studio Code
[![VS Marketplace Version](https://vsmarketplacebadge.apphb.com/version/torn4dom4n.latex-support.svg)](https://marketplace.visualstudio.com/items?itemName=torn4dom4n.latex-support)
[![VS Code Installs](https://vsmarketplacebadge.apphb.com/installs/torn4dom4n.latex-support.svg)](https://marketplace.visualstudio.com/items?itemName=torn4dom4n.latex-support)
[![Dependencies Status](https://david-dm.org/ProAdd-ons/vscode-LaTeX-support/status.svg)](https://david-dm.org/ProAdd-ons/vscode-LaTeX-support)
Adds syntax highlighting and snippets for LaTeX.
![LaTeX Preview](https://github.com/ProAdd-ons/vscode-LaTeX-support/raw/master/./images/preview.png)
Originally converted from the [LaTeX TextMate bundle](https://github.com/textmate/latex.tmbundle).
Contributions are greatly appreciated. Please fork this repository and open a
pull request to add snippets, make grammar tweaks, etc.

View File

@ -0,0 +1,50 @@
import { latex_types } from "./symbol_types";
export default {
"displaymath": { insertText: "displaymath", details: "math environment", documentation: "displaymath", kind: latex_types.environment },
"align": { insertText: "align", details: "math environment", documentation: "align", kind: latex_types.environment },
"align*": { insertText: "align*", details: "math environment", documentation: "align*", kind: latex_types.environment },
"flalign": { insertText: "flalign", details: "math environment", documentation: "flalign", kind: latex_types.environment },
"flalign*": { insertText: "flalign*", details: "math environment", documentation: "flalign*", kind: latex_types.environment },
"gather": { insertText: "gather", details: "math environment", documentation: "gather", kind: latex_types.environment },
"gather*": { insertText: "gather*", details: "math environment", documentation: "gather*", kind: latex_types.environment },
"equation": { insertText: "equation", details: "math environment", documentation: "equation", kind: latex_types.environment },
"multline": { insertText: "multline", details: "math environment", documentation: "multline", kind: latex_types.environment },
"split": { insertText: "split", details: "math environment", documentation: "split", kind: latex_types.environment },
"itemize": { insertText: "itemize", detail: "Use \\item for list entrie", documentation: "Creates a simple List.", kind: latex_types.environment },
"enumerate": { insertText: "enumerate", detail: "Use \\item for list entrie", documentation: "Creates a numbered List.", kind: latex_types.environment },
"description": { insertText: "description", detail: "Use \\item[element] for a discription entrie", documentation: "Creates a List of \"element\" discriptions.", kind: latex_types.environment },
"flushleft": { insertText: "flushleft", documentation: "Alignes Text left.", kind: latex_types.environment },
"flusright": { insertText: "flusright", documentation: "Alignes Text right.", kind: latex_types.environment },
"center": { insertText: "center", documentation: "Alignes Text centered.", kind: latex_types.environment },
"quotation": { insertText: "quotation", documentation: "The quotation environment is useful for longer quotes going over several paragraphs, because it indents the first line of each paragraph.", kind: latex_types.environment },
"verse": { insertText: "verse", documentation: "The verse environment is useful for poems where the line breaks are important. The lines are separated by issuing a \\\\ at the end of a line and an empty line after each verse.", kind: latex_types.environment },
"abstract": { insertText: "abstract", documentation: "An environment for an abstract.", kind: latex_types.environment },
"tikzpicture": { insertText: "tikzpicture", documentation: "The \"TeX Ist Kein Zeichnprogram\" environment\nNeeds \\usepackage{tikz}", kind: latex_types.environment },
"verbatim": { insertText: "verbatim", detail: "Do not use verbatim environment and the \\verb command within parameters of other commands.", documentation: "Environment content will be directly printed, as if typed on a typewriter, with all line breaks and spaces, without any LaTeX command being executed.", kind: latex_types.environment },
"verbatim*": { insertText: "verbatim*", detail: "Do not use verbatim environment and the \\verb command within parameters of other commands.", documentation: "Environment content will be directly printed, as if typed on a typewriter, with all line breaks and spaces, without any LaTeX command being executed. The additional * lets spaces be printed visible.", kind: latex_types.environment },
"tabular": { insertText: "tabular", detail: "Use \"&\" for jump to the next column, \"\\\\\" for a line break and \"\\hline\" for inserts a horizontal line", documentation: "The table spec argument of the \\begin{tabular}[pos]{table spec} command defines the format of the table. Use an \"l\" for a column of left-aligned text, \"r\" for right-aligned text, and \"c\" for centred text; p{width} for a column containing justified text with line breaks, and \"|\" for a vertical line. The pos argument specifies the vertical position of the table relative to the baseline of the surrounding text. Use either of the letters \"t\", \"b\" or \"c\" to specify table alignment at the top, bottom or center. The column separator can be specified with the @{...} construct. This command kills the inter-column space and replaces it with whatever is between the curly braces.", kind: latex_types.environment },
"figure": { insertText: "figure", documentation: "Any material enclosed in a \"figure\" or \"table\" environment will be treated as floating matter. Both float environments support an optional parameter called the placement specifier. The placement specifier is a combination of \"h\" \(hier\), \"b\" \(bottom\), \"p\" \(page\), \"!\" \(without considering most of the internal parameters\)].", kind: latex_types.environment },
"cases": { insertText: "cases", documentation: "cases", kind: latex_types.environment },
"array": { insertText: "array", documentation: "The \\\\begin{array}{line-positioning} command with \"line-positioning\" is \"l\" \(left\), \"c\" \(richt\) or \"r\" \(right\) for each column. Use \"&\" to for next column and \"\\\\\" for linebreaks.", kind: latex_types.environment },
"matrix": { insertText: "matrix", detail: "max 10 column", documentation: "Matrix without delimiters.", kind: latex_types.environment },
"pmatrix": { insertText: "pmatrix", detail: "max 10 column", documentation: "Matrix with \( as delimiters.", kind: latex_types.environment },
"bmatrix": { insertText: "bmatrix", detail: "max 10 column", documentation: "Matrix with [ as delimiters.", kind: latex_types.environment },
"Bmatrix": { insertText: "Bmatrix", detail: "max 10 column", documentation: "Matrix with { as delimiters.", kind: latex_types.environment },
"vmatrix": { insertText: "vmatrix", detail: "max 10 column", documentation: "Matrix with | as delimiters.", kind: latex_types.environment },
"Vmatrix": { insertText: "Vmatrix", detail: "max 10 column", documentation: "Matrix with || as delimiters.", kind: latex_types.environment },
"tizkpicture": { insertText: "tizkpicture", detail: "Requires Package \"tikz\"", documentation: "", kind: latex_types.environment },
"lstlisting": { insertText: "lstlisting", detail: "Requires Package \"listings\"", documentation: "", kind: latex_types.environment },
};

572
dictionary/math_symbols.ts Normal file
View File

@ -0,0 +1,572 @@
import { latex_types } from "./symbol_types";
var required_latexsym = "Required package \"latexsym\"";
var required_amsmath = "Required package \"amsmath\"";
export default {
"operatorname": { insertText: "operatorname{$1}$0", documentation: "displays content as operator", kind: latex_types.function },
"label": { insertText: "label{$1}$0", documentation: "Creates a reference with a number to refere it by the \"ref\" command.", kind: latex_types.keyword },
"tag": { insertText: "tag{$1}$0", documentation: "Creates a reference with name to refere it by the \"ref\" command by the taged name.", kind: latex_types.keyword },
"ref": { insertText: "ref{$1}$0", documentation: "Reference", kind: latex_types.keyword },
"eqref": { insertText: "eqref{$1}$0", documentation: "Equation reference", kind: latex_types.keyword },
"pageref": { insertText: "pageref{$1}$0", documentation: "Page reference", kind: latex_types.keyword },
"nonumber": { insertText: "nonumber", documentation: "Removes line number in numberd math environments like \"align\".", kind: latex_types.keyword },
"left(": { insertText: "left( $1 \\right)$0", documentation: "Left - Right Braces", kind: latex_types.snippet },
"left[": { insertText: "left[ $1 \\right]$0", documentation: "Left - Right [ Braces", kind: latex_types.snippet },
"left\\{": { insertText: "left\\{ $1 \\right\\{$0", documentation: "Left - Right \\{ Braces", kind: latex_types.snippet },
"left|": { insertText: "left| $1 \\right|$0", documentation: "Left - Right Absolutes", kind: latex_types.snippet },
"bmod": { insertText: "bmod{$1}$0", documentation: "\(binary\) modulo", kind: latex_types.symbol },
"pmod": { insertText: "pmod{$1}$0", documentation: "modulo", kind: latex_types.symbol },
"binom": { insertText: "binom{$1}{$2}$0", documentation: "Binomial Coefficient", kind: latex_types.function },
"frac": { insertText: "frac{$1}{$2}$0", documentation: "Fraction", kind: latex_types.function },
"cfrac": { insertText: "cfrac{$1}{$2}$0", documentation: "Continued Fraction", kind: latex_types.function },
"tfrac": { insertText: "tfrac{$1}{$2}$0", documentation: "Text style Fraction", kind: latex_types.function },
"dfrac": { insertText: "dfrac{$1}{$2}$0", documentation: "Display style Fraction", kind: latex_types.function },
"sqrt": { insertText: "sqrt[]{$1}$0", documentation: "Root (Square Root)", kind: latex_types.function },
"lim": { insertText: "lim_{$1}$0", documentation: "Limes", kind: latex_types.function },
"sup": { insertText: "sup_{$1}$0", documentation: "sup", kind: latex_types.function },
"inf": { insertText: "inf_{$1}$0", documentation: "infimum", kind: latex_types.function },
"liminf": { insertText: "liminf_{$1}$0", documentation: "liminf", kind: latex_types.function },
"limsup": { insertText: "limsup_{$1}$0", documentation: "limsup", kind: latex_types.function },
"max": { insertText: "max_{$1}$0", documentation: "max", kind: latex_types.function },
"min": { insertText: "min_{$1}$0", documentation: "min", kind: latex_types.function },
"arg": { insertText: "arg", documentation: "argument", kind: latex_types.symbol },
"deg": { insertText: "deg", documentation: "degrie", kind: latex_types.symbol },
"det": { insertText: "det", documentation: "determinant", kind: latex_types.symbol },
"dim": { insertText: "dim", documentation: "dimention", kind: latex_types.symbol },
"exp": { insertText: "exp", documentation: "exponential", kind: latex_types.symbol },
"gcd": { insertText: "gcd", documentation: "Gradest Comon Devider", kind: latex_types.symbol },
"hom": { insertText: "hom", documentation: "hom", kind: latex_types.symbol },
"ker": { insertText: "ker", documentation: "kern", kind: latex_types.symbol },
"lg": { insertText: "lg", documentation: "lg", kind: latex_types.symbol },
"Pr": { insertText: "Pr", documentation: "Pr", kind: latex_types.symbol },
"text": { insertText: "text{$1}$0", documentation: "Text Mode in math environment", kind: latex_types.function },
"intertext": { insertText: "intertext{$1}$0", documentation: "Inserts text lines inside math environments", kind: latex_types.function },
"phantom": { insertText: "phantom{$1}$0", documentation: "Occupies space used by expression without displaying the expression.", kind: latex_types.function },
"mathrm": { insertText: "mathrm{$1}$0", documentation: "Roman Font", kind: latex_types.function },
"mathbf": { insertText: "mathbf{$1}$0", documentation: "Boldface Font", kind: latex_types.function, detail: "Required package \"amsbsy\" or \"amsmath\". Use \\boldsymbol{} instead." },
"mathsf": { insertText: "mathsf{$1}$0", documentation: "Sans Serif Font", kind: latex_types.function },
"mathtt": { insertText: "mathtt{$1}$0", documentation: "Typewriter Font", kind: latex_types.function },
"mathit": { insertText: "mathit{$1}$0", documentation: "Italic Font", kind: latex_types.function },
"mathbb": { insertText: "mathbb{$1}$0", documentation: "Blackbord Font", kind: latex_types.function, detail: "Required package \"amsfonts\" or \"amssymb\"" },
"mathnormal": { insertText: "mathnormal{$1}$0", documentation: "Normal Font", kind: latex_types.function },
"boldsymbol": { insertText: "boldsymbol{$1}$0", detail: "Required package \"amsbsy\" or \"amsmath\".", documentation: "Bold Symbols in math mode", kind: latex_types.function },
"mathcal": { insertText: "mathcal{$1}$0", documentation: "Calligraphic Font", kind: latex_types.function },
"mathscr": { insertText: "mathscr{$1}$0", detail: "Required package \"mathrsfs\"", documentation: "Calegraphic math font", kind: latex_types.function },
"mathfrac": { insertText: "mathfrac{$1}$0", detail: "Required package \"amsfonts\" or \"amssymb\"", documentation: "Fractal Math Symbols", kind: latex_types.function },
"displaystyle": { insertText: "displaystyle{$1}$0", documentation: "Sets style to display mode", kind: latex_types.function },
"textstyle": { insertText: "textstyle{$1}$0", documentation: "Sets style to text mode", kind: latex_types.function },
"scriptstyle": { insertText: "scriptstyle{$1}$0", documentation: "Sets style to script mode", kind: latex_types.function },
"scriptscriptstyle": { insertText: "scriptscriptstyle{$1}$0", documentation: "Sets style to 'double' script mode", kind: latex_types.function },
"overline": { insertText: "overline{$1}$0", documentation: "horizontal line over the expression.", kind: latex_types.function },
"underline": { insertText: "underline{$1}$0", documentation: "horizontal line under the expression.", kind: latex_types.function },
"underbrace": { insertText: "underbrace{$1}_{$2}$0", documentation: "long horizontal braces under an expression", kind: latex_types.snippet },
"overbrace": { insertText: "overbrace{$1}^{$2}$0", documentation: "long horizontal braces over an expression", kind: latex_types.snippet },
"bar": { insertText: "bar{$1}$0", documentation: "Math Mode Accent: bar", kind: latex_types.function },
"hat": { insertText: "hat{$1}$0", documentation: "Math Mode Accent: hat", kind: latex_types.function },
"widehat": { insertText: "widehat{$1}$0", documentation: "Math Mode Accent: widehat", kind: latex_types.function },
"tilde": { insertText: "tilde{$1}$0", documentation: "Math Mode Accent: tilde", kind: latex_types.function },
"widetilde": { insertText: "widetilde{$1}$0", documentation: "Math Mode Accent: widetilde", kind: latex_types.function },
"vec": { insertText: "vec{$1}$0", documentation: "Math Mode Accent: Vector", kind: latex_types.function },
"grave": { insertText: "grave{$1}$0", documentation: "Math Mode Accent: grave", kind: latex_types.function },
"acute": { insertText: "acute{$1}$0", documentation: "Math Mode Accent: acute", kind: latex_types.function },
"mathring": { insertText: "mathring{$1}$0", documentation: "Math Mode Accent: mathring", kind: latex_types.function },
"check": { insertText: "check{$1}$0", documentation: "Math Mode Accent: check", kind: latex_types.function },
"dot": { insertText: "dot{$1}$0", documentation: "Math Mode Accent: dot", kind: latex_types.function },
"breve": { insertText: "breve{$1}$0", documentation: "Math Mode Accent: breve", kind: latex_types.function },
"ddot": { insertText: "ddot{$1}$0", documentation: "Math Mode Accent: double dot", kind: latex_types.function },
"overrightarrow": { insertText: "overrightarrow{$1}$0", documentation: "Math Mode Accent: overrightarrow", kind: latex_types.function },
"overleftarrow": { insertText: "overleftarrow{$1}$0", documentation: "Math Mode Accent: overleftarrow", kind: latex_types.function },
"overleftrightarrow": { insertText: "overleftrightarrow{$1}$0", documentation: "Math Mode Accent: overleftrightarrow", kind: latex_types.function },
"underrightarrow": { insertText: "underrightarrow{$1}$0", documentation: "Math Mode Accent: underrightarrow", kind: latex_types.function },
"underleftarrow": { insertText: "underleftarrow{$1}$0", documentation: "Math Mode Accent: underleftarrow", kind: latex_types.function },
"underleftrightarrow": { insertText: "underleftrightarrow{$1}$0", documentation: "Math Mode Accent: underleftrightarrow", kind: latex_types.function },
"alpha": { insertText: "alpha", documentation: "alpha", kind: latex_types.symbol },
"beta": { insertText: "beta", documentation: "beta", kind: latex_types.symbol },
"gamma": { insertText: "gamma", documentation: "gamma", kind: latex_types.symbol },
"Gamma": { insertText: "Gamma", documentation: "Gamma", kind: latex_types.symbol },
"delta": { insertText: "delta", documentation: "delta", kind: latex_types.symbol },
"Delta": { insertText: "Delta", documentation: "Delta", kind: latex_types.symbol },
"epsilon": { insertText: "epsilon", documentation: "epsilon", kind: latex_types.symbol },
"varepsilon": { insertText: "varepsilon", documentation: "varepsilon", kind: latex_types.symbol },
"zeta": { insertText: "zeta", documentation: "zeta", kind: latex_types.symbol },
"eta": { insertText: "eta", documentation: "eta", kind: latex_types.symbol },
"theta": { insertText: "theta", documentation: "theta", kind: latex_types.symbol },
"Theta": { insertText: "Theta", documentation: "Theta", kind: latex_types.symbol },
"vartheta": { insertText: "vartheta", documentation: "vartheta", kind: latex_types.symbol },
"iota": { insertText: "iota", documentation: "iota", kind: latex_types.symbol },
"kappa": { insertText: "kappa", documentation: "kappa", kind: latex_types.symbol },
"varkappa": { insertText: "varkappa", documentation: "varkappa", kind: latex_types.symbol },
"lambda": { insertText: "lambda", documentation: "lambda", kind: latex_types.symbol },
"Lambda": { insertText: "Lambda", documentation: "Lambda", kind: latex_types.symbol },
"mu": { insertText: "mu", documentation: "mu", kind: latex_types.symbol },
"nu": { insertText: "nu", documentation: "nu", kind: latex_types.symbol },
"xi": { insertText: "xi", documentation: "xi", kind: latex_types.symbol },
"Xi": { insertText: "Xi", documentation: "Xi", kind: latex_types.symbol },
"pi": { insertText: "pi", documentation: "pi", kind: latex_types.symbol },
"Pi": { insertText: "Pi", documentation: "Pi", kind: latex_types.symbol },
"varpi": { insertText: "varpi", documentation: "varpi", kind: latex_types.symbol },
"rho": { insertText: "rho", documentation: "rho", kind: latex_types.symbol },
"varrho": { insertText: "varrho", documentation: "varrho", kind: latex_types.symbol },
"sigma": { insertText: "sigma", documentation: "sigma", kind: latex_types.symbol },
"Sigma": { insertText: "Sigma", documentation: "Sigma", kind: latex_types.symbol },
"varsigma": { insertText: "varsigma", documentation: "varsigma", kind: latex_types.symbol },
"tau": { insertText: "tau", documentation: "tau", kind: latex_types.symbol },
"upsilon": { insertText: "upsilon", documentation: "upsilon", kind: latex_types.symbol },
"Upsilon": { insertText: "Upsilon", documentation: "Upsilon", kind: latex_types.symbol },
"phi": { insertText: "phi", documentation: "phi", kind: latex_types.symbol },
"Phi": { insertText: "Phi", documentation: "Phi", kind: latex_types.symbol },
"varphi": { insertText: "varphi", documentation: "varphi", kind: latex_types.symbol },
"chi": { insertText: "chi", documentation: "chi", kind: latex_types.symbol },
"psi": { insertText: "psi", documentation: "psi", kind: latex_types.symbol },
"Psi": { insertText: "Psi", documentation: "Psi", kind: latex_types.symbol },
"omega": { insertText: "omega", documentation: "omega", kind: latex_types.symbol },
"Omega": { insertText: "Omega", documentation: "Omega", kind: latex_types.symbol },
"sin": { insertText: "sin{$1}", documentation: "Sinus", kind: latex_types.function },
"cos": { insertText: "cos{$1}", documentation: "Cosinus", kind: latex_types.function },
"tan": { insertText: "tan{$1}", documentation: "Tangens", kind: latex_types.function },
"arcsin": { insertText: "arcsin{$1}", documentation: "Arcus Sinus", kind: latex_types.function },
"arccos": { insertText: "arccos{$1}", documentation: "Arcus Cosinus", kind: latex_types.function },
"sinh": { insertText: "sinh{$1}", documentation: "Sinus Hyperbolicus", kind: latex_types.function },
"cosh": { insertText: "cosh{$1}", documentation: "Cosinus Hyperbolicus", kind: latex_types.function },
"tanh": { insertText: "tanh{$1}", documentation: "Tangens Hyperbolicus", kind: latex_types.function },
"sec": { insertText: "sec{$1}", documentation: "sec", kind: latex_types.function },
"csc": { insertText: "csc{$1}", documentation: "csc", kind: latex_types.function },
"arctan": { insertText: "arctan{$1}", documentation: "arctan", kind: latex_types.function },
"cot": { insertText: "cot{$1}", documentation: "cot", kind: latex_types.function },
"arccot": { insertText: "arccot{$1}", documentation: "arccot", kind: latex_types.function },
"coth": { insertText: "coth{$1}", documentation: "coth", kind: latex_types.function },
"xrightarrow": { insertText: "xrightarrow[]{$1}$0", documentation: "right arrow with documentation", kind: latex_types.function },
"xRightarrow": { insertText: "xRightarrow[]{$1}$0", documentation: "right double arrow with documentation", kind: latex_types.function },
"xleftarrow": { insertText: "xleftarrow[]{$1}$0", documentation: "left arrow with documentation", kind: latex_types.function },
"xLeftarrow": { insertText: "xReftarrow[]{$1}$0", documentation: "left double arrow with documentation", kind: latex_types.function },
"stackrel": { insertText: "stackrel{$1}{$2}$0", documentation: "\\stackrel{#1}{#2} puts the symbol given in #1 in superscript-like size over #2 which is set in its usual position.", kind: latex_types.function },
"substack": { insertText: "substack{$1\\\\$2}$0", documentation: "\\substack{#1}{#2} stacks #1 over #2 in superscript's. For more lines add \"\\\\\".", kind: latex_types.function },
// "cdot": { insertText: "cdot", documentation: "A centered dot. For example used for a * b.", kind: latex_types.symbol },
"vdots": { insertText: "vdots", documentation: "3 vertical Dots", kind: latex_types.symbol },
"ldots": { insertText: "ldots", documentation: "3 lower dots", kind: latex_types.symbol },
"dots": { insertText: "dots", documentation: "3 Dots", kind: latex_types.symbol },
"ddots": { insertText: "ddots", documentation: "Diagonal Dots", kind: latex_types.symbol },
"cdots": { insertText: "cdots", documentation: "3 Centered Dots", kind: latex_types.symbol },
"iddot": { insertText: "iddot", documentation: "iddot", kind: latex_types.symbol },
"infty": { insertText: "infty", documentation: "Infinity", kind: latex_types.symbol },
"triangl": { insertText: "triangl", documentation: "Triangl", kind: latex_types.symbol },
"aleph": { insertText: "aleph", documentation: "aleph", kind: latex_types.symbol },
"imath": { insertText: "imath", documentation: "imath", kind: latex_types.symbol },
"jmath": { insertText: "jmath", documentation: "jmath", kind: latex_types.symbol },
"ell": { insertText: "ell", documentation: "ell", kind: latex_types.symbol },
"w": { insertText: "w", documentation: "w", kind: latex_types.symbol },
"Re": { insertText: "Re", documentation: "Re", kind: latex_types.symbol },
"Im": { insertText: "Im", documentation: "Im", kind: latex_types.symbol },
"mh": { insertText: "mh", documentation: "mh", kind: latex_types.symbol },
"prime": { insertText: "prime", documentation: "prime", kind: latex_types.symbol },
"emptyset": { insertText: "emptyset", documentation: "emptyset", kind: latex_types.symbol },
"nabla": { insertText: "nabla", documentation: "nabla", kind: latex_types.symbol },
"surd": { insertText: "surd", documentation: "surd", kind: latex_types.symbol },
"partial": { insertText: "partial", documentation: "partial", kind: latex_types.symbol },
"bot": { insertText: "bot", documentation: "bot", kind: latex_types.symbol },
"dash": { insertText: "dash", documentation: "dash", kind: latex_types.symbol },
"forall": { insertText: "forall", documentation: "forall", kind: latex_types.symbol },
"exists": { insertText: "exists", documentation: "exists", kind: latex_types.symbol },
"flat": { insertText: "flat", documentation: "flat", kind: latex_types.symbol },
"natural": { insertText: "natural", documentation: "natural", kind: latex_types.symbol },
"shar": { insertText: "shar", documentation: "shar", kind: latex_types.symbol },
"backslash": { insertText: "backslash", documentation: "backslash", kind: latex_types.symbol },
"Box": { insertText: "Box", documentation: "Box", kind: latex_types.symbol },
"Diamon": { insertText: "Diamon", documentation: "Diamon", kind: latex_types.symbol },
"clubsuit": { insertText: "clubsuit", documentation: "clubsuit", kind: latex_types.symbol },
"diamondsuit": { insertText: "diamondsuit", documentation: "diamondsuit", kind: latex_types.symbol },
"heartsuit": { insertText: "heartsuit", documentation: "heartsuit", kind: latex_types.symbol },
"spadesuit": { insertText: "spadesuit", documentation: "spadesuit", kind: latex_types.symbol },
"blacksquar": { insertText: "blacksquar", documentation: "blacksquar", kind: latex_types.symbol },
"S": { insertText: "S", documentation: "S", kind: latex_types.symbol },
"P": { insertText: "P", documentation: "P", kind: latex_types.symbol },
"copyright": { insertText: "copyright", documentation: "copyright", kind: latex_types.symbol },
"pounds": { insertText: "pounds", documentation: "pounds", kind: latex_types.symbol },
"smiley": { insertText: "smiley", documentation: "smiley", kind: latex_types.symbol },
"checkmark": { insertText: "checkmark", documentation: "checkmark", kind: latex_types.symbol },
"quad": { insertText: "quad", documentation: "A big Space", kind: latex_types.symbol },
"qquad": { insertText: "qquad", documentation: "A bigger Space", kind: latex_types.symbol },
"not": { insertText: "not", documentation: "Use \"\\not\" as prefix of some Binary Relation's to negate them.", kind: latex_types.symbol },
"leq": { insertText: "leq", documentation: "Binary Relation: leq", kind: latex_types.symbol },
"ll": { insertText: "ll", documentation: "Binary Relation: ll", kind: latex_types.symbol },
"prec": { insertText: "prec", documentation: "Binary Relation: prec", kind: latex_types.symbol },
"preceq": { insertText: "preceq", documentation: "Binary Relation: preceq", kind: latex_types.symbol },
"subset": { insertText: "subset", documentation: "Binary Relation: subset", kind: latex_types.symbol },
"subseteq": { insertText: "subseteq", documentation: "Binary Relation: subseteq", kind: latex_types.symbol },
"sqsubseteq": { insertText: "sqsubseteq", documentation: "Binary Relation: sqsubseteq", kind: latex_types.symbol },
"in": { insertText: "in", documentation: "Binary Relation: in", kind: latex_types.symbol },
"vdash": { insertText: "vdash", documentation: "Binary Relation: vdash", kind: latex_types.symbol },
"mid": { insertText: "mid", documentation: "Binary Relation: mid", kind: latex_types.symbol },
"smile": { insertText: "smile", documentation: "Binary Relation: smile", kind: latex_types.symbol },
"geq": { insertText: "geq", detail: "Synonym for \"\\ge\"", documentation: "Binary Relation: geq", kind: latex_types.symbol },
"gg": { insertText: "gg", documentation: "Binary Relation: gg", kind: latex_types.symbol },
"succ": { insertText: "succ", documentation: "Binary Relation: succ", kind: latex_types.symbol },
"succeq": { insertText: "succeq", documentation: "Binary Relation: succeq", kind: latex_types.symbol },
"supset": { insertText: "supset", documentation: "Binary Relation: supset", kind: latex_types.symbol },
"supseteq": { insertText: "supseteq", documentation: "Binary Relation: supseteq", kind: latex_types.symbol },
"sqsupseteq": { insertText: "sqsupseteq", documentation: "Binary Relation: sqsupseteq", kind: latex_types.symbol },
"ni": { insertText: "ni", detail: "Synonym for \"\\owns\"", documentation: "Binary Relation: ni", kind: latex_types.symbol },
"dashv": { insertText: "dashv", documentation: "Binary Relation: dashv", kind: latex_types.symbol },
"parallel": { insertText: "parallel", documentation: "Binary Relation: parallel", kind: latex_types.symbol },
"frown": { insertText: "frown", documentation: "Binary Relation: frown", kind: latex_types.symbol },
"notin": { insertText: "notin", documentation: "Binary Relation: notin", kind: latex_types.symbol },
"equiv": { insertText: "equiv", documentation: "Binary Relation: equiv", kind: latex_types.symbol },
"doteq": { insertText: "doteq", documentation: "Binary Relation: doteq", kind: latex_types.symbol },
"sim": { insertText: "sim", documentation: "Binary Relation: sim", kind: latex_types.symbol },
"simeq": { insertText: "simeq", documentation: "Binary Relation: simeq", kind: latex_types.symbol },
"approx": { insertText: "approx", documentation: "Binary Relation: approx", kind: latex_types.symbol },
"cong": { insertText: "cong", documentation: "Binary Relation: cong", kind: latex_types.symbol },
"Join": { insertText: "Join", documentation: "Binary Relation: Join", kind: latex_types.symbol, detail: required_latexsym },
"bowtie": { insertText: "bowtie", documentation: "Binary Relation: bowtie", kind: latex_types.symbol },
"propto": { insertText: "propto", documentation: "Binary Relation: propto", kind: latex_types.symbol },
"models": { insertText: "models", documentation: "Binary Relation: models", kind: latex_types.symbol },
"perp": { insertText: "perp", documentation: "Binary Relation: perp", kind: latex_types.symbol },
"asymp": { insertText: "asymp", documentation: "Binary Relation: asymp", kind: latex_types.symbol },
"neq": { insertText: "neq", documentation: "Binary Relation: not equal", kind: latex_types.symbol },
"pm": { insertText: "pm", documentation: "Binary Relation: pm", kind: latex_types.symbol },
"cdot": { insertText: "cdot", documentation: "Binary Relation: cdot", kind: latex_types.symbol },
"times": { insertText: "times", documentation: "Binary Relation: times", kind: latex_types.symbol },
"cup": { insertText: "cup", documentation: "Binary Relation: cup", kind: latex_types.symbol },
"sqcup": { insertText: "sqcup", documentation: "Binary Relation: sqcup", kind: latex_types.symbol },
"vee": { insertText: "vee", documentation: "Binary Relation: vee", kind: latex_types.symbol, detail: "Synonym for \"\\lor\"" },
"lor": { insertText: "lor", documentation: "Binary Relation: lor", kind: latex_types.symbol, detail: "Synonym for \"\\vee\"" },
"oplus": { insertText: "oplus", documentation: "Binary Relation: oplus", kind: latex_types.symbol },
"odot": { insertText: "odot", documentation: "Binary Relation: odot", kind: latex_types.symbol },
"otimes": { insertText: "otimes", documentation: "Binary Relation: otimes", kind: latex_types.symbol },
"bigtriangleup": { insertText: "bigtriangleup", documentation: "Binary Relation: bigtriangleup", kind: latex_types.symbol },
"lhd": { insertText: "lhd", documentation: "Binary Relation: lhd", kind: latex_types.symbol, detail: required_latexsym },
"unlhd": { insertText: "unlhd", documentation: "Binary Relation: unlhd", kind: latex_types.symbol, detail: required_latexsym },
"mp": { insertText: "mp", documentation: "Binary Relation: mp", kind: latex_types.symbol },
"div": { insertText: "div", documentation: "Binary Relation: div", kind: latex_types.symbol },
"setminus": { insertText: "setminus", documentation: "Binary Relation: setminus", kind: latex_types.symbol },
"cap": { insertText: "cap", documentation: "Binary Relation: cap", kind: latex_types.symbol },
"sqcap": { insertText: "sqcap", documentation: "Binary Relation: sqcap", kind: latex_types.symbol },
"wedge": { insertText: "wedge", documentation: "Binary Relation: wedge", kind: latex_types.symbol, detail: "Synonym for \"\\land\"" },
"land": { insertText: "land", documentation: "Binary Relation: land", kind: latex_types.symbol, detail: "Synonym for \"\\wedge\"" },
"ominus": { insertText: "ominus", documentation: "Binary Relation: ominus", kind: latex_types.symbol },
"oslash": { insertText: "oslash", documentation: "Binary Relation: oslash", kind: latex_types.symbol },
"bigcirc": { insertText: "bigcirc", documentation: "Binary Relation: bigcirc", kind: latex_types.symbol },
"bigtriangledown": { insertText: "bigtriangledown", documentation: "Binary Relation: bigtriangledown", kind: latex_types.symbol },
"rhd": { insertText: "rhd", documentation: "Binary Relation: rhd", kind: latex_types.symbol, detail: required_latexsym },
"unrhd": { insertText: "unrhd", documentation: "Binary Relation: unrhd", kind: latex_types.symbol, detail: required_latexsym },
"triangleleft": { insertText: "triangleleft", documentation: "Binary Relation: triangleleft", kind: latex_types.symbol },
"triangleright": { insertText: "triangleright", documentation: "Binary Relation: triangleright", kind: latex_types.symbol },
"star": { insertText: "star", documentation: "Binary Relation: star", kind: latex_types.symbol },
"ast": { insertText: "ast", documentation: "Binary Relation: ast", kind: latex_types.symbol },
"circ": { insertText: "circ", documentation: "Binary Relation: circ", kind: latex_types.symbol },
"bullet": { insertText: "bullet", documentation: "Binary Relation: bullet", kind: latex_types.symbol },
"diamond": { insertText: "diamond", documentation: "Binary Relation: diamond", kind: latex_types.symbol },
"uplus": { insertText: "uplus", documentation: "Binary Relation: uplus", kind: latex_types.symbol },
"amalg": { insertText: "amalg", documentation: "Binary Relation: amalg", kind: latex_types.symbol },
"dagger": { insertText: "dagger", documentation: "Binary Relation: dagger", kind: latex_types.symbol },
"ddagger": { insertText: "ddagger", documentation: "Binary Relation: ddagger", kind: latex_types.symbol },
"wr": { insertText: "wr", documentation: "Binary Relation: wr", kind: latex_types.symbol },
"sum": { insertText: "sum_{$1}^{$2} $0", documentation: "Operator: Sum", kind: latex_types.snippet },
"prod": { insertText: "prod_{$1}^{$2} $0", documentation: "Operator: Product", kind: latex_types.snippet },
"coprod": { insertText: "coprod_{$1}^{$2} $0", documentation: "Operator: Coproduct", kind: latex_types.snippet },
"int": { insertText: "int_{$1}^{$2} $0", documentation: "Operator: Integral", kind: latex_types.snippet },
"iint": { insertText: "iint_{$1}^{$2} $0", documentation: "Operator: double Integral", kind: latex_types.snippet },
"iiint": { insertText: "iiint_{$1}^{$2} $0", documentation: "Operator: trible Integral", kind: latex_types.snippet },
"bigoplus": { insertText: "bigoplus_{$1}^{$2} $0", documentation: "Operator: bigoplus", kind: latex_types.snippet },
"bigcup": { insertText: "bigcup_{$1}^{$2} $0", documentation: "Operator: bigcup", kind: latex_types.snippet },
"bigcap": { insertText: "bigcap_{$1}^{$2} $0", documentation: "Operator: bigcap", kind: latex_types.snippet },
"bigsqcup": { insertText: "bigsqcup_{$1}^{$2} $0", documentation: "Operator: bigsqcup", kind: latex_types.snippet },
"oint": { insertText: "oint_{$1}^{$2} $0", documentation: "Operator: cloused courve Integral", kind: latex_types.snippet },
"bigotimes": { insertText: "bigotimes_{$1}^{$2} $0", documentation: "Operator: bigotimes", kind: latex_types.snippet },
"bigvee": { insertText: "bigvee_{$1}^{$2} $0", documentation: "Operator: bigvee", kind: latex_types.snippet },
"bigwedge": { insertText: "bigwedge_{$1}^{$2} $0", documentation: "Operator: bigwedge", kind: latex_types.snippet },
"biguplus": { insertText: "biguplus_{$1}^{$2} $0", documentation: "Operator: biguplus", kind: latex_types.snippet },
"bigodot": { insertText: "bigodot_{$1}^{$2} $0", documentation: "Operator: bigodot", kind: latex_types.snippet },
"leftarrow": { insertText: "leftarrow", documentation: "Arrow: leftarrow", kind: latex_types.symbol, detail: "Synonym for \"\\gets\"" },
"gets": { insertText: "gets", documentation: "Arrow: leftarrow", kind: latex_types.symbol, detail: "Synonym for \"\\leftarrow\"" },
"rightarrow": { insertText: "rightarrow", documentation: "Arrow: rightarrow", kind: latex_types.symbol, detail: "Synonym for \"\\to\"" },
"to": { insertText: "to", documentation: "Arrow: to", kind: latex_types.symbol, detail: "Synonym for \"\\rightarrow\"" },
"leftrightarrow": { insertText: "leftrightarrow", documentation: "Arrow: leftrightarrow", kind: latex_types.symbol },
"Leftarrow": { insertText: "Leftarrow", documentation: "Arrow: Leftarrow", kind: latex_types.symbol },
"Rightarrow": { insertText: "Rightarrow", documentation: "Arrow: Rightarrow", kind: latex_types.symbol },
"Leftrightarrow": { insertText: "Leftrightarrow", documentation: "Arrow: Leftrightarrow", kind: latex_types.symbol },
"mapsto": { insertText: "mapsto", documentation: "Arrow: mapsto", kind: latex_types.symbol },
"hookleftarrow": { insertText: "hookleftarrow", documentation: "Arrow: hookleftarrow", kind: latex_types.symbol },
"leftharpoonup": { insertText: "leftharpoonup", documentation: "Arrow: leftharpoonup", kind: latex_types.symbol },
"leftharpoondown": { insertText: "leftharpoondown", documentation: "Arrow: leftharpoondown", kind: latex_types.symbol },
"rightleftharpoons": { insertText: "rightleftharpoons", documentation: "Arrow: rightleftharpoons", kind: latex_types.symbol },
"uparrow": { insertText: "uparrow", documentation: "Arrow: uparrow", kind: latex_types.symbol },
"updownarrow": { insertText: "updownarrow", documentation: "Arrow: updownarrow", kind: latex_types.symbol },
"Downarrow": { insertText: "Downarrow", documentation: "Arrow: Downarrow", kind: latex_types.symbol },
"nearrow": { insertText: "nearrow", documentation: "Arrow: nearrow", kind: latex_types.symbol },
"swarrow": { insertText: "swarrow", documentation: "Arrow: swarrow", kind: latex_types.symbol },
"leadsto": { insertText: "leadsto", documentation: "Arrow: leadsto", kind: latex_types.symbol, detail: required_latexsym },
"longleftarrow": { insertText: "longleftarrow", documentation: "Arrow: longleftarrow", kind: latex_types.symbol },
"longrightarrow": { insertText: "longrightarrow", documentation: "Arrow: longrightarrow", kind: latex_types.symbol },
"longleftrightarrow": { insertText: "longleftrightarrow", documentation: "Arrow: longleftrightarrow", kind: latex_types.symbol },
"Longleftarrow": { insertText: "Longleftarrow", documentation: "Arrow: Longleftarrow", kind: latex_types.symbol },
"Longrightarrow": { insertText: "Longrightarrow", documentation: "Arrow: Longrightarrow", kind: latex_types.symbol },
"Longleftrightarrow": { insertText: "Longleftrightarrow", documentation: "Arrow: Longleftrightarrow", kind: latex_types.symbol },
"longmapsto": { insertText: "longmapsto", documentation: "Arrow: longmapsto", kind: latex_types.symbol },
"hookrightarrow": { insertText: "hookrightarrow", documentation: "Arrow: hookrightarrow", kind: latex_types.symbol },
"rightharpoonup": { insertText: "rightharpoonup", documentation: "Arrow: rightharpoonup", kind: latex_types.symbol },
"rightharpoondown": { insertText: "rightharpoondown", documentation: "Arrow: rightharpoondown", kind: latex_types.symbol },
"iff": { insertText: "iff", documentation: "Arrow: if", kind: latex_types.symbol, detail: "bigger spaces" },
"downarrow": { insertText: "downarrow", documentation: "Arrow: downarrow", kind: latex_types.symbol },
"Uparrow": { insertText: "Uparrow", documentation: "Arrow: Uparrow", kind: latex_types.symbol },
"Updownarrow": { insertText: "Updownarrow", documentation: "Arrow: Updownarrow", kind: latex_types.symbol },
"searrow": { insertText: "searrow", documentation: "Arrow: searrow", kind: latex_types.symbol },
"nwarrow": { insertText: "nwarrow", documentation: "Arrow: nwarrow", kind: latex_types.symbol },
"lfloor": { insertText: "lfloor", documentation: "Delimiter: lfloor", kind: latex_types.symbol },
"rceil": { insertText: "rceil", documentation: "Delimiter: rceil", kind: latex_types.symbol },
"rangle": { insertText: "rangle", documentation: "Delimiter: rangle", kind: latex_types.symbol },
"Vert": { insertText: "Vert", documentation: "Delimiter: Vert", kind: latex_types.symbol },
"rfloor": { insertText: "rfloor", documentation: "Delimiter: rfloor", kind: latex_types.symbol },
"lceil": { insertText: "lceil", documentation: "Delimiter: lceil", kind: latex_types.symbol },
"neg": { insertText: "neg", documentation: "Symbol: neg", kind: latex_types.symbol, detail: "Synonym for \"\\\\lnot\"" },
"lnot": { insertText: "lnot", documentation: "Symbol: lnot", kind: latex_types.symbol, detail: "Synonym for \"\\\\neg\"" },
"top": { insertText: "top", documentation: "Symbol: top", kind: latex_types.symbol },
"wp": { insertText: "wp", documentation: "Symbol: wp", kind: latex_types.symbol },
"Diamond": { insertText: "Diamond", documentation: "Symbol: Diamond", kind: latex_types.symbol, detail: required_latexsym },
"sharp": { insertText: "sharp", documentation: "Symbol: sharp", kind: latex_types.symbol },
"digamma": { insertText: "digamma", documentation: "Symbol: digamma", kind: latex_types.symbol, detail: required_amsmath },
"beth": { insertText: "beth", documentation: "Symbol: beth", kind: latex_types.symbol, detail: required_amsmath },
"gimel": { insertText: "gimel", documentation: "Symbol: gimel", kind: latex_types.symbol, detail: required_amsmath },
"daleth": { insertText: "daleth", documentation: "Symbol: daleth", kind: latex_types.symbol, detail: required_amsmath },
// AMS Binary Relations.
"dotplus": { insertText: "dotplus", documentation: "Binary Relation: dotplus", kind: latex_types.symbol, detail: required_amsmath },
"ltimes": { insertText: "ltimes", documentation: "Binary Relation: ltimes", kind: latex_types.symbol, detail: required_amsmath },
"doublecup": { insertText: "doublecup", documentation: "Binary Relation: doublecup", kind: latex_types.symbol, detail: required_amsmath },
"veebar": { insertText: "veebar", documentation: "Binary Relation: veebar", kind: latex_types.symbol, detail: required_amsmath },
"boxplus": { insertText: "boxplus", documentation: "Binary Relation: boxplus", kind: latex_types.symbol, detail: required_amsmath },
"boxtimes": { insertText: "boxtimes", documentation: "Binary Relation: boxtimes", kind: latex_types.symbol, detail: required_amsmath },
"intercal": { insertText: "intercal", documentation: "Binary Relation: intercal", kind: latex_types.symbol, detail: required_amsmath },
"curlyvee": { insertText: "curlyvee", documentation: "Binary Relation: curlyvee", kind: latex_types.symbol, detail: required_amsmath },
"centerdot": { insertText: "centerdot", documentation: "Binary Relation: centerdot", kind: latex_types.symbol, detail: required_amsmath },
"rtimes": { insertText: "rtimes", documentation: "Binary Relation: rtimes", kind: latex_types.symbol, detail: required_amsmath },
"doublecap": { insertText: "doublecap", documentation: "Binary Relation: doublecap", kind: latex_types.symbol, detail: required_amsmath },
"barwedge": { insertText: "barwedge", documentation: "Binary Relation: barwedge", kind: latex_types.symbol, detail: required_amsmath },
"boxminus": { insertText: "boxminus", documentation: "Binary Relation: boxminus", kind: latex_types.symbol, detail: required_amsmath },
"boxdot": { insertText: "boxdot", documentation: "Binary Relation: boxdot", kind: latex_types.symbol, detail: required_amsmath },
"circledast": { insertText: "circledast", documentation: "Binary Relation: circledast", kind: latex_types.symbol, detail: required_amsmath },
"curlywedge": { insertText: "curlywedge", documentation: "Binary Relation: curlywedge", kind: latex_types.symbol, detail: required_amsmath },
"divideontimes": { insertText: "divideontimes", documentation: "Binary Relation: divideontimes", kind: latex_types.symbol, detail: required_amsmath },
"smallsetminus": { insertText: "smallsetminus", documentation: "Binary Relation: smallsetminus", kind: latex_types.symbol, detail: required_amsmath },
"doublebarwedge": { insertText: "doublebarwedge", documentation: "Binary Relation: doublebarwedge", kind: latex_types.symbol, detail: required_amsmath },
"circleddash": { insertText: "circleddash", documentation: "Binary Relation: circleddash", kind: latex_types.symbol, detail: required_amsmath },
"circledcirc": { insertText: "circledcirc", documentation: "Binary Relation: circledcirc", kind: latex_types.symbol, detail: required_amsmath },
"rightthreetimes": { insertText: "rightthreetimes", documentation: "Binary Relation: rightthreetimes", kind: latex_types.symbol, detail: required_amsmath },
"leftthreetimes": { insertText: "leftthreetimes", documentation: "Binary Relation: leftthreetimes", kind: latex_types.symbol, detail: required_amsmath },
"lessdot": { insertText: "lessdot", documentation: "Binary Relation: lessdot", kind: latex_types.symbol, detail: required_amsmath },
"leqslant": { insertText: "leqslant", documentation: "Binary Relation: leqslant", kind: latex_types.symbol, detail: required_amsmath },
"eqslantless": { insertText: "eqslantless", documentation: "Binary Relation: eqslantless", kind: latex_types.symbol, detail: required_amsmath },
"leqq": { insertText: "leqq", documentation: "Binary Relation: leqq", kind: latex_types.symbol, detail: required_amsmath },
"llless": { insertText: "llless", documentation: "Binary Relation: llless", kind: latex_types.symbol, detail: "Synonym for \"\\lll\". Required package \"amsmath\"" },
"lll": { insertText: "lll", documentation: "Binary Relation: lll", kind: latex_types.symbol, detail: "Synonym for \"\\llless\". Required package \"amsmath\"" },
"lesssim": { insertText: "lesssim", documentation: "Binary Relation: lesssim", kind: latex_types.symbol, detail: required_amsmath },
"lessapprox": { insertText: "lessapprox", documentation: "Binary Relation: lessapprox", kind: latex_types.symbol, detail: required_amsmath },
"lessgtr": { insertText: "lessgtr", documentation: "Binary Relation: lessgtr", kind: latex_types.symbol, detail: required_amsmath },
"lesseqgtr": { insertText: "lesseqgtr", documentation: "Binary Relation: lesseqgtr", kind: latex_types.symbol, detail: required_amsmath },
"lesseqqgtr": { insertText: "lesseqqgtr", documentation: "Binary Relation: lesseqqgtr", kind: latex_types.symbol, detail: required_amsmath },
"preccurlyeq": { insertText: "preccurlyeq", documentation: "Binary Relation: preccurlyeq", kind: latex_types.symbol, detail: required_amsmath },
"curlyeqprec": { insertText: "curlyeqprec", documentation: "Binary Relation: curlyeqprec", kind: latex_types.symbol, detail: required_amsmath },
"precsim": { insertText: "precsim", documentation: "Binary Relation: precsim", kind: latex_types.symbol, detail: required_amsmath },
"precapprox": { insertText: "precapprox", documentation: "Binary Relation: precapprox", kind: latex_types.symbol, detail: required_amsmath },
"subseteqq": { insertText: "subseteqq", documentation: "Binary Relation: subseteqq", kind: latex_types.symbol, detail: required_amsmath },
"shortparallel": { insertText: "shortparallel", documentation: "Binary Relation: shortparallel", kind: latex_types.symbol, detail: required_amsmath },
"blacktriangleleft": { insertText: "blacktriangleleft", documentation: "Binary Relation: blacktriangleleft", kind: latex_types.symbol, detail: required_amsmath },
"vartriangleright": { insertText: "vartriangleright", documentation: "Binary Relation: vartriangleright", kind: latex_types.symbol, detail: required_amsmath },
"blacktriangleright": { insertText: "blacktriangleright", documentation: "Binary Relation: blacktriangleright", kind: latex_types.symbol, detail: required_amsmath },
"trianglerighteq": { insertText: "trianglerighteq", documentation: "Binary Relation: trianglerighteq", kind: latex_types.symbol, detail: required_amsmath },
"vartriangleleft": { insertText: "vartriangleleft", documentation: "Binary Relation: vartriangleleft", kind: latex_types.symbol, detail: required_amsmath },
"trianglelefteq": { insertText: "trianglelefteq", documentation: "Binary Relation: trianglelefteq", kind: latex_types.symbol, detail: required_amsmath },
"gtrdot": { insertText: "gtrdot", documentation: "Binary Relation: gtrdot", kind: latex_types.symbol, detail: required_amsmath },
"geqslant": { insertText: "geqslant", documentation: "Binary Relation: geqslant", kind: latex_types.symbol, detail: required_amsmath },
"eqslantgtr": { insertText: "eqslantgtr", documentation: "Binary Relation: eqslantgtr", kind: latex_types.symbol, detail: required_amsmath },
"geqq": { insertText: "geqq", documentation: "Binary Relation: geqq", kind: latex_types.symbol, detail: required_amsmath },
"ggg": { insertText: "ggg", documentation: "Binary Relation: ggg", kind: latex_types.symbol, detail: required_amsmath },
"gtrsim": { insertText: "gtrsim", documentation: "Binary Relation: gtrsim", kind: latex_types.symbol, detail: required_amsmath },
"gtrapprox": { insertText: "gtrapprox", documentation: "Binary Relation: gtrapprox", kind: latex_types.symbol, detail: required_amsmath },
"gtrless": { insertText: "gtrless", documentation: "Binary Relation: gtrless", kind: latex_types.symbol, detail: required_amsmath },
"gtreqless": { insertText: "gtreqless", documentation: "Binary Relation: gtreqless", kind: latex_types.symbol, detail: required_amsmath },
"gtreqqless": { insertText: "gtreqqless", documentation: "Binary Relation: gtreqqless", kind: latex_types.symbol, detail: required_amsmath },
"succcurlyeq": { insertText: "succcurlyeq", documentation: "Binary Relation: succcurlyeq", kind: latex_types.symbol, detail: required_amsmath },
"curlyeqsucc": { insertText: "curlyeqsucc", documentation: "Binary Relation: curlyeqsucc", kind: latex_types.symbol, detail: required_amsmath },
"succsim": { insertText: "succsim", documentation: "Binary Relation: succsim", kind: latex_types.symbol, detail: required_amsmath },
"succapprox": { insertText: "succapprox", documentation: "Binary Relation: succapprox", kind: latex_types.symbol, detail: required_amsmath },
"supseteqq": { insertText: "supseteqq", documentation: "Binary Relation: supseteqq", kind: latex_types.symbol, detail: required_amsmath },
"Supset": { insertText: "Supset", documentation: "Binary Relation: Supset", kind: latex_types.symbol, detail: required_amsmath },
"sqsupset": { insertText: "sqsupset", documentation: "Binary Relation: sqsupset", kind: latex_types.symbol, detail: required_amsmath },
"because": { insertText: "because", documentation: "Binary Relation: because", kind: latex_types.symbol, detail: required_amsmath },
"Subset": { insertText: "Subset", documentation: "Binary Relation: Subset", kind: latex_types.symbol, detail: required_amsmath },
"smallfrown": { insertText: "smallfrown", documentation: "Binary Relation: smallfrown", kind: latex_types.symbol, detail: required_amsmath },
"shortmid": { insertText: "shortmid", documentation: "Binary Relation: shortmid", kind: latex_types.symbol, detail: required_amsmath },
"therefore": { insertText: "therefore", documentation: "Binary Relation: therefore", kind: latex_types.symbol, detail: required_amsmath },
"doteqdot": { insertText: "doteqdot", documentation: "Binary Relation: doteqdot", kind: latex_types.symbol, detail: required_amsmath },
"risingdotseq": { insertText: "risingdotseq", documentation: "Binary Relation: risingdotseq", kind: latex_types.symbol, detail: required_amsmath },
"fallingdotseq": { insertText: "fallingdotseq", documentation: "Binary Relation: fallingdotseq", kind: latex_types.symbol, detail: required_amsmath },
"eqcirc": { insertText: "eqcirc", documentation: "Binary Relation: eqcirc", kind: latex_types.symbol, detail: required_amsmath },
"circeq": { insertText: "circeq", documentation: "Binary Relation: circeq", kind: latex_types.symbol, detail: required_amsmath },
"triangleq": { insertText: "triangleq", documentation: "Binary Relation: triangleq", kind: latex_types.symbol, detail: required_amsmath },
"bumpeq": { insertText: "bumpeq", documentation: "Binary Relation: bumpeq", kind: latex_types.symbol, detail: required_amsmath },
"Bumpeq": { insertText: "Bumpeq", documentation: "Binary Relation: Bumpeq", kind: latex_types.symbol, detail: required_amsmath },
"thicksim": { insertText: "thicksim", documentation: "Binary Relation: thicksim", kind: latex_types.symbol, detail: required_amsmath },
"thickapprox": { insertText: "thickapprox", documentation: "Binary Relation: thickapprox", kind: latex_types.symbol, detail: required_amsmath },
"approxeq": { insertText: "approxeq", documentation: "Binary Relation: approxeq", kind: latex_types.symbol, detail: required_amsmath },
"backsim": { insertText: "backsim", documentation: "Binary Relation: backsim", kind: latex_types.symbol, detail: required_amsmath },
"backsimeq": { insertText: "backsimeq", documentation: "Binary Relation: backsimeq", kind: latex_types.symbol, detail: required_amsmath },
"vDash": { insertText: "vDash", documentation: "Binary Relation: vDash", kind: latex_types.symbol, detail: required_amsmath },
"Vdash": { insertText: "Vdash", documentation: "Binary Relation: Vdash", kind: latex_types.symbol, detail: required_amsmath },
"Vvdash": { insertText: "Vvdash", documentation: "Binary Relation: Vvdash", kind: latex_types.symbol, detail: required_amsmath },
"backepsilon": { insertText: "backepsilon", documentation: "Binary Relation: backepsilon", kind: latex_types.symbol, detail: required_amsmath },
"varpropto": { insertText: "varpropto", documentation: "Binary Relation: varpropto", kind: latex_types.symbol, detail: required_amsmath },
"between": { insertText: "between", documentation: "Binary Relation: between", kind: latex_types.symbol, detail: required_amsmath },
"pitchfork": { insertText: "pitchfork", documentation: "Binary Relation: pitchfork", kind: latex_types.symbol, detail: required_amsmath },
"smallsmile": { insertText: "smallsmile", documentation: "Binary Relation: smallsmile", kind: latex_types.symbol, detail: required_amsmath },
"sqsubset": { insertText: "sqsubset", documentation: "Binary Relation: sqsubset", kind: latex_types.symbol, detail: required_amsmath },
// AMS Arrows.
"dashleftarrow": { insertText: "dashleftarrow", documentation: "Arrow: dashleftarrow", kind: latex_types.symbol, detail: required_amsmath },
"leftleftarrows": { insertText: "leftleftarrows", documentation: "Arrow: leftleftarrows", kind: latex_types.symbol, detail: required_amsmath },
"leftrightarrows": { insertText: "leftrightarrows", documentation: "Arrow: leftrightarrows", kind: latex_types.symbol, detail: required_amsmath },
"Lleftarrow": { insertText: "Lleftarrow", documentation: "Arrow: Lleftarrow", kind: latex_types.symbol, detail: required_amsmath },
"twoheadleftarrow": { insertText: "twoheadleftarrow", documentation: "Arrow: twoheadleftarrow", kind: latex_types.symbol, detail: required_amsmath },
"leftarrowtail": { insertText: "leftarrowtail", documentation: "Arrow: leftarrowtail", kind: latex_types.symbol, detail: required_amsmath },
"leftrightharpoons": { insertText: "leftrightharpoons", documentation: "Arrow: leftrightharpoons", kind: latex_types.symbol, detail: required_amsmath },
"Lsh": { insertText: "Lsh", documentation: "Arrow: Lsh", kind: latex_types.symbol, detail: required_amsmath },
"looparrowleft": { insertText: "looparrowleft", documentation: "Arrow: looparrowleft", kind: latex_types.symbol, detail: required_amsmath },
"curvearrowleft": { insertText: "curvearrowleft", documentation: "Arrow: curvearrowleft", kind: latex_types.symbol, detail: required_amsmath },
"circlearrowleft": { insertText: "circlearrowleft", documentation: "Arrow: circlearrowleft", kind: latex_types.symbol, detail: required_amsmath },
"multimap": { insertText: "multimap", documentation: "Arrow: multimap", kind: latex_types.symbol, detail: required_amsmath },
"downdownarrows": { insertText: "downdownarrows", documentation: "Arrow: downdownarrows", kind: latex_types.symbol, detail: required_amsmath },
"upharpoonright": { insertText: "upharpoonright", documentation: "Arrow: upharpoonright", kind: latex_types.symbol, detail: required_amsmath },
"rightsquigarrow": { insertText: "rightsquigarrow", documentation: "Arrow: rightsquigarrow", kind: latex_types.symbol, detail: required_amsmath },
"dashrightarrow": { insertText: "dashrightarrow", documentation: "Arrow: dashrightarrow", kind: latex_types.symbol, detail: required_amsmath },
"rightrightarrows": { insertText: "rightrightarrows", documentation: "Arrow: rightrightarrows", kind: latex_types.symbol, detail: required_amsmath },
"rightleftarrows": { insertText: "rightleftarrows", documentation: "Arrow: rightleftarrows", kind: latex_types.symbol, detail: required_amsmath },
"Rrightarrow": { insertText: "Rrightarrow", documentation: "Arrow: Rrightarrow", kind: latex_types.symbol, detail: required_amsmath },
"twoheadrightarrow": { insertText: "twoheadrightarrow", documentation: "Arrow: twoheadrightarrow", kind: latex_types.symbol, detail: required_amsmath },
"rightarrowtail": { insertText: "rightarrowtail", documentation: "Arrow: rightarrowtail", kind: latex_types.symbol, detail: required_amsmath },
"Rsh": { insertText: "Rsh", documentation: "Arrow: Rsh", kind: latex_types.symbol, detail: required_amsmath },
"looparrowright": { insertText: "looparrowright", documentation: "Arrow: looparrowright", kind: latex_types.symbol, detail: required_amsmath },
"curvearrowright": { insertText: "curvearrowright", documentation: "Arrow: curvearrowright", kind: latex_types.symbol, detail: required_amsmath },
"circlearrowright": { insertText: "circlearrowright", documentation: "Arrow: circlearrowright", kind: latex_types.symbol, detail: required_amsmath },
"upuparrows": { insertText: "upuparrows", documentation: "Arrow: upuparrows", kind: latex_types.symbol, detail: required_amsmath },
"upharpoonleft": { insertText: "upharpoonleft", documentation: "Arrow: upharpoonleft", kind: latex_types.symbol, detail: required_amsmath },
"downharpoonright": { insertText: "downharpoonright", documentation: "Arrow: downharpoonright", kind: latex_types.symbol, detail: required_amsmath },
"leftrightsquigarrow": { insertText: "leftrightsquigarrow", documentation: "Arrow: leftrightsquigarrow", kind: latex_types.symbol, detail: required_amsmath },
// AMS Negated Binary Relations and Arrows.
"nless": { insertText: "nless", documentation: "Negated Binary Relation: nless", kind: latex_types.symbol, detail: required_amsmath },
"lneq": { insertText: "lneq", documentation: "Negated Binary Relation: lneq", kind: latex_types.symbol, detail: required_amsmath },
"nleq": { insertText: "nleq", documentation: "Negated Binary Relation: nleq", kind: latex_types.symbol, detail: required_amsmath },
"nleqslant": { insertText: "nleqslant", documentation: "Negated Binary Relation: nleqslant", kind: latex_types.symbol, detail: required_amsmath },
"lneqq": { insertText: "lneqq", documentation: "Negated Binary Relation: lneqq", kind: latex_types.symbol, detail: required_amsmath },
"lvertneqq": { insertText: "lvertneqq", documentation: "Negated Binary Relation: lvertneqq", kind: latex_types.symbol, detail: required_amsmath },
"nleqq": { insertText: "nleqq", documentation: "Negated Binary Relation: nleqq", kind: latex_types.symbol, detail: required_amsmath },
"lnsim": { insertText: "lnsim", documentation: "Negated Binary Relation: lnsim", kind: latex_types.symbol, detail: required_amsmath },
"lnapprox": { insertText: "lnapprox", documentation: "Negated Binary Relation: lnapprox", kind: latex_types.symbol, detail: required_amsmath },
"nprec": { insertText: "nprec", documentation: "Negated Binary Relation: nprec", kind: latex_types.symbol, detail: required_amsmath },
"npreceq": { insertText: "npreceq", documentation: "Negated Binary Relation: npreceq", kind: latex_types.symbol, detail: required_amsmath },
"precneqq": { insertText: "precneqq", documentation: "Negated Binary Relation: precneqq", kind: latex_types.symbol, detail: required_amsmath },
"precnsim": { insertText: "precnsim", documentation: "Negated Binary Relation: precnsim", kind: latex_types.symbol, detail: required_amsmath },
"precnapprox": { insertText: "precnapprox", documentation: "Negated Binary Relation: precnapprox", kind: latex_types.symbol, detail: required_amsmath },
"subsetneq": { insertText: "subsetneq", documentation: "Negated Binary Relation: subsetneq", kind: latex_types.symbol, detail: required_amsmath },
"varsubsetneq": { insertText: "varsubsetneq", documentation: "Negated Binary Relation: varsubsetneq", kind: latex_types.symbol, detail: required_amsmath },
"nsubseteq": { insertText: "nsubseteq", documentation: "Negated Binary Relation: nsubseteq", kind: latex_types.symbol, detail: required_amsmath },
"subsetneqq": { insertText: "subsetneqq", documentation: "Negated Binary Relation: subsetneqq", kind: latex_types.symbol, detail: required_amsmath },
"ngtr": { insertText: "ngtr", documentation: "Negated Binary Relation: ngtr", kind: latex_types.symbol, detail: required_amsmath },
"gneq": { insertText: "gneq", documentation: "Negated Binary Relation: gneq", kind: latex_types.symbol, detail: required_amsmath },
"ngeq": { insertText: "ngeq", documentation: "Negated Binary Relation: ngeq", kind: latex_types.symbol, detail: required_amsmath },
"ngeqslant": { insertText: "ngeqslant", documentation: "Negated Binary Relation: ngeqslant", kind: latex_types.symbol, detail: required_amsmath },
"gneqq": { insertText: "gneqq", documentation: "Negated Binary Relation: gneqq", kind: latex_types.symbol, detail: required_amsmath },
"gvertneqq": { insertText: "gvertneqq", documentation: "Negated Binary Relation: gvertneqq", kind: latex_types.symbol, detail: required_amsmath },
"ngeqq": { insertText: "ngeqq", documentation: "Negated Binary Relation: ngeqq", kind: latex_types.symbol, detail: required_amsmath },
"gnsim": { insertText: "gnsim", documentation: "Negated Binary Relation: gnsim", kind: latex_types.symbol, detail: required_amsmath },
"gnapprox": { insertText: "gnapprox", documentation: "Negated Binary Relation: gnapprox", kind: latex_types.symbol, detail: required_amsmath },
"nsucc": { insertText: "nsucc", documentation: "Negated Binary Relation: nsucc", kind: latex_types.symbol, detail: required_amsmath },
"nsucceq": { insertText: "nsucceq", documentation: "Negated Binary Relation: nsucceq", kind: latex_types.symbol, detail: required_amsmath },
"succneqq": { insertText: "succneqq", documentation: "Negated Binary Relation: succneqq", kind: latex_types.symbol, detail: required_amsmath },
"succnsim": { insertText: "succnsim", documentation: "Negated Binary Relation: succnsim", kind: latex_types.symbol, detail: required_amsmath },
"succnapprox": { insertText: "succnapprox", documentation: "Negated Binary Relation: succnapprox", kind: latex_types.symbol, detail: required_amsmath },
"supsetneq": { insertText: "supsetneq", documentation: "Negated Binary Relation: supsetneq", kind: latex_types.symbol, detail: required_amsmath },
"varsupsetneq": { insertText: "varsupsetneq", documentation: "Negated Binary Relation: varsupsetneq", kind: latex_types.symbol, detail: required_amsmath },
"nsupseteq": { insertText: "nsupseteq", documentation: "Negated Binary Relation: nsupseteq", kind: latex_types.symbol, detail: required_amsmath },
"supsetneqq": { insertText: "supsetneqq", documentation: "Negated Binary Relation: supsetneqq", kind: latex_types.symbol, detail: required_amsmath },
"varsubsetneqq": { insertText: "varsubsetneqq", documentation: "Negated Binary Relation: varsubsetneqq", kind: latex_types.symbol, detail: required_amsmath },
"varsupsetneqq": { insertText: "varsupsetneqq", documentation: "Negated Binary Relation: varsupsetneqq", kind: latex_types.symbol, detail: required_amsmath },
"nsubseteqq": { insertText: "nsubseteqq", documentation: "Negated Binary Relation: nsubseteqq", kind: latex_types.symbol, detail: required_amsmath },
"nsupseteqq": { insertText: "nsupseteqq", documentation: "Negated Binary Relation: nsupseteqq", kind: latex_types.symbol, detail: required_amsmath },
"nmid": { insertText: "nmid", documentation: "Negated Binary Relation: nmid", kind: latex_types.symbol, detail: required_amsmath },
"nparallel": { insertText: "nparallel", documentation: "Negated Binary Relation: nparallel", kind: latex_types.symbol, detail: required_amsmath },
"nshortmid": { insertText: "nshortmid", documentation: "Negated Binary Relation: nshortmid", kind: latex_types.symbol, detail: required_amsmath },
"nshortparallel": { insertText: "nshortparallel", documentation: "Negated Binary Relation: nshortparallel", kind: latex_types.symbol, detail: required_amsmath },
"nsim": { insertText: "nsim", documentation: "Negated Binary Relation: nsim", kind: latex_types.symbol, detail: required_amsmath },
"ncong": { insertText: "ncong", documentation: "Negated Binary Relation: ncong", kind: latex_types.symbol, detail: required_amsmath },
"nvdash": { insertText: "nvdash", documentation: "Negated Binary Relation: nvdash", kind: latex_types.symbol, detail: required_amsmath },
"nvDash": { insertText: "nvDash", documentation: "Negated Binary Relation: nvDash", kind: latex_types.symbol, detail: required_amsmath },
"nVdash": { insertText: "nVdash", documentation: "Negated Binary Relation: nVdash", kind: latex_types.symbol, detail: required_amsmath },
"nVDash": { insertText: "nVDash", documentation: "Negated Binary Relation: nVDash", kind: latex_types.symbol, detail: required_amsmath },
"ntriangleleft": { insertText: "ntriangleleft", documentation: "Negated Binary Relation: ntriangleleft", kind: latex_types.symbol, detail: required_amsmath },
"ntriangleright": { insertText: "ntriangleright", documentation: "Negated Binary Relation: ntriangleright", kind: latex_types.symbol, detail: required_amsmath },
"ntrianglelefteq": { insertText: "ntrianglelefteq", documentation: "Negated Binary Relation: ntrianglelefteq", kind: latex_types.symbol, detail: required_amsmath },
"ntrianglerighteq": { insertText: "ntrianglerighteq", documentation: "Negated Binary Relation: ntrianglerighteq", kind: latex_types.symbol, detail: required_amsmath },
// AMS negated Arrows.
"nleftarrow": { insertText: "nleftarrow", documentation: "Negated Arrow: nleftarrow", kind: latex_types.symbol, detail: required_amsmath },
"nLeftarrow": { insertText: "nLeftarrow", documentation: "Negated Arrow: nLeftarrow", kind: latex_types.symbol, detail: required_amsmath },
"nrightarrow": { insertText: "nrightarrow", documentation: "Negated Arrow: nrightarrow", kind: latex_types.symbol, detail: required_amsmath },
"nRightarrow": { insertText: "nRightarrow", documentation: "Negated Arrow: nRightarrow", kind: latex_types.symbol, detail: required_amsmath },
"nleftrightarrow": { insertText: "nleftrightarrow", documentation: "Negated Arrow: nleftrightarrow", kind: latex_types.symbol, detail: required_amsmath },
"nLeftrightarrow": { insertText: "nLeftrightarrow", documentation: "Negated Arrow: nLeftrightarrow", kind: latex_types.symbol, detail: required_amsmath },
// AMS Miscellaneous.
"hbar": { insertText: "hbar", documentation: "Symbol: hbar", kind: latex_types.symbol, detail: required_amsmath },
"square": { insertText: "square", documentation: "Symbol: square", kind: latex_types.symbol, detail: required_amsmath },
"vartriangle": { insertText: "vartriangle", documentation: "Symbol: vartriangle", kind: latex_types.symbol, detail: required_amsmath },
"triangledown": { insertText: "triangledown", documentation: "Symbol: triangledown", kind: latex_types.symbol, detail: required_amsmath },
"lozenge": { insertText: "lozenge", documentation: "Symbol: lozenge", kind: latex_types.symbol, detail: required_amsmath },
"angle": { insertText: "angle", documentation: "Symbol: angle", kind: latex_types.symbol, detail: required_amsmath },
"diagup": { insertText: "diagup", documentation: "Symbol: diagup", kind: latex_types.symbol, detail: required_amsmath },
"nexists": { insertText: "nexists", documentation: "Symbol: nexists", kind: latex_types.symbol, detail: required_amsmath },
"eth": { insertText: "eth", documentation: "Symbol: eth", kind: latex_types.symbol, detail: required_amsmath },
"hslash": { insertText: "hslash", documentation: "Symbol: hslash", kind: latex_types.symbol, detail: required_amsmath },
"blacksquare": { insertText: "blacksquare", documentation: "Symbol: blacksquare", kind: latex_types.symbol, detail: required_amsmath },
"blacktriangle": { insertText: "blacktriangle", documentation: "Symbol: blacktriangle", kind: latex_types.symbol, detail: required_amsmath },
"blacktriangledown": { insertText: "blacktriangledown", documentation: "Symbol: blacktriangledown", kind: latex_types.symbol, detail: required_amsmath },
"blacklozenge": { insertText: "blacklozenge", documentation: "Symbol: blacklozenge", kind: latex_types.symbol, detail: required_amsmath },
"measuredangle": { insertText: "measuredangle", documentation: "Symbol: measuredangle", kind: latex_types.symbol, detail: required_amsmath },
"diagdown": { insertText: "diagdown", documentation: "Symbol: diagdown", kind: latex_types.symbol, detail: required_amsmath },
"Finv": { insertText: "Finv", documentation: "Symbol: Finv", kind: latex_types.symbol, detail: required_amsmath },
"sphericalangle": { insertText: "sphericalangle", documentation: "Symbol: sphericalangle", kind: latex_types.symbol, detail: required_amsmath },
"Bbbk": { insertText: "Bbbk", documentation: "Symbol: Bbbk", kind: latex_types.symbol, detail: required_amsmath },
"circledS": { insertText: "circledS", documentation: "Symbol: circledS", kind: latex_types.symbol, detail: required_amsmath },
"complement": { insertText: "complement", documentation: "Symbol: complement", kind: latex_types.symbol, detail: required_amsmath },
"Game": { insertText: "Game", documentation: "Symbol: Game", kind: latex_types.symbol, detail: required_amsmath },
"bigstar": { insertText: "bigstar", documentation: "Symbol: bigstar", kind: latex_types.symbol, detail: required_amsmath },
"backprime": { insertText: "backprime", documentation: "Symbol: backprime", kind: latex_types.symbol, detail: required_amsmath },
"varnothing": { insertText: "varnothing", documentation: "Symbol: varnothing", kind: latex_types.symbol, detail: required_amsmath },
"mho": { insertText: "mho", documentation: "Symbol: mho", kind: latex_types.symbol, detail: required_amsmath },
};

View File

@ -0,0 +1,16 @@
import { latex_types } from "./symbol_types";
export default {
"fullpage": { insertText: "fullpage", kind: "package", documentation: "fullpage" },
"inputenc": { insertText: "inputenc", kind: "package", documentation: "Ermöglich verwendung vollen Zeichensatzes UTF-8",
detail: "Empfohlener Zusatsparameter [utf8]" },
"babel": { insertText: "babel", kind: "package", documentation: "Macht richtige Umbrüche, ...",
detail: "Mögliche Parameter [ngerman|english]" },
"fontenc": { insertText: "fontenc", kind: "package", documentation: "setzt font im erzeugten pdf sodass bsp. ä ein ä ist und nicht a~",
detail: "Empfohlener Zusatsparameter [T1]" },
"amssymb": { insertText: "amssymb", kind: "package", documentation: "amssymb" },
"amsmath": { insertText: "amsmath", kind: "package", documentation: "amsmath" },
"amstext": { insertText: "amstext", kind: "package", documentation: "amstext" },
"listings": { insertText: "listings", kind: "package", documentation: "listings" },
"diagrams": { insertText: "diagrams", kind: "package", documentation: "diagrams", detail: "Needs 'diagrams.sty'" }
};

View File

@ -0,0 +1,32 @@
export default {
"\\path": {
"draw": { documentation: "draw" },
"fill": { documentation: "fill" },
"clip": { documentation: "clip" },
"shade": { documentation: "shade" },
"shadedraw": { documentation: "shadedraw" },
},
"\\draw": {
"fill": { insertText: "fill", documentation: "fills the drawn path" },
"line width": { insertText: "line width=$1pt%0", documentation: "Specifies the line width." },
"color": { insertText: "color=$0", documentation: "Specifies the line width." },
"style": { insertText: "style=$0", documentation: "Sets the path style." },
},
"\\node": {
"anchor": { insertText: "anchor=$0", documentation: "Sets the node positioning anchor" },
},
"anchor=": {
"north": { documentation: "north" },
"east": { documentation: "east" },
"south": { documentation: "south" },
"west": { documentation: "west" },
},
"\\begin{figure}": {
"!": { detail: "", documentation: "overwrite" },
"h": { detail: "", documentation: "hier" },
"l": { detail: "", documentation: "low" },
"p": { detail: "", documentation: "page" },
},
};

View File

@ -0,0 +1,10 @@
export enum latex_types {
symbol,
function,
environment,
package,
keyword,
parameter,
snippet
};

View File

@ -0,0 +1,54 @@
import { latex_types } from "./symbol_types";
export default {
"usepackage": { insertText: "usepackage{$1}", documentation: "usepackage", kind: latex_types.keyword },
"newenvironment": { insertText: "newenvironment{${1:name}}[$2]{$3}{$0}", documentation: "newenvironment", kind: latex_types.keyword },
"newcommand": { insertText: "newcommand{${1:name}}[$2]{$3}", documentation: "newcommand", kind: latex_types.keyword },
"renewcommand": { insertText: "renewcommand{${1:name}}[$2]{$3}", documentation: "renewcommand", kind: latex_types.keyword },
"DeclareMathOperator": { insertText: "DeclareMathOperator{${1:operatorcommand}}{${2:operatorname}}$0", detail: "Define in preamble!", documentation: "Defines a new math operator. Use the stared version for operators with limits.", kind: latex_types.keyword },
"DeclareMathOperator*": { insertText: "DeclareMathOperator*{${1:operatorcommand}}{${2:operatorname}}$0", detail: "Define in preamble!", documentation: "Defines a new math operator with limits.", kind: latex_types.keyword },
"today": { insertText: "today", documentation: "The current Date", kind: latex_types.symbol },
"TeX": { insertText: "TeX", documentation: "The TeX symbol", kind: latex_types.symbol },
"LaTeX": { insertText: "LaTeX", documentation: "The LaTeX symbol", kind: latex_types.symbol },
"LaTeXe": { insertText: "LaTeXe", documentation: "The current LaTeX symbol", kind: latex_types.symbol },
"newline": { insertText: "newline", documentation: "Starts a new line", kind: latex_types.keyword },
"newpage": { insertText: "newpage", documentation: "Starts a new page", kind: latex_types.keyword },
"linebreak": { insertText: "newpage[]", detail: "Optional Param: int 0-4.", documentation: "Suggests a line break to the LaTeX compiler. Optional parameter: int from 0 to 4, a value lower 4 may be ignored if it would look bad.", kind: latex_types.keyword },
"nolinebreak": { insertText: "nolinebreak[]", detail: "Optional Param: int 0-4.", documentation: "Suggests no line break to the LaTeX compiler. Optional parameter: int from 0 to 4, a value lower 4 may be ignored if it would look bad.", kind: latex_types.keyword },
"pagebreak": { insertText: "nolinebreak[]", detail: "Optional Param: int 0-4.", documentation: "Suggests a page break to the LaTeX compiler. Optional parameter: int from 0 to 4, a value lower 4 may be ignored if it would look bad.", kind: latex_types.keyword },
"nopagebreak": { insertText: "nolinebreak[]", detail: "Optional Param: int 0-4.", documentation: "Suggests no page break to the LaTeX compiler. Optional parameter: int from 0 to 4, a value lower 4 may be ignored if it would look bad.", kind: latex_types.keyword },
"section": { insertText: "section{$1}", documentation: "Section", kind: latex_types.keyword },
"section*": { insertText: "section*{$1}", documentation: "Section", kind: latex_types.keyword },
"subsection": { insertText: "subsection{$1}", documentation: "Sub Section", kind: latex_types.keyword },
"subsection*": { insertText: "subsection*{$1}", documentation: "Sub Section", kind: latex_types.keyword },
"subsubsection": { insertText: "subsubsection{$1}", documentation: "Sub Sub Section", kind: latex_types.keyword },
"subsubsection*": { insertText: "subsubsection*{$1}", documentation: "Sub Sub Section", kind: latex_types.keyword },
"paragraph": { insertText: "paragraph{$1}", documentation: "paragraph", kind: latex_types.keyword },
"paragraph*": { insertText: "paragraph*{$1}", documentation: "paragraph", kind: latex_types.keyword },
"label": { insertText: "label{$1}$0", documentation: "Label", kind: latex_types.keyword },
"ref": { insertText: "ref{$1}$0", documentation: "Reference", kind: latex_types.keyword },
"eqref": { insertText: "eqref{$1}$0", documentation: "Equation reference", kind: latex_types.keyword },
"pageref": { insertText: "pageref{$1}$0", documentation: "Page reference", kind: latex_types.keyword },
"index": { insertText: "index{$1}$0", documentation: "Creates a index Entrie", kind: latex_types.keyword },
"emph": { insertText: "emph{$1}$0", documentation: "Emphasize Text", kind: latex_types.function },
"texttt": { insertText: "texttt{$1}$0", documentation: "Typeset Text", kind: latex_types.function },
"textit": { insertText: "textit{$1}$0", documentation: "Italic Text", kind: latex_types.function },
"textbf": { insertText: "textbf{$1}$0", documentation: "Bold Text", kind: latex_types.function },
"underline": { insertText: "underline{$1}$0", documentation: "Bold Text", kind: latex_types.function },
// TODO: need a specific type in different environments!!!
"centering": { insertText: "centering", documentation: "Centers the content of figure or minipage content", kind: latex_types.keyword },
"caption": { insertText: "caption{$1}$0", documentation: "Figure description", kind: latex_types.function },
"verb": { insertText: "verb{$1}$0", detail: "Do not use verbatim environment and the \\verb command within parameters of other commands.", documentation: "Environment content will be directly printed, as if typed on a typewriter, with all line breaks and spaces, without any LaTeX command being executed.", kind: latex_types.environment },
"verb*": { insertText: "verb*{$1}$0", detail: "Do not use verbatim environment and the \\verb command within parameters of other commands.", documentation: "Environment content will be directly printed, as if typed on a typewriter, with all line breaks and spaces, without any LaTeX command being executed. The additional * lets spaces be printed visible.", kind: latex_types.environment },
"ldots": { insertText: "ldots", documentation: "3 lower dots", kind: latex_types.symbol },
};

View File

@ -0,0 +1,12 @@
import { latex_types } from "./symbol_types";
export default {
"draw": { insertText: "draw[$1] ($2)$0;", documentation: "draw", kind: latex_types.snippet },
"node": { insertText: "node[$1] {$2}$0;", documentation: "node", kind: latex_types.snippet },
"fill": { insertText: "fill[$1] $0;", documentation: "fill", kind: latex_types.snippet },
"filldraw": { insertText: "fill[$1] $0;", documentation: "fill", kind: latex_types.snippet },
"path": { insertText: "path[$1] $0;", documentation: "path", kind: latex_types.snippet },
"foreach": { insertText: "foreach ${1:\\x} in { $2 } $3;", documentation: "for loop", kind: latex_types.snippet },
"begin\{scope\}": { insertText: "begin{scope}\n\t$0\n\\end{scope}", documentation: "scope environment", kind: latex_types.snippet },
};

252
grammars/BibTeX.json Normal file
View File

@ -0,0 +1,252 @@
{
"information_for_contributors": [
"Grammar based on description from http://artis.imag.fr/~Xavier.Decoret/resources/xdkbibtex/bibtex_summary.html#comment"
],
"name": "BibTeX",
"scopeName": "text.bibtex",
"fileTypes": [
"bib"
],
"patterns": [
{
"begin": "@Comment",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.bibtex"
}
},
"end": "$\\n?",
"name": "comment.line.at-sign.bibtex"
},
{
"begin": "((@)String)\\s*(\\{)\\s*([a-zA-Z]*)",
"beginCaptures": {
"1": {
"name": "keyword.other.string-constant.bibtex"
},
"2": {
"name": "punctuation.definition.keyword.bibtex"
},
"3": {
"name": "punctuation.section.string-constant.begin.bibtex"
},
"4": {
"name": "variable.other.bibtex"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.section.string-constant.end.bibtex"
}
},
"name": "meta.string-constant.braces.bibtex",
"patterns": [
{
"include": "#string_content"
}
]
},
{
"begin": "((@)String)\\s*(\\()\\s*([a-zA-Z]*)",
"beginCaptures": {
"1": {
"name": "keyword.other.string-constant.bibtex"
},
"2": {
"name": "punctuation.definition.keyword.bibtex"
},
"3": {
"name": "punctuation.section.string-constant.begin.bibtex"
},
"4": {
"name": "variable.other.bibtex"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.section.string-constant.end.bibtex"
}
},
"name": "meta.string-constant.parenthesis.bibtex",
"patterns": [
{
"include": "#string_content"
}
]
},
{
"begin": "((@)[a-zA-Z]+)\\s*(\\{)\\s*([^\\s,]*)",
"beginCaptures": {
"1": {
"name": "keyword.other.entry-type.bibtex"
},
"2": {
"name": "punctuation.definition.keyword.bibtex"
},
"3": {
"name": "punctuation.section.entry.begin.bibtex"
},
"4": {
"name": "entity.name.type.entry-key.bibtex"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.section.entry.end.bibtex"
}
},
"name": "meta.entry.braces.bibtex",
"patterns": [
{
"begin": "([a-zA-Z0-9\\!\\$\\&\\*\\+\\-\\.\\/\\:\\;\\<\\>\\?\\[\\]\\^\\_\\`\\|]+)\\s*(\\=)",
"beginCaptures": {
"1": {
"name": "string.unquoted.key.bibtex"
},
"2": {
"name": "punctuation.separator.key-value.bibtex"
}
},
"end": "(?=[,}])",
"name": "meta.key-assignment.bibtex",
"patterns": [
{
"include": "#string_content"
},
{
"include": "#integer"
}
]
}
]
},
{
"begin": "((@)[a-zA-Z]+)\\s*(\\()\\s*([^\\s,]*)",
"beginCaptures": {
"1": {
"name": "keyword.other.entry-type.bibtex"
},
"2": {
"name": "punctuation.definition.keyword.bibtex"
},
"3": {
"name": "punctuation.section.entry.begin.bibtex"
},
"4": {
"name": "entity.name.type.entry-key.bibtex"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.section.entry.end.bibtex"
}
},
"name": "meta.entry.parenthesis.bibtex",
"patterns": [
{
"begin": "([a-zA-Z0-9\\!\\$\\&\\*\\+\\-\\.\\/\\:\\;\\<\\>\\?\\[\\]\\^\\_\\`\\|]+)\\s*(\\=)",
"beginCaptures": {
"1": {
"name": "string.unquoted.key.bibtex"
},
"2": {
"name": "punctuation.separator.key-value.bibtex"
}
},
"end": "(?=[,)])",
"name": "meta.key-assignment.bibtex",
"patterns": [
{
"include": "#string_content"
},
{
"include": "#integer"
}
]
}
]
},
{
"begin": "[^@\\n]",
"end": "(?=@)",
"name": "comment.block.bibtex"
}
],
"repository": {
"integer": {
"match": "\\d+",
"name": "constant.numeric.bibtex"
},
"nested_braces": {
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.group.begin.bibtex"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.group.end.bibtex"
}
},
"patterns": [
{
"include": "#nested_braces"
}
]
},
"string_content": {
"patterns": [
{
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.bibtex"
}
},
"end": "\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.bibtex"
}
},
"name": "string.quoted.double.bibtex",
"patterns": [
{
"include": "#nested_braces"
}
]
},
{
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.bibtex"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.bibtex"
}
},
"name": "string.quoted.other.braces.bibtex",
"patterns": [
{
"match": "@",
"name": "invalid.illegal.at-sign.bibtex"
},
{
"include": "#nested_braces"
}
]
}
]
}
}
}

2623
grammars/LaTeX.json Normal file

File diff suppressed because it is too large Load Diff

268
grammars/TeX.json Normal file
View File

@ -0,0 +1,268 @@
{
"name": "TeX",
"scopeName": "text.tex",
"fileTypes": [
"dtx",
"ins"
],
"patterns": [
{
"captures": {
"1": {
"name": "punctuation.definition.keyword.tex"
}
},
"match": "(\\\\)(backmatter|else|fi|frontmatter|mainmatter|if(case|cat|csname|defined|dim|eof|false|fontchar|hbox|hmode|inner|mmode|num|odd|true|vbox|vmode|void|x)?|unless)\\b",
"name": "keyword.control.tex"
},
{
"captures": {
"1": {
"name": "keyword.control.catcode.tex"
},
"2": {
"name": "punctuation.definition.keyword.tex"
},
"3": {
"name": "punctuation.separator.key-value.tex"
},
"4": {
"name": "constant.numeric.category.tex"
}
},
"match": "((\\\\)k?catcode)`(?:\\\\)?.(=)(\\d+)",
"name": "meta.catcode.tex"
},
{
"begin": "(^[ \\t]+)?(?=%)",
"beginCaptures": {
"1": {
"name": "punctuation.whitespace.comment.leading.tex"
}
},
"end": "(?!\\G)",
"patterns": [
{
"begin": "%:",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.tex"
}
},
"end": "$\\n?",
"name": "comment.line.percentage.semicolon.texshop.tex"
},
{
"begin": "^(%!TEX) (\\S*) =",
"beginCaptures": {
"1": {
"name": "punctuation.definition.comment.tex"
}
},
"end": "$\\n?",
"name": "comment.line.percentage.magic.dicy.tex"
},
{
"begin": "%",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.tex"
}
},
"end": "$\\n?",
"name": "comment.line.percentage.tex"
}
]
},
{
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.section.group.begin.tex"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.section.group.end.tex"
}
},
"name": "meta.group.braces.tex",
"patterns": [
{
"include": "$base"
}
]
},
{
"match": "[\\[\\]]",
"name": "punctuation.definition.brackets.tex"
},
{
"begin": "\\$\\$",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.tex"
}
},
"end": "\\$\\$",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.tex"
}
},
"name": "string.other.math.block.tex",
"patterns": [
{
"include": "#math"
},
{
"include": "$self"
}
]
},
{
"match": "\\\\\\\\",
"name": "constant.character.newline.tex"
},
{
"begin": "\\$",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.tex"
}
},
"end": "\\$",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.tex"
}
},
"name": "string.other.math.tex",
"patterns": [
{
"match": "\\\\\\$",
"name": "constant.character.escape.tex"
},
{
"include": "#math"
},
{
"include": "$self"
}
]
},
{
"captures": {
"1": {
"name": "punctuation.definition.function.tex"
}
},
"match": "(\\\\)[A-Za-z@]+",
"name": "support.function.general.tex"
},
{
"captures": {
"1": {
"name": "punctuation.definition.keyword.tex"
}
},
"match": "(\\\\)[^a-zA-Z@]",
"name": "constant.character.escape.tex"
},
{
"match": "«press a-z and space for greek letter»[a-zA-Z]*",
"name": "meta.placeholder.greek.tex"
}
],
"repository": {
"math": {
"patterns": [
{
"captures": {
"1": {
"name": "punctuation.definition.constant.math.tex"
}
},
"match": "(\\\\)(s(s(earrow|warrow|lash)|h(ort(downarrow|uparrow|parallel|leftarrow|rightarrow|mid)|arp)|tar|i(gma|m(eq)?)|u(cc(sim|n(sim|approx)|curlyeq|eq|approx)?|pset(neq(q)?|plus(eq)?|eq(q)?)?|rd|m|bset(neq(q)?|plus(eq)?|eq(q)?)?)|p(hericalangle|adesuit)|e(tminus|arrow)|q(su(pset(eq)?|bset(eq)?)|c(up|ap)|uare)|warrow|m(ile|all(s(etminus|mile)|frown)))|h(slash|ook(leftarrow|rightarrow)|eartsuit|bar)|R(sh|ightarrow|e|bag)|Gam(e|ma)|n(s(hort(parallel|mid)|im|u(cc(eq)?|pseteq(q)?|bseteq))|Rightarrow|n(earrow|warrow)|cong|triangle(left(eq(slant)?)?|right(eq(slant)?)?)|i(plus)?|u|p(lus|arallel|rec(eq)?)|e(q|arrow|g|xists)|v(dash|Dash)|warrow|le(ss|q(slant|q)?|ft(arrow|rightarrow))|a(tural|bla)|VDash|rightarrow|g(tr|eq(slant|q)?)|mid|Left(arrow|rightarrow))|c(hi|irc(eq|le(d(circ|S|dash|ast)|arrow(left|right)))?|o(ng|prod|lon|mplement)|dot(s|p)?|u(p|r(vearrow(left|right)|ly(eq(succ|prec)|vee(downarrow|uparrow)?|wedge(downarrow|uparrow)?)))|enterdot|lubsuit|ap)|Xi|Maps(to(char)?|from(char)?)|B(ox|umpeq|bbk)|t(h(ick(sim|approx)|e(ta|refore))|imes|op|wohead(leftarrow|rightarrow)|a(u|lloblong)|riangle(down|q|left(eq(slant)?)?|right(eq(slant)?)?)?)|i(n(t(er(cal|leave))?|plus|fty)?|ota|math)|S(igma|u(pset|bset))|zeta|o(slash|times|int|dot|plus|vee|wedge|lessthan|greaterthan|m(inus|ega)|b(slash|long|ar))|d(i(v(ideontimes)?|a(g(down|up)|mond(suit)?)|gamma)|o(t(plus|eq(dot)?)|ublebarwedge|wn(harpoon(left|right)|downarrows|arrow))|d(ots|agger)|elta|a(sh(v|leftarrow|rightarrow)|leth|gger))|Y(down|up|left|right)|C(up|ap)|u(n(lhd|rhd)|p(silon|harpoon(left|right)|downarrow|uparrows|lus|arrow)|lcorner|rcorner)|jmath|Theta|Im|p(si|hi|i(tchfork)?|erp|ar(tial|allel)|r(ime|o(d|pto)|ec(sim|n(sim|approx)|curlyeq|eq|approx)?)|m)|e(t(h|a)|psilon|q(slant(less|gtr)|circ|uiv)|ll|xists|mptyset)|Omega|D(iamond|ownarrow|elta)|v(d(ots|ash)|ee(bar)?|Dash|ar(s(igma|u(psetneq(q)?|bsetneq(q)?))|nothing|curly(vee|wedge)|t(heta|imes|riangle(left|right)?)|o(slash|circle|times|dot|plus|vee|wedge|lessthan|ast|greaterthan|minus|b(slash|ar))|p(hi|i|ropto)|epsilon|kappa|rho|bigcirc))|kappa|Up(silon|downarrow|arrow)|Join|f(orall|lat|a(t(s(emi|lash)|bslash)|llingdotseq)|rown)|P(si|hi|i)|w(p|edge|r)|l(hd|n(sim|eq(q)?|approx)|ceil|times|ightning|o(ng(left(arrow|rightarrow)|rightarrow|maps(to|from))|zenge|oparrow(left|right))|dot(s|p)|e(ss(sim|dot|eq(qgtr|gtr)|approx|gtr)|q(slant|q)?|ft(slice|harpoon(down|up)|threetimes|leftarrows|arrow(t(ail|riangle))?|right(squigarrow|harpoons|arrow(s|triangle|eq)?))|adsto)|vertneqq|floor|l(c(orner|eil)|floor|l|bracket)?|a(ngle|mbda)|rcorner|bag)|a(s(ymp|t)|ngle|pprox(eq)?|l(pha|eph)|rrownot|malg)|V(dash|vdash)|r(h(o|d)|ceil|times|i(singdotseq|ght(s(quigarrow|lice)|harpoon(down|up)|threetimes|left(harpoons|arrows)|arrow(t(ail|riangle))?|rightarrows))|floor|angle|r(ceil|parenthesis|floor|bracket)|bag)|g(n(sim|eq(q)?|approx)|tr(sim|dot|eq(qless|less)|less|approx)|imel|eq(slant|q)?|vertneqq|amma|g(g)?)|Finv|xi|m(ho|i(nuso|d)|o(o|dels)|u(ltimap)?|p|e(asuredangle|rge)|aps(to|from(char)?))|b(i(n(dnasrepma|ampersand)|g(s(tar|qc(up|ap))|nplus|c(irc|u(p|rly(vee|wedge))|ap)|triangle(down|up)|interleave|o(times|dot|plus)|uplus|parallel|vee|wedge|box))|o(t|wtie|x(slash|circle|times|dot|plus|empty|ast|minus|b(slash|ox|ar)))|u(llet|mpeq)|e(cause|t(h|ween|a))|lack(square|triangle(down|left|right)?|lozenge)|a(ck(s(im(eq)?|lash)|prime|epsilon)|r(o|wedge))|bslash)|L(sh|ong(left(arrow|rightarrow)|rightarrow|maps(to|from))|eft(arrow|rightarrow)|leftarrow|ambda|bag)|Arrownot)\\b",
"name": "constant.character.math.tex"
},
{
"captures": {
"1": {
"name": "punctuation.definition.constant.math.tex"
}
},
"match": "(\\\\)(sum|prod|coprod|int|oint|bigcap|bigcup|bigsqcup|bigvee|bigwedge|bigodot|bigotimes|bogoplus|biguplus)\\b",
"name": "constant.character.math.tex"
},
{
"captures": {
"1": {
"name": "punctuation.definition.constant.math.tex"
}
},
"match": "(\\\\)(arccos|arcsin|arctan|arg|cos|cosh|cot|coth|csc|deg|det|dim|exp|gcd|hom|inf|ker|lg|lim|liminf|limsup|ln|log|max|min|pr|sec|sin|sinh|sup|tan|tanh)\\b",
"name": "constant.other.math.tex"
},
{
"begin": "((\\\\)Sexpr(\\{))",
"beginCaptures": {
"1": {
"name": "support.function.sexpr.math.tex"
},
"2": {
"name": "punctuation.definition.function.math.tex"
},
"3": {
"name": "punctuation.section.embedded.begin.math.tex"
}
},
"contentName": "support.function.sexpr.math.tex",
"end": "(((\\})))",
"endCaptures": {
"1": {
"name": "support.function.sexpr.math.tex"
},
"2": {
"name": "punctuation.section.embedded.end.math.tex"
},
"3": {
"name": "source.r"
}
},
"name": "meta.embedded.line.r",
"patterns": [
{
"begin": "\\G(?!\\})",
"end": "(?=\\})",
"name": "source.r",
"patterns": [
{
"include": "source.r"
}
]
}
]
},
{
"captures": {
"1": {
"name": "punctuation.definition.constant.math.tex"
}
},
"match": "(\\\\)([^a-zA-Z]|[A-Za-z]+)(?=\\b|\\}|\\]|\\^|\\_)",
"name": "constant.other.general.math.tex"
},
{
"match": "(([0-9]*[\\.][0-9]+)|[0-9]+)",
"name": "constant.numeric.math.tex"
},
{
"match": "«press a-z and space for greek letter»[a-zA-Z]*",
"name": "meta.placeholder.greek.math.tex"
}
]
}
}
}

95
package.json Normal file
View File

@ -0,0 +1,95 @@
{
"name": "latex",
"version": "1.0.0",
"displayName": "LaTeX language support",
"description": "LaTeX language support for Visual Studio Code",
"main": "./out/src/extension",
"activationEvents": [
"onLanguage:latex"
],
"dependencies": {
"typescript": "^2.0.3",
"vscode": "^1.0.0",
"@types/node": "^6.0.45"
},
"devDependencies": {
"typescript": "^2.0.3",
"vscode": "^1.0.0",
"@types/node": "^6.0.45"
},
"compilerOptions": {
"types": [
"node"
]
},
"scripts": {
"vscode:prepublish": "tsc -p ./",
"compile": "tsc -p ./",
"postinstall": "node ./node_modules/vscode/bin/install"
},
"license": "MIT",
"publisher": "Loki",
"categories": [
"Languages",
"Snippets",
"Other"
],
"engines": {
"vscode": "^1.8.0"
},
"keywords": [
"BibTeX",
"LaTeX",
"TeX"
],
"contributes": {
"languages": [
{
"id": "bibtex",
"aliases": [ "BibTeX" ],
"extensions": [ ".bib" ],
"configuration": "./settings/BibTeX-configuration.json"
},
{
"id": "latex",
"aliases": [ "LaTeX" ],
"extensions": [ "bbx", "cbx", "cls", "ltx", "lco", "sty", "tex", "tikz" ],
"configuration": "./settings/LaTeX-configuration.json"
},
{
"id": "tex",
"aliases": [ "TeX" ],
"extensions": [ "dtx", "ins" ],
"configuration": "./settings/TeX-configuration.json"
}
],
"grammars": [
{
"language": "bibtex",
"scopeName": "text.bibtex",
"path": "./grammars/BibTeX.json"
},
{
"language": "latex",
"scopeName": "text.tex.latex",
"path": "./grammars/LaTeX.json"
},
{
"language": "tex",
"scopeName": "text.tex",
"path": "./grammars/TeX.json"
}
],
"snippets": [
{
"language": "latex",
"path": "./snippets/LaTeX.json"
}
]
},
"__metadata": {
"id": "LaTeX",
"publisherId": "Loki",
"publisherDisplayName": "Loki"
}
}

View File

@ -0,0 +1,29 @@
{
"comments": {
"lineComment": "%"
},
"brackets": [
["{", "}"],
["[", "]"],
["(", ")"]
],
"autoClosingPairs": [
["{", "}"],
["[", "]"],
["(", ")"],
["$", "$"],
["`", "'"]
],
"surroundingPairs": [
["{", "}"],
["[", "]"],
["(", ")"],
["\"", "\""],
["'", "'"],
["`", "'"],
["$", "$"]
],
"folding": {
"offSide": "true"
}
}

View File

@ -0,0 +1,33 @@
{
"comments": {
"lineComment": "%"
},
"brackets": [
["{", "}"],
["[", "]"],
["(", ")"]
],
"autoClosingPairs": [
["{", "}"],
["[", "]"],
["(", ")"],
["$", "$"],
["`", "'"]
],
"surroundingPairs": [
["{", "}"],
["[", "]"],
["(", ")"],
["\"", "\""],
["'", "'"],
["`", "'"],
["$", "$"]
],
"folding": {
"offSide": "true",
"markers": {
"start": "^\\s*%Region\\b",
"end": "^\\s*%Endregion\\b"
}
}
}

View File

@ -0,0 +1,29 @@
{
"comments": {
"lineComment": "%"
},
"brackets": [
["{", "}"],
["[", "]"],
["(", ")"]
],
"autoClosingPairs": [
["{", "}"],
["[", "]"],
["(", ")"],
["$", "$"],
["`", "'"]
],
"surroundingPairs": [
["{", "}"],
["[", "]"],
["(", ")"],
["\"", "\""],
["'", "'"],
["`", "'"],
["$", "$"]
],
"folding": {
"offSide": "true"
}
}

38
snippets/LaTeX.json Normal file
View File

@ -0,0 +1,38 @@
{
"begin-end": {
"prefix": "\\begin",
"body": [
"\\begin{${1:displaymath}}",
"\t$0",
"\\end{$1}"
],
"description": "A Begin/End Block"
},
"environment_tikz": {
"prefix": "environment_tikz",
"body": [
"\\begin{figure}[h!]",
"\t\\begin{center}",
"\t\t\\begin{tikzpicture}[scale=1]",
"\t\t\t$0",
"\t\t\\end{tikzpicture}",
"\t\\caption{$1}",
"\t\\end{center}",
"\t\\label{fig:$2}",
"\\end{figure}"
],
"description": "The \"TeX Ist Kein Zeichnprogram\" environment\nNeeds \\usepackage{tikz}"
},
"environment_figure": {
"prefix": "environment_figure",
"body": [
"\\begin{figure}[]",
"\t\\centering",
"\t\\includegraphics{$1}",
"\t\\label{fig:$2}",
"\t\\caption{$0}",
"\\end{figure}"
],
"description": "The figure environment"
}
}

10533
snippets/SYMLIST.txt Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,290 @@
import * as vscode from 'vscode';
import {latex_types} from '../dictionary/symbol_types';
import text_symbols from '../dictionary/text_symbols';
import math_symbols from '../dictionary/math_symbols';
import package_symbols from '../dictionary/package_symbols';
import environment_symbols from '../dictionary/environment_symbols';
import tikz_symbols from '../dictionary/tikz_symbols';
import parameter_dictionary from '../dictionary/parameter_dictionary';
function convertToItemKind(type: latex_types): vscode.CompletionItemKind {
if (latex_types.symbol) {
return vscode.CompletionItemKind.Variable;
} else if (latex_types.function) {
return vscode.CompletionItemKind.Function;
} else if (latex_types.environment) {
return vscode.CompletionItemKind.Interface;
} else if (latex_types.package) {
return vscode.CompletionItemKind.Module;
} else if (latex_types.keyword) {
return vscode.CompletionItemKind.Keyword;
} else if (latex_types.parameter) {
return vscode.CompletionItemKind.Value;
} else if (latex_types.snippet) {
return vscode.CompletionItemKind.Snippet;
}
return vscode.CompletionItemKind.Property;
}
function fillSymbols(symbolsCollection: vscode.CompletionItem[], symbolsDefinition: Object): void {
for (var key in symbolsDefinition) {
var sym_def = symbolsDefinition[key];
var item = new vscode.CompletionItem(key, convertToItemKind(sym_def.kind));
if (sym_def.detail) {
item.detail = sym_def.detail;
}
if (sym_def.documentation) {
item.documentation = sym_def.documentation;
}
if (sym_def.insertText) {
if (sym_def.insertText.indexOf("$") > -1) {
item.insertText = new vscode.SnippetString(sym_def.insertText);
} else {
item.insertText = sym_def.insertText;
}
}
symbolsCollection.push(item);
}
}
export default class Provider implements vscode.CompletionItemProvider {
// protected name: string;
private text_symbols: vscode.CompletionItem[];
private math_symbols: vscode.CompletionItem[];
private package_symbols: vscode.CompletionItem[];
private environment_symbols: vscode.CompletionItem[];
private tikz_symbols: vscode.CompletionItem[];
private parameter_dictionary: Object;
constructor() {
// initialize Collections
this.text_symbols = new Array<vscode.CompletionItem>();
this.math_symbols = new Array<vscode.CompletionItem>();
this.package_symbols = new Array<vscode.CompletionItem>();
this.environment_symbols = new Array<vscode.CompletionItem>();
this.tikz_symbols = new Array<vscode.CompletionItem>();
// fill the collections from the LaTeX symbols definitions
fillSymbols(this.text_symbols, text_symbols);
fillSymbols(this.math_symbols, math_symbols);
fillSymbols(this.package_symbols, package_symbols);
fillSymbols(this.environment_symbols, environment_symbols);
fillSymbols(this.tikz_symbols, tikz_symbols);
this.parameter_dictionary = parameter_dictionary;
}
dispose() { }
private isInlinemath(line: string, position: vscode.Position): boolean {
var count = 0;
for (var i = 0; i < line.length; i++) {
if (line[i] === "$") {
count++;
}
}
return count % 2 ? true : false;
}
private getEnvironmentType(document: vscode.TextDocument, position: vscode.Position): string {
var line = document.lineAt(position);
if (line.isEmptyOrWhitespace ? false : this.isInlinemath(line.text.substring(0, position.character), position)) {
return "math";
}
var environment_references = {
"displaymath": "math", "equation": "math", "eqnarray": "math", "align": "math", "align*": "math",
"multline": "math", "multline*": "math", "gather": "math", "gather*": "math", "split": "math", "split*": "math",
"tikzpicture": "tikz"
};
var begin_index = -1;
var end_index = -1;
var environment;
for (var i = position.line; i >= 0; i--) { // iterate over lines from the current line (position) to the top of he document
line = document.lineAt(i); // get line with linenumber i (0 based)
if (line.isEmptyOrWhitespace) { continue; } // consistency check
var line_text = line.text; // get the current line as string
while (line_text.length > 6) { // More then "\\end{" and "}" characters are neccessary for a usefull accessment
begin_index = line_text.lastIndexOf("\\begin{");
end_index = line_text.lastIndexOf("\\end{");
if (begin_index > end_index) {
let environment = line_text.substring(begin_index + 7, line_text.indexOf("}", begin_index + 7));
if (environment_references.hasOwnProperty(environment)) {
return environment_references[environment];
}
} else if (end_index > begin_index) {
let environment = line_text.substring(end_index + 5, line_text.indexOf("}", end_index + 5));
if (environment_references.hasOwnProperty(environment)) {
return null;
}
} else {
break;
}
line_text = line_text.substring(0, begin_index > end_index ? begin_index : end_index);
}
}
return null;
}
private searchAndCreateParameterSymbols(line_before_pos: string): vscode.CompletionItem[] {
for (var key in this.parameter_dictionary) {
if (line_before_pos.endsWith(key)) {
var completionItems = new Array<vscode.CompletionItem>();
fillSymbols(completionItems, this.parameter_dictionary[key]);
return completionItems;
}
}
return [];
}
/**
* @param symbol_label NOT Used
* @param position NOT Used
*/
private searchAndCreateLableSymbols(document: vscode.TextDocument, symbol_label: string, position: vscode.Position): vscode.CompletionItem[] {
var completionItems = new Array<vscode.CompletionItem>();
for (var i = 0; i < document.lineCount; i++) {
var line = document.lineAt(i);
if (line.isEmptyOrWhitespace) { continue; }
var line_text = line.text;
var index_start = line_text.indexOf("\\label{") + 7; // add 7 to considure the length of "\label{"
if (index_start > 6) { // index_start returns > -1 iff substring was found, adding 7 => 6
var index_end = line_text.indexOf("}", index_start);
if (index_end > -1) {
completionItems.push(new vscode.CompletionItem(
line_text.substring(index_start, index_end), // label
vscode.CompletionItemKind.Reference // kind
));
}
}
}
return completionItems;
}
private filterSymbols(symbolsCollection: vscode.CompletionItem[], match: string, position: vscode.Position): vscode.CompletionItem[] {
var filtert_symbols = new Array<vscode.CompletionItem>();
var range = new vscode.Range(new vscode.Position(position.line, position.character - match.length), position);
for (var i = 0; i < symbolsCollection.length; i++) {
var item = symbolsCollection[i];
var clonedItem;
if (item.label.includes(match)) {
clonedItem = new vscode.CompletionItem(item.label, item.kind);
if (item.documentation) {
clonedItem.documentation = item.documentation;
}
if (item.insertText) {
clonedItem.insertText = item.insertText;
}
clonedItem.range = range;
clonedItem.filterText = match;
clonedItem.sortText = item.label.indexOf(match) + item.label;
filtert_symbols.push(clonedItem);
}
}
return filtert_symbols;
}
// private categoriesAndFilterSymbols(document: vscode.TextDocument, line: string, position: vscode.Position): vscode.CompletionItem[] {
// var index;
// if ((index = line.lastIndexOf("\\")) > -1) {
// line = line.substring(index + 1, position.character);
// if (line.startsWith("begin{")) {
// return this.filterSymbols(this.environment_symbols, line.substring(6, line.length), position);
// } else if (line.startsWith("end{")) {
// return this.filterSymbols(this.environment_symbols, line.substring(4, line.length), position);
// } else {
// switch (this.getEnvironmentType(document, position)) {
// case "math":
// return this.filterSymbols(this.math_symbols, line, position);
// case "tikz":
// return this.filterSymbols(this.tikz_symbols, line, position);
// default:
// return this.filterSymbols(this.text_symbols, line, position);
// }
// }
// }
// return [];
// }
provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken) : vscode.CompletionItem[] {
var line = document.lineAt(position);
if (line.isEmptyOrWhitespace) {
return [];
}
var line_text = line.text;
var line_before_pos = line_text.substring(0, position.character).trim();
// if (line_before_pos.endsWith("\\")) {
// if (this.isInlinemath(line_before_pos, position)) {
// return this.math_symbols;
// } else {
// switch (this.getEnvironmentType(document, position)) {
// case "math":
// return this.math_symbols;
// case "tikz":
// return this.tikz_symbols;
// default:
// return this.text_symbols;
// }
// }
// } else if (line_before_pos.endsWith("{")) {
// if (line_before_pos.endsWith("\\begin{") || line_before_pos.endsWith("\\end{")) {
// return this.environment_symbols;
// } else if (line_before_pos.endsWith("\\usepackage{")) { // get package names for usepackage function
// return this.package_symbols;
// } else if (line_before_pos.endsWith("\\ref{") || line_before_pos.endsWith("\\eqref{") || line_before_pos.endsWith("\\pageref{")) {
// return searchAndCreateLableSymbols(document);
// }
// } else if (line_before_pos.endsWith("[")) {
// return this.searchAndCreateParameterSymbols(line_before_pos.substring(0, line_before_pos.length - 1));
// } else {
// return this.categoriesAndFilterSymbols(document, line_before_pos, position);
// }
var start_index: number;
var end_index: number;
var symbol_label: string;
if ((start_index = line_before_pos.lastIndexOf("\\") + 1) > 0) {
if ((end_index = line_before_pos.indexOf("{", start_index)) > -1) {
symbol_label = line_before_pos.substring(start_index, end_index - 1);
switch (symbol_label) {
case "begin":
case "end":
return this.filterSymbols(this.environment_symbols, symbol_label, position);
case "ref":
case "eqref":
case "pageref":
return this.searchAndCreateLableSymbols(document, symbol_label, position);
case "usepackage":
return this.filterSymbols(this.package_symbols, symbol_label, position);
default:
switch (this.getEnvironmentType(document, position)) {
case "math":
return this.filterSymbols(this.math_symbols, symbol_label, position);
case "tikz":
return this.filterSymbols(this.tikz_symbols, symbol_label, position);
default:
return this.filterSymbols(this.text_symbols, symbol_label, position);
}
}
// if (line_before_pos.startsWith("begin{")) {
// } else if (line_before_pos.startsWith("end{")) {
// return this.filterSymbols(this.environment_symbols, line_before_pos.substring(4, line_before_pos.length), position);
// } else if (line_before_pos.endsWith("ref{") || line_before_pos.endsWith("eqref{") || line_before_pos.endsWith("pageref{")) {
// }
// } else if ((end_index = line_before_pos.indexOf("[")) > -1) {
// return [];
// }
// else {
// switch (this.getEnvironmentType(document, position)) {
// case "math":
// return this.filterSymbols(this.math_symbols, line_before_pos, position);
// case "tikz":
// return this.filterSymbols(this.tikz_symbols, line_before_pos, position);
// default:
// return this.filterSymbols(this.text_symbols, line_before_pos, position);
// }
}
}
return [];
}
}

15
src/extension.ts Normal file
View File

@ -0,0 +1,15 @@
// The module 'vscode' contains the VS Code extensibility API
// Import the module and reference it with the alias vscode in your code below
import * as vscode from 'vscode';
import CompletionItemProvider from './completionItemProvider';
// this method is called when your extension is activated
// your extension is activated the very first time the command is executed
export function activate(context: vscode.ExtensionContext) {
// Register the Completion Item Provider
context.subscriptions.push(vscode.languages.registerCompletionItemProvider(
[{ language: 'latex'}], // document selector
new CompletionItemProvider(), // A Complete Item Provider instance
'\\', '{', '[' //, '=' // Characters to trigger an completion suggestion
));
}

15
tsconfig.json Normal file
View File

@ -0,0 +1,15 @@
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"outDir": "out",
"lib": [
"es6"
],
"sourceMap": true,
"rootDir": "."
},
"exclude": [
"node_modules"
]
}