Có thể có bao bọc từ làm tiêu chuẩn nhưng cắt bớt một số dòng trong bộ đệm cùng một lúc không?


8

Tôi đang làm việc với các bảng LaTeX lớn trong AucTEX và sẽ hữu ích khi hiển thị chúng trong các dòng bị cắt cụt, như ở đây:

nhập mô tả hình ảnh ở đây

Các dấu đỏ là các ký tự "&" phân tách các cột của bảng. Trong trường hợp các bảng có nhiều cột, mã nguồn latex cho một hàng của bảng dài hơn emacschiều rộng khung và do đó sẽ được mặc định bọc thành nhiều hơn một dòng. Ngay cả với align-current, điều này sẽ làm cho mã nguồn bảng rất khó đọc và chỉnh sửa, vì vậy

  • đối với các bảng tôi muốn các dòng mã nguồn bị cắt bớt (buộc tôi phải cuộn theo chiều ngang)
  • trong khi đối với tất cả các latexnguồn khác , tôi muốn word wraplàm cho nó phù hợp với chiều rộng khung

Tuy nhiên, đối với văn bản thực trong tài liệu LaTeX của tôi, tôi muốn có các word-wrapcài đặt bình thường .

Câu hỏi:

Có thể sử dụng word-wrapnhư tiêu chuẩn trong Emacsvà vẫn có một số môi trường latex trong cùng một bộ đệm như table, longtablesidewaystablehiển thị truncated cùng một lúc không?

Ngoài ra đối với một số môi trường khác như equation, pycodehoặc tikzpicturecắt ngắn có vẻ phù hợp hơn. Vì vậy, nó có thể là một ý tưởng tốt để có thể xác định một danh sách các môi trường không được bao bọc nhưng bị cắt ngắn.

Gói phải là gói mềm (Nghĩa là văn bản được gói vào cột điền trong bộ đệm, nhưng không phản ánh trong tệp) và gói một dòng thụt phải theo vết lõm của dòng.

Các giải pháp cũng nên hoạt động cho emacs nhưng cũng cho Aquamacs 2.5.

Có một bài đăng trên blog đề xuất giải pháp (một phần), nhưng tôi không tìm thấy cách triển khai: http://endlessparentheses.com/longlines-mode-in-latex.html


3
Hình ảnh đó là không thể. Vui lòng mô tả với văn bản chính xác những gì bạn muốn nói - "như ở đây" không cắt nó, trong trường hợp này.
vẽ

1
Tôi không tin Emacs sẽ cho phép bạn có (setq word-wrap t) và (setq truncate-lines t)trong cùng một bộ đệm. Nếu bạn muốn word-wrapkích hoạt, thì điều tốt nhất bạn có thể đạt được là đặt một lớp phủ vô hình lên văn bản bạn muốn cắt bớt - có thể thực hiện được, nhưng không tầm thường - mã cho điều này sẽ yêu cầu sử dụng vertical-motionsau mỗi lệnh loại bỏ / di chuyển / vị trí của lớp phủ.
luật

1
@lawlist: cảm ơn, tôi đã hy vọng rằng có truncate-linesthể chỉ có thể xác định có thể chỉ cho một số phần nhất định của văn bản (một số môi trường nhất định trong LaTeX) nhưng tôi thấy rằng điều này có thể khó đạt được. Có vẻ tôi sẽ phải học cách chuyển đổi word wrap/ truncatenhanh chóng. :)
Chủ yếu là không có gì 17/2/2015

3
@Martin Bạn có thể liên kết một khóa với toggle-truncate-lines.
Kaushal Modi

2
@Martin Bạn có thể làm những gì bạn yêu cầu. Bạn sẽ cần phải thực hiện một số hack trên đầu trang longlines-mode. Xem bài này cho một ví dụ. Tôi sẽ viết một câu trả lời đầy đủ sau nếu tôi có thời gian.
Malabarba 17/2/2015

Câu trả lời:


0

Nó phụ thuộc vào chính xác những gì bạn muốn làm.

Trong các bình luận, Malabarba liên kết đến một bài đăng trên blog có thể chỉ đường. Tuy nhiên, tôi nghĩ cách tiếp cận này dựa vào (lập trình) sửa đổi văn bản đệm. Nếu điều đó làm việc cho bạn - tuyệt vời!

Nếu bạn muốn để lại văn bản không thay đổi, thì tôi nghĩ bạn đã hết may mắn.

Đối với các vấn đề như thế này, tôi thường bắt đầu bằng cách đọc phần hướng dẫn sử dụng elisp trên thuộc tính "display". Điều này mô tả các thuộc tính có thể được áp dụng cho các ký tự trong bộ đệm để ảnh hưởng đến màn hình của chúng.

Đọc qua điều này, tôi không thấy bất cứ điều gì kiểm soát xem một dòng có được bọc hay không - chỉ là làm thế nào để hiển thị thụt đầu dòng và như vậy khi việc bọc xảy ra.

Vì vậy, hiện tại tôi tin rằng câu trả lời là "không". Gần đây đã có một số cuộc nói chuyện về emacs-devel về việc thêm các tính năng gói để hiển thị lại, vì vậy có thể có một số hy vọng cho tương lai.


1
Tôi đồng ý rằng sử dụng mẫu sửa đổi bộ đệm làm điểm bắt đầu (nghĩa là chế độ dài dòng) là phương pháp ít được ưu tiên hơn. Tôi tôn trọng không đồng ý, tuy nhiên, với quan niệm rằng poster ban đầu có thể không gặp may. Lớp phủ có 'invisible thoặc một thuộc 'display ""tính không sửa đổi văn bản bộ đệm và lớp phủ đó có thể cắt ngắn một cách hiệu quả bất kỳ dòng nào trong bộ đệm - điều này có thể được thực hiện một cách chọn lọc. Nói cách khác, word-wrapvẫn hoạt động trong khi cắt ngắn được nhắm mục tiêu có thể được thực hiện với lớp phủ.
luật

1
Chà ... vì vậy, tôi nghĩ một cách khác có thể được thực hiện là "điền" văn bản bằng cách đánh dấu một số khoảng trắng bằng thuộc tính hiển thị thay thế chuỗi giữ một dòng mới. Điều này sẽ xuất hiện để bọc, có thể. Tuy nhiên - điều này có vẻ không thân thiện như sửa đổi văn bản cho mục đích chỉnh sửa, vì màn hình sẽ khác với những gì người ta nhìn thấy. Ngoài ra, bạn cần mã đặc biệt để liên tục cập nhật tôi đoán. Nhưng ... vâng, có lẽ có một cách.
Tom Tromey
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.