Trochę tła.
Staram się kontrolować wersję moich dokumentów lateksowych, a skuteczność tej inicjatywy zostałaby znacznie poprawiona, jeśli zastosuję podejście jedno zdanie na linię .
Na przykład poniżej będą wyglądać moje dokumenty.
Some text here.
New stencence on the same paragraph.
Some more text, still on the same paragraph.
This is another paragraph.
Moje pytanie jest proste.
Ile z tego mogę zautomatyzować / ulepszyć za pomocą Emacsa?
Mam na myśli następujące dwa punkty.
Moje zdania są długie , więc muszę zawijać wiersze bez ich wypełniania. To znaczy, bardzo długie zdanie musi być wyświetlone w kilku liniach na moim ekranie, ale musi to być pojedyncza linia w pliku „.tex” . Najlepiej byłoby to zrobić w sposób, który nie zawija równań.
visual-line-mode
owija się przy szerokości okna, która jest zbyt szeroka. Potrzebuję czegoś, co zawija linie i ogranicza ich szerokość do około 80 znaków. Tak jakfill-paragraph
zwykle, ale bez przerywania linii w pliku.- Mogę ręcznie przełamać linię po każdym zdaniu, ale byłoby bardzo dobrze, gdybym mógł skonfigurować
fill-paragraph
(a może nawetauto-fill-mode
), aby wstawić również jedno zdanie w linii.
źródło
visual-line-mode
. Ale oprócz tego zawijania linii musisz także automatycznie wstawiać znak nowego wiersza po każdym zdaniu, prawda?Odpowiedzi:
Jeśli chcesz czegoś podobnego,
visual-line-mode
ale konfigurowalnego, możesz spróbować, zlonglines-mode
czego korzystam przez większość mojej prozy.longlines-mode
otacza tekst podobnie dovisual-line-mode
szerokości skonfigurowanej przezfill-column
.Oto zrzut ekranu z
fill-column
ustawionym na70
(okno faktycznie rozciąga się jeszcze bardziej w prawo).Konfiguracja
fill-paragraph
byłaby fajna, ale nie jestem pewien, jak to zrobić. Zamiast tego jest rozsądny tymczasowy hack: zmień.
postać w tryb TeX, wstawiając nową linię. Polega to na ponownym związaniu go w dowolnym odpowiednim trybie haka:źródło
Dla (1) użyłbym powiększonego marginesu, aby
visual-line-mode
owijał linie w pożądany sposóbfill-column
. Wpłynie to jednak na linie tekstu i równania.Jeśli chodzi o (2), można zdefiniować niestandardowe polecenie wypełniania, które będzie wiązane
M-q
i poprawnie wypełniać akapity. Nie udało mi się jeszcze napisać polecenia z prawidłowym zachowaniem do automatycznego wypełniania.Opakowanie tego wszystkiego w mniejszym trybie może wyglądać następująco. Nie jest to bardzo piękny kod, ale powinien działać w większości przypadków. (Miałem tę
unfill-paragraph
funkcjęinit.el
od dłuższego czasu, nie zauważając problemów).źródło
unfill-paragraph
zospl/unfill-paragraph
. Marginesy również działają, ale tekst wcięty wygląda źle i zawijają równania, podczas gdy udało mi się zhakować poniższą metodę taktów, aby rozwiązać te dwa problemy.unfill-paragraph
(bez prefiksu) w sobieinit.el
od dłuższego czasu. Właśnie wczoraj(let ((fill-column 1000000)) (fill-pragraph))
. Jednak jeszcze tego nie przetestowałem.Czy można uniknąć problemów z kontrolą wersji / rozwiązać je, jeśli użyjesz git diff --color-words lub latexdiff? Następnie możesz spojrzeć na zmienione słowa.
źródło
Jednym ze sposobów ulepszenia tego, z którego korzystałem (czasami) od kilku lat, jest wyświetlanie zdań z podziałami linii jako przepływających jeden za drugim poprzez składanie podziałów linii za pomocą udogodnień
tex-fold
(część AUCTeX).Oznacza to, że to
jest złożony do
Niedawno umieściłem to jako niewielki tryb w pakiecie. Być może ktoś inny również uzna to za przydatne: https://github.com/andersjohansson/tex-fold-linebreaks
źródło