重新格式化Site中80栏的文本(或者更好的LaTeX) [英] Reformatting text (or, better, LaTeX) in 80 colums in SciTE

查看:6
本文介绍了重新格式化Site中80栏的文本(或者更好的LaTeX)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我最近在Lix这样的WYSIWYM编辑器的帮助下潜心研究LaTeX。现在我开始用Sci-te编写Tex文件,它已经有了语法高亮显示,我调整了tex.properties文件以在Windows中显示Go[F5]

预览

Lyx做的一件很好的事情是格式化80列的文本,这是普通文本编辑器很难做到的:我可以写一个段落,每次到达边缘列时按Return键,但如果在第一稿之后,我想在这里或那里添加或删减一些单词,我最终会破坏布局,不得不重新排列新行。

如果在Sci-te中有一个工具会很有用,这样我就可以选择我在其中添加或删除了一些单词的一段文本,并将其重新排列为80列。可能不会对整个文档起作用,因为它可能会中断某些预期的换行符。

也许我可以很容易地为Geany编写一个Python插件,我看到VIM也有类似的插件,但我想知道它在Sci-te中是否也可能。

推荐答案

当我没有找到答案时,我有点失望,因为我正在寻找答案。Google也没有帮助程序,所以我搜索Lua示例和语法,希望自己制作它。我不知道Lua,所以这也许可以用不同的方式或高效地制作,但这总比没有好-以下是Lua函数,它需要放在scite启动Lua脚本中:

function wrap_text()

    local border = 80
    local t = {}

    local pos = editor.SelectionStart
    local sel = editor:GetSelText()
    if #sel == 0 then return end

    local para = {}
    local function helper(line) table.insert(para, line) return "" end
    helper((sel:gsub("(.-)
?
", helper)))

    for k, v in pairs(para) do
        line = ""
        for token in string.gmatch(v, "[^%s]+") do
            if string.len(token .. line) >= border then
                t[#t + 1] = line
                line = token .. " "
            else
                line = line .. token .. " "
            end
        end
        t[#t + 1] = line:gsub("%s$", "")
    end

    editor:ReplaceSel(table.concat(t, "
"))
    editor:GotoPos(pos)

end

用法与启动脚本中的任何其他函数类似,但为了完整起见,我将粘贴Site属性文件中的工具定义:

command.name.8.*=Wrap Text
command.mode.8.*=subsystem:lua,savebefore:no,groupundo
command.8.*=wrap_text
command.replace.selection.8.*=2

它确实尊重段落,因此可以用于更广泛的选择,而不只是一个段落。

这篇关于重新格式化Site中80栏的文本(或者更好的LaTeX)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆