3

我最近在 Lix 等所见即所得编辑器的帮助下开始研究 LaTeX。现在我正盯着在 Sci-TE 中编写 tex 文件,它已经有语法高亮显示,我调整了 tex.properties 文件以在 Windows 中工作,在 Go [F5] 上显示预览

Lyx 做的一件漂亮的事情,用普通的文本编辑器很难实现,就是将文本格式化为 80 列:我可以写一个段落,每次到达边缘列时都按 Return,但是如果在初稿之后,我想要在这里和那里添加或剪切一些单词,我最终会破坏布局并不得不重新排列换行符。

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

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

4

4 回答 4

4

当我在寻找相同的答案时没有找到答案时,我有点失望。谷歌也没有帮助,所以我搜索了 Lua 示例和语法,希望自己制作。我不知道 Lua,所以这也许可以以不同的方式或有效地制作,但它比我希望的更好 - 这是需要放入 SciTE 启动 Lua 脚本的 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

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

于 2012-01-13T01:46:02.033 回答
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不再,现在有一个插件 - 看到这个答案

于 2013-01-18T03:13:45.417 回答
1

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

把它放在用户属性中:

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

乔彼得罗

于 2012-01-14T22:44:01.140 回答
1

好吧,我很失望,似乎在scite; 我终于设法为此编写了一个小型 Lua 插件/附加组件/扩展,并在此处发布:

安装和使用说明在脚本本身中。这是正确安装扩展程序并在启动后激活切换时 SciTE 的外观:

SciteLineBreak.png

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

于 2013-04-06T16:03:45.390 回答