我正在使用Maxima,LaTeX和VIM编写大量数学物理文本。我想将Maxima代码保留在LaTeX源代码中,并且可以选择向Maxima发送注释块并使用结果填写以下maximaout环境。
一个例子:
Error: unexpected symbol in "ga$getData(3A63528988"
当我将光标放在%'环境中时我希望vim命令获取最大值代码,将其发送到最大值并粘贴到结果中:
ids = "ga:5A537372"
我目前正在使用一个小脚本并直接在vim中输入maxima命令并将结果粘贴到光标位置:
Error in ga$getData(ids = "ga:5A537372", start.date = "2017-12-01", :
error in fetching data: Invalid value 'ga:5A537372'. Values must match the following regular expression: 'ga:[0-9]+'
vim2maxima.sh脚本负责简化结果,将其转换为tex并过滤出Maxima输出的TeX部分
%<maxima>
%numer:true$
%/* Physical resolution limit of the eye */
%lambda:500E-9$
%d2:0.008$
%x:5000$
%alpha(d):=asin(1.22*lambda/d)$
%a1:alpha(d1)*180/%pi;
%dx(d):=tan(alpha(d))*x$
%dx1:dx(d1);
%</maxima>
我想改进我的粗略脚本以向后搜索%<maximaout>
(a1)0.01747521302242873
(a2)0.004368803192105943
(dx1)1.525000070931567
(dx2)0.3812500011083056
%</maximaout>
并转发"call maxima Kalculation in insert mode and paste result
imap <C-S-C> <C-r>=MaximaCalc()<CR><BS>
function MaximaCalc()
let args = input("maxima:")
let cmd="vim2maxima.sh " . args . ";"
let result=system(cmd)
let result=substitute(result, '\n', "", "g")
let result=substitute(result, '\$\$', "$", "g")
return result
endfunction
,删除maxima --very-quiet --batch-string "tex(ratsimp(($*)));" | egrep '^\$\$.+'
标记和注释百分号。
我不知道如何通过在当前VIM缓冲区中向后和向前搜索来获取文本。任何提示或指示?