Немного предыстории.
Я пытаюсь контролировать версии своих латексных документов, и эффективность этой инициативы значительно повысилась бы, если бы я использовал подход, состоящий из одного предложения на строку .
Например, вот как будут выглядеть мои документы.
Some text here.
New stencence on the same paragraph.
Some more text, still on the same paragraph.
This is another paragraph.
Мой вопрос прост.
Как много из этого я могу автоматизировать / улучшить с помощью Emacs?
Следующие два момента - это то, что я имею в виду.
Мои предложения длинные , поэтому мне нужно переносить строки, не заполняя их. То есть очень длинное предложение должно отображаться в нескольких строках на моем экране, но оно должно быть одной строкой в файле «.tex» . Желательно, чтобы это было сделано так, чтобы не оборачивать уравнения.
visual-line-mode
оборачивает на ширину окна, это слишком широко. Мне нужно что-то, что оборачивает строки и ограничивает их ширину до 80 символов. Точно так же, какfill-paragraph
обычно, но без разрыва строк в файле.- Я могу вручную разбить строку после каждого предложения, но было бы весьма предпочтительно, если бы я мог настроить
fill-paragraph
(или, может быть, дажеauto-fill-mode
) поставить также одно предложение в каждой строке.
источник
visual-line-mode
. Но в дополнение к переносу строк вам также необходимо автоматически вставлять символ новой строки после каждого предложения, верно?Ответы:
Если вы просто хотите что-то похожее,
visual-line-mode
но настраиваемое, вы можете попробоватьlonglines-mode
именно то, что я использую для большей части моей прозы.longlines-mode
переносит текст аналогичноvisual-line-mode
ширине, настроенной с помощьюfill-column
.Вот скриншот с
fill-column
установленным на70
(окно на самом деле расширяется еще больше вправо).Настройка
fill-paragraph
была бы аккуратной, но я не уверен, как это сделать. Вместо этого, вот разумный временный взлом: настройте своего.
персонажа в режиме TeX, вставив новую строку. Это просто включает повторное связывание в любом подходящем режиме:источник
Для (1) я бы использовал увеличенное поле, чтобы
visual-line-mode
обводить строки по желаниюfill-column
. Это повлияет как на текстовые строки, так и на уравнения.Что касается (2), можно определить пользовательскую команду заполнения, которая будет связана
M-q
и правильно заполнить абзацы. Мне еще не удалось написать команду с правильным поведением для автозаполнения.Оборачивание всего этого в второстепенном режиме может выглядеть следующим образом. Это не очень красивый код, но он должен работать в большинстве случаев. (У меня была
unfill-paragraph
функция в моемinit.el
довольно долгое время, не замечая проблем).источник
unfill-paragraph
наospl/unfill-paragraph
. Поля также работают, но текст с отступом выглядит плохо, и они также переносят уравнения, в то время как мне удалось взломать метод ярусов ниже, чтобы решить эти две проблемы.unfill-paragraph
(без префикса) в моемinit.el
в течение длительного времени. Я просто добавил префикс вчера для согласованности и представил ошибку ....(let ((fill-column 1000000)) (fill-pragraph))
. Пока не проверял это.Будут ли ваши проблемы с управлением версиями избегаться / решаться, если вы используете git diff --color-words или latexdiff? Тогда вы можете посмотреть на измененные слова.
источник
Один из способов улучшить это, который я использовал (иногда) в течение нескольких лет, - это отображать предложения с разрывами строк как текущие друг за другом, складывая разрывы строк, используя возможности
tex-fold
(часть AUCTeX).Это означает, что это
складывается в
Я недавно соединил это как второстепенный режим в пакете. Возможно, кто-то еще найдет это полезным: https://github.com/andersjohansson/tex-fold-linebreaks
источник