我有一个非常大的表达式,其中包含许多小数(a/b)。我想用它们的latex形式替换所有的小数,即我的输出将是\frac{a}{b}全局。以下是输入文件的一部分:
+ 93
- 220/3*zeta3
+ 536/9*zeta2
- 4/5*zeta2^2我的输出将类似于:
+ 93
- \frac{220}{3}*zeta3
+ \frac{536}{9}*zeta2
- \frac{4}{5}*zeta2^2我可以通过vim编辑器手动完成(这非常耗时)。我正在寻找一个脚本,可以为所有这样的分数做它的全局。是否可以在shell脚本中执行此操作?
发布于 2015-04-21 13:27:34
假设您的分数只由数字组成,并且它们不会跨越多行:
:%s!\v(\d+)\s*/\s*(\d+)!\\frac{\1}{\2}!g发布于 2015-04-21 13:46:28
使用正则表达式:
match : ^(\s+(\+|\-)\s+)(\d+)\/(\d+)(\*.*)$
replace : \1\\frac{\3}{\4}\5使用sed等工具编辑文件。
请参阅DEMO
发布于 2015-04-21 20:47:19
通常,当你认为:
我可以通过vim编辑器手动完成(这非常耗时)。
您正在做一些错误的事情,因为在vim编辑器中不应该花费很长时间,因此:
使用vim宏
第一次搜索/
<esc>/\/录制以下宏:
nbifrac{<esc>nvc}{<esc>ea}<esc>循序渐进
开始在buffer q中录制宏
qq查找下一次出现的/
n走到分子前面并插入frac{
bifrac{<esc>找到除号,选择它并将其更改为}{
nvc}{<esc>跳过分母并附加}
ea}<esc>停止录制宏:
q如果您喜欢,可以将宏播放1000次:
1000@qhttps://stackoverflow.com/questions/29763558
复制相似问题