顶点:一个更容易的乳胶预过滤器
vertex2tex的Python项目详细描述
Vertex:一个前置过滤器,用于更容易的乳胶
你觉得tex语法有什么麻烦吗?例如,
<表><广告>…那么顶点可能是给你的!
ver tex发音为"ver tech",代表"verbal tex",即tex 在这种情况下,你输入的内容往往更接近你阅读时所说的内容 大声说出数学。
我在把德语数学翻译成英语时开发了Vertex, 我想尽快输入符号表达式 键入单词。
因此顶点的目标之一是帮助您保持 手指放在主排上。这会导致一些言语上的对等 吸引一些人,但不吸引其他人。嘿,随便你!
用法
您将使用两个主要功能:
翻译片段
,以及翻译文档
将translate_snippet
直接应用于Vertex中编写的数学模式内容,
为了将它们转换为纯文本:
>>> from vertex2tex import *
>>> translate_snippet('bbQ(alp)')
'\\mathbb{Q}(\\alpha)'
在处理整个文档时,请使用translate\u document
。
translate_document
的默认行为是
只有当数学模式的内容立即以@
开头时,数学模式的内容才会。(然后从输出中省略@
字符。)
这允许您选择顶点的使用位置和不使用位置。
例如,在下面的应用程序中,文本包含三次出现的数学模式,但仅在最后一次出现时
我们使用vertex(我们使用内置的关键字times
),因此只有在那里我们才能用@
开始数学模式。
>>> text = 'Find integers $a, b, c$ such that the sum $a+b+c$ and the product $@a times b times c$ are equal.'
>>> translate_document(text)
'Find integers $a, b, c$ such that the sum $a+b+c$ and the product $a\\times b\\times c$ are equal.'
此行为可以通过使用translate_document
函数的关键字参数keychar>来控制。
设置
keychar=none
意味着顶点转换将应用于all数学模式。
然而,这需要在我们的文本中进行一些修改。
如果我们使用与上一个示例完全相同的文本来尝试此操作,则会出现两个问题:
>>> translate_document(text, keychar=None)
'Find integers $a, b, c$ such that the sum $a_{+ b+ c}$ and the product $@ a\\times b\\times c$ are equal.'
第一个问题是,现在vertex被应用于$a+b+c$
,它使用自动订阅机制。
为了避免这种情况,我们必须在$a+b+c$
中放置空格。
第二个问题是,现在第三种数学模式开始时的字符@
不再被解释
作为一个keychar,所以简单地通过。为了适应这两个问题,我们将有
>>> text2 = 'Find integers $a, b, c$ such that the sum $a + b + c$ and the product $a times b times c$ are equal.'
>>> translate_document(text2, keychar=None)
'Find integers $a, b, c$ such that the sum $a+ b+ c$ and the product $a\\times b\\times c$ are equal.'
再次产生所需的结果。
作为第三种可能性,您甚至可以通过设置
关键字参数keychar
等于该字符。但是,为了
互操作性。最好是标准化。
顶点语言
剪掉反斜杠!
当你在写数学的时候,你多久想要一个希腊字母alpha,以及 你经常想把变量a,l,p,h,和a相乘吗? 秩序?为什么要给你一个罗马字母序列,而 希腊字母需要反斜杠?
在vertex中,$alpha$
生成希腊字母,如果您真的需要变量的乘积,
只需在字母之间加空格,如$a l p h a$
一般来说,顶点关键字不是前面有反斜杠的字符串, 只是一串串不受空格干扰的字母。 在概念上,vertex中的关键字可以分为以下四个 种类,根据它们在避免反斜杠方面所起的作用。
顶点关键字的类型:
- bsme
- 内置
- 括号单词
- 字体前缀
如果您想查看(或者在本地更改)关键字列表,只需
请参阅vertex
包中的config.py
模块。
bsmes
"bsme"代表"反斜杠me",bsme关键字是
与tex中的关键字完全相同的一个,除了没有反斜杠。
它产生与对应的tex关键字完全相同的结果。
有关所有bsme关键字的列表,请参阅config.py
模块。
内置
所谓的"内置"关键字与任何现有的tex关键字都不对应。 他们不接受任何论据,只是直接翻译成 一串特克斯,他们的目的是以某种方式给 键入某些常用的tex字符串。
特别是,vertex的目标之一是让您可以选择
当你打字的时候手指放在主排上,因此内置的
关键字提供了许多与通常
包含非字母字符。例如,inv
(用于"inverse")生成
^{-1}
和squ
(表示"平方")产生^2
有关所有内置组件的列表,请参阅config.py
模块。
希腊语
希腊字母在数学上离我们的心很近很近。他们应该 打字要容易。 在vertex中,每个希腊字母(包括变体)都有一个 三个字母的名称。是的,这甚至包括那些名字 通常只有两个字母长,像π和μ!
例如,可以为alpha键入alp
,为lambda键入lam
,或者
lam
用于大写lambda。
您可以为varepsilon键入vep
(每个人都喜欢的epsilon)。
和vph
用于varphi
pie
?)为了绕过自动订阅机制
讨论如下。如往常一样,请查阅config.py
以获取完整的列表。
如果你不想的话,你必须使用这些缩写。
名字通常比两个字母长的希腊字母
同时也是一个bsme
关键字,所以请直接拼出来
想要,无论是alpha
,lambda
,还是omega
括号单词
在tex中有许多结构,其中一个关键字接受参数 被大括号包围。例如,
\frac{\pi}{4}
得到Bhaskara-Leibniz级数的和。在顶点,相同 通过
frac pie over 4;
在本例中,frac
,over
,最后的分号;
用作
括号中的单词
一般来说,当一个构造接受参数时,参数 将被适当的括号词包围。在很大程度上, 最后一个括号单词将是分号。
Vertex中所有此类结构的列表可以在config.py
中找到,
在unarynodes
、binarynodes
、tertiarynodes
和rangenodes
下
定义。它包括许多流行的结构,例如
集合,序列,地板,天花板,绝对值,"mod"表达式,
勒让德符号、二项式系数、和、积等。
字体(和装饰符)前缀
从技术上讲,字体前缀本身并不是"关键字"。他们是
两个或三个字符的前缀,后跟字母表中的一个字母时,
用适当的字体写出那封信。它们的前缀和字体
可在config.py
例如,而不是
\mathfrak{p} \mathsf{M} \mathbf{v} \mathbb{Q} \mathcal{O} \mathscr{B}
您可以键入
frp sfM bfv bbQ calO scrB
为了达到同样的目的。
您还可以使用前缀来获取诸如帽子和平铺之类的内容。例如,
而不是\hat{x}
只需键入hatx
自动下标(和上标)
在数学中,下标变量是领域的硬币,因此 应该很容易打出来。顶点使下标变得快速和容易 还有上标。例如,
<表><广告>一个单元1,一个单元2,多个单元,一个单元n+1}
A1、A2、DDD、AN+1
x{i{u 1}、x{i{u 2}、\ldots、x{i{u m}
xiv1、xiv2、ddd、xivvm
a{i j}^2
aijuu2
半自动下标和上标机制 Vertex非常方便,正如表中的示例所示,它使 更容易键入某些常见的下标和上标。
而许多下标和上标的组合可以通过
SSS,有些事情是不可能的。在这种情况下,您可以使用sub
和sup
括号中的单词,甚至可以使用标准的tex语法。
sss过程的完整描述有点复杂,但是对于大多数 共同的目的很简单。因此在我们给出详细的 具体流程,我们考虑主要思路。
首先我们需要一些术语。我们都知道下标和上标 是的,但是我们怎么称呼他们所附的信呢?我们称之为"基地"。
在大多数情况下,处理过程很简单:vertex将使用一个单词w
并将其拆分为
w=bs
,其中b
是与字母匹配的w的最长初始段
name和
s
是剩下的一切。然后b
将是基,并且s
将是下标。
示例(和一个非示例):
<表><广告>关于这些示例,需要注意以下几点:
它使得
pi
可以用于我们给出的自动订阅 希腊字母pi(无可否认有点傻)拼写pie
。正在写入p\i
对于使用素数的人来说,可能是每天都会发生的事情,并且 其中包括许多数学家。带有扩展名的字母,如
alpha
,以及带有字体前缀的字母 前面,如bbz
,将被视为初始字母。逗号以及加号和减号被视为单词的一部分。
发生了什么事内德和泽塔?也许我们希望这能翻译成 to
z\eta
,但vertex当然匹配整个单词zeta作为基。 有一种方法可以解决这个问题,我们在下面讨论。预览:您可以键入zvveta
以便获得z\eta
细节
对于顶点解析器,"单词"也由字母数字字符组成
作为逗号和加号和减号。必须以字母开头
性格。(换句话说是"字母",但这意味着
字符类[a-za-z]
,不要与所有的东西混淆
在顶点中可以被认为是"字母",其中包括,例如,
希腊字母和带有字体前缀的字母。)
对于熟悉正则表达式的人来说,这意味着 是基于字符类构建的
[A-Za-z0-9+-,]
最后三个符号包含在字符类中,因为它们是 下标中常见。 (但是,这意味着如果不想意外触发下标, 您需要在这些字符的至少一侧加上空格!)
现在假设w
是vertex必须处理的下一个单词。如果w
失败
以任何形式匹配
关键字-bsme、内置、括号单词或字体前缀字母组合-然后w
是
提交给SSS流程。
顶点首先匹配w
开头可能最长的字母名,
如上所述。让单词w
由首字母b
组成,后跟
余数s
,即w=bs
。然后b
将是基,并且s
将给出一个或
更多下标和/或上标。
在最简单的情况下,s
只是表示一个下标。但是有可能
使用特殊字符序列在下标和上标之间切换
vv
,uu
和uu
几个例子说明了使用这些控制序列的所有方法:
<表><广告>规则是:
- sequence
vv
打开更深的下标。在tex中,就好像您键入了{
- sequence
uu
关闭下标并打开上标。在德州 尽管你输入了}^{
- seuqnece
uu
关闭两个下标并打开一个上标。在德州 尽管你输入了}^{
- 一个特殊的例外是,如果
vv
在s
的开头使用, 它只会让你保持在第一个下标级别。因此,zvveta
提供了一种方法 要生成z\eta
,而zeta
只需给出\zeta
同样,使用这些特殊的控制序列可能会吸引一些人,而 其他的例子,上面的例子看起来像是冰岛人。 (对我来说有点像——但我不知道冰岛人到底长什么样)。 随你便…这是下一节的主题。
只使用您想要的内容
顶点对普通纹理透明99%。 这意味着你可以(几乎)键入任何你想要的普通文本,它就会通过 通过顶点过滤器。所以,使用尽可能多或尽可能少的功能 顶点的值。
有什么问题?主要问题是关键字和自动下标;但是解决方案 总是很简单:添加空格!
如果字符序列已匹配为顶点关键字,但是 不是您想要的,只需在这些字符之间留出一个或多个空格即可。
同样,如果自动订阅是在您不需要时进行的, 解决方法相同:用空格分隔字符。
安全网
作为一个"安全网",任何一个词的前缀都可以是double
反斜杠\\
以允许该单词不经修改地通过顶点。
准确地说,如果单词有余数,那么这个,减去这两个
反斜杠,是什么会通过。如果只打两个反斜杠,
它们将以不变的方式传递(这在tex表环境中很有用)。
同时,任何以一个反斜杠开头的单词都会通过顶点。
完全不变,即前面的反斜杠仍然完整。
总而言之:
>>> from vertex2tex import *
>>> translate_snippet('bbQ(alp)')
'\\mathbb{Q}(\\alpha)'
0
其中w
是至少一个字符长的单词。
但无论如何,您可能不需要使用它。
享受!