Переформатирование текста (или, лучше, LaTeX) в 80 столбцов в SciTE - PullRequest
3 голосов
/ 21 июля 2010

Я недавно погрузился в LaTeX, начиная с помощью редактора WYSIWYM, такого как Lix.Сейчас я начинаю писать текстовые файлы в Sci-TE, у него уже есть подсветка синтаксиса, и я адаптировал файл tex.properties для работы в Windows, показывая предварительный просмотр на Go [F5]

Одна симпатичная вещь, которую делает Lyx,и это трудно достичь с помощью обычного текстового редактора, это отформатировать текст в 80 столбцах: я могу написать абзац и нажимать клавишу «Return» каждый раз, когда достигаю около края столбца, но если после первого черновика я хочу добавить или вырезать некоторыеслова здесь и там, в итоге я нарушаю компоновку и вынужден переставлять переводы строк.

Было бы полезно иметь инструмент в Sci-TE, чтобы я мог выбрать абзац текста, который я добавил или удалил.слова и переставить его в 80 столбцах.Возможно, что-то не работает для всего документа, так как это может привести к некоторому ожидаемому разрыву строки.

Возможно, я мог бы легко написать плагин Python для geany, я видел, что у vim есть нечто подобное, но я быхотелось бы знать, возможно ли это и в Sci-TE.

Ответы [ 4 ]

4 голосов
/ 13 января 2012

Я был немного разочарован, когда не нашел ответа, когда искал то же самое. Google тоже не помогла, поэтому я искал примеры и синтаксис Lua в надежде создать его самостоятельно. Я не знаю Lua, так что, возможно, это можно сделать по-другому или эффективно, но лучше, чем ничего, я надеюсь, вот функция Lua, которую нужно включить в скрипт запуска Lua для SciTE:

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

Он учитывает абзацы, поэтому его можно использовать для более широкого выбора, а не только для одного абзаца.

2 голосов
/ 18 января 2013

Это один из способов сделать это в 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, чтобы отображаемый текст был перенесен на строку.

Наконец, выберите текст длинной строки, который нужно разбить на строки, и выполните Edit / Paragraph / Split (для меня также работает комбинация клавиш Ctrl-K).

К сожалению, в scite, похоже, нет возможности "разрывать строки по типу", как в "1014 *. . плагин - см. этот ответ

1 голос
/ 06 апреля 2013

Что ж, я был довольно разочарован тем, что , похоже, в scite нет возможности "разрывать линии по типу";и мне наконец-то удалось написать небольшой плагин / надстройку / расширение Lua для этого, и я выпустил его здесь:

Инструкции по установке и использованию находятся в самом скрипте.Вот как может выглядеть SciTE при правильной установке расширения и активации переключателя после запуска:

SciteLineBreak.png

Обратите внимание, что это почти такая же функциональность, как в geany - он вставляет разрывы строкпри наборе текста - но не при нажатии клавиши Backspace или при копировании / вставке.

1 голос
/ 15 января 2012

то же самое, но проще, я думаю ...

укажите это в свойствах пользователя:

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

Ciao Pietro

...