Raw LaTeX guard: vdots/ddots/sqrt( converted, leftover() sees bare words, matrix lesson and 4 intro texts fixed in seed
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -25,7 +25,7 @@ _SYMBOLS = {
|
||||
'angle': '∠', 'triangle': '△', 'approx': '≈', 'equiv': '≡', 'sim': '∼', 'cong': '≅', 'mid': '|', 'vert': '|',
|
||||
'Delta': 'Δ', 'delta': 'δ', 'gamma': 'γ', 'lambda': 'λ', 'mu': 'μ', 'sigma': 'σ', 'Sigma': 'Σ', 'phi': 'φ',
|
||||
'varphi': 'φ', 'omega': 'ω', 'epsilon': 'ε', 'varepsilon': 'ε', 'rho': 'ρ', 'tau': 'τ', 'Leftrightarrow': '⇔',
|
||||
'iff': '⇔', 'implies': '⇒', 'leftarrow': '←', 'cdots': '⋯', 'therefore': '∴', 'setminus': '−', 'neg': '¬',
|
||||
'iff': '⇔', 'implies': '⇒', 'leftarrow': '←', 'cdots': '⋯', 'vdots': '⋮', 'ddots': '⋱', 'therefore': '∴', 'setminus': '−', 'neg': '¬',
|
||||
'quad': ' ', 'qquad': ' ', 'max': 'max', 'min': 'min', 'cot': 'cot', 'sec': 'sec', 'csc': 'csc',
|
||||
'arcsin': 'arcsin', 'arccos': 'arccos', 'arctan': 'arctan', 'exp': 'exp', 'det': 'det', 'gcd': 'gcd',
|
||||
'degree': '°', 'prime': '′',
|
||||
@@ -69,7 +69,7 @@ def _strip_markdown(s: str) -> str:
|
||||
|
||||
|
||||
def convert(text: str) -> str:
|
||||
if not isinstance(text, str) or not re.search(r'[\\^$ÂÊ]|[A-Za-z]_|\*\*|__|`|^#{1,6}\s', text, re.M):
|
||||
if not isinstance(text, str) or not re.search(r'[\\^$ÂÊ]|[A-Za-z]_|sqrt\(|vdots|ddots|\*\*|__|`|^#{1,6}\s', text, re.M):
|
||||
return text
|
||||
s = text
|
||||
if re.search('[ÂÊ]', s):
|
||||
@@ -87,6 +87,8 @@ def convert(text: str) -> str:
|
||||
s = re.sub(r'\\(?:text|mathrm|operatorname)' + _GROUP, r'\1', s)
|
||||
s = re.sub(r'\\[dt]?frac' + _GROUP + _GROUP, lambda m: f'{_wrap(m[1])}/{_wrap(m[2])}', s)
|
||||
s = re.sub(r'\\sqrt' + _GROUP, lambda m: '√' + _wrap(m[1]), s)
|
||||
s = re.sub(r'(?<![A-Za-z\\])sqrt\(', '√(', s) # sqrt(x) بهشکلِ کد
|
||||
s = re.sub(r'(?<![A-Za-z\\])(vdots|ddots)(?![A-Za-z])', lambda m: _SYMBOLS[m[1]], s) # بدونِ بکاسلش
|
||||
s = re.sub(r'\\lim\s*_' + _GROUP, r'lim(\1)', s) # lim_{x→0} پایینِ حد است، نه زیرنویس
|
||||
s = re.sub(r'\\(left|right)\s*', '', s)
|
||||
s = s.replace('\\|', '|').replace('\\{', '{').replace('\\}', '}').replace('\\,', ' ').replace('\\ ', ' ')
|
||||
@@ -112,7 +114,7 @@ def convert(text: str) -> str:
|
||||
return s
|
||||
|
||||
|
||||
_LEFTOVER = re.compile(r'\\[A-Za-z]+|\\[()\[\]]|\$|[_^]\{|\^[0-9۰-۹(a-z−+-]|\*\*|(?<![_\s])__|`|^#{1,6}\s', re.M)
|
||||
_LEFTOVER = re.compile(r'\\[A-Za-z]+|(?<![A-Za-z])(?:vdots|ddots|cdots|ldots|dfrac|tfrac|sqrt\(|overrightarrow|widehat)(?![A-Za-z])|\\[()\[\]]|\$|[_^]\{|\^[0-9۰-۹(a-z−+-]|\*\*|(?<![_\s])__|`|^#{1,6}\s', re.M)
|
||||
|
||||
|
||||
def leftover(text: str) -> list[str]:
|
||||
|
||||
Reference in New Issue
Block a user