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.