在SciTE中以80列格式化文本(或更好的LaTeX)

时间:2010-07-21 13:26:51

标签: word-wrap scite

我最近潜入了LaTeX,首先是在像Lix这样的WYSIWYM编辑器的帮助下。现在我正在盯着在Sci-TE中编写tex文件,它已经有语法高亮,我调整了tex.properties文件在Windows上工作,在Go上显示预览[F5]

Lyx做的一件好事,并且用常见的文本编辑器很难实现,就是将文本格式化为80列:我可以写一个段落并在每次到达边缘列时点击Return但是如果在第一列之后草稿,我想在这里和那里添加或删除一些单词,最后打破布局并重新排列换行符。

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

也许我可以轻松地为geany编写一个Python插件,我看到vim有类似的东西,但我想知道它是否也可以在Sci-TE中使用。

4 个答案:

答案 0 :(得分:4)

当我找不到答案时,我有点失望。谷歌也没有帮手,所以我搜索了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("(.-)\r?\n", 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, "\n"))
    editor:GotoPos(pos)

end

用法就像启动脚本中的任何其他功能一样,但是为了完整性,我将从SciTE属性文件中粘贴我的工具定义:

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

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

答案 1 :(得分:2)

这是scite中的一种方法:首先,将其添加到.SciTEUser.properties(选项/打开用户选项文件):

# Column guide, indicates long lines (https://wiki.archlinux.org/index.php/SciTE)
# this is what they call "margin line" in gedit (at right),
# in scite, "margin" is the area on left for line numbers
edge.mode=1
edge.column=80

...并保存,因此您可以看到一个80个字符的行。

然后缩放scite窗口,以便您看到的文本被包裹在该行中。

最后,选择要分成行的长行文本,然后执行编辑/段落/拆分(对我来说,快捷键Ctrl-K也适用于此)。

不幸的是,scite似乎没有“像你一样的断行”设施,就像geany中的“换行”设施一样。不再了,现在有一个插件 - 请参阅this answer

答案 2 :(得分:1)

同样但更容易,我认为...

将其放在用户属性中:

command.name.0.*=swrap
command.0.*=fold -s $(FileNameExt) > /tmp/scite_temp ; cat /tmp/scite_temp >$(FileNameExt)
command.is.filter.0.*=1

侨 彼得

答案 3 :(得分:1)

嗯,我对there seems to be no "break-lines-as-you-type" facility in scite感到非常失望;我终于设法为它编写了一个小的Lua插件/附加组件/扩展,然后在这里发布:

安装和使用说明在脚本本身中。以下是SciTE在正确安装扩展时的外观,以及启动后激活的切换:

SciteLineBreak.png

请注意,它与geany中的功能几乎相同 - 它在键入文本时插入换行符 - 但不是在按退格键时,也不是在复制/粘贴时。