Comments (3)
Hi, thanks for the issue. You can already achieve the desired result by specifying custom text conversions (see https://pylatexenc.readthedocs.io/en/latest/latex2text/):
from pylatexenc import latex2text
l2t_context = latex2text.get_default_latex_context_db()
l2t_context.add_context_category('preserve-custom-macros', prepend=True, macros=[
latex2text.MacroTextSpec('ref', simplify_repl=r'\ref{%(1)s}')
],)
l2t = latex2text.LatexNodes2Text(latex_context=l2t_context)
latex = r'\emph{For the definition of $\alpha$, see also:} \ref{eq:a} \& \ref{eq:b}'
converted = l2t.latex_to_text(latex)
print(converted)
# outputs → For the definition of α, see also: \ref{eq:a} & \ref{eq:b}
I'm closing this issue, feel free to reopen if I'm missing anything.
from pylatexenc.
Thanks! I was wondering how you do this for the latexencode vs latex2text. I have a string which has a deliberate "\ref" in there that I need to preserve. I tried the following:
from pylatexenc import latexencode
cr = [ latexencode.UnicodeToLatexConversionRule(latexencode.RULE_REGEX, [
(re.compile(r'\\ref'), r'\\ref'),
], replacement_latex_protection='none'),
'defaults'
]
u_to_l = latexencode.UnicodeToLatexEncoder(conversion_rules=cr)
u_to_l.unicode_to_latex(r'\ref{sec:pp:qq}')
but it returns \ref{sec:pp:qq} - i.e. it escapes the curly brackets which i not wanted
from pylatexenc.
Try:
import re
from pylatexenc import latexencode
cr = [
latexencode.UnicodeToLatexConversionRule(latexencode.RULE_REGEX, [
(re.compile(r'\\ref\{([^\}]+)\}'), r'\\ref{\1}'),
], replacement_latex_protection='none'),
'defaults'
]
u_to_l = latexencode.UnicodeToLatexEncoder(conversion_rules=cr)
print( u_to_l.unicode_to_latex(r'See \ref{sec:pp:qq} for α=β') )
# prints: See \ref{sec:pp:qq} for \ensuremath{\alpha}=\ensuremath{\beta}
Also, using this regular expression rule, no escaping will happen within the argument of the \ref macro.
from pylatexenc.
Related Issues (20)
- problem with ensuremath construct HOT 1
- Temporarily disable environment parsing HOT 2
- Error when command taking argument appears at the end of the input HOT 1
- publish wheel for v2.10 HOT 2
- how to instantiate LatexMacroNode? HOT 3
- suggestion for simpler/more correct MacroArgs
- nodelist_to_latex() doesn't respect node.environmentname HOT 1
- how to parse `\vrule height 2pt depth -1.6pt width 23pt` HOT 1
- how to parse `\def\enorm#1{\|#1\|_2}` HOT 1
- how to parse `\lstinline|code|` HOT 1
- macroname='SS' incorrectly translated HOT 1
- parse issue with `\newcommand{\be}{\begin{equation}}` HOT 3
- adapt LatexWalker context while walking HOT 1
- Input and output differs when converting a nodelist back into latex HOT 1
- Incorrect (?) parsing of content in `lstlisting` environment HOT 3
- Deprecation warning upon installation via pip HOT 1
- Any ideas to skip specific element in LatexWalker? HOT 1
- pylatexenc import latexpp NCArgsParser doesn't work HOT 1
- Exception when parsing macro definitions with multiple arguments HOT 1
- IndexError: list index out of range HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pylatexenc.