CoolFace
Datasetpublic

basant307/AI_Governance_Project

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes48downloads
latex.js279 linesDownload Raw Back to languages
1/*2Language: LaTeX3Author: Benedikt Wilde <bwilde@posteo.de>4Website: https://www.latex-project.org5Category: markup6*/7 8/** @type LanguageFn */9function latex(hljs) {10  const regex = hljs.regex;11  const KNOWN_CONTROL_WORDS = regex.either(...[12    '(?:NeedsTeXFormat|RequirePackage|GetIdInfo)',13    'Provides(?:Expl)?(?:Package|Class|File)',14    '(?:DeclareOption|ProcessOptions)',15    '(?:documentclass|usepackage|input|include)',16    'makeat(?:letter|other)',17    'ExplSyntax(?:On|Off)',18    '(?:new|renew|provide)?command',19    '(?:re)newenvironment',20    '(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand',21    '(?:New|Renew|Provide|Declare)DocumentEnvironment',22    '(?:(?:e|g|x)?def|let)',23    '(?:begin|end)',24    '(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)',25    'caption',26    '(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)',27    '(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)',28    '(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)',29    '(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)',30    '(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)',31    '(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)'32  ].map(word => word + '(?![a-zA-Z@:_])'));33  const L3_REGEX = new RegExp([34    // A function \module_function_name:signature or \__module_function_name:signature,35    // where both module and function_name need at least two characters and36    // function_name may contain single underscores.37    '(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*',38    // A variable \scope_module_and_name_type or \scope__module_ane_name_type,39    // where scope is one of l, g or c, type needs at least two characters40    // and module_and_name may contain single underscores.41    '[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}',42    // A quark \q_the_name or \q__the_name or43    // scan mark \s_the_name or \s__vthe_name,44    // where variable_name needs at least two characters and45    // may contain single underscores.46    '[qs]__?[a-zA-Z](?:_?[a-zA-Z])+',47    // Other LaTeX3 macro names that are not covered by the three rules above.48    'use(?:_i)?:[a-zA-Z]*',49    '(?:else|fi|or):',50    '(?:if|cs|exp):w',51    '(?:hbox|vbox):n',52    '::[a-zA-Z]_unbraced',53    '::[a-zA-Z:]'54  ].map(pattern => pattern + '(?![a-zA-Z:_])').join('|'));55  const L2_VARIANTS = [56    { begin: /[a-zA-Z@]+/ }, // control word57    { begin: /[^a-zA-Z@]?/ } // control symbol58  ];59  const DOUBLE_CARET_VARIANTS = [60    { begin: /\^{6}[0-9a-f]{6}/ },61    { begin: /\^{5}[0-9a-f]{5}/ },62    { begin: /\^{4}[0-9a-f]{4}/ },63    { begin: /\^{3}[0-9a-f]{3}/ },64    { begin: /\^{2}[0-9a-f]{2}/ },65    { begin: /\^{2}[\u0000-\u007f]/ }66  ];67  const CONTROL_SEQUENCE = {68    className: 'keyword',69    begin: /\\/,70    relevance: 0,71    contains: [72      {73        endsParent: true,74        begin: KNOWN_CONTROL_WORDS75      },76      {77        endsParent: true,78        begin: L3_REGEX79      },80      {81        endsParent: true,82        variants: DOUBLE_CARET_VARIANTS83      },84      {85        endsParent: true,86        relevance: 0,87        variants: L2_VARIANTS88      }89    ]90  };91  const MACRO_PARAM = {92    className: 'params',93    relevance: 0,94    begin: /#+\d?/95  };96  const DOUBLE_CARET_CHAR = {97    // relevance: 198    variants: DOUBLE_CARET_VARIANTS };99  const SPECIAL_CATCODE = {100    className: 'built_in',101    relevance: 0,102    begin: /[$&^_]/103  };104  const MAGIC_COMMENT = {105    className: 'meta',106    begin: /% ?!(T[eE]X|tex|BIB|bib)/,107    end: '$',108    relevance: 10109  };110  const COMMENT = hljs.COMMENT(111    '%',112    '$',113    { relevance: 0 }114  );115  const EVERYTHING_BUT_VERBATIM = [116    CONTROL_SEQUENCE,117    MACRO_PARAM,118    DOUBLE_CARET_CHAR,119    SPECIAL_CATCODE,120    MAGIC_COMMENT,121    COMMENT122  ];123  const BRACE_GROUP_NO_VERBATIM = {124    begin: /\{/,125    end: /\}/,126    relevance: 0,127    contains: [128      'self',129      ...EVERYTHING_BUT_VERBATIM130    ]131  };132  const ARGUMENT_BRACES = hljs.inherit(133    BRACE_GROUP_NO_VERBATIM,134    {135      relevance: 0,136      endsParent: true,137      contains: [138        BRACE_GROUP_NO_VERBATIM,139        ...EVERYTHING_BUT_VERBATIM140      ]141    }142  );143  const ARGUMENT_BRACKETS = {144    begin: /\[/,145    end: /\]/,146    endsParent: true,147    relevance: 0,148    contains: [149      BRACE_GROUP_NO_VERBATIM,150      ...EVERYTHING_BUT_VERBATIM151    ]152  };153  const SPACE_GOBBLER = {154    begin: /\s+/,155    relevance: 0156  };157  const ARGUMENT_M = [ ARGUMENT_BRACES ];158  const ARGUMENT_O = [ ARGUMENT_BRACKETS ];159  const ARGUMENT_AND_THEN = function(arg, starts_mode) {160    return {161      contains: [ SPACE_GOBBLER ],162      starts: {163        relevance: 0,164        contains: arg,165        starts: starts_mode166      }167    };168  };169  const CSNAME = function(csname, starts_mode) {170    return {171      begin: '\\\\' + csname + '(?![a-zA-Z@:_])',172      keywords: {173        $pattern: /\\[a-zA-Z]+/,174        keyword: '\\' + csname175      },176      relevance: 0,177      contains: [ SPACE_GOBBLER ],178      starts: starts_mode179    };180  };181  const BEGIN_ENV = function(envname, starts_mode) {182    return hljs.inherit(183      {184        begin: '\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{' + envname + '\\})',185        keywords: {186          $pattern: /\\[a-zA-Z]+/,187          keyword: '\\begin'188        },189        relevance: 0,190      },191      ARGUMENT_AND_THEN(ARGUMENT_M, starts_mode)192    );193  };194  const VERBATIM_DELIMITED_EQUAL = (innerName = "string") => {195    return hljs.END_SAME_AS_BEGIN({196      className: innerName,197      begin: /(.|\r?\n)/,198      end: /(.|\r?\n)/,199      excludeBegin: true,200      excludeEnd: true,201      endsParent: true202    });203  };204  const VERBATIM_DELIMITED_ENV = function(envname) {205    return {206      className: 'string',207      end: '(?=\\\\end\\{' + envname + '\\})'208    };209  };210 211  const VERBATIM_DELIMITED_BRACES = (innerName = "string") => {212    return {213      relevance: 0,214      begin: /\{/,215      starts: {216        endsParent: true,217        contains: [218          {219            className: innerName,220            end: /(?=\})/,221            endsParent: true,222            contains: [223              {224                begin: /\{/,225                end: /\}/,226                relevance: 0,227                contains: [ "self" ]228              }229            ],230          }231        ]232      }233    };234  };235  const VERBATIM = [236    ...[237      'verb',238      'lstinline'239    ].map(csname => CSNAME(csname, { contains: [ VERBATIM_DELIMITED_EQUAL() ] })),240    CSNAME('mint', ARGUMENT_AND_THEN(ARGUMENT_M, { contains: [ VERBATIM_DELIMITED_EQUAL() ] })),241    CSNAME('mintinline', ARGUMENT_AND_THEN(ARGUMENT_M, { contains: [242      VERBATIM_DELIMITED_BRACES(),243      VERBATIM_DELIMITED_EQUAL()244    ] })),245    CSNAME('url', { contains: [246      VERBATIM_DELIMITED_BRACES("link"),247      VERBATIM_DELIMITED_BRACES("link")248    ] }),249    CSNAME('hyperref', { contains: [ VERBATIM_DELIMITED_BRACES("link") ] }),250    CSNAME('href', ARGUMENT_AND_THEN(ARGUMENT_O, { contains: [ VERBATIM_DELIMITED_BRACES("link") ] })),251    ...[].concat(...[252      '',253      '\\*'254    ].map(suffix => [255      BEGIN_ENV('verbatim' + suffix, VERBATIM_DELIMITED_ENV('verbatim' + suffix)),256      BEGIN_ENV('filecontents' + suffix, ARGUMENT_AND_THEN(ARGUMENT_M, VERBATIM_DELIMITED_ENV('filecontents' + suffix))),257      ...[258        '',259        'B',260        'L'261      ].map(prefix =>262        BEGIN_ENV(prefix + 'Verbatim' + suffix, ARGUMENT_AND_THEN(ARGUMENT_O, VERBATIM_DELIMITED_ENV(prefix + 'Verbatim' + suffix)))263      )264    ])),265    BEGIN_ENV('minted', ARGUMENT_AND_THEN(ARGUMENT_O, ARGUMENT_AND_THEN(ARGUMENT_M, VERBATIM_DELIMITED_ENV('minted')))),266  ];267 268  return {269    name: 'LaTeX',270    aliases: [ 'tex' ],271    contains: [272      ...VERBATIM,273      ...EVERYTHING_BUT_VERBATIM274    ]275  };276}277 278export { latex as default };279 
basant307/AI_Governance_Project · CoolFace