gpt4 book ai didi

word-wrap - 在 SciTE 中重新格式化 80 列中的文本(或者更好的是 LaTeX)

转载 作者:行者123 更新时间:2023-12-02 17:00:14 24 4
gpt4 key购买 nike

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

Lyx 所做的一件漂亮的事情(用普通的文本编辑器很难实现)就是将文本格式化为 80 列:我可以编写一个段落,并在每次到达边缘列附近时按回车键,但如果在第一个段落之后草稿中,我想在这里或那里添加或删除一些单词,最终破坏了布局并不得不重新排列换行符。

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

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

最佳答案

当我在寻找相同的答案时没有找到答案,我有点失望。 Google 也没有帮助程序,所以我搜索了 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

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

关于word-wrap - 在 SciTE 中重新格式化 80 列中的文本(或者更好的是 LaTeX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3299699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com