Apakah mungkin untuk menggunakan pembungkus kata sebagai standar tetapi memotong beberapa baris dalam buffer secara bersamaan?

8

Saya bekerja dengan tabel LaTeX besar di AucTEX dan akan sangat membantu untuk menampilkannya dalam baris terpotong, seperti di sini:

masukkan deskripsi gambar di sini

Tanda merah adalah karakter "&" yang memisahkan kolom dari tabel. Dalam kasus tabel dengan banyak kolom, kode sumber lateks untuk satu baris tabel lebih panjang dari emacslebar bingkai dan oleh karena itu akan secara default dibungkus menjadi lebih dari satu baris. Bahkan dengan align-current, ini akan membuat kode sumber tabel sangat sulit untuk dibaca dan diedit, jadi

  • untuk tabel saya lebih suka baris kode sumber dipotong (memaksa saya untuk menggulir secara horizontal)
  • sedangkan untuk semua latexsumber lain , saya lebih suka word wrapmembuatnya sesuai dengan lebar bingkai

Namun untuk teks asli dalam dokumen LaTeX saya, saya lebih suka memiliki word-wrappengaturan normal .

Pertanyaan:

Apakah mungkin untuk digunakan word-wrapsebagai standar Emacsdan masih memiliki beberapa lingkungan lateks dalam buffer yang sama seperti table, longtabledan sidewaystableditampilkan truncated pada saat yang sama?

Juga untuk beberapa lingkungan lain seperti equation, pycodeatau tikzpicturepemotongan tampaknya lebih tepat. Jadi mungkin ide yang baik untuk dapat mendefinisikan daftar lingkungan yang tidak dibungkus tetapi terpotong.

Pembungkus harus pembungkus lunak (Yaitu, teks dibungkus untuk mengisi-kolom di buffer, tetapi itu tidak mencerminkan dalam file) dan pembungkus garis indentasi harus mengikuti lekukan garis.

Solusi juga harus bekerja untuk emacs tetapi juga untuk Aquamacs 2.5.

Ada posting blog yang menyarankan untuk memiliki solusi (parsial), tetapi saya tidak menemukan implementasinya: http://endlessparentheses.com/longlines-mode-in-latex.html

Sebagian besar tidak berbahaya
sumber
3
Citra itu tidak terbaca. Tolong jelaskan dengan teks apa yang Anda maksud - "seperti di sini" tidak memotongnya, dalam hal ini.
Drew
1
Saya tidak percaya Emacs akan membiarkan Anda memilikinya (setq word-wrap t) dan (setq truncate-lines t)di buffer yang sama. Jika Anda ingin word-wrapaktif, maka yang terbaik yang mungkin dapat Anda capai adalah menempatkan overlay tak terlihat di atas teks yang ingin Anda potong - dapat dilakukan, tetapi tidak sepele - kode untuk ini akan membutuhkan penggunaan vertical-motionsetelah setiap perintah dengan penghapusan / pergerakan / penempatan overlay.
hukum
1
@lawlist: terima kasih, saya berharap bahwa mungkin untuk mendefinisikan truncate-linesmungkin hanya untuk bagian tertentu dari teks (lingkungan tertentu di LaTeX) tetapi saya melihat bahwa ini mungkin sulit untuk dicapai. Sepertinya saya harus belajar cara beralih word wrap/ truncatecepat. :)
MostlyHarmless
3
@ Martin Anda dapat mengikat kunci toggle-truncate-lines.
Kaushal Modi
2
@ Martin Mungkin untuk melakukan apa yang Anda minta. Anda harus melakukan peretasan di atas longlines-mode. Lihat posting ini sebagai contoh. Saya akan menulis jawaban lengkap nanti jika saya punya waktu.
Malabarba

Jawaban:

0

Tergantung pada apa yang ingin Anda lakukan.

Dalam komentar, Malabarba menautkan ke posting blog yang mungkin menunjukkan jalannya. Namun, saya pikir pendekatan ini bergantung pada (secara terprogram) memodifikasi teks buffer. Jika itu berhasil untuk Anda - hebat!

Jika Anda ingin meninggalkan teks yang tidak dimodifikasi, maka saya pikir Anda kurang beruntung.

Untuk masalah seperti ini, saya biasanya mulai dengan membaca bagian manual elisp pada properti "display". Ini menjelaskan properti yang dapat diterapkan ke karakter dalam buffer untuk memengaruhi tampilan mereka.

Membaca ini, saya tidak melihat apa pun yang mengontrol apakah garis dibungkus atau tidak - hanya bagaimana menampilkan indentasi dan semacamnya ketika pembungkus tidak terjadi.

Jadi untuk saat ini saya yakin jawabannya adalah "tidak". Ada beberapa pembicaraan di emacs-devel baru-baru ini tentang menambahkan fitur pembungkus untuk ditampilkan kembali, jadi mungkin ada beberapa harapan untuk masa depan.

Tom Tromey
sumber
1
Saya setuju bahwa menggunakan templat modifikasi buffer sebagai titik awal (yaitu, longlines-mode) adalah metode yang kurang disukai. Saya dengan hormat tidak setuju, dengan anggapan bahwa poster aslinya mungkin kurang beruntung. Overlay dengan 'invisible tatau 'display ""properti tidak mengubah teks buffer dan overlay itu dapat secara efektif memotong garis apa pun di buffer - ini dapat dilakukan secara selektif. Dengan kata lain, word-wraptetap aktif sementara pemotongan yang ditargetkan dapat dilakukan dengan overlay.
hukum
1
Yah ... jadi, saya pikir cara lain yang mungkin bisa dilakukan adalah "mengisi" teks dengan menandai beberapa spasi dengan properti tampilan substitusi-string yang memegang baris baru. Ini mungkin terlihat membungkus, mungkin. Namun - ini tampaknya tidak ramah seperti memodifikasi teks untuk keperluan pengeditan, karena tampilan akan berbeda dari apa yang dilihat orang. Anda juga perlu kode khusus untuk terus mengisi informasi terbaru. Tapi ... ya, mungkin ada jalan.
Tom Tromey