pyact-cli 0.7.1__tar.gz → 0.7.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyact_cli-0.7.1 → pyact_cli-0.7.2}/PKG-INFO +1 -1
- {pyact_cli-0.7.1 → pyact_cli-0.7.2}/pamd_helpers/__init__.py +10 -0
- {pyact_cli-0.7.1 → pyact_cli-0.7.2}/pyact/mdTOword.py +7 -5
- {pyact_cli-0.7.1 → pyact_cli-0.7.2}/pyact/py2tex.py +18 -1
- {pyact_cli-0.7.1 → pyact_cli-0.7.2}/pyact_cli.egg-info/PKG-INFO +1 -1
- {pyact_cli-0.7.1 → pyact_cli-0.7.2}/setup.py +1 -1
- {pyact_cli-0.7.1 → pyact_cli-0.7.2}/README.md +0 -0
- {pyact_cli-0.7.1 → pyact_cli-0.7.2}/pyact/__init__.py +0 -0
- {pyact_cli-0.7.1 → pyact_cli-0.7.2}/pyact/cli.py +0 -0
- {pyact_cli-0.7.1 → pyact_cli-0.7.2}/pyact/core.py +0 -0
- {pyact_cli-0.7.1 → pyact_cli-0.7.2}/pyact/css2json.py +0 -0
- {pyact_cli-0.7.1 → pyact_cli-0.7.2}/pyact/linter.py +0 -0
- {pyact_cli-0.7.1 → pyact_cli-0.7.2}/pyact_cli.egg-info/SOURCES.txt +0 -0
- {pyact_cli-0.7.1 → pyact_cli-0.7.2}/pyact_cli.egg-info/dependency_links.txt +0 -0
- {pyact_cli-0.7.1 → pyact_cli-0.7.2}/pyact_cli.egg-info/entry_points.txt +0 -0
- {pyact_cli-0.7.1 → pyact_cli-0.7.2}/pyact_cli.egg-info/requires.txt +0 -0
- {pyact_cli-0.7.1 → pyact_cli-0.7.2}/pyact_cli.egg-info/top_level.txt +0 -0
- {pyact_cli-0.7.1 → pyact_cli-0.7.2}/setup.cfg +0 -0
|
@@ -21,6 +21,16 @@ def equation(func: Callable, values: List[Any]) -> str:
|
|
|
21
21
|
value = func(*values)
|
|
22
22
|
name, sep, tail = source.rpartition("=")
|
|
23
23
|
head, sep, equ = tail.rpartition(":")
|
|
24
|
+
|
|
25
|
+
name = name.strip()
|
|
26
|
+
if "_" in name:
|
|
27
|
+
parts = name.split("_", 1)
|
|
28
|
+
name = f"{parts[0]}_{{{parts[1]}}}"
|
|
29
|
+
|
|
30
|
+
import re
|
|
31
|
+
greek_pattern = r'(?<![a-zA-Z])(alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Alpha|Beta|Gamma|Delta|Epsilon|Zeta|Eta|Theta|Iota|Kappa|Lambda|Mu|Nu|Xi|Omicron|Pi|Rho|Sigma|Tau|Upsilon|Phi|Chi|Psi|Omega)(?![a-zA-Z])'
|
|
32
|
+
name = re.sub(greek_pattern, r'\\\1', name)
|
|
33
|
+
|
|
24
34
|
return f"$$ {name} = {py2tex(equ.replace(chr(10), ''))} = {value} $$"
|
|
25
35
|
|
|
26
36
|
def image(link: str, caption: str) -> str:
|
|
@@ -86,7 +86,7 @@ def markdown_parser(md_text: str) -> list:
|
|
|
86
86
|
blocks.append(('list', m.group(1), 'ordered'))
|
|
87
87
|
|
|
88
88
|
# Math Block Parsing
|
|
89
|
-
elif line_s.startswith('$$') and line_s.endswith('$$'):
|
|
89
|
+
elif (line_s.startswith('$$') and line_s.endswith('$$')) or (line_s.startswith('$') and line_s.endswith('$') and len(line_s) >= 2):
|
|
90
90
|
blocks.append(('math', line_s.strip('$').strip()))
|
|
91
91
|
|
|
92
92
|
# Standard Paragraph
|
|
@@ -312,15 +312,17 @@ def _add_image(paragraph, url, caption, styles):
|
|
|
312
312
|
def _process_inline(paragraph, text, styles, tag):
|
|
313
313
|
"""Parses text for images, links, math, and bold/italic."""
|
|
314
314
|
# Simple regex to split by math, image, or link. Captures the match as a group.
|
|
315
|
-
# Group
|
|
316
|
-
# Group
|
|
317
|
-
|
|
315
|
+
# Group 1: Double $$ math
|
|
316
|
+
# Group 2: Single $ math
|
|
317
|
+
# Group 6: Footnote definition [^1]: ...
|
|
318
|
+
# Group 7: Footnote annotation [^1]
|
|
319
|
+
pattern = r'(\$\$.*?\$\$)|(\$.*?\$)|(!\[.*?\]\(.*?\))|(\[.*?\]\(.*?\))|(<span.*?>.*?</span>)|(\[\^.*?\]:.*?$)|(\[\^.*?\])'
|
|
318
320
|
parts = re.split(pattern, text)
|
|
319
321
|
|
|
320
322
|
for part in parts:
|
|
321
323
|
if not part: continue
|
|
322
324
|
|
|
323
|
-
if part.startswith('$$') and part.endswith('$$'):
|
|
325
|
+
if (part.startswith('$$') and part.endswith('$$')) or (part.startswith('$') and part.endswith('$') and len(part) >= 2):
|
|
324
326
|
math_text = part.strip('$').strip()
|
|
325
327
|
try:
|
|
326
328
|
math2docx.add_math(paragraph, math_text)
|
|
@@ -17,7 +17,24 @@ class LatexVisitor(ast.NodeVisitor):
|
|
|
17
17
|
return 1000
|
|
18
18
|
|
|
19
19
|
def visit_Name(self, n):
|
|
20
|
-
|
|
20
|
+
name = n.id
|
|
21
|
+
if "_" in name:
|
|
22
|
+
parts = name.split('_', 1)
|
|
23
|
+
name = f"{parts[0]}_{{{parts[1]}}}"
|
|
24
|
+
|
|
25
|
+
greek_letters = [
|
|
26
|
+
'alpha', 'beta', 'gamma', 'delta', 'epsilon', 'zeta', 'eta', 'theta', 'iota',
|
|
27
|
+
'kappa', 'lambda', 'mu', 'nu', 'xi', 'omicron', 'pi', 'rho', 'sigma', 'tau',
|
|
28
|
+
'upsilon', 'phi', 'chi', 'psi', 'omega',
|
|
29
|
+
'Alpha', 'Beta', 'Gamma', 'Delta', 'Epsilon', 'Zeta', 'Eta', 'Theta', 'Iota',
|
|
30
|
+
'Kappa', 'Lambda', 'Mu', 'Nu', 'Xi', 'Omicron', 'Pi', 'Rho', 'Sigma', 'Tau',
|
|
31
|
+
'Upsilon', 'Phi', 'Chi', 'Psi', 'Omega'
|
|
32
|
+
]
|
|
33
|
+
import re
|
|
34
|
+
greek_pattern = r'(?<![a-zA-Z])(' + '|'.join(greek_letters) + r')(?![a-zA-Z])'
|
|
35
|
+
name = re.sub(greek_pattern, r'\\\1', name)
|
|
36
|
+
|
|
37
|
+
return name
|
|
21
38
|
|
|
22
39
|
def prec_Name(self, n):
|
|
23
40
|
return 1000
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|