latex.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. /*
  2. Language: LaTeX
  3. Author: Vladimir Moskva <vladmos@gmail.com>
  4. Website: https://www.latex-project.org
  5. Category: markup
  6. */
  7. function latex(hljs) {
  8. var COMMAND = {
  9. className: 'tag',
  10. begin: /\\/,
  11. relevance: 0,
  12. contains: [
  13. {
  14. className: 'name',
  15. variants: [
  16. {begin: /[a-zA-Z\u0430-\u044f\u0410-\u042f]+[*]?/},
  17. {begin: /[^a-zA-Z\u0430-\u044f\u0410-\u042f0-9]/}
  18. ],
  19. starts: {
  20. endsWithParent: true,
  21. relevance: 0,
  22. contains: [
  23. {
  24. className: 'string', // because it looks like attributes in HTML tags
  25. variants: [
  26. {begin: /\[/, end: /\]/},
  27. {begin: /\{/, end: /\}/}
  28. ]
  29. },
  30. {
  31. begin: /\s*=\s*/, endsWithParent: true,
  32. relevance: 0,
  33. contains: [
  34. {
  35. className: 'number',
  36. begin: /-?\d*\.?\d+(pt|pc|mm|cm|in|dd|cc|ex|em)?/
  37. }
  38. ]
  39. }
  40. ]
  41. }
  42. }
  43. ]
  44. };
  45. return {
  46. name: 'LaTeX',
  47. aliases: ['tex'],
  48. contains: [
  49. COMMAND,
  50. {
  51. className: 'formula',
  52. contains: [COMMAND],
  53. relevance: 0,
  54. variants: [
  55. {begin: /\$\$/, end: /\$\$/},
  56. {begin: /\$/, end: /\$/}
  57. ]
  58. },
  59. hljs.COMMENT(
  60. '%',
  61. '$',
  62. {
  63. relevance: 0
  64. }
  65. )
  66. ]
  67. };
  68. }
  69. module.exports = latex;