LaTeX: Make the `toplevel_sectioning` setting optional in LaTeX theme

This commit is contained in:
Takeshi KOMIYA 2020-04-04 11:25:34 +09:00
parent e666a85cf3
commit bc1387cabb
2 changed files with 21 additions and 9 deletions

View File

@ -13,6 +13,8 @@ Deprecated
Features added Features added
-------------- --------------
* LaTeX: Make the ``toplevel_sectioning`` setting optional in LaTeX theme
Bugs fixed Bugs fixed
---------- ----------

View File

@ -66,19 +66,29 @@ class BuiltInTheme(Theme):
class UserTheme(Theme): class UserTheme(Theme):
"""A user defined LaTeX theme.""" """A user defined LaTeX theme."""
REQUIRED_CONFIG_KEYS = ['docclass', 'wrapperclass']
OPTIONAL_CONFIG_KEYS = ['toplevel_sectioning']
def __init__(self, name: str, filename: str) -> None: def __init__(self, name: str, filename: str) -> None:
self.name = name super().__init__(name)
self.config = configparser.RawConfigParser() self.config = configparser.RawConfigParser()
self.config.read(path.join(filename)) self.config.read(path.join(filename))
try: for key in self.REQUIRED_CONFIG_KEYS:
self.docclass = self.config.get('theme', 'docclass') try:
self.wrapperclass = self.config.get('theme', 'wrapperclass') value = self.config.get('theme', key)
self.toplevel_sectioning = self.config.get('theme', 'toplevel_sectioning') setattr(self, key, value)
except configparser.NoSectionError: except configparser.NoSectionError:
raise ThemeError(__('%r doesn\'t have "theme" setting') % filename) raise ThemeError(__('%r doesn\'t have "theme" setting') % filename)
except configparser.NoOptionError as exc: except configparser.NoOptionError as exc:
raise ThemeError(__('%r doesn\'t have "%s" setting') % (filename, exc.args[0])) raise ThemeError(__('%r doesn\'t have "%s" setting') % (filename, exc.args[0]))
for key in self.OPTIONAL_CONFIG_KEYS:
try:
value = self.config.get('theme', key)
setattr(self, key, value)
except configparser.NoOptionError:
pass
class ThemeFactory: class ThemeFactory: