SF.net SVN: docutils:[10153 ] trunk/docutils/docutils/ writers/latex2e/__init__ .py

milde--- via Docutils-checkins <[email protected]> Mon, 02 Jun 2025 19:20:48 +0000
Newsgroups gmane.text.docutils.cvs
Message-ID <[email protected]>
Revision: 10153
          http://sourceforge.net/p/docutils/code/10153
Author:   milde
Date:     2025-06-02 19:20:47 +0000 (Mon, 02 Jun 2025)
Log Message:
-----------
LaTeX writer: refactor visit_math() and visit_math_block().

Make the methods independent:
+1 simpler logic
-1 repeat some boilerplate code

Modified Paths:
--------------
    trunk/docutils/docutils/writers/latex2e/__init__.py

Modified: trunk/docutils/docutils/writers/latex2e/__init__.py
===================================================================
--- trunk/docutils/docutils/writers/latex2e/__init__.py	2025-06-02 19:20:17 UTC (rev 10152)
+++ trunk/docutils/docutils/writers/latex2e/__init__.py	2025-06-02 19:20:47 UTC (rev 10153)
@@ -2713,38 +2713,38 @@
     def depart_meta(self, node) -> None:
         pass
 
-    def visit_math(self, node, math_env='$'):
-        """math role"""
+    def visit_math(self, node, math_env='$') -> None:
+        """
+        Provisional: the `math_env` argument will be dropped in Docutils 2.0.
+        """
         self.requirements['amsmath'] = r'\usepackage{amsmath}'
+        self.visit_inline(node)
         math_code = node.astext().translate(unichar2tex.uni2tex_table)
-        if math_env == '$':
-            self.visit_inline(node)
-            if self.alltt:
-                wrapper = ['\\(', '\\)']
-            else:
-                wrapper = ['$', '$']
+        if self.alltt:
+            self.out += ['\\(', math_code, '\\)']
         else:
-            for cls in node['classes']:
-                if not self.fallback_stylesheet:
-                    self.fallbacks['inline'] = PreambleCmds.inline
-                self.out.append(r'\DUrole{%s}{' % cls)
-            labels = self.ids_to_labels(node, set_anchor=False, newline=True)
-            wrapper = ['%%\n\\begin{%s}\n' % math_env,
-                       '\n',
-                       ''.join(labels),
-                       '\\end{%s}' % math_env]
-        wrapper.insert(1, math_code)
-        self.out.extend(wrapper)
+            self.out += ['$', math_code, '$']
         self.depart_inline(node)
-        # Content already processed:
-        raise nodes.SkipNode
+        raise nodes.SkipNode  # content already processed
 
     def depart_math(self, node) -> None:
         pass  # never reached
 
     def visit_math_block(self, node) -> None:
+        self.requirements['amsmath'] = r'\usepackage{amsmath}'
+        for cls in node['classes']:
+            if not self.fallback_stylesheet:
+                self.fallbacks['inline'] = PreambleCmds.inline
+            self.out.append(r'\DUrole{%s}{' % cls)
         math_env = pick_math_environment(node.astext())
-        self.visit_math(node, math_env=math_env)
+        labels = self.ids_to_labels(node, set_anchor=False, newline=True)
+        self.out += [f'%\n\\begin{{{math_env}}}\n',
+                     node.astext().translate(unichar2tex.uni2tex_table),
+                     '\n',
+                     *labels,
+                     f'\\end{{{math_env}}}']
+        self.out.append('}' * len(node['classes']))
+        raise nodes.SkipNode  # content already processed
 
     def depart_math_block(self, node) -> None:
         pass  # never reached

This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.