diff --git a/lib/configure.py b/lib/configure.py index 3a08c76232..921665be69 100644 --- a/lib/configure.py +++ b/lib/configure.py @@ -1150,8 +1150,8 @@ def processLayoutFile(file, bool_docbook): return x.strip() classname = file.split(os.sep)[-1].split('.')[0] # return ('LaTeX', '[a,b]', 'a', ',b,c', 'article') for \DeclareLaTeXClass[a,b,c]{article} - p = re.compile(r'\Declare(LaTeX|DocBook)Class\s*(\[([^,]*)(,.*)*\])*\s*{(.*)}') - q = re.compile(r'\DeclareCategory{(.*)}') + p = re.compile(r'^\s*#\s*\\Declare(LaTeX|DocBook)Class\s*(\[([^,]*)(,.*)*\])*\s*{(.*)}\s*$') + q = re.compile(r'^\s*#\s*\\DeclareCategory{(.*)}\s*$') classdeclaration = "" categorydeclaration = '""' for line in open(file).readlines(): @@ -1246,8 +1246,8 @@ def checkLatexConfig(check_config, bool_docbook): # Construct the list of classes to test for. # build the list of available layout files and convert it to commands # for chkconfig.ltx - declare = re.compile(r'\Declare(LaTeX|DocBook)Class\s*(\[([^,]*)(,.*)*\])*\s*{(.*)}') - category = re.compile(r'\DeclareCategory{(.*)}') + declare = re.compile(r'^\s*#\s*\\Declare(LaTeX|DocBook)Class\s*(\[([^,]*)(,.*)*\])*\s*{(.*)}\s*$') + category = re.compile(r'^\s*#\s*\\DeclareCategory{(.*)}\s*$') empty = re.compile(r'^\s*$') testclasses = list() for file in glob.glob( os.path.join('layouts', '*.layout') ) + \ diff --git a/src/LayoutFile.cpp b/src/LayoutFile.cpp index 8ec7474a0a..26dfa849c7 100644 --- a/src/LayoutFile.cpp +++ b/src/LayoutFile.cpp @@ -287,9 +287,9 @@ LayoutFileIndex LayoutFileList::addLocalLayout( // which uses the following regex // \Declare(LaTeX|DocBook)Class\s*(\[([^,]*)(,.*)*\])*\s*{(.*)} ifstream ifs(layout_file.toFilesystemEncoding().c_str()); - static regex const reg("^#\\s*\\\\Declare(LaTeX|DocBook)Class\\s*" + static regex const reg("^\\s*#\\s*\\\\Declare(LaTeX|DocBook)Class\\s*" "(?:\\[([^,]*)(?:,.*)*\\])*\\s*\\{(.*)\\}\\s*"); - static regex const catreg("^#\\s*\\\\DeclareCategory\\{(.*)\\}"); + static regex const catreg("^\\s*#\\s*\\\\DeclareCategory\\{(.*)\\}\\s*"); string line; string class_name; string class_prereq; diff --git a/status.21x b/status.21x index 1aaca2e5ea..e927ed64d5 100644 --- a/status.21x +++ b/status.21x @@ -80,6 +80,9 @@ What's new * INTERNALS +- Fix parsing problems of class and category declaration line in layout files + that could break the textclass detection (bug 9746). + * DOCUMENTATION AND LOCALIZATION