diff --git a/services/web/frontend/js/features/source-editor/extensions/visual/atomic-decorations.ts b/services/web/frontend/js/features/source-editor/extensions/visual/atomic-decorations.ts index 118bf44464..9eb0378a91 100644 --- a/services/web/frontend/js/features/source-editor/extensions/visual/atomic-decorations.ts +++ b/services/web/frontend/js/features/source-editor/extensions/visual/atomic-decorations.ts @@ -217,6 +217,14 @@ export const atomicDecorations = (options: Options) => { preamble.authors.push({ node, content }) preamble.to = nodeRef.node.to } + } else if ( + nodeRef.node.type.is('Affil') || + nodeRef.node.type.is('Affiliation') + ) { + const node = nodeRef.node.getChild('TextArgument') + if (node) { + preamble.to = nodeRef.node.to + } } if (nodeRef.type.is('$Environment')) { diff --git a/services/web/frontend/js/features/source-editor/languages/latex/latex-language.ts b/services/web/frontend/js/features/source-editor/languages/latex/latex-language.ts index a134bdbe8e..54812124af 100644 --- a/services/web/frontend/js/features/source-editor/languages/latex/latex-language.ts +++ b/services/web/frontend/js/features/source-editor/languages/latex/latex-language.ts @@ -178,6 +178,9 @@ export const LaTeXLanguage = LRLanguage.define({ Comment: t.comment, 'UsePackage/OptionalArgument/ShortOptionalArg/Normal': t.attributeValue, 'UsePackage/ShortTextArgument/ShortArg/Normal': t.tagName, + 'Affiliation/OptionalArgument/ShortOptionalArg/Normal': + t.attributeValue, + 'Affil/OptionalArgument/ShortOptionalArg/Normal': t.attributeValue, 'LiteralArgContent VerbContent VerbatimContent LstInlineContent': t.string, 'NewCommand/LiteralArgContent': t.typeName, diff --git a/services/web/frontend/js/features/source-editor/lezer-latex/latex.grammar b/services/web/frontend/js/features/source-editor/lezer-latex/latex.grammar index 285b53a982..ff5c9830ee 100644 --- a/services/web/frontend/js/features/source-editor/lezer-latex/latex.grammar +++ b/services/web/frontend/js/features/source-editor/lezer-latex/latex.grammar @@ -88,6 +88,8 @@ BibliographyCtrlSeq, BibliographyStyleCtrlSeq, AuthorCtrlSeq, + AffilCtrlSeq, + AffiliationCtrlSeq, MaketitleCtrlSeq, TextColorCtrlSeq, ColorBoxCtrlSeq, @@ -241,6 +243,12 @@ KnownCommand { Author { AuthorCtrlSeq optionalWhitespace? OptionalArgument? optionalWhitespace? TextArgument } | + Affil { + AffilCtrlSeq optionalWhitespace? OptionalArgument? optionalWhitespace? TextArgument + } | + Affiliation { + AffiliationCtrlSeq optionalWhitespace? OptionalArgument? optionalWhitespace? TextArgument + } | DocumentClass { DocumentClassCtrlSeq optionalWhitespace? OptionalArgument? DocumentClassArgument { ShortTextArgument } diff --git a/services/web/frontend/js/features/source-editor/lezer-latex/tokens.mjs b/services/web/frontend/js/features/source-editor/lezer-latex/tokens.mjs index a00f8b2d2f..a58e15b8ef 100644 --- a/services/web/frontend/js/features/source-editor/lezer-latex/tokens.mjs +++ b/services/web/frontend/js/features/source-editor/lezer-latex/tokens.mjs @@ -24,6 +24,8 @@ import { HboxCtrlSeq, TitleCtrlSeq, AuthorCtrlSeq, + AffilCtrlSeq, + AffiliationCtrlSeq, DocumentClassCtrlSeq, UsePackageCtrlSeq, HrefCtrlSeq, @@ -589,6 +591,8 @@ const otherKnowncommands = { '\\hbox': HboxCtrlSeq, '\\title': TitleCtrlSeq, '\\author': AuthorCtrlSeq, + '\\affil': AffilCtrlSeq, + '\\affiliation': AffiliationCtrlSeq, '\\documentclass': DocumentClassCtrlSeq, '\\usepackage': UsePackageCtrlSeq, '\\href': HrefCtrlSeq,