]> git.scottworley.com Git - paperdoorknob/blobdiff - args.py
texfilter to work around \emph nesting issue
[paperdoorknob] / args.py
diff --git a/args.py b/args.py
index d90de8a78b7e32207c66fe6ee19d7939de634483..384e4487b76bfb918f7316dee8604276f92e1cc5 100644 (file)
--- a/args.py
+++ b/args.py
@@ -15,8 +15,10 @@ from xdg_base_dirs import xdg_cache_home
 
 from domfilter import ApplyDOMFilters, DOMFilters
 from fetch import CachingFetcher
+from glowfic import BesideIconLayout, BelowIconLayout, Layout
 from htmlfilter import ApplyHTMLFilters, HTMLFilters
-from images import ImageStore
+from texfilter import ApplyTexFilters, TexFilters
+from images import DiskImageStore
 from spec import Spec
 from texify import PandocTexifier
 
@@ -43,12 +45,25 @@ See https://faculty.bard.edu/bloch/geometry.pdf for details
         '--htmlfilters',
         help='Which HTML filters to use (default: %(default)s)',
         default=','.join(f[0] for f in HTMLFilters))
+    parser.add_argument(
+        '--image_size',
+        help='How large the icon images are, in mm',
+        default=20)
+    parser.add_argument(
+        '--layout',
+        default='below',
+        help='Whether to put character and author information `beside` or `below` the icon ' +
+             '(default: below)')
     parser.add_argument(
         '--out',
         help='The filename stem at which to write output ' +
              '(eg: "%(default)s" produces %(default)s.tex, %(default)s.pdf, etc.)',
         default='book')
     parser.add_argument('--pandoc', help='Location of the pandoc executable')
+    parser.add_argument(
+        '--texfilters',
+        help='Which TeX filters to use (default: %(default)s)',
+        default=','.join(f[0] for f in TexFilters))
     parser.add_argument(
         '--timeout',
         help='How long to wait for HTTP requests, in seconds',
@@ -62,14 +77,23 @@ See https://faculty.bard.edu/bloch/geometry.pdf for details
 @contextmanager
 def spec_from_commandline_args() -> Iterator[Spec]:
     args = _command_line_parser().parse_args()
+    texifier = PandocTexifier(args.pandoc or 'pandoc')
+    layout: Layout
+    if args.layout == 'below':
+        layout = BelowIconLayout(texifier, args.image_size)
+    elif args.layout == 'beside':
+        layout = BesideIconLayout(texifier, args.image_size)
+    else:
+        raise ValueError(f'Unknown layout: {args.layout}')
     with CachingFetcher(args.cache_path, args.timeout) as fetcher:
         with open(args.out + '.tex', 'wb') as texout:
             yield Spec(
                 args.url,
                 fetcher,
-                ImageStore(args.out + '_images', fetcher),
+                DiskImageStore(args.out + '_images', fetcher),
                 lambda x: ApplyHTMLFilters(args.htmlfilters, x),
                 lambda x: ApplyDOMFilters(args.domfilters, x),
-                PandocTexifier(args.pandoc or 'pandoc'),
+                lambda x: ApplyTexFilters(args.texfilters, x),
+                layout,
                 args.geometry,
                 texout)